pax_global_header00006660000000000000000000000064141115303070014505gustar00rootroot0000000000000052 comment=0f3b355a25b67d4a2d6ad9a926f53b6cb7087c18 grcompiler-5.2.1/000077500000000000000000000000001411153030700136555ustar00rootroot00000000000000grcompiler-5.2.1/AUTHORS000066400000000000000000000001231411153030700147210ustar00rootroot00000000000000Sharon Correll Steve McConnel Tim Eves grcompiler-5.2.1/CMakeLists.txt000066400000000000000000000016561411153030700164250ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.11) project(grcompiler) enable_language(CXX C) enable_testing() include(TestBigEndian) include(FetchContent) include(CTest) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED 14) include(GNUInstallDirs) test_big_endian(BIGENDIAN_SYSTEM) if (NOT CMAKE_BUILD_TYPE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY VALUE Release) endif() if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DWIN32 -D_WINDOWS) if (NOT DEFINED ICU_ROOT AND NOT DEFINED FETCHCONTENT_SOURCE_DIR_ICU) string(REGEX REPLACE "^x64$" "Win64" _icu_platform_name ${CMAKE_VS_PLATFORM_NAME}) set(ICU_URL https://github.com/unicode-org/icu/releases/download/release-66-1/icu4c-66_1-${_icu_platform_name}-MSVC2017.zip) endif() endif() add_subdirectory(doc) add_subdirectory(preprocessor) add_subdirectory(compiler) add_subdirectory(test) grcompiler-5.2.1/COPYING000066400000000000000000000000321411153030700147030ustar00rootroot00000000000000see license/LICENSING.txt grcompiler-5.2.1/Makefile.am000066400000000000000000000031621411153030700157130ustar00rootroot00000000000000SUBDIRS = doc preprocessor compiler test EXTRA_DIST = license makefile.mak README: README.md dist-hook: find $(distdir) -name ".svn" | xargs rm -rf VC_VERSION = 5.1 D_VERSION = `hg identify -n || svnversion ${top_srcdir}|sed -e "s/[0-9]*\://g"` DEB_VERSION = $(VC_VERSION)+0$(D_VERSION)svn DEBPACKAGE = grcompiler-$(DEB_VERSION) RELPACKAGE = grcompiler-${VC_VERSION} ORIGTAR = grcompiler_$(DEB_VERSION).orig.tar.gz DISTRIB_CODENAME ?= ${REL_CODENAME} showcodename: echo "Codename: ${DISTRIB_CODENAME}" deb-base: dist rm -fr ${DEBPACKAGE} mkdir -p ${DEBPACKAGE} cp ${PACKAGE}-${VERSION}.tar.gz $(DEBPACKAGE) tar cfz $(ORIGTAR) $(DEBPACKAGE) cp -a ${top_srcdir}/debian $(DEBPACKAGE) cd ${DEBPACKAGE} && find . -name .svn | xargs rm -rf deb: deb-base dch -D ${DISTRIB_CODENAME} -v ${DEB_VERSION}-1 -m -c${DEBPACKAGE}/debian/changelog "This is build direct from svn" cd ${DEBPACKAGE} && pdebuild deb-binary-only: deb-base dch -D ${DISTRIB_CODENAME} -v ${DEB_VERSION}-1 -m -c${DEBPACKAGE}/debian/changelog "This is build direct from svn" cd ${DEBPACKAGE} && pdebuild --debbuildopts -i --debbuildopts -b deb-release: dist rm -fr ${RELPACKAGE} mkdir -p ${RELPACKAGE} cp ${PACKAGE}-${VERSION}.tar.gz $(RELPACKAGE) tar cfz $(ORIGTAR) $(RELPACKAGE) cp -a ${top_srcdir}/debian $(RELPACKAGE) cd ${RELPACKAGE} && find . -name .svn | xargs rm -rf dch -D ${DISTRIB_CODENAME} -v ${VC_VERSION}-1 -c${RELPACKAGE}/debian/changelog cd ${RELPACKAGE} && pdebuild deb-local: deb-base dch -D ${DISTRIB_CODENAME} -v ${DEB_VERSION}-1 -m -c${DEBPACKAGE}/debian/changelog "This is a debuild direct from svn" cd ${DEBPACKAGE} && debuild -us -uc grcompiler-5.2.1/README.md000066400000000000000000000257451411153030700151510ustar00rootroot00000000000000# SILGRAPHITE COMPILER The SIL Graphite compiler builds a Graphite enabled font from a smart font description, written in GDL (Graphite Description Language) and a TrueType font by adding extra TrueType tables to it which the Graphite engine can interpret. This project contains three executables: grcompiler, gdlpp, and GrcRegressionTest. This project also depends on the International Components for Unicode (ICU) library. ANTLR is used to generate the GDL parser, though most developers can use the provided generated files. (See the compiler/Grammar/Antlr folder.) LZ4 is also used to compress some TrueType tables. - gdlpp is a preprocessor for the GDL language that grcompiler invokes during compilation. On Linux, it should be on the user's path. On Windows, the full path to it should be specified using the GDLPP environment variable (TIP: Do not put quotes around the path to gdlpp.exe. DOS-style short path naming may be needed.) or placed in the same folder as grcompiler. - GrcRegressionTest is used to regression test grcompiler against a set of reference GDL files and fonts. The regression tests are typically ran using project files (see below). ### GDLPP #include details WARNING: On Windows, grcompiler v5.2 fixes a longstanding bug. File inclusion will now be relative to the including file. Users who previously did inclusion relative to the current working directory will see changes if the current working director differs from the location of the including file. (Previously on Windows, file inclusion was relative to the current working directory when the path to the including file was specified using backslashes.) It's possible to specify a folder that gdlpp will use to find included files (such as stddef.gdh). Set the GDLPP_PREFS environment variable to `-I`. There must be no space after `I` and no quote marks. Use DOS-style short path naming if the path contains spaces. On Linux, `/usr/share/grcompiler` (PKGDATADIR) will be first in the include paths searched. Typically stddef.gdh will be installed there. ## BUILDING The grcompiler can currently be built with several build systems. The primary cross-platform build system is CMake. We require CMake 3.11 or above. It will build all three executables and can run the regression tests. ### CMake #### For all platforms 1. Create your build directory ``` mkdir build cd build ``` 2. Generate project files for your build system You may need to specify the CMAKE_BUILD_TYPE as some Windows generators require it. ``` cmake -DCMAKE_BUILD_TYPE=Release .. ``` CMake will automatically detect your build system and generate a project for that. You may wish to specify a build system other than the automatically detected one -- for example, if you have multiple versions of Visual Studio installed or another toolchain, such as MinGW, you wish to build under. To do this pass the `-G ` option to the initial cmake configuration call. If you want to build for a specific platform, and your tool chain support this, you can pass the `-A ` option. A common use is to allow you to choose between 32 or 64 bit builds: OS | 32 bit | 64 bit ------- | ------ | ------ Linux | x86 | amd64 Windows | Win32 | x64 For example for Visual Studio 2019 64 bit: ``` cmake -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release -A x64 .. ``` or for MinGW: ``` cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE:STRING=Release .. ``` TIPS: You can get a list of generators CMakes supports with `cmake --help`. If you want to run `cmake` with different options, you should do so in an empty folder. See below if you want to use a specific version of ICU. 3. Build grcompiler binaries ``` cmake --build . ``` When building using the Visual Studio generator you will need to append `--config Debug` or `--config Release` for your debug or release builds, respectively, to the above command. Depending on your chosen generator the next step varies. For MS Visual Studio projects you will need to run: `cmake --build . --target RUN_TESTS --config Release` but for all other generators: `cmake --build . --target test` will be sufficient. 4. Installation ``` cmake --build . --target install ``` The step will copy files into a GNU style hierarchy rooted at `CMAKE_INSTALL_PREFIX` which can be added the the project generation command using `-DCMAKE_INSTALL_PREFIX=`. This command only really makes sense on a Unix system or if build as a dependency as part of another Windows project. 5. Rebuilds You can clean the project with: ``` cmake --build . --target clean ``` Or just delete the build directory and start again. #### Linux specific details On amd64 architecture if you wish build and test 32 bit binaries this is possible using the following cmake invocation: ``` CFLAGS=-m32 CXXFLAGS=-m32 cmake .. cmake --build . cmake --build test ``` You will need g++-multilib support. It is possible to use clang to build and test grcompiler and gdlpp. Use this build command: ``` CC=clang CXX=clang++ cmake .. cmake --build . ``` You will need libc++ and libc++-abi packages. #### Windows specific details TIPS: - After generating the project files and optionally doing initial building and testing (above), the easiest way for Visual Studio developers to proceed is to open the `grcompiler.sln` file that cmake generates. - The Solution Explorer will contain projects for `grcompiler`, `gdlpp`, and `GrcRegressionTest`, as well as several other projects, some of which are just empty standard test targets that cmake generates. - Do NOT switch the Solution Explorer to Folder View as that will cause cmake project generation to be redone using the Ninja generator (see below). - Right clicking on the grcompiler project and setting it as the Startup Project is advisable. - Right clicking on ALL_BUILD and Building will build all three executables. - Right clicking on RUN_TESTS and Building will run the regression tests. - Please note that the files in `test/GrcRegressionTest` compile with warnings. These files are used for regression testing and don't affect the operation of the compiler itself. Visual Studio 2017 added support for handling CMake projects. You can find more information and instructions at [CMake projects in Visual Studio](https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=vs-2019). Currently, development with CMake in the Visual Studio IDE is not advised because the CMake configuration does not work properly with the Ninja code generator, which is invoked by default from within the IDE. Both `File-Open-CMake...` and `File-Open Folder...` currently fail. See issue [#42](https://github.com/silnrsi/grcompiler/issues/42). Opening the `grcompiler.sln` file generated on the command line (as above) works around this issue. ### Older build systems ***Please note that these older build systems are no longer being mainatained and will likely be removed soon.*** #### For Unix style system with autotools The grcompiler project can use GNU autobuild tools to manage building and installation, please see the INSTALL file for more details. #### For Win32 older build tools The CMake approach above is strongly encouraged. The choice of 32- or 64-bit build tools and targets is made by building from the appropriate Visual Studio command prompt. To build grcomiler release binaries, from the `compiler` folder: ``` nmake -f makefile.mak ``` To build grcompiler debug binaries: ``` nmake CFG=DEBUG -f makefile.mak ``` TIP: A debug build for ICU from source will be needed too (see below). Cleaning up, to remove all .obj files without removing the binaries: ``` nmake -f makefile.mak clean ``` To remove the binaries as well: ``` nmake -f makefile.mak realclean ``` This deletes the libraries as well. To build gdlpp, from the `preprocessor` folder: ``` nmake -f gdlpp.mak ``` To build GrcRegressionTest and run regression tests, from the `test/GrcRegressionTest` folder: ``` nmake -f Makefile.vc cd fonts nmake -f regtest.mak ``` To use Visual Studio, setup a new makefile project and add commands for building, testing, and debugging using the makefiles indicated above. ## DEPENDENCIES ### ICU The grcompiler executable has a hard build dependency on ICU. This dependency may be satisfied via a system supplied dev package as is common on Linux, or via a pre-built binary distribution archive available from the [ICU4C project](http://site.icu-project.org/download/). - CMake: This will automatically download and unpack any archive URL passed to it via `ICU_URL`. It will search for ICU includes and libraries in the root of that archive expecting to find `include`, `lib` and `bin` directories. If those dirs are deeper inside the archive (e.g. inside usr/local) then passing the relative archive path in `ICU_ROOT` will cause it to search there. If you have a local binary copy, e.g. if you are patching ICU too, you can have it use that instead by passing the path in `FETCHCONTENT_SOURCE_DIR_ICU`. Lastly passing just `ICU_ROOT` as a semi-colon separated list of paths to search allows you to use an ICU distribution where executables, includes and libraries aren't neatly arranged. This might be the case if you want to pass both debug and release builds of ICU on Windows, in which case it will link the appropriate version. #### Linux You should use your distributions package manager to install icu-dev package. - CMake: By default it will automatically find the system dev package installed by your package manager via the use of pkg-config. - autotools: This will auto detect the icu installation via the use of pkg-config To override the detection you need to provide compiler and linker flags via the ICU_CFLAGS and ICU_LIBS environment variables. #### Windows - CMake: If no `ICU_URL`, `FETCHCONTENT_SOURCE_DIR_ICU` or `ICU_ROOT` parameter is passed then it will automatically set `ICU_URL` to a recent release and proceed as above, by downloading and using that archive. - Nmake: - Create an icu folder under this project's top level folder and unzip the archive into it. - makefile.mak copies the needed binaries to the folder where grcompiler is built. You may need to modify the file names for the icu/bin/*.dll files in makefile.mak since the file names include the version number of icu. - The icu project only supplies release versions of the binaries. So, when building a debug version of grcompiler, it is linked to release versions of the ICU dlls. To link to debug versions instead, icu binaries have to be built from source and makefile.mak adjusted to use them. In the icu source, there is a VisualStudio file in the source\allinone directory that can be used to build the binaries. The "common" project is the one to build. grcompiler-5.2.1/admin/000077500000000000000000000000001411153030700147455ustar00rootroot00000000000000grcompiler-5.2.1/admin/compile000077500000000000000000000072711411153030700163320ustar00rootroot00000000000000#! /bin/sh # Wrapper for compilers which do not understand `-c -o'. scriptversion=2009-10-06.20; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software # Foundation, Inc. # Written by Tom Tromey . # # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand `-c -o'. Remove `-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file `INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; esac ofile= cfile= eat= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as `compile cc -o foo foo.c'. # So we strip `-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # `.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use `[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: grcompiler-5.2.1/admin/config.guess000077500000000000000000001310541411153030700172710ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-06-10' # This file 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., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: grcompiler-5.2.1/admin/config.rpath000077500000000000000000000436471411153030700172730ustar00rootroot00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2007 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix4* | aix5*) library_names_spec='$libname$shrext' ;; amigaos*) library_names_spec='$libname.a' ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd1*) ;; freebsd* | dragonfly*) case "$host_os" in freebsd[123]*) library_names_spec='$libname$shrext$versuffix' ;; *) library_names_spec='$libname$shrext' ;; esac ;; gnu*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; nto-qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: grcompiler-5.2.1/admin/depcomp000077500000000000000000000442671411153030700163370ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: grcompiler-5.2.1/admin/install-sh000077500000000000000000000325371411153030700167630ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: grcompiler-5.2.1/admin/missing000077500000000000000000000262331411153030700163520ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: grcompiler-5.2.1/compiler/000077500000000000000000000000001411153030700154675ustar00rootroot00000000000000grcompiler-5.2.1/compiler/CMakeLists.txt000066400000000000000000000043061411153030700202320ustar00rootroot00000000000000project(compiler VERSION 5.2.1) cmake_policy(SET CMP0074 NEW) FetchContent_Declare(icu URL ${ICU_URL}) if (DEFINED ICU_URL OR DEFINED FETCHCONTENT_SOURCE_DIR_ICU) FetchContent_GetProperties(icu) if (NOT icu_POPULATED) message(STATUS "Fetching: " ${ICU_URL}) FetchContent_Populate(icu) endif() if (icu_POPULATED) set(ICU_ROOT ${icu_SOURCE_DIR}/${ICU_ROOT}) else() set(ICU_ROOT "") endif() endif() find_package(ICU REQUIRED COMPONENTS uc i18n data) message(STATUS "ICU Libraries: " ${ICU_VERSION}) add_subdirectory(Generic) add_subdirectory(Grammar) add_subdirectory(LZ4) include_directories(Generic Grammar LZ4 ${ICU_INCLUDE_DIR}) add_library(TtfUtil OBJECT TtfUtil.cpp) target_compile_definitions(TtfUtil PUBLIC $<${BIGENDIAN_SYSTEM}:WORDS_BIGENDIAN>) add_executable(grcompiler Compiler.cpp ErrorCheckClasses.cpp ErrorCheckFeatures.cpp ErrorCheckRules.cpp Fsm.cpp GlyphBoundaries.cpp GdlExpression.cpp GdlFeatures.cpp GdlGlyphClassDefn.cpp GdlRenderer.cpp GdlRule.cpp GdlTablePass.cpp GrcErrorList.cpp GrcFont.cpp GrcGlyphAttrMatrix.cpp GrcManager.cpp GrcMasterTable.cpp GrcSymTable.cpp GrpExtensions.cpp GrpLexer.cpp GrpParser.cpp GrpParserDebug.cpp OutputToFont.cpp ParserTreeWalker.cpp PostParser.cpp $ main.cpp) target_compile_definitions(grcompiler PRIVATE $<${BIGENDIAN_SYSTEM}:WORDS_BIGENDIAN>) target_link_libraries(grcompiler ICU::uc ICU::i18n generic parser lz4) if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") target_compile_options(grcompiler PRIVATE /Zc:wchar_t- /W3 /EHsc) endif() if (icu_POPULATED) if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") file(GLOB_RECURSE _icu_dlls "${icu_SOURCE_DIR}/**${CMAKE_SHARED_LIBRARY_SUFFIX}") add_custom_command(TARGET grcompiler POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_icu_dlls} $) endif() endif() install(TARGETS grcompiler RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES stddef.gdh DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}) grcompiler-5.2.1/compiler/Compiler.cpp000066400000000000000000003215021411153030700177500ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Compiler.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods to implement the compiler, which generates the final tables and writes them to the output file. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Do the pre-compilation tasks for each of the main chunks of data. Return false if compilation cannot continue due to an unrecoverable error. ----------------------------------------------------------------------------------------------*/ bool GrcManager::PreCompile(GrcFont * pfont) { if (!PreCompileFeatures(pfont)) return false; if (!PreCompileLanguages(pfont)) // do after features return false; if (!PreCompileClassesAndGlyphs(pfont)) return false; // Unscale the extra ascent and extra descent. GdlExpression * pexp = m_prndr->ExtraAscent(); if (pexp) pexp->SimplifyAndUnscale(0xFFFF, pfont); pexp = m_prndr->ExtraDescent(); if (pexp) pexp->SimplifyAndUnscale(0xFFFF, pfont); if (!PreCompileRules(pfont)) return false; return true; } bool GrcManager::Compile(GrcFont * /*pfont*/, char * pchOutputPath) { if (IncludePassOptimizations()) PassOptimizations(); if (this->IsVerbose()) std::cout << "[Generating FSMs: "; GenerateFsms(pchOutputPath); if (this->IsVerbose()) std::cout << "]\n"; CalculateContextOffsets(); // after max-rule-context has been set CalculateGlatVersion(); // before outputting debug files return false; } /*---------------------------------------------------------------------------------------------- Determine what version of the Glat table is needed. ----------------------------------------------------------------------------------------------*/ void GrcManager::CalculateGlatVersion() { int fxdGlatVersion = VersionForTable(ktiGlat); // The version of the Glat table depends on the number of glyph attributes defined, // whether compression is enabled and whether we include the glyph approximation // octaboxes for collision fixing. if (m_prndr->HasCollisionPass() || m_tcCompressor != ktcNone) { g_errorList.AddWarning(3535, NULL, "Version 3.0 of the Glat table will be generated."); fxdGlatVersion = 0x00030000; } else if (m_vpsymGlyphAttrs.size() >= kMaxGlyphAttrsGlat1 && fxdGlatVersion < 0x00020000) { g_errorList.AddWarning(3531, NULL, "Version 2.0 of the Glat table will be generated."); fxdGlatVersion = 0x00020000; } SetTableVersion(ktiGlat, fxdGlatVersion); } /*---------------------------------------------------------------------------------------------- Generate the engine code for the constraints and actions of a rule. ----------------------------------------------------------------------------------------------*/ void GdlRule::GenerateEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::vector & vbActions, std::vector & vbConstraints) { GenerateConstraintEngineCode(pcman, fxdRuleVersion, vbConstraints); // Save the size of the rule constraints from the -if- statements. // int cbGenConstraint = vbConstraints.size(); // Count the number of unmodified items at the end of the rule; these do not need to // be processed as far as actions go, and the default scan advance position is just // before these. size_t iritLimMod = m_vprit.size(); while (iritLimMod > 0 && !dynamic_cast(m_vprit[iritLimMod - 1])) iritLimMod--; // Now iritLimMod is the first item that will not be modified. // Also note the the first item that needs to be processed as far as constraints go is // m_critPrependedAnys. // The first item to be processed as far as actions go is // m_critPrependedAnys + m_critPreModContext. bool fSetInsertToFalse = false; bool fBackUpOneMore = false; auto iritFirstModItem = m_critPrependedAnys + m_critPreModContext; for (auto irit = m_critPrependedAnys; irit < m_vprit.size(); ++irit) { if (iritFirstModItem <= irit && irit < iritLimMod) { m_vprit[irit]->GenerateActionEngineCode(pcman, fxdRuleVersion, vbActions, this, int(irit), &fSetInsertToFalse); } m_vprit[irit]->GenerateConstraintEngineCode(pcman, fxdRuleVersion, vbConstraints, int(irit), m_viritInput, int(iritFirstModItem)); } if (fSetInsertToFalse) { // Have to modify the first item beyond the scan advance position, in order to // set insert = false (due to some attachment). So here we create the code to // set the attribute, and then back up one to get the scan advance position back // to where it should be. m_vprit[iritLimMod]->GenerateActionEngineCode(pcman, fxdRuleVersion, vbActions, this, int(m_vprit.size()), &fSetInsertToFalse); Assert(!fSetInsertToFalse); m_vprit[iritLimMod]->GenerateConstraintEngineCode(pcman, fxdRuleVersion, vbConstraints, int(m_vprit.size()), m_viritInput, int(iritFirstModItem)); fBackUpOneMore = true; } if (!vbConstraints.empty()) vbConstraints.push_back(kopPopRet); if (m_nOutputAdvance == -1) { if (fBackUpOneMore) { // Return -1. vbActions.push_back(kopPushByte); vbActions.push_back(0xFF); vbActions.push_back(kopPopRet); } else // Push return-zero, meaning don't adjust the scan position. vbActions.push_back(kopRetZero); } else { // Push a command to return the amount to adjust the scan position-- // forward or backward. Assert(m_nDefaultAdvance != -1); // calculated set in GdlRule::HasReprocessing() int nAdvanceOffset = m_nOutputAdvance - m_nDefaultAdvance; Assert((abs(nAdvanceOffset) & 0xFFFFFF00) == 0); // check for trucation error if (fBackUpOneMore) nAdvanceOffset--; vbActions.push_back(kopPushByte); vbActions.push_back((char)nAdvanceOffset); vbActions.push_back(kopPopRet); } } /*---------------------------------------------------------------------------------------------- Generate engine code for the constraints of a given rule that were in -if- statements, minus the final pop-and-return command. ----------------------------------------------------------------------------------------------*/ void GdlRule::GenerateConstraintEngineCode(GrcManager * /*pcman*/, uint32_t fxdRuleVersion, std::vector & vbOutput) { if (m_vpexpConstraints.size() == 0) { return; } // 'and' all the constraints together; the separate constraints come from separate // -if- or -elseif- statements. int nBogus; m_vpexpConstraints[0]->GenerateEngineCode(fxdRuleVersion, vbOutput, -1, NULL, -1, false, -1, &nBogus); for (size_t ipexp = 1; ipexp < m_vpexpConstraints.size(); ipexp++) { m_vpexpConstraints[ipexp]->GenerateEngineCode(fxdRuleVersion, vbOutput, -1, NULL, -1, false, -1, &nBogus); vbOutput.push_back(kopAnd); } } /*---------------------------------------------------------------------------------------------- Generate engine code for the constraints of a given rule item. Arguments: vbOutput - buffer containing engine code already generated from -if- statements, minus the final pop-and-return command. viritInput - input indices for items of this rule irit - index of item ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::GenerateConstraintEngineCode(GrcManager * /*pcman*/, uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector & viritInput, int iritFirstModItem) { if (!m_pexpConstraint) { return; } bool fNeedAnd = (vbOutput.size() > 0); // need to 'and' rule item constraints with // -if- condition(s) bool fInserting = (m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)); Assert(!fInserting || dynamic_cast(this)); char iritByte = viritInput[irit]; Assert((int)iritByte == viritInput[irit]); // no truncation error Assert(viritInput[irit] >= 0); // not an inserted item vbOutput.push_back(kopCntxtItem); vbOutput.push_back(iritByte - iritFirstModItem); vbOutput.push_back(0); // place holder auto ibSkipLoc = vbOutput.size(); int nBogus; m_pexpConstraint->GenerateEngineCode(fxdRuleVersion, vbOutput, irit, &viritInput, irit, fInserting, -1, &nBogus); // Go back and fill in number of bytes to skip if we are not at the // appropriate context item. vbOutput[ibSkipLoc - 1] = (byte)((int)vbOutput.size() - ibSkipLoc); if (fNeedAnd) vbOutput.push_back(kopAnd); } /*---------------------------------------------------------------------------------------------- Generate the engine code for the constraints of a pass. ----------------------------------------------------------------------------------------------*/ void GdlPass::GenerateEngineCode(GrcManager * /*pcman*/, uint32_t fxdRuleVersion, std::vector & vbOutput) { if (m_vpexpConstraints.size() == 0) { return; } // 'and' all the constraints together; multiple constraints result from an -else if- // structure. int nBogus; m_vpexpConstraints[0]->GenerateEngineCode(fxdRuleVersion, vbOutput, -1, NULL, -1, false, -1, &nBogus); for (size_t ipexp = 1; ipexp < m_vpexpConstraints.size(); ipexp++) { m_vpexpConstraints[ipexp]->GenerateEngineCode(fxdRuleVersion, vbOutput, -1, NULL, -1, false, -1, &nBogus); vbOutput.push_back(kopAnd); } vbOutput.push_back(kopPopRet); } /*---------------------------------------------------------------------------------------------- Generate engine code to perform the actions for a given item. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::GenerateActionEngineCode(GrcManager * /*pcman*/, uint32_t /*fxdRuleVersion*/, std::vector & vbOutput, GdlRule * /*prule*/, int /*irit*/, bool * pfSetInsertToFalse) { if (*pfSetInsertToFalse) { vbOutput.push_back(kopPutCopy); vbOutput.push_back(0); GenerateInsertEqualsFalse(vbOutput); *pfSetInsertToFalse = false; vbOutput.push_back(kopNext); } else // Nothing special is happening; just pass the item through unchanged. vbOutput.push_back(kopCopyNext); } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::GenerateActionEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::vector & vbOutput, GdlRule * /*prule*/, int irit, bool * pfSetInsertToFalse) { if (m_vpavs.size() == 0 && !*pfSetInsertToFalse) vbOutput.push_back(kopCopyNext); else { int nIIndex = m_nInputIndex; nIIndex = (nIIndex < 0) ? (nIIndex + 1) * -1 : nIIndex; vbOutput.push_back(kopPutCopy); vbOutput.push_back(0); if (*pfSetInsertToFalse) GenerateInsertEqualsFalse(vbOutput); *pfSetInsertToFalse = GenerateAttrSettingCode(pcman, fxdRuleVersion, vbOutput, irit, nIIndex); vbOutput.push_back(kopNext); } } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::GenerateActionEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::vector & vbOutput, GdlRule * prule, int irit, bool * pfSetInsertToFalse) { bool fInserting = (m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)); bool fDeleting = (m_psymOutput->FitsSymbolType(ksymtSpecialUnderscore)); Assert(!fInserting || !fDeleting); int nIIndex = m_nInputIndex; nIIndex = (nIIndex < 0) ? (nIIndex + 1) * -1 : nIIndex; if (fInserting) // Because we haven't "got" the current slot yet (when inserting we do a peek, // not a "get"). nIIndex--; // Generate the code to insert, delete, replace, etc. if (fDeleting) // Note that it's kind of strange to be setting attributes or associations for // deleted objects, but it's not an error and we've already given a warning. vbOutput.push_back(kopDelete); else { if (fInserting) vbOutput.push_back(kopInsert); if (m_psymOutput->FitsSymbolType(ksymtSpecialAt)) { // Direct copy. int bOffset = (m_nSelector == -1) ? 0 : m_nSelector - nIIndex; Assert((abs(bOffset) & 0xFFFFFF00) == 0); // check for truncation error vbOutput.push_back(kopPutCopy); vbOutput.push_back((char)bOffset); } else { Assert(m_psymOutput->FitsSymbolType(ksymtClass)); GdlGlyphClassDefn * pglfcOutput = m_psymOutput->GlyphClassDefnData(); Assert(pglfcOutput); int op; int nSel = (m_pexpSelector) ? m_pexpSelector->SlotNumber() - 1 : irit; GdlRuleItem * pritSel = prule->Item(nSel); Symbol psymSel = pritSel->m_psymInput; GdlGlyphClassDefn * pglfcSel = psymSel->GlyphClassDefnData(); // We're not doing a substitution based on correspondences within classes, but // rather a simple replacement, under the following circumstances: if (psymSel->FitsSymbolType(ksymtSpecialUnderscore)) // (a) there is no selector class op = kopPutGlyph; else if (pglfcSel && pglfcSel->GlyphIDCount() == 0) // (b) the selector class has no glyphs op = kopPutGlyph; else if (pglfcOutput && pglfcOutput->GlyphIDCount() <= 1) // (c) there is only one glyph in the output class op = kopPutGlyph; else { // Otherwise we're doing a replacement of a glyph from the selector class // with the corresponding glyph from the output class. Assert(pglfcSel); op = kopPutSubs; } if (fxdRuleVersion <= 0x00020000) { // Use old 8-bit versions of these commands. switch (op) { case kopPutGlyph: op = kopPutGlyphV1_2; break; case kopPutSubs: op = kopPutSubsV1_2; break; default: break; } } vbOutput.push_back(op); int nOutputID = pglfcOutput->ReplcmtOutputID(); Assert(nOutputID >= 0); switch (op) { case kopPutGlyph: vbOutput.push_back(nOutputID >> 8); vbOutput.push_back(nOutputID & 0x000000FF); break; case kopPutGlyphV1_2: vbOutput.push_back(nOutputID); break; case kopPutSubs: case kopPutSubsV1_2: { int nSelIO = (m_nSelector == -1) ? nIIndex : m_nSelector; int bSelOffset = nSelIO - nIIndex; Assert((abs(bSelOffset) & 0xFFFF0000) == 0); // check for truncation error Assert(pglfcSel->ReplcmtInputID() >= 0); vbOutput.push_back((char)bSelOffset); int nInputID = pglfcSel->ReplcmtInputID(); if (op == kopPutSubsV1_2) { vbOutput.push_back(nInputID); vbOutput.push_back(nOutputID); } else { vbOutput.push_back(nInputID >> 8); vbOutput.push_back(nInputID & 0x000000FF); vbOutput.push_back(nOutputID >> 8); vbOutput.push_back(nOutputID & 0x000000FF); } break; } default: Assert(false); break; } } } // Generate the code to set the associations. if (m_vnAssocs.size() > 0) { vbOutput.push_back(kopAssoc); vbOutput.push_back((byte)m_vnAssocs.size()); for (size_t in = 0; in < m_vnAssocs.size(); in++) { Assert(m_vnAssocs[in] >= 0); // can't associate with an inserted item int bAssocOffset = m_vnAssocs[in] - nIIndex; Assert((abs(bAssocOffset) & 0xFFFFFF00) == 0); // check for truncation error vbOutput.push_back((char)bAssocOffset); } } // Generate the code to set the attributes. if (*pfSetInsertToFalse) GenerateInsertEqualsFalse(vbOutput); *pfSetInsertToFalse = GenerateAttrSettingCode(pcman, fxdRuleVersion, vbOutput, irit, nIIndex); // Go on to the next slot. vbOutput.push_back(kopNext); } /*---------------------------------------------------------------------------------------------- Generate engine code to set slot attributes. Return true if we need to set insert = false on the following item (because this item makes a forward attachment). ----------------------------------------------------------------------------------------------*/ bool GdlSetAttrItem::GenerateAttrSettingCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, int nIIndex) { bool fAttachForward = false; for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { if (m_vpavs[ipavs]->GenerateAttrSettingCode(pcman, fxdRuleVersion, vbOutput, irit, nIIndex, AttachTo())) { fAttachForward = true; } } return fAttachForward; } /*--------------------------------------------------------------------------------------------*/ bool GdlAttrValueSpec::GenerateAttrSettingCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, int nIIndex, int iritAttachTo) { bool fAttachForward = false; int nBogus; Assert(m_psymName->FitsSymbolType(ksymtSlotAttr) || m_psymName->FitsSymbolType(ksymtFeature)); Assert(m_pexpValue); ExpressionType expt = m_psymName->ExpType(); Assert(expt == kexptSlotRef || expt == kexptNumber || expt == kexptMeas || expt == kexptBoolean || expt == kexptGlyphID); std::string staOp = m_psymOperator->FullName(); int slat = m_psymName->FitsSymbolType(ksymtSlotAttr) ? m_psymName->SlotAttrEngineCodeOp() : kslatBogus; if (m_psymName->IsPseudoSlotAttr()) { // Ignore } else if (m_psymName->FitsSymbolType(ksymtFeature)) { GdlFeatureDefn * pfeat = m_psymName->FeatureDefnData(); Assert(staOp == "="); m_pexpValue->GenerateEngineCode(fxdRuleVersion, vbOutput, irit, NULL, nIIndex, false, -1, &nBogus); vbOutput.push_back(kopFeatSet); vbOutput.push_back(pfeat->InternalID()); } else if (m_psymName->IsIndexedSlotAttr()) // eg, component.XXX.ref, user1 { m_pexpValue->GenerateEngineCode(fxdRuleVersion, vbOutput, irit, NULL, nIIndex, false, -1, &nBogus); if (m_psymName->IsComponentRef() || pcman->VersionForTable(ktiSilf) < 0x00020000) { Assert(staOp == "="); vbOutput.push_back(kopIAttrSetSlot); } else if (m_psymName->IsUserDefinableSlotAttr()) { if (staOp == "=") vbOutput.push_back(kopIAttrSet); else if (staOp == "+=") vbOutput.push_back(kopIAttrAdd); else if (staOp == "-=") vbOutput.push_back(kopIAttrSub); // else if (staOp == "&=") // vbOutput.push_back(kopIAttrBitAnd); // else if (staOp == "|=") // vbOutput.push_back(kopIAttrBitOr); else { Assert(false); } } vbOutput.push_back(slat); vbOutput.push_back(pcman->SlotAttributeIndex(m_psymName)); } else if (expt == kexptSlotRef) { Assert(staOp == "="); int nValue; if (slat == kslatAttTo && iritAttachTo == -1) { // attach.to = @0 means no attachment } else { m_pexpValue->GenerateEngineCode(fxdRuleVersion, vbOutput, irit, NULL, nIIndex, false, iritAttachTo, &nValue); vbOutput.push_back(kopAttrSetSlot); vbOutput.push_back(slat); if (slat == kslatAttTo) { if (nValue < 0) GdlRuleItem::GenerateInsertEqualsFalse(vbOutput); // for this slot else if (nValue > 0) fAttachForward = true; // generate insert = false for next slot } } } else { bool fAttachAt = (slat == kslatAttAtX || slat == kslatAttAtY || slat == kslatAttAtGpt || slat == kslatAttAtXoff || slat == kslatAttAtYoff); int op = kopNop; if (staOp == "=") op = kopAttrSet; else if (staOp == "+=") op = kopAttrAdd; else if (staOp == "-=") op = kopAttrSub; // else if (staOp == "&=") // op = kopAttrBitAnd; // else if (staOp == "|=") // op = kopAttrBitOr; else { Assert(false); } m_pexpValue->GenerateEngineCode(fxdRuleVersion, vbOutput, irit, NULL, nIIndex, fAttachAt, iritAttachTo, &nBogus); vbOutput.push_back(op); vbOutput.push_back(slat); } return fAttachForward; } /*---------------------------------------------------------------------------------------------- Generate the extra "insert = false" for attachments. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::GenerateInsertEqualsFalse(std::vector & vbOutput) { vbOutput.push_back(kopPushByte); vbOutput.push_back(0); // false; vbOutput.push_back(kopAttrSet); vbOutput.push_back(kslatInsert); } /*---------------------------------------------------------------------------------------------- Return the component ID for a given ligature component symbol, or the number cooresponding to the index of the user-definable slot attribute. ----------------------------------------------------------------------------------------------*/ int GrcManager::SlotAttributeIndex(Symbol psym) { if (psym->IsComponentRef()) { Symbol psymBase = psym->BaseLigComponent(); if (!psymBase->IsGeneric()) psymBase = psymBase->Generic(); Assert(psymBase->IsGeneric()); int nIDRet = psymBase->InternalID(); Assert(nIDRet > -1); return nIDRet; } else if (psym->IsUserDefinableSlotAttr()) { return psym->UserDefinableSlotAttrIndex(); } else { // No other kinds of indexed attributes so far. Assert(false); } return 0; } /*---------------------------------------------------------------------------------------------- Analyze the passes to calculate the maximum number of characters before and after the official range of a segment that could cause the segment to become invalid. Also set a simple flag if any line-break items occur in any rule. ----------------------------------------------------------------------------------------------*/ void GrcManager::CalculateContextOffsets() { m_prndr->CalculateContextOffsets(); } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::CalculateContextOffsets() { m_fLineBreak = false; m_fLineBreakB4Just = false; m_critPreXlbContext = 0; m_critPostXlbContext = 0; GdlRuleTable * prultblSub = FindRuleTable("substitution"); GdlRuleTable * prultblJust= FindRuleTable("justification"); GdlRuleTable * prultblPos = FindRuleTable("positioning"); // Don't need to do this for the linebreak table, since conceptually it occurs // before the linebreaks have been made. if (prultblSub) prultblSub->CalculateContextOffsets(&m_critPreXlbContext, &m_critPostXlbContext, &m_fLineBreak, false, NULL, NULL); m_fLineBreakB4Just = m_fLineBreak; if (prultblJust) prultblJust->CalculateContextOffsets(&m_critPreXlbContext, &m_critPostXlbContext, &m_fLineBreak, false, prultblSub, NULL); if (prultblPos) prultblPos->CalculateContextOffsets(&m_critPreXlbContext, &m_critPostXlbContext, &m_fLineBreak, true, prultblSub, prultblJust); } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::CalculateContextOffsets(int * pcPreXlbContext, int * pcPostXlbContext, bool * pfLineBreak, bool fPos, GdlRuleTable * prultbl1, GdlRuleTable * prultbl2) { if (*pcPreXlbContext == kInfiniteXlbContext && *pcPostXlbContext == kInfiniteXlbContext) { Assert(*pfLineBreak); *pfLineBreak = true; return; } for (auto ipass = m_vppass.cbegin(); ipass != m_vppass.cend(); ++ipass) { auto const ppass = *ipass;; if (ppass->HasLineBreaks()) *pfLineBreak = true; // If no cross-line-boundary rules in this pass, ignore it. if (!ppass->HasCrossLineContext()) continue; if (ppass->HasReprocessing()) { // This pass has reprocessing occurring: return values indicating that we // can't determine a context limit. *pcPreXlbContext = kInfiniteXlbContext; *pcPostXlbContext = kInfiniteXlbContext; return; } int cPreTmp = ppass->MaxPreLBSlots(); int cPostTmp = ppass->MaxPostLBSlots(); // Loop backwards through all the passes in this table, calculating the ranges. for (auto ipassPrev = std::make_reverse_iterator(ipass); ipassPrev != m_vppass.crend(); ++ipassPrev) { GdlPass * ppassPrev = *ipassPrev; if (fPos) { cPreTmp = std::max(cPreTmp, ppassPrev->MaxPreLBSlots()); cPostTmp = std::max(cPostTmp, ppassPrev->MaxPostLBSlots()); } else { if (ppassPrev->HasReprocessing()) { // Previous pass has reprocessing occurring: return values indicating that // we can't determine a context limit. *pcPreXlbContext = kInfiniteXlbContext; *pcPostXlbContext = kInfiniteXlbContext; return; } // For the substitution table, multiply the range by the max number of context // items in the pass. cPreTmp = cPreTmp * ppassPrev->MaxRuleContext(); cPostTmp = cPostTmp * ppassPrev->MaxRuleContext(); } } // Loop backwards through the previous table(s) also. for (size_t itbl = 2; itbl != 0; --itbl) { GdlRuleTable * prultblPrev = itbl == 2 ? prultbl2 : prultbl1; if (prultblPrev) { auto const & passes = prultblPrev->m_vppass; for (auto ipassPrev = passes.crbegin(); ipassPrev != passes.crend(); ++ipassPrev) { GdlPass * ppassPrev = *ipassPrev; if (ppassPrev->HasReprocessing()) { // Previous pass has reprocessing occurring: // return values indicating that // we can't determine a context limit. *pcPreXlbContext = kInfiniteXlbContext; *pcPostXlbContext = kInfiniteXlbContext; return; } cPreTmp = cPreTmp * ppassPrev->MaxRuleContext(); cPostTmp = cPostTmp * ppassPrev->MaxRuleContext(); } } } *pcPreXlbContext = max(*pcPreXlbContext, cPreTmp); *pcPostXlbContext = max(*pcPostXlbContext, cPostTmp); } } /*********************************************************************************************** Debuggers ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Output a list of rules ordered by precedence. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugRulePrecedence(char * pchOutputPath) { std::string staOutputFilename(pchOutputPath); staOutputFilename.append("/dbg_ruleprec.txt"); std::ofstream strmOut; strmOut.open(staOutputFilename.data()); if (strmOut.fail()) { g_errorList.AddWarning(6501, NULL, "Error in writing to file ", staOutputFilename.data()); return; } if (g_errorList.AnyFatalErrors()) strmOut << "Fatal errors--compilation aborted"; else { strmOut << "RULE PRECEDENCE\n\n"; m_prndr->DebugRulePrecedence(this, strmOut); } strmOut.close(); } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::DebugRulePrecedence(GrcManager * pcman, std::ostream & strmOut) { GdlRuleTable * prultbl; if ((prultbl = FindRuleTable("linebreak")) != NULL) prultbl->DebugRulePrecedence(pcman, strmOut, m_ipassBidi); if ((prultbl = FindRuleTable("substitution")) != NULL) prultbl->DebugRulePrecedence(pcman, strmOut, m_ipassBidi); if ((prultbl = FindRuleTable("justification")) != NULL) prultbl->DebugRulePrecedence(pcman, strmOut, m_ipassBidi); if ((prultbl = FindRuleTable("positioning")) != NULL) prultbl->DebugRulePrecedence(pcman, strmOut, m_ipassBidi); } void GdlRuleTable::DebugRulePrecedence(GrcManager * pcman, std::ostream & strmOut, int ipassBidi) { strmOut << "\nTABLE: " << m_psymName->FullName() << "\n"; for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { if (ipassBidi - 1 == m_vppass[ippass]->GlobalID()) strmOut << "\nPASS " << ipassBidi << ": bidi\n"; m_vppass[ippass]->DebugRulePrecedence(pcman, strmOut); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::DebugRulePrecedence(GrcManager * pcman, std::ostream & strmOut) { if (m_vprule.size() == 0) { strmOut << "\nPASS: " << PassDebuggerNumber() << " - no rules\n"; return; } Assert(PassDebuggerNumber() != 0); strmOut << "\nPASS: " << PassDebuggerNumber() << " (GDL #" << this->m_nNumber << ")\n"; // Stable sort rules by their precedence: by the number of items matched (largest first). std::vector viruleSorted(m_vprule.size()); std::iota(viruleSorted.begin(), viruleSorted.end(), 0); std::stable_sort(viruleSorted.begin(), viruleSorted.end(), [&](auto const a, auto const b){ return m_vprule[a]->SortKey() > m_vprule[b]->SortKey(); }); auto const nPassNum = PassDebuggerNumber(); auto seq = 0u; for (auto const irule: viruleSorted) { auto & rule = *m_vprule[irule]; strmOut << "\n" << seq++ << " - RULE " << nPassNum << "." << irule << ", "; rule.LineAndFile().WriteToStream(strmOut, true); strmOut << ": "; rule.RulePrettyPrint(pcman, strmOut, false); strmOut << "\n\n"; } } /*---------------------------------------------------------------------------------------------- Output a text version of the engine code to the stream. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugEngineCode(char * pchOutputPath) { std::string staOutputFilename(pchOutputPath); staOutputFilename.append("/dbg_enginecode.txt"); std::ofstream strmOut; strmOut.open(staOutputFilename.data()); if (strmOut.fail()) { g_errorList.AddWarning(6502, NULL, "Error in writing to file ", staOutputFilename.data()); return; } if (g_errorList.AnyFatalErrors()) strmOut << "Fatal errors--compilation aborted"; else { strmOut << "ENGINE CODE FOR RULES\n\n"; m_prndr->DebugEngineCode(this, strmOut); } strmOut.close(); } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::DebugEngineCode(GrcManager * pcman, std::ostream & strmOut) { GdlRuleTable * prultbl; uint32_t fxdRuleVersion = pcman->VersionForRules(); if ((prultbl = FindRuleTable("linebreak")) != NULL) prultbl->DebugEngineCode(pcman, fxdRuleVersion, strmOut); if ((prultbl = FindRuleTable("substitution")) != NULL) prultbl->DebugEngineCode(pcman, fxdRuleVersion, strmOut); if (m_ipassBidi > -1) strmOut << "\nPASS " << m_ipassBidi + 1 << ": bidi\n"; if ((prultbl = FindRuleTable("justification")) != NULL) prultbl->DebugEngineCode(pcman, fxdRuleVersion, strmOut); if ((prultbl = FindRuleTable("positioning")) != NULL) prultbl->DebugEngineCode(pcman, fxdRuleVersion, strmOut); } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::DebugEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::ostream & strmOut) { strmOut << "\nTABLE: " << m_psymName->FullName() << "\n"; for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->DebugEngineCode(pcman, fxdRuleVersion, strmOut); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::DebugEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::ostream & strmOut) { int nPassNum = PassDebuggerNumber(); strmOut << "\nPASS: " << nPassNum << "\n"; std::vector vbPassConstraints; GenerateEngineCode(pcman, fxdRuleVersion, vbPassConstraints); if (vbPassConstraints.size() == 0) { strmOut << "\nPASS CONSTRAINTS: none\n"; } else { strmOut << "\nPASS CONSTRAINTS:\n"; GdlRule::DebugEngineCode(vbPassConstraints, fxdRuleVersion, strmOut); } if (m_vprule.size() == 0) strmOut << "\nNO RULES\n"; for (size_t iprul = 0; iprul < m_vprule.size(); iprul++) { strmOut << "\nRULE " << nPassNum << "." << iprul << ", "; m_vprule[iprul]->LineAndFile().WriteToStream(strmOut, true); strmOut << ": "; m_vprule[iprul]->RulePrettyPrint(pcman, strmOut, false); strmOut << "\n"; m_vprule[iprul]->DebugEngineCode(pcman, fxdRuleVersion, strmOut); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::DebugEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::ostream & strmOut) { std::vector vbActions; std::vector vbConstraints; GenerateEngineCode(pcman, fxdRuleVersion, vbActions, vbConstraints); strmOut << "\nACTIONS:\n"; DebugEngineCode(vbActions, fxdRuleVersion, strmOut); if (vbConstraints.size() == 0) { strmOut << "\nCONSTRAINTS: none\n"; } else { strmOut << "\nCONSTRAINTS:\n"; DebugEngineCode(vbConstraints, fxdRuleVersion, strmOut); } } void GdlRule::DebugEngineCode(std::vector & vb, uint32_t /*fxdRuleVersion*/, std::ostream & strmOut) { int ib = 0; while (ib < signed(vb.size())) { int op = vb[ib++]; strmOut << EngineCodeDebugString(op); int cbArgs = 0; int slat; unsigned int nUnsigned; int nSigned; signed short int nSignedShort; int gmet; int pstat; switch (op) { case kopNop: cbArgs = 0; break; case kopPushByte: cbArgs = 1; break; case kopPushByteU: nUnsigned = (unsigned int)vb[ib++]; strmOut << " " << nUnsigned; break; case kopPushShort: nSignedShort = (signed short int)vb[ib++]; nSignedShort = (nSignedShort << 8) + vb[ib++]; nSigned = (signed int)nSignedShort; strmOut << " " << nSigned; break; case kopPushShortU: nUnsigned = (unsigned int)vb[ib++]; nUnsigned = (nUnsigned << 8) + vb[ib++]; strmOut << " " << nUnsigned; break; case kopPushLong: nUnsigned = (int)vb[ib++]; nUnsigned = (nUnsigned << 8) + vb[ib++]; nUnsigned = (nUnsigned << 8) + vb[ib++]; nUnsigned = (nUnsigned << 8) + vb[ib++]; nSigned = (signed int)nUnsigned; strmOut << " " << nSigned; break; case kopAdd: cbArgs = 0; break; case kopSub: cbArgs = 0; break; case kopMul: cbArgs = 0; break; case kopDiv: cbArgs = 0; break; case kopBitAnd: cbArgs = 0; break; case kopBitOr: cbArgs = 0; break; case kopBitNot: cbArgs = 0; break; case kopMin: cbArgs = 0; break; case kopMax: cbArgs = 0; break; case kopNeg: cbArgs = 0; break; case kopTrunc8: cbArgs = 0; break; case kopTrunc16: cbArgs = 0; break; case kopCond: cbArgs = 0; break; case kopAnd: cbArgs = 0; break; case kopOr: cbArgs = 0; break; case kopNot: cbArgs = 0; break; case kopEqual: cbArgs = 0; break; case kopNotEq: cbArgs = 0; break; case kopLess: cbArgs = 0; break; case kopGtr: cbArgs = 0; break; case kopLessEq: cbArgs = 0; break; case kopGtrEq: cbArgs = 0; break; case kopNext: cbArgs = 0; break; case kopNextN: cbArgs = 1; break; // N case kopCopyNext: cbArgs = 0; break; case kopPutGlyphV1_2: nUnsigned = (unsigned int)vb[ib++]; // output class strmOut << " " << nUnsigned; cbArgs = 0; break; case kopPutSubsV1_2: nSigned = (signed int)vb[ib++]; // selector strmOut << " " << nSigned; nUnsigned = (unsigned int)vb[ib++]; // input class strmOut << " " << nUnsigned; nUnsigned = (unsigned int)vb[ib++]; // output class strmOut << " " << nUnsigned; cbArgs = 0; break; case kopPutCopy: cbArgs = 1; break; // selector case kopInsert: cbArgs = 0; break; case kopDelete: cbArgs = 0; break; case kopPutGlyph: nSignedShort = (signed short int)vb[ib++]; nSignedShort = (nSignedShort << 8) + vb[ib++]; nSigned = (signed int)nSignedShort; strmOut << " " << nSigned; // output class break; case kopPutSubs3: nSigned = (int)vb[ib++]; strmOut << " " << nSigned; // slot offset nSignedShort = (signed short int)vb[ib++]; nSignedShort = (nSignedShort << 8) + vb[ib++]; nSigned = (signed int)nSignedShort; strmOut << " " << nSigned; // input class // fall through case kopPutSubs2: nSigned = (int)vb[ib++]; strmOut << " " << nSigned; // slot offset nSignedShort = (signed short int)vb[ib++]; nSignedShort = (nSignedShort << 8) + vb[ib++]; nSigned = (signed int)nSignedShort; strmOut << " " << nSigned; // input class // fall through case kopPutSubs: nSigned = (int)vb[ib++]; strmOut << " " << nSigned; // slot offset nSignedShort = (signed short int)vb[ib++]; nSignedShort = (nSignedShort << 8) + vb[ib++]; nSigned = (signed int)nSignedShort; strmOut << " " << nSigned; // input class nSignedShort = (signed short int)vb[ib++]; nSignedShort = (nSignedShort << 8) + vb[ib++]; nSigned = (signed int)nSignedShort; strmOut << " " << nSigned; // output class break; case kopAssoc: cbArgs = vb[ib++]; strmOut << " " << cbArgs; break; case kopCntxtItem: cbArgs = 2; break; case kopAttrSet: case kopAttrAdd: case kopAttrSub: // case kopAttrBitAnd: // case kopAttrBitOr: case kopAttrSetSlot: slat = vb[ib++]; strmOut << " " << SlotAttributeDebugString(slat); cbArgs = 0; break; case kopIAttrSet: case kopIAttrAdd: case kopIAttrSub: // case kopIAttrBitAnd: // case kopIAttrBitOr: case kopIAttrSetSlot: slat = vb[ib++]; strmOut << " " << SlotAttributeDebugString(slat); cbArgs = 1; break; case kopPushSlotAttr: slat = vb[ib++]; strmOut << " " << SlotAttributeDebugString(slat); cbArgs = 1; // selector break; case kopPushISlotAttr: slat = vb[ib++]; strmOut << " " << SlotAttributeDebugString(slat); cbArgs = 2; // selector, index break; case kopPushGlyphAttr: case kopPushAttToGlyphAttr: nSignedShort = (signed short int)vb[ib++]; nSignedShort = (nSignedShort << 8) + vb[ib++]; nSigned = (signed int)nSignedShort; strmOut << " " << nSigned; // glyph attribute cbArgs = 1; // selector break; case kopPushGlyphAttrV1_2: case kopPushAttToGAttrV1_2: nUnsigned = (unsigned int)vb[ib++]; // glyph attribute strmOut << " " << nUnsigned; cbArgs = 1; // selector break; case kopPushGlyphMetric: case kopPushAttToGlyphMetric: gmet = vb[ib++]; strmOut << " " << GlyphMetricDebugString(gmet); cbArgs = 2; // selector, cluster break; case kopPushFeat: cbArgs = 2; break; // feature internal ID, selector //case kopPushIGlyphAttr: cbArgs = 2; break; // glyph attr, index case kopPushProcState: pstat = vb[ib++]; strmOut << " " << ProcessStateDebugString(pstat); cbArgs = 0; break; case kopPushVersion: cbArgs = 0; break; case kopPopRet: cbArgs = 0; break; case kopRetZero: cbArgs = 0; break; case kopRetTrue: cbArgs = 0; break; case kopSetBits: nUnsigned = (signed short int)vb[ib++]; nUnsigned = (nUnsigned << 8) + vb[ib++]; nSigned = (signed int)nUnsigned; strmOut << " " << nSigned; nUnsigned = (signed short int)vb[ib++]; nUnsigned = (nUnsigned << 8) + vb[ib++]; nSigned = (signed int)nUnsigned; strmOut << " " << nSigned; cbArgs = 0; break; case kopFeatSet: cbArgs = 1; break; // feature internal ID default: Assert(false); cbArgs = 0; } // This loop handles only 8-bit signed values. for (int iTmp = 0; iTmp < cbArgs; iTmp++) { int n = (char)vb[ib++]; strmOut << " " << n; } strmOut << "\n"; } } /*---------------------------------------------------------------------------------------------- Return the text equivalent of the given slot attribute. ----------------------------------------------------------------------------------------------*/ std::string GdlRule::SlotAttributeDebugString(int slat) { switch (slat) { case kslatAdvX: return "advance_x"; case kslatAdvY: return "advance_y"; case kslatAttTo: return "attach_to"; case kslatAttAtX: return "attach_at_x"; case kslatAttAtY: return "attach_at_y"; case kslatAttAtGpt: return "attach_at_gpoint"; case kslatAttAtXoff: return "attach_at_xoffset"; case kslatAttAtYoff: return "attach_at_yoffset"; case kslatAttWithX: return "attach_with_x"; case kslatAttWithY: return "attach_with_y"; case kslatAttWithGpt: return "attach_with_gpoint"; case kslatAttWithXoff: return "attach_with_xoffset"; case kslatAttWithYoff: return "attach_with_yoffset"; case kslatAttLevel: return "attach_level"; case kslatBreak: return "break"; case kslatCompRef: return "comp_ref"; case kslatDir: return "dir"; case kslatInsert: return "insert"; case kslatPosX: return "pos_x"; case kslatPosY: return "pos_y"; case kslatShiftX: return "shift_x"; case kslatShiftY: return "shift_y"; case kslatUserDefnV1: return "user"; case kslatUserDefn: return "user"; case kslatMeasureSol: return "measure_startofline"; case kslatMeasureEol: return "measure_endofline"; case kslatJ0Stretch: return "justify_0_stretch"; case kslatJ0Shrink: return "justify_0_shrink"; case kslatJ0Step: return "justify_0_step"; case kslatJ0Weight: return "justify_0_weight"; case kslatJ0Width: return "justify_0_width"; case kslatJ1Stretch: return "justify_1_stretch"; case kslatJ1Shrink: return "justify_1_shrink"; case kslatJ1Step: return "justify_1_step"; case kslatJ1Weight: return "justify_1_weight"; case kslatJ1Width: return "justify_1_width"; case kslatJ2Stretch: return "justify_2_stretch"; case kslatJ2Shrink: return "justify_2_shrink"; case kslatJ2Step: return "justify_2_step"; case kslatJ2Weight: return "justify_2_weight"; case kslatJ2Width: return "justify_2_width"; case kslatJ3Stretch: return "justify_3_stretch"; case kslatJ3Shrink: return "justify_3_shrink"; case kslatJ3Step: return "justify_3_step"; case kslatJ3Weight: return "justify_3_weight"; case kslatJ3Width: return "justify_3_width"; case kslatSegSplit: return "segsplit"; case kslatColFlags: return "col_flags"; case kslatColMargin: return "col_margin"; case kslatColMarginWt: return "col_marginweight"; case kslatColMinX: return "col_min_x"; case kslatColMinY: return "col_min_y"; case kslatColMaxX: return "col_max_x"; case kslatColMaxY: return "col_max_y"; case kslatColExclGlyph: return "col_excl_glyph"; case kslatColExclOffX: return "col_excl_off_x"; case kslatColExclOffY: return "col_excl_off_y"; case kslatColFixX: return "col_fix_x"; case kslatColFixY: return "col_fix_y"; // case kslatColOrderClass: return "col_order_class"; // case kslatColOrderEnforce: return "col_order_enforce"; case kslatSeqClass: return "seq_class"; case kslatSeqProxClass: return "seq_proxClass"; case kslatSeqOrder: return "seq_order"; case kslatSeqAboveXoff: return "seq_above_xoff"; case kslatSeqAboveWt: return "seq_above_wt"; case kslatSeqBelowXlim: return "seq_below_xlim"; case kslatSeqBelowWt: return "seq_below_wt"; case kslatSeqValignHt: return "seq_valign_ht"; case kslatSeqValignWt: return "seq_valign_wt"; default: Assert(false); return "bad-slot-attr-" + std::to_string(slat); } } /*---------------------------------------------------------------------------------------------- Return the text equivalent of the given glyph metric. ----------------------------------------------------------------------------------------------*/ std::string GdlRule::GlyphMetricDebugString(int gmet) { switch (gmet) { case kgmetLsb: return "lsb"; case kgmetRsb: return "rsb"; case kgmetBbTop: return "bb_top"; case kgmetBbBottom: return "bb_bottom"; case kgmetBbLeft: return "bb_left"; case kgmetBbRight: return "bb_right"; case kgmetBbHeight: return "bb_height"; case kgmetBbWidth: return "bb_width"; case kgmetAdvWidth: return "aw"; case kgmetAdvHeight: return "ah"; case kgmetAscent: return "ascent"; case kgmetDescent: return "descent"; default: Assert(false); return "bad-glyph-metric-" + std::to_string(gmet); } } /*---------------------------------------------------------------------------------------------- Return the text equivalent of the given engine code operator. ----------------------------------------------------------------------------------------------*/ std::string GdlRule::EngineCodeDebugString(int op) { switch (op) { case kopNop: return "Nop"; case kopPushByte: return "PushByte"; case kopPushByteU: return "PushByteU"; case kopPushShort: return "PushShort"; case kopPushShortU: return "PushShortU"; case kopPushLong: return "PushLong"; case kopAdd: return "Add"; case kopSub: return "Sub"; case kopMul: return "Mul"; case kopDiv: return "Div"; case kopMin: return "Min"; case kopMax: return "Max"; case kopNeg: return "Neg"; case kopTrunc8: return "Trunc8"; case kopTrunc16: return "Trunc16"; case kopCond: return "Cond"; case kopAnd: return "And"; case kopOr: return "Or"; case kopNot: return "Not"; case kopBitAnd: return "BitAnd"; case kopBitOr: return "BitOr"; case kopBitNot: return "BitNot"; case kopEqual: return "Equal"; case kopNotEq: return "NotEq"; case kopLess: return "Less"; case kopGtr: return "Gtr"; case kopLessEq: return "LessEq"; case kopGtrEq: return "GtrEq"; case kopNext: return "Next"; case kopNextN: return "NextN"; case kopCopyNext: return "CopyNext"; case kopPutGlyph: return "PutGlyph"; case kopPutGlyphV1_2: return "PutGlyph(V1&2)"; case kopPutSubsV1_2: return "PutSubs(V1&2)"; case kopPutSubs: return "PutSubs"; case kopPutSubs2: return "PutSubs2"; case kopPutSubs3: return "PutSubs3"; case kopPutCopy: return "PutCopy"; case kopInsert: return "Insert"; case kopDelete: return "Delete"; case kopAssoc: return "Assoc"; case kopCntxtItem: return "CntxtItem"; case kopAttrSet: return "AttrSet"; case kopAttrAdd: return "AttrAdd"; case kopAttrSub: return "AttrSub"; // case kopAttrBitAnd: return "AttrBitAnd"; // case kopAttrBitOr: return "AttrBitOr"; case kopAttrSetSlot: return "AttrSetSlot"; case kopIAttrSetSlot: return "IAttrSetSlot"; case kopPushSlotAttr: return "PushSlotAttr"; case kopPushISlotAttr: return "PushISlotAttr"; case kopPushGlyphAttr: return "PushGlyphAttr"; case kopPushGlyphAttrV1_2: return "PushGlyphAttr(V1&2)"; case kopPushGlyphMetric: return "PushGlyphMetric"; case kopPushFeat: return "PushFeat"; case kopPushAttToGlyphAttr: return "PushAttToGlyphAttr"; case kopPushAttToGAttrV1_2: return "PushAttToGlyphAttr(V1&2)"; case kopPushAttToGlyphMetric: return "PushAttToGlyphMetric"; case kopPushIGlyphAttr: return "PushIGlyphAttr"; case kopPushVersion: return "PushVersion"; case kopPopRet: return "PopRet"; case kopRetZero: return "RetZero"; case kopRetTrue: return "RetTrue"; case kopIAttrSet: return "IAttrSet"; case kopIAttrAdd: return "IAttrAdd"; case kopIAttrSub: return "IAttrSub"; // case kopIAttrBitAnd: return "IAttrBitAnd"; // case kopIAttrBitOr: return "IAttrBitOr"; case kopPushProcState: return "PushProcState"; case kopSetBits: return "SetBits"; case kopFeatSet: return "FeatSet"; default: Assert(false); return "bad-engine-op-" + std::to_string(op); } } /*---------------------------------------------------------------------------------------------- Return the text equivalent of the given process-state. ----------------------------------------------------------------------------------------------*/ std::string GdlRule::ProcessStateDebugString(int pstat) { switch (pstat) { case kpstatJustifyMode: return "JustifyMode"; case kpstatJustifyLevel: return "JustifyLevel"; default: Assert(false); return "bad-process-state-" + std::to_string(pstat); } } /*---------------------------------------------------------------------------------------------- Output a list of glyph attributes. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugGlyphAttributes(char * pchOutputPath) { std::string staOutputFilename(pchOutputPath); staOutputFilename.append("/dbg_glyphattrs.txt"); std::ofstream strmOut; strmOut.open(staOutputFilename.data()); if (strmOut.fail()) { g_errorList.AddWarning(6503, NULL, "Error in writing to file ", staOutputFilename.data()); return; } Symbol psymBw = m_psymtbl->FindSymbol("breakweight"); int nAttrIdBw = psymBw->InternalID(); Symbol psymSkipP = m_psymtbl->FindSymbol("*skipPasses*"); int nAttrIdSkipP = psymSkipP->InternalID(); int nAttrIdSkipP2 = 0; Symbol psymSkipP2 = m_psymtbl->FindSymbol("*skipPasses2*"); if (psymSkipP2) nAttrIdSkipP2 = psymSkipP2->InternalID(); auto cpass = this->m_prndr->NumberOfPasses(); //Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "0", "stretch")); Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "stretch")); int nAttrIdJStr = psymJStr->InternalID(); if (g_errorList.AnyFatalErrors()) strmOut << "Fatal errors--compilation aborted"; else { strmOut << "GLYPH ATTRIBUTE IDS\n\n"; for (size_t nAttrID = 0; nAttrID < m_vpsymGlyphAttrs.size(); nAttrID++) { if (m_vpsymGlyphAttrs[nAttrID]->InternalID() == static_cast(nAttrID)) { strmOut << nAttrID << ": " << m_vpsymGlyphAttrs[nAttrID]->FullName() << "\n"; } // else we have something like justify.stretch which is unused } strmOut << "\n\n\nGLYPH ATTRIBUTE VALUES\n\n"; for (auto wGlyphID = 0U; wGlyphID < m_cwGlyphIDs; wGlyphID++) { // Convert breakweight values depending on the table version to output. ConvertBwForVersion(wGlyphID, nAttrIdBw); // Split any large stretch values into two 16-bit words. SplitLargeStretchValue(wGlyphID, nAttrIdJStr); bool fAnyNonZero = false; for (auto nAttrID = 0U; nAttrID < m_vpsymGlyphAttrs.size(); nAttrID++) { int nValue = FinalAttrValue(wGlyphID, nAttrID); // Skip undefined and zero-valued attributes. if (nValue == 0) continue; if (fAnyNonZero == false) { strmOut << wGlyphID << " ["; DebugHex(strmOut, wGlyphID); strmOut << "]\n"; } fAnyNonZero = true; strmOut << " " << m_vpsymGlyphAttrs[nAttrID]->FullName() << " = "; if (m_vpsymGlyphAttrs[nAttrID]->LastFieldIs("gpoint") && nValue == kGpointZero) { strmOut << "zero" << "\n"; } else { strmOut << nValue; if (nAttrID == nAttrIdSkipP || nAttrID == nAttrIdSkipP2) { size_t iStart = 0, iStop = cpass; if (cpass > kPassPerSPbitmap) iStop = kPassPerSPbitmap; if (nAttrID == nAttrIdSkipP2) { iStart = kPassPerSPbitmap; iStop = cpass; } strmOut << " ["; DebugHex(strmOut, nValue); strmOut << " / "; // Print out bits in order of passes (low to high). int tValue = nValue; for (auto ipass = iStart; ipass < iStop; ++ipass) { int n = int((tValue & 0x0001) != 0); strmOut << " " << n; tValue = tValue >> 1; } strmOut << "]"; } else if (nValue > 9 || nValue < 0) { strmOut << " ["; DebugHex(strmOut, nValue); strmOut << "]"; } strmOut << "\n"; } } if (fAnyNonZero) strmOut << "\n\n"; } } strmOut.close(); } /*---------------------------------------------------------------------------------------------- Generate a list of glyph attributes (whose indices in the vector match their internal IDs). ----------------------------------------------------------------------------------------------*/ void GrcSymbolTable::GlyphAttrList(std::vector & vpsym) { for (SymbolTableMap::iterator it = EntriesBegin(); it != EntriesEnd(); ++it) { Symbol psym = it->second; // GetValue(); //Symbol psym = it.GetValue(); if (psym->m_psymtblSubTable) psym->m_psymtblSubTable->GlyphAttrList(vpsym); else if (psym->IsGeneric() && psym->FitsSymbolType(ksymtGlyphAttr)) { if (psym->InternalID() >= 0) { while (signed(vpsym.size()) <= psym->InternalID()) vpsym.push_back(NULL); vpsym[psym->InternalID()] = psym; } } } } /*---------------------------------------------------------------------------------------------- Generate a pretty-print description of the rule (similar to the original syntax). ----------------------------------------------------------------------------------------------*/ void GdlRule::RulePrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml) { size_t cEndif = 0; for (size_t iexp = 0; iexp < m_vpexpConstraints.size(); iexp++) { strmOut << "if ("; m_vpexpConstraints[iexp]->PrettyPrint(pcman, strmOut, fXml); strmOut << ") "; cEndif++; } // Loop through all the items to see if we need a LHS or a context. bool fLhs = false; bool fContext = (m_nScanAdvance != -1); int irit; for (irit = 0; irit < signed(m_vprit.size()) ; irit++) { GdlRuleItem * prit = m_vprit[irit]; GdlSubstitutionItem * pritsub = dynamic_cast(prit); if (pritsub) fLhs = true; GdlSetAttrItem * pritset = dynamic_cast(prit); if (!pritset) fContext = true; else if (prit->m_pexpConstraint) fContext = true; } if (fLhs) { for (irit = 0; irit < signed(m_vprit.size()) ; irit++) { m_vprit[irit]->LhsPrettyPrint(pcman, this, irit, strmOut, fXml); } if (fXml) strmOut << "> "; else strmOut << "> "; } for (irit = 0; irit < signed(m_vprit.size()) ; irit++) { m_vprit[irit]->RhsPrettyPrint(pcman, this, irit, strmOut, fXml); } if (fContext) { strmOut << " / "; for (irit = 0; irit < signed(m_vprit.size()) ; irit++) { if (m_nScanAdvance == irit) strmOut << "^ "; m_vprit[irit]->ContextPrettyPrint(pcman, this, irit, strmOut, fXml); } } strmOut << ";"; for (size_t i = 0; i < cEndif; i++) strmOut << " endif; "; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::LhsPrettyPrint(GrcManager * /*pcman*/, GdlRule * /*prule*/, int /*irit*/, std::ostream & /*strmOut*/, bool /*fXml*/) { // Do nothing. } void GdlSetAttrItem::LhsPrettyPrint(GrcManager * /*pcman*/, GdlRule * /*prule*/, int /*irit*/, std::ostream & strmOut, bool /*fXml*/) { strmOut << m_psymInput->FullAbbrev(); strmOut << " "; } void GdlSubstitutionItem::LhsPrettyPrint(GrcManager * /*pcman*/, GdlRule * /*prule*/, int /*irit*/, std::ostream & strmOut, bool /*fXml*/) { strmOut << m_psymInput->FullAbbrev(); strmOut << " "; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::RhsPrettyPrint(GrcManager * /*pcman*/, GdlRule * /*prule*/, int /*irit*/, std::ostream & /*strmOut*/, bool /*fXml*/) { // Do nothing. } void GdlSetAttrItem::RhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml) { strmOut << m_psymInput->FullAbbrev(); AttrSetterPrettyPrint(pcman, prule, irit, strmOut, fXml); strmOut << " "; } void GdlSubstitutionItem::RhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml) { strmOut << m_psymOutput->FullAbbrev(); if (m_pexpSelector) { if (m_psymOutput->Data()) strmOut << "$"; strmOut << m_pexpSelector->SlotNumber(); } if (m_vpexpAssocs.size() > 0) { strmOut << ":"; if (m_vpexpAssocs.size() > 1) strmOut << "("; int iexp; for (iexp = 0; iexp < signed(m_vpexpAssocs.size()) - 1; iexp++) strmOut << m_vpexpAssocs[iexp]->SlotNumber() << " "; strmOut << m_vpexpAssocs[iexp]->SlotNumber(); if (m_vpexpAssocs.size() > 1) strmOut << ")"; } AttrSetterPrettyPrint(pcman, prule, irit, strmOut, fXml); strmOut << " "; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::ContextPrettyPrint(GrcManager * pcman, GdlRule * /*prule*/, int /*irit*/, std::ostream & strmOut, bool fXml) { strmOut << m_psymInput->FullAbbrev(); ConstraintPrettyPrint(pcman, strmOut, true, fXml); strmOut << " "; } void GdlLineBreakItem::ContextPrettyPrint(GrcManager * pcman, GdlRule * /*prule*/, int /*irit*/, std::ostream & strmOut, bool fXml) { strmOut << "#"; ConstraintPrettyPrint(pcman, strmOut, true, fXml); strmOut << " "; } void GdlSetAttrItem::ContextPrettyPrint(GrcManager * pcman, GdlRule * /*prule*/, int /*irit*/, std::ostream & strmOut, bool fXml) { strmOut << "_"; ConstraintPrettyPrint(pcman, strmOut, true, fXml); strmOut << " "; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::ConstraintPrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fSpace) { if (m_pexpConstraint) { if (fSpace) strmOut << " "; strmOut << "{ "; m_pexpConstraint->PrettyPrint(pcman, strmOut, fXml); strmOut << " }"; } } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::AttrSetterPrettyPrint(GrcManager * pcman, GdlRule * /*prule*/, int /*irit*/, std::ostream & strmOut, bool fXml) { if (m_vpavs.size() > 0) { bool fAtt = false; bool fAttAt = false; bool fAttWith = false; strmOut << " { "; // Do attach and collision attributes first. // Use embedded {} structure to take up less room. int ciavsAttach = 0; int ciavsCollision = 0; for (size_t iavs = 0; iavs < m_vpavs.size(); iavs++) { if (m_vpavs[iavs]->m_psymName->IsAttachment()) ciavsAttach++; if (m_vpavs[iavs]->m_psymName->IsCollisionAttr()) ciavsCollision++; } if (ciavsAttach > 0) { strmOut << " attach {"; for (size_t iavs = 0; iavs < m_vpavs.size(); iavs++) { if (m_vpavs[iavs]->m_psymName->IsAttachment()) m_vpavs[iavs]->PrettyPrintAttach(pcman, strmOut, fXml); } strmOut << "} "; } if (ciavsCollision > 1) { strmOut << " collision {"; for (size_t iavs = 0; iavs < m_vpavs.size(); iavs++) { if (m_vpavs[iavs]->m_psymName->IsCollisionAttr()) { strmOut << m_vpavs[iavs]->m_psymName->FullAbbrevOmit("collision"); strmOut << " " << m_vpavs[iavs]->m_psymOperator->FullAbbrev() << " "; m_vpavs[iavs]->m_pexpValue->PrettyPrint(pcman, strmOut, fXml); strmOut << "; "; } } strmOut << "} "; } // Now do everything else. for (size_t iavs = 0; iavs < m_vpavs.size(); iavs++) { if (!m_vpavs[iavs]->m_psymName->IsAttachment() && (!m_vpavs[iavs]->m_psymName->IsCollisionAttr() || ciavsCollision <= 1)) m_vpavs[iavs]->PrettyPrint(pcman, strmOut, fXml, &fAtt, &fAttAt, &fAttWith, m_vpavs.size()); } strmOut << " }"; } } void GdlAttrValueSpec::PrettyPrintAttach(GrcManager * pcman, std::ostream & strmOut, bool fXml) { if (m_fFlattened && (m_psymName->IsAttachAtField() || m_psymName->IsAttachWithField())) { // A single statement like "attach.at = apt" has been translated into // "attach.at.x = apt.x, attach.at.y = apt.y, attach.at.xoffset = apt.xoffset, // attach.at.yoffset = apt.yoffset". Just print out one of these, say, the x. if (m_psymName->IsAttachXField()) { if (m_psymName->IsAttachAtField()) strmOut << "at = "; else strmOut << "with = "; GdlLookupExpression * pexpLookup = dynamic_cast(m_pexpValue); if (pexpLookup) { Symbol psym = pexpLookup->Name()->ParentSymbol(); strmOut << psym->FullAbbrevOmit("attach"); } else // strange... m_pexpValue->PrettyPrint(pcman, strmOut, fXml); strmOut << "; "; } return; } if (m_psymName->IsAttachOffsetField()) { int nValue; if (m_pexpValue->ResolveToInteger(&nValue, false) && nValue == 0) // Don't bother putting out something like attach.at.xoffset = 0. return; } strmOut << m_psymName->FullAbbrevOmit("attach"); strmOut << " " << m_psymOperator->FullAbbrev() << " "; m_pexpValue->PrettyPrint(pcman, strmOut, fXml); strmOut << "; "; } void GdlAttrValueSpec::PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool * /*pfAtt*/, bool * /*pfAttAt*/, bool * /*pfAttWith*/, size_t /*cpavs*/) { strmOut << m_psymName->FullAbbrev(); strmOut << " " << m_psymOperator->FullAbbrev() << " "; m_pexpValue->PrettyPrint(pcman, strmOut, fXml); strmOut << "; "; } /*---------------------------------------------------------------------------------------------- Output a list of all the classes and their members. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugClasses(char * pchOutputPath) { std::string staOutputFilename(pchOutputPath); staOutputFilename.append("/dbg_classes.txt"); std::ofstream strmOut; strmOut.open(staOutputFilename.data()); if (strmOut.fail()) { g_errorList.AddWarning(6504, NULL, "Error in writing to file ", staOutputFilename.data()); return; } if (g_errorList.AnyFatalErrors()) strmOut << "Fatal errors--compilation aborted"; else { m_prndr->DebugClasses(strmOut, m_vpglfcReplcmtClasses, m_cpglfcLinear); } strmOut.close(); } void GdlRenderer::DebugClasses(std::ostream & strmOut, std::vector & vpglfcReplcmt, int cpglfcLinear) { strmOut << "LINEAR (OUTPUT) CLASSES"; // linear classes (output) int cTmp = 0; int ipglfc; for (ipglfc = 0; ipglfc < cpglfcLinear; ipglfc++) { GdlGlyphClassDefn * pglfc = vpglfcReplcmt[ipglfc]; Assert(pglfc->ReplcmtOutputClass() || pglfc->GlyphIDCount() <= 1); //Assert(pglfc->ReplcmtOutputID() == cTmp); strmOut << "\n\n"; strmOut << "Class #" << ipglfc << ": "; strmOut << pglfc->Name(); std::vector vwGlyphs; pglfc->GenerateOutputGlyphList(vwGlyphs); // glyph list for (size_t iw = 0; iw < vwGlyphs.size(); iw++) { if (iw % 10 == 0) { strmOut << "\n" << iw << ":"; } strmOut << " "; GrcManager::DebugHex(strmOut, vwGlyphs[iw]); } cTmp++; } strmOut << "\n\n\nINDEXED (INPUT) CLASSES"; // indexed classes (input) for (ipglfc = cpglfcLinear; ipglfc < signed(vpglfcReplcmt.size()); ipglfc++) { GdlGlyphClassDefn * pglfc = vpglfcReplcmt[ipglfc]; Assert(pglfc->ReplcmtInputClass()); Assert(pglfc->ReplcmtInputID() == cTmp); strmOut << "\n\n"; strmOut << "Class #" << ipglfc << ": "; strmOut << pglfc->Name(); std::vector vwGlyphs; std::vector vnIndices; pglfc->GenerateInputGlyphList(vwGlyphs, vnIndices); // glyph list for (size_t iw = 0; iw < vwGlyphs.size(); iw++) { if (iw % 5 == 0) { strmOut << "\n"; } GrcManager::DebugHex(strmOut, vwGlyphs[iw]); strmOut << " :"; if (vnIndices[iw] < 1000) strmOut << " "; if (vnIndices[iw] < 100) strmOut << " "; if (vnIndices[iw] < 10) strmOut << " "; strmOut << vnIndices[iw]; strmOut << " "; } cTmp++; } } /*---------------------------------------------------------------------------------------------- Output the contents of the -cmap-, the mapping from unicode-to-glyph ID and vice-versa. Also include any pseudo-glyphs. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugCmap(GrcFont * pfont, char * pchOutputPath) { bool fSuppPlaneChars = pfont->AnySupplementaryPlaneChars(); std::string staOutputFilename(pchOutputPath); staOutputFilename.append("/dbg_cmap.txt"); std::ofstream strmOut; strmOut.open(staOutputFilename.data()); if (strmOut.fail()) { g_errorList.AddWarning(6505, NULL, "Error in writing to file ", staOutputFilename.data()); return; } int nFirstPseudo = 0x10000; for (size_t iw = 0; iw < m_vwPseudoForUnicode.size(); iw++) nFirstPseudo = min(nFirstPseudo, static_cast(m_vwPseudoForUnicode[iw])); if (g_errorList.AnyFatalErrors()) { strmOut << "Fatal errors--compilation aborted"; } else { int cnUni = pfont->NumUnicode(); utf16 * rgchwUniToGlyphID = new utf16[cnUni]; unsigned int * rgnGlyphIDToUni = new unsigned int[0x10000]; std::vector vnXUniForPsd; std::vector vwXPsdForUni; CmapAndInverse(pfont, cnUni, rgchwUniToGlyphID, rgnGlyphIDToUni, vnXUniForPsd, vwXPsdForUni); unsigned int nUni; gid16 wGlyphID; strmOut << "UNICODE => GLYPH ID MAPPINGS\n\n"; int iXPsd = 0; // extra pseudos GrcFont::iterator fit(pfont); int iUni; for (iUni = 0, fit = pfont->Begin(); fit != pfont->End(); ++fit, ++iUni) { nUni = *fit; wGlyphID = rgchwUniToGlyphID[iUni]; Assert(wGlyphID != 0); while (iXPsd < signed(vnXUniForPsd.size()) && vnXUniForPsd[iXPsd] < nUni) { // insert extra pseudos that are not in the cmap WriteCmapItem(strmOut, vnXUniForPsd[iXPsd], fSuppPlaneChars, vwXPsdForUni[iXPsd], true, true, false); iXPsd++; } WriteCmapItem(strmOut, nUni, fSuppPlaneChars, wGlyphID, true, wGlyphID >= nFirstPseudo, true); } // Sort the extra pseudos by glyph ID. for (int i1 = 0; i1 < signed(vwXPsdForUni.size()) - 1; i1++) for (size_t i2 = i1 + 1; i2 < vwXPsdForUni.size(); i2++) if (vwXPsdForUni[i1] > vwXPsdForUni[i2]) { // Swap utf16 wTmp = vwXPsdForUni[i1]; vwXPsdForUni[i1] = vwXPsdForUni[i2]; vwXPsdForUni[i2] = wTmp; unsigned int nTmp = vnXUniForPsd[i1]; vnXUniForPsd[i1] = vnXUniForPsd[i2]; vnXUniForPsd[i2] = nTmp; } strmOut << "\n\n\nGLYPH ID => UNICODE MAPPINGS\n\n"; iXPsd = 0; for (wGlyphID = 0; wGlyphID < 0xFFFF; wGlyphID++) { if (wGlyphID == m_wLineBreak) { strmOut << wGlyphID; if (fSuppPlaneChars) strmOut << " "; strmOut << " [line-break]\n"; } else if (wGlyphID == m_wPhantom) { strmOut << wGlyphID; if (fSuppPlaneChars) strmOut << " "; strmOut << " [phantom]\n"; } else if (iXPsd < signed(vwXPsdForUni.size()) && vwXPsdForUni[iXPsd] == wGlyphID) { // Pseudo-glyph where the Unicode value is not in the cmap. if (vnXUniForPsd[iXPsd] != 0) WriteCmapItem(strmOut, vnXUniForPsd[iXPsd], fSuppPlaneChars, wGlyphID, false, true, false); iXPsd++; } else { nUni = rgnGlyphIDToUni[wGlyphID]; if (nUni != 0) WriteCmapItem(strmOut, nUni, fSuppPlaneChars, wGlyphID, false, wGlyphID >= nFirstPseudo, true); } } delete[] rgchwUniToGlyphID; delete[] rgnGlyphIDToUni; } strmOut.close(); } void GrcManager::WriteCmapItem(std::ofstream & strmOut, unsigned int nUnicode, bool fSuppPlaneChars, gid16 wGlyphID, bool fUnicodeToGlyph, bool fPseudo, bool fInCmap) { if (fUnicodeToGlyph) { DebugUnicode(strmOut, nUnicode, fSuppPlaneChars); // if (wGlyphID < 0x0100) // strmOut << " '" << (char)wGlyphID << "'"; // else // strmOut << " "; strmOut << " => "; if (wGlyphID < 10) strmOut << " "; if (wGlyphID < 100) strmOut << " "; if (wGlyphID < 1000) strmOut << " "; if (wGlyphID < 10000) strmOut << " "; strmOut << wGlyphID << " ("; DebugHex(strmOut, wGlyphID); strmOut << ")"; if (fPseudo) { if (fInCmap) { if (wGlyphID >= m_wFirstAutoPseudo) strmOut << " [auto-pseudo]"; else strmOut << " [pseudo]"; } else strmOut << " [pseudo; not in cmap]"; } strmOut << "\n"; } else // glyph to Unicode { strmOut << wGlyphID; //DebugHex(strmOut, wGlyphID); if (wGlyphID < 10) strmOut << " "; if (wGlyphID < 100) strmOut << " "; if (wGlyphID < 1000) strmOut << " "; if (wGlyphID < 10000) strmOut << " "; strmOut << " => "; DebugUnicode(strmOut, nUnicode, fSuppPlaneChars); if (nUnicode < 0x0100) strmOut << " '" << (char)nUnicode << "'"; else strmOut << " "; if (fPseudo) { if (fInCmap) { if (wGlyphID >= m_wFirstAutoPseudo) strmOut << " [auto-pseudo]"; else strmOut << " [pseudo]"; } else strmOut << " [pseudo; not in cmap]"; } strmOut << "\n"; } } void GdlRenderer::DebugCmap(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni) { for (size_t ipglfc = 0; ipglfc < m_vpglfc.size(); ipglfc++) m_vpglfc[ipglfc]->DebugCmap(pfont, rgchwUniToGlyphID, rgnGlyphIDToUni); } void GdlGlyphClassDefn::DebugCmap(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) m_vpglfdMembers[iglfd]->DebugCmapForMember(pfont, rgchwUniToGlyphID, rgnGlyphIDToUni); } void GdlGlyphClassDefn::DebugCmapForMember(GrcFont * /*pfont*/, utf16 * /*rgchwUniToGlyphID*/, unsigned int * /*rgnGlyphIDToUni*/) { // Do nothing; this class will be handled separately at the top level. } void GdlGlyphDefn::DebugCmapForMember(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni) { Assert(m_vwGlyphIDs.size() > 0); // TODO: check for kBadGlyph values //unsigned int n; //unsigned int nUnicode; //utf16 w; //gid16 wGlyphID; //utf16 wFirst; // wLast; switch (m_glft) { case kglftGlyphID: break; case kglftUnicode: // Assert(m_nFirst <= m_nLast); // for (n = m_nFirst; n <= m_nLast; ++n) // { // wGlyphID = pfont->GlyphFromCmap(n, this); // if (wGlyphID != 0) // { // rgchwUniToGlyphID[n] = wGlyphID; // rgnGlyphIDToUni[wGlyphID] = n; // } // // // Just in case, since incrementing 0xFFFFFFFF will produce zero. // if (n == 0xFFFFFFFF) // break; // } break; case kglftPostscript: break; case kglftCodepoint: // wFirst = (utf16)m_nFirst; // wLast = (utf16)m_nLast; // if (wFirst == 0 && wLast == 0) // { // for (int ich = 0; ich < m_sta.Length(); ich++) // { // char rgchCdPt[2]; // rgchCdPt[0] = m_sta.GetAt(ich); // nUnicode = pfont->UnicodeFromCodePage(m_wCodePage, m_sta[ich], this); // Assert(nUnicode != 0); // if ((wGlyphID = g_cman.PseudoForUnicode(nUnicode)) == 0) // wGlyphID = pfont->GlyphFromCmap(nUnicode, this); // Assert(wGlyphID != 0); // rgchwUniToGlyphID[nUnicode] = wGlyphID; // rgnGlyphIDToUni[wGlyphID] = nUnicode; // } // } // else // { // Assert(wFirst <= wLast); // for (w = wFirst; w <= wLast; w++) // { // nUnicode = pfont->UnicodeFromCodePage(m_wCodePage, w, this); // Assert(nUnicode != 0); // if ((wGlyphID = g_cman.PseudoForUnicode(nUnicode)) == 0) // wGlyphID = pfont->GlyphFromCmap(nUnicode, this); // Assert(wGlyphID != 0); // rgchwUniToGlyphID[nUnicode] = wGlyphID; // rgnGlyphIDToUni[wGlyphID] = nUnicode; // // // Just in case, since incrementing 0xFFFF will produce zero. // if (w == 0xFFFF) // break; // } // } break; case kglftPseudo: Assert(m_nFirst == 0); Assert(m_nLast == 0); Assert(m_pglfOutput); // While we're at it, handle the output glyph ID. m_pglfOutput->DebugCmapForMember(pfont, rgchwUniToGlyphID, rgnGlyphIDToUni); if (m_nUnicodeInput != 0) { // It is the assigned glyph ID which is the 'contents' of this glyph defn. // rgchwUniToGlyphID[m_nUnicodeInput - pfont->MinUnicode()] = m_wPseudo; //rgnGlyphIDToUni[m_wPseudo] = m_nUnicodeInput; } break; default: Assert(false); } } /*---------------------------------------------------------------------------------------------- Generate the cmap and inverse cmap. Used by the debugger output routines. ----------------------------------------------------------------------------------------------*/ void GrcManager::CmapAndInverse(GrcFont * pfont, int cnUni, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni, std::vector & vnXUniForPsd, std::vector & vwXPsdForUni) { memset(rgchwUniToGlyphID, 0, (cnUni * sizeof(utf16))); memset(rgnGlyphIDToUni, 0, (0x10000 * sizeof(int))); pfont->GetGlyphsFromCmap(rgchwUniToGlyphID); // Generate the inverse cmap. Also overwrite the glyph IDs for any pseudos. int iUni; GrcFont::iterator fit(pfont); int iUniPsd = 0; for (iUni = 0, fit = pfont->Begin(); fit != pfont->End(); ++fit, ++iUni) { unsigned int nUni = *fit; // Handle pseudos. while (iUniPsd < signed(m_vnUnicodeForPseudo.size()) && nUni > m_vnUnicodeForPseudo[iUniPsd]) { // Put any Unicode -> pseudo mappings where the Unicode is not in the cmap into // a separate list. vnXUniForPsd.push_back(m_vnUnicodeForPseudo[iUniPsd]); vwXPsdForUni.push_back(m_vwPseudoForUnicode[iUniPsd]); iUniPsd++; } if (iUniPsd < signed(m_vnUnicodeForPseudo.size()) && m_vnUnicodeForPseudo[iUniPsd] == nUni) { // Pseudo: overwrite glyph ID. rgchwUniToGlyphID[iUni] = m_vwPseudoForUnicode[iUniPsd]; iUniPsd++; } utf16 wGlyph = rgchwUniToGlyphID[iUni]; rgnGlyphIDToUni[wGlyph] = nUni; } Assert(iUni == cnUni); } /*---------------------------------------------------------------------------------------------- Output XML to be used by the engine debugger. ----------------------------------------------------------------------------------------------*/ bool GrcManager::DebugXml(GrcFont * pfont, char * pchOutputFilename, bool fAbsGdlFilePaths) { // Current working directory, for calculating file paths in GDX file: char rgchCurWkDir[128]; (void)getcwd(rgchCurWkDir, 128); // Calculate the name of the debugger-xml file. It is the name of the font file, but with // a .gdx extension. auto cchLen = strlen(pchOutputFilename); char rgchDbgXmlFile[128]; char rgchOutputPath[128]; memset(rgchDbgXmlFile, 0, 128 * sizeof(char)); memset(rgchOutputPath, 0, 128 * sizeof(char)); memcpy(rgchDbgXmlFile, pchOutputFilename, cchLen * sizeof(char)); char * pchXml = rgchDbgXmlFile + cchLen; while (pchXml != rgchDbgXmlFile && *pchXml != '.') // remove the extension *pchXml-- = 0; *pchXml = 0; // '.' memcpy(rgchOutputPath, rgchDbgXmlFile, cchLen * sizeof(char)); // Remove the rest of the filename from the path. char * pchPath = rgchOutputPath + (pchXml - rgchDbgXmlFile); while (pchPath != rgchOutputPath && *pchPath != '/' && *pchPath != '\\') *pchPath-- = 0; *pchPath = 0; /***** // Output to the current directory: while (*pchOut != 0) { if (*pchOut == '/' || *pchOut == '\\') { pchXml = rgchDbgXmlFile; pchOut++; } else *pchXml++ = *pchOut++; } pchXml--; while (*pchXml != '.') pchXml--; *****/ *pchXml++ = '.'; *pchXml++ = 'g'; *pchXml++ = 'd'; *pchXml++ = 'x'; *pchXml = 0; std::string staPathToCur; if (fAbsGdlFilePaths) staPathToCur.assign(""); else // Generate the path from the GDX file to the current working directory. // This must be prepended on to the source code file names in the GDX file. staPathToCur = pathFromOutputToCurrent(rgchCurWkDir, rgchOutputPath); std::ofstream strmOut; strmOut.open(rgchDbgXmlFile); if (strmOut.fail()) { g_errorList.AddWarning(6501, NULL, "Error in writing to file ", rgchDbgXmlFile); return false; } if (g_errorList.AnyFatalErrors()) strmOut << "Fatal errors--compilation aborted"; else { strmOut << "\n" << "\n\n"; // Glyphs and glyph attributes this->DebugXmlGlyphs(pfont, strmOut, staPathToCur); // Classes and members this->m_prndr->DebugXmlClasses(strmOut, staPathToCur); // Features m_prndr->DebugXmlFeatures(strmOut, staPathToCur); // Rules m_prndr->DebugXmlRules(this, strmOut, staPathToCur); strmOut << "\n"; } strmOut.close(); return true; } /*--------------------------------------------------------------------------------------------*/ void GrcManager::DebugXmlGlyphs(GrcFont * pfont, std::ofstream & strmOut, std::string staPathToCur) { // Glyph attribute definitions strmOut << " \n"; Symbol psymActual = m_psymtbl->FindSymbol("*actualForPseudo*"); unsigned int nAttrIdActual = psymActual->InternalID(); Symbol psymBw = m_psymtbl->FindSymbol("breakweight"); unsigned int nAttrIdBw = psymBw->InternalID(); Symbol psymDir = m_psymtbl->FindSymbol("directionality"); unsigned int nAttrIdDir = psymDir->InternalID(); Symbol psymSkipP = NULL; unsigned int nAttrIdSkipP = 0; Symbol psymSkipP2 = NULL; unsigned int nAttrIdSkipP2 = 0; if (this->IncludePassOptimizations()) { psymSkipP = m_psymtbl->FindSymbol("*skipPasses*"); nAttrIdSkipP = psymSkipP->InternalID(); psymSkipP2 = m_psymtbl->FindSymbol("*skipPasses2*"); if (psymSkipP2) nAttrIdSkipP2 = psymSkipP2->InternalID(); } //Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "0", "stretch")); Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "stretch")); int nAttrIdJStr = psymJStr->InternalID(); for (size_t nAttrID = 0; nAttrID < m_vpsymGlyphAttrs.size(); nAttrID++) { Symbol psymGlyphAttr = m_vpsymGlyphAttrs[nAttrID]; //if ((psymGlyphAttr->IsMirrorAttr() || nAttrID == nAttrIdDir) // && !m_prndr->Bidi()) // continue; if (psymGlyphAttr->InternalID() == static_cast(nAttrID)) { std::string staExpType = ExpressionDebugString(psymGlyphAttr->ExpType()); if (nAttrID == nAttrIdBw) staExpType = "bw"; else if (nAttrID == nAttrIdDir) staExpType = "dircode"; else if (nAttrID == nAttrIdActual) staExpType = "gid"; else if (nAttrID == nAttrIdSkipP || nAttrID == nAttrIdSkipP2) staExpType = "bitmap"; else if (psymGlyphAttr->IsPointField()) staExpType = "point"; else if (psymGlyphAttr->IsComponentBoxField()) staExpType = "comp"; strmOut << " FullName() << "\" attrId=\"" << nAttrID << "\" type=\"" << staExpType << "\" />\n"; } // else we have something like justify.stretch which is unused } strmOut << " \n\n"; // Glyphs and their attribute values // Generate the cmap. int cnUni = pfont->NumUnicode(); utf16 * rgchwUniToGlyphID = new utf16[cnUni]; unsigned int * rgnGlyphIDToUni = new unsigned int[0x10000]; std::vector vnXUniForPsd; std::vector vwXPsdForUni; CmapAndInverse(pfont, cnUni, rgchwUniToGlyphID, rgnGlyphIDToUni, vnXUniForPsd, vwXPsdForUni); strmOut << " \n"; std::vector vstaSingleMemberClasses; std::vector vstaSingleMemberClassFiles; std::vector vnSingleMemberClassLines; m_prndr->RecordSingleMemberClasses(vstaSingleMemberClasses, vstaSingleMemberClassFiles, vnSingleMemberClassLines, staPathToCur); int fxdGlatVersion = TableVersion(ktiGlat); for (auto wGlyphID = 0U; wGlyphID < m_cwGlyphIDs; wGlyphID++) { // Convert breakweight values depending on the table version to output. ////ConvertBwForVersion(wGlyphID, nAttrIdBw); // Split any large stretch values into two 16-bit words. ////SplitLargeStretchValue(wGlyphID, nAttrIdJStr); strmOut << " (unsigned)wGlyphID && vstaSingleMemberClasses[wGlyphID] != "") strmOut << "\" className=\"" << vstaSingleMemberClasses[wGlyphID]; if (rgnGlyphIDToUni[wGlyphID] != 0) { strmOut << "\" usv=\""; DebugUnicode(strmOut, rgnGlyphIDToUni[wGlyphID], false); } if (vstaSingleMemberClassFiles.size() > (unsigned)wGlyphID && vstaSingleMemberClassFiles[wGlyphID] != "") strmOut << "\" inFile=\"" << vstaSingleMemberClassFiles[wGlyphID] << "\" atLine=\"" << vnSingleMemberClassLines[wGlyphID]; strmOut<< "\"" << ">\n"; for (auto nAttrID = 0U; nAttrID < m_vpsymGlyphAttrs.size(); nAttrID++) { int nValue = FinalAttrValue(wGlyphID, nAttrID); if (nAttrID == nAttrIdActual && nValue == 0) continue; if ((m_vpsymGlyphAttrs[nAttrID]->IsMirrorAttr() || nAttrID == nAttrIdDir) && m_prndr->Bidi() == 0) // Ignore mirror and directionality attribute for non-bidi. continue; // Get the original expression where this attribute was set. GdlExpression * pexp; int nPR; int munitPR; bool fOverride, fShadow; GrpLineAndFile lnf; m_pgax->Get(wGlyphID, nAttrID, &pexp, &nPR, &munitPR, &fOverride, &fShadow, &lnf); if (m_vpsymGlyphAttrs[nAttrID]->IsUserDefined() && !m_pgax->Defined(wGlyphID, nAttrID)) // Attribute not defined for this glyph. continue; if (! m_prndr->HasCollisionPass() && m_vpsymGlyphAttrs[nAttrID]->IsCollisionAttr()) // Ignore collision attributes when there is no collision pass. continue; strmOut << " FullName() << "\" value=\""; if (m_vpsymGlyphAttrs[nAttrID]->LastFieldIs("gpoint") && nValue == kGpointZero) strmOut << "zero"; else strmOut << nValue; if (!lnf.NotSet()) strmOut << "\" inFile=\"" << lnf.FileWithPath(staPathToCur) << "\" atLine=\"" << lnf.OriginalLine(); strmOut << "\" />\n"; } if (fxdGlatVersion >= 0x00030000) { // Output glyph-approximation octaboxes. if (wGlyphID < m_wGlyphIDLim && wGlyphID < (int)m_vgbdy.size()) m_vgbdy[wGlyphID].DebugXml(strmOut); } strmOut << " \n"; } strmOut << " \n\n"; } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::RecordSingleMemberClasses(std::vector & vstaSingleMemberClasses, std::vector & vstaFiles, std::vector & vnLines, std::string staPathToCur) { for (size_t ipglfc = 0; ipglfc < m_vpglfc.size(); ipglfc++) { m_vpglfc[ipglfc]->RecordSingleMemberClasses(vstaSingleMemberClasses, vstaFiles, vnLines, staPathToCur); } } void GdlGlyphClassDefn::RecordSingleMemberClasses(std::vector & vstaSingleMemberClasses, std::vector & vstaFiles, std::vector & vnLines, std::string staPathToCur) { FlattenMyGlyphList(); if (m_vgidFlattened.size() == 1) { utf16 gid = m_vgidFlattened[0]; while (vstaSingleMemberClasses.size() <= gid) { vstaSingleMemberClasses.push_back(""); vstaFiles.push_back(""); vnLines.push_back(-1); } if (vstaSingleMemberClasses[gid] == "") { vstaSingleMemberClasses[gid] = this->Name(); if (!m_lnf.NotSet()) { vstaFiles[gid] = m_lnf.FileWithPath(staPathToCur); vnLines[gid] = m_lnf.OriginalLine(); } } } } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::DebugXmlClasses(std::ofstream & strmOut, std::string staPathToCur) { strmOut << " \n"; int cwGlyphIDs; for (size_t ipglfc = 0; ipglfc < m_vpglfc.size(); ipglfc++) { if (m_vpglfc[ipglfc]->Name() == "ANY") continue; cwGlyphIDs = 0; m_vpglfc[ipglfc]->DebugXmlClasses(strmOut, cwGlyphIDs, staPathToCur); } strmOut << " \n\n"; } void GdlGlyphClassDefn::DebugXmlClasses(std::ofstream & strmOut, int & cwGlyphIDs, std::string staPathToCur) { strmOut << " Name(); if (m_fReplcmtIn) strmOut << "\" subClassIndexLhs=\"" << m_nReplcmtInID; if (m_fReplcmtOut) strmOut << "\" subClassIndexRhs=\"" << m_nReplcmtOutID; strmOut << "\">\n"; for (auto iglfd = 0U; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->DebugXmlClassMembers(strmOut, staPathToCur, this, LineAndFileForMember(iglfd), cwGlyphIDs); } strmOut << " \n"; } void GdlGlyphClassDefn::DebugXmlClassMembers(std::ofstream & strmOut, std::string staPathToCur, GdlGlyphClassDefn * pglfdParent, GrpLineAndFile lnf, int & cwGlyphIDs) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->DebugXmlClassMembers(strmOut, staPathToCur, pglfdParent, lnf, cwGlyphIDs); } } void GdlGlyphDefn::DebugXmlClassMembers(std::ofstream & strmOut, std::string staPathToCur, GdlGlyphClassDefn * /*pglfdParent*/, GrpLineAndFile lnf, int & cwGlyphIDs) { for (unsigned int iw = 0; iw < m_vwGlyphIDs.size(); iw++) { strmOut << " \n"; cwGlyphIDs++; } } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::DebugXmlFeatures(std::ofstream & strmOut, std::string staPathToCur) { strmOut << " \n"; for (size_t ipfeat = 0; ipfeat < m_vpfeat.size(); ipfeat++) { GdlFeatureDefn * pfeat = m_vpfeat[ipfeat]; pfeat->DebugXmlFeatures(strmOut, staPathToCur); } strmOut << " \n\n"; } void GdlFeatureDefn::DebugXmlFeatures(std::ofstream & strmOut, std::string staPathToCur) { GrpLineAndFile lnf = this->LineAndFile(); unsigned int nID = this->ID(); strmOut << " Name() << "\" featureID=\"" << nID; if (nID > 0xFFFFFF) { // Output string format as well. char rgch[5]; rgch[4] = 0; rgch[3] = (char)(nID & 0x000000FF); rgch[2] = (char)((nID & 0x0000FF00) >> 8); rgch[1] = (char)((nID & 0x00FF0000) >> 16); rgch[0] = (char)((nID & 0xFF000000) >> 24); std::string staT(rgch); // Why doesn't this work?? //union { // char rgch[4]; // unsigned int n; //} featid; //featid.n = nID; //// Reverse them. //char chTmp = featid.rgch[0]; //featid.rgch[0] = featid.rgch[4]; //featid.rgch[4] = chTmp; //chTmp = featid.rgch[2]; //featid.rgch[2] = featid.rgch[3]; //featid.rgch[3] = chTmp; //std::string staT(featid.rgch); strmOut << "\" featureIDstring=\"" << staT; } strmOut << "\" index=\"" << this->InternalID(); if (!lnf.NotSet() && this->ID() != kfidStdLang) strmOut << "\" inFile=\"" << lnf.FileWithPath(staPathToCur) << "\" atLine=\"" << lnf.OriginalLine(); strmOut << "\" >\n"; for (unsigned int ifset = 0; ifset < m_vpfset.size(); ifset++) { m_vpfset[ifset]->DebugXmlFeatures(strmOut, staPathToCur); } strmOut << " \n"; } void GdlFeatureSetting::DebugXmlFeatures(std::ofstream & strmOut, std::string staPathToCur) { GrpLineAndFile lnf = this->LineAndFile(); strmOut << " Name() << "\" value=\"" << this->Value(); if (!lnf.NotSet()) strmOut << "\" inFile=\"" << lnf.FileWithPath(staPathToCur) << "\" atLine=\"" << lnf.OriginalLine(); strmOut << "\" />\n"; } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::DebugXmlRules(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur) { strmOut << " \n"; GdlRuleTable * prultbl; if ((prultbl = FindRuleTable("linebreak")) != NULL) prultbl->DebugXmlRules(pcman, strmOut, staPathToCur); if ((prultbl = FindRuleTable("substitution")) != NULL) prultbl->DebugXmlRules(pcman, strmOut, staPathToCur); if (RawBidi() == kFullPass) strmOut << " \n"; if ((prultbl = FindRuleTable("justification")) != NULL) prultbl->DebugXmlRules(pcman, strmOut, staPathToCur); if ((prultbl = FindRuleTable("positioning")) != NULL) prultbl->DebugXmlRules(pcman, strmOut, staPathToCur); strmOut << " \n\n"; } void GdlRuleTable::DebugXmlRules(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->DebugXmlRules(pcman, strmOut, staPathToCur, this->NameSymbol()); } } void GdlPass::DebugXmlRules(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur, Symbol psymTableName) { if (!ValidPass()) return; PassDebuggerNumber(); Assert(PassDebuggerNumber() != 0); strmOut << " FullName() << "\" index=\"" << PassDebuggerNumber() << "\""; if (m_nCollisionFix != 0) strmOut << " collisionFix=\"" << m_nCollisionFix << "\""; if (m_nAutoKern != 0) strmOut << " autoKern=\"" << m_nAutoKern << "\""; if (m_fFlipDir != 0) strmOut << " flipDir=\"" << int(m_fFlipDir) << "\""; strmOut << " >\n"; if (m_vprule.size() > 0) { if (m_vpexpConstraints.size() > 0) { strmOut << " \n"; for (size_t iexp = 0; iexp < m_vpexpConstraints.size(); iexp++) { GrpLineAndFile lnf = m_vpexpConstraints[iexp]->LineAndFile(); strmOut << " PrettyPrint(pcman, strmOut, true); strmOut << " }\" inFile=\"" << lnf.FileWithPath(staPathToCur) << "\" atLine=\"" << lnf.OriginalLine() << "\" />\n"; } strmOut << " \n"; } for (auto irule = 0U; irule < m_vprule.size(); irule++) { m_vprule[irule]->DebugXml(pcman, strmOut, staPathToCur, PassDebuggerNumber(), irule); } } strmOut << " \n\n"; } void GdlRule::DebugXml(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur, int nPassNum, int nRuleNum) { strmOut << " RulePrettyPrint(pcman, strmOut, true); strmOut << "\" >\n"; if (m_vpexpConstraints.size() > 0) { strmOut << " \n"; for (size_t iexp = 0; iexp < m_vpexpConstraints.size(); iexp++) { GrpLineAndFile lnf = m_vpexpConstraints[iexp]->LineAndFile(); strmOut << " PrettyPrint(pcman, strmOut, true); strmOut << " }\" inFile=\"" << lnf.FileWithPath(staPathToCur) << "\" atLine=\"" << lnf.OriginalLine() << "\" />\n"; } strmOut << " \n"; } // Loop through all the items to see if we need a LHS or a context. bool fLhs = false; bool fContext = (m_nScanAdvance != -1); int irit; for (irit = 0; irit < signed(m_vprit.size()) ; irit++) { GdlRuleItem * prit = m_vprit[irit]; GdlSubstitutionItem * pritsub = dynamic_cast(prit); if (pritsub) fLhs = true; GdlSetAttrItem * pritset = dynamic_cast(prit); if (!pritset) fContext = true; else if (prit->m_pexpConstraint) fContext = true; } // LHS if (fLhs) { strmOut << " \n"; for (size_t irit = 0; irit < m_vprit.size(); irit++) { m_vprit[irit]->DebugXmlLhs(pcman, strmOut, staPathToCur); } strmOut << " \n"; } // RHS strmOut << " \n"; for (size_t irit = 0; irit < m_vprit.size(); irit++) { m_vprit[irit]->DebugXmlRhs(pcman, strmOut, staPathToCur); } strmOut << " \n"; // Context if (fContext) { strmOut << " \n"; int iritRhs = 0; for (size_t irit = 0; irit < m_vprit.size(); irit++) { if (m_nScanAdvance == (signed)irit) strmOut << " \n"; m_vprit[irit]->DebugXmlContext(pcman, strmOut, staPathToCur, iritRhs); } strmOut << " \n"; } strmOut << " \n"; } void GdlRuleItem::DebugXmlLhs(GrcManager * /*pcman*/, std::ofstream & /*strmOut*/, std::string /*staPathToCur*/) { // Do nothing. } void GdlSetAttrItem::DebugXmlLhs(GrcManager * /*pcman*/, std::ofstream & strmOut, std::string /*staPathToCur*/) { strmOut << " FullAbbrev() << "\" slotIndex=\"" << m_iritContextPos + 1 << "\" />\n"; } void GdlSubstitutionItem::DebugXmlLhs(GrcManager * /*pcman*/, std::ofstream & strmOut, std::string /*staPathToCur*/) { strmOut << " FullAbbrev() << "\" slotIndex=\"" << m_iritContextPos + 1 << "\" />\n"; } void GdlRuleItem::DebugXmlRhs(GrcManager * /*pcman*/, std::ofstream & /*strmOut*/, std::string /*staPathToCur*/) { // Do nothing. } void GdlSetAttrItem::DebugXmlRhs(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur) { strmOut << " FullAbbrev(); if (m_vpavs.size() > 0) { strmOut << "\" assignmentGdl=\""; AttrSetterPrettyPrint(pcman, NULL, 0, strmOut, true); // NULL and 0 are bogus but not used } strmOut << "\" slotIndex=\"" << m_iritContextPos + 1 << "\""; bool fNeedSlotAttrs = false; for (unsigned ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { // For now, we only need attachment slot attributes. if (m_vpavs[ipavs]->m_psymName->IsAttachment()) { fNeedSlotAttrs = true; break; } } if (fNeedSlotAttrs) { strmOut << ">\n DebugXml(pcman, strmOut, staPathToCur); } strmOut << " />\n \n"; } else { strmOut << "/>\n"; } } void GdlSubstitutionItem::DebugXmlRhs(GrcManager * pcman, std::ofstream & strmOut, std::string /*staPathToCur*/) { strmOut << " FullAbbrev(); if (m_pexpSelector) strmOut << "\" selectorIndex=\"" << m_pexpSelector->SlotNumber(); if (m_vpexpAssocs.size() > 0) { strmOut << "\" associations=\""; int iexp; for (iexp = 0; iexp < signed(m_vpexpAssocs.size()) - 1; iexp++) strmOut << m_vpexpAssocs[iexp]->SlotNumber() << " "; strmOut << m_vpexpAssocs[iexp]->SlotNumber(); } if (m_vpavs.size() > 0) { strmOut << "\" assignmentGdl=\""; AttrSetterPrettyPrint(pcman, NULL, 0, strmOut, true); // NULL and 0 are bogus but not used } strmOut << "\" slotIndex=\"" << m_iritContextPos + 1 << "\" />\n"; } void GdlRuleItem::DebugXmlContext(GrcManager * pcman, std::ofstream & strmOut, std::string /*staPathToCur*/, int & /*iritRhs*/) { strmOut << " FullAbbrev() << "\""; if (this->m_pexpConstraint) { strmOut << " >\n \n \n"; } else strmOut << " />\n"; } void GdlSetAttrItem::DebugXmlContext(GrcManager * pcman, std::ofstream & strmOut, std::string /*staPathToCur*/, int & iritRhs) { iritRhs++; strmOut << " m_pexpConstraint) { strmOut << " >\n \n \n"; } else strmOut << " />\n"; } void GdlRuleItem::DebugXmlConstraint(GrcManager * pcman, std::ofstream & strmOut, std::string /*staPathToCur*/) { if (m_pexpConstraint) { strmOut << " PrettyPrint(pcman, strmOut, true); strmOut << "\" />\n"; } } void GdlLineBreakItem::DebugXmlConstraint(GrcManager * pcman, std::ofstream & strmOut, std::string /*staPathToCur*/) { strmOut << " \n"; } void GdlAttrValueSpec::DebugXml(GrcManager * pcman, std::ostream & strmOut, std::string /*staPathToCur*/) { // For now, only output the attach attributes. if (m_psymName->IsAttachment()) { if (m_fFlattened && (m_psymName->IsAttachAtField() || m_psymName->IsAttachWithField())) { // A single statement like "attach.at = apt" has been translated into // "attach.at.x = apt.x, attach.at.y = apt.y, attach.at.xoffset = apt.xoffset, // attach.at.yoffset = apt.yoffset". Just print out one of these, say, the x. if (m_psymName->IsAttachXField()) { if (m_psymName->IsAttachAtField()) strmOut << " attachAt=\""; else strmOut << " attachWith=\""; GdlLookupExpression * pexpLookupValue = dynamic_cast(m_pexpValue); if (pexpLookupValue) { Symbol psym = pexpLookupValue->Name()->ParentSymbol(); // glyph attr strmOut << psym->LastField(); } else // strange... m_pexpValue->PrettyPrint(pcman, strmOut, true); strmOut << "\""; } } else if (m_psymName->IsAttachTo()) { strmOut << " attachTo=\""; GdlSlotRefExpression * pexpSlotValue = dynamic_cast(m_pexpValue); if (pexpSlotValue) strmOut << pexpSlotValue->AdjustedIndex() + 1; else // strange... m_pexpValue->PrettyPrint(pcman, strmOut, true); strmOut << "\""; } } } /*---------------------------------------------------------------------------------------------- Output a number in hex format. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugHex(std::ostream & strmOut, gid16 wGlyphID) { auto const flags = strmOut.flags(std::ios::hex); auto const fill = strmOut.fill(); strmOut << std::hex << std::noshowbase << "0x" << std::setfill('0') << std::setw(4) << wGlyphID; strmOut.flags(flags); strmOut.fill(fill); } /*---------------------------------------------------------------------------------------------- Output a Unicode codepoint in hex format. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugUnicode(std::ostream & strmOut, int nUnicode, bool f32bit) { auto const flags = strmOut.flags(std::ios::hex); auto const fill = strmOut.fill(); strmOut << std::hex << std::noshowbase << std::uppercase << "U+" << std::setfill('0') << std::setw(f32bit ? 8 : 4) << nUnicode ; strmOut.flags(flags); strmOut.fill(fill); } /*---------------------------------------------------------------------------------------------- Return a string version of an expression type ----------------------------------------------------------------------------------------------*/ std::string GrcManager::ExpressionDebugString(ExpressionType expt) { switch (expt) { default: case kexptUnknown: return "unknown"; case kexptZero: case kexptOne: case kexptNumber: return "integer"; case kexptBoolean: return "boolean"; case kexptMeas: return "em-units"; case kexptSlotRef: return "slot-ref"; case kexptString: return "string"; case kexptPoint: return "point"; case kexptGlyphID: return "gid"; } } /*---------------------------------------------------------------------------------------------- Return the path from the output directory (where the font and GDX file will go) to the current directory. For instance, if the output directory is "C:/aaa/bbb/ccc/ddd" and the current directory is "C:/aaa/bbb/ccc/eee/fff", the result will be "../eee/fff". This is used for modifying the GDL file names that are put in the GDX file; they must be relative to that file. ----------------------------------------------------------------------------------------------*/ std::string GrcManager::pathFromOutputToCurrent(char * rgchCurDir, char * rgchOutputPath) { std::string staCurDir(rgchCurDir); std::string staOutputPath(rgchOutputPath); std::string staResult; std::vector vstaCurDir; splitPath(rgchCurDir, vstaCurDir); std::vector vstaOutputPath; char chSep = splitPath(rgchOutputPath, vstaOutputPath); std::vector vstaResultRev; if (rgchOutputPath[0] == '/' || rgchOutputPath[1] == ':') { // Output path is absolute. while (vstaCurDir.size() > 0 && vstaOutputPath.size() > 0 #ifdef _WIN32 && stricmp(vstaCurDir[0].data(), vstaOutputPath[0].data()) == 0) #else // Paths on Linux are case-sensitive, and stricmp doesn't seem to work anyway. && strcmp(vstaCurDir[0].data(), vstaOutputPath[0].data()) == 0) #endif { vstaCurDir.erase(vstaCurDir.begin()); vstaOutputPath.erase(vstaOutputPath.begin()); } size_t ista; for (ista = 0; ista < vstaOutputPath.size(); ista++) { staResult.append(".."); staResult.append(&chSep, 1); } for (ista = 0; ista < vstaCurDir.size(); ista++) { staResult.append(vstaCurDir[ista]); staResult.append(&chSep, 1); } } else { auto iCWDpath = vstaCurDir.size() - 1; // index of the current directory in the path for (size_t istaOut = 0; istaOut < vstaOutputPath.size(); istaOut++) { if (strcmp(vstaOutputPath[istaOut].data(), "..") == 0) { if (vstaResultRev.size() > 0 && strcmp(vstaResultRev[vstaResultRev.size()-1].data(), "..") == 0) { // Output path is something like 'aaa/..' - strange situation, but // remove the most recent directory. vstaResultRev.pop_back(); } else { vstaResultRev.push_back(vstaCurDir[iCWDpath]); iCWDpath--; } } else vstaResultRev.push_back(".."); } for (intptr_t ista = intptr_t(vstaResultRev.size()) - 1; ista >= 0; --ista) { staResult.append(vstaResultRev[ista]); staResult.append(&chSep, 1); } } return staResult; } /*---------------------------------------------------------------------------------------------- Split path into directory names. Return the character that is used for the separator (/ or \). ----------------------------------------------------------------------------------------------*/ char GrcManager::splitPath(char * rgchPath, std::vector & vstaResult) { char chSep = '/'; // unknown char * pch = rgchPath; char * pchStart = rgchPath; while (*pch != 0 || pch > pchStart) { if (*pch == 0 || *pch == '/' || *pch == '\\') { if (*pch == '\\') chSep = '\\'; else if (*pch == '/') chSep = '/'; char rgchBuf[64]; memset(rgchBuf, 0, 64); memcpy(rgchBuf, pchStart, (pch - pchStart) * sizeof(char)); std::string staBuf(rgchBuf); if (staBuf.length() > 0) vstaResult.push_back(staBuf); pchStart = pch + 1; } if (*pch != 0) pch++; } return chSep; } /*---------------------------------------------------------------------------------------------- Enable the font to skip passes when the stream does not include any of the key glyphs. ----------------------------------------------------------------------------------------------*/ void GrcManager::PassOptimizations() { // The *skipPasses* bitmap has already been initialized to 1111111... for all glyphs. Symbol psymSkipP = m_psymtbl->FindSymbol("*skipPasses*"); unsigned int nAttrIdSkipP = psymSkipP->InternalID(); m_prndr->PassOptimizations(m_pgax, m_psymtbl, nAttrIdSkipP); } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->PassOptimizations(pgax, psymtbl, nAttrIdSkipP); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->PassOptimizations(pgax, psymtbl, nAttrIdSkipP); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP) { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->PassOptimizations(pgax, psymtbl, nAttrIdSkipP, this->GlobalID()); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP, int nPassID) { // Find a "key" slot for this rule: the first slot to be modified via substitution, // deletion, or attribute setting. For each glyph in the class associated with the slot, // clear the *skipPasses* bit for this pass, indicating that the presence of that glyph // requires the pass to be run. bool fInsertion = false; int iritFirstNonInsertion = -1; // First, look for a slot that is explicitly marked. int iritKey = -1; for (unsigned int irit = 0; irit < m_vprit.size() ; irit++) { if (m_vprit[irit]->IsMarkedKeySlot()) { if (iritKey == -1) iritKey = irit; else g_errorList.AddWarning(5708, this, "Multiple slots marked as key slot"); } if (m_vprit[irit]->IsInsertionSlot()) fInsertion = true; else if (iritFirstNonInsertion == -1) iritFirstNonInsertion = irit; } if (iritKey == -1) { // Next, look for the first modified slot. for (unsigned int irit = 0; irit < m_vprit.size() ; irit++) { if (m_vprit[irit]->CanBeKeySlot()) { iritKey = irit; break; } } } if (iritKey == -1 && fInsertion) { // The rule has an insertion, so use the first non-insertion slot as the key. iritKey = iritFirstNonInsertion; if (iritKey == -1) { // All slots are insertion slots. Just mark all glyphs as key for this pass. // (Actually this should never happen, because a rule with all insertions results in // an error before we get this far.) Symbol psym = psymtbl->FindSymbol("ANY"); GdlGlyphClassDefn * pglfcKey = psym->GlyphClassDefnData(); pglfcKey->MarkKeyGlyphsForPass(pgax, nAttrIdSkipP, nPassID); } } if (iritKey > -1) { m_vprit[iritKey]->MarkKeyGlyphsForPass(pgax, nAttrIdSkipP, nPassID); } // Otherwise this rule has no effect. This is possible when a rule has been created // to preclude another rule being run. Just ignore it for this purpose. } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::MarkKeyGlyphsForPass(GrcGlyphAttrMatrix * pgax, unsigned int nAttrIdSkipP, int nPassID) { GdlGlyphClassDefn * pglfcKey = m_psymInput->GlyphClassDefnData(); pglfcKey->MarkKeyGlyphsForPass(pgax, nAttrIdSkipP, nPassID); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::MarkKeyGlyphsForPass(GrcGlyphAttrMatrix * pgax, unsigned int nAttrIdSkipP, int nPassID) { if (nPassID >= kPassPerSPbitmap) { // Use *skipPasses2*. nPassID -= kPassPerSPbitmap; nAttrIdSkipP++; } if (nPassID >= kPassPerSPbitmap) { // More than 32 passes! - ignore this pass. } else { // Clear the *skipPasses* bit for all the glyphs in this class. if (!this->m_fHasFlatList) this->FlattenMyGlyphList(); // Pass IDs start at 0, so pass 0 uses the lowest bit. unsigned int nClearBit = 0x1 << nPassID; unsigned int nMask = ~nClearBit; for (unsigned int igid = 0; igid < m_vgidFlattened.size(); igid++) { GdlExpression * pexp = pgax->GetExpression(m_vgidFlattened[igid], nAttrIdSkipP); Assert(pexp); int nValue; pexp->ResolveToInteger(&nValue, false); nValue = (unsigned int)nValue & nMask; GdlNumericExpression * pexpNum = dynamic_cast(pexp); Assert(pexpNum); pexpNum->SetValue(nValue); } } } /*---------------------------------------------------------------------------------------------- Return true if the slot attribute settings indicate that this a key slot for a pass. ----------------------------------------------------------------------------------------------*/ bool GdlSetAttrItem::IsMarkedKeySlot() { for (unsigned int iavs = 0; iavs < m_vpavs.size(); iavs++) { if (m_vpavs[iavs]->IsKeySlotAttr()) return true; } return false; } bool GdlAttrValueSpec::IsKeySlotAttr() { return (m_psymName->FullName() == "passKeySlot"); } grcompiler-5.2.1/compiler/ErrorCheckClasses.cpp000066400000000000000000003567411411153030700215600ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: PreCompiler.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods to implement the pre-compiler, which does error checking and adjustments. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Classes and Glyphs ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Do the pre-compilation tasks for the classes and glyphs. Return false if compilation cannot continue due to an unrecoverable error. ----------------------------------------------------------------------------------------------*/ bool GrcManager::PreCompileClassesAndGlyphs(GrcFont * pfont) { // MarkUnusedGlyphMetrics(); if (!m_prndr->CheckRecursiveGlyphClasses()) return false; if (!GeneratePseudoGlyphs(pfont)) return false; if (!m_prndr->AssignGlyphIDs(pfont, m_wGlyphIDLim, m_hmActualForPseudo)) return false; // Do this after assigning glyph IDs, since above routine is not smart enough // to handle the fact that we are putting psuedos in the ANY class by means of glyphid(). if (!AddAllGlyphsToTheAnyClass(pfont, m_hmActualForPseudo)) return false; // Do this before assigning internal glyph attr IDs, because we only want to assign // IDs for justify levels that are being used. if (!MaxJustificationLevel(&m_nMaxJLevel)) return false; if (!AssignInternalGlyphAttrIDs()) return false; // SetGlyphMetricsFromFont(pfont); if (!AssignGlyphAttrsToClassMembers(pfont)) return false; if (!ProcessGlyphAttributes(pfont)) return false; if (m_prndr->HasCollisionPass()) // do this after glyph attributes have been processed CalculateCollisionOctaboxes(pfont); if (!m_prndr->FixGlyphAttrsInRules(this, pfont)) return false; // Delay assigning internal IDs to classes until we have checked the validity of the // table and pass structure. if (!FinalGlyphAttrResolution(pfont)) return false; if (!StorePseudoToActualAsGlyphAttr()) return false; CheckForEmptyClasses(); return true; } /*---------------------------------------------------------------------------------------------- Check For recursive class definitions. Return false if there is an error. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::CheckRecursiveGlyphClasses() { bool f; std::vector vpglfcStack; for (size_t iglfc = 0; iglfc < m_vpglfc.size(); iglfc++) { f = m_vpglfc[iglfc]->CheckRecursiveGlyphClasses(vpglfcStack); if (!f) return false; Assert(vpglfcStack.size() == 0); } return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::CheckRecursiveGlyphClasses(std::vector & vpglfcStack) { for (size_t iglfd = 0; iglfd < vpglfcStack.size(); iglfd++) { if (vpglfcStack[iglfd] == this) return false; } vpglfcStack.push_back(this); for (auto const pglfd: m_vpglfdMembers) { if (!pglfd->CheckRecursiveGlyphClasses(vpglfcStack)) { g_errorList.AddError(4148, this, "Recursive class definition: ", this->Name()); return false; } } vpglfcStack.pop_back(); return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlGlyphDefn::CheckRecursiveGlyphClasses(std::vector & /*vpglfcStack*/) { return true; // okay, no embedded classes } /*---------------------------------------------------------------------------------------------- Handle the generation of pseudo glyphs. Return false if compilation cannot continue due to an unrecoverable error. ----------------------------------------------------------------------------------------------*/ bool GrcManager::GeneratePseudoGlyphs(GrcFont * pfont) { PseudoSet setpglfExplicitPseudos; auto cExplicitPseudos = m_prndr->ExplicitPseudos(setpglfExplicitPseudos); std::vector vnAutoUnicode; std::vector vwAutoGlyphID; size_t cAutoPseudos = (m_prndr->AutoPseudo()) ? pfont->AutoPseudos(vnAutoUnicode, vwAutoGlyphID) : 0; gid16 wFirstFree = pfont->FirstFreeGlyph(); m_wGlyphIDLim = wFirstFree; size_t cwFree = kMaxGlyphsPerFont - wFirstFree; if (cwFree < 2) { g_errorList.AddError(4101, NULL, "Font exceeds maximum of ", std::to_string(kMaxGlyphsPerFont - 3), " used glyphs", GrpLineAndFile(0, 0, "")); return false; // terminate compilation } if (cExplicitPseudos + cAutoPseudos + 2 > cwFree) // + 2 for line-break pseudo & non-existent pseudo { g_errorList.AddError(4102, NULL, "Insufficient free glyphs in font to assign pseudo glyphs.", GrpLineAndFile(0, 0, "")); return true; // continue compilation } // Define the line-break character, and make a glyph class to hold it. m_wLineBreak = wFirstFree++; ////m_wLineBreak = 127; // for testing GdlGlyphClassDefn * pglfcLb = AddAnonymousClass(GrpLineAndFile(0, 0, "")); GdlGlyphClassMember * pglfd = pglfcLb->AddGlyphToClass(GrpLineAndFile(), kglftGlyphID, (int)m_wLineBreak); GdlGlyphDefn * pglf = dynamic_cast(pglfd); Assert(pglf); pglf->SetNoRangeCheck(); Symbol psymLb = m_psymtbl->FindSymbol("#"); psymLb->SetData(pglfcLb); // Handle explicit pseudos. utf16 wFirstPseudo = wFirstFree; m_nMaxPseudoUnicode = 0; std::set setnUnicode; // to recognize duplicates for (PseudoSet::iterator itset = setpglfExplicitPseudos.begin(); itset != setpglfExplicitPseudos.end(); ++itset) { GdlGlyphDefn * pglfPseudo = *itset; if (pglfPseudo) // vector has many empty items in it { pglfPseudo->SetAssignedPseudo(wFirstFree++); unsigned int nUnicode = pglfPseudo->UnicodeInput(); if (nUnicode == 0) ; // no Unicode input specified else if (setnUnicode.find(nUnicode) != setnUnicode.end()) // is a member { // Duplicate pseudo mapping. g_errorList.AddError(4103, pglfPseudo, pglfPseudo->CodepointString(), "Duplicate Unicode input -> pseudo assignment."); } else { m_vnUnicodeForPseudo.push_back(nUnicode); m_vwPseudoForUnicode.push_back(pglfPseudo->AssignedPseudo()); setnUnicode.insert(nUnicode); m_nMaxPseudoUnicode = max(m_nMaxPseudoUnicode, nUnicode); } } } // Handle auto-pseudos. Assert(vnAutoUnicode.size() == vwAutoGlyphID.size()); m_wFirstAutoPseudo = wFirstFree; for (size_t iw = 0; iw < vnAutoUnicode.size(); iw++) { utf16 wAssigned = wFirstFree++; CreateAutoPseudoGlyphDefn(wAssigned, vnAutoUnicode[iw], vwAutoGlyphID[iw]); } if (wFirstFree - wFirstPseudo >= kMaxPseudos) { g_errorList.AddError(4104, NULL, "Number of pseudo-glyphs (", std::to_string(wFirstFree - wFirstPseudo), ") exceeds maximum of ", std::to_string(kMaxPseudos - 1)); } else { SortPseudoMappings(); } m_wPhantom = wFirstFree++; // phantom glyph before the beginning of the input m_cwGlyphIDs = wFirstFree; return true; } /*---------------------------------------------------------------------------------------------- Fill in the set with the explicit pseudo-glyphs in the class database. Return the number found. Record an error if the pseudo has an invalid output function (ie, more than one glyph specified). ----------------------------------------------------------------------------------------------*/ size_t GdlRenderer::ExplicitPseudos(PseudoSet & setpglf) { for (size_t iglfc = 0; iglfc < m_vpglfc.size(); iglfc++) m_vpglfc[iglfc]->ExplicitPseudos(setpglf, true); return setpglf.size(); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::ExplicitPseudos(PseudoSet & setpglf, bool fProcessClasses) { if (fProcessClasses) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) m_vpglfdMembers[iglfd]->ExplicitPseudos(setpglf, false); } // else the method is already called for this class directly } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::ExplicitPseudos(PseudoSet & setpglf, bool /*fProcessClasses*/) { if (m_glft == kglftPseudo) { Assert(m_pglfOutput); // Old std::set implementation: //GdlGlyphDefn * p = this; // kludge until Set can handle const args. //setpglf.insert(p); for (size_t i = 0; i < setpglf.size(); i++) { if (setpglf[i] == this) return; // already there } setpglf.push_back(this); } } /*---------------------------------------------------------------------------------------------- Create a glyph definition to hold an auto-pseudo glyph. We create a bogus glyph class to put it in, just for our convenience. It's just as if they had typed: bogus = pseudo(glyphid(), ) ----------------------------------------------------------------------------------------------*/ void GrcManager::CreateAutoPseudoGlyphDefn(utf16 wAssigned, int nUnicode, gid16 wGlyphID) { GdlGlyphDefn * pglfOutput = new GdlGlyphDefn(kglftGlyphID, wGlyphID); GdlGlyphDefn * pglf = new GdlGlyphDefn(kglftPseudo, pglfOutput, nUnicode); pglf->SetAssignedPseudo(wAssigned); GdlGlyphClassDefn * pglfc = new GdlGlyphClassDefn(); GrpLineAndFile lnf; // bogus pglfc->AddMember(pglf, lnf); m_prndr->AddGlyphClass(pglfc); m_vnUnicodeForPseudo.push_back(nUnicode); m_vwPseudoForUnicode.push_back(wAssigned); } /*---------------------------------------------------------------------------------------------- Return the pseudo-glyph assigned to the given Unicode value, or 0 if none. ----------------------------------------------------------------------------------------------*/ int GrcManager::PseudoForUnicode(int nUnicode) { for (size_t iw = 0; iw < m_vnUnicodeForPseudo.size(); iw++) { if (m_vnUnicodeForPseudo[iw] == unsigned(nUnicode)) return m_vwPseudoForUnicode[iw]; } return 0; } /*---------------------------------------------------------------------------------------------- Return the actual glyph ID for the given pseudo-glyph, or 0 if none. ----------------------------------------------------------------------------------------------*/ int GrcManager::ActualForPseudo(utf16 wPseudo) { //utf16 wActual = 0; std::map::iterator hmit = m_hmActualForPseudo.find(wPseudo); if (hmit == m_hmActualForPseudo.end()) // no value return 0; else return hmit->second; //if (m_hmActualForPseudo.Retrieve(wPseudo, &wActual)) // return wActual; //else // return 0; } /*--------------------------------------------------------------------------------------------*/ int GdlRenderer::ActualForPseudo(utf16 wPseudo) { for (size_t ipglfc = 0; ipglfc < m_vpglfc.size(); ipglfc++) { utf16 wActual = m_vpglfc[ipglfc]->ActualForPseudo(wPseudo); if (wActual != 0) return wActual; } return 0; } /*--------------------------------------------------------------------------------------------*/ int GdlGlyphClassDefn::ActualForPseudo(utf16 wPseudo) { for (size_t ipglfd = 0; ipglfd < m_vpglfdMembers.size(); ipglfd++) { utf16 wActual = m_vpglfdMembers[ipglfd]->ActualForPseudo(wPseudo); if (wActual != 0) return wActual; } return 0; } /*--------------------------------------------------------------------------------------------*/ int GdlGlyphDefn::ActualForPseudo(utf16 wPseudo) { if (m_glft == kglftPseudo && m_wPseudo == wPseudo && m_pglfOutput) { utf16 wOutput = m_pglfOutput->m_vwGlyphIDs[0]; return wOutput; } return 0; } /*---------------------------------------------------------------------------------------------- Sort the unicode-to-pseudo mappings in order of the unicode values. ----------------------------------------------------------------------------------------------*/ void GrcManager::SortPseudoMappings() { Assert(m_vnUnicodeForPseudo.size() == m_vwPseudoForUnicode.size()); for (int i1 = 0; i1 < signed(m_vnUnicodeForPseudo.size()) - 1; i1++) { unsigned int nTmp = m_vnUnicodeForPseudo[i1]; for (size_t i2 = i1 + 1; i2 < m_vnUnicodeForPseudo.size(); i2++) { if (m_vnUnicodeForPseudo[i2] < nTmp) { // Swap m_vnUnicodeForPseudo[i1] = m_vnUnicodeForPseudo[i2]; m_vnUnicodeForPseudo[i2] = nTmp; nTmp = m_vnUnicodeForPseudo[i1]; utf16 wTmp = m_vwPseudoForUnicode[i1]; m_vwPseudoForUnicode[i1] = m_vwPseudoForUnicode[i2]; m_vwPseudoForUnicode[i2] = wTmp; } } } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Define the ANY class to include all glyphs. This must be done after we've set up the pseudo-glyphs and defined the phantom glyph, because they must be included too. ----------------------------------------------------------------------------------------------*/ bool GrcManager::AddAllGlyphsToTheAnyClass(GrcFont * pfont, std::map & hmActualForPseudo) { Symbol psym = m_psymtbl->FindSymbol("ANY"); GdlGlyphClassDefn * pglfcAny = psym->GlyphClassDefnData(); Assert(pglfcAny); GdlGlyphDefn * pglf = new GdlGlyphDefn(kglftGlyphID, 0, int(m_cwGlyphIDs - 1)); GrpLineAndFile lnf; // bogus pglfcAny->AddMember(pglf, lnf); pglfcAny->AssignGlyphIDs(pfont, gr::gid16(m_cwGlyphIDs), hmActualForPseudo); return true; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Determine the glyph ID equivalents for each glyph definition; ie, convert Unicode, codepoints, postscript to glyph ID. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::AssignGlyphIDs(GrcFont * pfont, gid16 wGlyphIDLim, std::map & hmActualForPseudo) { for (size_t iglfc = 0; iglfc < m_vpglfc.size(); iglfc++) m_vpglfc[iglfc]->AssignGlyphIDs(pfont, wGlyphIDLim, hmActualForPseudo); return true; } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AssignGlyphIDs(GrcFont * pfont, gid16 wGlyphIDLim, std::map & hmActualForPseudo) { for (auto const pglfd: m_vpglfdMembers) { pglfd->AssignGlyphIDsToClassMember(pfont, wGlyphIDLim, hmActualForPseudo); } } void GdlGlyphIntersectionClassDefn::AssignGlyphIDs(GrcFont * pfont, gid16 wGlyphIDLim, std::map & hmActualForPseudo) { for (auto const pglfd: m_vpglfdSets) { pglfd->AssignGlyphIDsToClassMember(pfont, wGlyphIDLim, hmActualForPseudo); } ComputeMembers(); } void GdlGlyphDifferenceClassDefn::AssignGlyphIDs(GrcFont * pfont, gid16 wGlyphIDLim, std::map & hmActualForPseudo) { m_pglfdMinuend->AssignGlyphIDsToClassMember(pfont, wGlyphIDLim, hmActualForPseudo); // The subtrahend is not processed at the top level. m_pglfdSubtrahend->AssignGlyphIDs(pfont, wGlyphIDLim, hmActualForPseudo); ComputeMembers(); } /*---------------------------------------------------------------------------------------------- Determine the glyph ID equivalents for the recipient by virtue of its being a member of a class. Only do this for simple glyphs; classes are handled separately. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AssignGlyphIDsToClassMember(GrcFont * /*pfont8*/, utf16 /*wGlyphIDLim*/, std::map & /*hmActualForPseudo*/, bool /*fLookUpPseudos*/) { // Do nothing; this class will be handled separately at the top level. } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::AssignGlyphIDsToClassMember(GrcFont * pfont, gid16 wGlyphIDLim, std::map & hmActualForPseudo, bool fLookUpPseudos) { Assert(m_vwGlyphIDs.size() == 0); utf16 w; unsigned int n; gid16 wGlyphID; unsigned int nUnicode; utf16 wFirst, wLast; bool fIgnoreBad = g_cman.IgnoreBadGlyphs(); switch (m_glft) { case kglftGlyphID: if (m_nFirst > m_nLast) g_errorList.AddError(4105,this, "Invalid glyph ID range"); wFirst = (utf16)m_nFirst; wLast = (utf16)m_nLast; for (w = wFirst; w <= wLast; ++w) { if (!m_fNoRangeCheck && w >= wGlyphIDLim) g_errorList.AddError(4106, this, "Glyph ID out of range: ", GlyphIDString(w)); else m_vwGlyphIDs.push_back(w); // Since incrementing 0xFFFF will produce zero: if (w == 0xFFFF) break; } break; case kglftUnicode: if (m_nFirst > m_nLast) g_errorList.AddError(4107, this, "Invalid Unicode range"); for (n = m_nFirst; n <= m_nLast; ++n) { if (n == 0x0000FFFE || n == 0x0000FFFF) { g_errorList.AddError(4108, this, "U+", CodepointIDString(n), " is not a valid Unicode codepoint"); wGlyphID = 0; } else { if (!fLookUpPseudos || (wGlyphID = g_cman.PseudoForUnicode(n)) == 0) wGlyphID = pfont->GlyphFromCmap(n, this); if (wGlyphID == 0) { if (fIgnoreBad) { g_errorList.AddWarning(4501, this, "Unicode character not present in cmap: U+", CodepointIDString(n), "; definition will be ignored"); m_vwGlyphIDs.push_back(kBadGlyph); } else g_errorList.AddError(4109, this, "Unicode character not present in cmap: U+", CodepointIDString(n)); } else m_vwGlyphIDs.push_back(wGlyphID); } // Since incrementing 0xFFFFFFFF will produce zero: if (n == 0xFFFFFFFF) break; } break; case kglftPostscript: wGlyphID = pfont->GlyphFromPostscript(m_sta, this, !fIgnoreBad); if (wGlyphID == 0) { if (fIgnoreBad) { g_errorList.AddWarning(4502, this, "Invalid postscript name: ", m_sta, "; definition will be ignored"); m_vwGlyphIDs.push_back(kBadGlyph); } else g_errorList.AddError(4110, this, "Invalid postscript name: ", m_sta); } else m_vwGlyphIDs.push_back(wGlyphID); break; case kglftCodepoint: { auto const rgchCdPg = std::to_string(m_wCodePage); if (m_nFirst == 0 && m_nLast == 0) { for (size_t ich = 0; ich < m_sta.length(); ich++) { char rgchCdPt[] = {m_sta[ich], '\0'}; nUnicode = pfont->UnicodeFromCodePage(m_wCodePage, m_sta[ich], this); if (nUnicode == 0) g_errorList.AddError(4111, this, "Codepoint '", rgchCdPt, "' not valid for codepage ", rgchCdPg); else { if (!fLookUpPseudos || (wGlyphID = g_cman.PseudoForUnicode(nUnicode)) == 0) wGlyphID = pfont->GlyphFromCmap(nUnicode, this); if (wGlyphID == 0) { if (fIgnoreBad) { g_errorList.AddWarning(4503, this, "Unicode character U+", UsvString(nUnicode), " (ie, codepoint '", rgchCdPt, "' in codepage ", std::string(rgchCdPg), ") not present in cmap; definition will be ignored"); m_vwGlyphIDs.push_back(kBadGlyph); } else g_errorList.AddError(4112, this, "Unicode character U+", UsvString(nUnicode), " (ie, codepoint '", rgchCdPt, "' in codepage ", std::string(rgchCdPg), ") not present in cmap"); } else m_vwGlyphIDs.push_back(wGlyphID); } } } else { if (m_nFirst > m_nLast) g_errorList.AddError(4113, this, "Invalid codepoint range"); utf16 wFirst = (utf16)m_nFirst; utf16 wLast = (utf16)m_nLast; for (w = wFirst; w <= wLast; w++) { nUnicode = pfont->UnicodeFromCodePage(m_wCodePage, w, this); if (nUnicode == 0) g_errorList.AddError(4114, this, "Codepoint 0x", UsvString(w), " not valid for codepage ", rgchCdPg); else { wGlyphID = pfont->GlyphFromCmap(nUnicode, this); if (wGlyphID == 0) { if (fIgnoreBad) { g_errorList.AddWarning(4504, this, "Unicode character U+", UsvString(nUnicode), " (ie, codepoint 0x", UsvString(w), " in codepage ", rgchCdPg, ") not present in cmap; definition will be ignored"); m_vwGlyphIDs.push_back(kBadGlyph); } else g_errorList.AddError(4115, this, "Unicode character U+", UsvString(nUnicode), " (ie, codepoint 0x", UsvString(w), " in codepage ", rgchCdPg, ") not present in cmap"); } else m_vwGlyphIDs.push_back(wGlyphID); } } // Since incrementing 0xFFFF will produce zero: if (w == 0xFFFF) break; } break; } case kglftPseudo: Assert(m_nFirst == 0); Assert(m_nLast == 0); Assert(m_pglfOutput); // While we're at it, determine the output glyph ID. Record an error if there // is more than one, or none, or the glyph ID == 0. m_pglfOutput->AssignGlyphIDsToClassMember(pfont, wGlyphIDLim, hmActualForPseudo, false); if (m_pglfOutput->m_vwGlyphIDs.size() > 1) { if (fIgnoreBad) { g_errorList.AddWarning(4505, this, "Pseudo-glyph -> glyph ID mapping results in more than one glyph; definition will be ignored"); m_vwGlyphIDs.push_back(kBadGlyph); } else g_errorList.AddError(4116, this, "Pseudo-glyph -> glyph ID mapping results in more than one glyph"); } else if (m_pglfOutput->m_vwGlyphIDs.size() == 0) { if (fIgnoreBad) { g_errorList.AddWarning(4506, this, "Pseudo-glyph -> glyph ID mapping results in no valid glyph; definition will be ignored"); m_vwGlyphIDs.push_back(kBadGlyph); } else g_errorList.AddError(4117, this, "Pseudo-glyph -> glyph ID mapping results in no valid glyph"); } else if (m_pglfOutput->m_vwGlyphIDs[0] == 0) { if (fIgnoreBad) { g_errorList.AddWarning(4507, this, "Pseudo-glyph cannot be mapped to glyph ID 0; definition will be ignored"); m_vwGlyphIDs.push_back(kBadGlyph); } else g_errorList.AddError(4118, this, "Pseudo-glyph cannot be mapped to glyph ID 0"); } else { // It is the assigned pseudo glyph ID which is the 'contents' of this glyph defn. m_vwGlyphIDs.push_back(m_wPseudo); // Store the pseudo-to-actual assignment in the map. std::pair hmPair; hmPair.first = m_wPseudo; hmPair.second = m_pglfOutput->m_vwGlyphIDs[0]; hmActualForPseudo.insert(hmPair); //hmActualForPseudo.Insert(m_wPseudo, m_pglfOutput->m_vwGlyphIDs[0], true); } break; default: Assert(false); } } /*---------------------------------------------------------------------------------------------- Return the number of glyph IDs per class. ----------------------------------------------------------------------------------------------*/ int GdlGlyphClassDefn::GlyphIDCount() { int c = 0; for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) c += m_vpglfdMembers[iglfd]->GlyphIDCount(); return c; } /*--------------------------------------------------------------------------------------------*/ int GdlGlyphDefn::GlyphIDCount() { int cGlyph = 0; for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { if (m_vwGlyphIDs[iw] != kBadGlyph) cGlyph++; } return cGlyph; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Compute the members of the classes that are more complicated than a simple union. ----------------------------------------------------------------------------------------------*/ void GdlGlyphIntersectionClassDefn::ComputeMembers() { std::vector vgidResult; std::vector vgid1; m_vpglfdSets[0]->FlattenGlyphList(vgid1); for (size_t iglfc = 1; iglfc < this->m_vpglfdSets.size(); iglfc++) { vgidResult.clear(); std::vector vgid2; m_vpglfdSets[iglfc]->FlattenGlyphList(vgid2); for (size_t igid1 = 0; igid1 < vgid1.size(); igid1++) { bool fFound = false; for (size_t igid2 = 0; igid2 < vgid2.size(); igid2++) { if (vgid2[igid2] == vgid1[igid1]) { fFound = true; break; } } if (fFound) vgidResult.push_back(vgid1[igid1]); } vgid1.assign(vgidResult.begin(), vgidResult.end()); } // Fake a simple class definition that contains these glyphs. GrpLineAndFile lnf = this->LineAndFile(); for (size_t igid = 0; igid < vgidResult.size(); igid++) { GdlGlyphDefn * pglfd = new GdlGlyphDefn(kglftGlyphID, vgidResult[igid]); pglfd->AddGlyphID(vgidResult[igid]); this->AddMember(pglfd, lnf); } } void GdlGlyphDifferenceClassDefn::ComputeMembers() { std::vector vgidResult; m_pglfdMinuend->FlattenGlyphList(vgidResult); std::vector vgid2; m_pglfdSubtrahend->FlattenGlyphList(vgid2); for (size_t igid2 = 0; igid2 < vgid2.size(); igid2++) { for (size_t igid1 = 0; igid1 < vgidResult.size(); igid1++) { if (vgidResult[igid1] == vgid2[igid2]) { vgidResult.erase(vgidResult.begin() + igid1); break; } } } // Fake a simple class definition that contains these glyphs. GrpLineAndFile lnf = this->LineAndFile(); for (size_t igid = 0; igid < vgidResult.size(); igid++) { GdlGlyphDefn * pglfd = new GdlGlyphDefn(kglftGlyphID, vgidResult[igid]); pglfd->AddGlyphID(vgidResult[igid]); this->AddMember(pglfd, lnf); } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Calculate the highest justification level used. If justification is not referenced at all, the result = -2; -1 means only non-leveled attributes are used (justify.stretch, etc). Return false if they have used too high a level. ----------------------------------------------------------------------------------------------*/ bool GrcManager::MaxJustificationLevel(int * pnJLevel) { *pnJLevel = -2; // no reference to justification m_prndr->MaxJustificationLevel(&m_nMaxJLevel); m_fBasicJust = (m_nMaxJLevel == -2); return (m_nMaxJLevel <= kMaxJustLevel); } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::MaxJustificationLevel(int * pnJLevel) { // Glyph atrributes: for (size_t ipglfc = 0; ipglfc < m_vpglfc.size(); ipglfc++) { m_vpglfc[ipglfc]->MaxJustificationLevel(pnJLevel); if (*pnJLevel >= kMaxJustLevel) return; } // Rules: for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->MaxJustificationLevel(pnJLevel); if (*pnJLevel >= kMaxJustLevel) return; } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::MaxJustificationLevel(int * pnJLevel) { // For each attribute assignment in the value list: for (size_t ipglfa = 0; ipglfa < m_vpglfaAttrs.size(); ipglfa++) { Symbol psym = m_vpglfaAttrs[ipglfa]->GlyphSymbol(); int n = psym->JustificationLevel(); if (n > kMaxJustLevel) { g_errorList.AddError(4122, this, "Highest justification level permitted = ", std::to_string(kMaxJustLevel)); } *pnJLevel = max(*pnJLevel, n); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::MaxJustificationLevel(int * pnJLevel) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->MaxJustificationLevel(pnJLevel); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::MaxJustificationLevel(int * pnJLevel) { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->MaxJustificationLevel(pnJLevel); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::MaxJustificationLevel(int * pnJLevel) { // Note: justify attributes are illegal in rule-level constraints. for (size_t iprit = 0; iprit < m_vprit.size(); iprit++) { m_vprit[iprit]->MaxJustificationLevel(pnJLevel); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::MaxJustificationLevel(int * pnJLevel) { if (m_pexpConstraint) { int n = -2; m_pexpConstraint->MaxJustificationLevel(&n); if (n > kMaxJustLevel) { g_errorList.AddError(4122, this, "Highest justification level permitted = ", std::to_string(kMaxJustLevel)); } *pnJLevel = max(*pnJLevel, n); } } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::MaxJustificationLevel(int * pnJLevel) { GdlRuleItem::MaxJustificationLevel(pnJLevel); for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { int n = -2; m_vpavs[ipavs]->MaxJustificationLevel(&n); if (n > kMaxJustLevel) { g_errorList.AddError(4122, this, "Highest justification level permitted = ", std::to_string(kMaxJustLevel)); } *pnJLevel = max(*pnJLevel, n); } } /*--------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::MaxJustificationLevel(int * pnJLevel) { int n = m_psymName->JustificationLevel(); if (n > kMaxJustLevel) { g_errorList.AddError(4122, this, "Highest justification level permitted = ", std::to_string(kMaxJustLevel)); } *pnJLevel = max(*pnJLevel, n); } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return true if there is at least one collision-fixing pass. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::HasCollisionPass() { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { if (m_vprultbl[iprultbl]->HasCollisionPass()) return true; } return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlRuleTable::HasCollisionPass() { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { if (m_vppass[ippass]->CollisionFix() > 0) return true; } return false; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Calculate octaboxes to use in collision fixing. ----------------------------------------------------------------------------------------------*/ void GrcManager::CalculateCollisionOctaboxes(GrcFont * pfont) { Symbol psymComplex = m_psymtbl->FindSymbol(GrcStructName("collision", "complexFit")); int nAttrIdComplex = psymComplex->InternalID(); m_vgbdy.resize(m_wGlyphIDLim); for (utf16 wGid = 0; wGid < m_wGlyphIDLim; wGid++) { // The collision.complexFit attr tells whether the shape of this glyph is complex // enough to require a grid of octaboxes to represent its shape rather than a single // octabox. bool fComplex = false; GdlExpression * pexp; int nPR; int munitPR; bool fOverride, fShadow; GrpLineAndFile lnf; m_pgax->Get(wGid, nAttrIdComplex, &pexp, &nPR, &munitPR, &fOverride, &fShadow, &lnf); if (!pexp) fComplex = false; else { int n; if (!pexp->ResolveToInteger(&n, false)) fComplex = false; else fComplex = (n > 0); } m_vgbdy[wGid].Initialize(wGid); m_vgbdy[wGid].OverlayGrid(pfont, fComplex); } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Assign an internal ID for each glyph attribute. Specifically, the ID is assigned to the generic form of the glyph attribute, and the class-specific versions make use of it. The IDs are assigned with the first batch belonging to the component bases; the next batch being the corresponding component fields in a specified order, the justification attributes, and finally and all other glyph attributes following. So the list might look like this: 0: component.X 1: component.Y 2: component.Z 3: component.X.top 4: component.X.bottom 5: component.X.left 6: component.X.right 7: component.Y.top 8: component.Y.bottom 9: component.Y.left 10: component.Y.right 11: component.Z.top 12: component.Z.bottom 13: component.Z.left 14: component.Z.right 15: pointA.x 16: pointA.y etc. So given the total number of components, we can find the list of components, the corresponding component box fields, and the other glyph attributes. Review: should we include glyph metrics in this list too? (At least the used ones). ----------------------------------------------------------------------------------------------*/ bool GrcManager::AssignInternalGlyphAttrIDs() { auto cpass = m_prndr->NumberOfPasses(); bool fCollFix = m_prndr->HasCollisionPass(); // Assign the first batch of IDs to the built-in attributes; // this is an optimization for the Graphite2 engine. m_psymtbl->AssignInternalGlyphAttrIDs(this, m_psymtbl, m_vpsymGlyphAttrs, kgappBuiltIn, -1, -1, -1, cpass); m_cpsymBuiltIn = m_vpsymGlyphAttrs.size(); // Assign the next batch of IDs to component bases (ie, component.X). m_psymtbl->AssignInternalGlyphAttrIDs(this, m_psymtbl, m_vpsymGlyphAttrs, kgappCompBase, -1, -1, -1, 0); m_cpsymComponents = m_vpsymGlyphAttrs.size() - m_cpsymBuiltIn; // Assign the next batch to component box fields. (ie, component.X.top/bottom/left/right). m_psymtbl->AssignInternalGlyphAttrIDs(this, m_psymtbl, m_vpsymGlyphAttrs, kgappCompBox, m_cpsymBuiltIn, m_cpsymComponents, -1, 0); // Assign the next batch to the justification attributes. m_psymtbl->AssignInternalGlyphAttrIDs(this, m_psymtbl, m_vpsymGlyphAttrs, kgappJustify, -1, -1, NumJustLevels(), 0); // Finally, assign IDs to everything else. m_psymtbl->AssignInternalGlyphAttrIDs(this, m_psymtbl, m_vpsymGlyphAttrs, kgappOther, -1, -1, -1, 0); if (m_vpsymGlyphAttrs.size() >= kMaxGlyphAttrs) { g_errorList.AddError(4123, NULL, "Number of glyph attributes (", std::to_string(m_vpsymGlyphAttrs.size()), ") exceeds maximum of ", std::to_string(kMaxGlyphAttrs-1)); } return true; } /*---------------------------------------------------------------------------------------------- Loop through the symbol table, assigning internal IDs to each glyph attribute. Arguments: pcman - to access flags psymtblMain - main, top-level symbol table vpsymGlyphAttrIDs - list of assigned symbols gapp - 1: process built-in attributes 2: process component bases; 3: process component box fields; 4: process justification attributes 5: process everything else cpsymBuiltIn - only used on pass 3 cpsymComponents - only used on pass 3 cJLevels - only used on pass 4 cpass - only used in pass 1 ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTable::AssignInternalGlyphAttrIDs(GrcManager * pcman, GrcSymbolTable * psymtblMain, std::vector & vpsymGlyphAttrIDs, int gapp, size_t cpsymBuiltIn, size_t cpsymComponents, size_t cJLevels, size_t cpass) { bool fCollFix = pcman->Renderer()->HasCollisionPass(); bool fBidi = pcman->Renderer()->Bidi(); bool fPassOpt = pcman->IncludePassOptimizations(); if (gapp == kgappJustify) { // Justification attributes must be put in a specific order, with the corresponding // attributes for the various levels contiguous. Eg, if cJLevels = 2: // justify.0.stretch // justify.1.stretch // justify.2.stretch // justify.0.shrink // justify.1.shrink // justify.2.shrink // justify.0.step // etc. // (Actually, there is a series of "high-word" stretch values that come immediately // after stretch, which are used to hold bits 16-32 of any very large stretch values.) std::vector vstaJAttr; vstaJAttr.push_back("stretch"); vstaJAttr.push_back("stretchHW"); // high word, for large stretch values vstaJAttr.push_back("shrink"); vstaJAttr.push_back("step"); vstaJAttr.push_back("weight"); std::vector vnLevel0Ids; for (size_t istaJAttr = 0; istaJAttr < vstaJAttr.size(); istaJAttr++) { for (auto nLevel = 0U; nLevel < cJLevels; ++nLevel) { GrcStructName xnsJAttr("justify", std::to_string(nLevel), vstaJAttr[istaJAttr]); Symbol psymJAttr = FindSymbol(xnsJAttr); Assert(psymJAttr); int id = AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymJAttr); if (nLevel == 0) vnLevel0Ids.push_back(id); } } // Set the ID of the non-leveled attributes to the same as level 0. if (cJLevels > 0) for (size_t istaJAttr = 0; istaJAttr < vstaJAttr.size(); istaJAttr++) { GrcStructName xnsJAttrNoLevel("justify", vstaJAttr[istaJAttr]); Symbol psymJAttrNoLevel = FindSymbol(xnsJAttrNoLevel); Assert(psymJAttrNoLevel); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymJAttrNoLevel); psymJAttrNoLevel->SetInternalID(vnLevel0Ids[istaJAttr]); // change it } return true; } // Make a separate list of symbols to process, because the iterators get confused when you are // changing the hash-map underneath it at the same time. std::vector vpsymToProcess; for (SymbolTableMap::iterator it = EntriesBegin(); it != EntriesEnd(); ++it) { Symbol psym = it->second; // GetValue(); //Symbol psym = it->GetValue(); vpsymToProcess.push_back(psym); } for (size_t ipsym = 0; ipsym < vpsymToProcess.size(); ipsym++) { Symbol psym = vpsymToProcess[ipsym]; if (psym->m_psymtblSubTable) { if (!psym->IsGeneric() && gapp == kgappCompBase && psym->IsComponentBase()) { Symbol psymGeneric = psym->Generic(); if (!psymGeneric) { // Undefined glyph attribute--ignore. } else { AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymGeneric); psym->SetInternalID(psymGeneric->InternalID()); } // Don't process the component fields until we have processed all the // component bases. } else psym->m_psymtblSubTable->AssignInternalGlyphAttrIDs(pcman, psymtblMain, vpsymGlyphAttrIDs, gapp, cpsymBuiltIn, cpsymComponents, cJLevels, 0); } else if (!psym->IsGeneric() && psym->FitsSymbolType(ksymtGlyphAttr)) // || it->FitsSymbolType(ksymtGlyphMetric) && it->Used() { Symbol psymGeneric = psym->Generic(); //bool f = psym->FitsSymbolType(ksymtGlyphAttr); if (!psymGeneric) // Probably because this was a glyph metric--already gave an error. continue; Assert(psymGeneric); if (gapp == kgappCompBox && psym->IsComponentBoxField()) { int ipsymOffset = 0; std::string sta = psym->LastField(); if (sta == "top") ipsymOffset = 0; else if (sta == "bottom") ipsymOffset = 1; else if (sta == "left") ipsymOffset = 2; else if (sta == "right") ipsymOffset = 3; else { Assert(false); } Assert(ipsymOffset < kFieldsPerComponent); int nBaseID = psym->BaseLigComponent()->InternalID(); int ipsym = int(cpsymBuiltIn + cpsymComponents + ((nBaseID - cpsymBuiltIn) * kFieldsPerComponent) + ipsymOffset); #ifndef NDEBUG int i = #endif AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymGeneric, ipsym); Assert(i == ipsym); psymGeneric->SetInternalID(ipsym); psym->SetInternalID(psymGeneric->InternalID()); } else if (gapp == kgappOther && psym->IsIgnorableOffsetAttr() && !g_cman.OffsetAttrs()) { // Ignore - but set the internal ID so we can recognize it. psym->Generic()->SetInternalID(kInvalid); } else if (gapp == kgappOther && !psym->IsComponentBoxField()) { AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymGeneric); psym->SetInternalID(psymGeneric->InternalID()); // Is this an attribute that might need to be converted to gpoint? int iv = psym->FieldIndex("gpath"); iv = (iv == -1) ? psym->FieldIndex("x") : iv; iv = (iv == -1) ? psym->FieldIndex("y") : iv; if (iv > -1 && g_cman.OffsetAttrs()) { // We are going to convert all 'gpath' attributes to 'gpoint', // so create that attribute too. And we might convert x/y coordinates // to gpoint. // (We have to do this before we create the matrix to hold all // the glyph attribute values--in AssignGlyphAttrsToClassMembers-- // so that that routine will make room for it.) GrcStructName xns; psym->GetStructuredName(&xns); xns.DeleteField(iv); xns.InsertField(iv, "gpoint"); Symbol psymGPoint = psymtblMain->AddGlyphAttrSymbol(xns, psym->LineAndFile(), kexptNumber); Symbol psymGPointGeneric = psymGPoint->Generic(); Assert(psymGPointGeneric); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymGPointGeneric); psymGPoint->SetInternalID(psymGPointGeneric->InternalID()); } iv = psym->FieldIndex("gpoint"); if (iv > -1) { // We might need to convert gpoint to x/y. GrcStructName xns; psym->GetStructuredName(&xns); xns.DeleteField(iv); xns.InsertField(iv, "x"); Symbol psymX = psymtblMain->AddGlyphAttrSymbol(xns, psym->LineAndFile(), kexptMeas); Symbol psymXGeneric = psymX->Generic(); Assert(psymXGeneric); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymXGeneric); psymX->SetInternalID(psymXGeneric->InternalID()); xns.DeleteField(iv); xns.InsertField(iv, "y"); Symbol psymY = psymtblMain->AddGlyphAttrSymbol(xns, psym->LineAndFile(), kexptMeas); Symbol psymYGeneric = psymY->Generic(); Assert(psymYGeneric); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymYGeneric); psymY->SetInternalID(psymYGeneric->InternalID()); } } } else if (gapp == kgappBuiltIn && psym->FitsSymbolType(ksymtGlyphAttr) && psym->FieldCount() == 1 && (psym->FieldIs(0, "directionality") || psym->FieldIs(0, "breakweight") || psym->FieldIs(0, "*actualForPseudo*") || psym->FieldIs(0, "*skipPasses*"))) { if (psym->FieldIs(0, "*skipPasses*") && !fPassOpt) { // Leave undefined, so it doesn't get output to Silf table and confuse OTS. psym->SetInternalID(0); } else { AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psym); if (psym->FieldIs(0, "*skipPasses*") && cpass > kPassPerSPbitmap) { Symbol psym2 = PreDefineSymbol(GrcStructName("*skipPasses2*"), ksymtGlyphAttr, kexptNumber); psym2->m_fGeneric = true; AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psym2); Assert(psym2->InternalID() == psym->InternalID() + 1); } } } else if (gapp == kgappBuiltIn && psym->FitsSymbolType(ksymtGlyphAttr) && psym->FieldCount() == 2 && psym->FieldIs(0, "mirror")) { // Put mirror.glyph first, immediately followed by mirror.isEncoded. Symbol psymGlyph = psymtblMain->FindSymbol(GrcStructName("mirror", "glyph")); Symbol psymIsEnc = psymtblMain->FindSymbol(GrcStructName("mirror", "isEncoded")); if (fBidi) { AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymGlyph); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymIsEnc); Assert(psymGlyph->InternalID() != 0); Assert(psymGlyph->InternalID() + 1 == psymIsEnc->InternalID()); } else { psymGlyph->SetInternalID(0); psymIsEnc->SetInternalID(0); } } else if (gapp == kgappBuiltIn && psym->FitsSymbolType(ksymtGlyphAttr) && psym->FieldCount() > 1 && psym->FieldIs(0, "collision")) { if (fCollFix) { // Put collision.flags first, immediately followed by the others in a specific order. // This must match the assumptions in the engine. Symbol psymColFlags = psymtblMain->FindSymbol(GrcStructName("collision", "flags")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymColFlags); Symbol psymColMinX = psymtblMain->FindSymbol(GrcStructName("collision", "min", "x")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymColMinX); Symbol psymColMinY = psymtblMain->FindSymbol(GrcStructName("collision", "min", "y")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymColMinY); Symbol psymColMaxX = psymtblMain->FindSymbol(GrcStructName("collision", "max", "x")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymColMaxX); Symbol psymColMaxY = psymtblMain->FindSymbol(GrcStructName("collision", "max", "y")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymColMaxY); Symbol psymColMargin = psymtblMain->FindSymbol(GrcStructName("collision", "margin")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymColMargin); Symbol psymColMarginWt = psymtblMain->FindSymbol(GrcStructName("collision", "marginweight")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymColMarginWt); // Not defined as glyph attributes: //Symbol psymExclGlyph = psymtblMain->FindSymbol(GrcStructName("collision", "exclude", "glyph")); //AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymExclGlyph); //Symbol psymExclOffX = psymtblMain->FindSymbol(GrcStructName("collision", "exclude", "offset", "x")); //AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymExclOffX); //Symbol psymExclOffY = psymtblMain->FindSymbol(GrcStructName("collision", "exclude", "offset", "y")); //AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymExclOffY); Symbol psymSeqClass = psymtblMain->FindSymbol(GrcStructName("sequence", "class")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqClass); Symbol psymSeqProxClass = psymtblMain->FindSymbol(GrcStructName("sequence", "proxClass")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqProxClass); Symbol psymSeqOrder = psymtblMain->FindSymbol(GrcStructName("sequence", "order")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqOrder); Symbol psymSeqAboveXoff = psymtblMain->FindSymbol(GrcStructName("sequence", "above", "xoffset")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqAboveXoff); Symbol psymSeqAboveWt = psymtblMain->FindSymbol(GrcStructName("sequence", "above", "weight")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqAboveWt); Symbol psymSeqBelowXlim = psymtblMain->FindSymbol(GrcStructName("sequence", "below", "xlimit")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqBelowXlim); Symbol psymSeqBelowWt = psymtblMain->FindSymbol(GrcStructName("sequence", "below", "weight")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqBelowWt); Symbol psymSeqValignHt = psymtblMain->FindSymbol(GrcStructName("sequence", "valign", "height")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqValignHt); Symbol psymSeqValignWt = psymtblMain->FindSymbol(GrcStructName("sequence", "valign", "weight")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymSeqValignWt); // This isn't put into the font tables, but an ID is needed for processing. Symbol psymComplexFit = psymtblMain->FindSymbol(GrcStructName("collision", "complexFit")); AddGlyphAttrSymbolInMap(vpsymGlyphAttrIDs, psymComplexFit); Assert(psymColFlags->InternalID() != 0); Assert(psymColFlags->InternalID() + 1 == psymColMinX->InternalID()); Assert(psymColFlags->InternalID() + 2 == psymColMinY->InternalID()); Assert(psymColFlags->InternalID() + 3 == psymColMaxX->InternalID()); Assert(psymColFlags->InternalID() + 4 == psymColMaxY->InternalID()); Assert(psymColFlags->InternalID() + 5 == psymColMargin->InternalID()); Assert(psymColFlags->InternalID() + 6 == psymColMarginWt->InternalID()); //Assert(psymColFlags->InternalID() + 7 == psymExclGlyph->InternalID()); //Assert(psymColFlags->InternalID() + 8 == psymExclOffX->InternalID()); //Assert(psymColFlags->InternalID() + 9 == psymExclOffY->InternalID()); Assert(psymColFlags->InternalID() + 7 == psymSeqClass->InternalID()); Assert(psymColFlags->InternalID() + 8 == psymSeqProxClass->InternalID()); Assert(psymColFlags->InternalID() + 9 == psymSeqOrder->InternalID()); Assert(psymColFlags->InternalID() + 10 == psymSeqAboveXoff->InternalID()); Assert(psymColFlags->InternalID() + 11 == psymSeqAboveWt->InternalID()); Assert(psymColFlags->InternalID() + 12 == psymSeqBelowXlim->InternalID()); Assert(psymColFlags->InternalID() + 13 == psymSeqBelowWt->InternalID()); Assert(psymColFlags->InternalID() + 14 == psymSeqValignHt->InternalID()); Assert(psymColFlags->InternalID() + 15 == psymSeqValignWt->InternalID()); // Keep this last: Assert(psymColFlags->InternalID() + 16 == psymComplexFit->InternalID()); } // Otherwise we don't want to assign glyph attr IDs to the collision attributes, because // the older table format doesn't know how to handle them. } } return true; } /*---------------------------------------------------------------------------------------------- Add the generic symbol into the map that indicates internal glyph attribute IDs, if it is not already there. Return the internal ID. ----------------------------------------------------------------------------------------------*/ int GrcSymbolTable::AddGlyphAttrSymbolInMap(std::vector & vpsymGlyphAttrIDs, Symbol psymGeneric) { for (auto ipsym = 0U; ipsym < vpsymGlyphAttrIDs.size(); ++ipsym) { if (vpsymGlyphAttrIDs[ipsym] == psymGeneric) return ipsym; } psymGeneric->SetInternalID(int(vpsymGlyphAttrIDs.size())); vpsymGlyphAttrIDs.push_back(psymGeneric); return psymGeneric->InternalID(); } int GrcSymbolTable::AddGlyphAttrSymbolInMap(std::vector & vpsymGlyphAttrIDs, Symbol psymGeneric, int ipsymToAssign) { if (signed(vpsymGlyphAttrIDs.size()) > ipsymToAssign) { Assert(vpsymGlyphAttrIDs[ipsymToAssign] == NULL || vpsymGlyphAttrIDs[ipsymToAssign] == psymGeneric); psymGeneric->SetInternalID(ipsymToAssign); vpsymGlyphAttrIDs[ipsymToAssign] = psymGeneric; return ipsymToAssign; } else { // Add blank slots. while (signed(vpsymGlyphAttrIDs.size()) < ipsymToAssign) vpsymGlyphAttrIDs.push_back(NULL); Assert(static_cast(ipsymToAssign) == vpsymGlyphAttrIDs.size()); psymGeneric->SetInternalID(ipsymToAssign); vpsymGlyphAttrIDs.push_back(psymGeneric); return ipsymToAssign; } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Assign the glyph attributes to all the glyphs in all the classes. ----------------------------------------------------------------------------------------------*/ bool GrcManager::AssignGlyphAttrsToClassMembers(GrcFont * pfont) { Assert(m_pgax == NULL); auto cGlyphAttrs = m_vpsymGlyphAttrs.size(); auto cStdStyles = max(signed(m_vpsymStyles.size()), 1); Assert(cStdStyles == 1); // for now m_pgax = new GrcGlyphAttrMatrix(m_cwGlyphIDs, cGlyphAttrs, cStdStyles); // Array of pointers to ligature component maps, if any. m_plclist = new GrcLigComponentList(m_cwGlyphIDs); // List of system-defined glyph attributes: // directionality; default = 0 (neutral) std::vector vpsymSysDefined; std::vector vnSysDefValues; vpsymSysDefined.push_back(SymbolTable()->FindSymbol("directionality")); vnSysDefValues.push_back(kdircNeutral); // breakweight; default = letter vpsymSysDefined.push_back(SymbolTable()->FindSymbol("breakweight")); vnSysDefValues.push_back(klbLetterBreak); if (m_prndr->Bidi()) { // mirror.glyph vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("mirror", "glyph"))); vnSysDefValues.push_back(0); // mirror.isEncoded vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("mirror", "isEncoded"))); vnSysDefValues.push_back(0); } if (m_prndr->HasCollisionPass()) { // collision.flags and friends vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "flags"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "min", "x"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "max", "x"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "min", "y"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "max", "y"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "margin"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "marginweight"))); vnSysDefValues.push_back(0); // Not defined as glyph attributes: //vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "exclude", "glyph"))); //vnSysDefValues.push_back(0); //vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "exclude", "offset", "x"))); //vnSysDefValues.push_back(0); //vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "exclude", "offset", "y"))); //vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("collision", "complexFit"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "class"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "proxClass"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "order"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "above", "xoffset"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "above", "weight"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "below", "xlimit"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "below", "weight"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "valign", "height"))); vnSysDefValues.push_back(0); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("sequence", "valign", "weight"))); vnSysDefValues.push_back(0); } if (IncludePassOptimizations()) { vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("*skipPasses*"))); // Default value for the *skipPasses* attributes is a bitmap with 1 set for every pass. auto cpass = m_prndr->NumberOfPasses(); auto cpass1 = (cpass > kPassPerSPbitmap) ? kPassPerSPbitmap : cpass; unsigned int nDefaultSkipP = 0; for (auto i = 0U; i < cpass1; ++i) nDefaultSkipP = (nDefaultSkipP << 1) + 1; vnSysDefValues.push_back(nDefaultSkipP); if (cpass > kPassPerSPbitmap) { vpsymSysDefined.push_back(SymbolTable()->FindSymbol(GrcStructName("*skipPasses2*"))); auto cpass2 = (cpass > kPassPerSPbitmap * 2) ? kPassPerSPbitmap * 2 : cpass; unsigned int nDefaultSkipP2 = 0; for (auto i2 = unsigned(kPassPerSPbitmap); i2 < cpass2; ++i2) nDefaultSkipP2 = (nDefaultSkipP2 << 1) + 1; vnSysDefValues.push_back(nDefaultSkipP2); } } // justify.weight = 1 if (NumJustLevels() > 0) { GrcStructName xnsJ0Weight("justify", "0", "weight"); vpsymSysDefined.push_back(SymbolTable()->FindSymbol(xnsJ0Weight)); vnSysDefValues.push_back(1); // Don't need to handle both since they have the same glyph-attr ID. //GrcStructName xnsJWeight("justify", "weight"); //vpsymSysDefined.push_back(SymbolTable()->FindSymbol(xnsJWeight)); //vnSysDefValues.push_back(1); // Other justify attrs have default of zero, and so do not need to be initialized. } m_prndr->AssignGlyphAttrDefaultValues(pfont, m_pgax, m_cwGlyphIDs, vpsymSysDefined, vnSysDefValues, m_vpexpModified, m_vpsymGlyphAttrs); m_prndr->AssignGlyphAttrsToClassMembers(m_pgax, m_plclist); if (m_cpsymComponents >= kMaxComponents) { g_errorList.AddError(4124, NULL, "Total number of ligature components (", std::to_string(m_cpsymComponents), ") exceeds maximum of ", std::to_string(kMaxComponents - 1)); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GrcLigComponentList * plclist) { for (size_t ipglfc = 0; ipglfc < m_vpglfc.size(); ipglfc++) { m_vpglfc[ipglfc]->AssignGlyphAttrsToClassMembers(pgax, this, plclist); } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GdlRenderer * prndr, GrcLigComponentList * plclist) { int cgid = GlyphIDCount(); int igid = 0; AssignGlyphAttrsToClassMembers(pgax, prndr, plclist, m_vpglfaAttrs, cgid, igid); } /*---------------------------------------------------------------------------------------------- Assign the given glyph attributes to all the glyphs in the class. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GdlRenderer * prndr, GrcLigComponentList * plclist, std::vector & vpglfaAttrs, int cgid, int & igid) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->AssignGlyphAttrsToClassMembers(pgax, prndr, plclist, vpglfaAttrs, cgid, igid); } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GdlRenderer * prndr, GrcLigComponentList * plclist, std::vector & vpglfaAttrs, int cgid, int & igid) { int igidInitial = igid; // For each attribute assignment in the value list: for (size_t ipglfa = 0; ipglfa < vpglfaAttrs.size(); ipglfa++) { Symbol psym = vpglfaAttrs[ipglfa]->GlyphSymbol(); Assert(!psym->IsGeneric()); int nGlyphAttrID = psym->InternalID(); if (!g_cman.OffsetAttrs() && psym->IsIgnorableOffsetAttr()) continue; // The new attribute assignment: GdlAssignment * pasgnValue = vpglfaAttrs[ipglfa]->Assignment(); GdlExpression * pexpNew = pasgnValue->Expression(); int nPRNew = pasgnValue->PointRadius(); int mPrUnitsNew = pasgnValue->PointRadiusUnits(); bool fOverrideNew = pasgnValue->Override(); GrpLineAndFile lnfNew = pasgnValue->LineAndFile(); int nStmtNoNew = lnfNew.PreProcessedLine(); GdlClassMemberExpression * pexpilNew = dynamic_cast(pexpNew); if (pexpilNew) { Assert(pexpilNew->Name()->FitsSymbolType(ksymtClass)); pexpilNew->SetClassSize(cgid); if (pexpilNew->GlyphIndex() != -1 && pexpilNew->GlyphIndex() != igid) { // Make a copy for this specific glyph definition. GdlClassMemberExpression * pexpilThisGlyphId = dynamic_cast(pexpilNew->Clone()); pexpilNew = pexpilThisGlyphId; pexpNew = dynamic_cast(pexpilNew); g_cman.StoreModifiedExpression(pexpNew); } pexpilNew->SetGlyphIndex(igid); } igid = igidInitial; // start over for each attribute // For each glyph ID covered by this definition's range: for (size_t iwGlyphID = 0; iwGlyphID < m_vwGlyphIDs.size(); iwGlyphID++) { if (m_vwGlyphIDs[iwGlyphID] == kBadGlyph) // invalid glyph continue; // Compare the new assignment with the previous. GdlExpression * pexpOld; int nPROld; int mPrUnitsOld; bool fOverrideOld, fShadow; GrpLineAndFile lnfOld; pgax->Get(m_vwGlyphIDs[iwGlyphID], nGlyphAttrID, &pexpOld, &nPROld, &mPrUnitsOld, &fOverrideOld, &fShadow, &lnfOld); int nStmtNoOld = lnfOld.PreProcessedLine(); Assert(!fShadow); if (pexpOld == NULL || (nStmtNoNew > nStmtNoOld && fOverrideNew) || (nStmtNoOld > nStmtNoNew && !fOverrideOld)) { // For indexed-lookup expressions, we need to make a separate copy // for each individual glyph ID. GdlExpression * pexpThisGlyphId = pexpNew; if (pexpilNew && pexpilNew->GlyphIndex() != igid) { // Make a copy for this specific glyph ID. pexpThisGlyphId = pexpNew->Clone(); GdlClassMemberExpression * pexpilThisGlyphId = dynamic_cast(pexpThisGlyphId); pexpilThisGlyphId->SetGlyphIndex(igid); g_cman.StoreModifiedExpression(pexpThisGlyphId); } // The current attribute assignment overrides the previous--set it. pgax->Set(m_vwGlyphIDs[iwGlyphID], nGlyphAttrID, pexpThisGlyphId, nPRNew, mPrUnitsNew, fOverrideNew, false, lnfNew); } // If this glyph is a ligature, add the given component to its list. int ivComponent = psym->FieldIndex("component"); if (ivComponent > -1) { plclist->AddComponentFor(m_vwGlyphIDs[iwGlyphID], psym->Generic()->BaseLigComponent(), prndr); } igid++; } } } /*---------------------------------------------------------------------------------------------- Set the (non-zero) system-defined glyph attributes to default values for all the glyphs. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::AssignGlyphAttrDefaultValues(GrcFont * pfont, GrcGlyphAttrMatrix * pgax, size_t cwGlyphs, std::vector & vpsymSysDefined, std::vector & vnSysDefValues, std::vector & vpexpExtra, std::vector & /*vpsymGlyphAttrs*/) { bool fIcuAvailable = false; try { //int charType = u_charType(0x0020); //int charCat = UCharCategory(u_charType(0x0020)); //int charDir = u_charDirection(0x0020); if (UCharCategory(u_charType(0x0020)) == U_SPACE_SEPARATOR && u_charDirection(0x0020) == U_WHITE_SPACE_NEUTRAL) { fIcuAvailable = true; } } catch (...) { } Assert(vpsymSysDefined.size() == vnSysDefValues.size()); for (size_t i = 0; i < vpsymSysDefined.size(); i++) // loop over attributes { bool fErrorForAttr = false; Symbol psym = vpsymSysDefined[i]; int nDefaultValue = vnSysDefValues[i]; // default for the entire attribute, non-char-specific int nGlyphAttrID = psym->InternalID(); // Set all values to the defaults for the corresponding Unicode character. GrcFont::iterator fit; int iUni; for (iUni = 0, fit = pfont->Begin(); fit != pfont->End(); ++fit, ++iUni) // loop over chars { int nUnicode = *fit; auto wGlyphID = pfont->GlyphFromCmap(nUnicode, NULL); if (wGlyphID > 0) { // Read the character property from ICU. // How do we handle values from the Private Use Area? Just hard-code the // range to skip? int nStdValue; bool fInitFailed = false; bool fClassMember = false; if (psym->LastFieldIs("breakweight")) { bool fIsSep; if (fIcuAvailable) { UCharCategory catICU = UCharCategory(u_charType(nUnicode)); fIsSep = (catICU == U_SPACE_SEPARATOR || catICU == U_LINE_SEPARATOR || catICU == U_PARAGRAPH_SEPARATOR); } else { if (nUnicode == 0x0020 || nUnicode == 0x1680 || nUnicode == 0x180E || (nUnicode >= 0x2000 && nUnicode <= 0x200B) || nUnicode == 0x205F || nUnicode == 0x3000) // Don't include non-breaking spaces: U+00A0, U+202F, U+FEFF { fIsSep = 1; } else { fIsSep = 0; fInitFailed = true; // not sure we got the right answer } } nStdValue = (fIsSep) ? klbWordBreak : nDefaultValue; } else if (psym->LastFieldIs("directionality")) { nStdValue = (int)this->DefaultDirCode(nUnicode, &fInitFailed); if (fInitFailed && fIcuAvailable) { UCharDirection diricu = u_charDirection(nUnicode); nStdValue = ConvertBidiCode(diricu, nUnicode); fInitFailed = 0; //if (!Bidi() && nStdValue == kdircL) // nStdValue = 0; // don't bother storing this for non-bidi fonts } } else if (psym->LastFieldIs("*skipPasses*") || psym->LastFieldIs("*skipPasses2*")) { nStdValue = nDefaultValue; } else if (psym->FieldAt(0) == "mirror" && psym->LastFieldIs("glyph") && Bidi()) { int nUnicodeMirror = (int)u_charMirror(nUnicode); if (nUnicodeMirror == nUnicode) nStdValue = 0; else nStdValue = pfont->GlyphFromCmap(nUnicodeMirror, NULL); fClassMember = true; } else if (psym->LastFieldIs("isEncoded") && Bidi()) { bool fIsEnc = u_isMirrored(nUnicode); nStdValue = (int)fIsEnc; } else break; // ...out of the character loop; this is not an attribute // it makes sense to read from the db if (fInitFailed) { if (!fErrorForAttr) { // First time an error has been encountered for this attribute. g_errorList.AddWarning(4509, NULL, "Unable to initialize ", psym->FullName(), " glyph attribute from Unicode char props database"); } fErrorForAttr = true; // don't give the warning again } else if (!pgax->Defined(wGlyphID, nGlyphAttrID)) { GdlExpression * pexpDefault; if (fClassMember) pexpDefault = new GdlClassMemberExpression(nStdValue); else pexpDefault = new GdlNumericExpression(nStdValue); vpexpExtra.push_back(pexpDefault); pgax->Set(wGlyphID, nGlyphAttrID, pexpDefault, 0, 0, false, false, GrpLineAndFile()); } } } if (nDefaultValue == 0) continue; // don't need to set zero values explicitly // Now set any remaining attributes that weren't handled above to the standard defaults. for (auto wGlyphID = 0U; wGlyphID < cwGlyphs; wGlyphID++) { if (!pgax->Defined(wGlyphID, nGlyphAttrID)) { GdlExpression * pexpDefault = new GdlNumericExpression(nDefaultValue); vpexpExtra.push_back(pexpDefault); pgax->Set(wGlyphID, nGlyphAttrID, pexpDefault, 0, 0, false, false, GrpLineAndFile()); } } } // Assign 'kGpointNotSet' as the default value for all gpoint attributes. We use // a special value for this to distinguish the situation of gpoint = 0, which // may be a legitimate value. // for (auto ipsym = 0U; ipsym < vpsymGlyphAttrs.size(); ++ipsym) // { // Symbol psym = vpsymGlyphAttrs[ipsym]; // int nGlyphAttrID = psym->InternalID(); // if (psym->LastFieldIs("gpoint")) // { // for (gid16 wGlyphID = 0; wGlyphID < cwGlyphs; wGlyphID++) // { // if (!pgax->Defined(wGlyphID, nGlyphAttrID)) // { // GdlExpression * pexpDefault = new GdlNumericExpression(kGpointNotSet); // vpexpExtra.Push(pexpDefault); // pgax->Set(wGlyphID, nGlyphAttrID, // pexpDefault, 0, 0, false, false, GrpLineAndFile()); // } // } // } // } } /*---------------------------------------------------------------------------------------------- Convert the bidi categories defined by the character properties engine to those used by Graphite. ----------------------------------------------------------------------------------------------*/ DirCode GdlRenderer::ConvertBidiCode(UCharDirection diricu, utf16 wUnicode) { std::string staCode; switch (diricu) { case U_LEFT_TO_RIGHT: return kdircL; case U_RIGHT_TO_LEFT: return kdircR; case U_EUROPEAN_NUMBER: return kdircEuroNum; case U_EUROPEAN_NUMBER_SEPARATOR: return kdircEuroSep; case U_EUROPEAN_NUMBER_TERMINATOR: return kdircEuroTerm; case U_ARABIC_NUMBER: return kdircArabNum; case U_COMMON_NUMBER_SEPARATOR: return kdircComSep; case U_WHITE_SPACE_NEUTRAL: return kdircWhiteSpace; case U_OTHER_NEUTRAL: return kdircNeutral; case U_LEFT_TO_RIGHT_EMBEDDING: return kdircLRE; case U_LEFT_TO_RIGHT_OVERRIDE: return kdircLRO; case U_RIGHT_TO_LEFT_ARABIC: return kdircRArab; case U_RIGHT_TO_LEFT_EMBEDDING: return kdircRLE; case U_RIGHT_TO_LEFT_OVERRIDE: return kdircRLO; case U_POP_DIRECTIONAL_FORMAT: return kdircPDF; case U_DIR_NON_SPACING_MARK: return kdircNSM; case U_BOUNDARY_NEUTRAL: return kdircBndNeutral; case U_BLOCK_SEPARATOR: staCode = "B"; break; // not handled case U_SEGMENT_SEPARATOR: staCode = "S"; break; // not handled default: staCode = std::to_string(diricu); break; } if (Bidi()) { g_errorList.AddWarning(4510, NULL, "Default Unicode bidi char type for 0x", GdlGlyphDefn::UsvString(wUnicode), " = ", staCode, ", which is not handled; char will be treated as neutral (ON)"); } // otherwise the issue is irrelevant; don't bother with the warning return kdircNeutral; } /*---------------------------------------------------------------------------------------------- Return the default directionality code for the given USV. ----------------------------------------------------------------------------------------------*/ DirCode GdlRenderer::DefaultDirCode(int nUnicode, bool * pfInitFailed) { DirCode dircDefault; switch (nUnicode) { case kchwSpace: dircDefault = kdircWhiteSpace; break; case kchwLRM: dircDefault = kdircL; break; case kchwRLM: dircDefault = kdircR; break; case kchwALM: dircDefault = kdircRArab; break; case kchwLRO: dircDefault = kdircLRO; break; case kchwRLO: dircDefault = kdircRLO; break; case kchwLRE: dircDefault = kdircLRE; break; case kchwRLE: dircDefault = kdircRLE; break; case kchwPDF: dircDefault = kdircPDF; break; case kchwLRI: dircDefault = kdircLRI; break; case kchwRLI: dircDefault = kdircRLI; break; case kchwFSI: dircDefault = kdircFSI; break; case kchwPDI: dircDefault = kdircPDI; break; // The following matching parentheses come from the Unicode BidiBrackets.txt file. case 0x0028: case 0x005B: case 0x007B: case 0x0F3A: case 0x0F3C: case 0x169B: case 0x2045: case 0x207D: case 0x208D: case 0x2329: case 0x2768: case 0x276A: case 0x276C: case 0x276E: case 0x2770: case 0x2772: case 0x2774: case 0x27C5: case 0x27E6: case 0x27E8: case 0x27EA: case 0x27EC: case 0x27EE: case 0x2983: case 0x2985: case 0x2987: case 0x2989: case 0x298B: case 0x298D: case 0x298F: case 0x2991: case 0x2993: case 0x2995: case 0x2997: case 0x29D8: case 0x29DA: case 0x29FC: case 0x2E22: case 0x2E24: case 0x2E26: case 0x2E28: case 0x3008: case 0x300A: case 0x300C: case 0x300E: case 0x3010: case 0x3014: case 0x3016: case 0x3018: case 0x301A: case 0xFE59: case 0xFE5B: case 0xFE5D: case 0xFF08: case 0xFF3B: case 0xFF5B: case 0xFF5F: case 0xFF62: dircDefault = kdircOPP; break; case 0x0029: case 0x005D: case 0x007D: case 0x0F3B: case 0x0F3D: case 0x169C: case 0x2046: case 0x207E: case 0x208E: case 0x232A: case 0x2769: case 0x276B: case 0x276D: case 0x276F: case 0x2771: case 0x2773: case 0x2775: case 0x27C6: case 0x27E7: case 0x27E9: case 0x27EB: case 0x27ED: case 0x27EF: case 0x2984: case 0x2986: case 0x2988: case 0x298A: case 0x298C: case 0x298E: case 0x2990: case 0x2992: case 0x2994: case 0x2996: case 0x2998: case 0x29D9: case 0x29DB: case 0x29FD: case 0x2E23: case 0x2E25: case 0x2E27: case 0x2E29: case 0x3009: case 0x300B: case 0x300D: case 0x300F: case 0x3011: case 0x3015: case 0x3017: case 0x3019: case 0x301B: case 0xFE5A: case 0xFE5C: case 0xFE5E: case 0xFF09: case 0xFF3D: case 0xFF5D: case 0xFF60: case 0xFF63: dircDefault = kdircCPP; break; default: // various kinds of spaces dircDefault = nUnicode >= 0x2000 && nUnicode <= 0x200b ? kdircWhiteSpace : kdircNeutral; *pfInitFailed = (bool)Bidi(); // we only care about the failure if this is a bidi font break; } return dircDefault; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Process each glyph attribute assignment for each glyph: * make sure that the statements are appropriate for the context of the glyph table (rather than a rule table); * do type checking; * convert g-paths to g-points; * convert x/y coordinates to g-points and vice versa. ----------------------------------------------------------------------------------------------*/ bool GrcManager::ProcessGlyphAttributes(GrcFont * pfont) { auto const cStdStyles = max(m_vpsymStyles.size(), size_t(1)); for (gid16 wGlyphID = 0; wGlyphID < m_cwGlyphIDs; ++wGlyphID) { for (auto iAttrID = 0U; iAttrID < m_vpsymGlyphAttrs.size(); ++iAttrID) { for (auto n = cStdStyles; n; --n) { GdlExpression * pexp; int nPR; int munitPR; bool fOverride, fShadow; GrpLineAndFile lnf; m_pgax->Get(wGlyphID, iAttrID, &pexp, &nPR, &munitPR, &fOverride, &fShadow, &lnf); Assert(!fShadow); if (!pexp) continue; auto const psymAttr = m_vpsymGlyphAttrs[iAttrID]; bool fOkay = pexp->TypeCheck(psymAttr->ExpType()); if (!fOkay) g_errorList.AddWarning(4511, pexp, "Inconsistent or inappropriate type in glyph attribute: ", psymAttr->FullName(), lnf); pexp->GlyphAttrCheck(psymAttr); GdlExpression * pexpNew = pexp->SimplifyAndUnscale(wGlyphID, pfont); Assert(pexpNew); if (pexpNew && pexpNew != pexp) { m_vpexpModified.push_back(pexpNew); // so we can delete it later m_pgax->Set(wGlyphID, iAttrID, pexpNew, nPR, munitPR, fOverride, false, lnf); } // We decided not to do this: //if (psymAttr->IsCollisionAttr() && psymAttr->LastFieldIs("maxoverlap")) //{ // // Distinguish between values of false and 0. False means ignore, and value is stored // // as 0. An actual 0 is changed to 1, since the difference between 0 and 1 is negligible. // GdlNumericExpression * pexpNum = dynamic_cast(pexpNew); // if (pexpNum) // { // if (pexpNum->IsBoolean()) // { // if (pexpNum->Value() == 1) // "true" // g_errorList.AddError(9999, pexp, // "Invalid value for collision.maxoverlap: true", // lnf); // // else "false" = 0 // } // else if (pexpNum->Value() == 0) // { // pexpNum->SetValue(1); // because 0 means false for this attribute // } // } //} // Convert g-paths to g-points int nGPathValue; int ivGPath = psymAttr->FieldIndex("gpath"); if (ivGPath > -1) { if (ivGPath != psymAttr->FieldCount() - 1) { // not of the form ..gpath = X g_errorList.AddError(4125, pexp, "Invalid use of gpath attribute: ", psymAttr->FullName(), lnf); } else if (!pexpNew->ResolveToInteger(&nGPathValue, false)) { g_errorList.AddError(4126, pexp, "Invalid value for gpath attribute--must be an integer: ", psymAttr->FullName(), lnf); } else { // Find the corresponding gpoint attribute. Symbol psymGPoint = psymAttr->PointSisterField("gpoint"); Assert(psymGPoint); // Set its value. utf16 wActual = ActualForPseudo(wGlyphID); if (wActual == 0) wActual = wGlyphID; int nGPointValue = pfont->ConvertGPathToGPoint(wActual, nGPathValue, pexp); if (nGPointValue == -1) { g_errorList.AddWarning(4512, NULL, "Invalid path for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID), ": ", std::to_string(nGPointValue), lnf); nGPointValue = 0; } pexpNew = new GdlNumericExpression(nGPointValue); pexpNew->CopyLineAndFile(*pexp); m_vpexpModified.push_back(pexpNew); // so we can delete it later m_pgax->Set(wGlyphID, psymGPoint->InternalID(), pexpNew, nPR, munitPR, fOverride, false, lnf); } } } } if (this->OffsetAttrs()) ConvertBetweenXYAndGpoint(pfont, wGlyphID); // Just in case, since incrementing 0xFFFF will produce zero. if (wGlyphID == 0xFFFF) break; } return true; } /*---------------------------------------------------------------------------------------------- Convert x/y point coordinates to an actual on-curve point if there is one that matches closely (within PointRadius). On the other hand, if the specified g-point is the single point on its curve, convert it to x/y coordinates (due to the fact that single-point curves disappear from the final API point list). Actually do this in all cases, because g-points aren't available in the Linux version of the engine. We do this in a separate loop after both the x and y fields have been processed, simplified to unscaled integers, etc. ----------------------------------------------------------------------------------------------*/ void GrcManager::ConvertBetweenXYAndGpoint(GrcFont * pfont, gid16 wGlyphID) { int cStdStyles = max(signed(m_vpsymStyles.size()), 1); utf16 wActual = ActualForPseudo(wGlyphID); if (wActual == 0) wActual = wGlyphID; for (auto iAttrID = 0U; iAttrID < m_vpsymGlyphAttrs.size(); ++iAttrID) { for (auto n = cStdStyles; n; --n) { Symbol psymAttr = m_vpsymGlyphAttrs[iAttrID]; if (psymAttr->LastFieldIs("x")) { Symbol psymAttrX = psymAttr; Symbol psymAttrY = psymAttrX->PointSisterField("y"); if (!psymAttrY) continue; // need both x and y to convert int iAttrIDx = iAttrID; int iAttrIDy = psymAttrY->InternalID(); GdlExpression * pexpX; int nPRx; int munitPRx; bool fOverride, fShadowX, fShadowY; GrpLineAndFile lnf; m_pgax->Get(wGlyphID, iAttrIDx, &pexpX, &nPRx, &munitPRx, &fOverride, &fShadowX, &lnf); if (!pexpX) continue; int nX; if (!pexpX->ResolveToInteger(&nX, false)) continue; GdlExpression * pexpY; int nPRy; int munitPRy; m_pgax->Get(wGlyphID, iAttrIDy, &pexpY, &nPRy, &munitPRy, &fOverride, &fShadowY, &lnf); if (!pexpY) continue; int nY; if (!pexpY->ResolveToInteger(&nY, false)) continue; Assert(fShadowX == fShadowY); if (fShadowX || fShadowY) continue; // Find the corresponding gpoint attribute. Symbol psymGPoint = psymAttrX->PointSisterField("gpoint"); Assert(psymGPoint); nPRx = pfont->ScaledToAbsolute(nPRx, munitPRx); nPRy = pfont->ScaledToAbsolute(nPRy, munitPRy); // See if we can find a corresponding on-curve point. int nGPointValue = pfont->GetPointAtXY(wActual, nX, nY, max(nPRx, nPRy), pexpX); if (nGPointValue > -1 && !pfont->IsPointAlone(wActual, nGPointValue, pexpX)) { // We found one. Set the value of the gpoint field. GdlExpression * pexpGpoint = new GdlNumericExpression(nGPointValue); pexpGpoint->CopyLineAndFile(*pexpX); m_vpexpModified.push_back(pexpGpoint); // so we can delete it later m_pgax->Set(wGlyphID, psymGPoint->InternalID(), pexpGpoint, 0, munitPRx, fOverride, false, lnf); // Clear the x and y fields. m_pgax->Set(wGlyphID, iAttrIDx, NULL, 0, munitPRx, true, false, lnf); m_pgax->Set(wGlyphID, iAttrIDy, NULL, 0, munitPRy, true, false, lnf); // Don't delete the actual expressions, because they are owned by the // original assignment statements, which will delete them. } } else if (psymAttr->LastFieldIs("gpoint")) { Symbol psymAttrGpoint = psymAttr; int iAttrIDgpoint = iAttrID; GdlExpression * pexpGpoint; int nPR; int munitPR; bool fOverride, fShadow; GrpLineAndFile lnf; m_pgax->Get(wGlyphID, iAttrIDgpoint, &pexpGpoint, &nPR, &munitPR, &fOverride, &fShadow, &lnf); Assert(!fShadow); if (!pexpGpoint) continue; int nGPoint; if (!pexpGpoint->ResolveToInteger(&nGPoint, false)) continue; // Convert gpoint to x/y. On Linux gpoint will never work. // It won't work on Windows either if the point comprises a single-point path, // so in that case, delete the gpoint setting altogether. In other cases, // leave both around, so if gpoint doesn't work, the engine can fall back // to x/y. int mX, mY; if (pfont->GetXYAtPoint(wActual, nGPoint, &mX, &mY, pexpGpoint)) { // Create equivalent x/y statements. Symbol psymX = psymAttrGpoint->PointSisterField("x"); Symbol psymY = psymAttrGpoint->PointSisterField("y"); Assert(psymX); Assert(psymY); int nIDX = psymX->InternalID(); int nIDY = psymY->InternalID(); GdlExpression * pexpX = new GdlNumericExpression(mX, kmunitUnscaled); pexpX->CopyLineAndFile(*pexpGpoint); GdlExpression * pexpY = new GdlNumericExpression(mY, kmunitUnscaled); pexpY->CopyLineAndFile(*pexpGpoint); m_vpexpModified.push_back(pexpX); // so we can delete them later m_vpexpModified.push_back(pexpY); if (m_pgax->Defined(wGlyphID, nIDX) && m_pgax->Defined(wGlyphID, nIDY)) { Symbol psymBasePt = psymAttr->BasePoint(); g_errorList.AddWarning(4513, pexpGpoint, "Both x/y coordinates and gpoint are defined for ", psymBasePt->FullName(), " for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID), "; only gpoint will be used"); } bool fDeleteGpoint = pfont->IsPointAlone(wActual, nGPoint, pexpGpoint); // Store the new expressions as glyph attribute assignments. m_pgax->Set(wGlyphID, nIDX, pexpX, nPR, munitPR, fOverride, !fDeleteGpoint, lnf); m_pgax->Set(wGlyphID, nIDY, pexpY, nPR, munitPR, fOverride, !fDeleteGpoint, lnf); if (fDeleteGpoint) { // Since this is a single-point path, it won't show up in the // hinted glyph from the graphics object, so we really have to // use the x/y coordinates. So clear the gpoint field. m_pgax->Set(wGlyphID, iAttrIDgpoint, NULL, 0, munitPR, true, false, lnf); } // Don't delete the actual expression, because it is owned by the // original assignment statements, which will delete it. } } } } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- First, flatten any slot attributes that are reading points to use integers instead (ie, change { attach.at = udap } to { attach.at { x = udap.x; y = udap.y }} ). Then substitute the internal glyph attribute IDs into the rules. Do error checking, making sure glyph attributes are defined appropriately where expected. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->FixGlyphAttrsInRules(pcman, pfont); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->FixGlyphAttrsInRules(pcman, pfont); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont) { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->FixGlyphAttrsInRules(pcman, pfont); } // While we're at it... FixFeatureTestsInPass(pfont); } /*--------------------------------------------------------------------------------------------*/ void GdlRule::FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont) { // Make a list of all the input-classes in the rule, for checking for the definition // of glyph attributes in constraints and attribute-setters. std::vector vpglfcInClasses; for (auto const prit: m_vprit) { Symbol psymInput = prit->m_psymInput; if (psymInput && (psymInput->FitsSymbolType(ksymtClass) || psymInput->FitsSymbolType(ksymtSpecialLb)) && !psymInput->LastFieldIs(GdlGlyphClassDefn::Undefined())) { GdlGlyphClassDefn * pglfc = psymInput->GlyphClassDefnData(); Assert(pglfc); vpglfcInClasses.push_back(pglfc); } else // invalid input class vpglfcInClasses.push_back(NULL); } Assert(m_vprit.size() == vpglfcInClasses.size()); // Flatten slot attributes that use points to use integers instead. Do this // entire process before fixing glyph attrs, because there can be some interaction between // slots in a rule (eg, attach.to/at). So we can be sure at that point what state // things are in. for (auto const prit: m_vprit) { prit->FlattenPointSlotAttrs(pcman); } // While we're at it, fix the feature tests. Do this before fixing the glyph attributes, // because it is possible to have feature tests embedded in conditional statements. FixFeatureTestsInRules(pfont); // Now do the fixes, error checks, etc. auto index = 0; for (auto const prit: m_vprit) { prit->FixGlyphAttrsInRules(pcman, vpglfcInClasses, this, index++); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * /*prule*/, int irit) { if (!m_psymInput) return; GdlGlyphClassDefn * pglfcIn = m_psymInput->GlyphClassDefnData(); if (!pglfcIn) return; // invalid class // Process constraint if (m_pexpConstraint) m_pexpConstraint->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); } /*--------------------------------------------------------------------------------------------*/ void GdlLineBreakItem::FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * prule, int irit) { // method on superclass: process constraints. GdlRuleItem::FixGlyphAttrsInRules(pcman, vpglfcInClasses, prule, irit); } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * prule, int irit) { // method on superclass: process constraints. GdlRuleItem::FixGlyphAttrsInRules(pcman, vpglfcInClasses, prule, irit); bool fXYAt = false; // true if the attach.at statements need to include x/y bool fGpointAt = false; // true if the attach.at statements need to include gpoint bool fXYWith = false; // true if the attach.with statements need to include x/y bool fGpointWith = false; // true if the attach.with statements need to include gpoint // ...due to the way the glyph attributes are defined bool fAttachTo = false; // true if an attach.to statement is present bool fAttachAtX = false; // true if an attach.at.x/gpoint statement is present bool fAttachAtY = false; // true if an attach.at.y/gpoint statement is present bool fAttachWithX = false; // true if an attach.with.x/gpoint statement is present bool fAttachWithY = false; // true if an attach.with.y/gpoint statement is present bool fDidAttachAt = false; // did checks for flattened attach.at bool fDidAttachWith = false; // did checks for flattened attach.with Symbol psymOutput = OutputClassSymbol(); // Process attribute-setting statements. int ipavs; for (ipavs = 0; ipavs < signed(m_vpavs.size()); ipavs++) { GdlAttrValueSpec * pavs = m_vpavs[ipavs]; // Check that appropriate glyph attributes exist for the slot attributes that // are making use of them. Symbol psym = pavs->m_psymName; Assert(psym->FitsSymbolType(ksymtSlotAttr) || psym->FitsSymbolType(ksymtFeature)); if (psym->IsAttachAtField()) { std::string staT = psym->LastField(); fAttachAtX = fAttachAtX || staT == "x" || staT == "gpoint" || staT == "gpath"; fAttachAtY = fAttachAtY || staT == "y" || staT == "gpoint" || staT == "gpath"; if (staT == "gpath") { g_errorList.AddError(4127, this, "Cannot use gpath function within a rule"); continue; } // The engine currently can't handle single-point paths, and within the rule, we // don't have a meaningful and consistent way to change such gpoint statements to // x/y coordinates. So disallow gpoint statements in rules. If we find a way // to make the engine handle single-point paths, take this code out. if (staT == "gpoint") { int nTmp; if (pavs->m_pexpValue->ResolveToInteger(&nTmp, false)) // constant, not glyph attr { g_errorList.AddError(4128, this, "Cannot use gpoint function within a rule"); continue; } } if (fDidAttachAt && pavs->Flattened()) // The precompiler flattened the attach.at command into separate fields; // in that case we don't need to check them twice. continue; // The value of attach.at must be defined for the class of the slot // receiving the attachment, not this slot. int srAttachToValue = AttachToSettingValue(); // 1-based if (srAttachToValue == -1) g_errorList.AddWarning(4514, this, "Attachment checks could not be done for value of attach.at"); else if (srAttachToValue == -2) { fAttachTo = true; Assert(false); // a VERY strange thing to happen. g_errorList.AddError(4129, this, "Inappropriate value of attach.to"); } else { fAttachTo = true; if (pavs->Flattened()) { pavs->CheckAttachAtPoint(pcman, vpglfcInClasses, srAttachToValue-1, &fXYAt, &fGpointAt); fDidAttachAt = true; } else pavs->FixGlyphAttrsInRules(pcman, vpglfcInClasses, srAttachToValue-1, psymOutput); } } else if (psym->IsAttachWithField()) { std::string staT = psym->LastField(); fAttachWithX = fAttachWithX || staT == "x" || staT == "gpoint" || staT == "gpath"; fAttachWithY = fAttachWithY || staT == "y" || staT == "gpoint" || staT == "gpath"; if (staT == "gpath") { g_errorList.AddError(4130, this, "Cannot use gpath function within a rule"); continue; } if (fDidAttachWith && pavs->Flattened()) // The precompiler flattened the attach.with command into separate fields; // in that case we don't need to check them twice. continue; if (!fAttachTo) fAttachTo = (AttachToSettingValue() != -1); if (pavs->Flattened()) { pavs->CheckAttachWithPoint(pcman, vpglfcInClasses, irit, &fXYWith, &fGpointWith); fDidAttachWith = true; } else pavs->FixGlyphAttrsInRules(pcman, vpglfcInClasses, irit, psymOutput); } else if (psym->IsComponentRef()) { CheckCompBox(pcman, psym); } else if (psymOutput == NULL) { // error condition } else { if (psym->IsAttachTo()) { GdlSlotRefExpression * pexpSR = dynamic_cast(pavs->m_pexpValue); if (pexpSR) { auto srAttachTo = static_cast(pexpSR->SlotNumber()); if (srAttachTo == 0) { // no attachment } else if (prule->NumberOfSlots() <= srAttachTo - 1) { // slot out of range--error will be produced later } // Go ahead and allow this: // else if (!dynamic_cast(prule->Item(srAttachTo - 1))) // g_errorList.AddError(4131, this, // "Cannot attach to an item in the context"); } } pavs->FixGlyphAttrsInRules(pcman, vpglfcInClasses, irit, psymOutput); } } if ((fAttachTo || fAttachAtX || fAttachAtY || fAttachWithX || fAttachWithY) && (!fAttachTo || !fAttachAtX || !fAttachAtY || !fAttachWithX || !fAttachWithY)) { if ((fAttachAtX || fAttachAtY) && !fAttachTo) g_errorList.AddError(4132, this, "Cannot specify attach.at without attach.to"); else g_errorList.AddWarning(4515, this, "Incomplete attachment specification"); } // Delete any superfluous attach commands (that were added in FlattenPointSlotAttrs // but not needed); ie, either the x/y point fields or the gpath field. It's possible // that we need to keep both versions, if one set of glyphs uses one and another set // uses the other. for (ipavs = signed(m_vpavs.size()); --ipavs >= 0; ) { bool fDeleteThis = false; Symbol psym = m_vpavs[ipavs]->m_psymName; if (psym->IsAttachAtField() && m_vpavs[ipavs]->Flattened()) { if (!fXYAt && (psym->LastFieldIs("x") || psym->LastFieldIs("y"))) // Keep attach.at.gpoint; throw away x/y. fDeleteThis = true; else if (!fGpointAt && psym->LastFieldIs("gpoint")) // Keep attach.at.x/y; throw away gpoint. fDeleteThis = true; } else if (psym->IsAttachWithField() && m_vpavs[ipavs]->Flattened()) { if (!fXYWith && (psym->LastFieldIs("x") || psym->LastFieldIs("y"))) // Keep attach.with.gpoint; throw away x/y. fDeleteThis = true; else if (!fGpointWith && psym->LastFieldIs("gpoint")) // Keep attach.with.x/y; throw away gpoint; fDeleteThis = true; } if (fDeleteThis) { delete m_vpavs[ipavs]; m_vpavs.erase(m_vpavs.begin() + ipavs); } } } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * prule, int irit) { GdlSetAttrItem::FixGlyphAttrsInRules(pcman, vpglfcInClasses, prule, irit); } /*--------------------------------------------------------------------------------------------*/ #ifdef NDEBUG void GdlAttrValueSpec::FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, Symbol /*psymOutClass*/) #else void GdlAttrValueSpec::FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, Symbol psymOutClass) #endif { Assert(psymOutClass->FitsSymbolType(ksymtClass) || psymOutClass->FitsSymbolType(ksymtSpecialUnderscore) || psymOutClass->FitsSymbolType(ksymtSpecialAt)); SymbolType symtName = this->m_psymName->SymType(); if (m_pexpValue) { m_pexpValue->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); m_pexpValue->LookupExpCheck(false, ((symtName == ksymtFeature) ? m_psymName : NULL)); } } /*---------------------------------------------------------------------------------------------- Return the symbol for the output class to use in checking the rule item. Specifically, if a substitution item has a selector and no class (ie, is something like '@2') return the class from the appropriate selected item. Return NULL if there is no input class, or the selector was invalid (in which cases an error was already recorded). ----------------------------------------------------------------------------------------------*/ Symbol GdlSetAttrItem::OutputClassSymbol() { return OutputSymbol(); } /*--------------------------------------------------------------------------------------------*/ Symbol GdlSubstitutionItem::OutputClassSymbol() { if (m_psymOutput->FitsSymbolType(ksymtSpecialAt)) { if (!m_pritSelInput) return NULL; return m_pritSelInput->m_psymInput; } return m_psymOutput; } /*---------------------------------------------------------------------------------------------- Flatten any slot attributes that use points to use integers instead. That is, replace them with versions in terms of the fields of a point that are appropriate. So instead of { attach.with = point1 } we generate { attach.with { x = point1.x; y = point1.y; gpoint = point1.gpoint; xoffset = point1.xoffset; yoffset = point1.yoffset } } We create as many of the above five as are defined in the symbol table, and later delete the superfluous one(s) (x/y or gpoint). ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::FlattenPointSlotAttrs(GrcManager * /*pcman*/) { // No attribute setters to worry about. } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::FlattenPointSlotAttrs(GrcManager * pcman) { std::vector vpavsNew; for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { m_vpavs[ipavs]->FlattenPointSlotAttrs(pcman, vpavsNew); } m_vpavs.clear(); m_vpavs.assign(vpavsNew.begin(), vpavsNew.end()); } /*--------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::FlattenPointSlotAttrs(GrcManager * pcman, std::vector & vpavsNew) { if (m_psymName->IsBogusSlotAttr()) // eg, shift.gpath { int nTmp; if ((m_psymName->LastFieldIs("xoffset") || m_psymName->LastFieldIs("yoffset")) && m_pexpValue->ResolveToInteger(&nTmp, false) && nTmp == 0) { // ignore } else g_errorList.AddError(4133, this, "Invalid slot attribute: ", m_psymName->FullName()); delete this; } else if (m_psymName->FitsSymbolType(ksymtSlotAttrPtOff) // attach.at, shift, etc. || m_psymName->FitsSymbolType(ksymtSlotAttrPt)) // collision.min/max { if (m_psymName->IsReadOnlySlotAttr()) { // Eventually will produce an error--for now, just pass through as is. vpavsNew.push_back(this); return; } if (m_psymOperator->FullName() != "=") { // Can't use +=, -= with entire points. g_errorList.AddError(4134, this, "Invalid point arithmetic; fields must be calculated independently in order to use ", m_psymOperator->FullName()); return; } Symbol psymX = m_psymName->SubField("x"); Symbol psymY = m_psymName->SubField("y"); Symbol psymGpoint = m_psymName->SubField("gpoint"); Symbol psymXoffset = m_psymName->SubField("xoffset"); Symbol psymYoffset = m_psymName->SubField("yoffset"); Assert(psymX); Assert(psymY); if (m_psymName->FitsSymbolType(ksymtSlotAttrPtOff)) { Assert(psymGpoint); Assert(psymXoffset); Assert(psymYoffset); } else { Assert(psymGpoint == NULL); Assert(psymXoffset == NULL); Assert(psymYoffset == NULL); } GdlExpression * pexpX = NULL; GdlExpression * pexpY = NULL; GdlExpression * pexpGpoint = NULL; GdlExpression * pexpXoffset = NULL; GdlExpression * pexpYoffset = NULL; bool fExpOkay = m_pexpValue->PointFieldEquivalents(pcman, &pexpX, &pexpY, &pexpGpoint, &pexpXoffset, &pexpYoffset); if (!fExpOkay) { g_errorList.AddError(4135, this, "Invalid point arithmetic"); delete this; return; } else if (!pexpX && !pexpY && !pexpGpoint && !pexpYoffset && !pexpYoffset) { GdlLookupExpression * pexpLookup = dynamic_cast(m_pexpValue); Assert(pexpLookup); if (pexpLookup->Name()->FitsSymbolType(ksymtGlyphAttr)) g_errorList.AddError(4136, this, "Glyph attribute is not a point: ", pexpLookup->Name()->FullName()); else g_errorList.AddError(4137, this, "Undefined glyph attribute: ", pexpLookup->Name()->FullName()); delete this; return; } GdlAttrValueSpec * pavs; if (pexpX) { pavs = new GdlAttrValueSpec(psymX, m_psymOperator, pexpX); pavs->CopyLineAndFile(*this); pavs->SetFlattened(true); vpavsNew.push_back(pavs); } if (pexpY) { pavs = new GdlAttrValueSpec(psymY, m_psymOperator, pexpY); pavs->CopyLineAndFile(*this); pavs->SetFlattened(true); vpavsNew.push_back(pavs); } if (g_cman.OffsetAttrs()) { if (pexpGpoint) { if (psymGpoint->IsBogusSlotAttr()) delete pexpGpoint; else { pavs = new GdlAttrValueSpec(psymGpoint, m_psymOperator, pexpGpoint); pavs->CopyLineAndFile(*this); pavs->SetFlattened(true); vpavsNew.push_back(pavs); } } if (pexpXoffset) { if (psymXoffset->IsBogusSlotAttr()) delete pexpXoffset; else { pavs = new GdlAttrValueSpec(psymXoffset, m_psymOperator, pexpXoffset); pavs->CopyLineAndFile(*this); pavs->SetFlattened(true); vpavsNew.push_back(pavs); } } if (pexpYoffset) { if (psymYoffset->IsBogusSlotAttr()) delete pexpYoffset; else { pavs = new GdlAttrValueSpec(psymYoffset, m_psymOperator, pexpYoffset); pavs->CopyLineAndFile(*this); pavs->SetFlattened(true); vpavsNew.push_back(pavs); } } } else { if (pexpGpoint) delete pexpGpoint; if (pexpXoffset) delete pexpXoffset; if (pexpYoffset) delete pexpYoffset; } delete this; // replaced } else vpavsNew.push_back(this); } /*---------------------------------------------------------------------------------------------- Check that the given glyph attribute is defined for every glyph that this class subsumes. Also check that all the necessary point fields or ligature component box fields are defined. Arguments pgdlAvsOrExp - for error message--attr value spec or expression psymtbl - global symbol table pgax - glyph attr matrix psymGlyphAttr - attribute to check for ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::CheckExistenceOfGlyphAttr(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->CheckExistenceOfGlyphAttr(pgdlAvsOrExp, psymtbl, pgax, psymGlyphAttr); } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::CheckExistenceOfGlyphAttr(GdlObject * pgdlAvsOrExp, GrcSymbolTable * /*psymtbl*/, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr) { int nGlyphAttrID = psymGlyphAttr->InternalID(); bool fGpoint = psymGlyphAttr->LastFieldIs("gpoint"); for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { if (m_vwGlyphIDs[iw] == kBadGlyph) continue; gid16 wGlyphID = m_vwGlyphIDs[iw]; if ((fGpoint && !pgax->GpointDefined(wGlyphID, nGlyphAttrID)) || (!fGpoint && !pgax->Defined(wGlyphID, nGlyphAttrID))) { g_errorList.AddError(4138, pgdlAvsOrExp, "Glyph attribute '", psymGlyphAttr->FullName(), "' is not defined for glyph ", GlyphIDString(wGlyphID)); } } } /*---------------------------------------------------------------------------------------------- Return the value of the attach.to setting, -1 if it was not found, or -2 if the value was not slot reference. ----------------------------------------------------------------------------------------------*/ int GdlSetAttrItem::AttachToSettingValue() { for (size_t iavs = 0; iavs < m_vpavs.size(); iavs++) { Symbol psym = m_vpavs[iavs]->m_psymName; if (psym->IsAttachTo()) { GdlSlotRefExpression * pexpSR = dynamic_cast(m_vpavs[iavs]->m_pexpValue); if (pexpSR) return pexpSR->SlotNumber(); else return -2; } } return -1; } /*---------------------------------------------------------------------------------------------- The recipient is the setting of the attach.at slot attribute. Check that the attachment point in the value is defined for all glyphs subsumed by pglfc, which is the slot being attached to. ----------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::CheckAttachAtPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool *pfGpoint) { Assert(!m_psymName->LastFieldIs("gpath")); // caller checked for this m_pexpValue->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); } /*---------------------------------------------------------------------------------------------- The recipient is the setting of the attach.with slot attribute. Check that the attachment point in the value is defined for all glyphs subsumed by pglfc, which is the slot being attached. ----------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::CheckAttachWithPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint) { Assert(!m_psymName->LastFieldIs("gpath")); // caller checked for this m_pexpValue->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); } /*---------------------------------------------------------------------------------------------- Check that the necessary fields of the given glyph attribute--an attachment point-- are defined for all the glyphs subsumed by this class. Arguments: pgdlAvsOrExp - for error message--attr value spec or expression psymtbl - global symbol table pgax - glyph attr matrix psymGlyphAttr - attribute to check for pfXY - return true if x and y are defined pfGpoint - return true if gpoint is defined ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::CheckCompleteAttachmentPoint(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr, bool * pfXY, bool * pfGpoint) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->CheckCompleteAttachmentPoint(pgdlAvsOrExp, psymtbl, pgax, psymGlyphAttr, pfXY, pfGpoint); } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::CheckCompleteAttachmentPoint(GdlObject * pgdlAvsOrExp, GrcSymbolTable * /*psymtbl*/, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr, bool * pfXY, bool * pfGpoint) { Symbol psymX = psymGlyphAttr->SubField("x"); Symbol psymY = psymGlyphAttr->SubField("y"); Symbol psymGpoint = psymGlyphAttr->SubField("gpoint"); //Symbol psymXoffset = psymGlyphAttr->SubField("xoffset"); //Symbol psymYoffset = psymGlyphAttr->SubField("yoffset"); for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { gid16 wGlyphID = m_vwGlyphIDs[iw]; if (wGlyphID == kBadGlyph) continue; if (psymGpoint && pgax->GpointDefined(wGlyphID, psymGpoint->InternalID())) { bool fShadowX = false; bool fShadowY = false; bool fAlsoX = (psymX && pgax->DefinedButMaybeShadow(wGlyphID, psymX->InternalID(), &fShadowX)); bool fAlsoY = (psymY && pgax->DefinedButMaybeShadow(wGlyphID, psymY->InternalID(), &fShadowY)); // Error already handled in ConvertBetweenXYAndGpoint // if (fAlsoX && !fShadowY && fAlsoY && !fShadowY) // { // g_errorList.AddWarning(4516, pgdlAvsOrExp, // "Both x/y coordinates and gpoint are defined for ", // psymGlyphAttr->FullName(), // " for glyph ", // GlyphIDString(wGlyphID), // "; only gpoint will be used"); // } *pfGpoint = true; if (fAlsoX && fShadowX && fAlsoY && fShadowY) { *pfXY = true; } else { if (fAlsoX) pgax->Clear(wGlyphID, psymX->InternalID()); if (fAlsoY) pgax->Clear(wGlyphID, psymY->InternalID()); } } else if (psymX && pgax->Defined(wGlyphID, psymX->InternalID()) && psymY && pgax->Defined(wGlyphID, psymY->InternalID())) { *pfXY = true; } else { g_errorList.AddWarning(4517, pgdlAvsOrExp, "Point '", psymGlyphAttr->FullName(), "' not completely defined for glyph ", GlyphIDString(wGlyphID)); } } } /*---------------------------------------------------------------------------------------------- The recipient is a slot that is having a component.???.ref attribute set. Check to make sure that the appropriate component box is fully defined for all glyphs. ----------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::CheckCompBox(GrcManager * pcman, Symbol psymCompRef) { Assert(psymCompRef->IsComponentRef()); GdlGlyphClassDefn * pglfc = OutputSymbol()->GlyphClassDefnData(); if (!pglfc) return; Symbol psymBaseComp = psymCompRef->BaseLigComponent(); pglfc->CheckCompBox(this, pcman->SymbolTable(), pcman->GlyphAttrMatrix(), psymBaseComp); } /*---------------------------------------------------------------------------------------------- Check to make sure that the given component's box has been fully defined for all the subsumed glyphs. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::CheckCompBox(GdlObject * pgdlSetAttrItem, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymCompRef) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->CheckCompBox(pgdlSetAttrItem, psymtbl, pgax, psymCompRef); } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::CheckCompBox(GdlObject * pgdlSetAttrItem, GrcSymbolTable * /*psymtbl*/, GrcGlyphAttrMatrix * pgax, Symbol psymCompRef) { Symbol psymTop = psymCompRef->SubField("top"); Symbol psymBottom = psymCompRef->SubField("bottom"); Symbol psymLeft = psymCompRef->SubField("left"); Symbol psymRight = psymCompRef->SubField("right"); for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { gid16 wGlyphID = m_vwGlyphIDs[iw]; if (wGlyphID == kBadGlyph) continue; if (!psymTop || !pgax->Defined(wGlyphID, psymTop->InternalID())) { g_errorList.AddError(4139, pgdlSetAttrItem, "Top of box for ", psymCompRef->FullName(), " not defined for glyph ", GlyphIDString(wGlyphID)); } if (!psymBottom || !pgax->Defined(wGlyphID, psymBottom->InternalID())) { g_errorList.AddError(4140, pgdlSetAttrItem, "Bottom of box for ", psymCompRef->FullName(), " not defined for glyph ", GlyphIDString(wGlyphID)); } if (!psymLeft || !pgax->Defined(wGlyphID, psymLeft->InternalID())) { g_errorList.AddError(4141, pgdlSetAttrItem, "Left of box for ", psymCompRef->FullName(), " not defined for glyph ", GlyphIDString(wGlyphID)); } if (!psymRight || !pgax->Defined(wGlyphID, psymRight->InternalID())) { g_errorList.AddError(4142, pgdlSetAttrItem, "Right of box for ", psymCompRef->FullName(), " not defined for glyph ", GlyphIDString(wGlyphID)); } } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Process all the feature testing-constraints: supply the feature contexts to the values (ie, in the test ligatures == some, the "some" must be converted to the value for 'some' setting of the ligatures feature. Record an error if the setting is undefined. ----------------------------------------------------------------------------------------------*/ void GdlRule::FixFeatureTestsInRules(GrcFont * pfont) { for (size_t ipexp = 0; ipexp < m_vpexpConstraints.size(); ipexp++) { m_vpexpConstraints[ipexp]->FixFeatureTestsInRules(pfont); m_vpexpConstraints[ipexp]->LookupExpCheck(true, NULL); } for (size_t irit = 0; irit < m_vprit.size(); irit++) { m_vprit[irit]->FixFeatureTestsInRules(pfont); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::FixFeatureTestsInRules(GrcFont * pfont) { if (m_pexpConstraint) { m_pexpConstraint->FixFeatureTestsInRules(pfont); m_pexpConstraint->LookupExpCheck(false, NULL); } } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::FixFeatureTestsInRules(GrcFont * pfont) { GdlRuleItem::FixFeatureTestsInRules(pfont); for (size_t iavs = 0; iavs < this->m_vpavs.size(); iavs++) m_vpavs[iavs]->FixFeatureTestsInRules(pfont); } /*--------------------------------------------------------------------------------------------*/ void GdlPass::FixFeatureTestsInPass(GrcFont * pfont) { for (size_t ipexp = 0; ipexp < m_vpexpConstraints.size(); ipexp++) { m_vpexpConstraints[ipexp]->FixFeatureTestsInRules(pfont); m_vpexpConstraints[ipexp]->LookupExpCheck(true, NULL); } } /*--------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::FixFeatureTestsInRules(GrcFont * pfont) { // Particularly handle feature tests in conditional statements. m_pexpValue->FixFeatureTestsInRules(pfont); } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Resolve all glyph attribute definitions to integers. ----------------------------------------------------------------------------------------------*/ bool GrcManager::FinalGlyphAttrResolution(GrcFont * pfont) { int cStdStyles = max(signed(m_vpsymStyles.size()), 1); //Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "0", "stretch")); Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "stretch")); int nAttrIdJStr = psymJStr->InternalID(); //Symbol psymJShr = m_psymtbl->FindSymbol(GrcStructName("justify", "0", "shrink")); Symbol psymJShr = m_psymtbl->FindSymbol(GrcStructName("justify", "shrink")); int nAttrIdJShr = psymJShr->InternalID(); //Symbol psymJStep = m_psymtbl->FindSymbol(GrcStructName("justify", "0", "step")); Symbol psymJStep = m_psymtbl->FindSymbol(GrcStructName("justify", "step")); int nAttrIdJStep = psymJStep->InternalID(); //Symbol psymJWeight = m_psymtbl->FindSymbol(GrcStructName("justify", "0", "weight")); Symbol psymJWeight = m_psymtbl->FindSymbol(GrcStructName("justify", "weight")); int nAttrIdJWeight = psymJWeight->InternalID(); Symbol psymSkipPasses = m_psymtbl->FindSymbol(GrcStructName("*skipPasses*")); int nAttrIdSkipPasses = psymSkipPasses->InternalID(); for (gid16 wGlyphID = 0; wGlyphID < m_cwGlyphIDs; wGlyphID++) { for (auto iAttrID = 0U; iAttrID < m_vpsymGlyphAttrs.size(); ++iAttrID) { for (auto iStyle = 0; iStyle < cStdStyles; iStyle++) { SymbolSet setpsym; GdlExpression * pexp; GdlExpression * pexpNew; int nPR; int munitPR; bool fOverride, fShadow; GrpLineAndFile lnf; m_pgax->Get(wGlyphID, iAttrID, &pexp, &nPR, &munitPR, &fOverride, &fShadow, &lnf); if (pexp) { bool fCanSub; pexpNew = pexp->SimplifyAndUnscale(m_pgax, wGlyphID, setpsym, pfont, true, &fCanSub); int nMinValue, nMaxValue; MinAndMaxGlyphAttrValues(iAttrID, NumJustLevels(), nAttrIdJStr, nAttrIdJShr, nAttrIdJStep, nAttrIdJWeight, nAttrIdSkipPasses, &nMinValue, &nMaxValue); if (pexpNew && pexpNew != pexp) { m_vpexpModified.push_back(pexpNew); // so we can delete it later m_pgax->Set(wGlyphID, iAttrID, pexpNew, nPR, munitPR, fOverride, false, lnf); pexp = pexpNew; } int n; auto psymAttr = m_vpsymGlyphAttrs[iAttrID]; if (!pexp->ResolveToInteger(&n, false)) { g_errorList.AddError(4143, pexp, "Could not resolve definition of glyph attribute ", psymAttr->FullName(), " for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); } else if (n <= nMinValue) { g_errorList.AddError(4144, pexp, "Value of glyph attribute ", psymAttr->FullName(), " for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID), " = ", std::to_string(n), "; minimum is ", std::to_string(nMinValue + 1)); } else if (n >= nMaxValue) { g_errorList.AddError(4145, pexp, "Value of glyph attribute ", psymAttr->FullName(), " for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID), " = ", std::to_string(n), "; maximum is ", std::to_string(nMaxValue - 1)); } else if (n == 0 && psymAttr->LastFieldIs("gpoint")) { // Replace gpoint = 0 with a special value, since we use zero to // indicate "no legitimate value." pexp->SetSpecialZero(); } } } } // Just in case, since incrementing 0xFFFF will produce zero. if (wGlyphID == 0xFFFF) break; } return true; } /*---------------------------------------------------------------------------------------------- Return the minimum and maximum values for the given attribute (actually this is the minimum - 1 and the maximum + 1). ----------------------------------------------------------------------------------------------*/ void GrcManager::MinAndMaxGlyphAttrValues(int nAttrID, int cJLevels, int nAttrIdJStr, int nAttrIdJShr, int nAttrIdJStep, int nAttrIdJWeight, int nAttrIdSkipPasses, int * pnMin, int * pnMax) { *pnMin = kMinGlyphAttrValue; *pnMax = kMaxGlyphAttrValue; if (nAttrIdJStr <= nAttrID && nAttrID < nAttrIdJStr + cJLevels) { // justify.stretch *pnMin = -1; *pnMax = 0x40000000; } else if (nAttrIdJShr <= nAttrID && nAttrID < nAttrIdJShr + cJLevels) { // justify.shrink *pnMin = -1; } else if (nAttrIdJStep <= nAttrID && nAttrID < nAttrIdJStep + cJLevels) { // justify.step *pnMin = -1; } else if (nAttrIdJWeight <= nAttrID && nAttrID < nAttrIdJWeight + cJLevels) { // justify.weight *pnMin = 0; *pnMax = 255; } else if (nAttrIdSkipPasses == nAttrID) { *pnMin = -1; *pnMax = 0x10000; // 1 + actual max=0xFFFF (since test is >= ) } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- For each pseudo glyph in the system, store the associated actual glyph ID as a glyph attribute, specifically as the value of the glyph attribute "*actualForPseudo*. ----------------------------------------------------------------------------------------------*/ bool GrcManager::StorePseudoToActualAsGlyphAttr() { Symbol psym = m_psymtbl->FindSymbol("*actualForPseudo*"); Assert(psym); int nAttrID = psym->InternalID(); m_prndr->StorePseudoToActualAsGlyphAttr(m_pgax, nAttrID, m_vpexpModified); return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::StorePseudoToActualAsGlyphAttr(GrcGlyphAttrMatrix * pgax, int nAttrID, std::vector & vpexpExtra) { for (size_t iglfc = 0; iglfc < m_vpglfc.size(); iglfc++) m_vpglfc[iglfc]->StorePseudoToActualAsGlyphAttr(pgax, nAttrID, vpexpExtra); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::StorePseudoToActualAsGlyphAttr(GrcGlyphAttrMatrix * pgax, int nAttrID, std::vector & vpexpExtra) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) m_vpglfdMembers[iglfd]->StorePseudoToActualAsGlyphAttr(pgax, nAttrID,vpexpExtra); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::StorePseudoToActualAsGlyphAttr(GrcGlyphAttrMatrix * pgax, int nAttrID, std::vector & vpexpExtra) { if (m_glft == kglftPseudo && m_pglfOutput && m_pglfOutput->m_vwGlyphIDs.size() > 0) { utf16 wOutput = m_pglfOutput->m_vwGlyphIDs[0]; GdlExpression * pexp = new GdlNumericExpression(wOutput); vpexpExtra.push_back(pexp); pgax->Set(m_wPseudo, nAttrID, pexp, 0, 0, true, false, GrpLineAndFile(0, 0, "")); } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the first glyph in the class. Also return a flag indicating if there was more than one. ----------------------------------------------------------------------------------------------*/ unsigned int GdlGlyphClassDefn::FirstGlyphInClass(bool * pfMoreThanOne) { if (m_vpglfdMembers.size() == 0) return 0; int n = 0; for (size_t iglfd = 0; n == 0 && iglfd < m_vpglfdMembers.size(); iglfd++) n = m_vpglfdMembers[iglfd]->FirstGlyphInClass(pfMoreThanOne); if (m_vpglfdMembers.size() > 1) *pfMoreThanOne = true; return n; } /*--------------------------------------------------------------------------------------------*/ unsigned int GdlGlyphDefn::FirstGlyphInClass(bool * pfMoreThanOne) { // This could be more accurate (for instance, it won't exactly handle a class with all // bad glyphs except for one good one), but the more-than-one flag is just there for the // sake of giving a warning, so this is good enough. if (m_vwGlyphIDs.size() > 1) *pfMoreThanOne = true; for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { if (m_vwGlyphIDs[iw] == kBadGlyph) continue; return m_vwGlyphIDs[iw]; } return 0; // pathological? } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Give a warning about any empty classes. ----------------------------------------------------------------------------------------------*/ bool GrcManager::CheckForEmptyClasses() { for (SymbolTableMap::iterator it = m_psymtbl->EntriesBegin(); it != m_psymtbl->EntriesEnd(); ++it) { Symbol psym = it->second; // GetValue(); //Symbol psym = it.GetValue(); //if (psym->m_psymtblSubTable) // psym->m_psymtblSubTable->CheckForEmptyClasses(); if (psym->FitsSymbolType(ksymtClass) && psym->HasData()) { GdlGlyphClassDefn * pglfc = psym->GlyphClassDefnData(); int cglf = pglfc->GlyphIDCount(); if (cglf == 0) g_errorList.AddWarning(4518, pglfc, "Empty class definition: ", psym->FullName()); } } return true; } grcompiler-5.2.1/compiler/ErrorCheckFeatures.cpp000066400000000000000000000145621411153030700217310ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: PreCompiler.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods to implement the pre-compiler, which does error checking and adjustments. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Features ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Do the pre-compilation tasks for the feature definitions. Return false if compilation cannot continue due to an unrecoverable error. ----------------------------------------------------------------------------------------------*/ bool GrcManager::PreCompileFeatures(GrcFont * pfont) { return m_prndr->PreCompileFeatures(this, pfont, &m_fxdFeatVersion); } /*--------------------------------------------------------------------------------------------*/ bool GdlRenderer::PreCompileFeatures(GrcManager * pcman, GrcFont * /*pfont*/, uint32_t * pfxdFeatVersion) { *pfxdFeatVersion = 0x00010000; int nInternalID = 0; std::set setID; for (size_t ipfeat = 0; ipfeat < m_vpfeat.size(); ipfeat++) { GdlFeatureDefn * pfeat = m_vpfeat[ipfeat]; std::vector vnIDs; pfeat->AltIDs(vnIDs); for (size_t iID = 0; iID < vnIDs.size(); iID++) { unsigned int nID = vnIDs[iID]; if (setID.find(nID) != setID.end()) // is a member { auto stnID = nID > 0x00FFFFFF ? '\'' +std::string{char(nID >> 24), char(nID >> 16), char(nID >> 8), char(nID)} + '\'' : std::to_string(nID); g_errorList.AddError(3152, pfeat, "Duplicate feature ID: ", stnID); } else setID.insert(nID); if (nID > 0x0000FFFF) *pfxdFeatVersion = 0x00020000; } if (pfeat->ErrorCheck()) { pfeat->SortFeatIDs(); pfeat->SortFeatSettings(); pfeat->SetStdStyleFlag(); pfeat->FillInBoolean(pcman->SymbolTable()); pfeat->ErrorCheckContd(); pfeat->CalculateDefault(); pfeat->AssignInternalID(nInternalID); pfeat->RecordDebugInfo(); nInternalID += int(vnIDs.size()); // each alternate ID has its own internal ID } } if (m_vpfeat.size() > kMaxFeatures) { g_errorList.AddError(3153, NULL, "Number of features (", std::to_string(m_vpfeat.size()), ") exceeds maximum of ", std::to_string(kMaxFeatures)); } return true; } /*********************************************************************************************** Languages ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Do the pre-compilation tasks for the language-to-feature mappings. Return false if compilation cannot continue due to an unrecoverable error. ----------------------------------------------------------------------------------------------*/ bool GrcManager::PreCompileLanguages(GrcFont * /*pfont*/) { for (size_t ilcls = 0; ilcls < m_vplcls.size(); ilcls++) m_vplcls[ilcls]->PreCompile(this); m_prndr->CheckLanguageFeatureSize(); return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlLangClass::PreCompile(GrcManager * pcman) { // Each item in the vectors corresponds to a feature assignment. for (size_t ifasgn = 0; ifasgn < m_vstaFeat.size(); ifasgn++) { Symbol psymFeat = pcman->SymbolTable()->FindSymbol(m_vstaFeat[ifasgn]); if (!psymFeat || psymFeat->SymType() == ksymtInvalid) { g_errorList.AddError(3154, NULL, "Undefined feature: ", m_vstaFeat[ifasgn], m_vlnf[ifasgn]); continue; } GdlFeatureDefn * pfeat = psymFeat->FeatureDefnData(); Assert(pfeat); std::string staValue = m_vstaVal[ifasgn]; GdlExpression * pexpVal = m_vpexpVal[ifasgn]; int nVal; GdlFeatureSetting * pfset; if (pexpVal) { if (!pexpVal->ResolveToInteger(&nVal, false)) { g_errorList.AddError(3155, pexpVal, "Feature value cannot be evaluated", m_vlnf[ifasgn]); continue; } else { pfset = pfeat->FindSettingWithValue(nVal); if (!pfset) { g_errorList.AddWarning(3523, NULL, "Feature ", pfeat->Name(), " has no defined setting corresponding to value ", std::to_string(nVal), m_vlnf[ifasgn]); } } } else { // Feature setting identifier pfset = pfeat->FindSetting(staValue); if (!pfset) { g_errorList.AddError(3156, NULL, "Undefined feature setting: ", staValue, m_vlnf[ifasgn]); continue; } nVal = pfset->Value(); } // Store the feature values in the language items. for (size_t ilang = 0; ilang < m_vplang.size(); ilang++) m_vplang[ilang]->AddFeatureValue(pfeat, pfset, nVal, m_vlnf[ifasgn]); if (m_vplang.size() == 0 && ifasgn == 0) { g_errorList.AddWarning(3524, NULL, "No languages specified for language group '", m_staLabel, "'; settings will have no effect", m_vlnf[0]); } } return true; } /*---------------------------------------------------------------------------------------------- Determine if there are enough languages and features to overflow the Sill table. Actually what would happen is that the offsets would overflow the 16 bits allotted for them. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::CheckLanguageFeatureSize() { // 12 = table info, + 8 bytes per language size_t cbSillSize = 12 + (m_vplang.size() * 8); cbSillSize += 8; // bogus entry for (auto const plang: m_vplang) cbSillSize += plang->NumberOfSettings() * 4; // 4 bytes per feature setting if (cbSillSize >= 0x0000FFFF) { g_errorList.AddError(3157, NULL, "Too many language-feature assignments to fit in Sill table"); } } grcompiler-5.2.1/compiler/ErrorCheckRules.cpp000066400000000000000000002714211411153030700212440ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: PreCompiler.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods to implement the pre-compiler, which does error checking and adjustments. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Tables, Passes, and Rules ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Do the pre-compilation tasks for the tables, passes, and rules. Return false if compilation cannot continue due to an unrecoverable error. ----------------------------------------------------------------------------------------------*/ bool GrcManager::PreCompileRules(GrcFont * pfont) { int cpassValid; // number of valid passes if (!m_prndr->CheckTablesAndPasses(this, &cpassValid)) return false; // Before prepending ANYs, calculate the space contextual flags. m_prndr->CalculateSpaceContextuals(pfont); // Fix up the rules that have items in the context before the first modified item. Symbol psymAnyClass = m_psymtbl->FindSymbol("ANY"); if (!m_prndr->FixRulePreContexts(psymAnyClass)) return false; // In preparation for the next step, create the fsm class vectors for each pass. m_prgvpglfcFsmClasses = new std::vector[cpassValid]; if (!AssignClassInternalIDs()) return false; if (!m_prndr->CheckRulesForErrors(m_pgax, pfont)) return false; if (!m_prndr->CheckLBsInRules()) return false; m_prndr->RewriteSlotAttrAssignments(this, pfont); this->DetermineTableVersion(); return true; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Determine the table version needed depending on various factors. ----------------------------------------------------------------------------------------------*/ void GrcManager::DetermineTableVersion() { int fxdVersionNeeded; bool fFixPassConstraints = true; // remains true if the only thing that is incompatible are // the pass constraints int fxdRequested = SilfTableVersion(); SetCompilerVersionFor(fxdRequested); int fxdCompilerVersionNeeded = m_fxdCompilerVersion; if (!CompatibleWithVersion(fxdRequested, &fxdVersionNeeded, &fxdCompilerVersionNeeded, &fFixPassConstraints)) { if (fFixPassConstraints && fxdRequested <= 0x00030000 && fxdVersionNeeded > 0x00030000) { if (UserSpecifiedVersion()) { // Converting pass constraints to rule constraints should take care of the // incompatibility. m_prndr->MovePassConstraintsToRules(fxdRequested); } else { g_errorList.AddWarning(3501, NULL, "Version ", VersionString(fxdRequested), " of the Silf table is inadequate to handle pass constraints; version ", VersionString(fxdVersionNeeded), " will be generated."); FixSilfTableVersion(fxdVersionNeeded); } } else { if (UserSpecifiedVersion()) { g_errorList.AddWarning(3501, NULL, "Version ", VersionString(fxdRequested), " of the Silf table is inadequate for your specification; version ", VersionString(fxdVersionNeeded), " will be generated instead."); } FixSilfTableVersion(fxdVersionNeeded); } } else if (fxdVersionNeeded > fxdRequested) { // Eg, 2.0 -> 2.1 FixSilfTableVersion(fxdVersionNeeded); } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Assign each pass a global ID number. Record a warning if the pass numbers are not sequential for a given table, or if there are rules in an unspecified pass. Return the number of valid passes (those with rules in them). ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::CheckTablesAndPasses(GrcManager * pcman, int * pcpassValid) { int nPassNum = 0; GdlRuleTable * prultbl; m_ipassBidi = -1; if ((prultbl = FindRuleTable("linebreak")) != NULL) prultbl->CheckTablesAndPasses(pcman, &nPassNum, &m_ipassBidi); if ((prultbl = FindRuleTable("substitution")) != NULL) prultbl->CheckTablesAndPasses(pcman, &nPassNum, &m_ipassBidi); //if (Bidi()) // m_ipassBidi = nPassNum; //else // m_ipassBidi = -1; if ((prultbl = FindRuleTable("justification")) != NULL) prultbl->CheckTablesAndPasses(pcman, &nPassNum, &m_ipassBidi); if ((prultbl = FindRuleTable("positioning")) != NULL) prultbl->CheckTablesAndPasses(pcman, &nPassNum, &m_ipassBidi); // At this point nPassNum = the number of valid passes. *pcpassValid = nPassNum; if (this->Bidi() && m_ipassBidi == -1) m_ipassBidi = nPassNum; if (nPassNum >= kMaxPasses) { g_errorList.AddError(3101, NULL, "Number of passes (", std::to_string(nPassNum), ") exceeds maximum of ", std::to_string(kMaxPasses - 1)); } else if (nPassNum == 0) { g_errorList.AddWarning(3502, NULL, "No valid passes"); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::CheckTablesAndPasses(GrcManager * pcman, int *pnPassNum, int *pipassBidi) { if (m_vppass.size() > 1 && m_vppass[0]->HasRules()) { g_errorList.AddError(3102, this, m_psymName->FullName(), " table is multi-pass, so all rules must be explicitly placed in a pass"); // but go ahead and treat it as the zeroth pass for now } for (auto ipass = 0U; ipass < m_vppass.size(); ++ipass) { auto const staPass = std::to_string(ipass); if (m_vppass[ipass]->ValidPass()) { m_vppass[ipass]->AssignGlobalID(*pnPassNum); (*pnPassNum)++; int fsdcPassDir = m_vppass[ipass]->Direction(); int fsdcScriptDir = pcman->Renderer()->ScriptDirections(); if (fsdcPassDir != kfsdcNone && fsdcPassDir != kfsdcHorizLtr && fsdcPassDir != kfsdcHorizRtl) { g_errorList.AddError(3166, this, "Invalid direction for pass ", staPass); } else if (fsdcPassDir != kfsdcNone && fsdcScriptDir != kfsdcHorizLtr && fsdcScriptDir != kfsdcHorizRtl) { g_errorList.AddError(3167, this, "Direction directive invalid (on pass ", staPass, ") due to font ScriptDirection setting of ", std::to_string(fsdcScriptDir)); } else if (fsdcPassDir != kfsdcNone && fsdcScriptDir == fsdcPassDir) { g_errorList.AddWarning(3539, this, "Direction of pass ", staPass, " matches font's ScriptDirection and will have no effect "); } else { Assert(fsdcScriptDir >= kfsdcNone); Assert(fsdcScriptDir <= kfsdcHorizRtl); if (fsdcPassDir > kfsdcNone) { Assert(fsdcScriptDir != fsdcPassDir); m_vppass[ipass]->SetFlipDirection(true); pcman->Renderer()->SetHasFlippedPass(true); } } } else if (ipass == 0) { // okay--zeroth pass *should* be empty if there are other passes m_vppass[ipass]->AssignGlobalID(-1); } else { g_errorList.AddWarning(3503, this, "Pass ", staPass, " of ", m_psymName->FullName(), " table contains no rules"); m_vppass[ipass]->AssignGlobalID(-1); } } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Add ANY classes to the beginning of rules to ensure that all rules in a pass have the same number of items before the first modified item. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::FixRulePreContexts(Symbol psymAnyClass) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->FixRulePreContexts(psymAnyClass); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::FixRulePreContexts(Symbol psymAnyClass) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->FixRulePreContexts(psymAnyClass); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::FixRulePreContexts(Symbol psymAnyClass) { m_critMinPreContext = kMaxSlotsPerRule; m_critMaxPreContext = 0; // First, calculate the maximum and minimum pre-contexts lengths for all the rules // in this pass. Also record the original rule length to use as a sort key. for (auto prule: m_vprule) { auto crit = prule->CountRulePreContexts(); m_critMinPreContext = min(m_critMinPreContext, crit); m_critMaxPreContext = max(m_critMaxPreContext, crit); } // Now add "ANY" class slots to the beginning of each rule to make every rule have // the same number of pre-context items. for (auto prule: m_vprule) prule->FixRulePreContexts(psymAnyClass, int(m_critMaxPreContext)); } /*---------------------------------------------------------------------------------------------- Return the number of items at the beginning of the context that are not modified. Also record the original rule length to use as a sort key (before it is modified by adding ANY classes to the beginning of the rule). ----------------------------------------------------------------------------------------------*/ size_t GdlRule::CountRulePreContexts() { m_critOriginal = m_vprit.size(); m_critPreModContext = 0; for (auto const &rit: m_vprit) { if (dynamic_cast(rit)) return m_critPreModContext; m_critPreModContext++; } // Should have hit at least on modified item. Assert(false); return m_critPreModContext; } /*---------------------------------------------------------------------------------------------- Add instances of ANY slots to the beginning of the rule until the rule has the given number of items before the first modified item. ----------------------------------------------------------------------------------------------*/ void GdlRule::FixRulePreContexts(Symbol psymAnyClass, int critNeeded) { m_critPrependedAnys = critNeeded - m_critPreModContext; if (m_critPrependedAnys == 0) return; for (auto iritToAdd = 0U; iritToAdd < m_critPrependedAnys; ++iritToAdd) { GdlRuleItem * prit = new GdlRuleItem(psymAnyClass); prit->SetLineAndFile(LineAndFile()); prit->m_iritContextPos = iritToAdd; m_vprit.insert(m_vprit.begin() + iritToAdd, prit); } // Increment the item positions following the inserted items, and adjust any slot // references. for (auto irit = m_critPrependedAnys; irit < m_vprit.size(); ++irit) { m_vprit[irit]->IncContextPosition(int(m_critPrependedAnys)); m_vprit[irit]->AdjustSlotRefsForPreAnys(int(m_critPrependedAnys)); } // Increment the scan advance position, if any. if (m_nScanAdvance > -1) m_nScanAdvance += int(m_critPrependedAnys); } /*---------------------------------------------------------------------------------------------- Adjust slot references to take into account the fact that ANYS have been prepended to the beginning of the rule. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::AdjustSlotRefsForPreAnys(int critPrependedAnys) { if (m_pexpConstraint) m_pexpConstraint->AdjustSlotRefsForPreAnys(critPrependedAnys); } /*--------------------------------------------------------------------------------------------*/ void GdlLineBreakItem::AdjustSlotRefsForPreAnys(int critPrependedAnys) { GdlRuleItem::AdjustSlotRefsForPreAnys(critPrependedAnys); } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::AdjustSlotRefsForPreAnys(int critPrependedAnys) { GdlRuleItem::AdjustSlotRefsForPreAnys(critPrependedAnys); for (size_t i = 0; i < m_vpavs.size(); i++) m_vpavs[i]->AdjustSlotRefsForPreAnys(critPrependedAnys, this); } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::AdjustSlotRefsForPreAnys(int critPrependedAnys) { GdlSetAttrItem::AdjustSlotRefsForPreAnys(critPrependedAnys); if (m_pexpSelector) m_pexpSelector->AdjustSlotRefsForPreAnys(critPrependedAnys); for (size_t ipexp = 0; ipexp < m_vpexpAssocs.size(); ipexp++) m_vpexpAssocs[ipexp]->AdjustSlotRefsForPreAnys(critPrependedAnys); } /*--------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::AdjustSlotRefsForPreAnys(int critPrependedAnys, GdlRuleItem * /*prit*/) { Assert(m_psymName->FitsSymbolType(ksymtSlotAttr)); m_pexpValue->AdjustSlotRefsForPreAnys(critPrependedAnys); } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Mark classes that are used for substitution and FSM matching, and assign them internal IDs. ----------------------------------------------------------------------------------------------*/ bool GrcManager::AssignClassInternalIDs() { ReplacementClassSet setpglfc; m_prndr->MarkReplacementClasses(this, setpglfc); // Now that we've given warnings about invalid glyphs, delete them from the classes. m_prndr->DeleteAllBadGlyphs(); // Now actually assign the IDs for all substitution classes in the resulting set. // The first batch of sub-IDs are assigned to the output classes, the second // batch to input classes. Note that some classes may have both an input // and an output ID. int nSubID = 0; ReplacementClassSet::iterator itset; for (itset = setpglfc.begin(); itset != setpglfc.end(); ++itset) { if ((*itset)->ReplcmtOutputClass()) { (*itset)->SetReplcmtOutputID(nSubID); m_vpglfcReplcmtClasses.push_back(*itset); nSubID++; } } // Next do the input classes that have only one glyph; they can also be in linear format. for (itset = setpglfc.begin(); itset != setpglfc.end(); ++itset) { GdlGlyphClassDefn * pglfc = *itset; if (pglfc->ReplcmtInputClass() && pglfc->GlyphIDCount() <= 1) { if (pglfc->ReplcmtOutputClass()) // Already an output class; don't need to include it again. pglfc->SetReplcmtInputID(pglfc->ReplcmtOutputID()); else { pglfc->SetReplcmtInputID(nSubID); m_vpglfcReplcmtClasses.push_back(*itset); nSubID++; } } } m_cpglfcLinear = nSubID; // Finally do the input classes that have multiple glyphs. These are the classes that // cannot be in linear format; they must be in indexed format (glyph ID / index pair, // ordered by glyph ID). for (itset = setpglfc.begin(); itset != setpglfc.end(); ++itset) { GdlGlyphClassDefn * pglfc = *itset; if (pglfc->ReplcmtInputClass() && pglfc->GlyphIDCount() > 1) { pglfc->SetReplcmtInputID(nSubID); m_vpglfcReplcmtClasses.push_back(*itset); nSubID++; } } Assert(static_cast(nSubID) == m_vpglfcReplcmtClasses.size()); if (nSubID >= kMaxReplcmtClasses) { g_errorList.AddError(3103, NULL, "Number of classes used in glyph substitution (", std::to_string(nSubID), ") exceeds maximum of ", std::to_string(kMaxReplcmtClasses - 1)); } return true; } /*---------------------------------------------------------------------------------------------- Mark classes that are used for substitution and FSM matching. Also assign internal IDs for use in the FSMs. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::MarkReplacementClasses(GrcManager * pcman, ReplacementClassSet & setpglfc) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->MarkReplacementClasses(pcman, setpglfc); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::MarkReplacementClasses(GrcManager * pcman, ReplacementClassSet & setpglfc) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->MarkReplacementClasses(pcman, setpglfc); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::MarkReplacementClasses(GrcManager * pcman, ReplacementClassSet & setpglfc) { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->MarkReplacementClasses(pcman, m_nGlobalID, setpglfc); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::MarkReplacementClasses(GrcManager * pcman, int nPassID, ReplacementClassSet & setpglfcReplace) { // Make lists of flags indicating whether each slot serves as an input replacement slot // and/or an output replacement slot. std::vector vfInput; std::vector vfOutput; vfInput.resize(m_vprit.size(), false); vfOutput.resize(m_vprit.size(), false); for (auto irit = 0U; irit < m_vprit.size(); ++irit) { m_vprit[irit]->AssignFsmInternalID(pcman, nPassID); m_vprit[irit]->FindSubstitutionSlots(irit, vfInput, vfOutput); } for (auto irit = 0U; irit < m_vprit.size(); ++irit) { if (vfInput[irit]) m_vprit[irit]->MarkClassAsReplacementClass(pcman, setpglfcReplace, true); if (vfOutput[irit]) m_vprit[irit]->MarkClassAsReplacementClass(pcman, setpglfcReplace, false); } } /*---------------------------------------------------------------------------------------------- Assign an internal ID to the input class, if any, to be used by the pass's FSM. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::AssignFsmInternalID(GrcManager * pcman, int nPassID) { if (!m_psymInput) // Already recorded an error--undefined class. return; if (m_psymInput->Data()) { GdlGlyphClassDefn * pglfcIn = m_psymInput->GlyphClassDefnData(); Assert(pglfcIn); pcman->AddToFsmClasses(pglfcIn, nPassID); } // else insertion } /*---------------------------------------------------------------------------------------------- Mark the class as being needed for the FSM for the given pass. ----------------------------------------------------------------------------------------------*/ void GrcManager::AddToFsmClasses(GdlGlyphClassDefn * pglfc, int nPassID) { std::vector * pvpglfcThisPass = m_prgvpglfcFsmClasses + nPassID; if (pglfc->IsFsmClass(nPassID)) { // Already assigned an ID for this pass. Assert((*pvpglfcThisPass)[pglfc->FsmID(nPassID)] == pglfc); return; } pglfc->MarkFsmClass(nPassID, int(pvpglfcThisPass->size())); pvpglfcThisPass->push_back(pglfc); } /*---------------------------------------------------------------------------------------------- Record the FSM ID for the given pass in the class. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::MarkFsmClass(int nPassID, int nClassID) { if (m_vfFsm.size() >= unsigned(nPassID + 1)) { // Once it's set it shouldn't be changed. Assert(!m_vfFsm[nPassID] || m_vnFsmID[nPassID] == nClassID); } else { m_vfFsm.resize(nPassID + 1, false); m_vnFsmID.resize(nPassID + 1, -1); } m_vfFsm[nPassID] = true; m_vnFsmID[nPassID] = nClassID; } /*---------------------------------------------------------------------------------------------- If this item is performing an substitution, set the flags for input and output slots. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::FindSubstitutionSlots(int /*irit*/, std::vector & /*vfInput*/, std::vector & /*vfOutput*/) { // Do nothing. } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::FindSubstitutionSlots(int irit, std::vector & vfInput, std::vector & vfOutput) { if (!m_psymOutput) { return; // no output, therefore no substitution (if another item does a substitution // based on the input, that item will set the flag) } if (m_psymOutput->FitsSymbolType(ksymtClass)) { if (m_pexpSelector) { // The selector indicates the input slot. int nValue = m_pexpSelector->SlotNumber(); if (nValue >= 1 && nValue <= signed(vfInput.size())) vfInput[nValue - 1] = true; // selectors are 1-based else // error condition--already handled return; } else if (m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)) { // no input class, but the output class still needs an output ID. } else vfInput[irit] = true; vfOutput[irit] = true; } } /*---------------------------------------------------------------------------------------------- Mark this item's class as a replacement class, and add it to the list. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::MarkClassAsReplacementClass(GrcManager * pcman, ReplacementClassSet & setpglfcReplace, bool fInput) { GdlDefn * pdefn = NULL; if (fInput) { if (m_psymInput) pdefn = m_psymInput->Data(); else { g_errorList.AddError(3104, this, "Item ", PosString(), " used as selector has no class specified"); return; } } else // output { if (OutputSymbol()) { // This item must be a substitution item itself. Assert(dynamic_cast(this)); Assert(OutputSymbol()->FitsSymbolType(ksymtClass)); pdefn = OutputSymbol()->Data(); } } if (!pdefn) return; // error--undefined class GdlGlyphClassDefn * pglfc = dynamic_cast(pdefn); Assert(pglfc); pglfc->FlattenMyGlyphList(); if (pcman->IgnoreBadGlyphs()) pglfc->WarnAboutBadGlyphs(true); (fInput) ? pglfc->MarkReplcmtInputClass() : pglfc->MarkReplcmtOutputClass(); if (fInput) { int cw = pglfc->GlyphIDCount(); if (cw > kMaxGlyphsPerInputClass) { g_errorList.AddError(3105, this, "Number of glyphs (", std::to_string(cw), ") in class ", pglfc->Name(), " exceeds maximum of ", std::to_string(kMaxGlyphsPerInputClass), " allowed for input side of substitution"); } gid16 wGlyphIDDup; if (pglfc->HasDuplicateGlyphs(&wGlyphIDDup)) { g_errorList.AddError(3172, this, "Duplicates (", GdlGlyphDefn::GlyphIDString(wGlyphIDDup), ") not permitted in input class: '", pglfc->Name(), "'"); } } setpglfcReplace.insert(pglfc); } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Do general error checking for all rules: * inappropriate inclusion of LHS (substitution items) * LB symbol in line-break pass * non-integer selector or association * inserted item used as selector/association * in-rule constraint on inserted item * LB used as selector/association * attribute assignment inappropriate for table type * inappropriate presence or absence of unit specifier * inappropriate operator type (eg, assignment rather than logical) * setting the attribute or association of a deleted item * mismatch between associations component.X.ref settings * reference to slot beyond length of rule * setting something other than a slot attribute * too many slots in the rule * invalid glyphs in replacement class * mismatch between size of class in left- and right-hand-sides * invalid user-definable slot attribute ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->CheckRulesForErrors(pgax, pfont, this); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr) { int grfrco = kfrcoNone; if (m_psymName->LastFieldIs("linebreak")) grfrco = (kfrcoSetBreak | kfrcoSetDir | kfrcoPreBidi); else if (m_psymName->LastFieldIs("substitution")) grfrco = (kfrcoLb | kfrcoSubst | kfrcoSetCompRef | kfrcoSetDir | kfrcoPreBidi); // kfrcoSetInsert | else if (m_psymName->LastFieldIs("justification")) grfrco = (kfrcoNeedJust | kfrcoLb | kfrcoSubst | kfrcoSetCompRef | kfrcoSetInsert); else if (m_psymName->LastFieldIs("positioning")) grfrco = (kfrcoLb | kfrcoSetInsert | kfrcoSetPos); else { Assert(false); } for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->CheckRulesForErrors(pgax, pfont, prndr, m_psymName, grfrco); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, Symbol psymTable, int grfrco) { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->CheckRulesForErrors(pgax, pfont, prndr, psymTable, grfrco); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, Symbol psymTable, int grfrco) { if (m_vprit.size() > kMaxSlotsPerRule) { g_errorList.AddError(3106, this, "Number of slots (", std::to_string(m_vprit.size()), ") exceeds maximum of ", std::to_string(kMaxSlotsPerRule)); } // Create lists of flags indicating which items are line-break items, insertions, // or deletions. Also create a vector giving the size of classes in the left-hand-side. std::vector vfLb; std::vector vfInsertion; std::vector vfDeletion; std::vector vfAssocs; size_t crit = m_vprit.size(); vfLb.resize(crit, false); vfInsertion.resize(crit, false); vfDeletion.resize(crit, false); vfAssocs.resize(crit, false); std::vector vcwClassSizes; vcwClassSizes.resize(crit, false); bool fAnyAssocs = false; for (auto irit = 0U; irit < crit; ++irit) { GdlRuleItem * prit = m_vprit[irit]; GdlLineBreakItem * pritlb = dynamic_cast(prit); if (pritlb) vfLb[irit] = true; if (!prit->m_psymInput) { // Invalid class vcwClassSizes[irit] = 0; } else { if (prit->OutputSymbol()->FitsSymbolType(ksymtSpecialUnderscore)) vfDeletion[irit] = true; if (prit->m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)) vfInsertion[irit] = true; if (prit->m_psymInput->FitsSymbolType(ksymtClass)) { GdlGlyphClassDefn * pglfc = prit->m_psymInput->GlyphClassDefnData(); if (pglfc) vcwClassSizes[irit] = pglfc->GlyphIDCount(); else vcwClassSizes[irit] = 0; if (vcwClassSizes[irit] == 0) g_errorList.AddError(3162, this, "Empty class ", prit->m_psymInput->FullName(), " for item ", prit->PosString()); } else vcwClassSizes[irit] = 0; fAnyAssocs = (fAnyAssocs || prit->AnyAssociations() // an @ has an implied association || (prit->OutputSymbol() && prit->OutputSymbol()->FitsSymbolType(ksymtSpecialAt))); prit->SetAssocsVector(vfAssocs); if (prit->OutputSymbol() && prit->OutputSymbol()->FitsSymbolType(ksymtSpecialAt)) { GdlSubstitutionItem * pritSub = dynamic_cast(prit); //int iritSub = pritSub->m_pritSelInput->m_iritContextPos; int iritSub = pritSub->m_pexpSelector->SlotNumber() - 1; // convert to zero-based vfAssocs[iritSub] = true; } } } bool fOkay = true; if (grfrco & kfrcoNeedJust) { // Check that there is a constraint on the rule that tests for justification status. CheckForJustificationConstraint(); } // Do the checks for each item. for (auto irit = 0U; irit < crit; ++irit) { // if (m_nScanAdvance > -1 && irit >= m_nScanAdvance && // (vfInsertion[irit] || vfDeletion[irit])) // { // g_errorList.AddError(3107, m_vprit[irit], // "Cannot place the scan advance position (^) before insertions or deletions"); // fOkay = false; // } if (!m_vprit[irit]->CheckRulesForErrors(pgax, pfont, prndr, this, psymTable, grfrco, irit, fAnyAssocs, vfLb, vfInsertion, vfDeletion, vcwClassSizes, vfAssocs)) { fOkay = false; } } // If all items were okay, calculate the input and ouput indices and make the // adjustments. if (fOkay) { CalculateIOIndices(); if (grfrco & kfrcoSetPos) // positioning pass GiveOverlapWarnings(pfont, prndr->ScriptDirections()); } else { m_fBadRule = true; } } /*--------------------------------------------------------------------------------------------*/ bool GdlRuleItem::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * /*prule*/, Symbol /*psymTable*/, int /*grfrco*/, int /*irit*/, bool /*fAnyAssocs*/, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & /*vcwClassSizes*/, std::vector & /*vfAssocs*/ ) { bool fOkay = true; // Check constraint. if (m_pexpConstraint) { ExpressionType expt; bool fKeepChecking = m_pexpConstraint->CheckTypeAndUnits(&expt); if (expt != kexptBoolean && expt != kexptOne && expt != kexptZero) { g_errorList.AddWarning(3504, m_pexpConstraint, "Boolean value expected as result of constraint"); } if (fKeepChecking) { if (!m_pexpConstraint->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, false, false)) { fOkay = false; } } if (fOkay) { bool fCanSub; SymbolSet setBogus; GdlExpression * pexpNew = m_pexpConstraint->SimplifyAndUnscale(pgax, 0, setBogus, pfont, false, &fCanSub); if (pexpNew && pexpNew != m_pexpConstraint) { if (fCanSub) { delete m_pexpConstraint; m_pexpConstraint = pexpNew; } else delete pexpNew; } m_pexpConstraint->CheckAttachToLookup(); } } return fOkay; } /*--------------------------------------------------------------------------------------------*/ bool GdlLineBreakItem::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * prule, Symbol psymTable, int grfrco, int irit, bool fAnyAssocs, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & vcwSizes, std::vector & vfAssocs) { bool fOkay = true; if ((grfrco & kfrcoLb) == 0) { g_errorList.AddError(3108, this, "Line-break inappropriate in ", psymTable->FullName(), " table"); fOkay = false; } // method on superclass: check constraints. if(!GdlRuleItem::CheckRulesForErrors(pgax, pfont, prndr, prule, psymTable, grfrco, irit, fAnyAssocs, vfLb, vfIns, vfDel, vcwSizes, vfAssocs)) { fOkay = false; } return fOkay; } /*--------------------------------------------------------------------------------------------*/ bool GdlSetAttrItem::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * prule, Symbol psymTable, int grfrco, int irit, bool fAnyAssocs, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & vcwSizes, std::vector & vfAssocs) { bool fOkay = GdlRuleItem::CheckRulesForErrors(pgax, pfont, prndr, prule, psymTable, grfrco, irit, fAnyAssocs, vfLb, vfIns, vfDel, vcwSizes, vfAssocs); for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { if (!m_vpavs[ipavs]->CheckRulesForErrors(pgax, pfont, prndr, psymTable, grfrco, this, irit, vfLb, vfIns, vfDel)) { fOkay = false; } } return fOkay; } /*--------------------------------------------------------------------------------------------*/ bool GdlSubstitutionItem::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * prule, Symbol psymTable, int grfrco, int irit, bool fAnyAssocs, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & vcwClassSizes, std::vector & vfAssocs) { int crit = signed(vfLb.size()); bool fOkay = true; if ((grfrco & kfrcoSubst) == 0) { //g_errorList.AddError(3109, this, // "Substitution (left-hand-side) not permitted in ", // psymTable->FullName(), // " table"); //fOkay = false; g_errorList.AddWarning(3541, this, "Substitution in ", psymTable->FullName(), " table rule"); } if (OutputSymbol()->FitsSymbolType(ksymtSpecialUnderscore)) { // Deletion if ((grfrco & kfrcoSubst) == 0) { g_errorList.AddError(3170, this, "Deletion not permitted in ", psymTable->FullName(), " table"); fOkay = false; } else { if (m_vpavs.size()) { if (m_vpavs.size() == 1 && m_vpavs[0]->AttrName()->IsPassKeySlot()) { // Okay to set a deletion slot as a key slot. } else { g_errorList.AddWarning(3505, this, "Item ", PosString(), ": setting attributes of a deleted item"); for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) delete m_vpavs[ipavs]; m_vpavs.clear(); fOkay = false; } } if (m_vpexpAssocs.size()) { g_errorList.AddWarning(3506, this, "Item ", PosString(), ": setting associations of a deleted item"); for (size_t ipexp = 0; ipexp < m_vpexpAssocs.size(); ipexp++) delete m_vpexpAssocs[ipexp]; m_vpexpAssocs.clear(); fOkay = false; } if (!vfAssocs[irit]) { int iritAssoc = prule->FindAutoAssocItem(true); GdlRuleItem * pritAssoc = (iritAssoc == -1) ? NULL : prule->Rule(iritAssoc); if (prule->ItemCountOriginal() == 1) { g_errorList.AddError(3168, this, "Rules with deletions must include at least two slots"); } else if (prule->ItemCountOriginal() == this->CountFlags(vfDel) + 1 && iritAssoc > -1 && (prule->AutoAssocDone() || !pritAssoc->AnyAssociations())) { // Automatically associate the all deleted item(s) with the single non-deleted slot // in the rule. Also associate that item with itself. if (prule->AutoAssocDone()) { // Did this already for a previous item. Assert(irit > 0); } else { auto const staAssoc = std::to_string(iritAssoc + 1 - prule->PrependedAnys()); for (auto irit = 0U; irit < prule->NumberOfSlots(); ++irit) { GdlRuleItem * prit = prule->Item(irit); if (prit->OutputSymbol()->FullName() != "ANY") { pritAssoc->AddAssociation(prule->LineAndFile(), irit + 1); // 1-based if (irit != iritAssoc) g_errorList.AddWarning(3532, this, "Item ", prit->PosString(), ": slot ", staAssoc, " automatically associated with deleted item"); } } prule->SetAutoAssocDone(); } } else { g_errorList.AddWarning(3529, this, "Item ", PosString(), ": no slot was associated with deleted item"); } for (auto ipavs = 0U; ipavs < m_vpavs.size(); ++ipavs) { if (m_vpavs[ipavs]->AttrName()->IsPassKeySlot()) { g_errorList.AddWarning(3540, this, "Cannot set passKeySlot on an inserted item"); EraseAttrSetting(ipavs); } } } } } if (m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)) { // Insertion if ((grfrco & kfrcoSubst) == 0) { g_errorList.AddError(3171, this, "Insertion not permitted in ", psymTable->FullName(), " table"); fOkay = false; } else { if (m_vpexpAssocs.size() == 0 && !m_psymOutput->FitsSymbolType(ksymtSpecialAt)) { int iritAssoc = prule->FindAutoAssocItem(false); GdlRuleItem * pritAssoc = (iritAssoc == -1) ? NULL : prule->Rule(iritAssoc); bool fExplAssocs = false; for (int iritTmp = 0; iritTmp < prule->ItemCountOriginal(); iritTmp++) { if (prule->Item(iritTmp)->AnyAssociations()) fExplAssocs = true; // DON'T treat @ as an explicit association. } if (prule->ItemCountOriginal() == 1) { g_errorList.AddError(3169, this, "Rules with insertions must include at least two slots"); } else if (prule->ItemCountOriginal() == this->CountFlags(vfIns) + 1 && iritAssoc > -1 && (prule->AutoAssocDone() || !fExplAssocs)) { // Automatically associate all the inserted item(s) with the single non-inserted slot // in the rule. if (prule->AutoAssocDone()) { // Did this already for a previous item. Assert(irit > 0); } else { auto const iAssoc = int(iritAssoc + 1 - prule->PrependedAnys()); auto const staAssoc = std::to_string(iAssoc); for (auto irit = 0U; irit < prule->NumberOfSlots(); ++irit) { GdlRuleItem * prit = prule->Item(irit); if (prit->OutputSymbol()->FullName() != "ANY" && irit != iritAssoc) { prit->AddAssociation(prule->LineAndFile(), iAssoc); // 1-based g_errorList.AddWarning(3533, this, "Item ", prit->PosString(), ": inserted item automatically associated with slot ", staAssoc); } } prule->SetAutoAssocDone(); } } else { g_errorList.AddWarning(3507, this, "Item ", PosString(), ": inserted item was not given association"); } } if (m_pexpConstraint) { g_errorList.AddError(3110, this, "Item ", PosString(), ": cannot include constraint on inserted item"); } } } // If there are any component.X.ref settings, give a warning if they are not equal // to the associations. std::set setsrCompRef; for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { if (m_vpavs[ipavs]->m_psymName->IsComponentRef()) { GdlSlotRefExpression * pexpsr = dynamic_cast(m_vpavs[ipavs]->m_pexpValue); if (pexpsr) { int sr = pexpsr->SlotNumber(); setsrCompRef.insert(sr); } } } if (setsrCompRef.size() > 0) { std::set setsrAssocs; for (size_t ipexp = 0; ipexp < m_vpexpAssocs.size() && fOkay; ipexp++) { int sr = m_vpexpAssocs[ipexp]->SlotNumber(); setsrAssocs.insert(sr); } bool fOkay = (setsrCompRef.size() == setsrAssocs.size()); for (std::set::iterator it = setsrCompRef.begin(); fOkay && it != setsrCompRef.end(); ++it) { if (setsrAssocs.find(*it) == setsrAssocs.end()) // not a member fOkay = false; } if (!fOkay) { g_errorList.AddWarning(3508, this, "Item ", PosString(), ": mismatch between associations and component references"); } } // Mismatched class sizes. if (OutputSymbol()->FitsSymbolType(ksymtClass)) { int nSel; if (m_pexpSelector) nSel = m_pexpSelector->SlotNumber() - 1; else nSel = irit; int cwInput = vcwClassSizes[nSel]; GdlGlyphClassDefn * pglfc = OutputSymbol()->GlyphClassDefnData(); if (pglfc) // otherwise, undefined class { int cwOutput = OutputSymbol()->GlyphClassDefnData()->GlyphIDCount(); if (cwOutput == 0) g_errorList.AddWarning(3509, this, "Item ", PosString(), ": empty class '", OutputSymbol()->FullName(), "' in right-hand-side"); else if (cwInput == 0 && cwOutput > 1) g_errorList.AddWarning(3510, this, "Item ", PosString(), ": class '", OutputSymbol()->FullName(), "' in rhs has multiple glyphs but selector class is empty"); else if (cwInput == 0 && cwOutput == 1) { // okay } else if (cwInput > cwOutput && cwOutput > 1) g_errorList.AddWarning(3511, this, "Item ", PosString(), ": class '", OutputSymbol()->FullName(), "' in rhs is smaller than selector class"); else if (cwInput < cwOutput) g_errorList.AddWarning(3512, this, "Item ", PosString(), ": mismatched class sizes"); else { Assert(cwOutput <= 1 || cwInput == cwOutput); } } } if (!GdlSetAttrItem::CheckRulesForErrors(pgax, pfont, prndr, prule, psymTable, grfrco, irit, fAnyAssocs, vfLb, vfIns, vfDel, vcwClassSizes, vfAssocs)) { fOkay = false; } if (m_pexpSelector) // the lhs item to match in the substitution { int srSel = m_pexpSelector->SlotNumber(); if (srSel < 1 || srSel > crit) { // error condition--already handled fOkay = false; } else if (vfLb[srSel - 1]) { g_errorList.AddError(3111, this, "Item ", PosString(), ": line-break item (#) cannot serve as glyph selector"); fOkay = false; } else if (vfIns[srSel - 1]) { g_errorList.AddError(3112, this, "Item ", PosString(), ": glyph selector cannot indicate an inserted item"); fOkay = false; } } for (size_t ipexp = 0; ipexp < m_vpexpAssocs.size(); ipexp++) { int srAssoc = m_vpexpAssocs[ipexp]->SlotNumber(); // 1-based if (srAssoc < 1 || srAssoc > crit) { g_errorList.AddError(3113, this, "Item ", PosString(), ": association out of range"); fOkay = false; } else if (vfLb[srAssoc - 1]) { g_errorList.AddError(3114, this, "Item ", PosString(), ": association cannot be made with line-break item (#)"); fOkay = false; } else if (vfIns[srAssoc - 1]) { g_errorList.AddError(3115, this, "Item ", PosString(), ": association with an inserted item"); fOkay = false; } } return fOkay; } /*--------------------------------------------------------------------------------------------*/ bool GdlAttrValueSpec::CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, Symbol psymTable, int grfrco, GdlRuleItem * prit, int irit, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel) { if (!m_psymOperator->FitsSymbolType(ksymtOpAssign)) g_errorList.AddError(3116, this, "Attribute assignment must use an assignment operator"); bool fValueIsInputSlot = false; // true if the value of an attribute indicates a slot // in the input stream (ie, comp.X.ref) as opposed to // an output slot (ie, attach.to) if (!m_psymName->FitsSymbolType(ksymtSlotAttr) && !m_psymName->FitsSymbolType(ksymtFeature)) { if (m_psymName->FitsSymbolType(ksymtGlyphAttr)) g_errorList.AddError(3117, this, "Cannot set glyph attributes in rules"); else if (m_psymName->FitsSymbolType(ksymtGlyphMetric)) g_errorList.AddError(3118, this, "Cannot set glyph metrics"); else g_errorList.AddError(3119, this, "Cannot set anything but slot attributes and features in rules"); return false; } bool fOkay = true; if (m_psymName->FitsSymbolType(ksymtFeature)) { if (this->m_psymOperator->FullName() != "=") g_errorList.AddError(3165, this, "Cannot set a feature using any operator but '='"); // Convert any feature setting in the value to an integer. GdlFeatureDefn * pfeat = m_psymName->FeatureDefnData(); bool fErr = false; GdlExpression * pexpNew = m_pexpValue->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpValue) { delete m_pexpValue; m_pexpValue = pexpNew; } // Check that the calculated value is an expected setting for this feature. if (!fErr) { int n; bool fInt = m_pexpValue->ResolveToInteger(&n, false); if (fInt) { GdlFeatureSetting * pfsetValue = pfeat->FindSettingWithValue(n); if (!pfsetValue) g_errorList.AddWarning(3536, this, "Setting feature ", pfeat->Name(), " to undefined setting"); } else { g_errorList.AddWarning(3537, this, "Cannot validate setting for feature ", pfeat->Name()); } } } else if (m_psymName->IsPseudoSlotAttr()) { // Ignore int x; x = 3; } else if (m_psymName->IsReadOnlySlotAttr()) { g_errorList.AddError(3120, this, "The '", m_psymName->FullName(), "' attribute is read-only"); fOkay = false; } else if (m_psymName->IsMovement()) // shift, kern, advance { if ((grfrco & kfrcoSetPos) == 0) { g_errorList.AddError(3121, this, "Cannot set the ", m_psymName->FullName(), " attribute in the ", psymTable->FullName(), " table"); fOkay = false; } GdlGlyphClassDefn * pglfc = prit->OutputSymbol()->GlyphClassDefnData(); if (pglfc && pglfc->IncludesGlyph(g_cman.LbGlyphId())) { g_errorList.AddWarning(3513, this, "Moving a line-break glyph will have no effect"); } // else undefined class } else if (m_psymName->IsAttachment()) { if ((grfrco & kfrcoSetPos) == 0) { g_errorList.AddError(3122, this, "Cannot set the ", m_psymName->FullName(), " attribute in the ", psymTable->FullName(), " table"); fOkay = false; } GdlGlyphClassDefn * pglfcTmp = prit->OutputSymbol()->GlyphClassDefnData(); if (pglfcTmp && pglfcTmp->IncludesGlyph(g_cman.LbGlyphId())) { g_errorList.AddWarning(3514, this, "Attaching a line-break glyph will have no effect"); } } else if (m_psymName->LastFieldIs("breakweight")) { if ((grfrco & kfrcoSetBreak) == 0) { g_errorList.AddError(3123, this, "Cannot set the breakweight attribute in the ", psymTable->FullName(), " table"); fOkay = false; } } else if (m_psymName->IsComponentRef()) { if ((grfrco & kfrcoSetCompRef) == 0) { g_errorList.AddError(3124, this, "Cannot set the ", m_psymName->FullName(), " attribute in the ", psymTable->FullName(), " table"); fOkay = false; } fValueIsInputSlot = true; } else if (m_psymName->LastFieldIs("directionality")) { if ((grfrco & kfrcoSetDir) == 0) { g_errorList.AddError(3125, this, "Cannot set the directionality attribute in the ", psymTable->FullName(), " table"); fOkay = false; } } else if (m_psymName->LastFieldIs("insert")) { if ((grfrco & kfrcoSetInsert) == 0) { g_errorList.AddError(3126, this, "Cannot set the insert attribute in the ", psymTable->FullName(), " table"); fOkay = false; } } else if (m_psymName->DoesJustification()) { // Engine does not permit these in the substitution table. if (grfrco & kfrcoSubst) { g_errorList.AddError(3173, this, "Cannot set the ", m_psymName->FullName(), " in the ", psymTable->FullName(), " table"); } else if (grfrco & kfrcoPreBidi) { if (m_psymName->LastFieldIs("width")) { g_errorList.AddWarning(3515, this, "Setting ", m_psymName->FullName(), " too early in the process (should be before the bidi pass)"); } } else { if (m_psymName->LastFieldIs("stretch") || m_psymName->LastFieldIs("shrink") || m_psymName->LastFieldIs("step") || m_psymName->LastFieldIs("weight")) { g_errorList.AddWarning(3516, this, "Setting ", m_psymName->FullName(), " too late in the process (should be before the bidi pass)"); } } } else if (m_psymName->IsMeasureAttr()) { // Engine does not permit these in the substitution table. if (grfrco & kfrcoSubst) { g_errorList.AddError(3173, this, "Cannot set ", m_psymName->FullName(), " in the ", psymTable->FullName(), " table"); } } else if (m_psymName->IsCollisionAttr()) { // Engine does not permit these in the substitution table. if (grfrco & kfrcoSubst) { g_errorList.AddError(3173, this, "Cannot set the ", m_psymName->FullName(), " attribute in the ", psymTable->FullName(), " table"); } } else if (m_psymName->IsSequenceAttr()) { // Engine does not permit these in the substitution table. if (grfrco & kfrcoSubst) { g_errorList.AddError(3173, this, "Cannot set the ", m_psymName->FullName(), " attribute in the ", psymTable->FullName(), " table"); } } else if (m_psymName->IsUserDefinableSlotAttr()) { int nIndex = m_psymName->UserDefinableSlotAttrIndex(); if (nIndex < 0) { g_errorList.AddError(3127, this, "Invalid slot attribute: ", m_psymName->FullName()); fOkay = false; } else if (nIndex >= kMaxUserDefinableSlotAttrs) { g_errorList.AddError(3128, this, "Invalid slot attribute: ", m_psymName->FullName(), "; maximum is ", std::to_string(kMaxUserDefinableSlotAttrs)); fOkay = false; } else { prndr->SetNumUserDefn(nIndex); } } else { Assert(false); return false; } ExpressionType exptExpected = m_psymName->ExpType(); Assert(exptExpected != kexptUnknown); ExpressionType exptFound; bool fKeepChecking = m_pexpValue->CheckTypeAndUnits(&exptFound); if (!EquivalentTypes(exptExpected, exptFound)) { if (exptExpected == kexptSlotRef) { // Make it an error, not a warning, because we can't do adequate checking below. g_errorList.AddError(3129, this, "Value for ", m_psymName->FullName(), " attribute must be a slot reference"); fKeepChecking = false; fOkay = false; } else if (exptExpected == kexptMeas && exptFound == kexptNumber) { g_errorList.AddWarning(3517, this, "Slot attribute ", m_psymName->FullName(), " expects a scaled number"); } else if (exptFound == kexptUnknown) { // Possibly they are reading a user-defined glyph attribute of unknown type. g_errorList.AddWarning(3538, this, "Cannot validate value for ", m_psymName->FullName()); } else if (m_psymName->IsUserDefinableSlotAttr()) { // any value is appropriate } else g_errorList.AddWarning(3518, this, "Assigned value has inappropriate type for '", m_psymName->FullName(), "' attribute"); } if (fKeepChecking) { int nTmp; if (m_psymName->IsAttachTo() && m_pexpValue->ResolveToInteger(&nTmp, true) && nTmp == 0) { // okay - attach.to = @0 has a special meaning } else { if (!m_pexpValue->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, true, fValueIsInputSlot)) { fOkay = false; } if (m_psymName->IsAttachTo()) { GdlSlotRefExpression * pexpsr = dynamic_cast(m_pexpValue); if (pexpsr) { if (pexpsr->SlotNumber() == irit + 1) g_errorList.AddWarning(3519, this, "Item ", prit->PosString(), ": slot is being attached to itself--no attachment will result"); } } } if (m_psymName->IsCollisionAttr() && m_psymName->LastFieldIs("glyph")) // collision.exclude.glyph { GdlClassMemberExpression * pexpil = dynamic_cast(m_pexpValue); if (pexpil) { pexpil->SetGlyphIndex(0); // should only be one glyph possible auto cValues = pexpil->ValueCount(); if (cValues == 0) g_errorList.AddError(3163, this, "No glyphs in class ", pexpil->Name()->FullName()); else if (cValues > 1) g_errorList.AddError(3164, this, "Single glyph definition required for collision.exclude.glyph attribute: ", pexpil->Name()->FullName()); } } bool fCanSub; SymbolSet setBogus; GdlExpression * pexpNewValue = m_pexpValue->SimplifyAndUnscale(pgax, 0, setBogus, pfont, false, &fCanSub); if (pexpNewValue && pexpNewValue != m_pexpValue) { if (fCanSub) { delete m_pexpValue; m_pexpValue = pexpNewValue; } else delete pexpNewValue; } // Use a special zero value for attach.at.gpoint and attach.with.gpoint, to // distinguish from the unspecified case. if ((m_psymName->IsAttachAtField() || m_psymName->IsAttachWithField()) && m_psymName->LastFieldIs("gpoint")) { int n; m_pexpValue->ResolveToInteger(&n, false); if (n == 0) m_pexpValue->SetSpecialZero(); } } return fOkay; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return true if this item sets has any associations. ----------------------------------------------------------------------------------------------*/ bool GdlRuleItem::AnyAssociations() { return false; } bool GdlSubstitutionItem::AnyAssociations() { return (m_vpexpAssocs.size() > 0); } /*---------------------------------------------------------------------------------------------- Set flags indicating which items in the input are associated. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::SetAssocsVector(std::vector & vfAssocs) { } void GdlSubstitutionItem::SetAssocsVector(std::vector & vfAssocs) { for (int iexp = 0; iexp < signed(this->m_vpexpAssocs.size()); iexp++) { int srNumber = m_vpexpAssocs[iexp]->SlotNumber(); // 1-based vfAssocs[srNumber - 1] = true; } } /*---------------------------------------------------------------------------------------------- Count up the insertiondeletion flags in the vector. ----------------------------------------------------------------------------------------------*/ int GdlSubstitutionItem::CountFlags(std::vector & vfFlags) { int cFlags = 0; for (int i = 0; i < signed(vfFlags.size()); i++) cFlags = cFlags + ((vfFlags[i]) ? 1 : 0); return cFlags; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Check that there is a constraint on the rule, or on at least one of its items, that tests justification status. This is expected in the justification table. If not, give a warning. TODO: if we implement pass constraints, these tests should be in the pass constraints. ----------------------------------------------------------------------------------------------*/ bool GdlRule::CheckForJustificationConstraint() { for (size_t ipexp = 0; ipexp < m_vpexpConstraints.size(); ipexp++) { GdlExpression * pexp = m_vpexpConstraints[ipexp]; if (pexp->TestsJustification()) return true; } // No such constraint on the rule itself. Look at the items. for (size_t irit = 0; irit < m_vprit.size(); irit++) { GdlRuleItem * prit = m_vprit[irit]; if (prit->CheckForJustificationConstraint()) return true; } // No such constraint on the items. Record a warning. g_errorList.AddWarning(3520, this, "Rules in justification table should test justification status."); return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlRuleItem::CheckForJustificationConstraint() { if (m_pexpConstraint) return m_pexpConstraint->TestsJustification(); else return false; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Calculate input and output indices for each rule item, that is, indices relative to the input and output streams. Specifically, the input index is the rule index ignoring inserted items, and the output index is the rule index ignoring deleted items. Make the associations and slot references use the appropriate ones: component.X.ref and associations use input indices, and attach.to uses output indices. Also calculate the scan-advance value for both input and output. Inserted items have a negative input-index, equal to (-1 * the next item's input-index); deleted items have a negative output-index, equal to (-1 * the next item's output-index). ----------------------------------------------------------------------------------------------*/ void GdlRule::CalculateIOIndices() { int critInput = 0; int critOutput = 0; // Assign the indices for each item. Generate a map of indices to use in later steps. size_t irit; for (irit = 0; irit < m_vprit.size(); irit++) m_vprit[irit]->AssignIOIndices(&critInput, &critOutput, m_viritInput, m_viritOutput); // Adjust the slot references to use the new indices. for (irit = 0; irit < m_vprit.size(); irit++) m_vprit[irit]->AdjustToIOIndices(m_viritInput, m_viritOutput); // Adjust the scan-advance indicator to take the deleted items into account. if (m_nScanAdvance == -1) { m_nOutputAdvance = -1; } else { if (m_nScanAdvance >= signed(m_vprit.size())) { Assert(static_cast(m_nScanAdvance) == m_vprit.size()); m_nOutputAdvance = m_viritOutput[m_vprit.size() - 1]; m_nOutputAdvance = (m_nOutputAdvance < 0) ? m_nOutputAdvance * -1 : m_nOutputAdvance + 1; } else { m_nOutputAdvance = m_viritOutput[m_nScanAdvance]; if (m_nOutputAdvance < 0) // just before a deleted item m_nOutputAdvance = (m_nOutputAdvance * -1) - 1; } } } /*---------------------------------------------------------------------------------------------- Assign each rule item an input and an output index. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::AssignIOIndices(int * pcritInput, int * pcritOutput, std::vector & viritInput, std::vector & viritOutput) { m_nInputIndex = (*pcritInput)++; m_nOutputIndex = (*pcritOutput)++; viritInput.push_back(m_nInputIndex); viritOutput.push_back(m_nOutputIndex); } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::AssignIOIndices(int * pcritInput, int * pcritOutput, std::vector & viritInput, std::vector & viritOutput) { if (m_psymInput && m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)) { // insertion m_nInputIndex = (*pcritInput * -1) - 1; viritInput.push_back(m_nInputIndex); } else { m_nInputIndex = (*pcritInput)++; viritInput.push_back(m_nInputIndex); } if (m_psymOutput && m_psymOutput->FitsSymbolType(ksymtSpecialUnderscore)) { // deletion m_nOutputIndex = (*pcritOutput * -1) - 1; viritOutput.push_back(m_nOutputIndex); } else { m_nOutputIndex = (*pcritOutput)++; viritOutput.push_back(m_nOutputIndex); } } /*---------------------------------------------------------------------------------------------- Modify the rule items to use either input or output indices. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::AdjustToIOIndices(std::vector & viritInput, std::vector & /*viritOutput*/) { // Constraints are read from the input stream. if (m_pexpConstraint) m_pexpConstraint->AdjustToIOIndices(viritInput, NULL); } /*--------------------------------------------------------------------------------------------*/ void GdlLineBreakItem::AdjustToIOIndices(std::vector & viritInput, std::vector & viritOutput) { GdlRuleItem::AdjustToIOIndices(viritInput, viritOutput); } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::AdjustToIOIndices(std::vector & viritInput, std::vector & viritOutput) { GdlRuleItem::AdjustToIOIndices(viritInput, viritOutput); for (size_t i = 0; i < m_vpavs.size(); i++) m_vpavs[i]->AdjustToIOIndices(this, viritInput, viritOutput); } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::AdjustToIOIndices(std::vector & viritInput, std::vector & viritOutput) { GdlSetAttrItem::AdjustToIOIndices(viritInput, viritOutput); // for selectors: use input indices if (m_pexpSelector) { int sr = m_pexpSelector->SlotNumber(); // 1-based; m_nSelector = viritInput[sr - 1]; Assert(m_nSelector >= 0); // otherwise, error of using an inserted item as a selector } else m_nSelector = -1; // default, same item // for associations: use input indices for (size_t ipexp = 0; ipexp < m_vpexpAssocs.size(); ipexp++) { int srAssoc = m_vpexpAssocs[ipexp]->SlotNumber(); // 1-based Assert(srAssoc >= 1 && static_cast(srAssoc) <= viritInput.size()); m_vnAssocs.push_back(viritInput[srAssoc - 1]); } } /*--------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::AdjustToIOIndices(GdlRuleItem * prit, std::vector & viritInput, std::vector & viritOutput) { Assert(m_psymName->FitsSymbolType(ksymtSlotAttr) || m_psymName->FitsSymbolType(ksymtFeature)); if (m_psymName->ExpType() == kexptSlotRef) { if (m_psymName->IsComponentRef()) m_pexpValue->AdjustToIOIndices(viritInput, NULL); else if (m_psymName->IsAttachment()) { Assert(m_psymName->LastFieldIs("to")); // must be attach.to m_pexpValue->AdjustToIOIndices(viritOutput, prit); } else { Assert(false); } } else m_pexpValue->AdjustToIOIndices(viritInput, NULL); } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Generate warning messages if there are any contiguous glyphs whose bounding boxes overlap (in the vertical dimension) but are not attached. Note that these checks are only run for positioning rules. ----------------------------------------------------------------------------------------------*/ void GdlRule::GiveOverlapWarnings(GrcFont * pfont, int grfsdc) { for (int irit = 0; irit < signed(m_vprit.size()) - 1; irit++) { GdlRuleItem * prit1 = m_vprit[irit]; GdlRuleItem * prit2 = m_vprit[irit + 1]; if (prit1->m_iritContextPosOrig < 0 || prit1->m_iritContextPosOrig >= signed(m_vprit.size())) // eg, ANY continue; if (prit2->m_iritContextPosOrig < 0 || prit2->m_iritContextPosOrig >= signed(m_vprit.size())) // eg, ANY continue; // Figure out what these items are attached to. A value of zero means it is // deliberately attached to nothing. int nAtt1 = prit1->AttachedToSlot(); int nAtt2 = prit2->AttachedToSlot(); if (nAtt1 == 0 || nAtt2 == 0) continue; if (nAtt1 == prit2->m_iritContextPos + 1) // m_iritContextPos is 0-based continue; if (nAtt2 == prit1->m_iritContextPos + 1) continue; if (prit1->OverlapsWith(prit2, pfont, grfsdc)) { // Give warning. g_errorList.AddWarning(3521, this, "Vertical overlap between glyphs in items ", prit1->PosString(), " and ", prit2->PosString(), "; attachment may be needed"); } } } /*---------------------------------------------------------------------------------------------- Return the slot the item is attached to, or -1 if none. ----------------------------------------------------------------------------------------------*/ int GdlRuleItem::AttachedToSlot() { return -1; } int GdlSetAttrItem::AttachedToSlot() { Assert(m_nInputIndex == m_nOutputIndex); // because this is a positioning rule for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { if (m_vpavs[ipavs]->m_psymName->IsAttachTo()) { int nSlot; m_vpavs[ipavs]->m_pexpValue->ResolveToInteger(&nSlot, true); return nSlot; } } return -1; } /*---------------------------------------------------------------------------------------------- Return true if any glyph in the recipient item's glyph class overlaps along the vertical axis with any glyph in the argument item's glyph class. ----------------------------------------------------------------------------------------------*/ bool GdlRuleItem::OverlapsWith(GdlRuleItem * prit, GrcFont * pfont, int grfsdc) { Symbol psymGlyphs1 = this->m_psymInput; Symbol psymGlyphs2 = prit->m_psymInput; GdlGlyphClassDefn * glfd1 = psymGlyphs1->GlyphClassDefnData(); GdlGlyphClassDefn * glfd2 = psymGlyphs2->GlyphClassDefnData(); if (!glfd1 || !glfd2) return false; if ((grfsdc & kfsdcHorizLtr || grfsdc == 0) && glfd1->HasOverlapWith(glfd2, pfont)) return true; if (grfsdc & kfsdcHorizRtl && glfd2->HasOverlapWith(glfd1, pfont)) return true; return false; } /*---------------------------------------------------------------------------------------------- Return true if there are any overlaps along the x-axis between any glyphs in the two classes. ----------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::HasOverlapWith(GdlGlyphClassMember * pglfdLeft, GrcFont * pfont) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { if (m_vpglfdMembers[iglfd]->HasOverlapWith(pglfdLeft, pfont)) return true; } return false; } bool GdlGlyphDefn::HasOverlapWith(GdlGlyphClassMember * pglfdLeft, GrcFont * pfont) { GdlGlyphDefn * pglfLeft = dynamic_cast(pglfdLeft); if (m_glft == kglftPseudo) { return m_pglfOutput->HasOverlapWith(pglfdLeft, pfont); } else if (pglfLeft) { if (pglfLeft->m_glft == kglftPseudo) { return HasOverlapWith(pglfLeft->m_pglfOutput, pfont); } else { for (size_t iw1 = 0; iw1 < this->m_vwGlyphIDs.size(); iw1++) { utf16 w1 = this->m_vwGlyphIDs[iw1]; if (w1 == kBadGlyph) continue; utf16 nActual = g_cman.ActualForPseudo(w1); if (nActual != 0) w1 = nActual; int nLsb = pfont->GetGlyphMetric(w1, kgmetLsb, this); for (size_t iw2 = 0; iw2 < pglfLeft->m_vwGlyphIDs.size(); iw2++) { utf16 w2 = pglfLeft->m_vwGlyphIDs[iw2]; if (w2 == kBadGlyph) continue; utf16 nActual = g_cman.ActualForPseudo(w2); if (nActual != 0) w2 = nActual; int nRsb = pfont->GetGlyphMetric(w2, kgmetRsb, pglfLeft); if (nLsb + nRsb < 0) return true; } } } } else { GdlGlyphClassDefn * pglfcLeft = dynamic_cast(pglfdLeft); Assert(pglfcLeft); for (size_t iglfd = 0; iglfd < pglfcLeft->m_vpglfdMembers.size(); iglfd++) { if (HasOverlapWith(pglfcLeft->m_vpglfdMembers[iglfd], pfont)) return true; } } return false; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Delete all invalid glyphs. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::DeleteAllBadGlyphs() { for (size_t iglfc = 0; iglfc < m_vpglfc.size(); iglfc++) m_vpglfc[iglfc]->DeleteBadGlyphs(); } /*---------------------------------------------------------------------------------------------- Delete invalid glyphs from the class ----------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::DeleteBadGlyphs() { bool fRet = false; for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { fRet = (fRet || m_vpglfdMembers[iglfd]->DeleteBadGlyphs()); } return fRet; } bool GdlGlyphDefn::DeleteBadGlyphs() { bool fRet = false; for (int i = signed(m_vwGlyphIDs.size()) - 1; i >=0; i--) { if (m_vwGlyphIDs[i] == kBadGlyph) { m_vwGlyphIDs.erase(m_vwGlyphIDs.begin() + i); fRet = true; } } return fRet; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Give a warning about any invalid glyphs in the class. ----------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::WarnAboutBadGlyphs(bool fTop) { bool fRet = false; for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { fRet = (fRet || m_vpglfdMembers[iglfd]->WarnAboutBadGlyphs(false)); } if (fRet && fTop) g_errorList.AddWarning(3522, this, "Class '", m_staName, "' is used in substitution but has invalid glyphs"); return fRet; } #ifdef NDEBUG bool GdlGlyphDefn::WarnAboutBadGlyphs(bool) #else bool GdlGlyphDefn::WarnAboutBadGlyphs(bool fTop) #endif { Assert(!fTop); bool fRet = false; for (int i = signed(m_vwGlyphIDs.size()) - 1; i >=0; i--) { fRet = (fRet || m_vwGlyphIDs[i] == kBadGlyph); } return fRet; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Check for the error of cross-line contextualization across more than two lines. Record the maximum number of slots occurring in a cross-line contextualization rule. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::CheckLBsInRules() { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->CheckLBsInRules(); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::CheckLBsInRules() { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->CheckLBsInRules(m_psymName); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::CheckLBsInRules(Symbol psymTable) { m_fLB = false; m_fCrossLB = false; m_critPreLB = 0; m_critPostLB = 0; m_fReproc = false; int critPreLB = 0; int critPostLB = 0; for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { if (m_vprule[iprule]->IsBadRule()) continue; // don't process if we've discovered errors bool fAnyLB = m_vprule[iprule]->CheckLBsInRules(psymTable, &critPreLB, &critPostLB); m_fLB = (m_fLB || fAnyLB); if (critPreLB > 0 && critPostLB > 0) { m_fCrossLB = true; m_critPreLB = max(m_critPreLB, critPreLB); m_critPostLB = max(m_critPostLB, critPostLB); } if (m_vprule[iprule]->HasReprocessing()) m_fReproc = true; } Assert(!m_fCrossLB || m_fLB); Assert(!m_fCrossLB || m_critPreLB > 0 || m_critPostLB > 0); } /*--------------------------------------------------------------------------------------------*/ bool GdlRule::CheckLBsInRules(Symbol /*psymTable*/, int * pcritPreLB, int * pcritPostLB) { // Check to make sure that there are at most two line-break slots in the rule, // and if there are two, they are the first and last. While we're at it, count the // items before and after the line-break. int critLB = 0; int critPreTmp = 0; int critPostTmp = 0; int critPost2Tmp = 0; for (size_t iprit = 0; iprit < m_vprit.size(); iprit++) { if (dynamic_cast(m_vprit[iprit]) == NULL && m_vprit[iprit]->OutputSymbol()->LastFieldIs("#")) { critLB++; } else { if (signed(iprit) < m_critPrependedAnys) { // prepended ANY doesn't count } else if (critLB == 0) critPreTmp++; else if (critLB == 1) critPostTmp++; else critPost2Tmp++; } } if (critLB == 0) { // No line-breaks in this rule. *pcritPreLB = 0; *pcritPostLB = 0; return false; } if (critLB > 2 || (critLB == 2 && (critPreTmp > 0 || critPost2Tmp > 0))) { g_errorList.AddError(3131, this, "Cross-line contextualization involving more than two lines."); return true; } Assert(critPost2Tmp == 0); *pcritPreLB = critPreTmp; *pcritPostLB = critPostTmp; return true; } /*---------------------------------------------------------------------------------------------- Return true if the rule has its scan position set so that reprocessing will occur. As a side effect, if there was a caret in the rule, record the default scan position, which will be used later in outputting the rule commands. ----------------------------------------------------------------------------------------------*/ bool GdlRule::HasReprocessing() { if (m_nOutputAdvance == -1) return false; // Count the number of unmodified items at the end of the rule; these do not need to // be processed, and the default scan advance position is just before these. size_t iritLim = m_vprit.size(); while (iritLim > 0 && !dynamic_cast(m_vprit[iritLim - 1])) iritLim--; if (iritLim < m_vprit.size()) { GdlRuleItem * pritLim = m_vprit[iritLim]; Assert(pritLim->m_nOutputIndex >= 0); m_nDefaultAdvance = pritLim->m_nOutputIndex; } else { Assert(iritLim == m_vprit.size()); m_nDefaultAdvance = m_vprit.back()->m_nOutputIndex; m_nDefaultAdvance++; if (m_nDefaultAdvance < 0) // Note that when the last slot is a deletion, the ++ above in effect subtracted // 1, reflecting the fact that their is no output for the deletion. m_nDefaultAdvance = m_nDefaultAdvance * -1; } return (m_nOutputAdvance < m_nDefaultAdvance); } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Rewrite some slot attribute assignments: * Replace any kern assigments with the equivalent shift and advance. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->RewriteSlotAttrAssignments(pcman, pfont); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->RewriteSlotAttrAssignments(pcman, pfont); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont) { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->RewriteSlotAttrAssignments(pcman, pfont); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont) { for (size_t iprit = 0; iprit < m_vprit.size(); iprit++) { m_vprit[iprit]->RewriteSlotAttrAssignments(pcman, pfont); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::RewriteSlotAttrAssignments(GrcManager * /*pcman*/, GrcFont * /*pfont*/) { // Do nothing. } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont) { int ipavsColFlags = -1; int ipavsColRange = -1; int ipavsColPriority = -1; for (auto ipavs = 0U; ipavs < m_vpavs.size(); ++ipavs) { GdlAttrValueSpec * pavsShift; GdlAttrValueSpec * pavsAdvance; bool fKern = m_vpavs[ipavs]->ReplaceKern(pcman, &pavsShift, &pavsAdvance); if (fKern) { delete m_vpavs[ipavs]; m_vpavs[ipavs] = pavsShift; m_vpavs.insert(m_vpavs.begin() + ipavs + 1, pavsAdvance); ipavs++; } if (m_vpavs[ipavs]->m_psymName->FieldIs(0, "collision")) { if (m_vpavs[ipavs]->m_psymName->FieldIs(1, "flags")) ipavsColFlags = ipavs; else if (m_vpavs[ipavs]->m_psymName->FieldIs(1, "range")) ipavsColRange = ipavs; else if (m_vpavs[ipavs]->m_psymName->FieldIs(1, "priority")) ipavsColPriority = ipavs; } } MergeColRangeAndPriority(pcman, pfont, ipavsColFlags, ipavsColRange, ipavsColPriority); } /*---------------------------------------------------------------------------------------------- If this a statement setting the kern attribute, generate the corresponding shift and advance statements, and return true. Return false otherwise. Specifically, kern.x = -10m becomes shift.x = -10m; adv.x = advancewidth - 10m kern.x += 10m becomes shift.x += 10m; adv.x += 10m ----------------------------------------------------------------------------------------------*/ bool GdlAttrValueSpec::ReplaceKern(GrcManager * pcman, GdlAttrValueSpec ** ppavsShift, GdlAttrValueSpec ** ppavsAdvance) { if (!m_psymName->FieldIs(0, "kern")) return false; GrcStructName xns; m_psymName->GetStructuredName(&xns); xns.DeleteField(0); xns.InsertField(0, "advance"); Symbol psymNameAdvance = pcman->SymbolTable()->FindSymbol(xns); if (!psymNameAdvance) { g_errorList.AddError(3132, this, "Invalid kern assignment"); return false; } xns.DeleteField(0); xns.InsertField(0, "shift"); Symbol psymNameShift = pcman->SymbolTable()->FindSymbol(xns); if (!psymNameShift) { g_errorList.AddError(3133, this, "Invalid kern assignment"); return false; } GdlExpression * pexpValueShift = m_pexpValue->Clone(); *ppavsShift = new GdlAttrValueSpec(psymNameShift, m_psymOperator, pexpValueShift); GdlExpression * pexpValueAdvance = m_pexpValue->Clone(); if (m_psymOperator->FieldIs(0, "=")) { // Base 'advance' off of advancewidth (or advanceheight). Symbol psymAdvMetric = pcman->SymbolTable()->FindSymbol("advancewidth"); if (xns.FieldEquals(1, "y")) psymAdvMetric = pcman->SymbolTable()->FindSymbol("advanceheight"); Assert(psymAdvMetric); GdlLookupExpression * pexplook = new GdlLookupExpression(psymAdvMetric); Symbol psymPlus = pcman->SymbolTable()->FindSymbol("+"); Assert(psymPlus); pexpValueAdvance = new GdlBinaryExpression(psymPlus, pexplook, pexpValueAdvance); } *ppavsAdvance = new GdlAttrValueSpec(psymNameAdvance, m_psymOperator, pexpValueAdvance); return true; } /*---------------------------------------------------------------------------------------------- Merge the collision.range and collision.priority attributes into collision.flags. TODO: DELETE - priority is no longer defined ----------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::MergeColRangeAndPriority(GrcManager * pcman, GrcFont * pfont, int ipavsFlags, int ipavsRange, int ipavsPriority) { if (ipavsRange == -1 && ipavsPriority == -1) return; Symbol psymCollisionFlags = pcman->SymbolTable()->FindSymbol(GrcStructName("collision", "flags")); Symbol psymEquals = pcman->SymbolTable()->FindSymbol("="); GdlExpression * pexpFlagsOld = nullptr; GdlExpression * pexpRange = nullptr; GdlExpression * pexpPriority = nullptr; if (ipavsFlags >= 0) pexpFlagsOld = m_vpavs[ipavsFlags]->m_pexpValue->Clone(); if (ipavsRange >= 0) pexpRange = m_vpavs[ipavsRange]->m_pexpValue->Clone(); if (ipavsPriority >= 0) pexpPriority = m_vpavs[ipavsPriority]->m_pexpValue->Clone(); Symbol psymPlus = pcman->SymbolTable()->FindSymbol("+"); GdlExpression * pexpFlagsTemp = nullptr; GdlExpression * pexpFlags; SymbolSet setpsymBogus; bool fCanSub; if (pexpRange && pexpPriority) { pexpFlagsTemp = new GdlBinaryExpression(psymPlus, pexpRange, pexpPriority); if (pexpFlagsOld) pexpFlagsTemp = new GdlBinaryExpression(psymPlus, pexpFlagsOld, pexpFlagsTemp); } else if (pexpRange && pexpFlagsOld) pexpFlagsTemp = new GdlBinaryExpression(psymPlus, pexpRange, pexpFlagsOld); else if (pexpPriority && pexpFlagsOld) pexpFlagsTemp = new GdlBinaryExpression(psymPlus, pexpPriority, pexpFlagsOld); else if (pexpRange) pexpFlagsTemp = pexpRange; else if (pexpPriority) pexpFlagsTemp = pexpPriority; assert(pexpFlagsTemp); pexpFlags = pexpFlagsTemp->SimplifyAndUnscale(pcman->GlyphAttrMatrix(), -1, setpsymBogus, pfont, false, &fCanSub); if (pexpFlagsTemp != pexpFlags) delete pexpFlagsTemp; GdlAttrValueSpec * pavsFlagsNew = new GdlAttrValueSpec(psymCollisionFlags, psymEquals, pexpFlags); if (ipavsFlags >= 0) { ReplaceAttrSetting(ipavsFlags, pavsFlagsNew); if (ipavsRange >= 0) EraseAttrSetting(ipavsRange); if (ipavsPriority >= 0) EraseAttrSetting(ipavsPriority); } else if (ipavsRange >= 0) { ReplaceAttrSetting(ipavsRange, pavsFlagsNew); if (ipavsPriority >= 0) EraseAttrSetting(ipavsPriority); } else { ReplaceAttrSetting(ipavsPriority, pavsFlagsNew); } } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Check that the rules and glyph attributes are compatible with the requested version of the Silf table. If not, return the version required. Also return the compiler version needed to support the GDL. This routine assumes that we can always sucessfully use a later version. ----------------------------------------------------------------------------------------------*/ bool GrcManager::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints) { *pfxdSilfNeeded = fxdVersion; if (fxdVersion >= kfxdMaxSilfVersion) return true; if (!m_fBasicJust) { // We need version 2.0 for basic justification. *pfxdSilfNeeded = max(0x00020000, *pfxdSilfNeeded); *pfxdCpilrNeeded = max(0x00020000, *pfxdCpilrNeeded); } if (m_vpglfcReplcmtClasses.size() >= kMaxReplcmtClassesV1_2) { // For a large set of replacement classes, we need 3.0. *pfxdSilfNeeded = max(0x00030000, *pfxdSilfNeeded); *pfxdCpilrNeeded = max(0x00030000, *pfxdCpilrNeeded); } // For now, the Glat table version does not affect the other tables. //if (m_vpsymGlyphAttrs.size() >= kMaxGlyphAttrsGlat1) //{ // // For a large number of glyph attributes, we need 3.0. // *pfxdNeeded = max(0x00030000, *pfxdNeeded); //} if (*pfxdSilfNeeded > fxdVersion) *pfFixPassConstraints = false; bool fRet = (*pfxdSilfNeeded <= fxdVersion); fRet = (m_prndr->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded, pfFixPassConstraints) && fRet); return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlRenderer::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints) { bool fRet = true; // Glyph atrributes: for (size_t ipglfc = 0; ipglfc < m_vpglfc.size(); ipglfc++) { fRet = m_vpglfc[ipglfc]->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded) && fRet; if (!fRet) *pfFixPassConstraints = false; // something else is a problem } // Rules: for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { fRet = m_vprultbl[iprultbl]->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded, pfFixPassConstraints) && fRet; } return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded) { bool fRet = true; // For each attribute assignment in the value list: for (size_t ipglfa = 0; ipglfa < m_vpglfaAttrs.size(); ipglfa++) { Symbol psym = m_vpglfaAttrs[ipglfa]->GlyphSymbol(); if (psym->IsMeasureAttr() || psym->DoesJustification()) { // For justification, we need Silf version 2.0. fRet = (fxdVersion >= 0x00020000); *pfxdSilfNeeded = max(*pfxdSilfNeeded, 0x00020000); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00020000); } else if (psym->IsMirrorAttr()) { // For mirroring, we need version Silf 2.1 or 3.2. fRet = (fxdVersion >= 0x00020000); if (*pfxdSilfNeeded < 0x00030000) *pfxdSilfNeeded = max(*pfxdSilfNeeded, 0x00020001); else *pfxdSilfNeeded = max(*pfxdSilfNeeded, 0x00030002); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00040001); } else if (psym->IsCollisionAttr()) { *pfxdSilfNeeded = max(*pfxdSilfNeeded, 0x00040001); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00050000); } } return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlRuleTable::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints) { bool fRet = true; for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { fRet = m_vppass[ippass]->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded, pfFixPassConstraints) && fRet; } return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlPass::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints) { bool fRet = true; if (m_vpexpConstraints.size() > 0) { // Pass constraints need 3.1. (Version 3.0 outputs empty pass constraints.) fRet = (fxdVersion >= 0x00030001); *pfxdSilfNeeded = max(*pfxdSilfNeeded, 0x00030001); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00040000); } if (m_nCollisionFix > 0) { fRet = (fxdVersion >= 0x00040001); *pfxdSilfNeeded = max(*pfxdSilfNeeded, 0x00040001); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00050000); } for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { bool fRetTmp = m_vprule[iprule]->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded); if (!fRetTmp) *pfFixPassConstraints = false; // something else is a problem fRet = fRet && fRetTmp; } return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlRule::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded) { bool fRet = true; for (size_t iprit = 0; iprit < m_vprit.size(); iprit++) { fRet = m_vprit[iprit]->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded) && fRet; } return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlRuleItem::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded) { if (m_pexpConstraint) { return m_pexpConstraint->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded); } else return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSetAttrItem::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded) { bool fRet = GdlRuleItem::CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded); for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { fRet = m_vpavs[ipavs]->CompatibleWithVersion(fxdVersion, pfxdSilfNeeded, pfxdCpilrNeeded) && fRet; } return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlAttrValueSpec::CompatibleWithVersion(int fxdVersion, int * pfxdSilfNeeded, int * pfxdCpilrNeeded) { bool fRet = true; if (m_psymName->IsMeasureAttr() || m_psymName->DoesJustification()) { // Measuring and justification need 2.0. *pfxdSilfNeeded = max(*pfxdSilfNeeded, 0x00020000); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00020000); fRet = (fxdVersion >= 0x00020000); } return fRet; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Convert pass constraints to rule constraints. This is needed when the version to be output is earlier than what is compatible with pass constraints. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::MovePassConstraintsToRules(int fxdSilfVersion) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->MovePassConstraintsToRules(fxdSilfVersion); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::MovePassConstraintsToRules(int fxdSilfVersion) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->MovePassConstraintsToRules(fxdSilfVersion); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::MovePassConstraintsToRules(int fxdSilfVersion) { if (m_vpexpConstraints.size() > 0) { g_errorList.AddWarning(3530, this, "Pass constraints are not compatible with version ", VersionString(fxdSilfVersion), "; constraint will be applied directly to rules."); for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->MovePassConstraintsToRule(m_vpexpConstraints); } } // Delete pass constraint(s). for (size_t i = 0; i < m_vpexpConstraints.size(); ++i) delete m_vpexpConstraints[i]; m_vpexpConstraints.clear(); } /*--------------------------------------------------------------------------------------------*/ void GdlRule::MovePassConstraintsToRule(std::vector & m_vpexpPassConstr) { for (size_t ipexp = 0; ipexp < m_vpexpPassConstr.size(); ipexp++) { m_vpexpConstraints.push_back(m_vpexpPassConstr[ipexp]->Clone()); } } /*---------------------------------------------------------------------------------------------- Return the original number of items in the rule. Don't include ANY items. ----------------------------------------------------------------------------------------------*/ int GdlRule::ItemCountOriginal() { int crit = 0; for (size_t irit = 0; irit OutputSymbol()->FullName() != "ANY") crit++; } return crit; } /*---------------------------------------------------------------------------------------------- Return the index of the single item that deletions or insertions can be associated with. Return -1 if there is more than one such item, in which case we can not do an automatic association. ----------------------------------------------------------------------------------------------*/ int GdlRule::FindAutoAssocItem(bool fDelete) { int iritResult = -1; for (auto irit = 0U; irit < m_vprit.size(); ++irit) { GdlRuleItem * prit = m_vprit[irit]; if (prit->OutputSymbol()->FullName() == "ANY") continue; GdlSubstitutionItem * pritSub = dynamic_cast(prit); if (pritSub == NULL || (fDelete && !pritSub->OutputSymbol()->FitsSymbolType(ksymtSpecialUnderscore)) || (!fDelete && !pritSub->InputSymbol()->FitsSymbolType(ksymtSpecialUnderscore))) { if (iritResult != -1) { iritResult = -1; break; // more than one possibility; } else iritResult = irit; } } return iritResult; } /*---------------------------------------------------------------------------------------------- Calculate the space-contextual values for each pass, indicating the kind of situations in which we have spaces in rules. This is needed to allow applications that render on a word-by-word basis to adjust their behavior to take these kinds of rules into account. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::CalculateSpaceContextuals(GrcFont * pfont) { // Add the glyph IDs of all characters that are considered spaces. std::vector vwSpaceGlyphs; utf16 w = pfont->GlyphFromCmap(0x0020, this); // standard space vwSpaceGlyphs.push_back(w); // add any other space characters m_spcon = kspconNone; for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->CalculateSpaceContextuals(&m_spcon, vwSpaceGlyphs); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::CalculateSpaceContextuals(SpaceContextuals * pspconSoFar, std::vector & vwSpaceGlyphs) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->CalculateSpaceContextuals(pspconSoFar, vwSpaceGlyphs); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::CalculateSpaceContextuals(SpaceContextuals * pspconSoFar, std::vector & vwSpaceGlyphs) { // Full auto-kerning has the same effect of putting spaces in the middle of rule. // This is the most lenient setting, so there is no reason to examine every rule. if (m_nAutoKern == kakFull) { *pspconSoFar = kspconAnywhere; } else { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->CalculateSpaceContextuals(pspconSoFar, vwSpaceGlyphs); } } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::CalculateSpaceContextuals(SpaceContextuals * pspconSoFar, std::vector & vwSpaceGlyphs) { if (*pspconSoFar == kspconAnywhere) return; // most lenient setting possible if (m_vprit.size() == 1) { // Single space slot. if (m_vprit[0]->IsSpaceItem(vwSpaceGlyphs)) { if ((int)(*pspconSoFar) <= (int)kspconNone) *pspconSoFar = kspconSingleOnly; } // else no change } else { bool fFirst = false; bool fLast = false; bool fOther = false; if (m_vprit[0]->IsSpaceItem(vwSpaceGlyphs)) fFirst = true; if (m_vprit[m_vprit.size() - 1]->IsSpaceItem(vwSpaceGlyphs)) fLast = true; for (size_t iprit = 1; iprit < m_vprit.size() - 1; iprit++) { if (m_vprit[iprit]->IsSpaceItem(vwSpaceGlyphs)) { fOther = true; break; } } if (fOther) *pspconSoFar = kspconAnywhere; else if (*pspconSoFar == kspconEdgeOnly) {} // no change else if (fFirst && fLast) *pspconSoFar = kspconEdgeOnly; else if ((fFirst && *pspconSoFar == kspconLastOnly) || (fLast && *pspconSoFar == kspconFirstOnly)) *pspconSoFar = kspconEdgeOnly; else if (fFirst) *pspconSoFar = kspconFirstOnly; else if (fLast) *pspconSoFar = kspconLastOnly; // else no change } } /*--------------------------------------------------------------------------------------------*/ bool GdlRuleItem::IsSpaceItem(std::vector & vwSpaceGlyphs) { GdlGlyphClassDefn * pglfc = m_psymInput->GlyphClassDefnData(); if (pglfc) return pglfc->IsSpaceGlyph(vwSpaceGlyphs); else return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::IsSpaceGlyph(std::vector & vwSpaceGlyphs) { if (m_fIsSpaceGlyph == -1) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { if (m_vpglfdMembers[iglfd]->IsSpaceGlyph(vwSpaceGlyphs)) { m_fIsSpaceGlyph = 1; return true; // break; } } m_fIsSpaceGlyph = 0; } return (bool)m_fIsSpaceGlyph; } /*--------------------------------------------------------------------------------------------*/ bool GdlGlyphDefn::IsSpaceGlyph(std::vector & vwSpaceGlyphs) { if (m_fIsSpaceGlyph == -1) { for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { for (size_t iwSp = 0; iwSp < vwSpaceGlyphs.size(); iwSp++) { if (m_vwGlyphIDs[iw] == vwSpaceGlyphs[iwSp]) { m_fIsSpaceGlyph = 1; return true; //break; } } } m_fIsSpaceGlyph = 0; } return (bool)m_fIsSpaceGlyph; } grcompiler-5.2.1/compiler/Fsm.cpp000066400000000000000000001206641411153030700167310ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Fsm.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods for the classes that used in generating the finite state machines. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Generate the finite state machine for each pass. ----------------------------------------------------------------------------------------------*/ void GrcManager::GenerateFsms(char * pchOutputPath) { m_prndr->GenerateFsms(this); if (OutputDebugFiles()) DebugFsm(pchOutputPath); } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::GenerateFsms(GrcManager * pcman) { for(size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { if (pcman->IsVerbose()) std::cout << " table " << iprultbl << " pass"; m_vprultbl[iprultbl]->GenerateFsms(pcman); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::GenerateFsms(GrcManager * pcman) { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { if (pcman->IsVerbose()) std::cout << " " << ippass; m_vppass[ippass]->GenerateFsm(pcman); } if (pcman->IsVerbose()) std::cout << "; "; } /*--------------------------------------------------------------------------------------------*/ void GdlPass::GenerateFsm(GrcManager * pcman) { if (m_nGlobalID == -1) { m_nMaxRuleContext = 0; return; } GenerateFsmMachineClasses(pcman); GenerateFsmTable(pcman); //WalkFsmMachineClasses(); ////////pcman->ClearFsmWorkSpace(); } /*---------------------------------------------------------------------------------------------- Generate the machine classes for the finite state machine for the pass. Process: * By this point, each pass knows which classes need to be included in its FSM, and each of those classes has been assigned an FSM-ID (pertinent to the pass). This was done by the pre-compiler. * For each glyph we figure out what set of source-classes it is a member of; we record the source-class-set (SCS) in a big array indexed by glyph. Note that each SCS defines a machine-class -- a group of glyphs that are considered equivalent for the purposes of matching input. * So for each SCS, we create a machine class, which knows that SCS and also which glyphs have that set as their SCS. These are the glyphs that are members of that machine class. We organize the machine classes in a hash-map. The key for the hash map is based on the SCS, specifically we use the sum of the FSM-IDs for the classes in the set. This enables us, given a glyph, to take its SCS, find candidate machine-classes in the hash map using the key, and then search for the one that has a matching SCS. (This is faster than a linear search through the entire list of machine classes.) At the end of the process we have a list of machine classes that know what glyphs are included, and also each glyph knows which machine class it belongs to. ----------------------------------------------------------------------------------------------*/ void GdlPass::GenerateFsmMachineClasses(GrcManager * pcman) { if (m_nGlobalID == -1 || m_vprule.size() == 0) return; // no rules in this pass InitializeFsmArrays(); // working arrays // Get a list of all the glyph classes that need to be included in the FSM for this // pass. std::vector * pvpglfcThisPass = pcman->FsmClassesForPass(m_nGlobalID); // For all the glyphs in the classes, record the fact that the glyph is a member // of the class. for (size_t i = 0; i < pvpglfcThisPass->size(); i++) (*pvpglfcThisPass)[i]->RecordInclusionInClass(this); // SortFsmInclusions(); // not needed since we are working with sets // At this point each glyph has a set of source classes it is a member of. // That set serves as a unique identifier indicating the machine class. Ie, for // each combination of source classes, we have a different machine class. for (utf16 w = 0; w < kMaxTotalGlyphs; w++) { int ifsmcColumn = AssignGlyphIDToMachineClasses(w, m_nGlobalID); if (ifsmcColumn > -1) { std::pair hmPair; hmPair.first = w; hmPair.second = ifsmcColumn; m_hmGlyphToColumn.insert(hmPair); //m_hmGlyphToColumn.Insert(w, ifsmcColumn); } } // TODO SharonC: for each machine class, generate debug string based on source class list. if (m_critMaxPreContext > m_critMinPreContext) { // The ANY class is (probably) being used in the leading context for some of the rules. // Make sure there is a class that corresponds to exactly the ANY class and no other. // (This is needed to match non-existent glyphs before the beginning of the stream.) Symbol psymAnyClass = pcman->SymbolTable()->FindSymbol("ANY"); GdlGlyphClassDefn * pglfc = psymAnyClass->GlyphClassDefnData(); Assert(pglfc); bool fFound = false; for (size_t ifsmc = 0; ifsmc < m_vpfsmc.size(); ifsmc++) { if (m_vpfsmc[ifsmc]->MatchesOneSource(pglfc)) { fFound = true; break; } } // The "non-existent glyph" should be a member of the ANY class and no other, so it // should always be possible to find such a machine-class. Assert(fFound); // if (!fFound) // { // // Add a class that corresponds to exactly the ANY class and no other. // FsmMachineClass * pfsmc = new FsmMachineClass(m_nGlobalID); // pfsmc->SetColumn(m_vpfsmc.Size()); // pfsmc->m_scs.Insert(pglfc, false); // m_vpfsmc.Push(pfsmc); // } } } /*---------------------------------------------------------------------------------------------- For the given glyph, use its source-class-set to determine which machine class it is a member of. Create a new machine class if there is not one corresponding to the SCS. Return the column number of the machine class. ----------------------------------------------------------------------------------------------*/ int GdlPass::AssignGlyphIDToMachineClasses(gid16 wGlyphID, int nPassID) { SourceClassSet * pscsThisGlyph = m_rgscsInclusions + wGlyphID; if (pscsThisGlyph->size() == 0) // This glyph does not need to be included in the FSM, because no source classes of // interest included it. return -1; // The key is, somewhat arbitrarily, the sum of the FSM-ID's for all the // source-classes in the SCS. int nKey = MachineClassKey(wGlyphID, nPassID); std::vector * pvpfsmc; FsmMachineClass * pfsmc; std::map::iterator hmit = m_hmMachineClassMap.find(nKey); if (hmit == m_hmMachineClassMap.end()) { // Create a new machine class corresponding to the combination of source classes. // Make this glyph ID be a member of that machine class. pfsmc = new FsmMachineClass(nPassID); pfsmc->SetColumn(int(m_vpfsmc.size())); pfsmc->AddGlyph(wGlyphID); pfsmc->SetSourceClasses(pscsThisGlyph); // Add the new machine class to the master list. m_vpfsmc.push_back(pfsmc); // Put the new machine class in the map, so another glyph ID that is a member of the // same set of source classes can find it. pvpfsmc = new std::vector; pvpfsmc->push_back(pfsmc); std::pair hmPair; hmPair.first = nKey; hmPair.second = pvpfsmc; m_hmMachineClassMap.insert(hmPair); //m_hmMachineClassMap.Insert(nKey, pvpfsmc); } else //if (m_hmMachineClassMap.Retrieve(nKey, &pvpfsmc)) { // We have a list of machine-classes (and their SCS's) whose source-class FSM-ID's // sum up to the key. Look through the list to see if any of them exactly match this // glyph's SCS. pvpfsmc = hmit->second; pfsmc = MachineClassMatching(*pvpfsmc, wGlyphID); if (pfsmc) { // This glyph is part of the same machine class as some previous glyph(s). pfsmc->AddGlyph(wGlyphID); } else { // Create a new machine class corresponding to the combination of source classes. // Make this glyph ID be a member of that machine class. pfsmc = new FsmMachineClass(nPassID); pfsmc->SetColumn(int(m_vpfsmc.size())); pfsmc->AddGlyph(wGlyphID); pfsmc->SetSourceClasses(pscsThisGlyph); // Add the new machine class to the master list. m_vpfsmc.push_back(pfsmc); // Add the new machine class to the vector for this key, where it belongs. pvpfsmc->push_back(pfsmc); } } // Record the fact that this glyph is assigned to the machine class that we found // or created. m_rgpfsmcAssignments[wGlyphID] = pfsmc; return pfsmc->Column(); } /*---------------------------------------------------------------------------------------------- For the given glyph ID, answer the key to use in looking up its machine class in the map. The key is the sum of the ID's of the source classes in this glyph's set. This key mechanism is just a convenient way of partioning the various vectors. ----------------------------------------------------------------------------------------------*/ int GdlPass::MachineClassKey(gid16 wGlyphID, int nPassID) { SourceClassSet * pscs = m_rgscsInclusions + wGlyphID; int nKey = 0; for (SourceClassSet::iterator itscs = pscs->begin(); itscs != pscs->end(); ++itscs) { Assert((*itscs)->FsmID(nPassID) > -1); nKey += (*itscs)->FsmID(nPassID); } return nKey; } int FsmMachineClass::Key(int ipass) { int nKey = 0; for (SourceClassSet::iterator itscs = m_scs.begin(); itscs != m_scs.end(); ++itscs) { Assert((*itscs)->FsmID(ipass) > -1); nKey += (*itscs)->FsmID(ipass); } return nKey; } /*---------------------------------------------------------------------------------------------- Add a glyph ID to a machine class. Do it in a way that ensures the list will be sorted. ----------------------------------------------------------------------------------------------*/ void FsmMachineClass::AddGlyph(utf16 w) { if (m_wGlyphs.size() == 0) { m_wGlyphs.push_back(w); return; } // Short-cut for common case: if (w > m_wGlyphs.back()) { m_wGlyphs.push_back(w); return; } uintptr_t iLow = 0; uintptr_t iHigh = m_wGlyphs.size(); while (iHigh - iLow > 1) { auto iMid = (iHigh + iLow) >> 1; // divide by 2 if (w == m_wGlyphs[iMid]) return; if (w < m_wGlyphs[iMid]) iHigh = iMid; else iLow = iMid; } if (w < m_wGlyphs[iLow]) m_wGlyphs.insert(m_wGlyphs.begin() + iLow, w); else if (w > m_wGlyphs[iLow]) { Assert(static_cast(iHigh) == m_wGlyphs.size() || w < m_wGlyphs[iHigh]); m_wGlyphs.insert(m_wGlyphs.begin() + iLow + 1, w); } } /*---------------------------------------------------------------------------------------------- If there is a machine class in the given vector whose source-class-set matches the source-class-set for the given glyph, return it, otherwise return NULL. ----------------------------------------------------------------------------------------------*/ FsmMachineClass * GdlPass::MachineClassMatching(std::vector & vpfsmc, gid16 wGlyphID) { SourceClassSet * pscsForGlyph = m_rgscsInclusions + wGlyphID; for (size_t ipfsmc = 0; ipfsmc < vpfsmc.size(); ipfsmc++) { FsmMachineClass * pfsmc = vpfsmc[ipfsmc]; if (pfsmc->MatchesSources(pscsForGlyph)) return pfsmc; } return NULL; } /*---------------------------------------------------------------------------------------------- Return true if the given source-class-set matches the recipient's SCS; return false if they do not match. ----------------------------------------------------------------------------------------------*/ bool FsmMachineClass::MatchesSources(SourceClassSet * pscs) { if (m_scs.size() != pscs->size()) return false; for (SourceClassSet::iterator itscs = m_scs.begin(); itscs != m_scs.end(); ++itscs) { if (pscs->find(*itscs) == pscs->end()) // not a member return false; } return true; } /*---------------------------------------------------------------------------------------------- Return true if the given source-class-set has exactly one item which is the given class. ----------------------------------------------------------------------------------------------*/ bool FsmMachineClass::MatchesOneSource(GdlGlyphClassDefn * pglfc) { if (m_scs.size() != 1) return false; return (*(m_scs.begin()) == pglfc); } /*---------------------------------------------------------------------------------------------- Initialize the working arrays that are used in the FSM generation. ----------------------------------------------------------------------------------------------*/ void GdlPass::InitializeFsmArrays() { for (int w = 0; w < kMaxTotalGlyphs; w++) { m_rgscsInclusions[w].clear(); m_rgpfsmcAssignments[w] = NULL; } } /*---------------------------------------------------------------------------------------------- Return a list of all the classes that need to be included in the FSM for the given pass. ----------------------------------------------------------------------------------------------*/ std::vector * GrcManager::FsmClassesForPass(int nPassID) { return m_prgvpglfcFsmClasses + nPassID; } /*---------------------------------------------------------------------------------------------- For each glyph ID that is a member of the class, record the fact that it is a member of this class. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::RecordInclusionInClass(GdlPass * ppass) { RecordInclusionInClass(ppass, this); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::RecordInclusionInClass(GdlPass * ppass, GdlGlyphClassDefn * pglfc) { for (size_t ipglfd = 0; ipglfd < m_vpglfdMembers.size(); ipglfd++) m_vpglfdMembers[ipglfd]->RecordInclusionInClass(ppass, pglfc); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::RecordInclusionInClass(GdlPass * ppass, GdlGlyphClassDefn * pglfc) { for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { gid16 wGlyphID = m_vwGlyphIDs[iw]; ppass->RecordInclusionInClass(wGlyphID, pglfc); } } /*---------------------------------------------------------------------------------------------- Record the fact that the given glyph ID is a member of the given class. ----------------------------------------------------------------------------------------------*/ void GdlPass::RecordInclusionInClass(gid16 wGlyphID, GdlGlyphClassDefn * pglfc) { SourceClassSet * pscs = m_rgscsInclusions + wGlyphID; if (pscs->find(pglfc) == pscs->end()) // not a member pscs->insert(pglfc); } /*---------------------------------------------------------------------------------------------- Sort the list of source-classes-glyphs-are-included-in by their FSM ID. These source-class lists serve as unique identifiers; each combination of source-classes corresponds to a different machine class. So sorting them makes it straightforward to compare them for equality. Not needed since we are using sets. ----------------------------------------------------------------------------------------------*/ //void GdlPass::SortFsmInclusions() //{ // for (int w = 0; w < kMaxTotalGlyphs; w++) // { // std::vector vpglfcToSort = m_rgscsInclusions[w]; // std::vector vpglfcSorted; // // // Sort the list by FSM ID. // while (vpglfcToSort.size()) // { // int iFirst = 0; // for (size_t i = 1; i < vpglfcToSort.size(); i++) // { // if (vpglfcToSort[i].FsmID(nPassID) < vpglfcToSort[iFirst].FsmID(nPassID)) // iFirst = i; // } // vpglfcSorted.push_back(vpglfcToSort[iFirst]); // vpglfcToSort.erase(vpglfcToSort.begin() + iFirst); // } // vpglfcToSort.clear(); // vpglfcToSort.assign(vpglfcSorted); // } //} /*---------------------------------------------------------------------------------------------- Generate the actual FSM table for the pass. Process: * Initialize the table with the start state, corresponding to 0 slots matched. * For each rule in the pass, add a state corresponding to 1 slot matched. Keep track of the relevant rule(s) and whether the new state is a terminating state for the rule(s). * When we have created all the 1-slot-matched states, merge any equivalent states.... * For each 1-slot-matched, add 2-slots-matched states for any rules with at least 2 slots. Keep track of the relevant rule(s) and whether the new state is a terminating state for the rule(s). * When we have created all the 2-slots-matched states, merge any equivalent states. * Continue this process until we have created terminating states for every rule (ie, N-slots-matched state where the rule has N slots). ----------------------------------------------------------------------------------------------*/ void GdlPass::GenerateFsmTable(GrcManager * pcman) { // Hungarian: ifs = index of FsmState if (pcman->IsVerbose()) std::cout << " (mc " << NumberOfFsmMachineClasses() << " fsm"; if (m_nGlobalID == -1 || m_vprule.size() == 0) { m_nMaxRuleContext = 0; m_pfsm = NULL; if (pcman->IsVerbose()) std::cout << " 0)"; return; } m_pfsm = new FsmTable(m_nGlobalID, NumberOfFsmMachineClasses()); Assert(m_pfsm->RawNumberOfStates() == 0); // Create the start state, equivalent to no slots matched. m_pfsm->AddState(0); unsigned int ifsCurrent = 0; // Index of the first state whose slot-count == the slot count of currState, ie, the // beginning of the state range which may need to be fixed up as we merge. unsigned int ifsCurrSlotCntMin = 0; // Index of first state whose slot-count == slot count of currState + 1, ie, the // beginning of the state range in which to check for duplicates. unsigned int ifsNextSlotCntMin = 1; while (ifsCurrent < m_pfsm->RawNumberOfStates()) { FsmState * pfstateCurr = m_pfsm->RawStateAt(ifsCurrent); int critSlotsMatched = pfstateCurr->SlotsMatched(); if (!pfstateCurr->HasBeenMerged()) { for (auto iprule = 0U; iprule < m_vprule.size(); ++iprule) { GdlRule * prule = m_vprule[iprule]; if (ifsCurrent == 0 || // for state #0, all rules are consider matched pfstateCurr->RuleMatched(iprule)) { if (pfstateCurr->SlotsMatched() == prule->NumberOfInputItems()) { pfstateCurr->AddRuleToSuccessList(iprule); } else { FsmMachineClassSet setpfsmc; GetMachineClassesForRuleItem(prule, critSlotsMatched, setpfsmc); for (FsmMachineClassSet::iterator it = setpfsmc.begin(); it != setpfsmc.end(); ++it) { FsmMachineClass * pfsmc = *it; int ifsmcColumn = pfsmc->Column(); int ifsNextState = pfstateCurr->CellValue(ifsmcColumn); if (ifsNextState == 0) { // Add a new state. ifsNextState = int(m_pfsm->RawNumberOfStates()); m_pfsm->AddState(critSlotsMatched + 1); pfstateCurr->SetCellValue(ifsmcColumn, ifsNextState); } // Store this rule as one matched for this state. m_pfsm->RawStateAt(ifsNextState)->AddRuleToMatchedList(iprule); } } } } } if (m_pfsm->RawNumberOfStates() > (ifsCurrent + 1) && m_pfsm->RawStateAt(ifsCurrent + 1)->SlotsMatched() != critSlotsMatched) { // We have just finished processing a group of states with critSlotsMatched, // which had the effect of creating a group of states where slots-matched == // critSlotsMatched + 1. There could be duplicates in the latter group, // which are pointed at by the former group. Mark the duplicates so that they // point to the earlier identical state. (Note that since we are currently // not actually deleting the duplicates, we don't need to fix up the earlier // group.) MergeIdenticalStates(ifsCurrSlotCntMin, ifsNextSlotCntMin, int(m_pfsm->RawNumberOfStates())); ifsCurrSlotCntMin = ifsNextSlotCntMin; ifsNextSlotCntMin = int(m_pfsm->RawNumberOfStates()); } ifsCurrent++; // go on to next state } if (pcman->IsVerbose()) std::cout << " " << ifsCurrent; m_nMaxRuleContext = m_pfsm->RawStateAt(ifsCurrent - 1)->m_critSlotsMatched; ReorderFsmStates(pcman); if (pcman->IsVerbose()) std::cout << ")"; GenerateStartStates(pcman); } /*---------------------------------------------------------------------------------------------- Merge identical states in the FSM. Arguments: ifsFixMin - beginning of range that may need to have their cells fixed up; currently not used, because we are not fixing up the cells ifsCheckMin - beginning of range that may have duplicates; also Lim of range that may need to have cells fixed ifsCheckLim - lim of range that may have duplicates ----------------------------------------------------------------------------------------------*/ void GdlPass::MergeIdenticalStates(int /*ifsFixMin*/, int ifsCheckMin, int ifsCheckLim) { // Work backwards so that we can delete with impunity. However, currently this algorithm // doesn't actually delete, it just sets pointers from the invalid to the valid // states. for (int ifsLoop = ifsCheckLim; --ifsLoop >= ifsCheckMin;) { int ifsIdentical; if ((ifsIdentical = FindIdenticalState(ifsLoop, ifsCheckMin)) > -1) m_pfsm->RawStateAt(ifsLoop)->SetMergedState(m_pfsm->RawStateAt(ifsIdentical)); } } /*---------------------------------------------------------------------------------------------- Find a previous state that is identical to the given state. Return its index, or -1 if none. Arguments: ifsToMatch - index of state to match ifsMin - beginning of range to search ----------------------------------------------------------------------------------------------*/ int GdlPass::FindIdenticalState(int ifsToMatch, int ifsMin) { FsmState * pfstateToMatch = m_pfsm->RawStateAt(ifsToMatch); Assert(!pfstateToMatch->HasBeenMerged()); for (int ifsLoop = ifsMin; ifsLoop < ifsToMatch; ifsLoop++) { FsmState * pfstateToTry = m_pfsm->RawStateAt(ifsLoop); if (pfstateToTry->HasBeenMerged()) continue; if (pfstateToMatch->StatesMatch(pfstateToTry)) return ifsLoop; } return -1; } /*---------------------------------------------------------------------------------------------- Return true if the recipient state is identical to the argument state, ie, if they have the same rules matched and succeeded. ----------------------------------------------------------------------------------------------*/ bool FsmState::StatesMatch(FsmState * pfstate) { Assert(m_critSlotsMatched == pfstate->m_critSlotsMatched); if (NumberOfRulesMatched() != pfstate->NumberOfRulesMatched()) return false; if (NumberOfRulesSucceeded() != pfstate->NumberOfRulesSucceeded()) return false; std::set::iterator it; for (it = m_setiruleMatched.begin(); it != m_setiruleMatched.end(); ++it) { if (!pfstate->RuleMatched(*it)) return false; } for (it = m_setiruleSuccess.begin(); it != m_setiruleSuccess.end(); ++it) { if (!pfstate->RuleSucceeded(*it)) return false; } return true; } /*---------------------------------------------------------------------------------------------- Fill in the set with all the machine classes included in the source class of the irit'th input item in the given rule. ----------------------------------------------------------------------------------------------*/ void GdlPass::GetMachineClassesForRuleItem(GdlRule * prule, int irit, FsmMachineClassSet & setpfsmc) { GdlRuleItem * prit = prule->InputItem(irit); Assert(prit); prit->GetMachineClasses(m_rgpfsmcAssignments, setpfsmc); } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::GetMachineClasses(FsmMachineClass ** ppfsmcAssignments, FsmMachineClassSet & setpfsmc) { GdlGlyphClassDefn * pglfc = m_psymInput->GlyphClassDefnData(); if (!pglfc) return; pglfc->GetMachineClasses(ppfsmcAssignments, setpfsmc); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::GetMachineClasses(FsmMachineClass ** ppfsmcAssignments, FsmMachineClassSet & setpfsmc) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) m_vpglfdMembers[iglfd]->GetMachineClasses(ppfsmcAssignments, setpfsmc); } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::GetMachineClasses(FsmMachineClass ** ppfsmcAssignments, FsmMachineClassSet & setpfsmc) { for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { gid16 wGlyphID = m_vwGlyphIDs[iw]; FsmMachineClass * pfsmc = ppfsmcAssignments[wGlyphID]; if (setpfsmc.find(pfsmc) == setpfsmc.end()) // not a member { setpfsmc.insert(pfsmc); } } } /*---------------------------------------------------------------------------------------------- Return the item whose input index is the given value. ----------------------------------------------------------------------------------------------*/ GdlRuleItem * GdlRule::InputItem(int n) { for (size_t i = 0; i < m_vprit.size(); i++) { if (m_vprit[i]->m_nInputIndex == n) return m_vprit[i]; } return NULL; } /*---------------------------------------------------------------------------------------------- Return the number of input items in the rule, that is, the number of items minus the number of insertions. ----------------------------------------------------------------------------------------------*/ size_t GdlRule::NumberOfInputItems() { size_t cRet = 0; for (auto const prit: m_vprit) { if (prit->m_nInputIndex >= 0) cRet++; } return cRet; } /*---------------------------------------------------------------------------------------------- Assign adjusted indices to the states in the FSM, causing them to be reordered in the following way: first: transitional non-success states next: transitional success states (a rule matches, but a longer one is possible) last: non-transtional success states (a rule matches and no longer one is possible) (Non-transitional non-success states are an error!) Merged states have the same index as the state they are merged with. ----------------------------------------------------------------------------------------------*/ void GdlPass::ReorderFsmStates(GrcManager * pcman) { m_vifsWorkToFinal.resize(m_pfsm->RawNumberOfStates(), -1); Assert(m_vifsFinalToWork.size() == 0); int ifsFinal = 0; // First look for transitional non-success states. for (auto ifsWork = 0U; ifsWork < m_pfsm->RawNumberOfStates(); ++ifsWork) { FsmState * pfstate = m_pfsm->RawStateAt(ifsWork); Assert(m_vifsWorkToFinal[ifsWork] == -1); if (!pfstate->HasBeenMerged()) { if (pfstate->NumberOfRulesSucceeded() == 0) { Assert(!pfstate->AllCellsEmpty()); m_vifsWorkToFinal[ifsWork] = ifsFinal; pfstate->SetFinalIndex(ifsFinal); m_vifsFinalToWork.push_back(ifsWork); ifsFinal++; } } } // Next look for transitional success states. for (auto ifsWork = 0U; ifsWork < m_pfsm->RawNumberOfStates(); ++ifsWork) { FsmState * pfstate = m_pfsm->RawStateAt(ifsWork); if (!pfstate->HasBeenMerged() && m_vifsWorkToFinal[ifsWork] == -1) { if (pfstate->NumberOfRulesSucceeded() > 0 && !pfstate->AllCellsEmpty()) { m_vifsWorkToFinal[ifsWork] = ifsFinal; pfstate->SetFinalIndex(ifsFinal); m_vifsFinalToWork.push_back(ifsWork); ifsFinal++; } } } // Last look for non-transitional success states. for (auto ifsWork = 0U; ifsWork < m_pfsm->RawNumberOfStates(); ++ifsWork) { FsmState * pfstate = m_pfsm->RawStateAt(ifsWork); if (!pfstate->HasBeenMerged() && m_vifsWorkToFinal[ifsWork] == -1) { if (pfstate->NumberOfRulesSucceeded() > 0 && pfstate->AllCellsEmpty()) { m_vifsWorkToFinal[ifsWork] = ifsFinal; pfstate->SetFinalIndex(ifsFinal); m_vifsFinalToWork.push_back(ifsWork); ifsFinal++; } } } if (pcman->IsVerbose()) std::cout << " " << ifsFinal; } /*---------------------------------------------------------------------------------------------- Return the number of machine classes for this pass's FSM. ----------------------------------------------------------------------------------------------*/ size_t GdlPass::NumberOfFsmMachineClasses() { return m_vpfsmc.size(); } /*---------------------------------------------------------------------------------------------- Return the total number of glyph sub-ranges for all the columns in the FSM. Glyph sub-ranges consist of ranges of contiguous glyph IDs. ----------------------------------------------------------------------------------------------*/ size_t GdlPass::TotalNumGlyphSubRanges() { size_t cRanges = 0; for (size_t i = 0; i < m_vpfsmc.size(); i++) cRanges += m_vpfsmc[i]->NumberOfRanges(); return cRanges; } /*---------------------------------------------------------------------------------------------- Return the number of glyph sub-ranges for the machine class. Glyph sub-ranges consist of ranges of contiguous glyph IDs. ----------------------------------------------------------------------------------------------*/ size_t FsmMachineClass::NumberOfRanges() { Assert(m_wGlyphs.size() > 0); size_t cRanges = 1; for (size_t i = 1; i < m_wGlyphs.size(); i++) { if (m_wGlyphs[i] > m_wGlyphs[i - 1] + 1) cRanges++; } return cRanges; } /*---------------------------------------------------------------------------------------------- Return the total nubmer of states in the FSM. ----------------------------------------------------------------------------------------------*/ size_t GdlPass::NumStates() { return m_vifsFinalToWork.size(); } /*---------------------------------------------------------------------------------------------- Return the number of accepting (transitional success) states in the FSM. ----------------------------------------------------------------------------------------------*/ size_t GdlPass::NumAcceptingStates() { size_t cRet = 0; for (auto const fs: m_vifsFinalToWork) { FsmState * pfstate = m_pfsm->StateAt(fs); Assert(!pfstate->HasBeenMerged()); if (pfstate->NumberOfRulesSucceeded() > 0 && !pfstate->AllCellsEmpty()) cRet++; } return cRet; } /*---------------------------------------------------------------------------------------------- Return the number of success states (where a rule is matched) in the FSM. ----------------------------------------------------------------------------------------------*/ size_t GdlPass::NumSuccessStates() { size_t cRet = 0; for (auto const fs: m_vifsFinalToWork) { FsmState * pfstate = m_pfsm->StateAt(fs); Assert(!pfstate->HasBeenMerged()); if (pfstate->NumberOfRulesSucceeded() > 0) cRet++; } return cRet; } /*---------------------------------------------------------------------------------------------- Return the number of transitional states in the FSM. ----------------------------------------------------------------------------------------------*/ size_t GdlPass::NumTransitionalStates() { size_t cRet = 0; for (auto const fs: m_vifsFinalToWork) { FsmState * pfstate = m_pfsm->StateAt(fs); Assert(!pfstate->HasBeenMerged()); if (!pfstate->AllCellsEmpty()) cRet++; } return cRet; } /*---------------------------------------------------------------------------------------------- Return the number of final (non-transitional success) states in the FSM. ----------------------------------------------------------------------------------------------*/ size_t GdlPass::NumFinalStates() { size_t cRet = 0; for (auto const fs: m_vifsFinalToWork) { FsmState * pfstate = m_pfsm->StateAt(fs); Assert(!pfstate->HasBeenMerged()); if (pfstate->NumberOfRulesSucceeded() > 0 && pfstate->AllCellsEmpty()) cRet++; } return cRet; } /*---------------------------------------------------------------------------------------------- Generate the start states corresponding to the number of items to skip when we are near the beginning of the input. Do this by tracing the phantom glyph through the table for as many steps as we need. ----------------------------------------------------------------------------------------------*/ void GdlPass::GenerateStartStates(GrcManager * pcman) { utf16 wPhantomGlyph = pcman->PhantomGlyph(); int ifsmcPhantom; std::map::iterator hmit = m_hmGlyphToColumn.find(wPhantomGlyph); if (hmit == m_hmGlyphToColumn.end()) // no value //if (!m_hmGlyphToColumn.Retrieve(wPhantomGlyph, &ifsmcPhantom)) ifsmcPhantom = -1; else ifsmcPhantom = hmit->second; // The first state is always zero. int row = 0; for (auto i = 0U; i < (m_critMaxPreContext - m_critMinPreContext + 1); ++i) { if (ifsmcPhantom == -1) m_vrowStartStates.push_back(0); else { m_vrowStartStates.push_back(row); FsmState * pfstate = m_pfsm->StateAt(m_vifsFinalToWork[row]); Assert(!pfstate->HasBeenMerged()); int ifsmcValue = pfstate->CellValue(ifsmcPhantom); if (m_pfsm->RawStateAt(ifsmcValue)->HasBeenMerged()) ifsmcValue = m_pfsm->RawStateAt(ifsmcValue)->MergedState()->WorkIndex(); ifsmcValue = m_vifsWorkToFinal[ifsmcValue]; row = ifsmcValue; } } } /*********************************************************************************************** Debuggers ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Walk the FSM. ----------------------------------------------------------------------------------------------*/ void GdlPass::WalkFsmMachineClasses() { FsmMachineClass * pfsmc; for (size_t i = 0; i < m_vpfsmc.size(); i++) { pfsmc = m_vpfsmc[i]; } for (utf16 w = 0; w < kMaxTotalGlyphs; w++) { pfsmc = m_rgpfsmcAssignments[w]; } } /*---------------------------------------------------------------------------------------------- Write a text version of the FSMs out to a file. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugFsm(char * pchOutputPath) { std::string staOutputFilename(pchOutputPath); staOutputFilename.append("/dbg_fsm.txt"); std::ofstream strmOut; strmOut.open(staOutputFilename.data()); if (strmOut.fail()) { g_errorList.AddWarning(6507, NULL, "Error in writing to file ", staOutputFilename.data()); return; } strmOut << "FINITE STATE MACHINES\n\n"; m_prndr->DebugFsm(this, strmOut); strmOut.close(); } /*--------------------------------------------------------------------------------------------*/ void GdlRenderer::DebugFsm(GrcManager * pcman, std::ostream & strmOut) { GdlRuleTable * prultbl; if ((prultbl = FindRuleTable("linebreak")) != NULL) prultbl->DebugFsm(pcman, strmOut); if ((prultbl = FindRuleTable("substitution")) != NULL) prultbl->DebugFsm(pcman, strmOut); if (m_ipassBidi > -1) strmOut << "\nPASS " << m_ipassBidi + 1 << ": bidi\n"; if ((prultbl = FindRuleTable("justification")) != NULL) prultbl->DebugFsm(pcman, strmOut); if ((prultbl = FindRuleTable("positioning")) != NULL) prultbl->DebugFsm(pcman, strmOut); } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::DebugFsm(GrcManager * pcman, std::ostream & strmOut) { strmOut << "\nTABLE: " << m_psymName->FullName() << "\n"; for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->DebugFsm(pcman, strmOut); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::DebugFsm(GrcManager * pcman, std::ostream & strmOut) { int nPassNum = PassDebuggerNumber(); if (m_nGlobalID == -1) { strmOut << "\nPASS: " << nPassNum << "--no FSM\n"; return; } // Output glyph -> column assigments strmOut << "\nPASS: " << nPassNum << "\n\nGlyph ID => Column:\n"; int wFirst = 0; int wLast = 0; int ifsmcColCurr = -1; strmOut.fill(' '); for (int w = 0; w < kMaxTotalGlyphs + 1; w++) { utf16 wTmp = w; int ifsmcColumn; if (w == kMaxTotalGlyphs) ifsmcColumn = -1; else { //if (!m_hmGlyphToColumn.Retrieve(wTmp, &ifsmcColumn)) std::map::iterator hmit = m_hmGlyphToColumn.find(wTmp); if (hmit == m_hmGlyphToColumn.end()) // no value ifsmcColumn = -1; else ifsmcColumn = hmit->second; } if (ifsmcColCurr != ifsmcColumn) { // Output previous group of assignments. if (ifsmcColCurr != -1) { wLast = w - 1; strmOut << std::dec << std::setw(4) << wFirst; if (wFirst < wLast) strmOut << " .." << std::setw(4) << wLast; else strmOut << std::setw(11); strmOut << " => " << ifsmcColCurr << std::endl; } // Start a new group. ifsmcColCurr = ifsmcColumn; wFirst = w; } } // Output table with working indices. /////DebugFsmTable(pcman, strmOut, true); strmOut << std::endl; // Output table with final indices. DebugFsmTable(pcman, strmOut, false); // Output rules. for (size_t irule = 0; irule < m_vprule.size(); irule++) { strmOut << "RULE " << nPassNum << "." << irule << ", "; m_vprule[irule]->LineAndFile().WriteToStream(strmOut, true); strmOut << ": "; m_vprule[irule]->RulePrettyPrint(pcman, strmOut, false); strmOut << "\n\n"; } strmOut << "\n"; } void GdlPass::DebugFsmTable(GrcManager * /*pcman*/, std::ostream & strmOut, bool fWorking) { if (m_pfsm == NULL) { strmOut << "No fsm\n"; return; } auto const cfsmc = m_pfsm->NumberOfColumns(); if (fWorking) strmOut << "\nWorking Table: "; else strmOut << "\nFinal Table: "; for (auto ifsmc = 0U; ifsmc < cfsmc; ++ifsmc) // column headers OutputNumber(strmOut, ifsmc, 6); strmOut << "\n "; for (auto ifsmc = 0U; ifsmc < cfsmc; ++ifsmc) strmOut << "- - - "; auto ifsLim = (fWorking)? m_pfsm->RawNumberOfStates() : m_vifsFinalToWork.size(); for (auto ifs = 0U; ifs < ifsLim; ++ifs) { FsmState * pfstate = (fWorking) ? m_pfsm->RawStateAt(ifs) : m_pfsm->StateAt(m_vifsFinalToWork[ifs]); strmOut << "\n" << ifs << ": " << pfstate->SlotsMatched() << "\n"; if (pfstate->HasBeenMerged()) { Assert(fWorking); strmOut << " => state #" << pfstate->MergedState()->WorkIndex(); } else { strmOut << " "; for (auto ifsmc = 0U; ifsmc < cfsmc; ++ifsmc) { strmOut << " "; int ifsmcValue = pfstate->CellValue(ifsmc); if (!fWorking) { if (m_pfsm->RawStateAt(ifsmcValue)->HasBeenMerged()) ifsmcValue = m_pfsm->RawStateAt(ifsmcValue)->MergedState()->WorkIndex(); ifsmcValue = m_vifsWorkToFinal[ifsmcValue]; } OutputNumber(strmOut, ifsmcValue, 5); } } pfstate->DebugFsmState(strmOut, ifs); } strmOut << "\n "; for (auto ifsmc = 0U; ifsmc < cfsmc; ++ifsmc) strmOut << "- - - "; strmOut << "\n\n"; } void FsmState::DebugFsmState(std::ostream & strmOut, int /*ifs*/) { strmOut << "\n Matched="; std::set::iterator it; for (it = m_setiruleMatched.begin(); it != m_setiruleMatched.end(); ++it) { strmOut << *it << ","; } if (m_setiruleMatched.size() == 0) strmOut << "none"; strmOut << "\n Success="; for (it = m_setiruleSuccess.begin(); it != m_setiruleSuccess.end(); ++it) { strmOut << *it << ","; } if (m_setiruleSuccess.size() == 0) strmOut << "none"; strmOut << "\n"; } void OutputNumber(std::ostream& strmOut, int nValue, int nSpaces) { if (nSpaces < 1) return; Assert(nSpaces < 8); int cSpaces = 0; if (nValue >= 100000000) cSpaces--; if (nValue < 10000000) cSpaces++; if (nValue < 1000000) cSpaces++; if (nValue < 100000) cSpaces++; if (nValue < 10000) cSpaces++; if (nValue < 1000) cSpaces++; if (nValue < 100) cSpaces++; if (nValue < 10) cSpaces++; cSpaces = cSpaces - (8 - nSpaces); if (cSpaces < 0) { strmOut << " "; for (int i = 1; i < nSpaces; i++) strmOut << "*"; return; } for (int i = 0; i < cSpaces; i++) strmOut << " "; strmOut << nValue; } grcompiler-5.2.1/compiler/Fsm.h000066400000000000000000000154561411153030700164000ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Fsm.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Defines the class that are used to generate the finite state machines. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef FSM_INCLUDED #define FSM_INCLUDED typedef std::set SourceClassSet; // hungarian: scs typedef std::vector * MachineClassList; // hungarian: mcl void OutputNumber(std::ostream& strmOut, int nValue, int nSpaces); /*---------------------------------------------------------------------------------------------- Class: FsmMachineClass Description: A machine class corresponds to one column in the FSM matrix. Hungarian: fsmc ----------------------------------------------------------------------------------------------*/ class FsmMachineClass { friend class FsmTable; friend class GdlPass; friend class FsmcLess; public: FsmMachineClass(int nPass) { m_nPass = nPass; } int Column() { return m_ifsmcColumn; } void SetColumn(int ifsmc) { m_ifsmcColumn = ifsmc; } void SetSourceClasses(SourceClassSet * pscs) { for (SourceClassSet::iterator itscs = pscs->begin(); itscs != pscs->end(); ++itscs) { m_scs.insert(*itscs); } } void AddGlyph(utf16 w); int Key(int ipass); bool MatchesSources(SourceClassSet *); bool MatchesOneSource(GdlGlyphClassDefn *); // Output: size_t NumberOfRanges(); utf16 OutputRange(gid16 wGlyphID, GrcBinaryStream * pbstrm); protected: int m_nPass; SourceClassSet m_scs; // source-class-set corresponding to this machine-class std::vector m_wGlyphs; int m_ifsmcColumn; // column this machine class is assigned to std::string staDebug; // Comparison function for set manipulation: bool operator<(const FsmMachineClass & fsmc) const { if (this == &fsmc) return false; // equal, not less than if (this->m_wGlyphs.size() != fsmc.m_wGlyphs.size()) return (this->m_wGlyphs.size() < fsmc.m_wGlyphs.size()); for (size_t iw = 0; iw < m_wGlyphs.size(); iw++) { if (this->m_wGlyphs[iw] != fsmc.m_wGlyphs[iw]) return (this->m_wGlyphs[iw] < fsmc.m_wGlyphs[iw]); } return false; // equal, not less than } }; // Functor class for set manipulation class FsmcLess { friend class FsmMachineClass; public: bool operator()(const FsmMachineClass * pfsmc1, const FsmMachineClass * pfsmc2) const { return (*pfsmc1 < *pfsmc2); } }; typedef std::set FsmMachineClassSet; //typedef std::set FsmMachineClassSet; /*---------------------------------------------------------------------------------------------- Class: FsmState Description: A row in the FSM table. Hungarian: fstate ----------------------------------------------------------------------------------------------*/ class FsmState { friend class FsmTable; friend class GdlPass; public: FsmState(size_t ccol, int critSlots, int ifsIndex) : m_vgiCells(ccol) { m_critSlotsMatched = critSlots; m_ifsWorkIndex = ifsIndex; m_ifsFinalIndex = -1; m_pfstateMerged = NULL; } FsmState() { Assert(false); m_pfstateMerged = NULL; } int SlotsMatched() { return m_critSlotsMatched; } int WorkIndex() { return m_ifsWorkIndex; } int CellValue(int ifsmc) { return m_vgiCells[ifsmc]; } void SetCellValue(int ifsmc, int ifsValue) { m_vgiCells[ifsmc] = ifsValue; } size_t NumberOfRulesMatched() { return m_setiruleMatched.size(); } bool RuleMatched(int irule) { return (m_setiruleMatched.find(irule) != m_setiruleMatched.end()); // is a member } void AddRuleToMatchedList(int irule) { if (m_setiruleMatched.find(irule) == m_setiruleMatched.end()) // not a member m_setiruleMatched.insert(irule); } size_t NumberOfRulesSucceeded() { return m_setiruleSuccess.size(); } bool RuleSucceeded(int irule) { return (m_setiruleSuccess.find(irule) != m_setiruleSuccess.end()); // is a member } void AddRuleToSuccessList(int irule) { if (m_setiruleSuccess.find(irule) == m_setiruleSuccess.end()) // not a member m_setiruleSuccess.insert(irule); } bool StatesMatch(FsmState * pfState); bool HasBeenMerged() { return (m_pfstateMerged != NULL); } FsmState * MergedState() { return m_pfstateMerged; } void SetMergedState(FsmState * pfsmc) { m_pfstateMerged = pfsmc; } void SetFinalIndex(int n) { m_ifsFinalIndex = n; } bool AllCellsEmpty() { return std::all_of(m_vgiCells.begin(), m_vgiCells.end(), [](int c) { return c == 0; }); } protected: int m_critSlotsMatched; // number of slots matched at this state int m_ifsWorkIndex; // working index of this state, as the FSM was originally // generated (currently just used for debugging) int m_ifsFinalIndex; // adjusted index for final output form of FSM (-1 for merged // states) std::set m_setiruleMatched; // indices of rules matched by this state std::set m_setiruleSuccess; // indices of rules for which this is a success state std::vector m_vgiCells; // the cells of the state, holding the index of the state // to transition to FsmState * m_pfstateMerged; // pointer to an earlier state that is identical to this // one (if any), so this state is considered merged with // that one public: // Debuggers: void DebugFsmState(std::ostream & strmOut, int ifs); }; /*---------------------------------------------------------------------------------------------- Class: FsmTable Description: A single finite state machine. Hungarian: fsm ----------------------------------------------------------------------------------------------*/ class FsmTable { friend class GdlPass; public: FsmTable(int nPass, size_t cfsmc) { m_nPass = nPass; m_cfsmc = cfsmc; } ~FsmTable() { for (auto && pfstate: m_vpfstate) delete pfstate; } void AddState(int critSlotsMatched) { FsmState * pfstateNew = new FsmState(m_cfsmc, critSlotsMatched, int(m_vpfstate.size())); m_vpfstate.push_back(pfstateNew); } FsmState * StateAt(int ifs) { FsmState * pfstateRet = RawStateAt(ifs); if (pfstateRet->HasBeenMerged()) return pfstateRet->MergedState(); return pfstateRet; } FsmState * RawStateAt(int ifs) { return m_vpfstate[ifs]; } size_t RawNumberOfStates() { return m_vpfstate.size(); } size_t NumberOfColumns() { return m_cfsmc; } protected: int m_nPass; // the pass this table pertains to size_t m_cfsmc; // the number of machine classes, ie columns, in the table std::vector m_vpfstate; // the rows }; #endif // !FSM_INCLUDED grcompiler-5.2.1/compiler/GdlExpression.cpp000066400000000000000000003253741411153030700207770ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlExpression.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implement the various kinds of arithmetic and logical expressions that can appear in an GDL file. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods: Parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Propagate the line number down to the sub-items. ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) { SetLineAndFile(lnf); m_pexpOperand->PropagateLineAndFile(lnf); } } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) { SetLineAndFile(lnf); m_pexpOperand1->PropagateLineAndFile(lnf); m_pexpOperand2->PropagateLineAndFile(lnf); } } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) { SetLineAndFile(lnf); m_pexpTest->PropagateLineAndFile(lnf); m_pexpTrue->PropagateLineAndFile(lnf); if (m_pexpFalse) m_pexpFalse->PropagateLineAndFile(lnf); } } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) { SetLineAndFile(lnf); if (m_pexpSelector) m_pexpSelector->PropagateLineAndFile(lnf); } } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) SetLineAndFile(lnf); } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) SetLineAndFile(lnf); } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) SetLineAndFile(lnf); } /*********************************************************************************************** Methods: Post-parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return true if it make sense to add, subtract, or compare two expressions with the given types. ----------------------------------------------------------------------------------------------*/ bool EquivalentTypes(ExpressionType expt1, ExpressionType expt2) { if (expt1 == expt2) return true; if (expt1 == kexptZero || expt1 == kexptOne) { switch (expt2) { case kexptNumber: case kexptMeas: case kexptBoolean: case kexptZero: case kexptOne: return true; default: break; } } if (expt2 == kexptZero || expt2 == kexptOne) { switch (expt1) { case kexptNumber: case kexptBoolean: case kexptZero: case kexptOne: return true; case kexptMeas: case kexptSlotRef: // eg, att.to == 0 case kexptGlyphID: // eg, collision.exclude.glyph = 0 return (expt2 == kexptZero); default: break; } } return false; } /*---------------------------------------------------------------------------------------------- Replace any slot aliases with the corresponding (1-based) index. Arguments: prule - the rule that contains the list of slot-alias mappings ----------------------------------------------------------------------------------------------*/ bool GdlUnaryExpression::ReplaceAliases(GdlRule * prule) { return m_pexpOperand->ReplaceAliases(prule); } /*--------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::ReplaceAliases(GdlRule * prule) { if (!m_pexpOperand1->ReplaceAliases(prule)) return false; return m_pexpOperand2->ReplaceAliases(prule); } /*--------------------------------------------------------------------------------------------*/ bool GdlCondExpression::ReplaceAliases(GdlRule * prule) { if (!m_pexpTest->ReplaceAliases(prule)) return false; if (!m_pexpTrue->ReplaceAliases(prule)) return false; if (m_pexpFalse) return m_pexpFalse->ReplaceAliases(prule); return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::ReplaceAliases(GdlRule * prule) { if (m_pexpSelector) return m_pexpSelector->ReplaceAliases(prule); return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlNumericExpression::ReplaceAliases(GdlRule * /*prule*/) { return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSlotRefExpression::ReplaceAliases(GdlRule * prule) { if (m_srNumber == -1) { m_srNumber = prule->LookupAliasIndex(m_staName); if (m_srNumber < 1) { g_errorList.AddError(1101, this, "Undefined slot alias: ", m_staName); m_srNumber = 0; return false; } } return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::ReplaceAliases(GdlRule * /*prule*/) { return true; } /*---------------------------------------------------------------------------------------------- Adjust the slot references based on what optional slots were omitted. Return false if there was a reference to an omitted item. Arguments: vfOmit - for each item, was it omitted? vnNewIndices - for the items that were not omitted, the adjusted index prule - the rule that contains the list of slot-alias mappings, for interpreting slot-ref expressions that use names ----------------------------------------------------------------------------------------------*/ bool GdlUnaryExpression::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { return m_pexpOperand->AdjustSlotRefs(vfOmit, vnNewIndices, prule); } /*--------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { if (!m_pexpOperand1->AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; return m_pexpOperand2->AdjustSlotRefs(vfOmit, vnNewIndices, prule); } /*--------------------------------------------------------------------------------------------*/ bool GdlCondExpression::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { if (!m_pexpTest->AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; if (!m_pexpTrue->AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; if (m_pexpFalse) return m_pexpFalse->AdjustSlotRefs(vfOmit, vnNewIndices, prule); return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { if (m_pexpSelector) return m_pexpSelector->AdjustSlotRefs(vfOmit, vnNewIndices, prule); return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlNumericExpression::AdjustSlotRefs(std::vector & /*vfOmit*/, std::vector & /*vnNewIndices*/, GdlRule * /*prule*/) { return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSlotRefExpression::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { int sr = m_srNumber; if (m_srNumber == -1) { sr = prule->LookupAliasIndex(m_staName); } if (sr < 1) { // Redundant error, but better safe than sorry. g_errorList.AddError(1102, this, "Undefined slot alias: ", m_staName); return false; } if (vfOmit[sr-1]) { if (m_staName == "") { g_errorList.AddError(1103, this, "Optional item referenced: ", std::to_string(m_srNumber)); } else g_errorList.AddError(1103, this, "Optional item referenced: ", m_staName); return false; } m_srNumber = vnNewIndices[sr-1]; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::AdjustSlotRefs(std::vector & /*vfOmit*/, std::vector & /*vnNewIndices*/, GdlRule * /*prule*/) { return true; } /*---------------------------------------------------------------------------------------------- Set the return argument to the value of the expression as an integer if it can be calculated without any context; otherwise return false. ----------------------------------------------------------------------------------------------*/ bool GdlUnaryExpression::ResolveToInteger(int * pnRet, bool fSlotRef) { int nTmp; if (!m_pexpOperand->ResolveToInteger(&nTmp, fSlotRef)) return false; if (m_psymOperator->MatchesOp("!")) *pnRet = (nTmp == 0)? 1: 0; else if (m_psymOperator->MatchesOp("-")) *pnRet = nTmp * -1; else return false; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::ResolveToInteger(int * pnRet, bool fSlotRef) { int nTmp1, nTmp2; if (!m_pexpOperand1->ResolveToInteger(&nTmp1, fSlotRef)) return false; if (!m_pexpOperand2->ResolveToInteger(&nTmp2, fSlotRef)) return false; if (m_psymOperator->MatchesOp("+")) *pnRet = nTmp1 + nTmp2; else if (m_psymOperator->MatchesOp("-")) *pnRet = nTmp1 - nTmp2; else if (m_psymOperator->MatchesOp("*")) *pnRet = nTmp1 * nTmp2; else if (m_psymOperator->MatchesOp("/")) { if (nTmp2 == 0) { g_errorList.AddError(1104, this, "Divide by zero."); return false; } *pnRet = nTmp1 / nTmp2; } else if (m_psymOperator->MatchesOp("&&")) *pnRet = (nTmp1 != 0 && nTmp2 != 0)? 1: 0; else if (m_psymOperator->MatchesOp("||")) *pnRet = (nTmp1 != 0 || nTmp2 != 0)? 1: 0; else if (m_psymOperator->MatchesOp("==")) *pnRet = (nTmp1 == nTmp2)? 1: 0; else if (m_psymOperator->MatchesOp("!=")) *pnRet = (nTmp1 != nTmp2)? 1: 0; else if (m_psymOperator->MatchesOp("<")) *pnRet = (nTmp1 < nTmp2)? 1: 0; else if (m_psymOperator->MatchesOp("<=")) *pnRet = (nTmp1 <= nTmp2)? 1: 0; else if (m_psymOperator->MatchesOp(">")) *pnRet = (nTmp1 > nTmp2)? 1: 0; else if (m_psymOperator->MatchesOp(">=")) *pnRet = (nTmp1 >= nTmp2)? 1: 0; else if (m_psymOperator->MatchesOp("max")) *pnRet = max(nTmp1, nTmp2); else if (m_psymOperator->MatchesOp("min")) *pnRet = min(nTmp1, nTmp2); else return false; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlCondExpression::ResolveToInteger(int * pnRet, bool fSlotRef) { int nTmp; if (m_pexpTest->ResolveToInteger(&nTmp, fSlotRef)) { if (nTmp == 0) return m_pexpFalse->ResolveToInteger(pnRet, fSlotRef); else return m_pexpTrue->ResolveToInteger(pnRet, fSlotRef); } else return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::ResolveToInteger(int * pnRet, bool fSlotRef) { if (m_pexpSimplified) // result of SimplifyAndUnscale return m_pexpSimplified->ResolveToInteger(pnRet, fSlotRef); return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlClassMemberExpression::ResolveToInteger(int * pnRet, bool /*fSlotRef*/) { if (m_gid > -1) { *pnRet = m_gid; return true; } return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlNumericExpression::ResolveToInteger(int * pnRet, bool /*fSlotRef*/) { *pnRet = m_nValue; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSlotRefExpression::ResolveToInteger(int * pnRet, bool fSlotRef) { if (fSlotRef) { *pnRet = m_srNumber; return true; } else return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::ResolveToInteger(int * /*pnRet*/, bool /*fSlotRef*/) { return false; } /*---------------------------------------------------------------------------------------------- Return the corresponding feature ID. This is the same as ResolveToInteger except that strings of <= 4 characters can be treated as feature IDs. ----------------------------------------------------------------------------------------------*/ bool GdlExpression::ResolveToFeatureID(unsigned int * pnRet) { int nRet; bool fRet = ResolveToInteger(&nRet, false); *pnRet = (unsigned int)nRet; return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::ResolveToFeatureID(unsigned int * pnRet) { if (m_staValue.length() > 4) return false; // The way we do the assignments ensures the characters are left-aligned // in the 4-byte integer (ie, occupying the most significant bytes). unsigned int id = 0; for(auto c : m_staValue) { id <<= 8; id += c; } id <<= 8*(4-m_staValue.length()); *pnRet = id; return true; } /*********************************************************************************************** Methods: Pre-compiler ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the type of the expression. If there is inconsistency, return our best guess. This is used to deduce the type of a glyph attribute from the value put in it. ----------------------------------------------------------------------------------------------*/ ExpressionType GdlUnaryExpression::ExpType() { if (m_psymOperator->MatchesOp("!")) return kexptBoolean; else if (m_psymOperator->MatchesOp("-")) return m_pexpOperand->ExpType(); else return kexptUnknown; } /*--------------------------------------------------------------------------------------------*/ ExpressionType GdlBinaryExpression::ExpType() { ExpressionType expt1 = m_pexpOperand1->ExpType(); if (m_psymOperator->MatchesOp("+") || m_psymOperator->MatchesOp("-")) { return expt1; } else if (m_psymOperator->MatchesOp("*")) { ExpressionType expt2 = m_pexpOperand2->ExpType(); if (expt1 == kexptMeas || expt2 == kexptMeas) return kexptMeas; else return kexptNumber; } else if (m_psymOperator->MatchesOp("/")) { return expt1; } else if (m_psymOperator->MatchesOp("&&") || m_psymOperator->MatchesOp("||")) { return kexptBoolean; } else if (m_psymOperator->MatchesOp("==") || m_psymOperator->MatchesOp("!=") || m_psymOperator->MatchesOp("<") || m_psymOperator->MatchesOp("<=") || m_psymOperator->MatchesOp(">") || m_psymOperator->MatchesOp(">=")) { return kexptBoolean; } else if (m_psymOperator->MatchesOp("max") || m_psymOperator->MatchesOp("min")) { return expt1; } else { return expt1; } } /*--------------------------------------------------------------------------------------------*/ ExpressionType GdlCondExpression::ExpType() { return m_pexpTrue->ExpType(); } /*--------------------------------------------------------------------------------------------*/ ExpressionType GdlLookupExpression::ExpType() { return m_psymName->ExpType(); } /*--------------------------------------------------------------------------------------------*/ ExpressionType GdlNumericExpression::ExpType() { if (m_munits == kmunitNone) { if (m_nValue == 0) return kexptZero; else if (m_nValue == 1) return kexptOne; else return kexptNumber; } else return kexptMeas; } /*--------------------------------------------------------------------------------------------*/ ExpressionType GdlSlotRefExpression::ExpType() { return kexptSlotRef; } /*--------------------------------------------------------------------------------------------*/ ExpressionType GdlStringExpression::ExpType() { return kexptString; } /*---------------------------------------------------------------------------------------------- Check for matching types and the appropriate presence and absence of scaled numbers. Record an error if there is a problem. Return true if everything is okay. ----------------------------------------------------------------------------------------------*/ bool GdlExpression::TypeCheck(ExpressionType exptExpected) { std::vector vnTmp; vnTmp.push_back(exptExpected); return TypeCheck(vnTmp); } /*--------------------------------------------------------------------------------------------*/ bool GdlExpression::TypeCheck(ExpressionType expt1, ExpressionType expt2, ExpressionType expt3) { std::vector vnTmp; vnTmp.push_back(expt1); vnTmp.push_back(expt2); vnTmp.push_back(expt3); return TypeCheck(vnTmp); } /*--------------------------------------------------------------------------------------------*/ bool GdlExpression::TypeCheck(std::vector& vexptExpected) { ExpressionType exptFound; if (!CheckTypeAndUnits(&exptFound)) return false; for (size_t i = 0; i < vexptExpected.size(); ++i) { ExpressionType exptOkay = vexptExpected[i]; if (exptOkay == exptFound) return true; if (exptOkay == kexptUnknown) return true; if ((exptFound == kexptZero || exptFound == kexptOne) && (exptOkay == kexptMeas || exptOkay == kexptNumber || exptOkay == kexptBoolean || exptOkay == kexptZero || exptOkay == kexptOne)) { return true; } } return false; } /*---------------------------------------------------------------------------------------------- Check for matching types in sub-expressions and the appropriate presence and absence of scaled numbers. Return the expression type in the argument. Return true if the expression is well-formed enough that it is worth continuing processing with it, false if a fatal error was recorded. ----------------------------------------------------------------------------------------------*/ bool GdlUnaryExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { ExpressionType expt; if (!m_pexpOperand->CheckTypeAndUnits(&expt)) return false; if (expt == kexptSlotRef) { g_errorList.AddError(2101, this, "Cannot use '", m_psymOperator->FullName(), "' operator with slot index"); *pexptRet = expt; return false; } if (m_psymOperator->MatchesOp("!")) { if (expt != kexptBoolean && expt != kexptZero && expt != kexptOne) g_errorList.AddWarning(2501, this, "Boolean expression expected as target of '!' operator."); *pexptRet = kexptBoolean; return true; } else if (m_psymOperator->MatchesOp("-")) { if (expt != kexptNumber && expt != kexptMeas && expt != kexptZero && expt != kexptOne) g_errorList.AddWarning(2502, this, "Numeric expression expected as target of '-' operator."); *pexptRet = expt; return true; } else if (m_psymOperator->MatchesOp("~")) { *pexptRet = expt; } else { g_errorList.AddError(2102, this, "Invalid unary operator: ", m_psymOperator->FieldAt(1)); } return expt; } /*--------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { ExpressionType expt1; if (!m_pexpOperand1->CheckTypeAndUnits(&expt1)) return false; ExpressionType expt2; if (!m_pexpOperand2->CheckTypeAndUnits(&expt2)) return false; *pexptRet = expt1; // unless changed below if (m_psymOperator->MatchesOp("+") || m_psymOperator->MatchesOp("-") || m_psymOperator->MatchesOp("*") || m_psymOperator->MatchesOp("/") || m_psymOperator->MatchesOp("&") || m_psymOperator->MatchesOp("|")) { // Additive, multiplicative if (expt1 == kexptSlotRef || expt2 == kexptSlotRef) { g_errorList.AddError(2103, this, "Using '", m_psymOperator->FullName(), "' operator with slot indices"); return false; } if ((expt1 != kexptNumber && expt1 != kexptMeas && expt1 != kexptZero && expt1 != kexptOne) || (expt2 != kexptNumber && expt2 != kexptMeas && expt2 != kexptZero && expt2 != kexptOne)) { g_errorList.AddWarning(2503, this, "Numeric expression expected as target of ", m_psymOperator->FullName(), " operator."); } if (m_psymOperator->MatchesOp("+") || m_psymOperator->MatchesOp("-")) { if (!EquivalentTypes(expt1, expt2) && expt1 != kexptUnknown && expt2 != kexptUnknown) g_errorList.AddWarning(2504, this, "Adding measurement to non-measurement"); } else if (m_psymOperator->MatchesOp("*")) { if (expt1 == kexptMeas && expt2 == kexptMeas) g_errorList.AddWarning(2505, this, "Multiplying two measurements"); if (expt1 == kexptMeas || expt2 == kexptMeas) *pexptRet = kexptMeas; else *pexptRet = kexptNumber; } else if (m_psymOperator->MatchesOp("/")) { if (expt2 == kexptMeas) g_errorList.AddWarning(2506, this, "Divisor is a measurement"); else if (expt2 == kexptZero) g_errorList.AddError(2104, this, "Dividing by zero"); } } else if (m_psymOperator->MatchesOp("&&") || m_psymOperator->MatchesOp("||")) { // Logical if ((expt1 != kexptBoolean && expt1 != kexptZero && expt1 != kexptOne) || (expt2 != kexptBoolean && expt2 != kexptZero && expt2 != kexptOne)) { g_errorList.AddWarning(2507, this, "Boolean expression expected as target of ", m_psymOperator->FullName(), " operator"); } if (!EquivalentTypes(expt1, expt2) && expt1 != kexptUnknown && expt2 != kexptUnknown) g_errorList.AddWarning(2508, this, "Logically combining expressions of different types"); *pexptRet = kexptBoolean; } else if (m_psymOperator->MatchesOp("==") || m_psymOperator->MatchesOp("!=") || m_psymOperator->MatchesOp("<") || m_psymOperator->MatchesOp("<=") || m_psymOperator->MatchesOp(">") || m_psymOperator->MatchesOp(">=")) { // Comparative if (!EquivalentTypes(expt1, expt2) && expt1 != kexptUnknown && expt2 != kexptUnknown) g_errorList.AddWarning(2509, this, "Comparing expressions of different types"); *pexptRet = kexptBoolean; } else if (m_psymOperator->MatchesOp("max") || m_psymOperator->MatchesOp("min")) { // Functional if (expt1 != kexptNumber && expt1 != kexptMeas && expt1 != kexptSlotRef && expt1 != kexptZero && expt1 != kexptOne && expt2 != kexptNumber && expt2 != kexptMeas && expt2 != kexptSlotRef && expt2 != kexptZero && expt2 != kexptOne) { g_errorList.AddWarning(2510, this, "Numeric expression expected as target of ", m_psymOperator->FullName(), " function"); } if (!EquivalentTypes(expt1, expt2) && expt1 != kexptUnknown && expt2 != kexptUnknown) g_errorList.AddWarning(2511, this, "Calculating ", m_psymOperator->FullName(), " of different expression types"); } else if (m_psymOperator->MatchesOp("=") || m_psymOperator->MatchesOp("+=") || m_psymOperator->MatchesOp("-=") || m_psymOperator->MatchesOp("*=") || m_psymOperator->MatchesOp("/=")) { // Assignment g_errorList.AddError(2105, this, m_psymOperator->FullName(), " assignment operator not permitted in expression"); return false; } else { g_errorList.AddError(2106, this, "Invalid binary operator: ", m_psymOperator->FullName()); return false; } return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlCondExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { ExpressionType exptTest; if (!m_pexpTest->CheckTypeAndUnits(&exptTest)) return false; if (exptTest != kexptBoolean) g_errorList.AddWarning(2512, this, "Boolean expression expected as condition"); ExpressionType expt1; if (!m_pexpTrue->CheckTypeAndUnits(&expt1)) return false; ExpressionType expt2; if (!m_pexpFalse->CheckTypeAndUnits(&expt2)) return false; if (!EquivalentTypes(expt1, expt2)) { if (expt1 == kexptSlotRef || expt2 == kexptSlotRef) // One or the other is sure to be wrong. g_errorList.AddError(2107, this, "Inconsistent types in conditional branches"); else g_errorList.AddWarning(2513, this, "Non-matching types in conditional branches"); } if (expt1 == kexptZero || expt1 == kexptOne) *pexptRet = expt2; // this is more useful than kexptZero else *pexptRet = expt1; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { *pexptRet = m_psymName->ExpType(); return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlClassMemberExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { *pexptRet = kexptGlyphID; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlNumericExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { if (m_nValue == 0 && m_munits == kmunitNone) // so that 0 can be treated as equivalent to 0m *pexptRet = kexptZero; else if (m_nValue == 1 && m_munits == kmunitNone) *pexptRet = kexptOne; else if (m_munits == kmunitNone) *pexptRet = kexptNumber; else *pexptRet = kexptMeas; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSlotRefExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { *pexptRet = kexptSlotRef; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::CheckTypeAndUnits(ExpressionType * pexptRet) { *pexptRet = kexptString; return true; } /*---------------------------------------------------------------------------------------------- Check that the expression, which is the value of a glyph attribute, does not make use of slot attributes, features, or slot index references. ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::GlyphAttrCheck(Symbol psymAttr) { m_pexpOperand->GlyphAttrCheck(psymAttr); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::GlyphAttrCheck(Symbol psymAttr) { m_pexpOperand1->GlyphAttrCheck(psymAttr); m_pexpOperand2->GlyphAttrCheck(psymAttr); } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::GlyphAttrCheck(Symbol psymAttr) { m_pexpTest->GlyphAttrCheck(psymAttr); m_pexpTrue->GlyphAttrCheck(psymAttr); m_pexpFalse->GlyphAttrCheck(psymAttr); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::GlyphAttrCheck(Symbol /*psymAttr*/) { if (m_psymName->FitsSymbolType(ksymtGlyphData)) { // okay } else if (m_psymName->FitsSymbolType(ksymtSlotAttr)) { g_errorList.AddError(2108, this, "Slot attribute references are not permitted in glyph attribute values"); } else if (m_psymName->FitsSymbolType(ksymtFeature)) { g_errorList.AddError(2109, this, "Feature references are not permitted in glyph attribute values"); } else if (m_psymName->FitsSymbolType(ksymtProcState)) { g_errorList.AddError(2110, this, "Processing-state references are not permitted in glyph attribute values"); } else { g_errorList.AddError(2111, this, "Unknown attribute: ", m_psymName->FullName()); } } /*--------------------------------------------------------------------------------------------*/ void GdlClassMemberExpression::GlyphAttrCheck(Symbol psymAttr) { if (m_psymName == NULL && m_gid != -1) { // Assume okay--probably represents a default value. } else if (m_psymName->FitsSymbolType(ksymtClass)) { // Check that the class sizes match. GdlDefn * pgdl = m_psymName->Data(); GdlGlyphClassDefn * pglfc = dynamic_cast(pgdl); if (pglfc) { int cgidTarget = pglfc->GlyphIDCount(); if (m_cgidClassSize != cgidTarget) { g_errorList.AddError(4146, this, "Size of classes do not match for ", psymAttr->FullName(), " attribute"); } } // else give an error in SimplifyAndUnscale } else { // indexed-lookup-expressions are only created for classes, so this should never // happen: g_errorList.AddError(4147, this, "Invalid value of attribute: ", m_psymName->FullName()); } } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::GlyphAttrCheck(Symbol /*psymAttr*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::GlyphAttrCheck(Symbol /*psymAttr*/) { g_errorList.AddError(2112, this, "Slot references are not permitted in glyph attribute values"); } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::GlyphAttrCheck(Symbol /*psymAttr*/) { } /*---------------------------------------------------------------------------------------------- Test that any feature settings tests are valid within the context; replace settings with the corresponding numeric expression. For instance, suppose we have ligatures.settings { none.value = 0; some.value = 1; all.value = 2; } swashes.settings { none.value = 0; basic.value = 1; most.value = 2; all.value = 3; } Then an expression like "ligatures == all" gets converted to "ligatures == 2"; "swashes <= basic" becomes "swashes <= 1'; "ligatures > basic" is an error. The special "lang" feature converts its language ID string to an integer. ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::FixFeatureTestsInRules(GrcFont *pfont) { m_pexpOperand->FixFeatureTestsInRules(pfont); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::FixFeatureTestsInRules(GrcFont *pfont) { GdlLookupExpression * pexplookFeature = dynamic_cast(m_pexpOperand1); if (m_psymOperator->IsComparativeOp() && pexplookFeature && pexplookFeature->NameFitsSymbolType(ksymtFeature)) { GdlFeatureDefn * pfeat = pexplookFeature->Name()->FeatureDefnData(); Assert(pfeat); bool fErr; GdlExpression * pexpNew = m_pexpOperand2->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpOperand2) { delete m_pexpOperand2; m_pexpOperand2 = pexpNew; } pexpNew = m_pexpOperand2->SimplifyAndUnscale(0xFFFF, pfont); Assert(pexpNew); if (pexpNew && pexpNew != m_pexpOperand2) { delete m_pexpOperand2; m_pexpOperand2 = pexpNew; } GdlNumericExpression * pexpnum = dynamic_cast(m_pexpOperand2); if (pexpnum) { if (!pfeat->IsLanguageFeature()) { GdlFeatureSetting * pfset = pfeat->FindSettingWithValue(pexpnum->Value()); if (!pfset) { g_errorList.AddWarning(2514, this, "Feature '", pfeat->Name(), "' has no setting with value ", std::to_string(pexpnum->Value()), ((pexpnum->m_munits >= kmunitDefault) ? "m" : "")); } } } } else { m_pexpOperand1->FixFeatureTestsInRules(pfont); m_pexpOperand2->FixFeatureTestsInRules(pfont); } } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::FixFeatureTestsInRules(GrcFont *pfont) { m_pexpTest->FixFeatureTestsInRules(pfont); m_pexpTrue->FixFeatureTestsInRules(pfont); m_pexpFalse->FixFeatureTestsInRules(pfont); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::FixFeatureTestsInRules(GrcFont * /*pfont*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::FixFeatureTestsInRules(GrcFont * /*pfont*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::FixFeatureTestsInRules(GrcFont * /*pfont*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::FixFeatureTestsInRules(GrcFont * /*pfont*/) { } /*---------------------------------------------------------------------------------------------- The recipient is the right-hand side of a feature comparison expresion (eg, ligatures == all). Return the equivalent expression, with any feature setting value converted to a numeric expression. ----------------------------------------------------------------------------------------------*/ GdlExpression * GdlUnaryExpression::ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr) { if (pfeat->IsLanguageFeature()) g_errorList.AddWarning(2515, this, "Arithmetic calculation of language ID value"); GdlExpression * pexpNew = m_pexpOperand->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpOperand) { delete m_pexpOperand; m_pexpOperand = pexpNew; } return this; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlBinaryExpression::ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr) { if (pfeat->IsLanguageFeature()) g_errorList.AddWarning(2516, this, "Arithmetic calculation of language ID value"); GdlExpression * pexpNew; pexpNew = m_pexpOperand1->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpOperand1) { delete m_pexpOperand1; m_pexpOperand1 = pexpNew; } pexpNew = m_pexpOperand2->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpOperand2) { delete m_pexpOperand2; m_pexpOperand2 = pexpNew; } return this; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlCondExpression::ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr) { GdlExpression * pexpNew; pexpNew = m_pexpTest->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpTest) { delete m_pexpTest; m_pexpTest = pexpNew; } pexpNew = m_pexpTrue->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpTrue) { delete m_pexpTrue; m_pexpTrue = pexpNew; } pexpNew = m_pexpFalse->ConvertFeatureSettingValue(pfeat, fErr); if (pexpNew != m_pexpFalse) { delete m_pexpFalse; m_pexpFalse = pexpNew; } return this; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlLookupExpression::ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr) { if (pfeat->IsLanguageFeature()) { g_errorList.AddWarning(2517, this, "Arithmetic calculation of language ID value"); } // Note: normally the symbol type will be ksymtInvalid. if (m_psymName->FieldCount() > 1) { g_errorList.AddError(2113, this, "Invalid feature setting: ", m_psymName->FullName()); fErr = true; return this; } if (m_psymName->FitsSymbolType(ksymtFeature)) { // We are reading the value of a feature, not specifying a setting. return this; } else { GdlFeatureSetting * pfset = pfeat->FindSetting(std::string(m_psymName->LastField())); if (!pfset) { g_errorList.AddError(2114, this, "Feature '", pfeat->Name(), "' has no setting '", m_psymName->FullName(), "'"); fErr = true; return this; } // Caller will replace setting expression with numeric value. GdlNumericExpression * pexpValue = new GdlNumericExpression(pfset->Value()); return pexpValue; } } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlNumericExpression::ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr) { if (pfeat->IsLanguageFeature()) g_errorList.AddWarning(2518, this, "Numeric value where language ID string expected"); return this; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlSlotRefExpression::ConvertFeatureSettingValue(GdlFeatureDefn * /*pfeat*/, bool & fErr) { // Caller will replace slot-ref expression with numeric expression. g_errorList.AddWarning(2519, this, "Inappropriate value of feature setting: @", std::to_string(m_srNumber)); GdlNumericExpression * pexpValue = new GdlNumericExpression(m_srNumber); return pexpValue; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlStringExpression::ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr) { if (pfeat->IsLanguageFeature()) { int nValue = 0; auto cb = m_staValue.length(); if (m_staValue.length() > 4) { g_errorList.AddError(2115, this, "Invalid language ID--must be a 4-byte string"); fErr = true; } else if (m_staValue.length() < 4) { g_errorList.AddWarning(2520, this, "Possibly invalid language ID--4-byte string expected"); } gr::byte b1, b2, b3, b4; b1 = (cb > 0) ? m_staValue[0] : 0; b2 = (cb > 1) ? m_staValue[1] : 0; b3 = (cb > 2) ? m_staValue[2] : 0; b4 = (cb > 3) ? m_staValue[3] : 0; nValue = (b1 << 24) | (b2 << 16) | (b3 << 8) | b4; // Caller will replace original expression with numeric value. GdlNumericExpression * pexpValue = new GdlNumericExpression(nValue); return pexpValue; } else { g_errorList.AddError(2116, this, "Inappropriate value of feature setting: ", m_staValue); fErr = true; } return this; } /*---------------------------------------------------------------------------------------------- Do a final check to make sure that all look-up expressions within a rule are meaningful. Argument: fInIf - true if the statement was inside an -if- statement, rather than inside a rule's context. psymFeature - this expression sets the value of the given feature ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::LookupExpCheck(bool fInIf, Symbol psymFeature) { m_pexpOperand->LookupExpCheck(fInIf, psymFeature); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::LookupExpCheck(bool fInIf, Symbol psymFeature) { m_pexpOperand1->LookupExpCheck(fInIf, psymFeature); m_pexpOperand2->LookupExpCheck(fInIf, psymFeature); } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::LookupExpCheck(bool fInIf, Symbol psymFeature) { m_pexpTest->LookupExpCheck(fInIf, psymFeature); m_pexpTrue->LookupExpCheck(fInIf, psymFeature); m_pexpFalse->LookupExpCheck(fInIf, psymFeature); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::LookupExpCheck(bool fInIf, Symbol psymFeature) { if (!m_psymName) { g_errorList.AddError(2117, this, "Undefined attribute"); return; } else if (m_psymName->FitsSymbolType(ksymtGlyphMetric)) { // Okay } else if (m_fGlyphAttr && !m_psymName->FitsSymbolType(ksymtGlyphAttr)) { g_errorList.AddError(2165, this, "Undefined glyph attribute: ", m_psymName->FullName()); return; } else if (m_psymName->FitsSymbolType(ksymtGlyphAttr) || m_psymName->FitsSymbolType(ksymtSlotAttr) || m_psymName->FitsSymbolType(ksymtFeature) || m_psymName->FitsSymbolType(ksymtProcState)) { if (m_nClusterLevel != 0) g_errorList.AddError(2118, this, "Composite metric indicator is incompatible with ", m_psymName->TypeDescriptorString()); } else if (m_psymName->FitsSymbolType(ksymtNonLeafGlyphAttr)) { g_errorList.AddError(2119, this, "Incomplete glyph attribute: ", m_psymName->FullName()); } else if (psymFeature && m_psymName->FitsSymbolType(ksymtInvalid)) { GdlFeatureDefn * pfeat = psymFeature->FeatureDefnData(); GdlFeatureSetting * pfset = pfeat->FindSetting(std::string(m_psymName->LastField())); if (!pfset) { g_errorList.AddWarning(2536, this, "Setting feature to an undefined value"); return; } } else if (m_psymName->FitsSymbolType(ksymtClass)) { // Okay } else { g_errorList.AddError(2120, this, "Undefined attribute: ", m_psymName->FullName()); return; } if (fInIf) { if (!m_psymName->FitsSymbolType(ksymtFeature) && !m_psymName->FitsSymbolType(ksymtProcState)) { g_errorList.AddError(2121, this, "Only features and the processing state may be tested within 'if' statements; ", m_psymName->TypeDescriptorString(), "s not permitted"); } if (m_pexpSelector) { g_errorList.AddError(2122, this, "Slot selectors are not permitted in 'if' statements: @", std::to_string(m_pexpSelector->SlotNumber())); } } } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::LookupExpCheck(bool /*fInIf*/, Symbol /*psymFeature*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::LookupExpCheck(bool /*fInIf*/, Symbol psymFeature) { if (psymFeature) { g_errorList.AddError(2166, this, "Setting feature to a slot reference"); } } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::LookupExpCheck(bool /*fInIf*/, Symbol psymFeature) { if (psymFeature) { g_errorList.AddError(2167, this, "Setting feature to a string value"); } } /*---------------------------------------------------------------------------------------------- Simplify any expressions down to integers that can be, returning a new expression equivalent to the recipient. Convert scaled numbers to absolute (in place). Return NULL if there was an error in the expression. Caller is responsible to delete the returned expression. Arguments: pgax - glyph attribute maxtrix, for resolving glyph attributes; or NULL wGlyphID - glyph ID to use in resolving glyph attributes and metrics; 0xFFFF means that glyph attributes are not permitted in the current context setpsym - set of glyph attribute symbols encountered; for catching infinite loops in definitions of glyph attributes pfont - font, for reading glyph metrics fGAttrDefChk - check that glyph attributes are defined for the given glyph ID (this is false within the context of rules, which are checked elsewhere) pfCanSub - true means replacement expression is irrespective of the glyph ID, and therefore can be replaced directly in the enclosing expression; if false, make a new expression to return, because another glyph ID may be using the original expression, so it needs to hang around unmodified. ----------------------------------------------------------------------------------------------*/ GdlExpression * GdlUnaryExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, gid16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub) { bool fCanSubOperand; GdlExpression * pexpOperandNew = m_pexpOperand->SimplifyAndUnscale(pgax, wGlyphID, setpsym, pfont, fGAttrDefChk, &fCanSubOperand); if (!pexpOperandNew) return NULL; GdlUnaryExpression * pexpunRet = this; if (pexpOperandNew != m_pexpOperand) { if (!fCanSubOperand) { pexpunRet = dynamic_cast(this->Clone()); Assert(pexpunRet); } delete pexpunRet->m_pexpOperand; pexpunRet->m_pexpOperand = pexpOperandNew; } *pfCanSub = (pexpunRet == this); int nValue; if (this->ResolveToInteger(&nValue, false)) { GdlExpression * pexpRet = new GdlNumericExpression(nValue); pexpRet->CopyLineAndFile(*this); return pexpRet; } return pexpunRet; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlBinaryExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, gid16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub) { bool fCanSubOperand1, fCanSubOperand2; GdlExpression * pexpOperand1New = m_pexpOperand1->SimplifyAndUnscale(pgax, wGlyphID, setpsym, pfont, fGAttrDefChk, &fCanSubOperand1); GdlExpression * pexpOperand2New = m_pexpOperand2->SimplifyAndUnscale(pgax, wGlyphID, setpsym, pfont, fGAttrDefChk, &fCanSubOperand2); if (!pexpOperand1New || !pexpOperand2New) return NULL; GdlBinaryExpression * pexpbinRet = this; if (pexpOperand1New && pexpOperand1New != m_pexpOperand1) { if (!fCanSubOperand1) { pexpbinRet = dynamic_cast(this->Clone()); Assert(pexpbinRet); } delete pexpbinRet->m_pexpOperand1; pexpbinRet->m_pexpOperand1 = pexpOperand1New; } if (pexpOperand2New && pexpOperand2New != m_pexpOperand2) { if (!fCanSubOperand2 && pexpbinRet == this) { pexpbinRet = dynamic_cast(this->Clone()); Assert(pexpbinRet); } delete pexpbinRet->m_pexpOperand2; pexpbinRet->m_pexpOperand2 = pexpOperand2New; } *pfCanSub = (pexpbinRet == this); int nValue; if (this->ResolveToInteger(&nValue, false)) { GdlExpression * pexpRet = new GdlNumericExpression(nValue); pexpRet->CopyLineAndFile(*this); return pexpRet; } return pexpbinRet; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlCondExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, gid16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub) { bool fCanSubTest, fCanSubTrue, fCanSubFalse; GdlExpression * pexpTestNew = m_pexpTest->SimplifyAndUnscale(pgax, wGlyphID, setpsym, pfont, fGAttrDefChk, &fCanSubTest); GdlExpression * pexpTrueNew = m_pexpTrue->SimplifyAndUnscale(pgax, wGlyphID, setpsym, pfont, fGAttrDefChk, &fCanSubTrue); GdlExpression * pexpFalseNew = m_pexpFalse->SimplifyAndUnscale(pgax, wGlyphID, setpsym, pfont, fGAttrDefChk, &fCanSubFalse); if (!pexpTestNew || !pexpTrueNew || !pexpFalseNew) return NULL; GdlCondExpression * pexpcondRet = this; if (pexpTestNew && pexpTestNew != m_pexpTest) { if (!fCanSubTest) { pexpcondRet = dynamic_cast(this->Clone()); Assert(pexpcondRet); } delete pexpcondRet->m_pexpTest; pexpcondRet->m_pexpTest = pexpTestNew; } if (pexpTrueNew && pexpTrueNew != m_pexpTrue) { if (!fCanSubTrue && pexpcondRet == this) { pexpcondRet = dynamic_cast(this->Clone()); Assert(pexpcondRet); } delete pexpcondRet->m_pexpTrue; pexpcondRet->m_pexpTrue = pexpTrueNew; } if (pexpFalseNew && pexpFalseNew != m_pexpFalse) { if (!fCanSubFalse && pexpcondRet == this) { pexpcondRet = dynamic_cast(this->Clone()); Assert(pexpcondRet); } delete pexpcondRet->m_pexpFalse; pexpcondRet->m_pexpFalse = pexpFalseNew; } *pfCanSub = (pexpcondRet == this); int nValue; if (this->ResolveToInteger(&nValue, false)) { GdlExpression * pexpRet = new GdlNumericExpression(nValue); pexpRet->CopyLineAndFile(*this); return pexpRet; } return pexpcondRet; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlLookupExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, gid16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub) { int nAttrID = -1; if (!m_psymName->IsGeneric() && ((m_psymName->FitsSymbolType(ksymtGlyphAttr) && pgax) || m_psymName->FitsSymbolType(ksymtGlyphMetric))) { // A non-generic attribute or metric means the value for the // first element of the given class. Symbol psymTmp = m_psymName; while (psymTmp->ParentSymbol()) psymTmp = psymTmp->ParentSymbol(); GdlGlyphClassDefn * pglfc = psymTmp->GlyphClassDefnData(); if (!pglfc) { g_errorList.AddError(2123, this, "Undefined glyph class: ", psymTmp->FullName()); return NULL; } bool fMoreThanOne = false; unsigned int nGlyphIDFirst = pglfc->FirstGlyphInClass(&fMoreThanOne); bool fDefined = (nGlyphIDFirst != 0); if (m_psymName->FitsSymbolType(ksymtGlyphAttr)) { nAttrID = m_psymName->InternalID(); if (fDefined) { Symbol psymGeneric = m_psymName->Generic(); // A predefined glyph attribute such as directionality does not need an // explicit assignment to be defined. fDefined = (psymGeneric && !psymGeneric->IsUserDefined()); } fDefined = (fDefined || pgax->Defined(nGlyphIDFirst, nAttrID)); if (!fDefined) { g_errorList.AddError(2124, this, "Undefined glyph attribute: ", m_psymName->FullName()); return NULL; } } else if (!fDefined) { g_errorList.AddError(2125, this, "Undefined identifier: ", m_psymName->FullName()); } if (fMoreThanOne) { g_errorList.AddWarning(2521, this, "Class '", pglfc->Name(), "' has size > 1; first glyph will be used to evaluate ", m_psymName->FullName()); } GdlExpression * pexpRet = NULL; if (m_psymName->FitsSymbolType(ksymtGlyphAttr)) { setpsym.insert(m_psymName); GdlExpression * pexp; pexp = pgax->GetExpression(nGlyphIDFirst, nAttrID); if (pexp) { pexpRet = pexp->SimplifyAndUnscale(pgax, nGlyphIDFirst, setpsym, pfont, true, pfCanSub); if (pexpRet) pexpRet = pexpRet->Clone(); } else { // Predefined attribute with no explicit value. pexpRet = new GdlNumericExpression(0); } setpsym.erase(m_psymName); // in case we look up this attribute again in the // same outer expression } else if (m_psymName->FitsSymbolType(ksymtGlyphMetric)) { int gmet = m_psymName->GlyphMetricEngineCodeOp(); int nValue; if (gmet == -1) { g_errorList.AddError(2126, this, "Invalid glyph metric: ", m_psymName->FullName()); nValue = 0; } else { int nActual = g_cman.ActualForPseudo(nGlyphIDFirst); if (nActual == 0) nActual = nGlyphIDFirst; nValue = pfont->GetGlyphMetric(nActual, GlyphMetric(gmet), this); } pexpRet = new GdlNumericExpression(nValue); pexpRet->CopyLineAndFile(*this); } m_pexpSimplified = dynamic_cast(pexpRet); *pfCanSub = true; if (m_pexpSimplified) return this; else return pexpRet; } // A generic glyph attribute or metric refers to the current item. if (m_psymName->FitsSymbolType(ksymtGlyphMetric)) { if (wGlyphID == 0xFFFF) { g_errorList.AddError(2127, this, "Illegal use of glyph metric: ", m_psymName->FullName()); return this; } int gmet = m_psymName->GlyphMetricEngineCodeOp(); int nValue; if (gmet == -1) { g_errorList.AddError(2128, this, "Invalid glyph metric: ", m_psymName->FullName()); nValue = 0; } else { int nActual = g_cman.ActualForPseudo(wGlyphID); if (nActual == 0) nActual = wGlyphID; nValue = pfont->GetGlyphMetric(nActual, GlyphMetric(gmet), this); } if (m_pexpSelector) { // Can't resolve. *pfCanSub = false; return NULL; } GdlNumericExpression * pexpRet = new GdlNumericExpression(nValue); pexpRet->CopyLineAndFile(*this); *pfCanSub = false; return pexpRet; } else if (m_psymName->FitsSymbolType(ksymtGlyphAttr) && pgax) { nAttrID = m_psymName->InternalID(); if (!fGAttrDefChk) { *pfCanSub = false; return this; } if (!pgax->Defined(wGlyphID, nAttrID)) { std::string staExplain = ""; if (m_psymName->IsMirrorAttr()) staExplain = " (Mirror attributes are only defined when Bidi = true)"; g_errorList.AddError(2129, this, "The glyph attribute ", m_psymName->FullName(), " is not defined for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID), staExplain); return NULL; } else if (setpsym.find(m_psymName) != setpsym.end()) // is a member { g_errorList.AddError(2130, this, "Circular definition of glyph attribute ", m_psymName->FullName(), " for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); return NULL; } else { setpsym.insert(m_psymName); GdlExpression * pexp; GdlExpression * pexpRet; pexp = pgax->GetExpression(wGlyphID, nAttrID); pexpRet = pexp->SimplifyAndUnscale(pgax, wGlyphID, setpsym, pfont, fGAttrDefChk, pfCanSub); if (pexpRet) pexpRet = pexpRet->Clone(); setpsym.erase(m_psymName); // in case we look up this attribute again in the // same outer expression *pfCanSub = false; return pexpRet; } } *pfCanSub = true; return this; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlClassMemberExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * /*pgax*/, utf16 /*wGlyphID*/, SymbolSet & /*setpsym*/, GrcFont * /*pfont*/, bool /*fGAttrDefChk*/, bool * pfCanSub) { if (m_psymName == NULL && m_gid != -1) { // Okay, probably a default value. return this; } else if (m_psymName->FitsSymbolType(ksymtClass)) { GdlDefn * pgdl = m_psymName->Data(); GdlGlyphClassDefn * pglfc = dynamic_cast(pgdl); if (!pglfc) { g_errorList.AddError(2163, this, "Undefined glyph class: ", m_psymName->FullName()); return NULL; } else { std::vector vgid; pglfc->FlattenGlyphList(vgid); int nValue = 0; if (m_igid >= (signed)vgid.size()) { g_errorList.AddError(2164, this, "Class sizes do not match; no corresponding glyph in class ", m_psymName->FullName(), " for glyph #", std::to_string(m_igid)); } else nValue = vgid[m_igid]; m_gid = nValue; *pfCanSub = false; return this; } } else // error already given return NULL; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlNumericExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * /*pgax*/, utf16 /*wGlyphID*/, SymbolSet & /*setpsym*/, GrcFont * pfont, bool /*fGAttrDefChk*/, bool * pfCanSub) { m_nValue = pfont->ScaledToAbsolute(m_nValue, m_munits); m_munits = (m_munits == kmunitNone) ? kmunitNone : kmunitUnscaled; *pfCanSub = true; return this; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlSlotRefExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * /*pgax*/, utf16 /*wGlyphID*/, SymbolSet & /*setpsym*/, GrcFont * /*pfont*/, bool /*fGAttrDefChk*/, bool * pfCanSub) { *pfCanSub = true; return this; } /*--------------------------------------------------------------------------------------------*/ GdlExpression * GdlStringExpression::SimplifyAndUnscale(GrcGlyphAttrMatrix * /*pgax*/, utf16 /*wGlyphID*/, SymbolSet & /*setpsym*/, GrcFont * /*pfont*/, bool /*fGAttrDefChk*/, bool * pfCanSub) { *pfCanSub = true; return this; } /*---------------------------------------------------------------------------------------------- Return the number of glyphs in the class. ----------------------------------------------------------------------------------------------*/ size_t GdlClassMemberExpression::ValueCount() { GdlDefn * pgdl = m_psymName->Data(); GdlGlyphClassDefn * pglfc = dynamic_cast(pgdl); if (pglfc) { std::vector vgid; pglfc->FlattenGlyphList(vgid); return vgid.size(); } else return 0; // invalid class } /*---------------------------------------------------------------------------------------------- Change the value 0 in the expression to a special value. This is needed for the value of gpoint attributes, because we consistently use 0 to mean "no legitimate value". ----------------------------------------------------------------------------------------------*/ void GdlNumericExpression::SetSpecialZero() { Assert(m_nValue == 0); m_nValue = kGpointZero; } /*---------------------------------------------------------------------------------------------- The expression is the value of an attribute setting statement or rule item constraint. Check that any glyph attributes accessed are defined for the relevant glyph classes (all of the glyph IDs for the input class). ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit) { m_pexpOperand->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit) { m_pexpOperand1->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); m_pexpOperand2->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit) { m_pexpTest->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); m_pexpTrue->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); m_pexpFalse->CheckAndFixGlyphAttrsInRules(pcman, vpglfcInClasses, irit); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit) { if (m_psymName->FitsSymbolType(ksymtGlyphAttr) && !m_psymName->FitsSymbolType(ksymtSlotAttr)) // treat it like a slot attribute { // if it could be either int nSel; if (m_pexpSelector) nSel = m_pexpSelector->m_srNumber - 1; // selectors are 1-based else nSel = irit; auto const staItem = std::to_string(irit+1); if (nSel < 0 || nSel >= signed(vpglfcInClasses.size())) { g_errorList.AddError(2131, this, "Item ", staItem, ": glyph attribute selector out of range"); return; } else if (vpglfcInClasses[nSel] == NULL) { g_errorList.AddError(2132, this, "Item ", staItem, ": no input class for selector"); return; } m_nInternalID = m_psymName->InternalID(); m_nSubIndex = -1; // never needed for glyph attributes // Check that the class associated with the glyph attribute matches // the class in the rule. //Symbol psymBaseClass = m_psymName->BaseClassDefn(); //if (psymBaseClass) //{ // GdlGlyphClassDefn * pglfc = psymBaseClass->GlyphClassDefnData(); // if (pglfc != vpglfcInClasses[nSel]) // { // g_errorList.AddWarning(2522, this, // "Item ", staItem, // ": Invalid glyph attribute: ", // m_psymName->FullName()); // } //} if (m_psymName->IsGeneric()) // Then it must apply to all the glyphs in the class. vpglfcInClasses[nSel]->CheckExistenceOfGlyphAttr(this, pcman->SymbolTable(), pcman->GlyphAttrMatrix(), m_psymName); } } /*------------------------------------------------------s--------------------------------------*/ void GdlNumericExpression::CheckAndFixGlyphAttrsInRules(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::CheckAndFixGlyphAttrsInRules(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::CheckAndFixGlyphAttrsInRules(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/) { } /*---------------------------------------------------------------------------------------------- The expression is the value of an attribute setting statement, specifically setting an attachment point. Check that the attachment points are completely defined for the relevant glyph classes (all of the glyph IDs for the input class). Arguments: irit - for an attach.at statement, the value of the attach.to setting; for an attach.with, the current item; in other words, the item for which the glyph attribute needs to be defined pfXY - set to true if there is a glyph that needs to use x / y pfGpoint - set to true if there is a glyph that needs to use gpoint note that both *pfXY and *pfGpoint could be true ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint) { m_pexpOperand->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint) { m_pexpOperand1->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); m_pexpOperand2->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint) { m_pexpTest->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); m_pexpTrue->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); m_pexpFalse->CheckCompleteAttachmentPoint(pcman, vpglfcInClasses, irit, pfXY, pfGpoint); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint) { if (m_psymName->FitsSymbolType(ksymtGlyphAttr)) { int nSel; if (m_pexpSelector) nSel = m_pexpSelector->m_srNumber - 1; // selectors are 1-based else nSel = irit; if (nSel < 0 || nSel >= signed(vpglfcInClasses.size())) { g_errorList.AddError(2133, this, "Item ", std::to_string(irit+1), "slot selector on glyph attribute ", m_psymName->FullName(), " out of range"); return; } else if (vpglfcInClasses[nSel] == NULL) { g_errorList.AddError(2134, this, "Item ", std::to_string(irit+1), ": no input class for selector on glyph attribute ", m_psymName->FullName()); return; } vpglfcInClasses[nSel]->CheckCompleteAttachmentPoint(this, pcman->SymbolTable(), pcman->GlyphAttrMatrix(), m_psymName->BasePoint(), pfXY, pfGpoint); } else LookupExpCheck(false, 0); } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::CheckCompleteAttachmentPoint(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/, bool * /*pfXY*/, bool * /*pfGpoint*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::CheckCompleteAttachmentPoint(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/, bool * /*pfXY*/, bool * /*pfGpoint*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::CheckCompleteAttachmentPoint(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/, bool * /*pfXY*/, bool * /*pfGpoint*/) { } /*---------------------------------------------------------------------------------------------- Create expressions corresponding to the fields of a point. For instance, if the recipient is "@2.somePoint", return "@2.somePoint.x", "@2.somePoint.y", etc. Any of the arguments (but most usefully the gpoint, xoffset, and yoffset fields) may be NULL. Return false if this is not the kind of expression that has obvious equivalents. Specifically, only glyph attribute lookups in fact do. Note that if the symbol for one of the fields does not exist in the symbol table, then there is no slot attribute setting making use of it, so we can afford to just ignore it at this point. Eventually we may detect an error due to the omission. ----------------------------------------------------------------------------------------------*/ bool GdlExpression::PointFieldEquivalents(GrcManager * /*pcman*/, GdlExpression ** /*ppexpX*/, GdlExpression ** /*ppexpY*/, GdlExpression ** /*ppexpGpoint*/, GdlExpression ** /*ppexpXoffset*/, GdlExpression ** /*ppexpYoffset*/) { // Only glyph attribute lookups can handle this. return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlClassMemberExpression::PointFieldEquivalents(GrcManager * /*pcman*/, GdlExpression ** /*ppexpX*/, GdlExpression ** /*ppexpY*/, GdlExpression ** /*ppexpGpoint*/, GdlExpression ** /*ppexpXoffset*/, GdlExpression ** /*ppexpYoffset*/) { // Only glyph attribute lookups can handle this. return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::PointFieldEquivalents(GrcManager * /*pcman*/, GdlExpression ** ppexpX, GdlExpression ** ppexpY, GdlExpression ** ppexpGpoint, GdlExpression ** ppexpXoffset, GdlExpression ** ppexpYoffset) { Assert(m_psymName); if (m_psymName->FitsSymbolType(ksymtSlotAttr)) { return false; } if (m_psymName->FitsSymbolType(ksymtFeature)) { return false; } if (!m_psymName->HasSubFields()) { if (ppexpX) *ppexpX = NULL; if (ppexpY) *ppexpY = NULL; if (ppexpGpoint) *ppexpGpoint = NULL; if (ppexpXoffset) *ppexpXoffset = NULL; if (ppexpYoffset) *ppexpYoffset = NULL; return true; } // Generally the symbol type will be ksymtInvalidGlyphAttr, because the name itself is // undefined, only the subfields are defined. if (ppexpX) { Symbol psymX = m_psymName->SubField("x"); if (psymX && psymX->FitsSymbolType(ksymtGlyphAttr)) { GdlLookupExpression * pexpX = new GdlLookupExpression(*this); pexpX->m_psymName = psymX; pexpX->m_nInternalID = psymX->InternalID(); *ppexpX = pexpX; } else *ppexpX = NULL; } if (ppexpY) { Symbol psymY = m_psymName->SubField("y"); if (psymY && psymY->FitsSymbolType(ksymtGlyphAttr)) { GdlLookupExpression * pexpY = new GdlLookupExpression(*this); pexpY->m_psymName = psymY; pexpY->m_nInternalID = psymY->InternalID(); *ppexpY = pexpY; } else *ppexpY = NULL; } if (ppexpGpoint) { Symbol psymGpoint = m_psymName->SubField("gpoint"); if (psymGpoint && psymGpoint->FitsSymbolType(ksymtGlyphAttr)) //&& g_cman.OffsetAttrs()) -- create them anyway and delete them later { GdlLookupExpression * pexpGpoint = new GdlLookupExpression(*this); pexpGpoint->m_psymName = psymGpoint; pexpGpoint->m_nInternalID = psymGpoint->InternalID(); *ppexpGpoint = pexpGpoint; } else *ppexpGpoint = NULL; } if (ppexpXoffset) { Symbol psymXoffset = m_psymName->SubField("xoffset"); if (psymXoffset && psymXoffset->FitsSymbolType(ksymtGlyphAttr)) //&& g_cman.OffsetAttrs()) { GdlLookupExpression * pexpXoffset = new GdlLookupExpression(*this); pexpXoffset->m_psymName = psymXoffset; pexpXoffset->m_nInternalID = psymXoffset->InternalID(); *ppexpXoffset = pexpXoffset; } else *ppexpXoffset = NULL; } if (ppexpYoffset) { Symbol psymYoffset = m_psymName->SubField("yoffset"); if (psymYoffset && psymYoffset->FitsSymbolType(ksymtGlyphAttr)) //&& g_cman.OffsetAttrs()) { GdlLookupExpression * pexpYoffset = new GdlLookupExpression(*this); pexpYoffset->m_psymName = psymYoffset; pexpYoffset->m_nInternalID = psymYoffset->InternalID(); *ppexpYoffset = pexpYoffset; } else *ppexpYoffset = NULL; } return true; } /*---------------------------------------------------------------------------------------------- Do various checks on the expression that is the value of a slot attribute or a constraint: * legal use of slot references * not reading a write-only attribute (eg kern) * not reading the composite value of anything but a glyph metric * valid user-definable slot attribute For slot references, check that the expression does not make references to slots that are out of range, or that represent line-breaks or inserted items. Assumes that the expression has been type-checked, so we do not need to worry about the situation of inappropriately performing operations on slot references (eg, adding them together), or assigning numerical value where a slot reference is expected. Arguments: vfLb - vector of flags for each item in rule, true if it is a line-break vfIns - vector of flags for each item, true if item is an insertion fValue - true if the expression represents a value of an attribute that is being set, in which case LB slots are illegal, and we need to consider fValueIsInputSlot; false if the expression is simply looking up information from the input stream (ie in a constraint), so references to inserted slots are illegal. fValueIsInputSlot - true if the expression is the new value of an attribute and any slot references refer to a slot in the input stream (eg, comp.X.ref) rather than a slot in the output stream (eg, attach.to). In the former case, references to deleted slots are legal but refs to inserted slots are not; in the latter case, the opposite is true. ----------------------------------------------------------------------------------------------*/ bool GdlUnaryExpression::CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot) { return m_pexpOperand->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, fValue, fValueIsInputSlot); } /*--------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot) { bool fOkay = m_pexpOperand1->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, fValue, fValueIsInputSlot); if (!m_pexpOperand2->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, fValue, fValueIsInputSlot)) { fOkay = false; } return fOkay; } /*--------------------------------------------------------------------------------------------*/ bool GdlCondExpression::CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot) { bool fOkay = m_pexpTest->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, false, false); if (!m_pexpTrue->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, fValue, fValueIsInputSlot)) { fOkay = false; } if (!m_pexpFalse->CheckRuleExpression(pfont, prndr, vfLb, vfIns, vfDel, fValue, fValueIsInputSlot)) { fOkay = false; } return fOkay; } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::CheckRuleExpression(GrcFont * /*pfont*/, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & /*vfDel*/, bool /*fValue*/, bool /*fValueIsInputSlot*/) { Assert(m_psymName->FitsSymbolType(ksymtGlyphData) || m_psymName->FitsSymbolType(ksymtSlotAttr) || m_psymName->FitsSymbolType(ksymtFeature) || m_psymName->FitsSymbolType(ksymtClass) || m_psymName->FitsSymbolType(ksymtInvalid)); if (m_nClusterLevel != 0 && !m_psymName->FitsSymbolType(ksymtGlyphMetric)) g_errorList.AddError(2135, this, "Composite metrics are only available for glyph metrics"); if (m_psymName->FitsSymbolType(ksymtSlotAttr)) { if (m_psymName->IsWriteOnlySlotAttr()) g_errorList.AddError(2136, this, "The '", m_psymName->FullName(), "' attribute is write-only"); if (m_psymName->IsIndexedSlotAttr()) { if (m_psymName->IsUserDefinableSlotAttr()) { int nIndex = m_psymName->UserDefinableSlotAttrIndex(); if (nIndex < 0) g_errorList.AddError(2137, this, "Invalid slot attribute: ", m_psymName->FullName()); else if (nIndex >= kMaxUserDefinableSlotAttrs) { g_errorList.AddError(2138, this, "Invalid slot attribute: ", m_psymName->FullName(), "; maximum is ", std::to_string(kMaxUserDefinableSlotAttrs)); } else { prndr->SetNumUserDefn(nIndex); } } else { g_errorList.AddError(2139, this, "Not permitted to read the '", m_psymName->FullName(), "' attribute"); } } } // Ignore fValue and fValueIsInputSlot; because this is a lookup expression, // act as if fValue = false. int crit = signed(vfLb.size()); if (m_pexpSelector) { auto const sr = m_pexpSelector->SlotNumber(); auto const staSlotNumber = std::to_string(sr); if (sr < 1 || sr > crit) { g_errorList.AddError(2140, this, "Slot selector out of range: @", staSlotNumber, ".", m_psymName->FullName()); return false; } // Always okay to read the attribute of a line-break item or a deleted item. // Never okay to read the attribute of an inserted item. else if (vfIns[sr - 1]) { g_errorList.AddError(2141, this, "Slot selector indicates an inserted item: @", staSlotNumber, ".", m_psymName->FullName()); return false; } } return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlNumericExpression::CheckRuleExpression(GrcFont * pfont, GdlRenderer * /*prndr*/, std::vector & /*vfLb*/, std::vector & /*vfIns*/, std::vector & /*vfDel*/, bool /*fValue*/, bool /*fValueIsInputSlot*/) { m_nValue = pfont->ScaledToAbsolute(m_nValue, m_munits); m_munits = (m_munits == kmunitNone) ? kmunitNone : kmunitUnscaled; return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSlotRefExpression::CheckRuleExpression(GrcFont * /*pfont*/, GdlRenderer * /*prndr*/, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot) { auto const staSlotNumber = std::to_string(m_srNumber); if (m_srNumber < 1 || m_srNumber > signed(vfLb.size())) { g_errorList.AddError(2142, this, "Slot reference out of range: @", staSlotNumber); return false; } else if (fValue && vfLb[m_srNumber - 1]) { // Eg, attach.to = @2 or comp.X.ref = @2, where @2 is a LB slot g_errorList.AddError(2143, this, "Illegal reference to line-break slot: @", staSlotNumber); return false; } else if ((!fValue || fValueIsInputSlot) && vfIns[m_srNumber - 1]) { // Eg, @1.bb.width or comp.X.ref = @1, where @1 is being inserted g_errorList.AddError(2144, this, "Illegal reference to inserted slot: @", staSlotNumber); return false; } else if (fValue && !fValueIsInputSlot && vfDel[m_srNumber - 1]) { // Eg, attach.to = @3, where @3 is being deleted g_errorList.AddError(2145, this, "Illegal reference to deleted slot: @", staSlotNumber); return false; } else return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::CheckRuleExpression(GrcFont * /*pfont*/, GdlRenderer * /*prndr*/, std::vector & /*vfLb*/, std::vector & /*vfIns*/, std::vector & /*vfDel*/, bool /*fValue*/, bool /*fValueIsInputSlot*/) { // By this point any value string values (eg, values of the "lang" feature) should // have been converted to integers. g_errorList.AddError(2146, this, "Illegal expression: ", m_staValue); return false; } /*---------------------------------------------------------------------------------------------- Adjust slot references based on the fact that we have prepended ANYs to the beginning of the rule. ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::AdjustSlotRefsForPreAnys(int critPrependedAnys) { m_pexpOperand->AdjustSlotRefsForPreAnys(critPrependedAnys); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::AdjustSlotRefsForPreAnys(int critPrependedAnys) { m_pexpOperand1->AdjustSlotRefsForPreAnys(critPrependedAnys); m_pexpOperand2->AdjustSlotRefsForPreAnys(critPrependedAnys); } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::AdjustSlotRefsForPreAnys(int critPrependedAnys) { m_pexpTest->AdjustSlotRefsForPreAnys(critPrependedAnys); m_pexpTrue->AdjustSlotRefsForPreAnys(critPrependedAnys); m_pexpFalse->AdjustSlotRefsForPreAnys(critPrependedAnys); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::AdjustSlotRefsForPreAnys(int critPrependedAnys) { if (m_pexpSelector) m_pexpSelector->AdjustSlotRefsForPreAnys(critPrependedAnys); } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::AdjustSlotRefsForPreAnys(int /*critPrependedAnys*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::AdjustSlotRefsForPreAnys(int critPrependedAnys) { m_srNumber += critPrependedAnys; } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::AdjustSlotRefsForPreAnys(int /*critPrependedAnys*/) { } /*---------------------------------------------------------------------------------------------- Adjust any slot references to use the corresponding value of the vector, which is either an input index or an output index. Arguments: prit - pointer to owning rule item, when expression is an attach.to command; we store the adjusted index of the target of the attachment in the rule item for future reference. ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::AdjustToIOIndices(std::vector & virit, GdlRuleItem * prit) { Assert(prit == NULL); m_pexpOperand->AdjustToIOIndices(virit, prit); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::AdjustToIOIndices(std::vector & virit, GdlRuleItem * prit) { Assert(prit == NULL); m_pexpOperand1->AdjustToIOIndices(virit, prit); m_pexpOperand2->AdjustToIOIndices(virit, prit); } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::AdjustToIOIndices(std::vector & virit, GdlRuleItem * prit) { Assert(prit == NULL); m_pexpTest->AdjustToIOIndices(virit, prit); m_pexpTrue->AdjustToIOIndices(virit, prit); m_pexpFalse->AdjustToIOIndices(virit, prit); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::AdjustToIOIndices(std::vector & virit, GdlRuleItem * prit) { Assert(prit == NULL); if (m_pexpSelector) m_pexpSelector->AdjustToIOIndices(virit, prit); } /*--------------------------------------------------------------------------------------------*/ #ifdef NDEBUG void GdlNumericExpression::AdjustToIOIndices(std::vector &, GdlRuleItem *) #else void GdlNumericExpression::AdjustToIOIndices(std::vector & /*virit*/, GdlRuleItem * prit) #endif { Assert(prit == NULL); } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::AdjustToIOIndices(std::vector & virit, GdlRuleItem * prit) { if (m_srNumber == 0) m_nIOIndex = -1; else m_nIOIndex = virit[m_srNumber - 1]; if (prit) prit->SetAttachTo(m_nIOIndex); } /*--------------------------------------------------------------------------------------------*/ #ifdef NDEBUG void GdlStringExpression::AdjustToIOIndices(std::vector &, GdlRuleItem *) #else void GdlStringExpression::AdjustToIOIndices(std::vector & /*virit*/, GdlRuleItem * prit) #endif { Assert(prit == NULL); } /*---------------------------------------------------------------------------------------------- Convert a string-plus-codepage into a Unicode string (UTF-16 is what is required for the TT name table). ----------------------------------------------------------------------------------------------*/ std::wstring GdlStringExpression::ConvertToUnicode() { auto cch = m_staValue.length(); const schar * pchs = m_staValue.data(); utf16 * pchw = new utf16[cch + 1]; Platform_8bitToUnicode(m_nCodepage, pchs, cch, pchw, cch); pchw[cch] = 0; wchar_t * pchw_wchar = new wchar_t[cch + 1]; std::copy(pchw, pchw + cch + 1, pchw_wchar); std::wstring stuRet(pchw_wchar); //#ifdef GR_FW // StrUni stuRet((wchar_t*)pchw, cch); // something about the new VS compiler needs this :-( //#else // StrUni stuRet(pchw, cch); //#endif // GR_FW delete[] pchw; delete[] pchw_wchar; return stuRet; } /*---------------------------------------------------------------------------------------------- Return the highest level of justification referenced in the expression. ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::MaxJustificationLevel(int * pnLevel) { m_pexpOperand->MaxJustificationLevel(pnLevel); } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::MaxJustificationLevel(int * pnLevel) { m_pexpOperand1->MaxJustificationLevel(pnLevel); m_pexpOperand2->MaxJustificationLevel(pnLevel); } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::MaxJustificationLevel(int * pnLevel) { m_pexpTest->MaxJustificationLevel(pnLevel); m_pexpTrue->MaxJustificationLevel(pnLevel); m_pexpFalse->MaxJustificationLevel(pnLevel); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::MaxJustificationLevel(int * pnLevel) { int n = m_psymName->JustificationLevel(); *pnLevel = max(*pnLevel, n); } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::MaxJustificationLevel(int * /*pnLevel*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::MaxJustificationLevel(int * /*pnLevel*/) { } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::MaxJustificationLevel(int * /*pnLevel*/) { } /*---------------------------------------------------------------------------------------------- Return true if the expression is testing the justification status (JustifyLevel or JustifyMode). ----------------------------------------------------------------------------------------------*/ bool GdlUnaryExpression::TestsJustification() { return m_pexpOperand->TestsJustification(); } /*--------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::TestsJustification() { if (m_pexpOperand1->TestsJustification()) return true; return m_pexpOperand2->TestsJustification(); } /*--------------------------------------------------------------------------------------------*/ bool GdlCondExpression::TestsJustification() { if (m_pexpTest->TestsJustification()) return true; if (m_pexpTrue->TestsJustification()) return true; if (m_pexpFalse) return m_pexpFalse->TestsJustification(); return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::TestsJustification() { if (!m_psymName->FitsSymbolType(ksymtProcState)) return false; if (m_psymName->FullName() == "JustifyMode") return true; //if (m_psymName->FullName() == "JustifyLevel") // return true; return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlNumericExpression::TestsJustification() { return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlSlotRefExpression::TestsJustification() { return false; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::TestsJustification() { return false; } /*---------------------------------------------------------------------------------------------- Check that the expression is compatible with the requested version of the Silf table. If not, return the version required. ----------------------------------------------------------------------------------------------*/ bool GdlUnaryExpression::CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded) { return m_pexpOperand->CompatibleWithVersion(fxdVersion, pfxdNeeded, pfxdCpilrNeeded); } /*--------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded) { bool f1 = m_pexpOperand1->CompatibleWithVersion(fxdVersion, pfxdNeeded, pfxdCpilrNeeded); bool f2 = m_pexpOperand2->CompatibleWithVersion(fxdVersion, pfxdNeeded, pfxdCpilrNeeded); return (f1 && f2); } /*--------------------------------------------------------------------------------------------*/ bool GdlCondExpression::CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded) { bool fTest = m_pexpTest->CompatibleWithVersion(fxdVersion, pfxdNeeded, pfxdCpilrNeeded); bool fTrue = m_pexpTrue->CompatibleWithVersion(fxdVersion, pfxdNeeded, pfxdCpilrNeeded); bool fFalse = m_pexpFalse->CompatibleWithVersion(fxdVersion, pfxdNeeded, pfxdCpilrNeeded); return (fTest && fTrue && fFalse); } /*--------------------------------------------------------------------------------------------*/ bool GdlLookupExpression::CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded) { bool fRet = true; if (TestsJustification()) { *pfxdNeeded = max(*pfxdNeeded, 0x00020000); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00020000); fRet = (fxdVersion >= 0x00020000); } if (m_psymName->IsMeasureAttr()) { *pfxdNeeded = max(*pfxdNeeded, 0x00020000); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00020000); fRet = (fxdVersion >= 0x00020000); } if (m_psymName->FitsSymbolType(ksymtGlyphAttr)) { int nID = m_psymName->InternalID(); if (nID >= 0xFF) { *pfxdNeeded = max(*pfxdNeeded, 0x00030000); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00030000); fRet = (fxdVersion >= 0x00030000); } } return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlClassMemberExpression::CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded) { bool fRet = (fxdVersion >= 0x00020000); if (*pfxdNeeded < 0x00030000) *pfxdNeeded = max(*pfxdNeeded, 0x00020001); else *pfxdNeeded = max(*pfxdNeeded, 0x00030002); *pfxdCpilrNeeded = max(*pfxdCpilrNeeded, 0x00040001); return fRet; } /*--------------------------------------------------------------------------------------------*/ bool GdlNumericExpression::CompatibleWithVersion(int /*fxdVersion*/, int * /*pfxdNeeded*/, int * /*pfxdCpilrNeeded*/) { return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSlotRefExpression::CompatibleWithVersion(int /*fxdVersion*/, int * /*pfxdNeeded*/, int * /*pfxdCpilrNeeded*/) { return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlStringExpression::CompatibleWithVersion(int /*fxdVersion*/, int * /*pfxdNeeded*/, int * /*pfxdCpilrNeeded*/) { return true; } /*---------------------------------------------------------------------------------------------- Generate an error if they are looking up the value of the attach.to attribute and it is testing for anything other than zero. ----------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::CheckAttachToLookup() { // Assumes SimplifyAndUnscale has already been called. GdlLookupExpression * pexpLookupOp1 = dynamic_cast(m_pexpOperand1); GdlNumericExpression * pexpNumOp2 = dynamic_cast(m_pexpOperand2); if (pexpLookupOp1 && pexpLookupOp1->m_psymName->FitsSymbolType(ksymtSlotAttr) && pexpLookupOp1->m_psymName->IsAttachTo()) { if (!pexpNumOp2 || pexpNumOp2->m_nValue != 0) { g_errorList.AddError(3161, this, "Illegal use of attach.to attribute; can only test equality with 0"); return false; } } return true; } /*********************************************************************************************** Methods: Compiler ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Translate the expression into engine code and append it to the code block. Arguments: fxdRuleVersion - version of rule code to generate vbOutput - vector of bytes, engine code being generated iritCurrent - current rule item index (0-based); -1 if we are in an -if- statement pviritInput - vector of input indices for this rule; only relevant when generating constraints; NULL if we are generating actions nIIndex - input index of current slot fAttachAt - true if this the value of an attach.at attribute, in which case output a special command that will read the value of the attached slot iritAttachTo - value of attach.to attribute for current item (0-based, relative to start of rule) pnValue - return the value of the slot ref expression for the benefit of calling code that, if it happens to be an attach.to setter, needs to decide how to handle the accompanying insert = false; only slot references need to worry about it ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue) { m_pexpOperand->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, pnValue); std::string staOp = m_psymOperator->FullName(); if (strcmp(staOp.c_str(), "!") == 0) vbOutput.push_back(kopNot); else if (strcmp(staOp.c_str(), "-") == 0) vbOutput.push_back(kopNeg); else if (strcmp(staOp.c_str(), "~") == 0) vbOutput.push_back(kopBitNot); // eventually, perhaps add kopTrunc8 and kopTrunc16 else { Assert(false); } } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * /*pnValue*/) { if (GenerateSetBitsOp(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo)) { // method above did the output } else { int nBogus; m_pexpOperand1->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, &nBogus); m_pexpOperand2->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, &nBogus); std::string staOp = m_psymOperator->FullName(); if (staOp == "+") vbOutput.push_back(kopAdd); else if (staOp == "-") vbOutput.push_back(kopSub); else if (staOp == "*") vbOutput.push_back(kopMul); else if (staOp == "/") vbOutput.push_back(kopDiv); else if (staOp == "max") vbOutput.push_back(kopMax); else if (staOp == "min") vbOutput.push_back(kopMin); else if (staOp == "&&") vbOutput.push_back(kopAnd); else if (staOp == "||") vbOutput.push_back(kopOr); else if (staOp == "&") vbOutput.push_back(kopBitAnd); else if (staOp == "|") vbOutput.push_back(kopBitOr); else if (staOp == "==") vbOutput.push_back(kopEqual); else if (staOp == "!=") vbOutput.push_back(kopNotEq); else if (staOp == "<") vbOutput.push_back(kopLess); else if (staOp == ">") vbOutput.push_back(kopGtr); else if (staOp == "<=") vbOutput.push_back(kopLessEq); else if (staOp == ">=") vbOutput.push_back(kopGtrEq); else { Assert(false); } } } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue) { int nBogus; m_pexpTest->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, &nBogus); m_pexpTrue->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, pnValue); m_pexpFalse->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, pnValue); vbOutput.push_back(kopCond); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue) { if (m_pexpSimplified) { m_pexpSimplified->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, pnValue); return; } int nSelOffset; if (iritCurrent == -1) { // In an -if- statement. Assert(!m_pexpSelector); nSelOffset = 0; // whatever the current slot of interest is } else { int nSel; if (m_pexpSelector) { nSel = m_pexpSelector->m_nIOIndex; if (nSel < 0) nSel = (nSel + 1) * -1; // inverse of calculation in // GdlSubstitutionItem::AssignIOIndices() } else nSel = iritCurrent; // Adjust for constraints when there may be insertions. int nIIndex2 = nIIndex; if (pviritInput) { nIIndex2 = (*pviritInput)[nIIndex]; nSel = (*pviritInput)[nSel]; } nSelOffset = nSel - nIIndex2; } // Several slot attributes and glyph attributes have the same name; treat these as // slot attributes, since their values will default to the glyph attributes. if (m_psymName->FitsSymbolType(ksymtSlotAttr) && !m_fGlyphAttr) { if (m_psymName->IsIndexedSlotAttr()) { if (m_psymName->IsUserDefinableSlotAttr()) { vbOutput.push_back(kopPushISlotAttr); vbOutput.push_back(m_psymName->SlotAttrEngineCodeOp()); vbOutput.push_back(nSelOffset); vbOutput.push_back(m_psymName->UserDefinableSlotAttrIndex()); } else { Assert(false); // currently no way to look up the value of a // component.XXX.ref attr } } else { vbOutput.push_back(kopPushSlotAttr); vbOutput.push_back(m_psymName->SlotAttrEngineCodeOp()); vbOutput.push_back(nSelOffset); } } else if (m_psymName->FitsSymbolType(ksymtGlyphAttr)) { if (m_psymName->IsIndexedGlyphAttr()) { Assert(false); // currently no way to look up the value of a component attr; // eventually use kopPushIGlyphAttr. } else { int nID = m_psymName->InternalID(); if (fAttachAt) { Assert(iritAttachTo != -1); int nSel = (m_pexpSelector) ? m_pexpSelector->m_nIOIndex : iritAttachTo; if (fxdRuleVersion <= 0x00020000) { // Use old 8-bit version of this command. vbOutput.push_back(kopPushAttToGAttrV1_2); vbOutput.push_back(nID); } else { vbOutput.push_back(kopPushAttToGlyphAttr); vbOutput.push_back(nID >> 8); vbOutput.push_back(nID & 0x000000FF); } vbOutput.push_back(nSel - iritAttachTo); // relative to attach.to target } else { if (fxdRuleVersion <= 0x00020000) { // Use old 8-bit version of this command. vbOutput.push_back(kopPushGlyphAttrV1_2); vbOutput.push_back(nID); } else { vbOutput.push_back(kopPushGlyphAttr); vbOutput.push_back(nID >> 8); vbOutput.push_back(nID & 0x000000FF); } vbOutput.push_back(nSelOffset); } } } else if (m_psymName->FitsSymbolType(ksymtGlyphMetric)) { if (fAttachAt) { Assert(iritAttachTo != -1); int nSel = (m_pexpSelector) ? m_pexpSelector->m_nIOIndex : iritAttachTo; vbOutput.push_back(kopPushAttToGlyphMetric); vbOutput.push_back(m_psymName->GlyphMetricEngineCodeOp()); vbOutput.push_back(nSel - iritAttachTo); // relative to attach.to target } else { vbOutput.push_back(kopPushGlyphMetric); vbOutput.push_back(m_psymName->GlyphMetricEngineCodeOp()); vbOutput.push_back(nSelOffset); } vbOutput.push_back(m_nClusterLevel); } else if (m_psymName->FitsSymbolType(ksymtFeature)) { Assert(!m_pexpSelector); vbOutput.push_back(kopPushFeat); GdlFeatureDefn * pfeat = m_psymName->FeatureDefnData(); Assert(pfeat); int nAltOffset = m_psymName->FeatAltIDIndex(); Assert(nAltOffset >= 0); vbOutput.push_back(pfeat->InternalID() + nAltOffset); vbOutput.push_back(nSelOffset); } else if (m_psymName->FitsSymbolType(ksymtFeatSetting)) { // Should already have been converted to an integer, if valid. Assert(false); } else if (m_psymName->FitsSymbolType(ksymtProcState)) { if (m_psymName->FullName() == "RunDirection") { // The RunDirection processing state is equivalent to the directionality of the glyphs. vbOutput.push_back(kopPushSlotAttr); vbOutput.push_back(kslatDir); vbOutput.push_back(nSelOffset); } else { Assert(!m_pexpSelector); vbOutput.push_back(kopPushProcState); if (m_psymName->FullName() == "JustifyMode") vbOutput.push_back(kpstatJustifyMode); else if (m_psymName->FullName() == "JustifyLevel") vbOutput.push_back(kpstatJustifyLevel); else { Assert(false); } } } else { Assert(false); } } /*--------------------------------------------------------------------------------------------*/ void GdlClassMemberExpression::GenerateEngineCode(uint32_t /*fxdRuleVersion*/, std::vector & vbOutput, int /*iritCurrent*/, std::vector * /*pviritInput*/, int /*nIIndex*/, bool /*fAttachAt*/, int /*iritAttachTo*/, int * /*pnValue*/) { // Output most-significant byte first. gr::byte b4 = m_gid & 0x000000FF; if ((m_gid & 0xFFFFFF80) == 0 || (m_gid & 0xFFFFFF80) == 0xFFFFFF80) { vbOutput.push_back(kopPushByte); vbOutput.push_back(b4); } else { gr::byte b3 = (m_gid & 0x0000FF00) >> 8; if ((m_gid & 0xFFFF8000) == 0 || (m_gid & 0xFFFF8000) == 0xFFFF8000) { vbOutput.push_back(kopPushShort); vbOutput.push_back(b3); vbOutput.push_back(b4); } else { gr::byte b1 = (m_gid & 0xFF000000) >> 24; gr::byte b2 = (m_gid & 0x00FF0000) >> 16; vbOutput.push_back(kopPushLong); vbOutput.push_back(b1); vbOutput.push_back(b2); vbOutput.push_back(b3); vbOutput.push_back(b4); } } } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::GenerateEngineCode(uint32_t /*fxdRuleVersion*/, std::vector & vbOutput, int /*iritCurrent*/, std::vector * /*pviritInput*/, int /*nIIndex*/, bool /*fAttachAt*/, int /*iritAttachTo*/, int * /*pnValue*/) { // Output most-significant byte first. gr::byte b4 = m_nValue & 0x000000FF; if ((m_nValue & 0xFFFFFF80) == 0 || (m_nValue & 0xFFFFFF80) == 0xFFFFFF80) { vbOutput.push_back(kopPushByte); vbOutput.push_back(b4); } else { gr::byte b3 = (m_nValue & 0x0000FF00) >> 8; if ((m_nValue & 0xFFFF8000) == 0 || (m_nValue & 0xFFFF8000) == 0xFFFF8000) { vbOutput.push_back(kopPushShort); vbOutput.push_back(b3); vbOutput.push_back(b4); } else { gr::byte b1 = (m_nValue & 0xFF000000) >> 24; gr::byte b2 = (m_nValue & 0x00FF0000) >> 16; vbOutput.push_back(kopPushLong); vbOutput.push_back(b1); vbOutput.push_back(b2); vbOutput.push_back(b3); vbOutput.push_back(b4); } } } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::GenerateEngineCode(uint32_t /*fxdRuleVersion*/, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int /*nIIndex*/, bool /*fAttachAt*/, int /*iritAttachTo*/, int * pnValue) { int nOffset = m_nIOIndex - iritCurrent; Assert(!pviritInput); // should not be used for constraints if (pviritInput) nOffset = (*pviritInput)[m_nIOIndex] - iritCurrent; Assert(-128 <= nOffset && nOffset < 128); // Check this fits in 8 bits. gr::sdata8 const offset8 = nOffset; // If this happens to be the value of an attach.to attribute, current or following // slot needs to have insert = false set. *pnValue = nOffset; vbOutput.push_back(kopPushByte); vbOutput.push_back(reinterpret_cast(offset8)); } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::GenerateEngineCode(uint32_t /*fxdRuleVersion*/, std::vector & /*vbOutput*/, int /*iritCurrent*/, std::vector * /*pviritInput*/, int /*nIIndex*/, bool /*fAttachAt*/, int /*iritAttachTo*/, int * /*pnValue*/) { // Should never have string expressions in engine code. Assert(false); } /*---------------------------------------------------------------------------------------------- If this expression is of the form ( (s & (~m)) | v), use the special setbits operator. ----------------------------------------------------------------------------------------------*/ bool GdlBinaryExpression::GenerateSetBitsOp(uint32_t fxdRuleVersion, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo) { std::string staOp = m_psymOperator->FullName(); if (staOp == "|") { GdlBinaryExpression * pexp1And = dynamic_cast(m_pexpOperand1); GdlNumericExpression * pexp2Value = dynamic_cast(m_pexpOperand2); if (pexp1And && pexp2Value) { std::string staOp1 = pexp1And->Operator()->FullName(); GdlUnaryExpression * pexp1And2Not = dynamic_cast(pexp1And->Operand2()); if (staOp1 == "&" && pexp1And2Not) { std::string staOp12 = pexp1And2Not->Operator()->FullName(); if (staOp12 == "~") { int nMask, nValue; if (pexp1And2Not->Operand()->ResolveToInteger(&nMask, false) && pexp2Value->ResolveToInteger(&nValue, false) && nMask <= 0xFFFF) { // Okay, it's the right form. pexp1And->Operand1()->GenerateEngineCode(fxdRuleVersion, vbOutput, iritCurrent, pviritInput, nIIndex, fAttachAt, iritAttachTo, NULL); vbOutput.push_back(kopSetBits); vbOutput.push_back(nMask >> 8); vbOutput.push_back(nMask & 0x000000FF); vbOutput.push_back(nValue >> 8); vbOutput.push_back(nValue & 0x000000FF); return true; } } } } } return false; } /*---------------------------------------------------------------------------------------------- Generate a pretty-print of the expression. Arguments: pcman strmOut - Stream on which to generate the results fParens - Put parens around binary expression ----------------------------------------------------------------------------------------------*/ void GdlUnaryExpression::PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool /*fParens*/) { strmOut << m_psymOperator->FullName().data() << "("; m_pexpOperand->PrettyPrint(pcman, strmOut, fXml, false); strmOut << ")"; } /*--------------------------------------------------------------------------------------------*/ void GdlBinaryExpression::PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens) { if (fParens) strmOut << "("; m_pexpOperand1->PrettyPrint(pcman, strmOut, fXml, true); if (fXml && strcmp(m_psymOperator->FullName().data(), "&&") == 0) strmOut << " && "; else if (fXml && strcmp(m_psymOperator->FullName().data(), "&") == 0) strmOut << " & "; else if (fXml && strcmp(m_psymOperator->FullName().data(), "&=") == 0) strmOut << " &= "; else if (fXml && strcmp(m_psymOperator->FullName().data(), "<") == 0) strmOut << " < "; else if (fXml && strcmp(m_psymOperator->FullName().data(), "<=") == 0) strmOut << " <= "; else if (fXml && strcmp(m_psymOperator->FullName().data(), ">") == 0) strmOut << " > "; else if (fXml && strcmp(m_psymOperator->FullName().data(), ">=") == 0) strmOut << " >= "; else strmOut << " " << m_psymOperator->FullName().data() << " "; m_pexpOperand2->PrettyPrint(pcman, strmOut, fXml, true); if (fParens) strmOut << ")"; } /*--------------------------------------------------------------------------------------------*/ void GdlCondExpression::PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool /*fParens*/) { strmOut << "("; m_pexpTest->PrettyPrint(pcman, strmOut, fXml, true); strmOut << ") ? "; m_pexpTrue->PrettyPrint(pcman, strmOut, fXml, true); strmOut << " : "; m_pexpFalse->PrettyPrint(pcman, strmOut, fXml, true); } /*--------------------------------------------------------------------------------------------*/ void GdlLookupExpression::PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool /*fParens*/) { if (m_pexpSelector) { m_pexpSelector->PrettyPrint(pcman, strmOut, fXml, true); strmOut << "."; } if (m_fGlyphAttr) strmOut << "glyph."; strmOut << m_psymName->FullAbbrev().data(); } /*--------------------------------------------------------------------------------------------*/ void GdlNumericExpression::PrettyPrint(GrcManager * /*pcman*/, std::ostream & strmOut, bool /*fXml*/, bool /*fParens*/) { strmOut << m_nValue; } /*--------------------------------------------------------------------------------------------*/ void GdlSlotRefExpression::PrettyPrint(GrcManager * /*pcman*/, std::ostream & strmOut, bool /*fXml*/, bool /*fParens*/) { strmOut << "@" << m_srNumber; } /*--------------------------------------------------------------------------------------------*/ void GdlStringExpression::PrettyPrint(GrcManager * /*pcman*/, std::ostream & strmOut, bool /*fXml*/, bool /*fParens*/) { strmOut << m_staValue; } grcompiler-5.2.1/compiler/GdlExpression.h000066400000000000000000001111501411153030700204250ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlExpression.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Arithmetic and logical expressions that can appear in an GDL file. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GDL_EXP_INCLUDED #define GDL_EXP_INCLUDED class GdlRenderer; class GdlRule; class GrcGlyphAttrMatrix; class GrcLigComponentList; class GdlGlyphClassDefn; class GdlAttrValueSpec; /*---------------------------------------------------------------------------------------------- Class: GdlExpression Description: Abstract superclass representing the various kinds of expressions that can serve as the values of glyph attributes, slot attributes, etc. Hungarian: exp ----------------------------------------------------------------------------------------------*/ class GdlExpression : public GdlObject { friend class GdlUnaryExpression; friend class GdlBinaryExpression; friend class GdlCondExpression; friend class GdlLookupExpression; public: // Constructors: GdlExpression() : m_exptResult(kexptUnknown) { } // copy constructor GdlExpression(const GdlExpression & exp) : GdlObject(exp), m_exptResult(exp.m_exptResult) { } virtual GdlExpression * Clone() = 0; virtual ~GdlExpression() { } protected: // Initialization: virtual void SetType(ExpressionType exptResult) { if (m_exptResult == kexptBoolean && exptResult == kexptNumber) return; Assert( exptResult == m_exptResult || m_exptResult == kexptUnknown || (m_exptResult == kexptNumber && exptResult == kexptBoolean)); m_exptResult = exptResult; } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &) = 0; public: // Post-parser: virtual bool ReplaceAliases(GdlRule *) = 0; virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *) = 0; virtual bool ResolveToInteger(int * pnRet, bool fSlotRef) = 0; virtual bool ResolveToFeatureID(unsigned int * pnRet); public: // Pre-compiler: virtual ExpressionType ExpType() = 0; bool TypeCheck(ExpressionType nExpectedType); bool TypeCheck(ExpressionType, ExpressionType, ExpressionType); bool TypeCheck(std::vector& vnExpectedTypes); virtual bool CheckTypeAndUnits(ExpressionType * pexpt) = 0; virtual void GlyphAttrCheck(Symbol psymAttr) = 0; virtual void FixFeatureTestsInRules(GrcFont *) = 0; virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr) = 0; virtual void LookupExpCheck(bool fInIf, Symbol psymFeature) = 0; virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub) = 0; virtual GdlExpression * SimplifyAndUnscale(utf16 wGlyphID, GrcFont * pfont) { SymbolSet setpsym; bool fCanSub; return SimplifyAndUnscale(NULL, wGlyphID, setpsym, pfont, true, &fCanSub); } virtual void SetSpecialZero() { } virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit) = 0; virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint) = 0; virtual bool PointFieldEquivalents(GrcManager * pcman, GdlExpression ** ppexpX, GdlExpression ** ppexpY, GdlExpression ** ppexpGpoint, GdlExpression ** ppexpXoffset, GdlExpression ** ppexpYoffset); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot) = 0; virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys) = 0; virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *) = 0; virtual void MaxJustificationLevel(int * pnLevel) = 0; virtual bool TestsJustification() = 0; virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded) = 0; virtual bool CheckAttachToLookup() { return true; // only implemented for GdlBinaryExpression } // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue) = 0; // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false) = 0; private: //void operator=(GdlExpression); // don't call the assignment operator protected: // Instance variables: ExpressionType m_exptResult; }; /*---------------------------------------------------------------------------------------------- Class: GdlSimpleExpression Description: Abstract superclass for expressions that have no expressions embedded, in case it becomes handy. Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlSimpleExpression : public GdlExpression { public: // Constructors & destructors: GdlSimpleExpression() : GdlExpression() {} /// virtual GdlExpression * Clone() { return new GdlSimpleExpression(); } virtual ~GdlSimpleExpression() { } // copy constructor GdlSimpleExpression(const GdlSimpleExpression & exp) : GdlExpression(exp) { } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &) { } public: // Post-parser: virtual bool ReplaceAliases(GdlRule *) { return true; } virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *) { return true; } virtual bool ResolveToInteger(int * /*pnRet*/, bool /*fSlotRef*/) { return false; } public: // Pre-compiler: virtual ExpressionType ExpType() { return kexptUnknown; } virtual bool CheckTypeAndUnits(ExpressionType * pexpt) { *pexpt = kexptUnknown; return true; } virtual void GlyphAttrCheck(Symbol /*psymAttr*/) { } virtual void FixFeatureTestsInRules(GrcFont *) { } virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * /*pfeat*/, bool & /*fErr*/) { return this; } virtual void LookupExpCheck(bool /*fInIf*/, Symbol /*psymFeature*/) { } virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * /*pgax*/, utf16 /*wGlyphID*/, SymbolSet & /*setpsym*/, GrcFont * /*pfont*/, bool /*fGAttrDefChk*/, bool * /*pfCanSub*/) { return this; } virtual void CheckAndFixGlyphAttrsInRules(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/) { } virtual void CheckCompleteAttachmentPoint(GrcManager * /*pcman*/, std::vector & /*vpglfcInClasses*/, int /*irit*/, bool * /*pfXY*/, bool * /*pfGpoint*/) { } virtual bool PointFieldEquivalents(GrcManager * /*pcman*/, GdlExpression ** /*ppexpX*/, GdlExpression ** /*ppexpY*/, GdlExpression ** /*ppexpGpoint*/, GdlExpression ** /*ppexpXoffset*/, GdlExpression ** /*ppexpYoffset*/) { return false; } virtual bool CheckRuleExpression(GrcFont * /*pfont*/, GdlRenderer * /*prndr*/, std::vector & /*vfLb*/, std::vector & /*vfIns*/, std::vector & /*vfDel*/, bool /*fValue*/, bool /*fValueIsInputSlot*/) { return true; } virtual void AdjustSlotRefsForPreAnys(int /*critPrependedAnys*/) { } virtual void AdjustToIOIndices(std::vector & /*virit*/, GdlRuleItem *) { } virtual void MaxJustificationLevel(int * /*pnLevel*/) { } virtual bool TestsJustification() { return false; } virtual bool CompatibleWithVersion(int /*fxdVersion*/, int * /*pfxdNeeded*/, int * /*pfxdCpilrNeeded*/) { return true; } // Compiler: virtual void GenerateEngineCode(uint32_t /*fxdRuleVersion*/, std::vector & /*vbOutput*/, int /*irit*/, std::vector * /*pviritInput*/, int /*nIIndex*/, bool /*fAttachAt*/, int /*iritAttachTo*/, int * /*pnValue*/) { } // debuggers: virtual void PrettyPrint(GrcManager * /*pcman*/, std::ostream & strmOut, bool /*fXml*/, bool /*fParens*/ = false) { strmOut << "???"; }; }; /*---------------------------------------------------------------------------------------------- Class: GdlNumericExpression Description: Scaled or unscaled number Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlNumericExpression : public GdlSimpleExpression { friend class GdlUnaryExpression; friend class GdlBinaryExpression; friend class GdlCondExpression; friend class GdlLookupExpression; public: // Constructors & destructors: GdlNumericExpression(int nValue) : GdlSimpleExpression(), m_nValue(nValue), m_munits(kmunitNone), m_fBoolean(false) { SetType(kexptNumber); } GdlNumericExpression(int nValue, int munits) : GdlSimpleExpression(), m_nValue(nValue), m_munits(munits), m_fBoolean(false) { if (m_munits == kmunitNone) SetType(kexptNumber); else SetType(kexptMeas); } GdlNumericExpression(int nValue, bool fBool) : GdlSimpleExpression(), m_nValue(nValue), m_munits(kmunitNone), m_fBoolean(fBool) { SetType(kexptBoolean); } // copy constructor GdlNumericExpression(const GdlNumericExpression & exp) : GdlSimpleExpression(exp), m_nValue(exp.m_nValue), m_munits(exp.m_munits), m_fBoolean(exp.m_fBoolean) {} virtual GdlExpression * Clone() { return new GdlNumericExpression(*this); } // Getters: int Value() { return m_nValue; } int Units() { return m_munits; } bool IsBoolean() { return m_fBoolean; } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &); public: // Post-parser: virtual bool ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual bool ResolveToInteger(int * pnRet, bool fSlotRef); public: // Pre-compiler: virtual ExpressionType ExpType(); virtual bool CheckTypeAndUnits(ExpressionType * pexpt); virtual void GlyphAttrCheck(Symbol psymAttr); virtual void FixFeatureTestsInRules(GrcFont *); virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr); virtual void LookupExpCheck(bool fInIf, Symbol psymFeature); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual void SetSpecialZero(); virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit); virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *); virtual void MaxJustificationLevel(int * pnLevel); virtual bool TestsJustification(); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); void SetValue(int nValue) { m_nValue = nValue; } // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false); protected: // Instance variables: int m_nValue; int m_munits; // Scaling in effect when expression was encountered, or kmunitNone bool m_fBoolean; // was originally indicated as 'true' or 'false }; /*---------------------------------------------------------------------------------------------- Class: GdlSlotRefExpression Description: Number or alias that should be interpreted as a slot in the rule; eg, @2, @vowel Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlSlotRefExpression : public GdlSimpleExpression { friend class GdlUnaryExpression; friend class GdlBinaryExpression; friend class GdlCondExpression; friend class GdlLookupExpression; public: // Constructors & destructors: GdlSlotRefExpression(int sr) : GdlSimpleExpression(), m_srNumber(sr) { SetType(kexptSlotRef); } GdlSlotRefExpression(std::string sta) : GdlSimpleExpression(), m_srNumber(-1), m_staName(sta) { SetType(kexptSlotRef); } // copy constructor GdlSlotRefExpression(const GdlSlotRefExpression & exp) : GdlSimpleExpression(exp), m_srNumber(exp.m_srNumber), m_staName(exp.m_staName), m_nIOIndex(exp.m_nIOIndex) { } virtual GdlExpression * Clone() { return new GdlSlotRefExpression(*this); } virtual ~GdlSlotRefExpression() { } public: // General: int SlotNumber() { return m_srNumber; } std::string Alias() { return m_staName; } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &); public: // Post-parser: virtual bool ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual bool ResolveToInteger(int * pnRet, bool fSlotRef); public: // Pre-compiler: virtual ExpressionType ExpType(); virtual bool CheckTypeAndUnits(ExpressionType * pexpt); virtual void GlyphAttrCheck(Symbol psymAttr); virtual void FixFeatureTestsInRules(GrcFont *); virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr); virtual void LookupExpCheck(bool fInIf, Symbol psymFeature); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit); virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *); virtual void MaxJustificationLevel(int * pnLevel); virtual bool TestsJustification(); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); int AdjustedIndex() { return m_nIOIndex; } // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false); protected: // Instance variables: // either the number or the name is used, not both int m_srNumber; // 1-based std::string m_staName; // for compiler use: int m_nIOIndex; // adjusted input index or output index (which ever is relevant // for the context) - 0-based }; /*---------------------------------------------------------------------------------------------- Class: GdlStringExpression Description: An GDL string function. Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlStringExpression : public GdlSimpleExpression { friend class GdlUnaryExpression; friend class GdlBinaryExpression; friend class GdlCondExpression; friend class GdlLookupExpression; public: // Constructors & destructors: GdlStringExpression(std::string sta, int nCodepage) : GdlSimpleExpression(), m_staValue(sta), m_nCodepage(nCodepage) {} // copy constructor GdlStringExpression(const GdlStringExpression & exp) : GdlSimpleExpression(exp), m_staValue(exp.m_staValue), m_nCodepage(exp.m_nCodepage) {} virtual GdlExpression * Clone() { return new GdlStringExpression(*this); } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &); public: // Post-parser: virtual bool ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual bool ResolveToInteger(int * pnRet, bool fSlotRef); virtual bool ResolveToFeatureID(unsigned int *pnRet); std::wstring ConvertToUnicode(); public: // Pre-compiler: virtual ExpressionType ExpType(); virtual bool CheckTypeAndUnits(ExpressionType * pexpt); virtual void GlyphAttrCheck(Symbol psymAttr); virtual void FixFeatureTestsInRules(GrcFont *); virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr); virtual void LookupExpCheck(bool fInIf, Symbol psymFeature); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit); virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *); virtual void MaxJustificationLevel(int * pnLevel); virtual bool TestsJustification(); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); std::string StringValue() { return m_staValue; } // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false); protected: // Instance variables: std::string m_staValue; int m_nCodepage; }; /*---------------------------------------------------------------------------------------------- Class: GdlUnaryExpression Description: Unary expression, for example, -(a + b), !boolean. Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlUnaryExpression : public GdlExpression { friend class GdlBinaryExpression; friend class GdlCondExpression; friend class GdlLookupExpression; public: // Constructors & destructors: GdlUnaryExpression(Symbol psymOperator, GdlExpression * pexpOperand) : GdlExpression(), m_psymOperator(psymOperator), m_pexpOperand(pexpOperand) { if (m_pexpOperand && m_pexpOperand->LineIsZero()) m_pexpOperand->PropagateLineAndFile(m_lnf); } // copy constructor GdlUnaryExpression(const GdlUnaryExpression & exp) : GdlExpression(exp), m_psymOperator(exp.m_psymOperator), m_pexpOperand(exp.m_pexpOperand->Clone()) { } virtual GdlExpression * Clone() { return new GdlUnaryExpression(*this); } virtual ~GdlUnaryExpression() { delete m_pexpOperand; } // Getters: Symbol Operator() { return m_psymOperator; } GdlExpression* Operand() { return m_pexpOperand; } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &); public: // Post-parser: virtual bool ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual bool ResolveToInteger(int * pnRet, bool fSlotRef); public: // Pre-compiler: virtual ExpressionType ExpType(); virtual bool CheckTypeAndUnits(ExpressionType * pexpt); virtual void GlyphAttrCheck(Symbol psymAttr); virtual void FixFeatureTestsInRules(GrcFont *); virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr); virtual void LookupExpCheck(bool fInIf, Symbol psymFeature); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit); virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *); virtual void MaxJustificationLevel(int * pnLevel); virtual bool TestsJustification(); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false); protected: // Instance variables: Symbol m_psymOperator; GdlExpression * m_pexpOperand; }; /*---------------------------------------------------------------------------------------------- Class: GdlBinaryExpression Description: Binary expression or function, for example, a + b, min(x,y). Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlBinaryExpression : public GdlExpression { friend class GdlUnaryExpression; friend class GdlCondExpression; friend class GdlLookupExpression; public: // Constructors & destructors: GdlBinaryExpression(Symbol psymOperator, GdlExpression * pexpOp1, GdlExpression * pexpOp2) : GdlExpression(), m_psymOperator(psymOperator), m_pexpOperand1(pexpOp1), m_pexpOperand2(pexpOp2) { if (m_pexpOperand1 && m_pexpOperand1->LineIsZero()) m_pexpOperand1->PropagateLineAndFile(m_lnf); if (m_pexpOperand2 && m_pexpOperand2->LineIsZero()) m_pexpOperand2->PropagateLineAndFile(m_lnf); } // copy constructor GdlBinaryExpression(const GdlBinaryExpression & exp) : GdlExpression(exp), m_psymOperator(exp.m_psymOperator), m_pexpOperand1(exp.m_pexpOperand1->Clone()), m_pexpOperand2(exp.m_pexpOperand2->Clone()) { } virtual GdlExpression * Clone() { return new GdlBinaryExpression(*this); } virtual ~GdlBinaryExpression() { delete m_pexpOperand1; delete m_pexpOperand2; } // Getters: Symbol Operator() { return m_psymOperator; } GdlExpression* Operand1() { return m_pexpOperand1; } GdlExpression* Operand2() { return m_pexpOperand2; } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &); public: // Post-parser: virtual bool ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual bool ResolveToInteger(int * pnRet, bool fSlotRef); public: // Pre-compiler: virtual ExpressionType ExpType(); virtual bool CheckTypeAndUnits(ExpressionType * pexpt); virtual void GlyphAttrCheck(Symbol psymAttr); virtual void FixFeatureTestsInRules(GrcFont *); virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr); virtual void LookupExpCheck(bool fInIf, Symbol psymFeature); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit); virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *); virtual void MaxJustificationLevel(int * pnLevel); virtual bool TestsJustification(); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); virtual bool CheckAttachToLookup(); // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); bool GenerateSetBitsOp(uint32_t fxdRuleVersion, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo); // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false); protected: // Instance variables: Symbol m_psymOperator; GdlExpression* m_pexpOperand1; GdlExpression* m_pexpOperand2; }; /*---------------------------------------------------------------------------------------------- Class: GdlCondExpression Description: Conditional expression, eg, (test)? true_value: false_value Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlCondExpression : public GdlExpression { friend class GdlUnaryExpression; friend class GdlBinaryExpression; friend class GdlLookupExpression; public: // Constructors & destructors: GdlCondExpression( GdlExpression* pexpTest, GdlExpression * pexpTrue, GdlExpression * pexpFalse) : GdlExpression(), m_pexpTest(pexpTest), m_pexpTrue(pexpTrue), m_pexpFalse(pexpFalse) { // m_pexpTest->SetType(kexptBoolean); if (m_pexpTest && m_pexpTest->LineIsZero()) m_pexpTest->PropagateLineAndFile(m_lnf); if (m_pexpTrue && m_pexpTrue->LineIsZero()) m_pexpTrue->PropagateLineAndFile(m_lnf); if (m_pexpFalse && m_pexpFalse->LineIsZero()) m_pexpFalse->PropagateLineAndFile(m_lnf); } // copy constructor GdlCondExpression(const GdlCondExpression & exp) : GdlExpression(exp), m_pexpTest(exp.m_pexpTest->Clone()), m_pexpTrue(exp.m_pexpTrue->Clone()), m_pexpFalse(exp.m_pexpFalse->Clone()) { } virtual GdlExpression * Clone() { return new GdlCondExpression(*this); } virtual ~GdlCondExpression() { delete m_pexpTest; delete m_pexpTrue; delete m_pexpFalse; } // Getters: GdlExpression* Test() { return m_pexpTest; } GdlExpression* TrueExp() { return m_pexpTrue; } GdlExpression* FalseExp() { return m_pexpFalse; } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &); public: // Post-parser: virtual bool ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual bool ResolveToInteger(int * pnRet, bool fSlotRef); public: // Pre-compiler: virtual ExpressionType ExpType(); virtual bool CheckTypeAndUnits(ExpressionType * pexpt); virtual void GlyphAttrCheck(Symbol psymAttr); virtual void FixFeatureTestsInRules(GrcFont *); virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr); virtual void LookupExpCheck(bool fInIf, Symbol psymFeature); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit); virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *); virtual void MaxJustificationLevel(int * pnLevel); virtual bool TestsJustification(); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false); protected: // Instance variables: GdlExpression* m_pexpTest; GdlExpression* m_pexpTrue; GdlExpression* m_pexpFalse; }; /*---------------------------------------------------------------------------------------------- Class: GdlLookupExpression Description: Expression to look up the value of a slot or glyph attribute, eg, linebreak, BoundingBox.Left.2, @3.Advance.Width Hungarian: ----------------------------------------------------------------------------------------------*/ class GdlLookupExpression : public GdlExpression { friend class GdlUnaryExpression; friend class GdlBinaryExpression; friend class GdlCondExpression; public: // name space in which to do look-up: // enum LookupType { // klookUnknown, // klookGlyph, // klookSlot, // klookFeature // }; // Constructors & destructors: GdlLookupExpression(Symbol psymName, int nSel, int nClus) : GdlExpression(), m_psymName(psymName), m_nClusterLevel(nClus), m_pexpSimplified(NULL) { if (nSel > -1) { m_pexpSelector = new GdlSlotRefExpression(nSel); m_pexpSelector->PropagateLineAndFile(m_lnf); } else m_pexpSelector = NULL; } GdlLookupExpression(Symbol psymName, std::string staSel, int nClus) : GdlExpression(), m_psymName(psymName), m_nClusterLevel(nClus), m_pexpSimplified(NULL) { m_pexpSelector = new GdlSlotRefExpression(staSel); m_pexpSelector->PropagateLineAndFile(m_lnf); } GdlLookupExpression(Symbol psymName, GdlSlotRefExpression * pexpSel, int nClus) : GdlExpression(), m_psymName(psymName), m_pexpSelector(pexpSel), m_nClusterLevel(nClus), m_pexpSimplified(NULL) { } GdlLookupExpression(Symbol psymName, int nSel) : GdlExpression(), m_psymName(psymName), m_nClusterLevel(0), m_pexpSimplified(NULL), m_fGlyphAttr(false) { m_pexpSelector = new GdlSlotRefExpression(nSel); m_pexpSelector->PropagateLineAndFile(m_lnf); } GdlLookupExpression(Symbol psymName, std::string staSel) : GdlExpression(), m_psymName(psymName), m_nClusterLevel(0), m_pexpSimplified(NULL), m_fGlyphAttr(false) { m_pexpSelector = new GdlSlotRefExpression(staSel); m_pexpSelector->PropagateLineAndFile(m_lnf); } GdlLookupExpression(Symbol psymName) : GdlExpression(), m_psymName(psymName), m_pexpSelector(NULL), m_nClusterLevel(0), m_pexpSimplified(NULL), m_fGlyphAttr(false) { } // copy constructor GdlLookupExpression(const GdlLookupExpression& exp) : GdlExpression(exp), m_psymName(exp.m_psymName), m_nClusterLevel(exp.m_nClusterLevel), m_fGlyphAttr(exp.m_fGlyphAttr), m_nInternalID(exp.m_nInternalID), m_nSubIndex(exp.m_nSubIndex) { m_pexpSelector = (exp.m_pexpSelector) ? new GdlSlotRefExpression(*exp.m_pexpSelector) : NULL; m_pexpSimplified = (exp.m_pexpSimplified) ? new GdlNumericExpression(*exp.m_pexpSimplified) : NULL; } virtual GdlExpression * Clone() { return new GdlLookupExpression(*this); } virtual ~GdlLookupExpression() { if (m_pexpSelector) delete m_pexpSelector; if (m_pexpSimplified) delete m_pexpSimplified; } // Getters: Symbol Name() { return m_psymName; } GdlSlotRefExpression* Selector() { return m_pexpSelector; } bool NameFitsSymbolType(SymbolType symt) { return m_psymName->FitsSymbolType(symt); } // Setters: void SetGlyphAttr(bool f = true) { m_fGlyphAttr = f; } public: // Parser: virtual void PropagateLineAndFile(GrpLineAndFile &); public: // Post-parser: virtual bool ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual bool ResolveToInteger(int * pnRet, bool fSlotRef); public: // Pre-compiler: virtual ExpressionType ExpType(); virtual bool CheckTypeAndUnits(ExpressionType * pexpt); virtual void GlyphAttrCheck(Symbol psymAttr); virtual void FixFeatureTestsInRules(GrcFont *); virtual GdlExpression * ConvertFeatureSettingValue(GdlFeatureDefn * pfeat, bool & fErr); virtual void LookupExpCheck(bool fInIf, Symbol psymFeature); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual void CheckAndFixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit); virtual void CheckCompleteAttachmentPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool * pfGpoint); virtual bool PointFieldEquivalents(GrcManager * pcman, GdlExpression ** ppexpX, GdlExpression ** ppexpY, GdlExpression ** ppexpGpoint, GdlExpression ** ppexpXoffset, GdlExpression ** ppexpYoffset); virtual bool CheckRuleExpression(GrcFont * pfont, GdlRenderer * prndr, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, bool fValue, bool fValueIsInputSlot); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & virit, GdlRuleItem *); virtual void MaxJustificationLevel(int * pnLevel); virtual bool TestsJustification(); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); // Compiler: virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); // debuggers: virtual void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fParens = false); protected: // Instance variables: Symbol m_psymName; GdlSlotRefExpression * m_pexpSelector; // 1-based int m_nClusterLevel; // LookupType m_lookType; // glyph attr, slot attr, feature GdlNumericExpression * m_pexpSimplified; bool m_fGlyphAttr; // for compiler use: int m_nInternalID; int m_nSubIndex; // for indexed attributes (component.X.ref) }; /*---------------------------------------------------------------------------------------------- Class: GdlClassMemberExpression Description: Expression to look up the a glyph, with an index into a class. Only used within glyph attribute definitions. Hungarian: expil ----------------------------------------------------------------------------------------------*/ class GdlClassMemberExpression : public GdlLookupExpression { public: // Constructors & destructors: GdlClassMemberExpression(Symbol psymName) : GdlLookupExpression(psymName) { m_igid = -1; m_cgidClassSize = -1; m_gid = -1; } GdlClassMemberExpression(int gid) // used for setting defaults : GdlLookupExpression(NULL) { m_igid = -1; m_cgidClassSize = -1; m_gid = gid; } // copy constructor GdlClassMemberExpression(const GdlClassMemberExpression& exp) : GdlLookupExpression(exp), m_igid(exp.m_igid), m_cgidClassSize(exp.m_cgidClassSize), m_gid(exp.m_gid) { } virtual GdlExpression * Clone() { return new GdlClassMemberExpression(*this); } public: // Pre-compiler: virtual void GlyphAttrCheck(Symbol psymAttr); virtual GdlExpression * SimplifyAndUnscale(GrcGlyphAttrMatrix * pgax, utf16 wGlyphID, SymbolSet & setpsym, GrcFont * pfont, bool fGAttrDefChk, bool * pfCanSub); virtual bool CheckTypeAndUnits(ExpressionType * pexptRet); bool ResolveToInteger(int * pnRet, bool fSlotRef); virtual bool PointFieldEquivalents(GrcManager * pcman, GdlExpression ** ppexpX, GdlExpression ** ppexpY, GdlExpression ** ppexpGpoint, GdlExpression ** ppexpXoffset, GdlExpression ** ppexpYoffset); size_t ValueCount(); // Compiler: virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); virtual void GenerateEngineCode(uint32_t fxdRuleVersion, std::vector & vbOutput, int iritCurrent, std::vector * pviritInput, int nIIndex, bool fAttachAt, int iritAttachTo, int * pnValue); void SetClassSize(int cgid) { m_cgidClassSize = cgid; } void SetGlyphIndex(int igid) { m_igid = igid; } int GlyphIndex() { return m_igid; } protected: // Instance variables: int m_igid; // index of glyph within defining class int m_cgidClassSize; // of defining class int m_gid; // resolved glyphid value }; #endif // !GDL_EXP_INCLUDED grcompiler-5.2.1/compiler/GdlFeatures.cpp000066400000000000000000000441621411153030700204070ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlFeatures.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implement the classes to handle the features mechanism. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods: Post-parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the feature setting with the given name; create it if necessary. ----------------------------------------------------------------------------------------------*/ GdlFeatureSetting * GdlFeatureDefn::FindOrAddSetting(std::string sta, GrpLineAndFile & lnf) { GdlFeatureSetting * pfset = FindSetting(sta); if (pfset) return pfset; pfset = new GdlFeatureSetting(); pfset->SetName(sta); pfset->SetLineAndFile(lnf); m_vpfset.push_back(pfset); return pfset; } /*---------------------------------------------------------------------------------------------- Return the feature setting with the given name, or NULL if none. ----------------------------------------------------------------------------------------------*/ GdlFeatureSetting * GdlFeatureDefn::FindSetting(std::string sta) { for (size_t i = 0; i < m_vpfset.size(); ++i) { if (m_vpfset[i]->m_staName == sta) return m_vpfset[i]; } return NULL; } /*---------------------------------------------------------------------------------------------- Return the feature setting with the given value, or NULL if none. ----------------------------------------------------------------------------------------------*/ GdlFeatureSetting * GdlFeatureDefn::FindSettingWithValue(int n) { for (size_t i = 0; i < m_vpfset.size(); i++) { if (m_vpfset[i]->m_nValue == n) return m_vpfset[i]; } return NULL; } /*********************************************************************************************** Methods: Pre-compiler ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Check for various error conditions. ----------------------------------------------------------------------------------------------*/ bool GdlFeatureDefn::ErrorCheck() { if (m_fStdLang) { Assert(m_vpfset.size() == 0); m_fIDSet = true; return true; } // Feature with no ID: fatal error if (m_fIDSet == false) { if (m_nID == 0 && m_vnIDs.size() > 0) // use the first alternate if that's all there is { m_nID = m_vnIDs[0]; m_fIDSet = true; } else { g_errorList.AddError(3158, this, "No id specified for feature ", m_staName); m_fFatalError = true; return false; } } // Duplicate IDs in feature settings: fatal error std::set setnIDs; for (size_t ifset = 0; ifset < m_vpfset.size(); ++ifset) { int nValue = m_vpfset[ifset]->m_nValue; if (setnIDs.find(nValue) != setnIDs.end()) // is a member { g_errorList.AddError(3159, m_vpfset[ifset], "Duplicate feature setting values in ", m_staName); m_fFatalError = true; return false; } setnIDs.insert(nValue); } // Feature with only one setting: warning if (m_vpfset.size() == 1) g_errorList.AddWarning(3525, this, "Only one setting given for feature ", m_staName); return true; } /*---------------------------------------------------------------------------------------------- Sort the feature settings by their value. This is only needed to make output font deterministic for the sake of regression testing. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::SortFeatSettings() { if (m_vpfset.size() > 1) { for (size_t ifset1 = 0; ifset1 < m_vpfset.size() - 1; ifset1++) { int nVal1 = m_vpfset[ifset1]->Value(); for (size_t ifset2 = ifset1 + 1; ifset2 < m_vpfset.size(); ifset2++) { int nVal2 = m_vpfset[ifset2]->Value(); if (nVal1 > nVal2) { GdlFeatureSetting * pfsetTemp = m_vpfset[ifset1]; m_vpfset[ifset1] = m_vpfset[ifset2]; m_vpfset[ifset2] = pfsetTemp; nVal1 = m_vpfset[ifset1]->Value(); } } } } } /*---------------------------------------------------------------------------------------------- Put the name ID first in the list of alternates. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::SortFeatIDs() { if (NumAltIDs() > 1) { for (size_t i = 1; i < m_vnIDs.size(); i++) { if (m_vnIDs[i] == this->m_nID) { m_vnIDs[i] = m_vnIDs[0]; m_vnIDs[0] = m_nID; break; } } } } /*---------------------------------------------------------------------------------------------- Determine if this style is the standard style; if so, set the flag. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::SetStdStyleFlag() { if (m_nID == kfidStdStyles) m_fStdStyles = true; } /*---------------------------------------------------------------------------------------------- If there are no settings for this feature, fill in with the default boolean settings. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::FillInBoolean(GrcSymbolTable * psymtbl) { if (m_fStdLang) return; bool fBoolean = false; if (m_vpfset.size() == 0) { GdlFeatureSetting * pfsetFalse = new GdlFeatureSetting(); pfsetFalse->CopyLineAndFile(*this); pfsetFalse->m_nValue = 0; pfsetFalse->m_fHasValue = true; pfsetFalse->m_staName = "false"; pfsetFalse->m_vextname.push_back(GdlExtName(L"False", LG_USENG)); m_vpfset.push_back(pfsetFalse); GdlFeatureSetting * pfsetTrue = new GdlFeatureSetting(); pfsetTrue->CopyLineAndFile(*this); pfsetTrue->m_nValue = 1; pfsetTrue->m_fHasValue = true; pfsetTrue->m_staName = "true"; pfsetTrue->m_vextname.push_back(GdlExtName(L"True", LG_USENG)); m_vpfset.push_back(pfsetTrue); if (!m_fDefaultSet) m_nDefault = 0; m_fDefaultSet = true; fBoolean = true; } else if (m_vpfset.size() == 2) { fBoolean = ((m_vpfset[0]->m_nValue == 0 && m_vpfset[1]->m_nValue == 1) || (m_vpfset[0]->m_nValue == 1 && m_vpfset[1]->m_nValue == 0)); } if (fBoolean) { // Mark the expression type as boolean, not number. Symbol psymFeat = psymtbl->FindSymbol(m_staName); Assert(psymFeat->ExpType() == kexptNumber); psymFeat->SetExpType(kexptBoolean); } } /*---------------------------------------------------------------------------------------------- More error checks that should be done after creating the boolean settings. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::ErrorCheckContd() { if (m_fStdLang) { return; } //std::set setnValues; for (auto const pfset: m_vpfset) { // Feature setting with no value set: warning if (!pfset->m_fHasValue) { g_errorList.AddWarning(3526, this, "Feature setting with no value specified; value will be zero: ", pfset->m_staName); } } } /*---------------------------------------------------------------------------------------------- Calculate the default setting, if it has not been stated explicitly. The default will be the minimum value. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::CalculateDefault() { if (m_fStdLang) { m_nDefault = 0; m_fDefaultSet = true; return; } if (m_fDefaultSet) { for (auto const pfset: m_vpfset) { if (pfset->m_nValue == m_nDefault) { m_pfsetDefault = pfset; return; } } // Default setting not found; make one (with no name). GdlFeatureSetting * pfset = new GdlFeatureSetting(); pfset->SetValue(m_nDefault); m_vpfset.push_back(pfset); m_pfsetDefault = pfset; m_fDefaultSet = true; return; } if (m_vpfset.size() == 0) return; m_nDefault = m_vpfset[0]->m_nValue; m_pfsetDefault = m_vpfset[0]; for (auto ifset = 1U; ifset < m_vpfset.size(); ++ifset) { if (m_vpfset[ifset]->m_nValue < m_nDefault) { m_nDefault = m_vpfset[ifset]->m_nValue; m_pfsetDefault = m_vpfset[ifset]; } } m_fDefaultSet = true; } /*---------------------------------------------------------------------------------------------- Assign name table ids to the feature itself and all its settings. Each of these gets a unique id which starts with nFirst and is incremented. Return the id that should be used next. ----------------------------------------------------------------------------------------------*/ utf16 GdlFeatureDefn::SetNameTblIds(utf16 wFirst, uint8 * pNameTbl, std::vector & vpfeatInput) { utf16 wNameTblId = wFirst; std::wstring stuBasic = FindBasicExtName(); m_wNameTblId = 0; // Look for an existing name string that matches. GdlFeatureDefn * pfeatInput = NULL; std::vector vpfsetInput; for (auto const pfeatInput: vpfeatInput) { vpfsetInput = pfeatInput->m_vpfset; if (pfeatInput->ID() == this->ID() && pfeatInput->HasExtName(stuBasic)) { m_wNameTblId = pfeatInput->m_wNameTblId; // found it break; } } std::vector vpfsetEmpty; // emtpy if (m_wNameTblId == 0) { m_wNameTblId = wNameTblId; // give it a new ID wNameTblId++; pfeatInput = NULL; vpfsetInput = vpfsetEmpty; } for (auto const pfset: m_vpfset) { stuBasic = pfset->FindBasicExtName(); pfset->SetNameTblId(0); // Look for an existing name string that matches. for (auto const pfsetInput: vpfsetInput) { if (pfsetInput->Value() == pfset->Value() && pfsetInput->HasExtName(stuBasic)) { pfset->SetNameTblId(pfsetInput->m_wNameTblId); // found it break; } } if (pfset->NameTblId() == 0) { pfset->SetNameTblId(wNameTblId++); // give it a new ID } } return wNameTblId; } std::wstring GdlExtName::s_stuNoName(L"NoName"); // static /*---------------------------------------------------------------------------------------------- Set the label string to the string from the old name table. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::SetLabelFromNameTable(int nNameID, int nLangID, uint8 * pNameTbl) { std::wstring stuName = GdlFeatureDefn::GetLabelFromNameTable(nNameID, nLangID, pNameTbl); if (stuName.length() != 0) { AddExtName(nLangID, stuName); m_wNameTblId = nNameID; } } /*--------------------------------------------------------------------------------------------*/ void GdlFeatureSetting::SetLabelFromNameTable(int nNameID, int nLangID, uint8 * pNameTbl) { std::wstring stuName = GdlFeatureDefn::GetLabelFromNameTable(nNameID, nLangID, pNameTbl); if (stuName.length() != 0) { AddExtName(nLangID, stuName); m_wNameTblId = nNameID; } } /*---------------------------------------------------------------------------------------------- Search the old name table for the given string. ----------------------------------------------------------------------------------------------*/ std::wstring GdlFeatureDefn::GetLabelFromNameTable(int nNameID, int nLangID, uint8 * pNameTbl) { std::wstring stuName; stuName.erase(); size_t lOffset = 0; size_t lSize = 0; // The Graphite compiler stores our names in either // the MS (platform id = 3) Unicode (writing system id = 1) table // or the MS Symbol (writing system id = 0) table. Try MS Unicode first. // lOffset & lSize are in bytes. // new interface: if (!TtfUtil::GetNameInfo(pNameTbl, 3, 1, nLangID, nNameID, lOffset, lSize)) { if (!TtfUtil::GetNameInfo(pNameTbl, 3, 0, nLangID, nNameID, lOffset, lSize)) { return stuName; // no name found, return empty string } } size_t cchw = (unsigned(lSize) / sizeof(utf16)); utf16 * pchwName = new utf16[cchw+1]; // lSize - byte count for Uni str const utf16 * pchwSrcName = reinterpret_cast(pNameTbl + lOffset); // if (ppec->cbBytesPerChar == sizeof(utf16)) // { utf16ncpy(pchwName, pchwSrcName, cchw); TtfUtil::SwapWString(pchwName, cchw); // make big endian // } // else // { // // TODO: properly handle Macintosh encoding // Platform_UnicodeToANSI((utf16 *)pbStr, cchwStr, (char *)pbNextString, cchwStr); // } /// std::transform(pchwSrcName, pchwSrcName + cchw, pchwName, std::ptr_fun(lsbf)); pchwName[cchw] = 0; // zero terminate #ifdef _WIN32 stuName.assign((const wchar_t*)pchwName, cchw); #else wchar_t * pchwName32 = new wchar_t[cchw+1]; // lSize - byte count for Uni str for (int i = 0; i <= signed(cchw); i++) { pchwName32[i] = pchwName[i]; } stuName.assign(pchwName32, cchw); delete [] pchwName32; #endif return stuName; } /*---------------------------------------------------------------------------------------------- Push onto the argument vectors information for the feature itself and all its settings. The three arrays must remain parallel. Retrieve all the external names and their corresponding language ids and the name table ids (assigned in SetNameTblIds(). While we're at it, keep a total of the length of the all the string data. ----------------------------------------------------------------------------------------------*/ bool GdlFeatureDefn::NameTblInfo(std::vector & vstuExtNames, std::vector & vwLangIds, std::vector & vwNameTblIds, size_t & cchwStringData, unsigned int nNameTblIdMinNew, int nNameIdNoName) { // Store data for the feature itself. if (NameTblId() >= nNameTblIdMinNew) { if (m_vextname.empty()) { if (nNameIdNoName == -1) // "NoName" is not in the name table already { vstuExtNames.push_back(GdlExtName::s_stuNoName); cchwStringData += GdlExtName::s_stuNoName.length(); vwLangIds.push_back(LG_USENG); vwNameTblIds.push_back(m_wNameTblId); } } else { for (auto & extname: m_vextname) { vstuExtNames.push_back(extname.Name()); cchwStringData += extname.Name().length(); vwLangIds.push_back(extname.LanguageID()); vwNameTblIds.push_back(m_wNameTblId); } } } // Store data for all settings. for (auto const pFeatSet: m_vpfset) { if (pFeatSet->NameTblId() >= nNameTblIdMinNew) { if (pFeatSet->m_vextname.empty()) { if (nNameIdNoName == -1) // "NoName" is not in the name table already { vstuExtNames.push_back(GdlExtName::s_stuNoName); cchwStringData += GdlExtName::s_stuNoName.length(); vwLangIds.push_back(LG_USENG); vwNameTblIds.push_back(pFeatSet->NameTblId()); } } else { for (auto & extname: pFeatSet->m_vextname) { vstuExtNames.push_back(extname.Name()); cchwStringData += extname.Name().length(); vwLangIds.push_back(extname.LanguageID()); vwNameTblIds.push_back(pFeatSet->NameTblId()); } } } } return true; } /*---------------------------------------------------------------------------------------------- Find an English or language-neutral label. ----------------------------------------------------------------------------------------------*/ std::wstring GdlFeatureDefn::FindBasicExtName() { for (auto const extname: m_vextname) { if (extname.m_wLanguageID == 1033 || extname.m_wLanguageID == 0) return extname.m_stuName; } return std::wstring(); } std::wstring GdlFeatureSetting::FindBasicExtName() // find an English or language-neutral label { for (auto const extname: m_vextname) { if (extname.m_wLanguageID == 1033 || extname.m_wLanguageID == 0) return extname.m_stuName; } return std::wstring(); } /*---------------------------------------------------------------------------------------------- Return true if the feature/setting has the given label. ----------------------------------------------------------------------------------------------*/ bool GdlFeatureDefn::HasExtName(std::wstring stuName) { for (auto &extname: m_vextname) { if (extname.m_stuName == stuName) return true; } return false; } bool GdlFeatureSetting::HasExtName(std::wstring stuName) { for (auto const & extname: m_vextname) { if (extname.m_stuName == stuName) return true; } return false; } /*---------------------------------------------------------------------------------------------- Record something about the feature in the debug database. ----------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::RecordDebugInfo() { } /*---------------------------------------------------------------------------------------------- Add a default feature setting to the language definition. ----------------------------------------------------------------------------------------------*/ void GdlLanguageDefn::AddFeatureValue(GdlFeatureDefn * pfeat, GdlFeatureSetting * pfset, int nFset, GrpLineAndFile & lnf) { for (auto ifeat = 0U; ifeat < m_vpfeat.size(); ++ifeat) { if (m_vpfeat[ifeat] == pfeat) { if (m_vnFset[ifeat] == nFset) return; else { g_errorList.AddError(3160, NULL, "Duplicate language feature setting", lnf); return; } } } m_vpfeat.push_back(pfeat); m_vpfset.push_back(pfset); m_vnFset.push_back(nFset); Assert(m_vpfeat.size() == m_vpfset.size()); Assert(m_vpfeat.size() == m_vnFset.size()); } grcompiler-5.2.1/compiler/GdlFeatures.h000066400000000000000000000247771411153030700200660ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlFeatures.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Classes to implement the features mechanism. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef FEATURES_INCLUDED #define FEATURES_INCLUDED #define LG_USENG (1033) /*---------------------------------------------------------------------------------------------- Class: GdlExtName Description: External name, that is, in natural language, suitable for display in a user-interface. Used by GdlFeatureDefn and GdlNameDefn Hungarian: extname ----------------------------------------------------------------------------------------------*/ class GdlExtName : public GdlObject { friend class GdlFeatureDefn; friend class GdlFeatureSetting; public: // Constructors: GdlExtName() : m_wLanguageID(0) { } GdlExtName(std::wstring stu, utf16 wLangID) : m_stuName(stu), m_wLanguageID(wLangID) { } // Getters: std::wstring Name() { return m_stuName; } utf16 LanguageID() { return m_wLanguageID; } static std::wstring s_stuNoName; protected: // Instance variables: std::wstring m_stuName; utf16 m_wLanguageID; }; /*---------------------------------------------------------------------------------------------- Class: GdlFeatureSetting Description: The information for a single feature setting. Hungarian: fset ----------------------------------------------------------------------------------------------*/ class GdlFeatureSetting : public GdlObject { friend class GdlFeatureDefn; friend class GdlLanguageDefn; public: // Constructor: GdlFeatureSetting() { m_nValue = 0; m_fHasValue = false; } // Getters: int Value() { return m_nValue; } std::string Name() { return m_staName; } unsigned short NameTblId() { return m_wNameTblId; } // Setters: void SetName(std::string sta) { m_staName = sta; } void SetValue(int n) { m_nValue = n; m_fHasValue = true; } void SetNameTblId(int nID) { m_wNameTblId = nID; } void AddExtName(utf16 wLangID, std::wstring stu) { m_vextname.push_back(GdlExtName(stu, wLangID)); } void AddExtName(utf16 wLangID, GdlExpression * pexp) { GdlStringExpression * pexpString = dynamic_cast(pexp); Assert(pexpString); std::wstring stu = pexpString->ConvertToUnicode(); m_vextname.push_back(GdlExtName(stu, wLangID)); } void SetNameTblId(utf16 w) { m_wNameTblId = w; } // compiler: void SetLabelFromNameTable(int nNameID, int nLangID, uint8 * pNameTbl); std::wstring FindBasicExtName(); bool HasExtName(std::wstring stuName); // Debuggers: void DebugXmlFeatures(std::ofstream & strmOut, std::string staPathToCur); protected: // Instance variables: std::string m_staName; std::vector m_vextname; int m_nValue; unsigned short m_wNameTblId; bool m_fHasValue; }; /*---------------------------------------------------------------------------------------------- Class: GdlFeatureDefn Description: A feature and its associated information Hungarian: feat ----------------------------------------------------------------------------------------------*/ class GdlFeatureDefn : public GdlDefn { friend class GdlFeatureSetting; public: enum { kfidStdStyles = 0, // whatever kfidStdLang = 1 }; // enum { // standard style values // kstvPlain = 0, // kstvBold = 1, // kstvItalic = 2, // kstvUnderscore = 4, // kstvStrikeThru = 8, // kstvCompressed =16 // }; // enum { kstvLim = kstvPlain }; // for now, we don't support multiple styles // Constructors & destructors: GdlFeatureDefn() { m_nID = 0; m_fStdStyles = false; m_fStdLang = false; m_fIDSet = false; m_fDefaultSet = false; m_fFatalError = false; m_pfsetDefault = NULL; m_wNameTblId = 0xFFFF; m_fHasPublicID = false; } ~GdlFeatureDefn() { for (size_t i = 0; i < m_vpfset.size(); ++i) delete m_vpfset[i]; } // Setters: void SetName(std::string sta) { m_staName = sta; } void SetID(unsigned int n) { m_nID = n; m_fIDSet = true; } void SetDefault(int n) { m_nDefault = n; m_fDefaultSet = true; } void SetNameTblId(int nID) { m_wNameTblId = nID; } void AddExtName(utf16 wLangID, std::wstring stu) { m_vextname.push_back(GdlExtName(stu, wLangID)); } void AddExtName(utf16 wLangID, GdlExpression * pexp) { GdlStringExpression * pexpString = dynamic_cast(pexp); Assert(pexpString); std::wstring stu = pexpString->ConvertToUnicode(); m_vextname.push_back(GdlExtName(stu, wLangID)); } void MarkAsLanguageFeature() { m_fStdLang = true; m_nID = kfidStdLang; AddAltID(kfidStdLang); } utf16 SetNameTblIds(utf16 wFirst, uint8 * pNameTbl, // return next id to use std::vector & vpfeatInput); void AddAltID(unsigned int n) { m_vnIDs.push_back(n); } void SetHasPublicID(bool f) { m_fHasPublicID = f; } // Getters: std::string Name() { return m_staName; } size_t NumberOfSettings() { return m_vpfset.size(); } unsigned int ID() { return m_nID; } bool IsLanguageFeature() { return m_fStdLang; } unsigned short NameTblId() { return m_wNameTblId; } bool NameTblInfo(std::vector & vstuExtNames, std::vector & vwLangIds, std::vector & vwNameTblIds, size_t & cchwStringData, unsigned int nNameTblIdMinNew, int nNameIdNoName); void AltIDs(std::vector & vn) { vn = m_vnIDs; } size_t NumAltIDs() { return m_vnIDs.size(); } GdlFeatureSetting * FindSetting(std::string sta); GdlFeatureSetting * FindOrAddSetting(std::string, GrpLineAndFile & lnf); GdlFeatureSetting * FindSettingWithValue(int n); bool HasPublicID() { return m_fHasPublicID; } public: // Pre-compiler: bool ErrorCheck(); void SortFeatIDs(); void SortFeatSettings(); void SetStdStyleFlag(); void FillInBoolean(GrcSymbolTable * psymtbl); void ErrorCheckContd(); void CalculateDefault(); void AssignInternalID(int n) { m_nInternalID = n; } void RecordDebugInfo(); void KludgeDebugSettings() { std::cout << this->Name() << " : "; if (m_vpfset.size() > 0) { for (size_t ifset = 0; ifset < m_vpfset.size(); ifset++) std::cout << m_vpfset[ifset]->Name() << " " << m_vpfset[ifset]->Value() << " | "; } std::cout << "\n"; } // Compiler int InternalID() { return m_nInternalID; } void OutputSettings(GrcBinaryStream * pbstrm); void PushFeatureSetting(GdlFeatureSetting * pfset) { m_vpfset.push_back(pfset); } void SetLabelFromNameTable(int nNameID, int nLangID, uint8 * pNameTbl); static std::wstring GetLabelFromNameTable(int nNameID, int nLangID, uint8 * pNameTbl); std::wstring FindBasicExtName(); bool HasExtName(std::wstring stuName); // Debuggers void DebugXmlFeatures(std::ofstream & strmOut, std::string staPathToCur); protected: // Instance variables: std::string m_staName; unsigned int m_nID; std::vector m_vextname; std::vector m_vpfset; int m_nDefault; std::vector m_vnIDs; // including alternate IDs; main ID must be first bool m_fIDSet; bool m_fDefaultSet; // if still false at the end, we need to // figure out what the default should be bool m_fStdStyles; // true for the one feature that corresponds // to the set of standard styles bool m_fStdLang; // true if this is the special system "lang" feature whose // possible values are language IDs. bool m_fHasPublicID; // set to true if there is a non-hidden ID // for compiler: bool m_fFatalError; // fatal error in this feature definition int m_nInternalID; GdlFeatureSetting * m_pfsetDefault; unsigned short m_wNameTblId; }; /*---------------------------------------------------------------------------------------------- Class: GdlLanguageDefn Description: A mapping of a language identifier onto a set of feature values. Hungarian: lang ----------------------------------------------------------------------------------------------*/ class GdlLanguageDefn : public GdlDefn { friend class GdlFeatureDefn; friend class GdlFeatureSetting; public: // General: unsigned int Code() { unsigned int nCode; memcpy(&nCode, m_rgchID, sizeof(m_rgchID)); return nCode; } void SetCode(std::string staCode) { Assert(staCode.length() <= 4); staCode = staCode.substr(0, 4); memset(m_rgchID, 0, sizeof(m_rgchID)); memcpy(m_rgchID, staCode.data(), staCode.size() * sizeof(char)); } size_t NumberOfSettings() { return m_vpfset.size(); } // Pre-compiler: void AddFeatureValue(GdlFeatureDefn * pfeat, GdlFeatureSetting * pfset, int nFset, GrpLineAndFile & lnf); // Compiler: void OutputSettings(GrcBinaryStream * pbstrm); protected: // Instance variables: char m_rgchID[4]; std::vector m_vpfeat; std::vector m_vpfset; std::vector m_vnFset; }; /*---------------------------------------------------------------------------------------------- Class: GdlLangClass Description: A collection of language maps and the feature settings for them. Hungarian: lcls ----------------------------------------------------------------------------------------------*/ class GdlLangClass { friend class GrcManager; GdlLangClass(std::string sta) { m_staLabel = sta; } ~GdlLangClass() { for (size_t i = 0; i < m_vpexpVal.size(); i++) delete m_vpexpVal[i]; } void AddLanguage(GdlLanguageDefn * plang) { for (size_t i = 0; i < m_vplang.size(); i++) { if (m_vplang[i] == plang) return; } m_vplang.push_back(plang); } void AddFeatureValue(std::string staFeat, std::string staVal, GdlExpression * pexpVal, GrpLineAndFile lnf) { m_vstaFeat.push_back(staFeat); m_vstaVal.push_back(staVal); m_vpexpVal.push_back(pexpVal); m_vlnf.push_back(lnf); Assert(m_vstaFeat.size() == m_vstaVal.size()); Assert(m_vstaFeat.size() == m_vpexpVal.size()); Assert(m_vstaFeat.size() == m_vlnf.size()); } bool PreCompile(GrcManager * pcman); protected: GrpLineAndFile m_lnf; std::string m_staLabel; std::vector m_vplang; // These four are parallel vectors, each item corresponding to a feature assignment: std::vector m_vstaFeat; // name of feature std::vector m_vstaVal; // text of value std::vector m_vpexpVal; // expression, if not an identifer std::vector m_vlnf; }; #endif // FEATURES_INCLUDED grcompiler-5.2.1/compiler/GdlGlyphClassDefn.cpp000066400000000000000000000305271411153030700214770ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlGlyphClass.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implements definitions of classes of glyphs.. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ // None /*********************************************************************************************** Methods: Destruction ***********************************************************************************************/ GdlGlyphClassDefn::~GdlGlyphClassDefn() { for (size_t i = 0; i < m_vpglfaAttrs.size(); ++i) delete m_vpglfaAttrs[i]; } void GdlGlyphClassDefn::DeleteGlyphDefns() { for (size_t i = 0; i < m_vpglfdMembers.size(); ++i) { if (dynamic_cast(m_vpglfdMembers[i])) delete m_vpglfdMembers[i]; } } void GdlGlyphIntersectionClassDefn::DeleteGlyphDefns() { GdlGlyphClassDefn::DeleteGlyphDefns(); for (size_t i = 0; i < m_vpglfdSets.size(); ++i) { if (dynamic_cast(m_vpglfdSets[i])) delete m_vpglfdSets[i]; } } void GdlGlyphDifferenceClassDefn::DeleteGlyphDefns() { GdlGlyphClassDefn::DeleteGlyphDefns(); if (dynamic_cast(m_pglfdMinuend)) delete m_pglfdMinuend; if (dynamic_cast(m_pglfdSubtrahend)) delete m_pglfdSubtrahend; } /*********************************************************************************************** Methods: Post-parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Add a simple glyph to the class. ----------------------------------------------------------------------------------------------*/ GdlGlyphClassMember * GdlGlyphClassDefn::AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, int nFirst) { GdlGlyphDefn * pglf = new GdlGlyphDefn(glft, nFirst); pglf->SetLineAndFile(lnf); AddMember(pglf, lnf); return pglf; } GdlGlyphClassMember * GdlGlyphClassDefn::AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, int nFirst, int nLast) { GdlGlyphDefn * pglf = new GdlGlyphDefn(glft, nFirst, nLast); pglf->SetLineAndFile(lnf); AddMember(pglf, lnf); return pglf; } GdlGlyphClassMember * GdlGlyphClassDefn::AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, int nFirst, int nLast, utf16 wCodePage) { GdlGlyphDefn * pglf = new GdlGlyphDefn(glft, nFirst, nLast, wCodePage); pglf->SetLineAndFile(lnf); AddMember(pglf, lnf); return pglf; } GdlGlyphClassMember * GdlGlyphClassDefn::AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, std::string staPostscript) { GdlGlyphDefn * pglf = new GdlGlyphDefn(glft, staPostscript); pglf->SetLineAndFile(lnf); AddMember(pglf, lnf); return pglf; } GdlGlyphClassMember * GdlGlyphClassDefn::AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, std::string staCodepoints, utf16 wCodePage) { GdlGlyphDefn * pglf = new GdlGlyphDefn(glft, staCodepoints, wCodePage); pglf->SetLineAndFile(lnf); AddMember(pglf, lnf); return pglf; } GdlGlyphClassMember * GdlGlyphClassDefn::AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, GdlGlyphDefn * pglfOutput, utf16 wPseudoInput) { GdlGlyphDefn * pglf = new GdlGlyphDefn(glft, pglfOutput, (int)wPseudoInput); pglf->SetLineAndFile(lnf); AddMember(pglf, lnf); return pglf; } GdlGlyphClassMember * GdlGlyphClassDefn::AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, GdlGlyphDefn * pglfOutput) { GdlGlyphDefn * pglf = new GdlGlyphDefn(glft, pglfOutput); pglf->SetLineAndFile(lnf); AddMember(pglf, lnf); return pglf; } GdlGlyphClassMember * GdlGlyphClassDefn::AddClassToClass(GrpLineAndFile const& lnf, GdlGlyphClassDefn * pglfcMember) { AddMember(pglfcMember, lnf); return pglfcMember; } /*---------------------------------------------------------------------------------------------- Add an element to the class. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AddElement(GdlGlyphClassMember * pglfdElement, GrpLineAndFile const& lnf, GlyphClassType glfct, GrcManager * pcman) { GdlGlyphIntersectionClassDefn * pglfci = dynamic_cast(this); GdlGlyphDifferenceClassDefn * pglfcd = dynamic_cast(this); switch (glfct) { case kglfctUnion: AddMember(pglfdElement, lnf); break; case kglfctIntersect: Assert(pglfci); pglfci->AddSet(pglfdElement, lnf); break; case kglfctDifference: Assert(pglfcd); Assert(pglfcd->HasMinuend()); // because we only support -= right now if (pglfcd->HasMinuend()) { if (!pglfcd->HasSubtrahend()) { // Create an anonymous class to hold the subtrahends. Symbol psymClassAnon = pcman->SymbolTable()->AddAnonymousClassSymbol(lnf); std::string staClassNameAnon = psymClassAnon->FullName(); GdlGlyphClassDefn * pglfcSubtra = psymClassAnon->GlyphClassDefnData(); Assert(pglfcSubtra); pglfcSubtra->SetName(staClassNameAnon); pglfcd->SetSubtrahend(pglfcSubtra, lnf); } pglfcd->AddToSubtrahend(pglfdElement, lnf); } else { GdlGlyphClassDefn * pglfd = dynamic_cast(pglfdElement); Assert(pglfd); // because we only support class -= ... right now pglfcd->SetMinuend(pglfd, lnf); } break; default: Assert(false); break; } } /*---------------------------------------------------------------------------------------------- Add a member to a "union" class (the standard kind). ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AddMember(GdlGlyphClassMember * pglfd, GrpLineAndFile const& lnf) { Assert(m_vpglfdMembers.size() == m_vlnfMembers.size()); m_vpglfdMembers.push_back(pglfd); m_vlnfMembers.push_back(lnf); } /*---------------------------------------------------------------------------------------------- Add a set to an intersection class. ----------------------------------------------------------------------------------------------*/ void GdlGlyphIntersectionClassDefn::AddSet(GdlGlyphClassMember * pglfd, GrpLineAndFile const& lnf) { Assert(m_vpglfdSets.size() == m_vlnfSets.size()); m_vpglfdSets.push_back(pglfd); m_vlnfSets.push_back(lnf); } /*---------------------------------------------------------------------------------------------- Add an element to a difference class. ----------------------------------------------------------------------------------------------*/ void GdlGlyphDifferenceClassDefn::SetMinuend(GdlGlyphClassDefn * pglfd, GrpLineAndFile const& lnf) { m_pglfdMinuend = pglfd; m_lnfMinuend = lnf; } void GdlGlyphDifferenceClassDefn::SetSubtrahend(GdlGlyphClassDefn * pglfd, GrpLineAndFile const& lnf) { m_pglfdSubtrahend = pglfd; m_lnfSubtrahend = lnf; } void GdlGlyphDifferenceClassDefn::AddToSubtrahend(GdlGlyphClassMember * pglfd, GrpLineAndFile const& lnf) { Assert(m_pglfdSubtrahend); m_pglfdSubtrahend->AddMember(pglfd, lnf); } /*---------------------------------------------------------------------------------------------- Add a user-defined glyph attribute to the list. Note that we shouldn't have to check for duplicates, due to the way the master glyph attribute list is managed (see GrcMasterTable::AddItem(...)). ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AddGlyphAttr(Symbol psym, GdlAssignment * pasgn) { GdlGlyphAttrSetting * pglfa = new GdlGlyphAttrSetting(psym, pasgn); pglfa->SetLineAndFile(pasgn->LineAndFile()); m_vpglfaAttrs.push_back(pglfa); } /*---------------------------------------------------------------------------------------------- Add an attribute of the form component... Note that we shouldn't have to check for duplicates, due to the way the master glyph attribute list is managed (see GrcMasterTable::AddItem(...)). ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AddComponent(Symbol psym, GdlAssignment * pasgn) { AddGlyphAttr(psym, pasgn); // Add this component to the list. // std::string staCompName = psym->FieldAt(2); // m_vstaComponentNames.Push(staCompName); // GdlGlyphAttrSetting * pglfa = new RldGlyphAttrSetting(psym, pasgn); // m_vglfaComponents.Push(pglfa); } /*---------------------------------------------------------------------------------------------- Return true if the given glyph is a member of the class. ----------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::IncludesGlyph(utf16 w) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { if (m_vpglfdMembers[iglfd]->IncludesGlyph(w)) return true; } return false; } /*---------------------------------------------------------------------------------------------- Return true if the class include a bad glyph definition ----------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::HasBadGlyph() { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { if (m_vpglfdMembers[iglfd]->HasBadGlyph()) return true; } return false; } /*---------------------------------------------------------------------------------------------- Add this glyph's list of glyphs to the flat list. Assumes method is called after list of glyphs is complete. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::FlattenGlyphList(std::vector & vgidFlattened) { if (!m_fHasFlatList) FlattenMyGlyphList(); for (size_t igid = 0; igid < m_vgidFlattened.size(); igid++) { vgidFlattened.push_back(m_vgidFlattened[igid]); } } /*---------------------------------------------------------------------------------------------- Return true if there are duplicate glyphs in the class. ----------------------------------------------------------------------------------------------*/ bool GdlGlyphClassDefn::HasDuplicateGlyphs(utf16 * pgid) { std::vector vgidFlattened; this->FlattenGlyphList(vgidFlattened); for (size_t i = 0; i < vgidFlattened.size() - 1; i++) { for (size_t j = i+1; j < vgidFlattened.size(); j++) { if (vgidFlattened[i] == vgidFlattened[j]) { *pgid = vgidFlattened[i]; return true; } } } //std::set setgidNoDup; //for (size_t i = 0; i < vgidFlattened.size(); i++) { // setgidNoDup.insert(vgidFlattened[i]); //} //return (setgidNoDup.size() < vgidFlattened.size()); return false; } #if 0 /*---------------------------------------------------------------------------------------------- Set the directionality attribute. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::SetDirection(GdlExpression * pglfaDir, int nStmtNo, bool fAttrOverride) { if (m_pglfaDirection == NULL || (fAttrOverride && nStmtNo > m_pglfaDirection->LineNumber())) { m_pexpDirection = pglfaDir; } } /*---------------------------------------------------------------------------------------------- Set the breakweight attribute. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::SetBreakweight(GdlExpression * pexpBw, int nStmtNo, bool fAttrOverride) { if (m_pexpBreakweight == NULL || (fAttrOverride && nStmtNo > m_nBwStmtNo)) m_pexpBreakweight = pexpBw; } #endif // 0 grcompiler-5.2.1/compiler/GdlGlyphClassDefn.h000066400000000000000000000406411411153030700211420ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlGlyphClass.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Definitions of classes of glyphs. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef CLASSES_INCLUDED #define CLASSES_INCLUDED class GdlGlyphDefn; //class PseudoLess; //typedef std::set PseudoSet; // PseudoLess isn't implemented adquately yet // A set makes more sense, but its iterator processes items in a random order, which makes it impossible // to generate identical fonts for the regression tests. So we use a vector instead. //typedef std::set PseudoSet; typedef std::vector PseudoSet; //class ReplClassLess; //typedef std::set ReplacementClassSet; /*---------------------------------------------------------------------------------------------- Class: GdlGlyphAttrSetting Description: The setting of a glyph attribute--attribute name and expression indicating the value. Hungarian: glfa ----------------------------------------------------------------------------------------------*/ class GdlGlyphAttrSetting : public GdlObject { friend class GdlGlyphClassDefn; public: // Constructors & destructors: GdlGlyphAttrSetting(Symbol psym, GdlAssignment * pasgn) : m_psym(psym), m_pasgn(pasgn) { SetLineAndFile(pasgn->LineAndFile()); } ~GdlGlyphAttrSetting() { Assert(m_pasgn); delete m_pasgn; } Symbol GlyphSymbol() { return m_psym; } GdlAssignment * Assignment() { return m_pasgn; } GdlExpression * Expression() { return m_pasgn->Expression(); } protected: // Instance variables: Symbol m_psym; GdlAssignment * m_pasgn; }; /*---------------------------------------------------------------------------------------------- Class: GdlGlyphClassMember Description: Abstract class subsuming GdlGlyphClassDefn and GdlGlyphDefn, ie, an element of a class. Hungarian: glfd ----------------------------------------------------------------------------------------------*/ class GdlGlyphClassMember : public GdlDefn { public: GdlGlyphClassMember() : m_fIsSpaceGlyph(-1) { }; virtual ~GdlGlyphClassMember() { }; // Pre-compiler: virtual bool CheckRecursiveGlyphClasses(std::vector & vpglfcStack) = 0; virtual void ExplicitPseudos(PseudoSet & setpglf, bool fProcessClasses) = 0; virtual int ActualForPseudo(utf16 wPseudo) = 0; virtual int GlyphIDCount() = 0; virtual unsigned int FirstGlyphInClass(bool * pfMoreThanOne) = 0; virtual void AssignGlyphIDsToClassMember(GrcFont *, gid16 wGlyphIDLim, std::map & hmActualForPseudo, bool fLookUpPseudo = true) = 0; virtual void AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GdlRenderer * prndr, GrcLigComponentList * plclist, std::vector & vpglfaAttrs, int cgid, int & igid) = 0; virtual void CheckExistenceOfGlyphAttr(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr) = 0; virtual void CheckCompleteAttachmentPoint(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr, bool * pfXY, bool * pfGpoint) = 0; virtual void CheckCompBox(GdlObject * pritset, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymCompRef) = 0; virtual void StorePseudoToActualAsGlyphAttr(GrcGlyphAttrMatrix * pgax, int nAttrID, std::vector & vpexpExtra) = 0; virtual bool IncludesGlyph(utf16) = 0; virtual bool HasOverlapWith(GdlGlyphClassMember * glfd, GrcFont * pfont) = 0; virtual bool HasBadGlyph() = 0; virtual bool WarnAboutBadGlyphs(bool fTop) = 0; virtual bool DeleteBadGlyphs() = 0; virtual void FlattenGlyphList(std::vector & vgidFlattened) = 0; virtual bool IsSpaceGlyph(std::vector & vwSpaceGlyphs) = 0; public: // Compiler: virtual void RecordInclusionInClass(GdlPass * ppass, GdlGlyphClassDefn * pglfc) = 0; virtual void GetMachineClasses(FsmMachineClass ** ppfsmcAssignments, FsmMachineClassSet & setpfsmc) = 0; // Output: virtual void AddGlyphsToUnsortedList(std::vector & vwGlyphs) = 0; virtual void AddGlyphsToSortedList(std::vector & vwGlyphs, std::vector & vnIndices) = 0; // debuggers virtual void DebugCmapForMember(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni) = 0; virtual void DebugXmlClassMembers(std::ofstream & strmOut, std::string staPathToCur, GdlGlyphClassDefn * pglfdParent, GrpLineAndFile lnf, int & cwGlyphIDs) = 0; protected: int m_fIsSpaceGlyph; // Probably mistakenly I thought the CalculateSpaceContextuals routine // was slow, hence the value is cached. It's probably not needed. }; /*---------------------------------------------------------------------------------------------- Class: GdlGlyphClassDefn Description: A class of glyphs and glyph attribute settings. Hungarian: glfc ----------------------------------------------------------------------------------------------*/ class GdlGlyphClassDefn : public GdlGlyphClassMember { friend class GdlGlyphDefn; friend class ReplClassLess; public: // Constructors & destructors: GdlGlyphClassDefn() : GdlGlyphClassMember() { m_fReplcmtIn = false; m_fReplcmtOut = false; m_nReplcmtInID = -1; m_nReplcmtOutID = -1; m_fHasFlatList = false; } ~GdlGlyphClassDefn(); void DeleteGlyphDefns(); // Getters: std::string Name() { return m_staName; } // Setters: void SetName(std::string sta) { m_staName = sta; } void AddElement(GdlGlyphClassMember * pglfdElement, GrpLineAndFile const& lnf, GlyphClassType glfct, GrcManager * pcman = NULL); void AddMember(GdlGlyphClassMember * pglfd, GrpLineAndFile const& lnf); void AddGlyphAttr(Symbol, GdlAssignment * pasgn); void AddComponent(Symbol, GdlAssignment * pasgn); static std::string Undefined() { return "*GCUndefined*"; } // Parser: GdlGlyphClassMember * AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, int nFirst); GdlGlyphClassMember * AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, int nFirst, int nLast); GdlGlyphClassMember * AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, int nFirst, int nLast, utf16 wCodePage); GdlGlyphClassMember * AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, std::string staPostscript); GdlGlyphClassMember * AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, std::string staCodepoints, utf16 wCodePage); GdlGlyphClassMember * AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, GdlGlyphDefn * pglfOutput, utf16 nPseudoInput); GdlGlyphClassMember * AddGlyphToClass(GrpLineAndFile const& lnf, GlyphType glft, GdlGlyphDefn * pglfOutput); GdlGlyphClassMember * AddClassToClass(GrpLineAndFile const& lnf, GdlGlyphClassDefn * pglfcMember); // Pre-compiler: virtual void ComputeMembers() { // Overridden by intersection and difference classes to do something interesting. } virtual bool CheckRecursiveGlyphClasses(std::vector & vpglfcStack); virtual void ExplicitPseudos(PseudoSet & setpglf, bool fProcessClasses); virtual int ActualForPseudo(utf16 wPseudo); virtual void AssignGlyphIDs(GrcFont *, gid16 wGlyphIDLim, std::map & hmActualForPseudos); virtual void AssignGlyphIDsToClassMember(GrcFont *, gid16 wGlyphIDLim, std::map & hmActualForPseudo, bool fLookUpPseudo = true); virtual int GlyphIDCount(); void MaxJustificationLevel(int * pnJLevel); virtual unsigned int FirstGlyphInClass(bool * pfMoreThanOne); void AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GdlRenderer * prndr, GrcLigComponentList * plclist); virtual void AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GdlRenderer * prndr, GrcLigComponentList * plclist, std::vector & vpglfaAttrs, int cgid, int & igid); virtual void CheckExistenceOfGlyphAttr(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr); virtual void CheckCompleteAttachmentPoint(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr, bool * pfXY, bool * pfGpoint); virtual void CheckCompBox(GdlObject * pritset, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymCompRef); virtual void StorePseudoToActualAsGlyphAttr(GrcGlyphAttrMatrix * pgax, int nAttrID, std::vector & vpexpExtra); void MarkFsmClass(int nPassID, int nClassID); bool IsFsmClass(int ipass) { if (ipass >= signed(m_vfFsm.size())) return false; return m_vfFsm[ipass]; } int FsmID(int ipass) { return m_vnFsmID[ipass]; } virtual bool IncludesGlyph(utf16); void MarkReplcmtInputClass() { m_fReplcmtIn = true; } void MarkReplcmtOutputClass() { m_fReplcmtOut = true; } void SetReplcmtInputID(int nID) { m_nReplcmtInID = nID; } void SetReplcmtOutputID(int nID) { m_nReplcmtOutID = nID; } bool ReplcmtInputClass() { return m_fReplcmtIn; } bool ReplcmtOutputClass() { return m_fReplcmtOut; } int ReplcmtInputID() { return m_nReplcmtInID; } int ReplcmtOutputID() { return m_nReplcmtOutID; } bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); bool HasDuplicateGlyphs(utf16 * pgid); virtual bool HasOverlapWith(GdlGlyphClassMember * glfd, GrcFont * pfont); virtual bool HasBadGlyph(); virtual bool WarnAboutBadGlyphs(bool fTop); virtual bool DeleteBadGlyphs(); virtual bool IsSpaceGlyph(std::vector & vwSpaceGlyphs); public: // Compiler: void MarkKeyGlyphsForPass(GrcGlyphAttrMatrix * pgax, unsigned int nAttrIdSkipP, int nPassID); void RecordInclusionInClass(GdlPass * ppass); virtual void RecordInclusionInClass(GdlPass * ppass, GdlGlyphClassDefn * pglfc); virtual void GetMachineClasses(FsmMachineClass ** ppfsmcAssignments, FsmMachineClassSet & setpfsmc); // Output void GenerateOutputGlyphList(std::vector & vwGlyphs); void GenerateInputGlyphList(std::vector & vwGlyphs, std::vector & vnIndices); void AddGlyphsToUnsortedList(std::vector & vwGlyphs); void AddGlyphsToSortedList(std::vector & vwGlyphs, std::vector & vnIndices); // debuggers void DebugCmap(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni); virtual void DebugCmapForMember(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni); void DebugXmlClasses(std::ofstream & strmOut, int & cwGlyphIDs, std::string staPathToCur); virtual void DebugXmlClassMembers(std::ofstream & strmOut, std::string staPathToCur, GdlGlyphClassDefn * pglfdParent, GrpLineAndFile lnf, int & cwGlyphIDs); void RecordSingleMemberClasses(std::vector & vstaSingleMemberClasses, std::vector & vstaFiles, std::vector & vnLines, std::string staPathToCur); void FlattenMyGlyphList() { if (!m_fHasFlatList) { for (size_t i = 0; i < m_vpglfdMembers.size(); i++) m_vpglfdMembers[i]->FlattenGlyphList(m_vgidFlattened); m_fHasFlatList = true; } } virtual void FlattenGlyphList(std::vector & vgidFlattened); GrpLineAndFile & LineAndFileForMember(int iglfd) { return m_vlnfMembers[iglfd]; } protected: // Instance variables: std::string m_staName; std::vector m_vpglfdMembers; std::vector m_vlnfMembers; // where each member was added, for debugger file std::vector m_vpglfaAttrs; // Flat list of included glyph ids; needed to generate a key for a replacement-class set. std::vector m_vgidFlattened; bool m_fHasFlatList; // std::vector m_vpglfaComponents; // std::vector m_vstaComponentNames; // redundant with what is in components // list, but more accessible // GdlExpression * m_pexpDirection; // int m_nDirStmtNo; // GdlExpression * m_pexpBreakweight; // int m_nBwStmtNo; // for compiler use: std::vector m_vfFsm; // needs to be matched by the FSM, one flag for each pass std::vector m_vnFsmID; // FSM class ID, one for each pass bool m_fReplcmtIn; // serves as an input class for replacement bool m_fReplcmtOut; // serves as an output class for replacement int m_nReplcmtInID; // internal ID when serving as replacement input class int m_nReplcmtOutID; // internal ID when serving as replacement output class // Comparing two class definitions for insertion in a set; this assumes they are used as // replacement classes and therefore the order of the items is signficant. bool ReplClassLessThan(const GdlGlyphClassDefn * pglfc) const { //if (!this->m_fHasFlatList) // this->FlattenMyGlyphList(); //if (!pglfc->m_fHasFlatList) // pglfc->FlattenMyGlyphList(); Assert(this->m_fHasFlatList); // obsolete Assert(pglfc->m_fHasFlatList); if (this == pglfc) return false; //for (int igid = 0; igid < signed(m_vgidFlattened.size()); igid++) //{ // if (signed(pglfc->m_vgidFlattened.size()) < igid - 1) // return false; // if (this->m_vgidFlattened[igid] < pglfc->m_vgidFlattened[igid]) // return true; // if (this->m_vgidFlattened[igid] > pglfc->m_vgidFlattened[igid]) // return false; //} //// At this point either the two classes are exactly the same, or pglfc is longer. //if (pglfc->m_vgidFlattened.size() > this->m_vgidFlattened.size()) // return true; // The contents of the two classes are the same; compare the names. return (strcmp(this->m_staName.c_str(), pglfc->m_staName.c_str()) < 0); } }; // end of class GdlGlyphClassDefn /*---------------------------------------------------------------------------------------------- Class: GdlGlyphIntersectionClassDefn Description: A class of glyphs and glyph attribute settings that is calculated via an intersection of two other classes. Hungarian: glfci ----------------------------------------------------------------------------------------------*/ class GdlGlyphIntersectionClassDefn : public GdlGlyphClassDefn { public: GdlGlyphIntersectionClassDefn() : GdlGlyphClassDefn() { }; virtual ~GdlGlyphIntersectionClassDefn() { }; void DeleteGlyphDefns(); void AddSet(GdlGlyphClassMember * pglfd, GrpLineAndFile const& lnf); // Pre-compiler: virtual void AssignGlyphIDs(GrcFont * pfont, gid16 wGlyphIDLim, std::map & hmActualForPseudo); virtual void ComputeMembers(); protected: // These sets are intersected to create the list of members: std::vector m_vpglfdSets; std::vector m_vlnfSets; // where each set was added, for debugger file }; /*---------------------------------------------------------------------------------------------- Class: GdlGlyphDifferenceClassDefn Description: A class of glyphs and glyph attribute settings that is calculated using the difference of two other classes. Hungarian: glfcd ----------------------------------------------------------------------------------------------*/ class GdlGlyphDifferenceClassDefn : public GdlGlyphClassDefn { public: GdlGlyphDifferenceClassDefn() : GdlGlyphClassDefn(), m_pglfdMinuend(NULL), m_pglfdSubtrahend(NULL) { }; virtual ~GdlGlyphDifferenceClassDefn() { }; void DeleteGlyphDefns(); void SetMinuend(GdlGlyphClassDefn * pglfd, GrpLineAndFile const& lnf); void SetSubtrahend(GdlGlyphClassDefn * pglfd, GrpLineAndFile const& lnf); void AddToSubtrahend(GdlGlyphClassMember * pglfd, GrpLineAndFile const& lnf); bool HasMinuend() { return (m_pglfdMinuend != NULL); } bool HasSubtrahend() { return (m_pglfdSubtrahend != NULL); } // Pre-compiler: virtual void AssignGlyphIDs(GrcFont * pfont, gid16 wGlyphIDLim, std::map & hmActualForPseudo); virtual void ComputeMembers(); protected: // The subtrahend is subtracted from the minuend to create the list of members: GdlGlyphClassDefn * m_pglfdMinuend; GrpLineAndFile m_lnfMinuend; // where minuend was added, for debugger file GdlGlyphClassDefn * m_pglfdSubtrahend; GrpLineAndFile m_lnfSubtrahend; // where subtrahend was added, for debugger file }; // Functor class for set manipulation. class ReplClassLess { friend class GdlGlyphClassDefn; public: bool operator()(const GdlGlyphClassDefn * pglfc1, const GdlGlyphClassDefn * pglfc2) const { return (pglfc1->ReplClassLessThan(pglfc2)); } }; #endif // CLASSES_INCLUDED grcompiler-5.2.1/compiler/GdlGlyphDefn.h000066400000000000000000000236401411153030700201540ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlGlyph.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Description of simple glyph or range of glyphs. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GLYPH_INCLUDED #define GLYPH_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GdlGlyphDefn Description: A glyph or set of glyphs specified by a single codepoint, Unicode value, Postscript name, or a contiguous range of these. Hungarian: glf ----------------------------------------------------------------------------------------------*/ class PsuedoLess; class GdlGlyphDefn : public GdlGlyphClassMember { friend class PseudoLess; public: // Constructors: // unicode(0x1234), glyphid(0x3333) GdlGlyphDefn(GlyphType glft, int nFirst) : GdlGlyphClassMember(), m_glft(glft), m_nFirst(nFirst), m_nLast(nFirst), m_wCodePage(0), m_nUnicodeInput(0), m_pglfOutput(NULL), m_fGAResolved(false), m_fNoRangeCheck(false) { Assert(m_glft != kglftPseudo); Assert(m_glft != kglftCodepoint); // must include a codepage } // unicode(0x1234..1237), glyphid(0x3333..03335), codepage(0x1234, 1252); GdlGlyphDefn(GlyphType glft, int nFirst, int nLast) : GdlGlyphClassMember(), m_glft(glft), m_nFirst(nFirst), m_nLast(nLast), m_wCodePage(0), m_nUnicodeInput(0), m_pglfOutput(NULL), m_fGAResolved(false), m_fNoRangeCheck(false) { Assert(m_glft != kglftPseudo); if (m_glft == kglftCodepoint) { m_wCodePage = (utf16)m_nLast; m_nLast = m_nFirst; } } // codepoint(1..2, 0x2222) GdlGlyphDefn(GlyphType glft, int nFirst, int nLast, utf16 wCodePage) : GdlGlyphClassMember(), m_glft(glft), m_nFirst(nFirst), m_nLast(nLast), m_wCodePage(wCodePage), m_nUnicodeInput(0), m_pglfOutput(NULL), m_fGAResolved(false) { Assert(m_glft == kglftCodepoint); } // postscript("Ccedilla") GdlGlyphDefn(GlyphType glft, std::string sta) : GdlGlyphClassMember(), m_glft(glft), m_nFirst(0), m_nLast(0), m_wCodePage(0), m_nUnicodeInput(0), m_pglfOutput(NULL), m_sta(sta), m_fGAResolved(false) { Assert(m_glft == kglftPostscript); } // codepoint("abc", 0x04e4) GdlGlyphDefn(GlyphType glft, std::string sta, utf16 wCodePage) : GdlGlyphClassMember(), m_glft(glft), m_nFirst(0), m_nLast(0), m_wCodePage(wCodePage), m_nUnicodeInput(0), m_pglfOutput(NULL), m_sta(sta), m_fGAResolved(false) { Assert(m_glft == kglftCodepoint); } // pseudo(unicode(0x3344)) GdlGlyphDefn(GlyphType glft, GdlGlyphDefn * pglf) : GdlGlyphClassMember(), m_glft(glft), m_nFirst(0), m_nLast(0), m_wCodePage(0), m_nUnicodeInput(0), m_pglfOutput(pglf), m_fGAResolved(false) { Assert(m_glft == kglftPseudo); Assert(m_pglfOutput->m_glft != kglftPseudo); } // pseudo(unicode(0x3344), 0xf123) GdlGlyphDefn(GlyphType glft, GdlGlyphDefn * pglf, int nInput) : GdlGlyphClassMember(), m_glft(glft), m_nFirst(0), m_nLast(0), m_wCodePage(0), m_nUnicodeInput(nInput), m_pglfOutput(pglf), m_fGAResolved(false) { Assert(m_glft == kglftPseudo); Assert(m_pglfOutput->m_glft != kglftPseudo); } ~GdlGlyphDefn() { if (m_pglfOutput) delete m_pglfOutput; } // Error checking: // int ErrorCheck() // { // if (m_sta.Length() == 0 && m_glft == kglftPostscript) // return 1; // ERROR: bad POSTSCRIPT fcn format--omitted PS name // if (m_sta.Length() != 0 && m_glft != kglftPostscript) // return 1; // ERROR: bad fcn format--included string // } // Getters: GlyphType GetGlyphType() { return m_glft; } unsigned int First() { return m_nFirst; } unsigned int Last() { return m_nLast; } utf16 CodePage() { Assert(m_glft == kglftCodepoint); return m_wCodePage; } unsigned int UnicodeInput() { Assert(m_glft == kglftPseudo); return m_nUnicodeInput; } GdlGlyphDefn * OutputGlyph() { Assert(m_glft == kglftPseudo); return m_pglfOutput; } std::string PostscriptName() { Assert(m_glft == kglftPostscript); return m_sta; } std::string CodepointString() { Assert(m_glft == kglftCodepoint); return m_sta; } utf16 AssignedPseudo() { Assert(m_glft == kglftPseudo); return m_wPseudo; } // Setters: void SetAssignedPseudo(utf16 w) { m_wPseudo = w; } void SetNoRangeCheck() { m_fNoRangeCheck = true; } void AddGlyphID(utf16 w) { m_vwGlyphIDs.push_back(w); } public: // Pre-compiler: virtual bool CheckRecursiveGlyphClasses(std::vector & vpglfcStack); virtual void ExplicitPseudos(PseudoSet & setpglf, bool fProcessClasses); virtual int ActualForPseudo(utf16 wPseudo); // Answer true if there is exactly one glyph represented by the object. // bool SingleGlyph() // { // if (m_glft == kglftPostscript) // return true; // if (m_glft == kglftUnicode || m_glft == kglftGlyphID) // return m_wFirst > 0 && m_wFirst == m_wLast; // Assert(m_glft == kglftCodepoint); // if (m_wFirst == 0 && m_wLast == 0) // return m_sta.Length() == 1; // else // return m_wFirst == m_wLast; // } virtual int GlyphIDCount(); virtual unsigned int FirstGlyphInClass(bool * pfMoreThanOne); virtual void AssignGlyphIDsToClassMember(GrcFont *, gid16 wGlyphIDLim, std::map & hmActualForPseudo, bool fLookUpPseudo = true); virtual void AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GdlRenderer * prndr, GrcLigComponentList * plclist, std::vector & vpglfaAttrs, int cgid, int & igid); virtual void CheckExistenceOfGlyphAttr(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr); virtual void CheckCompleteAttachmentPoint(GdlObject * pgdlAvsOrExp, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymGlyphAttr, bool * pfXY, bool * pfGpoint); virtual void CheckCompBox(GdlObject * pritset, GrcSymbolTable * psymtbl, GrcGlyphAttrMatrix * pgax, Symbol psymCompRef); virtual void StorePseudoToActualAsGlyphAttr(GrcGlyphAttrMatrix * pgax, int nAttrID, std::vector & vpexpExtra); static std::string GlyphIDString(gid16 wGlyphID) { std::ostringstream strmStr; strmStr << wGlyphID << " [0x" << std::hex << std::setfill('0') << std::setw(4) << wGlyphID << ']'; return strmStr.str(); } static std::string UsvString(utf16 wUsv) { std::ostringstream strmStr; strmStr << std::hex << std::setfill('0') << std::setw(4) << wUsv; return strmStr.str(); } static std::string CodepointIDString(int n) { std::ostringstream strmStr; strmStr << std::hex << std::setfill('0') << std::setw(4) << n; return strmStr.str(); } virtual bool IncludesGlyph(utf16 w) { for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { if (m_vwGlyphIDs[iw] == w) return true; } return false; } virtual bool HasOverlapWith(GdlGlyphClassMember * glfd, GrcFont * pfont); virtual bool HasBadGlyph() { for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { if (m_vwGlyphIDs[iw] == kBadGlyph) return true; } return false; } virtual bool WarnAboutBadGlyphs(bool fTop); virtual bool DeleteBadGlyphs(); virtual void FlattenGlyphList(std::vector & vgidFlattened) { for (size_t igid = 0; igid < m_vwGlyphIDs.size(); igid++) { vgidFlattened.push_back(m_vwGlyphIDs[igid]); } } virtual bool IsSpaceGlyph(std::vector & vwSpaceGlyphs); public: // Compiler: virtual void RecordInclusionInClass(GdlPass * ppass, GdlGlyphClassDefn * pglfc); virtual void GetMachineClasses(FsmMachineClass ** ppfsmcAssignments, FsmMachineClassSet & setpfsmc); // Output: void AddGlyphsToUnsortedList(std::vector & vwGlyphs); void AddGlyphsToSortedList(std::vector & vwGlyphs, std::vector & vnIndices); // debugger virtual void DebugCmapForMember(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni); virtual void DebugXmlClassMembers(std::ofstream & strmOut, std::string staPathToCur, GdlGlyphClassDefn * pglfdParent, GrpLineAndFile lnf, int & cwGlyphIDs); protected: // Instance variables: GlyphType m_glft; // unicode, glyphID, codepoint, postscript, pseudo unsigned int m_nFirst; unsigned int m_nLast; utf16 m_wCodePage; unsigned int m_nUnicodeInput; // input for pseudo-glyph GdlGlyphDefn * m_pglfOutput; // pseudo-glyph output std::string m_sta; // postscript name or codepoint string // for compiler use: std::vector m_vwGlyphIDs; // equivalent glyph IDs utf16 m_wPseudo; // glyph id assigned to pseudo-glyph std::vector m_vgbdy; bool m_fGAResolved; // temporary use: glyph attributes resolved bool m_fNoRangeCheck; // true for pseudo definitions generated by the compiler // This isn't an adequate comparison, makes too many assumptions. //bool PseudoLessThan(const GdlGlyphDefn * pglf) const //{ // if (this->m_glft == kglftPseudo && pglf->m_glft == kglftPseudo) // { // if (this->m_nUnicodeInput != pglf->m_nUnicodeInput) // { // return (this->m_nUnicodeInput < pglf->m_nUnicodeInput); // } // if (this->m_pglfOutput && this->m_pglfOutput) // { // return (strcmp(this->m_pglfOutput->m_sta.data(), pglf->m_pglfOutput->m_sta.data()) < 0); // } // } // // Comparing memory addresses is not ideal for the regression test, but it will // // work: // return (this < pglf); //} }; // Functor class for set manipulation //class PseudoLess //{ // friend class GdlGlyphDefn; //public: // operator()(const GdlGlyphDefn * pglf1, const GdlGlyphDefn * pglf2) const // { // return (pglf1->PseudoLessThan(pglf2)); // } //}; // defined in GdlGlyphClassDefn.h: //typedef std::set PseudoSet; #endif // GLYPH_INCLUDED grcompiler-5.2.1/compiler/GdlNameDefn.h000066400000000000000000000036311411153030700177470ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlNameDefn.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: GdlNameDefn contains collections of informative strings. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef NAMEDEFN_INCLUDED #define NAMEDEFN_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GdlNameDefn Description: Each GdlNameDefn contains a string (or a collection strings in multiple languages) giving a piece of information about the renderer (version, author, comment, etc.). These are stored in the GdlRenderer, keyed under the numeric identifier for the name. Hungarian: ndefn ----------------------------------------------------------------------------------------------*/ class GdlNameDefn : public GdlObject { public: GdlExtName * ExtName(int i) { return &m_vextname[i]; } void AddExtName(utf16 wLangID, std::wstring stu) { m_vextname.push_back(GdlExtName(stu, wLangID)); } void AddExtName(utf16 wLangID, GdlExpression * pexp) { GdlStringExpression * pexpString = dynamic_cast(pexp); Assert(pexpString); std::wstring stu = pexpString->ConvertToUnicode(); m_vextname.push_back(GdlExtName(stu, wLangID)); } void DeleteExtName(int i) { Assert(i < static_cast(m_vextname.size())); m_vextname.erase(m_vextname.begin() + i); } size_t NameCount() { return m_vextname.size(); } protected: std::vector m_vextname; }; typedef std::map NameDefnMap; #endif // NAMEDEFN_INCLUDED grcompiler-5.2.1/compiler/GdlObject.h000066400000000000000000000036311411153030700175000ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlObject.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Contains definitions of simple abstract superclasses needed for parser and compiler. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GDLOBJECT_INCLUDED #define GDLOBJECT_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GdlObject Description: General abstract superclass subsuming classes of objects corresponding to structures in the GDL file, specifically those that are created by the parser. Hungarian: gdl ----------------------------------------------------------------------------------------------*/ class GdlObject { public: GdlObject() { m_lnf = GrpLineAndFile(0, 0, ""); } GdlObject(const GdlObject & gdl) { m_lnf = gdl.m_lnf; } void SetLineAndFile(GrpLineAndFile const& lnf) { m_lnf = lnf; } void CopyLineAndFile(const GdlObject & gdl) { m_lnf = gdl.m_lnf; } GrpLineAndFile & LineAndFile() { return m_lnf; } bool LineIsZero() { return m_lnf.PreProcessedLine() == 0; } protected: // instance variables: GrpLineAndFile m_lnf; }; /*---------------------------------------------------------------------------------------------- Class: GdlDefn Description: Abstract class subsuming GdlGlyphClassDefn and GdlFeatureDefn. Hungarian: defn ----------------------------------------------------------------------------------------------*/ class GdlDefn : public GdlObject { public: virtual ~GdlDefn() { } }; #endif // !GDLOBJECT_INCLUDED grcompiler-5.2.1/compiler/GdlRenderer.cpp000066400000000000000000000141451411153030700203750ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlRenderer.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implementation of the top-level GDL thing. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods: General ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Constructor ----------------------------------------------------------------------------------------------*/ GdlRenderer::GdlRenderer() { m_fAutoPseudo = true; m_nBidi = -1; // not set m_ipassBidi = -2; // not set m_fHasFlippedPass = false; m_pexpXAscent = NULL; m_pexpXDescent = NULL; m_grfsdc = kfsdcNone; m_cnUserDefn = 0; m_cnComponents = 0; } /*---------------------------------------------------------------------------------------------- Destructor ----------------------------------------------------------------------------------------------*/ GdlRenderer::~GdlRenderer() { // Delete all the GdlGlyphDefns (simple glyphs) stored in the classes, // then delete all the classes at the top level. size_t i; for (i = 0; i < m_vpglfc.size(); ++i) m_vpglfc[i]->DeleteGlyphDefns(); for (i = 0; i < m_vpglfc.size(); ++i) delete m_vpglfc[i]; for (i = 0; i < m_vprultbl.size(); ++i) delete m_vprultbl[i]; for (i = 0; i < m_vpfeat.size(); ++i) delete m_vpfeat[i]; for (i = 0; i < m_vplang.size(); ++i) delete m_vplang[i]; for (NameDefnMap::iterator itmap = m_hmNameDefns.begin(); itmap != m_hmNameDefns.end(); ++itmap) { delete itmap->second; } if (m_pexpXAscent) delete m_pexpXAscent; if (m_pexpXDescent) delete m_pexpXDescent; } /*---------------------------------------------------------------------------------------------- Add a language to the list. Keep them in sorted order. Return false if the language was already present. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::AddLanguage(GdlLanguageDefn * plang) { uintptr_t iplangLo = 0; uintptr_t iplangHi = m_vplang.size(); while (true) { auto iplangMid = (iplangLo + iplangHi) >> 1; // div by 2 if (iplangMid >= m_vplang.size()) { m_vplang.push_back(plang); return true; } unsigned int nCodeThis = plang->Code(); unsigned int nCodeThat = m_vplang[iplangMid]->Code(); int cmp = strcmp((char*)&nCodeThis, (char*)&nCodeThat); if (cmp == 0) return false; // already present if (iplangHi - iplangLo == 1) { m_vplang.insert(m_vplang.begin() + iplangLo + ((cmp<0) ? 0 : 1), plang); return true; } if (cmp < 0) iplangHi = iplangMid; else iplangLo = iplangMid; } } /*********************************************************************************************** Methods: Parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the rule table with the given name; create it if it does not exist. Assumes that the name is a valid one for tables, but not necessarily for rule tables. ----------------------------------------------------------------------------------------------*/ GdlRuleTable * GdlRenderer::GetRuleTable(GrpLineAndFile & lnf, std::string staTableName) { GdlRuleTable * prultbl = FindRuleTable(staTableName); if (prultbl) return prultbl; // Create a new one, if permissible. Symbol psymTableName = g_cman.SymbolTable()->FindSymbol(staTableName); Assert(psymTableName); if (!psymTableName || !psymTableName->FitsSymbolType(ksymtTableRule)) { g_errorList.AddError(2162, NULL, "The ", staTableName, " table cannot hold rules", lnf); return NULL; } prultbl = new GdlRuleTable(psymTableName); prultbl->SetLineAndFile(lnf); m_vprultbl.push_back(prultbl); return prultbl; } /*---------------------------------------------------------------------------------------------- Return the table with the given name, or NULL if it does not exist. ----------------------------------------------------------------------------------------------*/ GdlRuleTable * GdlRenderer::FindRuleTable(std::string staTableName) { Symbol psymTableName = g_cman.SymbolTable()->FindSymbol(staTableName); if (!psymTableName) return NULL; return FindRuleTable(psymTableName); } GdlRuleTable * GdlRenderer::FindRuleTable(Symbol psymTableName) { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { if (m_vprultbl[iprultbl]->NameSymbol() == psymTableName) return m_vprultbl[iprultbl]; } return NULL; } /*********************************************************************************************** Methods: Pre-compiler ***********************************************************************************************/ void GdlRenderer::SetNumUserDefn(size_t c) { m_cnUserDefn = max(m_cnUserDefn, c+1); } void GdlRenderer::SetNumLigComponents(size_t c) { m_cnComponents = max(m_cnComponents, c); } grcompiler-5.2.1/compiler/GdlRenderer.h000066400000000000000000000232461411153030700200440ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlRenderer.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: GdlRenderer is the top-level object corresponding to a rendering behavior description in a single GDL file. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef RENDERER_INCLUDED #define RENDERER_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GdlRenderer Description: Top-level object; there is only one instance of this class per compile. Hungarian: rndr ----------------------------------------------------------------------------------------------*/ class GrcTable; class GdlGlyphClassDefn; class GdlFeatureDefn; class GdlRenderer : public GdlObject { public: // Constructor & destructor: GdlRenderer(); ~GdlRenderer(); // General: bool AutoPseudo() { return m_fAutoPseudo; } void SetAutoPseudo(bool f) { m_fAutoPseudo = f; } bool Bidi() { return (m_nBidi > 0); } // -1 = false (default) int RawBidi() { return m_nBidi; } // false, true, -1=not set, 2=full bidi pass void SetBidi(int n) { m_nBidi = n; } bool HasFlippedPass() { return m_fHasFlippedPass; } void SetHasFlippedPass(bool f) { m_fHasFlippedPass = f; } int ScriptDirections() { return m_grfsdc; } void AddScriptDirection(int fsdc) { m_grfsdc |= fsdc; } bool ClearScriptDirections() { bool fRet = (m_grfsdc != kfsdcNone); m_grfsdc = kfsdcNone; return fRet; } void AddScriptTag(int n) { for (size_t i = 0; i < m_vnScriptTags.size(); i++) { if (m_vnScriptTags[i] == n) return; } m_vnScriptTags.push_back(n); } bool ClearScriptTags() { bool fRet = (m_vnScriptTags.size() > 0); m_vnScriptTags.clear(); return fRet; } size_t NumScriptTags() { return m_vnScriptTags.size(); } int ScriptTag(int i) { Assert(i < static_cast(m_vnScriptTags.size())); return m_vnScriptTags[i]; } GdlNumericExpression * ExtraAscent() { return m_pexpXAscent; } void SetExtraAscent(GdlNumericExpression * pexp) { m_pexpXAscent = pexp; } GdlNumericExpression * ExtraDescent() { return m_pexpXDescent; } void SetExtraDescent(GdlNumericExpression * pexp) { m_pexpXDescent = pexp; } void AddGlyphClass(GdlGlyphClassDefn * pglfc) { m_vpglfc.push_back(pglfc); } // currently not used: void RemoveGlyphClass(GdlGlyphClassDefn * pglfc) // assumes it is only present once { for (size_t iglfc = 0; iglfc < m_vpglfc.size(); iglfc++) { if (m_vpglfc[iglfc] == pglfc) { m_vpglfc.erase(m_vpglfc.begin() + iglfc); break; } } } void AddFeature(GdlFeatureDefn * pfeat) { m_vpfeat.push_back(pfeat); } bool AddLanguage(GdlLanguageDefn * plang); NameDefnMap & NameAssignmentsMap() { return m_hmNameDefns; } // Parser: GdlRuleTable * GetRuleTable(GrpLineAndFile & lnf, std::string staTableName); GdlRuleTable * FindRuleTable(std::string staTableName); GdlRuleTable * FindRuleTable(Symbol psymTableName); // Post-parser: bool ReplaceAliases(); bool HandleOptionalItems(); bool CheckSelectors(); // Pre-compiler: bool PreCompileFeatures(GrcManager * pcman, GrcFont * pfont, uint32_t * pfxdFeatVersion); void CheckLanguageFeatureSize(); bool CheckRecursiveGlyphClasses(); size_t ExplicitPseudos(PseudoSet & setpglf); int ActualForPseudo(utf16 wPseudo); bool AssignGlyphIDs(GrcFont *, gid16 wGlyphIDLim, std::map & hmActualForPseudos); void AssignGlyphAttrsToClassMembers(GrcGlyphAttrMatrix * pgax, GrcLigComponentList * plclist); void AssignGlyphAttrDefaultValues(GrcFont * pfont, GrcGlyphAttrMatrix * pgax, size_t cwGlyphs, std::vector & vpsymSysDefined, std::vector & vnSysDefValues, std::vector & vpexpExtra, std::vector & vpsymGlyphAttrs); DirCode DefaultDirCode(int nUnicode, bool * pfInitFailed); DirCode ConvertBidiCode(UCharDirection diricu, utf16 wUnicode); void StorePseudoToActualAsGlyphAttr(GrcGlyphAttrMatrix * pgax, int nAttrID, std::vector & vpexpExtra); bool FixRulePreContexts(Symbol psymAnyClass); bool FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont); bool CheckTablesAndPasses(GrcManager * pcman, int * pcpassValid); void MarkReplacementClasses(GrcManager * pcman, ReplacementClassSet & setpglfc); void DeleteAllBadGlyphs(); bool CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont); bool CheckLBsInRules(); void RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont); void MaxJustificationLevel(int * pnLevel); bool HasCollisionPass(); bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints); void MovePassConstraintsToRules(int fxdSilfVersion); void CalculateSpaceContextuals(GrcFont * pfont); size_t NumberOfPasses() { size_t cpass, cpassLB, cpassSub, cpassPos, cpassJust; int ipassBidi; CountPasses(cpass, cpassLB, cpassSub, cpassJust, cpassPos, ipassBidi); return cpass; } void SetNumUserDefn(size_t c); size_t NumUserDefn() { return m_cnUserDefn; } void SetNumLigComponents(size_t c); size_t NumLigComponents() { return m_cnComponents; } // Compiler: void PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP); void GenerateFsms(GrcManager * pcman); void CalculateContextOffsets(); int LineBreakFlags() { // Bit 0: ON means there is at least one rule that uses line-end contextuals. int nBitmap = (int)(m_fLineBreak); // Bit 1: ON means NO line-breaks occur before the justification pass; ie, it is safe // to optimize by not rerunning the substitution pass. // OFF means the entire substitution pass must be rerun to handle line-end contextuals. if (m_fLineBreak && !m_fLineBreakB4Just) nBitmap += 2; // ie, safe to optimize return nBitmap; } int SpaceContextualFlags() // shifted for putting in flag byte { return ((int)(m_spcon)) << 2; } int PreXlbContext() { return m_critPreXlbContext; } int PostXlbContext() { return m_critPostXlbContext; } // debuggers: void DebugEngineCode(GrcManager * pcman, std::ostream & strmOut); void DebugRulePrecedence(GrcManager * pcman, std::ostream & strmOut); void DebugFsm(GrcManager * pcman, std::ostream & strmOut); void DebugCmap(GrcFont * pfont, utf16 * rgchwUniToGlyphID, unsigned int * rgnGlyphIDToUni); void DebugClasses(std::ostream & strmOut, std::vector & vpglfcReplcmt, int cpglfcLinear); void DebugXmlClasses(std::ofstream & strmOut, std::string staPathToCur); void DebugXmlFeatures(std::ofstream & strmOut, std::string staPathToCur); void DebugXmlRules(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); void RecordSingleMemberClasses(std::vector & vstaSingleMemberClasses, std::vector & vstaFiles, std::vector & vnLines, std::string staPathToCur); // Output: void OutputReplacementClasses(int fxdSilfVersion, std::vector & vpglfc, size_t cpglfcLinear, GrcBinaryStream * pbstrm); void CountPasses(size_t & pcpass, size_t & pcpassLB, size_t & pcpassSub, size_t & pcpassJust, size_t & pcpassPos, int & pipassBidi); void OutputPasses(GrcManager * pcman, GrcBinaryStream * pbstrm, offset_t lTableStart, std::vector & vnOffsets); bool AssignFeatTableNameIds(utf16 wFirstNameId, utf16 wNameIdMinNew, std::vector & vstuExtNames, std::vector & vwLangIds, std::vector & vwNameTblIds, size_t & cchwStringData, uint8 * pNameTbl, std::vector & vpfeatInput); void OutputFeatTable(GrcBinaryStream * pbstrm, offset_t lTableStart, int fxdVersion); void OutputSillTable(GrcBinaryStream * pbstrm, offset_t lTableStart); protected: // Instance variables: std::vector m_vprultbl; std::vector m_vpglfc; std::vector m_vpfeat; std::vector m_vplang; NameDefnMap m_hmNameDefns; // GdlStdStyle m_rgsty[FeatureDefn::kstvLim]; bool m_fAutoPseudo; int m_nBidi; // boolean or 2 = explict pass; -1 if not set int m_ipassBidi; int m_fHasFlippedPass; int m_grfsdc; // supported script directions std::vector m_vnScriptTags; GdlNumericExpression * m_pexpXAscent; GdlNumericExpression * m_pexpXDescent; // true if any line-breaks are relevant to rendering: bool m_fLineBreak; // true if any line-breaks are relevant to rendering before the justification table: bool m_fLineBreakB4Just; // limits on cross-line-boundary contextualization: int m_critPreXlbContext; int m_critPostXlbContext; // space contextuals: SpaceContextuals m_spcon; size_t m_cnUserDefn; // number of user-defined slot attributes size_t m_cnComponents; // max number of components per ligature enum { kInfiniteXlbContext = 255 }; }; /*---------------------------------------------------------------------------------------------- Class: GdlStdStyle Description: Standard style information; each styl in the list corresponds to a separate font file; eg, bold, italic, bold-italic. Hungarian: sty ----------------------------------------------------------------------------------------------*/ class GdlStdStyle : public GdlObject { protected: // instance variables: int m_stvSetting; // feature setting value (which also is this item's index // in the m_rgsty array) int m_nInternalID; // the index into the array of glyph attr values std::string m_staFontName; // name of the font }; #endif // RENDERER_INCLUDED grcompiler-5.2.1/compiler/GdlRule.cpp000066400000000000000000000422651411153030700175420ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlRule.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implement the rules and their rule items. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods: General ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Given a slot alias, find the corresponding index in the rule's list. Return -1 if the name could not be found. The indices are 1-based. ----------------------------------------------------------------------------------------------*/ int GdlRule::LookupAliasIndex(std::string sta) { for (size_t i = 0; i < m_vpalias.size(); ++i) { if (m_vpalias[i]->m_staName == sta) return m_vpalias[i]->m_srIndex; } return -1; } /*********************************************************************************************** Methods: Parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the irit'th item in the context; create it if it does not exist. If staInput = "_", then the item should be present in the lhs or rhs, so create a set-attr item for it. Arguments: lnf - line on which the item appears irit - item number (0-based) staInput - input class, "_", or "#" ----------------------------------------------------------------------------------------------*/ GdlRuleItem * GdlRule::ContextItemAt(GrpLineAndFile & lnf, int irit, std::string staInput, std::string staAlias) { Assert(irit <= static_cast(m_vprit.size())); if (irit == signed(m_vprit.size())) { Symbol psymClass = g_cman.SymbolTable()->FindSymbol(staInput); GdlRuleItem * prit; if (psymClass && psymClass->FitsSymbolType(ksymtSpecialLb)) prit = new GdlLineBreakItem(psymClass); else if (psymClass && psymClass->FitsSymbolType(ksymtSpecialUnderscore)) // place holder prit = new GdlSetAttrItem(psymClass); else { if (!psymClass || !psymClass->FitsSymbolType(ksymtClass)) { g_errorList.AddError(3134, this, "Undefined class name: ", staInput, lnf); psymClass = g_cman.SymbolTable()->FindSymbol(GdlGlyphClassDefn::Undefined()); } prit = new GdlRuleItem(psymClass); } prit->SetLineAndFile(lnf); prit->m_iritContextPos = int(m_vprit.size()); prit->m_iritContextPosOrig = prit->m_iritContextPos; m_vprit.push_back(prit); // record the 1-based slot-alias value, if any if (staAlias != "") m_vpalias.push_back(new GdlAlias(staAlias, prit->m_iritContextPos + 1)); } return m_vprit[irit]; } /*---------------------------------------------------------------------------------------------- Handle error sitution where they put a selector in the context (@ or $). nSel == 0 or staSel == "" indicates a bare '@'. ----------------------------------------------------------------------------------------------*/ GdlRuleItem * GdlRule::ContextSelectorItemAt(GrpLineAndFile & lnf, int irit, std::string staClassOrAt, int /*nSel*/, std::string staAlias) { g_errorList.AddError(3135, this, "Cannot specify a selector in the context"); if (staClassOrAt == "@") return ContextItemAt(lnf, irit, "_", staAlias); else return ContextItemAt(lnf, irit, staClassOrAt, staAlias); } GdlRuleItem * GdlRule::ContextSelectorItemAt(GrpLineAndFile & lnf, int irit, std::string staClassOrAt, std::string /*staSel*/, std::string staAlias) { g_errorList.AddError(3136, this, "Cannot specify a selector in the context"); if (staClassOrAt == "@") return ContextItemAt(lnf, irit, "_", staAlias); else return ContextItemAt(lnf, irit, staClassOrAt, staAlias); } /*---------------------------------------------------------------------------------------------- Return the irit'th item in the RHS; create it if it does not exist. Assumes that if there was a context, then items have been created for everything in it; therefore, needing to create an item when there are context-only items is an error. Arguments: lnf - line on which the item appears irit - item number (0-based) staInput - input class name, or "_" or '@' staAlias - string indicating the alias fSubItem - true if we know right off the bat we need a substitition item ----------------------------------------------------------------------------------------------*/ GdlRuleItem * GdlRule::RhsItemAt(GrpLineAndFile & lnf, int irit, std::string staInput, std::string staAlias, bool fSubItem) { bool fContext = false; int critRhs = 0; Symbol psymClassOrPlaceHolder = g_cman.SymbolTable()->FindSymbol(staInput); for (size_t iritT = 0; iritT < m_vprit.size(); iritT++) { GdlSetAttrItem * pritset = dynamic_cast(m_vprit[iritT]); if (!pritset) fContext = true; else { if (irit == critRhs) { if (!psymClassOrPlaceHolder || (!psymClassOrPlaceHolder->FitsSymbolType(ksymtClass) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialUnderscore) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialLb) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialAt))) { g_errorList.AddError(3137, this, "Undefined class name: ", staInput, lnf); psymClassOrPlaceHolder = g_cman.SymbolTable()->FindSymbol(GdlGlyphClassDefn::Undefined()); } if (psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialLb)) { goto LLbError; } else if (fSubItem) { GdlSubstitutionItem * pritsub = new GdlSubstitutionItem(*pritset); pritsub->SetLineAndFile(lnf); pritsub->m_psymOutput = psymClassOrPlaceHolder; pritsub->m_psymInput = NULL; // must be set by LHS // record the 1-based slot-alias value, if any if (staAlias != "") m_vpalias.push_back( new GdlAlias(staAlias, m_vprit[iritT]->m_iritContextPos + 1)); delete pritset; m_vprit[iritT] = pritsub; return pritsub; } else { m_vprit[iritT]->SetLineAndFile(lnf); m_vprit[iritT]->m_psymInput = psymClassOrPlaceHolder; // record the 1-based slot-alias value, if any if (staAlias != "") m_vpalias.push_back( new GdlAlias(staAlias, m_vprit[iritT]->m_iritContextPos + 1)); return m_vprit[iritT]; } } else critRhs++; } } // Need to add an item LLbError: if (staInput == "#") { g_errorList.AddError(3138, this, "Line break indicator # cannot appear in the right-hand-side"); return NULL; } if (!psymClassOrPlaceHolder || (!psymClassOrPlaceHolder->FitsSymbolType(ksymtClass) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialUnderscore) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialAt))) { g_errorList.AddError(3139, this, "Undefined class name: ", staInput, lnf); psymClassOrPlaceHolder = g_cman.SymbolTable()->FindSymbol(GdlGlyphClassDefn::Undefined()); } // Record an error if there was a context for this rule--then pretend that // there was an extra _ on the end of the context. if (fContext) { g_errorList.AddError(3140, this, "Context does not account for all items in the right-hand-side"); } GdlRuleItem * pritNew; if (fSubItem) pritNew = new GdlSubstitutionItem( g_cman.SymbolTable()->FindSymbol("_"), psymClassOrPlaceHolder); else pritNew = new GdlSetAttrItem(psymClassOrPlaceHolder); pritNew->SetLineAndFile(lnf); pritNew->m_iritContextPos = int(m_vprit.size()); pritNew->m_iritContextPosOrig = pritNew->m_iritContextPos; // record the 1-based slot-alias value, if any if (staAlias != "") m_vpalias.push_back(new GdlAlias(staAlias, pritNew->m_iritContextPos + 1)); m_vprit.push_back(pritNew); return pritNew; } /*---------------------------------------------------------------------------------------------- Handle sitution where they put an '@' or '$' in the rhs. This may be followed by either an integer or a string as the selector. nSel == 0 or staSel == "" indicates a bare '@'. ----------------------------------------------------------------------------------------------*/ GdlRuleItem * GdlRule::RhsSelectorItemAt(GrpLineAndFile & lnf, int irit, std::string staClassOrAt, int nSel, std::string staAlias) { GdlSubstitutionItem * pritsub = dynamic_cast(RhsItemAt(lnf, irit, staClassOrAt, staAlias, true)); if (!pritsub) return NULL; if (nSel == 0) pritsub->m_pexpSelector = NULL; else { pritsub->m_pexpSelector = new GdlSlotRefExpression(nSel); pritsub->m_pexpSelector->SetLineAndFile(lnf); } return pritsub; } GdlRuleItem * GdlRule::RhsSelectorItemAt(GrpLineAndFile & lnf, int irit, std::string staClassOrAt, std::string staSel, std::string staAlias) { GdlSubstitutionItem * pritsub = dynamic_cast(RhsItemAt(lnf, irit, staClassOrAt, staAlias, true)); if (!pritsub) return NULL; if (staSel == "") pritsub->m_pexpSelector = NULL; else { pritsub->m_pexpSelector = new GdlSlotRefExpression(staSel); pritsub->m_pexpSelector->SetLineAndFile(lnf); } return pritsub; } /*---------------------------------------------------------------------------------------------- Return the irit'th item in the LHS. Assumes that all items have been created for the context and right-hand side, so there should be no need to create one here. Caller is responsible for checking that there is exactly an equal number of items in the left- and right-hand sides. Arguments: lnf - line on which the item appears irit - item number (0-based) staInput - input class name, "_", or "#" ----------------------------------------------------------------------------------------------*/ GdlRuleItem * GdlRule::LhsItemAt(GrpLineAndFile & lnf, int irit, std::string staInput, std::string staAlias) { bool fContext = false; int critLhs = 0; Symbol psymClassOrPlaceHolder = g_cman.SymbolTable()->FindSymbol(staInput); for (size_t iritT = 0; iritT < m_vprit.size(); iritT++) { GdlSetAttrItem * pritset = dynamic_cast(m_vprit[iritT]); if (!pritset) fContext = true; else { if (irit == critLhs) { if (!psymClassOrPlaceHolder || (!psymClassOrPlaceHolder->FitsSymbolType(ksymtClass) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialUnderscore) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialLb))) { g_errorList.AddError(3141, this, "Undefined class name: ", staInput, lnf); psymClassOrPlaceHolder = g_cman.SymbolTable()->FindSymbol(GdlGlyphClassDefn::Undefined()); } GdlSubstitutionItem * pritsub = dynamic_cast(pritset); if (pritsub) { // for instance, there was a @ in the rhs } else { pritsub = new GdlSubstitutionItem(*pritset); // output has been set to input delete pritset; } pritsub->SetLineAndFile(lnf); m_vprit[iritT] = pritsub; pritsub->m_psymInput = psymClassOrPlaceHolder; // possibly invalid // Record the 1-based slot-alias value, if any if (staAlias != "") m_vpalias.push_back( new GdlAlias(staAlias, pritsub->m_iritContextPos + 1)); if (psymClassOrPlaceHolder && psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialLb)) { goto LLbError; } return m_vprit[iritT]; } else critLhs++; } } // Need to add an item LLbError: if (staInput == "#") { g_errorList.AddError(3142, this, "Line break indicator # cannot appear in the left-hand-side"); return NULL; } if (!psymClassOrPlaceHolder || (!psymClassOrPlaceHolder->FitsSymbolType(ksymtClass) && !psymClassOrPlaceHolder->FitsSymbolType(ksymtSpecialUnderscore))) { g_errorList.AddError(3143, this, "Undefined class name: ", staInput, lnf); psymClassOrPlaceHolder = g_cman.SymbolTable()->FindSymbol(GdlGlyphClassDefn::Undefined()); } if (fContext) g_errorList.AddError(3144, this, "Context does not account for all items in the left-hand-side"); else g_errorList.AddError(3145, this, "Number of items in left- and right-hand-sides do not match"); // Pretend it is a deletion. GdlRuleItem * pritNew = new GdlSubstitutionItem( psymClassOrPlaceHolder, g_cman.SymbolTable()->FindSymbol("_")); pritNew->SetLineAndFile(lnf); pritNew->m_iritContextPos = int(m_vprit.size()); pritNew->m_iritContextPosOrig = pritNew->m_iritContextPos; // record the 1-based slot-alias value, if any if (staAlias != "") m_vpalias.push_back(new GdlAlias(staAlias, pritNew->m_iritContextPos + 1)); m_vprit.push_back(pritNew); return pritNew; } /*---------------------------------------------------------------------------------------------- Handle error sitution where they put a selector in the lhs ('@' or '$'). nSel == 0 or staSel == "" indicates a bare '@'. ----------------------------------------------------------------------------------------------*/ GdlRuleItem * GdlRule::LhsSelectorItemAt(GrpLineAndFile & lnf, int irit, std::string staClassOrAt, int /*nSel*/, std::string staAlias) { g_errorList.AddError(3146, this, "Cannot specify a selector in the lhs"); if (staClassOrAt == "@") return LhsItemAt(lnf, irit, "_", staAlias); else return LhsItemAt(lnf, irit, staClassOrAt, staAlias); } GdlRuleItem * GdlRule::LhsSelectorItemAt(GrpLineAndFile & lnf, int irit, std::string staClassOrAt, std::string /*staSel*/, std::string staAlias) { g_errorList.AddError(3147, this, "Cannot specify a selector in the lhs"); if (staClassOrAt == "@") return LhsItemAt(lnf, irit, "_", staAlias); else return LhsItemAt(lnf, irit, staClassOrAt, staAlias); } /*---------------------------------------------------------------------------------------------- Record the presence of an optional range in the rule. Argument: iritStart - index of first item in optional range - 0 based crit - number of items in optional range fContext - true if iritStart is relative to context, false if it is relative to lhs or rhs ----------------------------------------------------------------------------------------------*/ void GdlRule::AddOptionalRange(int iritStart, int crit, bool fContext) { if (crit == 0) return; m_viritOptRangeStart.push_back(iritStart); m_viritOptRangeEnd.push_back(iritStart + crit - 1); m_vfOptRangeContext.push_back(fContext); } /*---------------------------------------------------------------------------------------------- Add an association to a rule item. ----------------------------------------------------------------------------------------------*/ void GdlRuleItem::AddAssociation(GrpLineAndFile & lnf, int /*n*/) { g_errorList.AddError(3148, NULL, "Associations are only permitted in the rhs of a substitution rule", lnf); } void GdlRuleItem::AddAssociation(GrpLineAndFile & lnf, std::string /*sta*/) { g_errorList.AddError(3149, NULL, "Associations are only permitted in the rhs of a substitution rule", lnf); } void GdlSubstitutionItem::AddAssociation(GrpLineAndFile & lnf, int n) { GdlSlotRefExpression * pexp = new GdlSlotRefExpression(n); pexp->SetLineAndFile(lnf); m_vpexpAssocs.push_back(pexp); } void GdlSubstitutionItem::AddAssociation(GrpLineAndFile & lnf, std::string sta) { GdlSlotRefExpression * pexp = new GdlSlotRefExpression(sta); pexp->SetLineAndFile(lnf); m_vpexpAssocs.push_back(pexp); } /*********************************************************************************************** Methods: Compiler ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- The sort key is the number of items matched in the rule (minus the prepended ANYs). So we take the original total number of items and substract the insertions. ----------------------------------------------------------------------------------------------*/ int GdlRule::SortKey() { // Count insertions. size_t critIns = 0; for (auto const & prit: m_vprit) { GdlSubstitutionItem * pritSub = dynamic_cast(prit); if (pritSub) { Symbol psym = prit->m_psymInput; if (psym && psym->FitsSymbolType(ksymtSpecialUnderscore)) critIns++; } } return int(m_critOriginal - critIns); // original length of rule } grcompiler-5.2.1/compiler/GdlRule.h000066400000000000000000000742361411153030700172120ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlRule.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Classes to implement rules and rule items. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GDL_RULE_INCLUDED #define GDL_RULE_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GdlAttrValueSpec Description: The action setting the value for a single attribute. Hungarian: avs ----------------------------------------------------------------------------------------------*/ class GdlAttrValueSpec : public GdlObject { friend class GdlRule; friend class GdlRuleItem; friend class GdlSetAttrItem; friend class GdlSubstitutionItem; public: // Constructors & destructors: GdlAttrValueSpec(Symbol psymName, Symbol psymOp, GdlExpression * pexpValue) : m_psymName(psymName), m_psymOperator(psymOp), m_pexpValue(pexpValue), m_fFlattened(false) { m_pexpValue->PropagateLineAndFile(pexpValue->LineAndFile()); } // copy constructor GdlAttrValueSpec(const GdlAttrValueSpec & avs) : GdlObject(avs), m_psymName(avs.m_psymName), m_psymOperator(avs.m_psymOperator), m_pexpValue(avs.m_pexpValue->Clone()), m_fFlattened(avs.m_fFlattened) { } ~GdlAttrValueSpec() { delete m_pexpValue; } // General: bool Flattened() { return m_fFlattened; } void SetFlattened(bool f) { m_fFlattened = f; } Symbol AttrName() { return m_psymName; } protected: // Parser: void PropagateLineAndFile(GrpLineAndFile & lnf) { if (LineIsZero()) { SetLineAndFile(lnf); m_pexpValue->PropagateLineAndFile(lnf); } } // Post-parser: void ReplaceAliases(GdlRule *); bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); // Pre-compiler: void FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, Symbol psymOutClass); void FlattenPointSlotAttrs(GrcManager * pcman, std::vector & vpavsNew); void CheckAttachAtPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool *pfGpoint); void CheckAttachWithPoint(GrcManager * pcman, std::vector & vpglfcInClasses, int irit, bool * pfXY, bool *pfGpoint); void FixFeatureTestsInRules(GrcFont * pfont); bool CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, Symbol psymTable, int rco, GdlRuleItem * prit, int irit, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel); void AdjustSlotRefsForPreAnys(int critPrependedAnys, GdlRuleItem * prit); void AdjustToIOIndices(GdlRuleItem * prit, std::vector & viritInput, std::vector & viritOutput); bool ReplaceKern(GrcManager * pcman, GdlAttrValueSpec ** ppavsShift, GdlAttrValueSpec ** ppavsAdvance); void MaxJustificationLevel(int * pnJLevel); bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); // Compiler: bool GenerateAttrSettingCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, int nIIndex, int iritAttachTo); bool IsKeySlotAttr(); private: void operator=(GdlAttrValueSpec); // don't define the assignment operator public: // debuggers: void PrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool * pfAtt, bool * pfAttAt, bool * pfAttWith, size_t cpavs); void PrettyPrintAttach(GrcManager * pcman, std::ostream & strmOut, bool fXml); void DebugXml(GrcManager * pcman, std::ostream & strmOut, std::string staPathToCur); protected: // Instance variables: Symbol m_psymName; Symbol m_psymOperator; GdlExpression * m_pexpValue; // for compiler use: int m_nInternalID; // internal ID for slot attribute bool m_fFlattened; // an expression that was created from a more general expression being // "flattened;" ie, "attach.with = ptA" => "attach.with { x = ptA.x; // y = ptA.y; xoffset = ptA.xoffset; yoffset = ptA.yoffset }" public: void test_SetLineAndFile(GrpLineAndFile & lnf) { SetLineAndFile(lnf); m_pexpValue->PropagateLineAndFile(lnf); } }; // end of GdlAttrValueSpec /*---------------------------------------------------------------------------------------------- Class: GdlRuleItem Description: Hungarian: rit ----------------------------------------------------------------------------------------------*/ class GdlRuleItem : public GdlObject { friend class GdlRule; friend class GdlLineBreakItem; friend class GdlSetAttrItem; friend class GdlSubstitutionItem; public: // Constructors & destructors: GdlRuleItem() : m_iritContextPos(-1), m_psymInput(NULL), m_pexpConstraint(NULL), m_iritContextPosOrig(-1) { } GdlRuleItem(Symbol psym) : m_iritContextPos(-1), m_psymInput(psym), m_pexpConstraint(NULL), m_iritContextPosOrig(-1) { } // copy constructor GdlRuleItem(const GdlRuleItem & rit) : GdlObject(rit), m_iritContextPos(rit.m_iritContextPos), m_psymInput(rit.m_psymInput), m_staAlias(rit.m_staAlias), m_iritContextPosOrig(rit.m_iritContextPosOrig), m_nInputFsmID(rit.m_nInputFsmID) { if (rit.m_pexpConstraint) m_pexpConstraint = rit.m_pexpConstraint->Clone(); else m_pexpConstraint = NULL; } virtual GdlRuleItem * Clone() { return new GdlRuleItem(*this); } virtual ~GdlRuleItem() { if (m_pexpConstraint) delete m_pexpConstraint; } // Alpha version of original item number (1-based), for error messages std::string PosString() { return std::to_string(m_iritContextPosOrig + 1); } // Increment the context position by the given number void IncContextPosition(int dirit) { m_iritContextPos += dirit; } public: Symbol InputSymbol() { return m_psymInput; } // For classes that don't do substitutions, the output is the input virtual Symbol OutputSymbol() { return m_psymInput; } // Parser: virtual void AddAssociation(GrpLineAndFile &, int n); virtual void AddAssociation(GrpLineAndFile &, std::string sta); virtual void AddAttrValueSpec(GdlAttrValueSpec * /*pavs*/) { Assert(false); // should have been converted to an GdlSetAttrItem } void SetConstraint(GdlExpression * pexp) { Assert(!m_pexpConstraint); m_pexpConstraint = pexp; pexp->PropagateLineAndFile(LineAndFile()); } void SetSlotName(std::string sta) { m_staAlias = sta; } // Post-parser: virtual void ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector& vfOmit, std::vector& vnNewIndices, GdlRule * prule); virtual void CheckSelectors(GdlRule * prule, int irit, size_t crit); // Pre-compiler: virtual void FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * prule, int irit); virtual void FlattenPointSlotAttrs(GrcManager * pcman); void AssignFsmInternalID(GrcManager * pcman, int nPassID); virtual void FindSubstitutionSlots(int irit, std::vector & vfInput, std::vector & vfOutput); void MarkClassAsReplacementClass(GrcManager * pcman, ReplacementClassSet & setpglfcReplace, bool fInput); virtual void FixFeatureTestsInRules(GrcFont *); virtual bool CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * prule, Symbol psymTable, int grfrco, int irit, bool fAnyAssocs, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & vcwClassSizes, std::vector & vfAssocs); virtual bool AnyAssociations(); virtual void SetAssocsVector(std::vector & vfAssocs); bool CheckForJustificationConstraint(); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AssignIOIndices(int * pcritInput, int * pcritOutput, std::vector & viritInput, std::vector & viritOutput); virtual void AdjustToIOIndices(std::vector & viritInput, std::vector & viritOutput); virtual void SetAttachTo(int /*n*/) { Assert(false); // only useful for GdlSetAttrItem } virtual int AttachTo() { return -1; } virtual int AttachedToSlot(); bool OverlapsWith(GdlRuleItem * prit, GrcFont * pfont, int grfsdc); /// void CheckLBsInRules(Symbol psymTable, int * pcritPreLB, int * pcritPostLB); virtual void RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont); virtual void MaxJustificationLevel(int * pnJLevel); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); bool IsSpaceItem(std::vector & vwSpaceGlyphs); // Compiler: virtual bool IsMarkedKeySlot() { return false; } // only slots that perform modifications virtual bool CanBeKeySlot() { return false; } virtual bool IsInsertionSlot() { return false; } void MarkKeyGlyphsForPass(GrcGlyphAttrMatrix * pgax, unsigned int nAttrIdSkipP, int nPassID); void GenerateConstraintEngineCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, std::vector & viritInput, int iritFirstModItem); virtual void GenerateActionEngineCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbOutput, GdlRule * prule, int irit, bool * pfSetInsertToFalse); static void GenerateInsertEqualsFalse(std::vector & vbOutput); void GetMachineClasses(FsmMachineClass ** ppfsmcAssignments, FsmMachineClassSet & setpfsmc); private: void operator=(GdlRuleItem); // don't call the assignment operator--compile error public: // debuggers: virtual void LhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void RhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void ContextPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void ConstraintPrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml, bool fSpace = false); virtual void DebugXmlLhs(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); virtual void DebugXmlRhs(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); virtual void DebugXmlContext(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur, int & iritRhs); virtual void DebugXmlConstraint(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); protected: // Instance variables: int m_iritContextPos; // position within context (0-based) Symbol m_psymInput; GdlExpression * m_pexpConstraint; // for parser use: std::string m_staAlias; int m_iritContextPosOrig; // original--not adjusted for optional items (0-based) or // inserted ANY's--for error messages // for compiler use: int m_nInputFsmID; int m_nInputIndex; // index of item relative to input stream (ignoring inserted items) int m_nOutputIndex; // index of item relative to output stream (ignoring deleted items) }; // end of GdlRuleItem /*---------------------------------------------------------------------------------------------- Class: GdlLineBreakItem Description: A line-break item in the context of a rule Hungarian: ritlb ----------------------------------------------------------------------------------------------*/ class GdlLineBreakItem : public GdlRuleItem { friend class GdlRule; public: // Constructors & destructors: GdlLineBreakItem(Symbol psym) : GdlRuleItem(psym) { } GdlLineBreakItem(const GdlRuleItem & rit) : GdlRuleItem(rit) { } GdlLineBreakItem(const GdlLineBreakItem & rit) : GdlRuleItem(rit) { } virtual GdlRuleItem * Clone() { return new GdlLineBreakItem(*this); } protected: // Parser: // Post-parser: virtual void ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); // Pre-compiler: virtual void FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * prule, int irit); virtual bool CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * prule, Symbol psymTable, int grfrco, int irit, bool fAnyAssocs, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & vcwClassSizes, std::vector & vfAssocs); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & viritInput, std::vector & viritOutput); public: // debuggers: virtual void ContextPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void DebugXmlConstraint(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); }; // end of GdlLineBreakItem /*---------------------------------------------------------------------------------------------- Class: GdlSetAttrItem Description: An item in a positioning rule, having the effect of setting slot attributes. Hungarian: ritset ----------------------------------------------------------------------------------------------*/ class GdlSetAttrItem : public GdlRuleItem { friend class GdlRule; public: // Constructors & destructors: GdlSetAttrItem() : GdlRuleItem() { m_nAttachTo = -1; } GdlSetAttrItem(Symbol psym) : GdlRuleItem(psym) { m_nAttachTo = -1; } // copy constructors GdlSetAttrItem(const GdlRuleItem & rit) : GdlRuleItem(rit) { m_nAttachTo = -1; } GdlSetAttrItem(const GdlSetAttrItem & rit) : GdlRuleItem(rit) { m_nAttachTo = -1; Assert(m_vpavs.size() == 0); for (size_t i = 0; i < rit.m_vpavs.size(); ++i) m_vpavs.push_back(new GdlAttrValueSpec(*rit.m_vpavs[i])); } virtual ~GdlSetAttrItem() { for (size_t i = 0; i < m_vpavs.size(); ++i) delete m_vpavs[i]; } virtual GdlRuleItem * Clone() { return new GdlSetAttrItem(*this); } protected: // Parser: virtual void AddAttrValueSpec(GdlAttrValueSpec * pavs) { m_vpavs.push_back(pavs); pavs->PropagateLineAndFile(LineAndFile()); } // Post-parser: virtual void ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); // Pre-compiler: virtual void FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * prule, int irit); virtual void FlattenPointSlotAttrs(GrcManager * pcman); virtual Symbol OutputClassSymbol(); void CheckCompBox(GrcManager * pcman, Symbol psymCompRef); virtual void FixFeatureTestsInRules(GrcFont *); virtual bool CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * prule, Symbol psymTable, int grfrco, int irit, bool fAnyAssocs, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & vcwClassSizes, std::vector & vfAssocs); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AdjustToIOIndices(std::vector & viritInput, std::vector & viritOutput); virtual void RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont); void MergeColRangeAndPriority(GrcManager * pcman, GrcFont * pfont, int ipavsFlags, int ipavsRange, int ipavsPriority); virtual void MaxJustificationLevel(int * pnJLevel); virtual bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); virtual void SetAttachTo(int n) { m_nAttachTo = n; } virtual int AttachTo() { return m_nAttachTo; } virtual int AttachedToSlot(); protected: int AttachToSettingValue(); void ReplaceAttrSetting(int ipavs, GdlAttrValueSpec * pavsNew) { pavsNew->CopyLineAndFile(*m_vpavs[ipavs]); GdlAttrValueSpec * pavsOld = m_vpavs[ipavs]; m_vpavs[ipavs] = pavsNew; delete pavsOld; } void EraseAttrSetting(int ipavs) { GdlAttrValueSpec * pavsToDelete = m_vpavs[ipavs]; m_vpavs.erase(m_vpavs.begin() + ipavs); delete pavsToDelete; } public: // Compiler: virtual bool IsMarkedKeySlot(); virtual bool CanBeKeySlot() { return (m_vpavs.size() > 0); } virtual void GenerateActionEngineCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbOutput, GdlRule * prule, int irit, bool * pfSetInsertToFalse); bool GenerateAttrSettingCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbOutput, int irit, int nIIndex); // debuggers: virtual void LhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void RhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void ContextPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void AttrSetterPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void DebugXmlLhs(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); virtual void DebugXmlRhs(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); virtual void DebugXmlContext(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur, int & iritRhs); //virtual void DebugXmlAttrSetter(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); protected: // Instance variables: std::vector m_vpavs; int m_nAttachTo; // index of attach.to slot attr (0-based); -1 if none }; // end of GdlSetAttrItem /*---------------------------------------------------------------------------------------------- Class: GdlSubstitutionItem Description: An item in a substitution rule. Hungarian: ritsub ----------------------------------------------------------------------------------------------*/ class GdlSubstitutionItem : public GdlSetAttrItem { friend class GdlRule; public: // Constructors & destructors: GdlSubstitutionItem(Symbol psymInput, Symbol psymOutput) : GdlSetAttrItem(psymInput), m_psymOutput(psymOutput), m_pexpSelector(NULL), m_nSelector(-1) { } GdlSubstitutionItem(const GdlSetAttrItem & rit) : GdlSetAttrItem(rit), m_psymOutput(rit.m_psymInput), m_pexpSelector(NULL), m_nSelector(-1) { } // copy constructor GdlSubstitutionItem(const GdlSubstitutionItem & rit) : GdlSetAttrItem(rit), m_psymOutput(rit.m_psymOutput), // m_vpexpAssocs(rit.m_vpexpAssocs), m_nSelector(rit.m_nSelector), m_nOutputFsmID(rit.m_nOutputFsmID), m_nInputSubsID(rit.m_nInputSubsID), m_nOutputSubsID(rit.m_nOutputSubsID) { for (size_t i = 0; i < rit.m_vpexpAssocs.size(); ++i) { m_vpexpAssocs.push_back( dynamic_cast(rit.m_vpexpAssocs[i]->Clone())); } m_pexpSelector = (rit.m_pexpSelector)? dynamic_cast(rit.m_pexpSelector->Clone()): NULL; } virtual GdlRuleItem * Clone() { return new GdlSubstitutionItem(*this); } virtual ~GdlSubstitutionItem() { for (size_t i = 0; i < m_vpexpAssocs.size(); ++i) delete m_vpexpAssocs[i]; if (m_pexpSelector) delete m_pexpSelector; } protected: virtual Symbol OutputSymbol() { return m_psymOutput; } // Parser: public: virtual void AddAssociation(GrpLineAndFile &, int n); virtual void AddAssociation(GrpLineAndFile &, std::string sta); // Post-parser: protected: virtual void ReplaceAliases(GdlRule *); virtual bool AdjustSlotRefs(std::vector &, std::vector &, GdlRule *); virtual void CheckSelectors(GdlRule * prule, int irit, size_t crit); // Pre-compiler: virtual void FixGlyphAttrsInRules(GrcManager * pcman, std::vector & vpglfcInClasses, GdlRule * prule, int irit); virtual Symbol OutputClassSymbol(); virtual void FindSubstitutionSlots(int irit, std::vector & vfInput, std::vector & vfOutput); virtual bool CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, GdlRule * prule, Symbol psymTable, int grfrco, int irit, bool fAnyAssocs, std::vector & vfLb, std::vector & vfIns, std::vector & vfDel, std::vector & vcwClassSizes, std::vector & vfAssocs); virtual void AdjustSlotRefsForPreAnys(int critPrependedAnys); virtual void AssignIOIndices(int * pcritInput, int * pcritOutput, std::vector & viritInput, std::vector & viritOutput); virtual void AdjustToIOIndices(std::vector & viritInput, std::vector & viritOutput); virtual bool AnyAssociations(); virtual void SetAssocsVector(std::vector & vfAssocs); int CountFlags(std::vector & vfFlags); // Compiler: virtual bool CanBeKeySlot() { // True unless this is an insertion slot. if (m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)) return false; else return true; } virtual void GenerateActionEngineCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbOutput, GdlRule * prule, int irit, bool * pfSetInsertToFalse); virtual bool IsInsertionSlot() { return m_psymInput->FitsSymbolType(ksymtSpecialUnderscore); } public: // debuggers: virtual void LhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void RhsPrettyPrint(GrcManager * pcman, GdlRule * prule, int irit, std::ostream & strmOut, bool fXml); virtual void DebugXmlLhs(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); virtual void DebugXmlRhs(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); protected: // Instance variables: Symbol m_psymOutput; // possibly '_' or '@' GdlSlotRefExpression* m_pexpSelector; // original, 1-based std::vector m_vpexpAssocs; // original, 1-based GdlRuleItem * m_pritSelInput; // slot indicated by selector // for pre-compiler use: std::vector m_vnAssocs; // m_vpexpAssocs converted to input indices int m_nSelector; // m_pexpSelector converted to input index, // or -1 if default (same item) // for compiler use: -- not yet implemented int m_nOutputFsmID; int m_nInputSubsID; int m_nOutputSubsID; }; // end of GdlSubstitutionItem /*---------------------------------------------------------------------------------------------- Class: GdlAlias Description: A mapping of a slot alias to a slot index. Can also be used as an item that can hold either a slot alias or an index. Hungarian: alias ----------------------------------------------------------------------------------------------*/ class GdlAlias { friend class GdlRule; public: // Constructors: GdlAlias() : m_srIndex(-1) { } GdlAlias(std::string sta, int sr) : m_staName(sta), m_srIndex(sr) { } GdlAlias(const GdlAlias & alias) : m_staName(alias.m_staName), m_srIndex(alias.m_srIndex) { } public: // Parser: int Index() { return m_srIndex; } std::string Name() { return m_staName; } void SetIndex(int sr) { m_srIndex = sr; } void SetName(std::string sta) { m_staName = sta; } // Post-parser: // Adjust all the slot references based on the slots that were omitted because // they were optional. Return false if there is a reference to an omitted slot. bool AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices) { // Should no longer be necessary because we replace all the aliases // before we do this. Assert(false); if (vfOmit[m_srIndex]) return false; m_srIndex = vnNewIndices[m_srIndex]; return true; } protected: std::string m_staName; int m_srIndex; // 1-based }; // end of GdlAlias /*---------------------------------------------------------------------------------------------- Class: GdlRule Description: Hungarian: rule ----------------------------------------------------------------------------------------------*/ class GdlRule : public GdlObject { friend class GdlRuleItem; public: // Constructors & destructors: GdlRule() { m_nScanAdvance = -1; m_nDefaultAdvance = -1; m_fBadRule = false; m_fAutoAssoc = false; } ~GdlRule() { size_t i; for (i = 0; i < m_vprit.size(); ++i) delete m_vprit[i]; for (i = 0; i < m_vpexpConstraints.size(); ++i) delete m_vpexpConstraints[i]; for (i = 0; i < m_vpalias.size(); ++i) delete m_vpalias[i]; } public: // General: GdlRuleItem * Item(int irit) { Assert((unsigned int)irit < (unsigned int)m_vprit.size()); return m_vprit[irit]; } int LookupAliasIndex(std::string sta); size_t NumberOfSlots() { return m_vprit.size(); } bool IsBadRule() { return m_fBadRule; } bool AutoAssocDone() { return m_fAutoAssoc; } void SetAutoAssocDone() { m_fAutoAssoc = true; } int SortKey(); public: // Parser: GdlRuleItem * ContextItemAt(GrpLineAndFile &, int irit, std::string staInput, std::string staAlias = ""); GdlRuleItem * RhsItemAt(GrpLineAndFile &, int irit, std::string staOutput, std::string staAlias = "", bool fSubItem = false); GdlRuleItem * LhsItemAt(GrpLineAndFile &, int irit, std::string staInput, std::string staAlias = ""); GdlRuleItem * ContextSelectorItemAt(GrpLineAndFile &, int irit, std::string staClassOrAt, int nSel, std::string staAlias = ""); GdlRuleItem * ContextSelectorItemAt(GrpLineAndFile &, int irit, std::string staClassOrAt, std::string staSel, std::string staAlias = ""); GdlRuleItem * RhsSelectorItemAt(GrpLineAndFile &, int irit, std::string staClassOrAt, int nSel,std::string staAlias = ""); GdlRuleItem * RhsSelectorItemAt(GrpLineAndFile &, int irit, std::string staClassOrAt, std::string staSel, std::string staAlias = ""); GdlRuleItem * LhsSelectorItemAt(GrpLineAndFile &, int irit, std::string staClassOrAt, int nSel, std::string staAlias = ""); GdlRuleItem * LhsSelectorItemAt(GrpLineAndFile &, int irit, std::string staClassOrAt, std::string staSel, std::string staAlias = ""); void AddOptionalRange(int iritStart, int crit, bool fContext); int ScanAdvance() { return m_nScanAdvance; } void SetScanAdvance(int n) { Assert((n >= -1) && (n <= static_cast(m_vprit.size()))); m_nScanAdvance = n; } void AddConstraint(GdlExpression * pexp) { m_vpexpConstraints.push_back(pexp); } void InitialChecks(); protected: void CheckInputClass(); void ConvertLhsOptRangesToContext(); public: // Post-parser: void ReplaceAliases(); bool HandleOptionalItems(std::vector & vpruleNewList); void CheckSelectors(); bool HasNoItems() { return m_vprit.size() == 0; } size_t ItemCount() { return m_vprit.size(); } GdlRuleItem * Rule(int irit) { return m_vprit[irit]; } protected: bool AdjustOptRanges(); void GenerateOptRanges( std::vector& vpruleNewList, std::vector & vfOmitRange, int irangeCurr); void GenerateOneRuleVersion( std::vector& vpruleNewList, std::vector & vfOmitRange); int PrevRangeSubsumes(int irangeCurr); public: // Pre-compiler: size_t CountRulePreContexts(); void FixRulePreContexts(Symbol psymAnyClass, int critNeeded); void FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont); void AssignClassInternalIDs(GrcManager * pcman, int nPassID, ReplacementClassSet & setpglfc); void FixFeatureTestsInRules(GrcFont *); void MarkReplacementClasses(GrcManager * pcman, int nPassID, ReplacementClassSet & setpglfcReplace); void MarkClassAsReplacementClass(GrcManager * pcman, ReplacementClassSet & setpglfcReplace, bool fInput); void CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, Symbol psymTable, int grfrco); bool CheckForJustificationConstraint(); void CalculateIOIndices(); void GiveOverlapWarnings(GrcFont * pfont, int grfsdc); bool CheckLBsInRules(Symbol psymTable, int * pcritPreLB, int * pcritPostLB); bool HasReprocessing(); void RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont); void MaxJustificationLevel(int * pnJLevel); bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded); void MovePassConstraintsToRule(std::vector & m_vpexpPassConstr); int ItemCountOriginal(); int FindAutoAssocItem(bool fDelete); void CalculateSpaceContextuals(SpaceContextuals * pspconSoFar, std::vector & vwSpaceGlyphs); size_t PrependedAnys() { return m_critPrependedAnys; } // Compiler: void PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP, int nPassID); void GenerateEngineCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbActions, std::vector & vbConstraints); void GenerateConstraintEngineCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbOutput); GdlRuleItem * InputItem(int n); size_t NumberOfInputItems(); size_t NumberOfPreModContextItems() { return m_critPreModContext; } // debuggers: void DebugEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::ostream & strmOut); static void DebugEngineCode(std::vector & vb, uint32_t fxdRuleVersion, std::ostream & strmOut); void RulePrettyPrint(GrcManager * pcman, std::ostream & strmOut, bool fXml); static std::string SlotAttributeDebugString(int slat); static std::string GlyphMetricDebugString(int gmet); static std::string EngineCodeDebugString(int op); static std::string ProcessStateDebugString(int pstat); void DebugXml(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur, int nPassNumber, int nRuleNum); protected: // Instance variables: int m_nScanAdvance; // 0-based; item before which the ^ is placed, or -1 if no ^ std::vector m_vprit; std::vector m_vpexpConstraints; // multiple constraints come from multiple -if-s std::vector m_vpalias; // for post-parser use: std::vector m_vfOptRangeContext; // are opt ranges below relative to context? std::vector m_viritOptRangeStart; std::vector m_viritOptRangeEnd; // for pre-compiler use: // input- and output indices for each item: std::vector m_viritInput; std::vector m_viritOutput; // number of items in the context before the first modified item (original, before adding // ANY items) size_t m_critPreModContext; // number of ANY items that were prepended to the front of the rule size_t m_critPrependedAnys; // original context length size_t m_critOriginal; // scan-advance, adjusted int m_nOutputAdvance; // where the scan advance would be if there were no caret (only calculated if the caret // is present) int m_nDefaultAdvance; // true if errors have been detected in this rule so don't keep processing bool m_fBadRule; // automatic associations have been done bool m_fAutoAssoc; }; // end of GdlRule #endif // !GDL_RULE_INCLUDED grcompiler-5.2.1/compiler/GdlTablePass.cpp000066400000000000000000000110361411153030700205010ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlTablePass.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implements the classes corresponding to the tables of rules and their passes. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods: Post-parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the pass with the given number; create it if it does not exist. Pass 0 is the special unnumbered pass, for tables with only one pass. ----------------------------------------------------------------------------------------------*/ GdlPass* GdlRuleTable::GetPass(GrpLineAndFile & lnf, int ipassNumber, int nMaxRuleLoop, int nMaxBackup) { if (ipassNumber < 0) { g_errorList.AddError(3150, NULL, "Invalid pass number", lnf); return NULL; } while (ipassNumber >= signed(m_vppass.size())) m_vppass.push_back(NULL); if (m_vppass[ipassNumber] == NULL) { m_vppass[ipassNumber] = new GdlPass(ipassNumber, nMaxRuleLoop, nMaxBackup); m_vppass[ipassNumber]->SetLineAndFile(lnf); } auto const staPassNum = std::to_string(ipassNumber); if (m_vppass[ipassNumber]->MaxRuleLoop() != nMaxRuleLoop && m_vppass[ipassNumber]->HasRules()) { auto const nMax = max(m_vppass[ipassNumber]->MaxRuleLoop(), nMaxRuleLoop); g_errorList.AddWarning(3527, NULL, "Conflicting MaxRuleLoop values for pass ", staPassNum, "; maxiumum value, ", std::to_string(nMax), ", will be used", lnf); m_vppass[ipassNumber]->SetMaxRuleLoop(nMax); } if (m_vppass[ipassNumber]->MaxBackup() != nMaxBackup && m_vppass[ipassNumber]->HasRules()) { auto const nMax = max(m_vppass[ipassNumber]->MaxBackup(), nMaxBackup); g_errorList.AddWarning(3528, NULL, "Conflicting MaxBackup values for pass ", staPassNum, "; maxiumum value, ", std::to_string(nMax), ", will be used", lnf); m_vppass[ipassNumber]->SetMaxBackup(nMax); } return m_vppass[ipassNumber]; } /*---------------------------------------------------------------------------------------------- Destructor. ----------------------------------------------------------------------------------------------*/ GdlPass::~GdlPass() { size_t i; for (i = 0; i < m_vprule.size(); ++i) delete m_vprule[i]; for (i = 0; i < m_vpexpConstraints.size(); ++i) delete m_vpexpConstraints[i]; if (m_pfsm) delete m_pfsm; ClearFsmWorkSpace(); } /*---------------------------------------------------------------------------------------------- Clear the data structures that are used to manage the stuff for FSM generation. ----------------------------------------------------------------------------------------------*/ void GdlPass::ClearFsmWorkSpace() { // Delete all the machine-class lists in the hash map. for (std::map::iterator hmit = m_hmMachineClassMap.begin(); hmit != m_hmMachineClassMap.end(); ++hmit) { delete hmit->second; // vector containing a group of machine classes with the same key; // notice that we store a pointer to the vector which is separately // allocated, not the vector itself, due to the limitations of the // previous HashMap implementation. } m_hmMachineClassMap.clear(); // Delete all the FsmMachineClasses and clear the master list. for (size_t i = 0; i < m_vpfsmc.size(); i++) delete m_vpfsmc[i]; m_vpfsmc.clear(); } grcompiler-5.2.1/compiler/GdlTablePass.h000066400000000000000000000266461411153030700201630ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GdlTablePass.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implements the classes corresponding to the tables of rules and their passes. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef TABLEPASS_INCLUDED #define TABLEPASS_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GdlPass Description: corresponds to a pass within the substitution, linebreak, or positioning table. Hungarian: pass ----------------------------------------------------------------------------------------------*/ class GdlPass : public GdlObject { public: // Constructors & destructors: GdlPass(int nNum, int nMaxRuleLoop, int nMaxBackup) : m_nNumber(nNum), m_nMaxRuleLoop(nMaxRuleLoop), m_nMaxBackup(nMaxBackup), m_nCollisionFix(0), m_nAutoKern(false), m_nCollisionThreshold(0), m_nDir(0), m_fFlipDir(0), m_nGlobalID(-1), m_nPreBidiPass(0), m_pfsm(NULL) { } ~GdlPass(); void ClearFsmWorkSpace(); // Getters: int Number() { return m_nNumber; } bool HasLineBreaks() { return m_fLB; } bool HasCrossLineContext() { return m_fCrossLB; } int MaxPreLBSlots() { return m_critPreLB; } int MaxPostLBSlots() { return m_critPostLB; } bool HasReprocessing() { return m_fReproc; } int MaxRuleContext() { return m_nMaxRuleContext; } int MaxRuleLoop() { return m_nMaxRuleLoop; } int MaxBackup() { return m_nMaxBackup; } int CollisionFix() { return m_nCollisionFix; } int AutoKern() { return m_nAutoKern; } int CollisionThreshold() { return m_nCollisionThreshold; } int Direction() { return m_nDir; } // Setters: void AddRule(GdlRule* prule) { m_vprule.push_back(prule); } void SetMaxRuleLoop(int n) { m_nMaxRuleLoop = n; } void SetMaxBackup(int n) { m_nMaxBackup = n; } void SetCollisionFix(int n) { m_nCollisionFix = n; } void SetAutoKern(int n) { m_nAutoKern = n; } void SetCollisionThreshold(int n) { m_nCollisionThreshold = n; } void SetDirection(int n) { m_nDir = n; } void SetFlipDirection(bool f) { m_fFlipDir = f; } public: // Parser: GdlRule * NewRule(GrpLineAndFile & lnf) { GdlRule * pruleNew = new GdlRule(); pruleNew->SetLineAndFile(lnf); m_vprule.push_back(pruleNew); return pruleNew; } void AddConstraint(GdlExpression * pexp) { m_vpexpConstraints.push_back(pexp); } // Post-parser: void ReplaceAliases(); void HandleOptionalItems(); void CheckSelectors(); // Pre-compiler: void FixRulePreContexts(Symbol psymAnyClass); void FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont); void FixFeatureTestsInPass(GrcFont * pfont); void MarkReplacementClasses(GrcManager * pcman, ReplacementClassSet & setpglfc); void CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr, Symbol psymTable, int grfrco); void CheckLBsInRules(Symbol psymTable); void RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont); void MaxJustificationLevel(int * pnJLevel); bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints); void MovePassConstraintsToRules(int fxdSilfVersion); void CalculateSpaceContextuals(SpaceContextuals * pspconSoFar, std::vector & vwSpaceGlyphs); void AssignGlobalID(int nID) { m_nGlobalID = nID; } bool HasRules() { return (m_vprule.size() > 0); } bool ValidPass() { return (this->HasRules() || this->CollisionFix() > 0); } void SetPreBidiPass(int n) { Assert(n == 0 || n == 1); m_nPreBidiPass = n; } // Compiler: int GlobalID() { return m_nGlobalID; } int PassDebuggerNumber() { return m_nGlobalID + m_nPreBidiPass + 1; } void PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP); void GenerateEngineCode(GrcManager *, uint32_t fxdRuleVersion, std::vector & vbConstraints); void GenerateFsm(GrcManager * pcman); void GenerateFsmMachineClasses(GrcManager * pcman); void GenerateFsmTable(GrcManager * pcman); int AssignGlyphIDToMachineClasses(gid16 wGlyphID, int nPassID); int MachineClassKey(gid16 wGlyphID, int nPassID); void RecordInclusionInClass(gid16 wGlyphID, GdlGlyphClassDefn * pglfc); FsmMachineClass * MachineClassMatching(std::vector & vpfsmc, gid16 wGlyphID); void InitializeFsmArrays(); void MergeIdenticalStates(int ifsFixMin, int ifsCheckMin, int ifsCheckLim); size_t NumberOfFsmMachineClasses(); void GetMachineClassesForRuleItem(GdlRule * prule, int irit, FsmMachineClassSet & setpfsmc); int FindIdenticalState(int ifsToMatch, int ifsMin); void ReorderFsmStates(GrcManager * pcman); size_t NumStates(); size_t NumAcceptingStates(); size_t NumTransitionalStates(); size_t NumSuccessStates(); size_t NumFinalStates(); void GenerateStartStates(GrcManager * pcman); // Output: size_t TotalNumGlyphSubRanges(); void OutputPass(GrcManager * pcman, GrcBinaryStream * pbstrm, offset_t lTableStart); void GenerateRuleMaps(std::vector & vnOffsets, std::vector & vnRuleList); void OutputFsmTable(GrcBinaryStream * pbstrm); // debuggers: void DebugEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::ostream & strmOut); void DebugRulePrecedence(GrcManager * pcman, std::ostream & strmOut); void DebugFsm(GrcManager * pcman, std::ostream & strmOut); void DebugFsmTable(GrcManager * pcman, std::ostream & strmOut, bool fWorking); void WalkFsmMachineClasses(); void DebugXmlRules(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur, Symbol psymTableName); protected: // Instance variables: int m_nNumber; int m_nMaxRuleLoop; int m_nMaxBackup; std::vector m_vprule; std::vector m_vpexpConstraints; // multiple constraints result from -else if- int m_nCollisionFix; bool m_nAutoKern; int m_nCollisionThreshold; int m_nDir; bool m_fFlipDir; size_t m_critMinPreContext; size_t m_critMaxPreContext; // for compiler use: // int m_nNumber2; // with respect to all the passes in all tables int m_nGlobalID; // global pass number, not including passes with no rules or bidi pass; // -1 if invalid--no rules int m_nPreBidiPass; // 1 if there is a previous bidi pass, 0 otherwise int m_nMaxRuleContext; // number of slots of input needed bool m_fLB; // true if there is a rule containing line-break items bool m_fCrossLB; // true if there are are cross-line-boundary contextualization rules int m_critPreLB; // max number of slots before a LB slot int m_critPostLB; // max number of slots after a LB slot bool m_fReproc; // true if this pass has reprocessing happening in any of its rules // Finite State Machine construction: FsmTable * m_pfsm; // Mapping from glyph ID to column in the FSM std::map m_hmGlyphToColumn; // Master list of machine classes: std::vector m_vpfsmc; // For each glyph ID, its source-class-set (the set of source-classes it belongs to): SourceClassSet m_rgscsInclusions[kMaxTotalGlyphs]; // For each glyph ID, the machine class it is assigned to: FsmMachineClass * m_rgpfsmcAssignments[kMaxTotalGlyphs]; // Map enabling us to find the machine class for a given glyph ID's source-class-set. // Each unique combination of source-classes corresponds to a machine class. // The key into the map is the sum of the source-class IDs (for all the // source classes a given glyph is a member of); the value is a list of MachineClasses // whose source-class-IDs add up to that key. For instance, for the key 8 you might // have a value which is a vector of three MachineClasses: the first containing // SourceClasses 2 & 6, the second containing SourceClasses 1, 3, & 4, and the // third containing SourceClass 8. std::map m_hmMachineClassMap; std::vector m_vifsWorkToFinal; // final indices of states, causing them to be ordered // as expected by the font/engine data structures: // transitional, non-success // transitional, success // non-transitional, success std::vector m_vifsFinalToWork; // inverse mapping from above vector, mapping the final // state indices back to the working indices std::vector m_vrowStartStates; public: // For test procedures: size_t test_NumberOfRules() { return m_vprule.size(); } }; /*---------------------------------------------------------------------------------------------- Class: GdlRuleTable Description: corresponds to the substitution, linebreak, or positioning table. Hungarian: rultbl ----------------------------------------------------------------------------------------------*/ class GdlRuleTable : public GdlObject { public: // Constructors & destructors: GdlRuleTable(Symbol psym) : m_psymName(psym), m_fSubstitution(false) { } ~GdlRuleTable() { for (size_t i = 0; i < m_vppass.size(); ++i) delete m_vppass[i]; } // Getters: Symbol NameSymbol() { return m_psymName; } bool Substitution() { return m_fSubstitution; } // Setters: void SetSubstitution(bool f) { m_fSubstitution = f; } size_t NumberOfPasses() { return m_vppass.size(); } public: // Post-parser: GdlPass * GetPass(GrpLineAndFile &, int nNumber, int nMaxRuleLoop, int nMaxBackup); void ReplaceAliases(); void HandleOptionalItems(); void CheckSelectors(); // Pre-compiler: void FixRulePreContexts(Symbol psymAnyClass); void FixGlyphAttrsInRules(GrcManager * pcman, GrcFont * pfont); void CheckTablesAndPasses(GrcManager * pcman, int *pnPassNum, int *pipassBidi); void MarkReplacementClasses(GrcManager * pcman, ReplacementClassSet & setpglfc); void CheckRulesForErrors(GrcGlyphAttrMatrix * pgax, GrcFont * pfont, GdlRenderer * prndr); void CheckLBsInRules(); void RewriteSlotAttrAssignments(GrcManager * pcman, GrcFont * pfont); void MaxJustificationLevel(int * pnJLevel); bool HasCollisionPass(); bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints); void MovePassConstraintsToRules(int fxdSilfVersion); void CalculateSpaceContextuals(SpaceContextuals * pspconSoFar, std::vector & vwSpaceGlyphs); // Compiler: void PassOptimizations(GrcGlyphAttrMatrix * pgax, GrcSymbolTable * psymtbl, unsigned int nAttrIdSkipP); void GenerateFsms(GrcManager * pcman); void CalculateContextOffsets(int * pcPrevious, int * pcFollowing, bool * pfLineBreak, bool fPos, GdlRuleTable * prultbl1, GdlRuleTable * prultbl2); enum { kInfiniteXlbContext = 255 }; // Output size_t CountPasses(); void OutputPasses(GrcManager * pcman, GrcBinaryStream * pbstrm, offset_t lTableStart, std::vector & vnOffsets); // debuggers: void DebugEngineCode(GrcManager * pcman, uint32_t fxdRuleVersion, std::ostream & strmOut); void DebugRulePrecedence(GrcManager * pcman, std::ostream & strmOut, int ipassBidi); void DebugFsm(GrcManager * pcman, std::ostream & strmOut); void DebugXmlRules(GrcManager * pcman, std::ofstream & strmOut, std::string staPathToCur); protected: // Instance variables: Symbol m_psymName; bool m_fSubstitution; // are substitutions (& associations) allowed in // this table? std::vector m_vppass; }; #endif // TABLEPASS_INCLUDED grcompiler-5.2.1/compiler/Generic/000077500000000000000000000000001411153030700170435ustar00rootroot00000000000000grcompiler-5.2.1/compiler/Generic/CMakeLists.txt000066400000000000000000000003731411153030700216060ustar00rootroot00000000000000project(generic) if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") find_package(Iconv) endif() add_library(generic STATIC Platform.cpp) add_definitions(-DGR_NAMESPACE) if (Iconv_FOUND) target_link_libraries(generic ${Iconv_LIBRARY}) endif() grcompiler-5.2.1/compiler/Generic/GrCommon.h000066400000000000000000000062501411153030700207400ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001, 2003 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrCommon.h Responsibility: Sharon Correll Last reviewed: Common generic header file. This header file checks for the following compile time switches: USING_MFC ----------------------------------------------------------------------------------------------*/ #ifndef GRCOMMON_INCLUDED #define GRCOMMON_INCLUDED // Standard Headers. #include #include #include #include //#include #include #include #include #include #include #include // Uncomment this to allow multiple versions of gr to coexist // in the same program e.g. pangographite with gtk uses namespace gr // mozilla graphite defines this to gr2moz incase the 2 libraries are // incompatible. // Provided the client includes GrClient.h first this #define is // picked up by all files. //#define gr gr2 // Project headers #include "GrPlatform.h" #ifndef GrAssert #include #define GrAssert(exp) assert(exp) #endif using std::max; using std::min; namespace gr { /*********************************************************************************************** Simple types. ***********************************************************************************************/ typedef char schar; // TODO ShonK: Make generic use these where appropriate. #ifdef UNICODE typedef utf16 achar; #else // !UNICODE typedef schar achar; #endif // UNICODE typedef achar *Psz; //typedef const achar * Pcsz; #define SizeOfArray(rgt) (sizeof(rgt) / sizeof *rgt) /*********************************************************************************************** Tests for valid strings and pointers. ***********************************************************************************************/ inline bool ValidPsz(const data16 *pszw) { // TODO ShonK: Determine if IsBadStringPtrW is implemented on Win9x. return pszw != 0 && !GrIsBadStringPtrW(pszw, 0x10000000); } inline bool ValidPsz(const schar *pszs) { return pszs != 0 && !GrIsBadStringPtrA(pszs, 0x10000000); } template inline bool ValidReadPtr(T *pt) { return pt != 0 && !GrIsBadReadPtr(pt, sizeof(T)); } template inline bool ValidWritePtr(T *pt) { return pt != 0 && !GrIsBadWritePtr(pt, sizeof(T)); } inline bool ValidReadPtrSize(const void *pv, size_t cb) { if (cb == 0) return true; return pv != 0 && !GrIsBadReadPtr(pv, cb); } inline bool ValidWritePtrSize(void *pv, size_t cb) { // if (!bstr || ::IsBadReadPtr((byte *)bstr - sizeof(int), sizeof(int) + sizeof(OLECHAR))) // return false; // int cb = ((int *)bstr)[-1]; // if (::IsBadReadPtr((byte *)bstr - sizeof(int), sizeof(int) + sizeof(OLECHAR) + cb)) // return false; if (cb < 0) return false; if (cb == 0) return true; return pv != 0 && !GrIsBadWritePtr(pv, cb); } } // namespace gr #if defined(GR_NO_NAMESPACE) using namespace gr; #endif #endif // !GRCOMMON_INCLUDED grcompiler-5.2.1/compiler/Generic/GrConstants.h000077500000000000000000000143511411153030700214700ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: constants.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Various global constants. ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRCONSTANTS_INCLUDED #define GRCONSTANTS_INCLUDED //:End Ignore #define GRAPHITE_VERSION_MAJOR 2 #define GRAPHITE_VERSION_MINOR 4 #define GRAPHITE_VERSION_BUGFIX 0 namespace gr { void EngineVersion(int * nMajor, int * nMinor, int * nBugFix); // Maximum table versions handled by this engine: enum { kSilfVersion = 0x00050000, kRuleVersion = 0x00030001, kGlatVersion = 0x00020000, kGlocVersion = 0x00010000, kFeatVersion = 0x00020000, kSileVersion = 0x00010000, kSillVersion = 0x00010000 }; enum { kMaxFeatures = 64, kMaxComponentsPerGlyph = 32, kFieldsPerComponent = 4, kMaxSlotsPerRule = 64, kMaxSubTablesInFont = 256, kMaxUserDefinableSlotAttrs = 64, kMaxJLevels = 4 }; // Maxima permitted by the binary format of the TrueType tables. enum { kMaxSubTables = 256, kMaxRenderingBehavior = 65536, // ie, the maximum value allowed for an ID kMaxGlyphAttrs = 65536, // Gloc table kMinGlyphAttrValue =-32768, kMaxGlyphAttrValue = 32768, kMaxPasses = 128, // Sil_sub table allows 256 kMaxPseudos = 65536, kMaxRendBehaviors = 256, kMaxReplcmtClasses = 65536, // Class map kMaxReplcmtClassesV1_2 = 256, kMaxComponents = 16383 }; enum { kPosInfinity = 0x3FFFFFF, kNegInfinity = kPosInfinity * -1, kInvalid = kNegInfinity }; #define kPosInfFloat (float)kPosInfinity #define kNegInfFloat (float)kNegInfinity enum { kGpointZero = -2 }; // for stream processing enum { kBacktrack = -2, kNextPass = -1 }; // internal justification modes enum { kjmodiNormal = 0, kjmodiMeasure, kjmodiJustify, kjmodiCanShrink // like normal, but shrinking is possible }; enum DirCode { // Hungarian: dirc kdircUnknown = -1, kdircNeutral = 0, // other neutrals (default) - ON kdircL = 1, // left-to-right, strong - L kdircR = 2, // right-to-left, strong - R kdircRArab = 3, // Arabic letter, right-to-left, strong, AR kdircEuroNum = 4, // European number, left-to-right, weak - EN kdircEuroSep = 5, // European separator, left-to-right, weak - ES kdircEuroTerm = 6, // European number terminator, left-to-right, weak - ET kdircArabNum = 7, // Arabic number, left-to-right, weak - AN kdircComSep = 8, // Common number separator, left-to-right, weak - CS kdircWhiteSpace = 9, // white space, neutral - WS kdircBndNeutral = 10, // boundary neutral - BN kdircLRO = 11, // LTR override kdircRLO = 12, // RTL override kdircLRE = 13, // LTR embedding kdircRLE = 14, // RTL embedding kdircPDF = 15, // pop directional format // I think we need this too: kdircNSM = 16, // non-space mark // Special values for internal use: kdircLlb = 32, // left-to-right line-break kdircRlb = 33, // right-to-left line-break kdircPdfL = 34, // PDF marker matching an LRO or LRE kdircPdfR = 35 // PDF marker matching an RLO or RLE }; bool StrongDir(DirCode dirc); bool WeakDir(DirCode dirc); bool NeutralDir(DirCode dirc); bool RightToLeftDir(DirCode dirc); // Unicode characters with special treatments enum DefinedChars { knSpace = 0x0020, // space knHyphen = 0x002D, // hyphen knTab = 0x0009, // tab (horizontal) knLF = 0x000A, // line feed knCR = 0x000D, // carriage return knLineSep = 0x2028, // line separator (soft return) knParaSep = 0x2029, // paragraph separator knLRM = 0x200E, // left-to-right mark knRLM = 0x200F, // right-to-left mark knLRE = 0x202A, // left-to-right embedding knRLE = 0x202B, // right-to-left embedding knPDF = 0x202C, // pop directional format knLRO = 0x202D, // left-to-right override knRLO = 0x202E, // right-to-left override knORC = 0xFFFC // Object Replacement Character }; bool BidiCode(int nUnicode); typedef enum SpecialSlots { kspslNone = 0, kspslLbInitial = 1, kspslLbFinal = 2, kspslLRM = 3, kspslRLM = 4, kspslLRO = 5, kspslRLO = 6, kspslLRE = 7, kspslRLE = 8, kspslPDF = 9 } SpecialSlots; // version 1.0 breakweights enum BreakWeightsV1 { klbv1WordBreak = 1, klbv1HyphenBreak = 2, klbv1LetterBreak = 3, klbv1ClipBreak = 4 }; typedef enum SlotAttrName { kslatAdvX = 0, kslatAdvY, kslatAttTo, kslatAttAtX, kslatAttAtY, kslatAttAtGpt, kslatAttAtXoff, kslatAttAtYoff, kslatAttWithX, kslatAttWithY, kslatAttWithGpt, kslatAttWithXoff, kslatAttWithYoff, kslatAttLevel, kslatBreak, kslatCompRef, kslatDir, kslatInsert, kslatPosX, kslatPosY, kslatShiftX, kslatShiftY, kslatUserDefnV1, // version 1.0 of the font tables kslatMeasureSol, kslatMeasureEol, kslatJStretch, kslatJShrink, kslatJStep, kslatJWeight, kslatJWidth, // this must be last: kslatUserDefn = kslatJStretch + 30, // I think 30 is somewhat arbitrary. We at least need to save 15 slots for more levels of // justification attributes. kslatMax, kslatNoEffect = kslatMax + 1 // for internal use } SlotAttrName; typedef enum GlyphMetric { kgmetLsb = 0, kgmetRsb, kgmetBbTop, kgmetBbBottom, kgmetBbLeft, kgmetBbRight, kgmetBbHeight, kgmetBbWidth, kgmetAdvWidth, kgmetAdvHeight, kgmetAscent, kgmetDescent } GlyphMetric; enum ProcessStates { kpstatJustifyMode = 1, kpstatJustifyLevel = 2 }; // user justification modes: these must match the values in stddef.gdh enum JustifyModes { kjmoduNormal = 0, kjmoduMeasure = 1, kjmoduJustify = 2 }; enum TruetypeTableId { kttiCmap = 0x636D6170, kttiFeat = 0x46656174, kttiGlat = 0x476C6174, kttiGloc = 0x476C6F63, kttiGlyf = 0x676C7966, kttiHead = 0x68656164, kttiHhea = 0x68686561, kttiHmtx = 0x686D7478, kttiLoca = 0x6C6F6361, kttiMaxp = 0x6D617870, kttiName = 0x6E616D65, kttiOs2 = 0x4F532F32, kttiPost = 0x706F7374, kttiSile = 0x53696C65, kttiSilf = 0x53696C66, kttiSill = 0x53696C6C }; } // namespace gr #endif // CONSTANTS_INCLUDED grcompiler-5.2.1/compiler/Generic/GrDebug.h000066400000000000000000000151311411153030700205340ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: debug.h Responsibility: Last reviewed: Description: Assert and debug definitions. ----------------------------------------------------------------------------------------------*/ #ifndef __DEBUG_H__ #define __DEBUG_H__ #include namespace gr { #ifdef _DEBUG #undef DEBUG #define DEBUG 1 #undef NDEBUG #define DEFINE_THIS_FILE static char THIS_FILE[] = __FILE__; #undef THIS_FILE #define THIS_FILE __FILE__ #else //!_DEBUG #undef DEBUG #define DEFINE_THIS_FILE //#define Debug(foo) #endif //!_DEBUG #if 0 //#ifdef DEBUG //#include typedef void (WINAPI * Pfn_Assert)(const char * pszExp, const char * pszFile, int nLine, HMODULE hmod); typedef Pfn_Assert Pfn_Warn; /*__declspec(dllimport)*/ void WINAPI WarnProc(const char * pszExp, const char * pszFile, int nLine, bool fCritical, HMODULE hmod); /*__declspec(dllimport)*/ void WINAPI AssertProc(const char * pszExp, const char * pszFile, int nLine, bool fCritical, HMODULE hmod); __declspec(dllimport) Pfn_Assert WINAPI SetAssertProc(Pfn_Assert pfnAssert); __declspec(dllimport) Pfn_Warn WINAPI SetWarnProc(Pfn_Warn pfnWarn); __declspec(dllimport) int WINAPI HideWarnings(bool f); __declspec(dllimport) int WINAPI HideAsserts(bool f); __declspec(dllimport) int WINAPI HideErrors(bool f); void WINAPI WarnHrProc(HRESULT hr, const char * pszFile, int nLine, bool fCritical); void WINAPI WarnProcLocal(const char * pszExp, const char * pszFile, int nLine, bool fCritical); void WINAPI AssertProcLocal(const char * pszExp, const char * pszFile, int nLine, bool fCritical); #define Assert(exp) ((exp) || (AssertProcLocal(#exp, THIS_FILE, __LINE__, false), 0)) #define AssertC(exp) ((exp) || (AssertProcLocal(#exp, THIS_FILE, __LINE__, true), 0)) #define AssertMsg(exp, msg) ((exp) || (AssertProcLocal(msg, THIS_FILE, __LINE__, false), 0)) #define AssertMsgC(exp, msg) ((exp) || (AssertProcLocal(msg, THIS_FILE, __LINE__, true), 0)) #undef Warn #define Warn(psz) (void)(WarnProcLocal(psz, THIS_FILE, __LINE__, false)) #define WarnC(psz) (void)(WarnProcLocal(psz, THIS_FILE, __LINE__, true)) #undef WarnIf #define WarnIf(exp) (void)(!(exp) || (WarnProcLocal("(" #exp ") is true", THIS_FILE, \ __LINE__, false), 0)) #define WarnIfC(exp) (void)(!(exp) || (WarnProcLocal("(" #exp ") is true", THIS_FILE, \ __LINE__, true), 0)) #undef WarnUnless #define WarnUnless(exp) (void)((exp) || (WarnProcLocal("(" #exp ") is false", \ THIS_FILE, __LINE__, false), 0)) #define WarnUnlessC(exp) (void)((exp) || (WarnProcLocal("(" #exp ") is false", \ THIS_FILE, __LINE__, true), 0)) #undef WarnHr #define WarnHr(hr) ((SUCCEEDED(hr) || (WarnHrProc(hr, THIS_FILE, __LINE__, false), 0)), \ (hr)) #define WarnHrC(hr) ((SUCCEEDED(hr) || (WarnHrProc(hr, THIS_FILE, __LINE__, true), 0)), \ (hr)) class IgnoreWarnings { public: IgnoreWarnings() { HideWarnings(true); } ~IgnoreWarnings() { HideWarnings(false); } }; class IgnoreAsserts { public: IgnoreAsserts() { HideAsserts(true); } ~IgnoreAsserts() { HideAsserts(false); } }; class IgnoreErrors { private: IgnoreWarnings iw; IgnoreAsserts ia; }; #define Debug(exp) exp #define DoAssert(exp) Assert(exp) #define DoAssertC(exp) AssertC(exp) #define DoAssertHr(hr) Assert(SUCCEEDED(hr)) #define DoAssertHrC(hr) AssertC(SUCCEEDED(hr)) #else #define Assert(exp) assert(exp) #define AssertC(exp) #define AssertMsg(exp, msg) #define AssertMsgC(exp, msg) #define Warn(psz) #define WarnC(psz) #define WarnIf(exp) #define WarnIfC(exp) #define WarnUnless(exp) #define WarnUnlessC(exp) #define WarnHr(hr) (hr) #define WarnHrC(hr) (hr) #define Debug(exp) #define DoAssert(exp) (exp) #define DoAssertC(exp) (exp) #define DoAssertHr(hr) (hr) #define DoAssertHrC(hr) (hr) #endif //DEBUG #define AssertPtr(pv) Assert(ValidReadPtr(pv)) #define AssertPtrN(pv) Assert(!(pv) || ValidReadPtr(pv)) #define AssertArray(pv, cv) Assert((cv) >= 0 && ValidReadPtrSize((pv), sizeof(*(pv)) * (cv))) #define AssertArrayN(pv, cv) Assert((cv) >= 0 && (!(pv) || ValidReadPtrSize((pv), sizeof(*(pv)) * (cv)))) #define AssertPtrSize(pv, cb) Assert((cb) >= 0 && ValidReadPtrSize((pv), cb)) #define AssertPfn(pfn) Assert(!IsBadCodePtr((FARPROC)(pfn))) #define AssertPfnN(pfn) Assert(!(pfn) || !IsBadCodePtr((FARPROC)(pfn))) #define AssertPsz(psz) Assert(ValidPsz(psz)) #define AssertPszN(psz) Assert(!(psz) || ValidPsz(psz)) #define AssertBstr(bstr) Assert(ValidBstr(bstr)) #define AssertBstrN(bstr) Assert(!(bstr) || ValidBstr(bstr)) #define AssertObj(pv) Assert(ValidReadPtr(pv) && (pv)->AssertValid()) #define AssertObjN(pv) Assert(!(pv) || ValidReadPtr(pv) && (pv)->AssertValid()) /*---------------------------------------------------------------------------------------------- This class implements custom output to the debugger. The results of Watch() can be viewed on a line in the Watch window. Output() writes to the Debugger Output window. Calls to Output() should be included in the Watch() function as needed. Watch() is executed every time the debugger displays this class in the Watch window. To use it: 1) Put the following line in: \program files\Microsoft Visual Studio\Common\MSDev98\bin\AutoExp.dat in the [AutoExpand] section: DebugWatch= 2) In the class from which you want custom debug output, add the equivalent of: #ifdef DEBUG class Dbw1 : public DebugWatch { virtual OLECHAR * Watch(); ... }; Dbw1 m_dbw1; #endif //DEBUG 3) Implement the Watch() function to display the data you want to see, bracketed by #ifdef DEBUG / #endif. Note that Output() is LIMITED to 10 pointer-sized arguments. If you must have more, then call _CrtDbgReport() directly. Note also that _CrtDbgReport() is not implemented for wide characters, so neither is Output(). ----------------------------------------------------------------------------------------------*/ #if 0 //#ifdef DEBUG class DebugWatch { public: int m_nSerial; // increment and display this for positive affirmation of refresh DebugWatch() { m_nSerial = 0; } OLECHAR * WatchNV(); // debugger won't find it if it is virtual or inline. virtual OLECHAR * Watch() { return L"No DebugWatch string implemented"; } void Output (char *fmt, ...); // LIMITED to 10 pointer-sized arguments }; #endif //DEBUG } // namespace gr #if !defined(GR_NAMESPACE) using namespace gr; #endif #endif grcompiler-5.2.1/compiler/Generic/GrMstypes.h000066400000000000000000000042111411153030700211470ustar00rootroot00000000000000#ifndef _MSTYPES_H #define _MSTYPES_H /******** This header contains the MS Win32 specific types that are still used throughout the Graphite code. It is intended to allow Graphite to build on non-Win32 platforms. **Do NOT include this when building against WIN32** TSE - 15/07/2003 ********/ #if defined(_WIN32) #error Do not include this header when building against Win32 APIs #else #include using std::min; using std::max; //#define __int64 long long #define SUCCEEDED(Status) ((HRESULT)(Status) >= 0) #define FAILED(Status) ((HRESULT)(Status)<0) #define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR) #define __RPC_FAR #define ETO_GLYPH_INDEX 0x0010 // from WinGDI.h #if 0 // def __GNUC__ #define PACKED __attribute__((packed)) #ifndef _stdcall #define _stdcall __attribute__((stdcall)) #endif #ifndef __stdcall #define __stdcall __attribute__((stdcall)) #endif #ifndef _cdecl #define _cdecl __attribute__((cdecl)) #endif #ifndef __cdecl #define __cdecl __attribute__((cdecl)) #endif #ifndef __declspec #define __declspec(e) __attribute__((e)) #endif #ifndef _declspec #define _declspec(e) __attribute__((e)) #endif #else #define PACKED #define _cdecl #define __cdecl #endif #define WINAPI __stdcall #if defined(GR_NAMESPACE) namespace gr { #endif typedef wchar_t OLECHAR; typedef const OLECHAR *LPCOLESTR; typedef OLECHAR *BSTR; typedef unsigned short WORD; typedef unsigned int UINT; typedef unsigned int DWORD; typedef signed long HRESULT; typedef DWORD COLORREF; typedef unsigned short* LPWSTR; inline long InterlockedIncrement(long *const intr_lck) { return ++*intr_lck; } inline long InterlockedDecrement(long *const intr_lck) { return --*intr_lck; } inline int MulDiv(const int v, const int n, const int d) { return int(n < 0 ? double(v * n)/double(d) - 0.5 : double(v * n)/double(d) + 0.5); } #if defined(GR_NAMESPACE) } #endif #define S_OK 0 #define E_FAIL 0x80004005L #define E_POINTER 0x80004003L #define E_OUTOFMEMORY 0x8007000EL #define E_UNEXPECTED 0x80000003L #define E_INVALIDARG 0x80000002L #define E_NOTIMPL 0x80000004L #endif // defined(_WIN32) #endif // include guard grcompiler-5.2.1/compiler/Generic/GrPlatform.h000066400000000000000000000135051411153030700212750ustar00rootroot00000000000000#ifndef _GR_PLATFORM_H #define _GR_PLATFORM_H /*********************************************************************************************** Turn off the goofy warnings for MS VisualStudio. ***********************************************************************************************/ #ifdef _MSC_VER #pragma warning(disable: 4065) // Switch statement contains default but no case. #pragma warning(disable: 4097) // typedef-name 'xxx' used as synonym for class-name 'yyy'. #pragma warning(disable: 4100) // unreferenced formal parameter. #pragma warning(disable: 4192) // automatically excluding while importing. #pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union. #pragma warning(disable: 4290) // exception specification ignored. #pragma warning(disable: 4310) // cast truncates constant value. #pragma warning(disable: 4355) // 'this' used in base member initializer list. #pragma warning(disable: 4505) // unreferenced local function has been removed. #pragma warning(disable: 4510) // default constructor could not be generated - caused by // applying ComSmartPtr to a non-interface class. #pragma warning(disable: 4511) // copy constructor could not be generated. #pragma warning(disable: 4512) // assignment operator could not be generated. #pragma warning(disable: 4610) // class 'xxx' can never be instantiated - user defined // constructor required - caused by applying ComSmartPtr to a non-interface class. #pragma warning(disable: 4660) // template-class specialization is already instantiated. #pragma warning(disable: 4701) // local variable 'xxx' may be used without being initialized. // We would like to keep this warning (4701) enabled but the compiler applies it in // places that are obviously OK. #pragma warning(disable: 4702) // unreachable code. We would like to keep this warning (4702) // enabled but the compiler applies it in places that are obviously OK. #pragma warning(disable: 4710) // not inlined. #pragma warning(disable: 4786) // identifier truncated in debug info. #pragma warning(disable: 4800) // forcing value to bool 'true' or 'false' (performance warning). #endif // Standard headers #include // Platform headers // #if defined(_WIN32) #include #include #ifdef SIZEOF_WCHAR_T #define SIZEOF_WCHAR_T 2 #endif #endif // Project headers #ifndef _WIN32 #include "GrMstypes.h" #else #include #endif #include #if defined(_WIN32) // TSE: We need to define std::max and std::min, because VC6.0 seems to omit // these from their version of and rely on the macro versions // to silently take their place. This breaks the use of the name max in any // other scope e.g. as in std::numeric_limits<..>::max(). #undef min #undef max // SJC: Only do this for version 6, otherwise the definitions conflict with the // built-in STL definitions, and the compiler really struggles. #if _MSC_VER == 1200 // VC version 6 namespace std { template inline T max(const T a, const T b) { return a < b ? b : a; } template inline T min(const T a, const T b) { return a > b ? b : a; } } #endif // _MSC_VER == 1200 //////using std::max; // SJC moved to GrCommon.h //////using std::min; #else // _WIN32 #if !HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME // These are GNU extensions to libc and not available on Mac or BSD extern char* program_invocation_name; extern char* program_invocation_short_name; #endif #endif // _WIN32 namespace gr { // Typedefs // These are correct for the x86_64 architecture too, on both Windows and Unix typedef unsigned char byte; typedef unsigned int utf32; // UTF32 encoded Unicode codepoints typedef unsigned short int utf16; // UTF16 encoded Unicode codepoints typedef unsigned char utf8; // UTF-8 encoded Unicode codepoints typedef unsigned short int gid16; // glyph ID typedef unsigned int fontTableId32; // ID to pass to getTable() typedef unsigned char data8; typedef unsigned short int data16; // generic 16-bit data typedef unsigned int data32; // generic 32-bit data typedef signed char sdata8; typedef signed short int sdata16; // generic 16-bit data typedef signed int sdata32; // generic 32-bit data using offset_t = std::streamoff; #ifndef NO_ASM #define NO_ASM #endif #ifndef NULL #define NULL 0 #endif typedef std::ios_base::openmode openmode_t; inline bool GrIsBadStringPtrW(const utf16 *const pszw, const long) { return !pszw; } inline bool GrIsBadStringPtrA(const char *const psza, const long) { return !psza; } inline bool GrIsBadReadPtr(const void *const, const size_t) { return false; } inline bool GrIsBadWritePtr(const void *const, const size_t) { return false; } size_t Platform_UnicodeToANSI(const utf16 * prgchwSrc, size_t cchwSrc, char * prgchsDst, size_t cchsDst); size_t Platform_AnsiToUnicode(const char * prgchsSrc, size_t cchsSrc, utf16 * prgchwDst, size_t cchwDst); size_t Platform_8bitToUnicode(int nCodePage, const char * prgchsSrc, size_t cchsSrc, utf16 * prgchwDst, size_t cchwDst); utf16 *utf16cpy(utf16 *dest, const utf16 *src); utf16 *utf16ncpy(utf16 *dest, const utf16 *src, size_t n); #ifdef UTF16DEBUG void utf16Output(const utf16 *input); #endif size_t utf16len(const utf16 *s); size_t utf16len(const utf16 *s, size_t n); size_t utf8len(const char *s); int utf16cmp(const utf16 *s1, const utf16 *s2); int utf16ncmp(const utf16 *s1, const utf16 *s2, size_t n); int utf16cmp(const utf16 *s1, const char *s2); int utf16ncmp(const utf16 *s1, const char *s2, size_t n); unsigned short MultiByteToWideChar(unsigned long code_page, unsigned long, const char * source, size_t src_count, unsigned short * dest, size_t dst_count); } // namespace gr #if !defined(GR_NAMESPACE) using namespace gr; #endif #endif grcompiler-5.2.1/compiler/Generic/Makefile.am000066400000000000000000000005341411153030700211010ustar00rootroot00000000000000AM_CPPFLAGS = -DGR_NAMESPACE noinst_LIBRARIES = libgeneric.a noinst_HEADERS = \ GrCommon.h \ GrConstants.h \ GrMstypes.h \ GrDebug.h \ GrPlatform.h \ Throwable.h \ UtilString.h # libgeneric_a_SOURCES = HashMap.cpp Util.cpp UtilInt.h UtilString.cpp Platform.cpp libgeneric_a_SOURCES = UtilInt.h Platform.cpp EXTRA_DIST = UtilString_i.cpp grcompiler-5.2.1/compiler/Generic/Platform.cpp000066400000000000000000000176161411153030700213460ustar00rootroot00000000000000#include #include "GrPlatform.h" #ifdef _WIN32 #include "windows.h" namespace gr { size_t Platform_UnicodeToANSI(const utf16 * prgchwSrc, size_t cchwSrc, char * prgchsDst, size_t cchsDst) { auto const _cchwSrc = static_cast(cchwSrc), _cchsDst = static_cast(cchsDst); assert(_cchwSrc == cchwSrc || _cchwSrc >= -1); assert(_cchsDst == cchsDst || _cchsDst >= -1); return ::WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)prgchwSrc, _cchwSrc, prgchsDst, _cchsDst, NULL, NULL); } size_t Platform_AnsiToUnicode(const char * prgchsSrc, size_t cchsSrc, utf16 * prgchwDst, size_t cchwDst) { auto const _cchsSrc = static_cast(cchsSrc), _cchwDst = static_cast(cchwDst); assert(_cchsSrc == cchsSrc || _cchsSrc >= -1); assert(_cchwDst == cchwDst || _cchwDst >= -1); return ::MultiByteToWideChar(CP_ACP, 0, prgchsSrc, _cchsSrc, (LPWSTR)prgchwDst, _cchwDst); } size_t Platform_8bitToUnicode(int nCodePage, const char * prgchsSrc, size_t cchsSrc, utf16 * prgchwDst, size_t cchwDst) { auto const _cchsSrc = static_cast(cchsSrc), _cchwDst = static_cast(cchwDst); assert(_cchsSrc == cchsSrc || _cchsSrc >= -1); assert(_cchwDst == cchwDst || _cchwDst >= -1); return ::MultiByteToWideChar(nCodePage, 0, prgchsSrc, _cchsSrc, (LPWSTR)prgchwDst, _cchwDst); } size_t utf8len(const char *s) { return mbstowcs(NULL, s, 0); } utf16 *utf16cpy(utf16 *dest, const utf16 *src) { // return wcscpy(dest, src); return (utf16*)wcscpy((wchar_t*)dest, (const wchar_t*)src); } utf16 *utf16ncpy(utf16 *dest, const utf16 *src, size_t n) { // return wcsncpy(dest, src, n); return (utf16*)wcsncpy((wchar_t*)dest, (const wchar_t*)src, n); } utf16 *utf16ncpy(utf16 *dest, const char *src, size_t n) { #ifdef UTF16DEBUG std::cerr << "utf16ncpy8: " << src << std::endl; #endif Platform_AnsiToUnicode(src, strlen(src), dest, n); return dest; } //size_t wcslen(const wchar_t *s); size_t utf16len(const utf16 *s) { // return wcslen(s); return wcslen((const wchar_t*)s); } int utf16cmp(const utf16 *s1, const utf16 *s2) { // return wcscmp(s1, s2); return wcscmp((const wchar_t*)s1, (const wchar_t*)s2); } int utf16ncmp(const utf16 *s1, const utf16 *s2, size_t n) { // return wcsncmp(s1, s2, n); return wcsncmp((const wchar_t*)s1, (const wchar_t*)s2, n); } int utf16cmp(const utf16 *s1, const char *s2) { while (*s1 && s2) { if (*s1 < *s2) { return -1; } if (*s1 > *s2) { return 1; } *s1++; *s2++; } if (*s1) return -1; else if (*s2) return 1; return 0; } int utf16ncmp(const utf16 *s1, const char *s2, size_t n) { size_t p = 0; while (*s1 && s2 && (p < n)) { if (*s1 < *s2) return -1; if (*s1 > *s2) return 1; *s1++; *s2++; p++; } if (p == n) return 0; else if (*s1) return -1; else if (*s2) return 1; return 0; } } #else // not _WIN32 // Standard Headers #include #include #include #include #include #include // Platform headers #include namespace gr { #ifdef UTF16DEBUG void utf16Output(const utf16 *input) { utf16 src_utf; while(src_utf = *input++) { std::cerr << char(0xff & src_utf); if (src_utf > 255) std::cerr << char(src_utf >> 8); } std::cerr.flush(); } #endif #if 0 utf16 *utf16ncpy(utf16 *dest, const char *src, size_t n) { Platform_AnsiToUnicode(src, strlen(src), dest, n); return dest; } #endif size_t utf16len(const utf16 *s) { // assumes NULL terminated strings const utf16 *start = s; for (; *s; ++s); return s - start; } size_t utf16len(const utf16 *s, size_t n) { const utf16 *start = s; for (; *s && static_cast(s - start) <= n; ++s) ; return s - start; } size_t utf8len(const char *s) { static const int is_initial[] = {1, 1, 0, 1}; // assumes NULL terminated strings size_t length = 0; for (; *s; ++s) length += is_initial[*s >> 6]; return length; } utf16 *utf16cpy(utf16 *dest, const utf16 *src) { memcpy(dest, src, sizeof(utf16) * utf16len(src)); return dest; } utf16 *utf16ncpy(utf16 *dest, const utf16 *src, size_t n) { memcpy(dest, src, sizeof(utf16) * std::min(utf16len(src, n), n)); return dest; } #if 0 int utf16cmp(const utf16 *s1, const utf16 *s2) { #ifdef UTF16DEBUG std::cerr << "utf16cmp16: comparing"; utf16Output(s1); std::cerr << " and "; utf16Output(s1); std::cerr << std::endl; #endif while (*s1 && s2) { if (*s1 < *s2) { return -1; } if (*s1 > *s2) { return 1; } *s1++; *s2++; } if (*s1) return -1; else if (*s2) return 1; return 0; } int utf16ncmp(const utf16 *s1, const utf16 *s2, size_t n) { #ifdef UTF16DEBUG std::cerr << "utf16cmp16: comparing"; utf16Output(s1); std::cerr << " and "; utf16Output(s1); std::cerr << std::endl; #endif size_t p=0; while (*s1 && s2 && (p *s2) { return 1; } *s1++; *s2++; p++; } if (p==n) return 0; else if (*s1) return -1; else if (*s2) return 1; return 0; } int utf16cmp(const utf16 *s1, const char *s2) { #ifdef UTF16DEBUG std::cerr << "utf16cmp: " << s1 << "::" << s2 << std::endl; #endif // let's just assume that both are ascii for now while (*s1 && s2) { if (*s1 < *s2) { return -1; } if (*s1 > *s2) { return 1; } *s1++; *s2++; } if (*s1) return -1; else if (*s2) return 1; return 0; } int utf16ncmp(const utf16 *s1, const char *s2, size_t n) { size_t p = 0; while (*s1 && s2 && (p < n)) { if (*s1 < *s2) return -1; if (*s1 > *s2) return 1; *s1++; *s2++; p++; } if (p == n) return 0; else if (*s1) return -1; else if (*s2) return 1; return 0; } #endif size_t Platform_UnicodeToANSI(const utf16 *src, size_t src_len, char *dest, size_t dest_len) { if (!dest) return src_len; // Unicode to the 1252 codepage. If codepoint value is above 255 then // output '?' instead. utf16 src_utf; for (size_t n_chars = std::min(src_len, dest_len); n_chars; --n_chars) *dest++ = (src_utf = *src++) > 255 ? '?' : char(src_utf); if (dest_len > src_len) *dest = '\0'; return dest_len; } size_t Platform_AnsiToUnicode(const char * src, size_t src_len, utf16 * dest, size_t dest_len) { if (!dest) return src_len; // What is commonly refered to ANSI is close enough to Latin 1 codepage to // allow just copy the 8-bit values into the low 8-bits of the UTF values. for (size_t n_chars = std::min(src_len, dest_len); n_chars; --n_chars) *dest++ = utf16(*src++); if (dest_len > src_len) *dest = '\0'; return dest_len; } size_t Platform_8bitToUnicode(int nCodePage, const char * prgchsSrc, size_t cchsSrc, utf16 * prgchwDst, size_t cchwDst) { return MultiByteToWideChar(nCodePage, 0, prgchsSrc, cchsSrc, prgchwDst, cchwDst); } unsigned short MultiByteToWideChar(unsigned long code_page, unsigned long, const char * source, size_t src_count, unsigned short * dest, size_t dst_count) { if (!dest) // An error condition is indicated by 0 return 0; if (src_count == size_t(-1)) // When passed -1 it should find the src_count = strlen(source); // length of the source it's self if (dst_count == 0) // We cannot find the completed size so esitmate it. return src_count*3; std::ostringstream oss; oss << "CP" << code_page; auto const fromcode = oss.str(); #if WORDS_BIGENDIAN auto const tocode = "UCS-2BE"; #else auto const tocode = "UCS-2LE"; #endif iconv_t cdesc = iconv_open(tocode, fromcode.c_str()); if (cdesc == iconv_t(-1)) { std::cerr << program_invocation_short_name << ": iconv_open(\"" << tocode << "\", \"" << oss.str() << "\"): " << strerror(errno) << std::endl; exit(1); } char *dst_ptr = reinterpret_cast(dest); char *src_ptr = const_cast(source); dst_count *= sizeof(unsigned short); const size_t dst_size = dst_count; iconv(cdesc, &src_ptr, &src_count, &dst_ptr, &dst_count); iconv_close(cdesc); return dst_size - dst_count; } } // namespace gr #endif // _WIN32 grcompiler-5.2.1/compiler/Generic/Throwable.h000066400000000000000000000126541411153030700211530ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Throwable.h Responsibility: Shon Katzenberger Last reviewed: ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #pragma once #endif #ifndef Throwable_H #define Throwable_H 1 #include #ifndef _WIN32 #include #endif #include "GrPlatform.h" #include "GrDebug.h" namespace gr { /*---------------------------------------------------------------------------------------------- Standard class to wrap an HRESULT, HelpID, and message. ----------------------------------------------------------------------------------------------*/ class Throwable { public: // Constructors and Destructor. Throwable(unsigned long hr = S_OK, const wchar_t *pszMsg = 0, int hHelpId = 0) : m_hr(hr) { AssertPszN(reinterpret_cast(pszMsg)); if(pszMsg) { m_pszMsg = new wchar_t[wcslen(pszMsg)+1];//.Assign(pszMsg); wcscpy(m_pszMsg, pszMsg); } else { m_pszMsg = new wchar_t[1]; *m_pszMsg = 0; } m_hHelpId = hHelpId; } virtual ~Throwable(void) { delete[] m_pszMsg; } unsigned long Result(void) { return m_hr; } unsigned long Error(void) { if (FAILED(m_hr)) return m_hr; return WarnHr(E_FAIL); } const wchar_t * Message() { return m_pszMsg; } int HelpId() {return m_hHelpId;} protected: unsigned long m_hr; wchar_t *m_pszMsg; //StrUni m_stuMsg; int m_hHelpId; }; /*---------------------------------------------------------------------------------------------- This variety of Throwable adds information about a stack dump. Non-inline methods are in StackDumper.cpp ----------------------------------------------------------------------------------------------*/ class ThrowableSd : public Throwable { public: // Finding this constant in the Description of an ErrorInfo is a signal to // the FieldWorks error handler of an error message that contains information the // average user should not see. It should be displayed if "details" is clicked, and copied // to the clipboard. static const wchar_t * MoreSep() {return L"\n---***More***---\n";} const char * GetDump() {return m_pszDump;} ThrowableSd(unsigned long hr = S_OK, const wchar_t * pszMsg = 0, int hHelpId = 0, const char * pszDump = 0) :Throwable(hr, pszMsg, hHelpId) { if(pszDump) { m_pszDump = new char[strlen(pszDump)+1]; strcpy(m_pszDump, pszDump); } else { m_pszDump = new char[1]; *m_pszDump = 0; } //m_staDump(pszDump) } ~ThrowableSd() { delete[] m_pszDump; } protected: char *m_pszDump; // stack dump }; //HRESULT CheckHrCore(HRESULT hr, IUnknown * punk, REFGUID iid); /*---------------------------------------------------------------------------------------------- This is used when we call an interface that may not support error info. It allows a more reliable job of checking for error info to be done. ----------------------------------------------------------------------------------------------*/ /*inline HRESULT CheckExtHr(HRESULT hr, IUnknown * punk, REFGUID iid) { if (FAILED(hr)) return CheckHrCore(hr, punk, iid); return hr; }*/ //class DummyFactory; // See StackDumper.cpp for implementations and comments. /*HRESULT HandleThrowable(Throwable & thr, REFGUID iid, DummyFactory * pfact); HRESULT HandleDefaultException(REFGUID iid, DummyFactory * pfact); */ /*---------------------------------------------------------------------------------------------- Function to throw an HRESULT as a Throwable object. ----------------------------------------------------------------------------------------------*/ inline void ThrowHr(unsigned long hr, const wchar_t * pszMsg = NULL, int hHelpId = 0) { throw Throwable(hr, pszMsg, hHelpId); } /*---------------------------------------------------------------------------------------------- If the hr is a failure code, it is thrown, after possibly generating a stack dump if one might be needed. Otherwise it is returned. Use this only when we strongly believe that the interface we're calling will either always succeed or will generate relevant IErrorInfo if it fails. CheckHr will generate an internal error if hr is an error code and there is no error info. It is not able to detect irrelevant error info, as that requires a pointer to the object and an IID. When in doubt, use CheckExtHr. ----------------------------------------------------------------------------------------------*/ inline unsigned long CheckHr(unsigned long hr) { if (FAILED(hr)) ThrowHr(hr); //return CheckHrCore(hr, NULL, IID_NULL); return hr; } // Call this to report detecting an internal error. It may be an error in the module where // the call is made (E_UNEXPECTED) or the calling module (E_POINTER, E_INVALIDARG). // Implementations of these are in StackDumper.cpp /*void ThrowInternalError(HRESULT hr, const wchar * pszMsg = NULL, int hHelpId = 0); void ThrowInternalError(HRESULT hr, const char * pszMsg, int hHelpId = 0); void ThrowOutOfMemory(); void ThrowBuiltInError(char * pchFnName); // Throw an HRESULT; message text is in resource hid, which also serves as help file ID. void ThrowNice(HRESULT hr, int hid); */ } #if !defined(GR_NAMESPACE) using namespace gr; #endif #endif // !Throwable_H grcompiler-5.2.1/compiler/Generic/UtilInt.h000066400000000000000000000126011411153030700206040ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: UtilInt.h Responsibility: Steve McConnel (was Shon Katzenberger) Last reviewed: Integer utilities. ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #pragma once #endif #ifndef UtilInt_H #define UtilInt_H 1 #include "GrDebug.h" namespace gr { const int knMax = 0x7FFFFFFF; /*********************************************************************************************** These arithmetic functions assert that the result doesn't overflow. ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Multiply two integers and assert on overflow. ----------------------------------------------------------------------------------------------*/ template inline int Mul(T t1, T t2) { Assert(!t1 || (t1 * t2) / t1 == t2); return t1 * t2; } /*---------------------------------------------------------------------------------------------- Add two integers and assert on overflow. ----------------------------------------------------------------------------------------------*/ template inline int Add(T t1, T t2) { Assert((t1 + t2 < t2) == (t1 < 0)); return t1 + t2; } /*********************************************************************************************** Arithmetic functions. ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the floor(tNum / tDen) where floor(x) is defined as the the greatest integer that is less than or equal to the number. This only works for signed integer types. ----------------------------------------------------------------------------------------------*/ template inline T FloorDiv(T tNum, T tDen) { Assert(tDen != 0); return tNum / tDen - ((tNum ^ tDen) < 0 && (tNum % tDen)); } /*---------------------------------------------------------------------------------------------- Return the absolute value of the given integer. ----------------------------------------------------------------------------------------------*/ inline unsigned int Abs(int n) { return n < 0 ? -n : n; } /*********************************************************************************************** Hash functions. ***********************************************************************************************/ /* unsigned int ComputeHashRgb(const byte * prgb, int cb, unsigned int uHash = 0); unsigned int CaseSensitiveComputeHash(LPCOLESTR psz, unsigned int uHash = 0); unsigned int CaseSensitiveComputeHashCch(const OLECHAR * prgch, int cch, unsigned int uHash = 0); unsigned int CaseInsensitiveComputeHash(LPCOLESTR psz, unsigned int uHash = 0); unsigned int CaseInsensitiveComputeHashCch(const OLECHAR * prgch, int cch, unsigned int uHash = 0); */ /*********************************************************************************************** Getting primes. ***********************************************************************************************/ // Looks for a prime near u. The primes are gotten from a table in Util.cpp. unsigned int GetPrimeNear(unsigned int u); // Looks for a prime larger than u. If u is larger than the largest prime in the table, we // just return that largest prime. unsigned int GetLargerPrime(unsigned int u); // Looks for a prime smaller than u. If u is smaller than the smallest prime in the table, // we just return that smallest prime. unsigned int GetSmallerPrime(unsigned int u); /*********************************************************************************************** Max and Min. ***********************************************************************************************/ template T Max(T t1, T t2) { return (t1 >= t2) ? t1 : t2; } template T Min(T t1, T t2) { return (t1 <= t2) ? t1 : t2; } inline int NMax(int n1, int n2) { return (n1 >= n2) ? n1 : n2; } inline int NMin(int n1, int n2) { return (n1 <= n2) ? n1 : n2; } /*---------------------------------------------------------------------------------------------- If t < tMin, this returns tMin. Otherwise if t > tMax, it returns tMax. Otherwise it returns t. ----------------------------------------------------------------------------------------------*/ template T Bound(T t, T tMin, T tMax) { return t < tMin ? tMin : t > tMax ? tMax : t; } inline int NBound(int n, int nMin, int nMax) { return n < nMin ? nMin : n > nMax ? nMax : n; } /*---------------------------------------------------------------------------------------------- This returns true iff tMin <= t && t < tLim. ----------------------------------------------------------------------------------------------*/ template bool InInterval(T t, T tMin, T tLim) { return tMin <= t && t < tLim; } inline int SignedInt(wchar_t ch) { if (ch & 0x00008000) { // Negative number. int nRet = (ch | 0xFFFF0000); return nRet; } else return (int)ch; } }// namespace gr #endif // !UtilInt_H grcompiler-5.2.1/compiler/Generic/UtilString.cpp000066400000000000000000001001771411153030700216610ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: UtilString.cpp Responsibility: LarryW Last reviewed: 27Sep99 Code for string utilities. ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #include #endif #include "UtilString.h" #pragma hdrstop #undef THIS_FILE DEFINE_THIS_FILE namespace gr { //:Associate with TextFormatter<>. // const char g_rgchDigits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const char g_rgchDigits[36] = {'0','1','2','3','4','5','6','7','8','9','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'}; static const wchar_t szSpace[5] = L" \t\r\n"; // whitespace characters //static const StrUniBuf stbSpace(" \t\r\n"); //:>******************************************************************************************** //:> Smart string class StrBase<>. //:>******************************************************************************************** //:Associate with StrBase. template <> StrBase::StrBuffer StrBase::s_bufEmpty = StrBase::StrBuffer(); // Instantiation of empty utf16 buffer. //:Associate with StrBase. template <> StrBase::StrBuffer StrBase::s_bufEmpty = StrBase::StrBuffer(); // Instantiation of empty schar buffer. //:Associate with "Generic Text Manipulation Functions". //:>******************************************************************************************** //:> Mapping Unicode characters to uppercase. //:>******************************************************************************************** static const utf16 kchMinUpper1 = 0x0061; static const utf16 kchLimUpper1 = 0x0293; static const utf16 g_mpchchUpper1[kchLimUpper1 - kchMinUpper1] = { 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00f7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0178, 0x0100, 0x0100, 0x0102, 0x0102, 0x0104, 0x0104, 0x0106, 0x0106, 0x0108, 0x0108, 0x010a, 0x010a, 0x010c, 0x010c, 0x010e, 0x010e, 0x0110, 0x0110, 0x0112, 0x0112, 0x0114, 0x0114, 0x0116, 0x0116, 0x0118, 0x0118, 0x011a, 0x011a, 0x011c, 0x011c, 0x011e, 0x011e, 0x0120, 0x0120, 0x0122, 0x0122, 0x0124, 0x0124, 0x0126, 0x0126, 0x0128, 0x0128, 0x012a, 0x012a, 0x012c, 0x012c, 0x012e, 0x012e, 0x0130, 0x0049, 0x0132, 0x0132, 0x0134, 0x0134, 0x0136, 0x0136, 0x0138, 0x0139, 0x0139, 0x013b, 0x013b, 0x013d, 0x013d, 0x013f, 0x013f, 0x0141, 0x0141, 0x0143, 0x0143, 0x0145, 0x0145, 0x0147, 0x0147, 0x0149, 0x014a, 0x014a, 0x014c, 0x014c, 0x014e, 0x014e, 0x0150, 0x0150, 0x0152, 0x0152, 0x0154, 0x0154, 0x0156, 0x0156, 0x0158, 0x0158, 0x015a, 0x015a, 0x015c, 0x015c, 0x015e, 0x015e, 0x0160, 0x0160, 0x0162, 0x0162, 0x0164, 0x0164, 0x0166, 0x0166, 0x0168, 0x0168, 0x016a, 0x016a, 0x016c, 0x016c, 0x016e, 0x016e, 0x0170, 0x0170, 0x0172, 0x0172, 0x0174, 0x0174, 0x0176, 0x0176, 0x0178, 0x0179, 0x0179, 0x017b, 0x017b, 0x017d, 0x017d, 0x0053, 0x0180, 0x0181, 0x0182, 0x0182, 0x0184, 0x0184, 0x0186, 0x0187, 0x0187, 0x0189, 0x018a, 0x018b, 0x018b, 0x018d, 0x018e, 0x018f, 0x0190, 0x0191, 0x0191, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197, 0x0198, 0x0198, 0x019a, 0x019b, 0x019c, 0x019d, 0x019e, 0x019f, 0x01a0, 0x01a0, 0x01a2, 0x01a2, 0x01a4, 0x01a4, 0x01a6, 0x01a7, 0x01a7, 0x01a9, 0x01aa, 0x01ab, 0x01ac, 0x01ac, 0x01ae, 0x01af, 0x01af, 0x01b1, 0x01b2, 0x01b3, 0x01b3, 0x01b5, 0x01b5, 0x01b7, 0x01b8, 0x01b8, 0x01ba, 0x01bb, 0x01bc, 0x01bc, 0x01be, 0x01bf, 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x01c4, 0x01c4, 0x01c4, 0x01c7, 0x01c7, 0x01c7, 0x01ca, 0x01ca, 0x01ca, 0x01cd, 0x01cd, 0x01cf, 0x01cf, 0x01d1, 0x01d1, 0x01d3, 0x01d3, 0x01d5, 0x01d5, 0x01d7, 0x01d7, 0x01d9, 0x01d9, 0x01db, 0x01db, 0x01dd, 0x01de, 0x01de, 0x01e0, 0x01e0, 0x01e2, 0x01e2, 0x01e4, 0x01e4, 0x01e6, 0x01e6, 0x01e8, 0x01e8, 0x01ea, 0x01ea, 0x01ec, 0x01ec, 0x01ee, 0x01ee, 0x01f0, 0x01f1, 0x01f1, 0x01f1, 0x01f4, 0x01f4, 0x01f6, 0x01f7, 0x01f8, 0x01f9, 0x01fa, 0x01fa, 0x01fc, 0x01fc, 0x01fe, 0x01fe, 0x0200, 0x0200, 0x0202, 0x0202, 0x0204, 0x0204, 0x0206, 0x0206, 0x0208, 0x0208, 0x020a, 0x020a, 0x020c, 0x020c, 0x020e, 0x020e, 0x0210, 0x0210, 0x0212, 0x0212, 0x0214, 0x0214, 0x0216, 0x0216, 0x0218, 0x0219, 0x021a, 0x021b, 0x021c, 0x021d, 0x021e, 0x021f, 0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0226, 0x0227, 0x0228, 0x0229, 0x022a, 0x022b, 0x022c, 0x022d, 0x022e, 0x022f, 0x0230, 0x0231, 0x0232, 0x0233, 0x0234, 0x0235, 0x0236, 0x0237, 0x0238, 0x0239, 0x023a, 0x023b, 0x023c, 0x023d, 0x023e, 0x023f, 0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b, 0x024c, 0x024d, 0x024e, 0x024f, 0x0250, 0x0251, 0x0252, 0x0181, 0x0186, 0x0255, 0x0189, 0x018a, 0x018e, 0x018f, 0x025a, 0x0190, 0x025c, 0x025d, 0x025e, 0x025f, 0x0193, 0x0261, 0x0262, 0x0194, 0x0264, 0x0265, 0x0266, 0x0267, 0x0197, 0x0196, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e, 0x019c, 0x0270, 0x0271, 0x019d, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f, 0x0280, 0x0281, 0x0282, 0x01a9, 0x0284, 0x0285, 0x0286, 0x0287, 0x01ae, 0x0289, 0x01b1, 0x01b2, 0x028c, 0x028d, 0x028e, 0x028f, 0x0290, 0x0291, 0x01b7 }; static const utf16 kchMinUpper2 = 0x03ac; static const utf16 kchLimUpper2 = 0x0587; static const utf16 g_mpchchUpper2[kchLimUpper2 - kchMinUpper2] = { 0x0386, 0x0388, 0x0389, 0x038a, 0x03b0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03c2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x038c, 0x038e, 0x038f, 0x03cf, 0x0392, 0x0398, 0x03d2, 0x03d3, 0x03d4, 0x03a6, 0x03a0, 0x03d7, 0x03d8, 0x03d9, 0x03da, 0x03db, 0x03dc, 0x03dd, 0x03de, 0x03df, 0x03e0, 0x03e1, 0x03e2, 0x03e2, 0x03e4, 0x03e4, 0x03e6, 0x03e6, 0x03e8, 0x03e8, 0x03ea, 0x03ea, 0x03ec, 0x03ec, 0x03ee, 0x03ee, 0x039a, 0x03a1, 0x03f2, 0x03f3, 0x03f4, 0x03f5, 0x03f6, 0x03f7, 0x03f8, 0x03f9, 0x03fa, 0x03fb, 0x03fc, 0x03fd, 0x03fe, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0450, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x045d, 0x040e, 0x040f, 0x0460, 0x0460, 0x0462, 0x0462, 0x0464, 0x0464, 0x0466, 0x0466, 0x0468, 0x0468, 0x046a, 0x046a, 0x046c, 0x046c, 0x046e, 0x046e, 0x0470, 0x0470, 0x0472, 0x0472, 0x0474, 0x0474, 0x0476, 0x0476, 0x0478, 0x0478, 0x047a, 0x047a, 0x047c, 0x047c, 0x047e, 0x047e, 0x0480, 0x0480, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489, 0x048a, 0x048b, 0x048c, 0x048d, 0x048e, 0x048f, 0x0490, 0x0490, 0x0492, 0x0492, 0x0494, 0x0494, 0x0496, 0x0496, 0x0498, 0x0498, 0x049a, 0x049a, 0x049c, 0x049c, 0x049e, 0x049e, 0x04a0, 0x04a0, 0x04a2, 0x04a2, 0x04a4, 0x04a4, 0x04a6, 0x04a6, 0x04a8, 0x04a8, 0x04aa, 0x04aa, 0x04ac, 0x04ac, 0x04ae, 0x04ae, 0x04b0, 0x04b0, 0x04b2, 0x04b2, 0x04b4, 0x04b4, 0x04b6, 0x04b6, 0x04b8, 0x04b8, 0x04ba, 0x04ba, 0x04bc, 0x04bc, 0x04be, 0x04be, 0x04c0, 0x04c1, 0x04c1, 0x04c3, 0x04c3, 0x04c5, 0x04c6, 0x04c7, 0x04c7, 0x04c9, 0x04ca, 0x04cb, 0x04cb, 0x04cd, 0x04ce, 0x04cf, 0x04d0, 0x04d0, 0x04d2, 0x04d2, 0x04d4, 0x04d4, 0x04d6, 0x04d6, 0x04d8, 0x04d8, 0x04da, 0x04da, 0x04dc, 0x04dc, 0x04de, 0x04de, 0x04e0, 0x04e0, 0x04e2, 0x04e2, 0x04e4, 0x04e4, 0x04e6, 0x04e6, 0x04e8, 0x04e8, 0x04ea, 0x04ea, 0x04ec, 0x04ed, 0x04ee, 0x04ee, 0x04f0, 0x04f0, 0x04f2, 0x04f2, 0x04f4, 0x04f4, 0x04f6, 0x04f7, 0x04f8, 0x04f8, 0x04fa, 0x04fb, 0x04fc, 0x04fd, 0x04fe, 0x04ff, 0x0500, 0x0501, 0x0502, 0x0503, 0x0504, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509, 0x050a, 0x050b, 0x050c, 0x050d, 0x050e, 0x050f, 0x0510, 0x0511, 0x0512, 0x0513, 0x0514, 0x0515, 0x0516, 0x0517, 0x0518, 0x0519, 0x051a, 0x051b, 0x051c, 0x051d, 0x051e, 0x051f, 0x0520, 0x0521, 0x0522, 0x0523, 0x0524, 0x0525, 0x0526, 0x0527, 0x0528, 0x0529, 0x052a, 0x052b, 0x052c, 0x052d, 0x052e, 0x052f, 0x0530, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f, 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f, 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0557, 0x0558, 0x0559, 0x055a, 0x055b, 0x055c, 0x055d, 0x055e, 0x055f, 0x0560, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f, 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f, 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556 }; static const utf16 kchMinUpper3 = 0x1e01; static const utf16 kchLimUpper3 = 0x1ff4; static const utf16 g_mpchchUpper3[kchLimUpper3 - kchMinUpper3] = { 0x1e00, 0x1e02, 0x1e02, 0x1e04, 0x1e04, 0x1e06, 0x1e06, 0x1e08, 0x1e08, 0x1e0a, 0x1e0a, 0x1e0c, 0x1e0c, 0x1e0e, 0x1e0e, 0x1e10, 0x1e10, 0x1e12, 0x1e12, 0x1e14, 0x1e14, 0x1e16, 0x1e16, 0x1e18, 0x1e18, 0x1e1a, 0x1e1a, 0x1e1c, 0x1e1c, 0x1e1e, 0x1e1e, 0x1e20, 0x1e20, 0x1e22, 0x1e22, 0x1e24, 0x1e24, 0x1e26, 0x1e26, 0x1e28, 0x1e28, 0x1e2a, 0x1e2a, 0x1e2c, 0x1e2c, 0x1e2e, 0x1e2e, 0x1e30, 0x1e30, 0x1e32, 0x1e32, 0x1e34, 0x1e34, 0x1e36, 0x1e36, 0x1e38, 0x1e38, 0x1e3a, 0x1e3a, 0x1e3c, 0x1e3c, 0x1e3e, 0x1e3e, 0x1e40, 0x1e40, 0x1e42, 0x1e42, 0x1e44, 0x1e44, 0x1e46, 0x1e46, 0x1e48, 0x1e48, 0x1e4a, 0x1e4a, 0x1e4c, 0x1e4c, 0x1e4e, 0x1e4e, 0x1e50, 0x1e50, 0x1e52, 0x1e52, 0x1e54, 0x1e54, 0x1e56, 0x1e56, 0x1e58, 0x1e58, 0x1e5a, 0x1e5a, 0x1e5c, 0x1e5c, 0x1e5e, 0x1e5e, 0x1e60, 0x1e60, 0x1e62, 0x1e62, 0x1e64, 0x1e64, 0x1e66, 0x1e66, 0x1e68, 0x1e68, 0x1e6a, 0x1e6a, 0x1e6c, 0x1e6c, 0x1e6e, 0x1e6e, 0x1e70, 0x1e70, 0x1e72, 0x1e72, 0x1e74, 0x1e74, 0x1e76, 0x1e76, 0x1e78, 0x1e78, 0x1e7a, 0x1e7a, 0x1e7c, 0x1e7c, 0x1e7e, 0x1e7e, 0x1e80, 0x1e80, 0x1e82, 0x1e82, 0x1e84, 0x1e84, 0x1e86, 0x1e86, 0x1e88, 0x1e88, 0x1e8a, 0x1e8a, 0x1e8c, 0x1e8c, 0x1e8e, 0x1e8e, 0x1e90, 0x1e90, 0x1e92, 0x1e92, 0x1e94, 0x1e94, 0x1e96, 0x1e97, 0x1e98, 0x1e99, 0x1e9a, 0x1e9b, 0x1e9c, 0x1e9d, 0x1e9e, 0x1e9f, 0x1ea0, 0x1ea0, 0x1ea2, 0x1ea2, 0x1ea4, 0x1ea4, 0x1ea6, 0x1ea6, 0x1ea8, 0x1ea8, 0x1eaa, 0x1eaa, 0x1eac, 0x1eac, 0x1eae, 0x1eae, 0x1eb0, 0x1eb0, 0x1eb2, 0x1eb2, 0x1eb4, 0x1eb4, 0x1eb6, 0x1eb6, 0x1eb8, 0x1eb8, 0x1eba, 0x1eba, 0x1ebc, 0x1ebc, 0x1ebe, 0x1ebe, 0x1ec0, 0x1ec0, 0x1ec2, 0x1ec2, 0x1ec4, 0x1ec4, 0x1ec6, 0x1ec6, 0x1ec8, 0x1ec8, 0x1eca, 0x1eca, 0x1ecc, 0x1ecc, 0x1ece, 0x1ece, 0x1ed0, 0x1ed0, 0x1ed2, 0x1ed2, 0x1ed4, 0x1ed4, 0x1ed6, 0x1ed6, 0x1ed8, 0x1ed8, 0x1eda, 0x1eda, 0x1edc, 0x1edc, 0x1ede, 0x1ede, 0x1ee0, 0x1ee0, 0x1ee2, 0x1ee2, 0x1ee4, 0x1ee4, 0x1ee6, 0x1ee6, 0x1ee8, 0x1ee8, 0x1eea, 0x1eea, 0x1eec, 0x1eec, 0x1eee, 0x1eee, 0x1ef0, 0x1ef0, 0x1ef2, 0x1ef2, 0x1ef4, 0x1ef4, 0x1ef6, 0x1ef6, 0x1ef8, 0x1ef8, 0x1efa, 0x1efb, 0x1efc, 0x1efd, 0x1efe, 0x1eff, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x1f16, 0x1f17, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x1f1e, 0x1f1f, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f46, 0x1f47, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f4e, 0x1f4f, 0x1f50, 0x1f59, 0x1f52, 0x1f5b, 0x1f54, 0x1f5d, 0x1f56, 0x1f5f, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c, 0x1f5d, 0x1f5e, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0x1f7e, 0x1f7f, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fb8, 0x1fb9, 0x1fb2, 0x1fbc, 0x1fb4, 0x1fb5, 0x1fb6, 0x1fb7, 0x1fb8, 0x1fb9, 0x1fba, 0x1fbb, 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc0, 0x1fc1, 0x1fc2, 0x1fcc, 0x1fc4, 0x1fc5, 0x1fc6, 0x1fc7, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fcc, 0x1fcd, 0x1fce, 0x1fcf, 0x1fd8, 0x1fd9, 0x1fd2, 0x1fd3, 0x1fd4, 0x1fd5, 0x1fd6, 0x1fd7, 0x1fd8, 0x1fd9, 0x1fda, 0x1fdb, 0x1fdc, 0x1fdd, 0x1fde, 0x1fdf, 0x1fe8, 0x1fe9, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fec, 0x1fe6, 0x1fe7, 0x1fe8, 0x1fe9, 0x1fea, 0x1feb, 0x1fec, 0x1fed, 0x1fee, 0x1fef, 0x1ff0, 0x1ff1, 0x1ff2, 0x1ffc }; static const utf16 kchMinUpper4 = 0x2170; static const utf16 kchLimUpper4 = 0x2180; static const utf16 kdchUpper4 = (utf16)-16; static const utf16 kchMinUpper5 = 0x24d0; static const utf16 kchLimUpper5 = 0x24ea; static const utf16 kdchUpper5 = (utf16)-26; static const utf16 kchMinUpper6 = 0xff41; static const utf16 kchLimUpper6 = 0xff5b; static const utf16 kdchUpper6 = (utf16)-32; /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts cch wide (16-bit) characters in prgch to upper case. ----------------------------------------------------------------------------------------------*/ void ToUpper(utf16 * prgch, int cch) { Assert(cch >= 0); AssertArray(prgch, cch); utf16 ch; utf16 *pch; utf16 *pchLim = prgch + cch; for (pch = prgch; pch < pchLim; ++pch) { ch = *pch; // Try the common case first. if (*pch < kchLimUpper1) { if (*pch >= kchMinUpper1) *pch = g_mpchchUpper1[*pch - kchMinUpper1]; } else if (*pch < kchLimUpper4) { if (*pch < kchMinUpper3) { if (*pch < kchLimUpper2) { if (*pch >= kchMinUpper2) *pch = g_mpchchUpper2[*pch - kchMinUpper2]; } } else if (*pch < kchLimUpper3) *pch = g_mpchchUpper3[*pch - kchMinUpper3]; else if (*pch >= kchMinUpper4) *pch += kdchUpper4; } else if (*pch < kchMinUpper6) { if (*pch < kchLimUpper5) { if (*pch >= kchMinUpper5) *pch += kdchUpper5; } } else if (*pch < kchLimUpper6) *pch += kdchUpper6; } } /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts the wide (16-bit) character ch to upper case. ----------------------------------------------------------------------------------------------*/ utf16 ToUpper(utf16 ch) { // Try the common case first. if (ch < kchLimUpper1) { if (ch >= kchMinUpper1) return g_mpchchUpper1[ch - kchMinUpper1]; } else if (ch < kchLimUpper4) { if (ch < kchMinUpper3) { if (ch < kchLimUpper2) { if (ch >= kchMinUpper2) return g_mpchchUpper2[ch - kchMinUpper2]; } } else if (ch < kchLimUpper3) return g_mpchchUpper3[ch - kchMinUpper3]; else if (ch >= kchMinUpper4) return (utf16)(ch + kdchUpper4); } else if (ch < kchMinUpper6) { if (ch < kchLimUpper5) { if (ch >= kchMinUpper5) return (utf16)(ch + kdchUpper5); } } else if (ch < kchLimUpper6) return (utf16)(ch + kdchUpper6); return ch; } //:>******************************************************************************************** //:> Mapping Unicode characters to lower case. //:>******************************************************************************************** static const utf16 kchMinLower1 = 0x0041; static const utf16 kchLimLower1 = 0x0217; static const utf16 g_mpchchLower1[kchLimLower1 - kchMinLower1] = { 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00d7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, 0x0101, 0x0101, 0x0103, 0x0103, 0x0105, 0x0105, 0x0107, 0x0107, 0x0109, 0x0109, 0x010b, 0x010b, 0x010d, 0x010d, 0x010f, 0x010f, 0x0111, 0x0111, 0x0113, 0x0113, 0x0115, 0x0115, 0x0117, 0x0117, 0x0119, 0x0119, 0x011b, 0x011b, 0x011d, 0x011d, 0x011f, 0x011f, 0x0121, 0x0121, 0x0123, 0x0123, 0x0125, 0x0125, 0x0127, 0x0127, 0x0129, 0x0129, 0x012b, 0x012b, 0x012d, 0x012d, 0x012f, 0x012f, 0x0069, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, 0x0137, 0x0137, 0x0138, 0x013a, 0x013a, 0x013c, 0x013c, 0x013e, 0x013e, 0x0140, 0x0140, 0x0142, 0x0142, 0x0144, 0x0144, 0x0146, 0x0146, 0x0148, 0x0148, 0x0149, 0x014b, 0x014b, 0x014d, 0x014d, 0x014f, 0x014f, 0x0151, 0x0151, 0x0153, 0x0153, 0x0155, 0x0155, 0x0157, 0x0157, 0x0159, 0x0159, 0x015b, 0x015b, 0x015d, 0x015d, 0x015f, 0x015f, 0x0161, 0x0161, 0x0163, 0x0163, 0x0165, 0x0165, 0x0167, 0x0167, 0x0169, 0x0169, 0x016b, 0x016b, 0x016d, 0x016d, 0x016f, 0x016f, 0x0171, 0x0171, 0x0173, 0x0173, 0x0175, 0x0175, 0x0177, 0x0177, 0x00ff, 0x017a, 0x017a, 0x017c, 0x017c, 0x017e, 0x017e, 0x017f, 0x0180, 0x0253, 0x0183, 0x0183, 0x0185, 0x0185, 0x0254, 0x0188, 0x0188, 0x0256, 0x0257, 0x018c, 0x018c, 0x018d, 0x0258, 0x0259, 0x025b, 0x0192, 0x0192, 0x0260, 0x0263, 0x0195, 0x0269, 0x0268, 0x0199, 0x0199, 0x019a, 0x019b, 0x026f, 0x0272, 0x019e, 0x019f, 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x01a6, 0x01a8, 0x01a8, 0x0283, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x0288, 0x01b0, 0x01b0, 0x028a, 0x028b, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x0292, 0x01b9, 0x01b9, 0x01ba, 0x01bb, 0x01bd, 0x01bd, 0x01be, 0x01bf, 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x01c6, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 0x01c9, 0x01cc, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01d0, 0x01d0, 0x01d2, 0x01d2, 0x01d4, 0x01d4, 0x01d6, 0x01d6, 0x01d8, 0x01d8, 0x01da, 0x01da, 0x01dc, 0x01dc, 0x01dd, 0x01df, 0x01df, 0x01e1, 0x01e1, 0x01e3, 0x01e3, 0x01e5, 0x01e5, 0x01e7, 0x01e7, 0x01e9, 0x01e9, 0x01eb, 0x01eb, 0x01ed, 0x01ed, 0x01ef, 0x01ef, 0x01f0, 0x01f3, 0x01f3, 0x01f3, 0x01f5, 0x01f5, 0x01f6, 0x01f7, 0x01f8, 0x01f9, 0x01fb, 0x01fb, 0x01fd, 0x01fd, 0x01ff, 0x01ff, 0x0201, 0x0201, 0x0203, 0x0203, 0x0205, 0x0205, 0x0207, 0x0207, 0x0209, 0x0209, 0x020b, 0x020b, 0x020d, 0x020d, 0x020f, 0x020f, 0x0211, 0x0211, 0x0213, 0x0213, 0x0215, 0x0215, 0x0217 }; static const utf16 kchMinLower2 = 0x0386; static const utf16 kchLimLower2 = 0x0557; static const utf16 g_mpchchLower2[kchLimLower2 - kchMinLower2] = { 0x03ac, 0x0387, 0x03ad, 0x03ae, 0x03af, 0x038b, 0x03cc, 0x038d, 0x03cd, 0x03ce, 0x0390, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03a2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x03cf, 0x03d0, 0x03d1, 0x03d2, 0x03d3, 0x03d4, 0x03d5, 0x03d6, 0x03d7, 0x03d8, 0x03d9, 0x03da, 0x03db, 0x03dc, 0x03dd, 0x03de, 0x03df, 0x03e0, 0x03e1, 0x03e3, 0x03e3, 0x03e5, 0x03e5, 0x03e7, 0x03e7, 0x03e9, 0x03e9, 0x03eb, 0x03eb, 0x03ed, 0x03ed, 0x03ef, 0x03ef, 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03f4, 0x03f5, 0x03f6, 0x03f7, 0x03f8, 0x03f9, 0x03fa, 0x03fb, 0x03fc, 0x03fd, 0x03fe, 0x03ff, 0x0400, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x040d, 0x045e, 0x045f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f, 0x0461, 0x0461, 0x0463, 0x0463, 0x0465, 0x0465, 0x0467, 0x0467, 0x0469, 0x0469, 0x046b, 0x046b, 0x046d, 0x046d, 0x046f, 0x046f, 0x0471, 0x0471, 0x0473, 0x0473, 0x0475, 0x0475, 0x0477, 0x0477, 0x0479, 0x0479, 0x047b, 0x047b, 0x047d, 0x047d, 0x047f, 0x047f, 0x0481, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489, 0x048a, 0x048b, 0x048c, 0x048d, 0x048e, 0x048f, 0x0491, 0x0491, 0x0493, 0x0493, 0x0495, 0x0495, 0x0497, 0x0497, 0x0499, 0x0499, 0x049b, 0x049b, 0x049d, 0x049d, 0x049f, 0x049f, 0x04a1, 0x04a1, 0x04a3, 0x04a3, 0x04a5, 0x04a5, 0x04a7, 0x04a7, 0x04a9, 0x04a9, 0x04ab, 0x04ab, 0x04ad, 0x04ad, 0x04af, 0x04af, 0x04b1, 0x04b1, 0x04b3, 0x04b3, 0x04b5, 0x04b5, 0x04b7, 0x04b7, 0x04b9, 0x04b9, 0x04bb, 0x04bb, 0x04bd, 0x04bd, 0x04bf, 0x04bf, 0x04c0, 0x04c2, 0x04c2, 0x04c4, 0x04c4, 0x04c5, 0x04c6, 0x04c8, 0x04c8, 0x04c9, 0x04ca, 0x04cc, 0x04cc, 0x04cd, 0x04ce, 0x04cf, 0x04d1, 0x04d1, 0x04d3, 0x04d3, 0x04d5, 0x04d5, 0x04d7, 0x04d7, 0x04d9, 0x04d9, 0x04db, 0x04db, 0x04dd, 0x04dd, 0x04df, 0x04df, 0x04e1, 0x04e1, 0x04e3, 0x04e3, 0x04e5, 0x04e5, 0x04e7, 0x04e7, 0x04e9, 0x04e9, 0x04eb, 0x04eb, 0x04ec, 0x04ed, 0x04ef, 0x04ef, 0x04f1, 0x04f1, 0x04f3, 0x04f3, 0x04f5, 0x04f5, 0x04f6, 0x04f7, 0x04f9, 0x04f9, 0x04fa, 0x04fb, 0x04fc, 0x04fd, 0x04fe, 0x04ff, 0x0500, 0x0501, 0x0502, 0x0503, 0x0504, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509, 0x050a, 0x050b, 0x050c, 0x050d, 0x050e, 0x050f, 0x0510, 0x0511, 0x0512, 0x0513, 0x0514, 0x0515, 0x0516, 0x0517, 0x0518, 0x0519, 0x051a, 0x051b, 0x051c, 0x051d, 0x051e, 0x051f, 0x0520, 0x0521, 0x0522, 0x0523, 0x0524, 0x0525, 0x0526, 0x0527, 0x0528, 0x0529, 0x052a, 0x052b, 0x052c, 0x052d, 0x052e, 0x052f, 0x0530, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567, 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e, 0x056f, 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577, 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f, 0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586 }; static const utf16 kchMinLower3 = 0x10a0; static const utf16 kchLimLower3 = 0x10c6; static const utf16 kdchLower3 = 48; static const utf16 kchMinLower4 = 0x1e00; static const utf16 kchLimLower4 = 0x1ffd; static const utf16 g_mpchchLower4[kchLimLower4 - kchMinLower4] = { 0x1e01, 0x1e01, 0x1e03, 0x1e03, 0x1e05, 0x1e05, 0x1e07, 0x1e07, 0x1e09, 0x1e09, 0x1e0b, 0x1e0b, 0x1e0d, 0x1e0d, 0x1e0f, 0x1e0f, 0x1e11, 0x1e11, 0x1e13, 0x1e13, 0x1e15, 0x1e15, 0x1e17, 0x1e17, 0x1e19, 0x1e19, 0x1e1b, 0x1e1b, 0x1e1d, 0x1e1d, 0x1e1f, 0x1e1f, 0x1e21, 0x1e21, 0x1e23, 0x1e23, 0x1e25, 0x1e25, 0x1e27, 0x1e27, 0x1e29, 0x1e29, 0x1e2b, 0x1e2b, 0x1e2d, 0x1e2d, 0x1e2f, 0x1e2f, 0x1e31, 0x1e31, 0x1e33, 0x1e33, 0x1e35, 0x1e35, 0x1e37, 0x1e37, 0x1e39, 0x1e39, 0x1e3b, 0x1e3b, 0x1e3d, 0x1e3d, 0x1e3f, 0x1e3f, 0x1e41, 0x1e41, 0x1e43, 0x1e43, 0x1e45, 0x1e45, 0x1e47, 0x1e47, 0x1e49, 0x1e49, 0x1e4b, 0x1e4b, 0x1e4d, 0x1e4d, 0x1e4f, 0x1e4f, 0x1e51, 0x1e51, 0x1e53, 0x1e53, 0x1e55, 0x1e55, 0x1e57, 0x1e57, 0x1e59, 0x1e59, 0x1e5b, 0x1e5b, 0x1e5d, 0x1e5d, 0x1e5f, 0x1e5f, 0x1e61, 0x1e61, 0x1e63, 0x1e63, 0x1e65, 0x1e65, 0x1e67, 0x1e67, 0x1e69, 0x1e69, 0x1e6b, 0x1e6b, 0x1e6d, 0x1e6d, 0x1e6f, 0x1e6f, 0x1e71, 0x1e71, 0x1e73, 0x1e73, 0x1e75, 0x1e75, 0x1e77, 0x1e77, 0x1e79, 0x1e79, 0x1e7b, 0x1e7b, 0x1e7d, 0x1e7d, 0x1e7f, 0x1e7f, 0x1e81, 0x1e81, 0x1e83, 0x1e83, 0x1e85, 0x1e85, 0x1e87, 0x1e87, 0x1e89, 0x1e89, 0x1e8b, 0x1e8b, 0x1e8d, 0x1e8d, 0x1e8f, 0x1e8f, 0x1e91, 0x1e91, 0x1e93, 0x1e93, 0x1e95, 0x1e95, 0x1e96, 0x1e97, 0x1e98, 0x1e99, 0x1e9a, 0x1e9b, 0x1e9c, 0x1e9d, 0x1e9e, 0x1e9f, 0x1ea1, 0x1ea1, 0x1ea3, 0x1ea3, 0x1ea5, 0x1ea5, 0x1ea7, 0x1ea7, 0x1ea9, 0x1ea9, 0x1eab, 0x1eab, 0x1ead, 0x1ead, 0x1eaf, 0x1eaf, 0x1eb1, 0x1eb1, 0x1eb3, 0x1eb3, 0x1eb5, 0x1eb5, 0x1eb7, 0x1eb7, 0x1eb9, 0x1eb9, 0x1ebb, 0x1ebb, 0x1ebd, 0x1ebd, 0x1ebf, 0x1ebf, 0x1ec1, 0x1ec1, 0x1ec3, 0x1ec3, 0x1ec5, 0x1ec5, 0x1ec7, 0x1ec7, 0x1ec9, 0x1ec9, 0x1ecb, 0x1ecb, 0x1ecd, 0x1ecd, 0x1ecf, 0x1ecf, 0x1ed1, 0x1ed1, 0x1ed3, 0x1ed3, 0x1ed5, 0x1ed5, 0x1ed7, 0x1ed7, 0x1ed9, 0x1ed9, 0x1edb, 0x1edb, 0x1edd, 0x1edd, 0x1edf, 0x1edf, 0x1ee1, 0x1ee1, 0x1ee3, 0x1ee3, 0x1ee5, 0x1ee5, 0x1ee7, 0x1ee7, 0x1ee9, 0x1ee9, 0x1eeb, 0x1eeb, 0x1eed, 0x1eed, 0x1eef, 0x1eef, 0x1ef1, 0x1ef1, 0x1ef3, 0x1ef3, 0x1ef5, 0x1ef5, 0x1ef7, 0x1ef7, 0x1ef9, 0x1ef9, 0x1efa, 0x1efb, 0x1efc, 0x1efd, 0x1efe, 0x1eff, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x1f16, 0x1f17, 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x1f1e, 0x1f1f, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37, 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x1f46, 0x1f47, 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x1f4e, 0x1f4f, 0x1f50, 0x1f51, 0x1f52, 0x1f53, 0x1f54, 0x1f55, 0x1f56, 0x1f57, 0x1f58, 0x1f51, 0x1f5a, 0x1f53, 0x1f5c, 0x1f55, 0x1f5e, 0x1f57, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1f70, 0x1f71, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1f76, 0x1f77, 0x1f78, 0x1f79, 0x1f7a, 0x1f7b, 0x1f7c, 0x1f7d, 0x1f7e, 0x1f7f, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fb0, 0x1fb1, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb5, 0x1fb6, 0x1fb7, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc0, 0x1fc1, 0x1fc2, 0x1fc3, 0x1fc4, 0x1fc5, 0x1fc6, 0x1fc7, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0x1fcd, 0x1fce, 0x1fcf, 0x1fd0, 0x1fd1, 0x1fd2, 0x1fd3, 0x1fd4, 0x1fd5, 0x1fd6, 0x1fd7, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0x1fdc, 0x1fdd, 0x1fde, 0x1fdf, 0x1fe0, 0x1fe1, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe5, 0x1fe6, 0x1fe7, 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0x1fed, 0x1fee, 0x1fef, 0x1ff0, 0x1ff1, 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff5, 0x1ff6, 0x1ff7, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3 }; static const utf16 kchMinLower5 = 0x2160; static const utf16 kchLimLower5 = 0x2170; static const utf16 kdchLower5 = 16; static const utf16 kchMinLower6 = 0x24b6; static const utf16 kchLimLower6 = 0x24d0; static const utf16 kdchLower6 = 26; static const utf16 kchMinLower7 = 0xff21; static const utf16 kchLimLower7 = 0xff3b; static const utf16 kdchLower7 = 32; /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts cch wide (16-bit) characters in prgch to lower case. ----------------------------------------------------------------------------------------------*/ void ToLower(utf16 * prgch, int cch) { AssertArray(prgch, cch); utf16 * pch; utf16 * pchLim = prgch + cch; for (pch = prgch; pch < pchLim; ++pch) { if (*pch < kchLimLower1) { if (*pch >= kchMinLower1) *pch = g_mpchchLower1[*pch - kchMinLower1]; } else if (*pch < kchLimLower4) { if (*pch < kchMinLower3) { if (*pch < kchLimLower2) { if (*pch >= kchMinLower2) *pch = g_mpchchLower2[*pch - kchMinLower2]; } } else if (*pch < kchLimLower3) *pch += kdchLower3; else if (*pch >= kchMinLower4) *pch = g_mpchchLower4[*pch - kchMinLower4]; } else if (*pch < kchLimLower6) { if (*pch < kchLimLower5) { if (*pch >= kchMinLower5) *pch += kdchLower5; } else if (*pch >= kchMinLower6) *pch += kdchLower6; } else if (*pch < kchLimLower7) { if (*pch >= kchMinLower7) *pch += kdchLower7; } } } /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts the wide (16-bit) character ch to lower case. ----------------------------------------------------------------------------------------------*/ utf16 ToLower(utf16 ch) { if (ch < kchLimLower1) { if (ch >= kchMinLower1) return g_mpchchLower1[ch - kchMinLower1]; } else if (ch < kchLimLower4) { if (ch < kchMinLower3) { if (ch < kchLimLower2) { if (ch >= kchMinLower2) return g_mpchchLower2[ch - kchMinLower2]; } } else if (ch < kchLimLower3) return (utf16)(ch + kdchLower3); else if (ch >= kchMinLower4) return g_mpchchLower4[ch - kchMinLower4]; } else if (ch < kchLimLower6) { if (ch < kchLimLower5) { if (ch >= kchMinLower5) return (utf16)(ch + kdchLower5); } else if (ch >= kchMinLower6) return (utf16)(ch + kdchLower6); } else if (ch < kchLimLower7) { if (ch >= kchMinLower7) return (utf16)(ch + kdchLower7); } return ch; } } //namespace gr #ifdef GR_FW #include "resourcestrings.cpp" namespace gr { void GetResourceString(const wchar ** pprgch, int * pcch, int stid) { for(int i = 0; cszResourceString[i].id; i++) { if(cszResourceString[i].id == stid) { *pprgch = cszResourceString[i].pszText; *pcch = wcslen(cszResourceString[i].pszText); return; } } *pprgch = L""; *pcch = 0; } } //namespace gr #endif grcompiler-5.2.1/compiler/Generic/UtilString.h000066400000000000000000002242231411153030700213250ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: UtilString.h Responsibility: LarryW Last reviewed: 27Sep99 Description: This file with its matching .cpp file provides string related utilities. There are two types of strings. The first type is based on the class StrBase<> and allocates space for its characters on the heap, so the actual StrAnsi and StrUni objects are small. An assignment of one of these strings to another simply results in the two pointing to the same block of memory. If an allocation fails, an exception is thrown. The three instantiations of StrBase<> are: StrUni, which contains unicode (16 bit) characters. StrAnsi, which contains ansi (8 bit) characters. StrApp, which contains achar characters. achar is typedefed in Common.h to be either utf16 (#ifdef UNICODE) or schar (for all other cases). schar is typedefed as char. The second type of string is based on the class StrBaseBuf<> and contains a maximum number of characters stored as part of the object. An assignment of one of these strings to another copies the characters from one to the other. If an edit command results in an overflow of characters, this type of string holds those characters that fit, and is put into an overflow state. The overflow state propagates in future edit commands on the string. Reassignment of characters that fit into the string clears the overflow state. The template instantiations of StrBaseBuf<>, where "Uni" refers to unicode characters, "Ansi" refers to ansi characters, and "App" refers to achar characters, include the following: Name Size (chars) Purpose -------------------------------- ------------ ----------------------------------- StrUniBufSmall, StrAnsiBufSmall, StrAppBufSmall 32 small strings, e.g., for an integer StrUniBuf, StrAnsiBuf, StrAppBuf 260 ~1/4 K string, e.g., for a message StrUniBufPath, StrAnsiBufPath, StrAppBufPath MAX_PATH for path names StrUniBufBig, StrAnsiBufBig, StrAppBufBig 1024 1 K for larger strings StrUniBufHuge, StrAnsiBufHuge, StrAppBufHuge 16384 10 K for really large strings Template instantiations for StrApp also exists in the five given sizes above. MAX_PATH is defined in Windef.h to be 260 characters, and is the maximum length for a path. StrBaseBufCore<> is the baseclass of StrBaseBuf<> that implements the core functionality of StrBaseBuf<> that is not dependent on size. Note: Possible string utilities functions for the future, if needed, include: TrimLeft(cch), TrimRight(cch), ReplaceBy(chFrom, chTo), CompareCI in its variety of forms. ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #pragma once #endif #ifndef UTILSTRING_H #define UTILSTRING_H 1 /*:End Ignore*/ #include #include #include #include #include "GrCommon.h" #include "Throwable.h" //#include "common.h" //#include "debug.h" namespace gr { //:Associate with TextFormatter<>. const int kradMax = 36; // For converting from numeric to text with any allowable radix. extern const char g_rgchDigits[kradMax]; //:>******************************************************************************************** //:> General text manipulation functions. //:>******************************************************************************************** /*-----------------------------------------------------------------------------------*//*:Ignore Char Type Based Type Defns. The following template class is so we can define schar and utf16 to be opposite each other. XChar in templates below is defined to mean one type; YChar is defined to mean the other type. This also applies to other declarations that are specific to a character type. -------------------------------------------------------------------------------*//*:End Ignore*/ template class CharDefns; /*---------------------------------------------------------------------------------------------- The template class CharDefns is for wide (16 bit) characters. It is used by StrBase, StrBaseBufCore<>, and text manipulation functions to define schar and utf16 to be opposite each other. When CharDefns is used in template functions, XChar is defined to mean utf16; YChar is defined to mean schar. This also applies to other declarations that are specific to a character type. CharDefns also defines OtherChar to mean schar. ----------------------------------------------------------------------------------------------*/ template<> class CharDefns { public: typedef schar OtherChar; typedef void (*PfnWriteChars)(void * pv, const utf16 * prgch, int cch); }; typedef CharDefns::PfnWriteChars PfnWriteCharsW; /*---------------------------------------------------------------------------------------------- The template class CharDefns is for ansi (8 bit) characters. It is used by StrBase, StrBaseBufCore<>, and text manipulation functions to define schar and utf16 to be opposite each other. When CharDefns is used in template functions, XChar is defined to mean schar; YChar is defined to mean utf16. This also applies to other declarations that are specific to a character type. CharDefns also defines OtherChar to mean utf16. ----------------------------------------------------------------------------------------------*/ template<> class CharDefns { public: typedef utf16 OtherChar; typedef void (*PfnWriteChars)(void * pv, const schar * prgch, int cch); }; typedef CharDefns::PfnWriteChars PfnWriteCharsA; #ifdef GR_FW //:>******************************************************************************************** //:> Text manipulation functions for changing case. //:>******************************************************************************************** //:Associate with "Generic Text Manipulation Functions". /*-----------------------------------------------------------------------------------*//*:Ignore Ansi case mapping functions. These functions convert single-byte characters to lower or upper case as indicated. Note: Do not do pointer arithmetic in the argument to tolower and toupper. The tolower and toupper macros evaluate the input argument twice. Therefore the compiler performs any pointer arithmetic specified in a macro argument twice. The following code is correct. If the code was implemented as "toupper(*prgch++)" instead, you would produce incorrect results, such as corrupted strings or a GP fault. tolower converts a character to lowercase, if it isn't already lowercase, and returns the converted character. toupper converts a character to uppercase, if it isn't already uppercase, and returns the converted character. The exact behavior of ToUpper and ToLower depends on the LC_TYPE setting of the current Locale (see setlocale). By default, since the program starts up with setlocale(LC_ALL, "C"), only the standard 7-bit ASCII cased characters are converted (a-z or A-Z). If you use a different locale, you must make sure that the character passed as a parameter is indeed valid for the code page of that locale. -------------------------------------------------------------------------------*//*:End Ignore*/ /*---------------------------------------------------------------------------------------------- This ansi case mapping function converts cch single-byte characters in prgch to upper case. The exact behavior of ToUpper depends on the LC_TYPE setting of the current Locale (see setlocale in the MSDN Library). By default, since the program starts up with setlocale(LC_ALL, "C"), only the standard 7-bit ASCII cased characters are converted (a-z or A-Z). If you use a different locale, you must make sure that the character passed as a parameter is indeed valid for the code page of that locale. ----------------------------------------------------------------------------------------------*/ inline void ToUpper(schar * prgch, int cch) { AssertArray(prgch, cch); for ( ; --cch >= 0; prgch++) *prgch = (schar)toupper(*prgch); } /*---------------------------------------------------------------------------------------------- This ansi case mapping function converts the single-byte character ch to upper case. The exact behavior of ToUpper depends on the LC_TYPE setting of the current Locale (see setlocale in the MSDN Library). By default, since the program starts up with setlocale(LC_ALL, "C"), only the standard 7-bit ASCII cased characters are converted (a-z or A-Z). If you use a different locale, you must make sure that the character passed as a parameter is indeed valid for the code page of that locale. ----------------------------------------------------------------------------------------------*/ inline schar ToUpper(schar ch) { return (schar)toupper(ch); } /*---------------------------------------------------------------------------------------------- This ansi case mapping function converts cch single-byte characters in prgch to lower case. The exact behavior of ToLower depends on the LC_TYPE setting of the current Locale (see setlocale in the MSDN Library). By default, since the program starts up with setlocale(LC_ALL, "C"), only the standard 7-bit ASCII cased characters are converted (a-z or A-Z). If you use a different locale, you must make sure that the character passed as a parameter is indeed valid for the code page of that locale. ----------------------------------------------------------------------------------------------*/ inline void ToLower(schar * prgch, int cch) { AssertArray(prgch, cch); for ( ; --cch >= 0; prgch++) *prgch = (schar)tolower(*prgch); } /*---------------------------------------------------------------------------------------------- This ansi case mapping function converts the single-byte character ch to lower case. The exact behavior of ToLower depends on the LC_TYPE setting of the current Locale (see setlocale in the MSDN Library). By default, since the program starts up with setlocale(LC_ALL, "C"), only the standard 7-bit ASCII cased characters are converted (a-z or A-Z). If you use a different locale, you must make sure that the character passed as a parameter is indeed valid for the code page of that locale. ----------------------------------------------------------------------------------------------*/ inline schar ToLower(schar ch) { return (schar)tolower(ch); } /*-----------------------------------------------------------------------------------*//*:Ignore Unicode case mapping functions. -------------------------------------------------------------------------------*//*:End Ignore*/ /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts cch wide (16-bit) characters in prgch to upper case. ----------------------------------------------------------------------------------------------*/ void ToUpper(utf16 * prgch, int cch); /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts the wide (16-bit) character ch to upper case. ----------------------------------------------------------------------------------------------*/ utf16 ToUpper(utf16 ch); /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts cch wide (16-bit) characters in prgch to lower case. ----------------------------------------------------------------------------------------------*/ void ToLower(utf16 * prgch, int cch); /*---------------------------------------------------------------------------------------------- This unicode case mapping function converts the wide (16-bit) character ch to lower case. ----------------------------------------------------------------------------------------------*/ utf16 ToLower(utf16 ch); #endif /*---------------------------------------------------------------------------------------------- Get a pointer and cch (count of characters) for a string with id stid defined in a resource header file. @h3{Parameters} stid -- string id, e.g., kstidComment (defined in a resource header file). ----------------------------------------------------------------------------------------------*/ #ifdef GR_FW void GetResourceString(const utf16 ** pprgch, int * pcch, int stid); #endif /*---------------------------------------------------------------------------------------------- Return the length (number of characters) of a string. Surrogate pairs and other 'characters' that occupy more than the usual space (e.g., in ASCII double-byte encodings) are not recognized. StrLen just counts bytes or utf16s. This is defined to give us something with the same name to use in other template functions. This handles NULL as a zero-length string. ----------------------------------------------------------------------------------------------*/ template inline int StrLen(const XChar * psz) { AssertPszN(psz); if (!psz) return 0; const XChar * pch; for (pch = psz; *pch; pch++) ; return pch - psz; } //:Associate with "Generic Text Comparison Functions". /*---------------------------------------------------------------------------------------------- Case sensitive naive binary comparison of strings containing ansi (8 bit) characters. @h3{Return value} Returns negative, zero, or positive according to whether (prgch1, cch1) is less than, equal to, or greater than (prgch2, cch2). ----------------------------------------------------------------------------------------------*/ inline int CompareRgch(const char * prgch1, int cch1, const char * prgch2, int cch2) { int cch = (cch1 < cch2) ? cch1 : cch2; for ( ; --cch >= 0; prgch1++, prgch2++) { if (*prgch1 != *prgch2) return (int)(unsigned char)*prgch1 - (int)(unsigned char)*prgch2; } return cch1 - cch2; } /*---------------------------------------------------------------------------------------------- Case sensitive naive binary comparison of strings containing unicode (16 bit) characters. @h3{Return value} Returns negative, zero, or positive according to whether (prgch1, cch1) is less than, equal to, or greater than (prgch2, cch2). ----------------------------------------------------------------------------------------------*/ inline int CompareRgch(const utf16 * prgch1, int cch1, const utf16 * prgch2, int cch2) { int cch = (cch1 < cch2) ? cch1 : cch2; for ( ; --cch >= 0; prgch1++, prgch2++) { if (*prgch1 != *prgch2) return (int)*prgch1 - (int)*prgch2; } return cch1 - cch2; } #ifdef GR_FW /*---------------------------------------------------------------------------------------------- Case insensitive equality. This function can be used for either ansi (8 bit) or unicode (16-bit) characters. ----------------------------------------------------------------------------------------------*/ template inline bool EqualsRgchCI(const XChar * prgch1, const XChar * prgch2, int cch) { for ( ; --cch >= 0; prgch1++, prgch2++) { if (*prgch1 != *prgch2 && /*gr::*/ToLower(*prgch1) != /*gr::*/ToLower(*prgch2)) return false; } return true; } #endif //:>******************************************************************************************** //:> Text conversion functions for converting between unicode and ansi. //:>******************************************************************************************** //:Associate with "Generic Text Conversion Functions". /*---------------------------------------------------------------------------------------------- Convert from Unicode to 8-bit, either using the given codepage or the ANSI codepage. If cchwSrc is -1, WideCharToMultiByte assumes that prgchwSrc is null-terminated and the length is calculated automatically. @h3{Return value} If WideCharToMultiByte succeeds, and cchsDst is nonzero, the return value is the number of bytes written to the buffer pointed to by prgchsDst. If it succeeds, and cchsDst is zero, the return value is the required size, in bytes, for a buffer that can receive the translated string. If it fails, the return value is zero. @h3{Parameters} @code{ prgchwSrc -- source unicode string. cchwSrc -- count of characters in source string. prgchsDst -- destination ansi string. cchsDst -- count of characters in destination string. } ----------------------------------------------------------------------------------------------*/ inline size_t ConvertText(const utf16 * prgchwSrc, size_t cchwSrc, schar * prgchsDst, size_t cchsDst) { AssertArray(prgchwSrc, cchwSrc); AssertArray(prgchsDst, cchsDst); return Platform_UnicodeToANSI(prgchwSrc, cchwSrc, prgchsDst, cchsDst); } /*---------------------------------------------------------------------------------------------- Convert from 8-bit to Unicode, either using the given codepage or the ANSI codepage. If cchsSrc is -1, MultiByteToWideChar assumes that prgchsSrc is null-terminated and the length is calculated automatically. @h3{Return value} If MultiByteToWideChar succeeds, and cchwDst is nonzero, the return value is the number of wide characters written to the buffer pointed to by prgchwDst. If it succeeds, and cchwDst is zero, the return value is the required size, in wide characters, for a buffer that can receive the translated string. If it fails, the return value is zero. @h3{Parameters} @code{ prgchsSrc -- source ansi string. cchsSrc -- count of characters in source string. prgchwDst -- destination unicode string. cchwDst -- count of characters in destination string. } @null{ REVIEW LarryW: MultiByteToWideChar fails if MB_ERR_INVALID_CHARS is set and it encounters an invalid character in the source string. An invalid character is one that would translate to the default character if MB_ERR_INVALID_CHARS was not set, but is not the default character in the source string, or when a lead byte is found in a string and there is no valid trail byte for DBCS strings. When an invalid character is found, and MB_ERR_INVALID_CHARS _is_ set, the function returns 0 and sets GetLastError with the error ERROR_NO_UNICODE_TRANSLATION. Since we are not setting MB_ERR_INVALID_CHARS, it appears that we can still find out the count of characters. To verify this, we will need to test this with a multi-byte character set installed, such as the Japanese version of Windows. At the moment, this is not available. } ----------------------------------------------------------------------------------------------*/ inline size_t ConvertText(const schar * prgchsSrc, size_t cchsSrc, utf16 * prgchwDst, size_t cchwDst) { AssertArray(prgchsSrc, cchsSrc); AssertArray(prgchwDst, cchwDst); return Platform_AnsiToUnicode(prgchsSrc, cchsSrc, prgchwDst, cchwDst); } /*---------------------------------------------------------------------------------------------- Do a trivial copy. It is useful for implementing template functions. E.g., see ${StrBase<>#GetBstr}, or ${StrBaseBuf<>#Assign}. ----------------------------------------------------------------------------------------------*/ template inline int ConvertText(const XChar * prgchSrc, int cchSrc, XChar * prgchDst, int cchDst) { AssertArray(prgchSrc, cchSrc); AssertArray(prgchDst, cchDst); Assert(cchDst >= cchSrc || 0 == cchDst); if (!cchDst) return cchSrc; std::copy(prgchSrc, prgchSrc + cchSrc, prgchDst); // CopyItems(prgchSrc, prgchDst, cchSrc); return cchSrc; } /*---------------------------------------------------------------------------------------------- Determine the largest number of YChars that can be converted to cxchMax or fewer XChars. This does a binary search. ----------------------------------------------------------------------------------------------*/ template inline size_t CychFitConvertedText(const YChar * prgych, size_t cych, size_t cxchMax) { AssertArray(prgych, cych); Assert(0 <= cxchMax); if (0 >= cxchMax) return 0; // The most common case is that each ych becomes a single xch, so test for this first. if (cych > cxchMax && ConvertText(prgych, cxchMax, nullptr, 0) <= cxchMax && ConvertText(prgych, cxchMax + 1, nullptr, 0) > cxchMax) { return cxchMax; } int cychMin, cychLim; for (cychMin = 0, cychLim = cych; cychMin < cychLim; ) { int cychT = (unsigned int)(cychMin + cychLim + 1) / 2; Assert(cychMin < cychT && cychT <= cychLim); int cxchT = ConvertText(prgych, cychT, nullptr, 0); if (cxchT > cxchMax) cychLim = cychT - 1; else cychMin = cychT; } return cychMin; } //:>******************************************************************************************** //:> Smart string class StrBase<>. //:>******************************************************************************************** /*---------------------------------------------------------------------------------------------- Smart string class StrBase<> is used to implement strings of unicode or ansi characters. It creates an instance of the embedded struct StrBuffer, storing the characters on the heap. The StrBuffer is stored in the member variable m_pbuf. Note: Don't use new or alloc on StrBase<>. StrBuffer has its own static create function that it uses to appropriately allocate space for the characters. StrBuffer keeps a reference count. Thus, assignment of one StrBase<> to another simply results in the two pointing to the same block of memory. However, if one of them is now changed in some way, the other one is not affected; the modified one will be given a new StrBuffer. If the allocation of space for characters fails, an exception is thrown. StrBuffer stores the byte count in its member variable m_cb immediately followed by the characters in its member variable m_rgch[]. This layout matches a BSTR, so if a client asks for a BSTR it gets a pointer to m_rgch. The three instantiations of StrBase<> are: @code{ StrUni, which contains unicode (16 bit) characters. StrAnsi, which contains ansi (8 bit) characters. StrApp, which contains achar characters. achar is typedefed in Common.h as utf16 for UNICODE and as schar, i.e., char, for all other cases. } For a comparison of the other smart string class, see ${StrBaseBuf<>}. @h3{Hungarian: stb} ----------------------------------------------------------------------------------------------*/ template class StrBase { public: #ifdef DEBUG__XX // Check to make certain we have a valid internal state for debugging purposes. bool AssertValid(void) const { AssertPtr(this); AssertObj(m_pbuf); return true; } #define DBWINIT() m_dbw1.m_pstrbase = this; // so DebugWatch can find string #else #define DBWINIT() #endif //DEBUG // The other character type. typedef typename CharDefns::OtherChar YChar; /*------------------------------------------------------------------------------------------ Destructor. ------------------------------------------------------------------------------------------*/ ~StrBase(void) { AssertObj(this); if (m_pbuf) { m_pbuf->Release(); m_pbuf = NULL; } } /*------------------------------------------------------------------------------------------ Generic constructor. ------------------------------------------------------------------------------------------*/ StrBase(void) { m_pbuf = &s_bufEmpty; m_pbuf->AddRef(); AssertObj(this); DBWINIT(); } /*------------------------------------------------------------------------------------------ Construct a new StrBase<> from a StrBase of the other character type. ------------------------------------------------------------------------------------------*/ StrBase(const StrBase & stb) { AssertObj(&stb); m_pbuf = &s_bufEmpty; m_pbuf->AddRef(); int cch = stb.Length(); if (cch) _Replace(0, 0, stb.m_pbuf->m_rgch, 0, cch); DBWINIT(); } /*------------------------------------------------------------------------------------------ Construct a new StrBase<> from a StrBase of the same character type. ------------------------------------------------------------------------------------------*/ StrBase(const StrBase & stb) { AssertObj(&stb); m_pbuf = stb.m_pbuf; m_pbuf->AddRef(); AssertObj(this); DBWINIT(); } /*------------------------------------------------------------------------------------------ Construct a new StrBase<> from a zero-terminated string of either character type. ------------------------------------------------------------------------------------------*/ template StrBase(const ZChar * psz) { AssertPszN(psz); m_pbuf = &s_bufEmpty; m_pbuf->AddRef(); int cch = StrLen(psz); if (cch) _Replace(0, 0, psz, 0, cch); DBWINIT(); } /*------------------------------------------------------------------------------------------ Construct a new StrBase<> from a string, of either character type, with cch characters. ------------------------------------------------------------------------------------------*/ template StrBase(const ZChar * prgch, int cch) { AssertArray(prgch, cch); m_pbuf = &s_bufEmpty; m_pbuf->AddRef(); if (cch) _Replace(0, 0, prgch, 0, cch); DBWINIT(); } /*------------------------------------------------------------------------------------------ Construct a new StrBase<> from a string with id stid defined in a resource header file. ------------------------------------------------------------------------------------------*/ #ifdef GR_FW StrBase(const int stid) { m_pbuf = &s_bufEmpty; m_pbuf->AddRef(); const utf16 *prgchw; int cch; ::GetResourceString(&prgchw, &cch, stid); if (cch) _Replace(0, 0, prgchw, 0, cch); DBWINIT(); } #endif /*------------------------------------------------------------------------------------------ Create a new internal buffer of size cch and return a pointer to the characters. This preserves the characters currently in the string, up the the min of the old and new sizes. It is expected that the caller will fill in any newly allocated characters. ------------------------------------------------------------------------------------------*/ void SetSize(int cch, XChar ** pprgch); //:>**************************************************************************************** //:> Array-like functionality. //:>**************************************************************************************** /*------------------------------------------------------------------------------------------ Get the length, i.e., the number of char or utf16 characters (as opposed to a count of logical characters. ------------------------------------------------------------------------------------------*/ size_t Length(void) const { AssertObj(this); return m_pbuf->Cch(); } /*------------------------------------------------------------------------------------------ Make the string empty, by making the buffer empty. ------------------------------------------------------------------------------------------*/ void Clear(void) { AssertObj(this); _SetBuf(&s_bufEmpty); } /*------------------------------------------------------------------------------------------ Return the character at index ich. Asserts that ich is in range. ------------------------------------------------------------------------------------------*/ XChar GetAt(int ich) const { AssertObj(this); Assert((unsigned int)ich <= (unsigned int)m_pbuf->Cch()); return m_pbuf->m_rgch[ich]; } /*------------------------------------------------------------------------------------------ Return the character at index ich. Use for read only. Asserts that ich is in range. ------------------------------------------------------------------------------------------*/ XChar operator [] (int ich) const { AssertObj(this); Assert((unsigned int)ich <= (unsigned int)m_pbuf->Cch()); return m_pbuf->m_rgch[ich]; } /*------------------------------------------------------------------------------------------ Set the character at index ich to ch. ------------------------------------------------------------------------------------------*/ void SetAt(int ich, XChar ch); //:>**************************************************************************************** //:> Access. //:>**************************************************************************************** /*------------------------------------------------------------------------------------------ Return a read-only pointer to the characters. ------------------------------------------------------------------------------------------*/ const XChar * Chars(void) const { AssertObj(this); return m_pbuf->m_rgch; } /*------------------------------------------------------------------------------------------ Return a read-only pointer to the characters. This is the cast operator. ------------------------------------------------------------------------------------------*/ operator const XChar *(void) const { AssertObj(this); return m_pbuf->m_rgch; } /*------------------------------------------------------------------------------------------ Return true if the count of bytes in the buffer is not zero. ------------------------------------------------------------------------------------------*/ operator bool(void) const { AssertObj(this); return m_pbuf->m_cb; } /*------------------------------------------------------------------------------------------ Return true if the count of bytes in the buffer is zero. ------------------------------------------------------------------------------------------*/ bool operator !(void) const { AssertObj(this); return !m_pbuf->m_cb; } //:>**************************************************************************************** //:> Assignment. //:>**************************************************************************************** /*------------------------------------------------------------------------------------------ Assign the value of this StrBase<> to be the same as the value of a StrBase<> of the other character type. ------------------------------------------------------------------------------------------*/ void Assign(const StrBase & stb) { AssertObj(this); AssertObj(&stb); _Replace(0, m_pbuf->Cch(), stb.m_pbuf->m_rgch, 0, stb.m_pbuf->Cch()); } /*------------------------------------------------------------------------------------------ Assign the value of this StrBase<> to be the same as the value of another StrBase<> of the same character type. ------------------------------------------------------------------------------------------*/ void Assign(const StrBase & stb) { AssertObj(this); AssertObj(&stb); _SetBuf(stb.m_pbuf); } /*------------------------------------------------------------------------------------------ Assign the characters from the given zero-terminated string psz, of either character type, to be the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ template void Assign(const ZChar * psz) { AssertObj(this); AssertPszN(psz); _Replace(0, m_pbuf->Cch(), psz, 0, StrLen(psz)); } /*------------------------------------------------------------------------------------------ Assign the characters from the given string (prgch, cch), of either character type, to be the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ template void Assign(const ZChar * prgch, int cch) { AssertObj(this); AssertArray(prgch, cch); _Replace(0, m_pbuf->Cch(), prgch, 0, cch); } /*------------------------------------------------------------------------------------------ Assign the value of this StrBase<> to be the same as the string with id stid defined in a resource header file. ------------------------------------------------------------------------------------------*/ /*void Load(const int stid) { AssertObj(this); const utf16 *prgchw; int cch; ::GetResourceString(&prgchw, &cch, stid); if (cch) _Replace(0, m_pbuf->Cch(), prgchw, 0, cch); }*/ //:> Assignment operators. /*------------------------------------------------------------------------------------------ Assign the value of this StrBase<> to be the same as the value of a StrBase<> of the other character type. ------------------------------------------------------------------------------------------*/ StrBase & operator = (const StrBase & stb) { AssertObj(this); AssertObj(&stb); _Replace(0, m_pbuf->Cch(), stb.m_pbuf->m_rgch, 0, stb.m_pbuf->Cch()); return *this; } /*------------------------------------------------------------------------------------------ Assign the value of this StrBase<> to be the same as the value of another StrBase<> of the same character type. ------------------------------------------------------------------------------------------*/ StrBase & operator = (const StrBase & stb) { AssertObj(this); AssertObj(&stb); _SetBuf(stb.m_pbuf); return *this; } /*------------------------------------------------------------------------------------------ Assign the characters from the given zero-terminated string psz, of either character type, to be the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ template StrBase & operator = (const ZChar * psz) { AssertObj(this); AssertPszN(psz); _Replace(0, m_pbuf->Cch(), psz, 0, StrLen(psz)); return *this; } //:>**************************************************************************************** //:> Concatenation. //:>**************************************************************************************** /*------------------------------------------------------------------------------------------ Append a copy of the value of a StrBase<>, of the other character type, to the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ void Append(const StrBase & stb) { AssertObj(this); AssertObj(&stb); int cchCur = m_pbuf->Cch(); _Replace(cchCur, cchCur, stb.m_pbuf->m_rgch, 0, stb.m_pbuf->Cch()); } /*------------------------------------------------------------------------------------------ Append a copy of the value of another StrBase<>, of the same character type, to the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ void Append(const StrBase & stb) { AssertObj(this); AssertObj(&stb); int cchCur = m_pbuf->Cch(); if (!cchCur) _SetBuf(stb.m_pbuf); else _Replace(cchCur, cchCur, stb.m_pbuf->m_rgch, 0, stb.m_pbuf->Cch()); } /*------------------------------------------------------------------------------------------ Append a copy of the zero-terminated string psz, of either character type, to the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ template void Append(const ZChar * psz) { AssertPszN(psz); int cchCur = m_pbuf->Cch(); _Replace(cchCur, cchCur, psz, 0, StrLen(psz)); } /*------------------------------------------------------------------------------------------ Append a copy of the string (prgch, cch), of either character type, to the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ template void Append(const ZChar * prgch, int cch) { AssertObj(this); AssertArray(prgch, cch); int cchCur = m_pbuf->Cch(); _Replace(cchCur, cchCur, prgch, 0, cch); } /*------------------------------------------------------------------------------------------ Append a copy of the string with id stid defined in a resource header file to the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ #ifdef GR_FW void AppendLoad(const int stid) { AssertObj(this); const utf16 *prgchw; int cch; int cchCur = m_pbuf->Cch(); ::GetResourceString(&prgchw, &cch, stid); if (cch) _Replace(cchCur, cchCur, prgchw, 0, cch); } #endif //:> += operators. /*------------------------------------------------------------------------------------------ Append a copy of the value of a StrBase<>, which may be of either character type, to the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ template StrBase & operator += (const StrBase & stb) { Append(stb); return *this; } /*------------------------------------------------------------------------------------------ Append a copy of the zero-terminated string psz, of either character type, to the value of this StrBase<>. ------------------------------------------------------------------------------------------*/ template StrBase & operator += (const ZChar * psz) { Append(psz); return *this; } //:> + operators. /*------------------------------------------------------------------------------------------ Return a new StrBase<> with the value of this StrBase<> followed by the value of another StrBase<>, which may be of either character type. ------------------------------------------------------------------------------------------*/ template StrBase operator + (const StrBase & stb) const { StrBase stbRet(this); stbRet.Append(stb); return stbRet; } /*------------------------------------------------------------------------------------------ Return a new StrBase<> with the value of this StrBase<> followed by a copy of the zero-terminated string psz, of either character type. ------------------------------------------------------------------------------------------*/ template StrBase operator + (const ZChar * psz) const { StrBase stbRet(this); stbRet.Append(psz); return stbRet; } //:>**************************************************************************************** //:> Comparison. //:>**************************************************************************************** //:> Equality operators. /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to the value of stb, another StrBase<> of the same character type. Two StrBase<>'s are equal if they both contain the exact sequence of characters and if both have the same character count. ------------------------------------------------------------------------------------------*/ bool Equals(const StrBase & stb) const { AssertObj(this); AssertObj(&stb); if (m_pbuf == stb.m_pbuf) return true; if (m_pbuf->m_cb != stb.m_pbuf->m_cb) return false; return 0 == memcmp(m_pbuf->m_rgch, stb.m_pbuf->m_rgch, m_pbuf->m_cb); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to the value of the zero-terminated string psz, of the same character type. A StrBase<> is equal to a zero-terminated string if they both contain the exact sequence of characters and if both have the same character count. ------------------------------------------------------------------------------------------*/ bool Equals(const XChar * psz) const { AssertObj(this); AssertPszN(psz); return Equals(psz, StrLen(psz)); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to the value of the string (prgch, cch), of the same character type. A StrBase<> is equal to a string if they both contain the exact sequence of characters and if both have the same character count. ------------------------------------------------------------------------------------------*/ bool Equals(const XChar * prgch, size_t cch) const { AssertObj(this); AssertArray(prgch, cch); if (m_pbuf->m_cb != size_t(cch) * sizeof(XChar)) return false; return 0 == memcmp(m_pbuf->m_rgch, prgch, cch * sizeof(XChar)); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to the value of stb, another StrBase<> of the same character type. Two StrBase<>'s are equal if they both contain the exact sequence of characters and if both have the same character count. (See ${StrBase<>#Equals}). ------------------------------------------------------------------------------------------*/ bool operator == (const StrBase & stb) const { AssertObj(&stb); return Equals(stb); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to the value of the zero-terminated string psz, of the same character type. A StrBase<> is equal to a zero-terminated string if they both contain the exact sequence of characters and if both have the same character count. (See ${StrBase<>#Equals}). ------------------------------------------------------------------------------------------*/ bool operator == (const XChar * psz) const { AssertPszN(psz); return Equals(psz, StrLen(psz)); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is not equal to the value of stb, another StrBase<> of the same character type. Two StrBase<>'s are equal if they both contain the exact sequence of characters and if both have the same character count. (See ${StrBase<>#Equals}). ------------------------------------------------------------------------------------------*/ bool operator != (const StrBase & stb) const { AssertObj(&stb); return !Equals(stb); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is not equal to the value of the zero-terminated string psz, of the same character type. A StrBase<> is equal to a zero-terminated string if they both contain the exact sequence of characters and if both have the same character count. (See ${StrBase<>#Equals}). ------------------------------------------------------------------------------------------*/ bool operator != (const XChar * psz) const { AssertPszN(psz); return !Equals(psz, StrLen(psz)); } //:> Greater than and less than comparisons. /*------------------------------------------------------------------------------------------ Case sensitive naive binary comparison of this StrBase<> with another StrBase<> that contains the same type of characters. @h3{Return value} Returns negative, zero, or positive according to whether this StrBase<> is less than, equal to, or greater than stb. ------------------------------------------------------------------------------------------*/ int Compare(const StrBase & stb) const { AssertObj(this); AssertObj(&stb); return Compare(stb.m_pbuf->m_rgch, stb.m_pbuf->Cch()); } /*------------------------------------------------------------------------------------------ Case sensitive naive binary comparison of this StrBase<> with a zero-terminated string psz of the same character type. @h3{Return value} Returns negative, zero, or positive according to whether this StrBase<> is less than, equal to, or greater than the zero-terminated string psz. ------------------------------------------------------------------------------------------*/ int Compare(const XChar * psz) const { AssertObj(this); AssertPszN(psz); return Compare(psz, StrLen(psz)); } /*------------------------------------------------------------------------------------------ Case sensitive naive binary comparison of this StrBase<> with a string (prgch, cch) of the same character type. (See CompareRgch). @h3{Return value} Returns negative, zero, or positive according to whether this StrBase<> is less than, equal to, or greater than the string (prgch, cch). ------------------------------------------------------------------------------------------*/ int Compare(const XChar * prgch, int cch) const { AssertObj(this); AssertArray(prgch, cch); return CompareRgch(m_pbuf->m_rgch, m_pbuf->Cch(), prgch, cch); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is less than another StrBase<> of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator < (const StrBase & stb) const { AssertObj(&stb); return Compare(stb) < 0; } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is less than a zero-terminated string psz of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator < (const XChar * psz) const { AssertPszN(psz); return Compare(psz, StrLen(psz)) < 0; } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is greater than another StrBase<> of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator > (const StrBase & stb) const { AssertObj(&stb); return Compare(stb) > 0; } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is greater than a zero-terminated string psz of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator > (const XChar * psz) const { AssertPszN(psz); return Compare(psz, StrLen(psz)) > 0; } //:> REVIEW Testing(LarryW): Is the following comment still true? //:> The operators <= and => will return true if two NULL buffers are compared. //:> However, the equality operator == will return false if a buffer m_pbuf is NULL. /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is less than or equal to another StrBase<> of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator <= (const StrBase & stb) const { AssertObj(&stb); return Compare(stb) <= 0; } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is less than or equal to a zero-terminated string psz of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator <= (const XChar * psz) const { AssertPszN(psz); return Compare(psz, StrLen(psz)) <= 0; } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is greater than or equal to another StrBase<> of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator >= (const StrBase & stb) const { AssertObj(&stb); return Compare(stb) >= 0; } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is greater than or equal to a zero-terminated string psz of the same character type, based on a case sensitive naive binary comparison (see ${StrBase<>#Compare}). ------------------------------------------------------------------------------------------*/ bool operator >= (const XChar * psz) const { AssertPszN(psz); return Compare(psz, StrLen(psz)) >= 0; } #ifdef GR_FW //:> Case insensitive compare. /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to another StrBase<> of the same character type, based on a case insensitive comparison. ------------------------------------------------------------------------------------------*/ bool EqualsCI(const StrBase & stb) const { AssertObj(this); AssertObj(&stb); if (m_pbuf == stb.m_pbuf) return true; if (m_pbuf->m_cb != stb.m_pbuf->m_cb) return false; return EqualsRgchCI(m_pbuf->m_rgch, stb.m_pbuf->m_rgch, m_pbuf->Cch()); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to the value of the zero-terminated string psz, of the same character type, based on a case insensitive comparison. ------------------------------------------------------------------------------------------*/ bool EqualsCI(const XChar * psz) const { AssertObj(this); AssertPszN(psz); return EqualsCI(psz, StrLen(psz)); } /*------------------------------------------------------------------------------------------ Return true if this StrBase<> is equal to the value of the string (prgch, cch), of the same character type, based on a case insensitive comparison. ------------------------------------------------------------------------------------------*/ bool EqualsCI(const XChar * prgch, int cch) const { AssertObj(this); AssertArray(prgch, cch); if (m_pbuf->m_cb != size_t(cch) * sizeof(XChar)) return false; return EqualsRgchCI(m_pbuf->m_rgch, prgch, m_pbuf->Cch()); } #endif //:>**************************************************************************************** //:> Extraction. //:>**************************************************************************************** /*------------------------------------------------------------------------------------------ Extract the first (that is, leftmost) cch characters from this StrBase<> and return a copy of the extracted substring. If cch exceeds the string length, then the entire string is extracted. ------------------------------------------------------------------------------------------*/ StrBase Left(int cch) const { AssertObj(this); Assert(0 <= cch); int cchCur = Length(); if (cch >= cchCur) return *this; return StrBase(m_pbuf->m_rgch, cch); } /*------------------------------------------------------------------------------------------ Extract a substring of length cch characters from this StrBase<>, starting at position ichMin. Return a copy of the extracted substring. If cch exceeds the string length minus ichMin, then the right-most substring is extracted. If ichMin exceeds the string length, an empty string is returned. ------------------------------------------------------------------------------------------*/ StrBase Mid(int ichMin, int cch) const { AssertObj(this); Assert(0 <= ichMin); Assert(0 <= cch); // If ichMin exceeds the string length, return an empty string. int cchCur = Length(); if (ichMin >= cchCur || cch <= 0) return StrBase(); if (cch >= cchCur - ichMin) { if (!ichMin) return *this; cch = cchCur - ichMin; } return StrBase(m_pbuf->m_rgch + ichMin, cch); } /*------------------------------------------------------------------------------------------ Extract the last (that is, rightmost) cch characters from this StrBase<> and return a copy of the extracted substring. If cch exceeds the string length, then the entire string is extracted. ------------------------------------------------------------------------------------------*/ StrBase Right(int cch) const { AssertObj(this); Assert(0 <= cch); int cchCur = Length(); if (cch >= cchCur) return *this; return StrBase(m_pbuf->m_rgch + cchCur - cch, cch); } //:>**************************************************************************************** //:> Conversion. //:>**************************************************************************************** #ifdef GR_FW /*------------------------------------------------------------------------------------------ Convert characters to lower case. If this string object is sharing a buffer, then the existing characters are copied into a new buffer solely owned by this StrBase<>. ------------------------------------------------------------------------------------------*/ void ToLower(void); /*------------------------------------------------------------------------------------------ Convert characters to upper case. If this string object is sharing a buffer, then the existing characters are copied into a new buffer solely owned by this StrBase<>. ------------------------------------------------------------------------------------------*/ void ToUpper(void); #endif /*------------------------------------------------------------------------------------------ Replace the range of characters [ichMin, ichLim) with the characters from stb, a StrBase<> consisting of the other type of character. ------------------------------------------------------------------------------------------*/ void Replace(int ichMin, int ichLim, StrBase & stb) { AssertObj(this); Assert((unsigned int)ichMin <= (unsigned int)ichLim && (unsigned int)ichLim <= (unsigned int)m_pbuf->Cch()); AssertObj(&stb); _Replace(ichMin, ichLim, stb.m_pbuf->m_rgch, 0, stb.m_pbuf->Cch()); } /*------------------------------------------------------------------------------------------ Replace the range of characters [ichMin, ichLim) with the characters from stb, a StrBase<> consisting of the same type of character. ------------------------------------------------------------------------------------------*/ void Replace(int ichMin, int ichLim, StrBase & stb) { AssertObj(this); Assert((unsigned int)ichMin <= (unsigned int)ichLim && (unsigned int)ichLim <= (unsigned int)m_pbuf->Cch()); AssertObj(&stb); if (0 == ichMin && ichLim == m_pbuf->Cch()) _SetBuf(stb.m_pbuf); else _Replace(ichMin, ichLim, stb.m_pbuf->m_rgch, 0, stb.m_pbuf->Cch()); } /*------------------------------------------------------------------------------------------ Replace the range of characters [ichMin, ichLim) with the characters from the zero-terminated string psz of either character type. ------------------------------------------------------------------------------------------*/ template void Replace(int ichMin, int ichLim, const ZChar * psz) { AssertObj(this); Assert((unsigned int)ichMin <= (unsigned int)ichLim && (unsigned int)ichLim <= (unsigned int)m_pbuf->Cch()); AssertPszN(psz); _Replace(ichMin, ichLim, psz, 0, StrLen(psz)); } /*------------------------------------------------------------------------------------------ Replace the range of characters [ichMin, ichLim) with the characters from the string (prgch, cch) of either character type. ------------------------------------------------------------------------------------------*/ template void Replace(int ichMin, int ichLim, const ZChar * prgch, int cch) { AssertObj(this); Assert((unsigned int)ichMin <= (unsigned int)ichLim && (unsigned int)ichLim <= (unsigned int)m_pbuf->Cch()); AssertArray(prgch, cch); _Replace(ichMin, ichLim, prgch, 0, cch); } /*------------------------------------------------------------------------------------------ Replace the range of characters [ichMin, ichLim) with cchIns instances of the character chIns. ------------------------------------------------------------------------------------------*/ template void ReplaceFill(int ichMin, int ichLim, const ZChar chIns, int cchIns) { AssertObj(this); Assert((unsigned int)ichMin <= (unsigned int)ichLim && (unsigned int)ichLim <= (unsigned int)m_pbuf->Cch()); Assert(cchIns >= 0); _Replace(ichMin, ichLim, NULL, chIns, cchIns); } //:>**************************************************************************************** //:> Searching. //:>**************************************************************************************** /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character in this StrBase<> that matches the requested character, ch. Return -1 if the character, ch, is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int FindCh(XChar ch, int ichMin = 0) const { AssertObj(this); Assert(ichMin >= 0); int ich; int cch = Length(); for (ich = ichMin; ich < cch; ich++) { if (m_pbuf->m_rgch[ich] == ch) return ich; } return -1; } #ifdef GR_FW /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character in this StrBase<> that matches the requested character, ch, not considering the case. Return -1 if the character, ch, is not found. ------------------------------------------------------------------------------------------*/ int FindChCI(XChar ch, int ichMin = 0) const { AssertObj(this); Assert(ichMin >= 0); int ich; int cch = Length(); ch = /*gr::*/ToLower(ch); for (ich = ichMin; ich < cch; ich++) { if (/*gr::*/ToLower(m_pbuf->m_rgch[ich]) == ch) return ich; } return -1; } #endif /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the last character in this StrBase<> that matches the requested character, ch. Return -1 if the character, ch, is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int ReverseFindCh(XChar ch, int ichLast = 0x7FFFFFFF) const { AssertObj(this); Assert(ichLast >= 0); if (ichLast >= Length()) ichLast = Length() - 1; int ich; for (ich = ichLast; ich >= 0; --ich) { if (m_pbuf->m_rgch[ich] == ch) return ich; } return -1; } #ifdef GR_FW /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the last character in this StrBase<> that matches the requested character, ch, not considering the case. Return -1 if the character, ch, is not found. ------------------------------------------------------------------------------------------*/ int ReverseFindChCI(XChar ch, int ichLast = 0x7FFFFFFF) const { AssertObj(this); Assert(ichLast >= 0); if (ichLast >= Length()) ichLast = Length() - 1; ch = /*gr::*/ToLower(ch); int ich; for (ich = ichLast; ich >= 0; --ich) { if (/*gr::*/ToLower(m_pbuf->m_rgch[ich]) == ch) return ich; } return -1; } #endif /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character of the first substring in this StrBase<> that matches the substring, stb, passed as a parameter. Return -1 if the substring is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int FindStr(const StrBase & stb, int ichMin = 0) const { AssertObj(this); AssertObj(&stb); Assert(ichMin >= 0); if (m_pbuf == stb.m_pbuf) return ichMin == 0 ? 0 : -1; return FindStr(stb.m_pbuf->m_rgch, stb.Length(), ichMin); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character of the first substring in this StrBase<> that matches the substring, psz, passed as a parameter. Return -1 if the substring is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int FindStr(const XChar * psz, int ichMin = 0) const { AssertObj(this); AssertPszN(psz); Assert(ichMin >= 0); return FindStr(psz, StrLen(psz), ichMin); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character of the first substring in this StrBase<> that matches the substring, (prgch, cch), passed as parameters. Return -1 if the substring is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int FindStr(const XChar * prgch, size_t cch, int ichMin = 0) const { AssertObj(this); AssertArray(prgch, cch); Assert(ichMin >= 0); if (!cch) return ichMin <= Length() ? ichMin : -1; // Last position in m_rgch where prgch can be. int ichLast = Length() - cch; int ich; for (ich = ichMin; ich <= ichLast; ich++) { if (m_pbuf->m_rgch[ich] == prgch[0] && 0 == memcmp(m_pbuf->m_rgch + ich, prgch, cch * sizeof(XChar))) { return ich; } } return -1; } #ifdef GR_FW /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character of the first substring in this StrBase<> that matches the substring, stb, passed as a parameter, not considering the case. Return -1 if the substring is not found. ------------------------------------------------------------------------------------------*/ int FindStrCI(const StrBase & stb, int ichMin = 0) const { AssertObj(this); AssertObj(&stb); Assert(ichMin >= 0); if (m_pbuf == stb.m_pbuf) return ichMin == 0 ? 0 : -1; return FindStrCI(stb.m_pbuf->m_rgch, stb.Length(), ichMin); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character of the first substring in this StrBase<> that matches the substring, psz, passed as a parameter, not considering the case. Return -1 if the substring is not found. ------------------------------------------------------------------------------------------*/ int FindStrCI(const XChar * psz, int ichMin = 0) const { AssertObj(this); AssertPszN(psz); Assert(ichMin >= 0); return FindStrCI(psz, StrLen(psz), ichMin); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no less than ichMin, of the first character of the first substring in this StrBase<> that matches the substring, (prgch, cch), passed as parameters, not considering the case. Return -1 if the substring is not found. ------------------------------------------------------------------------------------------*/ int FindStrCI(const XChar * prgch, int cch, int ichMin = 0) const { AssertObj(this); AssertArray(prgch, cch); Assert(ichMin >= 0); if (!cch) return ichMin <= Length() ? ichMin : -1; // Last position in m_rgch where prgch can be. int ichLast = Length() - cch; int ich; XChar ch = /*gr::*/ToLower(prgch[0]); for (ich = ichMin; ich <= ichLast; ich++) { if (/*gr::*/ToLower(m_pbuf->m_rgch[ich]) == ch && EqualsRgchCI(m_pbuf->m_rgch + ich, prgch, cch)) { return ich; } } return -1; } #endif /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the first character of the last substring in this StrBase<> that matches the substring, stb, passed as a parameter. Return -1 if the substring is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int ReverseFindStr(const StrBase & stb, int ichLast = 0x7FFFFFFF) const { AssertObj(this); AssertObj(&stb); Assert(ichLast >= 0); if (m_pbuf == stb.m_pbuf) return 0; return ReverseFindStr(stb.m_pbuf->m_rgch, stb.Length(), ichLast); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the first character of the last substring in this StrBase<> that matches the substring, psz, passed as a parameter. Return -1 if the substring is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int ReverseFindStr(const XChar * psz, int ichLast = 0x7FFFFFFF) const { AssertObj(this); AssertPszN(psz); Assert(ichLast >= 0); return ReverseFindStr(psz, StrLen(psz), ichLast); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the first character of the last substring in this StrBase<> that matches the substring, (prgch, cch), passed as parameters. Return -1 if the substring is not found. This is case sensitive. ------------------------------------------------------------------------------------------*/ int ReverseFindStr(const XChar * prgch, size_t cch, int ichLast = 0x7FFFFFFF) const { AssertObj(this); AssertArray(prgch, cch); Assert(ichLast >= 0); if (ichLast > Length() - cch) ichLast = Length() - cch; int ich; for (ich = ichLast; ich >= 0; --ich) { if (m_pbuf->m_rgch[ich] == prgch[0] && 0 == memcmp(m_pbuf->m_rgch + ich, prgch, cch * sizeof(XChar))) { return ich; } } return -1; } #ifdef GR_FW /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the first character of the last substring in this StrBase<> that matches the substring, stb, passed as a parameter, not considering the case. Return -1 if the substring is not found. ------------------------------------------------------------------------------------------*/ int ReverseFindStrCI(const StrBase & stb, int ichLast = 0x7FFFFFFF) const { AssertObj(this); AssertObj(&stb); Assert(ichLast >= 0); if (m_pbuf == stb.m_pbuf) return 0; return ReverseFindStrCI(stb.m_pbuf->m_rgch, stb.Length(), ichLast); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the first character of the last substring in this StrBase<> that matches the substring, psz, passed as a parameter, not considering the case. Return -1 if the substring is not found. ------------------------------------------------------------------------------------------*/ int ReverseFindStrCI(const XChar * psz, int ichLast = 0x7FFFFFFF) const { AssertObj(this); AssertPszN(psz); Assert(ichLast >= 0); return ReverseFindStrCI(psz, StrLen(psz), ichLast); } /*------------------------------------------------------------------------------------------ Return the zero-based index, no greater than ichLast, of the first character of the last substring in this StrBase<> that matches the substring, (prgch, cch), passed as parameters, not considering the case. Return -1 if the substring is not found. ------------------------------------------------------------------------------------------*/ int ReverseFindStrCI(const XChar * prgch, int cch, int ichLast = 0x7FFFFFFF) const { AssertObj(this); AssertArray(prgch, cch); Assert(ichLast >= 0); if (ichLast > Length() - cch) ichLast = Length() - cch; XChar ch = /*gr::*/ToLower(prgch[0]); int ich; for (ich = ichLast; ich >= 0; --ich) { if (/*gr::*/ToLower(m_pbuf->m_rgch[ich]) == ch && EqualsRgchCI(m_pbuf->m_rgch + ich, prgch, cch)) { return ich; } } return -1; } #endif protected: friend class StrBase; //:>**************************************************************************************** //:> Struct StrBuffer. //:>**************************************************************************************** /*------------------------------------------------------------------------------------------ The struct StrBuffer is used by StrBase<> to store the characters on the heap. StrBuffer keeps a reference count. Thus, assignment of one StrBase<> to another simply results in the two pointing to the same block of memory. StrBuffer stores the byte count in its member variable m_cb immediately followed by the characters in its member variable m_rgch[]. This layout matches a BSTR, so if a client asks for a BSTR it gets a pointer to m_rgch. The static instance of StrBuffer, s_bufEmpty, is used to represent an empty string. @h3{Hungarian: buf} ------------------------------------------------------------------------------------------*/ struct StrBuffer { public: //:> We track the ref count minus one so the static StrBase::s_bufEmpty is useable //:> without initialization by a constructor. This is so other constructors can use //:> instances of StrBase without having to deal with the possibility of s_bufEmpty //:> being uninitialized. long m_crefMinusOne; // The reference count minus one. size_t m_cb; // The byte count. XChar m_rgch[1]; // The characters. #ifdef DEBUG // Check to make certain we have a valid internal state for debugging purposes. bool AssertValid(void) { AssertPtr(this); Assert(0 <= m_crefMinusOne); Assert(m_cb >= 0); Assert(0 == m_cb % sizeof(XChar)); AssertArray(m_rgch, m_cb / sizeof(XChar) + 1); Assert(0 == m_rgch[m_cb / sizeof(XChar)]); return true; } #endif // Static method to create a new StrBuffer. This calls malloc to allocate the buffer. static StrBuffer * Create(int cch) { Assert(0 <= cch); int cb = sizeof(StrBuffer) + cch * sizeof(XChar); Assert(cb >= sizeof(StrBuffer)); StrBuffer * pbuf = (StrBuffer *)malloc(cb); if (!pbuf) ThrowHr(WarnHr(E_OUTOFMEMORY)); pbuf->m_crefMinusOne = 0; pbuf->m_cb = cch * sizeof(XChar); pbuf->m_rgch[cch] = 0; AssertObj(pbuf); return pbuf; } // Add a reference to this StrBuffer, by incrementing m_crefMinusOne. void AddRef(void) { AssertObj(this); m_crefMinusOne++; //DoAssert(0 < InterlockedIncrement(&m_crefMinusOne)); } // Release a reference to this StrBuffer, by decrementing m_crefMinusOne. void Release(void) { AssertObj(this); Assert(0 <= m_crefMinusOne); if(0 > --m_crefMinusOne) free(this); } // Return the count of characters. size_t Cch(void) { Assert(0 == m_cb % sizeof(XChar)); return m_cb / sizeof(XChar); } }; // End of StrBuffer. // Protected StrBase<> memory management functions. static StrBuffer s_bufEmpty; // The empty buffer. StrBuffer * m_pbuf; // Pointer to a StrBuffer which holds the characters for this StrBase<>. /*------------------------------------------------------------------------------------------ Set the buffer (m_pbuf) for this StrBase<> to pbuf, passed as a parameter, without incrementing the reference count. This assumes a reference count is being transferred in. ------------------------------------------------------------------------------------------*/ void _AttachBuf(StrBuffer * pbuf) { AssertPtr(pbuf); AssertPtr(m_pbuf); Assert(pbuf != m_pbuf); m_pbuf->Release(); m_pbuf = pbuf; AssertObj(this); } /*------------------------------------------------------------------------------------------ Set the buffer (m_pbuf) for this StrBase<> to pbuf, passed as a parameter, by calling AddRef() on the buffer, pbuf. ------------------------------------------------------------------------------------------*/ void _SetBuf(StrBuffer * pbuf) { AssertPtr(pbuf); AssertPtr(m_pbuf); if (pbuf != m_pbuf) { pbuf->AddRef(); m_pbuf->Release(); m_pbuf = pbuf; } AssertObj(this); } void _Replace(int ichMin, int ichLim, const XChar * prgchIns, XChar chIns, size_t cchIns); //int nCodePage); void _Replace(int ichMin, int ichLim, const YChar * prgchIns, YChar chIns, size_t cchIns); //int nCodePage); void _Copy(void); /*------------------------------------------------------------------------------------------ Callback for formatting text to a StrBase<>. See FormatText. @h3{Parameters} @code{ pv -- pointer to a stream or some type of string object. It is supplied by the caller of FormatText and passed on as the first argument whenever pfnWrite is called. prgch -- string used as the template. cch -- number of characters in the template string. } ------------------------------------------------------------------------------------------*/ }; //:> End of StrBase<>. //:Associate with "Generic Text Comparison Functions". /*---------------------------------------------------------------------------------------------- Return true if this zero-terminated string is equal to the StrBase<> stb of the same character type. (See ${StrBase<>#Equals}). ----------------------------------------------------------------------------------------------*/ template inline bool operator == (const XChar * psz, const StrBase & stb) { AssertPszN(psz); return stb.Equals(psz, StrLen(psz)); } /*---------------------------------------------------------------------------------------------- Return true if this zero-terminated string is not equal to the StrBase<> stb of the same character type. (See ${StrBase<>#Equals}). ----------------------------------------------------------------------------------------------*/ template inline bool operator != (const XChar * psz, const StrBase & stb) { AssertPszN(psz); AssertObj(&stb); return !stb.Equals(psz, StrLen(psz)); } //:Associate with StrBase<>. // Typedef and instantiate StrBase for unicode characters. @h3{Hungarian: stu} typedef StrBase StrUni; // Typedef and instantiate StrBase for ansi characters. @h3{Hungarian: sta} typedef StrBase StrAnsi; // Typedef and instantiate StrBase for achar characters. @h3{Hungarian: str} typedef StrBase StrApp; } // namespace gr #if !defined(GR_NAMESPACE) using namespace gr; #endif #include "UtilString_i.cpp" #endif //!UTILSTRING_H grcompiler-5.2.1/compiler/Generic/UtilString_i.cpp000066400000000000000000000232251411153030700221670ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: UtilString.cpp Responsibility: LarryW Last reviewed: 27Sep99 Code for string utilities. ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #include #endif #ifndef UTILSTRING_I_CPP #define UTILSTRING_I_CPP #include "UtilString.h" #ifdef _MSC_VER #pragma hdrstop #endif //#undef THIS_FILE //DEFINE_THIS_FILE namespace gr { /*---------------------------------------------------------------------------------------------- Create a new internal buffer of size cch and return a pointer to the characters. This preserves the characters currently in the string, up the the min of the old and new sizes. It is expected that the caller will fill in any newly allocated characters. ----------------------------------------------------------------------------------------------*/ template void StrBase::SetSize(int cchNew, XChar ** pprgch) { AssertObj(this); AssertPtr(pprgch); if (!cchNew) { _SetBuf(&s_bufEmpty); *pprgch = NULL; return; } int cchCur = m_pbuf->Cch(); if (cchNew != cchCur || m_pbuf->m_crefMinusOne) { StrBuffer * pbuf = StrBuffer::Create(cchNew); if (cchCur > 0) std::copy(m_pbuf->m_rgch, m_pbuf->m_rgch + (cchCur < cchNew ? cchCur : cchNew), pbuf->m_rgch); // CopyItems(m_pbuf->m_rgch, pbuf->m_rgch, cchCur < cchNew ? cchCur : cchNew); _AttachBuf(pbuf); } *pprgch = m_pbuf->m_rgch; AssertObj(this); } /*---------------------------------------------------------------------------------------------- Set the character at index ich to ch. ----------------------------------------------------------------------------------------------*/ template void StrBase::SetAt(int ich, XChar ch) { AssertObj(this); Assert(ich >= 0); Assert((unsigned int)ich < (unsigned int)m_pbuf->Cch()); // If ch is the same as the character already at ich, return. if (ch == m_pbuf->m_rgch[ich]) return; // If this string object is sharing a buffer, then you must not change the other string // sharing the buffer. Rather, copy it. if (m_pbuf->m_crefMinusOne > 0) _Copy(); AssertObj(m_pbuf); Assert(m_pbuf->m_crefMinusOne == 0); m_pbuf->m_rgch[ich] = ch; AssertObj(this); } #ifdef GR_FW /*---------------------------------------------------------------------------------------------- Convert characters to lower case. If this string object is sharing a buffer, then the existing characters are copied into a new buffer solely owned by this StrBase<>. ----------------------------------------------------------------------------------------------*/ template void StrBase::ToLower(void) { AssertObj(this); if (!m_pbuf->Cch()) return; // If this string object is sharing a buffer, then you must not change the other string // sharing the buffer. Rather, copy it. if (m_pbuf->m_crefMinusOne > 0) _Copy(); AssertObj(m_pbuf); Assert(m_pbuf->m_crefMinusOne == 0); gr::ToLower(m_pbuf->m_rgch, m_pbuf->Cch()); AssertObj(this); } /*---------------------------------------------------------------------------------------------- Convert characters to upper case. If this string object is sharing a buffer, then the existing characters are copied into a new buffer solely owned by this StrBase<>. ----------------------------------------------------------------------------------------------*/ template void StrBase::ToUpper(void) { AssertObj(this); if (!m_pbuf->Cch()) return; // If this string object is sharing a buffer, then you must not change the other string // sharing the buffer. Rather, copy it. if (m_pbuf->m_crefMinusOne > 0) _Copy(); AssertObj(m_pbuf); Assert(m_pbuf->m_crefMinusOne == 0); ::ToUpper(m_pbuf->m_rgch, m_pbuf->Cch()); AssertObj(this); } #endif /*---------------------------------------------------------------------------------------------- Copy the existing characters into a new buffer solely owned by this StrBase<>. This is so we can modify characters in place. ----------------------------------------------------------------------------------------------*/ template void StrBase::_Copy(void) { AssertObj(this); Assert(m_pbuf->m_crefMinusOne > 0); Assert(m_pbuf->Cch() > 0); // Allocate the new buffer. int cch = m_pbuf->Cch(); StrBuffer * pbuf = StrBuffer::Create(cch); std::copy(m_pbuf->m_rgch, m_pbuf->m_rgch + cch, pbuf->m_rgch); // CopyItems(m_pbuf->m_rgch, pbuf->m_rgch, cch); // Set our buffer to the new one. _AttachBuf(pbuf); AssertObj(this); } /*---------------------------------------------------------------------------------------------- Replace the range [ichMin, ichLim) with the given characters of the same type. WARNING: We need to take care not to free the existing buffer until the operation succeeds. This is in case the input uses the existing buffer. ----------------------------------------------------------------------------------------------*/ template void StrBase::_Replace(int ichMin, int ichLim, const XChar * prgchIns, XChar chIns, size_t cchIns) { AssertObj(this); Assert(cchIns >= 0); AssertArrayN(prgchIns, cchIns); Assert(!chIns || !prgchIns); auto cchCur = m_pbuf->Cch(); Assert((unsigned int)ichMin <= (unsigned int)ichLim && (unsigned int)ichLim <= (unsigned int)cchCur); if (!cchIns) { // Nothing's being inserted. if (ichMin == ichLim) { // Nothing's being deleted either so just return. return; } if (!ichMin && ichLim == cchCur) { // Everything is being deleted so clear the string. _SetBuf(&s_bufEmpty); return; } } StrBuffer * pbuf; int cchNew = cchCur + cchIns - ichLim + ichMin; if (cchNew == cchCur && !m_pbuf->m_crefMinusOne) { // The buffer size is staying the same and we own the characters. pbuf = m_pbuf; } else { // Allocate the new buffer. pbuf = StrBuffer::Create(cchNew); } // Copy the text. if (ichMin > 0 && pbuf != m_pbuf) std::copy(m_pbuf->m_rgch, m_pbuf->m_rgch + ichMin, pbuf->m_rgch); // CopyItems(m_pbuf->m_rgch, pbuf->m_rgch, ichMin); if (cchIns > 0) { if (prgchIns) std::copy(prgchIns, prgchIns + cchIns, pbuf->m_rgch + ichMin); // CopyItems(prgchIns, pbuf->m_rgch + ichMin, cchIns); else std::fill_n(pbuf->m_rgch + ichMin, cchIns, chIns); } if (pbuf != m_pbuf) { if (ichLim < cchCur) std::copy(m_pbuf->m_rgch + ichLim, m_pbuf->m_rgch + cchCur, pbuf->m_rgch + ichMin + cchIns); // CopyItems(m_pbuf->m_rgch + ichLim, pbuf->m_rgch + ichMin + cchIns, cchCur - ichLim); // Set our buffer to the new one. _AttachBuf(pbuf); } AssertObj(this); } /*---------------------------------------------------------------------------------------------- Replace the range [ichMin, ichLim) with the given characters of the other type. Use the given codepage to convert between Unicode and 8-bit data. WARNING: We need to take care not to free the existing buffer until the operation succeeds. This is in case the input uses the existing buffer. ----------------------------------------------------------------------------------------------*/ template void StrBase::_Replace(int ichMin, int ichLim, const YChar * prgchIns, YChar chIns, size_t cchIns) { AssertObj(this); Assert(cchIns >= 0); AssertArray(prgchIns, cchIns); // These are used ony when prgchIns is NULL. const size_t kcchMaxChar = 8; XChar rgchChar[kcchMaxChar]; int cchChar; int cchCur = m_pbuf->Cch(); Assert((unsigned int)ichMin <= (unsigned int)ichLim && (unsigned int)ichLim <= (unsigned int)cchCur); // Determine the number of characters we're inserting. int cchDst; if (cchIns) { if (prgchIns) { cchDst = ConvertText(prgchIns, cchIns, nullptr, 0); if (!cchDst) ThrowHr(WarnHr(E_FAIL)); Assert(cchCur + cchDst > cchCur); } else { cchChar = ConvertText(&chIns, 1, rgchChar, kcchMaxChar); if (!cchChar) ThrowHr(WarnHr(E_FAIL)); Assert(cchChar <= kcchMaxChar); cchDst = cchChar * cchIns; Assert(cchCur + cchDst > cchCur); } } else cchDst = 0; // Allocate the new buffer. StrBuffer * pbuf; auto cchNew = cchCur + cchDst - ichLim + ichMin; if (cchNew == cchCur && !m_pbuf->m_crefMinusOne) { // The buffer size is staying the same and we own the characters. pbuf = m_pbuf; } else { // Allocate the new buffer. pbuf = StrBuffer::Create(cchNew); } // Copy and convert the text. if (ichMin > 0 && pbuf != m_pbuf) std::copy(m_pbuf->m_rgch, m_pbuf->m_rgch + ichMin, pbuf->m_rgch); // CopyItems(m_pbuf->m_rgch, pbuf->m_rgch, ichMin); if (cchDst > 0) { if (prgchIns) ConvertText(prgchIns, cchIns, pbuf->m_rgch + ichMin, cchDst); else { XChar * pch = pbuf->m_rgch + ichMin; if (cchChar == 1) std::fill_n(pch, cchIns, rgchChar[0]); // FillChars(pch, rgchChar[0], cchIns); else { int cchT; for (cchT = cchIns; --cchT >= 0; ) { std::copy(rgchChar, rgchChar + cchChar, pch); // CopyItems(rgchChar, pch, cchChar); pch += cchChar; } } } } if (pbuf != m_pbuf) { if (ichLim < cchCur) std::copy(m_pbuf->m_rgch + ichLim, m_pbuf->m_rgch + cchCur, pbuf->m_rgch + ichMin + cchDst); // CopyItems(m_pbuf->m_rgch + ichLim, pbuf->m_rgch + ichMin + cchDst, cchCur - ichLim); // Set our buffer to the new one. _AttachBuf(pbuf); } AssertObj(this); } } //namespace gr #if !defined(GR_NAMESPACE) using namespace gr; #endif #endif /*UTILSTRING_I_CPP*/ grcompiler-5.2.1/compiler/GlyphBoundaries.cpp000066400000000000000000001047511411153030700213020ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GlyphBoundaries.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description A data structure that approximates the boundaries of the glyph. -------------------------------------------------------------------------------*//*End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #include #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local constants and static variables ***********************************************************************************************/ // None /*********************************************************************************************** Methods: Constructor ***********************************************************************************************/ //GlyphBoundaries::GlyphBoundaries(GrcFont * pfont, gid16 wGlyphID) : m_pfont(pfont) //{ // // Cache some metrics? //} GlyphBoundaryCell::GlyphBoundaryCell() { Initialize(); } void GlyphBoundaryCell::Initialize() { // Initialize min to something large: m_dValues[GlyphBoundaries::gbcLeft] = 2.0; m_dValues[GlyphBoundaries::gbcBottom] = 2.0; m_dValues[GlyphBoundaries::gbcDPMin] = 100.0; m_dValues[GlyphBoundaries::gbcDNMin] = 100.0; // Initialize max to something small: m_dValues[GlyphBoundaries::gbcRight] = 0; m_dValues[GlyphBoundaries::gbcTop] = 0; m_dValues[GlyphBoundaries::gbcDPMax] = -100.0; // -1 should be good enough m_dValues[GlyphBoundaries::gbcDNMax] = -100.0; // 0 should be good enough // Initialize intersections m_mEntry[GlyphBoundaries::gbcLeft][gbcMin] = 99999; m_mEntry[GlyphBoundaries::gbcRight][gbcMin] = 99999; m_mEntry[GlyphBoundaries::gbcBottom][gbcMin] = 99999; m_mEntry[GlyphBoundaries::gbcTop][gbcMin] = 99999; m_mExit[GlyphBoundaries::gbcLeft][gbcMin] = 99999; m_mExit[GlyphBoundaries::gbcRight][gbcMin] = 99999; m_mExit[GlyphBoundaries::gbcBottom][gbcMin] = 99999; m_mExit[GlyphBoundaries::gbcTop][gbcMin] = 99999; m_mEntry[GlyphBoundaries::gbcLeft][gbcMax] = -99999; m_mEntry[GlyphBoundaries::gbcRight][gbcMax] = -99999; m_mEntry[GlyphBoundaries::gbcBottom][gbcMax] = -99999; m_mEntry[GlyphBoundaries::gbcTop][gbcMax] = -99999; m_mExit[GlyphBoundaries::gbcLeft][gbcMax] = -99999; m_mExit[GlyphBoundaries::gbcRight][gbcMax] = -99999; m_mExit[GlyphBoundaries::gbcBottom][gbcMax] = -99999; m_mExit[GlyphBoundaries::gbcTop][gbcMax] = -99999; } /*********************************************************************************************** Methods: Pre-compiler ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Convert em-units to normalized values between 0 and 1.0, where 0 and 1 are the bounding box of the glyph (not the em-square). ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::NormalizePoint(int mx, int my, float * pdx, float * pdy) { *pdx = float(mx - m_mxBbMin) / float(m_mxBbMax - m_mxBbMin); *pdy = float(my - m_myBbMin) / float(m_myBbMax - m_myBbMin); } /*---------------------------------------------------------------------------------------------- Convert normalized points to em-units. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::UnnormalizePoint(float dx, float dy, int * pmx, int * pmy) { *pmx = int((dx * m_mxBbMax) + ((1 - dx) * m_mxBbMin)); *pmy = int((dy * m_myBbMax) + ((1 - dy) * m_myBbMin)); } /*---------------------------------------------------------------------------------------------- Convert sums and differences that represent diagonal lines to normalized values. The coordinate system for each is the range of maximum and mimimum possible diagonals. For the sum, maximum and minimum diagonals are defined by the upper-right and lower-left points on the bounding box; for the diff, the range is defined by the lower-right and upper-left points. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::NormalizeSumAndDiff(int mSum, int mDiff, float * pdSum, float * pdDiff) { // Calculate the scaling factor for normalizing the diagonals. int mMinSum = m_mxBbMin + m_myBbMin; // lower-left point int mMaxSum = m_mxBbMax + m_myBbMax; // upper-right point int mMinDiff = m_mxBbMin - m_myBbMax; // upper-left point int mMaxDiff = m_mxBbMax - m_myBbMin; // lower-right point int mSumScale = mMaxSum - mMinSum; int mDiffScale = mMaxDiff - mMinDiff; Assert(mSumScale == mDiffScale); *pdSum = (float)(mSum - mMinSum) / mSumScale; *pdDiff = (float)(mDiff - mMinDiff) / mDiffScale; } /*---------------------------------------------------------------------------------------------- Given an sum (x+y) and difference (x-y) in normalised space (x,y between 0 and 1), return the corresponding addition and subtraction in normal em space coordinate space. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::UnnormalizeSumAndDiff(float dSum, float dDiff, int * pmSum, int * pmDiff) { int mMinSum = m_mxBbMin + m_myBbMin; // lower-left point int mMaxSum = m_mxBbMax + m_myBbMax; // upper-right point int mMinDiff = m_mxBbMin - m_myBbMax; // upper-left point int mMaxDiff = m_mxBbMax - m_myBbMin; // lower-right point int mSumScale = mMaxSum - mMinSum; int mDiffScale = mMaxDiff - mMinDiff; Assert(mSumScale == mDiffScale); *pmSum = (int)(dSum * mSumScale) + mMinSum; *pmDiff = (int)(dDiff * mDiffScale) + mMinDiff; } // Version from Martin's original code: //void GlyphBoundaries::UnnormalizeSumAndDiff(float dSum, float dDiff, int * pmSum, int * pmDiff) //{ // double mx = ((dSum + dDiff) * 0.5 * (m_mxBbMax - m_mxBbMin)) + m_mxBbMin; // double my = ((dSum - dDiff) * 0.5 * (m_myBbMax - m_myBbMin)) + m_myBbMin; // *pmSum = int(mx + my); // *pmDiff = int(mx - my); //} /*---------------------------------------------------------------------------------------------- Accumulates a point into a glyph or subglyph structure. We store the actual points, but never use them. But we do use the accumulated maximal bounding box (bbox) and maximal diamond box (dbox). If we are working with subboxes, we will also want to accumulate for the whole glyph. Notice there is no need to accumulate a whole glyph bbox because that's already defined for a glyph. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::AddPoint(int icellX, int icellY, int mx, int my, float dx, float dy, bool fEntire) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); //pgbdy->m_vdx.push_back(dx); //pgbdy->m_vdy.push_back(dy); int mSum = mx + my; // negative sloped lines at -45 degree angle int mDiff = mx - my; // positive sloped lines at 45 degree angle float dSum, dDiff; NormalizeSumAndDiff(mSum, mDiff, &dSum, &dDiff); // Fix rounding errors that occur in 64-bit build. if (dx < 0.0) dx = 0.0; if (dy < 0.0) dy = 0.0; if (dSum < 0.0) dSum = 0.0; if (dDiff < 0.0) dDiff = 0.0; if (dx > 1.0) dx = 1.0; if (dy > 1.0) dy = 1.0; if (dSum > 1.0) dSum = 1.0; if (dDiff > 1.0) dDiff = 1.0; // Calculate mins and maxes. if (pgbcell->m_dValues[gbcLeft] == gbcUndef || dx < pgbcell->m_dValues[gbcLeft]) pgbcell->m_dValues[gbcLeft] = dx; if (pgbcell->m_dValues[gbcRight] == gbcUndef || dx > pgbcell->m_dValues[gbcRight]) pgbcell->m_dValues[gbcRight] = dx; if (pgbcell->m_dValues[gbcBottom] == gbcUndef || dy < pgbcell->m_dValues[gbcBottom]) pgbcell->m_dValues[gbcBottom] = dy; if (pgbcell->m_dValues[gbcTop] == gbcUndef || dy > pgbcell->m_dValues[gbcTop]) pgbcell->m_dValues[gbcTop] = dy; if (pgbcell->m_dValues[gbcDNMin] == gbcUndef || dSum < pgbcell->m_dValues[gbcDNMin]) pgbcell->m_dValues[gbcDNMin] = dSum; if (pgbcell->m_dValues[gbcDNMax] == gbcUndef || dSum > pgbcell->m_dValues[gbcDNMax]) pgbcell->m_dValues[gbcDNMax] = dSum; if (pgbcell->m_dValues[gbcDPMin] == gbcUndef || dDiff < pgbcell->m_dValues[gbcDPMin]) pgbcell->m_dValues[gbcDPMin] = dDiff; if (pgbcell->m_dValues[gbcDPMax] == gbcUndef || dDiff > pgbcell->m_dValues[gbcDPMax]) pgbcell->m_dValues[gbcDPMax] = dDiff; if (fEntire) { // Also add to the diamond for the entire glyph. if (m_gbcellEntire.m_dValues[gbcDNMin] == gbcUndef || dSum < m_gbcellEntire.m_dValues[gbcDNMin]) m_gbcellEntire.m_dValues[gbcDNMin] = dSum; if (m_gbcellEntire.m_dValues[gbcDNMax] == gbcUndef || dSum > m_gbcellEntire.m_dValues[gbcDNMax]) m_gbcellEntire.m_dValues[gbcDNMax] = dSum; if (m_gbcellEntire.m_dValues[gbcDPMin] == gbcUndef || dDiff < m_gbcellEntire.m_dValues[gbcDPMin]) m_gbcellEntire.m_dValues[gbcDPMin] = dDiff; if (m_gbcellEntire.m_dValues[gbcDPMax] == gbcUndef || dDiff > m_gbcellEntire.m_dValues[gbcDPMax]) m_gbcellEntire.m_dValues[gbcDPMax] = dDiff; } } /*---------------------------------------------------------------------------------------------- Keep track of the minimal and maximum points where the glyph curve intersects the given cell. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::AddEntryMinMax(int icellX, int icellY, int gbcSide, int mVal) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); pgbcell->AddEntryMinMax(gbcSide, mVal); } void GlyphBoundaries::AddExitMinMax(int icellX, int icellY, int gbcSide, int mVal) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); pgbcell->AddExitMinMax(gbcSide, mVal); } void GlyphBoundaryCell::AddEntryMinMax(int nSide, int mVal) { if (mVal < m_mEntry[nSide][gbcMin]) m_mEntry[nSide][gbcMin] = mVal; if (mVal > m_mEntry[nSide][gbcMax]) m_mEntry[nSide][gbcMax] = mVal; } void GlyphBoundaryCell::AddExitMinMax(int nSide, int mVal) { if (mVal < m_mExit[nSide][gbcMin]) m_mExit[nSide][gbcMin] = mVal; if (mVal > m_mExit[nSide][gbcMax]) m_mExit[nSide][gbcMax] = mVal; } /*---------------------------------------------------------------------------------------------- Does the cell have any data in it? ----------------------------------------------------------------------------------------------*/ bool GlyphBoundaryCell::HasData() { // They are initialized such that right < left. return (m_dValues[GlyphBoundaries::gbcLeft] < m_dValues[GlyphBoundaries::gbcRight]); } /*---------------------------------------------------------------------------------------------- Does the cell have an entry/exit on the given side? ----------------------------------------------------------------------------------------------*/ bool GlyphBoundaryCell::HasEntry(int nSide) { // They are initialized such that max < min. return (m_mEntry[nSide][gbcMin] <= m_mEntry[nSide][gbcMax]); } bool GlyphBoundaryCell::HasExit(int nSide) { // They are initialized such that max < min. return (m_mExit[nSide][gbcMin] <= m_mExit[nSide][gbcMax]); } /*---------------------------------------------------------------------------------------------- Return a bitmap indicating which cells of the grid overlap with the curve. Zero means we don't want subboxes for this glyph - it has a simple shape. ----------------------------------------------------------------------------------------------*/ int GlyphBoundaries::CellGridBitmap() { int nBitmap = 0; for (int icellY = gbgridCellsV-1; icellY >= 0; icellY--) { for (int icellX = gbgridCellsH-1; icellX >= 0; icellX--) { nBitmap = nBitmap << 1; GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); if (pgbcell->HasData()) nBitmap = nBitmap + 1; } } return nBitmap; } /*---------------------------------------------------------------------------------------------- Develop a grid of octaboxes that correspond to the glyph curve, and also an octabox for the entire glyph. If fComplex is false, only the octabox for the entire glyph is needed. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::OverlayGrid(GrcFont * pfont, bool fComplex) { std::vector vmx; std::vector vmy; std::vector viEndPt; std::vector vfOnCurve; // not used const float ccellX = (float)gbgridCellsH; const float ccellY = (float)gbgridCellsV; m_mxBbMin = m_myBbMin = 99999; // something very large m_mxBbMax = m_myBbMax = -99999; // something very small if (pfont->IsSpace(m_wGlyphID)) { // Leave metrics empty. m_gbcellEntire.m_dValues[gbcDNMin] = 0; m_gbcellEntire.m_dValues[gbcDNMax] = 0; m_gbcellEntire.m_dValues[gbcDPMin] = 0; m_gbcellEntire.m_dValues[gbcDPMax] = 0; } else if (pfont->GetGlyfPts(m_wGlyphID, &viEndPt, &vmx, &vmy, &vfOnCurve)) { // Calculate bounding box, which is used to normalize all the octaboxes. for (int i = 0; i < signed(vmx.size()); i++) { m_mxBbMin = (vmx[i] < m_mxBbMin) ? vmx[i] : m_mxBbMin; m_mxBbMax = (vmx[i] > m_mxBbMax) ? vmx[i] : m_mxBbMax; m_myBbMin = (vmy[i] < m_myBbMin) ? vmy[i] : m_myBbMin; m_myBbMax = (vmy[i] > m_myBbMax) ? vmy[i] : m_myBbMax; } float dxMin, dyMin, dxMax, dyMax; NormalizePoint(m_mxBbMin, m_myBbMin, &dxMin, &dyMin); Assert(dxMin == 0); Assert(dyMin == 0); NormalizePoint(m_mxBbMax, m_myBbMax, &dxMax, &dyMax); Assert(dxMax == 1.0); Assert(dyMax == 1.0); // Now iterate over all the points again (even ones off-curve, since this is // just an approximation), and adjust the relevant cell's min/max values // accordingly. int icellXPrev = -1; int icellYPrev = -1; float dxPrev, dyPrev; int icurve = 0; for (int i = 0; i < signed(vmx.size()); i++) { int mx = vmx[i]; int my = vmy[i]; float dx, dy; NormalizePoint(mx, my, &dx, &dy); // dx, dy range from 0 .. 1.0. // Figure out which grid cell this point belongs in; indices are 0 .. 3. int icellX = int((dx * ccellX) - .001); int icellY = int((dy * ccellY) - .001); AddPoint(icellX, icellY, mx, my, dx, dy, true); // Figure out which direction we're moving: if this point is in a new cell, // adjust the enter/exit max and mins. if (icellXPrev != -1) { while (icellX > icellXPrev) { // Moving right. Handle the intersections on the right of the previous cell and the // left of this cell. // Interpolate between the two points. float dxBoundary = float((icellXPrev + 1) / ccellX); // border between two cells float dRatio = (dxBoundary - dxPrev) / (dx - dxPrev); float dyBoundary = (dRatio * dy) + ((1 - dRatio) * dyPrev); int icellYBoundary = int((dyBoundary * ccellY) - .001); int mxBoundary, myBoundary; UnnormalizePoint(dxBoundary, dyBoundary, &mxBoundary, &myBoundary); // Add the intersection to the cell on the left (which might not be the previous cell, because // the Y coordinate might have shifted quite a bit as well). AddPoint(icellXPrev, icellYBoundary, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); // Also adjust the intersections based on the fact that the curve is leaving the old cell. AddExitMinMax(icellXPrev, icellYBoundary, gbcRight, myBoundary); // Advance to the next cell on the right which still might not be the final cell of the // of the line. But it is the neighboring cell. ++icellXPrev; // Now indicate the line is entering this new cell from the left. AddPoint(icellXPrev, icellYBoundary, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); AddEntryMinMax(icellXPrev, icellYBoundary, gbcLeft, myBoundary); } // Repeat above logic for the other three directions... while (icellX < icellXPrev) { // Moving left. Handle the intersections on the left of the previous cell and the // right of this cell. // Interpolate between the two points. float dxBoundary = float(icellXPrev / ccellX); // border between two cells float dRatio = (dxBoundary - dxPrev) / (dx - dxPrev); float dyBoundary = (dRatio * dy) + ((1 - dRatio) * dyPrev); int icellYBoundary = int((dyBoundary * ccellY) - .001); int mxBoundary, myBoundary; UnnormalizePoint(dxBoundary, dyBoundary, &mxBoundary, &myBoundary); // Add the intersection to the cell on the right (which might not be the previous cell, because // the Y coordinate might have shifted quite a bit as well). AddPoint(icellXPrev, icellYBoundary, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); // Also adjust the intersections based on the fact that the curve is leaving the old cell. AddExitMinMax(icellXPrev, icellYBoundary, gbcLeft, myBoundary); // Advance to the next cell on the left which still might not be the final cell of the // of the line. But it is the neighboring cell. --icellXPrev; // Now indicate the line is entering this new cell from the left. AddPoint(icellXPrev, icellYBoundary, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); AddEntryMinMax(icellXPrev, icellYBoundary, gbcRight, myBoundary); } while (icellY > icellYPrev) { // Moving up. Handle the intersections on the top of the previous cell and the // bottom of this cell. // Interpolate between the two points. float dyBoundary = float((icellYPrev + 1) / ccellY); // border between two cells float dRatio = (dyBoundary - dyPrev) / (dy - dyPrev); float dxBoundary = (dRatio * dx) + ((1 - dRatio) * dxPrev); int icellXBoundary = int((dxBoundary * ccellX) - .001); int mxBoundary, myBoundary; UnnormalizePoint(dxBoundary, dyBoundary, &mxBoundary, &myBoundary); // Add the intersection to the cell on the bottom (which might not be the previous cell, because // the X coordinate might have shifted quite a bit as well). AddPoint(icellXBoundary, icellYPrev, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); // Also adjust the intersections based on the fact that the curve is leaving the old cell. AddExitMinMax(icellXBoundary, icellYPrev, gbcTop, mxBoundary); // Advance to the next cell above which still might not be the final cell of the // of the line. But it is the neighboring cell. ++icellYPrev; // Now indicate the line is entering this new cell from the bottom. AddPoint(icellXBoundary, icellYPrev, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); AddEntryMinMax(icellXBoundary, icellYPrev, gbcBottom, mxBoundary); } while (icellY < icellYPrev) { // Moving down. Handle the intersections on the bottom of the previous cell and the // top of this cell. // Interpolate between the two points. float dyBoundary = float(icellYPrev / ccellY); // border between two cells float dRatio = (dyBoundary - dyPrev) / (dy - dyPrev); float dxBoundary = (dRatio * dx) + ((1 - dRatio) * dxPrev); int icellXBoundary = int((dxBoundary * ccellX) - .001); int mxBoundary, myBoundary; UnnormalizePoint(dxBoundary, dyBoundary, &mxBoundary, &myBoundary); // Add the intersection to the cell on the top (which might not be the previous cell, because // the X coordinate might have shifted quite a bit as well). AddPoint(icellXBoundary, icellYPrev, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); // Also adjust the intersections based on the fact that the curve is leaving the old cell. AddExitMinMax(icellXBoundary, icellYPrev, gbcBottom, mxBoundary); // Advance to the next cell below which still might not be the final cell of the // of the line. But it is the neighboring cell. --icellYPrev; // Now indicate the line is entering this new cell from the top. AddPoint(icellXBoundary, icellYPrev, mxBoundary, myBoundary, dxBoundary, dyBoundary, false); AddEntryMinMax(icellXBoundary, icellYPrev, gbcTop, mxBoundary); } } if (viEndPt[icurve] == i) { // Break the curve. icurve++; icellXPrev = -1; icellYPrev = -1; } else { // Continue the curve. icellXPrev = icellX; icellYPrev = icellY; dxPrev = dx; dyPrev = dy; } } // end of looping over points // Now figure out which corners need to be added based on the entry and exit points. // We want to add point at the lower left corner if the minimum entry on the baseline // is less than (to the left of) the minimum exit (or there is no exit), or if // looking at the left vertical grid line if the minimum exit is less than (below) // the minimum entry. int gbcMin = GlyphBoundaryCell::gbcMin; int gbcMax = GlyphBoundaryCell::gbcMax; int mx, my; for (int icellX = 0; icellX < gbgridCellsH; icellX++) { for (int icellY = 0; icellY < gbgridCellsV; icellY++) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); // Bottom left int leftMinEntry = pgbcell->m_mEntry[gbcLeft][gbcMin]; int leftMinExit = pgbcell->m_mExit[gbcLeft][gbcMin]; int bottomMinEntry = pgbcell->m_mEntry[gbcBottom][gbcMin]; int bottomMinExit = pgbcell->m_mExit[gbcBottom][gbcMin]; if ((pgbcell->HasEntry(gbcLeft) && (!pgbcell->HasExit(gbcLeft) || leftMinEntry < leftMinExit)) || (pgbcell->HasExit(gbcBottom) && (!pgbcell->HasEntry(gbcBottom) || bottomMinExit < bottomMinEntry))) { UnnormalizePoint(float(icellX / ccellX), float(icellY / ccellY), &mx, &my); AddPoint(icellX, icellY, mx, my, float(icellX / ccellX), float(icellY / ccellY), false); } // Top left int leftMaxEntry = pgbcell->m_mEntry[gbcLeft][gbcMax]; int leftMaxExit = pgbcell->m_mExit[gbcLeft][gbcMax]; int topMinEntry = pgbcell->m_mEntry[gbcTop][gbcMin]; int topMinExit = pgbcell->m_mExit[gbcTop][gbcMin]; if ((pgbcell->HasExit(gbcLeft) && (!pgbcell->HasEntry(gbcLeft) || leftMaxExit > leftMaxEntry)) || (pgbcell->HasEntry(gbcTop) && (!pgbcell->HasExit(gbcTop) || topMinEntry < topMinExit))) { UnnormalizePoint(float(icellX / ccellX), float((icellY+1) / ccellY), &mx, &my); AddPoint(icellX, icellY, mx, my, float(icellX / ccellX), float((icellY+1) / ccellY), false); } // Bottom right int rightMinEntry = pgbcell->m_mEntry[gbcRight][gbcMin]; int rightMinExit = pgbcell->m_mExit[gbcRight][gbcMin]; int bottomMaxEntry = pgbcell->m_mEntry[gbcBottom][gbcMax]; int bottomMaxExit = pgbcell->m_mExit[gbcBottom][gbcMax]; if ((pgbcell->HasExit(gbcRight) && (!pgbcell->HasEntry(gbcRight) || rightMinExit < rightMinEntry)) || (pgbcell->HasEntry(gbcBottom) && (!pgbcell->HasExit(gbcBottom) || bottomMaxEntry > bottomMaxExit))) { UnnormalizePoint(float((icellX+1) / ccellX), float(icellY / ccellY), &mx, &my); AddPoint(icellX, icellY, mx, my, float((icellX+1) / ccellX), float(icellY / ccellY), false); } // Top right int rightMaxEntry = pgbcell->m_mEntry[gbcRight][gbcMax]; int rightMaxExit = pgbcell->m_mExit[gbcRight][gbcMax]; int topMaxEntry = pgbcell->m_mEntry[gbcTop][gbcMax]; int topMaxExit = pgbcell->m_mExit[gbcTop][gbcMax]; if ((pgbcell->HasEntry(gbcRight) && (!pgbcell->HasExit(gbcRight) || rightMaxEntry > rightMaxExit)) || (pgbcell->HasExit(gbcTop) && (!pgbcell->HasEntry(gbcTop) || topMaxExit > topMaxEntry))) { UnnormalizePoint(float((icellX+1) / ccellX), float((icellY+1) / ccellY), &mx, &my); AddPoint(icellX, icellY, mx, my, float((icellX+1) / ccellX), float((icellY+1) / ccellY), false); } } } // If complex metrics were not requested, clear all the subboxes but leave the // full-glyph diagonals. // This is obviously not the most efficient way to implement this, but it is the // easiest and least messy. if (!fComplex) ClearSubBoxCells(); } else { // Leave metrics empty m_gbcellEntire.m_dValues[gbcDNMin] = 0; m_gbcellEntire.m_dValues[gbcDNMax] = 0; m_gbcellEntire.m_dValues[gbcDPMin] = 0; m_gbcellEntire.m_dValues[gbcDPMax] = 0; } RoundSubBoxCells(); } /*---------------------------------------------------------------------------------------------- Return true if subbox octaboxes are needed for this glyph. ----------------------------------------------------------------------------------------------*/ bool GlyphBoundaries::ComplexFit() { int nBitmap = this->CellGridBitmap(); return (nBitmap != 0); } /*---------------------------------------------------------------------------------------------- Output glyph boundaries data for one glyph to the Glat table. Return the number of bytes written. ----------------------------------------------------------------------------------------------*/ int GlyphBoundaries::OutputToGlat(GrcBinaryStream * pbstrm) { int cb = 0; int nBitmap = this->CellGridBitmap(); pbstrm->WriteShort(nBitmap); cb += 2; cb += OutputGlatFullDiagonals(pbstrm); for (int icellY = 0; icellY < gbgridCellsV; icellY++) { for (int icellX = 0; icellX < gbgridCellsH; icellX++) { cb += OutputGlatSubBox(pbstrm, icellX, icellY); } } return cb; } /*---------------------------------------------------------------------------------------------- Scale full-glyph octabox coordinates and output into the Glat table. Note that we don't include the bounding box rectangle since it is stored elsewhere in the font. ----------------------------------------------------------------------------------------------*/ int GlyphBoundaries::OutputGlatFullDiagonals(GrcBinaryStream * pbstrm) { Assert(m_gbcellEntire.m_dValues[gbcDNMin] >= 0); Assert(m_gbcellEntire.m_dValues[gbcDNMax] >= 0); Assert(m_gbcellEntire.m_dValues[gbcDPMin] >= 0); Assert(m_gbcellEntire.m_dValues[gbcDPMax] >= 0); Assert(m_gbcellEntire.m_dValues[gbcDNMin] <= 1.0); Assert(m_gbcellEntire.m_dValues[gbcDNMax] <= 1.0); Assert(m_gbcellEntire.m_dValues[gbcDPMin] <= 1.0); Assert(m_gbcellEntire.m_dValues[gbcDPMax] <= 1.0); // The possible range for negatively sloped diagonals is [0 .. 1]. Scale them to [0 .. 255]. int sDNMin = min(int(m_gbcellEntire.m_dValues[gbcDNMin] * 255), 255); int sDNMax = min(int(m_gbcellEntire.m_dValues[gbcDNMax] * 255), 255); int sDPMin = min(int(m_gbcellEntire.m_dValues[gbcDPMin] * 255), 255); int sDPMax = min(int(m_gbcellEntire.m_dValues[gbcDPMax] * 255), 255); pbstrm->WriteByte(sDNMin); pbstrm->WriteByte(sDNMax); pbstrm->WriteByte(sDPMin); pbstrm->WriteByte(sDPMax); return 4; } /*---------------------------------------------------------------------------------------------- Scale octabox sub-box coordinates and output into the Glat table. ----------------------------------------------------------------------------------------------*/ int GlyphBoundaries::OutputGlatSubBox(GrcBinaryStream * pbstrm, int icellX, int icellY) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); if (pgbcell->HasData()) { Assert(pgbcell->m_dValues[gbcLeft] >= 0); Assert(pgbcell->m_dValues[gbcRight] >= 0); Assert(pgbcell->m_dValues[gbcBottom]>= 0); Assert(pgbcell->m_dValues[gbcTop] >= 0); Assert(pgbcell->m_dValues[gbcDNMin] >= 0); Assert(pgbcell->m_dValues[gbcDNMax] >= 0); Assert(pgbcell->m_dValues[gbcDPMin] >= 0); Assert(pgbcell->m_dValues[gbcDPMax] >= 0); Assert(pgbcell->m_dValues[gbcLeft] <= 1.0); Assert(pgbcell->m_dValues[gbcRight] <= 1.0); Assert(pgbcell->m_dValues[gbcBottom]<= 1.0); Assert(pgbcell->m_dValues[gbcTop] <= 1.0); Assert(pgbcell->m_dValues[gbcDNMin] <= 1.0); Assert(pgbcell->m_dValues[gbcDNMax] <= 1.0); Assert(pgbcell->m_dValues[gbcDPMin] <= 1.0); Assert(pgbcell->m_dValues[gbcDPMax] <= 1.0); // The possible range for horizontal and vertical boundaries is [0 .. 1]. Scale them to [0 .. 255]. int sLeft = min(int(pgbcell->m_dValues[gbcLeft] * 255), 255); int sRight = min(int(pgbcell->m_dValues[gbcRight] * 255), 255); int sBottom = min(int(pgbcell->m_dValues[gbcBottom] * 255), 255); int sTop = min(int(pgbcell->m_dValues[gbcTop] * 255), 255); // The possible range for diagonals is [0 .. 1]. Scale them to [0 .. 255]. int sDNMin = min(int(pgbcell->m_dValues[gbcDNMin] * 255), 255); int sDNMax = min(int(pgbcell->m_dValues[gbcDNMax] * 255), 255); int sDPMin = min(int(pgbcell->m_dValues[gbcDPMin] * 255), 255); int sDPMax = min(int(pgbcell->m_dValues[gbcDPMax] * 255), 255); pbstrm->WriteByte(sLeft); pbstrm->WriteByte(sRight); pbstrm->WriteByte(sBottom); pbstrm->WriteByte(sTop); pbstrm->WriteByte(sDNMin); pbstrm->WriteByte(sDNMax); pbstrm->WriteByte(sDPMin); pbstrm->WriteByte(sDPMax); return 8; } else return 0; } /*---------------------------------------------------------------------------------------------- Output glyph boundaries for a glyph that does not really exist in the font (ie, a pseudo-glyph). ----------------------------------------------------------------------------------------------*/ int GlyphBoundaries::OutputToGlatNonexistent(GrcBinaryStream * pbstrm) { // Empty bitmap pbstrm->WriteShort(0); // 4 bogus diagonals pbstrm->WriteByte(0); pbstrm->WriteByte(0); pbstrm->WriteByte(0); pbstrm->WriteByte(0); return 6; } /*---------------------------------------------------------------------------------------------- Clear all the data in the sub-box cells. Currently is only called when we have a simple glyph for which we don't need sub-boxes. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::ClearSubBoxCells() { for (int icellX = 0; icellX < gbgridCellsH; icellX++) { for (int icellY = 0; icellY < gbgridCellsV; icellY++) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); pgbcell->Initialize(); Assert(!pgbcell->HasData()); } } } /*---------------------------------------------------------------------------------------------- Ignore tiny rounding errors. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::RoundSubBoxCells() { for (int icellX = 0; icellX < gbgridCellsH; icellX++) { for (int icellY = 0; icellY < gbgridCellsV; icellY++) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); pgbcell->m_dValues[GlyphBoundaries::gbcLeft] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcLeft] * 10000)) / 10000.0); pgbcell->m_dValues[GlyphBoundaries::gbcBottom] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcBottom] * 10000)) / 10000.0); pgbcell->m_dValues[GlyphBoundaries::gbcDPMin] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcDPMin] * 10000)) / 10000.0); pgbcell->m_dValues[GlyphBoundaries::gbcDNMin] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcDNMin] * 10000)) / 10000.0); pgbcell->m_dValues[GlyphBoundaries::gbcRight] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcRight] * 10000)) / 10000.0); pgbcell->m_dValues[GlyphBoundaries::gbcTop] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcTop] * 10000)) / 10000.0); pgbcell->m_dValues[GlyphBoundaries::gbcDPMax] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcDPMax] * 10000)) / 10000.0); pgbcell->m_dValues[GlyphBoundaries::gbcDNMax] = (float)(((int)(pgbcell->m_dValues[GlyphBoundaries::gbcDNMax] * 10000)) / 10000.0); } } } /*---------------------------------------------------------------------------------------------- Output the glyph boundary estimatesto the .GDX file. ----------------------------------------------------------------------------------------------*/ void GlyphBoundaries::DebugXml(std::ofstream & strmOut) { int mxLeft, mxRight, myBottom, myTop, mDnMin, mDnMax, mDpMin, mDpMax; // Note that left, right, bottom and top are not actually recorded; they are defined to be 0 and 1. UnnormalizePoint(0, 0, &mxLeft, &myBottom); UnnormalizePoint(1.0, 1.0, &mxRight, &myTop); UnnormalizeSumAndDiff(m_gbcellEntire.m_dValues[gbcDNMin], m_gbcellEntire.m_dValues[gbcDPMin], &mDnMin, &mDpMin); UnnormalizeSumAndDiff(m_gbcellEntire.m_dValues[gbcDNMax], m_gbcellEntire.m_dValues[gbcDPMax], &mDnMax, &mDpMax); //strmOut << std::fixed; // for outputing floating point //strmOut.precision(2); strmOut << " \n"; int count = 0; for (int icellY = 0; icellY < gbgridCellsV; icellY++) { for (int icellX = 0; icellX < gbgridCellsH; icellX++) { GlyphBoundaryCell * pgbcell = m_rggbcellSub + CellIndex(icellX, icellY); if (pgbcell->HasData()) { UnnormalizePoint(pgbcell->m_dValues[gbcLeft], pgbcell->m_dValues[gbcBottom], &mxLeft, &myBottom); UnnormalizePoint(pgbcell->m_dValues[gbcRight], pgbcell->m_dValues[gbcTop], &mxRight, &myTop); UnnormalizeSumAndDiff(pgbcell->m_dValues[gbcDNMin], pgbcell->m_dValues[gbcDPMin], &mDnMin, &mDpMin); UnnormalizeSumAndDiff(pgbcell->m_dValues[gbcDNMax], pgbcell->m_dValues[gbcDPMax], &mDnMax, &mDpMax); strmOut << " m_dValues[gbcLeft] * 100) << " " //<< int(pgbcell->m_dValues[gbcRight] * 100) << " ; " //<< int(pgbcell->m_dValues[gbcBottom] * 100) << " " //<< int(pgbcell->m_dValues[gbcTop] * 100) << " ; " //<< int(pgbcell->m_dValues[gbcDNMin] * 100) << " " //<< int(pgbcell->m_dValues[gbcDNMax] * 100) << " ; " //<< int(pgbcell->m_dValues[gbcDPMin] * 100) << " " //<< int(pgbcell->m_dValues[gbcDPMax] * 100) << mxLeft << " " << mxRight << " ; " << myBottom << " " << myTop << " ; " << mDnMin << " " << mDnMax << " ; " << mDpMin << " " << mDpMax << "\" />\n"; ++count; } } } }grcompiler-5.2.1/compiler/GlyphBoundaries.h000066400000000000000000000102741411153030700207430ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GlyphBoundaries.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: A data structure that approximates the boundaries of the glyph. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GLYPHBOUND_INCLUDED #define GLYPHBOUND_INCLUDED const double gbcUndef = 123456.7; // undefined value - hopefully this is large enough that //it will never be used for real /*---------------------------------------------------------------------------------------------- Class: GlyphBoundCell Description: A single cell of the glyph boundaries. Hungarian: gbcell ----------------------------------------------------------------------------------------------*/ class GlyphBoundaryCell { friend class GlyphBoundaries; enum GbcIndices { // indices into enter/exit arrays: gbcMin = 0, gbcMax = 1, }; protected: GlyphBoundaryCell(); void Initialize(); void AddEntryMinMax(int gbcSide, int mVal); void AddExitMinMax( int gbcSide, int mVal); bool HasData(); bool HasEntry(int nSide); bool HasExit(int nSide); protected: // Instance variables: float m_dValues[8]; // 8: left, right, bottom, top, four diagonals // Where the glyph curve enters and exits the cell on each side; // these are in em-units int m_mEntry[4][2]; // 4: left, right, bottom, top, 2: min, max int m_mExit[4][2]; }; /*---------------------------------------------------------------------------------------------- Class: GlyphBoundaries Description: A data structure that approximates the boundaries of the glyph Hungarian: gbdy ----------------------------------------------------------------------------------------------*/ class GlyphBoundaries { friend class GlyphBoundaryCell; enum { gbgridCellsH = 4, // number of horizontal cells gbgridCellsV = 4 // number of vertical cells }; enum GbcIndices { gbcLeft = 0, gbcRight, gbcBottom, gbcTop, gbcDPMin, // minimal positively-sloped diagonal gbcDPMax, // maximal positively-sloped diagonal gbcDNMin, // minimal negatively-sloped diagonal gbcDNMax, // maximal negatively-sloped diagonal }; public: // Constructors & destructors: //GlyphBoundaries(GrcFont * pfont, gid16 wGlyphID) // : m_pfont(pfont) //{ //} ~GlyphBoundaries() { } void Initialize(gid16 wGlyphID) { m_wGlyphID = wGlyphID; } void OverlayGrid(GrcFont * pfont, bool fComplex); int CellGridBitmap(); protected: // Cell data is in the order: (0,0), (1,0), (2,0), (3,0), (1,0), (1,1), ... // where (0,0) is the lower left cell, (3,3) is the upper right. int CellIndex(int x, int y) { return (y * gbgridCellsH) + x; } void NormalizePoint(int mx, int my, float * pdx, float * pdy); void UnnormalizePoint(float dx, float dy, int * pmx, int * pmy); void NormalizeSumAndDiff(int mSum, int mDiff, float * pdSum, float * pdDiff); void UnnormalizeSumAndDiff(float dSum, float dDiff, int * pmSum, int * pmDiff); void AddPoint(int icellX, int icellY, int mx, int my, float dx, float dy, bool fEntire); void AddEntryMinMax(int icellX, int icellY, int gbcSide, int mVal); void AddExitMinMax( int icellX, int icellY, int gbcSide, int mVal); void ClearSubBoxCells(); void RoundSubBoxCells(); // Compiler: public: int OutputToGlat(GrcBinaryStream * pbstrm); static int OutputToGlatNonexistent(GrcBinaryStream * pbstrm); bool ComplexFit(); void DebugXml(std::ofstream & strmOut); protected: int OutputGlatFullDiagonals(GrcBinaryStream * pbstrm); int OutputGlatSubBox(GrcBinaryStream * pbstrm, int icellX, int icellY); protected: // Instance variables: GrcFont * m_pfont; utf16 m_wGlyphID; // the glyph these are the boundaries for // Cache glyph metrics: int m_mxBbMin; int m_mxBbMax; int m_myBbMin; int m_myBbMax; // Values for full glyph GlyphBoundaryCell m_gbcellEntire; // Sub-box cells GlyphBoundaryCell m_rggbcellSub[gbgridCellsH * gbgridCellsV]; }; #endif // GLYPHBOUND_INCLUDED grcompiler-5.2.1/compiler/GrCompiler.rc000066400000000000000000000061201411153030700200570ustar00rootroot00000000000000//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version: bldinc.h holds the current version number and it is created by executing // bin\mkverrsc.exe from within the bin\mk*.bat file. The major and minor version // numbers are hard-coded in mk*.bat. #include "..\..\..\Output\Common\bldinc.h" VS_VERSION_INFO VERSIONINFO // NOTE: These defines are in bldinc.h. // BUILDLVL comes from %BUILD_LEVEL% and defaults to 9 for developer machines, but // is set to lower numbers by the build machine. FILEVERSION MAJOR_VERSION,MINOR_VERSION,YEAR,DAY_MONTH_BUILDLVL // NOTE: PRODUCTVERSION should be adjusted for each new milestone of the Fieldworks suite // of applications. PRODUCTVERSION 1,0,0,5 // Release 1.0, Milestone 5 (include below in StringFileInfo block) FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "\0" VALUE "CompanyName", "SIL International\0" VALUE "FileDescription", "Graphite compiler\0" VALUE "FileVersion", STR_PRODUCT // Uses FILEVERSION. VALUE "InternalName", "GrCompiler\0" VALUE "LegalCopyright", "Copyright 2002, SIL International\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "GrCompiler.exe\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "SIL Graphite Compiler\0" VALUE "ProductVersion", "1,0,0,5\0" VALUE "SpecialBuild", "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END #endif // !_MAC #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED grcompiler-5.2.1/compiler/Grammar/000077500000000000000000000000001411153030700170555ustar00rootroot00000000000000grcompiler-5.2.1/compiler/Grammar/ANTLRException.cpp000066400000000000000000000033601411153030700223220ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/ANTLRException.hpp" ANTLRException::ANTLRException(const std::string& s) : text(s) {} ANTLRException::~ANTLRException() throw() {} std::string ANTLRException::toString() const { return text; } std::string ANTLRException::getMessage() const { return text; } const char* ANTLRException::what() const throw() { return text.c_str(); } grcompiler-5.2.1/compiler/Grammar/AST.cpp000066400000000000000000000217421411153030700202160ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/AST.hpp" #include AST::AST(ASTNode* n) { node=n; } AST::~AST() { //int nLine = node->debug(); // debugger delete node; } const ASTNode* AST::getNode() const { return node; } ASTNode* AST::getNode() { return node; } void AST::addChild(RefAST c) { if (c==0) return; RefAST tmp=down; if (tmp) { while (tmp->right) tmp=tmp->right; tmp->right=c; } else { down=c; } } void AST::doWorkForFindAll(std::vector& v, RefAST target,bool partialMatch) const { // Start walking sibling lists, looking for matches. for (const AST* sibling=this; sibling; sibling=sibling->getNextSibling()) { if ( (partialMatch && sibling->equalsTreePartial(target)) || (!partialMatch && sibling->equalsTree(target)) ) { v.push_back(sibling); } /* if ( partialMatch ) if ( sibling->equalsTreePartial(target) ) { // subtree rooted at 'sibling' exact or partial equals 'target' v.push_back(sibling); } if ( !partialMatch ) if ( sibling->equalsTree(target) ) { // subtree rooted at 'sibling' exact or partial equals 'target' v.push_back(sibling); } */ // regardless of match or not, check any children for matches if ( sibling->getFirstChild() ) { (sibling->getFirstChild())->doWorkForFindAll(v, target, partialMatch); } } } /** Is node t equal to this? */ bool AST::equals(const AST* t) const { if (!t) return false; return (getText() == t->getText()) && (getType() == t->getType()); } /** Is t an exact structural and equals() match of this tree. The * 'this' reference is considered the start of a sibling list. */ bool AST::equalsList(const AST* t) const { // the empty tree is not a match of any non-null tree. if (!t) return false; // Otherwise, start walking sibling lists. First mismatch, return false. const AST* sibling=this; for (;sibling && t; sibling=sibling->getNextSibling(), t=t->getNextSibling()) { // as a quick optimization, check roots first. if (!sibling->equals(t)) return false; // if roots match, do full list match test on children. if (sibling->getFirstChild()) { if (!sibling->getFirstChild()->equalsList(t->getFirstChild())) return false; } // sibling has no kids, make sure t doesn't either else if (t->getFirstChild()) return false; } if (!sibling && !t) return true; // one sibling list has more than the other return false; } /** Is 'sub' a subtree of this list? * The siblings of the root are NOT ignored. */ bool AST::equalsListPartial(const AST* sub) const { // the empty tree is always a subset of any tree. if (!sub) return true; // Otherwise, start walking sibling lists. First mismatch, return false. const AST* sibling=this; for (;sibling && sub; sibling=sibling->getNextSibling(), sub=sub->getNextSibling()) { // as a quick optimization, check roots first. if (!sibling->equals(sub)) return false; // if roots match, do partial list match test on children. if (sibling->getFirstChild()) if (!sibling->getFirstChild()->equalsListPartial(sub->getFirstChild())) return false; } if (!sibling && sub) // nothing left to match in this tree, but subtree has more return false; // either both are null or sibling has more, but subtree doesn't return true; } /** Is tree rooted at 'this' equal to 't'? The siblings * of 'this' are ignored. */ bool AST::equalsTree(const AST* t) const { // check roots first if (!equals(t)) return false; // if roots match, do full list match test on children. if (getFirstChild()) { if (!getFirstChild()->equalsList(t->getFirstChild())) return false; } // sibling has no kids, make sure t doesn't either else if (t->getFirstChild()) return false; return true; } /** Is 'sub' a subtree of the tree rooted at 'this'? The siblings * of 'this' are ignored. */ bool AST::equalsTreePartial(const AST* sub) const { // the empty tree is always a subset of any tree. if (!sub) return true; // check roots first if (!equals(sub)) return false; // if roots match, do full list partial match test on children. if (getFirstChild()) if (!getFirstChild()->equalsListPartial(sub->getFirstChild())) return false; return true; } /** Walk the tree looking for all exact subtree matches. Return * an ASTEnumerator that lets the caller walk the list * of subtree roots found herein. */ std::vector AST::findAll(RefAST target) const { std::vector roots; // the empty tree cannot result in an enumeration if (target) { doWorkForFindAll(roots,target,false); // find all matches recursively } return roots; } /** Walk the tree looking for all subtrees. Return * an ASTEnumerator that lets the caller walk the list * of subtree roots found herein. */ std::vector AST::findAllPartial(RefAST target) const { std::vector roots; // the empty tree cannot result in an enumeration if (target) { doWorkForFindAll(roots,target,true); // find all matches recursively } return roots; } RefAST AST::getFirstChild() const { return down; } RefAST AST::getNextSibling() const { return right; } std::string AST::getText() const { if (node) return node->getText(); else return ""; } int AST::getType() const { assert(node); return node->getType(); } void AST::initialize(int t,const std::string& txt) { assert(node); node->initialize(t,txt); } void AST::initialize(const AST* t) { assert(node); node->initialize(t); } void AST::initialize(RefToken t) { assert(node); node->initialize(t); } void AST::removeChildren() { down=nullAST; } void AST::setFirstChild(RefAST c) { down=c; } void AST::setNextSibling(RefAST n) { right=n; } void AST::setText(const std::string& txt) { assert(node); node->setText(txt); } void AST::setType(int type) { assert(node); node->setType(type); } std::string AST::toString() const { return getText(); } std::string AST::toStringList() const { std::string ts=""; if (getFirstChild()) { ts+=" ( "; ts+=toString(); ts+=getFirstChild()->toStringList(); ts+=" )"; } else { ts+=" "; ts+=toString(); } if (getNextSibling()) ts+=getNextSibling()->toStringList(); return ts; } std::string AST::toStringTree() const { //const AST* t=this; std::string ts=""; if (getFirstChild()) { ts+=" ( "; ts+=toString(); ts+=getFirstChild()->toStringList(); ts+=" )"; } else { ts+=" "; ts+=toString(); } return ts; } // this is nasty, but it makes the code generation easier RefAST nullAST; // Sharon added: // This approach handles siblings iteratively instead of one long recursive chain, // to avoid stack overflows. When doSiblings == true, recipient is the first sibling in a chain. void AST::iterativeRemoveChildren(bool doSiblings, int level) { deleteNode(level); if (down) { down->iterativeRemoveChildren(true, level + 1); down = nullAST; } if (doSiblings) { RefAST next; AST * last = NULL; AST * loop = this; // We set up a reverse sibling chain to allow us to delete the siblings in reverse order. // This is because deleting the first causes a chain reaction (due to reference counting) // that causes all the other siblings to be deleted, and that can cause a stack overflow. this->setPreviousSibling(NULL); while (loop) { next = loop->getNextSibling(); loop->iterativeRemoveChildren(false, level); if (next) { next->setPreviousSibling(loop); last = next; } loop = next; } next = nullAST; // Now follow the back-pointers to delete the items in reverse order. loop = last; AST * prev; while (loop) { prev = loop->getPreviousSibling(); loop->setPreviousSibling(NULL); loop->setNextSibling(nullAST); // this should delete the sibling loop = prev; } } } grcompiler-5.2.1/compiler/Grammar/ASTDebug.hpp000066400000000000000000000013061411153030700211640ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: ASTDebug.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Additional defines for the AST class, to be included in the middle of the class definition. -------------------------------------------------------------------------------*//*:End Ignore*/ public: void Trace(std::ostream & strmOut, const char * s, int level); std::string debugString(); // int line(); grcompiler-5.2.1/compiler/Grammar/ASTFactory.cpp000066400000000000000000000140651411153030700215460ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/ASTFactory.hpp" #include "Antlr/CommonASTNode.hpp" /** AST Support code shared by TreeParser and Parser. * We use delegation to share code (and have only one * bit of code to maintain) rather than subclassing * or superclassing (forces AST support code to be * loaded even when you don't want to do AST stuff). * * Typically, setASTNodeType is used to specify the * type of node to create, but you can override * create to make heterogeneous nodes etc... */ ASTFactory::ASTFactory() { nodeFactory = &CommonASTNode::factory; } /** Add a child to the current AST */ void ASTFactory::addASTChild(ASTPair& currentAST, RefAST child) { if (child) { if (!currentAST.root) { // Make new child the current root currentAST.root = child; } else { if (!currentAST.child) { // Add new child to current root currentAST.root->setFirstChild(child); } else { currentAST.child->setNextSibling(child); } } // Make new child the current child currentAST.child = child; currentAST.advanceChildToEnd(); } } /** Create a new empty AST node; if the user did not specify * an AST node type, then create a default one: CommonAST. */ RefAST ASTFactory::create() { ASTNode* node = nodeFactory(); //new CommonASTNode(); node->setType(Token::INVALID_TYPE); return RefAST(new AST(node)); } RefAST ASTFactory::create(int type) { RefAST t = create(); t->initialize(type,""); return t; } RefAST ASTFactory::create(int type, const std::string& txt) { RefAST t = create(); t->initialize(type,txt); return t; } /** Create a new empty AST node; if the user did not specify * an AST node type, then create a default one: CommonAST. */ RefAST ASTFactory::create(const AST* tr) { if (!tr) return nullAST; // create(null) == null RefAST t = create(); t->initialize(tr); return t; } RefAST ASTFactory::create(RefToken tok) { RefAST t = create(); t->initialize(tok); return t; } /** Copy a single node. clone() is not used because * we want to return an AST not a plain object...a type * safety issue. Further, we want to have all AST node * creation go through the factory so creation can be * tracked. Returns null if t is null. */ RefAST ASTFactory::dup(const AST* t) { return create(t); // if t==null, create returns null } /** Duplicate tree including siblings of root. */ RefAST ASTFactory::dupList(const AST* t) { RefAST result = dupTree(t); // if t == null, then result==null RefAST nt = result; while (t) { // for each sibling of the root t = t->getNextSibling(); nt->setNextSibling(dupTree(t)); // dup each subtree, building new tree nt = nt->getNextSibling(); } return result; } /**Duplicate a tree, assuming this is a root node of a tree-- * duplicate that node and what's below; ignore siblings of root node. */ RefAST ASTFactory::dupTree(const AST* t) { RefAST result = dup(t); // make copy of root // copy all children of root. if (t) { result->setFirstChild( dupList(t->getFirstChild()) ); } return result; } /** Make a tree from a list of nodes. The first element in the * array is the root. If the root is null, then the tree is * a simple list not a tree. Handles null children nodes correctly. * For example, build(a, b, null, c) yields tree (a b c). build(null,a,b) * yields tree (nil a b). */ RefAST ASTFactory::make(std::vector nodes) { if ( nodes.size()==0 ) return RefAST(0); RefAST root = nodes[0]; RefAST tail = RefAST(0); if (root) { root->setFirstChild(RefAST(0)); // don't leave any old pointers set } // link in children; for (unsigned int i=1; isetFirstChild(nodes[i]); tail = root->getFirstChild(); } else { tail->setNextSibling(nodes[i]); tail = tail->getNextSibling(); } // Chase tail to last sibling while (tail->getNextSibling()) { tail = tail->getNextSibling(); } } return root; } /** Make a tree from a list of nodes, where the nodes are contained * in an ASTArray object */ RefAST ASTFactory::make(ASTArray* nodes) { RefAST ret = make(nodes->array); delete nodes; return ret; } /** Make an AST the root of current AST */ void ASTFactory::makeASTRoot(ASTPair& currentAST, RefAST root) { if (root) { // Add the current root as a child of new root root->addChild(currentAST.root); // The new current child is the last sibling of the old root currentAST.child = currentAST.root; currentAST.advanceChildToEnd(); // Set the new root currentAST.root = root; } } void ASTFactory::setASTNodeFactory(factory_type factory) { nodeFactory = factory; } grcompiler-5.2.1/compiler/Grammar/Antlr/000077500000000000000000000000001411153030700201355ustar00rootroot00000000000000grcompiler-5.2.1/compiler/Grammar/Antlr/ANTLRException.hpp000066400000000000000000000035221411153030700234070ustar00rootroot00000000000000#ifndef INC_ANTLRException_hpp__ #define INC_ANTLRException_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include #include class ANTLRException : public std::exception { private: std::string text; public: ANTLRException(const std::string& s); virtual ~ANTLRException() throw(); virtual std::string toString() const; std::string getMessage() const; virtual const char* what() const throw(); }; #endif //INC_ANTLRException_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/AST.hpp000066400000000000000000000062521411153030700213020ustar00rootroot00000000000000#ifndef INC_AST_hpp__ #define INC_AST_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/ASTNode.hpp" #include class AST { public: AST(ASTNode* n); ~AST(); const ASTNode* getNode() const; ASTNode* getNode(); void addChild(RefAST c); bool equals(const AST* t) const; bool equalsList(const AST* t) const; bool equalsListPartial(const AST* t) const; bool equalsTree(const AST* t) const; bool equalsTreePartial(const AST* t) const; std::vector findAll(RefAST t) const; std::vector findAllPartial(RefAST t) const; RefAST getFirstChild() const; RefAST getNextSibling() const; std::string getText() const; int getType() const; void initialize(int t,const std::string& txt); void initialize(const AST* t); void initialize(RefToken t); void removeChildren(); void setFirstChild(RefAST c); void setNextSibling(RefAST n); void setText(const std::string& txt); void setType(int type); std::string toString() const; std::string toStringList() const; std::string toStringTree() const; // Sharon added: #include "ASTDebug.hpp" void iterativeRemoveChildren(bool doSiblings, int level = 0); void deleteNode(int /*level*/) { if (node) { //int nLine = node->debug(level); // debugger delete node; } node = NULL; } AST * getPreviousSibling() { return prev; } void setPreviousSibling(AST * node) { prev = node; } private: RefAST down; RefAST right; ASTNode* node; // Sharon added, for iterativeRemoveChildren: AST * prev; void doWorkForFindAll(std::vector& v, RefAST target,bool partialMatch) const; AST(); AST(const AST& other); AST& operator=(const AST& other); }; extern RefAST nullAST; #ifdef NEEDS_OPERATOR_LESS_THAN inline bool operator<(RefAST l,RefAST r); // {return true;} #endif #endif //INC_AST_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ASTArray.hpp000066400000000000000000000036431411153030700223020ustar00rootroot00000000000000#ifndef INC_ASTArray_hpp__ #define INC_ASTArray_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/AST.hpp" /** ASTArray is a class that allows ANTLR to * generate code that can create and initialize an array * in one expression, like: * (new ASTArray(3))->add(x)->add(y)->add(z) */ class ASTArray { public: int size; // = 0; std::vector array; ASTArray(int capacity) : size(0) , array(capacity) {} ASTArray* add(RefAST node) { array[size++] = node; return this; } }; #endif //INC_ASTArray_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ASTFactory.hpp000066400000000000000000000077361411153030700226420ustar00rootroot00000000000000#ifndef INC_ASTFactory_hpp__ #define INC_ASTFactory_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/AST.hpp" #include "Antlr/ASTArray.hpp" #include "Antlr/ASTPair.hpp" /** AST Support code shared by TreeParser and Parser. * We use delegation to share code (and have only one * bit of code to maintain) rather than subclassing * or superclassing (forces AST support code to be * loaded even when you don't want to do AST stuff). * * Typically, setASTNodeType is used to specify the * type of node to create, but you can override * create to make heterogeneous nodes etc... */ class ASTFactory { public: typedef ASTNode* (*factory_type)(); protected: /** Name of AST class to create during tree construction. * Null implies that the create method should create * a default AST type such as CommonAST. */ factory_type nodeFactory; public: ASTFactory(); /** Add a child to the current AST */ void addASTChild(ASTPair& currentAST, RefAST child); /** Create a new empty AST node; if the user did not specify * an AST node type, then create a default one: CommonAST. */ virtual RefAST create(); RefAST create(int type); RefAST create(int type, const std::string& txt); /** Create a new empty AST node; if the user did not specify * an AST node type, then create a default one: CommonAST. */ RefAST create(const AST* tr); RefAST create(RefToken tok); /** Copy a single node. clone() is not used because * we want to return an AST not a plain object...a type * safety issue. Further, we want to have all AST node * creation go through the factory so creation can be * tracked. Returns null if t is null. */ RefAST dup(const AST* t); /** Duplicate tree including siblings of root. */ RefAST dupList(const AST* t); /**Duplicate a tree, assuming this is a root node of a tree-- * duplicate that node and what's below; ignore siblings of root node. */ RefAST dupTree(const AST* t); /** Make a tree from a list of nodes. The first element in the * array is the root. If the root is null, then the tree is * a simple list not a tree. Handles null children nodes correctly. * For example, build(a, b, null, c) yields tree (a b c). build(null,a,b) * yields tree (nil a b). */ RefAST make(std::vector nodes); /** Make a tree from a list of nodes, where the nodes are contained * in an ASTArray object */ RefAST make(ASTArray* nodes); /** Make an AST the root of current AST */ void makeASTRoot(ASTPair& currentAST, RefAST root); void setASTNodeFactory(factory_type factory); virtual ~ASTFactory() {} }; #endif //INC_ASTFactory_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ASTNULLType.hpp000066400000000000000000000036701411153030700226400ustar00rootroot00000000000000#ifndef INC_ASTNULLType_hpp__ #define INC_ASTNULLType_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/ASTNode.hpp" /** There is only one instance of this class **/ class ASTNULLType : public ASTNode { public: std::string getText() const { return ""; } int getType() const { return Token::NULL_TREE_LOOKAHEAD; } void initialize(int t, const std::string& txt) {} void initialize(const AST* t) {} void initialize(RefToken t) {} void setText(const std::string& text) {;} void setType(int ttype) {;} }; #endif //INC_ASTNULLType_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ASTNode.hpp000066400000000000000000000041271411153030700221070ustar00rootroot00000000000000#ifndef INC_ASTNode_hpp__ #define INC_ASTNode_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/Token.hpp" #include "Antlr/RefCount.hpp" class AST; typedef RefCount RefAST; class ASTNode { public: ASTNode() {} virtual ~ASTNode() {} virtual std::string getText() const=0; virtual int getType() const=0; virtual void initialize(int t,const std::string& txt)=0; virtual void initialize(const AST* t)=0; virtual void initialize(RefToken t)=0; virtual void setText(const std::string& txt)=0; virtual void setType(int type)=0; // Sharon added: virtual int debug(int level) = 0; private: ASTNode(const ASTNode& other); ASTNode& operator=(const ASTNode& other); }; #endif //INC_ASTNode_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ASTPair.hpp000066400000000000000000000050241411153030700221120ustar00rootroot00000000000000#ifndef INC_ASTPair_hpp__ #define INC_ASTPair_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/AST.hpp" /** ASTPair: utility class used for manipulating a pair of ASTs * representing the current AST root and current AST sibling. * This exists to compensate for the lack of pointers or 'var' * arguments in Java. * * OK, so we can do those things in C++, but it seems easier * to stick with the Java way for now. */ class ASTPair { public: RefAST root; // current root of tree RefAST child; // current child to which siblings are added /** Make sure that child is the last sibling */ void advanceChildToEnd() { if (child) { while (child->getNextSibling()) { child = child->getNextSibling(); } } } // /** Copy an ASTPair. Don't call it clone() because we want type-safety */ // ASTPair copy() { // ASTPair tmp = new ASTPair(); // tmp.root = root; // tmp.child = child; // return tmp; // } std::string toString() const { std::string r = !root ? std::string("null") : root->getText(); std::string c = !child ? std::string("null") : child->getText(); return "["+r+","+c+"]"; } }; #endif //INC_ASTPair_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/BitSet.hpp000066400000000000000000000026171411153030700220460ustar00rootroot00000000000000#ifndef INC_BitSet_hpp__ #define INC_BitSet_hpp__ #include "Antlr/config.hpp" #include #include /**A BitSet to replace java.util.BitSet. * Primary differences are that most set operators return new sets * as opposed to oring and anding "in place". Further, a number of * operations were added. I cannot contain a BitSet because there * is no way to access the internal bits (which I need for speed) * and, because it is final, I cannot subclass to add functionality. * Consider defining set degree. Without access to the bits, I must * call a method n times to test the ith bit...ack! * * Also seems like or() from util is wrong when size of incoming set is bigger * than this.length. * * * This is a C++ version of the Java class described above, with only * a handful of the methods implemented, because we don't need the * others at runtime. It's really just a wrapper around vector, * which should probably be changed to a wrapper around bitset, once * bitset is more widely available. * * @author Terence Parr, MageLang Institute * @author
Pete Wells */ class BitSet { private: std::vector storage; public: BitSet(int nbits=64); BitSet(const unsigned long* bits_,int nlongs); ~BitSet(); void add(int el); bool member(int el) const; std::vector toArray() const; }; #endif //INC_BitSet_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/CharBuffer.hpp000066400000000000000000000046501411153030700226620ustar00rootroot00000000000000#ifndef INC_CharBuffer_hpp__ #define INC_CharBuffer_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /**A Stream of characters fed to the lexer from a InputStream that can * be rewound via mark()/rewind() methods. *

* A dynamic array is used to buffer up all the input characters. Normally, * "k" characters are stored in the buffer. More characters may be stored during * guess mode (testing syntactic predicate), or when LT(i>k) is referenced. * Consumption of characters is deferred. In other words, reading the next * character is not done by conume(), but deferred until needed by LA or LT. *

* * @see antlr.CharQueue */ #include "Antlr/config.hpp" #include #include "Antlr/InputBuffer.hpp" class CharBuffer : public InputBuffer { private: // char source std::istream& input; public: /** Create a character buffer */ CharBuffer(std::istream& input_); /** Get the next character from the stream */ int getChar(); private: CharBuffer(const CharBuffer& other); CharBuffer& operator=(const CharBuffer& other); }; #endif //INC_CharBuffer_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/CharScanner.hpp000066400000000000000000000127631411153030700230460ustar00rootroot00000000000000#ifndef INC_CharScanner_hpp__ #define INC_CharScanner_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/TokenStream.hpp" #include "Antlr/ScannerException.hpp" #include "Antlr/InputBuffer.hpp" #include "Antlr/BitSet.hpp" #include "Antlr/LexerSharedInputState.hpp" #include #include class CharScanner; class CharScannerLiteralsLess : public std::binary_function { private: const CharScanner* scanner; public: #ifdef NO_TEMPLATE_PARTS CharScannerLiteralsLess(); // not really used #endif CharScannerLiteralsLess(const CharScanner* theScanner); bool operator() (const std::string& x,const std::string& y) const; }; class CharScanner : public TokenStream { private: #ifndef NO_STATIC_CONSTS static const char NO_CHAR = 0; #else enum { NO_CHAR = 0 }; #endif public: #ifndef NO_STATIC_CONSTS static const int EOF_CHAR = EOF; #else enum { EOF_CHAR = EOF }; #endif protected: std::string text; // text of current token bool saveConsumedInput; // does consume() save characters? typedef RefToken (*factory_type)(); factory_type tokenFactory; // what kind of tokens to create? bool caseSensitive; std::map literals; // set by subclass RefToken _returnToken; // used to return tokens w/o using return val // Input chars LexerSharedInputState inputState; /** Used during filter mode to indicate that path is desired. * A subsequent scan error will report an error as usual if acceptPath=true; */ bool commitToPath; public: CharScanner(); CharScanner(InputBuffer& cb); CharScanner(InputBuffer* cb); CharScanner(const LexerSharedInputState& state); virtual ~CharScanner(); virtual void append(char c); virtual void append(const std::string& s); virtual void commit(); virtual void consume(); /** Consume chars until one matches the given char */ virtual void consumeUntil(int c); /** Consume chars until one matches the given set */ virtual void consumeUntil(const BitSet& set); virtual bool getCaseSensitive() const; virtual bool getCaseSensitiveLiterals() const=0; virtual bool getCommitToPath() const; virtual const std::string& getFilename() const; virtual InputBuffer& getInputBuffer(); virtual LexerSharedInputState getInputState(); virtual int getLine() const; // return a copy of the current text buffer virtual const std::string& getText() const; virtual RefToken getTokenObject() const; virtual int LA(int i); protected: virtual RefToken makeToken(int t); public: virtual int mark(); virtual void match(int c); virtual void match(const BitSet& b); virtual void match(const std::string& s); virtual void matchNot(int c); virtual void matchRange(int c1, int c2); virtual void newline(); void panic(); void panic(const std::string& s); /** Report exception errors caught in nextToken() */ virtual void reportError(const ScannerException& e); /** Parser error-reporting function can be overridden in subclass */ virtual void reportError(const std::string& s); /** Parser warning-reporting function can be overridden in subclass */ virtual void reportWarning(const std::string& s); virtual void resetText(); virtual void rewind(int pos); virtual void setCaseSensitive(bool t); virtual void setCommitToPath(bool commit); virtual void setFilename(const std::string& f); virtual void setLine(int l); virtual void setText(const std::string& s); virtual void setTokenObjectFactory(factory_type factory); // Test the token text against the literals table // Override this method to perform a different literals test virtual int testLiteralsTable(int ttype) const; // Override this method to get more specific case handling virtual int toLower(int c) const; protected: class Tracer { private: CharScanner* parser; std::string text; public: Tracer(CharScanner* p,const std::string& t) : parser(p), text(t) { parser->traceIn(text); } ~Tracer() { parser->traceOut(text); } }; public: virtual void traceIn(const std::string& rname); virtual void traceOut(const std::string& rname); protected: static const char* charName(int ch); }; #endif //INC_CharScanner_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/CircularQueue.hpp000066400000000000000000000040471411153030700234240ustar00rootroot00000000000000#ifndef INC_CircularQueue_hpp__ #define INC_CircularQueue_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include #include template class CircularQueue { private: typename std::vector storage; public: CircularQueue() : storage() {} ~CircularQueue() {} T elementAt(int idx) const { return storage[idx]; } void removeFirst() { if (storage.size()>0) storage.erase(storage.begin()); } void append(const T& t) { storage.push_back(t); } size_t entries() const { return storage.size(); } private: CircularQueue(const CircularQueue&); const CircularQueue& operator=(const CircularQueue&); }; #endif //INC_CircularQueue_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/CommonASTNode.hpp000066400000000000000000000041341411153030700232560ustar00rootroot00000000000000#ifndef INC_CommonASTNode_hpp__ #define INC_CommonASTNode_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/ASTNode.hpp" class CommonASTNode : public ASTNode { public: CommonASTNode() { ttype=Token::INVALID_TYPE; } virtual ~CommonASTNode() {} std::string getText() const { return text; } int getType() const { return ttype; } void initialize(int t,const std::string& txt); void initialize(const AST* t); void initialize(RefToken t); void setText(const std::string& txt) { text=txt; } void setType(int type) { ttype=type; } static ASTNode* factory(); // Sharon added: int debug(int /*level*/) { return -1; } private: int ttype; std::string text; }; #endif //INC_CommonASTNode_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/CommonToken.hpp000066400000000000000000000041121411153030700230750ustar00rootroot00000000000000#ifndef INC_CommonToken_hpp__ #define INC_CommonToken_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/Token.hpp" #include class CommonToken : public Token { protected: // most tokens will want line and text information int line; std::string text; public: CommonToken(); CommonToken(int t, const std::string& txt); CommonToken(const std::string& s); int getLine() const; std::string getText() const; void setLine(int l); void setText(const std::string& s); std::string toString() const; bool isInvalid() const; static RefToken factory(); private: CommonToken(const CommonToken&); const CommonToken& operator=(const CommonToken&); }; #endif //INC_CommonToken_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/InputBuffer.hpp000066400000000000000000000072311411153030700231020ustar00rootroot00000000000000#ifndef INC_InputBuffer_hpp__ #define INC_InputBuffer_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /**A Stream of characters fed to the lexer from a InputStream that can * be rewound via mark()/rewind() methods. *

* A dynamic array is used to buffer up all the input characters. Normally, * "k" characters are stored in the buffer. More characters may be stored during * guess mode (testing syntactic predicate), or when LT(i>k) is referenced. * Consumption of characters is deferred. In other words, reading the next * character is not done by conume(), but deferred until needed by LA or LT. *

* * @see antlr.CharQueue */ #include "Antlr/config.hpp" #include "Antlr/CircularQueue.hpp" #include class InputBuffer { protected: // char source // leave to subclasses // Number of active markers int nMarkers; // = 0; // Additional offset used when markers are active int markerOffset; // = 0; // Number of calls to consume() since last LA() or LT() call int numToConsume; // = 0; // Circular queue CircularQueue queue; public: /** Create a character buffer */ InputBuffer(); virtual ~InputBuffer() {} /** This method updates the state of the input buffer so that * the text matched since the most recent mark() is no longer * held by the buffer. So, you either do a mark/rewind for * failed predicate or mark/commit to keep on parsing without * rewinding the input. */ void commit(); /** Mark another character for deferred consumption */ virtual void consume(); /** Ensure that the character buffer is sufficiently full */ virtual void fill(int amount); /** Override this in subclasses to get the next character */ virtual int getChar()=0; std::string getLAChars() const; std::string getMarkedChars() const; virtual bool isMarked() const; /** Get a lookahead character */ virtual int LA(int i); /**Return an integer marker that can be used to rewind the buffer to * its current state. */ virtual int mark(); /**Rewind the character buffer to a marker. * @param mark Marker returned previously from mark() */ virtual void rewind(int mark); protected: /** Sync up deferred consumption */ void syncConsume(); private: InputBuffer(const InputBuffer& other); InputBuffer& operator=(const InputBuffer& other); }; #endif //INC_InputBuffer_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/LLkParser.hpp000066400000000000000000000046451411153030700225160ustar00rootroot00000000000000#ifndef INC_LLkParser_hpp__ #define INC_LLkParser_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/Parser.hpp" /**An LL(k) parser. * * @see antlr.Token * @see antlr.TokenBuffer * @see antlr.LL1Parser */ class LLkParser : public Parser { private: int k; public: // LLkParser(int k_); LLkParser(const ParserSharedInputState& lexer, int k_); LLkParser(TokenBuffer& tokenBuf, int k_); LLkParser(TokenStream& lexer, int k_); /**Consume another token from the input stream. Can only write sequentially! * If you need 3 tokens ahead, you must consume() 3 times. *

* Note that it is possible to overwrite tokens that have not been matched. * For example, calling consume() 3 times when k=2, means that the first token * consumed will be overwritten with the 3rd. */ void consume(); int LA(int i); RefToken LT(int i); private: void trace(const std::string& ee, const std::string& rname); public: void traceIn(const std::string& rname); void traceOut(const std::string& rname); }; #endif //INC_LLkParser_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/LexerSharedInputState.hpp000066400000000000000000000017001411153030700250730ustar00rootroot00000000000000#ifndef INC_LexerSharedInputState_hpp__ #define INC_LexerSharedInputState_hpp__ #include "Antlr/config.hpp" #include "Antlr/InputBuffer.hpp" #include "Antlr/RefCount.hpp" #include #include /** This object contains the data associated with an * input stream of characters. Multiple lexers * share a single LexerSharedInputState to lex * the same input stream. */ class LexerInputState { public: LexerInputState(InputBuffer* inbuf); LexerInputState(InputBuffer& inbuf); LexerInputState(std::istream& in); ~LexerInputState(); int line; int guessing; /** What file (if known) caused the problem? */ std::string filename; InputBuffer& getInput(); private: InputBuffer* input; bool inputResponsible; // we don't want these: LexerInputState(const LexerInputState&); LexerInputState& operator=(const LexerInputState&); }; typedef RefCount LexerSharedInputState; #endif //INC_LexerSharedInputState_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/MismatchedTokenException.hpp000066400000000000000000000101331411153030700256020ustar00rootroot00000000000000#ifndef INC_MismatchedTokenException_hpp__ #define INC_MismatchedTokenException_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /* Header modified with backport of throw() destructor from ANTLR 2.7.2 */ #include "Antlr/config.hpp" #include "Antlr/ParserException.hpp" #include "Antlr/BitSet.hpp" #include "Antlr/Token.hpp" #include "Antlr/AST.hpp" #include class MismatchedTokenException : public ParserException { private: // Token names array for formatting std::vector tokenNames; public: // The token that was encountered const RefToken token; // The offending AST node if tree walking const RefAST node; std::string tokenText; // taken from node or token object // Types of tokens #ifndef NO_STATIC_CONSTS static const int TOKEN = 1; static const int NOT_TOKEN = 2; static const int RANGE = 3; static const int NOT_RANGE = 4; static const int SET = 5; static const int NOT_SET = 6; #else enum { TOKEN = 1, NOT_TOKEN = 2, RANGE = 3, NOT_RANGE = 4, SET = 5, NOT_SET = 6 }; #endif protected: // One of the above int mismatchType; // For TOKEN/NOT_TOKEN and RANGE/NOT_RANGE int expecting; // For RANGE/NOT_RANGE (expecting is lower bound of range) int upper; // For SET/NOT_SET BitSet set; public: MismatchedTokenException(); // Expected range / not range MismatchedTokenException( const std::vector& tokenNames_, RefAST node_, int lower, int upper_, bool matchNot ); // Expected token / not token MismatchedTokenException( const std::vector& tokenNames_, RefAST node_, int expecting_, bool matchNot ); // Expected BitSet / not BitSet MismatchedTokenException( const std::vector& tokenNames_, RefAST node_, BitSet set_, bool matchNot ); // Expected range / not range MismatchedTokenException( const std::vector& tokenNames_, RefToken token_, int lower, int upper_, bool matchNot ); // Expected token / not token MismatchedTokenException( const std::vector& tokenNames_, RefToken token_, int expecting_, bool matchNot ); // Expected BitSet / not BitSet MismatchedTokenException( const std::vector& tokenNames_, RefToken token_, BitSet set_, bool matchNot ); ~MismatchedTokenException() throw() {}; /** * @return the column number that this exception happened on. */ int getColumn() const; /** * Returns the error message that happened on the line/col given. * Copied from toString(). */ std::string getErrorMessage() const; /** * @return the line number that this exception happened on. */ int getLine() const; private: std::string tokenName(int tokenType) const; public: std::string toString() const; }; #endif //INC_MismatchedTokenException_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/NoViableAltException.hpp000066400000000000000000000042451411153030700246720ustar00rootroot00000000000000#ifndef INC_NoViableAltException_hpp__ #define INC_NoViableAltException_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /* Header modified with backport of throw() destructor from ANTLR 2.7.2 */ #include "Antlr/config.hpp" #include "Antlr/ParserException.hpp" #include "Antlr/Token.hpp" #include "Antlr/AST.hpp" class NoViableAltException : public ParserException { public: const RefToken token; const RefAST node; // handles parsing and treeparsing NoViableAltException(RefAST t); NoViableAltException(RefToken t); ~NoViableAltException() throw() {}; /** * Returns a clean error message (no line number/column information) */ std::string getErrorMessage() const; /** * Returns a string representation of this exception. */ virtual std::string toString() const; }; #endif //INC_NoViableAltException_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/Parser.hpp000066400000000000000000000136231411153030700221070ustar00rootroot00000000000000#ifndef INC_Parser_hpp__ #define INC_Parser_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/BitSet.hpp" #include "Antlr/TokenBuffer.hpp" #include "Antlr/ParserException.hpp" #include "Antlr/ASTFactory.hpp" #include "Antlr/ParserSharedInputState.hpp" /**A generic ANTLR parser (LL(k) for k>=1) containing a bunch of * utility routines useful at any lookahead depth. We distinguish between * the LL(1) and LL(k) parsers because of efficiency. This may not be * necessary in the near future. * * Each parser object contains the state of the parse including a lookahead * cache (the form of which is determined by the subclass), whether or * not the parser is in guess mode, where tokens come from, etc... * *

* During guess mode, the current lookahead token(s) and token type(s) * cache must be saved because the token stream may not have been informed * to save the token (via mark) before the try block. * Guessing is started by: *

    *
  1. saving the lookahead cache. *
  2. marking the current position in the TokenBuffer. *
  3. increasing the guessing level. *
* * After guessing, the parser state is restored by: *
    *
  1. restoring the lookahead cache. *
  2. rewinding the TokenBuffer. *
  3. decreasing the guessing level. *
* * @see antlr.Token * @see antlr.TokenBuffer * @see antlr.TokenStream * @see antlr.LL1Parser * @see antlr.LLkParser */ extern bool DEBUG_PARSER; class Parser { protected: ParserSharedInputState inputState; /** Nesting level of registered handlers */ // int exceptionLevel; /** Table of token type to token names */ std::vector tokenNames; /** AST return value for a rule is squirreled away here */ RefAST returnAST; /** AST support code; parser and treeparser delegate to this object */ ASTFactory astFactory; // Parser(); Parser(TokenBuffer& input_); Parser(TokenBuffer* input_); Parser(const ParserSharedInputState& state); public: virtual ~Parser(); protected: void setTokenNames(const char** tokenNames_); public: /**Get another token object from the token stream */ virtual void consume()=0; /** Consume tokens until one matches the given token */ void consumeUntil(int tokenType); /** Consume tokens until one matches the given token set */ void consumeUntil(const BitSet& set); /** Get the AST return value squirreled away in the parser */ RefAST getAST(); ASTFactory& getASTFactory(); std::string getFilename() const; virtual ParserSharedInputState getInputState() const; std::string getTokenName(int num) const; std::vector getTokenNames() const; /** Return the token type of the ith token of lookahead where i=1 * is the current token being examined by the parser (i.e., it * has not been matched yet). */ virtual int LA(int i)=0; /**Return the ith token of lookahead */ virtual RefToken LT(int i)=0; // Forwarded to TokenBuffer virtual int mark(); /**Make sure current lookahead symbol matches token type t. * Throw an exception upon mismatch, which is catch by either the * error handler or by the syntactic predicate. */ void match(int t); /**Make sure current lookahead symbol matches the given set * Throw an exception upon mismatch, which is catch by either the * error handler or by the syntactic predicate. */ void match(const BitSet& b); void matchNot(int t); static void panic(); /** Parser error-reporting function can be overridden in subclass */ virtual void reportError(const ParserException& ex); /** Parser error-reporting function can be overridden in subclass */ virtual void reportError(const std::string& s); /** Parser warning-reporting function can be overridden in subclass */ virtual void reportWarning(const std::string& s); virtual void rewind(int pos); /** Set the object used to generate ASTs */ // void setASTFactory(ASTFactory astFactory_); /** Specify the type of node to create during tree building */ void setASTNodeFactory(ASTFactory::factory_type factory); void setFilename(const std::string& f); /** Set or change the input token buffer */ // void setTokenBuffer(TokenBuffer* t); virtual void traceIn(const std::string& rname); virtual void traceOut(const std::string& rname); protected: class Tracer { private: Parser* parser; std::string text; public: Tracer(Parser* p,const std::string& t) : parser(p), text(t) { parser->traceIn(text); } ~Tracer() { parser->traceOut(text); } }; private: Parser(const Parser&); const Parser& operator=(const Parser&); }; #endif //INC_Parser_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ParserException.hpp000066400000000000000000000042351411153030700237650ustar00rootroot00000000000000#ifndef INC_ParserException_hpp__ #define INC_ParserException_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /* Header modified with backport of throw() destructor from ANTLR 2.7.2 */ #include "Antlr/config.hpp" #include "Antlr/ANTLRException.hpp" class ParserException : public ANTLRException { public: int line; int column; ParserException(); ParserException(const std::string& m); ~ParserException() throw() {}; /** * @return the column number that this exception happened on. * @author Shawn P. Vincent (svincent@svincent.com) */ virtual int getColumn() const; virtual std::string getErrorMessage() const; /** * @return the line number that this exception happened on. * @author Shawn P. Vincent (svincent@svincent.com) */ virtual int getLine() const; }; #endif //INC_ParserException_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ParserSharedInputState.hpp000066400000000000000000000017511411153030700252560ustar00rootroot00000000000000#ifndef INC_ParserSharedInputState_hpp__ #define INC_ParserSharedInputState_hpp__ #include "Antlr/config.hpp" #include "Antlr/TokenBuffer.hpp" #include "Antlr/RefCount.hpp" #include /** This object contains the data associated with an * input stream of tokens. Multiple parsers * share a single ParserSharedInputState to parse * the same stream of tokens. */ class ParserInputState { public: ParserInputState(TokenBuffer* input_); ParserInputState(TokenBuffer& input_); ~ParserInputState(); public: /** Are we guessing (guessing>0)? */ int guessing; //= 0; /** What file (if known) caused the problem? */ std::string filename; TokenBuffer& getInput(); private: /** Where to get token objects */ TokenBuffer* input; bool inputResponsible; // we don't want these: ParserInputState(const ParserInputState&); ParserInputState& operator=(const ParserInputState&); }; typedef RefCount ParserSharedInputState; #endif //INC_ParserSharedInputState_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/RefCount.hpp000066400000000000000000000044661411153030700224050ustar00rootroot00000000000000#ifndef INC_RefCount_hpp__ #define INC_RefCount_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" template class RefCount { private: struct Ref { T* const ptr; unsigned int count; Ref(T* p) : ptr(p), count(1) {} ~Ref() {delete ptr;} Ref* increment() {++count;return this;} bool decrement() {return (--count==0);} }* ref; public: explicit RefCount(T* p=0) { ref=p ? new Ref(p) : 0; } RefCount(const RefCount& other) { ref=other.ref ? other.ref->increment() : 0; } ~RefCount() { if (ref && ref->decrement()) delete ref; } RefCount& operator=(const RefCount& other) { Ref* tmp=other.ref ? other.ref->increment() : 0; if (ref && ref->decrement()) delete ref; ref=tmp; return *this; } operator T* () const { return ref ? ref->ptr : 0; } T* operator->() const { return ref ? ref->ptr : 0; } T* get() const { return ref ? ref->ptr : 0; } }; #endif //INC_RefCount_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/ScannerException.hpp000066400000000000000000000046671411153030700241330ustar00rootroot00000000000000#ifndef INC_ScannerException_hpp__ #define INC_ScannerException_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/ANTLRException.hpp" class ScannerException : public ANTLRException { public: int line; int column; int c; // what about the text of the current (bad) token? ScannerException(); ScannerException(const std::string& m); ScannerException(const std::string& m, int line_); /** * @return the column number this exception occurred on. * @author Shawn P. Vincent (svincent@svincent.com) */ virtual int getColumn() const; /** * @return a text string describing this error message. * @author Shawn P. Vincent (svincent@svincent.com) */ virtual std::string getErrorMessage() const; /** * @return the line number this exception occurred on. * @author Shawn P. Vincent (svincent@svincent.com) */ virtual int getLine () const; /** * @return a string representation of this exception. * Modified by Shawn P. Vincent (svincent@svincent.com) */ virtual std::string toString() const; }; #endif //INC_ScannerException_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/SemanticException.hpp000066400000000000000000000033021411153030700242660ustar00rootroot00000000000000#ifndef INC_SemanticException_hpp__ #define INC_SemanticException_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/ParserException.hpp" class SemanticException : public ParserException { public: SemanticException(const std::string& s) : ParserException(s) {} }; #endif //INC_SemanticException_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/Token.hpp000066400000000000000000000054771411153030700217430ustar00rootroot00000000000000#ifndef INC_Token_hpp__ #define INC_Token_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/RefCount.hpp" #include /** A token is minimally a token type. Subclasses can add the text matched * for the token and line info. */ class Token; typedef RefCount RefToken; class Token { public: // constants #ifndef NO_STATIC_CONSTS static const int MIN_USER_TYPE = 4; static const int NULL_TREE_LOOKAHEAD = 3; static const int INVALID_TYPE = 0; static const int EOF_TYPE = 1; static const int SKIP = -1; #else enum { MIN_USER_TYPE = 4, NULL_TREE_LOOKAHEAD = 3, INVALID_TYPE = 0, EOF_TYPE = 1, SKIP = -1 }; #endif // each Token has at least a token type int type; //=INVALID_TYPE; public: // the illegal token object static RefToken badToken; // = new Token(INVALID_TYPE, ""); Token(); Token(int t); Token(int t, const std::string& txt); virtual int getColumn() const; virtual int getLine() const; virtual std::string getText() const; virtual int getType() const; virtual void setColumn(int c); virtual void setLine(int l); virtual void setText(const std::string& t); virtual void setType(int t); virtual std::string toString() const; virtual ~Token(); private: Token(const Token&); const Token& operator=(const Token&); }; #ifdef NEEDS_OPERATOR_LESS_THAN inline bool operator<(RefToken l,RefToken r); //{return true;} #endif extern RefToken nullToken; #endif //INC_Token_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/TokenBuffer.hpp000066400000000000000000000063721411153030700230700ustar00rootroot00000000000000#ifndef INC_TokenBuffer_hpp__ #define INC_TokenBuffer_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/TokenStream.hpp" #include "Antlr/CircularQueue.hpp" /**A Stream of Token objects fed to the parser from a TokenStream that can * be rewound via mark()/rewind() methods. *

* A dynamic array is used to buffer up all the input tokens. Normally, * "k" tokens are stored in the buffer. More tokens may be stored during * guess mode (testing syntactic predicate), or when LT(i>k) is referenced. * Consumption of tokens is deferred. In other words, reading the next * token is not done by conume(), but deferred until needed by LA or LT. *

* * @see antlr.Token * @see antlr.TokenStream * @see antlr.TokenQueue */ class TokenBuffer { protected: // Token source TokenStream& input; private: // Number of active markers int nMarkers; // Additional offset used when markers are active int markerOffset; // Number of calls to consume() since last LA() or LT() call int numToConsume; // Circular queue CircularQueue queue; public: /** Create a token buffer */ TokenBuffer(TokenStream& input_); /** Mark another token for deferred consumption */ void consume(); private: /** Ensure that the token buffer is sufficiently full */ void fill(int amount); public: /** Get a lookahead token value */ int LA(int i); /** Get a lookahead token */ RefToken LT(int i); /**Return an integer marker that can be used to rewind the buffer to * its current state. */ int mark(); /**Rewind the token buffer to a marker. * @param mark Marker returned previously from mark() */ void rewind(int mark); private: /** Sync up deferred consumption */ void syncConsume(); private: TokenBuffer(const TokenBuffer& other); const TokenBuffer& operator=(const TokenBuffer& other); public: // virtual ~TokenBuffer() {} }; #endif //INC_TokenBuffer_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/TokenStream.hpp000066400000000000000000000033751411153030700231120ustar00rootroot00000000000000#ifndef INC_TokenStream_hpp__ #define INC_TokenStream_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /**This interface allows any object to pretend it is a stream * of tokens. * @author Terence Parr, MageLang Institute */ #include "Antlr/config.hpp" #include "Antlr/Token.hpp" class TokenStream { public: virtual RefToken nextToken()=0; virtual ~TokenStream() {} }; #endif //INC_TokenStream_hpp__ grcompiler-5.2.1/compiler/Grammar/Antlr/config.hpp000066400000000000000000000055661411153030700221270ustar00rootroot00000000000000#ifndef INC_config_hpp__ #define INC_config_hpp__ /** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1999 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1999 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /* * Just a simple configuration file to differentiate between the * various compilers used. */ #ifdef _MSC_VER // Microsoft Visual C++ // This warning really gets on my nerves. // It's the one about symbol longer than 256 chars, and it happens // all the time with STL. #pragma warning( disable : 4786 ) // Now, some defines for shortcomings in the MS compiler: // Not allowed to put 'static const int XXX=20;' in a class definition #define NO_STATIC_CONSTS // Using vector requires operator<(X,X) to be defined #define NEEDS_OPERATOR_LESS_THAN // No strcasecmp in the C library (so use stricmp instead) // - Anyone know which is in which standard? #define NO_STRCASECMP #endif // // SunPro Compiler (Using OBJECTSPACE STL) // #ifdef __SUNPRO_CC #undef namespace #define namespace #undef explicit #define explicit #define exception os_exception #define bad_exception os_bad_exception // Not allowed to put 'static const int XXX=20;' in a class definition #define NO_STATIC_CONSTS // Using vector requires operator<(X,X) to be defined #define NEEDS_OPERATOR_LESS_THAN #endif // // Inprise C++ Builder 3.0 // #ifdef __BCPLUSPLUS__ #define NO_TEMPLATE_PARTS #define NO_STRCASECMP #endif #ifdef __IBMCPP__ // IBM VisualAge C++ ( which includes the Dinkumware C++ Library ) // No strcasecmp in the C library (so use stricmp instead) // - Anyone know which is in which standard? #define NO_STRCASECMP #endif #endif //INC_config_hpp__ grcompiler-5.2.1/compiler/Grammar/BitSet.cpp000066400000000000000000000032761411153030700207630ustar00rootroot00000000000000#include "Antlr/BitSet.hpp" /**A BitSet to replace java.util.BitSet. * Primary differences are that most set operators return new sets * as opposed to oring and anding "in place". Further, a number of * operations were added. I cannot contain a BitSet because there * is no way to access the internal bits (which I need for speed) * and, because it is final, I cannot subclass to add functionality. * Consider defining set degree. Without access to the bits, I must * call a method n times to test the ith bit...ack! * * Also seems like or() from util is wrong when size of incoming set is bigger * than this.length. * * * This is a C++ version of the Java class described above, with only * a handful of the methods implemented, because we don't need the * others at runtime. It's really just a wrapper around vector, * which should probably be changed to a wrapper around bitset, once * bitset is more widely available. * * @author Terence Parr, MageLang Institute * @author
Pete Wells */ BitSet::BitSet(int nbits) : storage(nbits) { for (int i=0;i>5] & (1UL << (i&31))) ? true : false; } } BitSet::~BitSet() { } void BitSet::add(int el) { storage[el] = true; } bool BitSet::member(int el) const { if ( el < 0 || el >= (int)storage.size()) return false; return storage[el]; } std::vector BitSet::toArray() const { std::vector elems; for (unsigned int i=0;iSOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /**A Stream of characters fed to the lexer from a InputStream that can * be rewound via mark()/rewind() methods. *

* A dynamic array is used to buffer up all the input characters. Normally, * "k" characters are stored in the buffer. More characters may be stored during * guess mode (testing syntactic predicate), or when LT(i>k) is referenced. * Consumption of characters is deferred. In other words, reading the next * character is not done by conume(), but deferred until needed by LA or LT. *

* * @see antlr.CharQueue */ #include "Antlr/CharBuffer.hpp" #include /** Create a character buffer */ CharBuffer::CharBuffer(std::istream& input_) : input(input_) {} /** Get the next character from the stream */ int CharBuffer::getChar() { return input.get(); } grcompiler-5.2.1/compiler/Grammar/CharScanner.cpp000066400000000000000000000205131411153030700217510ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/CharScanner.hpp" #include "Antlr/CommonToken.hpp" #include "Antlr/TokenStream.hpp" #include "Antlr/ScannerException.hpp" #include #include #include #include #include #ifdef _MSC_VER #pragma warning(disable: 4355) // used in base member initializer list #endif CharScannerLiteralsLess::CharScannerLiteralsLess(const CharScanner* theScanner) : scanner(theScanner) {} bool CharScannerLiteralsLess::operator() (const std::string& x,const std::string& y) const { if (scanner->getCaseSensitiveLiterals()) { return std::less()(x,y); } else { #ifdef NO_STRCASECMP return (_stricmp(x.c_str(),y.c_str())<0); #else return (strcasecmp(x.c_str(),y.c_str())<0); #endif } } CharScanner::CharScanner(InputBuffer& cb) : saveConsumedInput(true) //, caseSensitiveLiterals(true) , literals(CharScannerLiteralsLess(this)) , inputState(new LexerInputState(cb)) , commitToPath(false) { setTokenObjectFactory(&CommonToken::factory); } CharScanner::CharScanner(InputBuffer* cb) : saveConsumedInput(true) //, caseSensitiveLiterals(true) , literals(CharScannerLiteralsLess(this)) , inputState(new LexerInputState(cb)) , commitToPath(false) { setTokenObjectFactory(&CommonToken::factory); } CharScanner::CharScanner(const LexerSharedInputState& state) : saveConsumedInput(true) //, caseSensitiveLiterals(true) , literals(CharScannerLiteralsLess(this)) , inputState(state) , commitToPath(false) { setTokenObjectFactory(&CommonToken::factory); } CharScanner::~CharScanner() { } void CharScanner::append(char c) { if (saveConsumedInput) text+=c; } void CharScanner::append(const std::string& s) { if (saveConsumedInput) text+=s; } void CharScanner::commit() { inputState->getInput().commit(); } void CharScanner::consume() { if (inputState->guessing == 0) { if (caseSensitive) { append(LA(1)); } else { // use input.LA(), not LA(), to get original case // CharScanner.LA() would toLower it. append(inputState->getInput().LA(1)); } } inputState->getInput().consume(); } /** Consume chars until one matches the given char */ void CharScanner::consumeUntil(int c) { while (LA(1) != EOF_CHAR && LA(1) != c) { consume(); } } /** Consume chars until one matches the given set */ void CharScanner::consumeUntil(const BitSet& set) { while (LA(1) != EOF_CHAR && !set.member(LA(1))) { consume(); } } bool CharScanner::getCaseSensitive() const { return caseSensitive; } //bool CharScanner::getCaseSensitiveLiterals() const //{ return caseSensitiveLiterals; } bool CharScanner::getCommitToPath() const { return commitToPath; } const std::string& CharScanner::getFilename() const { return inputState->filename; } InputBuffer& CharScanner::getInputBuffer() { return inputState->getInput(); } LexerSharedInputState CharScanner::getInputState() { return inputState; } int CharScanner::getLine() const { return inputState->line; } // return a copy of the current text buffer const std::string& CharScanner::getText() const { return text; } RefToken CharScanner::getTokenObject() const { return _returnToken; } int CharScanner::LA(int i) { if ( caseSensitive ) { return inputState->getInput().LA(i); } else { return toLower(inputState->getInput().LA(i)); } } RefToken CharScanner::makeToken(int t) { RefToken tok=tokenFactory(); tok->setType(t); tok->setLine(inputState->line); return tok; } int CharScanner::mark() { return inputState->getInput().mark(); } void CharScanner::match(int c) { if ( LA(1) != c ) { throw ScannerException(std::string("mismatched char: '") + charName(LA(1)) + "' expected '"+charName(c)+"'", inputState->line); } consume(); } void CharScanner::match(const BitSet& b) { if (!b.member(LA(1))) { throw ScannerException(std::string("mismatched char: '") + charName(LA(1)) + "'", inputState->line); } consume(); } void CharScanner::match(const std::string& s) { for (auto c: s) { if ( LA(1) != c ) { throw ScannerException(std::string("mismatched char: '") + charName(LA(1)) + "'", inputState->line); } consume(); } } void CharScanner::matchNot(int c) { if ( LA(1) == c ) { throw ScannerException(std::string("mismatched char: '") + charName(LA(1)) + "'", inputState->line); } consume(); } void CharScanner::matchRange(int c1, int c2) { if (LA(1)c2) { throw ScannerException(std::string("char out of range: '") + charName(LA(1)) + "'", inputState->line); } consume(); } void CharScanner::newline() { ++inputState->line; } void CharScanner::panic() { std::cerr << "CharScanner: panic" << std::endl; exit(1); } void CharScanner::panic(const std::string& s) { std::cerr << "CharScanner: panic: " << s << std::endl; exit(1); } /** Report exception errors caught in nextToken() */ void CharScanner::reportError(const ScannerException& ex) { if (getFilename() == "") std::cerr << "Error: " << ex.toString() << std::endl; else std::cerr << "Error in " << getFilename() << ": " << ex.toString() << std::endl; } /** Parser error-reporting function can be overridden in subclass */ void CharScanner::reportError(const std::string& s) { if (getFilename() == "") std::cerr << "Error: " << s << std::endl; else std::cerr << "Error in " << getFilename() << ": " << s << std::endl; } /** Parser warning-reporting function can be overridden in subclass */ void CharScanner::reportWarning(const std::string& s) { if (getFilename() == "") std::cerr << "Warning: " << s << std::endl; else std::cerr << "Warning in " << getFilename() << ": " << s << std::endl; } void CharScanner::resetText() { text=""; } void CharScanner::rewind(int pos) { inputState->getInput().rewind(pos); } void CharScanner::setCaseSensitive(bool t) { caseSensitive = t; } void CharScanner::setCommitToPath(bool commit) { commitToPath = commit; } void CharScanner::setFilename(const std::string& f) { inputState->filename=f; } void CharScanner::setLine(int l) { inputState->line=l; } void CharScanner::setText(const std::string& s) { text=s; } void CharScanner::setTokenObjectFactory(factory_type factory) { tokenFactory=factory; } // Test the token text against the literals table // Override this method to perform a different literals test int CharScanner::testLiteralsTable(int ttype) const { std::map::const_iterator i = literals.find(text); if (i != literals.end()) ttype = (*i).second; return ttype; } // Override this method to get more specific case handling int CharScanner::toLower(int c) const { return tolower(c); } void CharScanner::traceIn(const std::string& rname) { std::cout << "enter lexer " << rname << "; c==" << LA(1) << std::endl; } void CharScanner::traceOut(const std::string& rname) { std::cout << "exit lexer " << rname << "; c==" << LA(1) << std::endl; } const char* CharScanner::charName(int ch) { if (ch == EOF) return "EOF"; else { static char buf[2]; buf[0] = static_cast(ch); buf[1] = '\0'; return buf; } } #ifndef NO_STATIC_CONSTS const char CharScanner::NO_CHAR; const int CharScanner::EOF_CHAR; #endif grcompiler-5.2.1/compiler/Grammar/CommonASTNode.cpp000066400000000000000000000035041411153030700221710ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/config.hpp" #include "Antlr/CommonASTNode.hpp" #include "Antlr/AST.hpp" void CommonASTNode::initialize(int t,const std::string& txt) { setType(t); setText(txt); } void CommonASTNode::initialize(const AST* t) { setType(t->getType()); setText(t->getText()); } void CommonASTNode::initialize(RefToken t) { setType(t->getType()); setText(t->getText()); } ASTNode* CommonASTNode::factory() { return new CommonASTNode; } grcompiler-5.2.1/compiler/Grammar/CommonToken.cpp000066400000000000000000000041141411153030700220120ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/CommonToken.hpp" CommonToken::CommonToken() {} CommonToken::CommonToken(int t, const std::string& txt) { type=t; setText(txt); } CommonToken::CommonToken(const std::string& s) { text=s; } int CommonToken::getLine() const { return line; } std::string CommonToken::getText() const { return text; } void CommonToken::setLine(int l) { line=l; } void CommonToken::setText(const std::string& s) { text=s; } std::string CommonToken::toString() const { return "[\""+getText()+"\",<"+std::to_string(type)+">,line="+std::to_string(line)+"]"; } bool CommonToken::isInvalid() const { return type==INVALID_TYPE; } RefToken CommonToken::factory() { return RefToken(new CommonToken); } grcompiler-5.2.1/compiler/Grammar/InputBuffer.cpp000066400000000000000000000072171411153030700220210ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ /**A Stream of characters fed to the lexer from a InputStream that can * be rewound via mark()/rewind() methods. *

* A dynamic array is used to buffer up all the input characters. Normally, * "k" characters are stored in the buffer. More characters may be stored during * guess mode (testing syntactic predicate), or when LT(i>k) is referenced. * Consumption of characters is deferred. In other words, reading the next * character is not done by conume(), but deferred until needed by LA or LT. *

* * @see antlr.CharQueue */ #include "Antlr/InputBuffer.hpp" //#include /** Create a character buffer */ InputBuffer::InputBuffer() : nMarkers(0), markerOffset(0), numToConsume(0) {} /** This method updates the state of the input buffer so that * the text matched since the most recent mark() is no longer * held by the buffer. So, you either do a mark/rewind for * failed predicate or mark/commit to keep on parsing without * rewinding the input. */ void InputBuffer::commit() { nMarkers--; } /** Mark another character for deferred consumption */ void InputBuffer::consume() { numToConsume++; } /** Ensure that the character buffer is sufficiently full */ void InputBuffer::fill(int amount) { syncConsume(); // Fill the buffer sufficiently to hold needed characters while (queue.entries() < size_t(amount + markerOffset)) { // Append the next character queue.append(getChar()); } } bool InputBuffer::isMarked() const { return (nMarkers != 0); } /** Get a lookahead character */ int InputBuffer::LA(int i) { fill(i); return queue.elementAt(markerOffset + i - 1); } /**Return an integer marker that can be used to rewind the buffer to * its current state. */ int InputBuffer::mark() { syncConsume(); nMarkers++; return markerOffset; } /**Rewind the character buffer to a marker. * @param mark Marker returned previously from mark() */ void InputBuffer::rewind(int mark) { syncConsume(); markerOffset = mark; nMarkers--; } /** Sync up deferred consumption */ void InputBuffer::syncConsume() { while (numToConsume > 0) { if (nMarkers > 0) { // guess mode -- leave leading characters and bump offset. markerOffset++; } else { // normal mode -- remove first character queue.removeFirst(); } numToConsume--; } } grcompiler-5.2.1/compiler/Grammar/LLkParser.cpp000066400000000000000000000055051411153030700214250ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/LLkParser.hpp" #include /**An LL(k) parser. * * @see antlr.Token * @see antlr.TokenBuffer * @see antlr.LL1Parser */ // LLkParser(int k_); LLkParser::LLkParser(const ParserSharedInputState& state, int k_) : Parser(state) { k=k_; } LLkParser::LLkParser(TokenBuffer& tokenBuf, int k_) : Parser(tokenBuf) { k=k_; } LLkParser::LLkParser(TokenStream& lexer, int k_) : Parser(new TokenBuffer(lexer)) { k=k_; } /**Consume another token from the input stream. Can only write sequentially! * If you need 3 tokens ahead, you must consume() 3 times. *

* Note that it is possible to overwrite tokens that have not been matched. * For example, calling consume() 3 times when k=2, means that the first token * consumed will be overwritten with the 3rd. */ void LLkParser::consume() { inputState->getInput().consume(); } int LLkParser::LA(int i) { return inputState->getInput().LA(i); } RefToken LLkParser::LT(int i) { return inputState->getInput().LT(i); } void LLkParser::trace(const std::string& ee, const std::string& rname) { std::cout << ee << rname << ((inputState->guessing>0)?"; [guessing]":"; "); for (int i = 1; i <= k; i++) { if (i != 1) { std::cout << ", "; } std::cout << "LA(" << i << ")==" << LT(i)->getText(); } std::cout << std::endl; } void LLkParser::traceIn(const std::string& rname) { trace("enter ",rname); } void LLkParser::traceOut(const std::string& rname) { trace("exit ",rname); } grcompiler-5.2.1/compiler/Grammar/LexerSharedInputState.cpp000066400000000000000000000014121411153030700240060ustar00rootroot00000000000000#include "Antlr/LexerSharedInputState.hpp" #include "Antlr/CharBuffer.hpp" /** This object contains the data associated with an * input stream of characters. Multiple lexers * share a single LexerSharedInputState to lex * the same input stream. */ LexerInputState::LexerInputState(InputBuffer* inbuf) : line(1) , guessing(0) , input(inbuf) , inputResponsible(true) { } LexerInputState::LexerInputState(InputBuffer& inbuf) : line(1) , guessing(0) , input(&inbuf) , inputResponsible(false) { } LexerInputState::LexerInputState(std::istream& in) : line(1) , guessing(0) , input(new CharBuffer(in)) , inputResponsible(true) { } LexerInputState::~LexerInputState() { if (inputResponsible) delete input; } InputBuffer& LexerInputState::getInput() { return *input; } grcompiler-5.2.1/compiler/Grammar/Makefile.am000066400000000000000000000007761411153030700211230ustar00rootroot00000000000000noinst_LIBRARIES = libparser.a libparser_a_SOURCES = \ AST.cpp \ ASTDebug.hpp \ ANTLRException.cpp \ ASTFactory.cpp \ BitSet.cpp \ CharBuffer.cpp \ CharScanner.cpp \ CommonASTNode.cpp \ CommonToken.cpp \ InputBuffer.cpp \ LexerSharedInputState.cpp \ LLkParser.cpp \ MismatchedTokenException.cpp \ NoViableAltException.cpp \ Parser.cpp \ ParserException.cpp \ ParserSharedInputState.cpp \ ScannerException.cpp \ String.cpp \ Token.cpp \ TokenBuffer.cpp EXTRA_DIST = @srcdir@/Antlr/*.hpp grcompiler-5.2.1/compiler/Grammar/MismatchedTokenException.cpp000066400000000000000000000140131411153030700245160ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/MismatchedTokenException.hpp" MismatchedTokenException::MismatchedTokenException() : ParserException("Mismatched Token: expecting any AST node") , token(0) , node(0) {} // Expected range / not range MismatchedTokenException::MismatchedTokenException( const std::vector& tokenNames_, RefAST node_, int lower, int upper_, bool matchNot ) : ParserException("Mismatched Token") , token(0) , node(node_) { tokenNames = tokenNames_; if (!node) { tokenText = ""; } else { tokenText = node->toString(); } expecting = lower; upper = upper_; mismatchType = matchNot ? NOT_RANGE : RANGE; } // Expected token / not token MismatchedTokenException::MismatchedTokenException( const std::vector& tokenNames_, RefAST node_, int expecting_, bool matchNot ) : ParserException("Mismatched Token") , token(0) , node(node_) { tokenNames = tokenNames_; if (!node) { tokenText = ""; } else { tokenText = node->toString(); } expecting = expecting_; mismatchType = matchNot ? NOT_TOKEN : TOKEN; } // Expected BitSet / not BitSet MismatchedTokenException::MismatchedTokenException( const std::vector& tokenNames_, RefAST node_, BitSet set_, bool matchNot ) : ParserException("Mismatched Token") , token(0) , node(node_) , set(set_) { tokenNames = tokenNames_; if (!node) { tokenText = ""; } else { tokenText = node->toString(); } mismatchType = matchNot ? NOT_SET : SET; } // Expected range / not range MismatchedTokenException::MismatchedTokenException( const std::vector& tokenNames_, RefToken token_, int lower, int upper_, bool matchNot ) : ParserException("Mismatched Token") , token(token_) , node(0) { tokenNames = tokenNames_; line = token->getLine(); column = token->getColumn(); tokenText = token->getText(); expecting = lower; upper = upper_; mismatchType = matchNot ? NOT_RANGE : RANGE; } // Expected token / not token MismatchedTokenException::MismatchedTokenException( const std::vector& tokenNames_, RefToken token_, int expecting_, bool matchNot ) : ParserException("Mismatched Token") , token(token_) , node(0) { tokenNames = tokenNames_; line = token->getLine(); column = token->getColumn(); tokenText = token->getText(); expecting = expecting_; mismatchType = matchNot ? NOT_TOKEN : TOKEN; } // Expected BitSet / not BitSet MismatchedTokenException::MismatchedTokenException( const std::vector& tokenNames_, RefToken token_, BitSet set_, bool matchNot ) : ParserException("Mismatched Token") , token(token_) , node(0) , set(set_) { tokenNames = tokenNames_; line = token->getLine(); column = token->getColumn(); tokenText = token->getText(); mismatchType = matchNot ? NOT_SET : SET; } int MismatchedTokenException::getColumn() const { return column; } std::string MismatchedTokenException::getErrorMessage() const { std::string s; switch (mismatchType) { case TOKEN: s += "expecting " + tokenName(expecting) + ", found '" + tokenText + "'"; break; case NOT_TOKEN: s += "expecting anything but " + tokenName(expecting) + "; got it anyway"; break; case RANGE: s += "expecting token in range: " + tokenName(expecting) + ".." + tokenName(upper) + ", found '" + tokenText + "'"; break; case NOT_RANGE: s += "expecting token NOT in range: " + tokenName(expecting) + ".." + tokenName(upper) + ", found '" + tokenText + "'"; break; case SET: case NOT_SET: { s += std::string("expecting ") + (mismatchType == NOT_SET ? "NOT " : "") + "one of ("; std::vector elems = set.toArray(); for (int i = 0; i < (int) elems.size(); i++) { s += " "; s += tokenName(elems[i]); } s += "), found '" + tokenText + "'"; } break; default: s = ParserException::getMessage(); break; } return s; } int MismatchedTokenException::getLine() const { return line; } std::string MismatchedTokenException::tokenName(int tokenType) const { if (tokenType == Token::INVALID_TYPE) { return ""; } else if (tokenType < 0 || tokenType >= (int) tokenNames.size()) { return std::string("<") + std::to_string(tokenType) + ">"; } else { return tokenNames[tokenType]; } } std::string MismatchedTokenException::toString() const { std::string s = (!token) ? "" : "line(" + std::to_string(getLine()) + "), "; s += getErrorMessage(); return s; } #ifndef NO_STATIC_CONSTS const int MismatchedTokenException::TOKEN; const int MismatchedTokenException::NOT_TOKEN; const int MismatchedTokenException::RANGE; const int MismatchedTokenException::NOT_RANGE; const int MismatchedTokenException::SET; const int MismatchedTokenException::NOT_SET; #endif grcompiler-5.2.1/compiler/Grammar/NoViableAltException.cpp000066400000000000000000000043371411153030700236070ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/NoViableAltException.hpp" NoViableAltException::NoViableAltException(RefAST t) : ParserException("NoViableAlt") , token(0) , node(t) { } NoViableAltException::NoViableAltException(RefToken t) : ParserException("NoViableAlt") // line ")+t.getLine()+" token is "+t.getText()) , token(t) , node(0) { line = t->getLine(); column = t->getColumn(); } std::string NoViableAltException::getErrorMessage() const { if (token) return std::string("unexpected token: ")+token->getText(); // must a tree parser error if token==null if (!node) { return "unexpected end of subtree"; } return std::string("unexpected AST node: ")+node->toString(); } std::string NoViableAltException::toString() const { if (token) return std::string("line(")+std::to_string(getLine())+"), "+getErrorMessage(); else return getErrorMessage(); } grcompiler-5.2.1/compiler/Grammar/Parser.cpp000066400000000000000000000164261411153030700210260ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/Parser.hpp" #include "Antlr/BitSet.hpp" #include "Antlr/TokenBuffer.hpp" #include "Antlr/MismatchedTokenException.hpp" //#include "Antlr/ASTFactory.hpp" #include #include /**A generic ANTLR parser (LL(k) for k>=1) containing a bunch of * utility routines useful at any lookahead depth. We distinguish between * the LL(1) and LL(k) parsers because of efficiency. This may not be * necessary in the near future. * * Each parser object contains the state of the parse including a lookahead * cache (the form of which is determined by the subclass), whether or * not the parser is in guess mode, where tokens come from, etc... * *

* During guess mode, the current lookahead token(s) and token type(s) * cache must be saved because the token stream may not have been informed * to save the token (via mark) before the try block. * Guessing is started by: *

    *
  1. saving the lookahead cache. *
  2. marking the current position in the TokenBuffer. *
  3. increasing the guessing level. *
* * After guessing, the parser state is restored by: *
    *
  1. restoring the lookahead cache. *
  2. rewinding the TokenBuffer. *
  3. decreasing the guessing level. *
* * @see antlr.Token * @see antlr.TokenBuffer * @see antlr.TokenStream * @see antlr.LL1Parser * @see antlr.LLkParser */ bool DEBUG_PARSER=false; Parser::Parser(TokenBuffer& input) : inputState(new ParserInputState(input)) { } Parser::Parser(TokenBuffer* input) : inputState(new ParserInputState(input)) { } Parser::Parser(const ParserSharedInputState& state) : inputState(state) { } Parser::~Parser() { } void Parser::setTokenNames(const char** tokenNames_) { while (*tokenNames_) { tokenNames.push_back(*(tokenNames_++)); } } /** Consume tokens until one matches the given token */ void Parser::consumeUntil(int tokenType) { while (LA(1) != Token::EOF_TYPE && LA(1) != tokenType) consume(); } /** Consume tokens until one matches the given token set */ void Parser::consumeUntil(const BitSet& set) { while (LA(1) != Token::EOF_TYPE && !set.member(LA(1))) consume(); } /** Get the AST return value squirreled away in the parser */ RefAST Parser::getAST() { return returnAST; } ASTFactory& Parser::getASTFactory() { return astFactory; } std::string Parser::getFilename() const { return inputState->filename; } ParserSharedInputState Parser::getInputState() const { return inputState; } std::string Parser::getTokenName(int num) const { return tokenNames[num]; } std::vector Parser::getTokenNames() const { return tokenNames; } // Forwarded to TokenBuffer int Parser::mark() { return inputState->getInput().mark(); } /**Make sure current lookahead symbol matches token type t. * Throw an exception upon mismatch, which is catch by either the * error handler or by the syntactic predicate. */ void Parser::match(int t) { if ( DEBUG_PARSER ) std::cout << "enter match(" << t << ") with LA(1)=" << LA(1) << std::endl; if ( LA(1)!=t ) { if ( DEBUG_PARSER ) std::cout << "token mismatch: " << LA(1) << "!=" << t << std::endl; throw MismatchedTokenException(tokenNames, LT(1), t, false); } else { // mark token as consumed -- fetch next token deferred until LA/LT consume(); } } /**Make sure current lookahead symbol matches the given set * Throw an exception upon mismatch, which is catch by either the * error handler or by the syntactic predicate. */ void Parser::match(const BitSet& b) { if ( DEBUG_PARSER ) std::cout << "enter match(" << "bitset" /*b.toString()*/ << ") with LA(1)=" << LA(1) << std::endl; if ( !b.member(LA(1)) ) { if ( DEBUG_PARSER ) std::cout << "token mismatch: " << LA(1) << " not member of " << "bitset" /*b.toString()*/ << std::endl; throw MismatchedTokenException(tokenNames, LT(1), b, false); } else { // mark token as consumed -- fetch next token deferred until LA/LT consume(); } } void Parser::matchNot(int t) { if ( LA(1)==t ) { // Throws inverted-sense exception throw MismatchedTokenException(tokenNames, LT(1), t, true); } else { // mark token as consumed -- fetch next token deferred until LA/LT consume(); } } void Parser::panic() { std::cerr << "Parser: panic" << std::endl; exit(1); } /** Parser error-reporting function can be overridden in subclass */ void Parser::reportError(const ParserException& ex) { if ( getFilename()=="" ) std::cout << "Error: " << ex.toString() << std::endl; else std::cout << "Error in " << getFilename() << ": " << ex.toString() << std::endl; } /** Parser error-reporting function can be overridden in subclass */ void Parser::reportError(const std::string& s) { if ( getFilename()=="" ) std::cout << "Error: " << s << std::endl; else std::cout << "Error in " << getFilename() << ": " << s << std::endl; } /** Parser warning-reporting function can be overridden in subclass */ void Parser::reportWarning(const std::string& s) { if ( getFilename()=="" ) std::cout << "Warning: " << s << std::endl; else std::cout << "Warning in " << getFilename() << ": " << s << std::endl; } void Parser::rewind(int pos) { inputState->getInput().rewind(pos); } /** Set the object used to generate ASTs */ // void setASTFactory(ASTFactory astFactory_); /** Specify the type of node to create during tree building */ void Parser::setASTNodeFactory(ASTFactory::factory_type factory) { astFactory.setASTNodeFactory(factory); } void Parser::setFilename(const std::string& f) { inputState->filename = f; } /** Set or change the input token buffer */ // void setTokenBuffer(TokenBuffer* t); void Parser::traceIn(const std::string& rname) { std::cout << "enter " << rname << "; LA(1)==" << LT(1)->getText() << ((inputState->guessing>0)?" [guessing]":"") << std::endl; } void Parser::traceOut(const std::string& rname) { std::cout << "exit " << rname << "; LA(1)==" << LT(1)->getText() << ((inputState->guessing>0)?" [guessing]":"") << std::endl; } grcompiler-5.2.1/compiler/Grammar/ParserException.cpp000066400000000000000000000034201411153030700226730ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/ParserException.hpp" ParserException::ParserException() : ANTLRException("parsing error") {} ParserException::ParserException(const std::string& m) : ANTLRException(m) {} int ParserException::getColumn() const { return column; } std::string ParserException::getErrorMessage() const { return toString(); } int ParserException::getLine() const { return line; } grcompiler-5.2.1/compiler/Grammar/ParserSharedInputState.cpp000066400000000000000000000011421411153030700241630ustar00rootroot00000000000000#include "Antlr/ParserSharedInputState.hpp" /** This object contains the data associated with an * input stream of tokens. Multiple parsers * share a single ParserSharedInputState to parse * the same stream of tokens. */ ParserInputState::ParserInputState(TokenBuffer* input_) : guessing(0) , input(input_) , inputResponsible(true) { } ParserInputState::ParserInputState(TokenBuffer& input_) : guessing(0) , input(&input_) , inputResponsible(false) { } ParserInputState::~ParserInputState() { if (inputResponsible) delete input; } TokenBuffer& ParserInputState::getInput() { return *input; } grcompiler-5.2.1/compiler/Grammar/ScannerException.cpp000066400000000000000000000040631411153030700230340ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/ScannerException.hpp" // what about the text of the current (bad) token? ScannerException::ScannerException() : ANTLRException("scanner error") {} ScannerException::ScannerException(const std::string& m) : ANTLRException(m) {} ScannerException::ScannerException(const std::string& m, int line_) : ANTLRException(m) { line = line_; } int ScannerException::getColumn() const { return column; } std::string ScannerException::getErrorMessage() const { return getMessage(); } int ScannerException::getLine() const { return line; } std::string ScannerException::toString() const { return std::string("line(")+std::to_string(line)+"), "+getMessage(); } grcompiler-5.2.1/compiler/Grammar/Token.cpp000066400000000000000000000044571411153030700206530ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/Token.hpp" RefToken Token::badToken(new Token(Token::INVALID_TYPE, "")); Token::Token() { type=INVALID_TYPE; } Token::Token(int t) { type=t; } Token::Token(int t, const std::string& txt) { type=t; setText(txt); } int Token::getColumn() const { return 0; } int Token::getLine() const { return 0; } std::string Token::getText() const { return ""; } int Token::getType() const { return type; } void Token::setColumn(int /*c*/) {} void Token::setLine(int /*l*/) {} void Token::setText(const std::string& /*t*/) {} void Token::setType(int t) { type=t; } std::string Token::toString() const { return "[\""+getText()+"\",<"+std::to_string(type)+">]"; } Token::~Token() {} RefToken nullToken; #ifndef NO_STATIC_CONSTS const int Token::MIN_USER_TYPE; const int Token::NULL_TREE_LOOKAHEAD; const int Token::INVALID_TYPE; const int Token::EOF_TYPE; const int Token::SKIP; #endif grcompiler-5.2.1/compiler/Grammar/TokenBuffer.cpp000066400000000000000000000066231411153030700220020ustar00rootroot00000000000000/** * SOFTWARE RIGHTS *

* ANTLR 2.6.0 MageLang Insitute, 1998 *

* We reserve no legal rights to the ANTLR--it is fully in the * public domain. An individual or company may do whatever * they wish with source code distributed with ANTLR or the * code generated by ANTLR, including the incorporation of * ANTLR, or its output, into commerical software. *

* We encourage users to develop software with ANTLR. However, * we do ask that credit is given to us for developing * ANTLR. By "credit", we mean that if you use ANTLR or * incorporate any source code into one of your programs * (commercial product, research project, or otherwise) that * you acknowledge this fact somewhere in the documentation, * research report, etc... If you like ANTLR and have * developed a nice tool with the output, please mention that * you developed it using ANTLR. In addition, we ask that the * headers remain intact in our source code. As long as these * guidelines are kept, we expect to continue enhancing this * system and expect to make other tools available as they are * completed. *

* The ANTLR gang: * @version ANTLR 2.6.0 MageLang Insitute, 1998 * @author Terence Parr, MageLang Institute * @author
John Lilley, Empathy Software * @author
Pete Wells */ #include "Antlr/TokenBuffer.hpp" /**A Stream of Token objects fed to the parser from a TokenStream that can * be rewound via mark()/rewind() methods. *

* A dynamic array is used to buffer up all the input tokens. Normally, * "k" tokens are stored in the buffer. More tokens may be stored during * guess mode (testing syntactic predicate), or when LT(i>k) is referenced. * Consumption of tokens is deferred. In other words, reading the next * token is not done by conume(), but deferred until needed by LA or LT. *

* * @see antlr.Token * @see antlr.TokenStream * @see antlr.TokenQueue */ /** Create a token buffer */ TokenBuffer::TokenBuffer(TokenStream& input_) : input(input_) { nMarkers=0; markerOffset=0; numToConsume=0; } /** Mark another token for deferred consumption */ void TokenBuffer::consume() { numToConsume++; } /** Ensure that the token buffer is sufficiently full */ void TokenBuffer::fill(int amount) { syncConsume(); // Fill the buffer sufficiently to hold needed tokens while (queue.entries() < size_t(amount + markerOffset)) { // Append the next token queue.append(input.nextToken()); } } /** Get a lookahead token value */ int TokenBuffer::LA(int i) { fill(i); return queue.elementAt(markerOffset+i-1)->type; } /** Get a lookahead token */ RefToken TokenBuffer::LT(int i) { fill(i); return queue.elementAt(markerOffset+i-1); } /**Return an integer marker that can be used to rewind the buffer to * its current state. */ int TokenBuffer::mark() { syncConsume(); nMarkers++; return markerOffset; } /**Rewind the token buffer to a marker. * @param mark Marker returned previously from mark() */ void TokenBuffer::rewind(int mark) { syncConsume(); markerOffset=mark; nMarkers--; } /** Sync up deferred consumption */ void TokenBuffer::syncConsume() { while (numToConsume > 0) { if (nMarkers > 0) { // guess mode -- leave leading tokens and bump offset. markerOffset++; } else { // normal mode -- remove first token queue.removeFirst(); } numToConsume--; } } grcompiler-5.2.1/compiler/GrcBinaryStream.h000066400000000000000000000103321411153030700206730ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcBinaryStream.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRC_BINSTRM_INCLUDED #define GRC_BINSTRM_INCLUDED #include #include using std::fstream; /*---------------------------------------------------------------------------------------------- Class: GrcBinaryStream Description: Our stream for writing to the TrueType font. Hungarian: bstrm ----------------------------------------------------------------------------------------------*/ class GrcBinaryStream : public fstream { public: // Write a byte to the output stream. inline static void write_8bits_be(std::ostream & os, uint8_t x) { os.write(reinterpret_cast(&x), sizeof x); } static void write_16bits_be(std::ostream & os, uint16_t x); static void write_32bits_be(std::ostream & os, uint32_t x); GrcBinaryStream(const char * stFileName) : fstream(stFileName, std::ios::binary | std::ios::out | std::ios::in | std::ios::trunc) { } ~GrcBinaryStream() { } public: template void WriteByte(T iOutput) { write_8bits_be(*this, static_cast(iOutput)); } template void WriteShort(T iOutput) { write_16bits_be(*this, static_cast(iOutput)); } template void WriteInt(T iOutput) { write_32bits_be(*this, static_cast(iOutput)); } void Write(void * pbTable, size_t cbSize) { write(static_cast(pbTable), cbSize); } offset_t Position() { return offset_t(tellp()); } void SetPosition(offset_t lPos) { seekp(offset_t(lPos)); } offset_t SeekPadLong(offset_t ibOffset); void Close(void) { close(); } }; /*---------------------------------------------------------------------------------------------- Class: GrcSubStream Description: A substream that will eventually be output on the main stream. Hungarian: substrm ----------------------------------------------------------------------------------------------*/ class GrcSubStream { public: template void WriteByte(T iOutput) { GrcBinaryStream::write_8bits_be(m_strm, static_cast(iOutput)); } template void WriteShort(T iOutput) { GrcBinaryStream::write_16bits_be(m_strm, static_cast(iOutput)); } template void WriteInt(T iOutput) { GrcBinaryStream::write_32bits_be(m_strm, static_cast(iOutput)); } public: std::ostream m_strm; }; /*---------------------------------------------------------------------------------------------- Class: GrcDiversion Description: Divert output on a given stream a temporary in-memory buffer in constructor. Restore i/o to streams original target and write buffer on call to undivert() or the destructor. Hungarian: dstrm ----------------------------------------------------------------------------------------------*/ class GrcDiversion : public std::stringbuf { std::streambuf * m_sbSaved; std::iostream & m_strm; // Disable copying of any sort GrcDiversion(const GrcDiversion &); GrcDiversion & operator = (const GrcDiversion &); public: GrcDiversion(std::iostream & strm, const std::string sInitial="") : std::stringbuf(std::ios::in | std::ios::out | std::ios::ate), m_sbSaved(0), m_strm(strm) { divert(sInitial); } ~GrcDiversion() { undivert(); } void divert(const std::string sInitial="") { undivert(); m_strm.flush(); str(sInitial); m_sbSaved = m_strm.rdbuf(this); } void undivert() { if (m_sbSaved) { m_strm.flush(); m_strm.rdbuf(m_sbSaved); m_strm.write(str().data(), str().size()); m_strm.flush(); str(""); m_sbSaved = 0; } } }; #endif // !GRC_BINSTRM_INCLUDED grcompiler-5.2.1/compiler/GrcEnv.h000066400000000000000000000050371411153030700170310ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcEnv.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRC_ENV_INCLUDED #define GRC_ENV_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GrcEnv Description: The environment contains a list of directives for processing the input. Hungarian: env ----------------------------------------------------------------------------------------------*/ class GrcEnv { public: // Constructor: GrcEnv() { m_psymTable = NULL; m_nPass = 0; m_mUnits = 1000; m_nPointRadius = 2; m_mPrUnits = 1000; m_nMaxRuleLoop = 5; m_nMaxBackup = 0; m_fAttrOverride = true; m_wCodePage = 1252; } // Copy constructor: GrcEnv(const GrcEnv & env) { m_psymTable = env.m_psymTable; m_nPass = env.m_nPass; m_mUnits = env.m_mUnits; m_nPointRadius = env.m_nPointRadius; m_mPrUnits = env.m_mPrUnits; m_nMaxRuleLoop = env.m_nMaxRuleLoop; m_nMaxBackup = env.m_nMaxBackup; m_fAttrOverride = env.m_fAttrOverride; m_wCodePage = env.m_wCodePage; } // Getters: Symbol Table() { return m_psymTable; } int Pass() { return m_nPass; } int MUnits() { return m_mUnits; } int PointRadius() { return m_nPointRadius; } int PointRadiusUnits() { return m_mPrUnits; } int MaxRuleLoop() { return m_nMaxRuleLoop; } int MaxBackup() { return m_nMaxBackup; } bool AttrOverride() { return m_fAttrOverride; } utf16 CodePage() { return m_wCodePage; } // Setters: void SetTable(Symbol psym) { m_psymTable = psym; } void SetPass(int n) { m_nPass = n; } void SetMUnits(int m) { m_mUnits = m; } void SetPointRadius(int n, int m) { m_nPointRadius = n; m_mPrUnits = m; } void SetMaxRuleLoop(int n) { m_nMaxRuleLoop = n; } void SetMaxBackup(int n) { m_nMaxBackup = n; } void SetAttrOverride(bool f) { m_fAttrOverride = f; } void SetCodePage(utf16 w) { m_wCodePage = w; } protected: Symbol m_psymTable; int m_nPass; int m_mUnits; int m_nPointRadius; int m_mPrUnits; // units for m_nPointRadius int m_nMaxRuleLoop; int m_nMaxBackup; bool m_fAttrOverride; utf16 m_wCodePage; }; #endif // GRC_ENV_INCLUDED grcompiler-5.2.1/compiler/GrcErrorList.cpp000066400000000000000000000336221411153030700205620ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcErrorList.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Here are how the error and warning IDs are assigned: global - highest error: 142 / highest warning: 512 main.cpp GrpParser.g GrpLexer GrpParser GrcFont parsing - highest error: 1196 / highest warning: 1520 ParserTreeWalker PostParser error checking: general - highest error: 2168 / highest warning: 2537 GdlExpression GrcMasterTable GrcSymTable GdlNameDefn GdlObject GrcBinaryStream GrcEnv GdlRenderer rules - highest error: 3173 / highest warning: 3541 ErrorCheckRules GdlRule GdlTablePass Fsm Compiler classes - highest error: 4148 / highest warning: 4518 ErrorCheckClass GrcGlyphAttrMatrix GdlGlyphDefn GdlGlyphClassDefn compilation: highest error: 5101 / highest warning: 5509 OutputToFont test and debug: none (start at 6101) / highest warning: 6507 -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ GrcErrorList g_errorList; /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Add an error or warning to the list. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::AddItem(bool fFatal, int nID, GdlObject * pgdlObj, const GrpLineAndFile * plnf, std::string staMsg) { GrpLineAndFile lnf(0, 0, ""); if (plnf == NULL) { if (pgdlObj) lnf = pgdlObj->LineAndFile(); } else lnf = *plnf; GrcErrorItem * perr = new GrcErrorItem(fFatal, nID, lnf, staMsg, pgdlObj); m_vperr.push_back(perr); if (fFatal) m_fFatalError = true; } void GrcErrorList::AddItem(bool fFatal, int nID, GdlObject * pgdlObj, const GrpLineAndFile * plnf, std::string * psta1, std::string * psta2, std::string * psta3, std::string * psta4, std::string * psta5, std::string * psta6, std::string * psta7, std::string * psta8) { std::string staMsg; if (psta1) staMsg += *psta1; if (psta2) staMsg += *psta2; if (psta3) staMsg += *psta3; if (psta4) staMsg += *psta4; if (psta5) staMsg += *psta5; if (psta6) staMsg += *psta6; if (psta7) staMsg += *psta7; if (psta8) staMsg += *psta8; AddItem(fFatal, nID, pgdlObj, plnf, staMsg); } /*---------------------------------------------------------------------------------------------- Sort the list of errors; remove duplicates. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::SortErrors() { std::vector vperrSorted; GrcErrorItem * perrLast = NULL; while (m_vperr.size() > 0) { auto iperrNext = 0; for (auto iperrT = 1U; iperrT < m_vperr.size(); ++iperrT) { GrpLineAndFile * plnfNext = &(m_vperr[iperrNext]->m_lnf); ///int nLineNext = m_vperr[iperrNext]->m_nLineNumber; std::string staNext = m_vperr[iperrNext]->m_staMsg; GrpLineAndFile * plnfT = &(m_vperr[iperrT]->m_lnf); ///int nLineT = m_vperr[iperrT]->m_nLineNumber; std::string staT = m_vperr[iperrT]->m_staMsg; if (*plnfT < *plnfNext) iperrNext = iperrT; // NB: The main purpose in sorting errors alphabetically is to get identical // errors next to each other, so duplicates can be deleted. else if (*plnfT == *plnfNext && strcmp(staT.c_str(), staNext.c_str()) < 0) iperrNext = iperrT; } if (perrLast && perrLast->Equivalent(m_vperr[iperrNext])) { // Leave out delete m_vperr[iperrNext]; } else { vperrSorted.push_back(m_vperr[iperrNext]); perrLast = m_vperr[iperrNext]; } m_vperr.erase(m_vperr.begin() + iperrNext); } m_vperr.clear(); m_vperr.assign(vperrSorted.begin(), vperrSorted.end()); } /*---------------------------------------------------------------------------------------------- Return the number of errors for the given line, along with the index of the first one. Assumes the list is sorted. ----------------------------------------------------------------------------------------------*/ int GrcErrorList::ErrorsAtLine(int nLine) { int iBogus; return ErrorsAtLine(nLine, &iBogus); } int GrcErrorList::ErrorsAtLine(int nLine, int * piperrFirst) { int iperrFirst = 0; while (iperrFirst < signed(m_vperr.size()) && m_vperr[iperrFirst]->PreProcessedLine() < nLine) iperrFirst++; if (iperrFirst >= signed(m_vperr.size()) || nLine < m_vperr[iperrFirst]->PreProcessedLine()) { *piperrFirst = -1; return 0; } int cperr = 1; while (iperrFirst + cperr < signed(m_vperr.size()) && m_vperr[iperrFirst + cperr]->PreProcessedLine() == nLine) { cperr++; } *piperrFirst = iperrFirst; return cperr; } /*---------------------------------------------------------------------------------------------- Write the errors to a text file. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::WriteErrorsToFile(std::string staFileName, std::string staGdlFile, std::string staInputFontFile, std::string staOutputFile, std::string staOutputFamily, std::string staVersion, bool fSepCtrlFile) { std::ofstream strmOut; strmOut.open(staFileName.c_str()); if (strmOut.fail()) { g_errorList.AddError(106, NULL, "Error in writing to file ", std::string(staFileName)); return; } WriteErrorsToStream(strmOut, staGdlFile, staInputFontFile, staOutputFile, staOutputFamily, staVersion, fSepCtrlFile); strmOut << "\n"; strmOut.close(); } /*---------------------------------------------------------------------------------------------- Write the errors to an output stream. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::WriteErrorsToStream(std::ostream& strmOut, std::string staGdlFile, std::string staInputFontFile, std::string staOutputFile, std::string staOutputFamily, std::string staVersion, bool fSepCtrlFile) { strmOut << "Graphite Compilation Results\n\n"; strmOut << "GDL file: " << staGdlFile << "\n"; strmOut << "Input font file: " << staInputFontFile << "\n"; strmOut << "Output font file: " << staOutputFile << "\n"; strmOut << "Output font family: " << staOutputFamily << "\n"; strmOut << "Silf table version: " << staVersion << "\n"; strmOut << "Create separate control file: " << (fSepCtrlFile ? "yes" : "no") << "\n"; strmOut << "\n*******************************************************\n\n"; int cError = 0; int cWarning = 0; int cWarningIgnored = 0; for (size_t iperr = 0; iperr < m_vperr.size(); iperr++) { GrcErrorItem * perr = m_vperr[iperr]; if (!perr->m_fFatal && IgnoreWarning(perr->m_nID)) { cWarningIgnored++; continue; // ignore this warning } if (perr->m_lnf.File() != "" || (perr->m_lnf.OriginalLine() != 0 && perr->m_lnf.OriginalLine() != kMaxFileLineNumber)) { strmOut << perr->m_lnf.File() << "(" << perr->m_lnf.OriginalLine() << ") : "; } if (!perr->m_fMsgIncludesFatality) { strmOut << ((perr->m_fFatal) ? "error(" : "warning(") << perr->m_nID << "): "; } (perr->m_fFatal) ? cError++ : cWarning++; strmOut << perr->m_staMsg.data() << "\n"; } if (m_vperr.size() > 0) strmOut << "\n*******************************************************\n\n"; if (AnyFatalErrors()) { strmOut << "Compilation failed"; } else { WriteTableVersionsGenerated(strmOut); strmOut << "Compilation succeeded"; } strmOut << " - " << cError << " error" << ((cError == 1) ? ", " : "s, ") << cWarning << " warning" << ((cWarning == 1) ? "" : "s"); if (cWarningIgnored > 0) strmOut << " (" << cWarningIgnored << " warning" << ((cWarningIgnored == 1) ? "" : "s") << " ignored)"; } void WriteTableDescriptionString(std::ostream& strmOut, TableId ti) { uint32 nTag = TtfUtil::TableIdTag(ti); char csTagStr[] = {' ', (char)(nTag >> 24), (char)(nTag >> 16), (char)(nTag >> 8), (char)nTag, ':', ' ', 0 }; double dCompressionRatio = g_cman.CompressionRatio(ti); strmOut << csTagStr << VersionString(g_cman.TableVersion(ti)); if (dCompressionRatio) strmOut << " compressed (" << int(100/(1+dCompressionRatio)) << "% of original)"; strmOut << std::endl; } /*---------------------------------------------------------------------------------------------- Output the table version numbers to the error file. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::WriteTableVersionsGenerated(std::ostream& strmOut) { strmOut << "Table versions generated:\n"; WriteTableDescriptionString(strmOut, ktiSilf); WriteTableDescriptionString(strmOut, ktiGloc); WriteTableDescriptionString(strmOut, ktiGlat); WriteTableDescriptionString(strmOut, ktiFeat); WriteTableDescriptionString(strmOut, ktiSill); const int fxd = g_cman.CompilerVersion(); strmOut << "Minimal compiler version required: " << VersionString(fxd) << "\n"; strmOut << "\n*******************************************************\n\n"; } /*---------------------------------------------------------------------------------------------- Return the number of non-fatal errors. ----------------------------------------------------------------------------------------------*/ size_t GrcErrorList::NumberOfWarnings() { int cerrRet = 0; for (auto ierr = 0U; ierr < m_vperr.size(); ++ierr) { if (!IsFatal(ierr)) cerrRet++; } return cerrRet; } /*---------------------------------------------------------------------------------------------- Return the number of non-fatal errors that were not ignored. ----------------------------------------------------------------------------------------------*/ size_t GrcErrorList::NumberOfWarningsGiven() { int cerrRet = 0; for (auto ierr = 0U; ierr < m_vperr.size(); ++ierr) { if (!IsFatal(ierr) && !IgnoreWarning(m_vperr[ierr]->m_nID)) cerrRet++; } return cerrRet; } /*---------------------------------------------------------------------------------------------- Store or remove an indication that the given warning should be ignored in the output. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::SetIgnoreWarning(int nWarning, bool f) { int iFound = -1; for (auto i = 0U; i < m_vnIgnoreWarnings.size(); ++i) { if (m_vnIgnoreWarnings[i] == nWarning) { iFound = i; break; } } if (f) { if (iFound == -1) m_vnIgnoreWarnings.push_back(nWarning); } else { if (iFound > -1) m_vnIgnoreWarnings.erase(m_vnIgnoreWarnings.begin() + iFound); } } /*---------------------------------------------------------------------------------------------- Remove all indications of any warnings that should be ignored in the output. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::ClearIgnoreWarnings() { m_vnIgnoreWarnings.clear(); } /*---------------------------------------------------------------------------------------------- Store or remove an indication that the given warning should be ignored in the output. ----------------------------------------------------------------------------------------------*/ bool GrcErrorList::IgnoreWarning(int nWarning) { for (auto const nIgnoreWarn: m_vnIgnoreWarnings) { if (nIgnoreWarn == nWarning) return true; } return false; } /*---------------------------------------------------------------------------------------------- Global functions for use by the parser. ----------------------------------------------------------------------------------------------*/ void AddGlobalError(bool fFatal, int nID, std::string msg, int nLine) { if (fFatal) g_errorList.AddError(nID, NULL, msg.c_str(), GrpLineAndFile(nLine, 0, "")); else g_errorList.AddWarning(nID, NULL, msg.c_str(), GrpLineAndFile(nLine, 0, "")); } void AddGlobalError(bool fFatal, int nID, std::string msg, GrpLineAndFile const& lnf) { if (fFatal) g_errorList.AddError(nID, NULL, msg.c_str(), lnf); else g_errorList.AddWarning(nID, NULL, msg.c_str(), lnf); } /*---------------------------------------------------------------------------------------------- Set the error file name to use the same path as the GDL file. ----------------------------------------------------------------------------------------------*/ void GrcErrorList::SetFileNameFromGdlFile(GrcManager * pcman, char * pchGdlFile) { std::string strErrFileName = pcman->ErrorFileName(); int pos = (int)strErrFileName.find('\\'); if (pos == -1) pos = (int)strErrFileName.find('/'); if (pos != -1) { // path is indicated in the specified filename; don't change it m_strErrFile = strErrFileName; return; } char * pchEnd = pchGdlFile + strlen(pchGdlFile); while (*pchEnd != '\\' && *pchEnd != '/') { if (pchEnd <= pchGdlFile) { m_strErrFile = strErrFileName; // GDL file has no path specified return; } pchEnd--; } m_strErrFile.assign(pchGdlFile, (pchEnd - pchGdlFile + 1)); m_strErrFile.append(strErrFileName); } grcompiler-5.2.1/compiler/GrcErrorList.h000066400000000000000000000301371411153030700202250ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcErrorList.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Classes to implement the list of errors accumulated during the post-parser and pre-compiler. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef ERRORS_INCLUDED #define ERRORS_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GrcErrorItem Description: An error generated during the post-parser or pre-compiler. Hungarian: err ----------------------------------------------------------------------------------------------*/ class GrcErrorItem { friend class GrcErrorList; public: GrcErrorItem(bool fFatal, int nID, GrpLineAndFile & lnf, std::string staMsg, GdlObject * pgdlObj) : m_nID(nID), m_pgdlObject(pgdlObj), m_staMsg(staMsg), m_fFatal(fFatal), m_fMsgIncludesFatality(false), m_lnf(lnf) { } bool Equivalent(GrcErrorItem * perr) { return ( //// m_pgdlObject == perr->m_pgdlObject && m_nID == perr->m_nID && m_staMsg == perr->m_staMsg && m_lnf == perr->m_lnf && m_fFatal == perr->m_fFatal); } int PreProcessedLine() { return m_lnf.PreProcessedLine(); } protected: // instance variables: int m_nID; GdlObject * m_pgdlObject; std::string m_staMsg; bool m_fFatal; bool m_fMsgIncludesFatality; // don't add label "warning" or "error--the // message itself includes the information GrpLineAndFile m_lnf; }; /*---------------------------------------------------------------------------------------------- Class: GrcErrorList Description: Database of errors accumulated during post-parser and pre-compiler. There is only a single instance of this class. Hungarian: ----------------------------------------------------------------------------------------------*/ class GrcErrorList { friend class GrcErrorItem; public: GrcErrorList() { m_fFatalError = false; } ~GrcErrorList() { for (size_t i = 0; i < m_vperr.size(); ++i) delete m_vperr[i]; } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, staMsg); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, &staMsg, &sta2, NULL, NULL, NULL, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, NULL, NULL, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, NULL, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7, std::string sta8, GrpLineAndFile const& lnf) { AddItem(true, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, &sta8); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg) { AddItem(true, nID, pgdlobj, NULL, staMsg); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2) { AddItem(true, nID, pgdlobj, NULL, &staMsg, &sta2, NULL, NULL, NULL, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3) { AddItem(true, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, NULL, NULL, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4) { AddItem(true, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, NULL, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5) { AddItem(true, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, NULL, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6) { AddItem(true, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, NULL, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7) { AddItem(true, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, NULL); } void AddError(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7, std::string sta8) { AddItem(true, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, &sta8); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, GrpLineAndFile const& lnf) { AddItem(false,nID, pgdlobj, &lnf, staMsg); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, GrpLineAndFile const& lnf) { AddItem(false, nID, pgdlobj, &lnf, &staMsg, &sta2, NULL, NULL, NULL, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, GrpLineAndFile const& lnf) { AddItem(false, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, NULL, NULL, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, GrpLineAndFile const& lnf) { AddItem(false, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, NULL, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, GrpLineAndFile const& lnf) { AddItem(false, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, GrpLineAndFile const& lnf) { AddItem(false, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7, GrpLineAndFile const& lnf) { AddItem(false, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7, std::string sta8, GrpLineAndFile const& lnf) { AddItem(false, nID, pgdlobj, &lnf, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, &sta8); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg) { AddItem(false, nID, pgdlobj, NULL, staMsg); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2) { AddItem(false, nID, pgdlobj, NULL, &staMsg, &sta2, NULL, NULL, NULL, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3) { AddItem(false, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, NULL, NULL, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4) { AddItem(false, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, NULL, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5) { AddItem(false, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, NULL, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6) { AddItem(false, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, NULL, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7) { AddItem(false, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, NULL); } void AddWarning(int nID, GdlObject * pgdlobj, std::string staMsg, std::string sta2, std::string sta3, std::string sta4, std::string sta5, std::string sta6, std::string sta7, std::string sta8) { AddItem(false, nID, pgdlobj, NULL, &staMsg, &sta2, &sta3, &sta4, &sta5, &sta6, &sta7, &sta8); } void AddItem(bool fFatal, int nID, GdlObject * pgdlobj, const GrpLineAndFile *, std::string staMsg); void AddItem(bool fFatal, int nID, GdlObject * pgdlobj, const GrpLineAndFile *, std::string * psta1, std::string * psta2, std::string * psta3, std::string * psta4, std::string * psta5, std::string * psta6, std::string * psta7, std::string * psta8); void SortErrors(); size_t NumberOfErrors() { return m_vperr.size(); } int ErrorsAtLine(int nLine); int ErrorsAtLine(int nLine, int * piperrFirst); bool AnyFatalErrors() { return m_fFatalError; } size_t NumberOfWarnings(); size_t NumberOfWarningsGiven(); bool IsFatal(int iperr) { return m_vperr[iperr]->m_fFatal; } void SetIgnoreWarning(int nID, bool f = true); bool IgnoreWarning(int nID); void ClearIgnoreWarnings(); void SetLastMsgIncludesFatality(bool f) { m_vperr.back()->m_fMsgIncludesFatality = f; } void WriteErrorsToFile(std::string staGdlFile, std::string staInputFontFile, std::string staOutputFile, std::string staOutputFamily, std::string staVersion, int fSepCtrlFile) { WriteErrorsToFile(m_strErrFile, staGdlFile, staInputFontFile, staOutputFile, staOutputFamily, staVersion, fSepCtrlFile); } void WriteErrorsToFile(std::string staErrFile, std::string staGdlFile, std::string staInputFontFile, std::string staOutputFile, std::string staOutputFamily, std::string staVersion, bool fSepCtrlFile); void WriteErrorsToStream(std::ostream&, std::string staGdlFile, std::string staInputFontFile, std::string staOutputFile, std::string staOutputFamily, std::string staVersion, bool fSepCtrlFile); void SetFileNameFromGdlFile(GrcManager * pcman, char * pchGdlFile); void WriteTableVersionsGenerated(std::ostream& strmOut); std::string ErrFileName() { return m_strErrFile; } protected: // instance variables: bool m_fFatalError; std::vector m_vperr; std::vector m_vnIgnoreWarnings; std::string m_strErrFile; public: // For test procedures: bool test_ErrorIs(int iperr, std::string staMsg) { return (m_vperr[iperr]->m_staMsg == staMsg); } void test_Clear() { for (auto && err: m_vperr) delete err; m_vperr.clear(); m_fFatalError = false; } }; void AddGlobalError(bool fFatal, int nID, std::string msg, int nLine); void AddGlobalError(bool fFatal, int nID, std::string msg, GrpLineAndFile const&); #endif // ERRORS_INCLUDED grcompiler-5.2.1/compiler/GrcFont.cpp000066400000000000000000001027561411153030700175500ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcFont.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implementation the interaction between the TTF file and the compiler. Normally uses type names from TTF doc, except public interface uses utf16 for Unicode ids. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Constructor ----------------------------------------------------------------------------------------------*/ GrcFont::GrcFont(char * pchFontFile) : m_pFile(NULL), m_pCmap(NULL), m_cCmap(0L), m_pGlyf(NULL), m_cGlyf(0L), m_pHead(NULL), m_cHead(0L), m_pHhea(NULL), m_cHhea(0L), m_pHmtx(NULL), m_cHmtx(0L), m_pLoca(NULL), m_cLoca(0L), m_pMaxp(NULL), m_cMaxp(0L), m_pOs2(NULL) , m_cOs2(0L), m_pPost(NULL), m_cPost(0L), m_pName(NULL), m_cName(0L), m_pCmap_3_10(NULL), m_pCmap_3_1(NULL), m_nMaxGlyfId(-1) { AssertPtr(pchFontFile); auto cch = pchFontFile ? strlen(pchFontFile) + 1: 0; if (cch) { m_pchFileName = new char[cch]; strcpy(m_pchFileName, pchFontFile); // strcpy_s(m_pchFileName, cch, pchFontFile) } else { m_pchFileName = NULL; std::cout << "Font file name is null.\n"; } m_fDebug = false; return; } GrcFont::GrcFont(bool fDebug) : m_pFile(NULL), m_pCmap(NULL), m_cCmap(0L), m_pGlyf(NULL), m_cGlyf(0L), m_pHead(NULL), m_cHead(0L), m_pHhea(NULL), m_cHhea(0L), m_pHmtx(NULL), m_cHmtx(0L), m_pLoca(NULL), m_cLoca(0L), m_pMaxp(NULL), m_cMaxp(0L), m_pOs2(NULL) , m_cOs2(0L), m_pPost(NULL), m_cPost(0L), m_pName(NULL), m_cName(0L), m_pCmap_3_10(NULL), m_pCmap_3_1(NULL), m_nMaxGlyfId(-1) { Assert(fDebug); m_fDebug = fDebug; m_pchFileName = NULL; } /*---------------------------------------------------------------------------------------------- Destructor ----------------------------------------------------------------------------------------------*/ GrcFont::~GrcFont() { CloseFile(); if (m_pchFileName) { delete [] m_pchFileName; m_pchFileName = NULL; } if (m_pCmap) delete [] m_pCmap; if (m_pGlyf) delete [] m_pGlyf; if (m_pHead) delete [] m_pHead; if (m_pHhea) delete [] m_pHhea; if (m_pHmtx) delete [] m_pHmtx; if (m_pLoca) delete [] m_pLoca; if (m_pMaxp) delete [] m_pMaxp; if (m_pOs2) delete [] m_pOs2; if (m_pPost) delete [] m_pPost; if (m_pName) delete [] m_pName; } /*---------------------------------------------------------------------------------------------- Call after object constructed. Does most of the real initialization of the object such as reading the needed TTF tables and scanning the cmap for collisions. Needed so an error code can be returned. Must be called ONLY once BEFORE any other methods are called. Returns 0 if successful. Otherwise non-zero (see below for error numbers) ----------------------------------------------------------------------------------------------*/ int GrcFont::Init(GrcManager * pcman) { Assert(!m_fDebug); Assert(m_pFile == NULL); // should only call once if (!OpenFile()) // open the TTF file passed in the ctor { g_errorList.AddError(107, NULL, "Could not open font file"); return 1; } // read the offset table size_t lnOffset, lnSize; gr::byte * pHdr, * pTableDir; if (!TtfUtil::GetHeaderInfo(lnOffset, lnSize)) return 2; if (!ReadData(&pHdr, lnOffset, lnSize)) { g_errorList.AddError(108, NULL, "Error reading font offset table."); return 3; } if (!TtfUtil::CheckHeader(pHdr)) { g_errorList.AddError(109, NULL, "Font file has bad offset table"); return 4; } if (!TtfUtil::GetTableDirInfo(pHdr, lnOffset, lnSize)) return 5; if (!ReadData(&pTableDir, lnOffset, lnSize)) { g_errorList.AddError(110, NULL, "Error reading font Table Directory."); return 6; } //if (IsGraphiteFont(pHdr, pTableDir)) //{ // g_errorList.AddError(111, NULL, // "Font already has Graphite table(s) present."); // return 7; //} // cmap if (!ReadTable(ktiCmap, pHdr, pTableDir, &m_pCmap, &m_cCmap)) return 10; // Find cmap subtable we need. // Start with UTF-32 table platform 3 encoding 10 m_pCmap_3_10 = TtfUtil::FindCmapSubtable(m_pCmap, 3, 10); // Regardless, we should also have a UTF-16 table. First try platform 3 encoding 1. m_pCmap_3_1 = TtfUtil::FindCmapSubtable(m_pCmap, 3, 1); if (m_pCmap_3_1 == NULL) { // try the platform 3 encoding 0 table instead m_pCmap_3_1 = TtfUtil::FindCmapSubtable(m_pCmap, 3, 0); } if (m_pCmap_3_10 == NULL && m_pCmap_3_1 == NULL) { g_errorList.AddError(112, NULL, "Microsoft Unicode cmap could not be found."); return 11; } if (m_pCmap_3_10) { if (!TtfUtil::CheckCmap310Subtable(m_pCmap_3_10)) { g_errorList.AddError(113, NULL, "cmap platform 3 encoding 10 subtable is invalid."); return 12; } } if (m_pCmap_3_1) { if (!TtfUtil::CheckCmap31Subtable(m_pCmap_3_1)) { if (m_pCmap_3_10) // we can survive g_errorList.AddWarning(506, NULL, "cmap platform 3 encoding 1 subtable is invalid."); else g_errorList.AddError(114, NULL, "cmap platform 3 encoding 1 subtable is invalid."); return 13; } } else if (m_pCmap_3_10) { // All fonts are supposed to have a 16-bit table. g_errorList.AddWarning(507, NULL, "cmap platform 3 encoding 1 subtable not found"); } // glyf if (!ReadTable(ktiGlyf, pHdr, pTableDir, &m_pGlyf, &m_cGlyf)) return 20; // head if (!ReadTable(ktiHead, pHdr, pTableDir, &m_pHead, &m_cHead)) return 21; // hhea if (!ReadTable(ktiHhea, pHdr, pTableDir, &m_pHhea, &m_cHhea)) return 2; // hmtx if (!ReadTable(ktiHmtx, pHdr, pTableDir, &m_pHmtx, &m_cHmtx)) return 23; // loca if (!ReadTable(ktiLoca, pHdr, pTableDir, &m_pLoca, &m_cLoca)) return 24; // maxp if (!ReadTable(ktiMaxp, pHdr, pTableDir, &m_pMaxp, &m_cMaxp)) return 25; // OS/2 if (!ReadTable(ktiOs2, pHdr, pTableDir, &m_pOs2, &m_cOs2)) return 26; // post if (!ReadTable(ktiPost, pHdr, pTableDir, &m_pPost, &m_cPost)) return 27; // name if (!ReadTable(ktiName, pHdr, pTableDir, &m_pName, &m_cName)) return 28; delete [] pTableDir; delete [] pHdr; // scan the cmap for colliding Unicode values & find largest glyph id if (!ScanGlyfIds()) return 30; if (AnySupplementaryPlaneChars() && pcman->SilfTableVersion() <= 0x00010000) { g_errorList.AddError(115, NULL, "Supplementary plane characters are not supported in version 1.0"); } return 0; } /*---------------------------------------------------------------------------------------------- Get the font name out of the name table ----------------------------------------------------------------------------------------------*/ void GrcFont::GetFontFamilyName(utf16 * rgchwName, size_t cchMax) { size_t lOffset; size_t lSize; // Alan Ward says don't bother looking for the 3-10 version, even if we have a 3-10 // cmap subtable. if (!TtfUtil::Get31EngFamilyInfo(m_pName, lOffset, lSize)) { if (!TtfUtil::Get30EngFamilyInfo(m_pName, lOffset, lSize)) { return; // couldn't find it } } auto cchw = (lSize / sizeof(utf16)) + 1; cchw = min(cchw, cchMax); memcpy(rgchwName, (gr::byte *)m_pName + lOffset, lSize); rgchwName[cchw - 1] = 0; // zero terminate TtfUtil::SwapWString(rgchwName, cchw - 1); } /*---------------------------------------------------------------------------------------------- Get the first unused glyph ID that can be used for pseudo glyphs. ----------------------------------------------------------------------------------------------*/ utf16 GrcFont::FirstFreeGlyph() { #ifdef _DEBUG if (m_fDebug) //return 0x2200; return 0x0200; // iucdemo #endif Assert(m_pFile); // insure Init() called first Assert(m_nMaxGlyfId != -1); // insure ScanGlyfIds() called Assert(m_pMaxp); Assert(m_pHead); size_t suMaxGlyf = m_nMaxGlyfId + 1; // assuming glyf ids start at zero size_t suTest = TtfUtil::GlyphCount(m_pMaxp); suMaxGlyf = max(suMaxGlyf, suTest); suTest = TtfUtil::LocaGlyphCount(m_cLoca, m_pHead); // could return -1 suMaxGlyf = max(suMaxGlyf, suTest); return (utf16)suMaxGlyf; } /*---------------------------------------------------------------------------------------------- Fill in the arrays with the pairs of ambiguous unicode values and assigned glyph IDs. Return the number found. ----------------------------------------------------------------------------------------------*/ size_t GrcFont::AutoPseudos(std::vector & vnUnicode, std::vector & vwGlyphID) { #ifdef _DEBUG if (m_fDebug) return 0; #endif Assert(m_pFile); // insure Init() called Assert(m_nMaxGlyfId != -1); // insure ScanGlyfIds() called Assert(m_pCmap_3_10 || m_pCmap_3_1); // Fill the vectors with Unicode values that have duplicate glyph IDs and with the // glyph IDs that parallel the Unicode values. auto nSize = m_vnCollisions.size(); for (auto const collision: m_vnCollisions) { unsigned int nUnicode = collision; vnUnicode.push_back(nUnicode); utf16 wchGlyph = GlyphFromCmap(nUnicode, NULL); vwGlyphID.push_back(wchGlyph); } return nSize; } /*---------------------------------------------------------------------------------------------- Get the contents of the cmap. The array is assumed to be of adequate size. ----------------------------------------------------------------------------------------------*/ void GrcFont::GetGlyphsFromCmap(utf16 * rgchwUniToGlyphID) { Assert(m_pFile); // insure Init() called Assert(m_nMaxGlyfId != -1); // insure ScanGlyfIds() called Assert(m_pCmap_3_10 || m_pCmap_3_1); GrcFont::iterator fit; int iUni; for (iUni = 0, fit = this->Begin(); fit != this->End(); ++iUni, ++fit) { unsigned int nUni = *fit; utf16 gid = GlyphFromCmap(nUni, NULL); rgchwUniToGlyphID[iUni] = gid; } } /*---------------------------------------------------------------------------------------------- Use the given codepage to convert the codepoint to a Unicode value. Review: Is there ever a one-to-many mapping? Should we support codepages not installed on system? ----------------------------------------------------------------------------------------------*/ unsigned int GrcFont::UnicodeFromCodePage(utf16 wCodePage, utf16 wCodePoint, GdlObject * pgdlobj) { char wCodePointChar = char(wCodePoint); utf16 wUnicode; // should never return supplementary plane characters! if (!MultiByteToWideChar(wCodePage, 0, &wCodePointChar, 1, (LPWSTR)&wUnicode, 1)) { g_errorList.AddWarning(508, pgdlobj, "Failed to convert CodePoint to Unicode"); return 0; // calling method provides error message } return (int)wUnicode; } /*---------------------------------------------------------------------------------------------- Convert the given unicode character to a glyph ID via the cmap. Return 0 if the character was not present in the cmap. ----------------------------------------------------------------------------------------------*/ utf16 GrcFont::GlyphFromCmap(unsigned int nUnicode, GdlObject * /*pgdlobj*/) { #ifdef _DEBUG if (m_fDebug) return nUnicode; #endif Assert(m_pFile); // insure Init() called Assert(m_pCmap_3_10 || m_pCmap_3_1); if (m_pCmap_3_10) { return TtfUtil::Cmap310Lookup(m_pCmap_3_10, nUnicode); } else { return TtfUtil::Cmap31Lookup(m_pCmap_3_1, nUnicode); } } /*---------------------------------------------------------------------------------------------- Convert the given postscript name to a glyph ID. Return 0 if the postscript name is invalid. ----------------------------------------------------------------------------------------------*/ utf16 GrcFont::GlyphFromPostscript(std::string staPostscriptName, GdlObject * pgdlobj, bool fError) { Assert(m_pFile); Assert(m_pPost); Assert(m_pMaxp); int nGlyphId = TtfUtil::PostLookup(m_pPost, m_cPost, m_pMaxp, staPostscriptName.c_str()); if (nGlyphId >= 0) return nGlyphId; // calling method outputs invalid postscript name if (fError) { if (nGlyphId == -1) g_errorList.AddError(116, pgdlobj, "Postscript name not found"); if (nGlyphId == -2) g_errorList.AddError(117, pgdlobj, "No Postscript name data in font"); if (nGlyphId < -2) g_errorList.AddError(118, pgdlobj, "Postscript name lookup error"); } return 0; } /*---------------------------------------------------------------------------------------------- Given the number of a path used to define the glyph, answer the point number of the first point on the path. Normally this path will only have one point. Return -1 if the path is invalid. ----------------------------------------------------------------------------------------------*/ int GrcFont::ConvertGPathToGPoint(gid16 wGlyphID, int nPathNumber, GdlObject * pgdlobj) { #ifdef _DEBUG if (m_fDebug) return nPathNumber; #endif std::vector vnEndPt; int cContours, nEndPt; if (GetGlyfContours(wGlyphID, &vnEndPt)) { cContours = signed(vnEndPt.size()); if (nPathNumber < cContours) { if (nPathNumber == 0) return 0; nEndPt = vnEndPt[nPathNumber - 1] + 1; return nEndPt; } } g_errorList.AddError(119, pgdlobj, "Cannot find point number for path number ", std::to_string(nPathNumber), " in glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); return -1; } /*---------------------------------------------------------------------------------------------- Convert a scaled number to an absolute number of font design units. ----------------------------------------------------------------------------------------------*/ int GrcFont::ScaledToAbsolute(int nValue, int mScale) { Assert(m_fDebug || m_pFile); if (mScale == kmunitNone || mScale == kmunitUnscaled) return nValue; else { float n = (((float)nValue * DesignUnits()) / (float)mScale) + (float)0.5; return (int)n; } } /*---------------------------------------------------------------------------------------------- Return the design units used in the font, ie, the global scaling factor. ----------------------------------------------------------------------------------------------*/ int GrcFont::DesignUnits() { #ifdef _DEBUG if (m_fDebug) return 100; // fabdemo, iucdemo //return 1000; // attachment pts test #endif Assert(m_pFile); Assert(m_pHead); return (TtfUtil::DesignUnits(m_pHead)); } /*---------------------------------------------------------------------------------------------- Return the metric (in terms of the font's design units) for the given glyph. Returns a zero for all BB metrics on a white space glyph. Return INT_MIN or INT_MAX on error. Review: does USE_MY_METRICS flag in a composist glyph override the hmtx table? ----------------------------------------------------------------------------------------------*/ int GrcFont::GetGlyphMetric(gid16 wGlyphID, GlyphMetric gmet, GdlObject * pgdlobj) { Assert(m_pFile); Assert(m_pLoca); Assert(m_pGlyf); Assert(m_pOs2); Assert(m_pHmtx); Assert(m_pHhea); switch(gmet) { case kgmetAscent: return TtfUtil::FontAscent(m_pOs2); case kgmetDescent: return TtfUtil::FontDescent(m_pOs2); case kgmetAdvHeight: // TODO AlanW (SharonC): eventually the vmtx table will be needed? return 0; default: break; // fall through } unsigned int nAdvWid; int nLsb; if (gmet == kgmetAdvWidth || gmet == kgmetLsb || gmet == kgmetRsb) { if (!TtfUtil::HorMetrics(wGlyphID, m_pHmtx, m_cHmtx, m_pHhea, nLsb, nAdvWid)) { g_errorList.AddError(120, pgdlobj, "Unable to get horizontal metrics for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); return INT_MIN; } switch(gmet) { case kgmetAdvWidth: return nAdvWid; case kgmetLsb: // Review: should we return xMin instead? return nLsb; default: break; // handle Rsb below } } if (TtfUtil::IsSpace(wGlyphID, m_pLoca, m_cLoca, m_pHead)) { if (gmet == kgmetRsb) return nAdvWid; // for space. RSB same as adv width to agree with compiler g_errorList.AddWarning(509, pgdlobj, "Requesting bounding box metric for white space glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID), "; 0 will be used"); return 0; // for space, all BB metrics are zero } // Find bounding box metrics. /* Normally would use TtfUtil::GlyfBox but attachment points alter the metrics as follows. Normally the min and max values stored for each glyph also reflect the visual appearance of the glyph. When attachment points are added the min and max values may increase but the appearance of the glyph (the black part) will not change since attachment points aren't visible. We want the metrics returned here to match the appearance of the the glyph and not be the min and max values with attachment points. The GDL author will be familiar with former which is also more intuitive to use. The font could be adjusted so attachment points don't affect min and max values but that would add a step to the font production process and may produce unexpected side effects. The bounding box metrics returned from Windows (GetGlyphMetrics) disregard the min and max values for each glyph and match the visual appearance. Presumably this is related to the way the Windows rasterizer discards attachment points. This means the Graphite engine should obtain the same metrics as are returned here. Attachment points in this context are points that are alone on their own contour (or path), so they can easily be referenced by path number (GPath in GDL). */ std::vector vnEndPt, vnX, vnY; std::vector vfOnCurve; int xMin = INT_MAX; int yMin = INT_MAX; int xMax = INT_MIN; int yMax = INT_MIN; if (GetGlyfPts(wGlyphID, &vnEndPt, &vnX, &vnY, &vfOnCurve)) { int nFirstPt = 0; int nSecondPt = -1; // so nFirstPt initialized to zero in loop below int cEndPoints = signed(vnEndPt.size()); int i, j; for (i = 0; i < cEndPoints; i++) { nFirstPt = nSecondPt + 1; nSecondPt = vnEndPt[i]; if (nSecondPt - nFirstPt) // throw out point on contour with single point { for (j = nFirstPt; j <= nSecondPt; j++) { xMin = Min(xMin, vnX[j]); yMin = Min(yMin, vnY[j]); xMax = Max(xMax, vnX[j]); yMax = Max(yMax, vnY[j]); } } } switch(gmet) { case kgmetBbTop: return yMax; case kgmetBbBottom: return yMin; case kgmetBbLeft: return xMin; case kgmetBbRight: return xMax; case kgmetBbWidth: return xMax - xMin; case kgmetBbHeight: return yMax - yMin; case kgmetRsb: return nAdvWid - nLsb - (xMax - xMin); default: break; } } g_errorList.AddWarning(121, pgdlobj, "Unable to get bounding box for glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); return INT_MIN; } /*---------------------------------------------------------------------------------------------- Determine if a given point is the only point in its contour. If this is true, then the Engine will NOT be able to determine the coordinates for the point so the compiler should do that (with GetXYAtPoint). ----------------------------------------------------------------------------------------------*/ bool GrcFont::IsPointAlone(gid16 wGlyphID, int nPointNumber, GdlObject * pgdlobj) { // these must be declared before goto statements std::vector vnEndPt; int i, cContours; if (GetGlyfContours(wGlyphID, &vnEndPt)) { // find point's contour cContours = signed(vnEndPt.size()); for (i = 0; i < cContours; i++) { if (vnEndPt[i] >= nPointNumber) { // found the contour if (i > 0) { if (vnEndPt[i] - vnEndPt[i - 1] > 1) return false; else return true; } else // i == 0 { if (vnEndPt[i] > 0) return false; else return true; } } } } // if we reach here, point doesn't exist in glyph so give error g_errorList.AddError(122, pgdlobj, "Cannot find contour for point number ", std::to_string(nPointNumber), " in glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); return true; // safest fallback value } /*---------------------------------------------------------------------------------------------- Find the coordinates for a point on a glyph. Return true if successful, otherwise false ----------------------------------------------------------------------------------------------*/ int GrcFont::GetXYAtPoint(gid16 wGlyphID, int nPointNumber, int * mX, int * mY, GdlObject * pgdlobj) { std::vector vnEndPt, vnX, vnY; std::vector vfOnCurve; if (GetGlyfPts(wGlyphID, &vnEndPt, &vnX, &vnY, &vfOnCurve)) { if (nPointNumber < signed(vnX.size())) { *mX = vnX[nPointNumber]; *mY = vnY[nPointNumber]; return true; } } g_errorList.AddError(123, pgdlobj, "Cannot find coordinates for point number ", std::to_string(nPointNumber), " in glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); return false; } /*---------------------------------------------------------------------------------------------- Try to find an actual on-curve point that is within mPointRadius units of the given x- and y-coordinates. If found, return the point number, otherwise return -1. ----------------------------------------------------------------------------------------------*/ int GrcFont::GetPointAtXY(gid16 wGlyphID, int mX, int mY, int mPointRadius, GdlObject * pgdlobj) { std::vector vnEndPt, vnX, vnY; std::vector vfOnCurve; const int mRadiusSqr = mPointRadius * mPointRadius; int dnX, dnY; int nDistanceSqr = -1; int iPtClosest = -1; int nDistanceSqrClosest = INT_MAX; int i, cPoints; if (GetGlyfPts(wGlyphID, &vnEndPt, &vnX, &vnY, &vfOnCurve)) { // search through points for the closest one that is within mPointRadius of mX and mY cPoints = signed(vnX.size()); for (i = 0; i < cPoints; i++) { dnX = vnX[i] - mX; dnY = vnY[i] - mY; // for a 2048 em, this should max at around 8 million so it will fit on a signed integer nDistanceSqr = dnX * dnX + dnY * dnY; if (nDistanceSqr <= mRadiusSqr && nDistanceSqr < nDistanceSqrClosest) { iPtClosest = i; nDistanceSqrClosest = nDistanceSqr; } } return iPtClosest; // initialized to -1 } g_errorList.AddWarning(510, pgdlobj, "Cannot find point number for coordinates (", std::to_string(mX), ", ", std::to_string(mY), ") in glyph ", GdlGlyphDefn::GlyphIDString(wGlyphID)); // For testing: // if (mX == 0 && mY == 0) // return 10; // else if (mX == 500 && mY == 500 && mPointRadius == 1000) // return 11; // else if (mX == 1000 && mY == 1000) // return 12; return -1; } /*********************************************************************************************** Protected utility functions ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Open the file for this object. Return true if successful, otherwise false. ----------------------------------------------------------------------------------------------*/ int GrcFont::OpenFile() { m_pFile = fopen(m_pchFileName, "rb"); if (!m_pFile) { g_errorList.AddError(124, NULL, "Unable to open font file: ", m_pchFileName); return false; } return true; } /*---------------------------------------------------------------------------------------------- Close the file for this object. Return true if successful, otherwise false. ----------------------------------------------------------------------------------------------*/ int GrcFont::CloseFile() { if (m_pFile) return fclose(m_pFile) ? false : true; return false; } /*--------------------------------1-------------------------------------------------------------- Read a data from the font storing the data in ppData. Return true if successful, otherwise false. ----------------------------------------------------------------------------------------------*/ int GrcFont::ReadData(gr::byte ** ppData, ptrdiff_t lnOffset, size_t lnSize) { *ppData = new gr::byte[lnSize]; if (!*ppData) { g_errorList.AddError(125, NULL, "Memory failure: could not allocate ppData array while reading font file"); return false; } if (fseek(m_pFile, long(lnOffset), SEEK_SET)) { g_errorList.AddError(126, NULL, "Could not seek to correct place in font file"); return false; } if (fread(*ppData, lnSize, 1, m_pFile) != 1) { g_errorList.AddError(127, NULL, "Could not read requested data from font file"); return false; } return true; } /*---------------------------------------------------------------------------------------------- Read a table from the font storing its data in ppTable and its size in plnSize Return true if successful, otherwise false. On false, also generate an error message. ----------------------------------------------------------------------------------------------*/ int GrcFont::ReadTable(TableId ktiTableId, void * pHdr, void * pTableDir, gr::byte ** ppTable, size_t * plnSize) { size_t lnOffset, lnSize; if (!TtfUtil::GetTableInfo(ktiTableId, pHdr, pTableDir, lnOffset, lnSize)) goto error; if (!ReadData(ppTable, lnOffset, lnSize)) goto error; *plnSize = lnSize; if (!TtfUtil::CheckTable(ktiTableId, *ppTable, lnSize)) goto error; return true; error: if (*ppTable) delete [] *ppTable; *ppTable = NULL; *plnSize = 0; long lnTableTag = TtfUtil::TableIdTag(ktiTableId); char chTableTag[5]; strncpy(chTableTag, (char *)&lnTableTag, 4); chTableTag[4] = '\0'; if (!lnTableTag) { g_errorList.AddError(128, NULL, "Error reading table: ", chTableTag); } return false; } /*---------------------------------------------------------------------------------------------- Scan the TTF table directory looking for Graphite tables. Return true if one is found. False otherwise. ----------------------------------------------------------------------------------------------*/ bool GrcFont::IsGraphiteFont(void * pHdr, void * pTableDir) { size_t lnOffset, lnSize; if (TtfUtil::GetTableInfo(ktiSilf, pHdr, pTableDir, lnOffset, lnSize)) return true; if (TtfUtil::GetTableInfo(ktiGloc, pHdr, pTableDir, lnOffset, lnSize)) return true; if (TtfUtil::GetTableInfo(ktiGlat, pHdr, pTableDir, lnOffset, lnSize)) return true; if (TtfUtil::GetTableInfo(ktiFeat, pHdr, pTableDir, lnOffset, lnSize)) return true; return false; } /*---------------------------------------------------------------------------------------------- Scan through the cmap finding any Unicode ids that have the same Glyph id. Store the largest glyph id in m_nMaxGlyfId. Return true is successful, false otherwise. ----------------------------------------------------------------------------------------------*/ int GrcFont::ScanGlyfIds(void) { Assert(m_pCmap_3_10 || m_pCmap_3_1); if (m_nMaxGlyfId != -1) // return if called more than once return true; // determine ranges of Unicode codepoints supported by this font // TODO: is there a more efficient way to do this? unsigned int nUni; bool fInUsedRange = false; m_cnUnicode = 0; for (nUni = 0; nUni <= 0x0010FFFD; nUni++) { utf16 gid; if (nUni == 0x0000FFFE || nUni == 0x0000FFFF) // invalid gid = 0; else gid = GlyphFromCmap(nUni, NULL); if (gid != 0 && !fInUsedRange) { // Record the beginning of the range m_vnMinUnicode.push_back(nUni); fInUsedRange = true; } else if (gid == 0 && fInUsedRange) { // Record the end of the range. m_vnLimUnicode.push_back(nUni); fInUsedRange = false; } if (gid != 0) m_cnUnicode++; } if (fInUsedRange) m_vnLimUnicode.push_back(nUni); Assert(m_vnLimUnicode.size() == m_vnMinUnicode.size()); // create array indexed by glyf id containing unicode codepoints unsigned int *prgnUsed = new unsigned int[0x10000]; if (!prgnUsed) { g_errorList.AddError(129, NULL, "Memory failure: could not allocate prgUsed array when scanning glyph ids"); return false; } // initialize all elements to zero for (int ig = 0; ig < 0xFFFF; ig++) prgnUsed[ig] = 0; m_nMaxGlyfId = 0; // get glyf id for all unicode codepoints and look for collisions GrcFont::iterator fit; GrcFont::iterator fitEnd = this->End(); for (fit = this->Begin(); fit != fitEnd; ++fit) { nUni = *fit; Assert(nUni != 0x0000FFFE); // invalid Assert(nUni != 0x0000FFFF); // invalid Assert(nUni != 0x0010FFFE); // invalid Assert(nUni != 0x0010FFFF); // invalid utf16 gid = GlyphFromCmap(nUni, NULL); // find glyf id if (gid == 0) // 0 - normally is default glyf id { Assert(false); // iterators only cover codepoints with valid glyph IDs continue; } m_nMaxGlyfId = max(m_nMaxGlyfId, static_cast(gid)); // track largest glyf id if (!prgnUsed[gid]) // if this glyf id not seen yet { prgnUsed[gid] = nUni; // store current unicode id } else { // track Unicode ids that collide int nPrevUni = prgnUsed[gid]; if (nPrevUni != 0x0000FFFF) { // first collision - need to store both Unicode ids in array and current id m_vnCollisions.push_back(nPrevUni); // indicate one collision occurred, don't want to store array id if another // collision occurs; 0xFFFF is an illegal unicode value prgnUsed[gid] = 0x0000FFFF; } m_vnCollisions.push_back(nUni); // store current unicode id always } } delete [] prgnUsed; return true; } /*---------------------------------------------------------------------------------------------- Get point data for a given glyph. pvnEndPt - indexes where contours (or paths) end Return true is successful. False otherwise. ----------------------------------------------------------------------------------------------*/ int GrcFont::GetGlyfContours(gid16 wGlyphID, std::vector * pvnEndPt) { Assert(m_pFile); Assert(m_pGlyf); Assert(m_pLoca); Assert(m_pHead); size_t cContours; // these checks are actually done by GlyfContourCount // they're only needed if a specific error msg needs to be generated #if 0 if (TtfUtil::IsSpace(wGlyphID, m_pLoca, m_cLoca, m_pHead)) return false; if (TtfUtil::IsDeepComposite(wGlyphID, m_pGlyf, m_pLoca, m_cLoca, m_pHead)) return false; #endif if (!TtfUtil::GlyfContourCount(wGlyphID, m_pGlyf, m_pLoca, m_cLoca, m_pHead, cContours)) return false; int * rgnEndPt = new int[cContours]; size_t cTmpCnt = cContours; if (!TtfUtil::GlyfContourEndPoints(wGlyphID, m_pGlyf, m_pLoca, m_cLoca, m_pHead, rgnEndPt, cTmpCnt)) { delete[] rgnEndPt; return false; } pvnEndPt->assign(rgnEndPt, rgnEndPt + cContours); delete[] rgnEndPt; return true; } /*---------------------------------------------------------------------------------------------- Get point data for a given glyph. pvnX, pvnY - X and Y coordinates pvnEndPt - indexes in above where contours (or paths) end pvfOnCurve - flag indicating if parallel coordinate is on curve or off Return true is successful. False otherwise. ----------------------------------------------------------------------------------------------*/ int GrcFont::GetGlyfPts(gid16 wGlyphID, std::vector * pvnEndPt, std::vector * pvnX, std::vector * pvnY, std::vector * pvfOnCurve) { Assert(m_pFile); Assert(m_pGlyf); Assert(m_pLoca); Assert(m_pHead); size_t cContours = 0; size_t cPoints = 0; // these checks are actually done by GlyfContourCount // they're only needed if a specific error msg needs to be generated #if 0 if (TtfUtil::IsSpace(wGlyphID, m_pLoca, m_cLoca, m_pHead)) return false; if (TtfUtil::IsDeepComposite(wGlyphID, m_pGlyf, m_pLoca, m_cLoca, m_pHead)) return false; #endif if (!TtfUtil::GlyfContourCount(wGlyphID, m_pGlyf, m_pLoca, m_cLoca, m_pHead, cContours)) return false; const unsigned int CONTOUR_BUF_SIZE = 8; const unsigned int POINT_BUF_SIZE = 64; // Fixed-size buffers that will be used in most cases: int rgnEndPtBuf[CONTOUR_BUF_SIZE]; bool rgfOnCurveBuf[POINT_BUF_SIZE]; int rgnXBuf[POINT_BUF_SIZE]; int rgnYBuf[POINT_BUF_SIZE]; bool * prgfOnCurve = NULL; int * prgnX = NULL, *prgnY = NULL; int * prgnEndPt = (cContours > CONTOUR_BUF_SIZE) ? new int[cContours] : rgnEndPtBuf; int fRet = false; size_t cTmpCnt = cContours; size_t cTmpPts = 0; if (!TtfUtil::GlyfContourEndPoints(wGlyphID, m_pGlyf, m_pLoca, m_cLoca, m_pHead, prgnEndPt, cTmpCnt)) { goto LLeave; } pvnEndPt->assign(prgnEndPt, prgnEndPt + cContours); cPoints = prgnEndPt[cContours - 1] + 1; prgfOnCurve = (cPoints > POINT_BUF_SIZE) ? new bool[cPoints] : rgfOnCurveBuf; prgnX = (cPoints > POINT_BUF_SIZE) ? new int[cPoints] : rgnXBuf; prgnY = (cPoints > POINT_BUF_SIZE) ? new int[cPoints] : rgnYBuf; cTmpPts = cPoints; if (!TtfUtil::GlyfPoints(wGlyphID, m_pGlyf, m_pLoca, m_cLoca, m_pHead, prgnEndPt, cContours, prgnX, prgnY, prgfOnCurve, cTmpPts)) { goto LLeave; } pvnX->assign(prgnX, prgnX + cPoints); pvnY->assign(prgnY, prgnY + cPoints); pvfOnCurve->assign(prgfOnCurve, prgfOnCurve + cPoints); fRet = true; LLeave: if (cContours > CONTOUR_BUF_SIZE) delete[] prgnEndPt; if (cPoints > POINT_BUF_SIZE) { delete[] prgfOnCurve; delete[] prgnX; delete[] prgnY; } return fRet; } grcompiler-5.2.1/compiler/GrcFont.h000066400000000000000000000134111411153030700172020ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcFont.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: A class to access the font. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRC_FONT_INCLUDED #define GRC_FONT_INCLUDED #ifdef UINT_MAX #define GRCFONT_END UINT_MAX #else #define GRCFONT_END -1 #endif /*---------------------------------------------------------------------------------------------- Class: GrcFont Description: A class representing the font file and used to access its information. None of the methods with wGlyphID as an argument can handle pseudo glyph ids. Hungarian: font ----------------------------------------------------------------------------------------------*/ class GrcFont { public: GrcFont(char * pchFileName); GrcFont(bool fDebug); ~GrcFont(); //Review: should this be virtual? int Init(GrcManager *); // must call before using any of the below methods; clean up handled by dtor void GetFontFamilyName(utf16 * rgchwName, size_t cchMax); utf16 FirstFreeGlyph(); size_t AutoPseudos(std::vector & vnUnicode, std::vector & vwGlyphID); void GetGlyphsFromCmap(utf16 * rgchwUniToGlyphID); unsigned int UnicodeFromCodePage(utf16 wCodePage, utf16 wCodePoint, GdlObject * pgdlobj); utf16 GlyphFromCmap(unsigned int nUnicode, GdlObject * pgdlobj); utf16 GlyphFromPostscript(std::string staPostscriptName, GdlObject * pgdlobj, bool fError); int ConvertGPathToGPoint(gid16 wGlyphID, int nPathNumber, GdlObject * pgdlobj); int ScaledToAbsolute(int nValue, int mScale); int DesignUnits(); int GetGlyphMetric(gid16 wGlyphID, GlyphMetric gmet, GdlObject * pgdlobj); bool IsPointAlone(gid16 wGlyphID, int nPointNumber, GdlObject * pgdlobj); int GetXYAtPoint(gid16 wGlyphID, int nPointNumber, int * mX, int * mY, GdlObject * pgdlobj); int GetPointAtXY(gid16 wGlyphID, int mX, int mY, int mPointRadius, GdlObject * pgdlobj); bool IsSpace(gid16 wGlyphID) { return TtfUtil::IsSpace(wGlyphID, m_pLoca, m_cLoca, m_pHead); } // Class for iterating over the potentially wide range of Unicode codepoints in the cmap. class iterator { friend class GrcFont; public: iterator() // default iterator {} iterator(GrcFont * pfont, bool fAtEnd = false) { m_pfont = pfont; if (fAtEnd) { m_iBlock = static_cast(m_pfont->CBlocks()); m_nUni = GRCFONT_END; } else { m_nUni = m_pfont->m_vnMinUnicode[0]; m_iBlock = 0; } } iterator & operator ++() { Assert(m_nUni != GRCFONT_END); Assert(m_iBlock < m_pfont->CBlocks() || m_nUni < m_pfont->m_vnLimUnicode[m_iBlock]); Assert(m_nUni < m_pfont->m_vnLimUnicode[m_iBlock]); m_nUni++; if (m_nUni >= m_pfont->m_vnLimUnicode[m_iBlock]) { m_iBlock++; if (m_iBlock >= m_pfont->CBlocks()) m_nUni = GRCFONT_END; // at end else m_nUni = m_pfont->m_vnMinUnicode[m_iBlock]; } return *this; } bool operator == (const iterator & fit) { return (this->m_nUni == fit.m_nUni); } bool operator != (const iterator & fit) { return (this->m_nUni != fit.m_nUni); } unsigned int operator *() { return m_nUni; } protected: GrcFont * m_pfont; unsigned int m_nUni; // current unicode codepoint unsigned int m_iBlock; // which block of unicode is current }; friend class iterator; // iterators iterator Begin() { iterator fit(this, false); return fit; } iterator End() { iterator fit(this, true); return fit; } int NumUnicode() { return m_cnUnicode; } bool AnySupplementaryPlaneChars() { return (m_vnLimUnicode[m_vnLimUnicode.size() - 1] > 0xFFFF); } protected: int OpenFile(void); int CloseFile(void); int ReadData(gr::byte ** ppData, ptrdiff_t lnOffset, size_t lnSize); int ReadTable(TableId ktiTableId, void * pHdr, void * pTableDir, gr::byte ** ppTable, size_t * plnSize); int ReadTable(gr::byte*& pTable); bool IsGraphiteFont(void * pHdr, void * pTableDir); int ScanGlyfIds(void); int GetGlyfContours(gid16 wGlyphID, std::vector * pvnEndPt); public: int GetGlyfPts(gid16 wGlyphID, std::vector * pvnEndPt, std::vector * pvnX, std::vector * pvnY, std::vector * pvfOnCurve); protected: // Member variables: char *m_pchFileName; // Review: should this use a string class FILE *m_pFile; gr::byte * m_pCmap; size_t m_cCmap; gr::byte * m_pGlyf; size_t m_cGlyf; gr::byte * m_pHead; size_t m_cHead; gr::byte * m_pHhea; size_t m_cHhea; gr::byte * m_pHmtx; size_t m_cHmtx; gr::byte * m_pLoca; size_t m_cLoca; gr::byte * m_pMaxp; size_t m_cMaxp; gr::byte * m_pOs2; size_t m_cOs2; gr::byte * m_pPost; size_t m_cPost; gr::byte * m_pName; size_t m_cName; // point to MS cmap subtables within m_pCmap for MS data // try to use the 3-10 pointer first. this is for MS UCS-4 encoding (UTF-32) void * m_pCmap_3_10; // the 3_1 pointer is for MS Unicode encoding (UTF-16) // it should be present even if the 3-10 subtable is also present // this could point to a 3-0 table instead of a 3-1 table though 3-1 is attempted first void * m_pCmap_3_1; int m_nMaxGlyfId; // ranges of unicode codepoints in the cmap std::vector m_vnMinUnicode; std::vector m_vnLimUnicode; int m_cnUnicode; std::vector m_vnCollisions; // Unicode ids with colliding glyph ids bool m_fDebug; // for interator size_t CBlocks() { Assert(m_vnMinUnicode.size() == m_vnLimUnicode.size()); return m_vnMinUnicode.size(); } }; #endif // GRC_FONT_INCLUDED grcompiler-5.2.1/compiler/GrcGlyphAttrMatrix.cpp000066400000000000000000000214641411153030700217410ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcGlyphAttrMatrix.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implementation of classes that hold the glyph attribute assignments and ligature component assignments. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods: GrcGlyphAttrMatrix ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Get the attribute setter information for the given glyph and attribute. ----------------------------------------------------------------------------------------------*/ void GrcGlyphAttrMatrix::Get(gid16 wGlyphID, int nAttrID, int nStyle, GdlExpression ** ppexp, int * pnPR, int * pmPrUnits, bool * pfOverride, bool * pfShadow, GrpLineAndFile * plnf) { GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); *ppexp = pasgnx->m_pexp; *pnPR = pasgnx->m_nPointRadius; *pmPrUnits = pasgnx->m_mPrUnits; *pfOverride = pasgnx->m_fOverride; *pfShadow = pasgnx->m_fShadow; *plnf = pasgnx->m_lnf; } /*---------------------------------------------------------------------------------------------- Get the expression for the given glyph and attribute. ----------------------------------------------------------------------------------------------*/ GdlExpression * GrcGlyphAttrMatrix::GetExpression(gid16 wGlyphID, int nAttrID, int nStyle) { GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); return pasgnx->m_pexp; } /*---------------------------------------------------------------------------------------------- Set the attribute setter information for the given glyph and attribute. ----------------------------------------------------------------------------------------------*/ void GrcGlyphAttrMatrix::Set(gid16 wGlyphID, int nAttrID, int nStyle, GdlExpression * pexp, int nPR, int mPrUnits, bool fOverride, bool fShadow, GrpLineAndFile const& lnf) { GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); pasgnx->m_pexp = pexp; pasgnx->m_nPointRadius = nPR; pasgnx->m_mPrUnits = mPrUnits; pasgnx->m_fOverride = fOverride; pasgnx->m_fShadow = fShadow; pasgnx->m_lnf = lnf; } /*---------------------------------------------------------------------------------------------- Clear a superfluous attribute for the given glyph (eg, gpoint, when x and y are defined). ----------------------------------------------------------------------------------------------*/ void GrcGlyphAttrMatrix::Clear(gid16 wGlyphID, int nAttrID, int nStyle) { GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); pasgnx->m_pexp = NULL; } /*---------------------------------------------------------------------------------------------- Test whether a 'gpoint' attribute as a legitmate value. Should only be called for gpoint attributes. Currently not really needed, because we're using 0 as the "unset" value just like all the other attributes. ----------------------------------------------------------------------------------------------*/ bool GrcGlyphAttrMatrix::GpointDefined(gid16 wGlyphID, int nAttrID, int nStyle) { // This is a bit of a kludge. When OffsetAttrs() is off, the superfluous attributes like // gpoint and xoffset and yoffset don't get assigned attribute IDs. But in an obscure case, // the symbol may exist and there is an attempt to read it, which crashes because the // ID is invalid. (This can happen when xyz.gpoint is defined on one class and xyz.x/y // are defined on another.) So we set the index to a recognizable invalid value. // See AssignInternalGlyphAttrIDs(). if (nAttrID == kInvalid) return false; return Defined(wGlyphID, nAttrID, nStyle); // if (!Defined(wGlyphID, nAttrID, nStyle)) // return false; // GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); // GdlExpression * pexp = pasgnx->Expression(); // if (pexp == NULL) // return false; // int n; // if (!pexp->ResolveToInteger(&n, false)) // return true; // if (n == kGpointNotSet) // return false; // return true; } /*********************************************************************************************** Methods: GrcLigComponentList ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Constructor. ----------------------------------------------------------------------------------------------*/ GrcLigComponentList::GrcLigComponentList(size_t cvGlyphIDs) : m_vgplcmap(cvGlyphIDs) { } /*---------------------------------------------------------------------------------------------- Destructor. ----------------------------------------------------------------------------------------------*/ GrcLigComponentList::~GrcLigComponentList() { for (auto plcmgap: m_vgplcmap) delete plcmgap; } /*---------------------------------------------------------------------------------------------- Add a ligature component to the glyph's list, if it is not already there. Return the internal ID. ----------------------------------------------------------------------------------------------*/ int GrcLigComponentList::AddComponentFor(gid16 wGlyphID, Symbol psymComponent, GdlRenderer * prndr) { Assert(psymComponent->IsGeneric()); int nID = psymComponent->InternalID(); if (FindComponentFor(wGlyphID, nID)) // creates a LigCompMap if necessary // already defined for this ligature return nID; // Add the internal ID to the list of components for this glyph. LigCompMap * plcmap = m_vgplcmap[wGlyphID]; plcmap->m_vinIDs.push_back(nID); int cComp = signed(plcmap->m_vinIDs.size()); prndr->SetNumLigComponents(cComp); return nID; } /*---------------------------------------------------------------------------------------------- If the ligature component with the given ID has been defined for the given glyph, return true. Ensure that a LigCompMap is in place for the given glyph. ----------------------------------------------------------------------------------------------*/ bool GrcLigComponentList::FindComponentFor(gid16 wGlyphID, int nID) { LigCompMap * plcmap = m_vgplcmap[wGlyphID]; if (!plcmap) { plcmap = new LigCompMap(); m_vgplcmap[wGlyphID] = plcmap; } for (size_t in = 0; in < plcmap->m_vinIDs.size(); in++) { if (plcmap->m_vinIDs[in] == nID) return true; } return false; } // Methods below are OBSOLETE--the defined-components list is now part of the // glyph attribute list. /*---------------------------------------------------------------------------------------------- Add the given symbol to the global list of defined ligature components, if it is not already there. Return the internal ID. ----------------------------------------------------------------------------------------------*/ //int GrcLigComponentList::AddComponent(Symbol psymComponent) //{ // Assert(psymComponent->IsGeneric()); // int nID = FindComponentID(psymComponent); // if (nID == -1) // { // nID = m_vpsymDefinedComponents.Size(); // m_vpsymDefinedComponents.Push(psymComponent); // } // return nID; //} /*---------------------------------------------------------------------------------------------- Return the internal ID for the given ligature component, or -1 if it is not present (has never been defined for any glyph). ----------------------------------------------------------------------------------------------*/ //int GrcLigComponentList::FindComponentID(Symbol psymComponent) //{ // Assert(psymComponent->IsGeneric()); // for (int inID = 0; // inID < m_vpsymDefinedComponents.Size(); // inID++) // { // if (m_vpsymDefinedComponents[inID] == psymComponent) // return inID; // } // return -1; //} grcompiler-5.2.1/compiler/GrcGlyphAttrMatrix.h000066400000000000000000000161631411153030700214060ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcGlyphAttrMatrix.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: A matrix to hold the glyph attribute assignments for each individual glyph. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRC_GAMATRIX_INCLUDED #define GRC_GAMATRIX_INCLUDED /*---------------------------------------------------------------------------------------------- Class: GrcAssignment Description: An expression, the statement number in which that expression was assigned, and the current values of relevant directives. Note that this class, used by the glyph attribute matrix, is not responsible for deleting the expression; however the subclass GdlAssignment, used by the master tables, is. Hungarian: asgnx ----------------------------------------------------------------------------------------------*/ class GrcAssignment { friend class GrcMasterValueList; friend class GrcMasterTable; friend class GrcGlyphAttrMatrix; friend class GdlAssignment; public: // Constructors & destructor: GrcAssignment() : m_pexp(NULL), m_nPointRadius(0), m_mPrUnits(0), m_fOverride(false), m_fShadow(false) { } GrcAssignment(GdlExpression * pexp, int nPR, int mPrUnits, bool f, GrpLineAndFile const& lnf) : m_pexp(pexp), m_nPointRadius(nPR), m_mPrUnits(mPrUnits), m_fOverride(f), m_fShadow(false), m_lnf(lnf) { } virtual ~GrcAssignment() { // Not responsible for deleting the expression. } // Getters: GdlExpression * Expression() { return m_pexp; } int PointRadius() { return m_nPointRadius; } int PointRadiusUnits() { return m_mPrUnits; } bool Override() { return m_fOverride; } GrpLineAndFile & LineAndFile() { return m_lnf; } int PreProcessedLine() { return m_lnf.PreProcessedLine(); } // Setters: virtual void Set(GdlExpression * pexp, int nPR, int mPrUnits, bool fOverride, GrpLineAndFile const& lnf) { m_pexp = pexp; m_nPointRadius = nPR; m_mPrUnits = mPrUnits; m_fOverride = fOverride; m_fShadow = false; m_lnf = lnf; } protected: GdlExpression * m_pexp; int m_nPointRadius; int m_mPrUnits; bool m_fOverride; bool m_fShadow; // eg, x/y attributes generated by the compiler to // shadow or duplicate gpoint GrpLineAndFile m_lnf; }; /*---------------------------------------------------------------------------------------------- Class: GrcGlyphAttrMatrix Description: A matrix to hold the glyph attribute assignments for each individual glyph. Hungarian: gax ----------------------------------------------------------------------------------------------*/ class GrcGlyphAttrMatrix { public: GrcGlyphAttrMatrix(size_t cGlyphIDs, size_t cGlyphAttrs, size_t cStyles) { m_cGlyphAttrs = cGlyphAttrs; m_cGlyphIDs = cGlyphIDs; m_cStyles = cStyles; m_prgasgnx = new GrcAssignment[cGlyphIDs * cGlyphAttrs * cStyles]; } ~GrcGlyphAttrMatrix() { delete[] m_prgasgnx; } int Index(gid16 wGlyphID, unsigned int nAttrID, unsigned int nStyle) { Assert(wGlyphID < m_cGlyphIDs); Assert(nAttrID < m_cGlyphAttrs); Assert(nStyle < m_cStyles); return int(wGlyphID * m_cGlyphAttrs * m_cStyles + (nAttrID * m_cStyles) + nStyle); } void Get(gid16 wGlyphID, int nAttrID, GdlExpression ** ppexp, int * pnPR, int * pmunitPR, bool * pfOverride, bool * pfShadow, GrpLineAndFile * plnf) { Get(wGlyphID, nAttrID, 0, ppexp, pnPR, pmunitPR, pfOverride, pfShadow, plnf); } void Get(gid16 wGlyphID, int nAttrID, int nStyle, GdlExpression ** ppexp, int * pnPR, int * pmunitPR, bool * pfOverride, bool * pfShadow, GrpLineAndFile * plnf); GdlExpression * GetExpression(gid16 wGlyphID, int nAttrID) { return GetExpression(wGlyphID, nAttrID, 0); } GdlExpression * GetExpression(gid16 wGlyphID, int nAttrID, int nStyle); void Set(gid16 wGlyphID, int nAttrID, GdlExpression * pexp, int nPR, int munitPR, bool fOverride, bool fShadow, GrpLineAndFile const& lnf) { Set(wGlyphID, nAttrID, 0, pexp, nPR, munitPR, fOverride, fShadow, lnf); } void Set(gid16 wGlyphID, int nAttrID, int nStyle, GdlExpression * pexp, int nPR, int munitPR, bool fOverride, bool fShadow, GrpLineAndFile const& lnf); bool Defined(gid16 wGlyphID, int nAttrID, int nStyle = 0) { if (m_cGlyphAttrs == 0 || m_cGlyphIDs == 0 || m_cStyles == 0) return false; GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); return (pasgnx->Expression() != NULL); } bool DefinedButMaybeShadow(gid16 wGlyphID, int nAttrID, bool *pfShadow, int nStyle = 0) { if (m_cGlyphAttrs == 0 || m_cGlyphIDs == 0 || m_cStyles == 0) return false; GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); *pfShadow = pasgnx->m_fShadow; return (pasgnx->Expression()); } bool GpointDefined(gid16 wGlyphID, int nAttrID = 0, int nStyle = 0); void Clear(gid16 wGlyphID, int nAttrID, int nStyle = 0); GdlExpression * Expression(gid16 wGlyphID, int nAttrID, int nStyle = 0) { GrcAssignment * pasgnx = m_prgasgnx + Index(wGlyphID, nAttrID, nStyle); return pasgnx->Expression(); } protected: GrcAssignment * m_prgasgnx; // matrix size_t m_cGlyphAttrs; size_t m_cGlyphIDs; size_t m_cStyles; }; /*---------------------------------------------------------------------------------------------- Class: GrcLigComponentList Description: Ligature components for each glyph. First, note that the first batch of (global) glyph attributes are a set of special system attributes indicating whether or not a given component is defined for the glyph. GrcLigComponentList contains an array indicating which components are defined for each glyph. For glyphs that are not ligatures, the array holds NULL. For glyphs that are ligatures, it holds in essence vector of the special system attribute IDs. Hungarian: lclist ----------------------------------------------------------------------------------------------*/ class GrcLigComponentList { struct LigCompMap // lcmap { // Indices of component symbols in m_vpsymDefinedComponents that are defined // for a given glyph. std::vector m_vinIDs; }; public: GrcLigComponentList(size_t cvGlyphIDs); ~GrcLigComponentList(); int AddComponentFor(gid16 wGlyphID, Symbol psymComponent, GdlRenderer * prndr); bool FindComponentFor(gid16 wGlyphID, int nID); // int FindComponentID(Symbol psymComponent); // int NumberOfComponents() // { // return m_vpsymDefinedComponents.Size(); // } protected: // int AddComponent(Symbol psymComponent); protected: // Global list of all ligature components that have been defined for all glyphs; // the index serves as an internal ID. // OBSOLETE--this is now covered by the fact that the components are listed first // in the global glyph attribute list. // std::vector m_vpsymDefinedComponents; // List of defined items for each glyph ID. std::vector m_vgplcmap; }; #endif // GRC_GAMATRIX_INCLUDED grcompiler-5.2.1/compiler/GrcManager.cpp000066400000000000000000000245531411153030700202120ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcManager.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implements the main object that manages the compliation process. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ GrcManager g_cman; /*********************************************************************************************** Methods: General ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Constructor ----------------------------------------------------------------------------------------------*/ GrcManager::GrcManager() { Init(); } void GrcManager::Init() { m_prndr = new GdlRenderer(); m_prndr->SetLineAndFile(GrpLineAndFile(1, 1, "")); m_psymtbl = new GrcSymbolTable(true); m_venv.resize(1); // Temporary structures used during parsing: m_mtbGlyphAttrs = new GrcMasterTable; m_mtbFeatures = new GrcMasterTable; m_mvlNameStrings = new GrcMasterValueList; m_pgax = NULL; m_plclist = NULL; m_prgvpglfcFsmClasses = NULL; m_fOutputDebugFiles = false; m_fOutputDebugXml = false; m_fBasicJust = false; m_nNameTblStart = -1; m_fxdSilfTableVersion = 0; m_fxdGlocTableVersion = 0; m_fxdGlatTableVersion = 0; m_fxdFeatTableVersion = 0; m_fxdSillTableVersion = 0; m_tcCompressor = ktcNone; } /*---------------------------------------------------------------------------------------------- Destructor ----------------------------------------------------------------------------------------------*/ GrcManager::~GrcManager() { Clear(); } void GrcManager::Clear() { if (m_prgvpglfcFsmClasses) delete[] m_prgvpglfcFsmClasses; size_t i; for (i = 0; i < m_vpexpModified.size(); ++i) delete m_vpexpModified[i]; m_vpexpModified.clear(); if (m_pgax) delete m_pgax; if (m_plclist) delete m_plclist; if (m_prndr) delete m_prndr; if (m_mtbGlyphAttrs) delete m_mtbGlyphAttrs; if (m_mtbFeatures) delete m_mtbFeatures; if (m_mvlNameStrings) delete m_mvlNameStrings; if (m_psymtbl) delete m_psymtbl; for (i = 0; i < this->m_vplcls.size(); i++) delete m_vplcls[i]; m_vplcls.clear(); for (i = 0; i < m_vpfeatInput.size(); ++i) delete m_vpfeatInput[i]; } /*********************************************************************************************** Methods: Getters and setters ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Return the number of justification levels. ----------------------------------------------------------------------------------------------*/ int GrcManager::NumJustLevels() { int cRet = m_nMaxJLevel; if (cRet == -1) cRet = 1; // no levels specified else if (cRet == -2) cRet = 0; // no justification else cRet++; // to account for level 0 cRet = min(cRet, 4); return cRet; } /*********************************************************************************************** Methods: Parser ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Push a new environment corresponding to a table statement. Records an error if the string is not a valid table name. ----------------------------------------------------------------------------------------------*/ GrcEnv * GrcManager::PushTableEnv(GrpLineAndFile & lnf, std::string staTableName) { Symbol psymTable = SymbolTable()->FindSymbol(staTableName); if (!psymTable || !psymTable->FitsSymbolType(ksymtTable)) { g_errorList.AddError(1181, NULL, "Invalid table name: ", staTableName, lnf); return PushGeneralEnv(lnf); // just push a copy of current env } else { GrcEnv * penvPrev = &(m_venv[m_venv.size() - 1]); Symbol psymPrevTable = penvPrev->Table(); int nPrevPass = penvPrev->Pass(); std::pair hmpair; hmpair.first = psymPrevTable; hmpair.second = nPrevPass; m_hmpsymnCurrPass.insert(hmpair); //m_hmpsymnCurrPass.Insert(psymPrevTable, nPrevPass, true); GrcEnv * penvNew = PushEnvAux(); penvNew->SetTable(psymTable); int nPass = 0; std::map::iterator hmit = m_hmpsymnCurrPass.find(psymTable); if (hmit != m_hmpsymnCurrPass.end()) nPass = hmit->second; //m_hmpsymnCurrPass.Retrieve(psymTable, &nPass); penvNew->SetPass(nPass); return penvNew; } } /*---------------------------------------------------------------------------------------------- Push a new environment corresponding to a pass statement. ----------------------------------------------------------------------------------------------*/ GrcEnv * GrcManager::PushPassEnv(GrpLineAndFile & lnf, int nPass) { GrcEnv * penvNew = PushEnvAux(); penvNew->SetPass(nPass); Symbol psymTable = penvNew->Table(); std::pair hmpair; hmpair.first = psymTable; hmpair.second = nPass; m_hmpsymnCurrPass.insert(hmpair); //m_hmpsymnCurrPass.Insert(psymTable, nPass, true); if (!psymTable->FitsSymbolType(ksymtTableRule)) { g_errorList.AddError(1182, NULL, psymTable->FullName(), " table cannot hold passes", lnf); } return penvNew; } /*---------------------------------------------------------------------------------------------- Push a new environment corresponding to an environment statement. ----------------------------------------------------------------------------------------------*/ GrcEnv * GrcManager::PushGeneralEnv(GrpLineAndFile & /*lnf*/) { return PushEnvAux(); } /*---------------------------------------------------------------------------------------------- Push a new environment initialized from the previous one. Return a pointer to the new one. ----------------------------------------------------------------------------------------------*/ GrcEnv * GrcManager::PushEnvAux() { GrcEnv envToCopy(m_venv.back()); // make a local copy, because the act of pushing can cause // the vector to resize, losing the item to copy m_venv.push_back(envToCopy); return &(m_venv.back()); } /*---------------------------------------------------------------------------------------------- Pop the top environment. Return a pointer to the new top. Arguments: nLine - line number staStmt - for error message: "table", "pass", "environment" ----------------------------------------------------------------------------------------------*/ GrcEnv * GrcManager::PopEnv(GrpLineAndFile & lnf, std::string staStmt) { // There should never be less than one environment on the stack, since the recipient // is initialized with one. if (m_venv.size() <= 1) { g_errorList.AddError(1183, NULL, "End", staStmt, " encountered without balancing ", staStmt, " statement", lnf); return &(m_venv.back()); } m_venv.pop_back(); GrcEnv * penv = &(m_venv.back()); Symbol psymTable = penv->Table(); int nPass = penv->Pass(); m_hmpsymnCurrPass.erase(psymTable); std::pair hmpair; hmpair.first = psymTable; hmpair.second = nPass; m_hmpsymnCurrPass.insert(hmpair); //m_hmpsymnCurrPass.Insert(psymTable, nPass, true); // true: overwrite previous value return penv; } /*---------------------------------------------------------------------------------------------- Add a class with the given name. ----------------------------------------------------------------------------------------------*/ GdlGlyphClassDefn * GrcManager::AddGlyphClass(GrpLineAndFile const& lnf, std::string staClassName) { GrcStructName xns(staClassName); Symbol psymClass = m_psymtbl->AddClassSymbol(xns, lnf); GdlGlyphClassDefn * pglfc = dynamic_cast(psymClass->Data()); Assert(pglfc); m_prndr->AddGlyphClass(pglfc); pglfc->SetName(staClassName); return pglfc; } /*---------------------------------------------------------------------------------------------- Add an anonymous class; assign it a generated name. ----------------------------------------------------------------------------------------------*/ GdlGlyphClassDefn * GrcManager::AddAnonymousClass(GrpLineAndFile const& lnf) { Symbol psymClass = m_psymtbl->AddAnonymousClassSymbol(lnf); GdlGlyphClassDefn * pglfc = dynamic_cast(psymClass->Data()); Assert(pglfc); m_prndr->AddGlyphClass(pglfc); pglfc->SetName(std::string(psymClass->FieldAt(0))); return pglfc; } /*---------------------------------------------------------------------------------------------- Set up the GDL objects from the master tables. ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessMasterTables() { m_mtbFeatures->SetupFeatures(m_psymtbl); m_mtbGlyphAttrs->SetupGlyphAttrs(); m_mvlNameStrings->SetupNameDefns(m_prndr->NameAssignmentsMap()); } /*********************************************************************************************** Methods: For test procedures ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Delete the context of the GrcManager and reinitialize so we can use it for another test procedure. ----------------------------------------------------------------------------------------------*/ void GrcManager::test_Recycle() { Clear(); Init(); } grcompiler-5.2.1/compiler/GrcManager.h000066400000000000000000000552041411153030700176540ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcManager.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: The main object that manages the compliation process. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRC_MANAGER_INCLUDED #define GRC_MANAGER_INCLUDED class GdlFeatureDefn; class GdlGlyphClassDefn; class GdlNameDefn; /*---------------------------------------------------------------------------------------------- Used for outputting name table. ----------------------------------------------------------------------------------------------*/ struct PlatEncChange { size_t cbBytesPerChar; // 1 = 8-bit, 2 = 16-bit uint16 platformID; uint16 encodingID; uint16 engLangID; bool fChangeName; std::u16string stuFullName; std::u16string stuUniqueName; std::u16string stuPostscriptName; }; // Processing passes in the parser where we process and assign IDs to glyph attributes: enum GlyphAttrProcessPasses { kgappBuiltIn = 0, kgappCompBase = 1, kgappCompBox = 2, kgappJustify = 3, kgappOther = 4 }; // Compresssion schemes enum TableCompressor { ktcNone = 0, ktcLZ4 = 1 }; /*---------------------------------------------------------------------------------------------- Class: GrcManager Description: The object that manages the complication process. There is one global instance. Hungarian: cman ----------------------------------------------------------------------------------------------*/ class GrcManager { typedef std::map SymbolTableMap; public: // Constructor & destructor: GrcManager(); ~GrcManager(); protected: void Init(); void Clear(); public: void ClearFsmWorkSpace(); public: // General: GdlRenderer * Renderer() { return m_prndr; } GrcSymbolTable * SymbolTable() { return m_psymtbl; } std::vector * GlyphAttrVec() { return &m_vpsymGlyphAttrs; } GrcGlyphAttrMatrix * GlyphAttrMatrix() { return m_pgax; } GrcLigComponentList * LigCompList() { return m_plclist; } size_t NumGlyphs() { return m_cwGlyphIDs; } utf16 PhantomGlyph() { return m_wPhantom; } int SilfTableVersion() { return m_fxdSilfTableVersion; } void SetSilfTableVersion(int fxd, bool fUserSpec) { m_fxdSilfTableVersion = fxd; m_fUserSpecifiedVersion = fUserSpec; } void FixSilfTableVersion(int fxd) { m_fxdSilfTableVersion = fxd; } int MaxSilfVersion() { // Highest version of the Silf table this version of the compiler can generate: return kfxdMaxSilfVersion; } int DefaultSilfVersion() { return 0x00020000; } bool UserSpecifiedVersion() { return m_fUserSpecifiedVersion; } void SetTableVersion(int ti, int fxdVersion) { switch (ti) { case ktiSilf: m_fxdSilfTableVersion = fxdVersion; break; case ktiGloc: m_fxdGlocTableVersion = fxdVersion; break; case ktiGlat: m_fxdGlatTableVersion = fxdVersion; break; case ktiFeat: m_fxdFeatTableVersion = fxdVersion; break; case ktiSill: m_fxdSillTableVersion = fxdVersion; break; default: break; } } int TableVersion(int ti) { switch (ti) { case ktiSilf: return m_fxdSilfTableVersion; case ktiGloc: return m_fxdGlocTableVersion; case ktiGlat: return m_fxdGlatTableVersion; case ktiFeat: return m_fxdFeatTableVersion; case ktiSill: return m_fxdSillTableVersion; default: return 0; } } int CompilerVersion() { return m_fxdCompilerVersion; } // See documentation at the beginning of the main.cpp file. void SetCompilerVersionFor(int fxdSilfVersion) { switch (fxdSilfVersion) { case 0x00010000: m_fxdCompilerVersion = 0x00010000; break; case 0x00020000: m_fxdCompilerVersion = 0x00020000; break; case 0x00020001: m_fxdCompilerVersion = 0x00040001; break; case 0x00030000: m_fxdCompilerVersion = 0x00030000; break; case 0x00030001: m_fxdCompilerVersion = 0x00040000; break; case 0x00030002: m_fxdCompilerVersion = 0x00040001; break; case 0x00040000: m_fxdCompilerVersion = 0x00040002; break; case 0x00040001: m_fxdCompilerVersion = 0x00050000; break; case 0x00050000: m_fxdCompilerVersion = 0x00050000; break; default: m_fxdCompilerVersion = 0x00FF0000; break; // unknown } } TableCompressor Compressor() const { return m_tcCompressor; } void SetCompressor(TableCompressor tc) { m_tcCompressor = tc; } int VersionForTable(int ti); int VersionForTable(int ti, int fxdRequestedVersion); int VersionForRules(); int CalculateSilfVersion(int fxdSpecVersion); void SetNameTableStart(int n) { m_nNameTblStart = n; } int NameTableStart() { return m_nNameTblStart; } int NameTableStartMin() { return 256; } int NumJustLevels(); // environment getters & setters Symbol Table() { return m_venv.back().Table(); } int Pass() { return m_venv.back().Pass(); } int MUnits() { return m_venv.back().MUnits(); } int PointRadius() { return m_venv.back().PointRadius(); } int PointRadiusUnits() { return m_venv.back().PointRadiusUnits(); } int MaxRuleLoop() { return m_venv.back().MaxRuleLoop(); } int MaxBackup() { return m_venv.back().MaxBackup(); } bool AttrOverride() { return m_venv.back().AttrOverride(); } utf16 CodePage() { return m_venv.back().CodePage(); } void SetTable(Symbol psym) { m_venv.back().SetTable(psym); } void SetPass(int n) { m_venv.back().SetPass(n); } void SetMUnits(int m) { m_venv.back().SetMUnits(m); } void SetPointRadius(int n, int m) { m_venv.back().SetPointRadius(n, m); } void SetMaxRuleLoop(int n) { m_venv.back().SetMaxRuleLoop(n); } void SetMaxBackup(int n) { m_venv.back().SetMaxBackup(n); } void SetAttrOverride(bool f) { m_venv.back().SetAttrOverride(f); } void SetCodePage(utf16 w) { m_venv.back().SetCodePage(w); } GdlRuleTable * RuleTable(GrpLineAndFile & lnf) { return m_prndr->GetRuleTable(lnf, Table()->FieldAt(0)); } bool OutputDebugFiles() { return m_fOutputDebugFiles; } bool OutputDebugXml() { return m_fOutputDebugXml; } void SetOutputDebugFiles(bool fXml, bool fOther) { m_fOutputDebugXml = fXml; m_fOutputDebugFiles = fOther; } std::string ErrorFileName() { return m_staErrorFileName; } void SetErrorFileName(std::string staFileName) { m_staErrorFileName = staFileName; } bool IgnoreBadGlyphs() { return m_fIgnoreBadGlyphs; } void SetIgnoreBadGlyphs(bool f) { m_fIgnoreBadGlyphs = f; } bool IsVerbose() { return m_fVerbose; } void SetVerbose(bool f) { m_fVerbose = f; } int SeparateControlFile() { return m_fSepCtrlFile; } void SetSeparateControlFile(bool f) { m_fSepCtrlFile = f; } bool IncludePassOptimizations() { return m_fPassOptimizations; } void SetPassOptimizations(bool f) { m_fPassOptimizations = f; } bool OffsetAttrs() { return m_fOffsetAttrs; } void SetOffsetAttrs(bool f) { m_fOffsetAttrs = f; } public: // Parser: bool Parse(std::string staFileName, std::string staGdlppFile, std::string staOutputPath); protected: bool RunPreProcessor(std::string staFileName, std::string * staFilePreProc, std::string & staGdlppFile, std::string & staOutputPath); void RecordPreProcessorErrors(FILE * pFilePreProcErr); std::string PreProcName(std::string sta); bool ParseFile(std::ifstream & strmIn, std::string staFileName); void InitPreDefined(); void WalkParseTree(RefAST ast); void WalkTopTree(RefAST ast); void WalkEnvTree(RefAST ast, TableType tblt, GdlRuleTable *, GdlPass *); void WalkDirectivesTree(RefAST ast, int * pnCollisionFix = NULL, int * pnAutoKern = NULL, int * pnCollisionThreshold = NULL, int * pnDir = NULL); void WalkTableTree(RefAST ast); void WalkTableElement(RefAST ast, TableType tblt, GdlRuleTable * prultbl, GdlPass * ppass); void WalkGlyphTableTree(RefAST ast); void WalkGlyphTableElement(RefAST ast); void WalkGlyphClassTree(RefAST ast, GdlGlyphClassDefn * pglfc, GlyphClassType glfct); void WalkGlyphAttrTree(RefAST ast, std::vector & vsta); void AddGlyphAttr(RefAST ast, std::vector & vsta, GdlExpression * pexpValue); void WalkFeatureTableTree(RefAST ast); void WalkFeatureTableElement(RefAST ast); void WalkFeatureSettingsTree(RefAST ast, std::vector & vsta); void WalkLanguageTableTree(RefAST ast); void WalkLanguageTableElement(RefAST ast); void WalkLanguageItem(RefAST ast, GdlLangClass * plcls); void WalkLanguageCodeList(RefAST astList, GdlLangClass * plcls); void WalkNameTableTree(RefAST ast); void WalkNameTableElement(RefAST ast); void WalkNameIDTree(RefAST ast, std::vector & vsta); void WalkRuleTableTree(RefAST ast, int nodetyp); void WalkPassTree(RefAST ast, GdlRuleTable * prultbl, GdlPass * ppassPrev); void WalkIfTree(RefAST astContents, GdlRuleTable *, GdlPass *); bool AllContentsArePasses(RefAST ast); void WalkRuleTree(RefAST ast, GdlRuleTable * prultbl, GdlPass * ppass); void WalkSlotAttrTree(RefAST ast, GdlRuleItem * prit, std::vector & vsta); GdlExpression * WalkExpressionTree(RefAST ast); void ProcessGlobalSetting(RefAST); void ProcessGlyphClassMember(RefAST ast, GdlGlyphClassDefn * pglfc, GlyphClassType glfct, GdlGlyphDefn ** ppglfRet); GdlGlyphDefn * ProcessGlyph(RefAST astGlyph, GlyphType glft, int nCodePage = -1); void ProcessFunction(RefAST ast, std::vector & vsta, bool fSlotAttr, GdlRuleItem * prit = NULL, Symbol psymOp = NULL); void ProcessFunctionArg(bool fSlotAttr, GrcStructName const& xns, int nPR, int mPRUnits, bool fOverride, GrpLineAndFile const& lnf, ExpressionType expt, GdlRuleItem * prit, Symbol psymOp, GdlExpression * pexpValue); void BadFunctionError(GrpLineAndFile & lnf, std::string staFunction, std::string staArgsExpected); void ProcessItemRange(RefAST astItem, GdlRuleTable * prultbl, GdlPass * ppass, GdlRule * prule, int * pirit, int lrc, bool fHasLhs); void ProcessRuleItem(RefAST astItem, GdlRuleTable * prultbl, GdlPass * ppass, GdlRule * prule, int * pirit, int lrc, bool fHasLhs); std::string ProcessClassList(RefAST ast, RefAST * pastNext); std::string ProcessAnonymousClass(RefAST ast, RefAST * pastNext); void ProcessSlotIndicator(RefAST ast, GdlAlias * palias); void ProcessAssociations(RefAST ast, GdlRuleTable * prultbl, GdlRuleItem * prit, int lrc); GdlGlyphClassDefn * ConvertClassToIntersection(Symbol psymClass, GdlGlyphClassDefn * pglfc, GrpLineAndFile & lnf); GdlGlyphClassDefn * ConvertClassToDifference(Symbol psymClass, GdlGlyphClassDefn * pglfc, GrpLineAndFile & lnf); GrpLineAndFile LineAndFile(RefAST); int NumericValue(RefAST); int NumericValue(RefAST, bool * pfM); Symbol IdentifierSymbol(RefAST ast, std::vector & vsta, bool * pfGlyphAttr); bool ClassPredefGlyphAttr(std::vector & vsta, ExpressionType * pexpt, SymbolType * psymt); public: // so they can be called by the test procedures GrcEnv * PushTableEnv(GrpLineAndFile &, std::string staTableName); GrcEnv * PushPassEnv(GrpLineAndFile &, int nPass); GrcEnv * PushGeneralEnv(GrpLineAndFile &); GrcEnv * PopEnv(GrpLineAndFile &, std::string staStmt); protected: GrcEnv * PushEnvAux(); public: // so they can be called by the test procedures GdlGlyphClassDefn * AddGlyphClass(GrpLineAndFile const&, std::string staClassName); GdlGlyphClassDefn * AddAnonymousClass(GrpLineAndFile const&); protected: void AddGlyphToClass(GdlGlyphClassDefn * pglfc, GdlGlyphClassMember * pglfd); // debuggers: void DebugParseTree(RefAST); public: // Post-parser: bool PostParse(); protected: void ProcessMasterTables(); public: // Pre-compiler: bool PreCompile(GrcFont *); bool Compile(GrcFont *, char * pchOutputPath); protected: bool PreCompileFeatures(GrcFont *); bool PreCompileClassesAndGlyphs(GrcFont *); bool PreCompileRules(GrcFont *); bool PreCompileLanguages(GrcFont * pfont); bool GeneratePseudoGlyphs(GrcFont *); utf16 FirstFreeGlyph(GrcFont *); void CreateAutoPseudoGlyphDefn(utf16 wAssigned, int nUnicode, gid16 wGlyphID); void SortPseudoMappings(); bool AddAllGlyphsToTheAnyClass(GrcFont * pfont, std::map & hmActualForPseudo); bool MaxJustificationLevel(int * pnJLevel); bool CompatibleWithVersion(int fxdVersion, int * pfxdNeeded, int * pfxdCpilrNeeded, bool * pfFixPassConstraints); bool AssignInternalGlyphAttrIDs(); void CalculateCollisionOctaboxes(GrcFont * pfont); bool AssignGlyphAttrsToClassMembers(GrcFont * pfont); bool ProcessGlyphAttributes(GrcFont * pfont); void ConvertBetweenXYAndGpoint(GrcFont * pfont, gid16 wGlyphID); bool FinalGlyphAttrResolution(GrcFont * pfont); void MinAndMaxGlyphAttrValues(int nAttrID, int cJLevels, int nAttrIdJStr, int nAttrIdJShr, int nAttrIdJStep, int nAttrIdJWeight, int nAttrIdSkipPasses, int * pnMin, int * pnMax); bool StorePseudoToActualAsGlyphAttr(); bool CheckForEmptyClasses(); public: int PseudoForUnicode(int nUnicode); int ActualForPseudo(utf16 wPseudo); utf16 LbGlyphId() { return m_wLineBreak; } void StoreModifiedExpression(GdlExpression * pexp) // store an extra expression so it can be deleted later { m_vpexpModified.push_back(pexp); } protected: bool AssignClassInternalIDs(); void DetermineTableVersion(); public: void AddToFsmClasses(GdlGlyphClassDefn * pglfc, int nPassID); protected: public: // Compiler: int SlotAttributeIndex(Symbol psym); void GenerateFsms(char * pchOutputPath); ////void InitializeFsmArrays(); std::vector * FsmClassesForPass(int nPassID); void CalculateContextOffsets(); void CalculateGlatVersion(); void PassOptimizations(); // Output: bool AssignFeatTableNameIds(utf16 wFirstNameId, utf16 wNameIdMinNew, std::vector & vstuExtNames, std::vector & vwLangIds, std::vector & vwNameTblIds, size_t & cchwStringData, uint8 * pNameTbl); int OutputToFont(char * pchSrcFileName, char * pchDstFileName, utf16 * pchDstFontFamily, bool fModFontName, utf16 * pchSrcFontFamily); int FinalAttrValue(gid16 wGlyphID, int nAttrID); void ConvertBwForVersion(gid16 wGlyphId, int nAttrIdBw); void SplitLargeStretchValue(gid16 wGlyphId, int nAttrIdJStr); protected: bool AddFeatsModFamily(uint16 * pchFamilyName, uint8 *& pNameTbl, size_t & cbNameTbl); void BuildDateString(utf16 * stuDate); bool FindNameTblEntries(void * pNameTblRecord, int cNameTblRecords, uint16 suPlatformId, uint16 suEncodingId, uint16 suLangId, int * piFamily, int * piSubFamily, int * piFullName, int * piVendor, int * piPSName, int * piUniqueName, int * piPrefFamily, int * piCompatibleFull); bool BuildFontNames(bool f8bit, uint16 * pchFamilyName, size_t cchwFamilyName, utf16 * stuDate, uint8 * pSubFamily, size_t cbSubFamily, uint8 * pVendor, size_t cbVendor, uint8* pUniqueName, size_t cbUniqueName, PlatEncChange *); bool AddFeatsModFamilyAux(uint8 * pTblOld, size_t cbTblOld, uint8 * pTblNew, size_t cbTblNew, std::vector & vstuExtNames, std::vector & vnLangIds, std::vector & vnNameTblIds, uint16 * pchwFamilyName, size_t cchwFamilyName, std::vector & vpec, size_t nNameTblMinNew); bool OutputOS2Table(uint8 * pOs2TblSrc, size_t cbOs2TblSrc, uint8 * pOs2TblMin, size_t cbOs2TblMin, GrcBinaryStream * pbstrm, size_t & chSizeRet); bool OutputCmapTable(uint8 * pCmapTblSrc, size_t cbCmapTblSrc, GrcBinaryStream * pbstrm, size_t & chSizeRet); size_t OutputCmap31Table(void * pCmapSubTblSrc, GrcBinaryStream * pbstrm, bool fFrom310, bool * pfNeed310); size_t OutputCmap310Table(void * pCmapSubTblSrc, GrcBinaryStream * pbstrm, bool fFrom31); void OutputSileTable(GrcBinaryStream * pbstrm, utf16 * pchStrFontFamily, char * pchSrcFileName, unsigned int luMasterChecksum, unsigned int * pnCreateTime, unsigned int * pnModifyTime, int * pibOffset, int * pcbSize); void OutputGlatAndGloc(GrcBinaryStream * pbstrm, int * pnGlocOffset, int * pnGlocSize, int * pnGlatOffset, int * pnGlatSize); int OutputGlatOctaboxes(GrcBinaryStream * pbstrm); void OutputSilfTable(GrcBinaryStream * pbstrm, int * pnSilfOffset, int * pnSilfSize); void OutputFeatTable(GrcBinaryStream * pbstrm, int * pnFeatOffset, int * pnFeatSize); void OutputSileTable(GrcBinaryStream * pbstrm, utf16 * pchwFontName, long nChecksum); void OutputSillTable(GrcBinaryStream * pbstrm, int * pnSillOffset, int * pnSillSize); void ReadSourceFontFeatures(std::ifstream & strmSrc, size_t iTableFeatSrc, size_t iTableFeatLen, size_t iTableNameSrc, size_t iTableNameLen); bool Compress(std::stringbuf & sb); void NoteCompressionRatio(int ti, double ratio) { m_mpnfCompressionInfo[ti] = ratio-1; } public: double CompressionRatio(int ti) { return m_mpnfCompressionInfo[ti]; } // debuggers: void DebugEngineCode(char * pchOutputPath); void DebugRulePrecedence(char * pchOutputPath); void DebugGlyphAttributes(char * pchOutputPath); void DebugClasses(char * pchOutputPath); void DebugFsm(char * pchOutputPath); bool DebugXml(GrcFont * pfont, char * pchOutputFilename, bool fAbsGdlFilePaths); ////void WalkFsmMachineClasses(); void DebugOutput(); void DebugCmap(GrcFont * pfont, char * pchOutputPath); void WriteCmapItem(std::ofstream & strmOut, unsigned int nUnicode, bool fSuppPlaneChars, gid16 wGlyphID, bool fUnicodeToGlyph, bool fPseudo, bool fInCmap); static void DebugHex(std::ostream & strmOut, gid16 wGlyphID); static void DebugUnicode(std::ostream & strmOut, int nUnicode, bool f32bit); static std::string ExpressionDebugString(ExpressionType expt); protected: void DebugXmlGlyphs(GrcFont * pfont, std::ofstream & strmOut, std::string staPathToCur); void CmapAndInverse(GrcFont * pfont, int cnUni, utf16 * rgnUniToGlyphID, unsigned int * rgnGlyphIDToUni, std::vector & vnXUniForPsd, std::vector & vwXPsdForUni); std::string pathFromOutputToCurrent(char * rgchCurDir, char * rgchOutputPath); char splitPath(char * rgchPath, std::vector & vstaResult); protected: // Instance variables: // The version of the Silf table to output. int m_fxdSilfTableVersion; // The compiler version with which to mark the font. This might or might not be the // actual current version of the compiler. If we are outputting a lower version of // the tables than what this compiler can generate, we can put a lower compiler version // in the font (and that way the font can be used with earlier engines). int m_fxdCompilerVersion; // Did the user include a /v option? bool m_fUserSpecifiedVersion; // Other table versions. int m_fxdGlocTableVersion; int m_fxdGlatTableVersion; int m_fxdFeatTableVersion; int m_fxdSillTableVersion; std::map m_mpnfCompressionInfo; // Are we creating a separate control file? bool m_fSepCtrlFile; std::string m_staErrorFileName; // gdlerr.txt by default // Basic justification: true if no justify attributes are present bool m_fBasicJust; // Highest justification level used int m_nMaxJLevel; // Space contextual flags //////////////SpaceContextuals m_spcon; // Where to start the feature names in the name table int m_nNameTblStart; // Ignore nonexistent glyphs? bool m_fIgnoreBadGlyphs; // The top-level object representing the GDL program GdlRenderer * m_prndr; GrcSymbolTable * m_psymtbl; // Temporary structures used during parsing--master tables of glyph attribute // and feature settings. GrcMasterTable * m_mtbGlyphAttrs; GrcMasterTable * m_mtbFeatures; GrcMasterValueList * m_mvlNameStrings; std::vector m_vpsymStyles; // Also language classes: std::vector m_vplcls; uint32_t m_fxdFeatVersion; // version of feature table to generate std::vector m_venv; std::map m_hmpsymnCurrPass; // for each table, the current pass std::vector m_vpexpConditionals; std::vector m_vpexpPassConstraints; bool m_fOutputDebugFiles; bool m_fOutputDebugXml; // For compiler use: gid16 m_wGlyphIDLim; // lim of range of actual glyph IDs in the font size_t m_cwGlyphIDs; size_t m_cpsymBuiltIn; // total number of built-in attributes size_t m_cpsymComponents; // total number of ligature components encountered // Pseudo-code mappings: the two vectors form pairs of underlying unicode values and // coresponding pseudo-glyph IDs. std::vector m_vnUnicodeForPseudo; std::vector m_vwPseudoForUnicode; unsigned int m_nMaxPseudoUnicode; utf16 m_wFirstAutoPseudo; std::map m_hmActualForPseudo; utf16 m_wLineBreak; // line break pseudo glyph // Used to represent a "phantom glyph"--one that matches a rule's pre-context when // the stream position is near the beginning and therefore there aren't enough slots in // the stream; this glyph is a member of the ANY class and no other. utf16 m_wPhantom; // The following vector maps the internal glyph attr ID to the symbol in the symbol table // (which in turn has a record of the internal ID). std::vector m_vpsymGlyphAttrs; // The following matrix contains the glyph attribute assignments for // all of the glyphs in the system. Used by the parser and post-parser. GrcGlyphAttrMatrix * m_pgax; std::vector m_vgbdy; // The following defines an array containing the ligature component mappings for // each glyph. For glyphs that are not ligatures, the array contains NULL. // For ligatures, it contains a pointer to a structure holding a vector something like: // clsABC.component.A // clsABC.component.B // clsABC.component.C GrcLigComponentList * m_plclist; // Extra instances of expressions that were simplified or changed in any way // from the originals; pointers are stored here so that they can be properly deleted. // In a sense it is an extension to the master tables; it contains expressions that // would normally be owned there but aren't. std::vector m_vpexpModified; // The following vector maps the internal replacement-class IDs to the replacement-classes // themselves (which in turn have a record of the ID). (Replacement-classes are classes // that are used to do replacements in substitution rules; // eg, in "clsA > clsB / _ clsC" clsA and clsB are replacement classes.) std::vector m_vpglfcReplcmtClasses; int m_cpglfcLinear; // number of linear classes // Each vector in the array maps the internal FSM-class IDs to the FSM-classes themselves // (which in turn have a record of the ID). (FSM-classes are classes that are used for // matching input.) There is one vector per pass. std::vector * m_prgvpglfcFsmClasses; int cReplcmntClasses; bool m_fVerbose; bool m_fPassOptimizations; bool m_fOffsetAttrs; // compiler std::vector m_vpfeatInput; // features defined in the input font, if any TableCompressor m_tcCompressor; public: // For test procedures: void test_Recycle(); }; #endif // GRC_MANAGER_INCLUDED grcompiler-5.2.1/compiler/GrcMasterTable.cpp000066400000000000000000000446471411153030700210510ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcMasterTable.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Master tables that are used for the post-parser. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Add an item to the list. The first field of the symbol is the class or feature name key for the main master list. Arguments: psym - glyph attribute or feature setting symbol pexpValue - value of the above item nPR - current global PointRadius setting munitPR - current units for PointRadius fOverride - current global AttributeOverride setting lnf - line where statement occurs ----------------------------------------------------------------------------------------------*/ void GrcMasterTable::AddItem(Symbol psym, GdlExpression * pexpValue, int nPR, int munitPR, bool fOverride, GrpLineAndFile const& lnf, std::string staDescription) { Symbol psymBase = psym->BaseDefnForNonGeneric(); Assert(psymBase->FitsSymbolType(ksymtClass) || psymBase->FitsSymbolType(ksymtFeature)); GrcMasterValueList * pmvl; ValueListMap::iterator hmit = m_vlistmapEntries.find(psymBase); if (hmit == m_vlistmapEntries.end() || hmit->second == NULL) //if (!m_vlistmapEntries.Retrieve(psymBase, &pmvl) || !pmvl) { pmvl = new GrcMasterValueList(); ValueListPair hmpair; hmpair.first = psymBase; hmpair.second = pmvl; m_vlistmapEntries.insert(hmpair); //m_vlistmapEntries.Insert(psymBase, pmvl); } else pmvl = hmit->second; pmvl->AddItem(psym, pexpValue, nPR, munitPR, fOverride, lnf, staDescription); // GdlAssignment * pasgn; /// // if (!pmvl->m_valmapEntries.Retrieve(psym, &pasgn) || !pasgn) // { // pasgn = new GdlAssignment(pexpValue, nPR, munitPR, fOverride, lnf); // pmvl->m_valmapEntries.Insert(psym, pasgn); // } // else // { // std::string staT = (psym->FitsSymbolType(ksymtGlyphAttr)) ? // "glyph attribute assignment" : // "feature setting"; // g_errorList.AddWarning(2523, pexpValue, // "Duplicate ", staT); // // if ((lnf.PreProcessedLine() > pasgn->PreProcessedLine() && fOverride) || // (lnf.PreProcessedLine() < pasgn->PreProcessedLine() && pasgn->Override())) // pasgn->Set(pexpValue, nPR, munitPR, fOverride, lnf); // } } /*---------------------------------------------------------------------------------------------- Add an item to the list (ie, the name table list). Arguments: psym - name symbol pexpValue - value of the above item nPR - current global PointRadius setting munitPR - current units for PointRadius fOverride - current global AttributeOverride setting lnf - line where statement occurs staDescription - for error message ----------------------------------------------------------------------------------------------*/ void GrcMasterValueList::AddItem(Symbol psym, GdlExpression * pexpValue, int nPR, int munitPR, bool fOverride, GrpLineAndFile const& lnf, std::string staDescription) { GdlAssignment * pasgn; ValueMap::iterator hmit = m_valmapEntries.find(psym); if (hmit == m_valmapEntries.end()) //if (!m_valmapEntries.Retrieve(psym, &pasgn) || !pasgn) { pasgn = new GdlAssignment(pexpValue, nPR, munitPR, fOverride, lnf); ValuePair hmpair; hmpair.first = psym; hmpair.second = pasgn; m_valmapEntries.insert(hmpair); //m_valmapEntries.Insert(psym, pasgn); } else { pasgn = hmit->second; g_errorList.AddWarning(2524, pexpValue, "Duplicate ", staDescription); if ((lnf.PreProcessedLine() > pasgn->PreProcessedLine() && fOverride) || (lnf.PreProcessedLine() < pasgn->PreProcessedLine() && !pasgn->Override())) { pasgn->Set(pexpValue, nPR, munitPR, fOverride, lnf); } } } /*---------------------------------------------------------------------------------------------- Return the value list associated with the given symbol, which should be a class or feature name. ----------------------------------------------------------------------------------------------*/ GrcMasterValueList * GrcMasterTable::ValueListFor(Symbol psym) { Assert(psym->FitsSymbolType(ksymtClass) || psym->FitsSymbolType(ksymtFeature)); GrcMasterValueList * pmvl; ValueListMap::iterator hmit = m_vlistmapEntries.find(psym); if (hmit == m_vlistmapEntries.end()) pmvl = NULL; else pmvl = hmit->second; //m_vlistmapEntries.Retrieve(psym, &pmvl); return pmvl; } /*---------------------------------------------------------------------------------------------- Set up the data and settings for all the features from the master feature table. ----------------------------------------------------------------------------------------------*/ void GrcMasterTable::SetupFeatures(GrcSymbolTable * psymtbl) { for (ValueListMap::iterator itvlistmap = EntriesBegin(); itvlistmap != EntriesEnd(); ++itvlistmap) { Symbol psymFeatName = itvlistmap->first; // GetKey(); GrcMasterValueList * pmvl = itvlistmap->second; //GetValue(); Assert(psymFeatName->FitsSymbolType(ksymtFeature)); GdlFeatureDefn * pfeat = dynamic_cast(psymFeatName->Data()); Assert(pfeat); pmvl->SetupFeatures(pfeat, psymtbl); } } /*---------------------------------------------------------------------------------------------- Initialize a GdlFeatureDefn with its settings from the master feature table. ----------------------------------------------------------------------------------------------*/ void GrcMasterValueList::SetupFeatures(GdlFeatureDefn * pfeat, GrcSymbolTable * psymtbl) { std::string fName = pfeat->Name(); GdlExpression * pexpDefault = NULL; for (ValueMap::iterator itvalmap = EntriesBegin(); itvalmap != EntriesEnd(); ++itvalmap) { Symbol psym = itvalmap->first; // GetKey(); Assert(psym->FitsSymbolType(ksymtFeatSetting)); GdlAssignment * pasgnValue = itvalmap->second; // GetValue(); GdlExpression * pexp = pasgnValue->m_pexp; Assert(psym->FieldIs(0, fName)); if (psym->FieldIs(1, "id")) { // feature.id if (psym->FieldCount() >= 2) { unsigned int nID; if (!pexp->ResolveToFeatureID(&nID)) g_errorList.AddError(2147, pexp, "Feature id must be an integer or string of 4 characters or less"); else if (nID == GdlFeatureDefn::kfidStdLang) { g_errorList.AddError(2148, pexp, "Feature ID ", std::to_string(nID), " is a reserved value"); pfeat->SetID(nID); // set it anyway, to avoid extra error message } else { if (psym->FieldCount() == 2) // main ID, not alternate { if (pfeat->ID() != 0) g_errorList.AddError(2168, pexp, "Duplicate main feature ID"); else { pfeat->SetID(nID); pfeat->SetHasPublicID(true); } } else // alternate { std::string staAltName = psym->FieldAt(2); if (staAltName.substr(0, 6) != "hidden") g_errorList.AddWarning(2537, pexp, "Alternate feature ID should be listed using 'id.hidden'"); } pfeat->AddAltID(nID); // This is something of a kludge. Create a symbol that looks like "featname__abcd" where abcd is the // string version of the ID. GdlStringExpression * pexpString = dynamic_cast(pexp); if (pexpString) { psym->CreateFeatAltIDSymbol(psymtbl, pfeat, pexpString); } } } else g_errorList.AddError(2149, pexp, "Invalid feature id statement"); } else if (psym->FieldIs(1, "default")) { // feature.default if (psym->FieldCount() == 2) pexpDefault = pexp; // save for later else g_errorList.AddError(2150, pexp, "Invalid feature default statement"); } else if (psym->FieldIs(1, "settings")) { // feature.settings.... GdlFeatureSetting * pfset = pfeat->FindOrAddSetting(std::string(psym->FieldAt(2)), psym->LineAndFile()); if (psym->FieldIs(3, "name")) { int nLangID; if (psym->FieldCount() != 5) { g_errorList.AddWarning(2525, pexp, "Invalid feature name statement"); nLangID = LG_USENG; } else { std::string strLang = psym->FieldAt(4); if (strLang[0] == '0' && strLang[1] == 'x') nLangID = strtoul(strLang.data() + 2, NULL, 16); // 0x0409 else if (strLang[0] == 'x') nLangID = strtoul(strLang.data() + 1, NULL, 16); // x0409 else nLangID = atoi(strLang.data()); // 1033 if (nLangID == 0 && psym->FieldAt(4) != "0") { g_errorList.AddWarning(2526, pexp, "Invalid language ID: ", psym->FieldAt(4), "--should be an integer"); nLangID = LG_USENG; } } if (!pexp->TypeCheck(kexptString)) g_errorList.AddWarning(2527, pexp, "Feature setting name must be a string"); else pfset->AddExtName((utf16)nLangID, pexp); } else if (psym->FieldIs(3, "value")) { int nValue; if (!pexp->ResolveToInteger(&nValue, false)) g_errorList.AddError(2151, pexp, "Feature value must be an integer"); else { if (!pexp->TypeCheck(kexptNumber, kexptZero, kexptOne)) g_errorList.AddWarning(2528, pexp, "Feature setting value should not be a scaled number"); pfset->SetValue(nValue); } } else g_errorList.AddError(2152, pexp, "Invalid feature settings field"); } else if (psym->FieldIs(1, "name")) { // feature.name.langID int nLangID; if (psym->FieldCount() != 3) { g_errorList.AddWarning(2529, pexp, "Invalid feature name statement"); nLangID = LG_USENG; } else { std::string strLang = psym->FieldAt(2); if (strLang[0] == '0' && strLang[1] == 'x') nLangID = strtoul(strLang.data() + 2, NULL, 16); // eg, 0x0409 else if (strLang[0] == 'x') nLangID = strtoul(strLang.data() + 1, NULL, 16); // eg, x0409 else nLangID = atoi(strLang.data()); // eg, 1033 if (nLangID == 0 && psym->FieldAt(2) != "0") { g_errorList.AddWarning(2530, pexp, "Invalid language ID: ", psym->FieldAt(2), "--should be an integer"); nLangID = LG_USENG; } } if (!pexp->TypeCheck(kexptString)) g_errorList.AddWarning(2531, pexp, "Feature name must be a string."); else pfeat->AddExtName((utf16)nLangID, pexp); } else g_errorList.AddError(2153, pexp, "Invalid feature statement"); } // Now that all the settings are defined, handle the default. int nDefault; if (pexpDefault) { if (pexpDefault->ResolveToInteger(&nDefault, false)) { if (!pexpDefault->TypeCheck(kexptNumber, kexptZero, kexptOne)) g_errorList.AddWarning(2532, pexpDefault, "Feature setting value should not be a scaled number"); if (!pfeat->FindSettingWithValue(nDefault)) { if (pfeat->NumberOfSettings() == 0 && (nDefault == 0 || nDefault == 1)) { // Boolean default--okay. } else { g_errorList.AddWarning(2533, pexpDefault, "Default feature setting is not among the defined values"); } } pfeat->SetDefault(nDefault); } else { // A kludge: the name of a feature setting was put in a slot-ref expression, // even though that's not what it is (see the tree-walker). GdlSlotRefExpression * pexpsr = dynamic_cast(pexpDefault); if (!pexpsr || pexpsr->Alias() == "") { g_errorList.AddError(2154, pexpDefault, "Invalid default feature setting"); } else { GdlFeatureSetting * pfsetDefault = pfeat->FindSetting(pexpsr->Alias()); if (!pfsetDefault) g_errorList.AddError(2155, pexpDefault, "Default feature setting is undefined: ", pexpsr->Alias()); else pfeat->SetDefault(pfsetDefault->Value()); } } } } /*---------------------------------------------------------------------------------------------- Set up the glyph attributes for all the classes from the master glyph attribute table. ----------------------------------------------------------------------------------------------*/ void GrcMasterTable::SetupGlyphAttrs() { for (ValueListMap::iterator itvlistmap = EntriesBegin(); itvlistmap != EntriesEnd(); ++itvlistmap) { Symbol psymClassName = itvlistmap->first; // GetKey(); GrcMasterValueList * pmvl = itvlistmap->second; // GetValue(); Assert(psymClassName->FitsSymbolType(ksymtClass)); GdlGlyphClassDefn * pglfc = dynamic_cast(psymClassName->Data()); Assert(pglfc); pmvl->SetupGlyphAttrs(pglfc); } } /*---------------------------------------------------------------------------------------------- Initialize a single GlyphClassDefn with its settings from master glyph table. ----------------------------------------------------------------------------------------------*/ void GrcMasterValueList::SetupGlyphAttrs(GdlGlyphClassDefn * pglfc) { std::vector vpsymProcessed; for (ValueMap::iterator itvalmap = EntriesBegin(); itvalmap != EntriesEnd(); ++itvalmap) { Symbol psym = itvalmap->first; // GetKey(); GdlAssignment * pasgnValue = itvalmap->second; // GetValue(); GdlExpression * pexp = pasgnValue->m_pexp; // int nPR = pasgnValue->m_nPR; // int munitPR = pasgnValue->m_munitPR; // int nStmtNo = pasgnValue->m_nStmtNo; // bool fOverride = pasgnValue->m_fOverride; Assert(psym->FieldIs(0, pglfc->Name())); if (psym->FieldIs(1, "directionality")) { if (psym->FieldCount() == 2) { pglfc->AddGlyphAttr(psym, pasgnValue); vpsymProcessed.push_back(psym); } else g_errorList.AddError(2156, pexp, "Invalid use of directionality attribute"); } else if (psym->FieldIs(1, "breakweight")) { if (psym->FieldCount() == 2) { pglfc->AddGlyphAttr(psym, pasgnValue); vpsymProcessed.push_back(psym); } else g_errorList.AddError(2157, pexp, "Invalid use of breakweight attribute"); } else if (psym->FieldIs(1, "component")) { if (psym->FieldCount() == 4 && (psym->FieldIs(3, "left") || psym->FieldIs(3, "bottom") || psym->FieldIs(3, "right") || psym->FieldIs(3, "top"))) { pglfc->AddComponent(psym, pasgnValue); vpsymProcessed.push_back(psym); } else g_errorList.AddError(2158, pexp, "Invalid use of component attribute"); } else { if (psym->FitsSymbolType(ksymtGlyphMetric)) // We should never get here, but just in case. g_errorList.AddError(2159, pexp, "Cannot set the value of a glyph metric."); else { // User-defined glyph attribute. pglfc->AddGlyphAttr(psym, pasgnValue); vpsymProcessed.push_back(psym); } } } // Now delete all the assignments that have been successfully processed from the map, // since they are now "owned" by the class definition. (Otherwise we get double destruction.) for (size_t ipsym = 0; ipsym < vpsymProcessed.size(); ipsym++) { m_valmapEntries.erase(vpsymProcessed[ipsym]); //m_valmapEntries.Delete(vpsymProcessed[ipsym]); } } /*---------------------------------------------------------------------------------------------- Initialize a NameDefn with its values from master table. ----------------------------------------------------------------------------------------------*/ void GrcMasterValueList::SetupNameDefns(NameDefnMap & hmNameMap) { for (ValueMap::iterator itvalmap = EntriesBegin(); itvalmap != EntriesEnd(); ++itvalmap) { Symbol psym = itvalmap->first; // GetKey(); GdlAssignment * pasgnValue = itvalmap->second; // GetValue(); GdlExpression * pexp = pasgnValue->m_pexp; //int nPR = pasgnValue->m_nPR; //int munitPR = pasgnValue->m_munitPR; bool fOverride = pasgnValue->m_fOverride; GdlStringExpression * pexpstr = dynamic_cast(pexp); if (psym->FieldCount() != 2) g_errorList.AddError(2160, pexp, "Invalid name table entry."); else if (!pexpstr) g_errorList.AddError(2161, pexp, "Value of name table entry must be a string"); else { std::string staNameID = psym->FieldAt(0); std::string staLangID = psym->FieldAt(1); int nNameID = atoi(staNameID.data()); if (nNameID == 0 && staNameID != "0") g_errorList.AddWarning(2534, pexp, "Invalid name ID: ", staNameID, "--should be an integer"); int nLangID = atoi(staLangID.data()); if (nLangID == 0 && staLangID != "0") g_errorList.AddWarning(2535, pexp, "Invalid language ID: ", staLangID, "--should be an integer"); GdlNameDefn * pndefn = NULL; NameDefnMap::iterator itmap = hmNameMap.find(nNameID); if (itmap == hmNameMap.end()) //if (!hmNameMap.Retrieve(nNameID, &pndefn)) { pndefn = new GdlNameDefn(); pndefn->SetLineAndFile(pasgnValue->LineAndFile()); std::pair hmpair; hmpair.first = nNameID; hmpair.second = pndefn; hmNameMap.insert(hmpair); //hmNameMap.Insert(nNameID, pndefn); } bool fFoundLang = false; for (auto iextname = 0U; iextname < pndefn->NameCount(); ++iextname) { if (pndefn->ExtName(iextname)->LanguageID() == nLangID) { fFoundLang = true; if (fOverride) pndefn->DeleteExtName(iextname); break; } } if (fFoundLang == false || fOverride) { pndefn->AddExtName((utf16)nLangID, pexp); // vpsymProcessed.Push(psym); } } } // Now delete all the assignments that have been successfully processed from the map, // since they are now "owned" by the name map. (Otherwise we get double destruction.) // for (std::vector::iterator it = vpsymProcessed.Begin(); // it != vpsymProcessed.End(); // it++) // { // m_valmapEntries.Delete(*it); // } } grcompiler-5.2.1/compiler/GrcMasterTable.h000066400000000000000000000126561411153030700205110ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcMasterTable.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Classes to implement master tables used by the post-parser. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef MASTERTBL_INCLUDED #define MASTERTBL_INCLUDED class GdlFeatureDefn; class GdlGlyphClassDefn; class GdlNameDefn; /*---------------------------------------------------------------------------------------------- Class: GdlAssignment Description: An expression, the statement number in which that expression was assigned, and the current values of relevant directives. This class, used by the master tables, is responsible for deleting the expression. Hungarian: asgn ----------------------------------------------------------------------------------------------*/ class GdlAssignment : public GrcAssignment { friend class GrcMasterValueList; friend class GrcMasterTable; public: // Constructors & destructor: GdlAssignment() : GrcAssignment() { } GdlAssignment(GdlExpression * pexp, int nPR, int munitPR, bool fOverride, GrpLineAndFile const& lnf) : GrcAssignment(pexp, nPR, munitPR, fOverride, lnf) { } virtual ~GdlAssignment() { if (m_pexp) delete m_pexp; } virtual void Set(GdlExpression * pexp, int nPR, int mPrUnits, bool fOverride, GrpLineAndFile const& lnf) { if (m_pexp) delete m_pexp; GrcAssignment::Set(pexp, nPR, mPrUnits, fOverride, lnf); } }; /*---------------------------------------------------------------------------------------------- Class: GrcMasterValueList Description: A list of values for a single entry in the master table; for instance, a list of glyph attributes for a class, or a list of feature information for a feature. The keys are Symbols of glyph attributes or feature fields; the values are assignment statements. Used only by the post-parser. Hungarian: mvl ----------------------------------------------------------------------------------------------*/ class GrcMasterValueList // hungarian: mvl { friend class GrcMasterTable; typedef std::pair ValuePair; typedef std::map ValueMap; // hungarian: valmap public: // Constructor GrcMasterValueList() { } // Destructor: ~GrcMasterValueList() { // Once the list has been processed, the assignment items might be deleted // as part of the class definition, or whatever, so don't do it here. for (ValueMap::iterator it = m_valmapEntries.begin(); it != m_valmapEntries.end(); ++it) { delete it->second; // GetValue(); } } void AddItem(Symbol psym, GdlExpression * pexpValue, int nPR, int munitPR, bool fOverride, GrpLineAndFile const& lnf, std::string staDescription); // Iterators: ValueMap::iterator EntriesBegin() { return m_valmapEntries.begin(); } ValueMap::iterator EntriesEnd() { return m_valmapEntries.end(); } // Post-parser: protected: void SetupFeatures(GdlFeatureDefn * pfeat, GrcSymbolTable * psymtbl); void SetupGlyphAttrs(GdlGlyphClassDefn * pglfc); public: void SetupNameDefns(NameDefnMap & hmNameMap); protected: // instance variables: // SymbolType m_symt // ????? ValueMap m_valmapEntries; }; /*---------------------------------------------------------------------------------------------- Class: GrcMasterTable Description: There will be two instances of this table: one to hold all the glyph attribute settings for all the classes, and one to hold all the feature definitions. For the glyph attribute table, the keys are class name Symbols; the values are GrMasterValueLists containing the attribute-setting statements for the class. For the feature table, the keys are feature name Symbols; the values are GrMasterValueLists containing the assignments for the feature. Hungarian: mtb ----------------------------------------------------------------------------------------------*/ class GrcMasterTable { friend class GrcMasterValueList; typedef std::pair ValueListPair; typedef std::map ValueListMap; // hungarian: vlistmap public: // Destructor: ~GrcMasterTable() { for (ValueListMap::iterator it = EntriesBegin(); it != EntriesEnd(); ++it) { delete it->second; //delete it.GetValue(); } } void AddItem(Symbol psym, GdlExpression * pexpValue, int nPR, int munitPR, bool fOverride, GrpLineAndFile const& lnf, std::string staDescription); GrcMasterValueList * ValueListFor(Symbol psym); GdlExpression * ItemValue(GrcStructName* psymClassOrFeat, GrcStructName* psymField); // Find the feature corresponding to the standard styles. If it is there, // store its settings in the master style list (clearing anything that does // not belong). bool RecordStdStyles(GrcStructName * pxnsFeat); // Iterators: ValueListMap::iterator EntriesBegin() { return m_vlistmapEntries.begin(); } ValueListMap::iterator EntriesEnd() { return m_vlistmapEntries.end(); } public: // Post-parser: void SetupFeatures(GrcSymbolTable * psymtbl); void SetupGlyphAttrs(); // Pre-compiler: protected: // instance variables: ValueListMap m_vlistmapEntries; }; #endif // MASTERTBL_INCLUDED grcompiler-5.2.1/compiler/GrcSymTable.cpp000066400000000000000000002262461411153030700203630ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcSymTable.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implementation of the parser/compiler symbol table. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Destructors ----------------------------------------------------------------------------------------------*/ GrcSymbolTable::~GrcSymbolTable() { m_psymParent = NULL; for (SymbolTableMap::iterator it = EntriesBegin(); it != EntriesEnd(); ++it) { delete it->second; // GetValue(); //delete it->GetValue(); } } GrcSymbolTableEntry::~GrcSymbolTableEntry() { delete m_psymtblSubTable; } /*---------------------------------------------------------------------------------------------- Add a symbol to the main symbol table in the normal way, assuming there is nothing special to do. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddSymbol(const GrcStructName & xns, SymbolType symt, GrpLineAndFile const& lnf) { Assert(m_cLevel == 0); return AddSymbolAux(xns, symt, ksymtInvalid, lnf); } /*---------------------------------------------------------------------------------------------- Add a symbol that is the name of a class to the main symbol table (if it is not already there). Also, ensure that it has an GdlGlyphClassDefn as its data. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddClassSymbol(const GrcStructName & xns, GrpLineAndFile const& lnf, GlyphClassType glfct) { Assert(m_cLevel == 0); Assert(xns.NumFields() == 1); Symbol psymAdded = AddSymbolAux(xns, ksymtClass, ksymtInvalid, lnf); if (!psymAdded->HasData()) { GdlGlyphClassDefn * pglfc; GdlGlyphIntersectionClassDefn * pglfci; GdlGlyphDifferenceClassDefn * pglfcd; switch (glfct) { case kglfctUnion: pglfc = new GdlGlyphClassDefn(); break; // These two options are not used; currently the only way to create an intersection // or difference is by converting an existing class as a result of the // 'classA &= classB' syntax. case kglfctIntersect: pglfci = new GdlGlyphIntersectionClassDefn(); pglfc = dynamic_cast(pglfci); break; case kglfctDifference: pglfcd = new GdlGlyphDifferenceClassDefn(); pglfc = dynamic_cast(pglfcd); break; default: break; } pglfc->SetLineAndFile(lnf); psymAdded->SetData(pglfc); } return psymAdded; } /*---------------------------------------------------------------------------------------------- Add a symbol that is the name of a feature to the main symbol table (if it is not already there). Also, ensure that it has an GdlFeatureDefn as its data. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddFeatureSymbol(const GrcStructName & xns, GrpLineAndFile const& lnf) { Assert(m_cLevel == 0); Assert(xns.NumFields() == 1); Symbol psymAdded = AddSymbolAux(xns, ksymtFeature, ksymtInvalid, lnf); if (!psymAdded->HasData()) { GdlFeatureDefn * pfeat = new GdlFeatureDefn(); pfeat->SetLineAndFile(lnf); psymAdded->SetData(pfeat); } psymAdded->SetExpType(kexptNumber); return psymAdded; } /*---------------------------------------------------------------------------------------------- Add a symbol representing an alternate feature name to the main symbol table. The symbol is of the form f_fname_fid (eg, f_smallcaps_smcp). ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddFeatureAltSymbol(GdlFeatureDefn * pfeat, const GrcStructName & xns, GrpLineAndFile const& lnf) { Assert(m_cLevel == 0); Assert(xns.NumFields() == 1); Symbol psymAdded = AddSymbolAux(xns, ksymtFeature, ksymtInvalid, lnf); Assert(!psymAdded->HasData()); psymAdded->SetData(pfeat); psymAdded->SetExpType(kexptNumber); return psymAdded; } /*---------------------------------------------------------------------------------------------- Add a symbol that is the name of a language to the main symbol table (if it is not already there). Also, ensure that it has an GdlLanguageDefn as its data. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddLanguageSymbol(const GrcStructName & xns, GrpLineAndFile const& lnf) { Assert(m_cLevel == 0); Assert(xns.NumFields() == 1); Symbol psymAdded = AddSymbolAux(xns, ksymtLanguage, ksymtInvalid, lnf); if (!psymAdded->HasData()) { GdlLanguageDefn * plang = new GdlLanguageDefn(); plang->SetLineAndFile(lnf); psymAdded->SetData(plang); } psymAdded->SetExpType(kexptNumber); return psymAdded; } /*---------------------------------------------------------------------------------------------- Add a symbol that is the name of a class's glyph attribute to the main symbol table (if it is not already there). Ensure that there is a generic version of the glyph attribute in the symbol table (minus the class name), and set a pointer to it. If it is one of the standard attributes, set its expression type. If is a component glyph attribute, create a corresponding ".ref" slot attribute. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddGlyphAttrSymbol(const GrcStructName & xns, GrpLineAndFile const& lnf, ExpressionType expt, bool fMetric) { Assert(m_cLevel == 0); SymbolType symt = (fMetric) ? ksymtGlyphMetric : ksymtGlyphAttr; SymbolType symtOther = (fMetric) ? ksymtInvalid : ksymtNonLeafGlyphAttr; Symbol psymAdded = AddSymbolAux(xns, symt, symtOther, lnf); psymAdded->AdjustExpTypeIfPossible(expt); // Find or add the generic version of the glyph attribute (without the class name). GrcStructName xnsGeneric; xns.CopyMinusFirstField(xnsGeneric); // take off the class name Symbol psymGeneric = FindSymbol(xnsGeneric); if (psymGeneric) { if (psymGeneric->m_symt == ksymtGlyphMetric && !fMetric) { std::string staMsg("Cannot set the value of a glyph metric: "); std::string staName = psymGeneric->FullName(); staMsg.append(staName); g_errorList.AddItem(true, 1184, NULL, &lnf, staMsg); // fatal error return NULL; } if (psymGeneric->m_symt == ksymtInvalid) { // previously undefined symbol, now we know it is a glyph attribute or metric psymGeneric->m_fGeneric = true; psymGeneric->m_symt = symt; } Assert(psymGeneric->m_fGeneric); if (!psymGeneric->FitsSymbolType(symt)) { // Symbol being used as a glyph attribute was previously used as something else. Assert(false); return psymAdded; } psymGeneric->AdjustExpTypeIfPossible(expt); psymAdded->SetExpType(psymGeneric->ExpType()); } else { Assert(!fMetric); // all metrics should be defined from the outset psymGeneric = AddSymbolAux(xnsGeneric, symt, symtOther, lnf); psymGeneric->m_fGeneric = true; psymGeneric->AdjustExpTypeIfPossible(expt); } psymAdded->SetGeneric(psymGeneric); // For component attributes, define the corresponding component.?.ref attribute, and // link up the generic version of the base ligature symbol. if (psymGeneric->IsComponentBoxField()) { GrcStructName xnsCompRef(xnsGeneric); xnsCompRef.DeleteField(xnsCompRef.NumFields() - 1); xnsCompRef.InsertField(xnsCompRef.NumFields(), "reference"); Symbol psymCompRef = AddSymbolAux(xnsCompRef, ksymtSlotAttr, ksymtSlotAttr, lnf); psymCompRef->m_expt = kexptSlotRef; Symbol psymBaseLig = psymAdded->BaseLigComponent(); Assert(psymBaseLig); Symbol psymGenericBaseLig = psymGeneric->BaseLigComponent(); psymGenericBaseLig->m_fGeneric = true; psymBaseLig->SetGeneric(psymGenericBaseLig); } return psymAdded; } /*---------------------------------------------------------------------------------------------- Add a symbol that is of the form .component..... to the main symbol table (if it is not already there). CURRENTLY NOT USED ----------------------------------------------------------------------------------------------*/ #if 0 Symbol GrcSymbolTable::AddComponentField(const GrcStructName & xns, GrpLineAndFile const& lnf) { Assert(m_cLevel == 0); Assert(xns.FieldEquals(1, "component")); SymbolType symt; if (xns.FieldEquals(3, "top") || xns.FieldEquals(3, "bottom") || xns.FieldEquals(3, "left") || xns.FieldEquals(3, "right")) symt = ksymtGlyphAttr; // valid component glyph attribute else if (xns.FieldEquals(3, "reference")) symt = ksymtSlotAttr; // valid component slot attribute else { // Invalid use of component attribute. Assert(false); return NULL; } Symbol psymAdded = AddGlyphAttrSymbol(xns, lnf, kexptMeas); Symbol psymGeneric = psymAdded->Generic(); Assert(psymGeneric->m_fGeneric); ExpressionType exptGeneric = psymGeneric->ExpType(); if (symt == ksymtGlyphAttr) { Assert(exptGeneric == kexptUnknown || exptGeneric == kexptMeas); psymGeneric->SetExpType(kexptMeas); psymAdded->SetExpType(kexptMeas); } else // symt == ksymtSlotAttr { Assert(exptGeneric == kexptUnknown || exptGeneric == kexptSlotRef); psymGeneric->SetExpType(kexptSlotRef); psymAdded->SetExpType(kexptSlotRef); } return psymAdded; } #endif // 0 /*---------------------------------------------------------------------------------------------- Add a new unique class-name symbol to the table. Return the new symbol. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddAnonymousClassSymbol(GrpLineAndFile const& lnf) { std::string sta = "*GC" + std::to_string(m_csymAnonClass++) + '*'; Assert(!FindField(sta)); return AddClassSymbol(sta, lnf); } /*---------------------------------------------------------------------------------------------- Add a symbol to the table if it is not already there. Return an error code if the symbol is already there but is of a different type. (Nodes along the way may be of different types, but the final node may not.) Caller should ensure that if the symbol is already present it has the expected type, or raise an error. Arguments: xns - structured name of symbol symtLeaf - symbol type to use for leaf node symtOther - symbol type to use for nodes along the way (generally ksymtInvalid or ksymtNonLeafGlyphAttr) ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::AddSymbolAux(const GrcStructName & xns, SymbolType symtLeaf, SymbolType symtOther, GrpLineAndFile const& lnf) { Symbol psym = NULL; GrcSymbolTable * psymtbl = this; for (auto i = 0U; i < xns.NumFields(); ++i) { std::string staField = xns.FieldAt(i); if (psymtbl == NULL) // never true first time through { psymtbl = new GrcSymbolTable(false); psymtbl->MakeSubTableOf(psym); } psym = psymtbl->FindField(staField); if (psym == NULL) { psym = new GrcSymbolTableEntry(staField, ((i == xns.NumFields() - 1) ? symtLeaf : symtOther), psymtbl); SymbolTablePair hmpair; hmpair.first = staField; hmpair.second = psym; psymtbl->m_hmstasymEntries.insert(hmpair); //psymtbl->m_hmstasymEntries.Insert(staField, psym); } psymtbl = psym->m_psymtblSubTable; } // TODO: if the symbol is of the form ., define it // as a glyph attribute. if (psym->m_lnf.NotSet()) psym->m_lnf = lnf; if (psym->m_symt == ksymtInvalid) psym->SetSymbolType(symtLeaf); Assert(psym->m_symt == symtLeaf || psym->m_symt2 == symtLeaf); return psym; } /*---------------------------------------------------------------------------------------------- Answer true if the symbol fits the given type. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::FitsSymbolType(SymbolType symt) { // Exact match if (m_symt == symt || m_symt2 == symt) return true; // Handle subtypes switch (symt) { case ksymtTable: if (FitsSymbolType(ksymtTableRule)) return true; break; case ksymtGlyphData: if (FitsSymbolType(ksymtGlyphAttr)) return true; if (FitsSymbolType(ksymtGlyphMetric)) return true; break; case ksymtGlyphAttr: if (FitsSymbolType(ksymtGlyphAttrComp)) return true; break; case ksymtInvalid: if (FitsSymbolType(ksymtNonLeafGlyphAttr)) return true; break; case ksymtSlotAttr: if (FitsSymbolType(ksymtSlotAttrPt)) return true; if (FitsSymbolType(ksymtSlotAttrPtOff)) return true; if (FitsSymbolType(ksymtSlotAttrCompRef)) return true; break; case ksymtSpecial: if (FitsSymbolType(ksymtSpecialAt)) return true; if (FitsSymbolType(ksymtSpecialCaret)) return true; if (FitsSymbolType(ksymtSpecialLb)) return true; if (FitsSymbolType(ksymtSpecialUnderscore)) return true; break; case ksymtOperator: if (FitsSymbolType(ksymtOpAssign)) return true; break; default: ; // no subtypes } return false; } /*---------------------------------------------------------------------------------------------- Return a pointer to the symbol indicated by the field, or NULL if it is not present in the table. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::FindField(std::string staField) { SymbolTableMap::iterator hmit = m_hmstasymEntries.find(staField); if (hmit == m_hmstasymEntries.end()) return NULL; else return hmit->second; //Symbol psymRet; //if (m_hmstasymEntries.Retrieve(staField, &psymRet)) // return psymRet; //else // return NULL; } /*---------------------------------------------------------------------------------------------- Return a pointer to the symbol indicated by the structured name, or NULL if the symbol is not present. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::FindSymbol(const GrcStructName & xns) { GrcSymbolTable * psymtbl = this; Symbol psym = NULL; for (auto i = 0U; i < xns.NumFields(); ++i) { psym = psymtbl->FindField(xns.FieldAt(i)); if (psym == NULL) return NULL; psymtbl = psym->m_psymtblSubTable; if (i < xns.NumFields() - 1 && psymtbl == NULL) return NULL; } return psym; } // one-field version: Symbol GrcSymbolTable::FindSymbol(const std::string staName) { return FindField(staName); } /*---------------------------------------------------------------------------------------------- Return the symbol corresponding to the slot attribute name. Return NULL if it is not a legal slot attribute. If it is of the form component.???.reference, add it to the symbol table. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::FindSlotAttr(const GrcStructName & xns, GrpLineAndFile const& lnf) { Symbol psym = FindSymbol(xns); if (!psym && xns.NumFields() == 3 && xns.FieldEquals(0, "component") && xns.FieldEquals(2, "reference")) { psym = AddSymbolAux(xns, ksymtSlotAttrCompRef, ksymtNonLeafGlyphAttr, lnf); psym->SetExpType(kexptSlotRef); } if (!psym || !psym->FitsSymbolType(ksymtSlotAttr)) return NULL; else return psym; } /*---------------------------------------------------------------------------------------------- Return the symbol corresponding to the slot attribute name. Return NULL if it is not a legal slot attribute. If it is of the form component.???.reference, add it to the symbol table. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::FindFeature(const GrcStructName & xns, GrpLineAndFile const& lnf) { Symbol psym = FindSymbol(xns); if (!psym || !psym->FitsSymbolType(ksymtFeature)) return NULL; else return psym; } /*---------------------------------------------------------------------------------------------- Replace the data class associated with the symbol with the given class. The existing class should be uninitialized. ----------------------------------------------------------------------------------------------*/ void GrcSymbolTableEntry::ReplaceClassData(GdlGlyphClassDefn * pglfc) { if (m_pData) { // Empty class is being deleted. GdlGlyphClassDefn * pglfcDelete = dynamic_cast(m_pData); Assert(pglfcDelete); Assert(pglfcDelete->Name() == ""); pglfcDelete->ComputeMembers(); Assert(pglfcDelete->GlyphIDCount() == 0); delete m_pData; } SetData(pglfc); } /*---------------------------------------------------------------------------------------------- Answer true if the field at the given index is the given string. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::FieldIs(int i, std::string staField) { Assert(i >= 0); if (i > Level()) return false; Symbol psymCurr = this; while (psymCurr->Level() > i) psymCurr = psymCurr->m_psymtbl->m_psymParent; return (psymCurr->m_staFieldName == staField); } /*---------------------------------------------------------------------------------------------- Answer the field at the given index, or an empty string if there are not that many fields. ----------------------------------------------------------------------------------------------*/ std::string GrcSymbolTableEntry::FieldAt(int i) { Assert(i >= 0); if (i > Level()) return ""; Symbol psymCurr = this; while (psymCurr->Level() > i) psymCurr = psymCurr->m_psymtbl->m_psymParent; return psymCurr->m_staFieldName; } /*---------------------------------------------------------------------------------------------- Answer the index of the (first) field containing the given string, or -1 if it is not present. ----------------------------------------------------------------------------------------------*/ int GrcSymbolTableEntry::FieldIndex(std::string sta) { int cRet = -1; Symbol psymCurr = this; while (psymCurr) { if (psymCurr->m_staFieldName == sta) cRet = psymCurr->Level(); psymCurr = psymCurr->m_psymtbl->m_psymParent; } return cRet; } /*---------------------------------------------------------------------------------------------- Answer the number of fields in the symbol. ----------------------------------------------------------------------------------------------*/ int GrcSymbolTableEntry::FieldCount() { return Level() + 1; } /*---------------------------------------------------------------------------------------------- Answer true if the symbol is the given operator. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::MatchesOp(std::string sta) { if (!FitsSymbolType(ksymtOperator)) return false; return (m_staFieldName == sta); } /*---------------------------------------------------------------------------------------------- Answer true if the symbol is a comparative operator. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsComparativeOp() { if (!FitsSymbolType(ksymtOperator)) return false; return (m_prec == kprecComparative); } /*---------------------------------------------------------------------------------------------- Answer true if the symbol is a bogus slot attribute that is only present in symbol table to assist in error checking: advance/shift/kern.gpoint/gpath/xoffset/yoffset. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsBogusSlotAttr() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); if (FieldCount() != 2) return false; if (m_staFieldName == "gpoint" || m_staFieldName == "gpath" || m_staFieldName == "xoffset" || m_staFieldName == "yoffset") { std::string sta = FieldAt(0); if (sta == "shift" || sta == "advance" || sta == "kern") return true; } return false; } /*---------------------------------------------------------------------------------------------- Answer true if the symbol is a read-only slot attribute, ie, position, position.x, or position.y. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsReadOnlySlotAttr() { Assert(FitsSymbolType(ksymtSlotAttr)); if (FieldIs(0, "position")) return true; else if (FieldIs(0, "collision") && FieldIs(1, "fix")) return true; else return false; } /*---------------------------------------------------------------------------------------------- Answer true if the symbol is a write-only slot attribute, ie, kern, kern.x, or kern.y. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsWriteOnlySlotAttr() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); return (FieldIs(0, "kern")); } /*---------------------------------------------------------------------------------------------- Answer true if the symbol is an indexed slot attribute, ie, component.XXX.reference or a user-definable slot attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsIndexedSlotAttr() { Assert(FitsSymbolType(ksymtSlotAttr)); if (FitsSymbolType(ksymtFeature)) return false; else if (FieldIs(0, "component") && LastFieldIs("reference")) return true; else if (IsUserDefinableSlotAttr()) return true; else return false; } /*---------------------------------------------------------------------------------------------- Answer true if the symbol is an indexed glyph attribute, ie, component.XXX.... ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsIndexedGlyphAttr() { Assert(FitsSymbolType(ksymtGlyphAttr)); if (IsGeneric()) return (FieldIs(0, "component")); else return Generic()->IsIndexedGlyphAttr(); } /*---------------------------------------------------------------------------------------------- Return the full dotted name of the symbol. ----------------------------------------------------------------------------------------------*/ std::string GrcSymbolTableEntry::FullName() { std::string staRet = m_staFieldName; GrcSymbolTableEntry * psymCurr = m_psymtbl->m_psymParent; while (psymCurr) { std::string staTmp = psymCurr->m_staFieldName; staTmp += "."; staTmp += staRet; staRet = staTmp; psymCurr = psymCurr->m_psymtbl->m_psymParent; } return staRet; } /*---------------------------------------------------------------------------------------------- Return the full dotted name of the symbol, using abbreviations. ----------------------------------------------------------------------------------------------*/ std::string GrcSymbolTableEntry::FullAbbrev() { std::string staRet = Abbreviation(m_staFieldName); GrcSymbolTableEntry * psymCurr = m_psymtbl->m_psymParent; while (psymCurr) { std::string staTmp = Abbreviation(psymCurr->m_staFieldName); staTmp += "."; staTmp += staRet; staRet = staTmp; psymCurr = psymCurr->m_psymtbl->m_psymParent; } return staRet; } /*---------------------------------------------------------------------------------------------- Return the full dotted name of the symbol, using abbreviations. Omit the given string, which should be the top level item. For instance, if "attach" is passed, return "with.x" instead of "attach.with.x". ----------------------------------------------------------------------------------------------*/ std::string GrcSymbolTableEntry::FullAbbrevOmit(std::string staOmit) { std::string staRet = Abbreviation(m_staFieldName); GrcSymbolTableEntry * psymCurr = m_psymtbl->m_psymParent; while (psymCurr) { std::string staTmp = Abbreviation(psymCurr->m_staFieldName); if (staTmp == staOmit) break; staTmp += "."; staTmp += staRet; staRet = staTmp; psymCurr = psymCurr->m_psymtbl->m_psymParent; } return staRet; } /*---------------------------------------------------------------------------------------------- Return the standard abbreviation for the keyword. ----------------------------------------------------------------------------------------------*/ std::string GrcSymbolTableEntry::Abbreviation(std::string staFieldName) { if (staFieldName == "reference") return "ref"; else if (staFieldName == "boundingbox") return "bb"; else if (staFieldName == "advancewidth") return "aw"; else if (staFieldName == "advanceheight") return "ah"; else if (staFieldName == "leftsidebearing") return "lsb"; else if (staFieldName == "rightsidebearing") return "rsb"; else if (staFieldName == "directionality") return "dir"; else if (staFieldName == "component") return "comp"; else if (staFieldName == "breakweight") return "break"; else return staFieldName; } /*---------------------------------------------------------------------------------------------- Fill in the structured name with the name of the symbol. ----------------------------------------------------------------------------------------------*/ void GrcSymbolTableEntry::GetStructuredName(GrcStructName * pxns) { GrcSymbolTableEntry * psymCurr = this; while (psymCurr) { pxns->InsertField(0, psymCurr->m_staFieldName); psymCurr = psymCurr->ParentSymbol(); } } /*---------------------------------------------------------------------------------------------- This symbol is a non-generic glyph attribute or feature setting. Return the symbol for the defining class or feature. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTableEntry::BaseDefnForNonGeneric() { Assert(FitsSymbolType(ksymtGlyphAttr) || FitsSymbolType(ksymtFeatSetting) || FitsSymbolType(ksymtInvalid)); Symbol psymParent = ParentSymbol(); Assert(psymParent); if (psymParent->FitsSymbolType(ksymtClass)) return psymParent; else if (psymParent->FitsSymbolType(ksymtFeature)) return psymParent; else return psymParent->BaseDefnForNonGeneric(); } /*---------------------------------------------------------------------------------------------- Return the symbol for the defining class, or NULL if this symbol is something other than a non-generic glyph attribute. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTableEntry::BaseClassDefn() { if (!FitsSymbolType(ksymtGlyphAttr)) return NULL; Symbol psymParent = ParentSymbol(); if (!psymParent) return NULL; if (psymParent->FitsSymbolType(ksymtClass)) return psymParent; else return psymParent->BaseClassDefn(); } /*---------------------------------------------------------------------------------------------- This symbol is a feature setting value, eg someFeat.settings.opt1.id. Return the symbol for the feature setting someFeat.settings.opt1. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTableEntry::BaseFeatSetting() { Assert(FitsSymbolType(ksymtFeatSetting)); Symbol psymParent = ParentSymbol(); Assert(psymParent); if (psymParent->m_staFieldName == "setting") return this; else return psymParent->BaseFeatSetting(); } /*---------------------------------------------------------------------------------------------- This symbol is something like clsABC.component.A.top or component.A.ref. Return the symbol corresponding to the component itself: clsABC.component.A. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTableEntry::BaseLigComponent() { Assert(FitsSymbolType(ksymtGlyphAttr) || FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtNonLeafGlyphAttr)); Symbol psymParent = ParentSymbol(); Assert(psymParent); if (psymParent->m_staFieldName == "component") return this; else return psymParent->BaseLigComponent(); } /*---------------------------------------------------------------------------------------------- This symbol is something like clsABC.somePoint.x. Return the symbol corresponding to the point itself: clsABC.somePoint. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTableEntry::BasePoint() { Assert(FitsSymbolType(ksymtGlyphAttr)); Assert(m_staFieldName == "x" || m_staFieldName == "y" || m_staFieldName == "gpoint" || m_staFieldName == "gpath" || m_staFieldName == "xoffset" || m_staFieldName == "yoffset"); return ParentSymbol(); } /*---------------------------------------------------------------------------------------------- This symbol is something like clsABC.somePoint.x. Return the symbol corresponding to a sister field, ie, clsABC.somePoint.y. If such a symbol has not been defined, return NULL. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTableEntry::PointSisterField(std::string staField) { Assert(m_staFieldName == "x" || m_staFieldName == "y" || m_staFieldName == "gpoint" || m_staFieldName == "gpath" || m_staFieldName == "xoffset" || m_staFieldName == "yoffset"); Symbol psymBase = BasePoint(); Assert(psymBase); Symbol psymRet = psymBase->m_psymtblSubTable->FindField(staField); return psymRet; } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form ...component.???.reference. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsComponentRef() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); Symbol psymParent = ParentSymbol(); return (FitsSymbolType(ksymtSlotAttr) && m_staFieldName == "reference" && psymParent && psymParent->ParentSymbol() && psymParent->ParentSymbol()->m_staFieldName == "component"); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form ...component.???.top/bottom/left/right ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsComponentBoxField() { Symbol psymParent = ParentSymbol(); return (psymParent && psymParent->ParentSymbol() && psymParent->ParentSymbol()->m_staFieldName == "component" && (m_staFieldName == "top" || m_staFieldName == "bottom" || m_staFieldName == "left" || m_staFieldName == "right")); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form ...component.???. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsComponentBase() { return (ParentSymbol() && ParentSymbol()->m_staFieldName == "component"); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form ...???.x or ???.y and there is a sister field with the appropriate name. Current only used for the debugger-xml output. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsPointField() { if (m_staFieldName == "x") return PointSisterField("y") != NULL; else if (m_staFieldName == "y") return PointSisterField("x") != NULL; else if (m_staFieldName == "xoffset" || m_staFieldName == "yoffset") return (PointSisterField("x") != NULL && PointSisterField("y") != NULL) || (PointSisterField("gpoint") != NULL); else if (m_staFieldName == "gpoint") return true; else return false; } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form "attach.to" ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsAttachTo() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); Symbol psymParent = ParentSymbol(); return (FitsSymbolType(ksymtSlotAttr) && psymParent && psymParent->m_staFieldName == "attach" && m_staFieldName == "to"); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form "attach.at.???" ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsAttachAtField() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); Symbol psymParent = ParentSymbol(); return (FitsSymbolType(ksymtSlotAttr) && psymParent && psymParent->ParentSymbol() && psymParent->ParentSymbol()->m_staFieldName == "attach" && psymParent->m_staFieldName == "at"); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form "attach.with.???" ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsAttachWithField() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); Symbol psymParent = ParentSymbol(); return (FitsSymbolType(ksymtSlotAttr) && psymParent && psymParent->ParentSymbol() && psymParent->ParentSymbol()->m_staFieldName == "attach" && psymParent->m_staFieldName == "with"); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form "attach.at/with.x" ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsAttachXField() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); Symbol psymParent = ParentSymbol(); return (FitsSymbolType(ksymtSlotAttr) && (psymParent && psymParent->ParentSymbol()) && (psymParent->ParentSymbol()->m_staFieldName == "attach") && ((psymParent->m_staFieldName == "with") || (psymParent->m_staFieldName == "at")) && m_staFieldName == "x"); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form "attach.at/with.xoffset/yoffset" ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsAttachOffsetField() { Assert(FitsSymbolType(ksymtSlotAttr) || FitsSymbolType(ksymtFeature)); // Symbol psymParent = ParentSymbol(); return ((IsAttachWithField() || IsAttachAtField()) && (m_staFieldName == "xoffset" || m_staFieldName == "yoffset")); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is an attachment attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsAttachment() { if (m_staFieldName == "attach") return true; Symbol psymParent = ParentSymbol(); if (!psymParent) return false; return (psymParent->IsAttachment()); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is an movement attribute: shift, advance, kern. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsMovement() { if (m_staFieldName == "shift") return true; if (m_staFieldName == "kern") return true; if (m_staFieldName == "advance") return true; Symbol psymParent = ParentSymbol(); if (!psymParent) return false; return (psymParent->IsMovement()); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is a justification-related attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::DoesJustification() { if (m_staFieldName == "justify") return true; Symbol psymParent = ParentSymbol(); if (!psymParent) return false; return (psymParent->DoesJustification()); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is a justification-related attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsMeasureAttr() { if (m_staFieldName == "measure") return true; Symbol psymParent = ParentSymbol(); if (!psymParent) return false; return (psymParent->IsMeasureAttr()); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is a mirroring-related attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsMirrorAttr() { if (m_staFieldName == "mirror") return true; Symbol psymParent = ParentSymbol(); if (!psymParent) return false; return (psymParent->IsMirrorAttr()); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is a collision-related attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsCollisionAttr() { if (m_staFieldName == "collision") return true; Symbol psymParent = ParentSymbol(); if (!psymParent) return false; return (psymParent->IsCollisionAttr()); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is a sequence-related attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsSequenceAttr() { if (m_staFieldName == "sequence") return true; Symbol psymParent = ParentSymbol(); if (!psymParent) return false; return (psymParent->IsSequenceAttr()); } /*---------------------------------------------------------------------------------------------- Return true if the symbol is a user-definable slot attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsUserDefinableSlotAttr() { if (m_staFieldName[0] == 'u' && m_staFieldName[1] == 's' && m_staFieldName[2] == 'e' && m_staFieldName[3] == 'r') { return true; } else return false; } /*---------------------------------------------------------------------------------------------- Return true if the symbol is a pseudo-slot attribute, used only by the compiler for optimization purposes. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsPseudoSlotAttr() { if (m_staFieldName == "passKeySlot") return true; else return false; } /*---------------------------------------------------------------------------------------------- Return true if the symbol is the pseudo passKeySlot attribute. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsPassKeySlot() { if (m_staFieldName == "passKeySlot") return true; else return false; } /*---------------------------------------------------------------------------------------------- Return true if the symbol is of the form "attach.at/with.gpoint" ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::IsIgnorableOffsetAttr() { Assert(FitsSymbolType(ksymtGlyphAttr)); //Symbol psymParent = ParentSymbol(); return (!IsSequenceAttr() && (m_staFieldName == "gpoint" || m_staFieldName == "xoffset" || m_staFieldName == "yoffset")); } /*---------------------------------------------------------------------------------------------- If the symbol is a feature ID represents one of the alternate IDs for a feature, return the index of that alternate in the feature's list. Such a name looks like featureName__idxx. Otherwise return -1; Must match CreateFeatAltIDSymbol. ----------------------------------------------------------------------------------------------*/ int GrcSymbolTableEntry::FeatAltIDIndex() { Assert(FitsSymbolType(ksymtFeature)); GdlFeatureDefn * pfeat = this->FeatureDefnData(); if (!pfeat) return -1; if (m_staFieldName == pfeat->Name()) return 0; if (m_staFieldName.substr(m_staFieldName.length() - 6, 2) != "__") return -1; //char ch = m_staFieldName[featID.length() - 5]; //if (ch != '_') // return -1; ////ch = m_staFieldName[featID.length() - 6]; //if (m_staFieldName[featID.length() - 6] != '_') // return -1; std::string staAltID = m_staFieldName.substr(m_staFieldName.length() - 4, 4); // last four chars GdlStringExpression expString(staAltID.c_str(), 0); unsigned int nID; expString.ResolveToFeatureID(&nID); std::vector vnIDs; pfeat->AltIDs(vnIDs); for (auto i = 0U; i < pfeat->NumAltIDs(); ++i) { if (vnIDs[i] == nID) return i; } return -1; } /*---------------------------------------------------------------------------------------------- Create a feature symbol that maps to an alternate IDs. It looks like featureName__idxx. Must match FeatAltIDIndex. ----------------------------------------------------------------------------------------------*/ void GrcSymbolTableEntry::CreateFeatAltIDSymbol(GrcSymbolTable * psymtbl, GdlFeatureDefn * pfeat, GdlStringExpression * pexpString) { std::string staValue = pexpString->StringValue(); GrpLineAndFile lnf = pexpString->LineAndFile(); std::string staNewSymbol; staNewSymbol.append(pfeat->Name()); staNewSymbol.append("__"); staNewSymbol.append(staValue); psymtbl->AddFeatureAltSymbol(pfeat, staNewSymbol, lnf); } /*---------------------------------------------------------------------------------------------- Return the number corresponding to the index of the user-definable slot attribute, or -1 if it is something invalid (does not parse to a number). ----------------------------------------------------------------------------------------------*/ int GrcSymbolTableEntry::UserDefinableSlotAttrIndex() { Assert(IsUserDefinableSlotAttr()); int nRet = 0; for (size_t ich = 4; ich < m_staFieldName.length(); ich++) { char ch = m_staFieldName[ich]; if (ch < '0') return -1; if (ch > '9') return -1; nRet = (nRet * 10) + (ch - '0'); } return nRet - 1; // 0-based } /*---------------------------------------------------------------------------------------------- For slot attributes that use points (eg, attach.at, shift), or for glyph attributes that define a point (eg, udap) return the sub-symbol that appends the given point field, or NULL if such a field does not exist. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTableEntry::SubField(std::string sta) { Assert(FitsSymbolType(ksymtSlotAttrPt) || FitsSymbolType(ksymtSlotAttrPtOff) || FitsSymbolType(ksymtGlyphAttr) || FitsSymbolType(ksymtNonLeafGlyphAttr)) ; Assert(m_psymtblSubTable); return m_psymtblSubTable->FindField(sta); } /*---------------------------------------------------------------------------------------------- Return the class that is stored as data, or NULL. ----------------------------------------------------------------------------------------------*/ GdlGlyphClassDefn * GrcSymbolTableEntry::GlyphClassDefnData() { if (!HasData()) return NULL; GdlGlyphClassDefn * pglfc = dynamic_cast(Data()); return pglfc; } /*---------------------------------------------------------------------------------------------- Return the feature that is stored as data, or NULL. ----------------------------------------------------------------------------------------------*/ GdlFeatureDefn * GrcSymbolTableEntry::FeatureDefnData() { if (!HasData()) return NULL; GdlFeatureDefn * pfeat = dynamic_cast(Data()); return pfeat; } /*---------------------------------------------------------------------------------------------- Return the language-map that is stored as data, or NULL. ----------------------------------------------------------------------------------------------*/ GdlLanguageDefn * GrcSymbolTableEntry::LanguageDefnData() { if (!HasData()) return NULL; GdlLanguageDefn * plang = dynamic_cast(Data()); return plang; } /*---------------------------------------------------------------------------------------------- Return the level of the justification symbol. Return -2 if this is not such a symbol; -1 if this has no level associated (eg, justify.stretch). ----------------------------------------------------------------------------------------------*/ int GrcSymbolTableEntry::JustificationLevel() { if (!DoesJustification()) return -2; std::string sta; int nLevel = 0; do { sta = FieldAt(nLevel); nLevel++; } while (sta != "justify"); sta = FieldAt(nLevel); if (sta == "0") return 0; else if (sta == "1") return 1; else if (sta == "2") return 2; else if (sta == "3") return 3; else if (sta == "stretch" || sta == "stretchHW" || sta == "shrink" || sta == "step" || sta == "weight" || sta == "width") { return -1; // no level specified } else return 4; // some invalid level } /*---------------------------------------------------------------------------------------------- Adjust the expression type to be something more specific, if possible. If the new expression type does not fit within the constraints of the old, return false. ----------------------------------------------------------------------------------------------*/ bool GrcSymbolTableEntry::AdjustExpTypeIfPossible(ExpressionType expt) { if (m_expt == kexptUnknown) { m_expt = expt; return true; } if (m_expt == expt) { return true; } if (m_expt == kexptZero && (expt == kexptNumber || expt == kexptMeas || expt == kexptBoolean)) { m_expt = expt; return true; } if (m_expt == kexptOne && (expt == kexptNumber || expt == kexptBoolean)) { m_expt = expt; return true; } return false; } /*---------------------------------------------------------------------------------------------- For slot attributes, return the corresponding engine code operator. ----------------------------------------------------------------------------------------------*/ int GrcSymbolTableEntry::SlotAttrEngineCodeOp() { Assert(FitsSymbolType(ksymtSlotAttr)) ; std::string staField0 = FieldAt(0); std::string staField1 = FieldAt(1); std::string staField2 = FieldAt(2); std::string staField3 = FieldAt(3); if (staField0 == "advance") { if (staField1 == "x") return kslatAdvX; else if (staField1 == "y") return kslatAdvY; else { Assert(false); } } else if (staField0 == "attach") { if (staField1 == "to") return kslatAttTo; else if (staField1 == "at") { if (staField2 == "x") return kslatAttAtX; else if (staField2 == "y") return kslatAttAtY; else if (staField2 == "gpoint") return kslatAttAtGpt; else if (staField2 == "xoffset") return kslatAttAtXoff; else if (staField2 == "yoffset") return kslatAttAtYoff; else { Assert(false); } } else if (staField1 == "with") { if (staField2 == "x") return kslatAttWithX; else if (staField2 == "y") return kslatAttWithY; else if (staField2 == "gpoint") return kslatAttWithGpt; else if (staField2 == "xoffset") return kslatAttWithXoff; else if (staField2 == "yoffset") return kslatAttWithYoff; else { Assert(false); } } else if (staField1 == "level") return kslatAttLevel; else { Assert(false); } } else if (staField0 == "breakweight") return kslatBreak; else if (staField0 == "component") { Assert(staField2 == "reference"); return kslatCompRef; } else if (staField0 == "directionality") return kslatDir; else if (staField0 == "insert") return kslatInsert; else if (staField0 == "position") { if (staField1 == "x") return kslatPosX; else if (staField1 == "y") return kslatPosY; else { Assert(false); } } else if (staField0 == "shift") { if (staField1 == "x") return kslatShiftX; else if (staField1 == "y") return kslatShiftY; else { Assert(false); } } else if (staField0 == "measure") { if (staField1 == "startofline") return kslatMeasureSol; else if (staField1 == "endofline") return kslatMeasureEol; else { Assert(false); } } else if (staField0 == "justify") // TODO: handle all the levels { if (staField1 == "stretch") return kslatJ0Stretch; else if (staField1 == "shrink") return kslatJ0Shrink; else if (staField1 == "step") return kslatJ0Step; else if (staField1 == "weight") return kslatJ0Weight; else if (staField1 == "width") return kslatJ0Width; else if (staField1 == "0" || staField1 == "1" || staField1 == "2" || staField1 == "3") { int slatStretch = kslatJ0Stretch; if (staField1 == "0") slatStretch = kslatJ0Stretch; else if (staField1 == "1") slatStretch = kslatJ1Stretch; else if (staField1 == "2") slatStretch = kslatJ2Stretch; else if (staField1 == "3") slatStretch = kslatJ3Stretch; else Assert(false); if (staField2 == "stretch") return slatStretch; else if (staField2 == "shrink") return slatStretch + (kslatJ0Shrink - kslatJ0Stretch); else if (staField2 == "step") return slatStretch + (kslatJ0Step - kslatJ0Stretch); else if (staField2 == "weight") return slatStretch + (kslatJ0Weight - kslatJ0Stretch); else if (staField2 == "width") return slatStretch + (kslatJ0Width - kslatJ0Stretch); else { Assert(false); } } else { Assert(false); } } else if (staField0 == "segsplit") return kslatSegSplit; else if (IsUserDefinableSlotAttr()) { return kslatUserDefn; } else if (staField0[0] == 'u' && staField0[1] == 's' && staField0[2] == 'e' && staField0[3] == 'r') { Assert(false); return kslatUserDefn; } else if (staField0 == "collision") { if (staField1 == "flags") return kslatColFlags; else if (staField1 == "status") return kslatColFlags; // engine returns both of these ORed together else if (staField1 == "margin") return kslatColMargin; else if (staField1 == "marginweight") return kslatColMarginWt; //else if (staField1 == "order") //{ // if (staField2 == "class") // return kslatColOrderClass; // else if (staField2 == "enforce") // return kslatColOrderEnforce; // else // { // Assert(false); // } //} else if (staField1 == "min") { if (staField2 == "x") return kslatColMinX; else if (staField2 == "y") return kslatColMinY; else { Assert(false); } } else if (staField1 == "max") { if (staField2 == "x") return kslatColMaxX; else if (staField2 == "y") return kslatColMaxY; else { Assert(false); } } else if (staField1 == "exclude") { if (staField2 == "glyph") return kslatColExclGlyph; else if (staField2 == "offset") { if (staField3 == "x") return kslatColExclOffX; else if (staField3 == "y") return kslatColExclOffY; else { Assert(false); } } else { Assert(false); } } else if (staField1 == "fix") { if (staField2 == "x") return kslatColFixX; else if (staField2 == "y") return kslatColFixY; else { Assert(false); } } else { Assert(false); } } else if (staField0 == "sequence") { if (staField1 == "class") return kslatSeqClass; else if (staField1 == "proxClass") return kslatSeqProxClass; else if (staField1 == "order") return kslatSeqOrder; else if (staField1 == "above") { if (staField2 == "xoffset") return kslatSeqAboveXoff; else if (staField2 == "weight") return kslatSeqAboveWt; else { Assert(false); } } else if (staField1 == "below") { if (staField2 == "xlimit") return kslatSeqBelowXlim; else if (staField2 == "weight") return kslatSeqBelowWt; else { Assert(false); } } else if (staField1 == "valign") { if (staField2 == "height") return kslatSeqValignHt; else if (staField2 == "weight") return kslatSeqValignWt; else { Assert(false); } } else { Assert(false); } } else if (IsPseudoSlotAttr()) { return kslatBogus; } else { Assert(false); } return -1; } /*---------------------------------------------------------------------------------------------- For glyph metrics, return the corresponding engine code operator. ----------------------------------------------------------------------------------------------*/ int GrcSymbolTableEntry::GlyphMetricEngineCodeOp() { if (!m_fGeneric && m_psymGeneric) return m_psymGeneric->GlyphMetricEngineCodeOp(); Assert(FitsSymbolType(ksymtGlyphMetric)) ; std::string staField0 = FieldAt(0); std::string staField1 = FieldAt(1); std::string staField2 = FieldAt(2); if (staField0 == "leftsidebearing") { return kgmetLsb; } else if (staField0 == "rightsidebearing") { return kgmetRsb; } else if (staField0 == "boundingbox") { if (staField1 == "top") return kgmetBbTop; else if (staField1 == "bottom") return kgmetBbBottom; else if (staField1 == "left") return kgmetBbLeft; else if (staField1 == "right") return kgmetBbRight; else if (staField1 == "width") return kgmetBbWidth; else if (staField1 == "height") return kgmetBbHeight; else { Assert(false); } } else if (staField0 == "advancewidth") { return kgmetAdvWidth; } else if (staField0 == "advanceheight") { return kgmetAdvHeight; } // else if (staField0 == "advance") // { // if (staField1 == "width") // return kgmetAdvWidth; // else if (staField1 == "height") // return kgmetAdvHeight; // else // Assert(false); // } else if (staField0 == "ascent") { return kgmetAscent; } else if (staField0 == "descent") { return kgmetDescent; } else { Assert(false); } return -1; } /*---------------------------------------------------------------------------------------------- Pre-define a system-defined symbol. ----------------------------------------------------------------------------------------------*/ Symbol GrcSymbolTable::PreDefineSymbol(const GrcStructName& xns, SymbolType symt, ExpressionType expt, OpPrec prec) { Symbol psym = AddSymbolAux(xns, symt, ksymtInvalid, GrpLineAndFile()); psym->m_expt = expt; psym->m_fUserDefined = false; psym->m_prec = prec; return psym; } /*---------------------------------------------------------------------------------------------- Symbol table initialization ----------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitWithPreDefined() { InitGlobals(); InitDirectives(); InitFeatureSettings(); InitGlyphMetrics(); InitOperators(); InitSlotAttrs(); InitGlyphAttrs(); InitSpecial(); InitTableTypes(); InitUnits(); InitProcStates(); PreDefineSymbol(GrcStructName(GdlGlyphClassDefn::Undefined()), ksymtClass); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitGlobals() { SymbolType kst = ksymtGlobal; PreDefineSymbol(GrcStructName("AutoPseudo"), kst, kexptBoolean); PreDefineSymbol(GrcStructName("Bidi"), kst, kexptBoolean); PreDefineSymbol(GrcStructName("ExtraAscent"), kst, kexptMeas); PreDefineSymbol(GrcStructName("ExtraDescent"), kst, kexptMeas); PreDefineSymbol(GrcStructName("ScriptDirection"), kst, kexptNumber); PreDefineSymbol(GrcStructName("ScriptDirections"), kst, kexptNumber); PreDefineSymbol(GrcStructName("ScriptTags"), kst, kexptString); PreDefineSymbol(GrcStructName("ScriptTag"), kst, kexptString); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitDirectives() { SymbolType kst = ksymtDirective; PreDefineSymbol(GrcStructName("AttributeOverride"), kst, kexptBoolean); PreDefineSymbol(GrcStructName("CodePage"), kst, kexptNumber); PreDefineSymbol(GrcStructName("MaxBackup"), kst, kexptNumber); PreDefineSymbol(GrcStructName("MaxRuleLoop"), kst, kexptNumber); PreDefineSymbol(GrcStructName("MUnits"), kst, kexptMeas); PreDefineSymbol(GrcStructName("PointRadius"), kst, kexptMeas); PreDefineSymbol(GrcStructName("CollisionFix"), kst, kexptBoolean); PreDefineSymbol(GrcStructName("AutoKern"), kst, kexptNumber); PreDefineSymbol(GrcStructName("CollisionThreshold"), kst, kexptNumber); PreDefineSymbol(GrcStructName("Direction"), kst, kexptNumber); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitFeatureSettings() { SymbolType kst = ksymtFeatSetting; PreDefineSymbol(GrcStructName("id"), kst, kexptNumber); PreDefineSymbol(GrcStructName("default"), kst, kexptNumber); PreDefineSymbol(GrcStructName("settings"), kst, kexptUnknown); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitGlyphMetrics() { SymbolType kst = ksymtGlyphMetric; Symbol psym; psym = PreDefineSymbol(GrcStructName("boundingbox", "top"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("boundingbox", "bottom"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("boundingbox", "left"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("boundingbox", "right"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("boundingbox", "height"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("boundingbox", "width"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("advanceheight"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("advancewidth"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("leftsidebearing"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("rightsidebearing"), kst, kexptMeas); // = munits - lsb psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("ascent"), kst, kexptMeas); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("descent"), kst, kexptMeas); // = font height - ascent psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("munits"), kst, kexptNumber); psym->m_fGeneric = true; } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitOperators() { SymbolType kst = ksymtOperator; ExpressionType kexpt = kexptUnknown; OpPrec kprec = GrcSymbolTableEntry::kprecFunctional; PreDefineSymbol(GrcStructName("min"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("max"), kst, kexpt, kprec); kprec = GrcSymbolTableEntry::kprecAssignment; PreDefineSymbol(GrcStructName("="), ksymtOpAssign, kexpt, kprec); PreDefineSymbol(GrcStructName("+="), ksymtOpAssign, kexpt, kprec); PreDefineSymbol(GrcStructName("-="), ksymtOpAssign, kexpt, kprec); PreDefineSymbol(GrcStructName("*="), ksymtOpAssign, kexpt, kprec); PreDefineSymbol(GrcStructName("/="), ksymtOpAssign, kexpt, kprec); //PreDefineSymbol(GrcStructName("&="), ksymtOpAssign, kexpt, kprec); -- not implemented //PreDefineSymbol(GrcStructName("|="), ksymtOpAssign, kexpt, kprec); -- not implemented kprec = GrcSymbolTableEntry::kprecConditional; PreDefineSymbol(GrcStructName("?"), kst, kexpt, kprec); kprec = GrcSymbolTableEntry::kprecLogical; PreDefineSymbol(GrcStructName("||"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("&&"), kst, kexpt, kprec); kprec = GrcSymbolTableEntry::kprecComparative; PreDefineSymbol(GrcStructName("=="), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("!="), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("<"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("<="), kst, kexpt, kprec); PreDefineSymbol(GrcStructName(">"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName(">="), kst, kexpt, kprec); kprec = GrcSymbolTableEntry::kprecAdditive; PreDefineSymbol(GrcStructName("+"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("-"), kst, kexpt, kprec); kprec = GrcSymbolTableEntry::kprecMultiplicative; PreDefineSymbol(GrcStructName("*"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("/"), kst, kexpt, kprec); kprec = GrcSymbolTableEntry::kprecBitwise; // Strictly speaking these two operators don't have the same precedence, // but it doesn't matter since apparently we don't use the precedence value // for anything. PreDefineSymbol(GrcStructName("&"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("|"), kst, kexpt, kprec); kprec = GrcSymbolTableEntry::kprecNegational; PreDefineSymbol(GrcStructName("!"), kst, kexpt, kprec); PreDefineSymbol(GrcStructName("~"), kst, kexpt, kprec); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitSlotAttrs() { SymbolType kst = ksymtSlotAttr; SymbolType kstPt = ksymtSlotAttrPt; SymbolType kstPtO = ksymtSlotAttrPtOff; PreDefineSymbol(GrcStructName("attach", "to"), kst, kexptSlotRef); PreDefineSymbol(GrcStructName("attach", "level"), kst, kexptNumber); PreDefineSymbol(GrcStructName("attach", "at"), kstPtO, kexptPoint); PreDefineSymbol(GrcStructName("attach", "at", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("attach", "at", "y"), kst, kexptMeas); PreDefineSymbol(GrcStructName("attach", "at", "gpath"), kst, kexptNumber); PreDefineSymbol(GrcStructName("attach", "at", "gpoint"), kst, kexptNumber); PreDefineSymbol(GrcStructName("attach", "at", "xoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("attach", "at", "yoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("attach", "with"), kstPtO, kexptPoint); PreDefineSymbol(GrcStructName("attach", "with", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("attach", "with", "y"), kst, kexptMeas); PreDefineSymbol(GrcStructName("attach", "with", "gpath"), kst, kexptNumber); PreDefineSymbol(GrcStructName("attach", "with", "gpoint"), kst, kexptNumber); PreDefineSymbol(GrcStructName("attach", "with", "xoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("attach", "with", "yoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("breakweight"), kst, kexptNumber); PreDefineSymbol(GrcStructName("component"), kst); // Specific component.?.reference attributes are added as component glyph attributes // are defined, or as encountered. PreDefineSymbol(GrcStructName("directionality"),kst, kexptNumber); PreDefineSymbol(GrcStructName("user1"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user2"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user3"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user4"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user5"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user6"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user7"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user8"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user9"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user10"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user11"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user12"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user13"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user14"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user15"), kst, kexptNumber); PreDefineSymbol(GrcStructName("user16"), kst, kexptNumber); PreDefineSymbol(GrcStructName("insert"), kst, kexptBoolean); PreDefineSymbol(GrcStructName("advance"), kstPtO, kexptPoint); PreDefineSymbol(GrcStructName("advance", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("advance", "y"), kst, kexptMeas); // bogus attributes for error detection: PreDefineSymbol(GrcStructName("advance", "gpath"), kst, kexptNumber); PreDefineSymbol(GrcStructName("advance", "gpoint"), kst, kexptNumber); PreDefineSymbol(GrcStructName("advance", "xoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("advance", "yoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("kern"), kstPtO, kexptPoint); PreDefineSymbol(GrcStructName("kern", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("kern", "y"), kst, kexptMeas); // bogus attributes for error detection: PreDefineSymbol(GrcStructName("kern", "gpath"), kst, kexptNumber); PreDefineSymbol(GrcStructName("kern", "gpoint"), kst, kexptNumber); PreDefineSymbol(GrcStructName("kern", "xoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("kern", "yoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("position"), kstPtO, kexptPoint); PreDefineSymbol(GrcStructName("position", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("position", "y"), kst, kexptMeas); PreDefineSymbol(GrcStructName("shift"), kstPtO, kexptPoint); PreDefineSymbol(GrcStructName("shift", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("shift", "y"), kst, kexptMeas); // bogus attributes for error detection: PreDefineSymbol(GrcStructName("shift", "gpath"), kst, kexptNumber); PreDefineSymbol(GrcStructName("shift", "gpoint"), kst, kexptNumber); PreDefineSymbol(GrcStructName("shift", "xoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("shift", "yoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("measure", "startofline"),kst, kexptMeas); PreDefineSymbol(GrcStructName("measure", "endofline"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", "stretch"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", "stretchHW"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", "shrink"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", "step"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", "weight"), kst, kexptNumber); PreDefineSymbol(GrcStructName("justify", "width"), kst, kexptMeas); for (int iLevel = 0; iLevel <= kMaxJustLevel; iLevel++) { auto staLevel = std::to_string(iLevel); PreDefineSymbol(GrcStructName("justify", staLevel, "stretch"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", staLevel, "stretchHW"),kst,kexptMeas); PreDefineSymbol(GrcStructName("justify", staLevel, "shrink"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", staLevel, "step"), kst, kexptMeas); PreDefineSymbol(GrcStructName("justify", staLevel, "weight"), kst, kexptNumber); PreDefineSymbol(GrcStructName("justify", staLevel, "width"), kst, kexptMeas); } PreDefineSymbol(GrcStructName("collision", "flags"), kst, kexptNumber); PreDefineSymbol(GrcStructName("collision", "status"), kst, kexptNumber); // alias for flags PreDefineSymbol(GrcStructName("collision", "min"), kstPt, kexptPoint); PreDefineSymbol(GrcStructName("collision", "min", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "min", "y"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "max"), kstPt, kexptPoint); PreDefineSymbol(GrcStructName("collision", "max", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "max", "y"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "margin"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "marginweight"), kst, kexptNumber); PreDefineSymbol(GrcStructName("collision", "exclude", "glyph"), kst, kexptGlyphID); PreDefineSymbol(GrcStructName("collision", "exclude", "offset"), kst, kexptPoint); PreDefineSymbol(GrcStructName("collision", "exclude", "offset", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "exclude", "offset", "y"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "fix", "x"), kst, kexptMeas); PreDefineSymbol(GrcStructName("collision", "fix", "y"), kst, kexptMeas); PreDefineSymbol(GrcStructName("sequence", "class"), kst, kexptNumber); PreDefineSymbol(GrcStructName("sequence", "proxClass"), kst, kexptNumber); PreDefineSymbol(GrcStructName("sequence", "order"), kst, kexptNumber); PreDefineSymbol(GrcStructName("sequence", "above", "xoffset"), kst, kexptMeas); PreDefineSymbol(GrcStructName("sequence", "above", "weight"), kst, kexptNumber); PreDefineSymbol(GrcStructName("sequence", "below", "xlimit"), kst, kexptMeas); PreDefineSymbol(GrcStructName("sequence", "below", "weight"), kst, kexptNumber); PreDefineSymbol(GrcStructName("sequence", "valign", "height"), kst, kexptMeas); PreDefineSymbol(GrcStructName("sequence", "valign", "weight"), kst, kexptNumber); PreDefineSymbol(GrcStructName("segsplit"), kst, kexptNumber); // A psuedo-attribute that indicates that a given slot serves as the "key" for the pass, // for optimization purposes. PreDefineSymbol(GrcStructName("passKeySlot"), kst, kexptBoolean); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitGlyphAttrs() { // These were first recorded as slot attributes: Symbol psym; psym = AddType2(GrcStructName("component"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("directionality"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("breakweight"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("justify", "stretch"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("justify", "shrink"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("justify", "step"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("justify", "weight"), ksymtGlyphAttr); psym->m_fGeneric = true; for (int iLevel = 0; iLevel <= kMaxJustLevel; iLevel++) { auto staLevel = std::to_string(iLevel); psym = AddType2(GrcStructName("justify", staLevel, "stretch"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("justify", staLevel, "shrink"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("justify", staLevel, "step"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("justify", staLevel, "weight"), ksymtGlyphAttr); psym->m_fGeneric = true; } // A fake glyph attribute that is used to store the actual glyph ID for pseudo-glyphs. psym = PreDefineSymbol(GrcStructName("*actualForPseudo*"), ksymtGlyphAttr, kexptNumber); psym->m_fGeneric = true; // A built-in glyph attribute that is hold the pass optimization flags (bitmap indicating // the passes for which a glyph is not a key glyph). psym = PreDefineSymbol(GrcStructName("*skipPasses*"), ksymtGlyphAttr, kexptNumber); psym->m_fGeneric = true; // These are just glyph attributes. These two must be in this order and contiguous, // so that the internal IDs are assigned correctly. psym = PreDefineSymbol(GrcStructName("mirror", "glyph"), ksymtGlyphAttr, kexptGlyphID); psym->m_fGeneric = true; psym = PreDefineSymbol(GrcStructName("mirror", "isEncoded"), ksymtGlyphAttr, kexptBoolean); psym->m_fGeneric = true; // Built-in glyph attributes that define how automatic collision fixing should work. psym = AddType2(GrcStructName("collision", "flags"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("collision", "min", "x"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("collision", "max", "x"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("collision", "min", "y"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("collision", "max", "y"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("collision", "margin"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("collision", "marginweight"), ksymtGlyphAttr); psym->m_fGeneric = true; // Not defined as glyph attributes: //psym = AddType2(GrcStructName("collision", "exclude", "glyph"), ksymtGlyphAttr); //psym->m_fGeneric = true; //psym = AddType2(GrcStructName("collision", "exclude", "offset", "x"), ksymtGlyphAttr); //psym->m_fGeneric = true; //psym = AddType2(GrcStructName("collision", "exclude", "offset", "y"), ksymtGlyphAttr); //psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "class"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "proxClass"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "order"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "above", "xoffset"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "above", "weight"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "below", "xlimit"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "below", "weight"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "valign", "height"), ksymtGlyphAttr); psym->m_fGeneric = true; psym = AddType2(GrcStructName("sequence", "valign", "weight"), ksymtGlyphAttr); psym->m_fGeneric = true; // This one is used by the compiler, but not stored in the font: psym = PreDefineSymbol(GrcStructName("collision", "complexFit"), ksymtGlyphAttr, kexptNumber); psym->m_fGeneric = true; } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitSpecial() { SymbolType kst = ksymtSpecial; PreDefineSymbol(GrcStructName("@"), ksymtSpecialAt); PreDefineSymbol(GrcStructName("^"), ksymtSpecialCaret); PreDefineSymbol(GrcStructName("#"), ksymtSpecialLb); PreDefineSymbol(GrcStructName("_"), ksymtSpecialUnderscore); AddType2(GrcStructName("?"), kst); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitTableTypes() { SymbolType kst = ksymtTableRule; PreDefineSymbol(GrcStructName("linebreak"), kst); PreDefineSymbol(GrcStructName("substitution"), kst); PreDefineSymbol(GrcStructName("justification"), kst); PreDefineSymbol(GrcStructName("positioning"), kst); kst = ksymtTable; PreDefineSymbol(GrcStructName("feature"), kst); PreDefineSymbol(GrcStructName("glyph"), kst); PreDefineSymbol(GrcStructName("name"), kst); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitUnits() { PreDefineSymbol(GrcStructName("m"), ksymtUnit); } /*--------------------------------------------------------------------------------------------*/ void GrcSymbolTable::InitProcStates() { SymbolType kst = ksymtProcState; PreDefineSymbol(GrcStructName("JustifyMode"), kst, kexptNumber); //PreDefineSymbol(GrcStructName("JustifyLevel"), kst, kexptNumber); PreDefineSymbol(GrcStructName("RunDirection"), kst, kexptNumber); } grcompiler-5.2.1/compiler/GrcSymTable.h000066400000000000000000000345121411153030700200210ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcSymTable.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Defines the symbol table and related classes. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef SYMTABLE_INCLUDED #define SYMTABLE_INCLUDED class GrcSymbolTable; class GrcSymbolTableEntry; class GrcStructName; class GdlStringExpression; typedef GrcSymbolTableEntry* Symbol; // hungarian: psym /*---------------------------------------------------------------------------------------------- Class: GrcSymbolTableEntry Description: A single entry in the symbol table. Hungarian: sym ----------------------------------------------------------------------------------------------*/ class GrcSymbolTableEntry { friend class GrcSymbolTable; friend class SymbolLess; public: // Operator precedences enum OpPrec { kprecNone = -1, kprecFunctional=0, // min(), max() -- low precedence kprecAssignment, // =, +=, -= kprecConditional, // ? kprecLogical, // &&, || kprecBitwise, // &, | kprecComparative, // ==, <, >=, etc. kprecAdditive, // +, - kprecMultiplicative,// *, / kprecNegational // !, ~ }; // hungarian: prec public: // Constructor & destructor: GrcSymbolTableEntry(std::string sta, SymbolType symt, GrcSymbolTable* psymtbl) : m_staFieldName(sta), m_psymtblSubTable(NULL), m_psymtbl(psymtbl), m_fHasData(false), m_symt(symt), m_symt2(ksymtNone), m_expt(kexptUnknown), m_pData(NULL), m_psymGeneric(NULL), m_fGeneric(false), m_fUserDefined(true) { } ~GrcSymbolTableEntry(); // Getters: GdlDefn * Data() { return m_pData; } bool HasData() { return m_fHasData; } SymbolType SymType() { return m_symt; } ExpressionType ExpType() { return m_expt; } GrpLineAndFile & LineAndFile() { return m_lnf; } // Setters: void SetData(GdlDefn * pData) { m_pData = pData; m_fHasData = true; } void SetSymbolType(SymbolType symt) { m_symt = symt; } void SetSubTable(GrcSymbolTable * psymtbl) { m_psymtblSubTable = psymtbl; } void SetExpType(ExpressionType expt) { m_expt = expt; } // Used for creating difference classes: void ReplaceClassData(GdlGlyphClassDefn * pglfc); public: // General: bool FitsSymbolType(SymbolType symt); std::string FieldAt(int); int FieldCount(); int FieldIndex(std::string); bool FieldIs(int, std::string); std::string FullName(); std::string FullAbbrev(); std::string FullAbbrevOmit(std::string staOmit); static std::string Abbreviation(std::string staFieldName); void GetStructuredName(GrcStructName * pxns); bool MatchesOp(std::string); bool IsComparativeOp(); bool IsBogusSlotAttr(); bool IsReadOnlySlotAttr(); bool IsWriteOnlySlotAttr(); bool IsIndexedSlotAttr(); bool IsIndexedGlyphAttr(); int Level(); std::string LastField() { return m_staFieldName; } bool LastFieldIs(std::string sta) { return m_staFieldName == sta; } Symbol ParentSymbol(); Symbol BaseDefnForNonGeneric(); Symbol BaseClassDefn(); std::string TypeDescriptorString() // for error messages { switch (m_symt) { case ksymtFeature: return "feature"; case ksymtLanguage: return "language"; case ksymtGlyphAttr: return "glyph attribute"; case ksymtGlyphMetric: return "glyph metric"; case ksymtSlotAttr: return "slot attribute"; case ksymtClass: return "class"; default: return ""; } } // Pre-compiler: int InternalID() { return m_nInternalID; } bool IsUserDefined() { return m_fUserDefined; } Symbol Generic() { return m_psymGeneric; } bool IsGeneric() { return m_fGeneric; } void SetInternalID(int nID) { m_nInternalID = nID; } void SetUserDefined(bool f) { m_fUserDefined = f; } void SetGeneric(Symbol psym) { m_psymGeneric = psym; } Symbol BaseLigComponent(); Symbol BasePoint(); Symbol BaseFeatSetting(); Symbol PointSisterField(std::string staFieldName); bool IsComponentRef(); bool IsComponentBoxField(); bool IsComponentBase(); bool IsPointField(); bool IsAttachTo(); bool IsAttachAtField(); bool IsAttachWithField(); bool IsAttachXField(); bool IsAttachOffsetField(); bool IsAttachment(); bool IsMovement(); // shift, kern, advance bool DoesJustification(); bool IsMeasureAttr(); bool IsMirrorAttr(); bool IsCollisionAttr(); bool IsSequenceAttr(); bool IsUserDefinableSlotAttr(); int UserDefinableSlotAttrIndex(); bool IsPseudoSlotAttr(); bool IsPassKeySlot(); bool IsIgnorableOffsetAttr(); int FeatAltIDIndex(); void CreateFeatAltIDSymbol(GrcSymbolTable * psymtbl, GdlFeatureDefn * pfeat, GdlStringExpression * pexpString); Symbol SubField(std::string); bool HasSubFields() { return m_psymtblSubTable; } GdlGlyphClassDefn * GlyphClassDefnData(); GdlFeatureDefn * FeatureDefnData(); GdlLanguageDefn * LanguageDefnData(); int JustificationLevel(); bool AdjustExpTypeIfPossible(ExpressionType expt); // Compiler: int SlotAttrEngineCodeOp(); int GlyphMetricEngineCodeOp(); protected: // Instance variables: std::string m_staFieldName; GrcSymbolTable * m_psymtblSubTable; GrcSymbolTable * m_psymtbl; bool m_fHasData; // if false, it doesn't make sense to ask for // this item's data, precedence, whatever // (eg, "attach", "component.X") SymbolType m_symt; SymbolType m_symt2; // secondary type (eg, ? is both operator and special) ExpressionType m_expt; // expression type (numeric, boolean, measurement, slot ref) GrpLineAndFile m_lnf; // where the symbol was defined, or first encountered GdlDefn * m_pData; OpPrec m_prec; // precedence--only relevant for operators // for compiler use: Symbol m_psymGeneric; // generic version of a glyph attribute (ie, without // the class name) bool m_fGeneric; bool m_fUserDefined; // for generic glyph attributes bool m_fUsed; // for glyph metrics (currently not used) int m_nInternalID; // internal IDs for glyph attrs (currently only used for them) // Comparison function for set manipulation: bool operator<(const GrcSymbolTableEntry & sym) const { return (strcmp(m_staFieldName.data(), sym.m_staFieldName.data()) < 0); } }; // Functor class for set manipulation class SymbolLess { friend class GrcSymbolTableEntry; public: bool operator()(const Symbol psym1, const Symbol psym2) const { return (*psym1 < *psym2); } }; typedef std::set SymbolSet; /*---------------------------------------------------------------------------------------------- Class: GrcSymbolTable Description: A multi-layer hash map of symbols and identifiers that have been encountered in a GDL file. Each layer corresponds to one field in a structured (dotted) name. Hungarian: symt ----------------------------------------------------------------------------------------------*/ class GrcSymbolTable { friend class GrcSymbolTableEntry; typedef GrcSymbolTableEntry::OpPrec OpPrec; typedef std::pair SymbolTablePair; typedef std::map SymbolTableMap; public: // Constructor and destructor: GrcSymbolTable(bool fMain) : m_psymParent(NULL), m_cLevel(0), m_csymAnonClass(0) { if (fMain) InitWithPreDefined(); //m_staLabelDbg.Assign(""); // DEBUG } ~GrcSymbolTable(); public: // Initialization: void InitWithPreDefined(); private: void InitGlobals(); void InitDirectives(); void InitFeatureSettings(); void InitGlyphAttrs(); void InitGlyphMetrics(); void InitOperators(); void InitSlotAttrs(); void InitSpecial(); void InitTableTypes(); void InitUnits(); void InitProcStates(); protected: void MakeSubTableOf(Symbol psym) { m_psymParent = psym; m_cLevel = psym->Level() + 1; psym->SetSubTable(this); // DEBUG /* if (m_psymParent) { m_staLabelDbg.Assign(m_psymParent->m_psymtbl->m_staLabelDbg); m_staLabelDbg.Append("%"); m_staLabelDbg.Append(m_psymParent->m_staFieldName); } else m_staLabelDbg.Assign(""); */ } protected: // Add the structured field name to the symbol table if it was not // already there. Return an error code if the type differs from what was // already there. // Special behaviors: // (1) if we are adding a class, define the glyph attributes // for the class (component, linebreak, directionality) // (2) if we are adding a field to the component...... Symbol AddSymbolAux(const GrcStructName & xns, SymbolType symtLeaf, SymbolType symtOther, GrpLineAndFile const&); Symbol PreDefineSymbol(const GrcStructName & xns, SymbolType symt, ExpressionType expt = kexptUnknown, OpPrec prec = GrcSymbolTableEntry::kprecNone); // m_nLineNumber = -1 Symbol AddType2(const GrcStructName & xns, SymbolType symt) { Symbol psymRet = FindSymbol(xns); Assert(psymRet); psymRet->m_symt2 = symt; return psymRet; } // Getters: int Level() { return m_cLevel; } public: // Getters for symbols: SymbolType Type(GrcStructName * pxns); GdlDefn * Data(GrcStructName * pxns); int LineNumber(GrcStructName * pxns); int GetOpPrec(GrcStructName * pxns); // Setters for symbols: void Data(GrcStructName * pxns, GdlDefn * pData); void SetLineAndFile(GrcStructName * pxns, GrpLineAndFile const&); public: // General: Symbol AddSymbol(const GrcStructName & xns, SymbolType symt, GrpLineAndFile const&); Symbol AddClassSymbol(const GrcStructName & xns, GrpLineAndFile const&, GlyphClassType nodetyp = kglfctUnion); Symbol AddFeatureSymbol(const GrcStructName & xns, GrpLineAndFile const&); Symbol AddFeatureAltSymbol(GdlFeatureDefn * pfeat, const GrcStructName & xns, GrpLineAndFile const& lnf); Symbol AddLanguageSymbol(const GrcStructName & xns, GrpLineAndFile const& lnf); Symbol AddGlyphAttrSymbol(const GrcStructName & xns, GrpLineAndFile const&, ExpressionType expt, bool fMetric = false); //Symbol AddComponentField(const GrcStructName & xns, GrpLineAndFile &); Symbol AddAnonymousClassSymbol(GrpLineAndFile const&); Symbol FindField(std::string staField); Symbol FindSymbol(const GrcStructName & xns); Symbol FindSymbol(const std::string staName); Symbol FindSlotAttr(const GrcStructName & xns, GrpLineAndFile const&); Symbol FindFeature(const GrcStructName & xns, GrpLineAndFile const& lnf); protected: int AddGlyphAttrSymbolInMap(std::vector & vpsymGlyphAttrIDs, Symbol psymGeneric); int AddGlyphAttrSymbolInMap(std::vector & vpsymGlyphAttrIDs, Symbol psymGeneric, int ipsymToAssign); public: // Special functions: // If one of the fields of the symbol name is a style, return a pointer to that // symbol; otherwise return a NULL pointer. Symbol FindStyle(GrcStructName * pName); // Iterators: SymbolTableMap::iterator EntriesBegin() { return m_hmstasymEntries.begin(); } SymbolTableMap::iterator EntriesEnd() { return m_hmstasymEntries.end(); } public: // Pre-compiler methods: bool AssignInternalGlyphAttrIDs(GrcManager * pcman, GrcSymbolTable * psymtblMain, std::vector & vpsymGlyphAttrIDs, int nPass, size_t cpsymBuiltIn, size_t cpsymComponents, size_t nMaxJLevel, size_t cpass); Symbol BaseLigComponent(); // Debuggers: void GlyphAttrList(std::vector & vpsym); protected: // Instance variables: Symbol m_psymParent; SymbolTableMap m_hmstasymEntries; int m_cLevel; // the following counter is used to generate unique names for anonymous // classes: int m_csymAnonClass; //std::string m_staLabelDbg; // debug }; /*---------------------------------------------------------------------------------------------- Class: GrcStructName Description: A list of strings that corresponds to a single dotted identifier; eg, "clsAElig.component.A.box.xmin". Hungarian: xns (okay, I was desperate) ----------------------------------------------------------------------------------------------*/ class GrcStructName { public: // Constructors: GrcStructName() { } GrcStructName(std::string staName) { m_vstaFields.push_back(staName); } GrcStructName(std::string sta1, std::string sta2) { m_vstaFields.push_back(sta1); m_vstaFields.push_back(sta2); } GrcStructName(std::string sta1, std::string sta2, std::string sta3) { m_vstaFields.push_back(sta1); m_vstaFields.push_back(sta2); m_vstaFields.push_back(sta3); } GrcStructName(std::string sta1, std::string sta2, std::string sta3, std::string sta4) { m_vstaFields.push_back(sta1); m_vstaFields.push_back(sta2); m_vstaFields.push_back(sta3); m_vstaFields.push_back(sta4); } GrcStructName(std::string sta1, std::string sta2, std::string sta3, std::string sta4, std::string sta5) { m_vstaFields.push_back(sta1); m_vstaFields.push_back(sta2); m_vstaFields.push_back(sta3); m_vstaFields.push_back(sta4); m_vstaFields.push_back(sta5); } GrcStructName(std::vector & vsta) { Assert(m_vstaFields.size() == 0); m_vstaFields.assign(vsta.begin(), vsta.end()); } // Copy constructor: GrcStructName(const GrcStructName & xns) { Assert(m_vstaFields.size() == 0); m_vstaFields.assign(xns.m_vstaFields.begin(), xns.m_vstaFields.end()); } // General: size_t NumFields() const { return m_vstaFields.size(); } std::string FieldAt(int i) const { return m_vstaFields[i]; } bool FieldEquals(int i, std::string sta) const { return m_vstaFields[i] == sta; } void InsertField(size_t i, std::string sta) { Assert(i <= static_cast(m_vstaFields.size())); m_vstaFields.insert(m_vstaFields.begin() + i, sta); } void DeleteField(size_t i) { Assert(i < static_cast(m_vstaFields.size())); m_vstaFields.erase(m_vstaFields.begin() + i); } std::string FullString() const { std::string staRet = m_vstaFields[0]; for (size_t i = 1; i < m_vstaFields.size(); i++) { staRet += "."; staRet += m_vstaFields[i]; } return staRet; } // Copy all but the first field into the given name. For instance, if this name is // classX.component.X.top, the argument becomes component.X.top. void CopyMinusFirstField(GrcStructName & nwf) const { for (size_t i = 1; i < m_vstaFields.size(); i++) nwf.m_vstaFields.push_back(m_vstaFields[i]); } protected: // Instance variables: mutable std::vector m_vstaFields; }; inline int GrcSymbolTableEntry::Level() { return m_psymtbl->Level(); } inline Symbol GrcSymbolTableEntry::ParentSymbol() { return m_psymtbl->m_psymParent; } #endif // !SYMTABLE_INCLUDED grcompiler-5.2.1/compiler/Grp.h000066400000000000000000000024501411153030700163710ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Grp.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Header file for the grammar classes. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRAMMAR_H #define GRAMMAR_H 1 ////#include #ifdef GR_FW namespace gr { }; #include "Common.h" #else #include "GrCommon.h" #endif using namespace gr; #include "UtilString.h" #include "Antlr/AST.hpp" #include "Antlr/CommonToken.hpp" #include "Antlr/CommonASTNode.hpp" #include "Antlr/TokenStream.hpp" #include "Antlr/ScannerException.hpp" #include "Antlr/ParserException.hpp" #include "GrpLineAndFile.hpp" #include "GrpParserTokenTypes.hpp" #include "GrpToken.hpp" #include "GrpASTNode.hpp" #include "GrpTokenStreamFilter.hpp" #include "GrpLexer.hpp" #include "GrpParser.hpp" void AddGlobalError(bool, int nID, std::string, int nLine); void AddGlobalError(bool, int nID, std::string, GrpLineAndFile const&); #endif // !GRAMMAR_H grcompiler-5.2.1/compiler/GrpASTNode.hpp000066400000000000000000000025141411153030700201100ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrpASTNode.hpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Customized tree node that contains line and file information. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifndef GRPASTNODE #define GRPASTNODE class GrpASTNode : public CommonASTNode { public: // Additional instance variable: GrpLineAndFile m_lnf; // And methods to handle it: GrpASTNode() : CommonASTNode() { // initialize instance variables } static ASTNode * factory() { return new GrpASTNode; } void initialize(RefToken t); // int getLine() { return m_lnf.Line(); } // void setLine(int n) { m_lnf.SetLine(n); } GrpLineAndFile LineAndFile() { return m_lnf; } #if 0 int debug(int level) { int nLine = m_lnf.PreProcessedLine(); for (int l = 0; l < level; l++) OutputDebugString(" "); OutputDebugString(std::to_string(nLine)); OutputDebugString("\n"); return nLine; } #endif // Debugger: std::string debugString() const; }; #endif // !GRPASTNODE grcompiler-5.2.1/compiler/GrpExtensions.cpp000066400000000000000000000122551411153030700210100ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrpTokenStreamFilter.hpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Implementions of methods for classes that are extensions to the ANTLR classes. -------------------------------------------------------------------------------*//*:End Ignore*/ #include "Grp.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*---------------------------------------------------------------------------------------------- Get the next token from the lexer. If it is a C-preprocessor line marker, do something special, otherwise pass the token on through to the parser. ----------------------------------------------------------------------------------------------*/ RefToken GrpTokenStreamFilter::nextToken() { RefToken tok; if (m_tokPeek) { tok = m_tokPeek; m_tokPeek = RefToken(NULL); } else tok = m_lexer->nextToken(); while (tok && tok->getType() == OP_LINEMARKER ) { // Handle the information from the line-and-file marker. RefToken tokLineNumber = m_lexer->nextToken(); Assert(tokLineNumber && tokLineNumber->getType() == LIT_INT); RefToken tokFileName = m_lexer->nextToken(); //Assert(tokFileName && tokFileName->getType() == LIT_STRING); int nLineInMarker = atoi(tokLineNumber->getText().c_str()); int nLinePre = tokLineNumber->getLine(); m_staPrevFile = m_staFile; m_nPrevLineOffset = m_nLineOffset; m_nLastLineMarker = nLinePre; if (tokFileName && tokFileName->getType() == LIT_STRING) { m_staFile = tokFileName->getText().c_str(); tok = m_lexer->nextToken(); } else { // m_staFile stays the same tok = tokFileName; } m_nLineOffset = nLineInMarker - nLinePre - 1; // -1, because line marker gives // the number of the NEXT line } if (tok && tok->getType() == LITERAL_else) { // "else" immediately followed by "if" on the same line is equivalent to "elseif", // which does not need a separate "endif". m_tokPeek = m_lexer->nextToken(); if (m_tokPeek && m_tokPeek->getType() == LITERAL_if && m_tokPeek->getLine() == tok->getLine()) { tok->setType(Zelseif); tok->setText("else if"); m_tokPeek = RefToken(NULL); // throw away if the if } // otherwise, keep the peeked-at token for the next nextToken() call. } else if (tok && tok->getType() == AT_IDENT) { // Break the token of the form "@abc" or "@:abc" into two tokens: OP_AT and Qalias. std::string s = tok->getText(); Assert(s[0] == '@'); if (s.length() > 1) { unsigned int ichMin = (s[1] == ':') ? 2 : 1; // ignore colon if (s.length() > ichMin) { std::string sIdent = s.substr(ichMin, s.length()); RefToken tokNext = m_lexer->publicMakeToken(Qalias); if (s[ichMin] >= '0' && s[ichMin] <= '9') tokNext->setType(LIT_INT); tokNext->setText(sIdent); tokNext->setLine(tok->getLine()); m_tokPeek = tokNext; } } tok->setType(OP_AT); tok->setText("@"); } // Adjust the line and file information in the token. if (tok) { Token * bareToken = tok.get(); GrpToken * wrToken = dynamic_cast(bareToken); Assert(wrToken); int nLinePre = tok->getLine(); wrToken->SetOrigLineAndFile(nLinePre + m_nLineOffset, m_staFile); } return tok; } /*---------------------------------------------------------------------------------------------- Initialize a tree node with the line-and-file information from the lexer token. ----------------------------------------------------------------------------------------------*/ void GrpASTNode::initialize(RefToken t) { CommonASTNode::initialize(t); Token * bareToken = t.get(); GrpToken * wrToken = dynamic_cast(bareToken); Assert(wrToken); m_lnf = wrToken->LineAndFile(); } /*---------------------------------------------------------------------------------------------- Intercept a lexer error and add the original line and file information. ----------------------------------------------------------------------------------------------*/ void GrpTokenStreamFilter::ReportLexerError(const ScannerException & ex) { int nLinePre = ex.getLine(); int nLineOrig = nLinePre + m_nLineOffset; AddGlobalError(true, 101, ex.getErrorMessage(), GrpLineAndFile(nLinePre, nLineOrig, m_staFile)); } /*---------------------------------------------------------------------------------------------- Intercept a parser error and add the original line and file information. ----------------------------------------------------------------------------------------------*/ void GrpTokenStreamFilter::ReportParserError(const ParserException & ex) { int nLinePre = ex.getLine(); if (nLinePre <= m_nLastLineMarker) // Problematic token was before the last line marker in the pre-processed file. AddGlobalError(true, 102, ex.getErrorMessage(), GrpLineAndFile(nLinePre, nLinePre + m_nPrevLineOffset, m_staPrevFile)); else AddGlobalError(true, 103, ex.getErrorMessage(), GrpLineAndFile(nLinePre, nLinePre + m_nLineOffset, m_staFile)); } grcompiler-5.2.1/compiler/GrpLexer.cpp000066400000000000000000001651371411153030700177400ustar00rootroot00000000000000/* * ANTLR-generated file resulting from grammar c:\graphite1\grcompiler\compiler\grpparser.g * * Terence Parr, MageLang Institute * with John Lilley, Empathy Software * ANTLR Version 2.6.0; 1996-1999 */ #include "GrpLexer.hpp" #include "GrpParserTokenTypes.hpp" #include "Antlr/ScannerException.hpp" #include "Antlr/CharBuffer.hpp" // Insert at the beginning of the GrpLexer.cpp file: #pragma warning(disable:4101) #include "Grp.h" // This function needs to go in the .cpp file, not the .hpp file, after the // GrpToken class is defined. void GrpLexer::init(GrpTokenStreamFilter & tsf) { m_ptsf = &tsf; setTokenObjectFactory(&GrpToken::factory); } void GrpLexer::reportError(const ScannerException& ex) { // Pipe the error through the token stream filter, to handle the // line-and-file adjustments. m_ptsf->ReportLexerError(ex); } GrpLexer::GrpLexer(std::istream& in) : CharScanner(new CharBuffer(in)) { setCaseSensitive(true); initLiterals(); } GrpLexer::GrpLexer(InputBuffer& ib) : CharScanner(ib) { setCaseSensitive(true); initLiterals(); } GrpLexer::GrpLexer(const LexerSharedInputState& state) : CharScanner(state) { setCaseSensitive(true); initLiterals(); } void GrpLexer::initLiterals() { literals["positioning"] = 58; literals["min"] = 62; literals["name"] = 16; literals["endenvironment"] = 10; literals["endtable"] = 15; literals["false"] = 81; literals["true"] = 80; literals["glyph"] = 23; literals["codepoint"] = 28; literals["justify"] = 61; literals["pass"] = 38; literals["table"] = 14; literals["substitution"] = 37; literals["string"] = 22; literals["environment"] = 9; literals["glyphid"] = 29; literals["justification"] = 56; literals["pseudo"] = 26; literals["position"] = 57; literals["endif"] = 42; literals["languages"] = 36; literals["elseif"] = 44; literals["feature"] = 34; literals["max"] = 63; literals["postscript"] = 30; literals["unicode"] = 31; literals["if"] = 40; literals["linebreak"] = 59; literals["else"] = 41; literals["endpass"] = 39; literals["language"] = 35; } bool GrpLexer::getCaseSensitiveLiterals() const { return false; } RefToken GrpLexer::nextToken() { RefToken _rettoken; for (;;) { RefToken _rettoken; int _ttype = Token::INVALID_TYPE; resetText(); try { // for error handling switch ( LA(1)) { case static_cast('\t'): case static_cast('\n'): case static_cast('\14'): case static_cast('\r'): case static_cast(' '): { mWS(true); _rettoken=_returnToken; break; } case static_cast('0'): case static_cast('1'): case static_cast('2'): case static_cast('3'): case static_cast('4'): case static_cast('5'): case static_cast('6'): case static_cast('7'): case static_cast('8'): case static_cast('9'): { mLIT_INT(true); _rettoken=_returnToken; break; } case static_cast('\''): case static_cast('\221'): case static_cast('\222'): { mLIT_CHAR(true); _rettoken=_returnToken; break; } case static_cast('"'): case static_cast('\223'): case static_cast('\224'): { mLIT_STRING(true); _rettoken=_returnToken; break; } case static_cast(':'): { mOP_COLON(true); _rettoken=_returnToken; break; } case static_cast(';'): { mOP_SEMI(true); _rettoken=_returnToken; break; } case static_cast('['): { mOP_LBRACKET(true); _rettoken=_returnToken; break; } case static_cast(']'): { mOP_RBRACKET(true); _rettoken=_returnToken; break; } case static_cast('('): { mOP_LPAREN(true); _rettoken=_returnToken; break; } case static_cast(')'): { mOP_RPAREN(true); _rettoken=_returnToken; break; } case static_cast('{'): { mOP_LBRACE(true); _rettoken=_returnToken; break; } case static_cast('}'): { mOP_RBRACE(true); _rettoken=_returnToken; break; } case static_cast(','): { mOP_COMMA(true); _rettoken=_returnToken; break; } case static_cast('$'): { mOP_DOLLAR(true); _rettoken=_returnToken; break; } case static_cast('~'): { mOP_BITNOT(true); _rettoken=_returnToken; break; } case static_cast('\\'): { mOP_BSLASH(true); _rettoken=_returnToken; break; } case static_cast('_'): { mOP_UNDER(true); _rettoken=_returnToken; break; } case static_cast('?'): { mOP_QUESTION(true); _rettoken=_returnToken; break; } case static_cast('^'): { mOP_CARET(true); _rettoken=_returnToken; break; } case static_cast('@'): { mAT_IDENT(true); _rettoken=_returnToken; break; } default: if ((LA(1)==static_cast('/')) && (LA(2)==static_cast('/'))) { mCOMMENT_SL(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('/')) && (LA(2)==static_cast('*'))) { mCOMMENT_ML(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('U')) && (LA(2)==static_cast('+'))) { mLIT_UHEX(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('.')) && (LA(2)==static_cast('.'))) { mOP_DOTDOT(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('<')) && (LA(2)==static_cast('='))) { mOP_LE(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('=')) && (LA(2)==static_cast('='))) { mOP_EQUALEQUAL(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('!')) && (LA(2)==static_cast('='))) { mOP_NE(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('>')) && (LA(2)==static_cast('='))) { mOP_GE(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('+')) && (LA(2)==static_cast('='))) { mOP_PLUSEQUAL(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('-')) && (LA(2)==static_cast('='))) { mOP_MINUSEQUAL(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('*')) && (LA(2)==static_cast('='))) { mOP_MULTEQUAL(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('/')) && (LA(2)==static_cast('='))) { mOP_DIVEQUAL(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('&')) && (LA(2)==static_cast('='))) { mOP_ANDEQUAL(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('#')) && (LA(2)==static_cast('l'))) { mOP_LINEMARKER(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('&')) && (LA(2)==static_cast('&'))) { mOP_AND(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('|')) && (LA(2)==static_cast('|'))) { mOP_OR(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('.'))) { mOP_DOT(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('!'))) { mOP_NOT(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('<'))) { mOP_LT(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('='))) { mOP_EQ(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('>'))) { mOP_GT(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('+'))) { mOP_PLUS(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('-'))) { mOP_MINUS(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('*'))) { mOP_MULT(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('/'))) { mOP_DIV(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('#'))) { mOP_HASH(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('&'))) { mOP_BITAND(true); _rettoken=_returnToken; } else if ((LA(1)==static_cast('|'))) { mOP_BITOR(true); _rettoken=_returnToken; } else if ((_tokenSet_0.member(LA(1)))) { mIDENT(true); _rettoken=_returnToken; } else { if (LA(1)==EOF_CHAR) {_returnToken = makeToken(Token::EOF_TYPE);} else {throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine());} } } if ( !_returnToken ) goto tryAgain; // found SKIP token _ttype = _returnToken->getType(); _returnToken->setType(_ttype); return _returnToken; } catch (ScannerException& e) { reportError(e); consume(); } tryAgain:; } } void GrpLexer::mWS(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = WS; { switch ( LA(1)) { case static_cast(' '): { match(static_cast(' ')); break; } case static_cast('\t'): { match(static_cast('\t')); break; } case static_cast('\14'): { match(static_cast('\14')); break; } case static_cast('\n'): case static_cast('\r'): { { if ((LA(1)==static_cast('\r')) && (LA(2)==static_cast('\n'))) { match("\r\n"); } else if ((LA(1)==static_cast('\r'))) { match(static_cast('\r')); } else if ((LA(1)==static_cast('\n'))) { match(static_cast('\n')); } else { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } newline(); break; } default: { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } } _ttype = Token::SKIP; if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mCOMMENT_SL(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = COMMENT_SL; match("//"); { do { if ((_tokenSet_1.member(LA(1)))) { { match(_tokenSet_1); } } else { goto _loop435; } } while (true); _loop435:; } _ttype = Token::SKIP; if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mCOMMENT_ML(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = COMMENT_ML; match("/*"); { do { switch ( LA(1)) { case static_cast('\n'): { match(static_cast('\n')); newline(); break; } case static_cast('\0'): case static_cast('\1'): case static_cast('\2'): case static_cast('\3'): case static_cast('\4'): case static_cast('\5'): case static_cast('\6'): case static_cast('\7'): case static_cast('\10'): case static_cast('\t'): case static_cast('\13'): case static_cast('\14'): case static_cast('\r'): case static_cast('\16'): case static_cast('\17'): case static_cast('\20'): case static_cast('\21'): case static_cast('\22'): case static_cast('\23'): case static_cast('\24'): case static_cast('\25'): case static_cast('\26'): case static_cast('\27'): case static_cast('\30'): case static_cast('\31'): case static_cast('\32'): case static_cast('\33'): case static_cast('\34'): case static_cast('\35'): case static_cast('\36'): case static_cast('\37'): case static_cast(' '): case static_cast('!'): case static_cast('"'): case static_cast('#'): case static_cast('$'): case static_cast('%'): case static_cast('&'): case static_cast('\''): case static_cast('('): case static_cast(')'): case static_cast('+'): case static_cast(','): case static_cast('-'): case static_cast('.'): case static_cast('/'): case static_cast('0'): case static_cast('1'): case static_cast('2'): case static_cast('3'): case static_cast('4'): case static_cast('5'): case static_cast('6'): case static_cast('7'): case static_cast('8'): case static_cast('9'): case static_cast(':'): case static_cast(';'): case static_cast('<'): case static_cast('='): case static_cast('>'): case static_cast('?'): case static_cast('@'): case static_cast('A'): case static_cast('B'): case static_cast('C'): case static_cast('D'): case static_cast('E'): case static_cast('F'): case static_cast('G'): case static_cast('H'): case static_cast('I'): case static_cast('J'): case static_cast('K'): case static_cast('L'): case static_cast('M'): case static_cast('N'): case static_cast('O'): case static_cast('P'): case static_cast('Q'): case static_cast('R'): case static_cast('S'): case static_cast('T'): case static_cast('U'): case static_cast('V'): case static_cast('W'): case static_cast('X'): case static_cast('Y'): case static_cast('Z'): case static_cast('['): case static_cast('\\'): case static_cast(']'): case static_cast('^'): case static_cast('_'): case static_cast('`'): case static_cast('a'): case static_cast('b'): case static_cast('c'): case static_cast('d'): case static_cast('e'): case static_cast('f'): case static_cast('g'): case static_cast('h'): case static_cast('i'): case static_cast('j'): case static_cast('k'): case static_cast('l'): case static_cast('m'): case static_cast('n'): case static_cast('o'): case static_cast('p'): case static_cast('q'): case static_cast('r'): case static_cast('s'): case static_cast('t'): case static_cast('u'): case static_cast('v'): case static_cast('w'): case static_cast('x'): case static_cast('y'): case static_cast('z'): case static_cast('{'): case static_cast('|'): case static_cast('}'): case static_cast('~'): case static_cast('\177'): case static_cast('\200'): case static_cast('\201'): case static_cast('\202'): case static_cast('\203'): case static_cast('\204'): case static_cast('\205'): case static_cast('\206'): case static_cast('\207'): case static_cast('\210'): case static_cast('\211'): case static_cast('\212'): case static_cast('\213'): case static_cast('\214'): case static_cast('\215'): case static_cast('\216'): case static_cast('\217'): case static_cast('\220'): case static_cast('\221'): case static_cast('\222'): case static_cast('\223'): case static_cast('\224'): case static_cast('\225'): case static_cast('\226'): case static_cast('\227'): case static_cast('\230'): case static_cast('\231'): case static_cast('\232'): case static_cast('\233'): case static_cast('\234'): case static_cast('\235'): case static_cast('\236'): case static_cast('\237'): case static_cast('\240'): case static_cast('\241'): case static_cast('\242'): case static_cast('\243'): case static_cast('\244'): case static_cast('\245'): case static_cast('\246'): case static_cast('\247'): case static_cast('\250'): case static_cast('\251'): case static_cast('\252'): case static_cast('\253'): case static_cast('\254'): case static_cast('\255'): case static_cast('\256'): case static_cast('\257'): case static_cast('\260'): case static_cast('\261'): case static_cast('\262'): case static_cast('\263'): case static_cast('\264'): case static_cast('\265'): case static_cast('\266'): case static_cast('\267'): case static_cast('\270'): case static_cast('\271'): case static_cast('\272'): case static_cast('\273'): case static_cast('\274'): case static_cast('\275'): case static_cast('\276'): case static_cast('\277'): case static_cast('\300'): case static_cast('\301'): case static_cast('\302'): case static_cast('\303'): case static_cast('\304'): case static_cast('\305'): case static_cast('\306'): case static_cast('\307'): case static_cast('\310'): case static_cast('\311'): case static_cast('\312'): case static_cast('\313'): case static_cast('\314'): case static_cast('\315'): case static_cast('\316'): case static_cast('\317'): case static_cast('\320'): case static_cast('\321'): case static_cast('\322'): case static_cast('\323'): case static_cast('\324'): case static_cast('\325'): case static_cast('\326'): case static_cast('\327'): case static_cast('\330'): case static_cast('\331'): case static_cast('\332'): case static_cast('\333'): case static_cast('\334'): case static_cast('\335'): case static_cast('\336'): case static_cast('\337'): case static_cast('\340'): case static_cast('\341'): case static_cast('\342'): case static_cast('\343'): case static_cast('\344'): case static_cast('\345'): case static_cast('\346'): case static_cast('\347'): case static_cast('\350'): case static_cast('\351'): case static_cast('\352'): case static_cast('\353'): case static_cast('\354'): case static_cast('\355'): case static_cast('\356'): case static_cast('\357'): case static_cast('\360'): case static_cast('\361'): case static_cast('\362'): case static_cast('\363'): case static_cast('\364'): case static_cast('\365'): case static_cast('\366'): case static_cast('\367'): case static_cast('\370'): case static_cast('\371'): case static_cast('\372'): case static_cast('\373'): case static_cast('\374'): case static_cast('\375'): case static_cast('\376'): case static_cast('\377'): { { match(_tokenSet_2); } break; } default: if (((LA(1)==static_cast('*')) && ((LA(2) >= static_cast('\0') && LA(2) <= static_cast('\377'))) && ((LA(3) >= static_cast('\0') && LA(3) <= static_cast('\377'))))&&( LA(2)!='/' )) { match(static_cast('*')); } else { goto _loop439; } } } while (true); _loop439:; } match("*/"); _ttype = Token::SKIP; if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mLIT_INT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = LIT_INT; { if ((LA(1)==static_cast('0')) && (LA(2)==static_cast('x'))) { { match("0x"); { int _cnt446=0; do { if ((_tokenSet_3.member(LA(1)))) { mXDIGIT(false); } else { if ( _cnt446>=1 ) { goto _loop446; } else {throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine());} } _cnt446++; } while (true); _loop446:; } } } else if (((LA(1) >= static_cast('0') && LA(1) <= static_cast('9')))) { { int _cnt443=0; do { if (((LA(1) >= static_cast('0') && LA(1) <= static_cast('9')))) { mDIGIT(false); } else { if ( _cnt443>=1 ) { goto _loop443; } else {throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine());} } _cnt443++; } while (true); _loop443:; } } else { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } { switch ( LA(1)) { case static_cast('m'): { match(static_cast('m')); break; } case static_cast('M'): { match(static_cast('M')); break; } default: { } } } if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mDIGIT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = DIGIT; matchRange(static_cast('0'),static_cast('9')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mXDIGIT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = XDIGIT; switch ( LA(1)) { case static_cast('0'): case static_cast('1'): case static_cast('2'): case static_cast('3'): case static_cast('4'): case static_cast('5'): case static_cast('6'): case static_cast('7'): case static_cast('8'): case static_cast('9'): { matchRange(static_cast('0'),static_cast('9')); break; } case static_cast('a'): case static_cast('b'): case static_cast('c'): case static_cast('d'): case static_cast('e'): case static_cast('f'): { matchRange(static_cast('a'),static_cast('f')); break; } case static_cast('A'): case static_cast('B'): case static_cast('C'): case static_cast('D'): case static_cast('E'): case static_cast('F'): { matchRange(static_cast('A'),static_cast('F')); break; } default: { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mLIT_UHEX(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = LIT_UHEX; match("U+"); { int _cnt450=0; do { if ((_tokenSet_3.member(LA(1)))) { mXDIGIT(false); } else { if ( _cnt450>=1 ) { goto _loop450; } else {throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine());} } _cnt450++; } while (true); _loop450:; } if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mLIT_CHAR(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = LIT_CHAR; auto _saveIndex=text.length(); mSQUOTE(false); text.erase(_saveIndex); { if ((LA(1)==static_cast('\\')) && (_tokenSet_4.member(LA(2))) && (LA(3)==static_cast('\'')||LA(3)==static_cast('\221')||LA(3)==static_cast('\222'))) { mESC(false); } else if ((_tokenSet_5.member(LA(1))) && (LA(2)==static_cast('\'')||LA(2)==static_cast('\221')||LA(2)==static_cast('\222'))) { { match(_tokenSet_5); } } else { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } _saveIndex=text.length(); mSQUOTE(false); text.erase(_saveIndex); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mSQUOTE(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = SQUOTE; { switch ( LA(1)) { case static_cast('\''): { match(static_cast('\'')); break; } case static_cast('\221'): { match(static_cast('\221')); break; } case static_cast('\222'): { match(static_cast('\222')); break; } default: { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } } if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mESC(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = ESC; match(static_cast('\\')); { switch ( LA(1)) { case static_cast('n'): { match(static_cast('n')); break; } case static_cast('r'): { match(static_cast('r')); break; } case static_cast('t'): { match(static_cast('t')); break; } case static_cast('b'): { match(static_cast('b')); break; } case static_cast('f'): { match(static_cast('f')); break; } case static_cast('"'): { match(static_cast('"')); break; } case static_cast('\''): { match(static_cast('\'')); break; } case static_cast('\\'): { match(static_cast('\\')); break; } default: { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } } if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mLIT_STRING(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = LIT_STRING; auto _saveIndex=text.length(); mDQUOTE(false); text.erase(_saveIndex); { do { if ((LA(1)==static_cast('\\')) && (_tokenSet_4.member(LA(2))) && ((LA(3) >= static_cast('\0') && LA(3) <= static_cast('\377')))) { mESC(false); } else if ((_tokenSet_6.member(LA(1))) && ((LA(2) >= static_cast('\0') && LA(2) <= static_cast('\377')))) { { match(_tokenSet_6); } } else { goto _loop457; } } while (true); _loop457:; } _saveIndex=text.length(); mDQUOTE(false); text.erase(_saveIndex); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mDQUOTE(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = DQUOTE; { switch ( LA(1)) { case static_cast('"'): { match(static_cast('"')); break; } case static_cast('\223'): { match(static_cast('\223')); break; } case static_cast('\224'): { match(static_cast('\224')); break; } default: { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } } if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mODIGIT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = ODIGIT; matchRange(static_cast('0'),static_cast('7')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_DOT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_DOT; match(static_cast('.')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_DOTDOT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_DOTDOT; match(".."); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_COLON(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_COLON; match(static_cast(':')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_SEMI(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_SEMI; match(static_cast(';')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_LBRACKET(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_LBRACKET; match(static_cast('[')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_RBRACKET(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_RBRACKET; match(static_cast(']')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_LPAREN(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_LPAREN; match(static_cast('(')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_RPAREN(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_RPAREN; match(static_cast(')')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_LBRACE(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_LBRACE; match(static_cast('{')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_RBRACE(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_RBRACE; match(static_cast('}')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_NOT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_NOT; match(static_cast('!')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_LT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_LT; match(static_cast('<')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_LE(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_LE; match("<="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_EQ(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_EQ; match(static_cast('=')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_EQUALEQUAL(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_EQUALEQUAL; match("=="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_NE(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_NE; match("!="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_GE(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_GE; match(">="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_GT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_GT; match(static_cast('>')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_PLUS(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_PLUS; match(static_cast('+')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_PLUSEQUAL(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_PLUSEQUAL; match("+="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_MINUS(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_MINUS; match(static_cast('-')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_MINUSEQUAL(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_MINUSEQUAL; match("-="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_MULT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_MULT; match(static_cast('*')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_MULTEQUAL(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_MULTEQUAL; match("*="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_DIV(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_DIV; match(static_cast('/')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_DIVEQUAL(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_DIVEQUAL; match("/="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_ANDEQUAL(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_ANDEQUAL; match("&="); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_COMMA(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_COMMA; match(static_cast(',')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_DOLLAR(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_DOLLAR; match(static_cast('$')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_LINEMARKER(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_LINEMARKER; match("#line"); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_HASH(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_HASH; match(static_cast('#')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_AND(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_AND; match("&&"); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_OR(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_OR; match("||"); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_BITAND(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_BITAND; match("&"); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_BITOR(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_BITOR; match("|"); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_BITNOT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_BITNOT; match("~"); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_BSLASH(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_BSLASH; match(static_cast('\\')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_UNDER(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_UNDER; match(static_cast('_')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_QUESTION(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_QUESTION; match(static_cast('?')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mOP_CARET(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = OP_CARET; match(static_cast('^')); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mIDENT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = IDENT; { switch ( LA(1)) { case static_cast('a'): case static_cast('b'): case static_cast('c'): case static_cast('d'): case static_cast('e'): case static_cast('f'): case static_cast('g'): case static_cast('h'): case static_cast('i'): case static_cast('j'): case static_cast('k'): case static_cast('l'): case static_cast('m'): case static_cast('n'): case static_cast('o'): case static_cast('p'): case static_cast('q'): case static_cast('r'): case static_cast('s'): case static_cast('t'): case static_cast('u'): case static_cast('v'): case static_cast('w'): case static_cast('x'): case static_cast('y'): case static_cast('z'): { matchRange(static_cast('a'),static_cast('z')); break; } case static_cast('A'): case static_cast('B'): case static_cast('C'): case static_cast('D'): case static_cast('E'): case static_cast('F'): case static_cast('G'): case static_cast('H'): case static_cast('I'): case static_cast('J'): case static_cast('K'): case static_cast('L'): case static_cast('M'): case static_cast('N'): case static_cast('O'): case static_cast('P'): case static_cast('Q'): case static_cast('R'): case static_cast('S'): case static_cast('T'): case static_cast('U'): case static_cast('V'): case static_cast('W'): case static_cast('X'): case static_cast('Y'): case static_cast('Z'): { matchRange(static_cast('A'),static_cast('Z')); break; } default: { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } } { do { switch ( LA(1)) { case static_cast('_'): { match(static_cast('_')); break; } case static_cast('a'): case static_cast('b'): case static_cast('c'): case static_cast('d'): case static_cast('e'): case static_cast('f'): case static_cast('g'): case static_cast('h'): case static_cast('i'): case static_cast('j'): case static_cast('k'): case static_cast('l'): case static_cast('m'): case static_cast('n'): case static_cast('o'): case static_cast('p'): case static_cast('q'): case static_cast('r'): case static_cast('s'): case static_cast('t'): case static_cast('u'): case static_cast('v'): case static_cast('w'): case static_cast('x'): case static_cast('y'): case static_cast('z'): { matchRange(static_cast('a'),static_cast('z')); break; } case static_cast('A'): case static_cast('B'): case static_cast('C'): case static_cast('D'): case static_cast('E'): case static_cast('F'): case static_cast('G'): case static_cast('H'): case static_cast('I'): case static_cast('J'): case static_cast('K'): case static_cast('L'): case static_cast('M'): case static_cast('N'): case static_cast('O'): case static_cast('P'): case static_cast('Q'): case static_cast('R'): case static_cast('S'): case static_cast('T'): case static_cast('U'): case static_cast('V'): case static_cast('W'): case static_cast('X'): case static_cast('Y'): case static_cast('Z'): { matchRange(static_cast('A'),static_cast('Z')); break; } case static_cast('0'): case static_cast('1'): case static_cast('2'): case static_cast('3'): case static_cast('4'): case static_cast('5'): case static_cast('6'): case static_cast('7'): case static_cast('8'): case static_cast('9'): { matchRange(static_cast('0'),static_cast('9')); break; } default: { goto _loop510; } } } while (true); _loop510:; } _ttype = testLiteralsTable(_ttype); if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } void GrpLexer::mAT_IDENT(bool _createToken) { int _ttype; RefToken _token; auto _begin=text.length(); _ttype = AT_IDENT; { if ((LA(1)==static_cast('@')) && (LA(2)==static_cast(':'))) { match("@:"); } else if ((LA(1)==static_cast('@'))) { match(static_cast('@')); } else { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } { if ((_tokenSet_0.member(LA(1)))) { { switch ( LA(1)) { case static_cast('a'): case static_cast('b'): case static_cast('c'): case static_cast('d'): case static_cast('e'): case static_cast('f'): case static_cast('g'): case static_cast('h'): case static_cast('i'): case static_cast('j'): case static_cast('k'): case static_cast('l'): case static_cast('m'): case static_cast('n'): case static_cast('o'): case static_cast('p'): case static_cast('q'): case static_cast('r'): case static_cast('s'): case static_cast('t'): case static_cast('u'): case static_cast('v'): case static_cast('w'): case static_cast('x'): case static_cast('y'): case static_cast('z'): { matchRange(static_cast('a'),static_cast('z')); break; } case static_cast('A'): case static_cast('B'): case static_cast('C'): case static_cast('D'): case static_cast('E'): case static_cast('F'): case static_cast('G'): case static_cast('H'): case static_cast('I'): case static_cast('J'): case static_cast('K'): case static_cast('L'): case static_cast('M'): case static_cast('N'): case static_cast('O'): case static_cast('P'): case static_cast('Q'): case static_cast('R'): case static_cast('S'): case static_cast('T'): case static_cast('U'): case static_cast('V'): case static_cast('W'): case static_cast('X'): case static_cast('Y'): case static_cast('Z'): { matchRange(static_cast('A'),static_cast('Z')); break; } default: { throw ScannerException(std::string("no viable alt for char: ")+charName(LA(1)),getLine()); } } } { do { switch ( LA(1)) { case static_cast('_'): { match(static_cast('_')); break; } case static_cast('a'): case static_cast('b'): case static_cast('c'): case static_cast('d'): case static_cast('e'): case static_cast('f'): case static_cast('g'): case static_cast('h'): case static_cast('i'): case static_cast('j'): case static_cast('k'): case static_cast('l'): case static_cast('m'): case static_cast('n'): case static_cast('o'): case static_cast('p'): case static_cast('q'): case static_cast('r'): case static_cast('s'): case static_cast('t'): case static_cast('u'): case static_cast('v'): case static_cast('w'): case static_cast('x'): case static_cast('y'): case static_cast('z'): { matchRange(static_cast('a'),static_cast('z')); break; } case static_cast('A'): case static_cast('B'): case static_cast('C'): case static_cast('D'): case static_cast('E'): case static_cast('F'): case static_cast('G'): case static_cast('H'): case static_cast('I'): case static_cast('J'): case static_cast('K'): case static_cast('L'): case static_cast('M'): case static_cast('N'): case static_cast('O'): case static_cast('P'): case static_cast('Q'): case static_cast('R'): case static_cast('S'): case static_cast('T'): case static_cast('U'): case static_cast('V'): case static_cast('W'): case static_cast('X'): case static_cast('Y'): case static_cast('Z'): { matchRange(static_cast('A'),static_cast('Z')); break; } case static_cast('0'): case static_cast('1'): case static_cast('2'): case static_cast('3'): case static_cast('4'): case static_cast('5'): case static_cast('6'): case static_cast('7'): case static_cast('8'): case static_cast('9'): { matchRange(static_cast('0'),static_cast('9')); break; } default: { goto _loop516; } } } while (true); _loop516:; } } else { { do { if (((LA(1) >= static_cast('0') && LA(1) <= static_cast('9')))) { matchRange(static_cast('0'),static_cast('9')); } else { goto _loop518; } } while (true); _loop518:; } } } if ( _createToken && _token==nullToken && _ttype!=Token::SKIP ) { _token = makeToken(_ttype); _token->setText(text.substr(_begin, text.length()-_begin)); } _returnToken = _token; } const unsigned long GrpLexer::_tokenSet_0_data_[] = { 0UL, 0UL, 134217726UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpLexer::_tokenSet_0(_tokenSet_0_data_,10); const unsigned long GrpLexer::_tokenSet_1_data_[] = { 4294958079UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpLexer::_tokenSet_1(_tokenSet_1_data_,16); const unsigned long GrpLexer::_tokenSet_2_data_[] = { 4294966271UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpLexer::_tokenSet_2(_tokenSet_2_data_,16); const unsigned long GrpLexer::_tokenSet_3_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpLexer::_tokenSet_3(_tokenSet_3_data_,10); const unsigned long GrpLexer::_tokenSet_4_data_[] = { 0UL, 132UL, 268435456UL, 1327172UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpLexer::_tokenSet_4(_tokenSet_4_data_,10); const unsigned long GrpLexer::_tokenSet_5_data_[] = { 4294967295UL, 4294967167UL, 4294967295UL, 4294967295UL, 4294574079UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpLexer::_tokenSet_5(_tokenSet_5_data_,16); const unsigned long GrpLexer::_tokenSet_6_data_[] = { 4294967295UL, 4294967291UL, 4294967295UL, 4294967295UL, 4293394431UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpLexer::_tokenSet_6(_tokenSet_6_data_,16); grcompiler-5.2.1/compiler/GrpLexer.hpp000066400000000000000000000103631411153030700177330ustar00rootroot00000000000000#ifndef INC_GrpLexer_hpp_ #define INC_GrpLexer_hpp_ #include "Antlr/config.hpp" /* * ANTLR-generated file resulting from grammar c:\graphite1\grcompiler\compiler\grpparser.g * * Terence Parr, MageLang Institute * with John Lilley, Empathy Software * ANTLR Version 2.6.0; 1996-1999 */ #include "Antlr/CommonToken.hpp" #include "Antlr/InputBuffer.hpp" #include "Antlr/BitSet.hpp" #include "Antlr/CharScanner.hpp" // Header stuff here void AddGlobalError(bool, int nID, std::string, int nLine); class GrpTokenStreamFilter; class GrpLexer : public CharScanner { // Customized code: public: // Record the token stream filter, which supplies the line-and-file information // to error messages. GrpTokenStreamFilter * m_ptsf; void init(GrpTokenStreamFilter & tsf); void reportError(const ScannerException& ex); void reportError(const std::string& s) { AddGlobalError(true, 105, s.c_str(), 0); } void reportWarning(const std::string& s) { AddGlobalError(false, 505, s.c_str(), 0); } RefToken publicMakeToken(int t) { return makeToken(t); } private: void initLiterals(); public: bool getCaseSensitiveLiterals() const; public: GrpLexer(std::istream& in); GrpLexer(InputBuffer& ib); GrpLexer(const LexerSharedInputState& state); RefToken nextToken(); public: void mWS(bool _createToken); public: void mCOMMENT_SL(bool _createToken); public: void mCOMMENT_ML(bool _createToken); public: void mLIT_INT(bool _createToken); protected: void mDIGIT(bool _createToken); protected: void mXDIGIT(bool _createToken); public: void mLIT_UHEX(bool _createToken); public: void mLIT_CHAR(bool _createToken); protected: void mSQUOTE(bool _createToken); protected: void mESC(bool _createToken); public: void mLIT_STRING(bool _createToken); protected: void mDQUOTE(bool _createToken); protected: void mODIGIT(bool _createToken); public: void mOP_DOT(bool _createToken); public: void mOP_DOTDOT(bool _createToken); public: void mOP_COLON(bool _createToken); public: void mOP_SEMI(bool _createToken); public: void mOP_LBRACKET(bool _createToken); public: void mOP_RBRACKET(bool _createToken); public: void mOP_LPAREN(bool _createToken); public: void mOP_RPAREN(bool _createToken); public: void mOP_LBRACE(bool _createToken); public: void mOP_RBRACE(bool _createToken); public: void mOP_NOT(bool _createToken); public: void mOP_LT(bool _createToken); public: void mOP_LE(bool _createToken); public: void mOP_EQ(bool _createToken); public: void mOP_EQUALEQUAL(bool _createToken); public: void mOP_NE(bool _createToken); public: void mOP_GE(bool _createToken); public: void mOP_GT(bool _createToken); public: void mOP_PLUS(bool _createToken); public: void mOP_PLUSEQUAL(bool _createToken); public: void mOP_MINUS(bool _createToken); public: void mOP_MINUSEQUAL(bool _createToken); public: void mOP_MULT(bool _createToken); public: void mOP_MULTEQUAL(bool _createToken); public: void mOP_DIV(bool _createToken); public: void mOP_DIVEQUAL(bool _createToken); public: void mOP_ANDEQUAL(bool _createToken); public: void mOP_COMMA(bool _createToken); public: void mOP_DOLLAR(bool _createToken); public: void mOP_LINEMARKER(bool _createToken); public: void mOP_HASH(bool _createToken); public: void mOP_AND(bool _createToken); public: void mOP_OR(bool _createToken); public: void mOP_BITAND(bool _createToken); public: void mOP_BITOR(bool _createToken); public: void mOP_BITNOT(bool _createToken); public: void mOP_BSLASH(bool _createToken); public: void mOP_UNDER(bool _createToken); public: void mOP_QUESTION(bool _createToken); public: void mOP_CARET(bool _createToken); public: void mIDENT(bool _createToken); public: void mAT_IDENT(bool _createToken); private: static const unsigned long _tokenSet_0_data_[]; static const BitSet _tokenSet_0; static const unsigned long _tokenSet_1_data_[]; static const BitSet _tokenSet_1; static const unsigned long _tokenSet_2_data_[]; static const BitSet _tokenSet_2; static const unsigned long _tokenSet_3_data_[]; static const BitSet _tokenSet_3; static const unsigned long _tokenSet_4_data_[]; static const BitSet _tokenSet_4; static const unsigned long _tokenSet_5_data_[]; static const BitSet _tokenSet_5; static const unsigned long _tokenSet_6_data_[]; static const BitSet _tokenSet_6; }; #endif /*INC_GrpLexer_hpp_*/ grcompiler-5.2.1/compiler/GrpLineAndFile.hpp000066400000000000000000000070771411153030700207760ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrpLineAndFile.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: A simple class to hold the line number and file name for tokens and objects. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef LINENFILE_INCLUDED #define LINENFILE_INCLUDED #include class GrpLineAndFile // hungarian: lnf (line-n-file) { public: // Constructors: GrpLineAndFile() : m_nLinePre(-1), m_nLineOrig(-1) { } GrpLineAndFile(int nPre, int nOrig, std::string sta) : m_nLinePre(nPre), m_nLineOrig(nOrig), m_staFile(sta) { } // copy constructor GrpLineAndFile(const GrpLineAndFile & lnf) { m_nLinePre = lnf.m_nLinePre; m_nLineOrig = lnf.m_nLineOrig; m_staFile = lnf.m_staFile; } ~GrpLineAndFile() { } GrpLineAndFile & operator=(const GrpLineAndFile & lnf) { m_nLinePre = lnf.m_nLinePre; m_nLineOrig = lnf.m_nLineOrig; m_staFile = lnf.m_staFile; return *this; } // Getters and setters: int PreProcessedLine() const { return m_nLinePre; }; int OriginalLine() const { return m_nLineOrig; } std::string File() const { return m_staFile; } void SetOriginalLine(int n) { m_nLineOrig = n; } void SetPreProcessedLine(int n) { m_nLinePre = n; } void SetFile(std::string sta) { m_staFile = sta; } void CopyLineAndFile(GrpLineAndFile & lnf) { m_nLinePre = lnf.m_nLinePre; m_nLineOrig = lnf.m_nLineOrig; m_staFile = lnf.m_staFile; } bool NotSet() { return m_nLinePre == -1; } bool operator==(GrpLineAndFile & lnf) { if (m_nLinePre == 0 && lnf.m_nLinePre == 0) return (m_nLineOrig == lnf.m_nLineOrig); // eg, preprocessor errors else return m_nLinePre == lnf.m_nLinePre; } bool operator<(GrpLineAndFile & lnf) { if (m_nLinePre == 0 && lnf.m_nLinePre == 0) return (m_nLineOrig < lnf.m_nLineOrig); // eg, preprocessor errors else return m_nLinePre < lnf.m_nLinePre; } void WriteToStream(std::ostream & strmOut, bool fNoPath) { size_t ich = m_staFile.length(); // Strip off the file path. while (fNoPath && ich > 0 && m_staFile[ich - 1] != '\\') ich--; std::string staStripped = m_staFile.substr(ich, m_staFile.length() - ich); strmOut << staStripped << "(" << m_nLineOrig << ")"; } std::string FileWithPath(std::string staPath) // append the given path unless the file has an absolute path { std::string staResult; if (m_staFile == "") staResult = m_staFile; else if (m_staFile[0] == '/' || m_staFile[1] == ':') // / is Linux, C: is Windows { // Absolute path staResult = m_staFile; } else { // Relative path staResult = staPath; staResult.append(m_staFile); } // Make all the slashes consistent. #ifdef _WIN32 char chSlash = '\\'; #else char chSlash = '/'; #endif // _WIN32 for (size_t ich = 0; ich < staResult.length(); ich++) { if (staResult[ich] == '\\' || staResult[ich] == '/') staResult[ich] = chSlash; } return staResult; } protected: // instance variables: int m_nLinePre; // line in pre-processed file int m_nLineOrig; // actual line in original file std::string m_staFile; // original file name public: // for test procedures: void test_SetLineNumbers(int n) { m_nLinePre = n; m_nLineOrig = n; } }; #endif // !LINENFILE_INCLUDED grcompiler-5.2.1/compiler/GrpParser.cpp000066400000000000000000006052361411153030700201140ustar00rootroot00000000000000/* * ANTLR-generated file resulting from grammar c:\graphite1\grcompiler\compiler\grpparser.g * * Terence Parr, MageLang Institute * with John Lilley, Empathy Software * ANTLR Version 2.6.0; 1996-1999 */ #include "GrpParser.hpp" #include "GrpParserTokenTypes.hpp" #include "Antlr/NoViableAltException.hpp" #include "Antlr/SemanticException.hpp" // Insert at the beginning of the GrpParser.cpp file #pragma warning(disable:4101) #include "Grp.h" // This function needs to go in the .cpp file, not the .hpp file, after the // GrpASTNode class is defined. void GrpParser::init(GrpTokenStreamFilter & tsf) { m_ptsf = &tsf; setASTNodeFactory(&GrpASTNode::factory); } void GrpParser::reportError(const ParserException& ex) { // Pipe the error back through the token stream filter, so it can supply the // line-and-file information. m_ptsf->ReportParserError(ex); } GrpParser::GrpParser(TokenBuffer& tokenBuf, int k) : LLkParser(tokenBuf,k) { setTokenNames(_tokenNames); } GrpParser::GrpParser(TokenBuffer& tokenBuf) : LLkParser(tokenBuf,3) { setTokenNames(_tokenNames); } GrpParser::GrpParser(TokenStream& lexer, int k) : LLkParser(lexer,k) { setTokenNames(_tokenNames); } GrpParser::GrpParser(TokenStream& lexer) : LLkParser(lexer,3) { setTokenNames(_tokenNames); } GrpParser::GrpParser(const ParserSharedInputState& state) : LLkParser(state,3) { setTokenNames(_tokenNames); } void GrpParser::renderDescription() { returnAST = nullAST; ASTPair currentAST; RefAST renderDescription_AST = nullAST; RefAST D_AST = nullAST; try { // for error handling declarationList(); D_AST = returnAST; RefAST tmp1_AST = nullAST; tmp1_AST = astFactory.create(LT(1)); match(Token::EOF_TYPE); renderDescription_AST = currentAST.root; renderDescription_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Ztop))->add(D_AST)); currentAST.root = renderDescription_AST; currentAST.child = renderDescription_AST!=nullAST &&renderDescription_AST->getFirstChild()!=nullAST ? renderDescription_AST->getFirstChild() : renderDescription_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_0); } returnAST = renderDescription_AST; } void GrpParser::declarationList() { returnAST = nullAST; ASTPair currentAST; RefAST declarationList_AST = nullAST; try { // for error handling { do { switch ( LA(1)) { case IDENT: case LITERAL_glyph: case LITERAL_position: { globalDecl(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_environment: case LITERAL_table: { topDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop4; } } } while (true); _loop4:; } declarationList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_0); } returnAST = declarationList_AST; } void GrpParser::globalDecl() { returnAST = nullAST; ASTPair currentAST; RefAST globalDecl_AST = nullAST; try { // for error handling identDot(); astFactory.addASTChild(currentAST, returnAST); { switch ( LA(1)) { case OP_EQ: { RefAST tmp2_AST = nullAST; tmp2_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp2_AST); match(OP_EQ); break; } case OP_PLUSEQUAL: { RefAST tmp3_AST = nullAST; tmp3_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp3_AST); match(OP_PLUSEQUAL); break; } default: { throw NoViableAltException(LT(1)); } } } { if ((LA(1)==OP_LPAREN) && (_tokenSet_1.member(LA(2))) && (_tokenSet_2.member(LA(3)))) { RefAST tmp4_AST = nullAST; tmp4_AST = astFactory.create(LT(1)); match(OP_LPAREN); exprList(); astFactory.addASTChild(currentAST, returnAST); RefAST tmp5_AST = nullAST; tmp5_AST = astFactory.create(LT(1)); match(OP_RPAREN); } else if ((_tokenSet_1.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { expr(); astFactory.addASTChild(currentAST, returnAST); } else { throw NoViableAltException(LT(1)); } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp6_AST = nullAST; tmp6_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case Token::EOF_TYPE: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_glyph: case LITERAL_position: { break; } default: { throw NoViableAltException(LT(1)); } } } globalDecl_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_5); } returnAST = globalDecl_AST; } void GrpParser::topDecl() { returnAST = nullAST; ASTPair currentAST; RefAST topDecl_AST = nullAST; try { // for error handling switch ( LA(1)) { case LITERAL_environment: { topEnvironDecl(); astFactory.addASTChild(currentAST, returnAST); topDecl_AST = currentAST.root; break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); topDecl_AST = currentAST.root; break; } default: { throw NoViableAltException(LT(1)); } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_4); } returnAST = topDecl_AST; } void GrpParser::topEnvironDecl() { returnAST = nullAST; ASTPair currentAST; RefAST topEnvironDecl_AST = nullAST; try { // for error handling RefAST tmp7_AST = nullAST; tmp7_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp7_AST); match(LITERAL_environment); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_glyph: case LITERAL_position: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp8_AST = nullAST; tmp8_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_glyph: case LITERAL_position: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case LITERAL_environment: case LITERAL_table: { topDecl(); astFactory.addASTChild(currentAST, returnAST); break; } case IDENT: case LITERAL_glyph: case LITERAL_position: { globalDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop14; } } } while (true); _loop14:; } RefAST tmp9_AST = nullAST; tmp9_AST = astFactory.create(LT(1)); match(LITERAL_endenvironment); { if ((LA(1)==OP_SEMI) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp10_AST = nullAST; tmp10_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_4.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } topEnvironDecl_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_4); } returnAST = topEnvironDecl_AST; } void GrpParser::tableDecl() { returnAST = nullAST; ASTPair currentAST; RefAST tableDecl_AST = nullAST; try { // for error handling RefAST tmp11_AST = nullAST; tmp11_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp11_AST); match(LITERAL_table); { if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_name)) { tableName(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_glyph)) { tableGlyph(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_feature)) { tableFeature(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_language)) { tableLanguage(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_substitution)) { tableSub(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_justification)) { tableJust(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_position||LA(2)==LITERAL_positioning)) { tablePos(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==LITERAL_linebreak)) { tableLineBreak(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_LPAREN) && (LA(2)==IDENT)) { tableOther(); astFactory.addASTChild(currentAST, returnAST); } else { throw NoViableAltException(LT(1)); } } RefAST tmp12_AST = nullAST; tmp12_AST = astFactory.create(LT(1)); match(LITERAL_endtable); { if ((LA(1)==OP_SEMI) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp13_AST = nullAST; tmp13_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_4.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } tableDecl_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_4); } returnAST = tableDecl_AST; } void GrpParser::identDot() { returnAST = nullAST; ASTPair currentAST; RefAST identDot_AST = nullAST; try { // for error handling { if ((LA(1)==IDENT||LA(1)==LITERAL_position) && (LA(2)==OP_DOT) && (LA(3)==IDENT||LA(3)==LITERAL_glyph||LA(3)==LITERAL_position)) { { switch ( LA(1)) { case IDENT: { RefAST tmp14_AST = nullAST; tmp14_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp14_AST); match(IDENT); break; } case LITERAL_position: { RefAST tmp15_AST = nullAST; tmp15_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp15_AST); match(LITERAL_position); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp16_AST = nullAST; tmp16_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp16_AST); match(OP_DOT); identDot(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==IDENT||LA(1)==LITERAL_glyph||LA(1)==LITERAL_position) && (_tokenSet_6.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { { switch ( LA(1)) { case IDENT: { RefAST tmp17_AST = nullAST; tmp17_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp17_AST); match(IDENT); break; } case LITERAL_position: { RefAST tmp18_AST = nullAST; tmp18_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp18_AST); match(LITERAL_position); break; } case LITERAL_glyph: { RefAST tmp19_AST = nullAST; tmp19_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp19_AST); match(LITERAL_glyph); break; } default: { throw NoViableAltException(LT(1)); } } } } else { throw NoViableAltException(LT(1)); } } identDot_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_6); } returnAST = identDot_AST; } void GrpParser::exprList() { returnAST = nullAST; ASTPair currentAST; RefAST exprList_AST = nullAST; try { // for error handling expr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_COMMA)) { RefAST tmp20_AST = nullAST; tmp20_AST = astFactory.create(LT(1)); match(OP_COMMA); expr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop368; } } while (true); _loop368:; } exprList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_7); } returnAST = exprList_AST; } void GrpParser::expr() { returnAST = nullAST; ASTPair currentAST; RefAST expr_AST = nullAST; try { // for error handling conditionalExpr(); astFactory.addASTChild(currentAST, returnAST); expr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_8); } returnAST = expr_AST; } void GrpParser::directives() { returnAST = nullAST; ASTPair currentAST; RefAST directives_AST = nullAST; RefAST D_AST = nullAST; try { // for error handling directiveList(); D_AST = returnAST; directives_AST = currentAST.root; directives_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zdirectives))->add(D_AST)); currentAST.root = directives_AST; currentAST.child = directives_AST!=nullAST &&directives_AST->getFirstChild()!=nullAST ? directives_AST->getFirstChild() : directives_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_9); } returnAST = directives_AST; } void GrpParser::directiveList() { returnAST = nullAST; ASTPair currentAST; RefAST directiveList_AST = nullAST; try { // for error handling RefAST tmp21_AST = nullAST; tmp21_AST = astFactory.create(LT(1)); match(OP_LBRACE); { switch ( LA(1)) { case IDENT: { directive(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_SEMI) && (LA(2)==IDENT) && (LA(3)==OP_EQ)) { RefAST tmp22_AST = nullAST; tmp22_AST = astFactory.create(LT(1)); match(OP_SEMI); directive(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop20; } } while (true); _loop20:; } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp23_AST = nullAST; tmp23_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp24_AST = nullAST; tmp24_AST = astFactory.create(LT(1)); match(OP_RBRACE); directiveList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_9); } returnAST = directiveList_AST; } void GrpParser::directive() { returnAST = nullAST; ASTPair currentAST; RefAST directive_AST = nullAST; try { // for error handling RefAST tmp25_AST = nullAST; tmp25_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp25_AST); match(IDENT); RefAST tmp26_AST = nullAST; tmp26_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp26_AST); match(OP_EQ); expr(); astFactory.addASTChild(currentAST, returnAST); directive_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_10); } returnAST = directive_AST; } void GrpParser::tableName() { returnAST = nullAST; ASTPair currentAST; RefAST tableName_AST = nullAST; try { // for error handling RefAST tmp27_AST = nullAST; tmp27_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp28_AST = nullAST; tmp28_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp28_AST); match(LITERAL_name); RefAST tmp29_AST = nullAST; tmp29_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp30_AST = nullAST; tmp30_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case LITERAL_environment: { nameEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case IDENT: case LIT_INT: { nameSpecList(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop30; } } } while (true); _loop30:; } tableName_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableName_AST; } void GrpParser::tableGlyph() { returnAST = nullAST; ASTPair currentAST; RefAST tableGlyph_AST = nullAST; try { // for error handling RefAST tmp31_AST = nullAST; tmp31_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp32_AST = nullAST; tmp32_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp32_AST); match(LITERAL_glyph); RefAST tmp33_AST = nullAST; tmp33_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp34_AST = nullAST; tmp34_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case LITERAL_environment: { glyphEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case IDENT: { glyphEntry(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop64; } } } while (true); _loop64:; } tableGlyph_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableGlyph_AST; } void GrpParser::tableFeature() { returnAST = nullAST; ASTPair currentAST; RefAST tableFeature_AST = nullAST; try { // for error handling RefAST tmp35_AST = nullAST; tmp35_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp36_AST = nullAST; tmp36_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp36_AST); match(LITERAL_feature); RefAST tmp37_AST = nullAST; tmp37_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_name: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp38_AST = nullAST; tmp38_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_name: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case LITERAL_environment: { featureEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case IDENT: case LITERAL_name: case LIT_INT: { featureSpecList(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop129; } } } while (true); _loop129:; } tableFeature_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableFeature_AST; } void GrpParser::tableLanguage() { returnAST = nullAST; ASTPair currentAST; RefAST tableLanguage_AST = nullAST; try { // for error handling RefAST tmp39_AST = nullAST; tmp39_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp40_AST = nullAST; tmp40_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp40_AST); match(LITERAL_language); RefAST tmp41_AST = nullAST; tmp41_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp42_AST = nullAST; tmp42_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case LITERAL_environment: { languageEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case IDENT: { languageSpecList(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop156; } } } while (true); _loop156:; } tableLanguage_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableLanguage_AST; } void GrpParser::tableSub() { returnAST = nullAST; ASTPair currentAST; RefAST tableSub_AST = nullAST; try { // for error handling RefAST tmp43_AST = nullAST; tmp43_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp44_AST = nullAST; tmp44_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp44_AST); match(LITERAL_substitution); RefAST tmp45_AST = nullAST; tmp45_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp46_AST = nullAST; tmp46_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { subEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop187; } } while (true); _loop187:; } tableSub_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableSub_AST; } void GrpParser::tableJust() { returnAST = nullAST; ASTPair currentAST; RefAST tableJust_AST = nullAST; try { // for error handling RefAST tmp47_AST = nullAST; tmp47_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp48_AST = nullAST; tmp48_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp48_AST); match(LITERAL_justification); RefAST tmp49_AST = nullAST; tmp49_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp50_AST = nullAST; tmp50_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { subEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop269; } } while (true); _loop269:; } tableJust_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableJust_AST; } void GrpParser::tablePos() { returnAST = nullAST; ASTPair currentAST; RefAST tablePos_AST = nullAST; try { // for error handling RefAST tmp51_AST = nullAST; tmp51_AST = astFactory.create(LT(1)); match(OP_LPAREN); { switch ( LA(1)) { case LITERAL_position: { RefAST tmp52_AST = nullAST; tmp52_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp52_AST); match(LITERAL_position); break; } case LITERAL_positioning: { RefAST tmp53_AST = nullAST; tmp53_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp53_AST); match(LITERAL_positioning); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp54_AST = nullAST; tmp54_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp55_AST = nullAST; tmp55_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { posEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop275; } } while (true); _loop275:; } tablePos_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tablePos_AST; } void GrpParser::tableLineBreak() { returnAST = nullAST; ASTPair currentAST; RefAST tableLineBreak_AST = nullAST; try { // for error handling RefAST tmp56_AST = nullAST; tmp56_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp57_AST = nullAST; tmp57_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp57_AST); match(LITERAL_linebreak); RefAST tmp58_AST = nullAST; tmp58_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp59_AST = nullAST; tmp59_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { posEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop319; } } while (true); _loop319:; } tableLineBreak_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableLineBreak_AST; } void GrpParser::tableOther() { returnAST = nullAST; ASTPair currentAST; RefAST tableOther_AST = nullAST; try { // for error handling RefAST tmp60_AST = nullAST; tmp60_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp61_AST = nullAST; tmp61_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp61_AST); match(IDENT); RefAST tmp62_AST = nullAST; tmp62_AST = astFactory.create(LT(1)); match(OP_RPAREN); { if ((LA(1)==OP_LBRACE) && (LA(2)==OP_RBRACE||LA(2)==IDENT) && ((LA(3) >= OP_EQ && LA(3) <= AT_IDENT))) { directives(); astFactory.addASTChild(currentAST, returnAST); } else if (((LA(1) >= OP_EQ && LA(1) <= AT_IDENT)) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } { if ((LA(1)==OP_SEMI) && ((LA(2) >= OP_EQ && LA(2) <= AT_IDENT)) && (_tokenSet_4.member(LA(3)))) { RefAST tmp63_AST = nullAST; tmp63_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if (((LA(1) >= OP_EQ && LA(1) <= AT_IDENT)) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } { do { if ((_tokenSet_13.member(LA(1)))) { otherEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop341; } } while (true); _loop341:; } tableOther_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_11); } returnAST = tableOther_AST; } void GrpParser::nameEnv() { returnAST = nullAST; ASTPair currentAST; RefAST nameEnv_AST = nullAST; try { // for error handling RefAST tmp64_AST = nullAST; tmp64_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp64_AST); match(LITERAL_environment); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp65_AST = nullAST; tmp65_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case IDENT: case LIT_INT: { nameSpecList(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_environment: { nameEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop35; } } } while (true); _loop35:; } RefAST tmp66_AST = nullAST; tmp66_AST = astFactory.create(LT(1)); match(LITERAL_endenvironment); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp67_AST = nullAST; tmp67_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } nameEnv_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_14); } returnAST = nameEnv_AST; } void GrpParser::nameSpecList() { returnAST = nullAST; ASTPair currentAST; RefAST nameSpecList_AST = nullAST; try { // for error handling { if ((LA(1)==IDENT||LA(1)==LIT_INT) && (LA(2)==OP_LBRACE)) { nameSpecStruct(); astFactory.addASTChild(currentAST, returnAST); { if ((LA(1)==IDENT||LA(1)==LIT_INT) && (_tokenSet_15.member(LA(2))) && (_tokenSet_16.member(LA(3)))) { nameSpecList(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_17.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } } else if ((LA(1)==IDENT||LA(1)==LIT_INT) && (LA(2)==OP_EQ||LA(2)==OP_DOT||LA(2)==OP_PLUS_EQUAL)) { nameSpecFlat(); astFactory.addASTChild(currentAST, returnAST); { if ((LA(1)==OP_SEMI) && (LA(2)==IDENT||LA(2)==LIT_INT) && (_tokenSet_15.member(LA(3)))) { RefAST tmp68_AST = nullAST; tmp68_AST = astFactory.create(LT(1)); match(OP_SEMI); nameSpecList(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_17.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } { if ((LA(1)==OP_SEMI) && (_tokenSet_17.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp69_AST = nullAST; tmp69_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_17.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } } else { throw NoViableAltException(LT(1)); } } nameSpecList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_17); } returnAST = nameSpecList_AST; } void GrpParser::nameSpecStruct() { returnAST = nullAST; ASTPair currentAST; RefAST nameSpecStruct_AST = nullAST; RefToken N = nullToken; RefAST N_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_INT: { N = LT(1); N_AST = astFactory.create(N); match(LIT_INT); break; } case IDENT: { I = LT(1); I_AST = astFactory.create(I); match(IDENT); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp70_AST = nullAST; tmp70_AST = astFactory.create(LT(1)); match(OP_LBRACE); { switch ( LA(1)) { case IDENT: case LIT_INT: { nameSpecList(); X_AST = returnAST; break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp71_AST = nullAST; tmp71_AST = astFactory.create(LT(1)); match(OP_RBRACE); { if ((LA(1)==OP_SEMI) && (_tokenSet_17.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp72_AST = nullAST; tmp72_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_17.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } nameSpecStruct_AST = currentAST.root; nameSpecStruct_AST = astFactory.make( (new ASTArray(4))->add(astFactory.create(ZdotStruct))->add(N_AST)->add(I_AST)->add(X_AST)); currentAST.root = nameSpecStruct_AST; currentAST.child = nameSpecStruct_AST!=nullAST &&nameSpecStruct_AST->getFirstChild()!=nullAST ? nameSpecStruct_AST->getFirstChild() : nameSpecStruct_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_17); } returnAST = nameSpecStruct_AST; } void GrpParser::nameSpecFlat() { returnAST = nullAST; ASTPair currentAST; RefAST nameSpecFlat_AST = nullAST; RefToken N = nullToken; RefAST N_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefToken D = nullToken; RefAST D_AST = nullAST; RefAST X1_AST = nullAST; RefAST X2_AST = nullAST; RefToken E1 = nullToken; RefAST E1_AST = nullAST; RefToken E2 = nullToken; RefAST E2_AST = nullAST; RefAST Vi1_AST = nullAST; RefAST Vi2_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_INT: { N = LT(1); N_AST = astFactory.create(N); match(LIT_INT); break; } case IDENT: { I = LT(1); I_AST = astFactory.create(I); match(IDENT); break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_DOT: { D = LT(1); D_AST = astFactory.create(D); match(OP_DOT); { if ((LA(1)==IDENT||LA(1)==LIT_INT) && (LA(2)==OP_EQ||LA(2)==OP_DOT||LA(2)==OP_PLUS_EQUAL)) { nameSpecFlat(); X1_AST = returnAST; } else if ((LA(1)==IDENT||LA(1)==LIT_INT) && (LA(2)==OP_LBRACE)) { nameSpecStruct(); X2_AST = returnAST; } else { throw NoViableAltException(LT(1)); } } nameSpecFlat_AST = currentAST.root; nameSpecFlat_AST = astFactory.make( (new ASTArray(5))->add(D_AST)->add(N_AST)->add(I_AST)->add(X1_AST)->add(X2_AST)); currentAST.root = nameSpecFlat_AST; currentAST.child = nameSpecFlat_AST!=nullAST &&nameSpecFlat_AST->getFirstChild()!=nullAST ? nameSpecFlat_AST->getFirstChild() : nameSpecFlat_AST; currentAST.advanceChildToEnd(); break; } case OP_EQ: case OP_PLUS_EQUAL: { { switch ( LA(1)) { case OP_EQ: { E1 = LT(1); E1_AST = astFactory.create(E1); match(OP_EQ); break; } case OP_PLUS_EQUAL: { E2 = LT(1); E2_AST = astFactory.create(E2); match(OP_PLUS_EQUAL); break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case LIT_INT: case OP_PLUS: case OP_MINUS: case LITERAL_true: case LITERAL_false: { signedInt(); Vi1_AST = returnAST; break; } case OP_LPAREN: case LIT_STRING: case LITERAL_string: { stringDefn(); Vi2_AST = returnAST; break; } default: { throw NoViableAltException(LT(1)); } } } nameSpecFlat_AST = currentAST.root; nameSpecFlat_AST = astFactory.make( (new ASTArray(6))->add(E1_AST)->add(E2_AST)->add(N_AST)->add(I_AST)->add(Vi1_AST)->add(Vi2_AST)); currentAST.root = nameSpecFlat_AST; currentAST.child = nameSpecFlat_AST!=nullAST &&nameSpecFlat_AST->getFirstChild()!=nullAST ? nameSpecFlat_AST->getFirstChild() : nameSpecFlat_AST; currentAST.advanceChildToEnd(); break; } default: { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_17); } returnAST = nameSpecFlat_AST; } void GrpParser::signedInt() { returnAST = nullAST; ASTPair currentAST; RefAST signedInt_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LITERAL_true: { RefAST tmp73_AST = nullAST; tmp73_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp73_AST); match(LITERAL_true); break; } case LITERAL_false: { RefAST tmp74_AST = nullAST; tmp74_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp74_AST); match(LITERAL_false); break; } case LIT_INT: case OP_PLUS: case OP_MINUS: { { switch ( LA(1)) { case OP_PLUS: { RefAST tmp75_AST = nullAST; tmp75_AST = astFactory.create(LT(1)); match(OP_PLUS); break; } case OP_MINUS: { RefAST tmp76_AST = nullAST; tmp76_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp76_AST); match(OP_MINUS); break; } case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp77_AST = nullAST; tmp77_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp77_AST); match(LIT_INT); break; } default: { throw NoViableAltException(LT(1)); } } } signedInt_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_18); } returnAST = signedInt_AST; } void GrpParser::stringDefn() { returnAST = nullAST; ASTPair currentAST; RefAST stringDefn_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_STRING: { RefAST tmp78_AST = nullAST; tmp78_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp78_AST); match(LIT_STRING); break; } case LITERAL_string: { stringFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: { { RefAST tmp79_AST = nullAST; tmp79_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp79_AST); match(OP_LPAREN); stringDefn(); astFactory.addASTChild(currentAST, returnAST); { do { if ((_tokenSet_19.member(LA(1)))) { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp80_AST = nullAST; tmp80_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp80_AST); match(OP_COMMA); break; } case OP_LPAREN: case LIT_STRING: case LITERAL_string: { break; } default: { throw NoViableAltException(LT(1)); } } } stringDefn(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop57; } } while (true); _loop57:; } RefAST tmp81_AST = nullAST; tmp81_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp81_AST); match(OP_RPAREN); } break; } default: { throw NoViableAltException(LT(1)); } } } stringDefn_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_20); } returnAST = stringDefn_AST; } void GrpParser::stringFunc() { returnAST = nullAST; ASTPair currentAST; RefAST stringFunc_AST = nullAST; try { // for error handling RefAST tmp82_AST = nullAST; tmp82_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp82_AST); match(LITERAL_string); RefAST tmp83_AST = nullAST; tmp83_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp84_AST = nullAST; tmp84_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp84_AST); match(LIT_STRING); { switch ( LA(1)) { case OP_COMMA: { RefAST tmp85_AST = nullAST; tmp85_AST = astFactory.create(LT(1)); match(OP_COMMA); RefAST tmp86_AST = nullAST; tmp86_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp86_AST); match(LIT_INT); break; } case OP_RPAREN: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp87_AST = nullAST; tmp87_AST = astFactory.create(LT(1)); match(OP_RPAREN); stringFunc_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_20); } returnAST = stringFunc_AST; } void GrpParser::glyphEnv() { returnAST = nullAST; ASTPair currentAST; RefAST glyphEnv_AST = nullAST; try { // for error handling RefAST tmp88_AST = nullAST; tmp88_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp88_AST); match(LITERAL_environment); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp89_AST = nullAST; tmp89_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case IDENT: { glyphEntry(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_environment: { glyphEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop69; } } } while (true); _loop69:; } RefAST tmp90_AST = nullAST; tmp90_AST = astFactory.create(LT(1)); match(LITERAL_endenvironment); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp91_AST = nullAST; tmp91_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: { break; } default: { throw NoViableAltException(LT(1)); } } } glyphEnv_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_21); } returnAST = glyphEnv_AST; } void GrpParser::glyphEntry() { returnAST = nullAST; ASTPair currentAST; RefAST glyphEntry_AST = nullAST; try { // for error handling { if ((LA(1)==IDENT) && (_tokenSet_22.member(LA(2)))) { glyphContents(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==IDENT) && (LA(2)==OP_LBRACE||LA(2)==OP_DOT)) { glyphAttrs(); astFactory.addASTChild(currentAST, returnAST); } else { throw NoViableAltException(LT(1)); } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp92_AST = nullAST; tmp92_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: { break; } default: { throw NoViableAltException(LT(1)); } } } glyphEntry_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_21); } returnAST = glyphEntry_AST; } void GrpParser::glyphContents() { returnAST = nullAST; ASTPair currentAST; RefAST glyphContents_AST = nullAST; try { // for error handling RefAST tmp93_AST = nullAST; tmp93_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp93_AST); match(IDENT); { { switch ( LA(1)) { case OP_EQ: { RefAST tmp94_AST = nullAST; tmp94_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp94_AST); match(OP_EQ); break; } case OP_PLUSEQUAL: { RefAST tmp95_AST = nullAST; tmp95_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp95_AST); match(OP_PLUSEQUAL); break; } case OP_ANDEQUAL: { RefAST tmp96_AST = nullAST; tmp96_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp96_AST); match(OP_ANDEQUAL); break; } case OP_MINUSEQUAL: { RefAST tmp97_AST = nullAST; tmp97_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp97_AST); match(OP_MINUSEQUAL); break; } default: { throw NoViableAltException(LT(1)); } } } glyphSpec(); astFactory.addASTChild(currentAST, returnAST); } { if ((_tokenSet_23.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { attributes(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_24.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } glyphContents_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_24); } returnAST = glyphContents_AST; } void GrpParser::glyphAttrs() { returnAST = nullAST; ASTPair currentAST; RefAST glyphAttrs_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefAST A_AST = nullAST; RefAST X1_AST = nullAST; RefAST X2_AST = nullAST; RefAST X3_AST = nullAST; try { // for error handling I = LT(1); I_AST = astFactory.create(I); match(IDENT); { switch ( LA(1)) { case OP_LBRACE: { RefAST tmp98_AST = nullAST; tmp98_AST = astFactory.create(LT(1)); match(OP_LBRACE); { switch ( LA(1)) { case IDENT: case LIT_INT: case LITERAL_glyph: case LITERAL_justify: case LITERAL_min: case LITERAL_max: { attrItemList(); X1_AST = returnAST; break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp99_AST = nullAST; tmp99_AST = astFactory.create(LT(1)); match(OP_RBRACE); A_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zattrs))->add(X1_AST)); break; } case OP_DOT: { RefAST tmp100_AST = nullAST; tmp100_AST = astFactory.create(LT(1)); match(OP_DOT); { if ((_tokenSet_25.member(LA(1))) && (_tokenSet_26.member(LA(2)))) { attrItemFlat(); X2_AST = returnAST; } else if ((_tokenSet_25.member(LA(1))) && (LA(2)==OP_LBRACE)) { attrItemStruct(); X3_AST = returnAST; } else { throw NoViableAltException(LT(1)); } } A_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(Zattrs))->add(X2_AST)->add(X3_AST)); break; } default: { throw NoViableAltException(LT(1)); } } } glyphAttrs_AST = currentAST.root; glyphAttrs_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(OP_PLUSEQUAL))->add(I_AST)->add(A_AST)); currentAST.root = glyphAttrs_AST; currentAST.child = glyphAttrs_AST!=nullAST &&glyphAttrs_AST->getFirstChild()!=nullAST ? glyphAttrs_AST->getFirstChild() : glyphAttrs_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_24); } returnAST = glyphAttrs_AST; } void GrpParser::glyphSpec() { returnAST = nullAST; ASTPair currentAST; RefAST glyphSpec_AST = nullAST; try { // for error handling { switch ( LA(1)) { case IDENT: { RefAST tmp101_AST = nullAST; tmp101_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp101_AST); match(IDENT); break; } case LITERAL_codepoint: { codepointFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_glyphid: { glyphidFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_postscript: { postscriptFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_unicode: { unicodeFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LIT_UHEX: { unicodeCodepoint(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_pseudo: { pseudoFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: { { RefAST tmp102_AST = nullAST; tmp102_AST = astFactory.create(LT(1)); match(OP_LPAREN); { switch ( LA(1)) { case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: { glyphSpec(); astFactory.addASTChild(currentAST, returnAST); { do { if ((_tokenSet_27.member(LA(1)))) { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp103_AST = nullAST; tmp103_AST = astFactory.create(LT(1)); match(OP_COMMA); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: { break; } default: { throw NoViableAltException(LT(1)); } } } glyphSpec(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop88; } } while (true); _loop88:; } break; } case OP_RPAREN: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp104_AST = nullAST; tmp104_AST = astFactory.create(LT(1)); match(OP_RPAREN); } break; } default: { throw NoViableAltException(LT(1)); } } } glyphSpec_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_28); } returnAST = glyphSpec_AST; } void GrpParser::attributes() { returnAST = nullAST; ASTPair currentAST; RefAST attributes_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_LBRACE: { RefAST tmp105_AST = nullAST; tmp105_AST = astFactory.create(LT(1)); match(OP_LBRACE); { switch ( LA(1)) { case IDENT: case LIT_INT: case LITERAL_glyph: case LITERAL_justify: case LITERAL_min: case LITERAL_max: { attrItemList(); X_AST = returnAST; break; } case OP_SEMI: case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp106_AST = nullAST; tmp106_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp107_AST = nullAST; tmp107_AST = astFactory.create(LT(1)); match(OP_RBRACE); attributes_AST = currentAST.root; attributes_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zattrs))->add(X_AST)); currentAST.root = attributes_AST; currentAST.child = attributes_AST!=nullAST &&attributes_AST->getFirstChild()!=nullAST ? attributes_AST->getFirstChild() : attributes_AST; currentAST.advanceChildToEnd(); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_29); } returnAST = attributes_AST; } void GrpParser::attrItemList() { returnAST = nullAST; ASTPair currentAST; RefAST attrItemList_AST = nullAST; try { // for error handling { if ((_tokenSet_25.member(LA(1))) && (LA(2)==OP_LBRACE)) { attrItemStruct(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_25.member(LA(1))) && (_tokenSet_26.member(LA(2)))) { attrItemFlat(); astFactory.addASTChild(currentAST, returnAST); } else { throw NoViableAltException(LT(1)); } } { if ((LA(1)==OP_SEMI) && (_tokenSet_25.member(LA(2))) && (_tokenSet_30.member(LA(3)))) { RefAST tmp108_AST = nullAST; tmp108_AST = astFactory.create(LT(1)); match(OP_SEMI); attrItemList(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==OP_SEMI||LA(1)==OP_RBRACE) && (_tokenSet_31.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } attrItemList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_10); } returnAST = attrItemList_AST; } void GrpParser::attrItemFlat() { returnAST = nullAST; ASTPair currentAST; RefAST attrItemFlat_AST = nullAST; RefAST I_AST = nullAST; RefToken D = nullToken; RefAST D_AST = nullAST; RefAST X1_AST = nullAST; RefAST X2_AST = nullAST; RefAST E_AST = nullAST; RefAST V1_AST = nullAST; RefAST V2_AST = nullAST; try { // for error handling { attrName(); I_AST = returnAST; } { switch ( LA(1)) { case OP_DOT: { D = LT(1); D_AST = astFactory.create(D); match(OP_DOT); { if ((_tokenSet_25.member(LA(1))) && (_tokenSet_26.member(LA(2)))) { attrItemFlat(); X1_AST = returnAST; } else if ((_tokenSet_25.member(LA(1))) && (LA(2)==OP_LBRACE)) { attrItemStruct(); X2_AST = returnAST; } else { throw NoViableAltException(LT(1)); } } attrItemFlat_AST = currentAST.root; attrItemFlat_AST = astFactory.make( (new ASTArray(4))->add(D_AST)->add(I_AST)->add(X1_AST)->add(X2_AST)); currentAST.root = attrItemFlat_AST; currentAST.child = attrItemFlat_AST!=nullAST &&attrItemFlat_AST->getFirstChild()!=nullAST ? attrItemFlat_AST->getFirstChild() : attrItemFlat_AST; currentAST.advanceChildToEnd(); break; } case OP_EQ: case OP_PLUSEQUAL: case OP_MINUSEQUAL: case OP_DIVEQUAL: case OP_MULTEQUAL: { attrAssignOp(); E_AST = returnAST; { if ((LA(1)==IDENT) && (LA(2)==OP_LPAREN) && (_tokenSet_32.member(LA(3)))) { function(); V1_AST = returnAST; } else if ((_tokenSet_1.member(LA(1))) && (_tokenSet_33.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { expr(); V2_AST = returnAST; } else { throw NoViableAltException(LT(1)); } } attrItemFlat_AST = currentAST.root; attrItemFlat_AST = astFactory.make( (new ASTArray(4))->add(E_AST)->add(I_AST)->add(V1_AST)->add(V2_AST)); currentAST.root = attrItemFlat_AST; currentAST.child = attrItemFlat_AST!=nullAST &&attrItemFlat_AST->getFirstChild()!=nullAST ? attrItemFlat_AST->getFirstChild() : attrItemFlat_AST; currentAST.advanceChildToEnd(); break; } default: { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_34); } returnAST = attrItemFlat_AST; } void GrpParser::attrItemStruct() { returnAST = nullAST; ASTPair currentAST; RefAST attrItemStruct_AST = nullAST; RefAST I_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling { attrName(); I_AST = returnAST; } RefAST tmp109_AST = nullAST; tmp109_AST = astFactory.create(LT(1)); match(OP_LBRACE); { switch ( LA(1)) { case IDENT: case LIT_INT: case LITERAL_glyph: case LITERAL_justify: case LITERAL_min: case LITERAL_max: { attrItemList(); X_AST = returnAST; break; } case OP_SEMI: case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp110_AST = nullAST; tmp110_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp111_AST = nullAST; tmp111_AST = astFactory.create(LT(1)); match(OP_RBRACE); attrItemStruct_AST = currentAST.root; attrItemStruct_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(ZdotStruct))->add(I_AST)->add(X_AST)); currentAST.root = attrItemStruct_AST; currentAST.child = attrItemStruct_AST!=nullAST &&attrItemStruct_AST->getFirstChild()!=nullAST ? attrItemStruct_AST->getFirstChild() : attrItemStruct_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_34); } returnAST = attrItemStruct_AST; } void GrpParser::codepointFunc() { returnAST = nullAST; ASTPair currentAST; RefAST codepointFunc_AST = nullAST; RefToken F = nullToken; RefAST F_AST = nullAST; RefAST X_AST = nullAST; RefAST C_AST = nullAST; RefToken N = nullToken; RefAST N_AST = nullAST; try { // for error handling F = LT(1); F_AST = astFactory.create(F); match(LITERAL_codepoint); RefAST tmp112_AST = nullAST; tmp112_AST = astFactory.create(LT(1)); match(OP_LPAREN); codepointList(); X_AST = returnAST; { switch ( LA(1)) { case OP_COMMA: { RefAST tmp113_AST = nullAST; tmp113_AST = astFactory.create(LT(1)); match(OP_COMMA); N = LT(1); N_AST = astFactory.create(N); match(LIT_INT); C_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zcodepage))->add(N_AST)); break; } case OP_RPAREN: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp114_AST = nullAST; tmp114_AST = astFactory.create(LT(1)); match(OP_RPAREN); codepointFunc_AST = currentAST.root; codepointFunc_AST = astFactory.make( (new ASTArray(3))->add(F_AST)->add(C_AST)->add(X_AST)); currentAST.root = codepointFunc_AST; currentAST.child = codepointFunc_AST!=nullAST &&codepointFunc_AST->getFirstChild()!=nullAST ? codepointFunc_AST->getFirstChild() : codepointFunc_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_35); } returnAST = codepointFunc_AST; } void GrpParser::glyphidFunc() { returnAST = nullAST; ASTPair currentAST; RefAST glyphidFunc_AST = nullAST; try { // for error handling RefAST tmp115_AST = nullAST; tmp115_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp115_AST); match(LITERAL_glyphid); RefAST tmp116_AST = nullAST; tmp116_AST = astFactory.create(LT(1)); match(OP_LPAREN); intOrRange(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==LIT_INT||LA(1)==OP_COMMA)) { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp117_AST = nullAST; tmp117_AST = astFactory.create(LT(1)); match(OP_COMMA); break; } case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } intOrRange(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop107; } } while (true); _loop107:; } RefAST tmp118_AST = nullAST; tmp118_AST = astFactory.create(LT(1)); match(OP_RPAREN); glyphidFunc_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_35); } returnAST = glyphidFunc_AST; } void GrpParser::postscriptFunc() { returnAST = nullAST; ASTPair currentAST; RefAST postscriptFunc_AST = nullAST; try { // for error handling RefAST tmp119_AST = nullAST; tmp119_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp119_AST); match(LITERAL_postscript); RefAST tmp120_AST = nullAST; tmp120_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp121_AST = nullAST; tmp121_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp121_AST); match(LIT_STRING); { do { if ((LA(1)==LIT_STRING||LA(1)==OP_COMMA)) { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp122_AST = nullAST; tmp122_AST = astFactory.create(LT(1)); match(OP_COMMA); break; } case LIT_STRING: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp123_AST = nullAST; tmp123_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp123_AST); match(LIT_STRING); } else { goto _loop111; } } while (true); _loop111:; } RefAST tmp124_AST = nullAST; tmp124_AST = astFactory.create(LT(1)); match(OP_RPAREN); postscriptFunc_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_35); } returnAST = postscriptFunc_AST; } void GrpParser::unicodeFunc() { returnAST = nullAST; ASTPair currentAST; RefAST unicodeFunc_AST = nullAST; try { // for error handling RefAST tmp125_AST = nullAST; tmp125_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp125_AST); match(LITERAL_unicode); RefAST tmp126_AST = nullAST; tmp126_AST = astFactory.create(LT(1)); match(OP_LPAREN); intOrRange(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==LIT_INT||LA(1)==OP_COMMA)) { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp127_AST = nullAST; tmp127_AST = astFactory.create(LT(1)); match(OP_COMMA); break; } case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } intOrRange(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop115; } } while (true); _loop115:; } RefAST tmp128_AST = nullAST; tmp128_AST = astFactory.create(LT(1)); match(OP_RPAREN); unicodeFunc_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_35); } returnAST = unicodeFunc_AST; } void GrpParser::unicodeCodepoint() { returnAST = nullAST; ASTPair currentAST; RefAST unicodeCodepoint_AST = nullAST; RefAST U_AST = nullAST; try { // for error handling unicodeIntOrRange(); U_AST = returnAST; astFactory.addASTChild(currentAST, returnAST); unicodeCodepoint_AST = currentAST.root; unicodeCodepoint_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(ZuHex))->add(U_AST)); currentAST.root = unicodeCodepoint_AST; currentAST.child = unicodeCodepoint_AST!=nullAST &&unicodeCodepoint_AST->getFirstChild()!=nullAST ? unicodeCodepoint_AST->getFirstChild() : unicodeCodepoint_AST; currentAST.advanceChildToEnd(); unicodeCodepoint_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_35); } returnAST = unicodeCodepoint_AST; } void GrpParser::pseudoFunc() { returnAST = nullAST; ASTPair currentAST; RefAST pseudoFunc_AST = nullAST; try { // for error handling RefAST tmp129_AST = nullAST; tmp129_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp129_AST); match(LITERAL_pseudo); RefAST tmp130_AST = nullAST; tmp130_AST = astFactory.create(LT(1)); match(OP_LPAREN); { switch ( LA(1)) { case LITERAL_codepoint: { codepointFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_glyphid: { glyphidFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_postscript: { postscriptFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_unicode: { unicodeFunc(); astFactory.addASTChild(currentAST, returnAST); break; } case LIT_UHEX: { unicodeCodepoint(); astFactory.addASTChild(currentAST, returnAST); break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case LIT_INT: case OP_COMMA: case LIT_UHEX: { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp131_AST = nullAST; tmp131_AST = astFactory.create(LT(1)); match(OP_COMMA); break; } case LIT_INT: case LIT_UHEX: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case LIT_INT: { RefAST tmp132_AST = nullAST; tmp132_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp132_AST); match(LIT_INT); break; } case LIT_UHEX: { RefAST tmp133_AST = nullAST; tmp133_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp133_AST); match(LIT_UHEX); break; } default: { throw NoViableAltException(LT(1)); } } } break; } case OP_RPAREN: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp134_AST = nullAST; tmp134_AST = astFactory.create(LT(1)); match(OP_RPAREN); pseudoFunc_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_28); } returnAST = pseudoFunc_AST; } void GrpParser::codepointList() { returnAST = nullAST; ASTPair currentAST; RefAST codepointList_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_LPAREN: { { RefAST tmp135_AST = nullAST; tmp135_AST = astFactory.create(LT(1)); match(OP_LPAREN); codepointItem(); astFactory.addASTChild(currentAST, returnAST); { do { if ((_tokenSet_36.member(LA(1)))) { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp136_AST = nullAST; tmp136_AST = astFactory.create(LT(1)); match(OP_COMMA); break; } case LIT_INT: case LIT_STRING: case LIT_CHAR: { break; } default: { throw NoViableAltException(LT(1)); } } } codepointItem(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop101; } } while (true); _loop101:; } RefAST tmp137_AST = nullAST; tmp137_AST = astFactory.create(LT(1)); match(OP_RPAREN); } break; } case LIT_INT: case LIT_STRING: case LIT_CHAR: { codepointItem(); astFactory.addASTChild(currentAST, returnAST); break; } default: { throw NoViableAltException(LT(1)); } } } codepointList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_37); } returnAST = codepointList_AST; } void GrpParser::codepointItem() { returnAST = nullAST; ASTPair currentAST; RefAST codepointItem_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_STRING: { RefAST tmp138_AST = nullAST; tmp138_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp138_AST); match(LIT_STRING); break; } case LIT_INT: case LIT_CHAR: { charOrIntOrRange(); astFactory.addASTChild(currentAST, returnAST); break; } default: { throw NoViableAltException(LT(1)); } } } codepointItem_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_38); } returnAST = codepointItem_AST; } void GrpParser::charOrIntOrRange() { returnAST = nullAST; ASTPair currentAST; RefAST charOrIntOrRange_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_CHAR: { RefAST tmp139_AST = nullAST; tmp139_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp139_AST); match(LIT_CHAR); break; } case LIT_INT: { RefAST tmp140_AST = nullAST; tmp140_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp140_AST); match(LIT_INT); break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_DOTDOT: { RefAST tmp141_AST = nullAST; tmp141_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp141_AST); match(OP_DOTDOT); { switch ( LA(1)) { case LIT_CHAR: { RefAST tmp142_AST = nullAST; tmp142_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp142_AST); match(LIT_CHAR); break; } case LIT_INT: { RefAST tmp143_AST = nullAST; tmp143_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp143_AST); match(LIT_INT); break; } default: { throw NoViableAltException(LT(1)); } } } break; } case OP_RPAREN: case LIT_INT: case LIT_STRING: case OP_COMMA: case LIT_CHAR: { break; } default: { throw NoViableAltException(LT(1)); } } } charOrIntOrRange_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_38); } returnAST = charOrIntOrRange_AST; } void GrpParser::intOrRange() { returnAST = nullAST; ASTPair currentAST; RefAST intOrRange_AST = nullAST; try { // for error handling { if ((LA(1)==LIT_INT) && (LA(2)==OP_DOTDOT)) { RefAST tmp144_AST = nullAST; tmp144_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp144_AST); match(LIT_INT); RefAST tmp145_AST = nullAST; tmp145_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp145_AST); match(OP_DOTDOT); RefAST tmp146_AST = nullAST; tmp146_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp146_AST); match(LIT_INT); } else if ((LA(1)==LIT_INT) && (LA(2)==OP_RPAREN||LA(2)==LIT_INT||LA(2)==OP_COMMA)) { RefAST tmp147_AST = nullAST; tmp147_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp147_AST); match(LIT_INT); } else { throw NoViableAltException(LT(1)); } } intOrRange_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_39); } returnAST = intOrRange_AST; } void GrpParser::unicodeIntOrRange() { returnAST = nullAST; ASTPair currentAST; RefAST unicodeIntOrRange_AST = nullAST; try { // for error handling { if ((LA(1)==LIT_UHEX) && (LA(2)==OP_DOTDOT)) { RefAST tmp148_AST = nullAST; tmp148_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp148_AST); match(LIT_UHEX); RefAST tmp149_AST = nullAST; tmp149_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp149_AST); match(OP_DOTDOT); RefAST tmp150_AST = nullAST; tmp150_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp150_AST); match(LIT_UHEX); } else if ((LA(1)==LIT_UHEX) && (_tokenSet_35.member(LA(2)))) { RefAST tmp151_AST = nullAST; tmp151_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp151_AST); match(LIT_UHEX); } else { throw NoViableAltException(LT(1)); } } unicodeIntOrRange_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_35); } returnAST = unicodeIntOrRange_AST; } void GrpParser::featureEnv() { returnAST = nullAST; ASTPair currentAST; RefAST featureEnv_AST = nullAST; try { // for error handling RefAST tmp152_AST = nullAST; tmp152_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp152_AST); match(LITERAL_environment); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_name: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp153_AST = nullAST; tmp153_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_name: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case IDENT: case LITERAL_name: case LIT_INT: { featureSpecList(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_environment: { featureEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop134; } } } while (true); _loop134:; } RefAST tmp154_AST = nullAST; tmp154_AST = astFactory.create(LT(1)); match(LITERAL_endenvironment); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp155_AST = nullAST; tmp155_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_name: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } featureEnv_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_40); } returnAST = featureEnv_AST; } void GrpParser::featureSpecList() { returnAST = nullAST; ASTPair currentAST; RefAST featureSpecList_AST = nullAST; try { // for error handling { if ((LA(1)==IDENT||LA(1)==LITERAL_name) && (LA(2)==OP_LBRACE)) { featureSpecStruct(); astFactory.addASTChild(currentAST, returnAST); { if ((LA(1)==IDENT||LA(1)==LITERAL_name||LA(1)==LIT_INT) && (LA(2)==OP_EQ||LA(2)==OP_LBRACE||LA(2)==OP_DOT) && (_tokenSet_41.member(LA(3)))) { featureSpecList(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_42.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } } else if ((LA(1)==IDENT||LA(1)==LITERAL_name||LA(1)==LIT_INT) && (LA(2)==OP_EQ||LA(2)==OP_DOT)) { featureSpecFlat(); astFactory.addASTChild(currentAST, returnAST); { if ((LA(1)==OP_SEMI) && (LA(2)==IDENT||LA(2)==LITERAL_name||LA(2)==LIT_INT) && (LA(3)==OP_EQ||LA(3)==OP_LBRACE||LA(3)==OP_DOT)) { RefAST tmp156_AST = nullAST; tmp156_AST = astFactory.create(LT(1)); match(OP_SEMI); featureSpecList(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_43.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp157_AST = nullAST; tmp157_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case OP_RBRACE: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_name: case LIT_INT: { break; } default: { throw NoViableAltException(LT(1)); } } } } else { throw NoViableAltException(LT(1)); } } featureSpecList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_42); } returnAST = featureSpecList_AST; } void GrpParser::featureSpecStruct() { returnAST = nullAST; ASTPair currentAST; RefAST featureSpecStruct_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefToken In = nullToken; RefAST In_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling { switch ( LA(1)) { case IDENT: { I = LT(1); I_AST = astFactory.create(I); match(IDENT); break; } case LITERAL_name: { In = LT(1); In_AST = astFactory.create(In); match(LITERAL_name); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp158_AST = nullAST; tmp158_AST = astFactory.create(LT(1)); match(OP_LBRACE); { switch ( LA(1)) { case IDENT: case LITERAL_name: case LIT_INT: { featureSpecList(); X_AST = returnAST; break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp159_AST = nullAST; tmp159_AST = astFactory.create(LT(1)); match(OP_RBRACE); { if ((LA(1)==OP_SEMI) && (_tokenSet_43.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp160_AST = nullAST; tmp160_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_43.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } featureSpecStruct_AST = currentAST.root; featureSpecStruct_AST = astFactory.make( (new ASTArray(4))->add(astFactory.create(ZdotStruct))->add(I_AST)->add(In_AST)->add(X_AST)); currentAST.root = featureSpecStruct_AST; currentAST.child = featureSpecStruct_AST!=nullAST &&featureSpecStruct_AST->getFirstChild()!=nullAST ? featureSpecStruct_AST->getFirstChild() : featureSpecStruct_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_43); } returnAST = featureSpecStruct_AST; } void GrpParser::featureSpecFlat() { returnAST = nullAST; ASTPair currentAST; RefAST featureSpecFlat_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefToken In = nullToken; RefAST In_AST = nullAST; RefToken D = nullToken; RefAST D_AST = nullAST; RefAST X1_AST = nullAST; RefAST X2_AST = nullAST; RefToken E1 = nullToken; RefAST E1_AST = nullAST; RefAST Vi1_AST = nullAST; RefAST Vi2_AST = nullAST; RefToken Vi3 = nullToken; RefAST Vi3_AST = nullAST; RefToken N = nullToken; RefAST N_AST = nullAST; RefToken E2 = nullToken; RefAST E2_AST = nullAST; RefAST Vn1_AST = nullAST; RefAST Vn2_AST = nullAST; RefToken Vn3 = nullToken; RefAST Vn3_AST = nullAST; try { // for error handling { switch ( LA(1)) { case IDENT: case LITERAL_name: { { switch ( LA(1)) { case IDENT: { I = LT(1); I_AST = astFactory.create(I); match(IDENT); break; } case LITERAL_name: { In = LT(1); In_AST = astFactory.create(In); match(LITERAL_name); break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_DOT: { D = LT(1); D_AST = astFactory.create(D); match(OP_DOT); { if ((LA(1)==IDENT||LA(1)==LITERAL_name||LA(1)==LIT_INT) && (LA(2)==OP_EQ||LA(2)==OP_DOT)) { featureSpecFlat(); X1_AST = returnAST; } else if ((LA(1)==IDENT||LA(1)==LITERAL_name) && (LA(2)==OP_LBRACE)) { featureSpecStruct(); X2_AST = returnAST; } else { throw NoViableAltException(LT(1)); } } featureSpecFlat_AST = currentAST.root; featureSpecFlat_AST = astFactory.make( (new ASTArray(5))->add(D_AST)->add(I_AST)->add(In_AST)->add(X1_AST)->add(X2_AST)); currentAST.root = featureSpecFlat_AST; currentAST.child = featureSpecFlat_AST!=nullAST &&featureSpecFlat_AST->getFirstChild()!=nullAST ? featureSpecFlat_AST->getFirstChild() : featureSpecFlat_AST; currentAST.advanceChildToEnd(); break; } case OP_EQ: { E1 = LT(1); E1_AST = astFactory.create(E1); match(OP_EQ); { switch ( LA(1)) { case LIT_INT: case OP_PLUS: case OP_MINUS: case LITERAL_true: case LITERAL_false: { signedInt(); Vi1_AST = returnAST; break; } case OP_LPAREN: case LIT_STRING: case LITERAL_string: { stringDefn(); Vi2_AST = returnAST; break; } case IDENT: { Vi3 = LT(1); Vi3_AST = astFactory.create(Vi3); match(IDENT); break; } default: { throw NoViableAltException(LT(1)); } } } featureSpecFlat_AST = currentAST.root; featureSpecFlat_AST = astFactory.make( (new ASTArray(6))->add(E1_AST)->add(I_AST)->add(In_AST)->add(Vi1_AST)->add(Vi2_AST)->add(Vi3_AST)); currentAST.root = featureSpecFlat_AST; currentAST.child = featureSpecFlat_AST!=nullAST &&featureSpecFlat_AST->getFirstChild()!=nullAST ? featureSpecFlat_AST->getFirstChild() : featureSpecFlat_AST; currentAST.advanceChildToEnd(); break; } default: { throw NoViableAltException(LT(1)); } } } break; } case LIT_INT: { N = LT(1); N_AST = astFactory.create(N); match(LIT_INT); E2 = LT(1); E2_AST = astFactory.create(E2); match(OP_EQ); { switch ( LA(1)) { case LIT_INT: case OP_PLUS: case OP_MINUS: case LITERAL_true: case LITERAL_false: { signedInt(); Vn1_AST = returnAST; break; } case OP_LPAREN: case LIT_STRING: case LITERAL_string: { stringDefn(); Vn2_AST = returnAST; break; } case IDENT: { Vn3 = LT(1); Vn3_AST = astFactory.create(Vn3); match(IDENT); break; } default: { throw NoViableAltException(LT(1)); } } } featureSpecFlat_AST = currentAST.root; featureSpecFlat_AST = astFactory.make( (new ASTArray(5))->add(E2_AST)->add(N_AST)->add(Vn1_AST)->add(Vn2_AST)->add(Vn3_AST)); currentAST.root = featureSpecFlat_AST; currentAST.child = featureSpecFlat_AST!=nullAST &&featureSpecFlat_AST->getFirstChild()!=nullAST ? featureSpecFlat_AST->getFirstChild() : featureSpecFlat_AST; currentAST.advanceChildToEnd(); break; } default: { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_43); } returnAST = featureSpecFlat_AST; } void GrpParser::languageEnv() { returnAST = nullAST; ASTPair currentAST; RefAST languageEnv_AST = nullAST; try { // for error handling RefAST tmp161_AST = nullAST; tmp161_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp161_AST); match(LITERAL_environment); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp162_AST = nullAST; tmp162_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { switch ( LA(1)) { case IDENT: { languageSpecList(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_environment: { languageEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { goto _loop161; } } } while (true); _loop161:; } RefAST tmp163_AST = nullAST; tmp163_AST = astFactory.create(LT(1)); match(LITERAL_endenvironment); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp164_AST = nullAST; tmp164_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: { break; } default: { throw NoViableAltException(LT(1)); } } } languageEnv_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_21); } returnAST = languageEnv_AST; } void GrpParser::languageSpecList() { returnAST = nullAST; ASTPair currentAST; RefAST languageSpecList_AST = nullAST; try { // for error handling { if ((LA(1)==IDENT) && (LA(2)==OP_LBRACE||LA(2)==OP_DOT) && (_tokenSet_44.member(LA(3)))) { languageSpec(); astFactory.addASTChild(currentAST, returnAST); { if ((LA(1)==IDENT) && (LA(2)==OP_LBRACE||LA(2)==OP_DOT) && (_tokenSet_44.member(LA(3)))) { languageSpecList(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_24.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } } else if ((LA(1)==IDENT) && (LA(2)==OP_LBRACE||LA(2)==OP_DOT) && (_tokenSet_44.member(LA(3)))) { languageSpec(); astFactory.addASTChild(currentAST, returnAST); { if ((LA(1)==OP_SEMI) && (LA(2)==IDENT) && (LA(3)==OP_LBRACE||LA(3)==OP_DOT)) { RefAST tmp165_AST = nullAST; tmp165_AST = astFactory.create(LT(1)); match(OP_SEMI); languageSpecList(); astFactory.addASTChild(currentAST, returnAST); } else if ((_tokenSet_24.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } { if ((LA(1)==OP_SEMI) && (_tokenSet_24.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp166_AST = nullAST; tmp166_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_24.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } } else { throw NoViableAltException(LT(1)); } } languageSpecList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_24); } returnAST = languageSpecList_AST; } void GrpParser::languageSpec() { returnAST = nullAST; ASTPair currentAST; RefAST languageSpec_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefAST X1_AST = nullAST; RefAST X2_AST = nullAST; try { // for error handling I = LT(1); I_AST = astFactory.create(I); match(IDENT); { switch ( LA(1)) { case OP_DOT: { RefAST tmp167_AST = nullAST; tmp167_AST = astFactory.create(LT(1)); match(OP_DOT); languageSpecItem(); X1_AST = returnAST; languageSpec_AST = currentAST.root; languageSpec_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(ZdotStruct))->add(I_AST)->add(X1_AST)); currentAST.root = languageSpec_AST; currentAST.child = languageSpec_AST!=nullAST &&languageSpec_AST->getFirstChild()!=nullAST ? languageSpec_AST->getFirstChild() : languageSpec_AST; currentAST.advanceChildToEnd(); break; } case OP_LBRACE: { RefAST tmp168_AST = nullAST; tmp168_AST = astFactory.create(LT(1)); match(OP_LBRACE); languageItemList(); X2_AST = returnAST; RefAST tmp169_AST = nullAST; tmp169_AST = astFactory.create(LT(1)); match(OP_RBRACE); { if ((LA(1)==OP_SEMI) && (_tokenSet_24.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp170_AST = nullAST; tmp170_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_24.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } languageSpec_AST = currentAST.root; languageSpec_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(ZdotStruct))->add(I_AST)->add(X2_AST)); currentAST.root = languageSpec_AST; currentAST.child = languageSpec_AST!=nullAST &&languageSpec_AST->getFirstChild()!=nullAST ? languageSpec_AST->getFirstChild() : languageSpec_AST; currentAST.advanceChildToEnd(); break; } default: { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_24); } returnAST = languageSpec_AST; } void GrpParser::languageSpecItem() { returnAST = nullAST; ASTPair currentAST; RefAST languageSpecItem_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefToken E1 = nullToken; RefAST E1_AST = nullAST; RefAST Vi1_AST = nullAST; RefToken Vi2 = nullToken; RefAST Vi2_AST = nullAST; RefToken Ilang = nullToken; RefAST Ilang_AST = nullAST; RefToken Ilangs = nullToken; RefAST Ilangs_AST = nullAST; RefToken E2 = nullToken; RefAST E2_AST = nullAST; RefAST LL_AST = nullAST; try { // for error handling { switch ( LA(1)) { case IDENT: { I = LT(1); I_AST = astFactory.create(I); match(IDENT); E1 = LT(1); E1_AST = astFactory.create(E1); match(OP_EQ); { switch ( LA(1)) { case LIT_INT: case OP_PLUS: case OP_MINUS: case LITERAL_true: case LITERAL_false: { signedInt(); Vi1_AST = returnAST; break; } case IDENT: { Vi2 = LT(1); Vi2_AST = astFactory.create(Vi2); match(IDENT); break; } default: { throw NoViableAltException(LT(1)); } } } languageSpecItem_AST = currentAST.root; languageSpecItem_AST = astFactory.make( (new ASTArray(4))->add(E1_AST)->add(I_AST)->add(Vi1_AST)->add(Vi2_AST)); currentAST.root = languageSpecItem_AST; currentAST.child = languageSpecItem_AST!=nullAST &&languageSpecItem_AST->getFirstChild()!=nullAST ? languageSpecItem_AST->getFirstChild() : languageSpecItem_AST; currentAST.advanceChildToEnd(); break; } case LITERAL_language: case LITERAL_languages: { { switch ( LA(1)) { case LITERAL_language: { Ilang = LT(1); Ilang_AST = astFactory.create(Ilang); match(LITERAL_language); break; } case LITERAL_languages: { Ilangs = LT(1); Ilangs_AST = astFactory.create(Ilangs); match(LITERAL_languages); break; } default: { throw NoViableAltException(LT(1)); } } } E2 = LT(1); E2_AST = astFactory.create(E2); match(OP_EQ); languageCodeList(); LL_AST = returnAST; languageSpecItem_AST = currentAST.root; languageSpecItem_AST = astFactory.make( (new ASTArray(4))->add(E2_AST)->add(Ilang_AST)->add(Ilangs_AST)->add(LL_AST)); currentAST.root = languageSpecItem_AST; currentAST.child = languageSpecItem_AST!=nullAST &&languageSpecItem_AST->getFirstChild()!=nullAST ? languageSpecItem_AST->getFirstChild() : languageSpecItem_AST; currentAST.advanceChildToEnd(); break; } default: { throw NoViableAltException(LT(1)); } } } { if ((LA(1)==OP_SEMI) && (_tokenSet_45.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { RefAST tmp171_AST = nullAST; tmp171_AST = astFactory.create(LT(1)); match(OP_SEMI); } else if ((_tokenSet_45.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_45); } returnAST = languageSpecItem_AST; } void GrpParser::languageItemList() { returnAST = nullAST; ASTPair currentAST; RefAST languageItemList_AST = nullAST; try { // for error handling { do { if ((LA(1)==IDENT||LA(1)==LITERAL_language||LA(1)==LITERAL_languages)) { languageSpecItem(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop173; } } while (true); _loop173:; } languageItemList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_46); } returnAST = languageItemList_AST; } void GrpParser::languageCodeList() { returnAST = nullAST; ASTPair currentAST; RefAST languageCodeList_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_STRING: { RefAST tmp172_AST = nullAST; tmp172_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp172_AST); match(LIT_STRING); break; } case OP_LPAREN: { RefAST tmp173_AST = nullAST; tmp173_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp174_AST = nullAST; tmp174_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp174_AST); match(LIT_STRING); { do { if ((LA(1)==OP_COMMA)) { RefAST tmp175_AST = nullAST; tmp175_AST = astFactory.create(LT(1)); match(OP_COMMA); RefAST tmp176_AST = nullAST; tmp176_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp176_AST); match(LIT_STRING); } else { goto _loop182; } } while (true); _loop182:; } RefAST tmp177_AST = nullAST; tmp177_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp177_AST); match(OP_RPAREN); break; } default: { throw NoViableAltException(LT(1)); } } } languageCodeList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_45); } returnAST = languageCodeList_AST; } void GrpParser::subEntry() { returnAST = nullAST; ASTPair currentAST; RefAST subEntry_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LITERAL_if: { subIf(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { subRule(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_pass: { subPass(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_environment: { subEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { throw NoViableAltException(LT(1)); } } } subEntry_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = subEntry_AST; } void GrpParser::subIf() { returnAST = nullAST; ASTPair currentAST; RefAST subIf_AST = nullAST; RefToken C1k = nullToken; RefAST C1k_AST = nullAST; RefAST E_AST = nullAST; RefAST C1_AST = nullAST; RefAST C1x_AST = nullAST; RefAST C2_AST = nullAST; RefAST C2x_AST = nullAST; RefAST C3_AST = nullAST; RefToken C3k = nullToken; RefAST C3k_AST = nullAST; RefAST C3x_AST = nullAST; try { // for error handling C1k = LT(1); C1k_AST = astFactory.create(C1k); match(LITERAL_if); RefAST tmp178_AST = nullAST; tmp178_AST = astFactory.create(LT(1)); match(OP_LPAREN); expr(); E_AST = returnAST; RefAST tmp179_AST = nullAST; tmp179_AST = astFactory.create(LT(1)); match(OP_RPAREN); { subEntryList(); C1x_AST = returnAST; C1_AST = astFactory.make( (new ASTArray(3))->add(C1k_AST)->add(E_AST)->add(C1x_AST)); } { if (((LA(1) >= LITERAL_else && LA(1) <= LITERAL_elseif)) && (_tokenSet_48.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { subElseIfList(); C2x_AST = returnAST; C2_AST = C2x_AST; } else if ((LA(1)==LITERAL_else||LA(1)==LITERAL_endif) && (_tokenSet_48.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } { switch ( LA(1)) { case LITERAL_else: { C3k = LT(1); C3k_AST = astFactory.create(C3k); match(LITERAL_else); subEntryList(); C3x_AST = returnAST; C3_AST = astFactory.make( (new ASTArray(2))->add(C3k_AST)->add(C3x_AST)); break; } case LITERAL_endif: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp180_AST = nullAST; tmp180_AST = astFactory.create(LT(1)); match(LITERAL_endif); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp181_AST = nullAST; tmp181_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case LITERAL_else: case LITERAL_endif: case Zelseif: case LITERAL_elseif: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } subIf_AST = currentAST.root; subIf_AST = astFactory.make( (new ASTArray(4))->add(astFactory.create(ZifStruct))->add(C1_AST)->add(C2_AST)->add(C3_AST)); currentAST.root = subIf_AST; currentAST.child = subIf_AST!=nullAST &&subIf_AST->getFirstChild()!=nullAST ? subIf_AST->getFirstChild() : subIf_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = subIf_AST; } void GrpParser::subRule() { returnAST = nullAST; ASTPair currentAST; RefAST subRule_AST = nullAST; RefAST L_AST = nullAST; RefAST L1_AST = nullAST; RefAST R_AST = nullAST; RefAST R1_AST = nullAST; RefAST C_AST = nullAST; RefAST C1_AST = nullAST; try { // for error handling { subLhs(); L1_AST = returnAST; L_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zlhs))->add(L1_AST)); } { switch ( LA(1)) { case OP_GT: { RefAST tmp182_AST = nullAST; tmp182_AST = astFactory.create(LT(1)); match(OP_GT); { subRhs(); R1_AST = returnAST; R_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zrhs))->add(R1_AST)); } break; } case OP_SEMI: case OP_DIV: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_DIV: { RefAST tmp183_AST = nullAST; tmp183_AST = astFactory.create(LT(1)); match(OP_DIV); { context(); C1_AST = returnAST; C_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zcontext))->add(C1_AST)); } break; } case OP_SEMI: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp184_AST = nullAST; tmp184_AST = astFactory.create(LT(1)); match(OP_SEMI); subRule_AST = currentAST.root; subRule_AST = astFactory.make( (new ASTArray(4))->add(astFactory.create(Zrule))->add(L_AST)->add(R_AST)->add(C_AST)); currentAST.root = subRule_AST; currentAST.child = subRule_AST!=nullAST &&subRule_AST->getFirstChild()!=nullAST ? subRule_AST->getFirstChild() : subRule_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = subRule_AST; } void GrpParser::subPass() { returnAST = nullAST; ASTPair currentAST; RefAST subPass_AST = nullAST; try { // for error handling RefAST tmp185_AST = nullAST; tmp185_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp185_AST); match(LITERAL_pass); RefAST tmp186_AST = nullAST; tmp186_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp187_AST = nullAST; tmp187_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp187_AST); match(LIT_INT); RefAST tmp188_AST = nullAST; tmp188_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp189_AST = nullAST; tmp189_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { subEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop200; } } while (true); _loop200:; } RefAST tmp190_AST = nullAST; tmp190_AST = astFactory.create(LT(1)); match(LITERAL_endpass); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp191_AST = nullAST; tmp191_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case LITERAL_else: case LITERAL_endif: case Zelseif: case LITERAL_elseif: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } subPass_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = subPass_AST; } void GrpParser::subEnv() { returnAST = nullAST; ASTPair currentAST; RefAST subEnv_AST = nullAST; try { // for error handling RefAST tmp192_AST = nullAST; tmp192_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp192_AST); match(LITERAL_environment); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp193_AST = nullAST; tmp193_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { subEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop194; } } while (true); _loop194:; } RefAST tmp194_AST = nullAST; tmp194_AST = astFactory.create(LT(1)); match(LITERAL_endenvironment); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp195_AST = nullAST; tmp195_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case LITERAL_else: case LITERAL_endif: case Zelseif: case LITERAL_elseif: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } subEnv_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = subEnv_AST; } void GrpParser::subEntryList() { returnAST = nullAST; ASTPair currentAST; RefAST subEntryList_AST = nullAST; try { // for error handling { do { if ((_tokenSet_12.member(LA(1)))) { subEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop214; } } while (true); _loop214:; } subEntryList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_49); } returnAST = subEntryList_AST; } void GrpParser::subElseIfList() { returnAST = nullAST; ASTPair currentAST; RefAST subElseIfList_AST = nullAST; try { // for error handling { do { if ((LA(1)==Zelseif||LA(1)==LITERAL_elseif)) { subElseIf(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop209; } } while (true); _loop209:; } subElseIfList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_50); } returnAST = subElseIfList_AST; } void GrpParser::subElseIf() { returnAST = nullAST; ASTPair currentAST; RefAST subElseIf_AST = nullAST; try { // for error handling { switch ( LA(1)) { case Zelseif: { RefAST tmp196_AST = nullAST; tmp196_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp196_AST); match(Zelseif); break; } case LITERAL_elseif: { RefAST tmp197_AST = nullAST; tmp197_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp197_AST); match(LITERAL_elseif); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp198_AST = nullAST; tmp198_AST = astFactory.create(LT(1)); match(OP_LPAREN); expr(); astFactory.addASTChild(currentAST, returnAST); RefAST tmp199_AST = nullAST; tmp199_AST = astFactory.create(LT(1)); match(OP_RPAREN); subEntryList(); astFactory.addASTChild(currentAST, returnAST); subElseIf_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_49); } returnAST = subElseIf_AST; } void GrpParser::subLhs() { returnAST = nullAST; ASTPair currentAST; RefAST subLhs_AST = nullAST; try { // for error handling { int _cnt223=0; do { if ((_tokenSet_51.member(LA(1))) && (_tokenSet_52.member(LA(2))) && (_tokenSet_53.member(LA(3)))) { subLhsRange(); astFactory.addASTChild(currentAST, returnAST); } else { if ( _cnt223>=1 ) { goto _loop223; } else {throw NoViableAltException(LT(1));} } _cnt223++; } while (true); _loop223:; } subLhs_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_54); } returnAST = subLhs_AST; } void GrpParser::subRhs() { returnAST = nullAST; ASTPair currentAST; RefAST subRhs_AST = nullAST; try { // for error handling { int _cnt234=0; do { if ((_tokenSet_55.member(LA(1)))) { subRhsItem(); astFactory.addASTChild(currentAST, returnAST); } else { if ( _cnt234>=1 ) { goto _loop234; } else {throw NoViableAltException(LT(1));} } _cnt234++; } while (true); _loop234:; } subRhs_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_56); } returnAST = subRhs_AST; } void GrpParser::context() { returnAST = nullAST; ASTPair currentAST; RefAST context_AST = nullAST; try { // for error handling { do { if ((_tokenSet_57.member(LA(1)))) { contextRange(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop322; } } while (true); _loop322:; } context_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_58); } returnAST = context_AST; } void GrpParser::subLhsRange() { returnAST = nullAST; ASTPair currentAST; RefAST subLhsRange_AST = nullAST; RefAST X1_AST = nullAST; RefAST X2_AST = nullAST; RefToken Q = nullToken; RefAST Q_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_LBRACKET: { subLhsList(); X1_AST = returnAST; subLhsRange_AST = currentAST.root; subLhsRange_AST = X1_AST; currentAST.root = subLhsRange_AST; currentAST.child = subLhsRange_AST!=nullAST &&subLhsRange_AST->getFirstChild()!=nullAST ? subLhsRange_AST->getFirstChild() : subLhsRange_AST; currentAST.advanceChildToEnd(); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_UNDER: case OP_AT: case OP_HASH: { subLhsItem(); X2_AST = returnAST; { if ((LA(1)==OP_QUESTION)) { Q = LT(1); Q_AST = astFactory.create(Q); match(OP_QUESTION); subLhsRange_AST = currentAST.root; subLhsRange_AST = astFactory.make( (new ASTArray(2))->add(Q_AST)->add(X2_AST)); currentAST.root = subLhsRange_AST; currentAST.child = subLhsRange_AST!=nullAST &&subLhsRange_AST->getFirstChild()!=nullAST ? subLhsRange_AST->getFirstChild() : subLhsRange_AST; currentAST.advanceChildToEnd(); } else if ((_tokenSet_54.member(LA(1))) && (_tokenSet_59.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { subLhsRange_AST = currentAST.root; subLhsRange_AST = X2_AST; currentAST.root = subLhsRange_AST; currentAST.child = subLhsRange_AST!=nullAST &&subLhsRange_AST->getFirstChild()!=nullAST ? subLhsRange_AST->getFirstChild() : subLhsRange_AST; currentAST.advanceChildToEnd(); } else if ((_tokenSet_54.member(LA(1))) && (_tokenSet_59.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } break; } default: { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_54); } returnAST = subLhsRange_AST; } void GrpParser::subLhsList() { returnAST = nullAST; ASTPair currentAST; RefAST subLhsList_AST = nullAST; try { // for error handling { RefAST tmp200_AST = nullAST; tmp200_AST = astFactory.create(LT(1)); match(OP_LBRACKET); { int _cnt230=0; do { if ((_tokenSet_51.member(LA(1)))) { subLhs(); astFactory.addASTChild(currentAST, returnAST); } else { if ( _cnt230>=1 ) { goto _loop230; } else {throw NoViableAltException(LT(1));} } _cnt230++; } while (true); _loop230:; } RefAST tmp201_AST = nullAST; tmp201_AST = astFactory.create(LT(1)); match(OP_RBRACKET); } RefAST tmp202_AST = nullAST; tmp202_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp202_AST); match(OP_QUESTION); subLhsList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_54); } returnAST = subLhsList_AST; } void GrpParser::subLhsItem() { returnAST = nullAST; ASTPair currentAST; RefAST subLhsItem_AST = nullAST; try { // for error handling subRhsItem(); astFactory.addASTChild(currentAST, returnAST); subLhsItem_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_60); } returnAST = subLhsItem_AST; } void GrpParser::subRhsItem() { returnAST = nullAST; ASTPair currentAST; RefAST subRhsItem_AST = nullAST; RefToken C1g = nullToken; RefAST C1g_AST = nullAST; RefToken C2at = nullToken; RefAST C2at_AST = nullAST; RefAST C2s_AST = nullAST; RefAST C2a_AST = nullAST; RefToken C3at = nullToken; RefAST C3at_AST = nullAST; RefAST C3s_AST = nullAST; RefAST C4g1_AST = nullAST; RefToken C4g2 = nullToken; RefAST C4g2_AST = nullAST; RefAST C4a1_AST = nullAST; RefAST C4s1_AST = nullAST; RefAST C4s2_AST = nullAST; RefAST C4a2_AST = nullAST; RefAST A_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_UNDER: { C1g = LT(1); C1g_AST = astFactory.create(C1g); match(OP_UNDER); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_HASH: { { { switch ( LA(1)) { case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: { glyphSpec(); C4g1_AST = returnAST; break; } case OP_HASH: { C4g2 = LT(1); C4g2_AST = astFactory.create(C4g2); match(OP_HASH); break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_COLON: { { RefAST tmp203_AST = nullAST; tmp203_AST = astFactory.create(LT(1)); match(OP_COLON); associations(); C4a1_AST = returnAST; { switch ( LA(1)) { case OP_DOLLAR: { RefAST tmp204_AST = nullAST; tmp204_AST = astFactory.create(LT(1)); match(OP_DOLLAR); selector(); C4s1_AST = returnAST; break; } case OP_EQ: case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } } break; } case OP_DOLLAR: { { RefAST tmp205_AST = nullAST; tmp205_AST = astFactory.create(LT(1)); match(OP_DOLLAR); selector(); C4s2_AST = returnAST; { switch ( LA(1)) { case OP_COLON: { RefAST tmp206_AST = nullAST; tmp206_AST = astFactory.create(LT(1)); match(OP_COLON); associations(); C4a2_AST = returnAST; break; } case OP_EQ: case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } } break; } case OP_EQ: case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } } break; } default: if ((LA(1)==OP_AT) && (LA(2)==LIT_INT||LA(2)==Qalias) && (_tokenSet_61.member(LA(3)))) { { C2at = LT(1); C2at_AST = astFactory.create(C2at); match(OP_AT); selectorAfterAt(); C2s_AST = returnAST; { switch ( LA(1)) { case OP_COLON: { RefAST tmp207_AST = nullAST; tmp207_AST = astFactory.create(LT(1)); match(OP_COLON); associations(); C2a_AST = returnAST; break; } case OP_EQ: case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } } } else if ((LA(1)==OP_AT) && (_tokenSet_62.member(LA(2))) && (_tokenSet_63.member(LA(3)))) { { C3at = LT(1); C3at_AST = astFactory.create(C3at); match(OP_AT); { switch ( LA(1)) { case OP_COLON: { RefAST tmp208_AST = nullAST; tmp208_AST = astFactory.create(LT(1)); match(OP_COLON); break; } case OP_EQ: case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LIT_INT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: case Qalias: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case LIT_INT: case Qalias: { selectorAfterAt(); C3s_AST = returnAST; break; } case OP_EQ: case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } } } else { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_EQ: { alias(); A_AST = returnAST; break; } case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { if ((_tokenSet_64.member(LA(1))) && (_tokenSet_63.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { attributes(); X_AST = returnAST; } else if ((_tokenSet_60.member(LA(1))) && (_tokenSet_59.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } subRhsItem_AST = currentAST.root; subRhsItem_AST = astFactory.make( (new ASTArray(15))->add(astFactory.create(ZruleItem))->add(C1g_AST)->add(C2at_AST)->add(C2s_AST)->add(C3at_AST)->add(C3s_AST)->add(C4g1_AST)->add(C4g2_AST)->add(C4s1_AST)->add(C4s2_AST)->add(A_AST)->add(C2a_AST)->add(C4a1_AST)->add(C4a2_AST)->add(X_AST)); currentAST.root = subRhsItem_AST; currentAST.child = subRhsItem_AST!=nullAST &&subRhsItem_AST->getFirstChild()!=nullAST ? subRhsItem_AST->getFirstChild() : subRhsItem_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_60); } returnAST = subRhsItem_AST; } void GrpParser::selectorAfterAt() { returnAST = nullAST; ASTPair currentAST; RefAST selectorAfterAt_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling slotIndicatorAfterAt(); X_AST = returnAST; selectorAfterAt_AST = currentAST.root; selectorAfterAt_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zselector))->add(X_AST)); currentAST.root = selectorAfterAt_AST; currentAST.child = selectorAfterAt_AST!=nullAST &&selectorAfterAt_AST->getFirstChild()!=nullAST ? selectorAfterAt_AST->getFirstChild() : selectorAfterAt_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_61); } returnAST = selectorAfterAt_AST; } void GrpParser::associations() { returnAST = nullAST; ASTPair currentAST; RefAST associations_AST = nullAST; RefAST S1_AST = nullAST; RefAST S2_AST = nullAST; try { // for error handling { switch ( LA(1)) { case IDENT: case LIT_INT: case Qalias: { slotIndicator(); S1_AST = returnAST; break; } case OP_LPAREN: { assocsList(); S2_AST = returnAST; break; } default: { throw NoViableAltException(LT(1)); } } } associations_AST = currentAST.root; associations_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(Zassocs))->add(S1_AST)->add(S2_AST)); currentAST.root = associations_AST; currentAST.child = associations_AST!=nullAST &&associations_AST->getFirstChild()!=nullAST ? associations_AST->getFirstChild() : associations_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_65); } returnAST = associations_AST; } void GrpParser::selector() { returnAST = nullAST; ASTPair currentAST; RefAST selector_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling slotIndicator(); X_AST = returnAST; selector_AST = currentAST.root; selector_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zselector))->add(X_AST)); currentAST.root = selector_AST; currentAST.child = selector_AST!=nullAST &&selector_AST->getFirstChild()!=nullAST ? selector_AST->getFirstChild() : selector_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_61); } returnAST = selector_AST; } void GrpParser::alias() { returnAST = nullAST; ASTPair currentAST; RefAST alias_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; try { // for error handling RefAST tmp209_AST = nullAST; tmp209_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp209_AST); match(OP_EQ); I = LT(1); I_AST = astFactory.create(I); astFactory.addASTChild(currentAST, I_AST); match(IDENT); alias_AST = currentAST.root; alias_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zalias))->add(I_AST)); currentAST.root = alias_AST; currentAST.child = alias_AST!=nullAST &&alias_AST->getFirstChild()!=nullAST ? alias_AST->getFirstChild() : alias_AST; currentAST.advanceChildToEnd(); alias_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_66); } returnAST = alias_AST; } void GrpParser::slotIndicator() { returnAST = nullAST; ASTPair currentAST; RefAST slotIndicator_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_INT: { RefAST tmp210_AST = nullAST; tmp210_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp210_AST); match(LIT_INT); break; } case IDENT: { RefAST tmp211_AST = nullAST; tmp211_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp211_AST); match(IDENT); break; } case Qalias: { RefAST tmp212_AST = nullAST; tmp212_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp212_AST); match(Qalias); break; } default: { throw NoViableAltException(LT(1)); } } } slotIndicator_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_67); } returnAST = slotIndicator_AST; } void GrpParser::assocsList() { returnAST = nullAST; ASTPair currentAST; RefAST assocsList_AST = nullAST; try { // for error handling { RefAST tmp213_AST = nullAST; tmp213_AST = astFactory.create(LT(1)); match(OP_LPAREN); { switch ( LA(1)) { case IDENT: case LIT_INT: case Qalias: { slotIndicator(); astFactory.addASTChild(currentAST, returnAST); { do { if ((_tokenSet_68.member(LA(1)))) { { switch ( LA(1)) { case OP_COMMA: { RefAST tmp214_AST = nullAST; tmp214_AST = astFactory.create(LT(1)); match(OP_COMMA); break; } case IDENT: case LIT_INT: case Qalias: { break; } default: { throw NoViableAltException(LT(1)); } } } slotIndicator(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop259; } } while (true); _loop259:; } break; } case OP_RPAREN: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp215_AST = nullAST; tmp215_AST = astFactory.create(LT(1)); match(OP_RPAREN); } assocsList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_65); } returnAST = assocsList_AST; } void GrpParser::slotIndicatorAfterAt() { returnAST = nullAST; ASTPair currentAST; RefAST slotIndicatorAfterAt_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LIT_INT: { RefAST tmp216_AST = nullAST; tmp216_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp216_AST); match(LIT_INT); break; } case Qalias: { RefAST tmp217_AST = nullAST; tmp217_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp217_AST); match(Qalias); break; } default: { throw NoViableAltException(LT(1)); } } } slotIndicatorAfterAt_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_61); } returnAST = slotIndicatorAfterAt_AST; } void GrpParser::posEntry() { returnAST = nullAST; ASTPair currentAST; RefAST posEntry_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LITERAL_if: { posIf(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { posRule(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_pass: { posPass(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_environment: { posEnv(); astFactory.addASTChild(currentAST, returnAST); break; } case LITERAL_table: { tableDecl(); astFactory.addASTChild(currentAST, returnAST); break; } default: { throw NoViableAltException(LT(1)); } } } posEntry_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = posEntry_AST; } void GrpParser::posIf() { returnAST = nullAST; ASTPair currentAST; RefAST posIf_AST = nullAST; RefToken C1k = nullToken; RefAST C1k_AST = nullAST; RefAST E_AST = nullAST; RefAST C1_AST = nullAST; RefAST C1x_AST = nullAST; RefAST C2_AST = nullAST; RefAST C2x_AST = nullAST; RefAST C3_AST = nullAST; RefToken C3k = nullToken; RefAST C3k_AST = nullAST; RefAST C3x_AST = nullAST; try { // for error handling C1k = LT(1); C1k_AST = astFactory.create(C1k); match(LITERAL_if); RefAST tmp218_AST = nullAST; tmp218_AST = astFactory.create(LT(1)); match(OP_LPAREN); expr(); E_AST = returnAST; RefAST tmp219_AST = nullAST; tmp219_AST = astFactory.create(LT(1)); match(OP_RPAREN); { posEntryList(); C1x_AST = returnAST; C1_AST = astFactory.make( (new ASTArray(3))->add(C1k_AST)->add(E_AST)->add(C1x_AST)); } { if (((LA(1) >= LITERAL_else && LA(1) <= LITERAL_elseif)) && (_tokenSet_48.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { posElseIfList(); C2x_AST = returnAST; C2_AST = C2x_AST; } else if ((LA(1)==LITERAL_else||LA(1)==LITERAL_endif) && (_tokenSet_48.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } { switch ( LA(1)) { case LITERAL_else: { C3k = LT(1); C3k_AST = astFactory.create(C3k); match(LITERAL_else); posEntryList(); C3x_AST = returnAST; C3_AST = astFactory.make( (new ASTArray(2))->add(C3k_AST)->add(C3x_AST)); break; } case LITERAL_endif: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp220_AST = nullAST; tmp220_AST = astFactory.create(LT(1)); match(LITERAL_endif); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp221_AST = nullAST; tmp221_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case LITERAL_else: case LITERAL_endif: case Zelseif: case LITERAL_elseif: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } posIf_AST = currentAST.root; posIf_AST = astFactory.make( (new ASTArray(4))->add(astFactory.create(ZifStruct))->add(C1_AST)->add(C2_AST)->add(C3_AST)); currentAST.root = posIf_AST; currentAST.child = posIf_AST!=nullAST &&posIf_AST->getFirstChild()!=nullAST ? posIf_AST->getFirstChild() : posIf_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = posIf_AST; } void GrpParser::posRule() { returnAST = nullAST; ASTPair currentAST; RefAST posRule_AST = nullAST; try { // for error handling subRule(); astFactory.addASTChild(currentAST, returnAST); posRule_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = posRule_AST; } void GrpParser::posPass() { returnAST = nullAST; ASTPair currentAST; RefAST posPass_AST = nullAST; try { // for error handling RefAST tmp222_AST = nullAST; tmp222_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp222_AST); match(LITERAL_pass); RefAST tmp223_AST = nullAST; tmp223_AST = astFactory.create(LT(1)); match(OP_LPAREN); RefAST tmp224_AST = nullAST; tmp224_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp224_AST); match(LIT_INT); RefAST tmp225_AST = nullAST; tmp225_AST = astFactory.create(LT(1)); match(OP_RPAREN); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp226_AST = nullAST; tmp226_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { posEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop288; } } while (true); _loop288:; } RefAST tmp227_AST = nullAST; tmp227_AST = astFactory.create(LT(1)); match(LITERAL_endpass); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp228_AST = nullAST; tmp228_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case LITERAL_else: case LITERAL_endif: case Zelseif: case LITERAL_elseif: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } posPass_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = posPass_AST; } void GrpParser::posEnv() { returnAST = nullAST; ASTPair currentAST; RefAST posEnv_AST = nullAST; try { // for error handling RefAST tmp229_AST = nullAST; tmp229_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp229_AST); match(LITERAL_environment); { switch ( LA(1)) { case OP_LBRACE: { directives(); astFactory.addASTChild(currentAST, returnAST); break; } case OP_LPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_SEMI: { RefAST tmp230_AST = nullAST; tmp230_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_if: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } { do { if ((_tokenSet_12.member(LA(1)))) { posEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop282; } } while (true); _loop282:; } RefAST tmp231_AST = nullAST; tmp231_AST = astFactory.create(LT(1)); match(LITERAL_endenvironment); { switch ( LA(1)) { case OP_SEMI: { RefAST tmp232_AST = nullAST; tmp232_AST = astFactory.create(LT(1)); match(OP_SEMI); break; } case OP_LPAREN: case LITERAL_environment: case LITERAL_endenvironment: case IDENT: case LITERAL_table: case LITERAL_endtable: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case LITERAL_pass: case LITERAL_endpass: case LITERAL_if: case LITERAL_else: case LITERAL_endif: case Zelseif: case LITERAL_elseif: case OP_LBRACKET: case OP_UNDER: case OP_AT: case OP_HASH: { break; } default: { throw NoViableAltException(LT(1)); } } } posEnv_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_47); } returnAST = posEnv_AST; } void GrpParser::posEntryList() { returnAST = nullAST; ASTPair currentAST; RefAST posEntryList_AST = nullAST; try { // for error handling { do { if ((_tokenSet_12.member(LA(1)))) { posEntry(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop302; } } while (true); _loop302:; } posEntryList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_49); } returnAST = posEntryList_AST; } void GrpParser::posElseIfList() { returnAST = nullAST; ASTPair currentAST; RefAST posElseIfList_AST = nullAST; try { // for error handling { do { if ((LA(1)==Zelseif||LA(1)==LITERAL_elseif)) { posElseIf(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop297; } } while (true); _loop297:; } posElseIfList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_50); } returnAST = posElseIfList_AST; } void GrpParser::posElseIf() { returnAST = nullAST; ASTPair currentAST; RefAST posElseIf_AST = nullAST; try { // for error handling { switch ( LA(1)) { case Zelseif: { RefAST tmp233_AST = nullAST; tmp233_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp233_AST); match(Zelseif); break; } case LITERAL_elseif: { RefAST tmp234_AST = nullAST; tmp234_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp234_AST); match(LITERAL_elseif); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp235_AST = nullAST; tmp235_AST = astFactory.create(LT(1)); match(OP_LPAREN); expr(); astFactory.addASTChild(currentAST, returnAST); RefAST tmp236_AST = nullAST; tmp236_AST = astFactory.create(LT(1)); match(OP_RPAREN); posEntryList(); astFactory.addASTChild(currentAST, returnAST); posElseIf_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_49); } returnAST = posElseIf_AST; } void GrpParser::posRhs() { returnAST = nullAST; ASTPair currentAST; RefAST posRhs_AST = nullAST; try { // for error handling { int _cnt306=0; do { if ((_tokenSet_51.member(LA(1))) && (_tokenSet_69.member(LA(2))) && (_tokenSet_70.member(LA(3)))) { posRhsRange(); astFactory.addASTChild(currentAST, returnAST); } else { if ( _cnt306>=1 ) { goto _loop306; } else {throw NoViableAltException(LT(1));} } _cnt306++; } while (true); _loop306:; } posRhs_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_71); } returnAST = posRhs_AST; } void GrpParser::posRhsRange() { returnAST = nullAST; ASTPair currentAST; RefAST posRhsRange_AST = nullAST; RefAST X1_AST = nullAST; RefAST X2_AST = nullAST; RefToken Q = nullToken; RefAST Q_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_LBRACKET: { posRhsList(); X1_AST = returnAST; posRhsRange_AST = currentAST.root; posRhsRange_AST = X1_AST; currentAST.root = posRhsRange_AST; currentAST.child = posRhsRange_AST!=nullAST &&posRhsRange_AST->getFirstChild()!=nullAST ? posRhsRange_AST->getFirstChild() : posRhsRange_AST; currentAST.advanceChildToEnd(); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_UNDER: case OP_AT: case OP_HASH: { posRhsItem(); X2_AST = returnAST; { if ((LA(1)==OP_QUESTION)) { Q = LT(1); Q_AST = astFactory.create(Q); match(OP_QUESTION); posRhsRange_AST = currentAST.root; posRhsRange_AST = astFactory.make( (new ASTArray(2))->add(Q_AST)->add(X2_AST)); currentAST.root = posRhsRange_AST; currentAST.child = posRhsRange_AST!=nullAST &&posRhsRange_AST->getFirstChild()!=nullAST ? posRhsRange_AST->getFirstChild() : posRhsRange_AST; currentAST.advanceChildToEnd(); } else if ((_tokenSet_71.member(LA(1))) && (_tokenSet_69.member(LA(2))) && (_tokenSet_70.member(LA(3)))) { posRhsRange_AST = currentAST.root; posRhsRange_AST = X2_AST; currentAST.root = posRhsRange_AST; currentAST.child = posRhsRange_AST!=nullAST &&posRhsRange_AST->getFirstChild()!=nullAST ? posRhsRange_AST->getFirstChild() : posRhsRange_AST; currentAST.advanceChildToEnd(); } else if ((_tokenSet_71.member(LA(1))) && (_tokenSet_69.member(LA(2))) && (_tokenSet_70.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } break; } default: { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_71); } returnAST = posRhsRange_AST; } void GrpParser::posRhsList() { returnAST = nullAST; ASTPair currentAST; RefAST posRhsList_AST = nullAST; try { // for error handling { RefAST tmp237_AST = nullAST; tmp237_AST = astFactory.create(LT(1)); match(OP_LBRACKET); { int _cnt313=0; do { if ((_tokenSet_51.member(LA(1)))) { posRhs(); astFactory.addASTChild(currentAST, returnAST); } else { if ( _cnt313>=1 ) { goto _loop313; } else {throw NoViableAltException(LT(1));} } _cnt313++; } while (true); _loop313:; } RefAST tmp238_AST = nullAST; tmp238_AST = astFactory.create(LT(1)); match(OP_RBRACKET); } RefAST tmp239_AST = nullAST; tmp239_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp239_AST); match(OP_QUESTION); posRhsList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_71); } returnAST = posRhsList_AST; } void GrpParser::posRhsItem() { returnAST = nullAST; ASTPair currentAST; RefAST posRhsItem_AST = nullAST; try { // for error handling subRhsItem(); astFactory.addASTChild(currentAST, returnAST); posRhsItem_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_72); } returnAST = posRhsItem_AST; } void GrpParser::contextRange() { returnAST = nullAST; ASTPair currentAST; RefAST contextRange_AST = nullAST; RefAST X1_AST = nullAST; RefToken X2 = nullToken; RefAST X2_AST = nullAST; RefAST X3_AST = nullAST; RefToken Q = nullToken; RefAST Q_AST = nullAST; try { // for error handling { { switch ( LA(1)) { case OP_LBRACKET: { contextList(); X1_AST = returnAST; contextRange_AST = currentAST.root; contextRange_AST = X1_AST; currentAST.root = contextRange_AST; currentAST.child = contextRange_AST!=nullAST &&contextRange_AST->getFirstChild()!=nullAST ? contextRange_AST->getFirstChild() : contextRange_AST; currentAST.advanceChildToEnd(); break; } case OP_CARET: { X2 = LT(1); X2_AST = astFactory.create(X2); match(OP_CARET); contextRange_AST = currentAST.root; contextRange_AST = X2_AST; currentAST.root = contextRange_AST; currentAST.child = contextRange_AST!=nullAST &&contextRange_AST->getFirstChild()!=nullAST ? contextRange_AST->getFirstChild() : contextRange_AST; currentAST.advanceChildToEnd(); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_UNDER: case OP_HASH: { contextItem(); X3_AST = returnAST; { if ((LA(1)==OP_QUESTION)) { Q = LT(1); Q_AST = astFactory.create(Q); match(OP_QUESTION); contextRange_AST = currentAST.root; contextRange_AST = astFactory.make( (new ASTArray(2))->add(Q_AST)->add(X3_AST)); currentAST.root = contextRange_AST; currentAST.child = contextRange_AST!=nullAST &&contextRange_AST->getFirstChild()!=nullAST ? contextRange_AST->getFirstChild() : contextRange_AST; currentAST.advanceChildToEnd(); } else if ((_tokenSet_73.member(LA(1))) && (_tokenSet_74.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { contextRange_AST = currentAST.root; contextRange_AST = X3_AST; currentAST.root = contextRange_AST; currentAST.child = contextRange_AST!=nullAST &&contextRange_AST->getFirstChild()!=nullAST ? contextRange_AST->getFirstChild() : contextRange_AST; currentAST.advanceChildToEnd(); } else if ((_tokenSet_73.member(LA(1))) && (_tokenSet_74.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { } else { throw NoViableAltException(LT(1)); } } break; } default: { throw NoViableAltException(LT(1)); } } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_73); } returnAST = contextRange_AST; } void GrpParser::contextList() { returnAST = nullAST; ASTPair currentAST; RefAST contextList_AST = nullAST; try { // for error handling RefAST tmp240_AST = nullAST; tmp240_AST = astFactory.create(LT(1)); match(OP_LBRACKET); { int _cnt329=0; do { if ((_tokenSet_57.member(LA(1)))) { contextRange(); astFactory.addASTChild(currentAST, returnAST); } else { if ( _cnt329>=1 ) { goto _loop329; } else {throw NoViableAltException(LT(1));} } _cnt329++; } while (true); _loop329:; } RefAST tmp241_AST = nullAST; tmp241_AST = astFactory.create(LT(1)); match(OP_RBRACKET); RefAST tmp242_AST = nullAST; tmp242_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp242_AST); match(OP_QUESTION); contextList_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_73); } returnAST = contextList_AST; } void GrpParser::contextItem() { returnAST = nullAST; ASTPair currentAST; RefAST contextItem_AST = nullAST; RefToken C1 = nullToken; RefAST C1_AST = nullAST; RefToken C2 = nullToken; RefAST C2_AST = nullAST; RefAST C3_AST = nullAST; RefAST A_AST = nullAST; RefAST Y_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_HASH: { C1 = LT(1); C1_AST = astFactory.create(C1); match(OP_HASH); break; } case OP_UNDER: { C2 = LT(1); C2_AST = astFactory.create(C2); match(OP_UNDER); break; } case OP_LPAREN: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: { glyphSpec(); C3_AST = returnAST; break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_EQ: { alias(); A_AST = returnAST; break; } case OP_LPAREN: case OP_SEMI: case OP_LBRACE: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_HASH: case OP_CARET: { break; } default: { throw NoViableAltException(LT(1)); } } } { switch ( LA(1)) { case OP_LBRACE: { constraint(); Y_AST = returnAST; break; } case OP_LPAREN: case OP_SEMI: case IDENT: case LITERAL_pseudo: case LIT_UHEX: case LITERAL_codepoint: case LITERAL_glyphid: case LITERAL_postscript: case LITERAL_unicode: case OP_QUESTION: case OP_LBRACKET: case OP_RBRACKET: case OP_UNDER: case OP_HASH: case OP_CARET: { break; } default: { throw NoViableAltException(LT(1)); } } } contextItem_AST = currentAST.root; contextItem_AST = astFactory.make( (new ASTArray(6))->add(astFactory.create(ZruleItem))->add(C1_AST)->add(C2_AST)->add(C3_AST)->add(A_AST)->add(Y_AST)); currentAST.root = contextItem_AST; currentAST.child = contextItem_AST!=nullAST &&contextItem_AST->getFirstChild()!=nullAST ? contextItem_AST->getFirstChild() : contextItem_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_75); } returnAST = contextItem_AST; } void GrpParser::constraint() { returnAST = nullAST; ASTPair currentAST; RefAST constraint_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling RefAST tmp243_AST = nullAST; tmp243_AST = astFactory.create(LT(1)); match(OP_LBRACE); { switch ( LA(1)) { case OP_LPAREN: case IDENT: case LIT_INT: case LIT_STRING: case LITERAL_glyph: case OP_AT: case LITERAL_position: case LITERAL_justify: case LITERAL_min: case LITERAL_max: case OP_PLUS: case OP_MINUS: case OP_NOT: case OP_BITNOT: case LITERAL_true: case LITERAL_false: { expr(); X_AST = returnAST; break; } case OP_RBRACE: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp244_AST = nullAST; tmp244_AST = astFactory.create(LT(1)); match(OP_RBRACE); constraint_AST = currentAST.root; constraint_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zconstraint))->add(X_AST)); currentAST.root = constraint_AST; currentAST.child = constraint_AST!=nullAST &&constraint_AST->getFirstChild()!=nullAST ? constraint_AST->getFirstChild() : constraint_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_75); } returnAST = constraint_AST; } void GrpParser::otherEntry() { returnAST = nullAST; ASTPair currentAST; RefAST otherEntry_AST = nullAST; RefAST X_AST = nullAST; try { // for error handling { if ((_tokenSet_76.member(LA(1))) && ((LA(2) >= OP_EQ && LA(2) <= AT_IDENT)) && (_tokenSet_4.member(LA(3)))) { { RefAST tmp245_AST = nullAST; tmp245_AST = astFactory.create(LT(1)); match(_tokenSet_76); } } else if ((LA(1)==LITERAL_environment||LA(1)==LITERAL_table) && (_tokenSet_77.member(LA(2))) && ((LA(3) >= OP_EQ && LA(3) <= AT_IDENT))) { topDecl(); X_AST = returnAST; otherEntry_AST = currentAST.root; otherEntry_AST = X_AST; currentAST.root = otherEntry_AST; currentAST.child = otherEntry_AST!=nullAST &&otherEntry_AST->getFirstChild()!=nullAST ? otherEntry_AST->getFirstChild() : otherEntry_AST; currentAST.advanceChildToEnd(); } else { throw NoViableAltException(LT(1)); } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_9); } returnAST = otherEntry_AST; } void GrpParser::attrName() { returnAST = nullAST; ASTPair currentAST; RefAST attrName_AST = nullAST; try { // for error handling { switch ( LA(1)) { case IDENT: { RefAST tmp246_AST = nullAST; tmp246_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp246_AST); match(IDENT); break; } case LIT_INT: { RefAST tmp247_AST = nullAST; tmp247_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp247_AST); match(LIT_INT); break; } case LITERAL_glyph: { RefAST tmp248_AST = nullAST; tmp248_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp248_AST); match(LITERAL_glyph); break; } case LITERAL_justify: { RefAST tmp249_AST = nullAST; tmp249_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp249_AST); match(LITERAL_justify); break; } case LITERAL_min: { RefAST tmp250_AST = nullAST; tmp250_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp250_AST); match(LITERAL_min); break; } case LITERAL_max: { RefAST tmp251_AST = nullAST; tmp251_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp251_AST); match(LITERAL_max); break; } default: { throw NoViableAltException(LT(1)); } } } attrName_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_30); } returnAST = attrName_AST; } void GrpParser::attrAssignOp() { returnAST = nullAST; ASTPair currentAST; RefAST attrAssignOp_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_EQ: { RefAST tmp252_AST = nullAST; tmp252_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp252_AST); match(OP_EQ); break; } case OP_PLUSEQUAL: { RefAST tmp253_AST = nullAST; tmp253_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp253_AST); match(OP_PLUSEQUAL); break; } case OP_MINUSEQUAL: { RefAST tmp254_AST = nullAST; tmp254_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp254_AST); match(OP_MINUSEQUAL); break; } case OP_DIVEQUAL: { RefAST tmp255_AST = nullAST; tmp255_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp255_AST); match(OP_DIVEQUAL); break; } case OP_MULTEQUAL: { RefAST tmp256_AST = nullAST; tmp256_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp256_AST); match(OP_MULTEQUAL); break; } default: { throw NoViableAltException(LT(1)); } } } attrAssignOp_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_1); } returnAST = attrAssignOp_AST; } void GrpParser::function() { returnAST = nullAST; ASTPair currentAST; RefAST function_AST = nullAST; RefToken I = nullToken; RefAST I_AST = nullAST; RefAST E_AST = nullAST; try { // for error handling I = LT(1); I_AST = astFactory.create(I); match(IDENT); RefAST tmp257_AST = nullAST; tmp257_AST = astFactory.create(LT(1)); match(OP_LPAREN); { switch ( LA(1)) { case OP_LPAREN: case IDENT: case LIT_INT: case LIT_STRING: case LITERAL_glyph: case OP_AT: case LITERAL_position: case LITERAL_justify: case LITERAL_min: case LITERAL_max: case OP_PLUS: case OP_MINUS: case OP_NOT: case OP_BITNOT: case LITERAL_true: case LITERAL_false: { exprList(); E_AST = returnAST; break; } case OP_RPAREN: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp258_AST = nullAST; tmp258_AST = astFactory.create(LT(1)); match(OP_RPAREN); function_AST = currentAST.root; function_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(Zfunction))->add(I_AST)->add(E_AST)); currentAST.root = function_AST; currentAST.child = function_AST!=nullAST &&function_AST->getFirstChild()!=nullAST ? function_AST->getFirstChild() : function_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_34); } returnAST = function_AST; } void GrpParser::conditionalExpr() { returnAST = nullAST; ASTPair currentAST; RefAST conditionalExpr_AST = nullAST; try { // for error handling logicalOrExpr(); astFactory.addASTChild(currentAST, returnAST); { switch ( LA(1)) { case OP_QUESTION: { RefAST tmp259_AST = nullAST; tmp259_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp259_AST); match(OP_QUESTION); expr(); astFactory.addASTChild(currentAST, returnAST); RefAST tmp260_AST = nullAST; tmp260_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp260_AST); match(OP_COLON); expr(); astFactory.addASTChild(currentAST, returnAST); break; } case Token::EOF_TYPE: case OP_RPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case OP_RBRACE: case IDENT: case LITERAL_table: case LITERAL_endtable: case OP_COMMA: case LITERAL_glyph: case OP_COLON: case LITERAL_position: { break; } default: { throw NoViableAltException(LT(1)); } } } conditionalExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_8); } returnAST = conditionalExpr_AST; } void GrpParser::logicalOrExpr() { returnAST = nullAST; ASTPair currentAST; RefAST logicalOrExpr_AST = nullAST; try { // for error handling logicalAndExpr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_OR)) { RefAST tmp261_AST = nullAST; tmp261_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp261_AST); match(OP_OR); logicalAndExpr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop373; } } while (true); _loop373:; } logicalOrExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_78); } returnAST = logicalOrExpr_AST; } void GrpParser::logicalAndExpr() { returnAST = nullAST; ASTPair currentAST; RefAST logicalAndExpr_AST = nullAST; try { // for error handling bitwiseOrExpr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_AND)) { RefAST tmp262_AST = nullAST; tmp262_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp262_AST); match(OP_AND); bitwiseOrExpr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop376; } } while (true); _loop376:; } logicalAndExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_79); } returnAST = logicalAndExpr_AST; } void GrpParser::bitwiseOrExpr() { returnAST = nullAST; ASTPair currentAST; RefAST bitwiseOrExpr_AST = nullAST; try { // for error handling bitwiseAndExpr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_BITOR)) { RefAST tmp263_AST = nullAST; tmp263_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp263_AST); match(OP_BITOR); bitwiseAndExpr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop379; } } while (true); _loop379:; } bitwiseOrExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_80); } returnAST = bitwiseOrExpr_AST; } void GrpParser::bitwiseAndExpr() { returnAST = nullAST; ASTPair currentAST; RefAST bitwiseAndExpr_AST = nullAST; try { // for error handling comparativeExpr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_BITAND)) { RefAST tmp264_AST = nullAST; tmp264_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp264_AST); match(OP_BITAND); comparativeExpr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop382; } } while (true); _loop382:; } bitwiseAndExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_81); } returnAST = bitwiseAndExpr_AST; } void GrpParser::comparativeExpr() { returnAST = nullAST; ASTPair currentAST; RefAST comparativeExpr_AST = nullAST; try { // for error handling additiveExpr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((_tokenSet_82.member(LA(1)))) { { switch ( LA(1)) { case OP_EQUALEQUAL: { RefAST tmp265_AST = nullAST; tmp265_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp265_AST); match(OP_EQUALEQUAL); break; } case OP_NE: { RefAST tmp266_AST = nullAST; tmp266_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp266_AST); match(OP_NE); break; } case OP_LT: { RefAST tmp267_AST = nullAST; tmp267_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp267_AST); match(OP_LT); break; } case OP_LE: { RefAST tmp268_AST = nullAST; tmp268_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp268_AST); match(OP_LE); break; } case OP_GT: { RefAST tmp269_AST = nullAST; tmp269_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp269_AST); match(OP_GT); break; } case OP_GE: { RefAST tmp270_AST = nullAST; tmp270_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp270_AST); match(OP_GE); break; } case OP_EQ: { RefAST tmp271_AST = nullAST; tmp271_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp271_AST); match(OP_EQ); break; } default: { throw NoViableAltException(LT(1)); } } } additiveExpr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop386; } } while (true); _loop386:; } comparativeExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_83); } returnAST = comparativeExpr_AST; } void GrpParser::additiveExpr() { returnAST = nullAST; ASTPair currentAST; RefAST additiveExpr_AST = nullAST; try { // for error handling multiplicativeExpr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_PLUS||LA(1)==OP_MINUS)) { { switch ( LA(1)) { case OP_PLUS: { RefAST tmp272_AST = nullAST; tmp272_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp272_AST); match(OP_PLUS); break; } case OP_MINUS: { RefAST tmp273_AST = nullAST; tmp273_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp273_AST); match(OP_MINUS); break; } default: { throw NoViableAltException(LT(1)); } } } multiplicativeExpr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop390; } } while (true); _loop390:; } additiveExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_84); } returnAST = additiveExpr_AST; } void GrpParser::multiplicativeExpr() { returnAST = nullAST; ASTPair currentAST; RefAST multiplicativeExpr_AST = nullAST; try { // for error handling unaryExpr(); astFactory.addASTChild(currentAST, returnAST); { do { if ((LA(1)==OP_DIV||LA(1)==OP_MULT)) { { switch ( LA(1)) { case OP_MULT: { RefAST tmp274_AST = nullAST; tmp274_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp274_AST); match(OP_MULT); break; } case OP_DIV: { RefAST tmp275_AST = nullAST; tmp275_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp275_AST); match(OP_DIV); break; } default: { throw NoViableAltException(LT(1)); } } } unaryExpr(); astFactory.addASTChild(currentAST, returnAST); } else { goto _loop394; } } while (true); _loop394:; } multiplicativeExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_85); } returnAST = multiplicativeExpr_AST; } void GrpParser::unaryExpr() { returnAST = nullAST; ASTPair currentAST; RefAST unaryExpr_AST = nullAST; try { // for error handling { if ((LA(1)==OP_MINUS||LA(1)==OP_NOT||LA(1)==OP_BITNOT) && (_tokenSet_86.member(LA(2))) && (_tokenSet_87.member(LA(3)))) { { { switch ( LA(1)) { case OP_NOT: { RefAST tmp276_AST = nullAST; tmp276_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp276_AST); match(OP_NOT); break; } case OP_MINUS: { RefAST tmp277_AST = nullAST; tmp277_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp277_AST); match(OP_MINUS); break; } case OP_BITNOT: { RefAST tmp278_AST = nullAST; tmp278_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp278_AST); match(OP_BITNOT); break; } default: { throw NoViableAltException(LT(1)); } } } singleExpr(); astFactory.addASTChild(currentAST, returnAST); } } else if ((_tokenSet_86.member(LA(1))) && (_tokenSet_87.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { singleExpr(); astFactory.addASTChild(currentAST, returnAST); } else { throw NoViableAltException(LT(1)); } } unaryExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_88); } returnAST = unaryExpr_AST; } void GrpParser::singleExpr() { returnAST = nullAST; ASTPair currentAST; RefAST singleExpr_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_LPAREN: { RefAST tmp279_AST = nullAST; tmp279_AST = astFactory.create(LT(1)); match(OP_LPAREN); expr(); astFactory.addASTChild(currentAST, returnAST); RefAST tmp280_AST = nullAST; tmp280_AST = astFactory.create(LT(1)); match(OP_RPAREN); break; } case LIT_STRING: { RefAST tmp281_AST = nullAST; tmp281_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp281_AST); match(LIT_STRING); break; } case LITERAL_min: case LITERAL_max: { arithFunction(); astFactory.addASTChild(currentAST, returnAST); break; } case IDENT: case LITERAL_glyph: case OP_AT: case LITERAL_position: case LITERAL_justify: { lookupExpr(); astFactory.addASTChild(currentAST, returnAST); break; } case LIT_INT: case OP_PLUS: case OP_MINUS: case LITERAL_true: case LITERAL_false: { signedInt(); astFactory.addASTChild(currentAST, returnAST); break; } default: { throw NoViableAltException(LT(1)); } } } singleExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_88); } returnAST = singleExpr_AST; } void GrpParser::arithFunction() { returnAST = nullAST; ASTPair currentAST; RefAST arithFunction_AST = nullAST; RefAST E1_AST = nullAST; try { // for error handling { switch ( LA(1)) { case LITERAL_max: { RefAST tmp282_AST = nullAST; tmp282_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp282_AST); match(LITERAL_max); break; } case LITERAL_min: { RefAST tmp283_AST = nullAST; tmp283_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp283_AST); match(LITERAL_min); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp284_AST = nullAST; tmp284_AST = astFactory.create(LT(1)); match(OP_LPAREN); { switch ( LA(1)) { case OP_LPAREN: case IDENT: case LIT_INT: case LIT_STRING: case LITERAL_glyph: case OP_AT: case LITERAL_position: case LITERAL_justify: case LITERAL_min: case LITERAL_max: case OP_PLUS: case OP_MINUS: case OP_NOT: case OP_BITNOT: case LITERAL_true: case LITERAL_false: { exprList(); E1_AST = returnAST; astFactory.addASTChild(currentAST, returnAST); break; } case OP_RPAREN: { break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp285_AST = nullAST; tmp285_AST = astFactory.create(LT(1)); match(OP_RPAREN); arithFunction_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_88); } returnAST = arithFunction_AST; } void GrpParser::lookupExpr() { returnAST = nullAST; ASTPair currentAST; RefAST lookupExpr_AST = nullAST; RefAST S_AST = nullAST; RefAST I1g_AST = nullAST; RefAST I1_AST = nullAST; RefAST C1_AST = nullAST; RefAST I3_AST = nullAST; RefAST I4_AST = nullAST; RefAST C4_AST = nullAST; RefAST I2_AST = nullAST; RefAST C2_AST = nullAST; try { // for error handling { switch ( LA(1)) { case OP_AT: { selectorExpr(); S_AST = returnAST; { switch ( LA(1)) { case OP_DOT: { RefAST tmp286_AST = nullAST; tmp286_AST = astFactory.create(LT(1)); match(OP_DOT); { if ((LA(1)==LITERAL_glyph) && (LA(2)==OP_DOT) && (LA(3)==IDENT||LA(3)==LITERAL_glyph||LA(3)==LITERAL_position)) { glyphIdentDot(); I1g_AST = returnAST; } else if ((LA(1)==IDENT||LA(1)==LITERAL_glyph||LA(1)==LITERAL_position) && (_tokenSet_89.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { identDot(); I1_AST = returnAST; } else { throw NoViableAltException(LT(1)); } } { switch ( LA(1)) { case OP_DOT: { clusterExpr(); C1_AST = returnAST; break; } case Token::EOF_TYPE: case OP_EQ: case OP_RPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case OP_RBRACE: case IDENT: case LITERAL_table: case LITERAL_endtable: case OP_COMMA: case LITERAL_glyph: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_COLON: case LITERAL_position: case OP_OR: case OP_AND: case OP_BITOR: case OP_BITAND: case OP_EQUALEQUAL: case OP_NE: case OP_LT: case OP_LE: case OP_GE: case OP_PLUS: case OP_MINUS: case OP_MULT: { break; } default: { throw NoViableAltException(LT(1)); } } } lookupExpr_AST = currentAST.root; lookupExpr_AST = astFactory.make( (new ASTArray(5))->add(astFactory.create(Zlookup))->add(S_AST)->add(I1_AST)->add(I1g_AST)->add(C1_AST)); currentAST.root = lookupExpr_AST; currentAST.child = lookupExpr_AST!=nullAST &&lookupExpr_AST->getFirstChild()!=nullAST ? lookupExpr_AST->getFirstChild() : lookupExpr_AST; currentAST.advanceChildToEnd(); break; } case Token::EOF_TYPE: case OP_EQ: case OP_RPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case OP_RBRACE: case IDENT: case LITERAL_table: case LITERAL_endtable: case OP_COMMA: case LITERAL_glyph: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_COLON: case LITERAL_position: case OP_OR: case OP_AND: case OP_BITOR: case OP_BITAND: case OP_EQUALEQUAL: case OP_NE: case OP_LT: case OP_LE: case OP_GE: case OP_PLUS: case OP_MINUS: case OP_MULT: { lookupExpr_AST = currentAST.root; lookupExpr_AST = S_AST; currentAST.root = lookupExpr_AST; currentAST.child = lookupExpr_AST!=nullAST &&lookupExpr_AST->getFirstChild()!=nullAST ? lookupExpr_AST->getFirstChild() : lookupExpr_AST; currentAST.advanceChildToEnd(); break; } default: { throw NoViableAltException(LT(1)); } } } break; } case LITERAL_justify: { justifyIdentDot(); I3_AST = returnAST; lookupExpr_AST = currentAST.root; lookupExpr_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zlookup))->add(I3_AST)); currentAST.root = lookupExpr_AST; currentAST.child = lookupExpr_AST!=nullAST &&lookupExpr_AST->getFirstChild()!=nullAST ? lookupExpr_AST->getFirstChild() : lookupExpr_AST; currentAST.advanceChildToEnd(); break; } default: if ((LA(1)==LITERAL_glyph) && (LA(2)==OP_DOT) && (LA(3)==IDENT||LA(3)==LITERAL_glyph||LA(3)==LITERAL_position)) { glyphIdentDot(); I4_AST = returnAST; { switch ( LA(1)) { case OP_DOT: { clusterExpr(); C4_AST = returnAST; break; } case Token::EOF_TYPE: case OP_EQ: case OP_RPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case OP_RBRACE: case IDENT: case LITERAL_table: case LITERAL_endtable: case OP_COMMA: case LITERAL_glyph: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_COLON: case LITERAL_position: case OP_OR: case OP_AND: case OP_BITOR: case OP_BITAND: case OP_EQUALEQUAL: case OP_NE: case OP_LT: case OP_LE: case OP_GE: case OP_PLUS: case OP_MINUS: case OP_MULT: { break; } default: { throw NoViableAltException(LT(1)); } } } lookupExpr_AST = currentAST.root; lookupExpr_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(Zlookup))->add(I4_AST)->add(C4_AST)); currentAST.root = lookupExpr_AST; currentAST.child = lookupExpr_AST!=nullAST &&lookupExpr_AST->getFirstChild()!=nullAST ? lookupExpr_AST->getFirstChild() : lookupExpr_AST; currentAST.advanceChildToEnd(); } else if ((LA(1)==IDENT||LA(1)==LITERAL_glyph||LA(1)==LITERAL_position) && (_tokenSet_89.member(LA(2))) && (_tokenSet_4.member(LA(3)))) { identDot(); I2_AST = returnAST; { switch ( LA(1)) { case OP_DOT: { clusterExpr(); C2_AST = returnAST; break; } case Token::EOF_TYPE: case OP_EQ: case OP_RPAREN: case OP_SEMI: case LITERAL_environment: case LITERAL_endenvironment: case OP_RBRACE: case IDENT: case LITERAL_table: case LITERAL_endtable: case OP_COMMA: case LITERAL_glyph: case OP_GT: case OP_DIV: case OP_QUESTION: case OP_COLON: case LITERAL_position: case OP_OR: case OP_AND: case OP_BITOR: case OP_BITAND: case OP_EQUALEQUAL: case OP_NE: case OP_LT: case OP_LE: case OP_GE: case OP_PLUS: case OP_MINUS: case OP_MULT: { break; } default: { throw NoViableAltException(LT(1)); } } } lookupExpr_AST = currentAST.root; lookupExpr_AST = astFactory.make( (new ASTArray(3))->add(astFactory.create(Zlookup))->add(I2_AST)->add(C2_AST)); currentAST.root = lookupExpr_AST; currentAST.child = lookupExpr_AST!=nullAST &&lookupExpr_AST->getFirstChild()!=nullAST ? lookupExpr_AST->getFirstChild() : lookupExpr_AST; currentAST.advanceChildToEnd(); } else { throw NoViableAltException(LT(1)); } } } } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_88); } returnAST = lookupExpr_AST; } void GrpParser::selectorExpr() { returnAST = nullAST; ASTPair currentAST; RefAST selectorExpr_AST = nullAST; try { // for error handling RefAST tmp287_AST = nullAST; tmp287_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp287_AST); match(OP_AT); { switch ( LA(1)) { case LIT_INT: { RefAST tmp288_AST = nullAST; tmp288_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp288_AST); match(LIT_INT); break; } case Qalias: { RefAST tmp289_AST = nullAST; tmp289_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp289_AST); match(Qalias); break; } default: { throw NoViableAltException(LT(1)); } } } selectorExpr_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_89); } returnAST = selectorExpr_AST; } void GrpParser::glyphIdentDot() { returnAST = nullAST; ASTPair currentAST; RefAST glyphIdentDot_AST = nullAST; try { // for error handling RefAST tmp290_AST = nullAST; tmp290_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp290_AST); match(LITERAL_glyph); RefAST tmp291_AST = nullAST; tmp291_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp291_AST); match(OP_DOT); identDot(); astFactory.addASTChild(currentAST, returnAST); glyphIdentDot_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_89); } returnAST = glyphIdentDot_AST; } void GrpParser::clusterExpr() { returnAST = nullAST; ASTPair currentAST; RefAST clusterExpr_AST = nullAST; RefToken C = nullToken; RefAST C_AST = nullAST; try { // for error handling RefAST tmp292_AST = nullAST; tmp292_AST = astFactory.create(LT(1)); match(OP_DOT); C = LT(1); C_AST = astFactory.create(C); match(LIT_INT); clusterExpr_AST = currentAST.root; clusterExpr_AST = astFactory.make( (new ASTArray(2))->add(astFactory.create(Zcluster))->add(C_AST)); currentAST.root = clusterExpr_AST; currentAST.child = clusterExpr_AST!=nullAST &&clusterExpr_AST->getFirstChild()!=nullAST ? clusterExpr_AST->getFirstChild() : clusterExpr_AST; currentAST.advanceChildToEnd(); } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_88); } returnAST = clusterExpr_AST; } void GrpParser::justifyIdentDot() { returnAST = nullAST; ASTPair currentAST; RefAST justifyIdentDot_AST = nullAST; try { // for error handling RefAST tmp293_AST = nullAST; tmp293_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp293_AST); match(LITERAL_justify); RefAST tmp294_AST = nullAST; tmp294_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp294_AST); match(OP_DOT); justifyIdentDotAux(); astFactory.addASTChild(currentAST, returnAST); justifyIdentDot_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_88); } returnAST = justifyIdentDot_AST; } void GrpParser::justifyIdentDotAux() { returnAST = nullAST; ASTPair currentAST; RefAST justifyIdentDotAux_AST = nullAST; try { // for error handling { if ((LA(1)==IDENT||LA(1)==LIT_INT) && (LA(2)==OP_DOT)) { { switch ( LA(1)) { case IDENT: { RefAST tmp295_AST = nullAST; tmp295_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp295_AST); match(IDENT); break; } case LIT_INT: { RefAST tmp296_AST = nullAST; tmp296_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp296_AST); match(LIT_INT); break; } default: { throw NoViableAltException(LT(1)); } } } RefAST tmp297_AST = nullAST; tmp297_AST = astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp297_AST); match(OP_DOT); identDot(); astFactory.addASTChild(currentAST, returnAST); } else if ((LA(1)==IDENT||LA(1)==LIT_INT) && (_tokenSet_88.member(LA(2)))) { { switch ( LA(1)) { case IDENT: { RefAST tmp298_AST = nullAST; tmp298_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp298_AST); match(IDENT); break; } case LIT_INT: { RefAST tmp299_AST = nullAST; tmp299_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp299_AST); match(LIT_INT); break; } default: { throw NoViableAltException(LT(1)); } } } } else { throw NoViableAltException(LT(1)); } } justifyIdentDotAux_AST = currentAST.root; } catch (ParserException& ex) { reportError(ex); consume(); consumeUntil(_tokenSet_88); } returnAST = justifyIdentDotAux_AST; } const char* GrpParser::_tokenNames[] = { "<0>", "EOF", "<2>", "NULL_TREE_LOOKAHEAD", "OP_EQ", "OP_PLUSEQUAL", "OP_LPAREN", "OP_RPAREN", "OP_SEMI", "\"environment\"", "\"endenvironment\"", "OP_LBRACE", "OP_RBRACE", "IDENT", "\"table\"", "\"endtable\"", "\"name\"", "LIT_INT", "OP_DOT", "OP_PLUS_EQUAL", "LIT_STRING", "OP_COMMA", "\"string\"", "\"glyph\"", "OP_ANDEQUAL", "OP_MINUSEQUAL", "\"pseudo\"", "LIT_UHEX", "\"codepoint\"", "\"glyphid\"", "\"postscript\"", "\"unicode\"", "OP_DOTDOT", "LIT_CHAR", "\"feature\"", "\"language\"", "\"languages\"", "\"substitution\"", "\"pass\"", "\"endpass\"", "\"if\"", "\"else\"", "\"endif\"", "Zelseif", "\"elseif\"", "OP_GT", "OP_DIV", "OP_QUESTION", "OP_LBRACKET", "OP_RBRACKET", "OP_UNDER", "OP_AT", "OP_COLON", "OP_HASH", "OP_DOLLAR", "Qalias", "\"justification\"", "\"position\"", "\"positioning\"", "\"linebreak\"", "OP_CARET", "\"justify\"", "\"min\"", "\"max\"", "OP_DIVEQUAL", "OP_MULTEQUAL", "OP_OR", "OP_AND", "OP_BITOR", "OP_BITAND", "OP_EQUALEQUAL", "OP_NE", "OP_LT", "OP_LE", "OP_GE", "OP_PLUS", "OP_MINUS", "OP_MULT", "OP_NOT", "OP_BITNOT", "\"true\"", "\"false\"", "Zalias", "Zassocs", "Zattrs", "Zcluster", "Zcodepage", "Zconstraint", "Zcontext", "Zdirectives", "ZdotStruct", "Zfeatures", "Zfunction", "ZifStruct", "Zlhs", "Zlookup", "Zrhs", "Zrule", "ZruleItem", "Zselector", "Ztop", "ZuHex", "WS", "COMMENT_SL", "COMMENT_ML", "ESC", "ODIGIT", "DIGIT", "XDIGIT", "SQUOTE", "DQUOTE", "OP_LINEMARKER", "OP_BSLASH", "AT_IDENT", 0 }; const unsigned long GrpParser::_tokenSet_0_data_[] = { 2UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_0(_tokenSet_0_data_,4); const unsigned long GrpParser::_tokenSet_1_data_[] = { 9576512UL, 3792175104UL, 251904UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_1(_tokenSet_1_data_,8); const unsigned long GrpParser::_tokenSet_2_data_[] = { 11935952UL, 3800621056UL, 262140UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_2(_tokenSet_2_data_,8); const unsigned long GrpParser::_tokenSet_3_data_[] = { 9856850UL, 3800621056UL, 262140UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_3(_tokenSet_3_data_,8); const unsigned long GrpParser::_tokenSet_4_data_[] = { 4294967282UL, 4294967295UL, 4294967295UL, 262143UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_4(_tokenSet_4_data_,8); const unsigned long GrpParser::_tokenSet_5_data_[] = { 8414722UL, 33554432UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_5(_tokenSet_5_data_,4); const unsigned long GrpParser::_tokenSet_6_data_[] = { 10811314UL, 34660352UL, 16380UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_6(_tokenSet_6_data_,8); const unsigned long GrpParser::_tokenSet_7_data_[] = { 128UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_7(_tokenSet_7_data_,4); const unsigned long GrpParser::_tokenSet_8_data_[] = { 10549122UL, 34603008UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_8(_tokenSet_8_data_,4); const unsigned long GrpParser::_tokenSet_9_data_[] = { 4294967280UL, 4294967295UL, 4294967295UL, 262143UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_9(_tokenSet_9_data_,8); const unsigned long GrpParser::_tokenSet_10_data_[] = { 4352UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_10(_tokenSet_10_data_,4); const unsigned long GrpParser::_tokenSet_11_data_[] = { 32768UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_11(_tokenSet_11_data_,4); const unsigned long GrpParser::_tokenSet_12_data_[] = { 4227883584UL, 2949440UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_12(_tokenSet_12_data_,4); const unsigned long GrpParser::_tokenSet_13_data_[] = { 4294934512UL, 4294967295UL, 4294967295UL, 262143UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_13(_tokenSet_13_data_,8); const unsigned long GrpParser::_tokenSet_14_data_[] = { 189952UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_14(_tokenSet_14_data_,4); const unsigned long GrpParser::_tokenSet_15_data_[] = { 788496UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_15(_tokenSet_15_data_,4); const unsigned long GrpParser::_tokenSet_16_data_[] = { 5386304UL, 0UL, 202752UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_16(_tokenSet_16_data_,8); const unsigned long GrpParser::_tokenSet_17_data_[] = { 194304UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_17(_tokenSet_17_data_,4); const unsigned long GrpParser::_tokenSet_18_data_[] = { 10745746UL, 34660376UL, 16380UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_18(_tokenSet_18_data_,8); const unsigned long GrpParser::_tokenSet_19_data_[] = { 7340096UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_19(_tokenSet_19_data_,4); const unsigned long GrpParser::_tokenSet_20_data_[] = { 7600064UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_20(_tokenSet_20_data_,4); const unsigned long GrpParser::_tokenSet_21_data_[] = { 58880UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_21(_tokenSet_21_data_,4); const unsigned long GrpParser::_tokenSet_22_data_[] = { 50331696UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_22(_tokenSet_22_data_,4); const unsigned long GrpParser::_tokenSet_23_data_[] = { 61184UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_23(_tokenSet_23_data_,4); const unsigned long GrpParser::_tokenSet_24_data_[] = { 59136UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_24(_tokenSet_24_data_,4); const unsigned long GrpParser::_tokenSet_25_data_[] = { 8527872UL, 3758096384UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_25(_tokenSet_25_data_,4); const unsigned long GrpParser::_tokenSet_26_data_[] = { 33816624UL, 0UL, 3UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_26(_tokenSet_26_data_,8); const unsigned long GrpParser::_tokenSet_27_data_[] = { 4229963840UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_27(_tokenSet_27_data_,4); const unsigned long GrpParser::_tokenSet_28_data_[] = { 4230016976UL, 276815872UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_28(_tokenSet_28_data_,4); const unsigned long GrpParser::_tokenSet_29_data_[] = { 4227917632UL, 3137536UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_29(_tokenSet_29_data_,4); const unsigned long GrpParser::_tokenSet_30_data_[] = { 33818672UL, 0UL, 3UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_30(_tokenSet_30_data_,8); const unsigned long GrpParser::_tokenSet_31_data_[] = { 4227921728UL, 3137536UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_31(_tokenSet_31_data_,4); const unsigned long GrpParser::_tokenSet_32_data_[] = { 9576640UL, 3792175104UL, 251904UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_32(_tokenSet_32_data_,8); const unsigned long GrpParser::_tokenSet_33_data_[] = { 9893712UL, 3800621056UL, 262140UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_33(_tokenSet_33_data_,8); const unsigned long GrpParser::_tokenSet_34_data_[] = { 63232UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_34(_tokenSet_34_data_,4); const unsigned long GrpParser::_tokenSet_35_data_[] = { 4230148048UL, 276815872UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_35(_tokenSet_35_data_,4); const unsigned long GrpParser::_tokenSet_36_data_[] = { 3276800UL, 2UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_36(_tokenSet_36_data_,4); const unsigned long GrpParser::_tokenSet_37_data_[] = { 2097280UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_37(_tokenSet_37_data_,4); const unsigned long GrpParser::_tokenSet_38_data_[] = { 3276928UL, 2UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_38(_tokenSet_38_data_,4); const unsigned long GrpParser::_tokenSet_39_data_[] = { 2228352UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_39(_tokenSet_39_data_,4); const unsigned long GrpParser::_tokenSet_40_data_[] = { 255488UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_40(_tokenSet_40_data_,4); const unsigned long GrpParser::_tokenSet_41_data_[] = { 5451840UL, 0UL, 202752UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_41(_tokenSet_41_data_,8); const unsigned long GrpParser::_tokenSet_42_data_[] = { 259584UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_42(_tokenSet_42_data_,4); const unsigned long GrpParser::_tokenSet_43_data_[] = { 259840UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_43(_tokenSet_43_data_,4); const unsigned long GrpParser::_tokenSet_44_data_[] = { 12288UL, 24UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_44(_tokenSet_44_data_,4); const unsigned long GrpParser::_tokenSet_45_data_[] = { 63232UL, 24UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_45(_tokenSet_45_data_,4); const unsigned long GrpParser::_tokenSet_46_data_[] = { 4096UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_46(_tokenSet_46_data_,4); const unsigned long GrpParser::_tokenSet_47_data_[] = { 4227917376UL, 2957248UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_47(_tokenSet_47_data_,4); const unsigned long GrpParser::_tokenSet_48_data_[] = { 4227917632UL, 2957248UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_48(_tokenSet_48_data_,4); const unsigned long GrpParser::_tokenSet_49_data_[] = { 0UL, 7680UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_49(_tokenSet_49_data_,4); const unsigned long GrpParser::_tokenSet_50_data_[] = { 0UL, 1536UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_50(_tokenSet_50_data_,4); const unsigned long GrpParser::_tokenSet_51_data_[] = { 4227866688UL, 2949120UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_51(_tokenSet_51_data_,4); const unsigned long GrpParser::_tokenSet_52_data_[] = { 4228000208UL, 16769025UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_52(_tokenSet_52_data_,4); const unsigned long GrpParser::_tokenSet_53_data_[] = { 4239589328UL, 4043308995UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_53(_tokenSet_53_data_,4); const unsigned long GrpParser::_tokenSet_54_data_[] = { 4227866944UL, 3104768UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_54(_tokenSet_54_data_,4); const unsigned long GrpParser::_tokenSet_55_data_[] = { 4227866688UL, 2883584UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_55(_tokenSet_55_data_,4); const unsigned long GrpParser::_tokenSet_56_data_[] = { 256UL, 16384UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_56(_tokenSet_56_data_,4); const unsigned long GrpParser::_tokenSet_57_data_[] = { 4227866688UL, 270860288UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_57(_tokenSet_57_data_,4); const unsigned long GrpParser::_tokenSet_58_data_[] = { 256UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_58(_tokenSet_58_data_,4); const unsigned long GrpParser::_tokenSet_59_data_[] = { 4228050896UL, 285212609UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_59(_tokenSet_59_data_,4); const unsigned long GrpParser::_tokenSet_60_data_[] = { 4227866944UL, 3137536UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_60(_tokenSet_60_data_,4); const unsigned long GrpParser::_tokenSet_61_data_[] = { 4227869008UL, 4186112UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_61(_tokenSet_61_data_,4); const unsigned long GrpParser::_tokenSet_62_data_[] = { 4228000080UL, 12574720UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_62(_tokenSet_62_data_,4); const unsigned long GrpParser::_tokenSet_63_data_[] = { 4236443600UL, 4043308993UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_63(_tokenSet_63_data_,4); const unsigned long GrpParser::_tokenSet_64_data_[] = { 4227868992UL, 3137536UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_64(_tokenSet_64_data_,4); const unsigned long GrpParser::_tokenSet_65_data_[] = { 4227869008UL, 7331840UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_65(_tokenSet_65_data_,4); const unsigned long GrpParser::_tokenSet_66_data_[] = { 4227868992UL, 271572992UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_66(_tokenSet_66_data_,4); const unsigned long GrpParser::_tokenSet_67_data_[] = { 4230097360UL, 16769024UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_67(_tokenSet_67_data_,4); const unsigned long GrpParser::_tokenSet_68_data_[] = { 2236416UL, 8388608UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_68(_tokenSet_68_data_,4); const unsigned long GrpParser::_tokenSet_69_data_[] = { 4227999952UL, 16744449UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_69(_tokenSet_69_data_,4); const unsigned long GrpParser::_tokenSet_70_data_[] = { 4239538640UL, 3774840835UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_70(_tokenSet_70_data_,4); const unsigned long GrpParser::_tokenSet_71_data_[] = { 4227866688UL, 3080192UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_71(_tokenSet_71_data_,4); const unsigned long GrpParser::_tokenSet_72_data_[] = { 4227866688UL, 3112960UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_72(_tokenSet_72_data_,4); const unsigned long GrpParser::_tokenSet_73_data_[] = { 4227866944UL, 270991360UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_73(_tokenSet_73_data_,4); const unsigned long GrpParser::_tokenSet_74_data_[] = { 4227919824UL, 271556545UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_74(_tokenSet_74_data_,4); const unsigned long GrpParser::_tokenSet_75_data_[] = { 4227866944UL, 271024128UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_75(_tokenSet_75_data_,4); const unsigned long GrpParser::_tokenSet_76_data_[] = { 4294918128UL, 4294967295UL, 4294967295UL, 262143UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_76(_tokenSet_76_data_,8); const unsigned long GrpParser::_tokenSet_77_data_[] = { 8417088UL, 33554432UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_77(_tokenSet_77_data_,4); const unsigned long GrpParser::_tokenSet_78_data_[] = { 10549122UL, 34635776UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_78(_tokenSet_78_data_,4); const unsigned long GrpParser::_tokenSet_79_data_[] = { 10549122UL, 34635776UL, 4UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_79(_tokenSet_79_data_,8); const unsigned long GrpParser::_tokenSet_80_data_[] = { 10549122UL, 34635776UL, 12UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_80(_tokenSet_80_data_,8); const unsigned long GrpParser::_tokenSet_81_data_[] = { 10549122UL, 34635776UL, 28UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_81(_tokenSet_81_data_,8); const unsigned long GrpParser::_tokenSet_82_data_[] = { 16UL, 8192UL, 1984UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_82(_tokenSet_82_data_,8); const unsigned long GrpParser::_tokenSet_83_data_[] = { 10549122UL, 34635776UL, 60UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_83(_tokenSet_83_data_,8); const unsigned long GrpParser::_tokenSet_84_data_[] = { 10549138UL, 34643968UL, 2044UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_84(_tokenSet_84_data_,8); const unsigned long GrpParser::_tokenSet_85_data_[] = { 10549138UL, 34643968UL, 8188UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_85(_tokenSet_85_data_,8); const unsigned long GrpParser::_tokenSet_86_data_[] = { 9576512UL, 3792175104UL, 202752UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_86(_tokenSet_86_data_,8); const unsigned long GrpParser::_tokenSet_87_data_[] = { 11990994UL, 3801669632UL, 262140UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_87(_tokenSet_87_data_,8); const unsigned long GrpParser::_tokenSet_88_data_[] = { 10549138UL, 34660352UL, 16380UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_88(_tokenSet_88_data_,8); const unsigned long GrpParser::_tokenSet_89_data_[] = { 10811282UL, 34660352UL, 16380UL, 0UL, 0UL, 0UL, 0UL, 0UL }; const BitSet GrpParser::_tokenSet_89(_tokenSet_89_data_,8); grcompiler-5.2.1/compiler/GrpParser.g000066400000000000000000000604251411153030700175530ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrpParser.g Responsibility: Sharon Correll Last reviewed: Not yet. Description: Provides ANTLR definitions for the Graphite GDL parser generation. ANTLR compiles this file and produces the following files as output: GrpLexer.hpp GrpLexer.cpp GrpParser.hpp GrpParser.cpp GrpParserTokenTypes.hpp Notes on ANTLR syntax (what I remember from 6 years ago): (A|B) = A or B * = zero or more ? = optional item ^ = make this item the root of the (default) returned tree construct ! = in LHS: don't return the default tree construct; return the explicit one if any in RHS: syntactic marker only--don't include in output tree : = associate a label with an item, which can be used to explicitly build the return tree construct {#label = #(...) } = builds an explicit tree construct This file is converted into C++ code by running runantlr.bat. ----------------------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------------------- Housekeeping ----------------------------------------------------------------------------------------------*/ header { // Header stuff here void AddGlobalError(bool, int nID, std::string, int nLine); class GrpTokenStreamFilter; } options { language="Cpp"; // We're Generating C++ Code } /*---------------------------------------------------------------------------------------------- The Graphite Grammar: GrpParser ----------------------------------------------------------------------------------------------*/ { // Insert at the beginning of the GrpParser.cpp file #pragma warning(disable:4101) #include "Grp.h" // This function needs to go in the .cpp file, not the .hpp file, after the // GrpASTNode class is defined. void GrpParser::init(GrpTokenStreamFilter & tsf) { m_ptsf = &tsf; setASTNodeFactory(&GrpASTNode::factory); } void GrpParser::reportError(const ParserException& ex) { // Pipe the error back through the token stream filter, so it can supply the // line-and-file information. m_ptsf->ReportParserError(ex); } } class GrpParser extends Parser; options { k = 3; // Lookahead 3 tokens buildAST = true; // uses CommonAST by default /// ASTLabelType = "GrpASTNode"; } { // Customized code: public: // Record the token stream filter, which supplies the line-and-file information // to error messages. GrpTokenStreamFilter * m_ptsf; void init(GrpTokenStreamFilter & tsf); void reportError(const ParserException& ex); void reportError(const std::string& s) { AddGlobalError(true, 104, s.c_str(), 0); } void reportWarning(const std::string& s) { AddGlobalError(false, 504, s.c_str(), 0); } } renderDescription! : D:declarationList EOF { #renderDescription = #([Ztop], D); } ; declarationList : ( globalDecl | topDecl )*; // Top level declaration, outside of the scope of any table: topDecl : topEnvironDecl | tableDecl; // // Global Declarations // globalDecl : identDot ( OP_EQ^ | OP_PLUSEQUAL^ ) ( OP_LPAREN! exprList OP_RPAREN! | expr ) (OP_SEMI!)? ; // // Environment Declaration // // Environment outside of the scope of any table: topEnvironDecl : "environment"^ (directives)? (OP_SEMI!)? (topDecl | globalDecl)* "endenvironment"! (OP_SEMI!)? ; directives! : D:directiveList { #directives = #([Zdirectives], D); } ; directiveList : OP_LBRACE! ( directive (OP_SEMI! directive)* (OP_SEMI!)? )? OP_RBRACE! // (OP_SEMI!)? ; directive : IDENT OP_EQ^ expr; // // Table Declaration // tableDecl : "table"^ ( tableName | tableGlyph | tableFeature | tableLanguage | tableSub | tableJust | tablePos | tableLineBreak | tableOther ) "endtable"! (OP_SEMI!)? ; // // Name Table // tableName : OP_LPAREN! "name" OP_RPAREN! (directives)? (OP_SEMI!)? ( nameEnv | nameSpecList | tableDecl )*; nameEnv : "environment"^ (directives)? (OP_SEMI!)? ( nameSpecList | nameEnv | tableDecl )* "endenvironment"! (OP_SEMI!)? ; nameSpecList : ( nameSpecStruct (nameSpecList)? | nameSpecFlat (OP_SEMI! nameSpecList)? (OP_SEMI!)? ) ; // Note that using IDENT in the rules below, or an integer as the value, will be an error. nameSpecStruct! : ( N:LIT_INT | I:IDENT ) OP_LBRACE! (X:nameSpecList)? OP_RBRACE! (OP_SEMI!)? { #nameSpecStruct = #([ZdotStruct], N, I, X); } ; nameSpecFlat! : ( N:LIT_INT | I:IDENT ) ( D:OP_DOT! ( X1:nameSpecFlat | X2:nameSpecStruct ) { #nameSpecFlat = #(D, N, I, X1, X2); } | ( E1:OP_EQ | E2:OP_PLUS_EQUAL ) (Vi1:signedInt | Vi2:stringDefn ) { #nameSpecFlat = #(E1, E2, N, I, Vi1, Vi2); } ) ; stringDefn : ( LIT_STRING // | LIT_UNICHAR | stringFunc | ( OP_LPAREN stringDefn ((OP_COMMA)? stringDefn)* OP_RPAREN ) ) ; stringFunc : "string"^ OP_LPAREN! LIT_STRING (OP_COMMA! LIT_INT)? OP_RPAREN!; // // Glyph Table // tableGlyph : OP_LPAREN! "glyph" OP_RPAREN! (directives)? (OP_SEMI!)? ( glyphEnv | glyphEntry | tableDecl)* ; glyphEnv : "environment"^ (directives)? (OP_SEMI!)? (glyphEntry | glyphEnv | tableDecl)* "endenvironment"! (OP_SEMI!)? ; glyphEntry : ( glyphContents | glyphAttrs ) (OP_SEMI!)?; glyphContents : IDENT ( (OP_EQ^ | OP_PLUSEQUAL^ | OP_ANDEQUAL^ | OP_MINUSEQUAL^) glyphSpec ) (attributes)? ; glyphAttrs! : I:IDENT A:( OP_LBRACE! (X1:attrItemList)? OP_RBRACE! { #A = #([Zattrs], X1); } | OP_DOT! ( X2:attrItemFlat | X3:attrItemStruct ) { #A = #([Zattrs], X2, X3); } ) { #glyphAttrs = #([OP_PLUSEQUAL], I, A); } ; glyphSpec : ( IDENT | codepointFunc | glyphidFunc | postscriptFunc | unicodeFunc | unicodeCodepoint | pseudoFunc | ( OP_LPAREN! (glyphSpec ((OP_COMMA!)? glyphSpec)*)? OP_RPAREN! ) ) ; pseudoFunc : "pseudo"^ OP_LPAREN! (codepointFunc | glyphidFunc | postscriptFunc | unicodeFunc | unicodeCodepoint) ((OP_COMMA!)? (LIT_INT | LIT_UHEX))? OP_RPAREN! ; codepointFunc! : F:"codepoint" OP_LPAREN! X:codepointList C:(! OP_COMMA! N:LIT_INT { #C = #([Zcodepage], N); } )? OP_RPAREN! { #codepointFunc = #(F, C, X); } ; codepointList : ( ( OP_LPAREN! codepointItem ( (OP_COMMA!)? codepointItem )* OP_RPAREN! ) | codepointItem ) ; codepointItem : ( LIT_STRING | charOrIntOrRange); glyphidFunc : "glyphid"^ OP_LPAREN! intOrRange ((OP_COMMA!)? intOrRange)* OP_RPAREN! ; postscriptFunc : "postscript"^ OP_LPAREN! LIT_STRING ((OP_COMMA!)? LIT_STRING)* OP_RPAREN!; unicodeFunc : "unicode"^ OP_LPAREN! intOrRange ((OP_COMMA!)? intOrRange)* OP_RPAREN! ; unicodeCodepoint : U:unicodeIntOrRange { #unicodeCodepoint = #([ZuHex], U); } ; intOrRange : ( LIT_INT OP_DOTDOT^ LIT_INT | LIT_INT ) ; charOrIntOrRange : ( LIT_CHAR | LIT_INT ) ( OP_DOTDOT^ ( LIT_CHAR | LIT_INT ))? ; unicodeIntOrRange : ( LIT_UHEX OP_DOTDOT^ LIT_UHEX | LIT_UHEX ) ; // // Features // tableFeature : OP_LPAREN! "feature" OP_RPAREN! (directives)? (OP_SEMI!)? ( featureEnv | featureSpecList | tableDecl )*; featureEnv : "environment"^ (directives)? (OP_SEMI!)? ( featureSpecList | featureEnv | tableDecl )* "endenvironment"! (OP_SEMI!)? ; featureSpecList : ( featureSpecStruct (featureSpecList)? | featureSpecFlat (OP_SEMI! featureSpecList)? (OP_SEMI!)? ) ; // "name is treated specially below because it is already a defined keyword. // "value" is also a special keyword but we treat it as an identifier. featureSpecStruct! : ( I:IDENT | In:"name" ) OP_LBRACE! (X:featureSpecList)? OP_RBRACE! (OP_SEMI!)? { #featureSpecStruct = #([ZdotStruct], I, In, X); } ; featureSpecFlat! : ( ( I:IDENT | In:"name" ) ( D:OP_DOT! ( X1:featureSpecFlat | X2:featureSpecStruct ) { #featureSpecFlat = #(D, I, In, X1, X2); } | E1:OP_EQ (Vi1:signedInt | Vi2:stringDefn | Vi3:IDENT) { #featureSpecFlat = #(E1, I, In, Vi1, Vi2, Vi3); } ) | N:LIT_INT // language ID E2:OP_EQ (Vn1:signedInt | Vn2:stringDefn | Vn3:IDENT) { #featureSpecFlat = #(E2, N, Vn1, Vn2, Vn3); } ) ; // // Language Table // tableLanguage : OP_LPAREN! "language" OP_RPAREN! (directives)? (OP_SEMI!)? ( languageEnv | languageSpecList | tableDecl )*; languageEnv : "environment"^ (directives)? (OP_SEMI!)? ( languageSpecList | languageEnv | tableDecl )* "endenvironment"! (OP_SEMI!)? ; languageSpecList : ( languageSpec (languageSpecList)? | languageSpec (OP_SEMI! languageSpecList)? (OP_SEMI!)? ) ; languageSpec! : I:IDENT ( OP_DOT X1:languageSpecItem { #languageSpec = #([ZdotStruct], I, X1); } | OP_LBRACE X2:languageItemList OP_RBRACE! (OP_SEMI!)? { #languageSpec = #([ZdotStruct], I, X2); } ) ; languageItemList : (languageSpecItem)* ; languageSpecItem! : ( I:IDENT E1:OP_EQ (Vi1:signedInt | Vi2:IDENT) { #languageSpecItem = #(E1, I, Vi1, Vi2); } | ( Ilang:"language" | Ilangs:"languages" ) E2:OP_EQ LL:languageCodeList { #languageSpecItem = #(E2, Ilang, Ilangs, LL); } ) (OP_SEMI!)? ; languageCodeList : ( LIT_STRING | OP_LPAREN! LIT_STRING (OP_COMMA! LIT_STRING)* OP_RPAREN ) ; // // Substitution Table // tableSub : OP_LPAREN! "substitution" OP_RPAREN! (directives)? (OP_SEMI!)? (subEntry)*; subEntry : (subIf | subRule | subPass | subEnv | tableDecl); subEnv : "environment"^ (directives)? (OP_SEMI!)? (subEntry)* "endenvironment"! (OP_SEMI!)? ; subPass : "pass"^ OP_LPAREN! LIT_INT OP_RPAREN! (directives)? (OP_SEMI!)? (subEntry)* "endpass"! (OP_SEMI!)? ; subIf! : C1k:"if" OP_LPAREN! E:expr OP_RPAREN! C1:(! C1x:subEntryList { #C1 = #(C1k, E, C1x); } ) C2:(! C2x:subElseIfList { #C2 = #C2x; })? C3:(! C3k:"else" C3x:subEntryList { #C3 = #(C3k, C3x); } )? "endif"! (OP_SEMI!)? { #subIf = #([ZifStruct], C1, C2, C3); } ; subElseIfList : (subElseIf)*; subElseIf : ( Zelseif^ | "elseif"^ ) OP_LPAREN! expr OP_RPAREN! subEntryList ; subEntryList : (subEntry)*; // Note that if there is no left-hand-side, the right-hand-side will be treated here like // the left-hand-side, and the tree-walker will straighten it out later. subRule! : L:(! L1:subLhs { #L = #([Zlhs], L1); } ) ( OP_GT! R:(! R1:subRhs { #R = #([Zrhs], R1); } ) )? ( OP_DIV! C:(! C1:context { #C = #([Zcontext], C1); } ) )? OP_SEMI! { #subRule = #([Zrule], L, R, C); } ; subLhs : (subLhsRange)+; subLhsRange! : ( X1:subLhsList { #subLhsRange = #X1; } | X2:subLhsItem ( Q:OP_QUESTION { #subLhsRange = #(Q, X2); } | { #subLhsRange = #X2; } )? ) ; subLhsList : (OP_LBRACKET! (subLhs)+ OP_RBRACKET!) OP_QUESTION^; // Allow anything the right-hand-side will allow, and let the tree-walker check for it later. subLhsItem : subRhsItem; //// Old version: ////subLhsItem! : (C1:OP_UNDER | C2:glyphSpec | C3:OP_HASH) (A:alias)? //// { #subLhsItem = #([ZruleItem], C1, C2, C3, A); } ////; // REVIEW: should we allow optional items in the right hand side, and make the // tree-walker check for them? subRhs : (subRhsItem)+; // Note: we recognize the # even though it is illegal; the compiler will check for it // and give a better error message. subRhsItem! : ( C1g:OP_UNDER | ( C2at:OP_AT C2s:selectorAfterAt (OP_COLON! C2a:associations)? ) | ( C3at:OP_AT (OP_COLON!)? (C3s:selectorAfterAt)? ) | ( (C4g1:glyphSpec | C4g2:OP_HASH) ( ( OP_COLON! C4a1: associations (OP_DOLLAR! C4s1:selector)? ) | ( OP_DOLLAR! C4s2: selector (OP_COLON! C4a2:associations)? ) )? ) ) (A:alias)? (X:attributes)? { #subRhsItem = #([ZruleItem], C1g, C2at, C2s, C3at, C3s, C4g1, C4g2, C4s1, C4s2, A, C2a, C4a1, C4a2, X); } ; selector! : X:slotIndicator { #selector = #([Zselector], X); } ; associations! : ( S1:slotIndicator | S2: assocsList ) { #associations = #([Zassocs], S1, S2); } ; assocsList : (OP_LPAREN! (slotIndicator ((OP_COMMA!)? slotIndicator)*)? OP_RPAREN!); slotIndicator : ( LIT_INT | IDENT | Qalias ); // Immediately after an @, use a special version that does not accept IDENT, only Qalias, // which is what will be generated (by the token stream filter) when there is no // white space between the @ and the identifier. This is to distinguish between // '@abc' and '@ abc'. selectorAfterAt! : X:slotIndicatorAfterAt { #selectorAfterAt = #([Zselector], X); } ; slotIndicatorAfterAt : ( LIT_INT | Qalias ); // // Justification Table // tableJust : OP_LPAREN! "justification" OP_RPAREN! (directives)? (OP_SEMI!)? (subEntry)*; // // Positioning Table // tablePos : OP_LPAREN! ( "position" | "positioning" ) OP_RPAREN! (directives)? (OP_SEMI!)? (posEntry)* ; posEntry : (posIf | posRule | posPass | posEnv | tableDecl); posEnv : "environment"^ (directives)? (OP_SEMI!)? (posEntry)* "endenvironment"! (OP_SEMI!)? ; posPass : "pass"^ OP_LPAREN! LIT_INT OP_RPAREN! (directives)? (OP_SEMI!)? (posEntry)* "endpass"! (OP_SEMI!)? ; posIf! : C1k:"if" OP_LPAREN! E:expr OP_RPAREN! C1:(! C1x:posEntryList { #C1 = #(C1k, E, C1x); } ) C2:(! C2x:posElseIfList { #C2 = #C2x; })? C3:(! C3k:"else" C3x:posEntryList { #C3 = #(C3k, C3x); } )? "endif"! (OP_SEMI!)? { #posIf = #([ZifStruct], C1, C2, C3); } ; posElseIfList : (posElseIf)*; posElseIf : ( Zelseif^ | "elseif"^ ) OP_LPAREN! expr OP_RPAREN! posEntryList ; posEntryList : (posEntry)*; // REVIEW: should we make the syntax here allow for a LHS, and check for it later? ////posRule! : R:(! R1:posRhs { #R = #([Zrhs], R1); } ) //// ( OP_DIV! C:(! C1:context { #C = #([Zcontext], C1); } ) )? //// OP_SEMI! //// { #posRule = #([Zrule], R, C); } ////; // To allow substitution rules in a positioning pass: posRule : subRule; posRhs : (posRhsRange)+; posRhsRange! : ( X1:posRhsList { #posRhsRange = #X1; } | X2:posRhsItem ( Q:OP_QUESTION { #posRhsRange = #(Q, X2); } | { #posRhsRange = #X2; } )? ) ; posRhsList : (OP_LBRACKET! (posRhs)+ OP_RBRACKET!) OP_QUESTION^; // For now, recognize anything that can go in a sustitution rule; the compiler // will check and give error messages. posRhsItem : subRhsItem; // // Line-break Table // tableLineBreak : OP_LPAREN! "linebreak" OP_RPAREN! (directives)? (OP_SEMI!)? (posEntry)*; // // General table stuff // context : (contextRange)*; contextRange! : ( ( X1:contextList { #contextRange = #X1; } | X2:OP_CARET { #contextRange = #X2; } | X3:contextItem ( Q:OP_QUESTION { #contextRange = #(Q, X3); } | { #contextRange = #X3; } )? ) ) ; contextList : OP_LBRACKET! (contextRange)+ OP_RBRACKET! OP_QUESTION^; contextItem! : ( C1:OP_HASH | C2:OP_UNDER | C3:glyphSpec ) (A:alias)? (Y:constraint)? { #contextItem = #([ZruleItem], C1, C2, C3, A, Y); } ; constraint! : OP_LBRACE! (X:expr)? OP_RBRACE! { #constraint = #([Zconstraint], X); } ; alias : OP_EQ I:IDENT { #alias = #([Zalias], I); } ; // // Other Tables // tableOther : OP_LPAREN! IDENT OP_RPAREN! (directives)? (OP_SEMI!)? (otherEntry)*; otherEntry! : ( ~("endtable" | "table") | X:topDecl { #otherEntry = #X; } ); // // Attributes // attributes! : ( OP_LBRACE! (X:attrItemList)? (OP_SEMI!)? OP_RBRACE! { #attributes = #([Zattrs], X); } )? ; attrItemList : ( attrItemStruct | attrItemFlat ) (OP_SEMI! attrItemList)? ; attrItemStruct! : (I:attrName) OP_LBRACE! (X:attrItemList)? (OP_SEMI!)? OP_RBRACE! { #attrItemStruct = #([ZdotStruct], I, X); } ; //attrItemFlatTop! :( S:attrSel OP_DOT X3:attrItemFlatTop // { #attrItemFlatTop = #([OP_DOT], S, X3); } // | X:attrItemFlat // { #attrItemFlatTop = X; } // ) //; attrItemFlat! : (I:attrName) ( D:OP_DOT! ( X1:attrItemFlat | X2:attrItemStruct ) { #attrItemFlat = #(D, I, X1, X2); } | E:attrAssignOp (V1:function | V2:expr) { #attrItemFlat = #(E, I, V1, V2); } ) ; // Some special tokens can also be attribute names: // - "glyph" is also the name of a table" // - "justify" attribute values need special handling due to ambiguity between the // level numbers and cluster numbers (see lookupExpr, etc.) // - "min" and "max" are also function names attrName : ( IDENT | LIT_INT | "glyph" | "justify" | "min" | "max" ); attrAssignOp : ( OP_EQ | OP_PLUSEQUAL | OP_MINUSEQUAL | OP_DIVEQUAL | OP_MULTEQUAL // | OP_ANDEQUAL - not implemented // | OP_OREQUAL - not implemented ) ; // // Expressions // expr : conditionalExpr; exprList : expr (OP_COMMA! expr)*; conditionalExpr : logicalOrExpr (OP_QUESTION^ expr OP_COLON expr)? ; logicalOrExpr : logicalAndExpr (OP_OR^ logicalAndExpr)* ; logicalAndExpr : bitwiseOrExpr (OP_AND^ bitwiseOrExpr)* ; bitwiseOrExpr : bitwiseAndExpr (OP_BITOR^ bitwiseAndExpr)* ; bitwiseAndExpr : comparativeExpr (OP_BITAND^ comparativeExpr)* ; comparativeExpr : additiveExpr ( ( OP_EQUALEQUAL^ | OP_NE^ | OP_LT^ | OP_LE^ | OP_GT^ | OP_GE^ | OP_EQ^ // error ) additiveExpr )* ; additiveExpr : multiplicativeExpr ((OP_PLUS^ | OP_MINUS^) multiplicativeExpr)* ; multiplicativeExpr : unaryExpr ((OP_MULT^ | OP_DIV^) unaryExpr)* ; unaryExpr : ( (( OP_NOT^ | OP_MINUS^ | OP_BITNOT^) singleExpr) | singleExpr ) ; singleExpr : ( OP_LPAREN! expr OP_RPAREN! | LIT_STRING | arithFunction | lookupExpr | signedInt ) ; lookupExpr! : ( S:selectorExpr ( OP_DOT (I1g:glyphIdentDot | I1:identDot) (C1:clusterExpr)? { #lookupExpr = #([Zlookup], S, I1, I1g, C1); } | { #lookupExpr = #S; } ) | I3:justifyIdentDot { #lookupExpr = #([Zlookup], I3); } | I4:glyphIdentDot (C4:clusterExpr)? { #lookupExpr = #([Zlookup], I4, C4); } | I2:identDot (C2:clusterExpr)? { #lookupExpr = #([Zlookup], I2, C2); } ) ; selectorExpr : OP_AT^ ( LIT_INT | Qalias ); clusterExpr! : OP_DOT C:LIT_INT { #clusterExpr = #([Zcluster], C); } ; signedInt : ( "true" | "false" | (OP_PLUS! | OP_MINUS^)? LIT_INT ); identDot : ( ( IDENT | "position" ) OP_DOT^ identDot | ( IDENT | "position" | "glyph" ) ) ; // We create a separate rule to handle "justify.2...." because of the ambiguity between the integer as // a level and the integer as a cluster indicator. justifyIdentDot : "justify" OP_DOT^ justifyIdentDotAux; justifyIdentDotAux : ( ( IDENT | LIT_INT ) OP_DOT^ identDot | ( IDENT | LIT_INT ) ) ; // Probably wouldn't have to do this if I could remember how to make the correct structure be created: glyphIdentDot : "glyph" OP_DOT^ identDot; // // Functions // arithFunction : ("max"^ | "min"^ ) OP_LPAREN! (E1:exprList)? OP_RPAREN!; function! : I:IDENT OP_LPAREN! (E:exprList)? OP_RPAREN! { #function = #([Zfunction], I, E); } ; /*---------------------------------------------------------------------------------------------- The Graphite Scanner: GrpLexer ----------------------------------------------------------------------------------------------*/ { // Insert at the beginning of the GrpLexer.cpp file: #pragma warning(disable:4101) #include "Grp.h" // This function needs to go in the .cpp file, not the .hpp file, after the // GrpToken class is defined. void GrpLexer::init(GrpTokenStreamFilter & tsf) { m_ptsf = &tsf; setTokenObjectFactory(&GrpToken::factory); } void GrpLexer::reportError(const ScannerException& ex) { // Pipe the error through the token stream filter, to handle the // line-and-file adjustments. m_ptsf->ReportLexerError(ex); } } class GrpLexer extends Lexer; options { charVocabulary = '\0'..'\377'; // Set of recognizable characters // tokenVocabulary = Grp; // Name of generated token set testLiterals = false; // Don't automatically test literals caseSensitiveLiterals = false; k = 6; // Look ahead (6 characters) } tokens { "codepoint"; "else"; "elseif"; "endenvironment"; "endif"; "endpass"; "endtable"; "environment"; "false"; "feature"; "glyph"; "glyphid"; "if"; "justification"; "justify"; "linebreak"; "max"; "min"; "name"; "pass"; "position"; "positioning"; "postscript"; "pseudo"; "substitution"; "string"; "table"; "true"; "unicode"; Zalias; Zassocs; Zattrs; Zcluster; Zcodepage; Zconstraint; Zcontext; Zdirectives; ZdotStruct; Zelseif; // generated by token-stream filter Zfeatures; Zfunction; ZifStruct; Zlhs; Zlookup; Zrhs; Zrule; ZruleItem; Zselector; Ztop; ZuHex; // Generated by the token-stream filter from AT_IDENT: Qalias; OP_AT; } { // Customized code: public: // Record the token stream filter, which supplies the line-and-file information // to error messages. GrpTokenStreamFilter * m_ptsf; void init(GrpTokenStreamFilter & tsf); void reportError(const ScannerException& ex); void reportError(const std::string& s) { AddGlobalError(true, 105, s.c_str(), 0); } void reportWarning(const std::string& s) { AddGlobalError(false, 505, s.c_str(), 0); } RefToken publicMakeToken(int t) { return makeToken(t); } } // // GrpLexer Rules // // // Whitespace // WS : ( ' ' | '\t' | '\f' | ( "\r\n" | '\r' | '\n' ) { newline(); } // | ',' ) { _ttype = Token::SKIP; } ; // // Comments (Single (rest of) line and Multiple line) // COMMENT_SL : "//" (~('\n'|'\r'))* { _ttype = Token::SKIP; } ; COMMENT_ML : "/*" ( { LA(2)!='/' }? '*' | '\n' { newline(); } | ~('*'|'\n') )* "*/" { _ttype = Token::SKIP; } ; // // Literals // LIT_INT : ( (DIGIT)+ | ( "0x" (XDIGIT)+ ) ) ('m' | 'M')?; LIT_UHEX : "U+" (XDIGIT)+; //LIT_UNICHAR : "0u" XDIGIT XDIGIT XDIGIT XDIGIT; // For some reason we have to expand the SQUOTE and DQUOTE rules into the negations of the // following rules, or we get "rule cannot be inverted" errors. LIT_CHAR : SQUOTE! ( ESC | ~( '\'' | '\221' | '\222' ) ) SQUOTE!; LIT_STRING : DQUOTE! ( ESC | ~( '"' | '\223' | '\224' ) )* DQUOTE!; protected ESC : '\\' ( 'n' | 'r' | 't' | 'b' | 'f' | '"' | '\'' | '\\' // | ('0'..'3') ( ODIGIT (ODIGIT)? )? // | ('4'..'7') (ODIGIT)? // | 'u' XDIGIT XDIGIT XDIGIT XDIGIT ) ; protected ODIGIT : '0'..'7'; protected DIGIT : '0'..'9'; protected XDIGIT : '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'; protected SQUOTE : ( '\'' | '\221' | '\222' ); protected DQUOTE : ( '"' | '\223' | '\224' ); // // Operators // OP_DOT : '.'; OP_DOTDOT : ".."; OP_COLON : ':'; OP_SEMI : ';'; OP_LBRACKET : '['; OP_RBRACKET : ']'; OP_LPAREN : '('; OP_RPAREN : ')'; OP_LBRACE : '{'; OP_RBRACE : '}'; OP_NOT : '!'; OP_LT : '<'; OP_LE : "<="; OP_EQ : '='; OP_EQUALEQUAL : "=="; OP_NE : "!="; OP_GE : ">="; OP_GT : '>'; OP_PLUS : '+'; OP_PLUSEQUAL : "+="; OP_MINUS : '-'; OP_MINUSEQUAL : "-="; OP_MULT : '*'; OP_MULTEQUAL : "*="; OP_DIV : '/'; OP_DIVEQUAL : "/="; OP_ANDEQUAL : "&="; // used for both class definitions //OP_OREQUAL : "|="; // bitwise assignment - not implemented OP_COMMA : ','; //OP_AT : '@'; // see AT_IDENT below OP_DOLLAR : '$'; OP_LINEMARKER : "#line"; OP_HASH : '#'; OP_AND : "&&"; OP_OR : "||"; OP_BITAND : "&"; OP_BITOR : "|"; OP_BITNOT : "~"; OP_BSLASH : '\\'; OP_UNDER : '_'; OP_QUESTION : '?'; OP_CARET : '^'; // // Identifiers // IDENT options { testLiterals = true; } : ( 'a'..'z' | 'A'..'Z' ) ( '_' | 'a'..'z' | 'A'..'Z' | '0'..'9' )* ; // Because white space IS significant after an @; ie, "@ X" is not the same as "@X" // (in the first case X is a class name; in the second it is an alias). So we treat them // as one token here, and the token stream filter breaks them into 2 tokens: OP_AT // followed by Qalias or LIT_INT. AT_IDENT : ('@' | "@:" ) ( ( 'a'..'z' | 'A'..'Z' ) ( '_' | 'a'..'z' | 'A'..'Z' | '0'..'9' )* | ( '0'..'9' )* ) ; grcompiler-5.2.1/compiler/GrpParser.hpp000066400000000000000000000300451411153030700201070ustar00rootroot00000000000000#ifndef INC_GrpParser_hpp_ #define INC_GrpParser_hpp_ #include "Antlr/config.hpp" /* * ANTLR-generated file resulting from grammar c:\graphite1\grcompiler\compiler\grpparser.g * * Terence Parr, MageLang Institute * with John Lilley, Empathy Software * ANTLR Version 2.6.0; 1996-1999 */ #include "Antlr/TokenStream.hpp" #include "Antlr/TokenBuffer.hpp" #include "Antlr/LLkParser.hpp" // Header stuff here void AddGlobalError(bool, int nID, std::string, int nLine); class GrpTokenStreamFilter; class GrpParser : public LLkParser { // Customized code: public: // Record the token stream filter, which supplies the line-and-file information // to error messages. GrpTokenStreamFilter * m_ptsf; void init(GrpTokenStreamFilter & tsf); void reportError(const ParserException& ex); void reportError(const std::string& s) { AddGlobalError(true, 104, s.c_str(), 0); } void reportWarning(const std::string& s) { AddGlobalError(false, 504, s.c_str(), 0); } protected: GrpParser(TokenBuffer& tokenBuf, int k); public: GrpParser(TokenBuffer& tokenBuf); protected: GrpParser(TokenStream& lexer, int k); public: GrpParser(TokenStream& lexer); GrpParser(const ParserSharedInputState& state); public: void renderDescription(); public: void declarationList(); public: void globalDecl(); public: void topDecl(); public: void topEnvironDecl(); public: void tableDecl(); public: void identDot(); public: void exprList(); public: void expr(); public: void directives(); public: void directiveList(); public: void directive(); public: void tableName(); public: void tableGlyph(); public: void tableFeature(); public: void tableLanguage(); public: void tableSub(); public: void tableJust(); public: void tablePos(); public: void tableLineBreak(); public: void tableOther(); public: void nameEnv(); public: void nameSpecList(); public: void nameSpecStruct(); public: void nameSpecFlat(); public: void signedInt(); public: void stringDefn(); public: void stringFunc(); public: void glyphEnv(); public: void glyphEntry(); public: void glyphContents(); public: void glyphAttrs(); public: void glyphSpec(); public: void attributes(); public: void attrItemList(); public: void attrItemFlat(); public: void attrItemStruct(); public: void codepointFunc(); public: void glyphidFunc(); public: void postscriptFunc(); public: void unicodeFunc(); public: void unicodeCodepoint(); public: void pseudoFunc(); public: void codepointList(); public: void codepointItem(); public: void charOrIntOrRange(); public: void intOrRange(); public: void unicodeIntOrRange(); public: void featureEnv(); public: void featureSpecList(); public: void featureSpecStruct(); public: void featureSpecFlat(); public: void languageEnv(); public: void languageSpecList(); public: void languageSpec(); public: void languageSpecItem(); public: void languageItemList(); public: void languageCodeList(); public: void subEntry(); public: void subIf(); public: void subRule(); public: void subPass(); public: void subEnv(); public: void subEntryList(); public: void subElseIfList(); public: void subElseIf(); public: void subLhs(); public: void subRhs(); public: void context(); public: void subLhsRange(); public: void subLhsList(); public: void subLhsItem(); public: void subRhsItem(); public: void selectorAfterAt(); public: void associations(); public: void selector(); public: void alias(); public: void slotIndicator(); public: void assocsList(); public: void slotIndicatorAfterAt(); public: void posEntry(); public: void posIf(); public: void posRule(); public: void posPass(); public: void posEnv(); public: void posEntryList(); public: void posElseIfList(); public: void posElseIf(); public: void posRhs(); public: void posRhsRange(); public: void posRhsList(); public: void posRhsItem(); public: void contextRange(); public: void contextList(); public: void contextItem(); public: void constraint(); public: void otherEntry(); public: void attrName(); public: void attrAssignOp(); public: void function(); public: void conditionalExpr(); public: void logicalOrExpr(); public: void logicalAndExpr(); public: void bitwiseOrExpr(); public: void bitwiseAndExpr(); public: void comparativeExpr(); public: void additiveExpr(); public: void multiplicativeExpr(); public: void unaryExpr(); public: void singleExpr(); public: void arithFunction(); public: void lookupExpr(); public: void selectorExpr(); public: void glyphIdentDot(); public: void clusterExpr(); public: void justifyIdentDot(); public: void justifyIdentDotAux(); private: static const char* _tokenNames[]; static const unsigned long _tokenSet_0_data_[]; static const BitSet _tokenSet_0; static const unsigned long _tokenSet_1_data_[]; static const BitSet _tokenSet_1; static const unsigned long _tokenSet_2_data_[]; static const BitSet _tokenSet_2; static const unsigned long _tokenSet_3_data_[]; static const BitSet _tokenSet_3; static const unsigned long _tokenSet_4_data_[]; static const BitSet _tokenSet_4; static const unsigned long _tokenSet_5_data_[]; static const BitSet _tokenSet_5; static const unsigned long _tokenSet_6_data_[]; static const BitSet _tokenSet_6; static const unsigned long _tokenSet_7_data_[]; static const BitSet _tokenSet_7; static const unsigned long _tokenSet_8_data_[]; static const BitSet _tokenSet_8; static const unsigned long _tokenSet_9_data_[]; static const BitSet _tokenSet_9; static const unsigned long _tokenSet_10_data_[]; static const BitSet _tokenSet_10; static const unsigned long _tokenSet_11_data_[]; static const BitSet _tokenSet_11; static const unsigned long _tokenSet_12_data_[]; static const BitSet _tokenSet_12; static const unsigned long _tokenSet_13_data_[]; static const BitSet _tokenSet_13; static const unsigned long _tokenSet_14_data_[]; static const BitSet _tokenSet_14; static const unsigned long _tokenSet_15_data_[]; static const BitSet _tokenSet_15; static const unsigned long _tokenSet_16_data_[]; static const BitSet _tokenSet_16; static const unsigned long _tokenSet_17_data_[]; static const BitSet _tokenSet_17; static const unsigned long _tokenSet_18_data_[]; static const BitSet _tokenSet_18; static const unsigned long _tokenSet_19_data_[]; static const BitSet _tokenSet_19; static const unsigned long _tokenSet_20_data_[]; static const BitSet _tokenSet_20; static const unsigned long _tokenSet_21_data_[]; static const BitSet _tokenSet_21; static const unsigned long _tokenSet_22_data_[]; static const BitSet _tokenSet_22; static const unsigned long _tokenSet_23_data_[]; static const BitSet _tokenSet_23; static const unsigned long _tokenSet_24_data_[]; static const BitSet _tokenSet_24; static const unsigned long _tokenSet_25_data_[]; static const BitSet _tokenSet_25; static const unsigned long _tokenSet_26_data_[]; static const BitSet _tokenSet_26; static const unsigned long _tokenSet_27_data_[]; static const BitSet _tokenSet_27; static const unsigned long _tokenSet_28_data_[]; static const BitSet _tokenSet_28; static const unsigned long _tokenSet_29_data_[]; static const BitSet _tokenSet_29; static const unsigned long _tokenSet_30_data_[]; static const BitSet _tokenSet_30; static const unsigned long _tokenSet_31_data_[]; static const BitSet _tokenSet_31; static const unsigned long _tokenSet_32_data_[]; static const BitSet _tokenSet_32; static const unsigned long _tokenSet_33_data_[]; static const BitSet _tokenSet_33; static const unsigned long _tokenSet_34_data_[]; static const BitSet _tokenSet_34; static const unsigned long _tokenSet_35_data_[]; static const BitSet _tokenSet_35; static const unsigned long _tokenSet_36_data_[]; static const BitSet _tokenSet_36; static const unsigned long _tokenSet_37_data_[]; static const BitSet _tokenSet_37; static const unsigned long _tokenSet_38_data_[]; static const BitSet _tokenSet_38; static const unsigned long _tokenSet_39_data_[]; static const BitSet _tokenSet_39; static const unsigned long _tokenSet_40_data_[]; static const BitSet _tokenSet_40; static const unsigned long _tokenSet_41_data_[]; static const BitSet _tokenSet_41; static const unsigned long _tokenSet_42_data_[]; static const BitSet _tokenSet_42; static const unsigned long _tokenSet_43_data_[]; static const BitSet _tokenSet_43; static const unsigned long _tokenSet_44_data_[]; static const BitSet _tokenSet_44; static const unsigned long _tokenSet_45_data_[]; static const BitSet _tokenSet_45; static const unsigned long _tokenSet_46_data_[]; static const BitSet _tokenSet_46; static const unsigned long _tokenSet_47_data_[]; static const BitSet _tokenSet_47; static const unsigned long _tokenSet_48_data_[]; static const BitSet _tokenSet_48; static const unsigned long _tokenSet_49_data_[]; static const BitSet _tokenSet_49; static const unsigned long _tokenSet_50_data_[]; static const BitSet _tokenSet_50; static const unsigned long _tokenSet_51_data_[]; static const BitSet _tokenSet_51; static const unsigned long _tokenSet_52_data_[]; static const BitSet _tokenSet_52; static const unsigned long _tokenSet_53_data_[]; static const BitSet _tokenSet_53; static const unsigned long _tokenSet_54_data_[]; static const BitSet _tokenSet_54; static const unsigned long _tokenSet_55_data_[]; static const BitSet _tokenSet_55; static const unsigned long _tokenSet_56_data_[]; static const BitSet _tokenSet_56; static const unsigned long _tokenSet_57_data_[]; static const BitSet _tokenSet_57; static const unsigned long _tokenSet_58_data_[]; static const BitSet _tokenSet_58; static const unsigned long _tokenSet_59_data_[]; static const BitSet _tokenSet_59; static const unsigned long _tokenSet_60_data_[]; static const BitSet _tokenSet_60; static const unsigned long _tokenSet_61_data_[]; static const BitSet _tokenSet_61; static const unsigned long _tokenSet_62_data_[]; static const BitSet _tokenSet_62; static const unsigned long _tokenSet_63_data_[]; static const BitSet _tokenSet_63; static const unsigned long _tokenSet_64_data_[]; static const BitSet _tokenSet_64; static const unsigned long _tokenSet_65_data_[]; static const BitSet _tokenSet_65; static const unsigned long _tokenSet_66_data_[]; static const BitSet _tokenSet_66; static const unsigned long _tokenSet_67_data_[]; static const BitSet _tokenSet_67; static const unsigned long _tokenSet_68_data_[]; static const BitSet _tokenSet_68; static const unsigned long _tokenSet_69_data_[]; static const BitSet _tokenSet_69; static const unsigned long _tokenSet_70_data_[]; static const BitSet _tokenSet_70; static const unsigned long _tokenSet_71_data_[]; static const BitSet _tokenSet_71; static const unsigned long _tokenSet_72_data_[]; static const BitSet _tokenSet_72; static const unsigned long _tokenSet_73_data_[]; static const BitSet _tokenSet_73; static const unsigned long _tokenSet_74_data_[]; static const BitSet _tokenSet_74; static const unsigned long _tokenSet_75_data_[]; static const BitSet _tokenSet_75; static const unsigned long _tokenSet_76_data_[]; static const BitSet _tokenSet_76; static const unsigned long _tokenSet_77_data_[]; static const BitSet _tokenSet_77; static const unsigned long _tokenSet_78_data_[]; static const BitSet _tokenSet_78; static const unsigned long _tokenSet_79_data_[]; static const BitSet _tokenSet_79; static const unsigned long _tokenSet_80_data_[]; static const BitSet _tokenSet_80; static const unsigned long _tokenSet_81_data_[]; static const BitSet _tokenSet_81; static const unsigned long _tokenSet_82_data_[]; static const BitSet _tokenSet_82; static const unsigned long _tokenSet_83_data_[]; static const BitSet _tokenSet_83; static const unsigned long _tokenSet_84_data_[]; static const BitSet _tokenSet_84; static const unsigned long _tokenSet_85_data_[]; static const BitSet _tokenSet_85; static const unsigned long _tokenSet_86_data_[]; static const BitSet _tokenSet_86; static const unsigned long _tokenSet_87_data_[]; static const BitSet _tokenSet_87; static const unsigned long _tokenSet_88_data_[]; static const BitSet _tokenSet_88; static const unsigned long _tokenSet_89_data_[]; static const BitSet _tokenSet_89; }; #endif /*INC_GrpParser_hpp_*/ grcompiler-5.2.1/compiler/GrpParserDebug.cpp000066400000000000000000000147231411153030700210560ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrpParserDebug.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Additions to the auto-generated ANTLR stuff, for debugging. -------------------------------------------------------------------------------*//*:End Ignore*/ #include "Grp.h" #include "GrPlatform.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*---------------------------------------------------------------------------------------------- Print the syntax tree to the standard output. ----------------------------------------------------------------------------------------------*/ void AST::Trace(std::ostream & strmOut, const char * s, int level) { // Note: we iterate through the siblings instead of recursing, to avoid stack overflows. AST * pAST = this; while (pAST) { for (int i = 0; i < level * 3; i++) strmOut << " "; if (s) strmOut << s; GrpASTNode * grNode = dynamic_cast(getNode()); Assert(grNode); strmOut << debugString() << "(" << getType() << ")"; if (getText() != "") strmOut << ": '" << getText().c_str() << "'"; int line = grNode->LineAndFile().PreProcessedLine(); if (line > 0) strmOut << " [line #" << line << "]"; strmOut << std::endl; AST * pASTChild = getFirstChild(); if (pASTChild) pASTChild->Trace(strmOut, nullptr, level + 1); pAST = pAST->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Answer a string describing the tree's root node. ----------------------------------------------------------------------------------------------*/ std::string AST::debugString() { GrpASTNode * wrNode = dynamic_cast(node); if (wrNode) return wrNode->debugString(); else return "???"; } /*---------------------------------------------------------------------------------------------- Answer a string describing the node's token type. ----------------------------------------------------------------------------------------------*/ std::string GrpASTNode::debugString() const { switch (getType()) { case EOF_: return "EOF"; case NULL_TREE_LOOKAHEAD: return "NULL_TREE_LOOKAHEAD"; case OP_EQ: return "OP_EQ"; case OP_PLUSEQUAL: return "OP_PLUSEQUAL"; case OP_LPAREN: return "OP_LPAREN"; case OP_RPAREN: return "OP_RPAREN"; case OP_SEMI: return "OP_SEMI"; case LITERAL_environment: return "LITERAL_environment"; case LITERAL_endenvironment: return "LITERAL_endenvironment"; case OP_LBRACE: return "OP_LBRACE"; case IDENT: return "IDENT"; case LIT_INT: return "LIT_INT"; case OP_RBRACE: return "OP_RBRACE"; case LITERAL_table: return "LITERAL_table"; case LITERAL_endtable: return "LITERAL_endtable"; case LITERAL_name: return "LITERAL_name"; case OP_DOT: return "OP_DOT"; case LIT_STRING: return "LIT_STRING"; // case LIT_UNICHAR: return "LIT_UNICHAR"; case OP_COMMA: return "OP_COMMA"; case LITERAL_string: return "LITERAL_string"; case LITERAL_glyph: return "LITERAL_glyph"; case OP_LBRACKET: return "OP_LBRACKET"; case OP_RBRACKET: return "OP_RBRACKET"; case LITERAL_codepoint: return "LITERAL_codepoint"; case LIT_CHAR: return "LIT_CHAR"; case OP_DOTDOT: return "OP_DOTDOT"; case LITERAL_glyphid: return "LITERAL_glyphid"; case LITERAL_postscript: return "LITERAL_postscript"; case LITERAL_unicode: return "LITERAL_unicode"; case LITERAL_feature: return "LITERAL_feature"; case LITERAL_substitution : return "LITERAL_substitution"; case LITERAL_pass: return "LITERAL_pass"; case LITERAL_endpass: return "LITERAL_endpass"; case LITERAL_if: return "LITERAL_if"; case LITERAL_elseif: return "LITERAL_elseif"; case LITERAL_else: return "LITERAL_else"; case LITERAL_endif: return "LITERAL_endif"; case OP_GT: return "OP_GT"; case OP_DIV: return "OP_DIV"; case OP_UNDER: return "OP_UNDER"; case OP_QUESTION: return "OP_QUESTION"; case OP_AT: return "OP_AT"; case OP_COLON: return "OP_COLON"; case OP_DOLLAR: return "OP_DOLLAR"; case OP_CARET: return "OP_CARET"; case OP_HASH: return "OP_HASH"; case OP_EQUALEQUAL: return "OP_EQUALEQUAL"; case LITERAL_position: return "LITERAL_position"; case LITERAL_positioning: return "LITERAL_positioning"; case OP_MINUSEQUAL: return "OP_MINUSEQUAL"; case OP_DIVEQUAL: return "OP_DIVEQUAL"; case OP_MULTEQUAL: return "OP_MULTEQUAL"; case OP_PLUS: return "OP_PLUS"; case OP_MINUS: return "OP_MINUS"; case OP_MULT: return "OP_MULT"; case LITERAL_linebreak: return "LITERAL_linebreak"; case OP_NOT: return "OP_NOT"; case OP_AND: return "OP_AND"; case OP_OR: return "OP_OR"; case OP_LT: return "OP_LT"; case OP_LE: return "OP_LE"; case OP_GE: return "OP_GE"; case OP_NE: return "OP_NE"; case LITERAL_max: return "LITERAL_max"; case LITERAL_min: return "LITERAL_min"; case LITERAL_pseudo: return "LITERAL_pseudo"; case WS: return "WS"; case COMMENT_SL: return "COMMENT_SL"; case COMMENT_ML: return "COMMENT_ML"; case ESC: return "ESC"; case ODIGIT: return "ODIGIT"; case DIGIT: return "DIGIT"; case XDIGIT: return "XDIGIT"; case OP_BSLASH: return "OP_BSLASH"; case LITERAL_false: return "LITERAL_false"; case LITERAL_true: return "LITERAL_true"; case LITERAL_justification: return "LITERAL_justification"; case LITERAL_languages: return "LITERAL_languages"; case LITERAL_language: return "LITERAL_language"; case Zalias: return "Zalias"; case Zassocs: return "Zassocs"; case Zattrs: return "Zattrs"; case Zcluster: return "Zcluster"; case Zcodepage: return "Zcodepage"; case Zconstraint: return "Zconstraint"; case Zcontext: return "Zcontext"; case Zdirectives: return "Zdirectives"; case ZdotStruct: return "ZdotStruct"; case Zelseif: return "Zelseif"; case Zfeatures: return "Zfeatures"; case Zfunction: return "Zfunction"; case ZifStruct: return "ZifStruct"; case Zlhs: return "Zlhs"; case Zlookup: return "Zlookup"; case Zrhs: return "Zrhs"; case Zrule: return "Zrule"; case ZruleItem: return "ZruleItem"; case Zselector: return "Zselector"; case Ztop: return "Ztop"; default: return std::to_string(getType()); } } grcompiler-5.2.1/compiler/GrpParserTokenTypes.hpp000066400000000000000000000045301411153030700221350ustar00rootroot00000000000000#ifndef INC_GrpParserTokenTypes_hpp_ #define INC_GrpParserTokenTypes_hpp_ #include "Antlr/config.hpp" /* * ANTLR-generated file resulting from grammar c:\graphite1\grcompiler\compiler\grpparser.g * * Terence Parr, MageLang Institute * with John Lilley, Empathy Software * ANTLR Version 2.6.0; 1996-1999 */ enum GrpParserTokenTypes { EOF_ = 1, NULL_TREE_LOOKAHEAD = 3, OP_EQ = 4, OP_PLUSEQUAL = 5, OP_LPAREN = 6, OP_RPAREN = 7, OP_SEMI = 8, LITERAL_environment = 9, LITERAL_endenvironment = 10, OP_LBRACE = 11, OP_RBRACE = 12, IDENT = 13, LITERAL_table = 14, LITERAL_endtable = 15, LITERAL_name = 16, LIT_INT = 17, OP_DOT = 18, OP_PLUS_EQUAL = 19, LIT_STRING = 20, OP_COMMA = 21, LITERAL_string = 22, LITERAL_glyph = 23, OP_ANDEQUAL = 24, OP_MINUSEQUAL = 25, LITERAL_pseudo = 26, LIT_UHEX = 27, LITERAL_codepoint = 28, LITERAL_glyphid = 29, LITERAL_postscript = 30, LITERAL_unicode = 31, OP_DOTDOT = 32, LIT_CHAR = 33, LITERAL_feature = 34, LITERAL_language = 35, LITERAL_languages = 36, LITERAL_substitution = 37, LITERAL_pass = 38, LITERAL_endpass = 39, LITERAL_if = 40, LITERAL_else = 41, LITERAL_endif = 42, Zelseif = 43, LITERAL_elseif = 44, OP_GT = 45, OP_DIV = 46, OP_QUESTION = 47, OP_LBRACKET = 48, OP_RBRACKET = 49, OP_UNDER = 50, OP_AT = 51, OP_COLON = 52, OP_HASH = 53, OP_DOLLAR = 54, Qalias = 55, LITERAL_justification = 56, LITERAL_position = 57, LITERAL_positioning = 58, LITERAL_linebreak = 59, OP_CARET = 60, LITERAL_justify = 61, LITERAL_min = 62, LITERAL_max = 63, OP_DIVEQUAL = 64, OP_MULTEQUAL = 65, OP_OR = 66, OP_AND = 67, OP_BITOR = 68, OP_BITAND = 69, OP_EQUALEQUAL = 70, OP_NE = 71, OP_LT = 72, OP_LE = 73, OP_GE = 74, OP_PLUS = 75, OP_MINUS = 76, OP_MULT = 77, OP_NOT = 78, OP_BITNOT = 79, LITERAL_true = 80, LITERAL_false = 81, Zalias = 82, Zassocs = 83, Zattrs = 84, Zcluster = 85, Zcodepage = 86, Zconstraint = 87, Zcontext = 88, Zdirectives = 89, ZdotStruct = 90, Zfeatures = 91, Zfunction = 92, ZifStruct = 93, Zlhs = 94, Zlookup = 95, Zrhs = 96, Zrule = 97, ZruleItem = 98, Zselector = 99, Ztop = 100, ZuHex = 101, WS = 102, COMMENT_SL = 103, COMMENT_ML = 104, ESC = 105, ODIGIT = 106, DIGIT = 107, XDIGIT = 108, SQUOTE = 109, DQUOTE = 110, OP_LINEMARKER = 111, OP_BSLASH = 112, AT_IDENT = 113, }; #endif /*INC_GrpParserTokenTypes_hpp_*/ grcompiler-5.2.1/compiler/GrpParserTokenTypes.txt000066400000000000000000000035321411153030700221660ustar00rootroot00000000000000GrpParser // output token vocab name OP_EQ=4 OP_PLUSEQUAL=5 OP_LPAREN=6 OP_RPAREN=7 OP_SEMI=8 LITERAL_environment="environment"=9 LITERAL_endenvironment="endenvironment"=10 OP_LBRACE=11 OP_RBRACE=12 IDENT=13 LITERAL_table="table"=14 LITERAL_endtable="endtable"=15 LITERAL_name="name"=16 LIT_INT=17 OP_DOT=18 OP_PLUS_EQUAL=19 LIT_STRING=20 OP_COMMA=21 LITERAL_string="string"=22 LITERAL_glyph="glyph"=23 OP_ANDEQUAL=24 OP_MINUSEQUAL=25 LITERAL_pseudo="pseudo"=26 LIT_UHEX=27 LITERAL_codepoint="codepoint"=28 LITERAL_glyphid="glyphid"=29 LITERAL_postscript="postscript"=30 LITERAL_unicode="unicode"=31 OP_DOTDOT=32 LIT_CHAR=33 LITERAL_feature="feature"=34 LITERAL_language="language"=35 LITERAL_languages="languages"=36 LITERAL_substitution="substitution"=37 LITERAL_pass="pass"=38 LITERAL_endpass="endpass"=39 LITERAL_if="if"=40 LITERAL_else="else"=41 LITERAL_endif="endif"=42 Zelseif=43 LITERAL_elseif="elseif"=44 OP_GT=45 OP_DIV=46 OP_QUESTION=47 OP_LBRACKET=48 OP_RBRACKET=49 OP_UNDER=50 OP_AT=51 OP_COLON=52 OP_HASH=53 OP_DOLLAR=54 Qalias=55 LITERAL_justification="justification"=56 LITERAL_position="position"=57 LITERAL_positioning="positioning"=58 LITERAL_linebreak="linebreak"=59 OP_CARET=60 LITERAL_justify="justify"=61 LITERAL_min="min"=62 LITERAL_max="max"=63 OP_DIVEQUAL=64 OP_MULTEQUAL=65 OP_OR=66 OP_AND=67 OP_BITOR=68 OP_BITAND=69 OP_EQUALEQUAL=70 OP_NE=71 OP_LT=72 OP_LE=73 OP_GE=74 OP_PLUS=75 OP_MINUS=76 OP_MULT=77 OP_NOT=78 OP_BITNOT=79 LITERAL_true="true"=80 LITERAL_false="false"=81 Zalias=82 Zassocs=83 Zattrs=84 Zcluster=85 Zcodepage=86 Zconstraint=87 Zcontext=88 Zdirectives=89 ZdotStruct=90 Zfeatures=91 Zfunction=92 ZifStruct=93 Zlhs=94 Zlookup=95 Zrhs=96 Zrule=97 ZruleItem=98 Zselector=99 Ztop=100 ZuHex=101 WS=102 COMMENT_SL=103 COMMENT_ML=104 ESC=105 ODIGIT=106 DIGIT=107 XDIGIT=108 SQUOTE=109 DQUOTE=110 OP_LINEMARKER=111 OP_BSLASH=112 AT_IDENT=113 grcompiler-5.2.1/compiler/GrpParser_readme.txt000066400000000000000000000013451411153030700214550ustar00rootroot00000000000000The grammar and syntax of the Graphite Description Language are defined in the GrpParser.g file. This file is compiled using the ANTLR package, which generates the following files: GrpLexer.cpp GrpLexer.hpp GrpParser.cpp GrpParser.hpp GrpParserTokenTypes.hpp GrpParserTokenTypes.txt Please do not attempt to modify these files by hand! They should only be generated by ANTLR. The runantlr.bat file contains a command for doing this. The comamnd to invoke Java may need to be adjusted depending on the version of Java installed, etc. In order to run ANTLR, you will need the ANTLR package (implemented using Java) and also Java must be installed on your machine. Please contact Sharon Correll (sharon_correll@sil.org) for more information.grcompiler-5.2.1/compiler/GrpToken.hpp000066400000000000000000000023421411153030700177320ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrpToken.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Customized lexer token. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifndef GRP_TOKEN #define GRP_TOKEN class GrpToken : public CommonToken { public: // Additional instance variables: GrpLineAndFile m_lnf; // And methods to handle it: GrpToken() : CommonToken() { } static RefToken factory() { return RefToken(new GrpToken); } virtual int getLine() const { return m_lnf.PreProcessedLine(); } virtual void setLine(int l) { CommonToken::setLine(l); m_lnf.SetPreProcessedLine(l); } GrpLineAndFile LineAndFile() { return m_lnf; } void SetOrigLineAndFile(int nOrig, std::string sta) { m_lnf.SetOriginalLine(nOrig); m_lnf.SetFile(sta); } // void initialize(RefToken t) // { // CommonToken::initialize(t); // // add here // } }; #endif // !GRP_TOKEN grcompiler-5.2.1/compiler/GrpTokenStreamFilter.hpp000066400000000000000000000032461411153030700222600ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrpTokenStreamFilter.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: A filter to intercept the line-and-file information generated by the C preprocessor and do something with it. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifndef GRP_TOKSTREAM #define GRP_TOKSTREAM class GrpLexer; class GrpTokenStreamFilter : public TokenStream { public: virtual RefToken nextToken(); GrpTokenStreamFilter(GrpLexer & lexer) : m_lexer(&lexer) { m_tokPeek = RefToken(NULL); } void init(std::string sta) { m_staFile = sta; m_nLineOffset = 0; m_nLastLineMarker = 0; m_nPrevLineOffset = 0; } void ReportLexerError(const ScannerException & ex); void ReportParserError(const ParserException & ex); protected: GrpLexer * m_lexer; /////TokenStream * m_lexer; std::string m_staFile; int m_nLineOffset; // For error messages. The current approach assumes that a syntax error does not span // more than two files. We pass ParserExceptions back to this class; if the line number // is less than the previous marker, we use the previous line-offset-and-file information; // otherwise we use the current line-offset-and-file. int m_nLastLineMarker; std::string m_staPrevFile; int m_nPrevLineOffset; RefToken m_tokPeek; // to peek for -if- following -else- }; #endif // !GRP_TOKSTREAM grcompiler-5.2.1/compiler/LZ4/000077500000000000000000000000001411153030700161005ustar00rootroot00000000000000grcompiler-5.2.1/compiler/LZ4/CMakeLists.txt000066400000000000000000000000641411153030700206400ustar00rootroot00000000000000project(lz4) add_library(lz4 STATIC lz4.c lz4hc.c) grcompiler-5.2.1/compiler/LZ4/Makefile.am000066400000000000000000000002001411153030700201240ustar00rootroot00000000000000noinst_LIBRARIES = liblz4.a noinst_HEADERS = \ lz4.h \ lz4hc.h liblz4_a_SOURCES = lz4.c lz4hc.c EXTRA_DIST = README.graphitegrcompiler-5.2.1/compiler/LZ4/README.graphite000066400000000000000000000003771411153030700205710ustar00rootroot00000000000000LZ4 partial library source The following files were pulled from: https://github.com/lz4/lz4 at commit d443718 (tag v1.9.3) lib/lz4.c lib/lz4.h lib/lz4hc.c lib/lz4hc.h The remaining files are unnecessary since we don't use the lz4 framing format. grcompiler-5.2.1/compiler/LZ4/lz4.c000066400000000000000000003151771411153030700167730ustar00rootroot00000000000000/* LZ4 - Fast LZ compression algorithm Copyright (C) 2011-present, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. You can contact the author at : - LZ4 homepage : http://www.lz4.org - LZ4 source repository : https://github.com/lz4/lz4 */ /*-************************************ * Tuning parameters **************************************/ /* * LZ4_HEAPMODE : * Select how default compression functions will allocate memory for their hash table, * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). */ #ifndef LZ4_HEAPMODE # define LZ4_HEAPMODE 0 #endif /* * LZ4_ACCELERATION_DEFAULT : * Select "acceleration" for LZ4_compress_fast() when parameter value <= 0 */ #define LZ4_ACCELERATION_DEFAULT 1 /* * LZ4_ACCELERATION_MAX : * Any "acceleration" value higher than this threshold * get treated as LZ4_ACCELERATION_MAX instead (fix #876) */ #define LZ4_ACCELERATION_MAX 65537 /*-************************************ * CPU Feature Detection **************************************/ /* LZ4_FORCE_MEMORY_ACCESS * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable. * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. * The below switch allow to select different access method for improved performance. * Method 0 (default) : use `memcpy()`. Safe and portable. * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable). * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`. * Method 2 : direct access. This method is portable but violate C standard. * It can generate buggy code on targets which assembly generation depends on alignment. * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) * See https://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details. * Prefer these methods in priority order (0 > 1 > 2) */ #ifndef LZ4_FORCE_MEMORY_ACCESS /* can be defined externally */ # if defined(__GNUC__) && \ ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) \ || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) # define LZ4_FORCE_MEMORY_ACCESS 2 # elif (defined(__INTEL_COMPILER) && !defined(_WIN32)) || defined(__GNUC__) # define LZ4_FORCE_MEMORY_ACCESS 1 # endif #endif /* * LZ4_FORCE_SW_BITCOUNT * Define this parameter if your target system or compiler does not support hardware bit count */ #if defined(_MSC_VER) && defined(_WIN32_WCE) /* Visual Studio for WinCE doesn't support Hardware bit count */ # undef LZ4_FORCE_SW_BITCOUNT /* avoid double def */ # define LZ4_FORCE_SW_BITCOUNT #endif /*-************************************ * Dependency **************************************/ /* * LZ4_SRC_INCLUDED: * Amalgamation flag, whether lz4.c is included */ #ifndef LZ4_SRC_INCLUDED # define LZ4_SRC_INCLUDED 1 #endif #ifndef LZ4_STATIC_LINKING_ONLY #define LZ4_STATIC_LINKING_ONLY #endif #ifndef LZ4_DISABLE_DEPRECATE_WARNINGS #define LZ4_DISABLE_DEPRECATE_WARNINGS /* due to LZ4_decompress_safe_withPrefix64k */ #endif #define LZ4_STATIC_LINKING_ONLY /* LZ4_DISTANCE_MAX */ #include "lz4.h" /* see also "memory routines" below */ /*-************************************ * Compiler Options **************************************/ #if defined(_MSC_VER) && (_MSC_VER >= 1400) /* Visual Studio 2005+ */ # include /* only present in VS2005+ */ # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ #endif /* _MSC_VER */ #ifndef LZ4_FORCE_INLINE # ifdef _MSC_VER /* Visual Studio */ # define LZ4_FORCE_INLINE static __forceinline # else # if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */ # ifdef __GNUC__ # define LZ4_FORCE_INLINE static inline __attribute__((always_inline)) # else # define LZ4_FORCE_INLINE static inline # endif # else # define LZ4_FORCE_INLINE static # endif /* __STDC_VERSION__ */ # endif /* _MSC_VER */ #endif /* LZ4_FORCE_INLINE */ /* LZ4_FORCE_O2 and LZ4_FORCE_INLINE * gcc on ppc64le generates an unrolled SIMDized loop for LZ4_wildCopy8, * together with a simple 8-byte copy loop as a fall-back path. * However, this optimization hurts the decompression speed by >30%, * because the execution does not go to the optimized loop * for typical compressible data, and all of the preamble checks * before going to the fall-back path become useless overhead. * This optimization happens only with the -O3 flag, and -O2 generates * a simple 8-byte copy loop. * With gcc on ppc64le, all of the LZ4_decompress_* and LZ4_wildCopy8 * functions are annotated with __attribute__((optimize("O2"))), * and also LZ4_wildCopy8 is forcibly inlined, so that the O2 attribute * of LZ4_wildCopy8 does not affect the compression speed. */ #if defined(__PPC64__) && defined(__LITTLE_ENDIAN__) && defined(__GNUC__) && !defined(__clang__) # define LZ4_FORCE_O2 __attribute__((optimize("O2"))) # undef LZ4_FORCE_INLINE # define LZ4_FORCE_INLINE static __inline __attribute__((optimize("O2"),always_inline)) #else # define LZ4_FORCE_O2 #endif #if (defined(__GNUC__) && (__GNUC__ >= 3)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) || defined(__clang__) # define expect(expr,value) (__builtin_expect ((expr),(value)) ) #else # define expect(expr,value) (expr) #endif #ifndef likely #define likely(expr) expect((expr) != 0, 1) #endif #ifndef unlikely #define unlikely(expr) expect((expr) != 0, 0) #endif /* Should the alignment test prove unreliable, for some reason, * it can be disabled by setting LZ4_ALIGN_TEST to 0 */ #ifndef LZ4_ALIGN_TEST /* can be externally provided */ # define LZ4_ALIGN_TEST 1 #endif /*-************************************ * Memory routines **************************************/ #ifdef LZ4_USER_MEMORY_FUNCTIONS /* memory management functions can be customized by user project. * Below functions must exist somewhere in the Project * and be available at link time */ void* LZ4_malloc(size_t s); void* LZ4_calloc(size_t n, size_t s); void LZ4_free(void* p); # define ALLOC(s) LZ4_malloc(s) # define ALLOC_AND_ZERO(s) LZ4_calloc(1,s) # define FREEMEM(p) LZ4_free(p) #else # include /* malloc, calloc, free */ # define ALLOC(s) malloc(s) # define ALLOC_AND_ZERO(s) calloc(1,s) # define FREEMEM(p) free(p) #endif #include /* memset, memcpy */ #define MEM_INIT(p,v,s) memset((p),(v),(s)) /*-************************************ * Common Constants **************************************/ #define MINMATCH 4 #define WILDCOPYLENGTH 8 #define LASTLITERALS 5 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ #define MFLIMIT 12 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ #define MATCH_SAFEGUARD_DISTANCE ((2*WILDCOPYLENGTH) - MINMATCH) /* ensure it's possible to write 2 x wildcopyLength without overflowing output buffer */ #define FASTLOOP_SAFE_DISTANCE 64 static const int LZ4_minLength = (MFLIMIT+1); #define KB *(1 <<10) #define MB *(1 <<20) #define GB *(1U<<30) #define LZ4_DISTANCE_ABSOLUTE_MAX 65535 #if (LZ4_DISTANCE_MAX > LZ4_DISTANCE_ABSOLUTE_MAX) /* max supported by LZ4 format */ # error "LZ4_DISTANCE_MAX is too big : must be <= 65535" #endif #define ML_BITS 4 #define ML_MASK ((1U<=1) # include #else # ifndef assert # define assert(condition) ((void)0) # endif #endif #define LZ4_STATIC_ASSERT(c) { enum { LZ4_static_assert = 1/(int)(!!(c)) }; } /* use after variable declarations */ #if defined(LZ4_DEBUG) && (LZ4_DEBUG>=2) # include static int g_debuglog_enable = 1; # define DEBUGLOG(l, ...) { \ if ((g_debuglog_enable) && (l<=LZ4_DEBUG)) { \ fprintf(stderr, __FILE__ ": "); \ fprintf(stderr, __VA_ARGS__); \ fprintf(stderr, " \n"); \ } } #else # define DEBUGLOG(l, ...) {} /* disabled */ #endif static int LZ4_isAligned(const void* ptr, size_t alignment) { return ((size_t)ptr & (alignment -1)) == 0; } /*-************************************ * Types **************************************/ #include #if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) # include typedef uint8_t BYTE; typedef uint16_t U16; typedef uint32_t U32; typedef int32_t S32; typedef uint64_t U64; typedef uintptr_t uptrval; #else # if UINT_MAX != 4294967295UL # error "LZ4 code (when not C++ or C99) assumes that sizeof(int) == 4" # endif typedef unsigned char BYTE; typedef unsigned short U16; typedef unsigned int U32; typedef signed int S32; typedef unsigned long long U64; typedef size_t uptrval; /* generally true, except OpenVMS-64 */ #endif #if defined(__x86_64__) typedef U64 reg_t; /* 64-bits in x32 mode */ #else typedef size_t reg_t; /* 32-bits in x32 mode */ #endif typedef enum { notLimited = 0, limitedOutput = 1, fillOutput = 2 } limitedOutput_directive; /*-************************************ * Reading and writing into memory **************************************/ /** * LZ4 relies on memcpy with a constant size being inlined. In freestanding * environments, the compiler can't assume the implementation of memcpy() is * standard compliant, so it can't apply its specialized memcpy() inlining * logic. When possible, use __builtin_memcpy() to tell the compiler to analyze * memcpy() as if it were standard compliant, so it can inline it in freestanding * environments. This is needed when decompressing the Linux Kernel, for example. */ #if defined(__GNUC__) && (__GNUC__ >= 4) #define LZ4_memcpy(dst, src, size) __builtin_memcpy(dst, src, size) #else #define LZ4_memcpy(dst, src, size) memcpy(dst, src, size) #endif static unsigned LZ4_isLittleEndian(void) { const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ return one.c[0]; } #if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2) /* lie to the compiler about data alignment; use with caution */ static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; } static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; } static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; } static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; } static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } #elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1) /* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ /* currently only defined for gcc and icc */ typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; } static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } #else /* safe and portable access using memcpy() */ static U16 LZ4_read16(const void* memPtr) { U16 val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; } static U32 LZ4_read32(const void* memPtr) { U32 val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; } static reg_t LZ4_read_ARCH(const void* memPtr) { reg_t val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; } static void LZ4_write16(void* memPtr, U16 value) { LZ4_memcpy(memPtr, &value, sizeof(value)); } static void LZ4_write32(void* memPtr, U32 value) { LZ4_memcpy(memPtr, &value, sizeof(value)); } #endif /* LZ4_FORCE_MEMORY_ACCESS */ static U16 LZ4_readLE16(const void* memPtr) { if (LZ4_isLittleEndian()) { return LZ4_read16(memPtr); } else { const BYTE* p = (const BYTE*)memPtr; return (U16)((U16)p[0] + (p[1]<<8)); } } static void LZ4_writeLE16(void* memPtr, U16 value) { if (LZ4_isLittleEndian()) { LZ4_write16(memPtr, value); } else { BYTE* p = (BYTE*)memPtr; p[0] = (BYTE) value; p[1] = (BYTE)(value>>8); } } /* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */ LZ4_FORCE_INLINE void LZ4_wildCopy8(void* dstPtr, const void* srcPtr, void* dstEnd) { BYTE* d = (BYTE*)dstPtr; const BYTE* s = (const BYTE*)srcPtr; BYTE* const e = (BYTE*)dstEnd; do { LZ4_memcpy(d,s,8); d+=8; s+=8; } while (d= 16. */ LZ4_FORCE_INLINE void LZ4_wildCopy32(void* dstPtr, const void* srcPtr, void* dstEnd) { BYTE* d = (BYTE*)dstPtr; const BYTE* s = (const BYTE*)srcPtr; BYTE* const e = (BYTE*)dstEnd; do { LZ4_memcpy(d,s,16); LZ4_memcpy(d+16,s+16,16); d+=32; s+=32; } while (d= dstPtr + MINMATCH * - there is at least 8 bytes available to write after dstEnd */ LZ4_FORCE_INLINE void LZ4_memcpy_using_offset(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const size_t offset) { BYTE v[8]; assert(dstEnd >= dstPtr + MINMATCH); switch(offset) { case 1: MEM_INIT(v, *srcPtr, 8); break; case 2: LZ4_memcpy(v, srcPtr, 2); LZ4_memcpy(&v[2], srcPtr, 2); LZ4_memcpy(&v[4], v, 4); break; case 4: LZ4_memcpy(v, srcPtr, 4); LZ4_memcpy(&v[4], srcPtr, 4); break; default: LZ4_memcpy_using_offset_base(dstPtr, srcPtr, dstEnd, offset); return; } LZ4_memcpy(dstPtr, v, 8); dstPtr += 8; while (dstPtr < dstEnd) { LZ4_memcpy(dstPtr, v, 8); dstPtr += 8; } } #endif /*-************************************ * Common functions **************************************/ static unsigned LZ4_NbCommonBytes (reg_t val) { assert(val != 0); if (LZ4_isLittleEndian()) { if (sizeof(val) == 8) { # if defined(_MSC_VER) && (_MSC_VER >= 1800) && defined(_M_AMD64) && !defined(LZ4_FORCE_SW_BITCOUNT) /* x64 CPUS without BMI support interpret `TZCNT` as `REP BSF` */ return (unsigned)_tzcnt_u64(val) >> 3; # elif defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) unsigned long r = 0; _BitScanForward64(&r, (U64)val); return (unsigned)r >> 3; # elif (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_ctzll((U64)val) >> 3; # else const U64 m = 0x0101010101010101ULL; val ^= val - 1; return (unsigned)(((U64)((val & (m - 1)) * m)) >> 56); # endif } else /* 32 bits */ { # if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(LZ4_FORCE_SW_BITCOUNT) unsigned long r; _BitScanForward(&r, (U32)val); return (unsigned)r >> 3; # elif (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ !defined(__TINYC__) && !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_ctz((U32)val) >> 3; # else const U32 m = 0x01010101; return (unsigned)((((val - 1) ^ val) & (m - 1)) * m) >> 24; # endif } } else /* Big Endian CPU */ { if (sizeof(val)==8) { # if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ !defined(__TINYC__) && !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_clzll((U64)val) >> 3; # else #if 1 /* this method is probably faster, * but adds a 128 bytes lookup table */ static const unsigned char ctz7_tab[128] = { 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, }; U64 const mask = 0x0101010101010101ULL; U64 const t = (((val >> 8) - mask) | val) & mask; return ctz7_tab[(t * 0x0080402010080402ULL) >> 57]; #else /* this method doesn't consume memory space like the previous one, * but it contains several branches, * that may end up slowing execution */ static const U32 by32 = sizeof(val)*4; /* 32 on 64 bits (goal), 16 on 32 bits. Just to avoid some static analyzer complaining about shift by 32 on 32-bits target. Note that this code path is never triggered in 32-bits mode. */ unsigned r; if (!(val>>by32)) { r=4; } else { r=0; val>>=by32; } if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } r += (!val); return r; #endif # endif } else /* 32 bits */ { # if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_clz((U32)val) >> 3; # else val >>= 8; val = ((((val + 0x00FFFF00) | 0x00FFFFFF) + val) | (val + 0x00FF0000)) >> 24; return (unsigned)val ^ 3; # endif } } } #define STEPSIZE sizeof(reg_t) LZ4_FORCE_INLINE unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) { const BYTE* const pStart = pIn; if (likely(pIn < pInLimit-(STEPSIZE-1))) { reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); if (!diff) { pIn+=STEPSIZE; pMatch+=STEPSIZE; } else { return LZ4_NbCommonBytes(diff); } } while (likely(pIn < pInLimit-(STEPSIZE-1))) { reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); if (!diff) { pIn+=STEPSIZE; pMatch+=STEPSIZE; continue; } pIn += LZ4_NbCommonBytes(diff); return (unsigned)(pIn - pStart); } if ((STEPSIZE==8) && (pIn<(pInLimit-3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn+=4; pMatch+=4; } if ((pIn<(pInLimit-1)) && (LZ4_read16(pMatch) == LZ4_read16(pIn))) { pIn+=2; pMatch+=2; } if ((pIn compression run slower on incompressible data */ /*-************************************ * Local Structures and types **************************************/ typedef enum { clearedTable = 0, byPtr, byU32, byU16 } tableType_t; /** * This enum distinguishes several different modes of accessing previous * content in the stream. * * - noDict : There is no preceding content. * - withPrefix64k : Table entries up to ctx->dictSize before the current blob * blob being compressed are valid and refer to the preceding * content (of length ctx->dictSize), which is available * contiguously preceding in memory the content currently * being compressed. * - usingExtDict : Like withPrefix64k, but the preceding content is somewhere * else in memory, starting at ctx->dictionary with length * ctx->dictSize. * - usingDictCtx : Like usingExtDict, but everything concerning the preceding * content is in a separate context, pointed to by * ctx->dictCtx. ctx->dictionary, ctx->dictSize, and table * entries in the current context that refer to positions * preceding the beginning of the current compression are * ignored. Instead, ctx->dictCtx->dictionary and ctx->dictCtx * ->dictSize describe the location and size of the preceding * content, and matches are found by looking in the ctx * ->dictCtx->hashTable. */ typedef enum { noDict = 0, withPrefix64k, usingExtDict, usingDictCtx } dict_directive; typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; /*-************************************ * Local Utils **************************************/ int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; } int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } int LZ4_sizeofState(void) { return LZ4_STREAMSIZE; } /*-************************************ * Internal Definitions used in Tests **************************************/ #if defined (__cplusplus) extern "C" { #endif int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize); int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const void* dictStart, size_t dictSize); #if defined (__cplusplus) } #endif /*-****************************** * Compression functions ********************************/ LZ4_FORCE_INLINE U32 LZ4_hash4(U32 sequence, tableType_t const tableType) { if (tableType == byU16) return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); else return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); } LZ4_FORCE_INLINE U32 LZ4_hash5(U64 sequence, tableType_t const tableType) { const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG; if (LZ4_isLittleEndian()) { const U64 prime5bytes = 889523592379ULL; return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog)); } else { const U64 prime8bytes = 11400714785074694791ULL; return (U32)(((sequence >> 24) * prime8bytes) >> (64 - hashLog)); } } LZ4_FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType) { if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); return LZ4_hash4(LZ4_read32(p), tableType); } LZ4_FORCE_INLINE void LZ4_clearHash(U32 h, void* tableBase, tableType_t const tableType) { switch (tableType) { default: /* fallthrough */ case clearedTable: { /* illegal! */ assert(0); return; } case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = NULL; return; } case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = 0; return; } case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = 0; return; } } } LZ4_FORCE_INLINE void LZ4_putIndexOnHash(U32 idx, U32 h, void* tableBase, tableType_t const tableType) { switch (tableType) { default: /* fallthrough */ case clearedTable: /* fallthrough */ case byPtr: { /* illegal! */ assert(0); return; } case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = idx; return; } case byU16: { U16* hashTable = (U16*) tableBase; assert(idx < 65536); hashTable[h] = (U16)idx; return; } } } LZ4_FORCE_INLINE void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t const tableType, const BYTE* srcBase) { switch (tableType) { case clearedTable: { /* illegal! */ assert(0); return; } case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; } case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; } case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; } } } LZ4_FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) { U32 const h = LZ4_hashPosition(p, tableType); LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase); } /* LZ4_getIndexOnHash() : * Index of match position registered in hash table. * hash position must be calculated by using base+index, or dictBase+index. * Assumption 1 : only valid if tableType == byU32 or byU16. * Assumption 2 : h is presumed valid (within limits of hash table) */ LZ4_FORCE_INLINE U32 LZ4_getIndexOnHash(U32 h, const void* tableBase, tableType_t tableType) { LZ4_STATIC_ASSERT(LZ4_MEMORY_USAGE > 2); if (tableType == byU32) { const U32* const hashTable = (const U32*) tableBase; assert(h < (1U << (LZ4_MEMORY_USAGE-2))); return hashTable[h]; } if (tableType == byU16) { const U16* const hashTable = (const U16*) tableBase; assert(h < (1U << (LZ4_MEMORY_USAGE-1))); return hashTable[h]; } assert(0); return 0; /* forbidden case */ } static const BYTE* LZ4_getPositionOnHash(U32 h, const void* tableBase, tableType_t tableType, const BYTE* srcBase) { if (tableType == byPtr) { const BYTE* const* hashTable = (const BYTE* const*) tableBase; return hashTable[h]; } if (tableType == byU32) { const U32* const hashTable = (const U32*) tableBase; return hashTable[h] + srcBase; } { const U16* const hashTable = (const U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ } LZ4_FORCE_INLINE const BYTE* LZ4_getPosition(const BYTE* p, const void* tableBase, tableType_t tableType, const BYTE* srcBase) { U32 const h = LZ4_hashPosition(p, tableType); return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase); } LZ4_FORCE_INLINE void LZ4_prepareTable(LZ4_stream_t_internal* const cctx, const int inputSize, const tableType_t tableType) { /* If the table hasn't been used, it's guaranteed to be zeroed out, and is * therefore safe to use no matter what mode we're in. Otherwise, we figure * out if it's safe to leave as is or whether it needs to be reset. */ if ((tableType_t)cctx->tableType != clearedTable) { assert(inputSize >= 0); if ((tableType_t)cctx->tableType != tableType || ((tableType == byU16) && cctx->currentOffset + (unsigned)inputSize >= 0xFFFFU) || ((tableType == byU32) && cctx->currentOffset > 1 GB) || tableType == byPtr || inputSize >= 4 KB) { DEBUGLOG(4, "LZ4_prepareTable: Resetting table in %p", cctx); MEM_INIT(cctx->hashTable, 0, LZ4_HASHTABLESIZE); cctx->currentOffset = 0; cctx->tableType = (U32)clearedTable; } else { DEBUGLOG(4, "LZ4_prepareTable: Re-use hash table (no reset)"); } } /* Adding a gap, so all previous entries are > LZ4_DISTANCE_MAX back, is faster * than compressing without a gap. However, compressing with * currentOffset == 0 is faster still, so we preserve that case. */ if (cctx->currentOffset != 0 && tableType == byU32) { DEBUGLOG(5, "LZ4_prepareTable: adding 64KB to currentOffset"); cctx->currentOffset += 64 KB; } /* Finally, clear history */ cctx->dictCtx = NULL; cctx->dictionary = NULL; cctx->dictSize = 0; } /** LZ4_compress_generic() : * inlined, to ensure branches are decided at compilation time. * Presumed already validated at this stage: * - source != NULL * - inputSize > 0 */ LZ4_FORCE_INLINE int LZ4_compress_generic_validated( LZ4_stream_t_internal* const cctx, const char* const source, char* const dest, const int inputSize, int *inputConsumed, /* only written when outputDirective == fillOutput */ const int maxOutputSize, const limitedOutput_directive outputDirective, const tableType_t tableType, const dict_directive dictDirective, const dictIssue_directive dictIssue, const int acceleration) { int result; const BYTE* ip = (const BYTE*) source; U32 const startIndex = cctx->currentOffset; const BYTE* base = (const BYTE*) source - startIndex; const BYTE* lowLimit; const LZ4_stream_t_internal* dictCtx = (const LZ4_stream_t_internal*) cctx->dictCtx; const BYTE* const dictionary = dictDirective == usingDictCtx ? dictCtx->dictionary : cctx->dictionary; const U32 dictSize = dictDirective == usingDictCtx ? dictCtx->dictSize : cctx->dictSize; const U32 dictDelta = (dictDirective == usingDictCtx) ? startIndex - dictCtx->currentOffset : 0; /* make indexes in dictCtx comparable with index in current context */ int const maybe_extMem = (dictDirective == usingExtDict) || (dictDirective == usingDictCtx); U32 const prefixIdxLimit = startIndex - dictSize; /* used when dictDirective == dictSmall */ const BYTE* const dictEnd = dictionary ? dictionary + dictSize : dictionary; const BYTE* anchor = (const BYTE*) source; const BYTE* const iend = ip + inputSize; const BYTE* const mflimitPlusOne = iend - MFLIMIT + 1; const BYTE* const matchlimit = iend - LASTLITERALS; /* the dictCtx currentOffset is indexed on the start of the dictionary, * while a dictionary in the current context precedes the currentOffset */ const BYTE* dictBase = !dictionary ? NULL : (dictDirective == usingDictCtx) ? dictionary + dictSize - dictCtx->currentOffset : dictionary + dictSize - startIndex; BYTE* op = (BYTE*) dest; BYTE* const olimit = op + maxOutputSize; U32 offset = 0; U32 forwardH; DEBUGLOG(5, "LZ4_compress_generic_validated: srcSize=%i, tableType=%u", inputSize, tableType); assert(ip != NULL); /* If init conditions are not met, we don't have to mark stream * as having dirty context, since no action was taken yet */ if (outputDirective == fillOutput && maxOutputSize < 1) { return 0; } /* Impossible to store anything */ if ((tableType == byU16) && (inputSize>=LZ4_64Klimit)) { return 0; } /* Size too large (not within 64K limit) */ if (tableType==byPtr) assert(dictDirective==noDict); /* only supported use case with byPtr */ assert(acceleration >= 1); lowLimit = (const BYTE*)source - (dictDirective == withPrefix64k ? dictSize : 0); /* Update context state */ if (dictDirective == usingDictCtx) { /* Subsequent linked blocks can't use the dictionary. */ /* Instead, they use the block we just compressed. */ cctx->dictCtx = NULL; cctx->dictSize = (U32)inputSize; } else { cctx->dictSize += (U32)inputSize; } cctx->currentOffset += (U32)inputSize; cctx->tableType = (U32)tableType; if (inputSizehashTable, tableType, base); ip++; forwardH = LZ4_hashPosition(ip, tableType); /* Main Loop */ for ( ; ; ) { const BYTE* match; BYTE* token; const BYTE* filledIp; /* Find a match */ if (tableType == byPtr) { const BYTE* forwardIp = ip; int step = 1; int searchMatchNb = acceleration << LZ4_skipTrigger; do { U32 const h = forwardH; ip = forwardIp; forwardIp += step; step = (searchMatchNb++ >> LZ4_skipTrigger); if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; assert(ip < mflimitPlusOne); match = LZ4_getPositionOnHash(h, cctx->hashTable, tableType, base); forwardH = LZ4_hashPosition(forwardIp, tableType); LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base); } while ( (match+LZ4_DISTANCE_MAX < ip) || (LZ4_read32(match) != LZ4_read32(ip)) ); } else { /* byU32, byU16 */ const BYTE* forwardIp = ip; int step = 1; int searchMatchNb = acceleration << LZ4_skipTrigger; do { U32 const h = forwardH; U32 const current = (U32)(forwardIp - base); U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); assert(matchIndex <= current); assert(forwardIp - base < (ptrdiff_t)(2 GB - 1)); ip = forwardIp; forwardIp += step; step = (searchMatchNb++ >> LZ4_skipTrigger); if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; assert(ip < mflimitPlusOne); if (dictDirective == usingDictCtx) { if (matchIndex < startIndex) { /* there was no match, try the dictionary */ assert(tableType == byU32); matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); match = dictBase + matchIndex; matchIndex += dictDelta; /* make dictCtx index comparable with current context */ lowLimit = dictionary; } else { match = base + matchIndex; lowLimit = (const BYTE*)source; } } else if (dictDirective==usingExtDict) { if (matchIndex < startIndex) { DEBUGLOG(7, "extDict candidate: matchIndex=%5u < startIndex=%5u", matchIndex, startIndex); assert(startIndex - matchIndex >= MINMATCH); match = dictBase + matchIndex; lowLimit = dictionary; } else { match = base + matchIndex; lowLimit = (const BYTE*)source; } } else { /* single continuous memory segment */ match = base + matchIndex; } forwardH = LZ4_hashPosition(forwardIp, tableType); LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); DEBUGLOG(7, "candidate at pos=%u (offset=%u \n", matchIndex, current - matchIndex); if ((dictIssue == dictSmall) && (matchIndex < prefixIdxLimit)) { continue; } /* match outside of valid area */ assert(matchIndex < current); if ( ((tableType != byU16) || (LZ4_DISTANCE_MAX < LZ4_DISTANCE_ABSOLUTE_MAX)) && (matchIndex+LZ4_DISTANCE_MAX < current)) { continue; } /* too far */ assert((current - matchIndex) <= LZ4_DISTANCE_MAX); /* match now expected within distance */ if (LZ4_read32(match) == LZ4_read32(ip)) { if (maybe_extMem) offset = current - matchIndex; break; /* match found */ } } while(1); } /* Catch up */ filledIp = ip; while (((ip>anchor) & (match > lowLimit)) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; } /* Encode Literals */ { unsigned const litLength = (unsigned)(ip - anchor); token = op++; if ((outputDirective == limitedOutput) && /* Check output buffer overflow */ (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)) ) { return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ } if ((outputDirective == fillOutput) && (unlikely(op + (litLength+240)/255 /* litlen */ + litLength /* literals */ + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit))) { op--; goto _last_literals; } if (litLength >= RUN_MASK) { int len = (int)(litLength - RUN_MASK); *token = (RUN_MASK<= 255 ; len-=255) *op++ = 255; *op++ = (BYTE)len; } else *token = (BYTE)(litLength< olimit)) { /* the match was too close to the end, rewind and go to last literals */ op = token; goto _last_literals; } /* Encode Offset */ if (maybe_extMem) { /* static test */ DEBUGLOG(6, " with offset=%u (ext if > %i)", offset, (int)(ip - (const BYTE*)source)); assert(offset <= LZ4_DISTANCE_MAX && offset > 0); LZ4_writeLE16(op, (U16)offset); op+=2; } else { DEBUGLOG(6, " with offset=%u (same segment)", (U32)(ip - match)); assert(ip-match <= LZ4_DISTANCE_MAX); LZ4_writeLE16(op, (U16)(ip - match)); op+=2; } /* Encode MatchLength */ { unsigned matchCode; if ( (dictDirective==usingExtDict || dictDirective==usingDictCtx) && (lowLimit==dictionary) /* match within extDict */ ) { const BYTE* limit = ip + (dictEnd-match); assert(dictEnd > match); if (limit > matchlimit) limit = matchlimit; matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit); ip += (size_t)matchCode + MINMATCH; if (ip==limit) { unsigned const more = LZ4_count(limit, (const BYTE*)source, matchlimit); matchCode += more; ip += more; } DEBUGLOG(6, " with matchLength=%u starting in extDict", matchCode+MINMATCH); } else { matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit); ip += (size_t)matchCode + MINMATCH; DEBUGLOG(6, " with matchLength=%u", matchCode+MINMATCH); } if ((outputDirective) && /* Check output buffer overflow */ (unlikely(op + (1 + LASTLITERALS) + (matchCode+240)/255 > olimit)) ) { if (outputDirective == fillOutput) { /* Match description too long : reduce it */ U32 newMatchCode = 15 /* in token */ - 1 /* to avoid needing a zero byte */ + ((U32)(olimit - op) - 1 - LASTLITERALS) * 255; ip -= matchCode - newMatchCode; assert(newMatchCode < matchCode); matchCode = newMatchCode; if (unlikely(ip <= filledIp)) { /* We have already filled up to filledIp so if ip ends up less than filledIp * we have positions in the hash table beyond the current position. This is * a problem if we reuse the hash table. So we have to remove these positions * from the hash table. */ const BYTE* ptr; DEBUGLOG(5, "Clearing %u positions", (U32)(filledIp - ip)); for (ptr = ip; ptr <= filledIp; ++ptr) { U32 const h = LZ4_hashPosition(ptr, tableType); LZ4_clearHash(h, cctx->hashTable, tableType); } } } else { assert(outputDirective == limitedOutput); return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ } } if (matchCode >= ML_MASK) { *token += ML_MASK; matchCode -= ML_MASK; LZ4_write32(op, 0xFFFFFFFF); while (matchCode >= 4*255) { op+=4; LZ4_write32(op, 0xFFFFFFFF); matchCode -= 4*255; } op += matchCode / 255; *op++ = (BYTE)(matchCode % 255); } else *token += (BYTE)(matchCode); } /* Ensure we have enough space for the last literals. */ assert(!(outputDirective == fillOutput && op + 1 + LASTLITERALS > olimit)); anchor = ip; /* Test end of chunk */ if (ip >= mflimitPlusOne) break; /* Fill table */ LZ4_putPosition(ip-2, cctx->hashTable, tableType, base); /* Test next position */ if (tableType == byPtr) { match = LZ4_getPosition(ip, cctx->hashTable, tableType, base); LZ4_putPosition(ip, cctx->hashTable, tableType, base); if ( (match+LZ4_DISTANCE_MAX >= ip) && (LZ4_read32(match) == LZ4_read32(ip)) ) { token=op++; *token=0; goto _next_match; } } else { /* byU32, byU16 */ U32 const h = LZ4_hashPosition(ip, tableType); U32 const current = (U32)(ip-base); U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); assert(matchIndex < current); if (dictDirective == usingDictCtx) { if (matchIndex < startIndex) { /* there was no match, try the dictionary */ matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); match = dictBase + matchIndex; lowLimit = dictionary; /* required for match length counter */ matchIndex += dictDelta; } else { match = base + matchIndex; lowLimit = (const BYTE*)source; /* required for match length counter */ } } else if (dictDirective==usingExtDict) { if (matchIndex < startIndex) { match = dictBase + matchIndex; lowLimit = dictionary; /* required for match length counter */ } else { match = base + matchIndex; lowLimit = (const BYTE*)source; /* required for match length counter */ } } else { /* single memory segment */ match = base + matchIndex; } LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); assert(matchIndex < current); if ( ((dictIssue==dictSmall) ? (matchIndex >= prefixIdxLimit) : 1) && (((tableType==byU16) && (LZ4_DISTANCE_MAX == LZ4_DISTANCE_ABSOLUTE_MAX)) ? 1 : (matchIndex+LZ4_DISTANCE_MAX >= current)) && (LZ4_read32(match) == LZ4_read32(ip)) ) { token=op++; *token=0; if (maybe_extMem) offset = current - matchIndex; DEBUGLOG(6, "seq.start:%i, literals=%u, match.start:%i", (int)(anchor-(const BYTE*)source), 0, (int)(ip-(const BYTE*)source)); goto _next_match; } } /* Prepare next loop */ forwardH = LZ4_hashPosition(++ip, tableType); } _last_literals: /* Encode Last Literals */ { size_t lastRun = (size_t)(iend - anchor); if ( (outputDirective) && /* Check output buffer overflow */ (op + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > olimit)) { if (outputDirective == fillOutput) { /* adapt lastRun to fill 'dst' */ assert(olimit >= op); lastRun = (size_t)(olimit-op) - 1/*token*/; lastRun -= (lastRun + 256 - RUN_MASK) / 256; /*additional length tokens*/ } else { assert(outputDirective == limitedOutput); return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ } } DEBUGLOG(6, "Final literal run : %i literals", (int)lastRun); if (lastRun >= RUN_MASK) { size_t accumulator = lastRun - RUN_MASK; *op++ = RUN_MASK << ML_BITS; for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; *op++ = (BYTE) accumulator; } else { *op++ = (BYTE)(lastRun< 0); DEBUGLOG(5, "LZ4_compress_generic: compressed %i bytes into %i bytes", inputSize, result); return result; } /** LZ4_compress_generic() : * inlined, to ensure branches are decided at compilation time; * takes care of src == (NULL, 0) * and forward the rest to LZ4_compress_generic_validated */ LZ4_FORCE_INLINE int LZ4_compress_generic( LZ4_stream_t_internal* const cctx, const char* const src, char* const dst, const int srcSize, int *inputConsumed, /* only written when outputDirective == fillOutput */ const int dstCapacity, const limitedOutput_directive outputDirective, const tableType_t tableType, const dict_directive dictDirective, const dictIssue_directive dictIssue, const int acceleration) { DEBUGLOG(5, "LZ4_compress_generic: srcSize=%i, dstCapacity=%i", srcSize, dstCapacity); if ((U32)srcSize > (U32)LZ4_MAX_INPUT_SIZE) { return 0; } /* Unsupported srcSize, too large (or negative) */ if (srcSize == 0) { /* src == NULL supported if srcSize == 0 */ if (outputDirective != notLimited && dstCapacity <= 0) return 0; /* no output, can't write anything */ DEBUGLOG(5, "Generating an empty block"); assert(outputDirective == notLimited || dstCapacity >= 1); assert(dst != NULL); dst[0] = 0; if (outputDirective == fillOutput) { assert (inputConsumed != NULL); *inputConsumed = 0; } return 1; } assert(src != NULL); return LZ4_compress_generic_validated(cctx, src, dst, srcSize, inputConsumed, /* only written into if outputDirective == fillOutput */ dstCapacity, outputDirective, tableType, dictDirective, dictIssue, acceleration); } int LZ4_compress_fast_extState(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) { LZ4_stream_t_internal* const ctx = & LZ4_initStream(state, sizeof(LZ4_stream_t)) -> internal_donotuse; assert(ctx != NULL); if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; if (maxOutputSize >= LZ4_compressBound(inputSize)) { if (inputSize < LZ4_64Klimit) { return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, byU16, noDict, noDictIssue, acceleration); } else { const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); } } else { if (inputSize < LZ4_64Klimit) { return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); } else { const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, noDict, noDictIssue, acceleration); } } } /** * LZ4_compress_fast_extState_fastReset() : * A variant of LZ4_compress_fast_extState(). * * Using this variant avoids an expensive initialization step. It is only safe * to call if the state buffer is known to be correctly initialized already * (see comment in lz4.h on LZ4_resetStream_fast() for a definition of * "correctly initialized"). */ int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) { LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)state)->internal_donotuse; if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; if (dstCapacity >= LZ4_compressBound(srcSize)) { if (srcSize < LZ4_64Klimit) { const tableType_t tableType = byU16; LZ4_prepareTable(ctx, srcSize, tableType); if (ctx->currentOffset) { return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, dictSmall, acceleration); } else { return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); } } else { const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; LZ4_prepareTable(ctx, srcSize, tableType); return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); } } else { if (srcSize < LZ4_64Klimit) { const tableType_t tableType = byU16; LZ4_prepareTable(ctx, srcSize, tableType); if (ctx->currentOffset) { return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, dictSmall, acceleration); } else { return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); } } else { const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; LZ4_prepareTable(ctx, srcSize, tableType); return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); } } } int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) { int result; #if (LZ4_HEAPMODE) LZ4_stream_t* ctxPtr = ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ if (ctxPtr == NULL) return 0; #else LZ4_stream_t ctx; LZ4_stream_t* const ctxPtr = &ctx; #endif result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration); #if (LZ4_HEAPMODE) FREEMEM(ctxPtr); #endif return result; } int LZ4_compress_default(const char* src, char* dst, int srcSize, int maxOutputSize) { return LZ4_compress_fast(src, dst, srcSize, maxOutputSize, 1); } /* Note!: This function leaves the stream in an unclean/broken state! * It is not safe to subsequently use the same state with a _fastReset() or * _continue() call without resetting it. */ static int LZ4_compress_destSize_extState (LZ4_stream_t* state, const char* src, char* dst, int* srcSizePtr, int targetDstSize) { void* const s = LZ4_initStream(state, sizeof (*state)); assert(s != NULL); (void)s; if (targetDstSize >= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */ return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1); } else { if (*srcSizePtr < LZ4_64Klimit) { return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, byU16, noDict, noDictIssue, 1); } else { tableType_t const addrMode = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, addrMode, noDict, noDictIssue, 1); } } } int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize) { #if (LZ4_HEAPMODE) LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ if (ctx == NULL) return 0; #else LZ4_stream_t ctxBody; LZ4_stream_t* ctx = &ctxBody; #endif int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize); #if (LZ4_HEAPMODE) FREEMEM(ctx); #endif return result; } /*-****************************** * Streaming functions ********************************/ LZ4_stream_t* LZ4_createStream(void) { LZ4_stream_t* const lz4s = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ DEBUGLOG(4, "LZ4_createStream %p", lz4s); if (lz4s == NULL) return NULL; LZ4_initStream(lz4s, sizeof(*lz4s)); return lz4s; } static size_t LZ4_stream_t_alignment(void) { #if LZ4_ALIGN_TEST typedef struct { char c; LZ4_stream_t t; } t_a; return sizeof(t_a) - sizeof(LZ4_stream_t); #else return 1; /* effectively disabled */ #endif } LZ4_stream_t* LZ4_initStream (void* buffer, size_t size) { DEBUGLOG(5, "LZ4_initStream"); if (buffer == NULL) { return NULL; } if (size < sizeof(LZ4_stream_t)) { return NULL; } if (!LZ4_isAligned(buffer, LZ4_stream_t_alignment())) return NULL; MEM_INIT(buffer, 0, sizeof(LZ4_stream_t_internal)); return (LZ4_stream_t*)buffer; } /* resetStream is now deprecated, * prefer initStream() which is more general */ void LZ4_resetStream (LZ4_stream_t* LZ4_stream) { DEBUGLOG(5, "LZ4_resetStream (ctx:%p)", LZ4_stream); MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t_internal)); } void LZ4_resetStream_fast(LZ4_stream_t* ctx) { LZ4_prepareTable(&(ctx->internal_donotuse), 0, byU32); } int LZ4_freeStream (LZ4_stream_t* LZ4_stream) { if (!LZ4_stream) return 0; /* support free on NULL */ DEBUGLOG(5, "LZ4_freeStream %p", LZ4_stream); FREEMEM(LZ4_stream); return (0); } #define HASH_UNIT sizeof(reg_t) int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) { LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse; const tableType_t tableType = byU32; const BYTE* p = (const BYTE*)dictionary; const BYTE* const dictEnd = p + dictSize; const BYTE* base; DEBUGLOG(4, "LZ4_loadDict (%i bytes from %p into %p)", dictSize, dictionary, LZ4_dict); /* It's necessary to reset the context, * and not just continue it with prepareTable() * to avoid any risk of generating overflowing matchIndex * when compressing using this dictionary */ LZ4_resetStream(LZ4_dict); /* We always increment the offset by 64 KB, since, if the dict is longer, * we truncate it to the last 64k, and if it's shorter, we still want to * advance by a whole window length so we can provide the guarantee that * there are only valid offsets in the window, which allows an optimization * in LZ4_compress_fast_continue() where it uses noDictIssue even when the * dictionary isn't a full 64k. */ dict->currentOffset += 64 KB; if (dictSize < (int)HASH_UNIT) { return 0; } if ((dictEnd - p) > 64 KB) p = dictEnd - 64 KB; base = dictEnd - dict->currentOffset; dict->dictionary = p; dict->dictSize = (U32)(dictEnd - p); dict->tableType = (U32)tableType; while (p <= dictEnd-HASH_UNIT) { LZ4_putPosition(p, dict->hashTable, tableType, base); p+=3; } return (int)dict->dictSize; } void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream) { const LZ4_stream_t_internal* dictCtx = dictionaryStream == NULL ? NULL : &(dictionaryStream->internal_donotuse); DEBUGLOG(4, "LZ4_attach_dictionary (%p, %p, size %u)", workingStream, dictionaryStream, dictCtx != NULL ? dictCtx->dictSize : 0); if (dictCtx != NULL) { /* If the current offset is zero, we will never look in the * external dictionary context, since there is no value a table * entry can take that indicate a miss. In that case, we need * to bump the offset to something non-zero. */ if (workingStream->internal_donotuse.currentOffset == 0) { workingStream->internal_donotuse.currentOffset = 64 KB; } /* Don't actually attach an empty dictionary. */ if (dictCtx->dictSize == 0) { dictCtx = NULL; } } workingStream->internal_donotuse.dictCtx = dictCtx; } static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, int nextSize) { assert(nextSize >= 0); if (LZ4_dict->currentOffset + (unsigned)nextSize > 0x80000000) { /* potential ptrdiff_t overflow (32-bits mode) */ /* rescale hash table */ U32 const delta = LZ4_dict->currentOffset - 64 KB; const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; int i; DEBUGLOG(4, "LZ4_renormDictT"); for (i=0; ihashTable[i] < delta) LZ4_dict->hashTable[i]=0; else LZ4_dict->hashTable[i] -= delta; } LZ4_dict->currentOffset = 64 KB; if (LZ4_dict->dictSize > 64 KB) LZ4_dict->dictSize = 64 KB; LZ4_dict->dictionary = dictEnd - LZ4_dict->dictSize; } } int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) { const tableType_t tableType = byU32; LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse; const BYTE* dictEnd = streamPtr->dictionary + streamPtr->dictSize; DEBUGLOG(5, "LZ4_compress_fast_continue (inputSize=%i)", inputSize); LZ4_renormDictT(streamPtr, inputSize); /* avoid index overflow */ if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; /* invalidate tiny dictionaries */ if ( (streamPtr->dictSize-1 < 4-1) /* intentional underflow */ && (dictEnd != (const BYTE*)source) ) { DEBUGLOG(5, "LZ4_compress_fast_continue: dictSize(%u) at addr:%p is too small", streamPtr->dictSize, streamPtr->dictionary); streamPtr->dictSize = 0; streamPtr->dictionary = (const BYTE*)source; dictEnd = (const BYTE*)source; } /* Check overlapping input/dictionary space */ { const BYTE* sourceEnd = (const BYTE*) source + inputSize; if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) { streamPtr->dictSize = (U32)(dictEnd - sourceEnd); if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB; if (streamPtr->dictSize < 4) streamPtr->dictSize = 0; streamPtr->dictionary = dictEnd - streamPtr->dictSize; } } /* prefix mode : source data follows dictionary */ if (dictEnd == (const BYTE*)source) { if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, dictSmall, acceleration); else return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, noDictIssue, acceleration); } /* external dictionary mode */ { int result; if (streamPtr->dictCtx) { /* We depend here on the fact that dictCtx'es (produced by * LZ4_loadDict) guarantee that their tables contain no references * to offsets between dictCtx->currentOffset - 64 KB and * dictCtx->currentOffset - dictCtx->dictSize. This makes it safe * to use noDictIssue even when the dict isn't a full 64 KB. */ if (inputSize > 4 KB) { /* For compressing large blobs, it is faster to pay the setup * cost to copy the dictionary's tables into the active context, * so that the compression loop is only looking into one table. */ LZ4_memcpy(streamPtr, streamPtr->dictCtx, sizeof(*streamPtr)); result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); } else { result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingDictCtx, noDictIssue, acceleration); } } else { if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, dictSmall, acceleration); } else { result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); } } streamPtr->dictionary = (const BYTE*)source; streamPtr->dictSize = (U32)inputSize; return result; } } /* Hidden debug function, to force-test external dictionary mode */ int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize) { LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse; int result; LZ4_renormDictT(streamPtr, srcSize); if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, dictSmall, 1); } else { result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, noDictIssue, 1); } streamPtr->dictionary = (const BYTE*)source; streamPtr->dictSize = (U32)srcSize; return result; } /*! LZ4_saveDict() : * If previously compressed data block is not guaranteed to remain available at its memory location, * save it into a safer place (char* safeBuffer). * Note : you don't need to call LZ4_loadDict() afterwards, * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue(). * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. */ int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize) { LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse; const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize; if ((U32)dictSize > 64 KB) { dictSize = 64 KB; } /* useless to define a dictionary > 64 KB */ if ((U32)dictSize > dict->dictSize) { dictSize = (int)dict->dictSize; } if (safeBuffer == NULL) assert(dictSize == 0); if (dictSize > 0) memmove(safeBuffer, previousDictEnd - dictSize, dictSize); dict->dictionary = (const BYTE*)safeBuffer; dict->dictSize = (U32)dictSize; return dictSize; } /*-******************************* * Decompression functions ********************************/ typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive; typedef enum { decode_full_block = 0, partial_decode = 1 } earlyEnd_directive; #undef MIN #define MIN(a,b) ( (a) < (b) ? (a) : (b) ) /* Read the variable-length literal or match length. * * ip - pointer to use as input. * lencheck - end ip. Return an error if ip advances >= lencheck. * loop_check - check ip >= lencheck in body of loop. Returns loop_error if so. * initial_check - check ip >= lencheck before start of loop. Returns initial_error if so. * error (output) - error code. Should be set to 0 before call. */ typedef enum { loop_error = -2, initial_error = -1, ok = 0 } variable_length_error; LZ4_FORCE_INLINE unsigned read_variable_length(const BYTE**ip, const BYTE* lencheck, int loop_check, int initial_check, variable_length_error* error) { U32 length = 0; U32 s; if (initial_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ *error = initial_error; return length; } do { s = **ip; (*ip)++; length += s; if (loop_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ *error = loop_error; return length; } } while (s==255); return length; } /*! LZ4_decompress_generic() : * This generic decompression function covers all use cases. * It shall be instantiated several times, using different sets of directives. * Note that it is important for performance that this function really get inlined, * in order to remove useless branches during compilation optimization. */ LZ4_FORCE_INLINE int LZ4_decompress_generic( const char* const src, char* const dst, int srcSize, int outputSize, /* If endOnInput==endOnInputSize, this value is `dstCapacity` */ endCondition_directive endOnInput, /* endOnOutputSize, endOnInputSize */ earlyEnd_directive partialDecoding, /* full, partial */ dict_directive dict, /* noDict, withPrefix64k, usingExtDict */ const BYTE* const lowPrefix, /* always <= dst, == dst when no prefix */ const BYTE* const dictStart, /* only if dict==usingExtDict */ const size_t dictSize /* note : = 0 if noDict */ ) { if (src == NULL) { return -1; } { const BYTE* ip = (const BYTE*) src; const BYTE* const iend = ip + srcSize; BYTE* op = (BYTE*) dst; BYTE* const oend = op + outputSize; BYTE* cpy; const BYTE* const dictEnd = (dictStart == NULL) ? NULL : dictStart + dictSize; const int safeDecode = (endOnInput==endOnInputSize); const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB))); /* Set up the "end" pointers for the shortcut. */ const BYTE* const shortiend = iend - (endOnInput ? 14 : 8) /*maxLL*/ - 2 /*offset*/; const BYTE* const shortoend = oend - (endOnInput ? 14 : 8) /*maxLL*/ - 18 /*maxML*/; const BYTE* match; size_t offset; unsigned token; size_t length; DEBUGLOG(5, "LZ4_decompress_generic (srcSize:%i, dstSize:%i)", srcSize, outputSize); /* Special cases */ assert(lowPrefix <= op); if ((endOnInput) && (unlikely(outputSize==0))) { /* Empty output buffer */ if (partialDecoding) return 0; return ((srcSize==1) && (*ip==0)) ? 0 : -1; } if ((!endOnInput) && (unlikely(outputSize==0))) { return (*ip==0 ? 1 : -1); } if ((endOnInput) && unlikely(srcSize==0)) { return -1; } /* Currently the fast loop shows a regression on qualcomm arm chips. */ #if LZ4_FAST_DEC_LOOP if ((oend - op) < FASTLOOP_SAFE_DISTANCE) { DEBUGLOG(6, "skip fast decode loop"); goto safe_decode; } /* Fast loop : decode sequences as long as output < iend-FASTLOOP_SAFE_DISTANCE */ while (1) { /* Main fastloop assertion: We can always wildcopy FASTLOOP_SAFE_DISTANCE */ assert(oend - op >= FASTLOOP_SAFE_DISTANCE); if (endOnInput) { assert(ip < iend); } token = *ip++; length = token >> ML_BITS; /* literal length */ assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ /* decode literal length */ if (length == RUN_MASK) { variable_length_error error = ok; length += read_variable_length(&ip, iend-RUN_MASK, (int)endOnInput, (int)endOnInput, &error); if (error == initial_error) { goto _output_error; } if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ /* copy literals */ cpy = op+length; LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); if (endOnInput) { /* LZ4_decompress_safe() */ if ((cpy>oend-32) || (ip+length>iend-32)) { goto safe_literal_copy; } LZ4_wildCopy32(op, ip, cpy); } else { /* LZ4_decompress_fast() */ if (cpy>oend-8) { goto safe_literal_copy; } LZ4_wildCopy8(op, ip, cpy); /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : * it doesn't know input length, and only relies on end-of-block properties */ } ip += length; op = cpy; } else { cpy = op+length; if (endOnInput) { /* LZ4_decompress_safe() */ DEBUGLOG(7, "copy %u bytes in a 16-bytes stripe", (unsigned)length); /* We don't need to check oend, since we check it once for each loop below */ if (ip > iend-(16 + 1/*max lit + offset + nextToken*/)) { goto safe_literal_copy; } /* Literals can only be 14, but hope compilers optimize if we copy by a register size */ LZ4_memcpy(op, ip, 16); } else { /* LZ4_decompress_fast() */ /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : * it doesn't know input length, and relies on end-of-block properties */ LZ4_memcpy(op, ip, 8); if (length > 8) { LZ4_memcpy(op+8, ip+8, 8); } } ip += length; op = cpy; } /* get offset */ offset = LZ4_readLE16(ip); ip+=2; match = op - offset; assert(match <= op); /* get matchlength */ length = token & ML_MASK; if (length == ML_MASK) { variable_length_error error = ok; if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ length += read_variable_length(&ip, iend - LASTLITERALS + 1, (int)endOnInput, 0, &error); if (error != ok) { goto _output_error; } if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) { goto _output_error; } /* overflow detection */ length += MINMATCH; if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { goto safe_match_copy; } } else { length += MINMATCH; if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { goto safe_match_copy; } /* Fastpath check: Avoids a branch in LZ4_wildCopy32 if true */ if ((dict == withPrefix64k) || (match >= lowPrefix)) { if (offset >= 8) { assert(match >= lowPrefix); assert(match <= op); assert(op + 18 <= oend); LZ4_memcpy(op, match, 8); LZ4_memcpy(op+8, match+8, 8); LZ4_memcpy(op+16, match+16, 2); op += length; continue; } } } if (checkOffset && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ /* match starting within external dictionary */ if ((dict==usingExtDict) && (match < lowPrefix)) { if (unlikely(op+length > oend-LASTLITERALS)) { if (partialDecoding) { DEBUGLOG(7, "partialDecoding: dictionary match, close to dstEnd"); length = MIN(length, (size_t)(oend-op)); } else { goto _output_error; /* end-of-block condition violated */ } } if (length <= (size_t)(lowPrefix-match)) { /* match fits entirely within external dictionary : just copy */ memmove(op, dictEnd - (lowPrefix-match), length); op += length; } else { /* match stretches into both external dictionary and current block */ size_t const copySize = (size_t)(lowPrefix - match); size_t const restSize = length - copySize; LZ4_memcpy(op, dictEnd - copySize, copySize); op += copySize; if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ BYTE* const endOfMatch = op + restSize; const BYTE* copyFrom = lowPrefix; while (op < endOfMatch) { *op++ = *copyFrom++; } } else { LZ4_memcpy(op, lowPrefix, restSize); op += restSize; } } continue; } /* copy match within block */ cpy = op + length; assert((op <= oend) && (oend-op >= 32)); if (unlikely(offset<16)) { LZ4_memcpy_using_offset(op, match, cpy, offset); } else { LZ4_wildCopy32(op, match, cpy); } op = cpy; /* wildcopy correction */ } safe_decode: #endif /* Main Loop : decode remaining sequences where output < FASTLOOP_SAFE_DISTANCE */ while (1) { token = *ip++; length = token >> ML_BITS; /* literal length */ assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ /* A two-stage shortcut for the most common case: * 1) If the literal length is 0..14, and there is enough space, * enter the shortcut and copy 16 bytes on behalf of the literals * (in the fast mode, only 8 bytes can be safely copied this way). * 2) Further if the match length is 4..18, copy 18 bytes in a similar * manner; but we ensure that there's enough space in the output for * those 18 bytes earlier, upon entering the shortcut (in other words, * there is a combined check for both stages). */ if ( (endOnInput ? length != RUN_MASK : length <= 8) /* strictly "less than" on input, to re-enter the loop with at least one byte */ && likely((endOnInput ? ip < shortiend : 1) & (op <= shortoend)) ) { /* Copy the literals */ LZ4_memcpy(op, ip, endOnInput ? 16 : 8); op += length; ip += length; /* The second stage: prepare for match copying, decode full info. * If it doesn't work out, the info won't be wasted. */ length = token & ML_MASK; /* match length */ offset = LZ4_readLE16(ip); ip += 2; match = op - offset; assert(match <= op); /* check overflow */ /* Do not deal with overlapping matches. */ if ( (length != ML_MASK) && (offset >= 8) && (dict==withPrefix64k || match >= lowPrefix) ) { /* Copy the match. */ LZ4_memcpy(op + 0, match + 0, 8); LZ4_memcpy(op + 8, match + 8, 8); LZ4_memcpy(op +16, match +16, 2); op += length + MINMATCH; /* Both stages worked, load the next token. */ continue; } /* The second stage didn't work out, but the info is ready. * Propel it right to the point of match copying. */ goto _copy_match; } /* decode literal length */ if (length == RUN_MASK) { variable_length_error error = ok; length += read_variable_length(&ip, iend-RUN_MASK, (int)endOnInput, (int)endOnInput, &error); if (error == initial_error) { goto _output_error; } if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ } /* copy literals */ cpy = op+length; #if LZ4_FAST_DEC_LOOP safe_literal_copy: #endif LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); if ( ((endOnInput) && ((cpy>oend-MFLIMIT) || (ip+length>iend-(2+1+LASTLITERALS))) ) || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) ) { /* We've either hit the input parsing restriction or the output parsing restriction. * In the normal scenario, decoding a full block, it must be the last sequence, * otherwise it's an error (invalid input or dimensions). * In partialDecoding scenario, it's necessary to ensure there is no buffer overflow. */ if (partialDecoding) { /* Since we are partial decoding we may be in this block because of the output parsing * restriction, which is not valid since the output buffer is allowed to be undersized. */ assert(endOnInput); DEBUGLOG(7, "partialDecoding: copying literals, close to input or output end") DEBUGLOG(7, "partialDecoding: literal length = %u", (unsigned)length); DEBUGLOG(7, "partialDecoding: remaining space in dstBuffer : %i", (int)(oend - op)); DEBUGLOG(7, "partialDecoding: remaining space in srcBuffer : %i", (int)(iend - ip)); /* Finishing in the middle of a literals segment, * due to lack of input. */ if (ip+length > iend) { length = (size_t)(iend-ip); cpy = op + length; } /* Finishing in the middle of a literals segment, * due to lack of output space. */ if (cpy > oend) { cpy = oend; assert(op<=oend); length = (size_t)(oend-op); } } else { /* We must be on the last sequence because of the parsing limitations so check * that we exactly regenerate the original size (must be exact when !endOnInput). */ if ((!endOnInput) && (cpy != oend)) { goto _output_error; } /* We must be on the last sequence (or invalid) because of the parsing limitations * so check that we exactly consume the input and don't overrun the output buffer. */ if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) { DEBUGLOG(6, "should have been last run of literals") DEBUGLOG(6, "ip(%p) + length(%i) = %p != iend (%p)", ip, (int)length, ip+length, iend); DEBUGLOG(6, "or cpy(%p) > oend(%p)", cpy, oend); goto _output_error; } } memmove(op, ip, length); /* supports overlapping memory regions; only matters for in-place decompression scenarios */ ip += length; op += length; /* Necessarily EOF when !partialDecoding. * When partialDecoding, it is EOF if we've either * filled the output buffer or * can't proceed with reading an offset for following match. */ if (!partialDecoding || (cpy == oend) || (ip >= (iend-2))) { break; } } else { LZ4_wildCopy8(op, ip, cpy); /* may overwrite up to WILDCOPYLENGTH beyond cpy */ ip += length; op = cpy; } /* get offset */ offset = LZ4_readLE16(ip); ip+=2; match = op - offset; /* get matchlength */ length = token & ML_MASK; _copy_match: if (length == ML_MASK) { variable_length_error error = ok; length += read_variable_length(&ip, iend - LASTLITERALS + 1, (int)endOnInput, 0, &error); if (error != ok) goto _output_error; if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */ } length += MINMATCH; #if LZ4_FAST_DEC_LOOP safe_match_copy: #endif if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) goto _output_error; /* Error : offset outside buffers */ /* match starting within external dictionary */ if ((dict==usingExtDict) && (match < lowPrefix)) { if (unlikely(op+length > oend-LASTLITERALS)) { if (partialDecoding) length = MIN(length, (size_t)(oend-op)); else goto _output_error; /* doesn't respect parsing restriction */ } if (length <= (size_t)(lowPrefix-match)) { /* match fits entirely within external dictionary : just copy */ memmove(op, dictEnd - (lowPrefix-match), length); op += length; } else { /* match stretches into both external dictionary and current block */ size_t const copySize = (size_t)(lowPrefix - match); size_t const restSize = length - copySize; LZ4_memcpy(op, dictEnd - copySize, copySize); op += copySize; if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ BYTE* const endOfMatch = op + restSize; const BYTE* copyFrom = lowPrefix; while (op < endOfMatch) *op++ = *copyFrom++; } else { LZ4_memcpy(op, lowPrefix, restSize); op += restSize; } } continue; } assert(match >= lowPrefix); /* copy match within block */ cpy = op + length; /* partialDecoding : may end anywhere within the block */ assert(op<=oend); if (partialDecoding && (cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { size_t const mlen = MIN(length, (size_t)(oend-op)); const BYTE* const matchEnd = match + mlen; BYTE* const copyEnd = op + mlen; if (matchEnd > op) { /* overlap copy */ while (op < copyEnd) { *op++ = *match++; } } else { LZ4_memcpy(op, match, mlen); } op = copyEnd; if (op == oend) { break; } continue; } if (unlikely(offset<8)) { LZ4_write32(op, 0); /* silence msan warning when offset==0 */ op[0] = match[0]; op[1] = match[1]; op[2] = match[2]; op[3] = match[3]; match += inc32table[offset]; LZ4_memcpy(op+4, match, 4); match -= dec64table[offset]; } else { LZ4_memcpy(op, match, 8); match += 8; } op += 8; if (unlikely(cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { BYTE* const oCopyLimit = oend - (WILDCOPYLENGTH-1); if (cpy > oend-LASTLITERALS) { goto _output_error; } /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ if (op < oCopyLimit) { LZ4_wildCopy8(op, match, oCopyLimit); match += oCopyLimit - op; op = oCopyLimit; } while (op < cpy) { *op++ = *match++; } } else { LZ4_memcpy(op, match, 8); if (length > 16) { LZ4_wildCopy8(op+8, match+8, cpy); } } op = cpy; /* wildcopy correction */ } /* end of decoding */ if (endOnInput) { DEBUGLOG(5, "decoded %i bytes", (int) (((char*)op)-dst)); return (int) (((char*)op)-dst); /* Nb of output bytes decoded */ } else { return (int) (((const char*)ip)-src); /* Nb of input bytes read */ } /* Overflow error detected */ _output_error: return (int) (-(((const char*)ip)-src))-1; } } /*===== Instantiate the API decoding functions. =====*/ LZ4_FORCE_O2 int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxDecompressedSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, endOnInputSize, decode_full_block, noDict, (BYTE*)dest, NULL, 0); } LZ4_FORCE_O2 int LZ4_decompress_safe_partial(const char* src, char* dst, int compressedSize, int targetOutputSize, int dstCapacity) { dstCapacity = MIN(targetOutputSize, dstCapacity); return LZ4_decompress_generic(src, dst, compressedSize, dstCapacity, endOnInputSize, partial_decode, noDict, (BYTE*)dst, NULL, 0); } LZ4_FORCE_O2 int LZ4_decompress_fast(const char* source, char* dest, int originalSize) { return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, decode_full_block, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 0); } /*===== Instantiate a few more decoding cases, used more than once. =====*/ LZ4_FORCE_O2 /* Exported, an obsolete API function. */ int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 0); } /* Another obsolete API function, paired with the previous one. */ int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize) { /* LZ4_decompress_fast doesn't validate match offsets, * and thus serves well with any prefixed dictionary. */ return LZ4_decompress_fast(source, dest, originalSize); } LZ4_FORCE_O2 static int LZ4_decompress_safe_withSmallPrefix(const char* source, char* dest, int compressedSize, int maxOutputSize, size_t prefixSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, noDict, (BYTE*)dest-prefixSize, NULL, 0); } LZ4_FORCE_O2 int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const void* dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize); } LZ4_FORCE_O2 static int LZ4_decompress_fast_extDict(const char* source, char* dest, int originalSize, const void* dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, decode_full_block, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize); } /* The "double dictionary" mode, for use with e.g. ring buffers: the first part * of the dictionary is passed as prefix, and the second via dictStart + dictSize. * These routines are used only once, in LZ4_decompress_*_continue(). */ LZ4_FORCE_INLINE int LZ4_decompress_safe_doubleDict(const char* source, char* dest, int compressedSize, int maxOutputSize, size_t prefixSize, const void* dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, usingExtDict, (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); } LZ4_FORCE_INLINE int LZ4_decompress_fast_doubleDict(const char* source, char* dest, int originalSize, size_t prefixSize, const void* dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, decode_full_block, usingExtDict, (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); } /*===== streaming decompression functions =====*/ LZ4_streamDecode_t* LZ4_createStreamDecode(void) { LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOC_AND_ZERO(sizeof(LZ4_streamDecode_t)); LZ4_STATIC_ASSERT(LZ4_STREAMDECODESIZE >= sizeof(LZ4_streamDecode_t_internal)); /* A compilation error here means LZ4_STREAMDECODESIZE is not large enough */ return lz4s; } int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) { if (LZ4_stream == NULL) { return 0; } /* support free on NULL */ FREEMEM(LZ4_stream); return 0; } /*! LZ4_setStreamDecode() : * Use this function to instruct where to find the dictionary. * This function is not necessary if previous data is still available where it was decoded. * Loading a size of 0 is allowed (same effect as no dictionary). * @return : 1 if OK, 0 if error */ int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize) { LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; lz4sd->prefixSize = (size_t) dictSize; lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize; lz4sd->externalDict = NULL; lz4sd->extDictSize = 0; return 1; } /*! LZ4_decoderRingBufferSize() : * when setting a ring buffer for streaming decompression (optional scenario), * provides the minimum size of this ring buffer * to be compatible with any source respecting maxBlockSize condition. * Note : in a ring buffer scenario, * blocks are presumed decompressed next to each other. * When not enough space remains for next block (remainingSize < maxBlockSize), * decoding resumes from beginning of ring buffer. * @return : minimum ring buffer size, * or 0 if there is an error (invalid maxBlockSize). */ int LZ4_decoderRingBufferSize(int maxBlockSize) { if (maxBlockSize < 0) return 0; if (maxBlockSize > LZ4_MAX_INPUT_SIZE) return 0; if (maxBlockSize < 16) maxBlockSize = 16; return LZ4_DECODER_RING_BUFFER_SIZE(maxBlockSize); } /* *_continue() : These decoding functions allow decompression of multiple blocks in "streaming" mode. Previously decoded blocks must still be available at the memory position where they were decoded. If it's not possible, save the relevant part of decoded data into a safe buffer, and indicate where it stands using LZ4_setStreamDecode() */ LZ4_FORCE_O2 int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) { LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; int result; if (lz4sd->prefixSize == 0) { /* The first call, no dictionary yet. */ assert(lz4sd->extDictSize == 0); result = LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)result; lz4sd->prefixEnd = (BYTE*)dest + result; } else if (lz4sd->prefixEnd == (BYTE*)dest) { /* They're rolling the current segment. */ if (lz4sd->prefixSize >= 64 KB - 1) result = LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); else if (lz4sd->extDictSize == 0) result = LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, lz4sd->prefixSize); else result = LZ4_decompress_safe_doubleDict(source, dest, compressedSize, maxOutputSize, lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); if (result <= 0) return result; lz4sd->prefixSize += (size_t)result; lz4sd->prefixEnd += result; } else { /* The buffer wraps around, or they're switching to another buffer. */ lz4sd->extDictSize = lz4sd->prefixSize; lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; result = LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, lz4sd->externalDict, lz4sd->extDictSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)result; lz4sd->prefixEnd = (BYTE*)dest + result; } return result; } LZ4_FORCE_O2 int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize) { LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; int result; assert(originalSize >= 0); if (lz4sd->prefixSize == 0) { assert(lz4sd->extDictSize == 0); result = LZ4_decompress_fast(source, dest, originalSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)originalSize; lz4sd->prefixEnd = (BYTE*)dest + originalSize; } else if (lz4sd->prefixEnd == (BYTE*)dest) { if (lz4sd->prefixSize >= 64 KB - 1 || lz4sd->extDictSize == 0) result = LZ4_decompress_fast(source, dest, originalSize); else result = LZ4_decompress_fast_doubleDict(source, dest, originalSize, lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); if (result <= 0) return result; lz4sd->prefixSize += (size_t)originalSize; lz4sd->prefixEnd += originalSize; } else { lz4sd->extDictSize = lz4sd->prefixSize; lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; result = LZ4_decompress_fast_extDict(source, dest, originalSize, lz4sd->externalDict, lz4sd->extDictSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)originalSize; lz4sd->prefixEnd = (BYTE*)dest + originalSize; } return result; } /* Advanced decoding functions : *_usingDict() : These decoding functions work the same as "_continue" ones, the dictionary must be explicitly provided within parameters */ int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) { if (dictSize==0) return LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); if (dictStart+dictSize == dest) { if (dictSize >= 64 KB - 1) { return LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); } assert(dictSize >= 0); return LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, (size_t)dictSize); } assert(dictSize >= 0); return LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, dictStart, (size_t)dictSize); } int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) { if (dictSize==0 || dictStart+dictSize == dest) return LZ4_decompress_fast(source, dest, originalSize); assert(dictSize >= 0); return LZ4_decompress_fast_extDict(source, dest, originalSize, dictStart, (size_t)dictSize); } /*=************************************************* * Obsolete Functions ***************************************************/ /* obsolete compression functions */ int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) { return LZ4_compress_default(source, dest, inputSize, maxOutputSize); } int LZ4_compress(const char* src, char* dest, int srcSize) { return LZ4_compress_default(src, dest, srcSize, LZ4_compressBound(srcSize)); } int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); } int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); } int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int dstCapacity) { return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, dstCapacity, 1); } int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) { return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); } /* These decompression functions are deprecated and should no longer be used. They are only provided here for compatibility with older user programs. - LZ4_uncompress is totally equivalent to LZ4_decompress_fast - LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe */ int LZ4_uncompress (const char* source, char* dest, int outputSize) { return LZ4_decompress_fast(source, dest, outputSize); } int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) { return LZ4_decompress_safe(source, dest, isize, maxOutputSize); } /* Obsolete Streaming functions */ int LZ4_sizeofStreamState(void) { return LZ4_STREAMSIZE; } int LZ4_resetStreamState(void* state, char* inputBuffer) { (void)inputBuffer; LZ4_resetStream((LZ4_stream_t*)state); return 0; } void* LZ4_create (char* inputBuffer) { (void)inputBuffer; return LZ4_createStream(); } char* LZ4_slideInputBuffer (void* state) { /* avoid const char * -> char * conversion warning */ return (char *)(uptrval)((LZ4_stream_t*)state)->internal_donotuse.dictionary; } #endif /* LZ4_COMMONDEFS_ONLY */ grcompiler-5.2.1/compiler/LZ4/lz4.h000066400000000000000000001176351411153030700167770ustar00rootroot00000000000000/* * LZ4 - Fast LZ compression algorithm * Header File * Copyright (C) 2011-present, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. You can contact the author at : - LZ4 homepage : http://www.lz4.org - LZ4 source repository : https://github.com/lz4/lz4 */ #if defined (__cplusplus) extern "C" { #endif #ifndef LZ4_H_2983827168210 #define LZ4_H_2983827168210 /* --- Dependency --- */ #include /* size_t */ /** Introduction LZ4 is lossless compression algorithm, providing compression speed >500 MB/s per core, scalable with multi-cores CPU. It features an extremely fast decoder, with speed in multiple GB/s per core, typically reaching RAM speed limits on multi-core systems. The LZ4 compression library provides in-memory compression and decompression functions. It gives full buffer control to user. Compression can be done in: - a single step (described as Simple Functions) - a single step, reusing a context (described in Advanced Functions) - unbounded multiple steps (described as Streaming compression) lz4.h generates and decodes LZ4-compressed blocks (doc/lz4_Block_format.md). Decompressing such a compressed block requires additional metadata. Exact metadata depends on exact decompression function. For the typical case of LZ4_decompress_safe(), metadata includes block's compressed size, and maximum bound of decompressed size. Each application is free to encode and pass such metadata in whichever way it wants. lz4.h only handle blocks, it can not generate Frames. Blocks are different from Frames (doc/lz4_Frame_format.md). Frames bundle both blocks and metadata in a specified manner. Embedding metadata is required for compressed data to be self-contained and portable. Frame format is delivered through a companion API, declared in lz4frame.h. The `lz4` CLI can only manage frames. */ /*^*************************************************************** * Export parameters *****************************************************************/ /* * LZ4_DLL_EXPORT : * Enable exporting of functions when building a Windows DLL * LZ4LIB_VISIBILITY : * Control library symbols visibility. */ #ifndef LZ4LIB_VISIBILITY # if defined(__GNUC__) && (__GNUC__ >= 4) # define LZ4LIB_VISIBILITY __attribute__ ((visibility ("default"))) # else # define LZ4LIB_VISIBILITY # endif #endif #if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1) # define LZ4LIB_API __declspec(dllexport) LZ4LIB_VISIBILITY #elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1) # define LZ4LIB_API __declspec(dllimport) LZ4LIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ #else # define LZ4LIB_API LZ4LIB_VISIBILITY #endif /*------ Version ------*/ #define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */ #define LZ4_VERSION_MINOR 9 /* for new (non-breaking) interface capabilities */ #define LZ4_VERSION_RELEASE 3 /* for tweaks, bug-fixes, or development */ #define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE) #define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE #define LZ4_QUOTE(str) #str #define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str) #define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; useful to check dll version */ LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; useful to check dll version */ /*-************************************ * Tuning parameter **************************************/ /*! * LZ4_MEMORY_USAGE : * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) * Increasing memory usage improves compression ratio. * Reduced memory usage may improve speed, thanks to better cache locality. * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */ #ifndef LZ4_MEMORY_USAGE # define LZ4_MEMORY_USAGE 14 #endif /*-************************************ * Simple Functions **************************************/ /*! LZ4_compress_default() : * Compresses 'srcSize' bytes from buffer 'src' * into already allocated 'dst' buffer of size 'dstCapacity'. * Compression is guaranteed to succeed if 'dstCapacity' >= LZ4_compressBound(srcSize). * It also runs faster, so it's a recommended setting. * If the function cannot compress 'src' into a more limited 'dst' budget, * compression stops *immediately*, and the function result is zero. * In which case, 'dst' content is undefined (invalid). * srcSize : max supported value is LZ4_MAX_INPUT_SIZE. * dstCapacity : size of buffer 'dst' (which must be already allocated) * @return : the number of bytes written into buffer 'dst' (necessarily <= dstCapacity) * or 0 if compression fails * Note : This function is protected against buffer overflow scenarios (never writes outside 'dst' buffer, nor read outside 'source' buffer). */ LZ4LIB_API int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); /*! LZ4_decompress_safe() : * compressedSize : is the exact complete size of the compressed block. * dstCapacity : is the size of destination buffer (which must be already allocated), presumed an upper bound of decompressed size. * @return : the number of bytes decompressed into destination buffer (necessarily <= dstCapacity) * If destination buffer is not large enough, decoding will stop and output an error code (negative value). * If the source stream is detected malformed, the function will stop decoding and return a negative result. * Note 1 : This function is protected against malicious data packets : * it will never writes outside 'dst' buffer, nor read outside 'source' buffer, * even if the compressed block is maliciously modified to order the decoder to do these actions. * In such case, the decoder stops immediately, and considers the compressed block malformed. * Note 2 : compressedSize and dstCapacity must be provided to the function, the compressed block does not contain them. * The implementation is free to send / store / derive this information in whichever way is most beneficial. * If there is a need for a different format which bundles together both compressed data and its metadata, consider looking at lz4frame.h instead. */ LZ4LIB_API int LZ4_decompress_safe (const char* src, char* dst, int compressedSize, int dstCapacity); /*-************************************ * Advanced Functions **************************************/ #define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */ #define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) /*! LZ4_compressBound() : Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible) This function is primarily useful for memory allocation purposes (destination buffer size). Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example). Note that LZ4_compress_default() compresses faster when dstCapacity is >= LZ4_compressBound(srcSize) inputSize : max supported value is LZ4_MAX_INPUT_SIZE return : maximum output size in a "worst case" scenario or 0, if input size is incorrect (too large or negative) */ LZ4LIB_API int LZ4_compressBound(int inputSize); /*! LZ4_compress_fast() : Same as LZ4_compress_default(), but allows selection of "acceleration" factor. The larger the acceleration value, the faster the algorithm, but also the lesser the compression. It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed. An acceleration value of "1" is the same as regular LZ4_compress_default() Values <= 0 will be replaced by LZ4_ACCELERATION_DEFAULT (currently == 1, see lz4.c). Values > LZ4_ACCELERATION_MAX will be replaced by LZ4_ACCELERATION_MAX (currently == 65537, see lz4.c). */ LZ4LIB_API int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_compress_fast_extState() : * Same as LZ4_compress_fast(), using an externally allocated memory space for its state. * Use LZ4_sizeofState() to know how much memory must be allocated, * and allocate it on 8-bytes boundaries (using `malloc()` typically). * Then, provide this buffer as `void* state` to compression function. */ LZ4LIB_API int LZ4_sizeofState(void); LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_compress_destSize() : * Reverse the logic : compresses as much data as possible from 'src' buffer * into already allocated buffer 'dst', of size >= 'targetDestSize'. * This function either compresses the entire 'src' content into 'dst' if it's large enough, * or fill 'dst' buffer completely with as much data as possible from 'src'. * note: acceleration parameter is fixed to "default". * * *srcSizePtr : will be modified to indicate how many bytes where read from 'src' to fill 'dst'. * New value is necessarily <= input value. * @return : Nb bytes written into 'dst' (necessarily <= targetDestSize) * or 0 if compression fails. * * Note : from v1.8.2 to v1.9.1, this function had a bug (fixed un v1.9.2+): * the produced compressed content could, in specific circumstances, * require to be decompressed into a destination buffer larger * by at least 1 byte than the content to decompress. * If an application uses `LZ4_compress_destSize()`, * it's highly recommended to update liblz4 to v1.9.2 or better. * If this can't be done or ensured, * the receiving decompression function should provide * a dstCapacity which is > decompressedSize, by at least 1 byte. * See https://github.com/lz4/lz4/issues/859 for details */ LZ4LIB_API int LZ4_compress_destSize (const char* src, char* dst, int* srcSizePtr, int targetDstSize); /*! LZ4_decompress_safe_partial() : * Decompress an LZ4 compressed block, of size 'srcSize' at position 'src', * into destination buffer 'dst' of size 'dstCapacity'. * Up to 'targetOutputSize' bytes will be decoded. * The function stops decoding on reaching this objective. * This can be useful to boost performance * whenever only the beginning of a block is required. * * @return : the number of bytes decoded in `dst` (necessarily <= targetOutputSize) * If source stream is detected malformed, function returns a negative result. * * Note 1 : @return can be < targetOutputSize, if compressed block contains less data. * * Note 2 : targetOutputSize must be <= dstCapacity * * Note 3 : this function effectively stops decoding on reaching targetOutputSize, * so dstCapacity is kind of redundant. * This is because in older versions of this function, * decoding operation would still write complete sequences. * Therefore, there was no guarantee that it would stop writing at exactly targetOutputSize, * it could write more bytes, though only up to dstCapacity. * Some "margin" used to be required for this operation to work properly. * Thankfully, this is no longer necessary. * The function nonetheless keeps the same signature, in an effort to preserve API compatibility. * * Note 4 : If srcSize is the exact size of the block, * then targetOutputSize can be any value, * including larger than the block's decompressed size. * The function will, at most, generate block's decompressed size. * * Note 5 : If srcSize is _larger_ than block's compressed size, * then targetOutputSize **MUST** be <= block's decompressed size. * Otherwise, *silent corruption will occur*. */ LZ4LIB_API int LZ4_decompress_safe_partial (const char* src, char* dst, int srcSize, int targetOutputSize, int dstCapacity); /*-********************************************* * Streaming Compression Functions ***********************************************/ typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */ LZ4LIB_API LZ4_stream_t* LZ4_createStream(void); LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); /*! LZ4_resetStream_fast() : v1.9.0+ * Use this to prepare an LZ4_stream_t for a new chain of dependent blocks * (e.g., LZ4_compress_fast_continue()). * * An LZ4_stream_t must be initialized once before usage. * This is automatically done when created by LZ4_createStream(). * However, should the LZ4_stream_t be simply declared on stack (for example), * it's necessary to initialize it first, using LZ4_initStream(). * * After init, start any new stream with LZ4_resetStream_fast(). * A same LZ4_stream_t can be re-used multiple times consecutively * and compress multiple streams, * provided that it starts each new stream with LZ4_resetStream_fast(). * * LZ4_resetStream_fast() is much faster than LZ4_initStream(), * but is not compatible with memory regions containing garbage data. * * Note: it's only useful to call LZ4_resetStream_fast() * in the context of streaming compression. * The *extState* functions perform their own resets. * Invoking LZ4_resetStream_fast() before is redundant, and even counterproductive. */ LZ4LIB_API void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); /*! LZ4_loadDict() : * Use this function to reference a static dictionary into LZ4_stream_t. * The dictionary must remain available during compression. * LZ4_loadDict() triggers a reset, so any previous data will be forgotten. * The same dictionary will have to be loaded on decompression side for successful decoding. * Dictionary are useful for better compression of small data (KB range). * While LZ4 accept any input as dictionary, * results are generally better when using Zstandard's Dictionary Builder. * Loading a size of 0 is allowed, and is the same as reset. * @return : loaded dictionary size, in bytes (necessarily <= 64 KB) */ LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); /*! LZ4_compress_fast_continue() : * Compress 'src' content using data from previously compressed blocks, for better compression ratio. * 'dst' buffer must be already allocated. * If dstCapacity >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster. * * @return : size of compressed block * or 0 if there is an error (typically, cannot fit into 'dst'). * * Note 1 : Each invocation to LZ4_compress_fast_continue() generates a new block. * Each block has precise boundaries. * Each block must be decompressed separately, calling LZ4_decompress_*() with relevant metadata. * It's not possible to append blocks together and expect a single invocation of LZ4_decompress_*() to decompress them together. * * Note 2 : The previous 64KB of source data is __assumed__ to remain present, unmodified, at same address in memory ! * * Note 3 : When input is structured as a double-buffer, each buffer can have any size, including < 64 KB. * Make sure that buffers are separated, by at least one byte. * This construction ensures that each block only depends on previous block. * * Note 4 : If input buffer is a ring-buffer, it can have any size, including < 64 KB. * * Note 5 : After an error, the stream status is undefined (invalid), it can only be reset or freed. */ LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_saveDict() : * If last 64KB data cannot be guaranteed to remain available at its current memory location, * save it into a safer place (char* safeBuffer). * This is schematically equivalent to a memcpy() followed by LZ4_loadDict(), * but is much faster, because LZ4_saveDict() doesn't need to rebuild tables. * @return : saved dictionary size in bytes (necessarily <= maxDictSize), or 0 if error. */ LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int maxDictSize); /*-********************************************** * Streaming Decompression Functions * Bufferless synchronous API ************************************************/ typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* tracking context */ /*! LZ4_createStreamDecode() and LZ4_freeStreamDecode() : * creation / destruction of streaming decompression tracking context. * A tracking context can be re-used multiple times. */ LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void); LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); /*! LZ4_setStreamDecode() : * An LZ4_streamDecode_t context can be allocated once and re-used multiple times. * Use this function to start decompression of a new stream of blocks. * A dictionary can optionally be set. Use NULL or size 0 for a reset order. * Dictionary is presumed stable : it must remain accessible and unmodified during next decompression. * @return : 1 if OK, 0 if error */ LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); /*! LZ4_decoderRingBufferSize() : v1.8.2+ * Note : in a ring buffer scenario (optional), * blocks are presumed decompressed next to each other * up to the moment there is not enough remaining space for next block (remainingSize < maxBlockSize), * at which stage it resumes from beginning of ring buffer. * When setting such a ring buffer for streaming decompression, * provides the minimum size of this ring buffer * to be compatible with any source respecting maxBlockSize condition. * @return : minimum ring buffer size, * or 0 if there is an error (invalid maxBlockSize). */ LZ4LIB_API int LZ4_decoderRingBufferSize(int maxBlockSize); #define LZ4_DECODER_RING_BUFFER_SIZE(maxBlockSize) (65536 + 14 + (maxBlockSize)) /* for static allocation; maxBlockSize presumed valid */ /*! LZ4_decompress_*_continue() : * These decoding functions allow decompression of consecutive blocks in "streaming" mode. * A block is an unsplittable entity, it must be presented entirely to a decompression function. * Decompression functions only accepts one block at a time. * The last 64KB of previously decoded data *must* remain available and unmodified at the memory position where they were decoded. * If less than 64KB of data has been decoded, all the data must be present. * * Special : if decompression side sets a ring buffer, it must respect one of the following conditions : * - Decompression buffer size is _at least_ LZ4_decoderRingBufferSize(maxBlockSize). * maxBlockSize is the maximum size of any single block. It can have any value > 16 bytes. * In which case, encoding and decoding buffers do not need to be synchronized. * Actually, data can be produced by any source compliant with LZ4 format specification, and respecting maxBlockSize. * - Synchronized mode : * Decompression buffer size is _exactly_ the same as compression buffer size, * and follows exactly same update rule (block boundaries at same positions), * and decoding function is provided with exact decompressed size of each block (exception for last block of the stream), * _then_ decoding & encoding ring buffer can have any size, including small ones ( < 64 KB). * - Decompression buffer is larger than encoding buffer, by a minimum of maxBlockSize more bytes. * In which case, encoding and decoding buffers do not need to be synchronized, * and encoding ring buffer can have any size, including small ones ( < 64 KB). * * Whenever these conditions are not possible, * save the last 64KB of decoded data into a safe buffer where it can't be modified during decompression, * then indicate where this data is saved using LZ4_setStreamDecode(), before decompressing next block. */ LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int srcSize, int dstCapacity); /*! LZ4_decompress_*_usingDict() : * These decoding functions work the same as * a combination of LZ4_setStreamDecode() followed by LZ4_decompress_*_continue() * They are stand-alone, and don't need an LZ4_streamDecode_t structure. * Dictionary is presumed stable : it must remain accessible and unmodified during decompression. * Performance tip : Decompression speed can be substantially increased * when dst == dictStart + dictSize. */ LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* src, char* dst, int srcSize, int dstCapcity, const char* dictStart, int dictSize); #endif /* LZ4_H_2983827168210 */ /*^************************************* * !!!!!! STATIC LINKING ONLY !!!!!! ***************************************/ /*-**************************************************************************** * Experimental section * * Symbols declared in this section must be considered unstable. Their * signatures or semantics may change, or they may be removed altogether in the * future. They are therefore only safe to depend on when the caller is * statically linked against the library. * * To protect against unsafe usage, not only are the declarations guarded, * the definitions are hidden by default * when building LZ4 as a shared/dynamic library. * * In order to access these declarations, * define LZ4_STATIC_LINKING_ONLY in your application * before including LZ4's headers. * * In order to make their implementations accessible dynamically, you must * define LZ4_PUBLISH_STATIC_FUNCTIONS when building the LZ4 library. ******************************************************************************/ #ifdef LZ4_STATIC_LINKING_ONLY #ifndef LZ4_STATIC_3504398509 #define LZ4_STATIC_3504398509 #ifdef LZ4_PUBLISH_STATIC_FUNCTIONS #define LZ4LIB_STATIC_API LZ4LIB_API #else #define LZ4LIB_STATIC_API #endif /*! LZ4_compress_fast_extState_fastReset() : * A variant of LZ4_compress_fast_extState(). * * Using this variant avoids an expensive initialization step. * It is only safe to call if the state buffer is known to be correctly initialized already * (see above comment on LZ4_resetStream_fast() for a definition of "correctly initialized"). * From a high level, the difference is that * this function initializes the provided state with a call to something like LZ4_resetStream_fast() * while LZ4_compress_fast_extState() starts with a call to LZ4_resetStream(). */ LZ4LIB_STATIC_API int LZ4_compress_fast_extState_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_attach_dictionary() : * This is an experimental API that allows * efficient use of a static dictionary many times. * * Rather than re-loading the dictionary buffer into a working context before * each compression, or copying a pre-loaded dictionary's LZ4_stream_t into a * working LZ4_stream_t, this function introduces a no-copy setup mechanism, * in which the working stream references the dictionary stream in-place. * * Several assumptions are made about the state of the dictionary stream. * Currently, only streams which have been prepared by LZ4_loadDict() should * be expected to work. * * Alternatively, the provided dictionaryStream may be NULL, * in which case any existing dictionary stream is unset. * * If a dictionary is provided, it replaces any pre-existing stream history. * The dictionary contents are the only history that can be referenced and * logically immediately precede the data compressed in the first subsequent * compression call. * * The dictionary will only remain attached to the working stream through the * first compression call, at the end of which it is cleared. The dictionary * stream (and source buffer) must remain in-place / accessible / unchanged * through the completion of the first compression call on the stream. */ LZ4LIB_STATIC_API void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream); /*! In-place compression and decompression * * It's possible to have input and output sharing the same buffer, * for highly contrained memory environments. * In both cases, it requires input to lay at the end of the buffer, * and decompression to start at beginning of the buffer. * Buffer size must feature some margin, hence be larger than final size. * * |<------------------------buffer--------------------------------->| * |<-----------compressed data--------->| * |<-----------decompressed size------------------>| * |<----margin---->| * * This technique is more useful for decompression, * since decompressed size is typically larger, * and margin is short. * * In-place decompression will work inside any buffer * which size is >= LZ4_DECOMPRESS_INPLACE_BUFFER_SIZE(decompressedSize). * This presumes that decompressedSize > compressedSize. * Otherwise, it means compression actually expanded data, * and it would be more efficient to store such data with a flag indicating it's not compressed. * This can happen when data is not compressible (already compressed, or encrypted). * * For in-place compression, margin is larger, as it must be able to cope with both * history preservation, requiring input data to remain unmodified up to LZ4_DISTANCE_MAX, * and data expansion, which can happen when input is not compressible. * As a consequence, buffer size requirements are much higher, * and memory savings offered by in-place compression are more limited. * * There are ways to limit this cost for compression : * - Reduce history size, by modifying LZ4_DISTANCE_MAX. * Note that it is a compile-time constant, so all compressions will apply this limit. * Lower values will reduce compression ratio, except when input_size < LZ4_DISTANCE_MAX, * so it's a reasonable trick when inputs are known to be small. * - Require the compressor to deliver a "maximum compressed size". * This is the `dstCapacity` parameter in `LZ4_compress*()`. * When this size is < LZ4_COMPRESSBOUND(inputSize), then compression can fail, * in which case, the return code will be 0 (zero). * The caller must be ready for these cases to happen, * and typically design a backup scheme to send data uncompressed. * The combination of both techniques can significantly reduce * the amount of margin required for in-place compression. * * In-place compression can work in any buffer * which size is >= (maxCompressedSize) * with maxCompressedSize == LZ4_COMPRESSBOUND(srcSize) for guaranteed compression success. * LZ4_COMPRESS_INPLACE_BUFFER_SIZE() depends on both maxCompressedSize and LZ4_DISTANCE_MAX, * so it's possible to reduce memory requirements by playing with them. */ #define LZ4_DECOMPRESS_INPLACE_MARGIN(compressedSize) (((compressedSize) >> 8) + 32) #define LZ4_DECOMPRESS_INPLACE_BUFFER_SIZE(decompressedSize) ((decompressedSize) + LZ4_DECOMPRESS_INPLACE_MARGIN(decompressedSize)) /**< note: presumes that compressedSize < decompressedSize. note2: margin is overestimated a bit, since it could use compressedSize instead */ #ifndef LZ4_DISTANCE_MAX /* history window size; can be user-defined at compile time */ # define LZ4_DISTANCE_MAX 65535 /* set to maximum value by default */ #endif #define LZ4_COMPRESS_INPLACE_MARGIN (LZ4_DISTANCE_MAX + 32) /* LZ4_DISTANCE_MAX can be safely replaced by srcSize when it's smaller */ #define LZ4_COMPRESS_INPLACE_BUFFER_SIZE(maxCompressedSize) ((maxCompressedSize) + LZ4_COMPRESS_INPLACE_MARGIN) /**< maxCompressedSize is generally LZ4_COMPRESSBOUND(inputSize), but can be set to any lower value, with the risk that compression can fail (return code 0(zero)) */ #endif /* LZ4_STATIC_3504398509 */ #endif /* LZ4_STATIC_LINKING_ONLY */ #ifndef LZ4_H_98237428734687 #define LZ4_H_98237428734687 /*-************************************************************ * Private Definitions ************************************************************** * Do not use these definitions directly. * They are only exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`. * Accessing members will expose user code to API and/or ABI break in future versions of the library. **************************************************************/ #define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) #define LZ4_HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) #define LZ4_HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */ #if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) # include typedef int8_t LZ4_i8; typedef uint8_t LZ4_byte; typedef uint16_t LZ4_u16; typedef uint32_t LZ4_u32; #else typedef signed char LZ4_i8; typedef unsigned char LZ4_byte; typedef unsigned short LZ4_u16; typedef unsigned int LZ4_u32; #endif typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; struct LZ4_stream_t_internal { LZ4_u32 hashTable[LZ4_HASH_SIZE_U32]; LZ4_u32 currentOffset; LZ4_u32 tableType; const LZ4_byte* dictionary; const LZ4_stream_t_internal* dictCtx; LZ4_u32 dictSize; }; typedef struct { const LZ4_byte* externalDict; size_t extDictSize; const LZ4_byte* prefixEnd; size_t prefixSize; } LZ4_streamDecode_t_internal; /*! LZ4_stream_t : * Do not use below internal definitions directly ! * Declare or allocate an LZ4_stream_t instead. * LZ4_stream_t can also be created using LZ4_createStream(), which is recommended. * The structure definition can be convenient for static allocation * (on stack, or as part of larger structure). * Init this structure with LZ4_initStream() before first use. * note : only use this definition in association with static linking ! * this definition is not API/ABI safe, and may change in future versions. */ #define LZ4_STREAMSIZE 16416 /* static size, for inter-version compatibility */ #define LZ4_STREAMSIZE_VOIDP (LZ4_STREAMSIZE / sizeof(void*)) union LZ4_stream_u { void* table[LZ4_STREAMSIZE_VOIDP]; LZ4_stream_t_internal internal_donotuse; }; /* previously typedef'd to LZ4_stream_t */ /*! LZ4_initStream() : v1.9.0+ * An LZ4_stream_t structure must be initialized at least once. * This is automatically done when invoking LZ4_createStream(), * but it's not when the structure is simply declared on stack (for example). * * Use LZ4_initStream() to properly initialize a newly declared LZ4_stream_t. * It can also initialize any arbitrary buffer of sufficient size, * and will @return a pointer of proper type upon initialization. * * Note : initialization fails if size and alignment conditions are not respected. * In which case, the function will @return NULL. * Note2: An LZ4_stream_t structure guarantees correct alignment and size. * Note3: Before v1.9.0, use LZ4_resetStream() instead */ LZ4LIB_API LZ4_stream_t* LZ4_initStream (void* buffer, size_t size); /*! LZ4_streamDecode_t : * information structure to track an LZ4 stream during decompression. * init this structure using LZ4_setStreamDecode() before first use. * note : only use in association with static linking ! * this definition is not API/ABI safe, * and may change in a future version ! */ #define LZ4_STREAMDECODESIZE_U64 (4 + ((sizeof(void*)==16) ? 2 : 0) /*AS-400*/ ) #define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long)) union LZ4_streamDecode_u { unsigned long long table[LZ4_STREAMDECODESIZE_U64]; LZ4_streamDecode_t_internal internal_donotuse; } ; /* previously typedef'd to LZ4_streamDecode_t */ /*-************************************ * Obsolete Functions **************************************/ /*! Deprecation warnings * * Deprecated functions make the compiler generate a warning when invoked. * This is meant to invite users to update their source code. * Should deprecation warnings be a problem, it is generally possible to disable them, * typically with -Wno-deprecated-declarations for gcc * or _CRT_SECURE_NO_WARNINGS in Visual. * * Another method is to define LZ4_DISABLE_DEPRECATE_WARNINGS * before including the header file. */ #ifdef LZ4_DISABLE_DEPRECATE_WARNINGS # define LZ4_DEPRECATED(message) /* disable deprecation warnings */ #else # if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ # define LZ4_DEPRECATED(message) [[deprecated(message)]] # elif defined(_MSC_VER) # define LZ4_DEPRECATED(message) __declspec(deprecated(message)) # elif defined(__clang__) || (defined(__GNUC__) && (__GNUC__ * 10 + __GNUC_MINOR__ >= 45)) # define LZ4_DEPRECATED(message) __attribute__((deprecated(message))) # elif defined(__GNUC__) && (__GNUC__ * 10 + __GNUC_MINOR__ >= 31) # define LZ4_DEPRECATED(message) __attribute__((deprecated)) # else # pragma message("WARNING: LZ4_DEPRECATED needs custom implementation for this compiler") # define LZ4_DEPRECATED(message) /* disabled */ # endif #endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */ /*! Obsolete compression functions (since v1.7.3) */ LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress (const char* src, char* dest, int srcSize); LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress_limitedOutput (const char* src, char* dest, int srcSize, int maxOutputSize); LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); /*! Obsolete decompression functions (since v1.8.0) */ LZ4_DEPRECATED("use LZ4_decompress_fast() instead") LZ4LIB_API int LZ4_uncompress (const char* source, char* dest, int outputSize); LZ4_DEPRECATED("use LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); /* Obsolete streaming functions (since v1.7.0) * degraded functionality; do not use! * * In order to perform streaming compression, these functions depended on data * that is no longer tracked in the state. They have been preserved as well as * possible: using them will still produce a correct output. However, they don't * actually retain any history between compression calls. The compression ratio * achieved will therefore be no better than compressing each chunk * independently. */ LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API void* LZ4_create (char* inputBuffer); LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API int LZ4_sizeofStreamState(void); LZ4_DEPRECATED("Use LZ4_resetStream() instead") LZ4LIB_API int LZ4_resetStreamState(void* state, char* inputBuffer); LZ4_DEPRECATED("Use LZ4_saveDict() instead") LZ4LIB_API char* LZ4_slideInputBuffer (void* state); /*! Obsolete streaming decoding functions (since v1.7.0) */ LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") LZ4LIB_API int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") LZ4LIB_API int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); /*! Obsolete LZ4_decompress_fast variants (since v1.9.0) : * These functions used to be faster than LZ4_decompress_safe(), * but this is no longer the case. They are now slower. * This is because LZ4_decompress_fast() doesn't know the input size, * and therefore must progress more cautiously into the input buffer to not read beyond the end of block. * On top of that `LZ4_decompress_fast()` is not protected vs malformed or malicious inputs, making it a security liability. * As a consequence, LZ4_decompress_fast() is strongly discouraged, and deprecated. * * The last remaining LZ4_decompress_fast() specificity is that * it can decompress a block without knowing its compressed size. * Such functionality can be achieved in a more secure manner * by employing LZ4_decompress_safe_partial(). * * Parameters: * originalSize : is the uncompressed size to regenerate. * `dst` must be already allocated, its size must be >= 'originalSize' bytes. * @return : number of bytes read from source buffer (== compressed size). * The function expects to finish at block's end exactly. * If the source stream is detected malformed, the function stops decoding and returns a negative result. * note : LZ4_decompress_fast*() requires originalSize. Thanks to this information, it never writes past the output buffer. * However, since it doesn't know its 'src' size, it may read an unknown amount of input, past input buffer bounds. * Also, since match offsets are not validated, match reads from 'src' may underflow too. * These issues never happen if input (compressed) data is correct. * But they may happen if input data is invalid (error or intentional tampering). * As a consequence, use these functions in trusted environments with trusted data **only**. */ LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_decompress_fast (const char* src, char* dst, int originalSize); LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_continue() instead") LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int originalSize); LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_usingDict() instead") LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* src, char* dst, int originalSize, const char* dictStart, int dictSize); /*! LZ4_resetStream() : * An LZ4_stream_t structure must be initialized at least once. * This is done with LZ4_initStream(), or LZ4_resetStream(). * Consider switching to LZ4_initStream(), * invoking LZ4_resetStream() will trigger deprecation warnings in the future. */ LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr); #endif /* LZ4_H_98237428734687 */ #if defined (__cplusplus) } #endif grcompiler-5.2.1/compiler/LZ4/lz4hc.c000066400000000000000000002066221411153030700173000ustar00rootroot00000000000000/* LZ4 HC - High Compression Mode of LZ4 Copyright (C) 2011-2017, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. You can contact the author at : - LZ4 source repository : https://github.com/lz4/lz4 - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c */ /* note : lz4hc is not an independent module, it requires lz4.h/lz4.c for proper compilation */ /* ************************************* * Tuning Parameter ***************************************/ /*! HEAPMODE : * Select how default compression function will allocate workplace memory, * in stack (0:fastest), or in heap (1:requires malloc()). * Since workplace is rather large, heap mode is recommended. */ #ifndef LZ4HC_HEAPMODE # define LZ4HC_HEAPMODE 1 #endif /*=== Dependency ===*/ #define LZ4_HC_STATIC_LINKING_ONLY #include "lz4hc.h" /*=== Common definitions ===*/ #if defined(__GNUC__) # pragma GCC diagnostic ignored "-Wunused-function" #endif #if defined (__clang__) # pragma clang diagnostic ignored "-Wunused-function" #endif #define LZ4_COMMONDEFS_ONLY #ifndef LZ4_SRC_INCLUDED #include "lz4.c" /* LZ4_count, constants, mem */ #endif /*=== Enums ===*/ typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive; /*=== Constants ===*/ #define OPTIMAL_ML (int)((ML_MASK-1)+MINMATCH) #define LZ4_OPT_NUM (1<<12) /*=== Macros ===*/ #define MIN(a,b) ( (a) < (b) ? (a) : (b) ) #define MAX(a,b) ( (a) > (b) ? (a) : (b) ) #define HASH_FUNCTION(i) (((i) * 2654435761U) >> ((MINMATCH*8)-LZ4HC_HASH_LOG)) #define DELTANEXTMAXD(p) chainTable[(p) & LZ4HC_MAXD_MASK] /* flexible, LZ4HC_MAXD dependent */ #define DELTANEXTU16(table, pos) table[(U16)(pos)] /* faster */ /* Make fields passed to, and updated by LZ4HC_encodeSequence explicit */ #define UPDATABLE(ip, op, anchor) &ip, &op, &anchor static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); } /************************************** * HC Compression **************************************/ static void LZ4HC_clearTables (LZ4HC_CCtx_internal* hc4) { MEM_INIT(hc4->hashTable, 0, sizeof(hc4->hashTable)); MEM_INIT(hc4->chainTable, 0xFF, sizeof(hc4->chainTable)); } static void LZ4HC_init_internal (LZ4HC_CCtx_internal* hc4, const BYTE* start) { uptrval startingOffset = (uptrval)(hc4->end - hc4->base); if (startingOffset > 1 GB) { LZ4HC_clearTables(hc4); startingOffset = 0; } startingOffset += 64 KB; hc4->nextToUpdate = (U32) startingOffset; hc4->base = start - startingOffset; hc4->end = start; hc4->dictBase = start - startingOffset; hc4->dictLimit = (U32) startingOffset; hc4->lowLimit = (U32) startingOffset; } /* Update chains up to ip (excluded) */ LZ4_FORCE_INLINE void LZ4HC_Insert (LZ4HC_CCtx_internal* hc4, const BYTE* ip) { U16* const chainTable = hc4->chainTable; U32* const hashTable = hc4->hashTable; const BYTE* const base = hc4->base; U32 const target = (U32)(ip - base); U32 idx = hc4->nextToUpdate; while (idx < target) { U32 const h = LZ4HC_hashPtr(base+idx); size_t delta = idx - hashTable[h]; if (delta>LZ4_DISTANCE_MAX) delta = LZ4_DISTANCE_MAX; DELTANEXTU16(chainTable, idx) = (U16)delta; hashTable[h] = idx; idx++; } hc4->nextToUpdate = target; } /** LZ4HC_countBack() : * @return : negative value, nb of common bytes before ip/match */ LZ4_FORCE_INLINE int LZ4HC_countBack(const BYTE* const ip, const BYTE* const match, const BYTE* const iMin, const BYTE* const mMin) { int back = 0; int const min = (int)MAX(iMin - ip, mMin - match); assert(min <= 0); assert(ip >= iMin); assert((size_t)(ip-iMin) < (1U<<31)); assert(match >= mMin); assert((size_t)(match - mMin) < (1U<<31)); while ( (back > min) && (ip[back-1] == match[back-1]) ) back--; return back; } #if defined(_MSC_VER) # define LZ4HC_rotl32(x,r) _rotl(x,r) #else # define LZ4HC_rotl32(x,r) ((x << r) | (x >> (32 - r))) #endif static U32 LZ4HC_rotatePattern(size_t const rotate, U32 const pattern) { size_t const bitsToRotate = (rotate & (sizeof(pattern) - 1)) << 3; if (bitsToRotate == 0) return pattern; return LZ4HC_rotl32(pattern, (int)bitsToRotate); } /* LZ4HC_countPattern() : * pattern32 must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) */ static unsigned LZ4HC_countPattern(const BYTE* ip, const BYTE* const iEnd, U32 const pattern32) { const BYTE* const iStart = ip; reg_t const pattern = (sizeof(pattern)==8) ? (reg_t)pattern32 + (((reg_t)pattern32) << (sizeof(pattern)*4)) : pattern32; while (likely(ip < iEnd-(sizeof(pattern)-1))) { reg_t const diff = LZ4_read_ARCH(ip) ^ pattern; if (!diff) { ip+=sizeof(pattern); continue; } ip += LZ4_NbCommonBytes(diff); return (unsigned)(ip - iStart); } if (LZ4_isLittleEndian()) { reg_t patternByte = pattern; while ((ip>= 8; } } else { /* big endian */ U32 bitOffset = (sizeof(pattern)*8) - 8; while (ip < iEnd) { BYTE const byte = (BYTE)(pattern >> bitOffset); if (*ip != byte) break; ip ++; bitOffset -= 8; } } return (unsigned)(ip - iStart); } /* LZ4HC_reverseCountPattern() : * pattern must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) * read using natural platform endianess */ static unsigned LZ4HC_reverseCountPattern(const BYTE* ip, const BYTE* const iLow, U32 pattern) { const BYTE* const iStart = ip; while (likely(ip >= iLow+4)) { if (LZ4_read32(ip-4) != pattern) break; ip -= 4; } { const BYTE* bytePtr = (const BYTE*)(&pattern) + 3; /* works for any endianess */ while (likely(ip>iLow)) { if (ip[-1] != *bytePtr) break; ip--; bytePtr--; } } return (unsigned)(iStart - ip); } /* LZ4HC_protectDictEnd() : * Checks if the match is in the last 3 bytes of the dictionary, so reading the * 4 byte MINMATCH would overflow. * @returns true if the match index is okay. */ static int LZ4HC_protectDictEnd(U32 const dictLimit, U32 const matchIndex) { return ((U32)((dictLimit - 1) - matchIndex) >= 3); } typedef enum { rep_untested, rep_not, rep_confirmed } repeat_state_e; typedef enum { favorCompressionRatio=0, favorDecompressionSpeed } HCfavor_e; LZ4_FORCE_INLINE int LZ4HC_InsertAndGetWiderMatch ( LZ4HC_CCtx_internal* hc4, const BYTE* const ip, const BYTE* const iLowLimit, const BYTE* const iHighLimit, int longest, const BYTE** matchpos, const BYTE** startpos, const int maxNbAttempts, const int patternAnalysis, const int chainSwap, const dictCtx_directive dict, const HCfavor_e favorDecSpeed) { U16* const chainTable = hc4->chainTable; U32* const HashTable = hc4->hashTable; const LZ4HC_CCtx_internal * const dictCtx = hc4->dictCtx; const BYTE* const base = hc4->base; const U32 dictLimit = hc4->dictLimit; const BYTE* const lowPrefixPtr = base + dictLimit; const U32 ipIndex = (U32)(ip - base); const U32 lowestMatchIndex = (hc4->lowLimit + (LZ4_DISTANCE_MAX + 1) > ipIndex) ? hc4->lowLimit : ipIndex - LZ4_DISTANCE_MAX; const BYTE* const dictBase = hc4->dictBase; int const lookBackLength = (int)(ip-iLowLimit); int nbAttempts = maxNbAttempts; U32 matchChainPos = 0; U32 const pattern = LZ4_read32(ip); U32 matchIndex; repeat_state_e repeat = rep_untested; size_t srcPatternLength = 0; DEBUGLOG(7, "LZ4HC_InsertAndGetWiderMatch"); /* First Match */ LZ4HC_Insert(hc4, ip); matchIndex = HashTable[LZ4HC_hashPtr(ip)]; DEBUGLOG(7, "First match at index %u / %u (lowestMatchIndex)", matchIndex, lowestMatchIndex); while ((matchIndex>=lowestMatchIndex) && (nbAttempts>0)) { int matchLength=0; nbAttempts--; assert(matchIndex < ipIndex); if (favorDecSpeed && (ipIndex - matchIndex < 8)) { /* do nothing */ } else if (matchIndex >= dictLimit) { /* within current Prefix */ const BYTE* const matchPtr = base + matchIndex; assert(matchPtr >= lowPrefixPtr); assert(matchPtr < ip); assert(longest >= 1); if (LZ4_read16(iLowLimit + longest - 1) == LZ4_read16(matchPtr - lookBackLength + longest - 1)) { if (LZ4_read32(matchPtr) == pattern) { int const back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, lowPrefixPtr) : 0; matchLength = MINMATCH + (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit); matchLength -= back; if (matchLength > longest) { longest = matchLength; *matchpos = matchPtr + back; *startpos = ip + back; } } } } else { /* lowestMatchIndex <= matchIndex < dictLimit */ const BYTE* const matchPtr = dictBase + matchIndex; if (LZ4_read32(matchPtr) == pattern) { const BYTE* const dictStart = dictBase + hc4->lowLimit; int back = 0; const BYTE* vLimit = ip + (dictLimit - matchIndex); if (vLimit > iHighLimit) vLimit = iHighLimit; matchLength = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; if ((ip+matchLength == vLimit) && (vLimit < iHighLimit)) matchLength += LZ4_count(ip+matchLength, lowPrefixPtr, iHighLimit); back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictStart) : 0; matchLength -= back; if (matchLength > longest) { longest = matchLength; *matchpos = base + matchIndex + back; /* virtual pos, relative to ip, to retrieve offset */ *startpos = ip + back; } } } if (chainSwap && matchLength==longest) { /* better match => select a better chain */ assert(lookBackLength==0); /* search forward only */ if (matchIndex + (U32)longest <= ipIndex) { int const kTrigger = 4; U32 distanceToNextMatch = 1; int const end = longest - MINMATCH + 1; int step = 1; int accel = 1 << kTrigger; int pos; for (pos = 0; pos < end; pos += step) { U32 const candidateDist = DELTANEXTU16(chainTable, matchIndex + (U32)pos); step = (accel++ >> kTrigger); if (candidateDist > distanceToNextMatch) { distanceToNextMatch = candidateDist; matchChainPos = (U32)pos; accel = 1 << kTrigger; } } if (distanceToNextMatch > 1) { if (distanceToNextMatch > matchIndex) break; /* avoid overflow */ matchIndex -= distanceToNextMatch; continue; } } } { U32 const distNextMatch = DELTANEXTU16(chainTable, matchIndex); if (patternAnalysis && distNextMatch==1 && matchChainPos==0) { U32 const matchCandidateIdx = matchIndex-1; /* may be a repeated pattern */ if (repeat == rep_untested) { if ( ((pattern & 0xFFFF) == (pattern >> 16)) & ((pattern & 0xFF) == (pattern >> 24)) ) { repeat = rep_confirmed; srcPatternLength = LZ4HC_countPattern(ip+sizeof(pattern), iHighLimit, pattern) + sizeof(pattern); } else { repeat = rep_not; } } if ( (repeat == rep_confirmed) && (matchCandidateIdx >= lowestMatchIndex) && LZ4HC_protectDictEnd(dictLimit, matchCandidateIdx) ) { const int extDict = matchCandidateIdx < dictLimit; const BYTE* const matchPtr = (extDict ? dictBase : base) + matchCandidateIdx; if (LZ4_read32(matchPtr) == pattern) { /* good candidate */ const BYTE* const dictStart = dictBase + hc4->lowLimit; const BYTE* const iLimit = extDict ? dictBase + dictLimit : iHighLimit; size_t forwardPatternLength = LZ4HC_countPattern(matchPtr+sizeof(pattern), iLimit, pattern) + sizeof(pattern); if (extDict && matchPtr + forwardPatternLength == iLimit) { U32 const rotatedPattern = LZ4HC_rotatePattern(forwardPatternLength, pattern); forwardPatternLength += LZ4HC_countPattern(lowPrefixPtr, iHighLimit, rotatedPattern); } { const BYTE* const lowestMatchPtr = extDict ? dictStart : lowPrefixPtr; size_t backLength = LZ4HC_reverseCountPattern(matchPtr, lowestMatchPtr, pattern); size_t currentSegmentLength; if (!extDict && matchPtr - backLength == lowPrefixPtr && hc4->lowLimit < dictLimit) { U32 const rotatedPattern = LZ4HC_rotatePattern((U32)(-(int)backLength), pattern); backLength += LZ4HC_reverseCountPattern(dictBase + dictLimit, dictStart, rotatedPattern); } /* Limit backLength not go further than lowestMatchIndex */ backLength = matchCandidateIdx - MAX(matchCandidateIdx - (U32)backLength, lowestMatchIndex); assert(matchCandidateIdx - backLength >= lowestMatchIndex); currentSegmentLength = backLength + forwardPatternLength; /* Adjust to end of pattern if the source pattern fits, otherwise the beginning of the pattern */ if ( (currentSegmentLength >= srcPatternLength) /* current pattern segment large enough to contain full srcPatternLength */ && (forwardPatternLength <= srcPatternLength) ) { /* haven't reached this position yet */ U32 const newMatchIndex = matchCandidateIdx + (U32)forwardPatternLength - (U32)srcPatternLength; /* best position, full pattern, might be followed by more match */ if (LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) matchIndex = newMatchIndex; else { /* Can only happen if started in the prefix */ assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); matchIndex = dictLimit; } } else { U32 const newMatchIndex = matchCandidateIdx - (U32)backLength; /* farthest position in current segment, will find a match of length currentSegmentLength + maybe some back */ if (!LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) { assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); matchIndex = dictLimit; } else { matchIndex = newMatchIndex; if (lookBackLength==0) { /* no back possible */ size_t const maxML = MIN(currentSegmentLength, srcPatternLength); if ((size_t)longest < maxML) { assert(base + matchIndex != ip); if ((size_t)(ip - base) - matchIndex > LZ4_DISTANCE_MAX) break; assert(maxML < 2 GB); longest = (int)maxML; *matchpos = base + matchIndex; /* virtual pos, relative to ip, to retrieve offset */ *startpos = ip; } { U32 const distToNextPattern = DELTANEXTU16(chainTable, matchIndex); if (distToNextPattern > matchIndex) break; /* avoid overflow */ matchIndex -= distToNextPattern; } } } } } continue; } } } } /* PA optimization */ /* follow current chain */ matchIndex -= DELTANEXTU16(chainTable, matchIndex + matchChainPos); } /* while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) */ if ( dict == usingDictCtxHc && nbAttempts > 0 && ipIndex - lowestMatchIndex < LZ4_DISTANCE_MAX) { size_t const dictEndOffset = (size_t)(dictCtx->end - dictCtx->base); U32 dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)]; assert(dictEndOffset <= 1 GB); matchIndex = dictMatchIndex + lowestMatchIndex - (U32)dictEndOffset; while (ipIndex - matchIndex <= LZ4_DISTANCE_MAX && nbAttempts--) { const BYTE* const matchPtr = dictCtx->base + dictMatchIndex; if (LZ4_read32(matchPtr) == pattern) { int mlt; int back = 0; const BYTE* vLimit = ip + (dictEndOffset - dictMatchIndex); if (vLimit > iHighLimit) vLimit = iHighLimit; mlt = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictCtx->base + dictCtx->dictLimit) : 0; mlt -= back; if (mlt > longest) { longest = mlt; *matchpos = base + matchIndex + back; *startpos = ip + back; } } { U32 const nextOffset = DELTANEXTU16(dictCtx->chainTable, dictMatchIndex); dictMatchIndex -= nextOffset; matchIndex -= nextOffset; } } } return longest; } LZ4_FORCE_INLINE int LZ4HC_InsertAndFindBestMatch(LZ4HC_CCtx_internal* const hc4, /* Index table will be updated */ const BYTE* const ip, const BYTE* const iLimit, const BYTE** matchpos, const int maxNbAttempts, const int patternAnalysis, const dictCtx_directive dict) { const BYTE* uselessPtr = ip; /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), * but this won't be the case here, as we define iLowLimit==ip, * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH-1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio); } /* LZ4HC_encodeSequence() : * @return : 0 if ok, * 1 if buffer issue detected */ LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( const BYTE** _ip, BYTE** _op, const BYTE** _anchor, int matchLength, const BYTE* const match, limitedOutput_directive limit, BYTE* oend) { #define ip (*_ip) #define op (*_op) #define anchor (*_anchor) size_t length; BYTE* const token = op++; #if defined(LZ4_DEBUG) && (LZ4_DEBUG >= 6) static const BYTE* start = NULL; static U32 totalCost = 0; U32 const pos = (start==NULL) ? 0 : (U32)(anchor - start); U32 const ll = (U32)(ip - anchor); U32 const llAdd = (ll>=15) ? ((ll-15) / 255) + 1 : 0; U32 const mlAdd = (matchLength>=19) ? ((matchLength-19) / 255) + 1 : 0; U32 const cost = 1 + llAdd + ll + 2 + mlAdd; if (start==NULL) start = anchor; /* only works for single segment */ /* g_debuglog_enable = (pos >= 2228) & (pos <= 2262); */ DEBUGLOG(6, "pos:%7u -- literals:%4u, match:%4i, offset:%5u, cost:%4u + %5u", pos, (U32)(ip - anchor), matchLength, (U32)(ip-match), cost, totalCost); totalCost += cost; #endif /* Encode Literal length */ length = (size_t)(ip - anchor); LZ4_STATIC_ASSERT(notLimited == 0); /* Check output limit */ if (limit && ((op + (length / 255) + length + (2 + 1 + LASTLITERALS)) > oend)) { DEBUGLOG(6, "Not enough room to write %i literals (%i bytes remaining)", (int)length, (int)(oend - op)); return 1; } if (length >= RUN_MASK) { size_t len = length - RUN_MASK; *token = (RUN_MASK << ML_BITS); for(; len >= 255 ; len -= 255) *op++ = 255; *op++ = (BYTE)len; } else { *token = (BYTE)(length << ML_BITS); } /* Copy Literals */ LZ4_wildCopy8(op, anchor, op + length); op += length; /* Encode Offset */ assert( (ip - match) <= LZ4_DISTANCE_MAX ); /* note : consider providing offset as a value, rather than as a pointer difference */ LZ4_writeLE16(op, (U16)(ip - match)); op += 2; /* Encode MatchLength */ assert(matchLength >= MINMATCH); length = (size_t)matchLength - MINMATCH; if (limit && (op + (length / 255) + (1 + LASTLITERALS) > oend)) { DEBUGLOG(6, "Not enough room to write match length"); return 1; /* Check output limit */ } if (length >= ML_MASK) { *token += ML_MASK; length -= ML_MASK; for(; length >= 510 ; length -= 510) { *op++ = 255; *op++ = 255; } if (length >= 255) { length -= 255; *op++ = 255; } *op++ = (BYTE)length; } else { *token += (BYTE)(length); } /* Prepare next loop */ ip += matchLength; anchor = ip; return 0; } #undef ip #undef op #undef anchor LZ4_FORCE_INLINE int LZ4HC_compress_hashChain ( LZ4HC_CCtx_internal* const ctx, const char* const source, char* const dest, int* srcSizePtr, int const maxOutputSize, int maxNbAttempts, const limitedOutput_directive limit, const dictCtx_directive dict ) { const int inputSize = *srcSizePtr; const int patternAnalysis = (maxNbAttempts > 128); /* levels 9+ */ const BYTE* ip = (const BYTE*) source; const BYTE* anchor = ip; const BYTE* const iend = ip + inputSize; const BYTE* const mflimit = iend - MFLIMIT; const BYTE* const matchlimit = (iend - LASTLITERALS); BYTE* optr = (BYTE*) dest; BYTE* op = (BYTE*) dest; BYTE* oend = op + maxOutputSize; int ml0, ml, ml2, ml3; const BYTE* start0; const BYTE* ref0; const BYTE* ref = NULL; const BYTE* start2 = NULL; const BYTE* ref2 = NULL; const BYTE* start3 = NULL; const BYTE* ref3 = NULL; /* init */ *srcSizePtr = 0; if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ /* Main Loop */ while (ip <= mflimit) { ml = LZ4HC_InsertAndFindBestMatch(ctx, ip, matchlimit, &ref, maxNbAttempts, patternAnalysis, dict); if (ml encode ML1 */ optr = op; if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; continue; } if (start0 < ip) { /* first match was skipped at least once */ if (start2 < ip + ml0) { /* squeezing ML1 between ML0(original ML1) and ML2 */ ip = start0; ref = ref0; ml = ml0; /* restore initial ML1 */ } } /* Here, start0==ip */ if ((start2 - ip) < 3) { /* First Match too small : removed */ ml = ml2; ip = start2; ref =ref2; goto _Search2; } _Search3: /* At this stage, we have : * ml2 > ml1, and * ip1+3 <= ip2 (usually < ip1+ml1) */ if ((start2 - ip) < OPTIMAL_ML) { int correction; int new_ml = ml; if (new_ml > OPTIMAL_ML) new_ml = OPTIMAL_ML; if (ip+new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH; correction = new_ml - (int)(start2 - ip); if (correction > 0) { start2 += correction; ref2 += correction; ml2 -= correction; } } /* Now, we have start2 = ip+new_ml, with new_ml = min(ml, OPTIMAL_ML=18) */ if (start2 + ml2 <= mflimit) { ml3 = LZ4HC_InsertAndGetWiderMatch(ctx, start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); } else { ml3 = ml2; } if (ml3 == ml2) { /* No better match => encode ML1 and ML2 */ /* ip & ref are known; Now for ml */ if (start2 < ip+ml) ml = (int)(start2 - ip); /* Now, encode 2 sequences */ optr = op; if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; ip = start2; optr = op; if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml2, ref2, limit, oend)) { ml = ml2; ref = ref2; goto _dest_overflow; } continue; } if (start3 < ip+ml+3) { /* Not enough space for match 2 : remove it */ if (start3 >= (ip+ml)) { /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */ if (start2 < ip+ml) { int correction = (int)(ip+ml - start2); start2 += correction; ref2 += correction; ml2 -= correction; if (ml2 < MINMATCH) { start2 = start3; ref2 = ref3; ml2 = ml3; } } optr = op; if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; ip = start3; ref = ref3; ml = ml3; start0 = start2; ref0 = ref2; ml0 = ml2; goto _Search2; } start2 = start3; ref2 = ref3; ml2 = ml3; goto _Search3; } /* * OK, now we have 3 ascending matches; * let's write the first one ML1. * ip & ref are known; Now decide ml. */ if (start2 < ip+ml) { if ((start2 - ip) < OPTIMAL_ML) { int correction; if (ml > OPTIMAL_ML) ml = OPTIMAL_ML; if (ip + ml > start2 + ml2 - MINMATCH) ml = (int)(start2 - ip) + ml2 - MINMATCH; correction = ml - (int)(start2 - ip); if (correction > 0) { start2 += correction; ref2 += correction; ml2 -= correction; } } else { ml = (int)(start2 - ip); } } optr = op; if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; /* ML2 becomes ML1 */ ip = start2; ref = ref2; ml = ml2; /* ML3 becomes ML2 */ start2 = start3; ref2 = ref3; ml2 = ml3; /* let's find a new ML3 */ goto _Search3; } _last_literals: /* Encode Last Literals */ { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ size_t llAdd = (lastRunSize + 255 - RUN_MASK) / 255; size_t const totalSize = 1 + llAdd + lastRunSize; if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ if (limit && (op + totalSize > oend)) { if (limit == limitedOutput) return 0; /* adapt lastRunSize to fill 'dest' */ lastRunSize = (size_t)(oend - op) - 1 /*token*/; llAdd = (lastRunSize + 256 - RUN_MASK) / 256; lastRunSize -= llAdd; } DEBUGLOG(6, "Final literal run : %i literals", (int)lastRunSize); ip = anchor + lastRunSize; /* can be != iend if limit==fillOutput */ if (lastRunSize >= RUN_MASK) { size_t accumulator = lastRunSize - RUN_MASK; *op++ = (RUN_MASK << ML_BITS); for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; *op++ = (BYTE) accumulator; } else { *op++ = (BYTE)(lastRunSize << ML_BITS); } memcpy(op, anchor, lastRunSize); op += lastRunSize; } /* End */ *srcSizePtr = (int) (((const char*)ip) - source); return (int) (((char*)op)-dest); _dest_overflow: if (limit == fillOutput) { /* Assumption : ip, anchor, ml and ref must be set correctly */ size_t const ll = (size_t)(ip - anchor); size_t const ll_addbytes = (ll + 240) / 255; size_t const ll_totalCost = 1 + ll_addbytes + ll; BYTE* const maxLitPos = oend - 3; /* 2 for offset, 1 for token */ DEBUGLOG(6, "Last sequence overflowing"); op = optr; /* restore correct out pointer */ if (op + ll_totalCost <= maxLitPos) { /* ll validated; now adjust match length */ size_t const bytesLeftForMl = (size_t)(maxLitPos - (op+ll_totalCost)); size_t const maxMlSize = MINMATCH + (ML_MASK-1) + (bytesLeftForMl * 255); assert(maxMlSize < INT_MAX); assert(ml >= 0); if ((size_t)ml > maxMlSize) ml = (int)maxMlSize; if ((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1 + ml >= MFLIMIT) { LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, notLimited, oend); } } goto _last_literals; } /* compression failed */ return 0; } static int LZ4HC_compress_optimal( LZ4HC_CCtx_internal* ctx, const char* const source, char* dst, int* srcSizePtr, int dstCapacity, int const nbSearches, size_t sufficient_len, const limitedOutput_directive limit, int const fullUpdate, const dictCtx_directive dict, const HCfavor_e favorDecSpeed); LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( LZ4HC_CCtx_internal* const ctx, const char* const src, char* const dst, int* const srcSizePtr, int const dstCapacity, int cLevel, const limitedOutput_directive limit, const dictCtx_directive dict ) { typedef enum { lz4hc, lz4opt } lz4hc_strat_e; typedef struct { lz4hc_strat_e strat; int nbSearches; U32 targetLength; } cParams_t; static const cParams_t clTable[LZ4HC_CLEVEL_MAX+1] = { { lz4hc, 2, 16 }, /* 0, unused */ { lz4hc, 2, 16 }, /* 1, unused */ { lz4hc, 2, 16 }, /* 2, unused */ { lz4hc, 4, 16 }, /* 3 */ { lz4hc, 8, 16 }, /* 4 */ { lz4hc, 16, 16 }, /* 5 */ { lz4hc, 32, 16 }, /* 6 */ { lz4hc, 64, 16 }, /* 7 */ { lz4hc, 128, 16 }, /* 8 */ { lz4hc, 256, 16 }, /* 9 */ { lz4opt, 96, 64 }, /*10==LZ4HC_CLEVEL_OPT_MIN*/ { lz4opt, 512,128 }, /*11 */ { lz4opt,16384,LZ4_OPT_NUM }, /* 12==LZ4HC_CLEVEL_MAX */ }; DEBUGLOG(4, "LZ4HC_compress_generic(ctx=%p, src=%p, srcSize=%d, limit=%d)", ctx, src, *srcSizePtr, limit); if (limit == fillOutput && dstCapacity < 1) return 0; /* Impossible to store anything */ if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size (too large or negative) */ ctx->end += *srcSizePtr; if (cLevel < 1) cLevel = LZ4HC_CLEVEL_DEFAULT; /* note : convention is different from lz4frame, maybe something to review */ cLevel = MIN(LZ4HC_CLEVEL_MAX, cLevel); { cParams_t const cParam = clTable[cLevel]; HCfavor_e const favor = ctx->favorDecSpeed ? favorDecompressionSpeed : favorCompressionRatio; int result; if (cParam.strat == lz4hc) { result = LZ4HC_compress_hashChain(ctx, src, dst, srcSizePtr, dstCapacity, cParam.nbSearches, limit, dict); } else { assert(cParam.strat == lz4opt); result = LZ4HC_compress_optimal(ctx, src, dst, srcSizePtr, dstCapacity, cParam.nbSearches, cParam.targetLength, limit, cLevel == LZ4HC_CLEVEL_MAX, /* ultra mode */ dict, favor); } if (result <= 0) ctx->dirty = 1; return result; } } static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock); static int LZ4HC_compress_generic_noDictCtx ( LZ4HC_CCtx_internal* const ctx, const char* const src, char* const dst, int* const srcSizePtr, int const dstCapacity, int cLevel, limitedOutput_directive limit ) { assert(ctx->dictCtx == NULL); return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, noDictCtx); } static int LZ4HC_compress_generic_dictCtx ( LZ4HC_CCtx_internal* const ctx, const char* const src, char* const dst, int* const srcSizePtr, int const dstCapacity, int cLevel, limitedOutput_directive limit ) { const size_t position = (size_t)(ctx->end - ctx->base) - ctx->lowLimit; assert(ctx->dictCtx != NULL); if (position >= 64 KB) { ctx->dictCtx = NULL; return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); } else if (position == 0 && *srcSizePtr > 4 KB) { memcpy(ctx, ctx->dictCtx, sizeof(LZ4HC_CCtx_internal)); LZ4HC_setExternalDict(ctx, (const BYTE *)src); ctx->compressionLevel = (short)cLevel; return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); } else { return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, usingDictCtxHc); } } static int LZ4HC_compress_generic ( LZ4HC_CCtx_internal* const ctx, const char* const src, char* const dst, int* const srcSizePtr, int const dstCapacity, int cLevel, limitedOutput_directive limit ) { if (ctx->dictCtx == NULL) { return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); } else { return LZ4HC_compress_generic_dictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); } } int LZ4_sizeofStateHC(void) { return (int)sizeof(LZ4_streamHC_t); } static size_t LZ4_streamHC_t_alignment(void) { #if LZ4_ALIGN_TEST typedef struct { char c; LZ4_streamHC_t t; } t_a; return sizeof(t_a) - sizeof(LZ4_streamHC_t); #else return 1; /* effectively disabled */ #endif } /* state is presumed correctly initialized, * in which case its size and alignment have already been validate */ int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) { LZ4HC_CCtx_internal* const ctx = &((LZ4_streamHC_t*)state)->internal_donotuse; if (!LZ4_isAligned(state, LZ4_streamHC_t_alignment())) return 0; LZ4_resetStreamHC_fast((LZ4_streamHC_t*)state, compressionLevel); LZ4HC_init_internal (ctx, (const BYTE*)src); if (dstCapacity < LZ4_compressBound(srcSize)) return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput); else return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, notLimited); } int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) { LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); if (ctx==NULL) return 0; /* init failure */ return LZ4_compress_HC_extStateHC_fastReset(state, src, dst, srcSize, dstCapacity, compressionLevel); } int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) { #if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 LZ4_streamHC_t* const statePtr = (LZ4_streamHC_t*)ALLOC(sizeof(LZ4_streamHC_t)); #else LZ4_streamHC_t state; LZ4_streamHC_t* const statePtr = &state; #endif int const cSize = LZ4_compress_HC_extStateHC(statePtr, src, dst, srcSize, dstCapacity, compressionLevel); #if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 FREEMEM(statePtr); #endif return cSize; } /* state is presumed sized correctly (>= sizeof(LZ4_streamHC_t)) */ int LZ4_compress_HC_destSize(void* state, const char* source, char* dest, int* sourceSizePtr, int targetDestSize, int cLevel) { LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); if (ctx==NULL) return 0; /* init failure */ LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE*) source); LZ4_setCompressionLevel(ctx, cLevel); return LZ4HC_compress_generic(&ctx->internal_donotuse, source, dest, sourceSizePtr, targetDestSize, cLevel, fillOutput); } /************************************** * Streaming Functions **************************************/ /* allocation */ LZ4_streamHC_t* LZ4_createStreamHC(void) { LZ4_streamHC_t* const state = (LZ4_streamHC_t*)ALLOC_AND_ZERO(sizeof(LZ4_streamHC_t)); if (state == NULL) return NULL; LZ4_setCompressionLevel(state, LZ4HC_CLEVEL_DEFAULT); return state; } int LZ4_freeStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr) { DEBUGLOG(4, "LZ4_freeStreamHC(%p)", LZ4_streamHCPtr); if (!LZ4_streamHCPtr) return 0; /* support free on NULL */ FREEMEM(LZ4_streamHCPtr); return 0; } LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size) { LZ4_streamHC_t* const LZ4_streamHCPtr = (LZ4_streamHC_t*)buffer; /* if compilation fails here, LZ4_STREAMHCSIZE must be increased */ LZ4_STATIC_ASSERT(sizeof(LZ4HC_CCtx_internal) <= LZ4_STREAMHCSIZE); DEBUGLOG(4, "LZ4_initStreamHC(%p, %u)", buffer, (unsigned)size); /* check conditions */ if (buffer == NULL) return NULL; if (size < sizeof(LZ4_streamHC_t)) return NULL; if (!LZ4_isAligned(buffer, LZ4_streamHC_t_alignment())) return NULL; /* init */ { LZ4HC_CCtx_internal* const hcstate = &(LZ4_streamHCPtr->internal_donotuse); MEM_INIT(hcstate, 0, sizeof(*hcstate)); } LZ4_setCompressionLevel(LZ4_streamHCPtr, LZ4HC_CLEVEL_DEFAULT); return LZ4_streamHCPtr; } /* just a stub */ void LZ4_resetStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) { LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); } void LZ4_resetStreamHC_fast (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) { DEBUGLOG(4, "LZ4_resetStreamHC_fast(%p, %d)", LZ4_streamHCPtr, compressionLevel); if (LZ4_streamHCPtr->internal_donotuse.dirty) { LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); } else { /* preserve end - base : can trigger clearTable's threshold */ LZ4_streamHCPtr->internal_donotuse.end -= (uptrval)LZ4_streamHCPtr->internal_donotuse.base; LZ4_streamHCPtr->internal_donotuse.base = NULL; LZ4_streamHCPtr->internal_donotuse.dictCtx = NULL; } LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); } void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) { DEBUGLOG(5, "LZ4_setCompressionLevel(%p, %d)", LZ4_streamHCPtr, compressionLevel); if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT; if (compressionLevel > LZ4HC_CLEVEL_MAX) compressionLevel = LZ4HC_CLEVEL_MAX; LZ4_streamHCPtr->internal_donotuse.compressionLevel = (short)compressionLevel; } void LZ4_favorDecompressionSpeed(LZ4_streamHC_t* LZ4_streamHCPtr, int favor) { LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = (favor!=0); } /* LZ4_loadDictHC() : * LZ4_streamHCPtr is presumed properly initialized */ int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, const char* dictionary, int dictSize) { LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; DEBUGLOG(4, "LZ4_loadDictHC(ctx:%p, dict:%p, dictSize:%d)", LZ4_streamHCPtr, dictionary, dictSize); assert(LZ4_streamHCPtr != NULL); if (dictSize > 64 KB) { dictionary += (size_t)dictSize - 64 KB; dictSize = 64 KB; } /* need a full initialization, there are bad side-effects when using resetFast() */ { int const cLevel = ctxPtr->compressionLevel; LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); LZ4_setCompressionLevel(LZ4_streamHCPtr, cLevel); } LZ4HC_init_internal (ctxPtr, (const BYTE*)dictionary); ctxPtr->end = (const BYTE*)dictionary + dictSize; if (dictSize >= 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3); return dictSize; } void LZ4_attach_HC_dictionary(LZ4_streamHC_t *working_stream, const LZ4_streamHC_t *dictionary_stream) { working_stream->internal_donotuse.dictCtx = dictionary_stream != NULL ? &(dictionary_stream->internal_donotuse) : NULL; } /* compression */ static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock) { DEBUGLOG(4, "LZ4HC_setExternalDict(%p, %p)", ctxPtr, newBlock); if (ctxPtr->end >= ctxPtr->base + ctxPtr->dictLimit + 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */ /* Only one memory segment for extDict, so any previous extDict is lost at this stage */ ctxPtr->lowLimit = ctxPtr->dictLimit; ctxPtr->dictLimit = (U32)(ctxPtr->end - ctxPtr->base); ctxPtr->dictBase = ctxPtr->base; ctxPtr->base = newBlock - ctxPtr->dictLimit; ctxPtr->end = newBlock; ctxPtr->nextToUpdate = ctxPtr->dictLimit; /* match referencing will resume from there */ /* cannot reference an extDict and a dictCtx at the same time */ ctxPtr->dictCtx = NULL; } static int LZ4_compressHC_continue_generic (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int dstCapacity, limitedOutput_directive limit) { LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; DEBUGLOG(5, "LZ4_compressHC_continue_generic(ctx=%p, src=%p, srcSize=%d, limit=%d)", LZ4_streamHCPtr, src, *srcSizePtr, limit); assert(ctxPtr != NULL); /* auto-init if forgotten */ if (ctxPtr->base == NULL) LZ4HC_init_internal (ctxPtr, (const BYTE*) src); /* Check overflow */ if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB) { size_t dictSize = (size_t)(ctxPtr->end - ctxPtr->base) - ctxPtr->dictLimit; if (dictSize > 64 KB) dictSize = 64 KB; LZ4_loadDictHC(LZ4_streamHCPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize); } /* Check if blocks follow each other */ if ((const BYTE*)src != ctxPtr->end) LZ4HC_setExternalDict(ctxPtr, (const BYTE*)src); /* Check overlapping input/dictionary space */ { const BYTE* sourceEnd = (const BYTE*) src + *srcSizePtr; const BYTE* const dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit; const BYTE* const dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit; if ((sourceEnd > dictBegin) && ((const BYTE*)src < dictEnd)) { if (sourceEnd > dictEnd) sourceEnd = dictEnd; ctxPtr->lowLimit = (U32)(sourceEnd - ctxPtr->dictBase); if (ctxPtr->dictLimit - ctxPtr->lowLimit < 4) ctxPtr->lowLimit = ctxPtr->dictLimit; } } return LZ4HC_compress_generic (ctxPtr, src, dst, srcSizePtr, dstCapacity, ctxPtr->compressionLevel, limit); } int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int srcSize, int dstCapacity) { if (dstCapacity < LZ4_compressBound(srcSize)) return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput); else return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, notLimited); } int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDestSize) { return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, srcSizePtr, targetDestSize, fillOutput); } /* LZ4_saveDictHC : * save history content * into a user-provided buffer * which is then used to continue compression */ int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictSize) { LZ4HC_CCtx_internal* const streamPtr = &LZ4_streamHCPtr->internal_donotuse; int const prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit)); DEBUGLOG(5, "LZ4_saveDictHC(%p, %p, %d)", LZ4_streamHCPtr, safeBuffer, dictSize); assert(prefixSize >= 0); if (dictSize > 64 KB) dictSize = 64 KB; if (dictSize < 4) dictSize = 0; if (dictSize > prefixSize) dictSize = prefixSize; if (safeBuffer == NULL) assert(dictSize == 0); if (dictSize > 0) memmove(safeBuffer, streamPtr->end - dictSize, dictSize); { U32 const endIndex = (U32)(streamPtr->end - streamPtr->base); streamPtr->end = (const BYTE*)safeBuffer + dictSize; streamPtr->base = streamPtr->end - endIndex; streamPtr->dictLimit = endIndex - (U32)dictSize; streamPtr->lowLimit = endIndex - (U32)dictSize; if (streamPtr->nextToUpdate < streamPtr->dictLimit) streamPtr->nextToUpdate = streamPtr->dictLimit; } return dictSize; } /*************************************************** * Deprecated Functions ***************************************************/ /* These functions currently generate deprecation warnings */ /* Wrappers for deprecated compression functions */ int LZ4_compressHC(const char* src, char* dst, int srcSize) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), 0); } int LZ4_compressHC_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); } int LZ4_compressHC2(const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } int LZ4_compressHC2_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, cLevel); } int LZ4_compressHC_withStateHC (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, LZ4_compressBound(srcSize), 0); } int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, maxDstSize, 0); } int LZ4_compressHC2_withStateHC (void* state, const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } int LZ4_compressHC2_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, cLevel); } int LZ4_compressHC_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, LZ4_compressBound(srcSize)); } int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, maxDstSize); } /* Deprecated streaming functions */ int LZ4_sizeofStreamStateHC(void) { return LZ4_STREAMHCSIZE; } /* state is presumed correctly sized, aka >= sizeof(LZ4_streamHC_t) * @return : 0 on success, !=0 if error */ int LZ4_resetStreamStateHC(void* state, char* inputBuffer) { LZ4_streamHC_t* const hc4 = LZ4_initStreamHC(state, sizeof(*hc4)); if (hc4 == NULL) return 1; /* init failed */ LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); return 0; } void* LZ4_createHC (const char* inputBuffer) { LZ4_streamHC_t* const hc4 = LZ4_createStreamHC(); if (hc4 == NULL) return NULL; /* not enough memory */ LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); return hc4; } int LZ4_freeHC (void* LZ4HC_Data) { if (!LZ4HC_Data) return 0; /* support free on NULL */ FREEMEM(LZ4HC_Data); return 0; } int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int cLevel) { return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, notLimited); } int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int dstCapacity, int cLevel) { return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, dstCapacity, cLevel, limitedOutput); } char* LZ4_slideInputBufferHC(void* LZ4HC_Data) { LZ4_streamHC_t *ctx = (LZ4_streamHC_t*)LZ4HC_Data; const BYTE *bufferStart = ctx->internal_donotuse.base + ctx->internal_donotuse.lowLimit; LZ4_resetStreamHC_fast(ctx, ctx->internal_donotuse.compressionLevel); /* avoid const char * -> char * conversion warning :( */ return (char *)(uptrval)bufferStart; } /* ================================================ * LZ4 Optimal parser (levels [LZ4HC_CLEVEL_OPT_MIN - LZ4HC_CLEVEL_MAX]) * ===============================================*/ typedef struct { int price; int off; int mlen; int litlen; } LZ4HC_optimal_t; /* price in bytes */ LZ4_FORCE_INLINE int LZ4HC_literalsPrice(int const litlen) { int price = litlen; assert(litlen >= 0); if (litlen >= (int)RUN_MASK) price += 1 + ((litlen-(int)RUN_MASK) / 255); return price; } /* requires mlen >= MINMATCH */ LZ4_FORCE_INLINE int LZ4HC_sequencePrice(int litlen, int mlen) { int price = 1 + 2 ; /* token + 16-bit offset */ assert(litlen >= 0); assert(mlen >= MINMATCH); price += LZ4HC_literalsPrice(litlen); if (mlen >= (int)(ML_MASK+MINMATCH)) price += 1 + ((mlen-(int)(ML_MASK+MINMATCH)) / 255); return price; } typedef struct { int off; int len; } LZ4HC_match_t; LZ4_FORCE_INLINE LZ4HC_match_t LZ4HC_FindLongerMatch(LZ4HC_CCtx_internal* const ctx, const BYTE* ip, const BYTE* const iHighLimit, int minLen, int nbSearches, const dictCtx_directive dict, const HCfavor_e favorDecSpeed) { LZ4HC_match_t match = { 0 , 0 }; const BYTE* matchPtr = NULL; /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), * but this won't be the case here, as we define iLowLimit==ip, * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ int matchLength = LZ4HC_InsertAndGetWiderMatch(ctx, ip, ip, iHighLimit, minLen, &matchPtr, &ip, nbSearches, 1 /*patternAnalysis*/, 1 /*chainSwap*/, dict, favorDecSpeed); if (matchLength <= minLen) return match; if (favorDecSpeed) { if ((matchLength>18) & (matchLength<=36)) matchLength=18; /* favor shortcut */ } match.len = matchLength; match.off = (int)(ip-matchPtr); return match; } static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx, const char* const source, char* dst, int* srcSizePtr, int dstCapacity, int const nbSearches, size_t sufficient_len, const limitedOutput_directive limit, int const fullUpdate, const dictCtx_directive dict, const HCfavor_e favorDecSpeed) { int retval = 0; #define TRAILING_LITERALS 3 #ifdef LZ4HC_HEAPMODE LZ4HC_optimal_t* const opt = (LZ4HC_optimal_t*)ALLOC(sizeof(LZ4HC_optimal_t) * (LZ4_OPT_NUM + TRAILING_LITERALS)); #else LZ4HC_optimal_t opt[LZ4_OPT_NUM + TRAILING_LITERALS]; /* ~64 KB, which is a bit large for stack... */ #endif const BYTE* ip = (const BYTE*) source; const BYTE* anchor = ip; const BYTE* const iend = ip + *srcSizePtr; const BYTE* const mflimit = iend - MFLIMIT; const BYTE* const matchlimit = iend - LASTLITERALS; BYTE* op = (BYTE*) dst; BYTE* opSaved = (BYTE*) dst; BYTE* oend = op + dstCapacity; int ovml = MINMATCH; /* overflow - last sequence */ const BYTE* ovref = NULL; /* init */ #ifdef LZ4HC_HEAPMODE if (opt == NULL) goto _return_label; #endif DEBUGLOG(5, "LZ4HC_compress_optimal(dst=%p, dstCapa=%u)", dst, (unsigned)dstCapacity); *srcSizePtr = 0; if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1; /* Main Loop */ while (ip <= mflimit) { int const llen = (int)(ip - anchor); int best_mlen, best_off; int cur, last_match_pos = 0; LZ4HC_match_t const firstMatch = LZ4HC_FindLongerMatch(ctx, ip, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); if (firstMatch.len==0) { ip++; continue; } if ((size_t)firstMatch.len > sufficient_len) { /* good enough solution : immediate encoding */ int const firstML = firstMatch.len; const BYTE* const matchPos = ip - firstMatch.off; opSaved = op; if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), firstML, matchPos, limit, oend) ) { /* updates ip, op and anchor */ ovml = firstML; ovref = matchPos; goto _dest_overflow; } continue; } /* set prices for first positions (literals) */ { int rPos; for (rPos = 0 ; rPos < MINMATCH ; rPos++) { int const cost = LZ4HC_literalsPrice(llen + rPos); opt[rPos].mlen = 1; opt[rPos].off = 0; opt[rPos].litlen = llen + rPos; opt[rPos].price = cost; DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", rPos, cost, opt[rPos].litlen); } } /* set prices using initial match */ { int mlen = MINMATCH; int const matchML = firstMatch.len; /* necessarily < sufficient_len < LZ4_OPT_NUM */ int const offset = firstMatch.off; assert(matchML < LZ4_OPT_NUM); for ( ; mlen <= matchML ; mlen++) { int const cost = LZ4HC_sequencePrice(llen, mlen); opt[mlen].mlen = mlen; opt[mlen].off = offset; opt[mlen].litlen = llen; opt[mlen].price = cost; DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i) -- initial setup", mlen, cost, mlen); } } last_match_pos = firstMatch.len; { int addLit; for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { opt[last_match_pos+addLit].mlen = 1; /* literal */ opt[last_match_pos+addLit].off = 0; opt[last_match_pos+addLit].litlen = addLit; opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); } } /* check further positions */ for (cur = 1; cur < last_match_pos; cur++) { const BYTE* const curPtr = ip + cur; LZ4HC_match_t newMatch; if (curPtr > mflimit) break; DEBUGLOG(7, "rPos:%u[%u] vs [%u]%u", cur, opt[cur].price, opt[cur+1].price, cur+1); if (fullUpdate) { /* not useful to search here if next position has same (or lower) cost */ if ( (opt[cur+1].price <= opt[cur].price) /* in some cases, next position has same cost, but cost rises sharply after, so a small match would still be beneficial */ && (opt[cur+MINMATCH].price < opt[cur].price + 3/*min seq price*/) ) continue; } else { /* not useful to search here if next position has same (or lower) cost */ if (opt[cur+1].price <= opt[cur].price) continue; } DEBUGLOG(7, "search at rPos:%u", cur); if (fullUpdate) newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); else /* only test matches of minimum length; slightly faster, but misses a few bytes */ newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, last_match_pos - cur, nbSearches, dict, favorDecSpeed); if (!newMatch.len) continue; if ( ((size_t)newMatch.len > sufficient_len) || (newMatch.len + cur >= LZ4_OPT_NUM) ) { /* immediate encoding */ best_mlen = newMatch.len; best_off = newMatch.off; last_match_pos = cur + 1; goto encode; } /* before match : set price with literals at beginning */ { int const baseLitlen = opt[cur].litlen; int litlen; for (litlen = 1; litlen < MINMATCH; litlen++) { int const price = opt[cur].price - LZ4HC_literalsPrice(baseLitlen) + LZ4HC_literalsPrice(baseLitlen+litlen); int const pos = cur + litlen; if (price < opt[pos].price) { opt[pos].mlen = 1; /* literal */ opt[pos].off = 0; opt[pos].litlen = baseLitlen+litlen; opt[pos].price = price; DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", pos, price, opt[pos].litlen); } } } /* set prices using match at position = cur */ { int const matchML = newMatch.len; int ml = MINMATCH; assert(cur + newMatch.len < LZ4_OPT_NUM); for ( ; ml <= matchML ; ml++) { int const pos = cur + ml; int const offset = newMatch.off; int price; int ll; DEBUGLOG(7, "testing price rPos %i (last_match_pos=%i)", pos, last_match_pos); if (opt[cur].mlen == 1) { ll = opt[cur].litlen; price = ((cur > ll) ? opt[cur - ll].price : 0) + LZ4HC_sequencePrice(ll, ml); } else { ll = 0; price = opt[cur].price + LZ4HC_sequencePrice(0, ml); } assert((U32)favorDecSpeed <= 1); if (pos > last_match_pos+TRAILING_LITERALS || price <= opt[pos].price - (int)favorDecSpeed) { DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i)", pos, price, ml); assert(pos < LZ4_OPT_NUM); if ( (ml == matchML) /* last pos of last match */ && (last_match_pos < pos) ) last_match_pos = pos; opt[pos].mlen = ml; opt[pos].off = offset; opt[pos].litlen = ll; opt[pos].price = price; } } } /* complete following positions with literals */ { int addLit; for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { opt[last_match_pos+addLit].mlen = 1; /* literal */ opt[last_match_pos+addLit].off = 0; opt[last_match_pos+addLit].litlen = addLit; opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); } } } /* for (cur = 1; cur <= last_match_pos; cur++) */ assert(last_match_pos < LZ4_OPT_NUM + TRAILING_LITERALS); best_mlen = opt[last_match_pos].mlen; best_off = opt[last_match_pos].off; cur = last_match_pos - best_mlen; encode: /* cur, last_match_pos, best_mlen, best_off must be set */ assert(cur < LZ4_OPT_NUM); assert(last_match_pos >= 1); /* == 1 when only one candidate */ DEBUGLOG(6, "reverse traversal, looking for shortest path (last_match_pos=%i)", last_match_pos); { int candidate_pos = cur; int selected_matchLength = best_mlen; int selected_offset = best_off; while (1) { /* from end to beginning */ int const next_matchLength = opt[candidate_pos].mlen; /* can be 1, means literal */ int const next_offset = opt[candidate_pos].off; DEBUGLOG(7, "pos %i: sequence length %i", candidate_pos, selected_matchLength); opt[candidate_pos].mlen = selected_matchLength; opt[candidate_pos].off = selected_offset; selected_matchLength = next_matchLength; selected_offset = next_offset; if (next_matchLength > candidate_pos) break; /* last match elected, first match to encode */ assert(next_matchLength > 0); /* can be 1, means literal */ candidate_pos -= next_matchLength; } } /* encode all recorded sequences in order */ { int rPos = 0; /* relative position (to ip) */ while (rPos < last_match_pos) { int const ml = opt[rPos].mlen; int const offset = opt[rPos].off; if (ml == 1) { ip++; rPos++; continue; } /* literal; note: can end up with several literals, in which case, skip them */ rPos += ml; assert(ml >= MINMATCH); assert((offset >= 1) && (offset <= LZ4_DISTANCE_MAX)); opSaved = op; if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ip - offset, limit, oend) ) { /* updates ip, op and anchor */ ovml = ml; ovref = ip - offset; goto _dest_overflow; } } } } /* while (ip <= mflimit) */ _last_literals: /* Encode Last Literals */ { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ size_t llAdd = (lastRunSize + 255 - RUN_MASK) / 255; size_t const totalSize = 1 + llAdd + lastRunSize; if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ if (limit && (op + totalSize > oend)) { if (limit == limitedOutput) { /* Check output limit */ retval = 0; goto _return_label; } /* adapt lastRunSize to fill 'dst' */ lastRunSize = (size_t)(oend - op) - 1 /*token*/; llAdd = (lastRunSize + 256 - RUN_MASK) / 256; lastRunSize -= llAdd; } DEBUGLOG(6, "Final literal run : %i literals", (int)lastRunSize); ip = anchor + lastRunSize; /* can be != iend if limit==fillOutput */ if (lastRunSize >= RUN_MASK) { size_t accumulator = lastRunSize - RUN_MASK; *op++ = (RUN_MASK << ML_BITS); for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; *op++ = (BYTE) accumulator; } else { *op++ = (BYTE)(lastRunSize << ML_BITS); } memcpy(op, anchor, lastRunSize); op += lastRunSize; } /* End */ *srcSizePtr = (int) (((const char*)ip) - source); retval = (int) ((char*)op-dst); goto _return_label; _dest_overflow: if (limit == fillOutput) { /* Assumption : ip, anchor, ovml and ovref must be set correctly */ size_t const ll = (size_t)(ip - anchor); size_t const ll_addbytes = (ll + 240) / 255; size_t const ll_totalCost = 1 + ll_addbytes + ll; BYTE* const maxLitPos = oend - 3; /* 2 for offset, 1 for token */ DEBUGLOG(6, "Last sequence overflowing (only %i bytes remaining)", (int)(oend-1-opSaved)); op = opSaved; /* restore correct out pointer */ if (op + ll_totalCost <= maxLitPos) { /* ll validated; now adjust match length */ size_t const bytesLeftForMl = (size_t)(maxLitPos - (op+ll_totalCost)); size_t const maxMlSize = MINMATCH + (ML_MASK-1) + (bytesLeftForMl * 255); assert(maxMlSize < INT_MAX); assert(ovml >= 0); if ((size_t)ovml > maxMlSize) ovml = (int)maxMlSize; if ((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1 + ovml >= MFLIMIT) { DEBUGLOG(6, "Space to end : %i + ml (%i)", (int)((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1), ovml); DEBUGLOG(6, "Before : ip = %p, anchor = %p", ip, anchor); LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ovml, ovref, notLimited, oend); DEBUGLOG(6, "After : ip = %p, anchor = %p", ip, anchor); } } goto _last_literals; } _return_label: #ifdef LZ4HC_HEAPMODE FREEMEM(opt); #endif return retval; } grcompiler-5.2.1/compiler/LZ4/lz4hc.h000066400000000000000000000473051411153030700173060ustar00rootroot00000000000000/* LZ4 HC - High Compression Mode of LZ4 Header File Copyright (C) 2011-2017, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. You can contact the author at : - LZ4 source repository : https://github.com/lz4/lz4 - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c */ #ifndef LZ4_HC_H_19834876238432 #define LZ4_HC_H_19834876238432 #if defined (__cplusplus) extern "C" { #endif /* --- Dependency --- */ /* note : lz4hc requires lz4.h/lz4.c for compilation */ #include "lz4.h" /* stddef, LZ4LIB_API, LZ4_DEPRECATED */ /* --- Useful constants --- */ #define LZ4HC_CLEVEL_MIN 3 #define LZ4HC_CLEVEL_DEFAULT 9 #define LZ4HC_CLEVEL_OPT_MIN 10 #define LZ4HC_CLEVEL_MAX 12 /*-************************************ * Block Compression **************************************/ /*! LZ4_compress_HC() : * Compress data from `src` into `dst`, using the powerful but slower "HC" algorithm. * `dst` must be already allocated. * Compression is guaranteed to succeed if `dstCapacity >= LZ4_compressBound(srcSize)` (see "lz4.h") * Max supported `srcSize` value is LZ4_MAX_INPUT_SIZE (see "lz4.h") * `compressionLevel` : any value between 1 and LZ4HC_CLEVEL_MAX will work. * Values > LZ4HC_CLEVEL_MAX behave the same as LZ4HC_CLEVEL_MAX. * @return : the number of bytes written into 'dst' * or 0 if compression fails. */ LZ4LIB_API int LZ4_compress_HC (const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel); /* Note : * Decompression functions are provided within "lz4.h" (BSD license) */ /*! LZ4_compress_HC_extStateHC() : * Same as LZ4_compress_HC(), but using an externally allocated memory segment for `state`. * `state` size is provided by LZ4_sizeofStateHC(). * Memory segment must be aligned on 8-bytes boundaries (which a normal malloc() should do properly). */ LZ4LIB_API int LZ4_sizeofStateHC(void); LZ4LIB_API int LZ4_compress_HC_extStateHC(void* stateHC, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel); /*! LZ4_compress_HC_destSize() : v1.9.0+ * Will compress as much data as possible from `src` * to fit into `targetDstSize` budget. * Result is provided in 2 parts : * @return : the number of bytes written into 'dst' (necessarily <= targetDstSize) * or 0 if compression fails. * `srcSizePtr` : on success, *srcSizePtr is updated to indicate how much bytes were read from `src` */ LZ4LIB_API int LZ4_compress_HC_destSize(void* stateHC, const char* src, char* dst, int* srcSizePtr, int targetDstSize, int compressionLevel); /*-************************************ * Streaming Compression * Bufferless synchronous API **************************************/ typedef union LZ4_streamHC_u LZ4_streamHC_t; /* incomplete type (defined later) */ /*! LZ4_createStreamHC() and LZ4_freeStreamHC() : * These functions create and release memory for LZ4 HC streaming state. * Newly created states are automatically initialized. * A same state can be used multiple times consecutively, * starting with LZ4_resetStreamHC_fast() to start a new stream of blocks. */ LZ4LIB_API LZ4_streamHC_t* LZ4_createStreamHC(void); LZ4LIB_API int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr); /* These functions compress data in successive blocks of any size, using previous blocks as dictionary, to improve compression ratio. One key assumption is that previous blocks (up to 64 KB) remain read-accessible while compressing next blocks. There is an exception for ring buffers, which can be smaller than 64 KB. Ring-buffer scenario is automatically detected and handled within LZ4_compress_HC_continue(). Before starting compression, state must be allocated and properly initialized. LZ4_createStreamHC() does both, though compression level is set to LZ4HC_CLEVEL_DEFAULT. Selecting the compression level can be done with LZ4_resetStreamHC_fast() (starts a new stream) or LZ4_setCompressionLevel() (anytime, between blocks in the same stream) (experimental). LZ4_resetStreamHC_fast() only works on states which have been properly initialized at least once, which is automatically the case when state is created using LZ4_createStreamHC(). After reset, a first "fictional block" can be designated as initial dictionary, using LZ4_loadDictHC() (Optional). Invoke LZ4_compress_HC_continue() to compress each successive block. The number of blocks is unlimited. Previous input blocks, including initial dictionary when present, must remain accessible and unmodified during compression. It's allowed to update compression level anytime between blocks, using LZ4_setCompressionLevel() (experimental). 'dst' buffer should be sized to handle worst case scenarios (see LZ4_compressBound(), it ensures compression success). In case of failure, the API does not guarantee recovery, so the state _must_ be reset. To ensure compression success whenever `dst` buffer size cannot be made >= LZ4_compressBound(), consider using LZ4_compress_HC_continue_destSize(). Whenever previous input blocks can't be preserved unmodified in-place during compression of next blocks, it's possible to copy the last blocks into a more stable memory space, using LZ4_saveDictHC(). Return value of LZ4_saveDictHC() is the size of dictionary effectively saved into 'safeBuffer' (<= 64 KB) After completing a streaming compression, it's possible to start a new stream of blocks, using the same LZ4_streamHC_t state, just by resetting it, using LZ4_resetStreamHC_fast(). */ LZ4LIB_API void LZ4_resetStreamHC_fast(LZ4_streamHC_t* streamHCPtr, int compressionLevel); /* v1.9.0+ */ LZ4LIB_API int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize); LZ4LIB_API int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, const char* src, char* dst, int srcSize, int maxDstSize); /*! LZ4_compress_HC_continue_destSize() : v1.9.0+ * Similar to LZ4_compress_HC_continue(), * but will read as much data as possible from `src` * to fit into `targetDstSize` budget. * Result is provided into 2 parts : * @return : the number of bytes written into 'dst' (necessarily <= targetDstSize) * or 0 if compression fails. * `srcSizePtr` : on success, *srcSizePtr will be updated to indicate how much bytes were read from `src`. * Note that this function may not consume the entire input. */ LZ4LIB_API int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDstSize); LZ4LIB_API int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize); /*^********************************************** * !!!!!! STATIC LINKING ONLY !!!!!! ***********************************************/ /*-****************************************************************** * PRIVATE DEFINITIONS : * Do not use these definitions directly. * They are merely exposed to allow static allocation of `LZ4_streamHC_t`. * Declare an `LZ4_streamHC_t` directly, rather than any type below. * Even then, only do so in the context of static linking, as definitions may change between versions. ********************************************************************/ #define LZ4HC_DICTIONARY_LOGSIZE 16 #define LZ4HC_MAXD (1<= LZ4HC_CLEVEL_OPT_MIN. */ LZ4LIB_STATIC_API void LZ4_favorDecompressionSpeed( LZ4_streamHC_t* LZ4_streamHCPtr, int favor); /*! LZ4_resetStreamHC_fast() : v1.9.0+ * When an LZ4_streamHC_t is known to be in a internally coherent state, * it can often be prepared for a new compression with almost no work, only * sometimes falling back to the full, expensive reset that is always required * when the stream is in an indeterminate state (i.e., the reset performed by * LZ4_resetStreamHC()). * * LZ4_streamHCs are guaranteed to be in a valid state when: * - returned from LZ4_createStreamHC() * - reset by LZ4_resetStreamHC() * - memset(stream, 0, sizeof(LZ4_streamHC_t)) * - the stream was in a valid state and was reset by LZ4_resetStreamHC_fast() * - the stream was in a valid state and was then used in any compression call * that returned success * - the stream was in an indeterminate state and was used in a compression * call that fully reset the state (LZ4_compress_HC_extStateHC()) and that * returned success * * Note: * A stream that was last used in a compression call that returned an error * may be passed to this function. However, it will be fully reset, which will * clear any existing history and settings from the context. */ LZ4LIB_STATIC_API void LZ4_resetStreamHC_fast( LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel); /*! LZ4_compress_HC_extStateHC_fastReset() : * A variant of LZ4_compress_HC_extStateHC(). * * Using this variant avoids an expensive initialization step. It is only safe * to call if the state buffer is known to be correctly initialized already * (see above comment on LZ4_resetStreamHC_fast() for a definition of * "correctly initialized"). From a high level, the difference is that this * function initializes the provided state with a call to * LZ4_resetStreamHC_fast() while LZ4_compress_HC_extStateHC() starts with a * call to LZ4_resetStreamHC(). */ LZ4LIB_STATIC_API int LZ4_compress_HC_extStateHC_fastReset ( void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel); /*! LZ4_attach_HC_dictionary() : * This is an experimental API that allows for the efficient use of a * static dictionary many times. * * Rather than re-loading the dictionary buffer into a working context before * each compression, or copying a pre-loaded dictionary's LZ4_streamHC_t into a * working LZ4_streamHC_t, this function introduces a no-copy setup mechanism, * in which the working stream references the dictionary stream in-place. * * Several assumptions are made about the state of the dictionary stream. * Currently, only streams which have been prepared by LZ4_loadDictHC() should * be expected to work. * * Alternatively, the provided dictionary stream pointer may be NULL, in which * case any existing dictionary stream is unset. * * A dictionary should only be attached to a stream without any history (i.e., * a stream that has just been reset). * * The dictionary will remain attached to the working stream only for the * current stream session. Calls to LZ4_resetStreamHC(_fast) will remove the * dictionary context association from the working stream. The dictionary * stream (and source buffer) must remain in-place / accessible / unchanged * through the lifetime of the stream session. */ LZ4LIB_STATIC_API void LZ4_attach_HC_dictionary( LZ4_streamHC_t *working_stream, const LZ4_streamHC_t *dictionary_stream); #if defined (__cplusplus) } #endif #endif /* LZ4_HC_SLO_098092834 */ #endif /* LZ4_HC_STATIC_LINKING_ONLY */ grcompiler-5.2.1/compiler/LgCharPropsStub.h000066400000000000000000000055761411153030700206770ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2003 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: LgCharPropsStub.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Stub of the LgCharPropertyEngine class, and related definitions. ----------------------------------------------------------------------------------------------*/ typedef utf16 wchar; //typedef [v1_enum] enum LgBidiCategory typedef enum tagLgBidiCategory { // Strong kbicL, // Left-Right; most alphabetic chars, etc. kbicLRE, // Left-Right Embedding kbicLRO, // Left-Right Override kbicR, // Right-Left; Hebrew and its punctuation kbicAL, // Right-Left Arabic kbicRLE, // Right-Left Embedding kbicRLO, // Right-Left Override kbicPDF, // Pop Directional Format // Weak kbicEN, // European Number kbicES, // European Number Separator kbicET, // European Number Terminator kbicAN, // Arabic Number kbicCS, // Common Number Separator // Separators: kbicNSM, // Non-Spacing Mark kbicBN, // Boundary Neutral kbicB, // Paragraph Separator kbicS, // Segment Separator // Neutrals: kbicWS, // Whitespace kbicON // Other Neutrals ; All other characters: punctuation, symbols } LgBidiCategory; // Hungarian: bic // Script direction codes typedef enum tagScriptDirCode { kfsdcNone = 0, kfsdcHorizLtr = 1, // horizontal left-to-right kfsdcHorizRtl = 2, // horizontal right-to-left kfsdcVertFromLeft = 4, // vertical from left kfsdcVertFromRight = 8 // vertical from right } ScriptDirCode; // Hungarian: sdc // Types of line break, used by the rendering engines. //typedef [v1_enum] enum LgLineBreak { typedef enum tagLgLineBreak { klbNoBreak, // (the segment is not broken at all; the whole run fit); klbWordBreak, // (a break at a word boundary: a normal, natural place to break); klbHyphenBreak, // (break a word at a known valid hyphenation point, or comparable; klbLetterBreak, // (break between letters, but not at a word or normal hyphenation point), klbClipBreak // (had to clip even first letter, worst possible break) } LgLineBreak; // Hungarian: lbrk typedef bool ComBool; // This class should never actually be used, it is only here to make the everything compile. class ILgCharacterPropertyEngine { public: HRESULT get_IsSeparator(wchar /*wUnicode*/, ComBool * /*pfIsSep*/) { GrAssert(false); return E_NOTIMPL; } HRESULT get_BidiCategory(wchar /*wUnicode*/, LgBidiCategory * /*pbidi*/) { GrAssert(false); return E_NOTIMPL; } int Release() { return 1; } }; ///typedef GenSmartPtr ILgCharacterPropertyEnginePtr; typedef ILgCharacterPropertyEngine * ILgCharacterPropertyEnginePtr; enum { CLSID_LgIcuCharPropEngine = 0 }; grcompiler-5.2.1/compiler/Makefile.am000066400000000000000000000035221411153030700175250ustar00rootroot00000000000000AM_CPPFLAGS = -I@srcdir@/Generic -I@srcdir@/Grammar -I@srcdir@/LZ4 SUBDIRS = Generic Grammar LZ4 LIBS = @LIBS@ @LIBICONV@ -LGeneric -LGrammar -LLZ4 -lgeneric -lparser -llz4 EXTRA_DIST = resource.h GrCompiler.rc GrpParser.g GrpParser_readme.txt GrpParserTokenTypes.txt stddef.gdh bin_PROGRAMS = grcompiler pkgdata_DATA = stddef.gdh grcompiler_SOURCES = \ Compiler.cpp \ constants.h \ ErrorCheckClasses.cpp \ ErrorCheckFeatures.cpp \ ErrorCheckRules.cpp \ Fsm.cpp \ Fsm.h \ GlyphBoundaries.cpp \ GlyphBoundaries.h \ GdlExpression.cpp \ GdlExpression.h \ GdlFeatures.cpp \ GdlFeatures.h \ GdlGlyphClassDefn.cpp \ GdlGlyphClassDefn.h \ GdlGlyphDefn.h \ GdlNameDefn.h \ GdlObject.h \ GdlRenderer.cpp \ GdlRenderer.h \ GdlRule.cpp \ GdlRule.h \ GdlTablePass.cpp \ GdlTablePass.h \ GrcBinaryStream.h \ GrcEnv.h \ GrcErrorList.cpp \ GrcErrorList.h \ GrcFont.cpp \ GrcFont.h \ GrcGlyphAttrMatrix.cpp \ GrcGlyphAttrMatrix.h \ GrcManager.cpp \ GrcManager.h \ GrcMasterTable.cpp \ GrcMasterTable.h \ GrcSymTable.cpp \ GrcSymTable.h \ GrpASTNode.hpp \ GrpExtensions.cpp \ Grp.h \ GrpLexer.cpp \ GrpLexer.hpp \ GrpLineAndFile.hpp \ GrpParser.cpp \ GrpParserDebug.cpp \ GrpParser.hpp \ GrpParserTokenTypes.hpp \ GrpToken.hpp \ GrpTokenStreamFilter.hpp \ LgCharPropsStub.h \ main.cpp \ main.h \ OutputToFont.cpp \ ParserTreeWalker.cpp \ PostParser.cpp \ StrAnsiHash.h \ TtfUtil.cpp \ TtfUtil.h \ TtfTypes.h grcompiler-5.2.1/compiler/OutputToFont.cpp000066400000000000000000003531061411153030700206350ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: OutputToFont.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods to write the tables in the TT font file. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #include "LZ4/lz4hc.h" #include #include #include #include #include #include #include #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ static DWORD PadLong(DWORD ul); // static unsigned int CalcCheckSum(const void * pluTable, size_t cluSize); static int CompareDirEntries(const void *, const void *); // compare fn for qsort() using namespace TtfUtil; using namespace Sfnt; /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Copy all tables from src file to dst file and add our custom tables. Adding: Silf, Gloc, Glat, Feat, and possibly Sile. If we are outputting a separate control file, we are basically copying the minimal font, making a few changes (to name, cmap, and OS/2 tables), and adding 5 tables. Otherwise we are copying the original source font, making a few changes (to the name table), and adding 4 tables. Return 0 on success, non-zero otherwise. TODO AlanW: Output Sild table (table with debug strings). ----------------------------------------------------------------------------------------------*/ int GrcManager::OutputToFont(char * pchSrcFileName, char * pchDstFileName, utf16 * pchDstFontFamily, bool fModFontName, utf16 * pchSrcFontFamily) { const int kcExtraTables = 5; // count of tables to add to font std::ifstream strmSrc(pchSrcFileName, std::ios::binary); GrcBinaryStream bstrmDst(pchDstFileName); // this deletes pre-existing file OffsetSubTable offsetTableSrc; OffsetSubTable offsetTableMin; uint8* pDirEntryMin; uint16 cTableMinOut; uint16 cTableCopy; std::ifstream * pstrmCopy; OffsetSubTable::Entry * pDirEntryCopy; OffsetSubTable * pOffsetTableOut; uint16 cTableOut; unsigned int luMasterChecksumSrc = 0; unsigned int rgnCreateTime[2]; unsigned int rgnModifyTime[2]; // Read offset table and directory entries. size_t lOffset, lSize; size_t iTableCmapSrc, iTableCmapLen; size_t iTableOS2Src, iTableOS2Len; size_t iTableHeadSrc, iTableHeadLen; OffsetSubTable::Entry *pDirEntrySrc; if (!GetHeaderInfo(lOffset, lSize)) return 1; strmSrc.read((char *)&offsetTableSrc, lSize + lOffset); if (!GetTableDirInfo(&offsetTableSrc, lOffset, lSize)) return 1; uint16 cTableSrc = read(offsetTableSrc.num_tables); pDirEntrySrc = (OffsetSubTable::Entry *)new uint8[lSize]; strmSrc.read((char *)pDirEntrySrc, lSize); if (!GetTableInfo(ktiCmap, &offsetTableSrc, pDirEntrySrc, iTableCmapSrc, iTableCmapLen)) return 2; if (!GetTableInfo(ktiOs2, &offsetTableSrc, pDirEntrySrc, iTableOS2Src, iTableOS2Len)) return 2; if (!GetTableInfo(ktiHead, &offsetTableSrc, pDirEntrySrc, iTableHeadSrc, iTableHeadLen)) return 2; // Read features from input font, if any. This is so we can avoid duplicating existing // feature strings in the name table. size_t iTableFeatSrc, iTableFeatLen; if (GetTableInfo(ktiFeat, &offsetTableSrc, pDirEntrySrc, iTableFeatSrc, iTableFeatLen)) { size_t iTableNameSrc, iTableNameLen; GetTableInfo(ktiName, &offsetTableSrc, pDirEntrySrc, iTableNameSrc, iTableNameLen); ReadSourceFontFeatures(strmSrc, iTableFeatSrc, iTableFeatLen, iTableNameSrc, iTableNameLen); } // Count up the number of existing Graphite tables. int cOldGraphiteTables = 0; uint32 tagSilf = TableIdTag(ktiSilf); uint32 tagGloc = TableIdTag(ktiGloc); uint32 tagGlat = TableIdTag(ktiGlat); uint32 tagFeat = TableIdTag(ktiFeat); uint32 tagSill = TableIdTag(ktiSill); uint32 tagSile = TableIdTag(ktiSile); for (int iTable = 0; iTable < cTableSrc; iTable++) { uint32 tag = read(pDirEntrySrc[iTable].tag); if (tag == tagSilf || tag == tagGloc || tag == tagGlat || tag == tagFeat || tag == tagSill || tag == tagSile) cOldGraphiteTables++; } // Do the same for the minimal control file. const char * rgchEnvVarName = "GDLPP_PREFS"; const char * rgchMinPath = getenv(rgchEnvVarName); std::string staMinFile(rgchMinPath ? rgchMinPath : ""); if (staMinFile.length() > 2) { if (staMinFile.length() > 0 && staMinFile[0] == '-' && staMinFile[1] == 'I') staMinFile = staMinFile.substr(2, staMinFile.length() - 2); if (staMinFile[staMinFile.length() - 1] != '\\') staMinFile.append("\\", 1); staMinFile.append("mingr.ttf"); } else { // Can't find the minimal font; creating the stream will fail. staMinFile = "_bogus_.ttf"; } std::ifstream strmMin(staMinFile.c_str(), std::ios::binary); if (SeparateControlFile()) { size_t lOffset, lSize; if (!GetHeaderInfo(lOffset, lSize)) return 3; strmMin.read((char *)&offsetTableMin, lOffset + lSize); if (read(offsetTableMin.scaler_type) != OneFix) return 3; int cTableIn = read(offsetTableMin.num_tables); if (!GetTableDirInfo(&offsetTableSrc, lOffset, lSize)) return 3; pDirEntryMin = new uint8[lSize]; strmSrc.read((char *)&pDirEntryMin, lSize); // Read the master checksum and dates from the source font head table. uint8 * pbTableHeadSrc = new uint8[iTableHeadLen]; strmSrc.seekg(iTableHeadSrc); strmSrc.read((char *)pbTableHeadSrc, iTableHeadLen); luMasterChecksumSrc = TtfUtil::HeadTableCheckSum(pbTableHeadSrc); TtfUtil::HeadTableCreateTime(pbTableHeadSrc, &rgnCreateTime[0], &rgnCreateTime[1]); TtfUtil::HeadTableModifyTime(pbTableHeadSrc, &rgnModifyTime[0], &rgnModifyTime[1]); delete[] pbTableHeadSrc; cTableOut = cTableIn - cOldGraphiteTables + kcExtraTables + 1; // Six extra tables: Sile, Silf, Feat, Gloc, Glat, Sill // This is the file we're really copying. pOffsetTableOut = &offsetTableMin; cTableCopy = cTableIn - cOldGraphiteTables; // number we actually copy cTableMinOut = cTableCopy; // index of first Graphite table pstrmCopy = &strmMin; pDirEntryCopy = (OffsetSubTable::Entry *)pDirEntryMin; } else { // We'll output a copy of the base font, glyphs and all. cTableOut = cTableSrc - cOldGraphiteTables + kcExtraTables; // Five extra tables: Silf, Feat, Gloc, Glat, Sill cTableMinOut = cTableSrc - cOldGraphiteTables; pOffsetTableOut = &offsetTableSrc; cTableCopy = cTableSrc - cOldGraphiteTables; // number we actually copy cTableMinOut = cTableCopy; // index of first Graphite table pstrmCopy = &strmSrc; pDirEntryCopy = pDirEntrySrc; } OffsetSubTable::Entry * pDirEntryOut; if (!(pDirEntryOut = new OffsetSubTable::Entry[cTableOut])) return 6; int iTableOut = 0; for (int iTable = 0; iTable < cTableSrc; iTable++) { uint32 tag = read(pDirEntrySrc[iTable].tag); if (tag == tagSilf || tag == tagGloc || tag == tagGlat || tag == tagFeat || tag == tagSill || tag == tagSile) {} else { memcpy(pDirEntryOut + iTableOut, pDirEntryCopy + iTable, sizeof(OffsetSubTable::Entry)); iTableOut++; } } ////memcpy(pDirEntryOut, pDirEntryCopy, cTableSrc * sizeof(OffsetSubTable::Entry)); // Offset table: adjust for extra tables and output. int nP2, nLog; uint16 suTmp; BinarySearchConstants(cTableOut, &nP2, &nLog); pOffsetTableOut->num_tables = read(cTableOut); suTmp = (uint16)(nP2 << 4); pOffsetTableOut->search_range = read(suTmp); suTmp = (uint16)nLog; pOffsetTableOut->entry_selector = read(suTmp); suTmp = (cTableOut << 4) - (uint16)(nP2 << 4); pOffsetTableOut->range_shift = read(suTmp); // write offset table (version & search constants) bstrmDst.Write(pOffsetTableOut, offsetof(OffsetSubTable, table_directory)); // Copy tables from input stream to output stream. offset_t ibTableOffset = 0, // initialize to avoid warnings ibHeadOffset = 0; size_t cbHeadSize = 0; int iNameTbl = 0; int iCmapTbl = -1; int iOS2Tbl = -1; uint8 * pbTable; ibTableOffset = PadLong(offsetof(OffsetSubTable, table_directory) + cTableOut * sizeof(OffsetSubTable::Entry)); // bstrmDst.SetPosition(ibTableOffset); bstrmDst.Write((char *)pDirEntryOut, cTableOut * sizeof(OffsetSubTable::Entry)); int iOut = 0; for (int iSrc = 0; iSrc < cTableCopy + cOldGraphiteTables; iSrc++) { // read table offset_t ibOffset; size_t cbSize; cbSize = read(pDirEntryCopy[iSrc].length); // dir entries are word aligned already ibOffset = read(pDirEntryCopy[iSrc].offset); if (!(pbTable = new uint8[cbSize])) return 7; pstrmCopy->seekg(ibOffset); pstrmCopy->read((char *)pbTable, cbSize); uint32 tag = read(pDirEntryCopy[iSrc].tag); if (tag == tagSilf || tag == tagGloc || tag == tagGlat || tag == tagFeat || tag == tagSill || tag == tagSile) { // Old Graphite table--ignore. delete [] pbTable; continue; } else if (SeparateControlFile() && TableIdTag(ktiOs2) == tag) { // merge the OS/2 tables from the minimal and source fonts iOS2Tbl = iOut; uint8 * pbTableSrc; int cbSizeSrc = read(pDirEntrySrc[iTableOS2Src].length); int ibOffsetSrc = read(pDirEntrySrc[iTableOS2Src].offset); if (!(pbTableSrc = new uint8[cbSizeSrc])) return 8; strmSrc.seekg(ibOffsetSrc); strmSrc.read((char *)pbTableSrc, cbSizeSrc); bstrmDst.SetPosition(ibTableOffset); if (!OutputOS2Table(pbTableSrc, cbSizeSrc, pbTable, cbSize, &bstrmDst, cbSize)) return 9; pDirEntryOut[iOut].length = read(uint32_t(cbSize)); delete[] pbTableSrc; } else if (SeparateControlFile() && TableIdTag(ktiCmap) == tag) { // generate a new cmap iCmapTbl = iOut; uint8 * pbTableSrc; int cbSizeSrc = read(pDirEntrySrc[iTableCmapSrc].length); int ibOffsetSrc = read(pDirEntrySrc[iTableCmapSrc].offset); if (!(pbTableSrc = new uint8[cbSizeSrc])) return 10; strmSrc.seekg(ibOffsetSrc); strmSrc.read((char *)pbTableSrc, cbSizeSrc); bstrmDst.SetPosition(ibTableOffset); OutputCmapTable(pbTableSrc, cbSizeSrc, &bstrmDst, cbSize); pDirEntryOut[iOut].length = read(uint32_t(cbSize)); delete[] pbTableSrc; } else { // add the feature names and change the font name in the name table if (TableIdTag(ktiName) == tag) { iNameTbl = iOut; if (!AddFeatsModFamily((fModFontName ? pchDstFontFamily : NULL), pbTable, cbSize)) return 11; pDirEntryOut[iOut].length = read(uint32_t(cbSize)); } // remember offset and size of head table to adjust the file checksum later if (TableIdTag(ktiHead) == tag) { ibHeadOffset = ibTableOffset; cbHeadSize = cbSize; } // write table bstrmDst.SetPosition(ibTableOffset); // assumes seeking past EOF will fill with zeroes bstrmDst.Write((char *)pbTable, cbSize); } // adjust table's directory entry, offset will change since table directory is bigger pDirEntryOut[iOut].offset = read(uint32(ibTableOffset)); iOut++; ibTableOffset = bstrmDst.SeekPadLong(ibTableOffset + cbSize); delete [] pbTable; } // Output our tables - Output*() methods handle 4 byte table alignment. // Create directory entries for our tables. // We can't set checksum because can't read table from GrcBinaryStream class (write only). uint32 ibOffset,ibOffset2; uint32 cbSize, cbSize2; int nCurTable = cTableMinOut; bstrmDst.SetPosition(ibTableOffset); // Gloc OutputGlatAndGloc(&bstrmDst, (int *)&ibOffset, (int *)&cbSize, (int *)&ibOffset2, (int *)&cbSize2); pDirEntryOut[nCurTable].tag = read(TableIdTag(ktiGloc)); pDirEntryOut[nCurTable].length = read(cbSize); pDirEntryOut[nCurTable].offset = read(ibOffset); pDirEntryOut[nCurTable++].checksum = 0L; // place holder // Glat pDirEntryOut[nCurTable].tag = read(TableIdTag(ktiGlat)); pDirEntryOut[nCurTable].length = read(cbSize2); pDirEntryOut[nCurTable].offset = read(ibOffset2); pDirEntryOut[nCurTable++].checksum = 0L; // place holder // Silf OutputSilfTable(&bstrmDst, (int *)&ibOffset, (int *)&cbSize); pDirEntryOut[nCurTable].tag = read(TableIdTag(ktiSilf)); pDirEntryOut[nCurTable].length = read(cbSize); pDirEntryOut[nCurTable].offset = read(ibOffset); pDirEntryOut[nCurTable++].checksum = 0L; // place holder // Feat OutputFeatTable(&bstrmDst, (int *)&ibOffset, (int *)&cbSize); pDirEntryOut[nCurTable].tag = read(TableIdTag(ktiFeat)); pDirEntryOut[nCurTable].length = read(cbSize); pDirEntryOut[nCurTable].offset = read(ibOffset); pDirEntryOut[nCurTable++].checksum = 0L; // place holder // Sill OutputSillTable(&bstrmDst, (int *)&ibOffset, (int *)&cbSize); pDirEntryOut[nCurTable].tag = read(TableIdTag(ktiSill)); pDirEntryOut[nCurTable].length = read(cbSize); pDirEntryOut[nCurTable].offset = read(ibOffset); pDirEntryOut[nCurTable++].checksum = 0L; // place holder if (SeparateControlFile()) { // Sile OutputSileTable(&bstrmDst, pchSrcFontFamily, pchSrcFileName, luMasterChecksumSrc, rgnCreateTime, rgnModifyTime, (int *)&ibOffset, (int *)&cbSize); pDirEntryOut[nCurTable].tag = read(TableIdTag(ktiSile)); pDirEntryOut[nCurTable].length = read(cbSize); pDirEntryOut[nCurTable].offset = read(ibOffset); pDirEntryOut[nCurTable++].checksum = 0L; // place holder } Assert(nCurTable == cTableOut); // Fix up file checksums in table directory for our tables and any we modified. uint32 luCheckSum; for (int iOut = 0; iOut < cTableOut; iOut++) { if (iOut >= cTableCopy // one of our new Graphite tables || iOut == iNameTbl || iOut == iOS2Tbl || iOut == iCmapTbl) { // iterate over our tables cbSize = PadLong(read(pDirEntryOut[iOut].length)); // find table size (tables are padded) if (!(pbTable = new uint8[cbSize])) return 12; bstrmDst.seekg(read(pDirEntryOut[iOut].offset)); bstrmDst.read((char *)pbTable, cbSize); luCheckSum = CalcCheckSum(pbTable, cbSize); pDirEntryOut[iOut].checksum = read(luCheckSum); delete [] pbTable; } } // calc file checksum luCheckSum = 0; for (int iOut = 0; iOut < cTableOut; iOut++) { luCheckSum += read(pDirEntryOut[iOut].checksum); } luCheckSum += CalcCheckSum(pDirEntryOut, sizeof(OffsetSubTable::Entry) * cTableOut); luCheckSum += CalcCheckSum(pOffsetTableOut, offsetof(OffsetSubTable, table_directory)); luCheckSum = 0xB1B0AFBA - luCheckSum; // adjust checksum for head table // sort directory entries ::qsort((void *)pDirEntryOut, cTableOut, sizeof(OffsetSubTable::Entry), CompareDirEntries); // write directory entries bstrmDst.SetPosition(offsetof(OffsetSubTable, table_directory)); for (int i = 0; i < cTableOut; i++) { bstrmDst.write((char *)(pDirEntryOut + i), sizeof(OffsetSubTable::Entry)); } // write adjusted checksum to head table bstrmDst.seekg(ibHeadOffset); if (!(pbTable = new uint8[cbHeadSize])) return 13; bstrmDst.read((char *)pbTable, cbHeadSize); // read the head table ((FontHeader *)pbTable)->check_sum_adjustment = read(luCheckSum); bstrmDst.seekp(ibHeadOffset); bstrmDst.write((char *)pbTable, cbHeadSize); // overwrite the head table delete [] pbTable; delete [] pDirEntrySrc; if (SeparateControlFile()) delete [] pDirEntryMin; delete[] pDirEntryOut; return 0; } /*---------------------------------------------------------------------------------------------- Create a shadow version of the features based on what was in the original font (if any). The purpose of this is to be able to compare existing feature label strings with what is already in the name table and avoid unnecessary duplication. ----------------------------------------------------------------------------------------------*/ void GrcManager::ReadSourceFontFeatures(std::ifstream & strmSrc, size_t iTableFeatSrc, size_t iTableFeatLen, size_t iTableNameSrc, size_t iTableNameLen) { // Get the contents of the name table. uint8 * pNameTbl = new uint8[iTableNameLen]; strmSrc.seekg(iTableNameSrc); strmSrc.read((char *)pNameTbl, iTableNameLen); // Get and parse the contents of the Feat table. uint8 * pFeatTbl = new uint8[iTableFeatLen]; strmSrc.seekg(iTableFeatSrc); strmSrc.read((char *)pFeatTbl, iTableFeatLen); uint8 * p = pFeatTbl; int version = read(*((uint32*)p)); p += 4; int cfeat = read(*((uint16*)p)); p +=2; // reserved uint16 tmp16 = read(*((uint16*)p)); p +=2; uint32 tmp32 = read(*((uint32*)p)); p += 4; std::vector vncfset; int ifeat; for (ifeat = 0; ifeat < cfeat; ifeat++) { GdlFeatureDefn * pfeat = new GdlFeatureDefn(); m_vpfeatInput.push_back(pfeat); pfeat->SetID(read(*((uint32*)p))); p += 4; int cfset = read(*((uint16*)p)); p +=2; tmp16 = read(*((uint16*)p)); p +=2; // reserved int offset = read(*((uint32*)p)); p += 4; int flags = read(*((uint16*)p)); p +=2; int nNameID = read(*((uint16*)p)); p +=2; pfeat->SetLabelFromNameTable(nNameID, 1033, pNameTbl); vncfset.push_back(cfset); // remember number of settings } // feature settings for (ifeat = 0; ifeat < cfeat; ifeat++) { GdlFeatureDefn * pfeat = m_vpfeatInput[ifeat]; for (int ifset = 0; ifset < vncfset[ifeat]; ifset++) { GdlFeatureSetting * pfset = new GdlFeatureSetting(); pfeat->PushFeatureSetting(pfset); pfset->SetValue(read(*((uint16*)p))); p +=2; int nNameID = (read(*((uint16*)p))); p +=2; pfset->SetLabelFromNameTable(nNameID, 1033, pNameTbl); } } } /*---------------------------------------------------------------------------------------------- Create a new name table with the strings associated with features and their settings in it. Also modify the font name. This method deletes ppNameTable's data and sets the pointer to the new name table. cbNameTbl is updated with the new size. pchFamilyName is the new font name. It will be stored as the font family name and as part of the full font name (which includes subfamily too if this is not regular). The new name table may be structured differently since any name table records which point to the same string will be adjusted to point to different strings (which are copies of one another). This produces a simpler algorithm since one string can be copied for each record. This issue was discovered close to release so large changes were rejected. ----------------------------------------------------------------------------------------------*/ bool GrcManager::AddFeatsModFamily(uint16 * pchwFamilyNameNew, uint8 * & pNameTbl, size_t & cbNameTbl) { // Get the current date, which will be used to create the unique name. utf16 stuDate[12]; BuildDateString(stuDate); auto const cbTblOld = cbNameTbl; size_t cchwFamilyName = (pchwFamilyNameNew) ? utf16len(pchwFamilyNameNew) : 0; // Interpret name table header: FontNames * pTblOld = reinterpret_cast(pNameTbl); uint16 cRecords = read(pTblOld->count); uint16 ibStrOffset = read(pTblOld->string_offset); NameRecord * pRecord = pTblOld->name_record; int irecFamilyName, irecSubFamily, irecFullName, irecVendor, irecPSName, irecUniqueName, irecPrefFamily, irecCompatibleFull; uint16 ibSubFamilyOffset; size_t cbSubFamily; uint16 ibVendorOffset; size_t cbVendor; uint16 ibUniqueNameOffset; size_t cbUniqueName; auto cbOldTblRecords = sizeof(FontNames) + (cRecords - 1) * sizeof(NameRecord); // Make a list of all platform+encodings that have an English family name and therefore // need to be changed. (Include the Unicode platform 0 for which we don't actually know // the language.) Keep track of any existing platform+encodings that also need feature // names stored. Also calculate bytes needed to hold all strings. std::vector vpecToChange; size_t cbOldStringData = 0; int nMaxNameId = 0; bool fUnchangedName = false; for (int iRecord = 0; iRecord < cRecords; iRecord++) { if (read(pRecord[iRecord].name_id) == n_family) { int nPlat = read(pRecord[iRecord].platform_id); int nEnc = read(pRecord[iRecord].platform_specific_id); int nLang = read(pRecord[iRecord].language_id); if ((nPlat == NameRecord::Macintosh && nLang == 0) || (nPlat == NameRecord::Microsoft && nLang == LG_USENG) || (nPlat == NameRecord::Unicode)) { // Found an English family name or one we're treating as English-- // change it if we're changing the names. PlatEncChange pecChange; pecChange.platformID = nPlat; pecChange.encodingID = nEnc; pecChange.engLangID = nLang; pecChange.cbBytesPerChar = (nPlat == NameRecord::Macintosh) ? 1 : 2; pecChange.fChangeName = (pchwFamilyNameNew != NULL); vpecToChange.push_back(pecChange); } else if ((nPlat == NameRecord::Macintosh) || (nPlat == NameRecord::Unicode) || (nPlat == NameRecord::Microsoft && (nEnc == 0 || nEnc == 1 || nEnc == 10))) { // We found a family name that is not English and we will not change. But we // will need to output the feature names. PlatEncChange pecChange; pecChange.platformID = nPlat; pecChange.encodingID = nEnc; pecChange.engLangID = nLang; pecChange.cbBytesPerChar = (nPlat == NameRecord::Macintosh) ? 1 : 2; pecChange.fChangeName = false; vpecToChange.push_back(pecChange); fUnchangedName = true; // give a warning } else { // Otherwise it is non-English, non-Unicode. fUnchangedName = true; } } cbOldStringData += read(pRecord[iRecord].length); nMaxNameId = max(nMaxNameId, int(read(pRecord[iRecord].name_id))); } size_t cbNewStringData = cbOldStringData; // Give a warning if there are font names we won't change. if (fUnchangedName) g_errorList.AddWarning(5503, NULL, "Font names that are not English and not in platform 0 (Unicode) will not be changed"); // Do this once for all platforms: // Assign name table ids to the features and settings and get // vectors containing the external names, language ids, and name table ids // for all features and settings. 256 - 32767 are allowable. int nNameTblId = max(nMaxNameId + 1, 256); if (m_nNameTblStart != -1 && nNameTblId > m_nNameTblStart) { g_errorList.AddWarning(5501, NULL, "Feature strings must start at ", std::to_string(nNameTblId), " in the name table"); } nNameTblId = max(nNameTblId, m_nNameTblStart); int nNameTblMinNew = nNameTblId; std::vector vstuExtNames; std::vector vnLangIds; std::vector vnNameTblIds; size_t cchwFeatStringData = 0; if (!AssignFeatTableNameIds(nNameTblId, nNameTblMinNew, vstuExtNames, vnLangIds, vnNameTblIds, cchwFeatStringData, pNameTbl)) { g_errorList.AddError(5101, NULL, "Insufficient space available for feature strings in name table."); return false; // checks for legal values } auto cbFeatStringData16 = cchwFeatStringData * sizeof(utf16); auto cbFeatStringData8 = cchwFeatStringData; bool f8bitFeatures = false; bool f16bitFeatures = false; Assert(vstuExtNames.size() == vnLangIds.size()); Assert(vnLangIds.size() == vnNameTblIds.size()); // For each platform+encoding of interest, fix up the font names and store the feature strings. for (int ipecChange = 0; ipecChange < signed(vpecToChange.size()); ipecChange++) { PlatEncChange * ppec = &(vpecToChange[ipecChange]); //int engID = ppec->engLangID; if (ppec->cbBytesPerChar == 1) f8bitFeatures = true; // we need to output 8-bit feature strings else f16bitFeatures = true; // we need to output 16-bit feature strings if (ppec->fChangeName) { // There should be (English) font names present for this platform and encoding. // Get pointers to the relevant records. irecFamilyName = irecSubFamily = irecFullName = irecVendor = irecPSName = irecUniqueName = irecPrefFamily = irecCompatibleFull = -1; if (!FindNameTblEntries(pRecord, cRecords, ppec->platformID, ppec->encodingID, ppec->engLangID, &irecFamilyName, &irecSubFamily, &irecFullName, &irecVendor, &irecPSName, &irecUniqueName, &irecPrefFamily, &irecCompatibleFull)) { Assert(false); // how did it get in the vpecToChange list? continue; } Assert(pchwFamilyNameNew); // Generate the new full-font name, the postscript name, and the unique name. ibSubFamilyOffset = (irecSubFamily == -1) ? 0 : read(pRecord[irecSubFamily].offset) + ibStrOffset; cbSubFamily = (irecSubFamily == -1) ? 0 : read(pRecord[irecSubFamily].length); ibVendorOffset = (irecVendor == -1) ? 0 : read(pRecord[irecVendor].offset) + ibStrOffset; cbVendor = (irecVendor == -1) ? 0 : read(pRecord[irecVendor].length); ibUniqueNameOffset = (irecUniqueName == -1) ? 0 : read(pRecord[irecUniqueName].offset) + ibStrOffset; cbUniqueName = (irecUniqueName == -1) ? 0 : read(pRecord[irecUniqueName].length); // NB: Call below may allocate space which must be deleted at the end of this method. if (!BuildFontNames((ppec->cbBytesPerChar == 1), pchwFamilyNameNew, cchwFamilyName, stuDate, (uint8*)pTblOld + ibSubFamilyOffset, cbSubFamily, (uint8*)pTblOld + ibVendorOffset, cbVendor, (uint8*)pTblOld + ibUniqueNameOffset, cbUniqueName, ppec)) { return false; } // Determine size adjustments for font name changes: subtract old names and add new ones. ptrdiff_t dbStringDiff = 0; if (irecFamilyName > -1) { dbStringDiff -= read(pRecord[irecFamilyName].length); dbStringDiff += cchwFamilyName * ppec->cbBytesPerChar; } if (irecFullName > -1) { dbStringDiff -= read(pRecord[irecFullName].length); dbStringDiff += ppec->stuFullName.length() * ppec->cbBytesPerChar; } if (irecUniqueName > -1) { dbStringDiff -= read(pRecord[irecUniqueName].length); dbStringDiff += ppec->stuUniqueName.length() * ppec->cbBytesPerChar; } if (irecPSName > -1) { dbStringDiff -= read(pRecord[irecPSName].length); dbStringDiff += ppec->stuPostscriptName.length() * ppec->cbBytesPerChar; } if (irecPrefFamily > -1) { dbStringDiff -= read(pRecord[irecPrefFamily].length); dbStringDiff += cchwFamilyName * ppec->cbBytesPerChar; } if (irecCompatibleFull > -1) { dbStringDiff -= read(pRecord[irecCompatibleFull].length); dbStringDiff += ppec->stuFullName.length() * ppec->cbBytesPerChar; } cbNewStringData += dbStringDiff; } else { // Font name is not changing, but we do have to output feature strings. ppec->stuFullName.clear(); ppec->stuUniqueName.clear(); ppec->stuPostscriptName.clear(); } } // Calculate the size of the new name table. size_t cbTblNew = cbOldTblRecords + (vstuExtNames.size() * sizeof(NameRecord) * vpecToChange.size()) // 1 record for each feature string for each platform+encoding of interest + cbNewStringData; // adjusted for font name changes // We need at most one version of the 8-bit feature strings and one version of the 16-bit strings. if (f8bitFeatures) cbTblNew += cbFeatStringData8; if (f16bitFeatures) cbTblNew += cbFeatStringData16; // Create the new buffer. uint8 * pTblNew = new uint8[cbTblNew]; // Copy directory entries and strings from source to destination, // modify font name and add feature names. if (!AddFeatsModFamilyAux((uint8 *)pTblOld, cbTblOld, pTblNew, cbTblNew, vstuExtNames, vnLangIds, vnNameTblIds, pchwFamilyNameNew, cchwFamilyName, vpecToChange, nNameTblMinNew)) { return false; } // Set the output args & clean up. cbNameTbl = cbTblNew; delete [] pNameTbl; // old table pNameTbl = pTblNew; return true; } /*---------------------------------------------------------------------------------------------- Return a date string that can be used to generate the unique name. Currently just the year is returned. ----------------------------------------------------------------------------------------------*/ void GrcManager::BuildDateString(utf16 * stuDate) { #if 0 // Get the current date, which will be used to create the unique name. __time64_t ltime; _time64( <ime ); std::wstring strTimeWchar(_wctime64(<ime)); // format is Wed Jan 02 02:03:55 1980 std::copy(strTimeWchar.data() + 8, strTimeWchar.data() + 10, stuDate); // day stuDate[2] = '-'; std::copy(strTimeWchar.data() + 4, strTimeWchar.data() + 7, stuDate + 3); // month stuDate[6] = '-'; std::copy(strTimeWchar.data() + 20, strTimeWchar.data() + 24, stuDate + 7); // year stuDate[11] = 0; #else char tempDate[20]; time_t currentTime; time(¤tTime); //strftime(tempDate, 20, "%d-%b-%Y", localtime(¤tTime)); strftime(tempDate, 20, "%Y", localtime(¤tTime)); std::copy(tempDate, tempDate + strlen(tempDate), stuDate); //stuDate[11] = 0; stuDate[4] = 0; #endif } /*---------------------------------------------------------------------------------------------- Return true if there are any name table entries for this platform-encoding combination. If so, return the record indices for the various variations of the font name and other relevant fields for the given language (which should be English, because we assume the font name is in English). Even if there are no English strings, we still return true indicating that the feature strings need to be output for this platform+encoding. ----------------------------------------------------------------------------------------------*/ bool GrcManager::FindNameTblEntries(void * pNameTblRecord, int cNameTblRecords, uint16 suPlatformId, uint16 suEncodingId, uint16 suLangId, int * piFamily, int * piSubFamily, int * piFullName, int * piVendor, int * piPSName, int * piUniqueName, int * piPrefFamily, int * piCompatibleFull) { bool fNamesFound = false; NameRecord * pRecord = (NameRecord *)(pNameTblRecord); for (int i = 0; i < cNameTblRecords; i++, pRecord++) { if (read(pRecord->platform_id) == suPlatformId && read(pRecord->platform_specific_id) == suEncodingId) { fNamesFound = true; if (read(pRecord->language_id) == suLangId) { uint16 nameID = read(pRecord->name_id); switch (nameID) { case n_family: *piFamily = i; break; case n_subfamily: *piSubFamily = i; break; case n_fullname: *piFullName = i; break; case n_vendor: *piVendor = i; break; case n_postscript: *piPSName = i; break; case n_uniquename: *piUniqueName = i; break; case n_preferredfamily: *piPrefFamily = i; break; case n_compatiblefull: *piCompatibleFull = i; break; default: break; } } } } return fNamesFound; } /*---------------------------------------------------------------------------------------------- Generate the font names to store in the font's name table. The following are needed: * Family name (eg, "Doulos SIL", "Charis Literacy (A)", "Guttman David") * Full name (eg, "Doulos SIL", "Charis Literacy (A) BoldItalic", "Guttman David Light") * Unique name = Vendor name + colon + fullname + colon + day + hyphen + month + hyphen + year (eg, "SIL International:Charis Literacy (A) BoldItalic:20-July-2007") * Postscript name = strip spaces, brackets, percent, and slash from Family name, then append hyphen + subfammily (eg, "DoulosSIL", "CharisLiteracyA-Bold", "GuttmanDavid-Light") Also the strings must be put into Unicode Big Endian order as is required for the TTF name table. FOR NOW WE ARE RETURNING THEM FROM THIS METHOD AS IS. ----------------------------------------------------------------------------------------------*/ bool GrcManager::BuildFontNames(bool f8bitTable, uint16 * pchwFamilyName, size_t cchwFamilyName, utf16 * stuDate, uint8 * pchSubFamily, size_t cbSubFamily, uint8 * pchVendor, size_t cbVendor, uint8 * pchUniqueName, size_t cbUniqueName, PlatEncChange * ppec) { Assert(pchwFamilyName); std::u16string sub_family, vendor, unique_name; // TODO: properly handle the Macintosh encoding, which is not really ANSI. if (f8bitTable) { #if _MSC_VER >= 1900 std::wstring_convert, int16_t> convert; #else std::wstring_convert, char16_t> convert; #endif auto s16 = convert.from_bytes(std::string(reinterpret_cast(pchSubFamily), cbSubFamily)); sub_family.assign(reinterpret_cast(s16.data()), s16.length()); s16 = convert.from_bytes(std::string(reinterpret_cast(pchVendor), cbVendor)); vendor.assign(reinterpret_cast(s16.data()), s16.length()); s16 = convert.from_bytes(std::string(reinterpret_cast(pchUniqueName), cbUniqueName)); unique_name.assign(reinterpret_cast(s16.data()), s16.length()); } else { sub_family.assign(reinterpret_cast(pchSubFamily), cbSubFamily/sizeof(char16_t)); std::transform(sub_family.begin(), sub_family.end(), sub_family.begin(), read); vendor.assign(reinterpret_cast(pchVendor), cbVendor/sizeof(char16_t)); std::transform(vendor.begin(), vendor.end(), vendor.begin(), read); unique_name.assign(reinterpret_cast(pchUniqueName), cbUniqueName / sizeof(char16_t)); std::transform(unique_name.begin(), unique_name.end(), unique_name.begin(), read); } // Check for "Regular" or "Standard" subfamily bool const fRegular = sub_family.empty() || sub_family == u"Regular" || sub_family == u"Standard"; std::u16string date = reinterpret_cast(stuDate); if (vendor.empty()) vendor = u"Unknown Vendor"; // Build the full font name: familyname+subfamily // or (if subfamily = Regular/Standard) familyname // Regular style only includes the family name in the full font name. std::u16string const full_name = std::u16string(reinterpret_cast(pchwFamilyName), cchwFamilyName) // Other styles do include subfamily in the full font name. + (fRegular ? u"" : u' ' + sub_family); // Build the Postscript name: familyname-subfamily, with certain chars stripped out. std::u16string ps_name = std::u16string(reinterpret_cast(pchwFamilyName), cchwFamilyName) + (sub_family.empty() ? u"" : u'-' + sub_family); ps_name.erase( std::remove_if(ps_name.begin(), ps_name.end(), [](char16_t const c) { return c < 33 || c > 126 || c == '/' || c == '%' || c == '(' || c == ')' || c == '<' || c == '>' || c == '[' || c == ']' || c == '{' || c == '}'; }), ps_name.end()); // Build the unique name: vendor: fullname: date std::string::size_type n = unique_name.rfind(u":"); if (n != std::string::npos) { // Preserve the date from the input ttf if it's available std::locale const loc; // Use the system default or "C" locale. // Use the line below instead line of the one above for ASCII only digits. // std::locale const & loc = std::locale::classic(); std::u16string date_field = unique_name.substr(n + 1); std::u16string decade = date_field.substr(date_field.size() - 2); // These need to be cast to char or wchar_t, as there are no stdlib // supplied std::ctype facets. wchar_t expands the recognised // digits up to the BMP, not just ANSI (where supported by the locale). if (std::isdigit(wchar_t(decade[0]),loc) && std::isdigit(wchar_t(decade[1]),loc)) { unique_name = vendor + u": " + full_name + u": " + date_field; } else { unique_name = vendor + u": " + full_name + u": " + date; } } else { unique_name = vendor + u": " + full_name + u": " + date; } ppec->stuFullName = full_name; ppec->stuUniqueName = unique_name; ppec->stuPostscriptName = ps_name; return true; } /*---------------------------------------------------------------------------------------------- Add feature and setting names to the name table. Also modify the family and full font names if pchwFamilyName is not null. The method also copies names from pNameTbl into pNewTbl. The feature data is in the three vectors passed in which must parallel each other. The don't need to be sorted. ----------------------------------------------------------------------------------------------*/ bool GrcManager::AddFeatsModFamilyAux(uint8 * pTblOld, size_t /*cbTblOld*/, uint8 * pTblNew, size_t /*cbTblNew*/, std::vector & vstuExtNames, std::vector & vnLangIds, std::vector & vnNameTblIds, uint16 * pchwFamilyName, size_t cchwFamilyName, std::vector & vpec, size_t nNameTblMinNew) { #pragma pack(1) // Struct used to store data from directory entries that need to be sorted. // Must match the NameRecord struct exactly. struct NameTblEntry { uint16 nPlatId; uint16 nEncId; uint16 nLangId; uint16 nNameId; uint16 cLength; uint16 ibOffset; static int Compare(const void * ptr1, const void * ptr2) { NameTblEntry * p1 = (NameTblEntry *) ptr1; NameTblEntry * p2 = (NameTblEntry *) ptr2; if (p1->nPlatId != p2->nPlatId) return read(p1->nPlatId) - read(p2->nPlatId); else if (p1->nEncId != p2->nEncId) return read(p1->nEncId) - read(p2->nEncId); else if (p1->nLangId != p2->nLangId) return read(p1->nLangId) - read(p2->nLangId); else return read(p1->nNameId) - read(p2->nNameId); } }; FontNames * pTbl = (FontNames *)(pTblOld); uint16 crecOld = read(pTbl->count); uint16 ibStrOffsetOld = read(pTbl->string_offset); NameRecord * pOldRecord = pTbl->name_record; uint16 crecNew = (uint16)(crecOld + (int)(vstuExtNames.size() * vpec.size())); NameRecord * pNewRecord; // name table header ((FontNames *)pTblNew)->format = pTbl->format; ((FontNames *)pTblNew)->count = read(crecNew); uint16 ibStrOffsetNew = sizeof(FontNames) + (crecNew - 1) * sizeof(NameRecord); ((FontNames *)pTblNew)->string_offset = read(ibStrOffsetNew); pNewRecord = ((FontNames *)pTblNew)->name_record; uint8 * pbNextString = pTblNew + ibStrOffsetNew; uint16 dibNew = 0; // delta offset utf16 rgch16[512]; // buffer for converting between wchar_t and utf16; // First copy the old records, changing any font names as needed. int ipec; #ifndef NDEBUG for (ipec = 0; ipec < signed(vpec.size()) - 1; ipec++) { Assert((vpec[ipec].platformID < vpec[ipec + 1].platformID) || (vpec[ipec].platformID == vpec[ipec + 1].platformID && (vpec[ipec].encodingID < vpec[ipec + 1].encodingID || (vpec[ipec].encodingID == vpec[ipec + 1].encodingID && vpec[ipec].engLangID < vpec[ipec+1].engLangID)))); } #endif ipec = 0; int irec = 0; // scope of this variable is larger than for-loop below. for ( ; irec < crecOld; irec++) { PlatEncChange * ppec = &(vpec[ipec]); while(ipec < signed(vpec.size()) && (ppec->platformID < read(pOldRecord[irec].platform_id) || (ppec->platformID == read(pOldRecord[irec].platform_id) && ppec->encodingID < read(pOldRecord[irec].platform_specific_id)))) { ipec++; ppec = &(vpec[ipec]); } pNewRecord[irec].platform_id = pOldRecord[irec].platform_id; pNewRecord[irec].platform_specific_id = pOldRecord[irec].platform_specific_id; pNewRecord[irec].language_id = pOldRecord[irec].language_id; pNewRecord[irec].name_id = pOldRecord[irec].name_id; pNewRecord[irec].length = pOldRecord[irec].length; //pNewRecord[irec].offset = ibStrOffsetNew + dibNew; size_t cchwStr = 0; uint16 cbStr = 0; uint8 * pbStr = NULL; if (ipec < signed(vpec.size()) && !ppec->stuFullName.empty() // this is a platform+encoding where we need to change the font && ppec->platformID == read(pOldRecord[irec].platform_id) && ppec->encodingID == read(pOldRecord[irec].platform_specific_id) && ppec->engLangID == read(pOldRecord[irec].language_id)) { uint16 nameID = read(pOldRecord[irec].name_id); switch (nameID) { case n_family: case n_preferredfamily: pbStr = (uint8 *)pchwFamilyName; cchwStr = cchwFamilyName; break; case n_fullname: case n_compatiblefull: pbStr = (uint8 *)vpec[ipec].stuFullName.data(); cchwStr = vpec[ipec].stuFullName.length(); break; case n_uniquename: pbStr = (uint8 *)vpec[ipec].stuUniqueName.data(); cchwStr = vpec[ipec].stuUniqueName.length(); break; case n_postscript: pbStr = (uint8 *)vpec[ipec].stuPostscriptName.data(); cchwStr = vpec[ipec].stuPostscriptName.length(); break; default: break; } } if (pbStr) { // Copy in the new string. cbStr = (uint16)(cchwStr * (vpec[ipec].cbBytesPerChar)); pNewRecord[irec].length = read(cbStr); if (ppec->cbBytesPerChar == sizeof(utf16)) { memcpy(pbNextString, pbStr, cbStr); TtfUtil::SwapWString(pbNextString, cbStr / sizeof(utf16)); // make big endian } else { // TODO: properly handle Macintosh encoding Platform_UnicodeToANSI((utf16 *)pbStr, cchwStr, (char *)pbNextString, cchwStr); } } else { // Copy the old string. cbStr = read(pOldRecord[irec].length); pbStr = pTblOld + ibStrOffsetOld + read(pOldRecord[irec].offset); memcpy(pbNextString, pbStr, cbStr); } pNewRecord[irec].offset = read(dibNew); dibNew += cbStr; pbNextString += cbStr; } // Then add the feature strings. Do this for all platform-encodings of interest. // The first time through, store the string data in the buffer and record the offsets // (do this once for 8-bit versions and once for 16-bit). For any subsequent platforms // and encodings, just use the same offsets. std::vector vdibOffsets8, vdibOffsets16; bool fStringsStored8 = false; bool fStringsStored16 = false; for (ipec = 0; ipec < signed(vpec.size()); ipec++) { PlatEncChange * ppec = &(vpec[ipec]); bool f8bit = (ppec->cbBytesPerChar != sizeof(utf16)); for (size_t istring = 0; istring < vstuExtNames.size(); istring++) { pNewRecord[irec].platform_id = read(ppec->platformID); pNewRecord[irec].platform_specific_id = read(ppec->encodingID); pNewRecord[irec].language_id = read(vnLangIds[istring]); pNewRecord[irec].name_id = read(vnNameTblIds[istring]); uint16 cbStr = (uint16)(vstuExtNames[istring].length() * ppec->cbBytesPerChar); // Convert the language IDs appropriately for the platform. uint16 platform_id = pNewRecord[irec].platform_id; uint16 specific_id = pNewRecord[irec].platform_specific_id; uint16 language_id = pNewRecord[irec].language_id; #if !WORDS_BIGENDIAN platform_id = rev16(platform_id); specific_id = rev16(specific_id); language_id = rev16(language_id); #endif if (platform_id == NameRecord::Macintosh && specific_id == 0) // Roman { // TODO: Convert common Windows language codes to Macintosh if (language_id != LG_USENG) { g_errorList.AddWarning(5506, NULL, "Windows language ID ", std::to_string(language_id), " cannot be converted to Macintosh; 0 (English) will be used"); } pNewRecord[irec].language_id = 0; // Macintosh English } else if (platform_id == 0 && specific_id == 3) // Unicode, >= 2.0 { if (language_id != LG_USENG) { g_errorList.AddWarning(5507, NULL, "Windows language ID ", std::to_string(language_id), " cannot be translated to Unicode 2.0; language 0 will be used"); } pNewRecord[irec].language_id = 0; // whatever, this is our best guess } // Convert from wchar_t to 16-bit chars. std::wstring stuWchar = vstuExtNames[istring]; std::copy(stuWchar.data(), stuWchar.data() + stuWchar.length(), rgch16); if (f8bit && !fStringsStored8) { vdibOffsets8.push_back(dibNew); // TODO: properly handle Macintosh encoding Platform_UnicodeToANSI(rgch16, cbStr, (char *)pbNextString, cbStr); dibNew += cbStr; pbNextString += cbStr; } else if (!f8bit && !fStringsStored16) { vdibOffsets16.push_back(dibNew); memcpy(pbNextString, rgch16, cbStr); TtfUtil::SwapWString(pbNextString, cbStr / sizeof(utf16)); // make big endian dibNew += cbStr; pbNextString += cbStr; } // else the string has already been stored, and we've saved the offset. pNewRecord[irec].length = read(cbStr); pNewRecord[irec].offset = (f8bit) ? read(vdibOffsets8[istring]): read(vdibOffsets16[istring]); irec++; } (f8bit) ? fStringsStored8 = true: fStringsStored16 = true; } Assert(irec == crecNew); // Sort list of entries. ::qsort(reinterpret_cast(pNewRecord), crecNew, sizeof(NameTblEntry), NameTblEntry::Compare); return true; } /*---------------------------------------------------------------------------------------------- Write the OS/2 table to the control file, using the table from the minimal font but copying key fields from the source font. 0-1 USHORT version = 0x0003 2-3 SHORT xAvgCharWidth 4-5 USHORT usWeightClass 6-7 USHORT usWidthClass 8-9 USHORT fsType 10-29 SHORT various offsets and sizes [10] 30-31 SHORT sFamilyClass 32-41 BYTE panose[10] 42-57 ULONG ulUnicodeRange 58-61 CHAR achVendID[4] 62-63 USHORT fsSelection 64-65 USHORT usFirstCharIndex 66-67 USHORT usLastCharIndex ...plus more stuff we don't care about ----------------------------------------------------------------------------------------------*/ #ifdef NDEBUG bool GrcManager::OutputOS2Table(uint8 * pOs2TblSrc, size_t /*cbOs2TblSrc*/, #else bool GrcManager::OutputOS2Table(uint8 * pOs2TblSrc, size_t cbOs2TblSrc, #endif uint8 * pOs2TblMin, size_t cbOs2TblMin, GrcBinaryStream * pbstrm, size_t & cbSizeRet) { Assert(cbOs2TblSrc >= 68); // number of bytes we may need to fiddle with Assert(cbOs2TblMin >= 68); uint8 * prgOs2TblNew = new uint8[cbOs2TblMin]; if (!prgOs2TblNew) return false; // Initialize with minimal font table. memcpy(prgOs2TblNew, pOs2TblMin, sizeof(uint8) * cbOs2TblMin); // Overwrite key fields with information from the source font. // weight class: 16 bits (2 bytes) memcpy(prgOs2TblNew + 4, pOs2TblSrc + 4, sizeof(uint16)); // fsType: 16 bits (2 bytes) memcpy(prgOs2TblNew + 8, pOs2TblSrc + 8, sizeof(uint16)); // family class: 16 bits (2 bytes) memcpy(prgOs2TblNew + 30, pOs2TblSrc + 30, sizeof(uint16)); // char range: 4 32-bit values (16 bytes) memcpy(prgOs2TblNew + 42, pOs2TblSrc + 42, sizeof(uint8)*4 * 4); // max Unicode value: 16 bits (2 bytes) memcpy(prgOs2TblNew + 64, pOs2TblSrc + 64, sizeof(uint16)); // min Unicode value: 16 bits (2 bytes) memcpy(prgOs2TblNew + 66, pOs2TblSrc + 66, sizeof(uint16)); // Write the result onto the output stream. pbstrm->Write(prgOs2TblNew, cbOs2TblMin); cbSizeRet = cbOs2TblMin; delete[] prgOs2TblNew; return true; } /*---------------------------------------------------------------------------------------------- Write the cmap table to the control file. We are outputting a copy of the cmap in the source file, with every supported character pointing at some bogus glyph (ie, square box). ----------------------------------------------------------------------------------------------*/ bool GrcManager::OutputCmapTable(uint8 * pCmapTblSrc, size_t /*cbCmapTblSrc*/, GrcBinaryStream * pbstrm, size_t & cbSizeRet) { auto lPosStart = pbstrm->Position(); // See if we can get the USC-4 subtable. void * pCmap_3_10 = TtfUtil::FindCmapSubtable(pCmapTblSrc, 3, 10); // Regardless, we should be able to find a 16-bit table. // First try UTF-16 table: platform 3 encoding 1 int nEncID = 1; void * pCmap_3_1 = TtfUtil::FindCmapSubtable(pCmapTblSrc, 3, 1); if (pCmap_3_1 == NULL) { // Try the platform 3 encoding 0 table instead (symbol font) pCmap_3_1 = TtfUtil::FindCmapSubtable(pCmapTblSrc, 3, 0); if (pCmap_3_1) nEncID = 0; } // Note that even if we found the 3-10 table, we're supposed to store a 3-1 table // as well for backward-compatibility; // see http://www.microsoft.com/typography/OTSPEC/cmap.htm#language // version pbstrm->WriteShort(0); // number of subtables auto lPosTableCnt = pbstrm->Position(); if (pCmap_3_10) pbstrm->WriteShort(2); // both formats else pbstrm->WriteShort(1); // just 16-bit // subtable info pbstrm->WriteShort(3); // platform ID pbstrm->WriteShort(nEncID); // encoding ID: 1 or 0 auto lPosOffset31 = pbstrm->Position(); pbstrm->WriteInt(0); // offset offset_t lPos310Dir = pbstrm->Position(), lPosOffset310 = 0; if (pCmap_3_10) { pbstrm->WriteShort(3); // platform ID pbstrm->WriteShort(10); // encoding ID lPosOffset310 = pbstrm->Position(); pbstrm->WriteInt(0); // offset: fill in later } else { // Just in case we find out we have to output a 3-10 table after all, leave // space for it in the directory. pbstrm->WriteShort(0); pbstrm->WriteShort(0); pbstrm->WriteInt(0); } auto ibOffset31 = pbstrm->Position() - lPosStart; bool fNeed310; OutputCmap31Table( (pCmap_3_1) ? pCmap_3_1 : pCmap_3_10, pbstrm, (pCmap_3_1 == NULL), &fNeed310); // fill in the offset auto lPosEnd = pbstrm->Position(); pbstrm->SetPosition(lPosOffset31); pbstrm->WriteInt(ibOffset31); if (fNeed310) { // We'll have to output a 3-10 table after all. Go back and put information // about it in the directory. pbstrm->SetPosition(lPosTableCnt); pbstrm->WriteShort(2); // both formats pbstrm->SetPosition(lPos310Dir); pbstrm->WriteShort(3); // platform ID pbstrm->WriteShort(10); // encoding ID lPosOffset310 = pbstrm->Position(); pbstrm->WriteInt(0); // offset: fill in later } pbstrm->SetPosition(lPosEnd); if (pCmap_3_10 || fNeed310) { auto ibOffset310 = pbstrm->Position() - lPosStart; OutputCmap310Table((pCmap_3_10) ? pCmap_3_10 : pCmap_3_1, pbstrm, (pCmap_3_10 == NULL)); // fill in the offset lPosEnd = pbstrm->Position(); pbstrm->SetPosition(lPosOffset310); pbstrm->WriteInt(ibOffset310); pbstrm->SetPosition(lPosEnd); } cbSizeRet = size_t(lPosEnd - lPosStart); return true; } /*---------------------------------------------------------------------------------------------- Write the format 4.0 cmap (platform 3 encoding 1) subtable to the control file. Make every glyph point at the square box. Return the number of bytes in the table. Generally it is also reading from a 3-1 table as well, but if we don't have one, we may need to generate a 3-1 table from a 3-10 table (format 12). We can't output a 4.0 format to include more than 8190 [= (65535 - 14) / 8)] codepoints, because the length field is only 16 bits, and because of the lack of compression we use up 8 bytes per codepoint! So if we have more than that number, we have to truncate the 3-1 table, and also make sure to output a 3-10 table which can be quite a bit longer. ----------------------------------------------------------------------------------------------*/ size_t GrcManager::OutputCmap31Table(void * pCmapSubTblSrc, GrcBinaryStream * pbstrm, bool fFrom310, bool * pfNeed310) { auto lPosStart = pbstrm->Position(); int cch = 0; // number of codepoints in the map // format pbstrm->WriteShort(4); // length: fill in later auto lPosLen = pbstrm->Position(); pbstrm->WriteShort(0); // language (irrelevant except on Macintosh) pbstrm->WriteShort(0); // search variables: fill in later auto lPosSearch = pbstrm->Position(); pbstrm->WriteShort(0); pbstrm->WriteShort(0); pbstrm->WriteShort(0); pbstrm->WriteShort(0); // Generate the list of supported characters. utf16 rgchChars[65535]; std::vector vichGroupStart; //std::vector vcchGroupSize; int cGroups = 0; bool fTruncated = false; int key = 0; // for optimizing next-codepoint lookup int ch = (fFrom310) ? TtfUtil::Cmap310NextCodepoint(pCmapSubTblSrc, 0, &key) : TtfUtil::Cmap31NextCodepoint(pCmapSubTblSrc, 0, &key); while (ch < 0xFFFF) { rgchChars[cch] = ch; if (cch == 0 || ch != rgchChars[cch - 1] + 1) { vichGroupStart.push_back(cch); cGroups++; } cch++; ch = (fFrom310) ? TtfUtil::Cmap310NextCodepoint(pCmapSubTblSrc, ch, &key) : TtfUtil::Cmap31NextCodepoint(pCmapSubTblSrc, ch, &key); // If we're over the limit of what the subtable can handle, truncate. int cbNeeded = 14 // header + (cGroups * 8) // group information + (cch * 2) // glyphIdArray + 10; // final FFFF if (cbNeeded >= 0xFFFF) // 65535 is limit on subtable length { if (vichGroupStart[cGroups - 1] == cch - 1) { vichGroupStart.pop_back(); cGroups--; } cch--; ch = 0xFFFF; fTruncated = true; } } rgchChars[cch] = 0xFFFF; // this must always be last vichGroupStart.push_back(cch); cGroups++; cch++; // Output the ranges of characters. // End codes int iGroup; for (iGroup = 0; iGroup < cGroups - 1; iGroup++) pbstrm->WriteShort(rgchChars[vichGroupStart[iGroup+1] - 1]); pbstrm->WriteShort(0xFFFF); // reserved pad pbstrm->WriteShort(0); // Start codes for (iGroup = 0; iGroup < cGroups; iGroup++) pbstrm->WriteShort(rgchChars[vichGroupStart[iGroup]]); // id delta: not used; pad with zeros for (iGroup = 0; iGroup < cGroups; iGroup++) pbstrm->WriteShort(0); // id range array: each element holds the offset (in bytes) from the element // itself down to the corresponding glyphIdArray element (this works because // glyphIdArray immediately follows idRangeArray). int cchSoFar = 0; for (iGroup = 0; iGroup < cGroups - 1; iGroup++) { int nStart = rgchChars[vichGroupStart[iGroup]]; int nEnd = rgchChars[vichGroupStart[iGroup+1] - 1]; int nRangeOffset = (cGroups - iGroup + cchSoFar) * 2; // *2 for bytes, not wchars pbstrm->WriteShort(nRangeOffset); cchSoFar += (nEnd - nStart + 1); } pbstrm->WriteShort((1 + cchSoFar) * 2); cchSoFar++; // glyphIdArray: all characters point to our special square box, // except for the space character. for (int ich = 0; ich < cch; ich++) { if (rgchChars[ich] == kchwSpace) pbstrm->WriteShort(2); else if (rgchChars[ich] == 0xFFFF) // invalid pbstrm->WriteShort(0); else pbstrm->WriteShort(3); } auto lPosEnd = pbstrm->Position(); // Fill in the length. size_t cb = size_t(lPosEnd - lPosStart); pbstrm->SetPosition(lPosLen); pbstrm->WriteShort(cb); // Fill in the search variables; note that these are byte-based and so are multiplied by 2, // unlike what is done in the Graphite tables. int nPowerOf2, nLog; BinarySearchConstants(cGroups, &nPowerOf2, &nLog); pbstrm->SetPosition(lPosSearch); pbstrm->WriteShort(cGroups << 1); // * 2 pbstrm->WriteShort(nPowerOf2 << 1); // * 2 pbstrm->WriteShort(nLog); pbstrm->WriteShort((cGroups - nPowerOf2) << 1); // * 2 pbstrm->SetPosition(lPosEnd); if (fTruncated) { g_errorList.AddWarning(5502, NULL, "cmap format 4 subtable truncated--does not match format 12 subtable"); } *pfNeed310 = fTruncated; return cb; } #if 0 // Old approach that uses one segment per codepoint. int GrcManager::OutputCmap31Table(void * pCmapSubTblSrc, GrcBinaryStream * pbstrm, bool fFrom310, bool * pfNeed310) { // Maximum number of codepoints this table can hold, given the lack of compression // we can do. const int cchMax = 8188; // = ((65535 - 14) / 8) - 2 auto lPosStart = pbstrm->Position(); int cch = 0; // number of items in the map // format pbstrm->WriteShort(4); // length: fill in later int lPosLen = pbstrm->Position(); pbstrm->WriteShort(0); // language (irrelevant except on Macintosh) pbstrm->WriteShort(0); // search variables: fill in later int lPosSearch = pbstrm->Position(); pbstrm->WriteShort(0); pbstrm->WriteShort(0); pbstrm->WriteShort(0); pbstrm->WriteShort(0); // Generate the list of supported characters. utf16 rgchChars[65535]; int key = 0; // for optimizing next-codepoint lookup int ch = (fFrom310) ? TtfUtil::Cmap310NextCodepoint(pCmapSubTblSrc, 0, &key) : TtfUtil::Cmap31NextCodepoint(pCmapSubTblSrc, 0, &key); while (ch < 0xFFFF) { rgchChars[cch] = ch; cch++; ch = (fFrom310) ? TtfUtil::Cmap310NextCodepoint(pCmapSubTblSrc, ch, &key) : TtfUtil::Cmap31NextCodepoint(pCmapSubTblSrc, ch, &key); } rgchChars[cch] = 0xFFFF; // this must always be last cch++; // Only output the maximum we can handle; see comment above. int cchOutput; if (cch > cchMax) { cchOutput = cchMax; // If we're truncating this table, we need a 3-10 table that can // handle it all properly. *pfNeed310 = true; rgchChars[cchOutput - 1] = 0xFFFF; // must be the last character } else { cchOutput = cch; *pfNeed310 = false; Assert(rgchChars[cchOutput - 1] == 0xFFFF); } // Output the ranges of characters. Each character is in its own range. // End codes int ich; for (ich = 0; ich < cchOutput; ich++) pbstrm->WriteShort(rgchChars[ich]); // reserved pad pbstrm->WriteShort(0); // Start codes for (ich = 0; ich < cchOutput; ich++) pbstrm->WriteShort(rgchChars[ich]); // id delta: set so that all the mappings point to glyph 0 for (ich = 0; ich < cchOutput; ich++) { if (rgchChars[ich] == kchwSpace) pbstrm->WriteShort((rgchChars[ich] * - 1) + 2); // space is glyph #2; TODO: make this match minimal font else pbstrm->WriteShort(rgchChars[ich] * -1); } // id range array: not used for (ich = 0; ich < cchOutput; ich++) pbstrm->WriteShort(0); auto lPosEnd = pbstrm->Position(); // Fill in the length. int cb = lPosEnd - lPosStart; pbstrm->SetPosition(lPosLen); pbstrm->WriteShort(cb); // Fill in the search variables; note that these are byte-based and so are multiplied by 2, // unlike what is done in the Graphite tables. int nPowerOf2, nLog; BinarySearchConstants(cchOutput, &nPowerOf2, &nLog); pbstrm->SetPosition(lPosSearch); pbstrm->WriteShort(cchOutput << 1); // * 2 pbstrm->WriteShort(nPowerOf2 << 1); // * 2 pbstrm->WriteShort(nLog); pbstrm->WriteShort((cchOutput - nPowerOf2) << 1); // * 2 pbstrm->SetPosition(lPosEnd); return cb; } #endif /*---------------------------------------------------------------------------------------------- Write the format 12 (platform 3 encoding 10) cmap subtable to the control file. Make every glyph point at the square box. Return the number of bytes in the table. Normally we will be generating the 3-10 table from the original 3-10 table. But in the case of a source font with a very large number of glyphs but no 3-10 table, we will generate it from the 3-1 table. ----------------------------------------------------------------------------------------------*/ size_t GrcManager::OutputCmap310Table(void * pCmapSubTblSrc, GrcBinaryStream * pbstrm, bool fFrom31) { auto lPosStart = pbstrm->Position(); int cch = 0; // number of items in the map // format pbstrm->WriteShort(12); // reserved pbstrm->WriteShort(0); // length: fill in later auto lPosLen = pbstrm->Position(); pbstrm->WriteInt(0); // language (irrelevant except on Macintosh) pbstrm->WriteInt(0); // number of groups: fill in later auto lPosNum = pbstrm->Position(); pbstrm->WriteInt(0); // Output the ranges of characters. Each character is in its own group. unsigned int chLast = (fFrom31) ? 0xFFFF : 0x10FFFF; int key = 0; // for optimizing next-codepoint lookup unsigned int ch = (fFrom31) ? TtfUtil::Cmap31NextCodepoint(pCmapSubTblSrc, 0, &key) : TtfUtil::Cmap310NextCodepoint(pCmapSubTblSrc, 0, &key); while (ch != chLast) { // start code pbstrm->WriteInt(ch); // end code pbstrm->WriteInt(ch); // glyph id if (ch == kchwSpace) pbstrm->WriteInt(2); // space is glyph #2; TODO: make this match minimal font else pbstrm->WriteInt(0); cch++; ch = (fFrom31) ? TtfUtil::Cmap31NextCodepoint(pCmapSubTblSrc, ch, &key) : TtfUtil::Cmap310NextCodepoint(pCmapSubTblSrc, ch, &key); } auto lPosEnd = pbstrm->Position(); // Fill in the length. auto cb = lPosEnd - lPosStart; pbstrm->SetPosition(lPosLen); pbstrm->WriteInt(cb); // Fill in the number of groups. pbstrm->SetPosition(lPosNum); pbstrm->WriteInt(cch); pbstrm->SetPosition(lPosEnd); return size_t(cb); } /*---------------------------------------------------------------------------------------------- Write the Sile table onto the stream. ----------------------------------------------------------------------------------------------*/ void GrcManager::OutputSileTable(GrcBinaryStream * pbstrm, utf16 * pchSrcFontFamily, char * pchSrcFileName, unsigned int luMasterChecksum, unsigned int * pnCreateTime, unsigned int * pnModifyTime, int * pibOffset, int * pcbSize) { *pibOffset = int(pbstrm->Position()); // version int fxd = VersionForTable(ktiSile); pbstrm->WriteInt(fxd); // master check sum from source font pbstrm->WriteInt(luMasterChecksum); // create and modify times of source font pbstrm->WriteInt(pnCreateTime[0]); pbstrm->WriteInt(pnCreateTime[1]); pbstrm->WriteInt(pnModifyTime[0]); pbstrm->WriteInt(pnModifyTime[1]); // source font family name auto cchFontFamily = utf16len(pchSrcFontFamily); pbstrm->WriteShort(cchFontFamily); for (auto ich = 0U; ich < cchFontFamily; ++ich) pbstrm->WriteShort(pchSrcFontFamily[ich]); pbstrm->WriteByte(0); // source font file auto cchFile = strlen(pchSrcFileName); pbstrm->WriteShort(cchFile); pbstrm->Write(pchSrcFileName, cchFile); pbstrm->WriteByte(0); // handle size and padding auto lPos = pbstrm->Position(); *pcbSize = int(lPos - *pibOffset); pbstrm->SeekPadLong(lPos); } /*---------------------------------------------------------------------------------------------- Write the Gloc and Glat tables onto the stream. ----------------------------------------------------------------------------------------------*/ void GrcManager::OutputGlatAndGloc(GrcBinaryStream * pbstrm, int * pnGlocOffset, int * pnGlocSize, int * pnGlatOffset, int * pnGlatSize) { std::vector vibGlyphOffsets(m_cwGlyphIDs+1); Symbol psymBw = m_psymtbl->FindSymbol("breakweight"); int nAttrIdBw = psymBw->InternalID(); //Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "0", "stretch")); Symbol psymJStr = m_psymtbl->FindSymbol(GrcStructName("justify", "stretch")); int nAttrIdJStr = psymJStr->InternalID(); // Output the Glat table, recording the offsets in the array. *pnGlatOffset = int(pbstrm->Position()); const int fxdGlatVersion = TableVersion(ktiGlat); GrcDiversion dstrm(*pbstrm); pbstrm->WriteInt(fxdGlatVersion); // version number bool fOutputOctaboxes = m_prndr->HasCollisionPass(); size_t cbOutput = 4; // first glyph starts after the version number if (fxdGlatVersion >= 0x00030000) { // If we're using a version 3 table we start after compression // scheme + reserved flags DWORD. // For now we force octabox generation on fOutputOctaboxes = true; pbstrm->WriteInt(fOutputOctaboxes); cbOutput += 4; } Assert(fxdGlatVersion < 0x00030000 || fOutputOctaboxes); gid16 wGlyphID; for (wGlyphID = 0; wGlyphID < m_cwGlyphIDs; wGlyphID++) { vibGlyphOffsets[wGlyphID] = cbOutput; if (fOutputOctaboxes) { // Output glyph-approximation octaboxes. if (wGlyphID < m_wGlyphIDLim && wGlyphID < (int)m_vgbdy.size()) cbOutput += m_vgbdy[wGlyphID].OutputToGlat(pbstrm); else cbOutput += GlyphBoundaries::OutputToGlatNonexistent(pbstrm); } // Convert breakweight values depending on the table version to output. ConvertBwForVersion(wGlyphID, nAttrIdBw); // Split any large stretch values into two 16-bit words. SplitLargeStretchValue(wGlyphID, nAttrIdJStr); int nAttrIDMin = 0; while (nAttrIDMin < signed(m_vpsymGlyphAttrs.size())) { int nValue; // Skip undefined and zero-valued attributes. while (nAttrIDMin < signed(m_vpsymGlyphAttrs.size()) && FinalAttrValue(wGlyphID, nAttrIDMin) == 0) { nAttrIDMin++; } int nAttrIDLim = nAttrIDMin; std::vector vnValues; while (nAttrIDLim < signed(m_vpsymGlyphAttrs.size()) && (nAttrIDLim - nAttrIDMin + 1) < 256 && ((nValue = FinalAttrValue(wGlyphID, nAttrIDLim)) != 0)) { nAttrIDLim++; // TODO SharonC: Test that the value fits in 16 bits. vnValues.push_back(nValue); } // We've found a run of non-zero attributes. Output them. Assert(nAttrIDLim - nAttrIDMin == static_cast(vnValues.size())); if (nAttrIDLim > nAttrIDMin) { size_t cbHeader; if (fxdGlatVersion < 0x00020000) { Assert(nAttrIDLim - nAttrIDMin < 256); pbstrm->WriteByte(nAttrIDMin); pbstrm->WriteByte(nAttrIDLim - nAttrIDMin); cbHeader = 2; } else { Assert(nAttrIDLim - nAttrIDMin < 65536); pbstrm->WriteShort(nAttrIDMin); pbstrm->WriteShort(nAttrIDLim - nAttrIDMin); cbHeader = 4; } for (size_t i = 0; i < vnValues.size(); i++) pbstrm->WriteShort(vnValues[i]); cbOutput += (vnValues.size() * 2) + cbHeader; } nAttrIDMin = nAttrIDLim; } } // Final offset to give total length. vibGlyphOffsets[m_cwGlyphIDs] = cbOutput; double nOriginalSize = double(dstrm.str().size()); if (!Compress(dstrm)) g_errorList.AddWarning(5508, NULL, "The Glat table is incompressible and will not be compressed."); nOriginalSize /= dstrm.str().size(); NoteCompressionRatio(ktiGlat, nOriginalSize); dstrm.undivert(); // handle size and padding auto nTmp = pbstrm->Position(); *pnGlatSize = int(nTmp - *pnGlatOffset); pbstrm->SeekPadLong(nTmp); // Output the Gloc table. *pnGlocOffset = int(pbstrm->Position()); int fxd = VersionForTable(ktiGloc); pbstrm->WriteInt(fxd); // version number SetTableVersion(ktiGloc, fxd); // flags utf16 wFlags = 0; bool fNeedLongFormat = (cbOutput >= 0x0000FFFF); bool fAttrNames = false; if (fNeedLongFormat) wFlags |= 0x0001; if (fAttrNames) wFlags |= 0x0002; pbstrm->WriteShort(wFlags); // number of attributes pbstrm->WriteShort(m_vpsymGlyphAttrs.size()); // offsets if (fNeedLongFormat) for (auto const ibGlyphOffset: vibGlyphOffsets) pbstrm->WriteInt(ibGlyphOffset); else for (auto const ibGlyphOffset: vibGlyphOffsets) pbstrm->WriteShort(ibGlyphOffset); // handle size and padding nTmp = pbstrm->Position(); *pnGlocSize = int(nTmp - *pnGlocOffset); pbstrm->SeekPadLong(nTmp); // debug names Assert(!fAttrNames); } /*---------------------------------------------------------------------------------------------- Return the final attribute value, resolved to an integer. ----------------------------------------------------------------------------------------------*/ int GrcManager::FinalAttrValue(gid16 wGlyphID, int nAttrID) { if (m_cpsymBuiltIn <= unsigned(nAttrID) && unsigned(nAttrID) < m_cpsymBuiltIn + m_cpsymComponents) { Assert(!m_pgax->Defined(wGlyphID, nAttrID)); if (!m_plclist->FindComponentFor(wGlyphID, nAttrID)) return 0; else // What does this really mean?? return int(m_cpsymBuiltIn + m_cpsymComponents) + (kFieldsPerComponent * nAttrID); } else { if (!m_pgax->Defined(wGlyphID, nAttrID)) return 0; GdlExpression * pexpValue = m_pgax->GetExpression(wGlyphID, nAttrID); if (pexpValue == NULL) return 0; int nValue; bool f = pexpValue->ResolveToInteger(&nValue, false); Assert(f); if (!f) return 0; return nValue; } } /*---------------------------------------------------------------------------------------------- Convert the breakweight value to the one appropriate for the version of the table being generated. ----------------------------------------------------------------------------------------------*/ void GrcManager::ConvertBwForVersion(gid16 wGlyphID, int nAttrIdBw) { int lb = FinalAttrValue(wGlyphID, nAttrIdBw); int lbOut; if (VersionForTable(ktiSilf) < 0x00020000) { switch(lb) { //case klbWsBreak: lbOut = klbv1WordBreak; break; case klbWordBreak: lbOut = klbv1WordBreak; break; case klbLetterBreak: lbOut = klbv1LetterBreak; break; case klbClipBreak: lbOut = klbv1ClipBreak; break; default: lbOut = lb; } } else { switch(lb) { //case klbWsBreak: lbOut = klbv2WsBreak; break; case klbWordBreak: lbOut = klbv2WordBreak; break; case klbLetterBreak: lbOut = klbv2LetterBreak; break; case klbClipBreak: lbOut = klbv2ClipBreak; break; default: lbOut = lb; } } if (lb != lbOut) { GdlExpression * pexpOld; int nPR; int munitPR; bool fOverride, fShadow; GrpLineAndFile lnf; m_pgax->Get(wGlyphID, nAttrIdBw, &pexpOld, &nPR, &munitPR, &fOverride, &fShadow, &lnf); GdlExpression * pexpNew = new GdlNumericExpression(lbOut); m_vpexpModified.push_back(pexpNew); pexpNew->CopyLineAndFile(*pexpOld); m_pgax->Set(wGlyphID, nAttrIdBw, pexpNew, nPR, munitPR, true, false, lnf); } } /*---------------------------------------------------------------------------------------------- Convert the specification version number requested by the user into the actual version for the given table. @param ti - table index ----------------------------------------------------------------------------------------------*/ int GrcManager::VersionForTable(int ti) { return VersionForTable(ti, SilfTableVersion()); } int GrcManager::VersionForTable(int ti, int fxdSpecVersion) { switch (ti) { case ktiGloc: if (fxdSpecVersion >= 0x00040001) // Thisi s a kludge to allow the Graphite2 engine to recognize // the Glat 3.0 table: return 0x00010001; else return 0x00010000; case ktiGlat: if (fxdSpecVersion >= 0x00040001) return 0x00030000; else return 0x00010000; case ktiFeat: return m_fxdFeatVersion; case ktiSile: return 0x00010000; case ktiSill: return 0x00010000; case ktiSilf: if (fxdSpecVersion == 0x00010000) return 0x00010000; else if (fxdSpecVersion <= kfxdMaxSilfVersion) return fxdSpecVersion; else // No version specified, or an invalid version: return g_cman.DefaultSilfVersion(); default: Assert(false); } return fxdSpecVersion; } /*---------------------------------------------------------------------------------------------- Return the version of the action commands to use for the rules. ----------------------------------------------------------------------------------------------*/ int GrcManager::VersionForRules() { int fxdRules = VersionForTable(ktiSilf); if (this->TableVersion(ktiGlat) > 0x00010000) { // If we have a large number of glyph attributes, we must use a later version of // the rule action code that will generate the appropriate versions of PushGlyphAttr. fxdRules = max(fxdRules, 0x00030000); } return fxdRules; } /*---------------------------------------------------------------------------------------------- Set and return the version of the Silf table that is needed - to handle the size of the class map (replacement class data) or collision fixes. ----------------------------------------------------------------------------------------------*/ int GrcManager::CalculateSilfVersion(int fxdSilfSpecVersion) { int fxdResult = fxdSilfSpecVersion; if (m_tcCompressor != ktcNone && fxdResult < 0x00050000) { fxdResult = 0x00050000; } if (m_prndr->HasCollisionPass() && fxdResult < 0x00040001) { fxdResult = 0x00040001; } if (this->IncludePassOptimizations() && fxdResult < 0x00040000) { // Although earlier versions of the Silf table have space for the skip-passes attribute, // OTS will complain if the value is anything other than zero. So bump up the version // to match. fxdResult = 0x00040000; } if (fxdResult < 0x00040000) { // Calculate it based on what is needed to handle the size of the class map // (replacement class data). size_t cbSpaceNeeded; // # of bytes needed = max offset // number of classes cbSpaceNeeded = 4; // the offsets to classes themselves, assuming short ints cbSpaceNeeded += (m_vpglfcReplcmtClasses.size() + 1) * 2; // Space needed for the class glyph lists for (int ipglfc = 0; ipglfc < m_cpglfcLinear; ipglfc++) { GdlGlyphClassDefn * pglfc = m_vpglfcReplcmtClasses[ipglfc]; Assert(pglfc->ReplcmtOutputClass() || pglfc->GlyphIDCount() <= 1); //Assert(pglfc->ReplcmtOutputID() == cTmp); std::vector vwGlyphs; pglfc->GenerateOutputGlyphList(vwGlyphs); cbSpaceNeeded += vwGlyphs.size() * 2; } // indexed classes (input) for (int ipglfc = m_cpglfcLinear; ipglfc < signed(m_vpglfcReplcmtClasses.size()); ipglfc++) { GdlGlyphClassDefn * pglfc = m_vpglfcReplcmtClasses[ipglfc]; Assert(pglfc->ReplcmtInputClass()); //Assert(pglfc->ReplcmtInputID() == cTmp); std::vector vwGlyphs; std::vector vnIndices; pglfc->GenerateInputGlyphList(vwGlyphs, vnIndices); int n = signed(vwGlyphs.size()); cbSpaceNeeded += 8; // search constants cbSpaceNeeded += vwGlyphs.size() * 4; } if (cbSpaceNeeded > 0xFFFF) { // Offsets won't all fit in short ints; we need long ints. fxdResult = 0x00040000; } } if (fxdResult > fxdSilfSpecVersion) { if (UserSpecifiedVersion()) g_errorList.AddWarning(5504, NULL, "Version ", VersionString(fxdSilfSpecVersion), " of the Silf table is inadequate for your specification; version ", VersionString(fxdResult), " will be generated instead."); // else // g_errorList.AddWarning(5505, NULL, // "Version ", // VersionString(fxdResult), // " of the Silf table will be generated."); } SetTableVersion(ktiSilf, fxdResult); return fxdResult; } /*---------------------------------------------------------------------------------------------- Split any really large stretch values into two 16-bit words. Store the high word in the stretchHW attribute. These are guaranteed to follow the list of stretch attributes (see GrcSymbolTable::AssignInternalGlyphAttrIDs). ----------------------------------------------------------------------------------------------*/ void GrcManager::SplitLargeStretchValue(gid16 wGlyphID, int nAttrIdJStr) { int cJLevels = NumJustLevels(); for (int nJLev = 0; nJLev < cJLevels; nJLev++) { unsigned int nStretch = FinalAttrValue(wGlyphID, nAttrIdJStr + nJLev); if (nStretch > 0x0000FFFF) { unsigned int nStretchLW = nStretch & 0x0000FFFF; unsigned int nStretchHW = (nStretch & 0xFFFF0000) >> 16; int nAttrIdJStrHW = nAttrIdJStr + cJLevels; GdlExpression * pexpOld; int nPR; int munitPR; bool fOverride, fShadow; GrpLineAndFile lnf; m_pgax->Get(wGlyphID, nAttrIdJStr, &pexpOld, &nPR, &munitPR, &fOverride, &fShadow, &lnf); GdlExpression * pexpNew = new GdlNumericExpression(nStretchLW); m_vpexpModified.push_back(pexpNew); pexpNew->CopyLineAndFile(*pexpOld); m_pgax->Set(wGlyphID, nAttrIdJStr, pexpNew, nPR, munitPR, true, false, lnf); pexpNew = new GdlNumericExpression(nStretchHW); m_vpexpModified.push_back(pexpNew); pexpNew->CopyLineAndFile(*pexpOld); m_pgax->Set(wGlyphID, nAttrIdJStrHW, pexpNew, nPR, munitPR, true, false, lnf); } } } /*---------------------------------------------------------------------------------------------- Write the Silf table and related subtables to the stream. ----------------------------------------------------------------------------------------------*/ void GrcManager::OutputSilfTable(GrcBinaryStream * pbstrm, int * pnSilfOffset, int * pnSilfSize) { *pnSilfOffset = int(pbstrm->Position()); int fxdSilfVersion = VersionForTable(ktiSilf); fxdSilfVersion = CalculateSilfVersion(fxdSilfVersion); SetTableVersion(ktiSilf, fxdSilfVersion); // Divert output destined for the disk to a memory buffer. GrcDiversion dstrm(*pbstrm); // version number pbstrm->WriteInt(fxdSilfVersion); SetCompilerVersionFor(fxdSilfVersion); // compiler version if (fxdSilfVersion >= 0x00030000) { pbstrm->WriteInt(CompilerVersion()); } // number of sub-tables pbstrm->WriteShort(1); if (fxdSilfVersion >= 0x00030000) { // reserved - pad bytes pbstrm->WriteShort(0); // offset of zeroth table relative to the start of this table pbstrm->WriteInt(sizeof(int) * 3 + sizeof(utf16) * 2); } else if (fxdSilfVersion >= 0x00020000) { // reserved - pad bytes pbstrm->WriteShort(0); // offset of zeroth table relative to the start of this table pbstrm->WriteInt(sizeof(int) * 2 + sizeof(utf16) * 2); } else // offset of zeroth table relative to the start of this table pbstrm->WriteInt(sizeof(int) + sizeof(utf16) + sizeof(int)); // Sub-table auto lTableStartSub = pbstrm->Position(); // rule version - right now this is the same as the table version if (fxdSilfVersion >= 0x00030000) pbstrm->WriteInt(fxdSilfVersion); auto lOffsetsPos = pbstrm->Position(); if (fxdSilfVersion >= 0x00030000) { // Place holders for offsets to passes and pseudo-glyphs. pbstrm->WriteShort(0); pbstrm->WriteShort(0); } // maximum valid glyph ID pbstrm->WriteShort(m_cwGlyphIDs - 1); // extra ascent GdlNumericExpression * pexp = m_prndr->ExtraAscent(); if (pexp) pbstrm->WriteShort(pexp->Value()); else pbstrm->WriteShort(0); // extra descent pexp = m_prndr->ExtraDescent(); if (pexp) pbstrm->WriteShort(pexp->Value()); else pbstrm->WriteShort(0); // number of passes size_t cpass, cpassLB, cpassSub, cpassPos, cpassJust; int ipassBidi; m_prndr->CountPasses(cpass, cpassLB, cpassSub, cpassJust, cpassPos, ipassBidi); pbstrm->WriteByte(cpass); // first substitution pass pbstrm->WriteByte(cpassLB); // first positioning pass pbstrm->WriteByte(cpassLB + cpassSub + cpassJust); // first justification pass if (fxdSilfVersion < 0x00020000) pbstrm->WriteByte(cpass); else pbstrm->WriteByte(cpassLB + cpassSub); // index of bidi pass pbstrm->WriteByte(ipassBidi); // flags: line-break and space contextuals int nFlags = m_prndr->LineBreakFlags() | m_prndr->SpaceContextualFlags(); /////int nFlags = m_prndr->LineBreakFlags(); /////Assert(nFlags < 4); if (m_prndr->HasCollisionPass()) nFlags |= 0x0020; pbstrm->WriteByte(nFlags); // ranges for cross-line-boundary contextualization pbstrm->WriteByte(m_prndr->PreXlbContext()); pbstrm->WriteByte(m_prndr->PostXlbContext()); // the fake glyph attribute that is used to store the actual glyph ID for pseudo-glyphs Symbol psym = m_psymtbl->FindSymbol("*actualForPseudo*"); pbstrm->WriteByte(psym->InternalID()); // breakweight attribute ID psym = m_psymtbl->FindSymbol("breakweight"); pbstrm->WriteByte(psym->InternalID()); // directionality attribute ID psym = m_psymtbl->FindSymbol("directionality"); pbstrm->WriteByte(psym->InternalID()); if (fxdSilfVersion >= 0x00020000) { // first mirror attribute ID psym = m_psymtbl->FindSymbol(GrcStructName("mirror", "glyph")); pbstrm->WriteByte(psym->InternalID()); // See also collision.flag attribute ID below if (this->IncludePassOptimizations()) { // built-in attribute that stores the pass optimization flags psym = m_psymtbl->FindSymbol(GrcStructName("*skipPasses*")); pbstrm->WriteByte(psym->InternalID()); } else // reserved (pad byte) pbstrm->WriteByte(0); if (m_fBasicJust) { pbstrm->WriteByte(0); // number of levels } else { // number of levels pbstrm->WriteByte(1); // justify.0.stretch attribute ID GrcStructName xnsJStretch("justify", "stretch"); psym = m_psymtbl->FindSymbol(xnsJStretch); Assert(psym); pbstrm->WriteByte(psym->InternalID()); // justify.0.shrink attribute ID GrcStructName xnsJShrink("justify", "shrink"); psym = m_psymtbl->FindSymbol(xnsJShrink); Assert(psym); pbstrm->WriteByte(psym->InternalID()); // justify.0.step attribute ID GrcStructName xnsJStep("justify", "step"); psym = m_psymtbl->FindSymbol(xnsJStep); Assert(psym); pbstrm->WriteByte(psym->InternalID()); // justify.0.weight attribute ID GrcStructName xnsJWeight("justify", "weight"); psym = m_psymtbl->FindSymbol(xnsJWeight); //Assert(psym); pbstrm->WriteByte(psym ? psym->InternalID() : -1); // runto pbstrm->WriteByte(0); // reserved (pad bytes) pbstrm->WriteByte(0); pbstrm->WriteByte(0); pbstrm->WriteByte(0); } } // number of initial attributes that represent ligature components pbstrm->WriteShort(m_cpsymComponents); // number of user-defined slot attributes pbstrm->WriteByte(m_prndr->NumUserDefn()); // max number of ligature components pbstrm->WriteByte(m_prndr->NumLigComponents()); // directions supported gr::byte grfsdc = m_prndr->ScriptDirections(); grfsdc = (grfsdc == 0) ? static_cast(kfsdcHorizLtr) : grfsdc; // supply default--left-to-right pbstrm->WriteByte(grfsdc); if (fxdSilfVersion >= 0x00040001) { // first collision attribute ID psym = m_psymtbl->FindSymbol(GrcStructName("collision", "flags")); pbstrm->WriteByte(psym->InternalID()); } else { // reserved (pad bytes) pbstrm->WriteByte(0); } // reserved (pad bytes) pbstrm->WriteByte(0); pbstrm->WriteByte(0); if (fxdSilfVersion >= 0x00020000) { // reserved (pad byte) pbstrm->WriteByte(0); // number of critical features pbstrm->WriteByte(0); // TODO: include list of critical features //m_prndr->OutputCriticalFeatures(pbstrm, m_vCriticalFeatures); // reserved (pad byte) pbstrm->WriteByte(0); } // number of scripts supported auto cScriptTags = m_prndr->NumScriptTags(); pbstrm->WriteByte(cScriptTags); // array of script tags for (auto i = 0U; i < cScriptTags; ++i) pbstrm->WriteInt(m_prndr->ScriptTag(i)); // line break glyph ID pbstrm->WriteShort(m_wLineBreak); // array of offsets to passes, relative to the start of this subtable--fill in later; // for now, write (cpass + 1) place holders auto lPassOffsetsPos = pbstrm->Position(); auto nPassOffset = lPassOffsetsPos - lTableStartSub; for (auto n = cpass+1; n; --n) pbstrm->WriteInt(0); // number of pseudo mappings and search constants auto nPseudoOffset = pbstrm->Position() - lTableStartSub; int n = signed(m_vwPseudoForUnicode.size()); int nPowerOf2, nLog; BinarySearchConstants(n, &nPowerOf2, &nLog); pbstrm->WriteShort(n); pbstrm->WriteShort(nPowerOf2); pbstrm->WriteShort(nLog); pbstrm->WriteShort(n - nPowerOf2); // array of unicode-to-pseudo mappings for (auto i = 0U; i < m_vwPseudoForUnicode.size(); ++i) { if (fxdSilfVersion < 0x00020000) pbstrm->WriteShort(m_vnUnicodeForPseudo[i]); else pbstrm->WriteInt(m_vnUnicodeForPseudo[i]); pbstrm->WriteShort(m_vwPseudoForUnicode[i]); } // replacement classes m_prndr->OutputReplacementClasses(fxdSilfVersion, m_vpglfcReplcmtClasses, m_cpglfcLinear, pbstrm); // passes std::vector vnPassOffsets; m_prndr->OutputPasses(this, pbstrm, lTableStartSub, vnPassOffsets); Assert(vnPassOffsets.size() == static_cast(cpass + 1)); // Now go back and fill in the offsets. auto lSavePos = pbstrm->Position(); if (fxdSilfVersion >= 0x00030000) { pbstrm->SetPosition(lOffsetsPos); pbstrm->WriteShort(nPassOffset); pbstrm->WriteShort(nPseudoOffset); } pbstrm->SetPosition(lPassOffsetsPos); for (auto offset: vnPassOffsets) pbstrm->WriteInt(offset); pbstrm->SetPosition(lSavePos); // Handle compression double nOriginalSize = double(dstrm.str().size()); if (!Compress(dstrm)) g_errorList.AddWarning(5509, NULL, "The Silf table is incompressible and will not be compressed."); nOriginalSize /= dstrm.str().size(); NoteCompressionRatio(ktiSilf, nOriginalSize); dstrm.undivert(); // handle size and padding *pnSilfSize = int(pbstrm->Position() - *pnSilfOffset); pbstrm->SeekPadLong(pbstrm->Position()); } /*---------------------------------------------------------------------------------------------- Compress a std::stringbuf using the compression scheme set on GrcManager. Arguments: sb - reference to the stringbuffer to be compressed this will contain the compressed data on return. Return: bool - true for success, false if compression failed. On failure sb will be unaltered as if the ktcNone compression scheme had been selected. ----------------------------------------------------------------------------------------------*/ bool GrcManager::Compress(std::stringbuf & sb) { if (m_tcCompressor == ktcNone) return true; // Allocate buffers const std::string sPlainBuf = sb.str(); uint32 nSize = uint32(sPlainBuf.size()); char * const pcCompressedBuf = new char [nSize]; // Read in data int nCompressedSize = 0; switch (m_tcCompressor) { case ktcLZ4: nCompressedSize = LZ4_compress_HC(sPlainBuf.data(), pcCompressedBuf, nSize, nSize, 9); break; default: break; } if (nCompressedSize <= 0) { delete [] pcCompressedBuf; return false; } // Initialise the buffer with the uncompressed version number. sb.str(std::string(sPlainBuf, 0, 4)); // Put scheme and uncompressed size. uint32 const hdr = read((m_tcCompressor << 27) | (nSize & 0x07ffffff)); sb.sputn(reinterpret_cast(&hdr), sizeof hdr); // Put the compressed data. sb.sputn(pcCompressedBuf, nCompressedSize); return true; } /*---------------------------------------------------------------------------------------------- Write the list of replacement clases to the output stream. First write the classes that can be written in linear format (output classes), and then write the ones that are ordered by glyph ID and need a map to get the index. Note that some classes may serve as both input and output classes and are written twice. Arguments: fxdSilfVersion - if >= 4.0, output long offsets vpglfc - list of replacement classes (previously generated) cpgflcLinear - number of classes that can be in linear format pbstrm - output stream ----------------------------------------------------------------------------------------------*/ void GdlRenderer::OutputReplacementClasses(int fxdSilfVersion, std::vector & vpglfcReplcmt, size_t cpglfcLinear, GrcBinaryStream * pbstrm) { auto lClassMapStart = pbstrm->Position(); // number of classes pbstrm->WriteShort(vpglfcReplcmt.size()); // number that can be in linear format pbstrm->WriteShort(cpglfcLinear); // offsets to classes--fill in later; for now output (# classes + 1) place holders std::vector vnClassOffsets; auto lOffsetPos = pbstrm->Position(); if (fxdSilfVersion < 0x00040000) for (auto n = vpglfcReplcmt.size()+1; n; --n) pbstrm->WriteShort(0); else for (auto n = vpglfcReplcmt.size()+1; n; --n) pbstrm->WriteInt(0); // linear classes (output) int cTmp = 0; for (auto ipglfc = 0U; ipglfc < cpglfcLinear; ++ipglfc) { GdlGlyphClassDefn * pglfc = vpglfcReplcmt[ipglfc]; vnClassOffsets.push_back(pbstrm->Position() - lClassMapStart); Assert(pglfc->ReplcmtOutputClass() || pglfc->GlyphIDCount() <= 1); //Assert(pglfc->ReplcmtOutputID() == cTmp); std::vector vwGlyphs; pglfc->GenerateOutputGlyphList(vwGlyphs); // number of items and search constants //int n = vwGlyphs.Size(); //int nPowerOf2, nLog; //BinarySearchConstants(n, &nPowerOf2, &nLog); //pbstrm->WriteShort(n); //pbstrm->WriteShort(nPowerOf2); //pbstrm->WriteShort(nLog); //pbstrm->WriteShort(n - nPowerOf2); // glyph list for (auto const glyph: vwGlyphs) pbstrm->WriteShort(glyph); cTmp++; } // indexed classes (input) for (auto ipglfc = cpglfcLinear; ipglfc < vpglfcReplcmt.size(); ipglfc++) { GdlGlyphClassDefn * pglfc = vpglfcReplcmt[ipglfc]; vnClassOffsets.push_back(pbstrm->Position() - lClassMapStart); Assert(pglfc->ReplcmtInputClass()); Assert(pglfc->ReplcmtInputID() == cTmp); std::vector vwGlyphs; std::vector vnIndices; pglfc->GenerateInputGlyphList(vwGlyphs, vnIndices); // number of items and search constants int n = signed(vwGlyphs.size()); int nPowerOf2, nLog; BinarySearchConstants(n, &nPowerOf2, &nLog); pbstrm->WriteShort(n); pbstrm->WriteShort(nPowerOf2); pbstrm->WriteShort(nLog); pbstrm->WriteShort(n - nPowerOf2); // glyph list for (size_t iw = 0; iw < vwGlyphs.size(); iw++) { pbstrm->WriteShort(vwGlyphs[iw]); pbstrm->WriteShort(vnIndices[iw]); } cTmp++; } // final offset giving length of block vnClassOffsets.push_back(pbstrm->Position() - lClassMapStart); // Now go back and fill in the offsets. auto lSavePos = pbstrm->Position(); pbstrm->SetPosition(lOffsetPos); if (fxdSilfVersion < 0x00040000) for (auto offset: vnClassOffsets) pbstrm->WriteShort(offset); else for (auto offset: vnClassOffsets) pbstrm->WriteInt(offset); pbstrm->SetPosition(lSavePos); } /*---------------------------------------------------------------------------------------------- Generate a list of all the glyphs in the class, ordered by index (ie, ordered as listed in the program). ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::GenerateOutputGlyphList(std::vector & vwGlyphs) { AddGlyphsToUnsortedList(vwGlyphs); } /*---------------------------------------------------------------------------------------------- Add all the glyphs to the list in the order they were defined. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AddGlyphsToUnsortedList(std::vector & vwGlyphs) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->AddGlyphsToUnsortedList(vwGlyphs); } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::AddGlyphsToUnsortedList(std::vector & vwGlyphs) { for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { vwGlyphs.push_back(m_vwGlyphIDs[iw]); } } /*---------------------------------------------------------------------------------------------- Generate a list of all the glyphs in the class, ordered by glyph ID. These will be output in linear format. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::GenerateInputGlyphList(std::vector & vwGlyphs, std::vector & vnIndices) { AddGlyphsToSortedList(vwGlyphs, vnIndices); } /*---------------------------------------------------------------------------------------------- Add all the glyphs to the list, keeping the list sorted. ----------------------------------------------------------------------------------------------*/ void GdlGlyphClassDefn::AddGlyphsToSortedList(std::vector & vwGlyphs, std::vector & vnIndices) { for (size_t iglfd = 0; iglfd < m_vpglfdMembers.size(); iglfd++) { m_vpglfdMembers[iglfd]->AddGlyphsToSortedList(vwGlyphs, vnIndices); } } /*--------------------------------------------------------------------------------------------*/ void GdlGlyphDefn::AddGlyphsToSortedList(std::vector & vwGlyphs, std::vector & vnIndices) { Assert(vwGlyphs.size() == vnIndices.size()); for (size_t iw = 0; iw < m_vwGlyphIDs.size(); iw++) { int nNextIndex = signed(vwGlyphs.size()); utf16 w = m_vwGlyphIDs[iw]; if (vwGlyphs.size() == 0 || w > vwGlyphs.back()) // common case { vwGlyphs.push_back(w); vnIndices.push_back(nNextIndex); } else { int iLow = 0; int iHigh = signed(vwGlyphs.size()); while (iHigh - iLow > 1) { int iMid = (iHigh + iLow) >> 1; // divide by 2 if (w == vwGlyphs[iMid]) { iLow = iMid; iHigh = iMid + 1; } else if (w < vwGlyphs[iMid]) iHigh = iMid; else iLow = iMid; } if (w <= vwGlyphs[iLow]) { vwGlyphs.insert(vwGlyphs.begin() + iLow, w); vnIndices.insert(vnIndices.begin() + iLow, nNextIndex); } else { Assert(static_cast(iHigh) == vwGlyphs.size() || w < vwGlyphs[iHigh]); vwGlyphs.insert(vwGlyphs.begin() + iLow + 1, w); vnIndices.insert(vnIndices.begin() + iLow + 1, nNextIndex); } } } } /*---------------------------------------------------------------------------------------------- Count the passes for output to the font table. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::CountPasses(size_t & cpass, size_t & cpassLB, size_t & cpassSub, size_t & cpassJust, size_t & cpassPos, int & ipassBidi) { GdlRuleTable * prultbl; prultbl = FindRuleTable("linebreak"); cpassLB = prultbl ? prultbl->CountPasses() : 0; prultbl = FindRuleTable("substitution"); cpassSub = prultbl ? prultbl->CountPasses() : 0; prultbl = FindRuleTable("justification"); cpassJust = prultbl ? prultbl->CountPasses() : 0; prultbl = FindRuleTable("positioning"); cpassPos = prultbl ? prultbl->CountPasses() : 0; cpass = cpassLB + cpassSub + cpassJust + cpassPos; if (RawBidi() == kFullPass && !HasFlippedPass()) ipassBidi = int(cpassLB + cpassSub); else ipassBidi = -1; } /*--------------------------------------------------------------------------------------------*/ size_t GdlRuleTable::CountPasses() { size_t cRet = 0; for (auto const ppass: m_vppass) { if (ppass->ValidPass()) cRet++; } return cRet; } /*---------------------------------------------------------------------------------------------- Output the passes to the stream. ----------------------------------------------------------------------------------------------*/ void GdlRenderer::OutputPasses(GrcManager * pcman, GrcBinaryStream * pbstrm, offset_t lTableStart, std::vector & vnOffsets) { GdlRuleTable * prultbl; if ((prultbl = FindRuleTable("linebreak")) != NULL) prultbl->OutputPasses(pcman, pbstrm, lTableStart, vnOffsets); if ((prultbl = FindRuleTable("substitution")) != NULL) prultbl->OutputPasses(pcman, pbstrm, lTableStart, vnOffsets); if ((prultbl = FindRuleTable("justification")) != NULL) prultbl->OutputPasses(pcman, pbstrm, lTableStart, vnOffsets); if ((prultbl = FindRuleTable("positioning")) != NULL) prultbl->OutputPasses(pcman, pbstrm, lTableStart, vnOffsets); // Push one more offset so the last pass can figure its length. vnOffsets.push_back(pbstrm->Position() - lTableStart); } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::OutputPasses(GrcManager * pcman, GrcBinaryStream * pbstrm, offset_t lTableStart, std::vector & vnOffsets) { for (auto const ppass: m_vppass) { if (ppass->ValidPass()) { vnOffsets.push_back(pbstrm->Position() - lTableStart); ppass->OutputPass(pcman, pbstrm, lTableStart); } } } /*---------------------------------------------------------------------------------------------- Output the contents of the pass to the stream. ----------------------------------------------------------------------------------------------*/ void GdlPass::OutputPass(GrcManager * pcman, GrcBinaryStream * pbstrm, offset_t lTableStart) { auto lPassStart = pbstrm->Position(); int fxdSilfVersion = pcman->VersionForTable(ktiSilf); uint32_t fxdRuleVersion = pcman->VersionForRules(); offset_t nOffsetToPConstraint = 0, lOffsetToPConstraintPos = 0; offset_t nOffsetToConstraint = 0, lOffsetToConstraintPos = 0; offset_t nOffsetToAction = 0, lOffsetToActionPos = 0; offset_t nOffsetToDebugArrays = 0, lOffsetToDebugArraysPos = 0; // flags: bits 0-2 = collision fix; bits 3-4 = kern; bit 5 = flip direction int nTemp = m_nCollisionFix | ((int)m_nAutoKern << 3 | m_fFlipDir << 5); pbstrm->WriteByte(nTemp); // MaxRuleLoop pbstrm->WriteByte(m_nMaxRuleLoop); // max rule context pbstrm->WriteByte(m_nMaxRuleContext); // MaxBackup pbstrm->WriteByte(m_nMaxBackup); // number of rules pbstrm->WriteShort(m_vprule.size()); auto lFsmOffsetPos = pbstrm->Position(); if (fxdSilfVersion >= 0x00020000) { // offset to row information, or (<=v2) reserved pbstrm->WriteShort(0); // pass constraint byte count--fill in later lOffsetToPConstraintPos = pbstrm->Position(); pbstrm->WriteInt(0); } // offset to rule constraint code--fill in later lOffsetToConstraintPos = pbstrm->Position(); pbstrm->WriteInt(0); // offset to action code--fill in later lOffsetToActionPos = pbstrm->Position(); pbstrm->WriteInt(0); // offset to debug strings--fill in later lOffsetToDebugArraysPos = pbstrm->Position(); pbstrm->WriteInt(0); auto nFsmOffset = pbstrm->Position() - lPassStart; // number of FSM rows pbstrm->WriteShort(NumStates()); // number of transitional states pbstrm->WriteShort(NumTransitionalStates()); // number of success states pbstrm->WriteShort(NumSuccessStates()); // number of columns if (m_pfsm == NULL) pbstrm->WriteShort(0); else pbstrm->WriteShort(m_pfsm->NumberOfColumns()); // number of glyph sub-ranges auto n = int(TotalNumGlyphSubRanges()); pbstrm->WriteShort(n); // glyph sub-range search constants int nPowerOf2, nLog; BinarySearchConstants(n, &nPowerOf2, &nLog); pbstrm->WriteShort(nPowerOf2); pbstrm->WriteShort(nLog); pbstrm->WriteShort(n - nPowerOf2); // glyph sub-ranges: for each glyph, find the machine class that includes it, if any, // and output the range. utf16 w = 0; while (w < pcman->NumGlyphs()) { for (size_t i = 0; i < m_vpfsmc.size(); i++) { // If this machine class includes this glyph, output the range on the stream // and return the last glyph in the range. Otherwise return 0xFFFF. utf16 wLast = m_vpfsmc[i]->OutputRange(w, pbstrm); if (wLast != 0xFFFF) { w = wLast; break; } } w++; } // rule list and offsets std::vector vnOffsets; std::vector vnRuleList; GenerateRuleMaps(vnOffsets, vnRuleList); for (auto const offset: vnOffsets) pbstrm->WriteShort(offset); for (auto const rule: vnRuleList) pbstrm->WriteShort(rule); if (m_pfsm == NULL) { pbstrm->WriteByte(0); pbstrm->WriteByte(0); // Since m_vrowStartStates = m_critMaxPreContext - m_critMinPreContext + 1 = 1, // write one short: pbstrm->WriteShort(0); } else { // minRulePreContext pbstrm->WriteByte(int(m_critMinPreContext)); // maxRulePreContext pbstrm->WriteByte(int(m_critMaxPreContext)); // start states Assert(m_critMaxPreContext - m_critMinPreContext + 1 == m_vrowStartStates.size()); Assert(m_vrowStartStates[0] == 0); for (auto const start: m_vrowStartStates) pbstrm->WriteShort(start); } // rule sort keys for (auto const prule: m_vprule) { pbstrm->WriteShort(prule->SortKey()); } // pre-context item counts for (auto const prule: m_vprule) { pbstrm->WriteByte(prule->NumberOfPreModContextItems()); } // action and constraint offsets--fill in later; // for now, write (# rules + 1) place holders std::vector vnActionOffsets; std::vector vnConstraintOffsets; auto lCodeOffsets = pbstrm->Position(); if (fxdSilfVersion >= 0x00020000) { if (pcman->Renderer()->HasCollisionPass()) pbstrm->WriteByte(m_nCollisionThreshold); else pbstrm->WriteByte(0); // avoid OTS griping about superfluous data fields lCodeOffsets = pbstrm->Position(); // pass constraint byte count - save a space for the value pbstrm->WriteShort(0); } for (auto n = m_vprule.size() + 1; n; --n) { pbstrm->WriteShort(0); pbstrm->WriteShort(0); } // transition table for states if (m_pfsm != NULL) OutputFsmTable(pbstrm); // constraint and action code size_t ib; size_t cbPassConstraint; if (fxdSilfVersion >= 0x00020000) { // reserved - pad byte pbstrm->WriteByte(0); nOffsetToPConstraint = pbstrm->Position() - lTableStart; std::vector vbPassConstr; this->GenerateEngineCode(pcman, fxdRuleVersion, vbPassConstr); for (ib = 0; ib < vbPassConstr.size(); ib++) pbstrm->WriteByte(vbPassConstr[ib]); cbPassConstraint = vbPassConstr.size(); } else { nOffsetToPConstraint = pbstrm->Position() - lTableStart; cbPassConstraint = 0; } // ENHANCE: divide GenerateEngineCode into two methods. nOffsetToConstraint = pbstrm->Position() - lTableStart; // Output a dummy byte just to keep any constraint from having zero as its offset, // because we are using zero as a indicator that there are no constraints. pbstrm->WriteByte(0); std::vector vbConstraints; std::vector vbActions; int irule; for (irule = 0; irule < signed(m_vprule.size()); irule++) { vbConstraints.clear(); m_vprule[irule]->GenerateEngineCode(pcman, fxdRuleVersion, vbActions, vbConstraints); if (vbConstraints.size() == 0) vnConstraintOffsets.push_back(0); else { vnConstraintOffsets.push_back(pbstrm->Position() - nOffsetToConstraint - lTableStart); for (ib = 0; ib < vbConstraints.size(); ib++) pbstrm->WriteByte(vbConstraints[ib]); } } vnConstraintOffsets.push_back(pbstrm->Position() - nOffsetToConstraint - lTableStart); nOffsetToAction = pbstrm->Position() - lTableStart; for (irule = 0; irule < signed(m_vprule.size()); irule++) { vbActions.clear(); vnActionOffsets.push_back(pbstrm->Position() - nOffsetToAction - lTableStart); m_vprule[irule]->GenerateEngineCode(pcman, fxdRuleVersion, vbActions, vbConstraints); for (size_t ib = 0; ib < vbActions.size(); ib++) pbstrm->WriteByte(vbActions[ib]); } vnActionOffsets.push_back(pbstrm->Position() - nOffsetToAction - lTableStart); Assert(vnConstraintOffsets.size() == m_vprule.size() + 1); Assert(vnActionOffsets.size() == m_vprule.size() + 1); // TODO: output debugger strings nOffsetToDebugArrays = 0; // pbstrm->Position() - lTableStart; // Now go back and fill in the offsets. auto lSavePos = pbstrm->Position(); if (fxdSilfVersion >= 0x00020000) { pbstrm->SetPosition(lOffsetToPConstraintPos); pbstrm->WriteInt(nOffsetToPConstraint); } pbstrm->SetPosition(lOffsetToConstraintPos); pbstrm->WriteInt(nOffsetToConstraint); pbstrm->SetPosition(lOffsetToActionPos); pbstrm->WriteInt(nOffsetToAction); pbstrm->SetPosition(lOffsetToDebugArraysPos); pbstrm->WriteInt(nOffsetToDebugArrays); pbstrm->SetPosition(lCodeOffsets); if (fxdSilfVersion >= 0x00020000) pbstrm->WriteShort(cbPassConstraint); for (auto const offset: vnConstraintOffsets) pbstrm->WriteShort(offset); for (auto const offset: vnActionOffsets) pbstrm->WriteShort(offset); if (fxdSilfVersion >= 0x00030000) { pbstrm->SetPosition(lFsmOffsetPos); pbstrm->WriteShort(nFsmOffset); } pbstrm->SetPosition(lSavePos); } /*---------------------------------------------------------------------------------------------- If this machine class includes the given glyph ID, output the range on the stream and return the last glyph in the range; otherwise return 0xFFFF. Note that due to the way this method is used, we can assme the given glyph ID is the first glyph in the range. ----------------------------------------------------------------------------------------------*/ utf16 FsmMachineClass::OutputRange(gid16 wGlyphID, GrcBinaryStream * pbstrm) { for (auto iMin = 0U; iMin < m_wGlyphs.size(); ++iMin) { if (m_wGlyphs[iMin] == wGlyphID) { // This machine class includes the glyph. Search for the end of the range of // contiguous glyphs. int iLim = iMin + 1; while (iLim < signed(m_wGlyphs.size()) && m_wGlyphs[iLim] == m_wGlyphs[iLim - 1] + 1) iLim++; // Write to the stream; pbstrm->WriteShort(m_wGlyphs[iMin]); pbstrm->WriteShort(m_wGlyphs[iLim - 1]); pbstrm->WriteShort(m_ifsmcColumn); return m_wGlyphs[iLim - 1]; // last glyph in range } else if (m_wGlyphs[iMin] > wGlyphID) return 0xFFFF; } return 0xFFFF; } /*---------------------------------------------------------------------------------------------- Generate the lists of rule maps for states in the FSM. The second argment are the list of rules, the first argument are the offsets into the list for each success state. For instance, if you have the following success states: s3: r1, r2, r5 s4: r0 s5: r3, r4 s6: r6 you'll get the following: vnOffsets vnRuleLists 0 1 3 2 4 5 6 0 7 3 4 6 (States 0 - 2 are omitted from the lists; only success states are included.) ----------------------------------------------------------------------------------------------*/ void GdlPass::GenerateRuleMaps(std::vector & vnOffsets, std::vector & vnRuleList) { size_t ifsLim = m_vifsFinalToWork.size(); for (size_t ifs = 0; ifs < ifsLim; ifs++) { FsmState * pfstate = m_pfsm->StateAt(m_vifsFinalToWork[ifs]); Assert(!pfstate->HasBeenMerged()); if (pfstate->NumberOfRulesSucceeded() > 0) { vnOffsets.push_back(vnRuleList.size()); // Make a sorted list of all the rule indices (this allows the rules to be // tried in the order that they appeared in the source file). std::vector virule; for (std::set::iterator itset = pfstate->m_setiruleSuccess.begin(); itset != pfstate->m_setiruleSuccess.end(); ++itset) { for (auto iirule = 0U; iirule <= virule.size(); ++iirule) { if (iirule == virule.size()) { virule.push_back(*itset); break; } else if (*itset < virule[iirule]) { virule.insert(virule.begin() + iirule, *itset); break; } } } // Now put them into the vector. for (size_t iirule = 0; iirule < virule.size(); iirule++) vnRuleList.push_back(virule[iirule]); } else { // All non-success states should be together at the beginning of the table. Assert(vnRuleList.size() == 0); } } // Push a final offset, so that the last state can figure its length. vnOffsets.push_back(vnRuleList.size()); } /*---------------------------------------------------------------------------------------------- Output the transition table itself. ----------------------------------------------------------------------------------------------*/ void GdlPass::OutputFsmTable(GrcBinaryStream * pbstrm) { auto cfsmc = m_pfsm->NumberOfColumns(); for (auto const ifs: m_vifsFinalToWork) { FsmState * pfstate = m_pfsm->StateAt(ifs); Assert(!pfstate->HasBeenMerged()); if (pfstate->AllCellsEmpty()) { // We've hit the end of the transitional states--quit. break; } for (auto ifsmc = 0U; ifsmc < cfsmc; ++ifsmc) { int ifsmcValue = pfstate->CellValue(ifsmc); if (m_pfsm->RawStateAt(ifsmcValue)->HasBeenMerged()) ifsmcValue = m_pfsm->RawStateAt(ifsmcValue)->MergedState()->WorkIndex(); ifsmcValue = m_vifsWorkToFinal[ifsmcValue]; // Optimize: do some fancy footwork on the state number. pbstrm->WriteShort(ifsmcValue); } } } /*---------------------------------------------------------------------------------------------- Convenient wrapper to call the same method in GdlRenderer. ----------------------------------------------------------------------------------------------*/ bool GrcManager::AssignFeatTableNameIds(utf16 wFirstNameId, utf16 wNameIdMinNew, std::vector & vstuExtNames, std::vector & vwLangIds, std::vector & vwNameTblIds, size_t & cchwStringData, uint8 * pNameTbl) { return m_prndr->AssignFeatTableNameIds(wFirstNameId, wNameIdMinNew, vstuExtNames, vwLangIds, vwNameTblIds, cchwStringData, pNameTbl, m_vpfeatInput); } /*---------------------------------------------------------------------------------------------- Assign name table IDs to each feature and all settings. The IDs will be assigned sequentially beginning at wFirstNameId. Note that each string does NOT get its own ID. A given feature can have several strings (names) each with a differnt lang id but all get the same name ID. Return three vectors which each contain one element for each feature and setting. The vectors are parallel. Elements numbered n contains the name string, lang ID, and name table ID for a given feature or setting. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::AssignFeatTableNameIds(utf16 wFirstNameId, utf16 wNameIdMinNew, std::vector & vstuExtNames, std::vector & vwLangIds, std::vector & vwNameTblIds, size_t & cchwStringData, uint8 * pNameTbl, std::vector & vpfeatInput) { if (wFirstNameId > 32767) return false; // max allowed value int nNameIdNoName = -1; int nPlatId, nEncId, nLangId; const char * rgchNoName = "NoName"; TtfUtil::GetNameIdForString(pNameTbl, nPlatId, nEncId, nLangId, nNameIdNoName, const_cast(rgchNoName), 6); utf16 wNameTblId = wFirstNameId; for (size_t ifeat = 0; ifeat < m_vpfeat.size(); ifeat++) { wNameTblId = m_vpfeat[ifeat]->SetNameTblIds(wNameTblId, pNameTbl, vpfeatInput); if (wNameTblId > 32767) return false; m_vpfeat[ifeat]->NameTblInfo(vstuExtNames, vwLangIds, vwNameTblIds, cchwStringData, wNameIdMinNew, nNameIdNoName); } return true; } /*---------------------------------------------------------------------------------------------- Write the "Feat" table and related subtables to the stream. ----------------------------------------------------------------------------------------------*/ void GrcManager::OutputFeatTable(GrcBinaryStream * pbstrm, int * pnFeatOffset, int * pnFeatSize) { *pnFeatOffset = int(pbstrm->Position()); // version number int fxdFeatVersion = VersionForTable(ktiFeat); SetTableVersion(ktiFeat, fxdFeatVersion); pbstrm->WriteInt(fxdFeatVersion); m_prndr->OutputFeatTable(pbstrm, *pnFeatOffset, fxdFeatVersion); // handle size and padding auto nTmp = pbstrm->Position(); *pnFeatSize = int(nTmp - *pnFeatOffset); pbstrm->SeekPadLong(nTmp); } /*---------------------------------------------------------------------------------------------*/ void GdlRenderer::OutputFeatTable(GrcBinaryStream * pbstrm, offset_t lTableStart, int fxdVersion) { std::vector vnOffsets; std::vector vlOffsetPos; size_t ifeat; size_t iID; // number of features actually written to the font, including duplicates size_t cfeatout = 0; for (auto const pfeat: m_vpfeat) cfeatout += pfeat->NumAltIDs(); pbstrm->WriteShort(cfeatout); // reserved pbstrm->WriteShort(0); pbstrm->WriteInt(0); size_t ifeatout = 0; // index of feature output, taking duplicates into account for (ifeat = 0; ifeat < m_vpfeat.size(); ifeat++) { // Output an identical feature for each alternate ID. std::vector vnIDs; m_vpfeat[ifeat]->AltIDs(vnIDs); // main ID is first in the list for (iID = 0; iID < vnIDs.size(); iID++) { // feature id if (fxdVersion >= 0x00020000) pbstrm->WriteInt(vnIDs[iID]); else pbstrm->WriteShort(vnIDs[iID]); // number of settings pbstrm->WriteShort(m_vpfeat[ifeat]->NumberOfSettings()); if (fxdVersion >= 0x00020000) pbstrm->WriteShort(0); // pad bytes // offset to setting--fill in later vlOffsetPos.push_back(pbstrm->Position()); pbstrm->WriteInt(0); // flags if (iID > 0 || ! m_vpfeat[ifeat]->HasPublicID()) pbstrm->WriteShort(0x8800); // bit 0800 = hidden feature (probably a duplicate) else pbstrm->WriteShort(0x8000); // bit 8000 - all our features are mutually exclusive // name index for feature name pbstrm->WriteShort(m_vpfeat[ifeat]->NameTblId()); ifeatout++; } } Assert(ifeatout == cfeatout); Assert(vlOffsetPos.size() == cfeatout); for (ifeat = 0; ifeat < m_vpfeat.size(); ifeat++) { vnOffsets.push_back(pbstrm->Position() - lTableStart); m_vpfeat[ifeat]->OutputSettings(pbstrm); } Assert(vnOffsets.size() == m_vpfeat.size()); // Now fill in the offsets. auto lSavePos = pbstrm->Position(); ifeatout = 0; for (ifeat = 0; ifeat < vnOffsets.size(); ifeat++) { // std::vector vnIDs; // m_vpfeat[ifeat]->AltIDs(vnIDs); for (iID = 0; iID < m_vpfeat[ifeat]->NumAltIDs(); iID++) { pbstrm->SetPosition(vlOffsetPos[ifeatout]); pbstrm->WriteInt(vnOffsets[ifeat]); ifeatout++; } } pbstrm->SetPosition(lSavePos); } /*---------------------------------------------------------------------------------------------*/ void GdlFeatureDefn::OutputSettings(GrcBinaryStream * pbstrm) { // first output the default setting if (m_pfsetDefault) { pbstrm->WriteShort(m_pfsetDefault->Value()); pbstrm->WriteShort(m_pfsetDefault->NameTblId()); // name index } else if (m_vpfset.size() == 0) { // no settings (eg, 'lang' feature); write 0 as the default pbstrm->WriteShort(0); pbstrm->WriteShort(32767); // no name index - output largest legal value } for (size_t ifset = 0; ifset < m_vpfset.size(); ifset++) { if (m_vpfset[ifset] != m_pfsetDefault) { pbstrm->WriteShort(m_vpfset[ifset]->Value()); pbstrm->WriteShort(m_vpfset[ifset]->NameTblId()); // name index } } } /*---------------------------------------------------------------------------------------------- Write the "Sill" table and related subtables to the stream. ----------------------------------------------------------------------------------------------*/ void GrcManager::OutputSillTable(GrcBinaryStream * pbstrm, int * pnSillOffset, int * pnSillSize) { *pnSillOffset = int(pbstrm->Position()); // version number int fxd = VersionForTable(ktiSill); SetTableVersion(ktiSill, fxd); pbstrm->WriteInt(fxd); m_prndr->OutputSillTable(pbstrm, *pnSillOffset); // handle size and padding auto nTmp = pbstrm->Position(); *pnSillSize = int(nTmp - *pnSillOffset); pbstrm->SeekPadLong(nTmp); } /*---------------------------------------------------------------------------------------------*/ void GdlRenderer::OutputSillTable(GrcBinaryStream * pbstrm, offset_t lTableStart) { // Note: if the format of the Sill table changes, the CheckLanguageFeatureSize method // needs to be changed to match. std::vector vnOffsets; std::vector vlOffsetPos; // search constants int n = int(m_vplang.size()); int nPowerOf2, nLog; BinarySearchConstants(n, &nPowerOf2, &nLog); pbstrm->WriteShort(n); // number of languages pbstrm->WriteShort(nPowerOf2); pbstrm->WriteShort(nLog); pbstrm->WriteShort(n - nPowerOf2); for (auto const plang: m_vplang) { // language ID unsigned int nCode = plang->Code(); char rgchCode[4]; memcpy(rgchCode, &nCode, 4); pbstrm->Write(rgchCode, 4); // number of settings pbstrm->WriteShort(plang->NumberOfSettings()); // offset to setting--fill in later vlOffsetPos.push_back(pbstrm->Position()); pbstrm->WriteShort(0); } // Extra bogus entry to make it easy to find length of last. pbstrm->WriteInt(0x80808080); pbstrm->WriteShort(0); vlOffsetPos.push_back(pbstrm->Position()); pbstrm->WriteShort(0); for (auto const plang: m_vplang) { vnOffsets.push_back(pbstrm->Position() - lTableStart); plang->OutputSettings(pbstrm); } vnOffsets.push_back(pbstrm->Position() - lTableStart); // offset of bogus entry gives length of last real one Assert(vnOffsets.size() == m_vplang.size() + 1); // Now fill in the offsets. auto lSavePos = pbstrm->Position(); for (auto ilang = 0U; ilang < vnOffsets.size(); ++ilang) { pbstrm->SetPosition(vlOffsetPos[ilang]); pbstrm->WriteShort(vnOffsets[ilang]); } pbstrm->SetPosition(lSavePos); } /*---------------------------------------------------------------------------------------------*/ void GdlLanguageDefn::OutputSettings(GrcBinaryStream * pbstrm) { Assert(m_vpfeat.size() == m_vnFset.size()); for (size_t ifset = 0; ifset < m_vpfset.size(); ifset++) { pbstrm->WriteInt(m_vpfeat[ifset]->ID()); // feature ID pbstrm->WriteShort(m_vnFset[ifset]); // value pbstrm->WriteShort(0); // pad } } /*---------------------------------------------------------------------------------------------- Calculate the standard search constants for the given number n: - max power of 2 < n - log-base-2(the number above) ----------------------------------------------------------------------------------------------*/ void BinarySearchConstants(int n, int * pnPowerOf2, int * pnLog) { Assert(n >= 0); if (n == 0) { *pnPowerOf2 = 0; *pnLog = 0; return; } *pnPowerOf2 = 1; *pnLog = 0; while ((*pnPowerOf2 << 1) <= n) { *pnPowerOf2 = *pnPowerOf2 << 1; *pnLog = *pnLog + 1; } } /*---------------------------------------------------------------------------------------------- Write a short to the output stream. ----------------------------------------------------------------------------------------------*/ void GrcBinaryStream::write_16bits_be(std::ostream & os, uint16_t x) { uint8_t const be[] = { uint8_t(x >> 8 & 0xFFU), uint8_t(x & 0xFFU) }; os.write(reinterpret_cast(&be), sizeof x); } /*---------------------------------------------------------------------------------------------- Write an integer to the output stream. ----------------------------------------------------------------------------------------------*/ void GrcBinaryStream::write_32bits_be(std::ostream & os, uint32_t x) { uint8_t const be[] = { uint8_t(x >> 24 & 0xFFU), uint8_t(x >> 16 & 0xFFU), uint8_t(x >> 8 & 0xFFU), uint8_t(x & 0xFFU) }; os.write(reinterpret_cast(&be), sizeof x); } /*---------------------------------------------------------------------------------------------- Seek to ibOffset then add zero padding for long alignment. Return padded location. ----------------------------------------------------------------------------------------------*/ offset_t GrcBinaryStream::SeekPadLong(offset_t ibOffset) { auto cPad = ((ibOffset + 3) & ~3) - ibOffset; seekp(ibOffset); if (cPad) write("\0\0\0", cPad); return tellp(); } /*---------------------------------------------------------------------------------------------- Adjust argument for 4 byte padding. ----------------------------------------------------------------------------------------------*/ DWORD PadLong(DWORD ul) { return (ul + 3) & ~3; } /*---------------------------------------------------------------------------------------------- Compare two table directory entries. Used by qsort(). ----------------------------------------------------------------------------------------------*/ int CompareDirEntries(const void * ptr1, const void * ptr2) { unsigned int lTmp1 = read(((OffsetSubTable::Entry *)ptr1)->tag); unsigned int lTmp2 = read(((OffsetSubTable::Entry *)ptr2)->tag); return (lTmp1 - lTmp2); } /*---------------------------------------------------------------------------------------------- Calculate a checksum. cluSize is the byte count of the table pointed at by pluTable. The table must be padded to a length that is a multiple of four. cluSize includes the padding. The table is treated as a sequence of longs which are summed together. ----------------------------------------------------------------------------------------------*/ unsigned int CalcCheckSum(const void * pluTable, size_t cluSize) { Assert(!(cluSize & 0x00000003)); unsigned int luCheckSum = 0; const uint32 * element = static_cast(pluTable); const uint32 *const end = element + cluSize / sizeof(uint32); for (;element != end; ++element) luCheckSum += read(*element); return luCheckSum; } /*********************************************************************************************** Debuggers ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Test the serialization process. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugOutput() { GrcBinaryStream bstrm("testfont.ttt"); bstrm.WriteInt(0); bstrm.WriteInt(0); bstrm.WriteInt(0); bstrm.WriteInt(0); int nGlocOffset, nGlocSize; int nGlatOffset, nGlatSize; int nSilOffset, nSilSize; int nFeatOffset, nFeatSize; OutputGlatAndGloc(&bstrm, &nGlocOffset, &nGlocSize, &nGlatOffset, &nGlatSize); OutputSilfTable(&bstrm, &nSilOffset, &nSilSize); OutputFeatTable(&bstrm, &nFeatOffset, &nFeatSize); auto lSavePos = bstrm.Position(); bstrm.SetPosition(0); bstrm.WriteInt(nSilOffset); bstrm.WriteInt(nGlocOffset); bstrm.WriteInt(nGlatOffset); bstrm.WriteInt(nFeatOffset); bstrm.SetPosition(lSavePos); } grcompiler-5.2.1/compiler/ParserTreeWalker.cpp000066400000000000000000003132101411153030700214150ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: ParserTreeWalker.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods to implement the parser, that is, those that call the ANTLR parser and then walk the syntax tree to create the objects (Gdl and Grc). -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "Grp.h" #include "main.h" #ifdef _WIN32 #include // needed for _dup & _dup2 #else #include #include #include #endif #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ using std::cout; using std::endl; /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Run the parser over the file with the given name. Record an error if the file does not exist. ----------------------------------------------------------------------------------------------*/ bool GrcManager::Parse(std::string staFileName, std::string staGdlppFile, std::string staOutputPath) { std::string staFilePreProc; if (!RunPreProcessor(staFileName, &staFilePreProc, staGdlppFile, staOutputPath)) { return false; } std::ifstream strmIn; strmIn.open(staFilePreProc.c_str()); if (strmIn.fail()) { g_errorList.AddError(1105, NULL, "File ", staFileName, " does not exist--compilation aborted"); return false; } return ParseFile(strmIn, staFilePreProc); } /*---------------------------------------------------------------------------------------------- Run the C pre-processor over the GDL file. Return the name of the resulting file. ----------------------------------------------------------------------------------------------*/ bool GrcManager::RunPreProcessor(std::string staFileName, std::string * pstaFilePreProc, #ifdef _WIN32 std::string & staGdlppFile, std::string & staOutputPath) #else std::string & staGdlppFile, std::string &) #endif { #ifdef _WIN32 STARTUPINFO sui = {sizeof(sui)}; //Apparently not needed for DOS programs: //sui.wShowWindow = SW_HIDE; //sui.dwFlags = STARTF_USESHOWWINDOW; // create temporary file and redirect stderr into it // ENHANCE AlanW: do this properly? - learn about NT child process inheritance, pipe creation, // and security // Search MSDN for "Creating a Child Process with Redirected Input and Output" for // more proper way. Using the C RTL is much easier than the proper way with the Win API. auto cchOutputPath = strlen(staOutputPath.data()); auto cchPreProcErr = cchOutputPath + strlen(_T("\\$_gdlpp_stderr.txt")) + 1; char * pszPreProcErr = new char[cchPreProcErr]; memset(pszPreProcErr, 0, cchPreProcErr); if (!pszPreProcErr) { g_errorList.AddError(1106, NULL, "Out of memory"); return false; } strcpy(pszPreProcErr, staOutputPath.c_str()); if (cchOutputPath > 0) {strcpy(pszPreProcErr + cchOutputPath, _T("\\$_gdlpp_stderr.txt"));} else {strcpy(pszPreProcErr + cchOutputPath, _T("$_gdlpp_stderr.txt"));} FILE * pFilePreProcErr = fopen(pszPreProcErr, "w+"); if (!pFilePreProcErr) { g_errorList.AddError(1107, NULL, "Could not create temporary file to run pre-processor: ", pszPreProcErr); delete[] pszPreProcErr; return false; } int nOrigStderr = _dup(2); // save original stderr, 2 is stderr file handle if (-1 == _dup2(_fileno(pFilePreProcErr), 2)) //stderr now refers to tmp file opened above { g_errorList.AddError(1108, NULL, "Could not redirect stderr."); } PROCESS_INFORMATION procinfo = {0}; achar rgchErrorCode[20]; // switch backslash path separators to forward slash for gdlpp std::replace(staFileName.begin(), staFileName.end(), '\\', '/'); std::string strCommandLine(_T("\"")); strCommandLine += staGdlppFile; if (m_fVerbose) strCommandLine += _T("\" -V \""); else strCommandLine += _T("\" \""); strCommandLine += staFileName; strCommandLine += _T("\""); strCommandLine += _T(" $_temp.gdl"); // output file // needs to be changed to achar but we then need to make sure that this works with // memset and memcpy. This has the possibility of creating a very nasty bug achar rgchCommandLine[200]; _tcscpy(rgchCommandLine, strCommandLine.data()); //memset(rgchCommandLine, 0, 200); //memcpy(rgchCommandLine, staCommandLine.Chars(), staCommandLine.Length()); BOOL f = CreateProcess(NULL, rgchCommandLine, NULL, NULL, TRUE, 0, NULL, NULL, &sui, &procinfo); DWORD d = GetLastError(); if (f == FALSE) { _itot((int)d, rgchErrorCode, 10); g_errorList.AddWarning(1502, NULL, "Could not create process to run pre-processor gdlpp.exe (error = ", rgchErrorCode, "); compiling ", staFileName); *pstaFilePreProc = staFileName; return true; } HANDLE h = procinfo.hProcess; WaitForSingleObject(h, INFINITE); // read any errors from gdlpp fflush(pFilePreProcErr); if (fseek(pFilePreProcErr, 0, SEEK_SET)) // returns 0 on success { g_errorList.AddError(1109, NULL, "Error in pre-processor temporary file"); return false; } RecordPreProcessorErrors(pFilePreProcErr); // clean up stderr file & delete tmp file used to catch errors if (-1 == _dup2(nOrigStderr, 2)) // restore stderr { g_errorList.AddError(1110, NULL, "Could not restore stderr from being redirected."); } fclose(pFilePreProcErr); unlink(pszPreProcErr); delete [] pszPreProcErr; ULONG exitCode = 0; GetExitCodeProcess(h, &exitCode); if (exitCode != 0) { GrpLineAndFile lnf(0, kMaxFileLineNumber, ""); // make this message come last _itot((int)exitCode, rgchErrorCode, 10); g_errorList.AddError(1111, NULL, "Fatal error in pre-processor gdlpp.exe--compilation aborted", lnf); g_errorList.SetLastMsgIncludesFatality(true); return false; } *pstaFilePreProc = "$_temp.gdl"; #else char tmpgdl[15] = "/tmp/gdlXXXXXX"; if (mkstemp(tmpgdl)==-1) { g_errorList.AddError(1112, NULL, "Could not create temp file to run pre-processor: ", staGdlppFile, " compiling ", staFileName); return false; } pid_t pid; int status, died, testexec; switch (pid = fork()) { case -1: cout << "Can't fork pre-processor: " << strerror(errno) << "\n"; exit(-1); case 0 : // In child process if (m_fVerbose) testexec = execlp(staGdlppFile.c_str(), staGdlppFile.c_str(), "-V", staFileName.c_str(), tmpgdl, NULL); else testexec = execlp(staGdlppFile.c_str(), staGdlppFile.c_str(), staFileName.c_str(), tmpgdl, NULL); cout << "exec failed - retval: " << testexec << ", errno: " << strerror(errno) << " (" << errno << ")\n"; cout << "tmpfile " << tmpgdl << endl; cout << "file " << staFileName.c_str() << endl; exit(-2); default: // In parent process died = waitpid(pid, &status, 0); // this is the code the parent runs if (WIFSIGNALED(status)) cout << "Pre-processor died with signal " << WTERMSIG(status) << "\n"; else if (WIFSTOPPED(status)) cout << "Pre-processor stopped with signal " << WSTOPSIG(status) << "\n"; else if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) cout << "Pre-processor exited with result " << WEXITSTATUS(status) << "\n"; else break; g_errorList.AddError(1113, NULL, "Failed to run pre-processor: ", staGdlppFile, " compiling ", staFileName); return false; } *pstaFilePreProc = tmpgdl; #endif return true; } /*---------------------------------------------------------------------------------------------- Process the output of the pre-processor--parse any error messages and record them in the standard way. ----------------------------------------------------------------------------------------------*/ void GrcManager::RecordPreProcessorErrors(FILE * pFilePreProcErr) { schar rgch[4096]; size_t cbRead; cbRead = fread(rgch, 1, 4096, pFilePreProcErr); schar * pch = rgch; // Skip the first 4 lines--copyright info, etc. unsigned int nLinesSkipped = 0; while (nLinesSkipped < 2 && (unsigned int)(pch - rgch) < cbRead) { if (*pch == 0x0A) { nLinesSkipped++; // pch++; } pch++; } // example of line to parse: // cpp: "PigLatinInput.gdl", line 17: Error: #endif must be in an #if schar * pchFileMin; schar * pchFileLim; schar * pchLineNoMin; schar * pchLineNoLim; schar * pchMsgMin; schar * pchMsgLim; int nLineNo; //std::string staMsg; GrpLineAndFile lnf; lnf.SetPreProcessedLine(0); while ((unsigned int)(pch - rgch) < cbRead) { // pchFileMin = pch + strlen(_T("cpp: \"")); _T is undefined on Linux pchFileMin = pch + 6; // Assert(strcmp(pch, _T("cpp: \""))); Assert((*pch == 'c' && *(pch + 1) == 'p' && *(pch + 2) == 'p' && *(pch + 3) == ':' && *(pch + 4) == ' ' && *(pch + 5) == '\"')); pch = pchFileMin; while (*pch != '\"') { pch++; if ((unsigned int)(pch - rgch) >= cbRead) { Assert(false); goto LNextLine; } } pchFileLim = pch; pch++; // skip the '"' // pchLineNoMin = pch + strlen(_T(", line ")); pchLineNoMin = pch + 7; while (*pch != ':') { pch++; if ((unsigned int)(pch - rgch) >= cbRead) { Assert(false); goto LNextLine; } } pchLineNoLim = pch; pch++; // skip the ':' Assert(*pch == ' '); while (*pch == ' ') pch++; bool fFatal; if (*pch == 'W') { Assert(*(pch+1) == 'a'); Assert(*(pch+2) == 'r'); fFatal = false; } else { Assert((*pch == 'E' && *(pch+1) == 'r' && *(pch+2) == 'r') || // Error (*pch == 'F' && *(pch+1) == 'a' && *(pch+2) == 't')); // Fatal error fFatal = true; } pchMsgMin = pch; while (*pch != 0x0A && (unsigned int)(pch - rgch) < cbRead) pch++; pchMsgLim = pch; // Record error message. nLineNo = atoi((const char *)pchLineNoMin); lnf.SetFile(std::string(pchFileMin, pchFileLim - pchFileMin)); lnf.SetOriginalLine(nLineNo); if (fFatal) g_errorList.AddError(1114, NULL, "Gdlpp.exe ", std::string(pchMsgMin, pchMsgLim - pchMsgMin), lnf); else g_errorList.AddWarning(1503, NULL, "Gdlpp.exe ", std::string(pchMsgMin, pchMsgLim - pchMsgMin), lnf); g_errorList.SetLastMsgIncludesFatality(true); LNextLine: while (*pch != 0x0A && (unsigned int)(pch - rgch) < cbRead) pch++; pch++; } } /*---------------------------------------------------------------------------------------------- Given the name of a file (possibly including path) answer the name of the corresponding file output by the pre-processor (not including path). If the name of the file is 'abc.gdl', the name of outfile file will be 'abc.i'. OBSOLETE now that we are not using CL.EXE. ----------------------------------------------------------------------------------------------*/ std::string GrcManager::PreProcName(std::string sta) { size_t ichMin; size_t ichLim = sta.length(); for ( ; ichLim >= 0 && sta[ichLim] != '\\' && sta[ichLim] != '.'; ichLim--) ; if (sta[ichLim] == '.') { for (ichMin = ichLim; ichMin >= 0 && sta[ichMin] != '\\'; ichMin--) ; ichMin++; } else { ichMin = ichLim; ichLim = sta.length(); } char rgch[100]; memset(rgch, 0, 100); memcpy(rgch, sta.data() + ichMin, (ichLim - ichMin)); std::string staRet(rgch); staRet += ".i"; return staRet; } /*---------------------------------------------------------------------------------------------- Run the parser over the input file, generating an ANTLR tree, then walk the tree to extract the associated data. Assumes the input file exists and has been successfully opened. ----------------------------------------------------------------------------------------------*/ bool GrcManager::ParseFile(std::ifstream & strmIn, std::string staFileName) { try { GrpLexer lexer(strmIn); GrpTokenStreamFilter tsf(lexer); lexer.init(tsf); tsf.init(staFileName); GrpParser parser(tsf); parser.init(tsf); parser.renderDescription(); RefAST ast = parser.getAST(); if (g_errorList.AnyFatalErrors()) { if (ast != NULL) ast->iterativeRemoveChildren(true); // to avoid stack overflows return false; } InitPreDefined(); WalkParseTree(ast); ast->iterativeRemoveChildren(true); // to avoid stack overflows } catch(ANTLRException & e) { // Handle exceptions that happen during parsing. g_errorList.AddError(1115, NULL, e.getMessage().c_str()); //e.getLine()); } return true; } /*---------------------------------------------------------------------------------------------- Initialize the data structures with pre-defined stuff. Specifically the ANY class. ----------------------------------------------------------------------------------------------*/ void GrcManager::InitPreDefined() { AddGlyphClass(GrpLineAndFile(), "ANY"); } /*---------------------------------------------------------------------------------------------- Walk the parse tree to extract the data and fill in the GdlRenderer. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkParseTree(RefAST ast) { if (ast == NULL) { g_errorList.AddError(1116, NULL, "Invalid input file--compilation aborted"); return; } if (OutputDebugFiles()) DebugParseTree(ast); Assert(ast->getType() == Ztop); if (ast->getType() != Ztop) return; WalkTopTree(ast); Assert(m_venv.size() == 1); } /*---------------------------------------------------------------------------------------------- Process the entire parse tree. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkTopTree(RefAST ast) { Assert(ast->getType() == Ztop); Assert(ast->getNextSibling() == NULL); RefAST astChild = ast->getFirstChild(); while (astChild) { int nodetyp = astChild->getType(); switch (nodetyp) { case LITERAL_environment: WalkEnvTree(astChild, ktbltNone, NULL, NULL); break; case LITERAL_table: WalkTableTree(astChild); break; case OP_EQ: case OP_PLUSEQUAL: ProcessGlobalSetting(astChild); break; default: Assert(false); } astChild = astChild->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process a global setting statement. Review: should we also allow directives? ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessGlobalSetting(RefAST ast) { Assert(ast->getType() == OP_EQ || ast->getType() == OP_PLUSEQUAL); RefAST astName = ast->getFirstChild(); Assert(astName); std::string staName = astName->getText(); Symbol psym = SymbolTable()->FindSymbol(staName); if (!psym || !psym->FitsSymbolType(ksymtGlobal)) { g_errorList.AddError(1117, NULL, "Invalid global: ", staName, LineAndFile(ast)); return; } RefAST astValue = astName->getNextSibling(); Assert(astValue); if (staName == "AutoPseudo") { if (ast->getType() == OP_PLUSEQUAL) { g_errorList.AddError(1118, NULL, "Inappropriate use of += operator", LineAndFile(ast)); return; } if (astValue->getType() == LITERAL_true) m_prndr->SetAutoPseudo(true); else if (astValue->getType() == LITERAL_false) m_prndr->SetAutoPseudo(false); else if (astValue->getType() == LIT_INT) { int nValue; bool fM; nValue = NumericValue(astValue, &fM); if (fM) g_errorList.AddError(1119, NULL, "The AutoPseudo global does not expect a scaled number", LineAndFile(astValue)); else m_prndr->SetAutoPseudo(nValue != 0); } if (astValue->getNextSibling()) g_errorList.AddError(1120, NULL, "The AutoPseudo global cannot take multiple values", LineAndFile(ast)); } else if (staName == "Bidi") { if (ast->getType() == OP_PLUSEQUAL) { g_errorList.AddError(1121, NULL, "Inappropriate use of += operator", LineAndFile(ast)); return; } if (astValue->getType() == LITERAL_true) m_prndr->SetBidi(1); else if (astValue->getType() == LITERAL_false) m_prndr->SetBidi(0); else if (astValue->getType() == LIT_INT) { int nValue; bool fM; nValue = NumericValue(astValue, &fM); if (fM) g_errorList.AddError(1122, NULL, "The Bidi global does not expect a scaled number", LineAndFile(astValue)); else { if (nValue != 0 && nValue != 1 && nValue != 2) g_errorList.AddWarning(1512, NULL, "Non-boolean value for the Bidi global; will be set to true", LineAndFile(astValue)); m_prndr->SetBidi(nValue); } } if (astValue->getNextSibling()) g_errorList.AddError(1123, NULL, "The Bidi global cannot take multiple values", LineAndFile(ast)); } else if (staName == "ExtraAscent" || staName == "ExtraDescent") { bool fDescent = (staName == "ExtraDescent"); GdlNumericExpression * pexpOld = (fDescent) ? m_prndr->ExtraDescent() : m_prndr->ExtraAscent(); if (ast->getType() == OP_EQ) { if (pexpOld) { g_errorList.AddWarning(1504, NULL, "The ", staName, " global setting overrode a previous value", LineAndFile(ast)); delete pexpOld; } (fDescent) ? m_prndr->SetExtraDescent(NULL) : m_prndr->SetExtraAscent(NULL); pexpOld = NULL; } if (astValue->getType() != LIT_INT) { g_errorList.AddError(1124, NULL, "Invalid value for ", staName, " global", LineAndFile(ast)); } else { int nValue; bool fM; nValue = NumericValue(astValue, &fM); if (!fM) g_errorList.AddWarning(1505, NULL, "The ", staName, " global setting expects a scaled number", LineAndFile(astValue)); if (pexpOld && (pexpOld->Units() != MUnits())) { g_errorList.AddError(1125, NULL, "Cannot combine the new value of the ", staName, "global with the previous because the units are different", LineAndFile(ast)); } else { GdlNumericExpression * pexpNew; if (fM) pexpNew = new GdlNumericExpression(nValue, MUnits()); else pexpNew = new GdlNumericExpression(nValue); (fDescent) ? m_prndr->SetExtraDescent(pexpNew) : m_prndr->SetExtraAscent(pexpNew); if (pexpOld) delete pexpOld; } } if (astValue->getNextSibling()) g_errorList.AddError(1126, NULL, "The ", staName, " global cannot take multiple values", LineAndFile(ast)); } else if (staName == "ScriptDirection" || staName == "ScriptDirections") { if (ast->getType() == OP_EQ) { bool fNotEmpty = m_prndr->ClearScriptDirections(); if (fNotEmpty) g_errorList.AddWarning(1506, NULL, staName, " global setting overrode a previous value", LineAndFile(ast)); } while (astValue) { if (astValue->getType() == LIT_INT || astValue->getType() == OP_PLUS) { int nValue; GdlExpression * pexp = WalkExpressionTree(astValue); if (!pexp->ResolveToInteger(&nValue, false)) { g_errorList.AddError(1128, pexp, "Invalid value for ScriptDirection"); } else m_prndr->AddScriptDirection(nValue); delete pexp; } else g_errorList.AddError(1129, NULL, "Invalid value for ScriptDirection", LineAndFile(ast)); astValue = astValue->getNextSibling(); } } else if (staName == "ScriptTags" || staName == "ScriptTag") { if (ast->getType() == OP_EQ) { bool fNotEmpty = m_prndr->ClearScriptTags(); if (fNotEmpty) g_errorList.AddWarning(1507, NULL, staName, " global setting overrode a previous value", LineAndFile(ast)); } while (astValue) { if (astValue->getType() != LIT_STRING) { g_errorList.AddError(1130, NULL, "The ScriptTags global expects a string value", LineAndFile(astValue)); return; } std::string sta = astValue->getText(); auto cb = sta.length(); if (cb > 4) { g_errorList.AddError(1131, NULL, "Invalid script tag value--must be a 4-byte string", LineAndFile(astValue)); return; } else if (cb < 4) g_errorList.AddWarning(1508, NULL, "Unexpected script tag value--should be a 4-byte string", LineAndFile(astValue)); gr::byte b1, b2, b3, b4; b1 = (cb > 0) ? sta[0] : 0; b2 = (cb > 1) ? sta[1] : 0; b3 = (cb > 2) ? sta[2] : 0; b4 = (cb > 3) ? sta[3] : 0; int nValue = (b1 << 24) | (b2 << 16) | (b3 << 8) | b4; m_prndr->AddScriptTag(nValue); astValue = astValue->getNextSibling(); } if (m_prndr->NumScriptTags() > kMaxScriptTags) { g_errorList.AddError(1132, NULL, "Number of script tags (", std::to_string(int(m_prndr->NumScriptTags())), ") exceeds maximum of ", std::to_string(kMaxScriptTags)); } } else { Assert(false); } } /*---------------------------------------------------------------------------------------------- Process an "environment" statement. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkEnvTree(RefAST ast, TableType tblt, GdlRuleTable * prultbl, GdlPass * ppass) { Assert(ast->getType() == LITERAL_environment); GrpLineAndFile lnf = LineAndFile(ast); PushGeneralEnv(lnf); RefAST astDirectives = ast->getFirstChild(); RefAST astContents = astDirectives; if (astDirectives && astDirectives->getType() == Zdirectives) { WalkDirectivesTree(astDirectives); astContents = astDirectives->getNextSibling(); } while (astContents) { int nodetyp = astContents->getType(); switch (nodetyp) { case OP_EQ: case OP_PLUSEQUAL: ProcessGlobalSetting(astContents); break; default: WalkTableElement(astContents, tblt, prultbl, ppass); } astContents = astContents->getNextSibling(); } PopEnv(lnf, "environment"); } /*---------------------------------------------------------------------------------------------- Process a list of environment directives. Assumes that parser does not permit a directive to take a list of values. pnCollisionFix - set when processing a pass(X) statement; if NULL, FixCollisions is invalid pnAutoKern pnCollisionThreshold ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkDirectivesTree(RefAST ast, int * pnCollisionFix, int * pnAutoKern, int * pnCollisionThreshold, int * pnDir) { Assert(ast->getType() == Zdirectives); RefAST astDirective = ast->getFirstChild(); while (astDirective) { std::string staName = astDirective->getFirstChild()->getText(); // For now, all directives have numeric or boolean values. RefAST astValue = astDirective->getFirstChild()->getNextSibling(); Assert(astValue); int nValue = -1; bool fM = false; if (astValue->getType() == LIT_INT) nValue = NumericValue(astValue, &fM); else if (astValue->getType() == LITERAL_false) nValue = 0; else if (astValue->getType() == LITERAL_true) nValue = 1; else { g_errorList.AddError(1195, NULL, "Invalid value for directive ", staName, LineAndFile(ast)); } Symbol psym = SymbolTable()->FindSymbol(staName); if (!psym || !psym->FitsSymbolType(ksymtDirective)) g_errorList.AddError(1133, NULL, "Invalid directive: ", staName, LineAndFile(ast)); else { if (fM && psym->ExpType() != kexptMeas) g_errorList.AddError(1134, NULL, "The ", staName, " directive does not expect a scaled value", LineAndFile(ast)); if (staName == "AttributeOverride") SetAttrOverride(nValue != 0); else if (staName == "CodePage") SetCodePage(nValue); else if (staName == "MaxRuleLoop") SetMaxRuleLoop(nValue); else if (staName == "MaxBackup") SetMaxBackup(nValue); else if (staName == "MUnits") SetMUnits(nValue); else if (staName == "PointRadius") { Assert(psym->ExpType() == kexptMeas); if (!fM) g_errorList.AddError(1135, NULL, "The PointRadius directive requires a scaled value", LineAndFile(ast)); SetPointRadius(nValue, MUnits()); } else if (staName == "CollisionFix") { if (pnCollisionFix == NULL) g_errorList.AddError(1185, NULL, "The CollisionFix directive must be indicated directly on a pass", LineAndFile(ast)); else { if (astValue->getType() == LITERAL_true) *pnCollisionFix = 3; // default; should this be 1?? else if (nValue > kMaxColIterations || nValue < 0) { g_errorList.AddError(1186, NULL, "The CollisionFix value must be between 0 and ", std::to_string(kMaxColIterations), LineAndFile(ast)); *pnCollisionFix = kMaxColIterations; } else *pnCollisionFix = nValue; } } else if (staName == "AutoKern") { if (pnAutoKern == NULL) g_errorList.AddError(1189, NULL, "The AutoKern directive must be indicated directly on a pass", LineAndFile(ast)); else if (nValue != kakNone && nValue != kakFull && nValue != kakNoSpace) g_errorList.AddWarning(1516, NULL, "The AutoKern value should be 0 (NONE), 1 (FULL), or 2 (NOSPACE)", LineAndFile(ast)); else *pnAutoKern = nValue; } else if (staName == "CollisionThreshold") { if (pnCollisionThreshold == NULL) g_errorList.AddError(1190, NULL, "The CollisionThreshold directive must be indicated directly on a pass", LineAndFile(ast)); else if (nValue < 1 || nValue > 255) g_errorList.AddError(1191, NULL, "The CollisionThreshold value must be between 1 and 255", LineAndFile(ast)); else *pnCollisionThreshold = nValue; } else if (staName == "Direction") { if (pnDir == NULL) g_errorList.AddError(1194, NULL, "The Direction directive must be indicated directly on a pass", LineAndFile(ast)); else *pnDir = nValue; } else { Assert(false); } } astDirective = astDirective->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process a "table" statement. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkTableTree(RefAST ast) { Assert(ast->getType() == LITERAL_table); RefAST astTableType = ast->getFirstChild(); Assert(astTableType); int nodetyp = astTableType->getType(); switch (nodetyp) { case LITERAL_glyph: WalkGlyphTableTree(ast); break; case LITERAL_feature: WalkFeatureTableTree(ast); break; case LITERAL_language: WalkLanguageTableTree(ast); break; case LITERAL_name: WalkNameTableTree(ast); break; case LITERAL_substitution: case LITERAL_linebreak: case LITERAL_position: case LITERAL_positioning: case LITERAL_justification: WalkRuleTableTree(ast, nodetyp); break; case IDENT: g_errorList.AddWarning(1509, NULL, "Skipping '", astTableType->getText().c_str(), "' table--unrecognized table name", LineAndFile(ast)); break; default: Assert(false); } } /*---------------------------------------------------------------------------------------------- Process an element of a table: a -pass-, -table-, -if-. or -environment- statement, assignment, or rule. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkTableElement(RefAST ast, TableType tblt, GdlRuleTable * prultbl, GdlPass * ppass) { int nodetyp = ast->getType(); switch (nodetyp) { case LITERAL_environment: WalkEnvTree(ast, tblt, prultbl, ppass); break; case LITERAL_table: WalkTableTree(ast); break; case Zdirectives: WalkDirectivesTree(ast); break; case LITERAL_pass: Assert(prultbl); Assert(ktbltRule == tblt); WalkPassTree(ast, prultbl, ppass); break; case ZifStruct: Assert(prultbl); Assert(ktbltRule == tblt); WalkIfTree(ast, prultbl, ppass); break; case Zrule: Assert(prultbl); Assert(ktbltRule == tblt); WalkRuleTree(ast, prultbl, ppass); break; default: // Assignment of some sort. switch (tblt) { case ktbltFeature: WalkFeatureTableElement(ast); break; case ktbltLanguage: WalkLanguageTableElement(ast); break; case ktbltName: WalkNameTableElement(ast); break; case ktbltGlyph: WalkGlyphTableElement(ast); break; case ktbltRule: default: Assert(false); } } } /*---------------------------------------------------------------------------------------------- Process the glyph table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkGlyphTableTree(RefAST ast) { Assert(ast->getType() == LITERAL_table); Assert(ast->getFirstChild()->getType() == LITERAL_glyph); RefAST astContents = ast->getFirstChild()->getNextSibling(); while (astContents) { int nodetyp = astContents->getType(); switch (nodetyp) { case OP_EQ: case OP_PLUSEQUAL: case OP_ANDEQUAL: case OP_MINUSEQUAL: WalkGlyphTableElement(astContents); break; default: WalkTableElement(astContents, ktbltGlyph, NULL, NULL); } astContents = astContents->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process a top-level glyph table element. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkGlyphTableElement(RefAST ast) { int nodetyp = ast->getType(); Assert(nodetyp == OP_EQ || nodetyp == OP_PLUSEQUAL || nodetyp == OP_ANDEQUAL || nodetyp == OP_MINUSEQUAL); GlyphClassType glfct; switch (nodetyp) { case OP_ANDEQUAL: glfct = kglfctIntersect; break; case OP_MINUSEQUAL: glfct = kglfctDifference; break; default: glfct = kglfctUnion; break; } std::vector vsta; GdlGlyphClassDefn * pglfc; std::string staClassName = ast->getFirstChild()->getText(); Symbol psymClass = SymbolTable()->FindSymbol(staClassName); if (!psymClass) { // Create the class. psymClass = SymbolTable()->AddClassSymbol(GrcStructName(staClassName), LineAndFile(ast), glfct); pglfc = psymClass->GlyphClassDefnData(); Assert(pglfc); pglfc->SetName(staClassName); m_prndr->AddGlyphClass(pglfc); if (nodetyp == OP_ANDEQUAL || nodetyp == OP_MINUSEQUAL) // union or intersection { g_errorList.AddError(1184, NULL, "Cannot perform set operation on nonexistent class ", staClassName, LineAndFile(ast)); return; } else if (nodetyp == OP_PLUSEQUAL) // appending { g_errorList.AddWarning(1515, NULL, "Appending to non-existent class '", staClassName, "'; class will be created", LineAndFile(ast)); } } else { if (!psymClass->FitsSymbolType(ksymtClass)) { g_errorList.AddError(1136, NULL, "Name conflict: '", staClassName, "' cannot be used as a glyph class name", LineAndFile(ast)); return; } pglfc = psymClass->GlyphClassDefnData(); Assert(pglfc); if (nodetyp == OP_EQ) { g_errorList.AddError(1137, NULL, "Duplicate definition of class '", staClassName, "'", LineAndFile(ast)); return; } else if (nodetyp == OP_ANDEQUAL) { GrpLineAndFile lnf = LineAndFile(ast); // separate line makes Linux build happy pglfc = ConvertClassToIntersection(psymClass, pglfc, lnf); } else if (nodetyp == OP_MINUSEQUAL) { GrpLineAndFile lnf = LineAndFile(ast); // separate line makes Linux build happy pglfc = ConvertClassToDifference(psymClass, pglfc, lnf); } } WalkGlyphClassTree(ast, pglfc, glfct); } /*---------------------------------------------------------------------------------------------- Process a single glyph class definition. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkGlyphClassTree(RefAST ast, GdlGlyphClassDefn * pglfc, GlyphClassType glfct) { // Skip the class name. RefAST astContents = ast->getFirstChild()->getNextSibling(); while (astContents) { if (astContents->getType() == Zattrs) { // Attributes. std::vector vsta; vsta.push_back(pglfc->Name()); RefAST astT = astContents->getFirstChild(); while (astT) { WalkGlyphAttrTree(astT, vsta); Assert(vsta.size() == 1); astT = astT->getNextSibling(); } } else // Class member ProcessGlyphClassMember(astContents, pglfc, glfct, NULL); astContents = astContents->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Traverse the glyph attribute assignment tree, adding the assignments to the symbol table and master glyph attribute table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkGlyphAttrTree(RefAST ast, std::vector & vsta) { if (!ast) return; RefAST astNextID = ast->getFirstChild(); vsta.push_back(astNextID->getText()); int nodetyp = ast->getType(); if (nodetyp == OP_EQ) { // Assignment. Symbol psymBase = SymbolTable()->FindSymbol(vsta[1]); if (psymBase && !psymBase->FitsSymbolType(ksymtGlyphAttr) && !psymBase->FitsSymbolType(ksymtInvalid)) { g_errorList.AddError(1138, NULL, "Invalid glyph attribute name: ", psymBase->FullName(), LineAndFile(ast)); } else { RefAST astValue = astNextID->getNextSibling(); if (astValue->getType() == Zfunction) ProcessFunction(astValue, vsta, false); else { GdlExpression * pexpValue = WalkExpressionTree(astValue); GdlExpression * pexpX = NULL; GdlExpression * pexpY = NULL; GdlExpression * pexpGpoint = NULL; GdlExpression * pexpXoffset = NULL; GdlExpression * pexpYoffset = NULL; if (pexpValue->PointFieldEquivalents(this, &pexpX, &pexpY, &pexpGpoint, &pexpXoffset, &pexpYoffset) && (pexpX || pexpY)) { if (pexpX) { vsta.push_back("x"); AddGlyphAttr(ast, vsta, pexpX); vsta.pop_back(); } if (pexpY) { vsta.push_back("y"); AddGlyphAttr(ast, vsta, pexpY); vsta.pop_back(); } if (OffsetAttrs()) { if (pexpGpoint) { vsta.push_back("gpoint"); AddGlyphAttr(ast, vsta, pexpGpoint); vsta.pop_back(); } if (pexpXoffset) { vsta.push_back("xoffset"); AddGlyphAttr(ast, vsta, pexpY); vsta.pop_back(); } if (pexpYoffset) { vsta.push_back("yoffset"); AddGlyphAttr(ast, vsta, pexpY); vsta.pop_back(); } } else { if (pexpGpoint) delete pexpGpoint; if (pexpXoffset) delete pexpXoffset; if (pexpYoffset) delete pexpYoffset; } delete pexpValue; } else { AddGlyphAttr(ast, vsta, pexpValue); } } } } else if (nodetyp == OP_PLUSEQUAL || nodetyp == OP_MINUSEQUAL || nodetyp == OP_MULTEQUAL || nodetyp == OP_DIVEQUAL) // || nodetyp == OP_ANDEQUAL || nodetyp == OP_OREQUAL) - not implemented { std::string staOp = ast->getText(); g_errorList.AddError(1139, NULL, "Cannot assign a glyph attribute with ", staOp, LineAndFile(ast)); } else { // Dot or brace. Assert(ast->getType() == OP_DOT || ast->getType() == ZdotStruct); RefAST astT = astNextID->getNextSibling(); while (astT) { WalkGlyphAttrTree(astT, vsta); astT = astT->getNextSibling(); } } vsta.pop_back(); } /*---------------------------------------------------------------------------------------------- Add the expression as the value of the glyph attribute indicated by the strings. ----------------------------------------------------------------------------------------------*/ void GrcManager::AddGlyphAttr(RefAST ast, std::vector & vsta, GdlExpression * pexpValue) { Symbol psym = SymbolTable()->AddGlyphAttrSymbol(GrcStructName(vsta), LineAndFile(ast), pexpValue->ExpType()); if (psym) m_mtbGlyphAttrs->AddItem(psym, pexpValue, PointRadius(), PointRadiusUnits(), AttrOverride(), LineAndFile(ast), "glyph attr assignment"); } /*---------------------------------------------------------------------------------------------- Process an attribute whose value is a function: box, point, gpoint, gpath. Arguments: fSlotAttr - true if this is a slot attribute, false if it is a glyph attr prit, psymOp - only used for slot attributes ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessFunction(RefAST ast, std::vector & vsta, bool fSlotAttr, GdlRuleItem * prit, Symbol psymOp) { Assert(ast->getType() == Zfunction); Assert(!fSlotAttr || (prit && psymOp)); RefAST astName = ast->getFirstChild(); std::string staName = astName->getText(); int nPR = PointRadius(); int mPRUnits = PointRadiusUnits(); bool fOverride = AttrOverride(); GrpLineAndFile lnf = LineAndFile(ast); RefAST astX1; RefAST astX2; RefAST astX3; RefAST astX4; GdlExpression * pexp1 = NULL; GdlExpression * pexp2 = NULL; GdlExpression * pexp3 = NULL; GdlExpression * pexp4 = NULL; std::string sta1; std::string sta2; std::string sta3; std::string sta4; ExpressionType expt1, expt2, expt3, expt4; if (staName == "box") { sta1 = "left"; sta2 = "bottom"; sta3 = "right"; sta4 = "top"; expt1 = kexptMeas; expt2 = kexptMeas; expt3 = kexptMeas; expt4 = kexptMeas; astX1 = astName->getNextSibling(); if (astX1) { pexp1 = WalkExpressionTree(astX1); // left astX2 = astX1->getNextSibling(); if (astX2) { pexp2 = WalkExpressionTree(astX2); // bottom astX3 = astX2->getNextSibling(); if (astX3) { pexp3 = WalkExpressionTree(astX3); // right astX4 = astX3->getNextSibling(); if (astX4) { pexp4 = WalkExpressionTree(astX4); // top if (astX4->getNextSibling()) BadFunctionError(lnf, staName, "4"); } else BadFunctionError(lnf, staName, "4"); } else BadFunctionError(lnf, staName, "4"); } else BadFunctionError(lnf, staName, "4"); } else BadFunctionError(lnf, staName, "4"); } else if (staName == "point") { sta1 = "x"; sta2 = "y"; sta3 = "xoffset"; sta4 = "yoffset"; expt1 = kexptMeas; expt2 = kexptMeas; expt3 = kexptMeas; expt4 = kexptMeas; astX1 = astName->getNextSibling(); if (astX1) { pexp1 = WalkExpressionTree(astX1); // x astX2 = astX1->getNextSibling(); if (astX2) { pexp2 = WalkExpressionTree(astX2); // y astX3 = astX2->getNextSibling(); if (astX3) { pexp3 = WalkExpressionTree(astX3); // xoffset astX4 = astX3->getNextSibling(); if (astX4) { pexp4 = WalkExpressionTree(astX4); // yoffset if (astX4->getNextSibling()) BadFunctionError(lnf, staName, "2 or 4"); } else BadFunctionError(lnf, staName, "2 or 4"); } else { pexp3 = new GdlNumericExpression(0); // xoffset pexp4 = new GdlNumericExpression(0); // yoffset } } else BadFunctionError(lnf, staName, "2 or 4"); } else BadFunctionError(lnf, staName, "2 or 4"); } else if (staName == "gpoint" || staName == "gpath") { sta1 = staName; sta2 = "xoffset"; sta3 = "yoffset"; expt1 = kexptNumber; expt2 = kexptMeas; expt3 = kexptMeas; astX1 = astName->getNextSibling(); if (astX1) { pexp1 = WalkExpressionTree(astX1); // gpath or gpoint astX2 = astX1->getNextSibling(); if (astX2) { pexp2 = WalkExpressionTree(astX2); // xoffset astX3 = astX2->getNextSibling(); if (astX3) { pexp3 = WalkExpressionTree(astX3); // yoffset if (astX3->getNextSibling()) BadFunctionError(lnf, staName, "1 or 3"); } else BadFunctionError(lnf, staName, "1 or 3"); } else { pexp2 = new GdlNumericExpression(0); // xoffset pexp3 = new GdlNumericExpression(0); // yoffset } } else BadFunctionError(lnf, staName, "1 or 3"); } // glyphattr(attrName) function is not implemented - instead use glyph.attrName //else if (staName == "glyphattr") //{ // if (!fSlotAttr) // g_errorList.AddError(9999, NULL, // "glyphattr() function should only be used within a rule", // LineAndFile(ast)); // astX1 = astName->getNextSibling(); // if (astX1) // { // pexp1 = WalkExpressionTree(astX1); // astX2 = astX1->getNextSibling(); // if (astX2) // BadFunctionError(lnf, staName, "1"); // else // { // ProcessFunctionArg(false, vsta, nPR, mPRUnits, fOverride, lnf, // kexptUnknown, prit, psymOp, pexp1); // } // pexp1 = NULL; // don't do processing below // } // else // BadFunctionError(lnf, staName, "1"); //} else { g_errorList.AddError(1140, NULL, "Undefined glyph attribute function: ", staName, LineAndFile(ast)); return; } if (pexp1) { vsta.push_back(sta1); ProcessFunctionArg(fSlotAttr, GrcStructName(vsta), nPR, mPRUnits, fOverride, lnf, expt1, prit, psymOp, pexp1); vsta.pop_back(); } if (pexp2) { vsta.push_back(sta2); ProcessFunctionArg(fSlotAttr, GrcStructName(vsta), nPR, mPRUnits, fOverride, lnf, expt2, prit, psymOp, pexp2); vsta.pop_back(); } if (pexp3) { vsta.push_back(sta3); ProcessFunctionArg(fSlotAttr, GrcStructName(vsta), nPR, mPRUnits, fOverride, lnf, expt3, prit, psymOp, pexp3); vsta.pop_back(); } if (pexp4) { vsta.push_back(sta4); ProcessFunctionArg(fSlotAttr, GrcStructName(vsta), nPR, mPRUnits, fOverride, lnf, expt4, prit, psymOp, pexp4); vsta.pop_back(); } } /*---------------------------------------------------------------------------------------------- Process a single argument of a function (point, box, gpath, gpoint) either as a glyph attribute or a slot attribute. ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessFunctionArg(bool fSlotAttr, GrcStructName const& xns, int nPR, int mPRUnits, bool fOverride, GrpLineAndFile const& lnf, ExpressionType expt, GdlRuleItem * prit, Symbol psymOp, GdlExpression * pexpValue) { if (fSlotAttr) { Symbol psymSlotAttr = SymbolTable()->FindSlotAttr(xns, lnf); if (!psymSlotAttr) g_errorList.AddError(1141 ,NULL, "Invalid slot attribute: ", xns.FullString(), lnf); else { GdlAttrValueSpec * pavs = new GdlAttrValueSpec(psymSlotAttr, psymOp, pexpValue); prit->AddAttrValueSpec(pavs); } } else { Symbol psymGlyphAttr = SymbolTable()->AddGlyphAttrSymbol(xns, lnf, expt); m_mtbGlyphAttrs->AddItem(psymGlyphAttr, pexpValue, nPR, mPRUnits, fOverride, lnf, "glyph attr assignment"); } } /*---------------------------------------------------------------------------------------------- Record an error indicating that a function has the wrong number of arguments. ----------------------------------------------------------------------------------------------*/ void GrcManager::BadFunctionError(GrpLineAndFile & lnf, std::string staFunction, std::string staArgsExpected) { g_errorList.AddError(1142, NULL, "Invalid number of arguments for '", staFunction, "'; ", staArgsExpected, " expected", lnf); } /*---------------------------------------------------------------------------------------------- Process a member of a glyph class; either add the member to the class or return it to be used in creating a pseudo-glyph. Arguments: pglfc - class to add to glfct - union, intersection, or difference pglfRet - value to return to embed inside of pseudo; one or the other of these arguments will be NULL ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessGlyphClassMember(RefAST ast, GdlGlyphClassDefn * pglfc, GlyphClassType glfct, GdlGlyphDefn ** ppglfRet) { Assert(!pglfc || !ppglfRet); Assert(pglfc || ppglfRet); RefAST astItem; int nCodePage; int nPseudoInput; GlyphType glft = kglftUnknown; std::string staSubClassName; Symbol psymSubClass; GdlGlyphDefn * pglfT; GdlGlyphClassDefn * pglfcSub; GdlGlyphDefn * pglfForPseudo; int nodetyp = ast->getType(); switch (nodetyp) { case LITERAL_unicode: glft = kglftUnicode; break; case ZuHex: glft = kglftUnicode; break; case LITERAL_glyphid: glft = kglftGlyphID; break; case LITERAL_codepoint: glft = kglftCodepoint; break; case LITERAL_postscript: glft = kglftPostscript; break; case LITERAL_pseudo: glft = kglftPseudo; break; case IDENT: break; default: Assert(false); } switch (nodetyp) { case LITERAL_unicode: case ZuHex: case LITERAL_glyphid: case LITERAL_postscript: astItem = ast->getFirstChild(); Assert(astItem->getType() != Zcodepage); while (astItem) { pglfT = ProcessGlyph(astItem, glft); if (pglfc) pglfc->AddElement(pglfT, LineAndFile(ast), glfct, this); else *ppglfRet = pglfT; // return for pseudo astItem = astItem->getNextSibling(); if (astItem && !pglfc) { // Can't put more than one output glyph in a pseudo. g_errorList.AddError(1143, NULL, "Pseudo-glyph -> glyph ID mapping contains more than one glyph", LineAndFile(astItem)); break; } } break; case LITERAL_codepoint: astItem = ast->getFirstChild(); if (astItem->getType() == Zcodepage) { Assert(astItem->getFirstChild()->getType() == LIT_INT); nCodePage = NumericValue(astItem->getFirstChild()); astItem = astItem->getNextSibling(); } else nCodePage = CodePage(); while (astItem) { pglfT = ProcessGlyph(astItem, kglftCodepoint, nCodePage); if (pglfc) pglfc->AddElement(pglfT, LineAndFile(ast), glfct, this); else *ppglfRet = pglfT; // return for pseudo astItem = astItem->getNextSibling(); if (astItem && !pglfc) { // Can't put more than one output glyph in a pseudo. g_errorList.AddError(1144, NULL, "Pseudo-glyph -> glyph ID mapping contains more than one glyph", LineAndFile(astItem)); break; } } break; case LITERAL_pseudo: Assert(pglfc && !ppglfRet); // can't put a pseudo inside a pseudo astItem = ast->getFirstChild(); ProcessGlyphClassMember(astItem, NULL, kglfctUnion, &pglfForPseudo); if (astItem->getNextSibling()) { RefAST astInput = astItem->getNextSibling(); nPseudoInput = NumericValue(astInput); pglfT = new GdlGlyphDefn(kglftPseudo, pglfForPseudo, nPseudoInput); } else pglfT = new GdlGlyphDefn(kglftPseudo, pglfForPseudo); pglfT->SetLineAndFile(LineAndFile(ast)); pglfc->AddElement(pglfT, LineAndFile(ast), glfct, this); break; case IDENT: Assert(!ast->getFirstChild()); Assert(pglfc && !ppglfRet); // can't put a subclass identifer inside a pseudo staSubClassName = ast->getText(); psymSubClass = SymbolTable()->FindSymbol(staSubClassName); if (!psymSubClass) { g_errorList.AddError(1145, NULL, "Undefined glyph class: ", staSubClassName, LineAndFile(ast)); return; } if (!psymSubClass->FitsSymbolType(ksymtClass)) { g_errorList.AddError(1146, NULL, "Name conflict: '", staSubClassName, "' cannot be used as a glyph class name", LineAndFile(ast)); return; } pglfcSub = psymSubClass->GlyphClassDefnData(); Assert(pglfcSub); pglfc->AddElement(pglfcSub, LineAndFile(ast), glfct, this); break; default: Assert(false); } } /*---------------------------------------------------------------------------------------------- Process the contents of a glyph function ("unicode", "glyphid", etc); return the resulting glyph. ----------------------------------------------------------------------------------------------*/ GdlGlyphDefn * GrcManager::ProcessGlyph(RefAST astGlyph, GlyphType glft, int nCodePage) { RefAST ast1; RefAST ast2; int n1 = 0, n2 = 0; utf16 w1; std::string sta; utf16 wCodePage = (utf16)nCodePage; GdlGlyphDefn * pglfRet = NULL; int nodetyp = astGlyph->getType(); switch (nodetyp) { case OP_DOTDOT: // Range: 0x1111..0x2222, 'a'..'z', U+89ab..U+89ff ast1 = astGlyph->getFirstChild(); Assert(ast1); ast2 = ast1->getNextSibling(); Assert(ast2); Assert(!ast2->getNextSibling()); if (ast1->getType() == LIT_INT || ast1->getType() == LIT_UHEX) n1 = NumericValue(ast1); else if (ast1->getType() == LIT_CHAR) n1 = *(ast1->getText().c_str()); else { Assert(false); } if (ast2->getType() == LIT_INT || ast1->getType() == LIT_UHEX) n2 = NumericValue(ast2); else if (ast2->getType() == LIT_CHAR) n2 = *(ast2->getText().c_str()); else { Assert(false); } pglfRet = (nCodePage == -1) ? new GdlGlyphDefn(glft, n1, n2) : new GdlGlyphDefn(glft, n1, n2, wCodePage); break; case LIT_INT: case LIT_UHEX: n1 = NumericValue(astGlyph); pglfRet = (nCodePage == -1) ? new GdlGlyphDefn(glft, n1) : new GdlGlyphDefn(glft, n1, nCodePage); break; case LIT_CHAR: w1 = (astGlyph->getText())[0]; pglfRet = (nCodePage == -1) ? new GdlGlyphDefn(glft, w1) : new GdlGlyphDefn(glft, w1, nCodePage); break; case LIT_STRING: sta = astGlyph->getText(); pglfRet = (nCodePage == -1) ? new GdlGlyphDefn(glft, sta) : new GdlGlyphDefn(glft, sta, wCodePage); break; default: Assert(false); } pglfRet->SetLineAndFile(LineAndFile(astGlyph)); return pglfRet; } /*---------------------------------------------------------------------------------------------- Process the feature table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkFeatureTableTree(RefAST ast) { Assert(ast->getType() == LITERAL_table); Assert(ast->getFirstChild()->getType() == LITERAL_feature); RefAST astContents = ast->getFirstChild()->getNextSibling(); while (astContents) { int nodetyp = astContents->getType(); switch (nodetyp) { case OP_DOT: case ZdotStruct: case OP_EQ: WalkFeatureTableElement(astContents); break; default: WalkTableElement(astContents, ktbltFeature, NULL, NULL); } astContents = astContents->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process a top level element in the feature table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkFeatureTableElement(RefAST ast) { std::vector vsta; std::string staFeatureName = ast->getFirstChild()->getText(); Symbol psymFeat = SymbolTable()->FindSymbol(staFeatureName); if (!psymFeat) { if (staFeatureName == "lang") { g_errorList.AddError(1147, NULL, "Attempt to redefine reserved feature: 'lang'", LineAndFile(ast)); return; } psymFeat = SymbolTable()->AddFeatureSymbol(GrcStructName(staFeatureName), LineAndFile(ast)); GdlFeatureDefn * pfeat = psymFeat->FeatureDefnData(); Assert(pfeat); pfeat->SetName(std::string(staFeatureName)); m_prndr->AddFeature(pfeat); } else if (!psymFeat->FitsSymbolType(ksymtFeature)) { g_errorList.AddError(1148, NULL, "Identifier conflict: '", staFeatureName, "' cannot be used as a feature name", LineAndFile(ast)); return; } vsta.clear(); WalkFeatureSettingsTree(ast, vsta); } /*---------------------------------------------------------------------------------------------- Traverse the features identifier tree, adding the assignments to the symbol table and master features table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkFeatureSettingsTree(RefAST ast, std::vector & vsta) { RefAST astNextID = ast->getFirstChild(); vsta.push_back(astNextID->getText()); if (ast->getType() == OP_EQ) { if (vsta.size() < 2) { g_errorList.AddError(1149, NULL, "Invalid feature statement", LineAndFile(ast)); return; } Symbol psym = SymbolTable()->AddSymbol(GrcStructName(vsta), ksymtFeatSetting, LineAndFile(ast)); RefAST astValue = astNextID->getNextSibling(); if (!astValue) return; GdlExpression *pexpValue; if (astValue->getType() == IDENT) { // A kludge, because this isn't a slot-ref expression, but that is the // most convenient thing to hold a simple identifier until we can process it // further (see the master table function that processes the features). pexpValue = new GdlSlotRefExpression(astValue->getText()); pexpValue->SetLineAndFile(LineAndFile(ast)); } else { pexpValue = WalkExpressionTree(astValue); } m_mtbFeatures->AddItem(psym, pexpValue, PointRadius(), PointRadiusUnits(), AttrOverride(), LineAndFile(ast), "feature setting"); } else { Assert(ast->getType() == OP_DOT || ast->getType() == ZdotStruct); RefAST astT = astNextID->getNextSibling(); while (astT) { WalkFeatureSettingsTree(astT, vsta); astT = astT->getNextSibling(); } } vsta.pop_back(); } /*---------------------------------------------------------------------------------------------- Process the language table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkLanguageTableTree(RefAST ast) { Assert(ast->getType() == LITERAL_table); Assert(ast->getFirstChild()->getType() == LITERAL_language); RefAST astContents = ast->getFirstChild()->getNextSibling(); while (astContents) { int nodetyp = astContents->getType(); switch (nodetyp) { case OP_DOT: case ZdotStruct: WalkLanguageTableElement(astContents); break; default: WalkTableElement(astContents, ktbltLanguage, NULL, NULL); } astContents = astContents->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process a top level element in the language table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkLanguageTableElement(RefAST ast) { RefAST astLabel = ast->getFirstChild(); std::string staLabel(astLabel->getText().c_str()); RefAST astItem = astLabel->getNextSibling(); // Find or create the language class with that name: GdlLangClass * plcls; size_t ilcls; for (ilcls = 0; ilcls < m_vplcls.size(); ilcls++) { if (strcmp(m_vplcls[ilcls]->m_staLabel.c_str(), staLabel.c_str()) == 0) { plcls = m_vplcls[ilcls]; break; } } if (ilcls >= m_vplcls.size()) { plcls = new GdlLangClass(staLabel); m_vplcls.push_back(plcls); } WalkLanguageItem(astItem, plcls); } /*---------------------------------------------------------------------------------------------- Process one assignment in the language table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkLanguageItem(RefAST ast, GdlLangClass * plcls) { RefAST astItem = ast; while (astItem) { Assert(astItem->getType() == OP_EQ); RefAST astLhs = astItem->getFirstChild(); std::string staLhs = astLhs->getText(); if (staLhs == "language" || staLhs == "languages") { if (plcls->m_vplang.size() > 0) { g_errorList.AddError(1150, NULL, "Redefining list of languages for language group '", plcls->m_staLabel, "'", LineAndFile(astLhs)); } RefAST astLangList = astLhs->getNextSibling(); WalkLanguageCodeList(astLangList, plcls); } else // feature setting { RefAST astValue = astLhs->getNextSibling(); std::string staValue = astValue->getText(); GdlExpression * pexpVal = NULL; if (astValue->getType() != IDENT) pexpVal = WalkExpressionTree(astValue); plcls->AddFeatureValue(staLhs, staValue, pexpVal, LineAndFile(astValue)); } astItem = astItem->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process one line in the language table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkLanguageCodeList(RefAST astList, GdlLangClass * plcls) { RefAST astNext = astList; while (astNext && astNext->getType() == LIT_STRING) { std::string staLang = astNext->getText(); if (staLang.length() > 4) { g_errorList.AddError(1151, NULL, "Language codes may contain a maximum of 4 characters", LineAndFile(astNext)); } // Create a language. GrcStructName xns(staLang); GrpLineAndFile lnf; Symbol psymLang = SymbolTable()->AddLanguageSymbol(xns, lnf); GdlLanguageDefn * plang = psymLang->LanguageDefnData(); Assert(plang); plang->SetCode(std::string(staLang)); m_prndr->AddLanguage(plang); plcls->AddLanguage(plang); astNext = astNext->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process the name table. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkNameTableTree(RefAST ast) { Assert(ast->getType() == LITERAL_table); Assert(ast->getFirstChild()->getType() == LITERAL_name); RefAST astContents = ast->getFirstChild()->getNextSibling(); while (astContents) { int nodetyp = astContents->getType(); switch (nodetyp) { case OP_DOT: case ZdotStruct: case OP_EQ: case OP_PLUSEQUAL: WalkNameTableElement(astContents); break; default: WalkTableElement(astContents, ktbltName, NULL, NULL); } astContents = astContents->getNextSibling(); } } /*---------------------------------------------------------------------------------------------- Process a top-level name table entry. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkNameTableElement(RefAST ast) { // Nothing special to do. std::vector vsta; WalkNameIDTree(ast, vsta); Assert(vsta.size() == 0); } /*---------------------------------------------------------------------------------------------- Process a name assignment. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkNameIDTree(RefAST ast, std::vector & vsta) { RefAST astNextID = ast->getFirstChild(); vsta.push_back(astNextID->getText()); if (ast->getType() == OP_EQ || ast->getType() == OP_PLUSEQUAL) { Symbol psym = SymbolTable()->AddSymbol(GrcStructName(vsta), ksymtNameID, LineAndFile(ast)); RefAST astValue = astNextID->getNextSibling(); GdlExpression *pexpValue; pexpValue = WalkExpressionTree(astValue); m_mvlNameStrings->AddItem(psym, pexpValue, PointRadius(), PointRadiusUnits(), AttrOverride(), LineAndFile(ast), "name assignment"); } else { Assert(ast->getType() == OP_DOT || ast->getType() == ZdotStruct); RefAST astT = astNextID->getNextSibling(); while (astT) { WalkNameIDTree(astT, vsta); astT = astT->getNextSibling(); } } vsta.pop_back(); } /*---------------------------------------------------------------------------------------------- Process a table that includes rules (substitution, positioning, linebreak). ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkRuleTableTree(RefAST ast, int nodetyp) { GrpLineAndFile lnf = LineAndFile(ast); if (nodetyp == LITERAL_substitution) PushTableEnv(lnf, "substitution"); else if (nodetyp == LITERAL_linebreak) PushTableEnv(lnf, "linebreak"); else if (nodetyp == LITERAL_position) PushTableEnv(lnf, "positioning"); else if (nodetyp == LITERAL_positioning) PushTableEnv(lnf, "positioning"); else if (nodetyp == LITERAL_justification) PushTableEnv(lnf, "justification"); else { Assert(false); } RefAST astDirectives = ast->getFirstChild()->getNextSibling(); RefAST astContents = astDirectives; if (astDirectives && astDirectives->getType() == Zdirectives) { WalkDirectivesTree(astDirectives); astContents = astDirectives->getNextSibling(); } GdlRuleTable * prultbl = RuleTable(lnf); if (nodetyp == LITERAL_substitution || nodetyp == LITERAL_justification) prultbl->SetSubstitution(true); GdlPass * ppass = prultbl->GetPass(lnf, Pass(), MaxRuleLoop(), MaxBackup()); while (astContents) { WalkTableElement(astContents, ktbltRule, prultbl, ppass); astContents = astContents->getNextSibling(); } PopEnv(lnf, "table"); } /*---------------------------------------------------------------------------------------------- Process a "pass" statement and its contents. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkPassTree(RefAST ast, GdlRuleTable * prultbl, GdlPass * /*ppassPrev*/) { RefAST astPassNumber = ast->getFirstChild(); Assert(astPassNumber->getType() == LIT_INT); bool fM; int nPassNumber = NumericValue(astPassNumber, &fM); if (fM) g_errorList.AddError(1152, NULL, "Pass number should not be a scaled number", LineAndFile(ast)); GrpLineAndFile lnf = LineAndFile(ast); PushPassEnv(lnf, nPassNumber); RefAST astDirectives = ast->getFirstChild()->getNextSibling(); RefAST astContents = astDirectives; int nCollisionFix = 0; int nAutoKern = 0; int nCollisionThreshold = 0; int nDir = 0; if (astDirectives && astDirectives->getType() == Zdirectives) { WalkDirectivesTree(astDirectives, &nCollisionFix, &nAutoKern, &nCollisionThreshold, &nDir); astContents = astDirectives->getNextSibling(); } GdlPass * ppass = prultbl->GetPass(lnf, Pass(), MaxRuleLoop(), MaxBackup()); auto const staPass = std::to_string(Pass()); if (nCollisionFix > 0 && prultbl->Substitution()) { g_errorList.AddError(1187, NULL, "CollisionFix cannot be set on substitution passes, only positioning passes", LineAndFile(ast)); } else if (!prultbl->Substitution()) { if (nCollisionFix == 0 && ppass->CollisionFix() > 0) g_errorList.AddWarning(1514, NULL, "Clearing previous value of CollisionFix for pass ", staPass, LineAndFile(ast)); ppass->SetCollisionFix(nCollisionFix); } if (nAutoKern > 0 && prultbl->Substitution()) { g_errorList.AddError(1192, NULL, "AutoKern cannot be set on substitution passes, only positioning passes", LineAndFile(ast)); } else if (!prultbl->Substitution()) { if (nAutoKern == 0 && ppass->AutoKern()) g_errorList.AddWarning(1517, NULL, "Clearing previous value of AutoKern for pass ", staPass, LineAndFile(ast)); ppass->SetAutoKern(nAutoKern); } if (nCollisionThreshold != 0 && prultbl->Substitution()) { g_errorList.AddError(1193, NULL, "CollisionThreshold cannot be set on substitution passes, only positioning passes", LineAndFile(ast)); } else if (prultbl->Substitution()) { ppass->SetCollisionThreshold(0); } else { if (nCollisionThreshold == 0 && ppass->CollisionThreshold() != 0 && ppass->CollisionThreshold() != kCollisionThresholdDefault ) g_errorList.AddWarning(1518, NULL, "Clearing previous value of CollisionThreshold for pass ", staPass, LineAndFile(ast)); else if (nCollisionThreshold > 0 && nCollisionFix == 0 && nAutoKern == 0) g_errorList.AddWarning(1519, NULL, "CollisionThreshold has no effect without collision-fixing and/or auto-kerning", LineAndFile(ast)); if (nCollisionThreshold == 0) nCollisionThreshold = kCollisionThresholdDefault; ppass->SetCollisionThreshold(nCollisionThreshold); } if (ppass->Direction() != 0 && ppass->Direction() != nDir) { g_errorList.AddWarning(1520, NULL, "Inconsistent Direction directive specifications on pass ", staPass, LineAndFile(ast)); } ppass->SetDirection(nDir); // Copy the conditional(s) from the -if- statement currently in effect as a pass-level // constraint. for (size_t ipexp = 0; ipexp < m_vpexpPassConstraints.size(); ipexp++) ppass->AddConstraint(m_vpexpPassConstraints[ipexp]->Clone()); while (astContents) { WalkTableElement(astContents, ktbltRule, prultbl, ppass); astContents = astContents->getNextSibling(); } PopEnv(lnf, "pass"); } /*---------------------------------------------------------------------------------------------- Process an "if" statement. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkIfTree(RefAST ast, GdlRuleTable * prultbl, GdlPass * ppass) { Assert(ast->getType() == ZifStruct); int cConds = 0; bool fPassConstraint = AllContentsArePasses(ast); // Only the most immediate pass constraints apply to the embedded passes, so // temporarily remove any that are hanging around at this point. std::vector vpexpSavePassConstr; size_t ipexp; for (ipexp = 0; ipexp < m_vpexpPassConstraints.size(); ipexp++) vpexpSavePassConstr.push_back(m_vpexpPassConstraints[ipexp]); m_vpexpPassConstraints.clear(); Symbol psymNot = SymbolTable()->FindSymbol("!"); Assert(psymNot); RefAST astCond; GdlExpression * pexpCond = NULL; RefAST astNext = ast->getFirstChild(); while (astNext) { if (pexpCond) { // The else branch: push the negation of the previous condition on the stack. GdlExpression * pexpNot = new GdlUnaryExpression(psymNot, pexpCond); if (fPassConstraint) { m_vpexpPassConstraints.pop_back(); m_vpexpPassConstraints.push_back(pexpNot); } else { m_vpexpConditionals.pop_back(); m_vpexpConditionals.push_back(pexpNot); } } RefAST astContents = astNext->getFirstChild(); int nodetyp = astNext->getType(); switch (nodetyp) { case LITERAL_if: case LITERAL_elseif: case Zelseif: astCond = astContents; astContents = astContents->getNextSibling(); break; case LITERAL_else: Assert(!astNext->getNextSibling()); astCond = RefAST(NULL); break; default: Assert(false); } if (astCond) { // Push the current condition on the stack. pexpCond = WalkExpressionTree(astCond); if (fPassConstraint) m_vpexpPassConstraints.push_back(pexpCond); else m_vpexpConditionals.push_back(pexpCond); cConds++; } while (astContents) { WalkTableElement(astContents, ktbltRule, prultbl, ppass); astContents = astContents->getNextSibling(); } astNext = astNext->getNextSibling(); } // Delete all the conditions that were pushed (copies of them have been stored in // the rules or passes themselves). for (int i = 0; i < cConds; i++) { if (fPassConstraint) { delete m_vpexpPassConstraints.back(); m_vpexpPassConstraints.pop_back(); } else { delete m_vpexpConditionals.back(); m_vpexpConditionals.pop_back(); } } // Put the pass constraint list back the way it was. Assert(m_vpexpPassConstraints.size() == 0); for (ipexp = 0; ipexp < vpexpSavePassConstr.size(); ipexp++) m_vpexpPassConstraints.push_back(vpexpSavePassConstr[ipexp]); } /*---------------------------------------------------------------------------------------------- Return true if all the direct children of the -if- structure are pass structures. If there is a mixture, return false and give a warning. ----------------------------------------------------------------------------------------------*/ bool GrcManager::AllContentsArePasses(RefAST ast) { bool fOne = false; bool fAll = true; RefAST astNext = ast->getFirstChild(); while (astNext) { RefAST astContents = astNext->getFirstChild(); int nodetyp = astNext->getType(); switch (nodetyp) { case LITERAL_if: case LITERAL_elseif: case Zelseif: // First item in conditional. astContents = astContents->getNextSibling(); break; case LITERAL_else: break; default: Assert(false); } while (astContents) { int nodetyp = astContents->getType(); if (nodetyp == LITERAL_pass) fOne = true; else fAll = false; astContents = astContents->getNextSibling(); } astNext = astNext->getNextSibling(); } if (fOne && !fAll) { g_errorList.AddWarning(1501, NULL, "Not all elements of if statement are passes; test will be applied at rule level.", LineAndFile(ast)); } return fAll; } /*---------------------------------------------------------------------------------------------- Process a rule. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkRuleTree(RefAST ast, GdlRuleTable * prultbl, GdlPass * ppass) { GrpLineAndFile lnf = LineAndFile(ast); GdlRule * prule = ppass->NewRule(lnf); RefAST astLhs = ast->getFirstChild(); Assert(astLhs); if (!astLhs) return; RefAST astRhs; RefAST astContext; if (astLhs->getType() == Zrhs) { astRhs = astLhs; astLhs = RefAST(NULL); } else { Assert(astLhs->getType() == Zlhs); astRhs = astLhs->getNextSibling(); if (!astRhs || astRhs->getType() == Zcontext) { // Substitution rule with no lhs: make what is labeled Zlhs be the rhs. astRhs = astLhs; astLhs = RefAST(NULL); } else { Assert(astRhs); Assert(astRhs->getType() == Zrhs); } } astContext = astRhs->getNextSibling(); // may be NULL // Process the context first, then the RHS, then the LHS. RefAST astItem; int irit = 0; if (astContext) { Assert(astContext->getType() == Zcontext); astItem = astContext->getFirstChild(); while (astItem) { ProcessItemRange(astItem, prultbl, ppass, prule, &irit, 0, false); astItem = astItem->getNextSibling(); } } astItem = astRhs->getFirstChild(); irit = 0; while (astItem) { ProcessItemRange(astItem, prultbl, ppass, prule, &irit, 1, (astLhs != NULL)); astItem = astItem->getNextSibling(); } if (astLhs) { astItem = astLhs->getFirstChild(); int critRhs = irit; irit = 0; while (astItem) { ProcessItemRange(astItem, prultbl, ppass, prule, &irit, 2, false); astItem = astItem->getNextSibling(); } if (irit > 0 && irit != critRhs) g_errorList.AddError(1188, NULL, "Number of items in left- and right-hand-sides do not match", LineAndFile(ast)); } // Copy the conditionals from the -if- statements currently in effect. for (size_t ipexp = 0; ipexp < m_vpexpConditionals.size(); ipexp++) { prule->AddConstraint(m_vpexpConditionals[ipexp]->Clone()); } // Last step: prule->InitialChecks(); } /*---------------------------------------------------------------------------------------------- Process a rule item or optional range. ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessItemRange(RefAST astItem, GdlRuleTable * prultbl, GdlPass * ppass, GdlRule * prule, int * pirit, int lrc, bool fHasLhs) { if (astItem->getType() == OP_QUESTION) { // Optional range. int iritStart = *pirit; RefAST astSubItem = astItem->getFirstChild(); while (astSubItem) { ProcessItemRange(astSubItem, prultbl, ppass, prule, pirit, lrc, fHasLhs); astSubItem = astSubItem->getNextSibling(); } prule->AddOptionalRange(iritStart, (*pirit - iritStart), (lrc == 0)); } else if (astItem->getType() == OP_CARET) { if (prule->ScanAdvance() == -1) prule->SetScanAdvance(*pirit); else g_errorList.AddError(1153, NULL, "Cannot have more than one scan advance marker per rule", LineAndFile(astItem)); } else { // Single item ProcessRuleItem(astItem, prultbl, ppass, prule, pirit, lrc, fHasLhs); (*pirit)++; } } /*---------------------------------------------------------------------------------------------- Process a single rule item. lrc - 0 = context, 1 = rhs, 2 = lhs fHasLhs - if we are in the rhs, and there is in fact a lhs (irrelevant if we are not in the rhs) ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessRuleItem(RefAST astItem, GdlRuleTable * prultbl, GdlPass * /*ppass*/, GdlRule * prule, int * pirit, int lrc, bool fHasLhs) { GrpLineAndFile lnf = LineAndFile(astItem); Assert(astItem->getType() == ZruleItem); RefAST astNext = astItem->getFirstChild(); RefAST astSel = RefAST(NULL); RefAST astSelValue = RefAST(NULL); RefAST astClass = RefAST(NULL); bool fSel = false; // bool fAssocs = false; GdlAlias aliasSel; std::string staAlias; std::string staClass; GdlRuleItem * prit = NULL; if (astNext->getType() == OP_AT) { fSel = true; staClass = "@"; astSel = astNext->getNextSibling(); if (lrc == 2) { g_errorList.AddError(1154, NULL, "@ not permitted in lhs", lnf); staClass = "_"; } if (astSel && astSel->getType() == Zselector) { if (lrc == 2) g_errorList.AddError(1155, NULL, "Cannot specify a selector in the lhs", lnf); else if (lrc == 1 && !fHasLhs) g_errorList.AddError(1156, NULL, "Selectors not permitted in a rule with no lhs", lnf); else { astSelValue = astSel->getFirstChild(); Assert(astSelValue); ProcessSlotIndicator(astSelValue, &aliasSel); astNext = astSel->getNextSibling(); } } else { aliasSel.SetIndex(0); astNext = astNext->getNextSibling(); } } else { astClass = astNext; // class name, glyph spec, _, # if (// astClass->getType() == IDENT || astClass->getType() == OP_HASH || astClass->getType() == OP_UNDER) { staClass = astClass->getText(); astNext = astClass->getNextSibling(); } else { // Class name, list, or anonymous class staClass = ProcessClassList(astClass, &astNext); } } if (astNext && astNext->getType() == Zselector) { if (lrc == 2) g_errorList.AddError(1157, NULL, "Cannot specify a selector in the lhs", lnf); else if (lrc == 1 && !fHasLhs) g_errorList.AddError(1158, NULL, "Selectors not permitted in a rule with no lhs", lnf); else { fSel = true; astSelValue = astNext->getFirstChild(); ProcessSlotIndicator(astSelValue, &aliasSel); } astNext = astNext->getNextSibling(); } if (astNext && astNext->getType() == Zalias) { staAlias = astNext->getFirstChild()->getText(); astNext = astNext->getNextSibling(); } // If we are in the RHS and there is a LHS, make substitution items. bool fMakeSubItems = ((lrc == 1) && fHasLhs); //// && prultbl->Substitution(); switch (lrc) { case 0: // context if (fSel) { prit = (aliasSel.Index() == -1) ? prule->ContextSelectorItemAt(lnf, *pirit, staClass, aliasSel.Name(), staAlias) : prule->ContextSelectorItemAt(lnf, *pirit, staClass, aliasSel.Index(), staAlias); } else prit = prule->ContextItemAt(lnf, *pirit, staClass, staAlias); break; case 1: // rhs if (fSel) { prit = (aliasSel.Index() == -1) ? prule->RhsSelectorItemAt(lnf, *pirit, staClass, aliasSel.Name(), staAlias) : prule->RhsSelectorItemAt(lnf, *pirit, staClass, aliasSel.Index(), staAlias); } else prit = prule->RhsItemAt(lnf, *pirit, staClass, staAlias, fMakeSubItems); break; case 2: // lhs if (fSel) { prit = (aliasSel.Index() == -1) ? prule->LhsSelectorItemAt(lnf, *pirit, staClass, aliasSel.Name(), staAlias) : prule->LhsSelectorItemAt(lnf, *pirit, staClass, aliasSel.Index(), staAlias); } else prit = prule->LhsItemAt(lnf, *pirit, staClass, staAlias); break; default: Assert(false); } if (prit) { if (astNext && astNext->getType() == Zassocs) { ProcessAssociations(astNext, prultbl, prit, lrc); astNext = astNext->getNextSibling(); } if (astNext) { if (lrc == 0) // context--constraint { Assert(astNext->getType() == Zconstraint); RefAST astConstraint = astNext->getFirstChild(); if (astConstraint) { Assert(!astConstraint->getNextSibling()); GdlExpression * pexpConstraint = WalkExpressionTree(astConstraint); prit->SetConstraint(pexpConstraint); } } else if (lrc == 2) g_errorList.AddError(1159, NULL, "Cannot set attributes in the lhs", lnf); else { // attributes Assert(lrc == 1); Assert(astNext->getType() == Zattrs); std::vector vsta; RefAST astAttr = astNext->getFirstChild(); while (astAttr) { WalkSlotAttrTree(astAttr, prit, vsta); Assert(vsta.size() == 0); astAttr = astAttr->getNextSibling(); } } Assert(!astNext->getNextSibling()); } } } /*---------------------------------------------------------------------------------------------- Create a new class corresponding to an anonymous class in a rule. Return its name. ----------------------------------------------------------------------------------------------*/ std::string GrcManager::ProcessClassList(RefAST ast, RefAST * pastNext) { if (ast->getType() == IDENT) { *pastNext = ast->getNextSibling(); // If only one class in the list, just return its name. if (!*pastNext) return ast->getText(); int nextNodeTyp = ast->getNextSibling()->getType(); if (nextNodeTyp != IDENT && nextNodeTyp != LITERAL_glyphid && nextNodeTyp != LITERAL_unicode && nextNodeTyp != LITERAL_codepoint && nextNodeTyp != LITERAL_postscript && nextNodeTyp != LITERAL_pseudo) { return ast->getText().c_str(); } } Symbol psymClass = SymbolTable()->AddAnonymousClassSymbol(LineAndFile(ast)); std::string staClassName = psymClass->FullName(); GdlGlyphClassDefn * pglfc = psymClass->GlyphClassDefnData(); Assert(pglfc); pglfc->SetName(staClassName); m_prndr->AddGlyphClass(pglfc); int nodetyp; RefAST astGlyph = ast; while (astGlyph && ((nodetyp = astGlyph->getType()) == IDENT || nodetyp == LITERAL_glyphid || nodetyp == LITERAL_unicode || nodetyp == LITERAL_codepoint || nodetyp == ZuHex || nodetyp == LITERAL_postscript || nodetyp == LITERAL_pseudo)) { ProcessGlyphClassMember(astGlyph, pglfc, kglfctUnion, NULL); astGlyph = astGlyph->getNextSibling(); } *pastNext = astGlyph; return staClassName; } /*---------------------------------------------------------------------------------------------- Create a new class corresponding to an anonymous class in a rule. Return its name. ----------------------------------------------------------------------------------------------*/ std::string GrcManager::ProcessAnonymousClass(RefAST ast, RefAST * pastNext) { Symbol psymClass = SymbolTable()->AddAnonymousClassSymbol(LineAndFile(ast)); std::string staClassName = psymClass->FullName(); GdlGlyphClassDefn * pglfc = psymClass->GlyphClassDefnData(); Assert(pglfc); pglfc->SetName(staClassName); m_prndr->AddGlyphClass(pglfc); // Note that there might possibly be a chain of glyphs, not just a single one. int nodetyp; RefAST astGlyph = ast; while (astGlyph && ((nodetyp = astGlyph->getType()) == LITERAL_glyphid || nodetyp == LITERAL_unicode || nodetyp == LITERAL_codepoint || nodetyp == ZuHex || nodetyp == LITERAL_postscript || nodetyp == LITERAL_pseudo)) { ProcessGlyphClassMember(astGlyph, pglfc, kglfctUnion, NULL); astGlyph = astGlyph->getNextSibling(); } *pastNext = astGlyph; return staClassName; } /*---------------------------------------------------------------------------------------------- Convert an existing class to an intersection class if necessary. ----------------------------------------------------------------------------------------------*/ GdlGlyphClassDefn * GrcManager::ConvertClassToIntersection(Symbol psymClass, GdlGlyphClassDefn * pglfc, GrpLineAndFile & lnf) { GdlGlyphClassDefn * pglfcRet; GdlGlyphIntersectionClassDefn * pglfci = dynamic_cast(pglfc); if (pglfci) { // Already an intersection class. pglfcRet = pglfc; } else { GdlGlyphIntersectionClassDefn * pglfciNew = new GdlGlyphIntersectionClassDefn(); pglfciNew->SetLineAndFile(lnf); std::string staName = pglfc->Name(); pglfciNew->SetName(staName); Symbol psymAnonClass = SymbolTable()->AddAnonymousClassSymbol(pglfc->LineAndFile()); std::string staAnonClassName = psymAnonClass->FullName(); pglfc->SetName(staAnonClassName); psymAnonClass->ReplaceClassData(pglfc); // Make the original class one of the set elements of the intersection. pglfciNew->AddSet(pglfc, lnf); psymClass->SetData(pglfciNew); pglfcRet = dynamic_cast(pglfciNew); m_prndr->AddGlyphClass(pglfcRet); } return pglfcRet; } /*---------------------------------------------------------------------------------------------- Convert an existing class to a difference class with the original class contents as its minuend. ----------------------------------------------------------------------------------------------*/ GdlGlyphClassDefn * GrcManager::ConvertClassToDifference(Symbol psymClass, GdlGlyphClassDefn * pglfc, GrpLineAndFile & lnf) { GdlGlyphDifferenceClassDefn * pglfcd = new GdlGlyphDifferenceClassDefn(); pglfcd->SetLineAndFile(lnf); pglfcd->SetName(pglfc->Name()); Symbol psymAnonClass = SymbolTable()->AddAnonymousClassSymbol(pglfc->LineAndFile()); std::string staAnonClassName = psymAnonClass->FullName(); pglfc->SetName(staAnonClassName); psymAnonClass->ReplaceClassData(pglfc); // Make the original class the minuend of the new difference. // I.e, "clsA -= clsB" means that the original contents of clsA becomes the minuend // of the difference class, but is now anonymous. pglfcd->SetMinuend(pglfc, lnf); psymClass->SetData(pglfcd); GdlGlyphClassDefn * pglfcRet = dynamic_cast(pglfcd); m_prndr->AddGlyphClass(pglfcRet); return pglfcRet; } /*---------------------------------------------------------------------------------------------- Process a node that is a slot reference, either an identifer or a number. Fill in the given GdlAlias with the result. ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessSlotIndicator(RefAST ast, GdlAlias * palias) { if (ast->getType() == LIT_INT) { bool fM; int sr = NumericValue(ast, &fM); if (fM) g_errorList.AddError(1160, NULL, "Slot indicators should not be scaled numbers", LineAndFile(ast)); palias->SetIndex(sr); } else if (ast->getType() == IDENT || ast->getType() == Qalias) { palias->SetName(ast->getText().c_str()); } else { Assert(false); } } /*---------------------------------------------------------------------------------------------- Process a list of associations. ----------------------------------------------------------------------------------------------*/ void GrcManager::ProcessAssociations(RefAST ast, GdlRuleTable *prultbl, GdlRuleItem * prit, int lrc) { GrpLineAndFile lnf = LineAndFile(ast); if (lrc == 0) // context g_errorList.AddError(1161, NULL, "Cannot set associations in the context", lnf); else if (lrc == 2) // lhs g_errorList.AddError(1162, NULL, "Cannot set associations in the lhs", lnf); else if (!prultbl->Substitution()) g_errorList.AddError(1163, NULL, "Cannot set associations in the ", prultbl->NameSymbol()->FullName(), " table", lnf); else { GdlSubstitutionItem * pritsub = dynamic_cast(prit); if (pritsub) { RefAST astAssoc = ast->getFirstChild(); while (astAssoc) { GdlAlias aliasAssoc; ProcessSlotIndicator(astAssoc, &aliasAssoc); (aliasAssoc.Index() == -1)? pritsub->AddAssociation(lnf, aliasAssoc.Name()) : pritsub->AddAssociation(lnf, aliasAssoc.Index()); astAssoc = astAssoc->getNextSibling(); } } else { g_errorList.AddError(1164, NULL, "Cannot set associations in a rule with no lhs", lnf); } } } /*---------------------------------------------------------------------------------------------- Traverse the slot attribute assignment tree, adding the assignments to the rule item. This will also handle feature assignments. ----------------------------------------------------------------------------------------------*/ void GrcManager::WalkSlotAttrTree(RefAST ast, GdlRuleItem * prit, std::vector & vsta) { if (!ast) return; RefAST astNextID = ast->getFirstChild(); vsta.push_back(astNextID->getText().c_str()); int nodetyp = ast->getType(); if (nodetyp == OP_EQ || nodetyp == OP_PLUSEQUAL || nodetyp == OP_MINUSEQUAL || nodetyp == OP_MULTEQUAL || nodetyp == OP_DIVEQUAL) // || nodetyp == OP_ANDEQUAL || nodetyp == OP_OREQUAL -- not implemented { Symbol psymOp = SymbolTable()->FindSymbol(ast->getText().c_str()); Assert(psymOp); Symbol psymSlotAttr = SymbolTable()->FindSlotAttr(GrcStructName(vsta), LineAndFile(ast)); Symbol psymFeature = SymbolTable()->FindFeature(GrcStructName(vsta), LineAndFile(ast)); if (psymSlotAttr && psymFeature) { g_errorList.AddError(1165, NULL, GrcStructName(vsta).FullString(), " is ambiguous with regards to being a feature or slot attribute", LineAndFile(ast)); } else if (!psymSlotAttr && !psymFeature) { g_errorList.AddError(1165, NULL, "Invalid slot attribute: ", GrcStructName(vsta).FullString(), LineAndFile(ast)); } else { RefAST astValue = astNextID->getNextSibling(); if (astValue->getType() == Zfunction) { ProcessFunction(astValue, vsta, true, prit, psymOp); } else { GdlExpression * pexpValue = WalkExpressionTree(astValue); GdlAttrValueSpec * pavs = (psymSlotAttr) ? new GdlAttrValueSpec(psymSlotAttr, psymOp, pexpValue) : new GdlAttrValueSpec(psymFeature, psymOp, pexpValue); prit->AddAttrValueSpec(pavs); } } } else { Assert(ast->getType() == OP_DOT || ast->getType() == ZdotStruct); RefAST astT = astNextID->getNextSibling(); while (astT) { WalkSlotAttrTree(astT, prit, vsta); astT = astT->getNextSibling(); } } vsta.pop_back(); } /*---------------------------------------------------------------------------------------------- Process an expression. ----------------------------------------------------------------------------------------------*/ GdlExpression * GrcManager::WalkExpressionTree(RefAST ast) { GdlExpression * pexpRet = NULL; GdlExpression * pexp1 = NULL; GdlExpression * pexp2 = NULL; GdlExpression * pexpCond = NULL; GdlExpression * pexpSel = NULL; GdlSlotRefExpression * pexpsrSel = NULL; Symbol psymOp; Symbol psymName; RefAST astOperand1; RefAST astOperand2; RefAST astOperand3; RefAST astT; RefAST astCond; RefAST astSel; RefAST astName; RefAST astCluster; RefAST astText; RefAST astCodePage; int nValue; int nCluster; bool fM; bool fGlyphAttr = false; std::vector vsta; GdlLookupExpression * pexplook; int nodetyp = ast->getType(); switch (nodetyp) { case OP_EQ: g_errorList.AddError(1166, NULL, "'=' cannot be used in an expression (use '==')", LineAndFile(ast)); // fall through and treat as if it were == case OP_EQUALEQUAL: case OP_NE: case OP_GE: case OP_GT: case OP_LT: case OP_LE: case OP_PLUS: case OP_MULT: case OP_DIV: case OP_AND: case OP_OR: case OP_BITAND: case OP_BITOR: if (nodetyp == OP_EQ) psymOp = SymbolTable()->FindSymbol("=="); else psymOp = SymbolTable()->FindSymbol(ast->getText().c_str()); Assert(psymOp); astOperand1 = ast->getFirstChild(); Assert(astOperand1); astOperand2 = astOperand1->getNextSibling(); Assert(astOperand2); Assert(!astOperand2->getNextSibling()); pexp1 = WalkExpressionTree(astOperand1); pexp2 = WalkExpressionTree(astOperand2); pexpRet = new GdlBinaryExpression(psymOp, pexp1, pexp2); break; case LITERAL_min: case LITERAL_max: psymOp = SymbolTable()->FindSymbol(ast->getText().c_str()); Assert(psymOp); astOperand1 = ast->getFirstChild(); if (!astOperand1) { g_errorList.AddError(1167, NULL, "No arguments for ", ast->getText().c_str(), " function", LineAndFile(ast)); return NULL; } pexp1 = WalkExpressionTree(astOperand1); astOperand2 = astOperand1->getNextSibling(); while (astOperand2) { pexp2 = WalkExpressionTree(astOperand2); pexp1 = new GdlBinaryExpression(psymOp, pexp1, pexp2); astOperand2 = astOperand2->getNextSibling(); } pexpRet = pexp1; break; case OP_MINUS: psymOp = SymbolTable()->FindSymbol(ast->getText().c_str()); Assert(psymOp); astOperand1 = ast->getFirstChild(); Assert(astOperand1); astOperand2 = astOperand1->getNextSibling(); if (astOperand2) { Assert(!astOperand2->getNextSibling()); pexp1 = WalkExpressionTree(astOperand1); pexp2 = WalkExpressionTree(astOperand2); pexpRet = new GdlBinaryExpression(psymOp, pexp1, pexp2); break; } else { // fall through to make a unary expression } case OP_NOT: case OP_BITNOT: psymOp = SymbolTable()->FindSymbol(ast->getText().c_str()); Assert(psymOp); astOperand1 = ast->getFirstChild(); Assert(astOperand1); Assert(!astOperand1->getNextSibling()); pexp1 = WalkExpressionTree(astOperand1); pexpRet = new GdlUnaryExpression(psymOp, pexp1); break; case OP_QUESTION: astCond = ast->getFirstChild(); Assert(astCond); astOperand1 = astCond->getNextSibling(); Assert(astOperand1); Assert(astOperand1->getNextSibling()->getType() == OP_COLON); astOperand2 = astOperand1->getNextSibling()->getNextSibling(); Assert(astOperand2); pexpCond = WalkExpressionTree(astCond); pexp1 = WalkExpressionTree(astOperand1); pexp2 = WalkExpressionTree(astOperand2); pexpRet = new GdlCondExpression(pexpCond, pexp1, pexp2); break; case Zlookup: astT = ast->getFirstChild(); astSel = nullAST; pexpSel = NULL; if (astT->getType() == OP_AT) { astSel = astT; astT = astT->getNextSibling(); pexpSel = WalkExpressionTree(astSel); pexpsrSel = dynamic_cast(pexpSel); Assert(pexpsrSel); } astName = astT; vsta.clear(); psymName = IdentifierSymbol(astName, vsta, &fGlyphAttr); Assert(psymName); // GdlLookupExpression::LookupType lookType; // if (psymName->FitsSymbolType(ksymtFeature)) // lookType = GdlLookupExpression::klookFeature; // else if (psymName->FitsSymbolType(ksymtGlyphAttr)) // lookType = GdlLookupExpression::klookGlyph; // else if (psymName->FitsSymbolType(ksymtGlyphMetric)) // lookType = GdlLookupExpression::klookGlyph; // else if (psymName->FitsSymbolType(ksymtSlotAttr)) // lookType = GdlLookupExpression::klookSlot; // else // lookType = GdlLookupExpression::klookUnknown; astCluster = astName->getNextSibling(); nCluster = 0; // default if (astCluster) { Assert(astCluster->getType() == Zcluster); Assert(astCluster->getFirstChild()); nCluster = NumericValue(astCluster->getFirstChild(), &fM); Assert(!fM); } if (pexpSel) pexpRet = new GdlLookupExpression(psymName, pexpsrSel, nCluster); else if (psymName->FitsSymbolType(ksymtClass)) pexpRet = new GdlClassMemberExpression(psymName); else pexpRet = new GdlLookupExpression(psymName, -1, nCluster); pexplook = dynamic_cast(pexpRet); pexplook->SetGlyphAttr(fGlyphAttr); break; case OP_AT: astT = ast->getFirstChild(); Assert(!astT->getNextSibling()); if (astT->getType() == IDENT || astT->getType() == Qalias) pexpRet = new GdlSlotRefExpression(astT->getText().c_str()); else if (astT->getType() == LITERAL_true || astT->getType() == LITERAL_false) { Assert(false); // grammar should not allow this g_errorList.AddError(1168, NULL, "Slot reference cannot contain a boolean", LineAndFile(astT)); pexpRet = new GdlSlotRefExpression(ast->getType() == LITERAL_true); } else { if (astT->getType() == OP_MINUS) { Assert(false); // grammar should not allow this nValue = NumericValue(astT->getFirstChild(), &fM); nValue *= -1; } else nValue = NumericValue(astT, &fM); if (fM) { Assert(false); // grammar should not allow this g_errorList.AddError(1169, NULL, "Slot reference cannot contain a scaled value", LineAndFile(astT)); } pexpRet = new GdlSlotRefExpression(nValue); } break; case LIT_INT: nValue = NumericValue(ast, &fM); if (fM) pexpRet = new GdlNumericExpression(nValue, MUnits()); else pexpRet = new GdlNumericExpression(nValue, false); break; case LITERAL_true: pexpRet = new GdlNumericExpression(1, true); break; case LITERAL_false: pexpRet = new GdlNumericExpression(0, true); break; case LIT_STRING: pexpRet = new GdlStringExpression(ast->getText().c_str(), CodePage()); break; case LITERAL_string: // string function astText = ast->getFirstChild(); astCodePage = astText->getNextSibling(); if (astCodePage) { Assert(astCodePage->getType() == LIT_INT); nValue = NumericValue(astCodePage, &fM); pexpRet = new GdlStringExpression(astText->getText().c_str(), nValue); } else pexpRet = new GdlStringExpression(astText->getText().c_str(), CodePage()); break; default: Assert(false); } pexpRet->SetLineAndFile(LineAndFile(ast)); return pexpRet; } // end of WalkExpressionTree /*---------------------------------------------------------------------------------------------- Return the line information the tree node is associated with. ----------------------------------------------------------------------------------------------*/ GrpLineAndFile GrcManager::LineAndFile(RefAST ast) { GrpASTNode * wrNode = dynamic_cast(ast->getNode()); Assert(wrNode); if (!wrNode) return GrpLineAndFile(0, 0, ""); GrpLineAndFile lnf = wrNode->LineAndFile(); if (!lnf.NotSet()) return lnf; if (ast->getFirstChild()) return LineAndFile(ast->getFirstChild()); if (ast->getNextSibling()) return LineAndFile(ast->getNextSibling()); return GrpLineAndFile(0, 0, ""); } /*---------------------------------------------------------------------------------------------- Return the numeric value that is the equivalent of the text in the node. Return a flag indicating if there is an "m" on the end. The following are legal strings: 123 0x89AB 0x89abcde 123m 123M U+89ab Return 0 if the value is not a legal numeric string. ----------------------------------------------------------------------------------------------*/ int GrcManager::NumericValue(RefAST ast, bool * pfM) { Assert(ast->getType() == LIT_INT || ast->getType() == LIT_UHEX); std::string str = ast->getText(); int nRet = 0; unsigned int ich = 0; int nBase = 10; if (ast->getType() == LIT_UHEX) { if (str[0] == 'U' && str[1] == '+') ich = 2; nBase = 16; } else if (str[0] == '0' && str[1] == 'x') { ich = 2; nBase = 16; } else if (str[0] == 'x') { ich = 1; nBase = 16; } while (ich < str.length()) { if (str[ich] >= 0 && str[ich] <= '9') nRet = nRet * nBase + (str[ich] - '0'); else if (nBase == 16 && str[ich] >= 'A' && str[ich] <= 'F') nRet = nRet * nBase + (str[ich] - 'A' + 10); else if (nBase == 16 && str[ich] >= 'a' && str[ich] <= 'f') nRet = nRet * nBase + (str[ich] - 'a' + 10); else break; ich++; } *pfM = (str[ich] == 'm' || str[ich] == 'M'); Assert(!*pfM || ast->getType() != LIT_UHEX); return nRet; } int GrcManager::NumericValue(RefAST ast) { bool fM; int nRet = NumericValue(ast, &fM); Assert(!fM); return nRet; } /*---------------------------------------------------------------------------------------------- Return the symbol corresponding to the dotted identifier. If the first element of the symbol is "glyph", that is stripped out, but its presence is indicated by the boolean flag, which tells that we want to treat the attribute name as a glyph attribute, not a slot attribute. ----------------------------------------------------------------------------------------------*/ Symbol GrcManager::IdentifierSymbol(RefAST ast, std::vector & vsta, bool * pfGlyphAttr) { if (ast->getType() == OP_DOT) { RefAST ast1 = ast->getFirstChild(); if (vsta.size() == 0 && strcmp(ast1->getText().c_str(), "glyph") == 0) *pfGlyphAttr = true; // treat as glyph attribute else vsta.push_back(ast1->getText().c_str()); return IdentifierSymbol(ast1->getNextSibling(), vsta, pfGlyphAttr); } Assert(ast->getType() == IDENT || ast->getType() == LITERAL_glyph); if (vsta.size() == 0 && strcmp(ast->getText().c_str(), "glyph") == 0) *pfGlyphAttr = true; // treat as glyph attribute else vsta.push_back(ast->getText().c_str()); Symbol psymRet = SymbolTable()->FindSymbol(GrcStructName(vsta)); if (!psymRet) { // If the symbol is of the form ., add the symbol // as a glyph attribute. ExpressionType expt; SymbolType symt; GrcStructName xns(vsta); if (ClassPredefGlyphAttr(vsta, &expt, &symt)) psymRet = SymbolTable()->AddGlyphAttrSymbol(xns, LineAndFile(ast), expt, (symt == ksymtGlyphMetric)); else psymRet = SymbolTable()->AddSymbol(xns, ksymtInvalid, LineAndFile(ast)); } return psymRet; } /*---------------------------------------------------------------------------------------------- Return true if the given array of symbol names is of the form .. ----------------------------------------------------------------------------------------------*/ bool GrcManager::ClassPredefGlyphAttr(std::vector & vsta, ExpressionType * pexpt, SymbolType * psymt) { std::string sta1 = vsta[0]; Symbol psymClass = SymbolTable()->FindSymbol(sta1); if (!psymClass || !psymClass->FitsSymbolType(ksymtClass)) return false; std::vector vstaMinusClass; for (size_t ista = 1; ista < vsta.size(); ista++) vstaMinusClass.push_back(vsta[ista]); Symbol psymGlyphAttr = SymbolTable()->FindSymbol(GrcStructName(vstaMinusClass)); if (!psymGlyphAttr) return false; if (psymGlyphAttr->FitsSymbolType(ksymtGlyphAttr) && !psymGlyphAttr->IsUserDefined()) { *pexpt = psymGlyphAttr->ExpType(); *psymt = ksymtGlyphAttr; return true; } else if (psymGlyphAttr->FitsSymbolType(ksymtGlyphMetric)) { *pexpt = psymGlyphAttr->ExpType(); *psymt = ksymtGlyphMetric; return true; } return false; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Perform initial checking and clean-up on a newly added rule. ----------------------------------------------------------------------------------------------*/ void GdlRule::InitialChecks() { CheckInputClass(); ConvertLhsOptRangesToContext(); } /*---------------------------------------------------------------------------------------------- Check that there are no unused underscores in the context or rhs, or that an item didn't show up as an underscore in both the lhs and rhs. In other words, check that all items have either an input class or an output class. ----------------------------------------------------------------------------------------------*/ void GdlRule::CheckInputClass() { for (size_t iritT = 0; iritT < m_vprit.size(); iritT++) { Symbol psymInput = m_vprit[iritT]->m_psymInput; if (!psymInput) { g_errorList.AddError(1170, this, "Mismatched items between lhs and rhs"); psymInput = g_cman.SymbolTable()->FindSymbol("_"); m_vprit[iritT]->m_psymInput = psymInput; } if (!psymInput->FitsSymbolType(ksymtClass) && !psymInput->FitsSymbolType(ksymtSpecialLb)) { // The only other thing it can be: Assert(psymInput->FitsSymbolType(ksymtSpecialUnderscore)); GdlSubstitutionItem * pritsub = dynamic_cast(m_vprit[iritT]); if (pritsub) { Symbol psymOutput = pritsub->OutputSymbol(); if (!psymOutput || (!psymOutput->FitsSymbolType(ksymtClass) && (!psymOutput->FitsSymbolType(ksymtSpecialAt)))) g_errorList.AddError(1171, this, "Item ", pritsub->PosString(), ": no input or output class specified"); } else g_errorList.AddError(1172, this, "Mismatched items among context, lhs and/or rhs"); } } } /*---------------------------------------------------------------------------------------------- Convert the optional ranges that are relative to the lhs to be relative to the context. If there is a conflict between the lhs ranges and the context ranges, record an error and clear the optional ranges. Note that Lhs and Rhs items are always GdlSetAttrItems or GdlSubstitutionItems. ----------------------------------------------------------------------------------------------*/ void GdlRule::ConvertLhsOptRangesToContext() { Assert(m_viritOptRangeStart.size() == m_viritOptRangeEnd.size()); Assert(m_viritOptRangeStart.size() == m_vfOptRangeContext.size()); if (m_viritOptRangeStart.size() == 0) return; // Make a mapping from lhs/rhs items to corresponding indices in the context. std::vector viritToContext; for (auto iritT = 0U; iritT < m_vprit.size(); ++iritT) { GdlSetAttrItem * pritset = dynamic_cast(m_vprit[iritT]); if (pritset) { // Left-hand-side item. viritToContext.push_back(iritT); } } // Check that there is no overlap or interference between lhs ranges and // context ranges. for (auto iirit = 0U; iirit < m_viritOptRangeStart.size(); ++iirit) { if (!m_vfOptRangeContext[iirit]) { int iiritLhs = iirit; int iritLhs1 = m_viritOptRangeStart[iiritLhs]; int iritLhs2 = m_viritOptRangeEnd[iiritLhs]; if (iritLhs1 < signed(viritToContext.size()) && iritLhs2 < signed(viritToContext.size())) { iritLhs1 = viritToContext[iritLhs1]; iritLhs2 = viritToContext[iritLhs2]; for (size_t iiritC = 0; iiritC < m_viritOptRangeStart.size(); iiritC++) { if (m_vfOptRangeContext[iiritC]) { int iritC1 = m_viritOptRangeStart[iiritC]; int iritC2 = m_viritOptRangeEnd[iiritC]; if ((iritLhs1 >= iritC1 && iritLhs1 <= iritC2) || (iritLhs2 >= iritC1 && iritLhs2 <= iritC2)) { g_errorList.AddError(1127, this, "Conflict between optional ranges in lhs and context"); m_viritOptRangeStart.clear(); m_viritOptRangeEnd.clear(); m_vfOptRangeContext.clear(); return; } } } } else { // Error condition previous handled--ignore this optional range. m_vfOptRangeContext.erase(m_vfOptRangeContext.begin() + iirit); m_viritOptRangeStart.erase(m_viritOptRangeStart.begin() + iirit); m_viritOptRangeEnd.erase(m_viritOptRangeEnd.begin() + iirit); --iirit; } } } // Now do the conversion. for (auto iirit = 0U; iirit < m_viritOptRangeStart.size(); ++iirit) { if (!m_vfOptRangeContext[iirit]) { int irit1 = m_viritOptRangeStart[iirit]; int irit2 = m_viritOptRangeEnd[iirit]; Assert(irit1 < static_cast(viritToContext.size())); Assert(irit2 < static_cast(viritToContext.size())); m_viritOptRangeStart[iirit] = viritToContext[irit1]; m_viritOptRangeEnd[iirit] = viritToContext[irit2]; // Just to keep things tidy: m_vfOptRangeContext[iirit] = true; } } } /*********************************************************************************************** Debuggers ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Write a text version of the parse tree to a file. ----------------------------------------------------------------------------------------------*/ void GrcManager::DebugParseTree(RefAST ast) { std::ofstream strmOut; strmOut.open("dbg_parsetree.txt"); if (strmOut.fail()) { g_errorList.AddWarning(6506, NULL, "Error in writing to file ", "dbg_parsetree.txt"); return; } strmOut << "PARSE TREE\n\n"; ast->Trace(strmOut, nullptr, 0); strmOut.close(); } grcompiler-5.2.1/compiler/PostParser.cpp000066400000000000000000000561521411153030700203060ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: PostParser.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Methods to implement the post-parser, which does adjustments independent of the font file. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods ***********************************************************************************************/ bool GrcManager::PostParse() { // We no longer expect a bidi pass for RTL fonts. //if (m_prndr->RawBidi() == -1) //{ // if (m_prndr->ScriptDirections() & kfsdcHorizRtl) // { // if (m_prndr->ScriptDirections() & kfsdcHorizLtr) // m_prndr->SetBidi(1); // else // { // g_errorList.AddWarning(1513, NULL, // "No bidi pass requested for right-to-left font."); // m_prndr->SetBidi(0); // } // } // else // m_prndr->SetBidi(0); //} // Add the system-defined "lang" feature whose values are 4-byte language ID codes. // This feature always has an ID = 1 (kfidStdLang). Symbol psymFeat = SymbolTable()->AddFeatureSymbol(GrcStructName("lang"), GrpLineAndFile(0, 0, "")); GdlFeatureDefn * pfeat = psymFeat->FeatureDefnData(); Assert(pfeat); pfeat->SetName("lang"); pfeat->MarkAsLanguageFeature(); m_prndr->AddFeature(pfeat); g_cman.ProcessMasterTables(); if (!m_prndr->ReplaceAliases()) return false; if (!m_prndr->HandleOptionalItems()) return false; if (!m_prndr->CheckSelectors()) return false; return true; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Convert slot aliases to (1-based) indices. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::ReplaceAliases() { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->ReplaceAliases(); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::ReplaceAliases() { for (auto ippass = 0U; ippass < m_vppass.size(); ++ippass) { if (m_vppass[ippass] == NULL) m_vppass[ippass] = new GdlPass(ippass, 1, 0); // bogus } for (auto const ppass: m_vppass) ppass->ReplaceAliases(); } /*--------------------------------------------------------------------------------------------*/ void GdlPass::ReplaceAliases() { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->ReplaceAliases(); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::ReplaceAliases() { // Look for slots with more than one name, or names assigned to more than one slot. int ipalias; for (ipalias = 0; ipalias < signed(m_vpalias.size()) - 1; ipalias++) { for (int ipalias2 = ipalias + 1; ipalias2 < signed(m_vpalias.size()); ipalias2++) { if (m_vpalias[ipalias]->m_srIndex == m_vpalias[ipalias2]->m_srIndex) { if (m_vpalias[ipalias]->m_staName != m_vpalias[ipalias2]->m_staName) { g_errorList.AddWarning(1510, this, "Item ", std::to_string(m_vpalias[ipalias]->m_srIndex), " was assigned more than one slot alias"); } } else if (m_vpalias[ipalias]->m_staName == m_vpalias[ipalias2]->m_staName) { g_errorList.AddError(1173, this, "Slot alias '", m_vpalias[ipalias]->m_staName, "' was assigned to more than one item"); } } } // Replace the aliases with the indices in any attribute-setters or constraints. for (size_t irit = 0; irit < m_vprit.size(); irit++) { m_vprit[irit]->ReplaceAliases(this); } for (ipalias = 0; ipalias < signed(m_vpalias.size()); ipalias++) delete m_vpalias[ipalias]; m_vpalias.clear(); } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::ReplaceAliases(GdlRule * prule) { if (m_pexpConstraint) m_pexpConstraint->ReplaceAliases(prule); } /*--------------------------------------------------------------------------------------------*/ void GdlLineBreakItem::ReplaceAliases(GdlRule * prule) { // method on superclass: check constraints. GdlRuleItem::ReplaceAliases(prule); } /*--------------------------------------------------------------------------------------------*/ void GdlSetAttrItem::ReplaceAliases(GdlRule * prule) { for (size_t ipavs = 0; ipavs < m_vpavs.size(); ipavs++) { m_vpavs[ipavs]->ReplaceAliases(prule); } } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::ReplaceAliases(GdlRule * prule) { GdlSetAttrItem::ReplaceAliases(prule); if (m_pexpSelector) m_pexpSelector->ReplaceAliases(prule); for (size_t ipexp = 0; ipexp < m_vpexpAssocs.size(); ipexp++) { m_vpexpAssocs[ipexp]->ReplaceAliases(prule); } } /*--------------------------------------------------------------------------------------------*/ void GdlAttrValueSpec::ReplaceAliases(GdlRule * prule) { m_pexpValue->ReplaceAliases(prule); } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Generate the various versions of the rules depending on the optional items. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::HandleOptionalItems() { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->HandleOptionalItems(); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::HandleOptionalItems() { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->HandleOptionalItems(); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::HandleOptionalItems() { std::vector vpruleNewList; for (size_t irule = 0; irule < m_vprule.size(); ++irule) { GdlRule* prule = m_vprule[irule]; if (prule->HasNoItems()) { Assert(false); delete prule; } else if (prule->HandleOptionalItems(vpruleNewList)) delete prule; } m_vprule.clear(); m_vprule.assign(vpruleNewList.begin(), vpruleNewList.end()); } /*---------------------------------------------------------------------------------------------- If there are optional items in this rule, replace this rule with versions corresponding to the combinations of the presence and absence of the optional items. Return true if this rule has been replaced and should be deleted, false if no changes were necessary (ie, there were no optional items). Argument: vpruleNewList - new list of rules under construction ----------------------------------------------------------------------------------------------*/ bool GdlRule::HandleOptionalItems(std::vector & vpruleNewList) { Assert(m_viritOptRangeStart.size() == m_viritOptRangeEnd.size()); if (m_viritOptRangeStart.size() == 0) { vpruleNewList.push_back(this); return false; // don't delete this rule } if (!AdjustOptRanges()) { return false; // retain the rule as is for further processing } std::vector vfOmit; for (size_t irange = 0; irange < m_viritOptRangeStart.size(); ++irange) vfOmit.push_back(false); Assert(vfOmit.size() == m_viritOptRangeStart.size()); GenerateOptRanges(vpruleNewList, vfOmit, 0); return true; // delete this rule; it has been replaced } /*---------------------------------------------------------------------------------------------- Adjust the list of optional ranges in this rule for ease of processing, and do error checking. Return false if we found an error. ----------------------------------------------------------------------------------------------*/ bool GdlRule::AdjustOptRanges() { if (m_viritOptRangeStart.size() > 1) { // Sort the ranges primarily by start of range, then with longest ranges first. int i1; for (i1 = 0 ; i1 < signed(m_viritOptRangeStart.size()) - 1; ++i1) { for (int i2 = i1 + 1; i2 < signed(m_viritOptRangeStart.size()); ++i2) { int start1 = m_viritOptRangeStart[i1]; int start2 = m_viritOptRangeStart[i2]; int len1 = m_viritOptRangeEnd[i1] - start1; int len2 = m_viritOptRangeEnd[i2] - start2; if ((start1 > start2) || (start1 == start2 && len1 < len2)) { // swap int t = m_viritOptRangeStart[i1]; m_viritOptRangeStart[i1] = m_viritOptRangeStart[i2]; m_viritOptRangeStart[i2] = t; t = m_viritOptRangeEnd[i1]; m_viritOptRangeEnd[i1] = m_viritOptRangeEnd[i2]; m_viritOptRangeEnd[i2] = t; } } } // Remove duplicate ranges. for (int i = 0; i < signed(m_viritOptRangeStart.size()) - 1; ++i) { if (m_viritOptRangeStart[i] == m_viritOptRangeStart[i + 1] && m_viritOptRangeEnd[i] == m_viritOptRangeEnd[i + 1]) { m_viritOptRangeStart.erase(m_viritOptRangeStart.begin() + i + 1); m_viritOptRangeEnd.erase(m_viritOptRangeEnd.begin() + i + 1); } } // Check for overlapping ranges. for (i1 = 0 ; i1 < signed(m_viritOptRangeStart.size()) - 1; ++i1) { for (int i2 = i1 + 1; i2 < signed(m_viritOptRangeStart.size()); ++i2) { if (m_viritOptRangeStart[i2] <= m_viritOptRangeEnd[i1] && m_viritOptRangeEnd[i2] > m_viritOptRangeEnd[i1]) // Overlapping ranges, eg, 3-6 and 4-7 { g_errorList.AddError(1174, this, "Invalid optional ranges."); return false; } } } } // Check for an error of an optional range consisting only of inserted items. for (size_t iirit = 0; iirit < m_viritOptRangeStart.size(); ++iirit) { bool fFoundNonInsertion = false; for (int irit = m_viritOptRangeStart[iirit]; irit <= m_viritOptRangeEnd[iirit]; irit++) { if (!m_vprit[irit]->m_psymInput->FitsSymbolType(ksymtSpecialUnderscore)) fFoundNonInsertion = true; } if (!fFoundNonInsertion) { if (m_viritOptRangeStart[iirit] == m_viritOptRangeEnd[iirit]) g_errorList.AddError(1175, this, "Optional item is an insertion."); else g_errorList.AddError(1176, this, "Optional range includes only inserted items."); return false; } } return true; } /*---------------------------------------------------------------------------------------------- Generate versions of this rule for all the various combinations of optional items. Add the rules to the new list of rules. We call this function recursively, working our way down through the list of ranges and toggling the omit flags for each. For instance, if our rule is A [ B? [ C D? ]? ]? E the (0-based) omit ranges are: 1 - 3 1 - 1 2 - 3 3 - 3 and we generate the rules in the following order: A B C D E (nothing omitted) A B C E (3-3 omitted) A B E (2-3 omitted) A C D E (1-1 omitted) A C E (1-1, 3-3 omitted) A E (1-1, 2-3 omitted) In the case that all the items in the rule happen to be optional, we avoid generating a version with no items. Arguments: vpruleNewList - list of rules being generated vfOmitRange - flags indicating which ranges should be omitted irangeCurr - current range in list being processed (toggled) ----------------------------------------------------------------------------------------------*/ void GdlRule::GenerateOptRanges(std::vector & vpruleNewList, std::vector & vfOmitRange, int irangeCurr) { if (static_cast(irangeCurr) >= vfOmitRange.size()) // We've got a complete set of omit flags for each of the optional ranges-- // generate the corresponding rule. GenerateOneRuleVersion(vpruleNewList, vfOmitRange); else { int irangeSubsuming = PrevRangeSubsumes(irangeCurr); if (irangeSubsuming > -1 && vfOmitRange[irangeSubsuming]) {} // This range is subsumed by a another range that is already being omitted. else // Generate version(s) of this rule containing this range. GenerateOptRanges(vpruleNewList, vfOmitRange, irangeCurr + 1); // Now generate version(s) of this rule omitting this range. vfOmitRange[irangeCurr] = true; GenerateOptRanges(vpruleNewList, vfOmitRange, irangeCurr + 1); vfOmitRange[irangeCurr] = false; } } /*---------------------------------------------------------------------------------------------- Generate a version of this rule for the given combination of optional items. Add it to the new list of rules. ----------------------------------------------------------------------------------------------*/ void GdlRule::GenerateOneRuleVersion(std::vector & vpruleNewList, std::vector & vfOmitRange) { // Make a vector indicating items to omit, and a list of mappings of old->new // indices. For instance, if we have 5 items and we are omitting items 2 & 3, we'll // have vfOmit = [F T T F F] and viNewSlots [1 ? ? 2 3]. std::vector vfOmit; std::vector viNewSlots; int irit; for (irit = 0; irit < signed(m_vprit.size()); ++irit) { vfOmit.push_back(false); viNewSlots.push_back(irit + 1); // +1: currently slot refs are 1-based } for (size_t irange = 0; irange < vfOmitRange.size(); ++irange) { if (vfOmitRange[irange]) { for (int irit = m_viritOptRangeStart[irange]; irit <= m_viritOptRangeEnd[irange]; ++irit) { if (vfOmit[irit] == false) { vfOmit[irit] = true; // so we won't consider it again if there is // another range that includes it for (size_t irit2 = irit + 1; irit2 < m_vprit.size(); ++irit2) viNewSlots[irit2] -= 1; } } } } // Calculate the new scan advance. int nNewScan = m_nScanAdvance; if (m_nScanAdvance > -1) { while (nNewScan < signed(vfOmit.size()) && vfOmit[nNewScan]) nNewScan++; if (nNewScan >= signed(vfOmit.size())) nNewScan = kMaxSlotsPerRule + 1; // put it after the last item else nNewScan = viNewSlots[nNewScan] - 1; // 0-based } // Check to make sure there is a least one item to be included. bool fNonEmpty = false; for (irit = 0; irit < signed(m_vprit.size()); ++irit) { if (!vfOmit[irit]) { fNonEmpty = true; break; } } if (!fNonEmpty) { g_errorList.AddWarning(1511, this, "All items are optional"); return; } // Generate a version of the rule with the appropriate optional items omitted. // First, copy the items to include. GdlRule * pruleNew = new GdlRule(); pruleNew->CopyLineAndFile(*this); int critNew = 0; for (irit = 0; irit < signed(m_vprit.size()); ++irit) { if (!vfOmit[irit]) { GdlRuleItem * pritNew = m_vprit[irit]->Clone(); pritNew->m_iritContextPos = critNew++; pruleNew->m_vprit.push_back(pritNew); } } if (nNewScan > kMaxSlotsPerRule) nNewScan = int(pruleNew->NumberOfSlots()); pruleNew->SetScanAdvance(nNewScan); // Copy all the constraints and the list of aliases. size_t iexp; for (iexp = 0; iexp < m_vpexpConstraints.size(); ++iexp) pruleNew->m_vpexpConstraints.push_back(m_vpexpConstraints[iexp]->Clone()); for (size_t ialias = 0; ialias < m_vpalias.size(); ++ialias) pruleNew->m_vpalias.push_back(new GdlAlias(*m_vpalias[ialias])); bool fError = false; // Adjust all the slot references based on what slots were omitted. for (irit = 0; irit < signed(pruleNew->m_vprit.size()); ++irit) { if (!pruleNew->m_vprit[irit]->AdjustSlotRefs(vfOmit, viNewSlots, this)) // error (message was generated by AdjustSlotRefs) fError = true; } for (iexp = 0; iexp < pruleNew->m_vpexpConstraints.size(); ++iexp) { if (!pruleNew->m_vpexpConstraints[iexp]->AdjustSlotRefs(vfOmit, viNewSlots, this)) // error (message was generated by AdjustSlotRefs) fError = true; } if (fError) { delete pruleNew; return; } // Delete any irrelevant slot-aliases from the mapping; shouln't be necessary because // we've gotten rid of the aliases by this point. Assert(m_vpalias.size() == 0); // for (ialias = pruleNew->m_vpalias.Size() - 1; ialias >= 0; --ialias) // { // if (!pruleNew->m_vpalias[ialias]->AdjustSlotRefs(vfOmit, viNewSlots)) // // This entry represents a slot that was omitted. // pruleNew->m_vpalias.Delete(ialias); // } vpruleNewList.push_back(pruleNew); } /*---------------------------------------------------------------------------------------------- If there is a previous range in the list of ranges that subsumes the current range, return its index, or -1 if there is none. Return the most immediate, because that is the one we want to test for being omitted or not. ----------------------------------------------------------------------------------------------*/ int GdlRule::PrevRangeSubsumes(int irangeCurr) { // Loop backwards, in order to return the most immediate. for (int irange = irangeCurr; --irange >= 0; ) { if (m_viritOptRangeStart[irange] <= m_viritOptRangeStart[irangeCurr] && m_viritOptRangeEnd[irangeCurr] <= m_viritOptRangeEnd[irange]) return irange; } return -1; } /*---------------------------------------------------------------------------------------------- Adjust the slot references based on what optional slots were omitted. Return false if there was a reference to an omitted item; lower-level function is responsible to create an error message. Arguments: vfOmit - for each item, was it omitted? vnNewIndices - for the items that were not omitted, the adjusted index prule - the 'owning' rule ----------------------------------------------------------------------------------------------*/ bool GdlRuleItem::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { if (m_pexpConstraint) return m_pexpConstraint->AdjustSlotRefs(vfOmit, vnNewIndices, prule); else return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlLineBreakItem::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { return GdlRuleItem::AdjustSlotRefs(vfOmit, vnNewIndices, prule); } /*--------------------------------------------------------------------------------------------*/ bool GdlSetAttrItem::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { if (!GdlRuleItem::AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; for (size_t i = 0; i < m_vpavs.size(); ++i) { if (!m_vpavs[i]->AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; } return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlSubstitutionItem::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { if (!GdlSetAttrItem::AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; for (size_t i = 0; i < m_vpexpAssocs.size(); ++i) { if (!m_vpexpAssocs[i]->AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; } if (m_pexpSelector) { if (!m_pexpSelector->AdjustSlotRefs(vfOmit, vnNewIndices, prule)) return false; } return true; } /*--------------------------------------------------------------------------------------------*/ bool GdlAttrValueSpec::AdjustSlotRefs(std::vector & vfOmit, std::vector & vnNewIndices, GdlRule * prule) { if (m_pexpValue) return m_pexpValue->AdjustSlotRefs(vfOmit, vnNewIndices, prule); else return true; } /**********************************************************************************************/ /*---------------------------------------------------------------------------------------------- For GdlSubstitutionItems, if there is a selector (eg, @2 or clsX$2), make sure it is valid. ----------------------------------------------------------------------------------------------*/ bool GdlRenderer::CheckSelectors() { for (size_t iprultbl = 0; iprultbl < m_vprultbl.size(); iprultbl++) { m_vprultbl[iprultbl]->CheckSelectors(); } return true; } /*--------------------------------------------------------------------------------------------*/ void GdlRuleTable::CheckSelectors() { for (size_t ippass = 0; ippass < m_vppass.size(); ippass++) { m_vppass[ippass]->CheckSelectors(); } } /*--------------------------------------------------------------------------------------------*/ void GdlPass::CheckSelectors() { for (size_t iprule = 0; iprule < m_vprule.size(); iprule++) { m_vprule[iprule]->CheckSelectors(); } } /*--------------------------------------------------------------------------------------------*/ void GdlRule::CheckSelectors() { for (auto irit = 0U; irit < m_vprit.size(); ++irit) { m_vprit[irit]->CheckSelectors(this, irit, m_vprit.size()); } } /*--------------------------------------------------------------------------------------------*/ void GdlRuleItem::CheckSelectors(GdlRule * /*prule*/, int /*irit*/, size_t /*crit*/) { // No selector--do nothing. } /*--------------------------------------------------------------------------------------------*/ void GdlSubstitutionItem::CheckSelectors(GdlRule * prule, int /*irit*/, size_t crit) { if (m_psymOutput->FitsSymbolType(ksymtClass) || m_psymOutput->FitsSymbolType(ksymtSpecialAt)) { if (m_pexpSelector) { if (m_pexpSelector->SlotNumber() <= 0) { g_errorList.AddError(1177, this, "Item ", PosString(), ": invalid selector following '@'"); m_pritSelInput = NULL; return; } else if (m_pexpSelector->SlotNumber() > int(crit)) { g_errorList.AddError(1178, this, "Item ", PosString(), ": selector out of range"); m_pritSelInput = NULL; return; } else { m_pritSelInput = prule->Item(m_pexpSelector->SlotNumber() - 1); } if (!m_pritSelInput->m_psymInput->FitsSymbolType(ksymtClass)) { if (m_pritSelInput->m_psymInput->FitsSymbolType(ksymtSpecialLb)) { // Error handled elsewhere } else g_errorList.AddError(1179, this, "Item ", PosString(), ": input not specified for slot indicated by selector"); } } else { m_pritSelInput = this; } } else { if (m_pexpSelector) { g_errorList.AddError(1180, this, "Item ", PosString(), ": selectors can only be used with class names and '@'"); delete m_pexpSelector; m_pexpSelector = NULL; } m_pritSelInput = NULL; } } /**********************************************************************************************/ grcompiler-5.2.1/compiler/StrAnsiHash.h000066400000000000000000000051641411153030700200350ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: StrAnsiHash.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Functor classes to allow us to use StrAnsi as the key of a hash map. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef STRHASH_INCLUDED #define STRHASH_INCLUDED #include /*---------------------------------------------------------------------------------------------- Functor class for computing a hash value from a StrAnsi object (ANSI string). Modelled after HashStrUni functor class. ----------------------------------------------------------------------------------------------*/ class HashStrAnsi { public: // Constructors/destructors/etc. HashStrAnsi() { } ~HashStrAnsi() { } // Other public methods int operator () (StrAnsi & staKey) { const schar * psz = staKey.Chars(); int cchs = staKey.Length(); int nHash = 0; while (cchs--) nHash += (nHash << 4) + *psz++; return nHash; } // int operator () (BSTR bstrKey, int cchwKey = -1); int operator () (StrAnsi * pstaKey, size_t cbKey) { Assert(pstaKey); Assert(cbKey == sizeof(StrAnsi)); return operator()(*pstaKey); } }; /*---------------------------------------------------------------------------------------------- Functor class for comparing two StrAnsi objects (ANSI strings) for equality. Modelled after EqlStrUni functor class. ----------------------------------------------------------------------------------------------*/ class EqlStrAnsi { public: // Constructors/destructors/etc. EqlStrAnsi() { } ~EqlStrAnsi() { } // Other public methods bool operator () (StrAnsi & staKey1, StrAnsi & staKey2) { const schar * psz1 = staKey1.Chars(); const schar * psz2 = staKey2.Chars(); if (psz1 == psz2) return true; if ((NULL == psz1) || (NULL == psz2)) return false; auto cchs1 = staKey1.Length(); auto cchs2 = staKey2.Length(); if (cchs1 != cchs2) return false; return (0 == memcmp(psz1, psz2, cchs1 * sizeof(schar))); } // bool operator () (StrAnsi & staKey1, BSTR bstrKey2, int cchwKey2 = -1); bool operator () (StrAnsi * pstaKey1, StrAnsi * pstaKey2, size_t cbKey) { Assert(pstaKey1); Assert(pstaKey2); Assert(cbKey == sizeof(StrAnsi)); return operator()(*pstaKey1, *pstaKey2); } }; #endif // STRHASH_INCLUDED grcompiler-5.2.1/compiler/TtfTypes.h000077500000000000000000000214721411153030700174330ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2007 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: TtfTypes.h Responsibility: Tim Eves Last reviewed: Not yet. Description: Provides types required to represent the TTF basic types. -------------------------------------------------------------------------------*//*:End Ignore*/ //********************************************************************************************** // Include files //********************************************************************************************** #include "Generic/GrPlatform.h" //********************************************************************************************** // Forward declarations //********************************************************************************************** //********************************************************************************************** // Type declarations //********************************************************************************************** typedef unsigned char uint8; typedef signed char int8; typedef unsigned short int uint16; typedef signed short int int16; typedef unsigned int uint32; typedef signed int int32; typedef int16 short_frac; typedef int32 fixed; typedef int16 fword; typedef uint16 ufword; typedef int16 f2dot14; typedef uint32 long_date_time[2]; namespace TtfUtil { //********************************************************************************************** // Constants and enum types //**********************************************************************************************/ enum { OneFix = 1<<16 }; template inline T rev16(const T d) { T r = (d & 0xff) << 8; r |= (d & 0xff00) >> 8; return r; } template inline T rev32(const T d) { T r = (d & 0xff) << 24; r |= (d & 0xff00) << 8; r |= (d & 0xff0000) >> 8; r |= (d & 0xff000000) >> 24; return r; } // This is the generic read function which does the swapping if needed. // It needs to be overridden for little-endian systems. template inline T read(const T d) { return d; } #if !defined WORDS_BIGENDIAN || defined PC_OS template<> inline uint16 read(const uint16 d) { return rev16(d); } template<> inline int16 read(const int16 d) { return rev16(d); } template<> inline uint32 read(const uint32 d) { return rev32(d); } template<> inline int32 read(const int32 d) { return rev32(d); } #endif template inline float fixed_to_float(const T f) { return float(f)/float(1 << R); } //********************************************************************************************** // Table declarations //********************************************************************************************** namespace Sfnt { #pragma pack(1) // We need this or the structure members aren't alligned // correctly. Fortunately this form of pragma is supposed // to be recongnised by VS C++ too (at least according to // MSDN). struct OffsetSubTable { uint32 scaler_type; uint16 num_tables, search_range, entry_selector, range_shift; struct Entry { uint32 tag, checksum, offset, length; } table_directory[1]; enum ScalerType { TrueTypeMac = 0x74727565U, TrueTypeWin = 0x00010000U, Type1 = 0x74797031U }; }; struct CharacterCodeMap { uint16 version, num_subtables; struct { uint16 platform_id, platform_specific_id; uint32 offset; } encoding[1]; }; struct CmapSubTable { uint16 format, length, language; }; struct CmapSubTableFormat4 : CmapSubTable { uint16 seg_count_x2, search_range, entry_selector, range_shift, end_code[1]; // There are arrarys after this which need their // start positions calculated since end_code is // seg_count uint16s long. }; struct CmapSubTableFormat12 { fixed format; uint32 length, language, num_groups; struct { uint32 start_char_code, end_char_code, start_glyph_id; } group[1]; }; struct FontHeader { fixed version, font_revision; uint32 check_sum_adjustment, magic_number; uint16 flags, units_per_em; long_date_time created, modified; fword x_min, y_min, x_max, y_max; uint16 mac_style, lowest_rec_ppem; int16 font_direction_hint, index_to_loc_format, glyph_data_format; enum { MagicNumber = 0x5F0F3CF5, GlypDataFormat = 0 }; enum {ShortIndexLocFormat, LongIndexLocFormat}; }; struct PostScriptGlyphName { fixed format, italic_angle; fword underline_position, underline_thickness; uint32 is_fixed_pitch, min_mem_type42, max_mem_type42, min_mem_type1, max_mem_type1; enum { Format1 = 0x10000, Format2 = 0x20000, Format25 = 0x28000, Format3 = 0x30000, Format4 = 0x40000 }; }; struct PostScriptGlyphName2 : PostScriptGlyphName { uint16 number_of_glyphs, glyph_name_index[1]; }; struct PostScriptGlyphName25 : PostScriptGlyphName { uint16 number_of_glyphs; int8 offset[1]; }; struct PostScriptGlyphName3 : PostScriptGlyphName {}; struct PostScriptGlyphName4 : PostScriptGlyphName { uint16 glyph_to_char_map[1]; }; struct HorizontalHeader { fixed version; fword ascent, descent, line_gap; ufword advance_width_max; fword min_left_side_bearing, max_left_side_bearing, x_max_element; int16 caret_slope_rise, caret_slope_run; fword caret_offset; int16 reserved[4], metric_data_format; uint16 num_long_hor_metrics; }; struct MaximumProfile { fixed version; uint16 num_glyphs, max_points, max_contours, max_component_points, max_component_contours, max_zones, max_twilight_points, max_storage, max_function_defs, max_instruction_defs, max_stack_elements, max_size_of_instructions, max_component_elements, max_component_depth; }; typedef uint8 Panose[10]; struct Compatibility0 { uint16 version; int16 x_avg_char_width; uint16 weight_class, width_class; int16 fs_type, y_subscript_x_size, y_subscript_y_size, y_subscript_x_offset, y_subscript_y_offset, y_superscript_x_size, y_superscript_y_size, y_superscript_x_offset, y_superscript_y_offset, y_strikeout_size, y_strikeout_position, family_class; Panose panose; uint32 unicode_range[4]; int8 ach_vend_id[4]; uint16 fs_selection, fs_first_char_index, fs_last_char_index, // Acording to Apple's spec this is where v0 should end typo_ascender, typo_descender, type_linegap, win_ascent, win_descent; enum { Italic =0x01, Underscore=0x02, Negative =0x04, Outlined =0x08, StrikeOut =0x10, Bold =0x20 }; }; struct Compatibility1 : Compatibility0 { uint32 codepage_range[2]; }; struct Compatibility2 : Compatibility1 { int16 x_height, cap_height; uint16 default_char, break_char, max_context; }; struct Compatibility3 : Compatibility2 {}; typedef Compatibility3 Compatibility; struct NameRecord { uint16 platform_id, platform_specific_id, language_id, name_id, length, offset; enum {Unicode, Macintosh, Reserved, Microsoft}; enum { Copyright, Family, Subfamily, UniqueSubfamily, Fullname, Version, PostScript }; }; struct FontNames { uint16 format, count, string_offset; NameRecord name_record[1]; }; struct HorizontalMetric { uint16 advance_width; int16 left_side_bearing; }; struct Glyph { int16 number_of_contours; fword x_min, y_min, x_max, y_max; }; struct SimpleGlyph : Glyph { uint16 end_pts_of_contours[1]; enum { OnCurve = 0x01, XShort = 0x02, YShort = 0x04, Repeat = 0x08, XIsSame = 0x10, XIsPos = 0x10, YIsSame = 0x20, YIsPos = 0x20 }; }; struct CompoundGlyph : Glyph { uint16 flags, glyph_index; enum { Arg1Arg2Words = 0x01, ArgsAreXYValues = 0x02, RoundXYToGrid = 0x04, HaveScale = 0x08, MoreComponents = 0x20, HaveXAndYScale = 0x40, HaveTwoByTwo = 0x80, HaveInstructions = 0x100, UseMyMetrics = 0x200, OverlapCompund = 0x400, ScaledOffset = 0x800, UnscaledOffset = 0x1000 }; }; typedef enum { n_copyright, n_family, n_subfamily, n_uniquename, n_fullname, n_version, n_postscript, n_trademark, n_vendor, n_designer, n_desc, n_vendorurl, n_designerurl, n_license, n_licenseurl, n_preferredfamily, n_preferredsubfamily, n_compatiblefull, n_sampletext, n_psid } NameIndex; #pragma pack() } // end of namespace Sfnt } // end of namespace TtfUtil grcompiler-5.2.1/compiler/TtfUtil.cpp000066400000000000000000002213721411153030700175750ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2000, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: TtfUtil.cpp Responsibility: Alan Ward Last reviewed: Not yet. Description: Implements the methods for TtfUtil namespace. This file should remain portable to any C++ environment by only using standard C++ and the TTF structurs defined in Tt.h. AW 2011-10-21: Add support for multi-level composite glyphs. Contribution by Alexey Kryukov. -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ // Language headers #include #include #include #include #include #include // Platform headers // Module headers #include "TtfUtil.h" #include "TtfTypes.h" /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ namespace { // max number of components allowed in composite glyphs const int kMaxGlyphComponents = 8; // These are basic byte order swapping functions #define MAKE_TAG(a,b,c,d) ((a << 24UL) + (b << 16UL) + (c << 8UL) + (d)) const fontTableId32 mapIdToTag[] = { MAKE_TAG('c','m','a','p'), MAKE_TAG('c','v','t',' '), MAKE_TAG('c','r','y','p'), MAKE_TAG('h','e','a','d'), MAKE_TAG('f','p','g','m'), MAKE_TAG('g','d','i','r'), MAKE_TAG('g','l','y','f'), MAKE_TAG('h','d','m','x'), MAKE_TAG('h','h','e','a'), MAKE_TAG('h','m','t','x'), MAKE_TAG('l','o','c','a'), MAKE_TAG('k','e','r','n'), MAKE_TAG('L','T','S','H'), MAKE_TAG('m','a','x','p'), MAKE_TAG('n','a','m','e'), MAKE_TAG('O','S','/','2'), MAKE_TAG('p','o','s','t'), MAKE_TAG('p','r','e','p'), MAKE_TAG('F','e','a','t'), MAKE_TAG('G','l','a','t'), MAKE_TAG('G','l','o','c'), MAKE_TAG('S','i','l','f'), MAKE_TAG('S','i','l','e'), MAKE_TAG('S','i','l','l') }; /*---------------------------------------------------------------------------------------------- Table of standard Postscript glyph names. From Martin Hosken. Disagress with ttfdump.exe ---------------------------------------------------------------------------------------------*/ const int kcPostNames = 258; const char * rgPostName[kcPostNames] = { ".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "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", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "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", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat" }; } // end of namespace /*********************************************************************************************** Methods ***********************************************************************************************/ /* Note on error processing: The code guards against bad glyph ids being used to look up data in open ended tables (loca, hmtx). If the glyph id comes from a cmap this shouldn't happen but it seems prudent to check for user errors here. The code does assume that data obtained from the TTF file is valid otherwise (though the CheckTable method seeks to check for obvious problems that might accompany a change in table versions). For example an invalid offset in the loca table which could exceed the size of the glyf table is NOT trapped. Likewise if numberOf_LongHorMetrics in the hhea table is wrong, this will NOT be trapped, which could cause a lookup in the hmtx table to exceed the table length. Of course, TTF tables that are completely corrupt will cause unpredictable results. */ /* Note on composite glyphs: It is unclear how to build composite glyphs in some cases, so this code represents my best guess until test cases can be found. See notes on the high- level GlyfPoints method. */ namespace TtfUtil { /*---------------------------------------------------------------------------------------------- Get offset and size of the offset table needed to find table directory. Return true if success, false otherwise. lSize excludes any table directory entries. ----------------------------------------------------------------------------------------------*/ bool GetHeaderInfo(size_t & lOffset, size_t & lSize) { lOffset = 0; lSize = sizeof(Sfnt::OffsetSubTable) - sizeof(Sfnt::OffsetSubTable::table_directory); assert(sizeof(uint32) + 4*sizeof (uint16) == lSize); return true; } /*---------------------------------------------------------------------------------------------- Check the offset table for expected data. Return true if success, false otherwise. ----------------------------------------------------------------------------------------------*/ bool CheckHeader(const void * pHdr) { const Sfnt::OffsetSubTable * pOffsetTable = reinterpret_cast(pHdr); return read(pOffsetTable->scaler_type) == Sfnt::OffsetSubTable::TrueTypeWin; } /*---------------------------------------------------------------------------------------------- Get offset and size of the table directory. Return true if successful, false otherwise. ----------------------------------------------------------------------------------------------*/ bool GetTableDirInfo(const void * pHdr, size_t & lOffset, size_t & lSize) { const Sfnt::OffsetSubTable * pOffsetTable = reinterpret_cast(pHdr); lOffset = offsetof(Sfnt::OffsetSubTable, table_directory); lSize = read(pOffsetTable->num_tables) * sizeof(Sfnt::OffsetSubTable::Entry); return true; } /*---------------------------------------------------------------------------------------------- Get offset and size of the specified table. Return true if successful, false otherwise. On false, offset and size will be 0. ----------------------------------------------------------------------------------------------*/ bool GetTableInfo(TableId ktiTableId, const void * pHdr, const void * pTableDir, size_t & lOffset, size_t & lSize) { gr::fontTableId32 lTableTag = TableIdTag(ktiTableId); if (!lTableTag) { lOffset = 0; lSize = 0; return false; } const Sfnt::OffsetSubTable * pOffsetTable = reinterpret_cast(pHdr); const Sfnt::OffsetSubTable::Entry * entry_itr = reinterpret_cast( pTableDir), * const dir_end = entry_itr + read(pOffsetTable->num_tables); assert(read(pOffsetTable->num_tables) < 40); if (read(pOffsetTable->num_tables) > 40) return false; for (;entry_itr != dir_end; ++entry_itr) // 40 - safe guard { if (read(entry_itr->tag) == lTableTag) { lOffset = read(entry_itr->offset); lSize = read(entry_itr->length); return true; } } return false; } /*---------------------------------------------------------------------------------------------- Check the specified table. Tests depend on the table type. Return true if successful, false otherwise. ----------------------------------------------------------------------------------------------*/ bool CheckTable(TableId ktiTableId, const void * pTable, size_t lTableSize) { using namespace Sfnt; switch(ktiTableId) { case ktiCmap: // cmap { const Sfnt::CharacterCodeMap * const pCmap = reinterpret_cast(pTable); assert(read(pCmap->version) == 0); return read(pCmap->version) == 0; } case ktiHead: // head { const Sfnt::FontHeader * const pHead = reinterpret_cast(pTable); bool r = read(pHead->version) == OneFix && read(pHead->magic_number) == FontHeader::MagicNumber && read(pHead->glyph_data_format) == FontHeader::GlypDataFormat && (read(pHead->index_to_loc_format) == FontHeader::ShortIndexLocFormat || read(pHead->index_to_loc_format) == FontHeader::LongIndexLocFormat) && sizeof(FontHeader) <= lTableSize; assert(r); return r; } case ktiPost: // post { const Sfnt::PostScriptGlyphName * const pPost = reinterpret_cast(pTable); const fixed format = read(pPost->format); bool r = format == PostScriptGlyphName::Format1 || format == PostScriptGlyphName::Format2 || format == PostScriptGlyphName::Format3 || format == PostScriptGlyphName::Format25; assert(r); return r; } case ktiHhea: // hhea { const Sfnt::HorizontalHeader * pHhea = reinterpret_cast(pTable); bool r = read(pHhea->version) == OneFix && read(pHhea->metric_data_format) == 0 && sizeof (Sfnt::HorizontalHeader) <= lTableSize; assert(r); return r; } case ktiMaxp: // maxp { const Sfnt::MaximumProfile * pMaxp = reinterpret_cast(pTable); bool r = read(pMaxp->version) == OneFix && sizeof(Sfnt::MaximumProfile) <= lTableSize; assert(r); return r; } case ktiOs2: // OS/2 { const Sfnt::Compatibility * pOs2 = reinterpret_cast(pTable); if (read(pOs2->version) == 0) { // OS/2 table version 1 size // if (sizeof(Sfnt::Compatibility) // - sizeof(uint32)*2 - sizeof(int16)*2 // - sizeof(uint16)*3 <= lTableSize) if (sizeof(Sfnt::Compatibility0) <= lTableSize) return true; } else if (read(pOs2->version) == 1) { // OS/2 table version 2 size // if (sizeof(Sfnt::Compatibility) // - sizeof(int16) *2 // - sizeof(uint16)*3 <= lTableSize) if (sizeof(Sfnt::Compatibility1) <= lTableSize) return true; } else if (read(pOs2->version) == 2) { // OS/2 table version 3 size if (sizeof(Sfnt::Compatibility2) <= lTableSize) return true; } else if (read(pOs2->version) >= 3) { // OS/2 table version 4 size - version 4 changed the meaning of some fields which we don't use // Using >= 3 assumes that the stuff we use will not change from here on to eternity. if (sizeof(Sfnt::Compatibility3) <= lTableSize) return true; } else return false; } case ktiName: { const Sfnt::FontNames * pName = reinterpret_cast(pTable); assert(read(pName->format) == 0); return read(pName->format) == 0; } default: break; } return true; } /*---------------------------------------------------------------------------------------------- Return the number of glyphs in the font. Should never be less than zero. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ size_t GlyphCount(const void * pMaxp) { const Sfnt::MaximumProfile * pTable = reinterpret_cast(pMaxp); return read(pTable->num_glyphs); } /*---------------------------------------------------------------------------------------------- Return the maximum number of components for any composite glyph in the font. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ size_t MaxCompositeComponentCount(const void * pMaxp) { const Sfnt::MaximumProfile * pTable = reinterpret_cast(pMaxp); return read(pTable->max_component_elements); } /*---------------------------------------------------------------------------------------------- Composite glyphs can be composed of glyphs that are themselves composites. This method returns the maximum number of levels like this for any glyph in the font. A non-composite glyph has a level of 1. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ size_t MaxCompositeLevelCount(const void * pMaxp) { const Sfnt::MaximumProfile * pTable = reinterpret_cast(pMaxp); return read(pTable->max_component_depth); } /*---------------------------------------------------------------------------------------------- Return the number of glyphs in the font according to a differt source. Should never be less than zero. Return -1 on failure. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ size_t LocaGlyphCount(size_t lLocaSize, const void * pHead) { const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); if (read(pTable->index_to_loc_format) == Sfnt::FontHeader::ShortIndexLocFormat) // loca entries are two bytes and have been divided by two return (lLocaSize >> 1) - 1; if (read(pTable->index_to_loc_format) == Sfnt::FontHeader::LongIndexLocFormat) // loca entries are four bytes return (lLocaSize >> 2) - 1; //return -1; throw std::domain_error("head table in inconsistent state. The font may be corrupted"); } /*---------------------------------------------------------------------------------------------- Return the design units the font is designed with ----------------------------------------------------------------------------------------------*/ int DesignUnits(const void * pHead) { const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); return read(pTable->units_per_em); } /*---------------------------------------------------------------------------------------------- Return the checksum from the head table, which serves as a unique identifer for the font. ----------------------------------------------------------------------------------------------*/ int HeadTableCheckSum(const void * pHead) { const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); return read(pTable->check_sum_adjustment); } /*---------------------------------------------------------------------------------------------- Return the create time from the head table. This consists of a 64-bit integer, which we return here as two 32-bit integers. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ void HeadTableCreateTime(const void * pHead, unsigned int * pnDateBC, unsigned int * pnDateAD) { const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); *pnDateBC = read(pTable->created[0]); *pnDateAD = read(pTable->created[1]); } /*---------------------------------------------------------------------------------------------- Return the modify time from the head table.This consists of a 64-bit integer, which we return here as two 32-bit integers. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ void HeadTableModifyTime(const void * pHead, unsigned int * pnDateBC, unsigned int *pnDateAD) { const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); *pnDateBC = read(pTable->modified[0]); *pnDateAD = read(pTable->modified[1]); } /*---------------------------------------------------------------------------------------------- Return true if the font is italic. ----------------------------------------------------------------------------------------------*/ bool IsItalic(const void * pHead) { const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); return ((read(pTable->mac_style) & 0x00000002) != 0); } /*---------------------------------------------------------------------------------------------- Return the ascent for the font ----------------------------------------------------------------------------------------------*/ int FontAscent(const void * pOs2) { const Sfnt::Compatibility * pTable = reinterpret_cast(pOs2); return read(pTable->win_ascent); } /*---------------------------------------------------------------------------------------------- Return the descent for the font ----------------------------------------------------------------------------------------------*/ int FontDescent(const void * pOs2) { const Sfnt::Compatibility * pTable = reinterpret_cast(pOs2); return read(pTable->win_descent); } /*---------------------------------------------------------------------------------------------- Get the bold and italic style bits. Return true if successful. false otherwise. In addition to checking the OS/2 table, one could also check the head table's macStyle field (overridden by the OS/2 table on Win) the sub-family name in the name table (though this can contain oblique, dark, etc too) ----------------------------------------------------------------------------------------------*/ bool FontOs2Style(const void *pOs2, bool & fBold, bool & fItalic) { const Sfnt::Compatibility * pTable = reinterpret_cast(pOs2); fBold = (read(pTable->fs_selection) & Sfnt::Compatibility::Bold) != 0; fItalic = (read(pTable->fs_selection) & Sfnt::Compatibility::Italic) != 0; return true; } /*---------------------------------------------------------------------------------------------- Method for searching name table. ----------------------------------------------------------------------------------------------*/ bool GetNameInfo(const void * pNameTblArg, int nPlatformId, int nEncodingId, int nLangId, int nNameId, size_t & lOffset, size_t & lSize) { lOffset = 0; lSize = 0; const Sfnt::FontNames * pTable = reinterpret_cast(pNameTblArg); uint16 cRecord = read(pTable->count); uint16 nRecordOffset = read(pTable->string_offset); const Sfnt::NameRecord * pRecord = reinterpret_cast(pTable + 1); for (int i = 0; i < cRecord; ++i) { if (read(pRecord->platform_id) == nPlatformId && read(pRecord->platform_specific_id) == nEncodingId && read(pRecord->language_id) == nLangId && read(pRecord->name_id) == nNameId) { lOffset = read(pRecord->offset) + nRecordOffset; lSize = read(pRecord->length); return true; } pRecord++; } return false; } /*---------------------------------------------------------------------------------------------- Given a string, return the name ID and other indices that can be used to find it in the name table. ----------------------------------------------------------------------------------------------*/ bool GetNameIdForString(const void * pNameTblArg, int & nPlatformId, int & nEncodingId, int & nLangId, int & nNameId, char * pBufIn, size_t lSizeIn) { const Sfnt::FontNames * pTable = reinterpret_cast(pNameTblArg); uint16 cRecord = read(pTable->count); uint16 nRecordOffset = read(pTable->string_offset); const Sfnt::NameRecord * pRecord = reinterpret_cast(pTable + 1); for (int i = 0; i < cRecord; ++i) { int lOffsetTable = read(pRecord->offset) + nRecordOffset; size_t lSizeTable = read(pRecord->length); char * pBufTable = (char *)pNameTblArg + lOffsetTable; if (lSizeTable == lSizeIn) { bool fMatch = false; if (read(pRecord->platform_id) == Sfnt::NameRecord::Macintosh) { char * pBufTmp = new char[lSizeTable+1]; memcpy(pBufTmp, pBufTable, lSizeTable * sizeof(char)); pBufTmp[lSizeTable] = 0; // zero-terminate fMatch = (strcmp(pBufTmp, pBufIn) == 0); } //else - for now we only handle 8-bit //{ // wchar_t * pBufTable = new wchar_t[lSizeTable+1]; // memcpy(pBufTable, pTable + lOffsetTable, lSizeTable * sizeof(wchar_t)); // pBufTable[lSizeTable + 1] = 0; // bool fMatch = wcscmp(pBufTable, pBufIn); //} if (fMatch) { nPlatformId = read(pRecord->platform_id); nEncodingId = read(pRecord->platform_specific_id); nLangId = read(pRecord->language_id); nNameId = read(pRecord->name_id); return true; } } pRecord++; } return false; } /*---------------------------------------------------------------------------------------------- Return all the lang-IDs that have data for the given name-IDs. Assume that there is room in the return array (langIdList) for 128 items. The purpose of this method is to return a list of all possible lang-IDs. ----------------------------------------------------------------------------------------------*/ int GetLangsForNames(const void * pName, int nPlatformId, int nEncodingId, int * nameIdList, int cNameIds, short * langIdList) { const Sfnt::FontNames * pTable = reinterpret_cast(pName); uint16 cRecord = read(pTable->count); //uint16 nRecordOffset = swapw(pTable->stringOffset); const Sfnt::NameRecord * pRecord = reinterpret_cast(pTable + 1); int cLangIds = 0; for (int i = 0; i < cRecord; ++i) { if (read(pRecord->platform_id) == nPlatformId && read(pRecord->platform_specific_id) == nEncodingId) { bool fNameFound = false; int nLangId = read(pRecord->language_id); int nNameId = read(pRecord->name_id); for (int j = 0; j < cNameIds; j++) { if (nNameId == nameIdList[j]) { fNameFound = true; break; } } if (fNameFound) { // Add it if it's not there. int ilang; for (ilang = 0; ilang < cLangIds; ilang++) if (langIdList[ilang] == nLangId) break; if (ilang >= cLangIds) { langIdList[cLangIds] = short(nLangId); cLangIds++; } if (cLangIds == 128) return cLangIds; } } pRecord++; } return cLangIds; } /*---------------------------------------------------------------------------------------------- Get the offset and size of the font family name in English for the MS Platform with Unicode writing system. The offset is within the pName data. The string is double byte with MSB first. ----------------------------------------------------------------------------------------------*/ bool Get31EngFamilyInfo(const void * pName, size_t & lOffset, size_t & lSize) { return GetNameInfo(pName, Sfnt::NameRecord::Microsoft, 1, 1033, Sfnt::NameRecord::Family, lOffset, lSize); } /*---------------------------------------------------------------------------------------------- Get the offset and size of the full font name in English for the MS Platform with Unicode writing system. The offset is within the pName data. The string is double byte with MSB first. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ bool Get31EngFullFontInfo(const void * pName, size_t & lOffset, size_t & lSize) { return GetNameInfo(pName, Sfnt::NameRecord::Microsoft, 1, 1033, Sfnt::NameRecord::Fullname, lOffset, lSize); } /*---------------------------------------------------------------------------------------------- Get the offset and size of the font family name in English for the MS Platform with Symbol writing system. The offset is within the pName data. The string is double byte with MSB first. ----------------------------------------------------------------------------------------------*/ bool Get30EngFamilyInfo(const void * pName, size_t & lOffset, size_t & lSize) { return GetNameInfo(pName, Sfnt::NameRecord::Microsoft, 0, 1033, Sfnt::NameRecord::Family, lOffset, lSize); } /*---------------------------------------------------------------------------------------------- Get the offset and size of the full font name in English for the MS Platform with Symbol writing system. The offset is within the pName data. The string is double byte with MSB first. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ bool Get30EngFullFontInfo(const void * pName, size_t & lOffset, size_t & lSize) { return GetNameInfo(pName, Sfnt::NameRecord::Microsoft, 0, 1033, Sfnt::NameRecord::Fullname, lOffset, lSize); } /*---------------------------------------------------------------------------------------------- Return the Glyph ID for a given Postscript name. This method finds the first glyph which matches the requested Postscript name. Ideally every glyph should have a unique Postscript name (except for special names such as .notdef), but this is not always true. On failure return value less than zero. -1 - table search failed -2 - format 3 table (no Postscript glyph info) -3 - other failures Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ int PostLookup(const void * pPost, size_t lPostSize, const void * pMaxp, const char * pPostName) { using namespace Sfnt; const Sfnt::PostScriptGlyphName * pTable = reinterpret_cast(pPost); fixed format = read(pTable->format); if (format == PostScriptGlyphName::Format3) { // format 3 - no Postscript glyph info in font return -2; } // search for given Postscript name among the standard names int iPostName = -1; // index in standard names for (int i = 0; i < kcPostNames; i++) { if (!strcmp(pPostName, rgPostName[i])) { iPostName = i; break; } } if (format == PostScriptGlyphName::Format1) { // format 1 - use standard Postscript names return iPostName; } if (format == PostScriptGlyphName::Format25) { if (iPostName == -1) return -1; const PostScriptGlyphName25 * pTable25 = static_cast(pTable); auto cnGlyphs = GlyphCount(pMaxp); for (gr::gid16 nGlyphId = 0; nGlyphId < cnGlyphs && nGlyphId < kcPostNames; nGlyphId++) { // glyph_name_index25 contains bytes so no byte swapping needed // search for first glyph id that uses the standard name if (nGlyphId + pTable25->offset[nGlyphId] == iPostName) return nGlyphId; } } if (format == PostScriptGlyphName::Format2) { // format 2 const PostScriptGlyphName2 * pTable2 = static_cast(pTable); int cnGlyphs = read(pTable2->number_of_glyphs); if (iPostName != -1) { // did match a standard name, look for first glyph id mapped to that name for (gr::gid16 nGlyphId = 0; nGlyphId < cnGlyphs; nGlyphId++) { if (read(pTable2->glyph_name_index[nGlyphId]) == iPostName) return nGlyphId; } } { // did not match a standard name, search font specific names size_t nStrSizeGoal = strlen(pPostName); const char * pFirstGlyphName = reinterpret_cast( &pTable2->glyph_name_index[0] + cnGlyphs); const char * pGlyphName = pFirstGlyphName; int iInNames = 0; // index in font specific names bool fFound = false; const char * const endOfTable = reinterpret_cast(pTable2) + lPostSize; while (pGlyphName < endOfTable && !fFound) { // search Pascal strings for first matching name size_t nStringSize = size_t(*pGlyphName); if (nStrSizeGoal != nStringSize || strncmp(pGlyphName + 1, pPostName, nStringSize)) { // did not match ++iInNames; pGlyphName += nStringSize + 1; } else { // did match fFound = true; } } if (!fFound) return -1; // no font specific name matches request iInNames += kcPostNames; for (gr::gid16 nGlyphId = 0; nGlyphId < cnGlyphs; nGlyphId++) { // search for first glyph id that maps to the found string index if (read(pTable2->glyph_name_index[nGlyphId]) == iInNames) return nGlyphId; } return -1; // no glyph mapped to this index (very strange) } } return -3; } /*---------------------------------------------------------------------------------------------- Convert a Unicode character string from big endian (MSB first, Motorola) format to little endian (LSB first, Intel) format. nSize is the number of Unicode characters in the string. It should not include any terminating null. If nSize is 0, it is assumed the string is null terminated. nSize defaults to 0. Return true if successful, false otherwise. ----------------------------------------------------------------------------------------------*/ void SwapWString(void * pWStr, size_t nSize /* = 0 */) { if (pWStr == 0) throw std::invalid_argument("null pointer given"); uint16 * pStr = reinterpret_cast(pWStr); uint16 * const pStrEnd = pStr + (nSize == 0 ? gr::utf16len(pStr) : nSize); std::transform(pStr, pStrEnd, pStr, read); // for (int i = 0; i < nSize; i++) // { // swap the wide characters in the string // pStr[i] = gr::utf16(read(uint16(pStr[i]))); // } } /*---------------------------------------------------------------------------------------------- Get the left-side bearing and and advance width based on the given tables and Glyph ID Return true if successful, false otherwise. On false, one or both value could be INT_MIN ----------------------------------------------------------------------------------------------*/ bool HorMetrics(gr::gid16 nGlyphId, const void * pHmtx, size_t lHmtxSize, const void * pHhea, int & nLsb, unsigned int & nAdvWid) { const Sfnt::HorizontalMetric * phmtx = reinterpret_cast(pHmtx); const Sfnt::HorizontalHeader * phhea = reinterpret_cast(pHhea); size_t cLongHorMetrics = read(phhea->num_long_hor_metrics); if (nGlyphId < cLongHorMetrics) { // glyph id is acceptable nAdvWid = read(phmtx[nGlyphId].advance_width); nLsb = read(phmtx[nGlyphId].left_side_bearing); } else { nAdvWid = read(phmtx[cLongHorMetrics - 1].advance_width); // guard against bad glyph id size_t lLsbOffset = sizeof(Sfnt::HorizontalMetric) * cLongHorMetrics + sizeof(int16) * (nGlyphId - cLongHorMetrics); // offset in bytes if (lLsbOffset + 1 >= lHmtxSize) // + 1 because entries are two bytes wide { nLsb = 0; return false; } const int16 * pLsb = reinterpret_cast(phmtx) + lLsbOffset / sizeof(int16); nLsb = read(*pLsb); } return true; } /*---------------------------------------------------------------------------------------------- Return a pointer to the requested cmap subtable. By default find the Microsoft Unicode subtable. Pass nEncoding as -1 to find first table that matches only nPlatformId. Return NULL if the subtable cannot be found. ----------------------------------------------------------------------------------------------*/ void * FindCmapSubtable(const void * pCmap, int nPlatformId, /* =3 */ int nEncodingId) /* = 1 */ { const Sfnt::CharacterCodeMap * pTable = reinterpret_cast(pCmap); uint16 csuPlatforms = read(pTable->num_subtables); for (int i = 0; i < csuPlatforms; i++) { if (read(pTable->encoding[i].platform_id) == nPlatformId && (nEncodingId == -1 || read(pTable->encoding[i].platform_specific_id) == nEncodingId)) { const void * pRtn = reinterpret_cast(pCmap) + read(pTable->encoding[i].offset); return const_cast(pRtn); } } return 0; } /*---------------------------------------------------------------------------------------------- Check the Microsoft Unicode subtable for expected values ----------------------------------------------------------------------------------------------*/ bool CheckCmap31Subtable(const void * pCmap31) { const Sfnt::CmapSubTable * pTable = reinterpret_cast(pCmap31); // Bob H says ome freeware TT fonts have version 1 (eg, CALIGULA.TTF) // so don't check subtable version. 21 Mar 2002 spec changes version to language. return read(pTable->format) == 4; } /*---------------------------------------------------------------------------------------------- Return the Glyph ID for the given Unicode ID in the Microsoft Unicode subtable. (Actually this code only depends on subtable being format 4.) Return 0 if the Unicode ID is not in the subtable. ----------------------------------------------------------------------------------------------*/ gr::gid16 Cmap31Lookup(const void * pCmap31, int nUnicodeId) { const Sfnt::CmapSubTableFormat4 * pTable = reinterpret_cast(pCmap31); uint16 nSeg = read(pTable->seg_count_x2) >> 1; uint16 n; const uint16 * pLeft, * pMid; uint16 cMid, chStart, chEnd; // Binary search of the endCode[] array pLeft = &(pTable->end_code[0]); n = nSeg; while (n > 0) { cMid = n >> 1; // Pick an element in the middle pMid = pLeft + cMid; chEnd = read(*pMid); if (nUnicodeId <= chEnd) { if (cMid == 0 || nUnicodeId > read(pMid[-1])) break; // Must be this seg or none! n = cMid; // Continue on left side, omitting mid point } else { pLeft = pMid + 1; // Continue on right side, omitting mid point n -= (cMid + 1); } } if (!n) return 0; // Ok, we're down to one segment and pMid points to the endCode element // Either this is it or none is. chStart = read(*(pMid += nSeg + 1)); if (chEnd >= nUnicodeId && nUnicodeId >= chStart) { // Found correct segment. Find Glyph Id int16 idDelta = read(*(pMid += nSeg)); uint16 idRangeOffset = read(*(pMid += nSeg)); if (idRangeOffset == 0) return (uint16)(idDelta + nUnicodeId); // must use modulus 2^16 // Look up value in glyphIdArray gr::gid16 nGlyphId = read(*(pMid + (nUnicodeId - chStart) + (idRangeOffset >> 1))); // If this value is 0, return 0. Else add the idDelta return nGlyphId ? nGlyphId + idDelta : 0; } return 0; } /*---------------------------------------------------------------------------------------------- Return the next Unicode value in the cmap. Pass 0 to obtain the first item. Returns 0xFFFF as the last item. pRangeKey is an optional key that is used to optimize the search; its value is the range in which the character is found. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ unsigned int Cmap31NextCodepoint(const void *pCmap31, unsigned int nUnicodeId, int * pRangeKey) { const Sfnt::CmapSubTableFormat4 * pTable = reinterpret_cast(pCmap31); uint16 nRange = read(pTable->seg_count_x2) >> 1; uint32 nUnicodePrev = (uint32)nUnicodeId; const uint16 * pStartCode = &(pTable->end_code[0]) + nRange // length of end code array + 1; // reserved word if (nUnicodePrev == 0) { // return the first codepoint. if (pRangeKey) *pRangeKey = 0; return read(pStartCode[0]); } else if (nUnicodePrev >= 0xFFFF) { if (pRangeKey) *pRangeKey = nRange - 1; return 0xFFFF; } int iRange = (pRangeKey) ? *pRangeKey : 0; // Just in case we have a bad key: while (iRange > 0 && read(pStartCode[iRange]) > nUnicodePrev) iRange--; while (read(pTable->end_code[iRange]) < nUnicodePrev) iRange++; // Now iRange is the range containing nUnicodePrev. unsigned int nStartCode = read(pStartCode[iRange]); unsigned int nEndCode = read(pTable->end_code[iRange]); if (nStartCode > nUnicodePrev) // Oops, nUnicodePrev is not in the cmap! Adjust so we get a reasonable // answer this time around. nUnicodePrev = nStartCode - 1; if (nEndCode > nUnicodePrev) { // Next is in the same range; it is the next successive codepoint. if (pRangeKey) *pRangeKey = iRange; return nUnicodePrev + 1; } // Otherwise the next codepoint is the first one in the next range. // There is guaranteed to be a next range because there must be one that // ends with 0xFFFF. if (pRangeKey) *pRangeKey = iRange + 1; return read(pStartCode[iRange + 1]); } /*---------------------------------------------------------------------------------------------- Check the Microsoft UCS-4 subtable for expected values. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ bool CheckCmap310Subtable(const void *pCmap310) { const Sfnt::CmapSubTable * pTable = reinterpret_cast(pCmap310); return read(pTable->format) == 12; } /*---------------------------------------------------------------------------------------------- Return the Glyph ID for the given Unicode ID in the Microsoft UCS-4 subtable. (Actually this code only depends on subtable being format 12.) Return 0 if the Unicode ID is not in the subtable. ----------------------------------------------------------------------------------------------*/ gr::gid16 Cmap310Lookup(const void * pCmap310, unsigned int uUnicodeId) { const Sfnt::CmapSubTableFormat12 * pTable = reinterpret_cast(pCmap310); //uint32 uLength = read(pTable->length); //could use to test for premature end of table uint32 ucGroups = read(pTable->num_groups); for (unsigned int i = 0; i < ucGroups; i++) { uint32 uStartCode = read(pTable->group[i].start_char_code); uint32 uEndCode = read(pTable->group[i].end_char_code); if (uUnicodeId >= uStartCode && uUnicodeId <= uEndCode) { uint32 uDiff = uUnicodeId - uStartCode; uint32 uStartGid = read(pTable->group[i].start_glyph_id); return static_cast(uStartGid + uDiff); } } return 0; } /*---------------------------------------------------------------------------------------------- Return the next Unicode value in the cmap. Pass 0 to obtain the first item. Returns 0x10FFFF as the last item. pRangeKey is an optional key that is used to optimize the search; its value is the range in which the character is found. Note: this method is not currently used by the Graphite engine. ----------------------------------------------------------------------------------------------*/ unsigned int Cmap310NextCodepoint(const void *pCmap310, unsigned int nUnicodeId, int * pRangeKey) { const Sfnt::CmapSubTableFormat12 * pTable = reinterpret_cast(pCmap310); int nRange = read(pTable->num_groups); uint32 nUnicodePrev = (uint32)nUnicodeId; if (nUnicodePrev == 0) { // return the first codepoint. if (pRangeKey) *pRangeKey = 0; return read(pTable->group[0].start_char_code); } else if (nUnicodePrev >= 0x10FFFF) { if (pRangeKey) *pRangeKey = nRange; return 0x10FFFF; } int iRange = (pRangeKey) ? *pRangeKey : 0; // Just in case we have a bad key: while (iRange > 0 && read(pTable->group[iRange].start_char_code) > nUnicodePrev) iRange--; while (read(pTable->group[iRange].end_char_code) < nUnicodePrev) iRange++; // Now iRange is the range containing nUnicodePrev. unsigned int nStartCode = read(pTable->group[iRange].start_char_code); unsigned int nEndCode = read(pTable->group[iRange].end_char_code); if (nStartCode > nUnicodePrev) // Oops, nUnicodePrev is not in the cmap! Adjust so we get a reasonable // answer this time around. nUnicodePrev = nStartCode - 1; if (nEndCode > nUnicodePrev) { // Next is in the same range; it is the next successive codepoint. if (pRangeKey) *pRangeKey = iRange; return nUnicodePrev + 1; } // Otherwise the next codepoint is the first one in the next range, or 10FFFF if we're done. if (pRangeKey) *pRangeKey = iRange + 1; return (iRange + 1 >= nRange) ? 0x10FFFF : read(pTable->group[iRange + 1].start_char_code); } /*---------------------------------------------------------------------------------------------- Return the offset stored in the loca table for the given Glyph ID. (This offset is into the glyf table.) Return -1 if the lookup failed. Technically this method should return an unsigned long but it is unlikely the offset will exceed 2^31. ----------------------------------------------------------------------------------------------*/ size_t LocaLookup(gr::gid16 nGlyphId, const void * pLoca, size_t lLocaSize, const void * pHead) { const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); // CheckTable verifies the index_to_loc_format is valid if (read(pTable->index_to_loc_format) == Sfnt::FontHeader::ShortIndexLocFormat) { // loca entries are two bytes and have been divided by two if (nGlyphId <= (lLocaSize >> 1) - 1) // allow sentinel value to be accessed { const uint16 * pShortTable = reinterpret_cast(pLoca); return (read(pShortTable[nGlyphId]) << 1); } } if (read(pTable->index_to_loc_format) == Sfnt::FontHeader::LongIndexLocFormat) { // loca entries are four bytes if (nGlyphId <= (lLocaSize >> 2) - 1) { const uint32 * pLongTable = reinterpret_cast(pLoca); return read(pLongTable[nGlyphId]); } } // only get here if glyph id was bad //return -1; throw std::out_of_range("glyph id out of range for font"); } /*---------------------------------------------------------------------------------------------- Return a pointer into the glyf table based on the given offset (from LocaLookup). Return NULL on error. ----------------------------------------------------------------------------------------------*/ void * GlyfLookup(const void * pGlyf, size_t nGlyfOffset) { const uint8 * pByte = reinterpret_cast(pGlyf); return const_cast(pByte + nGlyfOffset); } /*---------------------------------------------------------------------------------------------- Get the bounding box coordinates for a simple glyf entry (non-composite). Return true if successful, false otherwise. ----------------------------------------------------------------------------------------------*/ bool GlyfBox(const void * pSimpleGlyf, int & xMin, int & yMin, int & xMax, int & yMax) { const Sfnt::Glyph * pGlyph = reinterpret_cast(pSimpleGlyf); xMin = read(pGlyph->x_min); yMin = read(pGlyph->y_min); xMax = read(pGlyph->x_max); yMax = read(pGlyph->y_max); return true; } /*---------------------------------------------------------------------------------------------- Return the number of contours for a simple glyf entry (non-composite) Returning -1 means this is a composite glyph ----------------------------------------------------------------------------------------------*/ int GlyfContourCount(const void * pSimpleGlyf) { const Sfnt::Glyph * pGlyph = reinterpret_cast(pSimpleGlyf); return read(pGlyph->number_of_contours); // -1 means composite glyph } /*---------------------------------------------------------------------------------------------- Get the point numbers for the end points of the glyph contours for a simple glyf entry (non-composite). cnPointsTotal - count of contours from GlyfContourCount(); (same as number of end points) prgnContourEndPoints - should point to a buffer large enough to hold cnPoints integers cnPoints - count of points placed in above range Return true if successful, false otherwise. False could indicate a multi-level composite glyphs. ----------------------------------------------------------------------------------------------*/ bool GlyfContourEndPoints(const void * pSimpleGlyf, int * prgnContourEndPoint, size_t cnPointsTotal, int & cnPoints) { const Sfnt::SimpleGlyph * pGlyph = reinterpret_cast(pSimpleGlyf); int cContours = read(pGlyph->number_of_contours); if (cContours < 0) return false; // this method isn't supposed handle composite glyphs for (size_t i = 0; i < unsigned(cContours) && i < cnPointsTotal; i++) { prgnContourEndPoint[i] = read(pGlyph->end_pts_of_contours[i]); } cnPoints = cContours; return true; } /*---------------------------------------------------------------------------------------------- Get the points for a simple glyf entry (non-composite) cnPointsTotal - count of points from largest end point obtained from GlyfContourEndPoints prgnX & prgnY - should point to buffers large enough to hold cnPointsTotal integers The ranges are parallel so that coordinates for point(n) are found at offset n in both ranges. This is raw point data with relative coordinates. prgbFlag - should point to a buffer a large enough to hold cnPointsTotal bytes This range is parallel to the prgnX & prgnY cnPoints - count of points placed in above ranges Return true if successful, false otherwise. False could indicate a composite glyph ----------------------------------------------------------------------------------------------*/ bool GlyfPoints(const void * pSimpleGlyf, int * prgnX, int * prgnY, char * prgbFlag, size_t cnPointsTotal, size_t & cnPoints) { using namespace Sfnt; const Sfnt::SimpleGlyph * pGlyph = reinterpret_cast(pSimpleGlyf); int cContours = read(pGlyph->number_of_contours); // return false for composite glyph if (cContours <= 0) return false; size_t cPts = read(pGlyph->end_pts_of_contours[cContours - 1]) + 1; if (cPts > cnPointsTotal) return false; // skip over bounding box data & point to byte count of instructions (hints) const uint8 * pbGlyph = reinterpret_cast (&pGlyph->end_pts_of_contours[cContours]); // skip over hints & point to first flag int cbHints = read(*(uint16 *)pbGlyph); pbGlyph += sizeof(uint16); pbGlyph += cbHints; // load flags & point to first x coordinate auto iFlag = 0U; while (iFlag < cPts) { if (!(*pbGlyph & SimpleGlyph::Repeat)) { // flag isn't repeated prgbFlag[iFlag] = (char)*pbGlyph; pbGlyph++; iFlag++; } else { // flag is repeated; count specified by next byte char chFlag = (char)*pbGlyph; pbGlyph++; int cFlags = (int)*pbGlyph; pbGlyph++; prgbFlag[iFlag] = chFlag; iFlag++; for (int i = 0; i < cFlags; i++) { prgbFlag[iFlag + i] = chFlag; } iFlag += cFlags; } } if (iFlag != cPts) return false; // load x coordinates iFlag = 0U; while (iFlag < cPts) { if (prgbFlag[iFlag] & SimpleGlyph::XShort) { prgnX[iFlag] = *pbGlyph; if (!(prgbFlag[iFlag] & SimpleGlyph::XIsPos)) { prgnX[iFlag] = -prgnX[iFlag]; } pbGlyph++; } else { if (prgbFlag[iFlag] & SimpleGlyph::XIsSame) { prgnX[iFlag] = 0; // do NOT increment pbGlyph } else { prgnX[iFlag] = read(*(int16 *)pbGlyph); pbGlyph += sizeof(int16); } } iFlag++; } // load y coordinates iFlag = 0U; while (iFlag < cPts) { if (prgbFlag[iFlag] & SimpleGlyph::YShort) { prgnY[iFlag] = *pbGlyph; if (!(prgbFlag[iFlag] & SimpleGlyph::YIsPos)) { prgnY[iFlag] = -prgnY[iFlag]; } pbGlyph++; } else { if (prgbFlag[iFlag] & SimpleGlyph::YIsSame) { prgnY[iFlag] = 0; // do NOT increment pbGlyph } else { prgnY[iFlag] = read(*(int16 *)pbGlyph); pbGlyph += sizeof(int16); } } iFlag++; } cnPoints = cPts; return true; } /*---------------------------------------------------------------------------------------------- Fill prgnCompId with the component Glyph IDs from pSimpleGlyf. Client must allocate space before calling. pSimpleGlyf - assumed to point to a composite glyph cCompIdTotal - the number of elements in prgnCompId cCompId - the total number of Glyph IDs stored in prgnCompId Return true if successful, false otherwise False could indicate a non-composite glyph or the input array was not big enough ----------------------------------------------------------------------------------------------*/ bool GetComponentGlyphIds(const void * pSimpleGlyf, int * prgnCompId, size_t cnCompIdTotal, size_t & cnCompId) { using namespace Sfnt; if (GlyfContourCount(pSimpleGlyf) >= 0) return false; const Sfnt::SimpleGlyph * pGlyph = reinterpret_cast(pSimpleGlyf); // for a composite glyph, the special data begins here const uint8 * pbGlyph = reinterpret_cast(&pGlyph->end_pts_of_contours[0]); uint16 GlyphFlags; size_t iCurrentComp = 0; do { GlyphFlags = read(*((uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); prgnCompId[iCurrentComp++] = read(*((uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); if (iCurrentComp >= cnCompIdTotal) return false; int nOffset = 0; nOffset += GlyphFlags & CompoundGlyph::Arg1Arg2Words ? 4 : 2; nOffset += GlyphFlags & CompoundGlyph::HaveScale ? 2 : 0; nOffset += GlyphFlags & CompoundGlyph::HaveXAndYScale ? 4 : 0; nOffset += GlyphFlags & CompoundGlyph::HaveTwoByTwo ? 8 : 0; pbGlyph += nOffset; } while (GlyphFlags & CompoundGlyph::MoreComponents); cnCompId = iCurrentComp; return true; } /*---------------------------------------------------------------------------------------------- Return info on how a component glyph is to be placed pSimpleGlyph - assumed to point to a composite glyph nCompId - glyph id for component of interest bOffset - if true, a & b are the x & y offsets for this component if false, b is the point on this component that is attaching to point a on the preceding glyph Return true if successful, false otherwise False could indicate a non-composite glyph or that component wasn't found ----------------------------------------------------------------------------------------------*/ bool GetComponentPlacement(const void * pSimpleGlyf, int nCompId, bool fOffset, int & a, int & b) { using namespace Sfnt; if (GlyfContourCount(pSimpleGlyf) >= 0) return false; const Sfnt::SimpleGlyph * pGlyph = reinterpret_cast(pSimpleGlyf); // for a composite glyph, the special data begins here const uint8 * pbGlyph = reinterpret_cast(&pGlyph->end_pts_of_contours[0]); uint16 GlyphFlags; do { GlyphFlags = read(*((uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); if (read(*((uint16 *)pbGlyph)) == nCompId) { pbGlyph += sizeof(uint16); // skip over glyph id of component fOffset = (GlyphFlags & CompoundGlyph::ArgsAreXYValues) == CompoundGlyph::ArgsAreXYValues; if (GlyphFlags & CompoundGlyph::Arg1Arg2Words ) { a = read(*(int16 *)pbGlyph); pbGlyph += sizeof(int16); b = read(*(int16 *)pbGlyph); pbGlyph += sizeof(int16); } else { // args are signed bytes a = *pbGlyph++; b = *pbGlyph++; } return true; } pbGlyph += sizeof(uint16); // skip over glyph id of component int nOffset = 0; nOffset += GlyphFlags & CompoundGlyph::Arg1Arg2Words ? 4 : 2; nOffset += GlyphFlags & CompoundGlyph::HaveScale ? 2 : 0; nOffset += GlyphFlags & CompoundGlyph::HaveXAndYScale ? 4 : 0; nOffset += GlyphFlags & CompoundGlyph::HaveTwoByTwo ? 8 : 0; pbGlyph += nOffset; } while (GlyphFlags & CompoundGlyph::MoreComponents); // didn't find requested component fOffset = true; a = 0; b = 0; return false; } /*---------------------------------------------------------------------------------------------- Return info on how a component glyph is to be transformed pSimpleGlyph - assumed to point to a composite glyph nCompId - glyph id for component of interest flt11, flt11, flt11, flt11 - a 2x2 matrix giving the transform bTransOffset - whether to transform the offset from above method The spec is unclear about the meaning of this flag Currently - initialize to true for MS rasterizer and false for Mac rasterizer, then on return it will indicate whether transform should apply to offset (MSDN CD 10/99) Return true if successful, false otherwise False could indicate a non-composite glyph or that component wasn't found ----------------------------------------------------------------------------------------------*/ bool GetComponentTransform(const void * pSimpleGlyf, int nCompId, float & flt11, float & flt12, float & flt21, float & flt22, bool & fTransOffset) { using namespace Sfnt; if (GlyfContourCount(pSimpleGlyf) >= 0) return false; const Sfnt::SimpleGlyph * pGlyph = reinterpret_cast(pSimpleGlyf); // for a composite glyph, the special data begins here const uint8 * pbGlyph = reinterpret_cast(&pGlyph->end_pts_of_contours[0]); uint16 GlyphFlags; do { GlyphFlags = read(*((uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); if (read(*((uint16 *)pbGlyph)) == nCompId) { pbGlyph += sizeof(uint16); // skip over glyph id of component pbGlyph += GlyphFlags & CompoundGlyph::Arg1Arg2Words ? 4 : 2; // skip over placement data if (fTransOffset) // MS rasterizer fTransOffset = !(GlyphFlags & CompoundGlyph::UnscaledOffset); else // Apple rasterizer fTransOffset = (GlyphFlags & CompoundGlyph::ScaledOffset) != 0; if (GlyphFlags & CompoundGlyph::HaveScale) { flt11 = fixed_to_float<14>(read(*(uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); flt12 = 0; flt21 = 0; flt22 = flt11; } else if (GlyphFlags & CompoundGlyph::HaveXAndYScale) { flt11 = fixed_to_float<14>(read(*(uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); flt12 = 0; flt21 = 0; flt22 = fixed_to_float<14>(read(*(uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); } else if (GlyphFlags & CompoundGlyph::HaveTwoByTwo) { flt11 = fixed_to_float<14>(read(*(uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); flt12 = fixed_to_float<14>(read(*(uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); flt21 = fixed_to_float<14>(read(*(uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); flt22 = fixed_to_float<14>(read(*(uint16 *)pbGlyph)); pbGlyph += sizeof(uint16); } else { // identity transform flt11 = 1.0; flt12 = 0.0; flt21 = 0.0; flt22 = 1.0; } return true; } pbGlyph += sizeof(uint16); // skip over glyph id of component int nOffset = 0; nOffset += GlyphFlags & CompoundGlyph::Arg1Arg2Words ? 4 : 2; nOffset += GlyphFlags & CompoundGlyph::HaveScale ? 2 : 0; nOffset += GlyphFlags & CompoundGlyph::HaveXAndYScale ? 4 : 0; nOffset += GlyphFlags & CompoundGlyph::HaveTwoByTwo ? 8 : 0; pbGlyph += nOffset; } while (GlyphFlags & CompoundGlyph::MoreComponents); // didn't find requested component fTransOffset = false; flt11 = 1; flt12 = 0; flt21 = 0; flt22 = 1; return false; } /*---------------------------------------------------------------------------------------------- Return a pointer into the glyf table based on the given tables and Glyph ID Since this method doesn't check for spaces, it is good to call IsSpace before using it. Return NULL on error. ----------------------------------------------------------------------------------------------*/ void * GlyfLookup(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead) { // test for valid glyph id // CheckTable verifies the index_to_loc_format is valid const Sfnt::FontHeader * pTable = reinterpret_cast(pHead); if (read(pTable->index_to_loc_format) == Sfnt::FontHeader::ShortIndexLocFormat) { // loca entries are two bytes (and have been divided by two) if (nGlyphId >= (lLocaSize >> 1) - 1) // don't allow nGlyphId to access sentinel throw std::out_of_range("glyph id out of range for font"); } if (read(pTable->index_to_loc_format) == Sfnt::FontHeader::LongIndexLocFormat) { // loca entries are four bytes if (nGlyphId >= (lLocaSize >> 2) - 1) throw std::out_of_range("glyph id out of range for font"); } auto lGlyfOffset = LocaLookup(nGlyphId, pLoca, lLocaSize, pHead); void * pSimpleGlyf = GlyfLookup(pGlyf, lGlyfOffset); // invalid loca offset returns null return pSimpleGlyf; } /*---------------------------------------------------------------------------------------------- Determine if a particular Glyph ID has any data in the glyf table. If it is white space, there will be no glyf data, though there will be metric data in hmtx, etc. ----------------------------------------------------------------------------------------------*/ bool IsSpace(gr::gid16 nGlyphId, const void * pLoca, size_t lLocaSize, const void * pHead) { size_t lGlyfOffset = LocaLookup(nGlyphId, pLoca, lLocaSize, pHead); // the +1 should always work because there is a sentinel value at the end of the loca table size_t lNextGlyfOffset = LocaLookup(nGlyphId + 1, pLoca, lLocaSize, pHead); return (lNextGlyfOffset - lGlyfOffset) == 0; } /*---------------------------------------------------------------------------------------------- Determine if a particular Glyph ID is a multi-level composite. This is probably not needed since support for multi-level composites has been added. ----------------------------------------------------------------------------------------------*/ bool IsDeepComposite(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, long lLocaSize, const void * pHead) { if (IsSpace(nGlyphId, pLoca, lLocaSize, pHead)) {return false;} void * pSimpleGlyf = GlyfLookup(nGlyphId, pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == NULL) return false; // no way to really indicate an error occured here if (GlyfContourCount(pSimpleGlyf) >= 0) return false; int rgnCompId[kMaxGlyphComponents]; // assumes only a limited number of glyph components size_t cCompIdTotal = kMaxGlyphComponents; size_t cCompId = 0; if (!GetComponentGlyphIds(pSimpleGlyf, rgnCompId, cCompIdTotal, cCompId)) return false; for (size_t i = 0; i < cCompId; i++) { pSimpleGlyf = GlyfLookup(static_cast(rgnCompId[i]), pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == NULL) {return false;} if (GlyfContourCount(pSimpleGlyf) < 0) return true; } return false; } /*---------------------------------------------------------------------------------------------- Get the bounding box coordinates based on the given tables and Glyph ID Handles both simple and composite glyphs. Return true if successful, false otherwise. On false, all point values will be INT_MIN False may indicate a white space glyph ----------------------------------------------------------------------------------------------*/ bool GlyfBox(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead, int & xMin, int & yMin, int & xMax, int & yMax) { xMin = yMin = xMax = yMax = INT_MIN; if (IsSpace(nGlyphId, pLoca, lLocaSize, pHead)) {return false;} void * pSimpleGlyf = GlyfLookup(nGlyphId, pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == NULL) {return false;} return GlyfBox(pSimpleGlyf, xMin, yMin, xMax, yMax); } /*---------------------------------------------------------------------------------------------- Get the number of contours based on the given tables and Glyph ID Handles both simple and composite glyphs Return true if successful, false otherwise. On false, cnContours will be INT_MIN False may indicate a white space glyph (or component) ----------------------------------------------------------------------------------------------*/ bool GlyfContourCount(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead, size_t & cnContours) { cnContours = static_cast(INT_MIN); if (IsSpace(nGlyphId, pLoca, lLocaSize, pHead)) {return false;} void * pSimpleGlyf = GlyfLookup(nGlyphId, pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == NULL) {return false;} int cRtnContours = GlyfContourCount(pSimpleGlyf); if (cRtnContours >= 0) { cnContours = size_t(cRtnContours); return true; } //handle composite glyphs int rgnCompId[kMaxGlyphComponents]; // assumes only a limited number of glyph components size_t cCompIdTotal = kMaxGlyphComponents; size_t cCompId = 0; if (!GetComponentGlyphIds(pSimpleGlyf, rgnCompId, cCompIdTotal, cCompId)) return false; cRtnContours = 0; int cTmp = 0; for (size_t i = 0; i < cCompId; i++) { if (IsSpace(static_cast(rgnCompId[i]), pLoca, lLocaSize, pHead)) {return false;} pSimpleGlyf = GlyfLookup(static_cast(rgnCompId[i]), pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == 0) {return false;} if ((cTmp = GlyfContourCount(pSimpleGlyf)) < 0) { size_t cNest = 0; if (!GlyfContourCount(static_cast(rgnCompId[i]), pGlyf, pLoca, lLocaSize, pHead, cNest)) return false; cTmp = (int) cNest; } cRtnContours += cTmp; } cnContours = size_t(cRtnContours); return true; } /*---------------------------------------------------------------------------------------------- Get the point numbers for the end points of the glyph contours based on the given tables and Glyph ID Handles both simple and composite glyphs cnPoints - count of contours from GlyfContourCount (same as number of end points) prgnContourEndPoints - should point to a buffer large enough to hold cnPoints integers Return true if successful, false otherwise. On false, all end points are INT_MIN False may indicate a white space glyph (or component) ----------------------------------------------------------------------------------------------*/ bool GlyfContourEndPoints(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead, int * prgnContourEndPoint, size_t & cnPoints) { std::fill_n(prgnContourEndPoint, cnPoints, INT_MIN); if (IsSpace(nGlyphId, pLoca, lLocaSize, pHead)) {return false;} void * pSimpleGlyf = GlyfLookup(nGlyphId, pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == NULL) {return false;} int cContours = GlyfContourCount(pSimpleGlyf); int cActualPts = 0; if (cContours > 0) return GlyfContourEndPoints(pSimpleGlyf, prgnContourEndPoint, cnPoints, cActualPts); // handle composite glyphs int rgnCompId[kMaxGlyphComponents]; // assumes no glyph will be made of more than 8 components size_t cCompIdTotal = kMaxGlyphComponents; size_t cCompId = 0; if (!GetComponentGlyphIds(pSimpleGlyf, rgnCompId, cCompIdTotal, cCompId)) return false; int * prgnCurrentEndPoint = prgnContourEndPoint; auto cCurrentPoints = cnPoints; int nPrevPt = 0; for (size_t i = 0; i < cCompId; i++) { if (IsSpace(static_cast(rgnCompId[i]), pLoca, lLocaSize, pHead)) {return false;} pSimpleGlyf = GlyfLookup(static_cast(rgnCompId[i]), pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == NULL) {return false;} if (!GlyfContourEndPoints(pSimpleGlyf, prgnCurrentEndPoint, cCurrentPoints, cActualPts)) { auto cNestedPts = cCurrentPoints; if (!GlyfContourEndPoints(static_cast(rgnCompId[i]), pGlyf, pLoca, lLocaSize, pHead, prgnCurrentEndPoint, cNestedPts)) return false; cActualPts = int(cCurrentPoints - cNestedPts); } // points in composite are numbered sequentially as components are added // must adjust end point numbers for new point numbers for (int j = 0; j < cActualPts; j++) prgnCurrentEndPoint[j] += nPrevPt; nPrevPt = prgnCurrentEndPoint[cActualPts - 1] + 1; prgnCurrentEndPoint += cActualPts; cCurrentPoints -= cActualPts; } cnPoints = cCurrentPoints; return true; } /*---------------------------------------------------------------------------------------------- Get the points for a glyph based on the given tables and Glyph ID Handles both simple and composite glyphs. cnPoints - count of points from largest end point obtained from GlyfContourEndPoints prgnX & prgnY - should point to buffers large enough to hold cnPoints integers The ranges are parallel so that coordinates for point(n) are found at offset n in both ranges. These points are in absolute coordinates. prgfOnCurve - should point to a buffer a large enough to hold cnPoints bytes (bool) This range is parallel to the prgnX & prgnY Return true if successful, false otherwise. On false, all points may be INT_MIN False may indicate a white space glyph (or component) or a corrupt font It's not clear from the TTF spec when the transforms should be applied. Should the transform be done before or after attachment point calcs? (current code - before) Should the transform be applied to other offsets? (currently - no; however commented out code is in place so that if CompoundGlyph::UnscaledOffset on the MS rasterizer is clear (typical) then yes, and if CompoundGlyph::ScaledOffset on the Apple rasterizer is clear (typical?) then no). See GetComponentTransform. It's also unclear where point numbering with attachment poinst starts (currently - first point number is relative to whole glyph, second point number is relative to current glyph). ----------------------------------------------------------------------------------------------*/ bool GlyfPoints(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead, const int * prgnContourEndPoint, size_t cnEndPoints, int * prgnX, int * prgnY, bool * prgfOnCurve, size_t & cnPoints) { std::fill_n(prgnX, cnPoints, INT_MAX); std::fill_n(prgnY, cnPoints, INT_MAX); if (IsSpace(nGlyphId, pLoca, lLocaSize, pHead)) return false; void * pSimpleGlyf = GlyfLookup(nGlyphId, pGlyf, pLoca, lLocaSize, pHead); if (pSimpleGlyf == NULL) return false; int cContours = GlyfContourCount(pSimpleGlyf); size_t cActualPts; if (cContours > 0) { if (!GlyfPoints(pSimpleGlyf, prgnX, prgnY, (char *)prgfOnCurve, cnPoints, cActualPts)) return false; CalcAbsolutePoints(prgnX, prgnY, cnPoints); SimplifyFlags((char *)prgfOnCurve, cnPoints); return true; } // handle composite glyphs int rgnCompId[kMaxGlyphComponents]; // assumes no glyph will be made of more than 8 components size_t cCompIdTotal = kMaxGlyphComponents; size_t cCompId = 0; // this will fail if there are more components than there is room for if (!GetComponentGlyphIds(pSimpleGlyf, rgnCompId, cCompIdTotal, cCompId)) return false; int * prgnCurrentX = prgnX; int * prgnCurrentY = prgnY; char * prgbCurrentFlag = (char *)prgfOnCurve; // converting bool to char should be safe auto cCurrentPoints = cnPoints; bool fOffset = true, fTransOff = true; int a, b; float flt11, flt12, flt21, flt22; // int * prgnPrevX = prgnX; // in case first att pt number relative to preceding glyph // int * prgnPrevY = prgnY; for (size_t i = 0; i < cCompId; i++) { if (IsSpace(static_cast(rgnCompId[i]), pLoca, lLocaSize, pHead)) {return false;} void * pCompGlyf = GlyfLookup(static_cast(rgnCompId[i]), pGlyf, pLoca, lLocaSize, pHead); if (pCompGlyf == NULL) {return false;} if (!GlyfPoints(pCompGlyf, prgnCurrentX, prgnCurrentY, prgbCurrentFlag, cCurrentPoints, cActualPts)) { auto cNestedPts = cCurrentPoints; if (!GlyfPoints(static_cast(rgnCompId[i]), pGlyf, pLoca, lLocaSize, pHead, prgnContourEndPoint, cnEndPoints, prgnCurrentX, prgnCurrentY, (bool *)prgbCurrentFlag, cNestedPts)) return false; cActualPts = cCurrentPoints - cNestedPts; } else { // convert points to absolute coordinates // do before transform and attachment point placement are applied CalcAbsolutePoints(prgnCurrentX, prgnCurrentY, cActualPts); } if (!GetComponentPlacement(pSimpleGlyf, rgnCompId[i], fOffset, a, b)) return false; if (!GetComponentTransform(pSimpleGlyf, rgnCompId[i], flt11, flt12, flt21, flt22, fTransOff)) return false; bool fIdTrans = flt11 == 1.0 && flt12 == 0.0 && flt21 == 0.0 && flt22 == 1.0; // apply transform - see main method note above // do before attachment point calcs if (!fIdTrans) for (auto j = 0U; j < cActualPts; j++) { int x = prgnCurrentX[j]; // store before transform applied int y = prgnCurrentY[j]; prgnCurrentX[j] = (int)(x * flt11 + y * flt12); prgnCurrentY[j] = (int)(x * flt21 + y * flt22); } // apply placement - see main method note above int nXOff, nYOff; if (fOffset) // explicit x & y offsets { /* ignore fTransOff for now if (fTransOff && !fIdTrans) { // transform x & y offsets nXOff = (int)(a * flt11 + b * flt12); nYOff = (int)(a * flt21 + b * flt22); } else */ { // don't transform offset nXOff = a; nYOff = b; } } else // attachment points { // in case first point is relative to preceding glyph and second relative to current // nXOff = prgnPrevX[a] - prgnCurrentX[b]; // nYOff = prgnPrevY[a] - prgnCurrentY[b]; // first point number relative to whole composite, second relative to current glyph nXOff = prgnX[a] - prgnCurrentX[b]; nYOff = prgnY[a] - prgnCurrentY[b]; } for (auto j = 0U; j < cActualPts; j++) { prgnCurrentX[j] += nXOff; prgnCurrentY[j] += nYOff; } // prgnPrevX = prgnCurrentX; // prgnPrevY = prgnCurrentY; prgnCurrentX += cActualPts; prgnCurrentY += cActualPts; prgbCurrentFlag += cActualPts; cCurrentPoints -= cActualPts; } SimplifyFlags((char *)prgfOnCurve, cnPoints); cnPoints = cCurrentPoints; return true; } /*---------------------------------------------------------------------------------------------- Simplify the meaning of flags to just indicate whether point is on-curve or off-curve. ---------------------------------------------------------------------------------------------*/ bool SimplifyFlags(char * prgbFlags, size_t cnPoints) { for (size_t i = 0; i < cnPoints; i++) prgbFlags[i] = static_cast(prgbFlags[i] & Sfnt::SimpleGlyph::OnCurve); return true; } /*---------------------------------------------------------------------------------------------- Convert relative point coordinates to absolute coordinates Points are stored in the font such that they are offsets from one another except for the first point of a glyph. ---------------------------------------------------------------------------------------------*/ bool CalcAbsolutePoints(int * prgnX, int * prgnY, size_t cnPoints) { int nX = prgnX[0]; int nY = prgnY[0]; for (size_t i = 1; i < cnPoints; ++i) { prgnX[i] += nX; nX = prgnX[i]; prgnY[i] += nY; nY = prgnY[i]; } return true; } /*---------------------------------------------------------------------------------------------- Convert a numerical table ID to a string containing the actual name of the table. Returns native order unsigned long. ---------------------------------------------------------------------------------------------*/ gr::fontTableId32 TableIdTag(const TableId tid) { assert(sizeof(mapIdToTag) == sizeof(gr::fontTableId32) * ktiLast); assert(tid < ktiLast); return mapIdToTag[tid]; } /*---------------------------------------------------------------------------------------------- Return the length of the 'name' table in bytes. Currently unused. ---------------------------------------------------------------------------------------------*/ #if 0 size_t NameTableLength(const gr::byte * pTable) { gr::byte * pb = (const_cast(pTable)) + 2; // skip format size_t cRecords = *pb++ << 8; cRecords += *pb++; int dbStringOffset0 = (*pb++) << 8; dbStringOffset0 += *pb++; int dbMaxStringOffset = 0; for (size_t irec = 0; irec < cRecords; irec++) { int nPlatform = (*pb++) << 8; nPlatform += *pb++; int nEncoding = (*pb++) << 8; nEncoding += *pb++; int nLanguage = (*pb++) << 8; nLanguage += *pb++; int nName = (*pb++) << 8; nName += *pb++; int cbStringLen = (*pb++) << 8; cbStringLen += *pb++; int dbStringOffset = (*pb++) << 8; dbStringOffset += *pb++; if (dbMaxStringOffset < dbStringOffset + cbStringLen) dbMaxStringOffset = dbStringOffset + cbStringLen; } return dbStringOffset0 + dbMaxStringOffset; } #endif } // end of namespace TtfUtil grcompiler-5.2.1/compiler/TtfUtil.h000066400000000000000000000166051411153030700172430ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2000, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: TtfUtil.h Responsibility: Alan Ward Last reviewed: Not yet. Description: Utility class for handling TrueType font files. ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #pragma once #endif #ifndef TTFUTIL_H #define TTFUTIL_H // I don't know why I need to duplicate these there when they are in GrPlatform.h: #ifdef _MSC_VER #pragma warning(disable: 4127) // conditional expression is constant #pragma warning(disable: 4290) // exception specification ignored. #endif #include #include #include "Generic/GrPlatform.h" // Enumeration used to specify a table in a TTF file enum TableId { ktiCmap, ktiCvt, ktiCryp, ktiHead, ktiFpgm, ktiGdir, ktiGlyf, ktiHdmx, ktiHhea, ktiHmtx, ktiLoca, ktiKern, ktiLtsh, ktiMaxp, ktiName, ktiOs2, ktiPost, ktiPrep, ktiFeat, ktiGlat, ktiGloc, ktiSilf, ktiSile, ktiSill, ktiLast /*This gives the enum length - it is not a real table*/ }; /*---------------------------------------------------------------------------------------------- Class providing utility methods to parse a TrueType font file (TTF). Callling application handles all file input and memory allocation. Assumes minimal knowledge of TTF file format. ----------------------------------------------------------------------------------------------*/ namespace TtfUtil { ////////////////////////////////// tools to find & check TTF tables bool GetHeaderInfo(size_t & lOffset, size_t & lSize); bool CheckHeader(const void * pHdr); bool GetTableDirInfo(const void * pHdr, size_t & lOffset, size_t & lSize); bool GetTableInfo(TableId ktiTableId, const void * pHdr, const void * pTableDir, size_t & lOffset, size_t & lSize); bool CheckTable(TableId ktiTableId, const void * pTable, size_t lTableSize); ////////////////////////////////// simple font wide info size_t GlyphCount(const void * pMaxp); size_t MaxCompositeComponentCount(const void * pMaxp); size_t MaxCompositeLevelCount(const void * pMaxp); size_t LocaGlyphCount(size_t lLocaSize, const void * pHead); int DesignUnits(const void * pHead); int HeadTableCheckSum(const void * pHead); void HeadTableCreateTime(const void * pHead, unsigned int * pnDateBC, unsigned int * pnDateAD); void HeadTableModifyTime(const void * pHead, unsigned int * pnDateBC, unsigned int * pnDateAD); bool IsItalic(const void * pHead); int FontAscent(const void * pOs2); int FontDescent(const void * pOs2); bool FontOs2Style(const void *pOs2, bool & fBold, bool & fItalic); bool Get31EngFamilyInfo(const void * pName, size_t & lOffset, size_t & lSize); bool Get31EngFullFontInfo(const void * pName, size_t & lOffset, size_t & lSize); bool Get30EngFamilyInfo(const void * pName, size_t & lOffset, size_t & lSize); bool Get30EngFullFontInfo(const void * pName, size_t & lOffset, size_t & lSize); int PostLookup(const void * pPost, size_t lPostSize, const void * pMaxp, const char * pPostName); ////////////////////////////////// utility methods helpful for name table bool GetNameInfo(const void * pName, int nPlatformId, int nEncodingId, int nLangId, int nNameId, size_t & lOffset, size_t & lSize); //size_t NameTableLength(const gr::byte * pTable); bool GetNameIdForString(const void * pNameTblArg, int & nPlatformId, int & nEncodingId, int & nLangId, int & nNameId, char * pBufIn, size_t lSizeIn); int GetLangsForNames(const void * pName, int nPlatformId, int nEncodingId, int *nameIdList, int cNameIds, short *langIdList); void SwapWString(void * pWStr, size_t nSize = 0); ////////////////////////////////// cmap lookup tools void * FindCmapSubtable(const void * pCmap, int nPlatformId = 3, int nEncodingId = 1); bool CheckCmap31Subtable(const void * pCmap31); gr::gid16 Cmap31Lookup(const void * pCmap31, int nUnicodeId); unsigned int Cmap31NextCodepoint(const void *pCmap31, unsigned int nUnicodeId, int * pRangeKey = 0); bool CheckCmap310Subtable(const void *pCmap310); gr::gid16 Cmap310Lookup(const void * pCmap310, unsigned int uUnicodeId); unsigned int Cmap310NextCodepoint(const void *pCmap310, unsigned int nUnicodeId, int * pRangeKey = 0); ///////////////////////////////// horizontal metric data for a glyph bool HorMetrics(gr::gid16 nGlyphId, const void * pHmtx, size_t lHmtxSize, const void * pHhea, int & nLsb, unsigned int & nAdvWid); ///////////////////////////////// convert our TableId enum to standard TTF tags fontTableId32 TableIdTag(const TableId); ////////////////////////////////// primitives for loca and glyf lookup size_t LocaLookup(gr::gid16 nGlyphId, const void * pLoca, size_t lLocaSize, const void * pHead); void * GlyfLookup(const void * pGlyf, size_t lGlyfOffset); ////////////////////////////////// primitves for simple glyph data bool GlyfBox(const void * pSimpleGlyf, int & xMin, int & yMin, int & xMax, int & yMax); int GlyfContourCount(const void * pSimpleGlyf); bool GlyfContourEndPoints(const void * pSimpleGlyf, int * prgnContourEndPoint, size_t cnPointsTotal, int & cnPoints); bool GlyfPoints(const void * pSimpleGlyf, int * prgnX, int * prgnY, char * prgbFlag, size_t cnPointsTotal, size_t & cnPoints); // primitive to find the glyph ids in a composite glyph bool GetComponentGlyphIds(const void * pSimpleGlyf, int * prgnCompId, size_t cnCompIdTotal, size_t & cnCompId); // primitive to find the placement data for a component in a composite glyph bool GetComponentPlacement(const void * pSimpleGlyf, int nCompId, bool fOffset, int & a, int & b); // primitive to find the transform data for a component in a composite glyph bool GetComponentTransform(const void * pSimpleGlyf, int nCompId, float & flt11, float & flt12, float & flt21, float & flt22, bool & fTransOffset); ////////////////////////////////// operate on composite or simple glyph (auto glyf lookup) void * GlyfLookup(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead); // primitive used by below methods // below are primary user methods for handling glyf data bool IsSpace(gr::gid16 nGlyphId, const void * pLoca, size_t lLocaSize, const void * pHead); bool IsDeepComposite(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead); bool GlyfBox(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead, int & xMin, int & yMin, int & xMax, int & yMax); bool GlyfContourCount(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void *pHead, size_t & cnContours); bool GlyfContourEndPoints(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead, int * prgnContourEndPoint, size_t & cnPoints); bool GlyfPoints(gr::gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lLocaSize, const void * pHead, const int * prgnContourEndPoint, size_t cnEndPoints, int * prgnX, int * prgnY, bool * prgfOnCurve, size_t & cnPoints); // utitily method used by high-level GlyfPoints bool SimplifyFlags(char * prgbFlags, size_t cnPoints); bool CalcAbsolutePoints(int * prgnX, int * prgnY, size_t cnPoints); } // end of namespace TtfUtil #endif grcompiler-5.2.1/compiler/constants.h000066400000000000000000000266331411153030700176660ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Main.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Constant definitions. -------------------------------------------------------------------------------*//*:End Ignore*/ enum { // Maximum Silf table version that can be generated by this version of the compiler: kfxdCompilerVersion = 0x00050000, kfxdMaxSilfVersion = 0x00050000 }; enum { kMaxGlyphsPerFont = 65530, // Reserve 6 glyphs for defined constants. kBadGlyph = 65531 }; // Expected type of result of expression typedef enum ExpressionType { // hungarian: expt kexptUnknown, kexptNumber, kexptBoolean, kexptMeas, kexptZero, // to handle the fact that 0 == 0m == false kexptOne, // to handle the fact that 1 == true kexptSlotRef, kexptString, kexptPoint, kexptGlyphID } ExpressionType; bool EquivalentTypes(ExpressionType expt1, ExpressionType expt2); // Glyph types: typedef enum GlyphType { // hungarian: glft kglftUnknown = 0, kglftUnicode, kglftGlyphID, kglftCodepoint, kglftPostscript, kglftPseudo } GlyphType; typedef enum GlyphClassType { // hungarian: glfct kglfctUnion = 0, kglfctIntersect, kglfctDifference } GlyphClassType; // Symbol types typedef enum SymbolType { // hungarian: symt ksymtNone, ksymtClass, // user-defined ksymtPseudo, // user-defined ksymtDirective, // pre-defined ksymtFeature, // user-defined ksymtFeatStyle, // user-defined ksymtFeatSetting, // user-defined ksymtLanguage, // user defined ksymtGlobal, // pre-defined ksymtGlyphData, ksymtGlyphAttr, // pre-defined and user-defined ksymtGlyphAttrComp, // user-defined: component.???.top/bottom/right/left ksymtGlyphMetric, // pre-defined ksymtInvalid, ksymtNonLeafGlyphAttr, // a non-leaf field within a glyph attribute ksymtNameID, // user-defined ksymtOperator, // pre-defined: ==, &&, +, -, min, max, etc. ksymtOpAssign, ksymtProcState, // pre-defined: JustifyMode, JustifyLevel, RunDirection ksymtSlotAttr, // pre-defined ksymtSlotAttrPtOff, // pre-defined: attach.at/with, shift, kern--attributes with // point values that need to be expanded into integers, // possibly with offsets ksymtSlotAttrPt, // pre-defined: collision.min/max--point values with no offsets ksymtSlotAttrCompRef, // user-defined: component.???.reference ksymtSpecial, // pre-defined: _, @, #, ^, etc. ksymtSpecialAt, ksymtSpecialCaret, ksymtSpecialLb, ksymtSpecialUnderscore, ksymtTable, // pre-defined: feature, glyph, name ksymtTableRule, // pre-defined: linebreak, substitution, position ksymtUnit // pre-defined: 'm' } SymbolType; // Scaling units: enum { kmunitUnscaled = -2, // already converted from scaled to unscaled kmunitNone = -1, // no scaling kmunitDefault = 0 // use default }; // Table options for rule-checking: typedef enum RuleCheckOption { kfrcoNone = 0, kfrcoLb = 0x0001, // can LB items be in the rule? kfrcoSubst = 0x0002, // can substitutions be done? kfrcoSetBreak = 0x0004, // set breakweight attribute? kfrcoSetCompRef = 0x0008, // set component.ref attr? kfrcoSetDir = 0x0010, // set directionality attr? kfrcoSetInsert = 0x0020, // set insertion attr? kfrcoSetPos = 0x0040, // set attach, shift, kern attrs? kfrcoPreBidi = 0x0080, // justifiy.stretch/shrink vs. justify.width kfrcoNeedJust = 0x0100 // need tests for justification } RuleCheckOption; typedef enum TableType { // hungarian: tblt ktbltNone, ktbltName, ktbltFeature, ktbltGlyph, ktbltRule, ktbltLanguage } TableType; // Maxima permitted by the binary format of the TrueType tables. enum { kMaxSubTables = 256, kMaxGlyphAttrs = 65536, // Gloc table kMinGlyphAttrValue = -32768, kMaxGlyphAttrValue = 32768, kMaxPasses = 128, // Sil_sub table would allow 256 kMaxPseudos = 65536, kMaxScriptTags = 256, kMaxReplcmtClasses = 65535, // Class map kMaxReplcmtClassesV1_2 = 256, kMaxGlyphAttrsGlat1 = 256, kMaxComponents = 16383, kMaxColIterations = 7, // iterations per collision pass kMaxCollisionThreshold = 255 }; // Maxima permitted by the engine implementation. These codes MUST match those used by // the engine. enum { kMaxFontNameLength = 32, // font cache name buffer size kMaxFeatures = 64, kFieldsPerComponent = 4, // four corners of the box kMaxSlotsPerRule = 64, kMaxGlyphsPerInputClass = 65535, kMaxTotalGlyphs = 65535 }; // Pragmatic maxima: enum { // Maxima imposed by the binary tables = 256 kMaxUserDefinableSlotAttrs = 64, kMaxComponentsPerGlyph = 32, kMaxJustLevel = 3 // ie, justify.0-3.xxx are permitted, justify.4.xxx is not }; // Other constants enum { kMaxFileLineNumber = 0x1FFFFFFF, // kludge to ensure that certain error messages come last kPassPerSPbitmap = 16, // *skipPasses* bitmap; 16 = size of glyph attr word kCollisionThresholdDefault = 10, kFullPass = 2 // do a full bidi pass }; // Engine code operators. These codes MUST match those used by the engine. enum ActionCommand { kopNop = 0, kopPushByte, kopPushByteU, kopPushShort, kopPushShortU, kopPushLong, kopAdd, kopSub, kopMul, kopDiv, kopMin, kopMax, kopNeg, kopTrunc8, kopTrunc16, kopCond, kopAnd, kopOr, kopNot, kopEqual, kopNotEq, kopLess, kopGtr, kopLessEq, kopGtrEq, kopNext, kopNextN, kopCopyNext, kopPutGlyphV1_2, kopPutSubsV1_2, kopPutCopy, kopInsert, kopDelete, kopAssoc, kopCntxtItem, kopAttrSet, kopAttrAdd, kopAttrSub, kopAttrSetSlot, kopIAttrSetSlot, kopPushSlotAttr, kopPushGlyphAttrV1_2, kopPushGlyphMetric, kopPushFeat, kopPushAttToGAttrV1_2, kopPushAttToGlyphMetric, kopPushISlotAttr, kopPushIGlyphAttr, // not yet implemented kopPopRet, kopRetZero, kopRetTrue, kopIAttrSet, kopIAttrAdd, kopIAttrSub, kopPushProcState, kopPushVersion, kopPutSubs, kopPutSubs2, kopPutSubs3, kopPutGlyph, kopPushGlyphAttr, kopPushAttToGlyphAttr, kopBitAnd, kopBitOr, kopBitNot, kopSetBits, // not implemented: //kopAttrBitAnd, kopAttrBitOr, kopIAttrBitAnd, kopIAttrBitOr, kopFeatSet, kopLim }; // Slot attribute internal IDs. These codes MUST match those used by the engine. enum SlotAttrName { kslatBogus = -1, // used for psuedo slot attribute kslatAdvX = 0, kslatAdvY, kslatAttTo, kslatAttAtX, kslatAttAtY, kslatAttAtGpt, kslatAttAtXoff, kslatAttAtYoff, kslatAttWithX, kslatAttWithY, kslatAttWithGpt, kslatAttWithXoff, kslatAttWithYoff, kslatAttLevel, kslatBreak, kslatCompRef, kslatDir, kslatInsert, kslatPosX, kslatPosY, kslatShiftX, kslatShiftY, kslatUserDefnV1, // version 1.0 kslatMeasureSol, kslatMeasureEol, kslatJ0Stretch, kslatJ0Shrink, kslatJ0Step, kslatJ0Weight, kslatJ0Width, kslatJ1Stretch, kslatJ1Shrink, kslatJ1Step, kslatJ1Weight, kslatJ1Width, kslatJ2Stretch, kslatJ2Shrink, kslatJ2Step, kslatJ2Weight, kslatJ2Width, kslatJ3Stretch, kslatJ3Shrink, kslatJ3Step, kslatJ3Weight, kslatJ3Width, kslatSegSplit = kslatJ0Stretch + 29, kslatUserDefn = kslatJ0Stretch + 30, kslatBidiLevel, // used in Graphite2 engine kslatColFlags, kslatColMinX, kslatColMinY, kslatColMaxX, kslatColMaxY, kslatColFixX, kslatColFixY, //read-only attr - how much adjustment was made kslatColMargin, kslatColMarginWt, kslatColExclGlyph, kslatColExclOffX, kslatColExclOffY, kslatSeqClass, kslatSeqProxClass, kslatSeqOrder, kslatSeqAboveXoff, kslatSeqAboveWt, kslatSeqBelowXlim, kslatSeqBelowWt, kslatSeqValignHt, kslatSeqValignWt }; // Glyph metric internal IDs. These codes MUST match those used by the engine. typedef enum GlyphMetric { kgmetLsb = 0, kgmetRsb, kgmetBbTop, kgmetBbBottom, kgmetBbLeft, kgmetBbRight, kgmetBbHeight, kgmetBbWidth, kgmetAdvWidth, kgmetAdvHeight, kgmetAscent, kgmetDescent } GlyphMetric; // Directionality codes. These codes MUST match those used by the engine. typedef enum DirCode { // Hungarian: dirc kdircUnknown = -1, // not yet determined by the bidi algorithm kdircNeutral = 0, // other neutrals (default) - ON kdircL = 1, // left-to-right, strong - L kdircR = 2, // right-to-left, strong - R kdircRArab = 3, // Arabic letter, right-to-left, strong, AR kdircEuroNum = 4, // European number, left-to-right, weak - EN kdircEuroSep = 5, // European separator, left-to-right, weak - ES kdircEuroTerm = 6, // European number terminator, left-to-right, weak - ET kdircArabNum = 7, // Arabic number, left-to-right, weak - AN kdircComSep = 8, // Common number separator, left-to-right, weak - CS kdircWhiteSpace = 9, // white space, neutral - WS kdircBndNeutral = 10, // boundary netural - BN kdircLRO = 11, // LTR override kdircRLO = 12, // RTL override kdircLRE = 13, // LTR embedding kdircRLE = 14, // RTL embedding kdircPDF = 15, // pop directionality flag // I think we need this too: kdircNSM = 16, // non-space mark // Not used by Graphite1: kdircLRI = 17, // LTR isolate kdircRLI = 18, // RTL isolate kdircFSI = 19, // first strong isolate kdircPDI = 20, // pop isolate run flag // Not used by Graphite1: kdircOPP = 21, // opening parens kdircCPP = 22, // closing parens // Special values for internal use: kdircLlb = 32, // left-to-right line-break kdircRlb = 33, // right-to-left line-break kdircPDFl = 34, // PDF marker matching an LRO or LRE kdircPDFr = 35 // PDF marker matching an RLO or RLE } DirCode; // Unicode characters with special treatments enum DefinedChars { kchwSpace = 0x0020, // space kchwHyphen = 0x002D, // hyphen kchwLRM = 0x200E, // left-to-right mark kchwRLM = 0x200F, // right-to-left mark kchwALM = 0x061C, // Arabic letter mark kchwLRE = 0x202A, // left-to-right embedding kchwRLE = 0x202B, // right-to-left embedding kchwPDF = 0x202C, // pop directional format kchwLRO = 0x202D, // left-to-right override kchwRLO = 0x202E, // right-to-left override kchwLRI = 0x2066, // left-to-right isolate kchwRLI = 0x2067, // right-to-left isolate kchwFSI = 0x2068, // first strong isolate kchwPDI = 0x2069 // pop directional isolate }; // version 1.0 breakweights enum BreakWeightsV1 { klbv1WordBreak = 1, klbv1HyphenBreak = 2, klbv1LetterBreak = 3, klbv1ClipBreak = 4 }; enum BreakWeightsV2 { klbv2WsBreak = 10, klbv2WordBreak = 15, klbv2HyphenBreak = 20, klbv2LetterBreak = 30, klbv2ClipBreak = 40 }; enum SpaceContextuals { kspconUnknown = 0, kspconNone = 1, kspconFirstOnly = 2, // only as first slot in rule kspconLastOnly = 3, // only as last slot in rule kspconSingleOnly = 4, // only as the single slot in rule kspconEdgeOnly = 5, // only as first or last slot, never in the middle of the rules kspconAnywhere = 6 // middle of a rule }; // Gpoint = zero value. This code MUST match that used by the engine. // Most unset attributes have a default value of zero, but gpoint attributes need something // to distinguish between an actual value of zero and nothing. (This is a somewhat arbitrary // value, except we want to avoid -1 because that often used by the engine to indicate // "never been set"). enum { kGpointZero = -2 }; enum ProcessStates { kpstatJustifyMode = 1, kpstatJustifyLevel = 2 }; enum JustifyModes { kjmodNormal = 0, kjmodMeasure = 1, kjmodJustify = 2 }; // Auto-kerning enum { kakNone = 0, kakFull = 1, kakNoSpace = 2 }; enum { kInvalid = 0x3FFFFFFF };grcompiler-5.2.1/compiler/errors.sed000066400000000000000000000011611411153030700174770ustar00rootroot00000000000000#!/bin/sed -rf # Dump comments \%//% d # Single line invocations of Add{Error,Warning} /g_errorList.Add\w+\([^)]+\)/ b munge # Multiline invocations of the same /g_errorList.Add\w+\(/,/\)/ { H d } # Everything not a multiline invocation //,// ! { g /^$/ d # If no multiline waiting in hold buffer delete s/\s*\n\s*/ /g x;z;x # Clear hold buffer b munge } # Extract parameters of interest :munge s/(\s+,|,\s+)/,/g s/","/ /g s/.*Add(\w+)\(([[:digit:]]+),[^,]+,(.+)\).*/\1\t\2\t\3/ # Remove any remining lines /g_errorList/ d # Fixup strings :polish s/",/" + /g s/,"/ + "/g grcompiler-5.2.1/compiler/errors.sh000066400000000000000000000001601411153030700173340ustar00rootroot00000000000000#!/bin/sh find -type f -iregex '.*\.\([ch]pp\|[ch]\)' -exec sed -rf errors.sed {} \; \ | sort -u -k1,1d -k2,2n grcompiler-5.2.1/compiler/main.cpp000066400000000000000000000566741411153030700171410ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: main.cpp Responsibility: Sharon Correll Description: Main function that runs the compiler. Compiler versions: 1.0 - Initial 2.0 - justification, measuring (Silf table 2.0) 3.0? - Silf table 3.1 4.0 - pass constraints (Silf table 3.1) - large set (> 256) of replacement classes 4.1 - mirror glyph attributes (Silf table 2.1 or 3.2) 4.2 - large number of glyphs (> 64K) in replacement classes (Silf table 4.0); segsplit and extra LB flag 4.3 - handle &= and -= for class definitions; multiple justification levels 4.3.1 - added *skipPasses* glyph attribute and passKeySlot slot attribute for optimization; don't output xoffset, yoffset, or gpoint att fields 5.0 - collision fixing (Glat table 3.0, Gloc table 1.1; feat-set operator; Silf table 4.1 for collision fixing, 5.0 for compression) 5.1 - disallow duplicates in LHS classes that are used for substitution; added -e option 5.2 - many changes (see GitHub commit history) -------------------------------------------------------------------------------*//*:End Ignore*/ /*********************************************************************************************** Include files ***********************************************************************************************/ #include "main.h" // Version: bldinc.h holds the current copyright number and it is created by executing // bin\mkverrsc.exe from within the bin\mkcle.bat file. The major and minor version // numbers are hard-coded in mkcle.bat. #ifdef GR_FW #include "..\..\..\..\Output\Common\bldinc.h" #endif // GR_FW #if !defined(_WIN32) && !HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME #include char* program_invocation_name; char* program_invocation_short_name; #endif #ifdef _MSC_VER #pragma hdrstop #endif #undef THIS_FILE DEFINE_THIS_FILE /*********************************************************************************************** Forward declarations ***********************************************************************************************/ /*********************************************************************************************** Local Constants and static variables ***********************************************************************************************/ /*********************************************************************************************** Methods and functions ***********************************************************************************************/ /*---------------------------------------------------------------------------------------------- Run the compiler over the specified GDL and font files. ----------------------------------------------------------------------------------------------*/ int main(int argc, char * argv[]) { #ifdef _WIN32 // CRTDebug thing // _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); // _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_CHECK_ALWAYS_DF); // COM thing ::CoInitialize(NULL); #endif #if !defined(_WIN32) && !HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME program_invocation_name = argv[0]; program_invocation_short_name = basename(argv[0]); #endif char * pchGdlppFile = getenv("GDLPP"); std::string staGdlppFile(pchGdlppFile ? pchGdlppFile : ""); #ifdef _WIN32 if (staGdlppFile.empty()) { char rgchGdlppFile[1024]; DWORD cch = GetModuleFileName(NULL, rgchGdlppFile, sizeof(rgchGdlppFile)-1); rgchGdlppFile[cch] = '\0'; staGdlppFile = rgchGdlppFile; std::string::size_type pos = staGdlppFile.rfind('\\'); if (pos == staGdlppFile.npos) pos = 0; staGdlppFile.erase(pos, staGdlppFile.npos); if (!staGdlppFile.empty()) staGdlppFile += '\\'; staGdlppFile += "gdlpp.exe"; } #else // On Linux just use the PATH since grcompiler has probably been run // via the PATH and it allows people to use things like /usr/local/bin if (staGdlppFile.empty()) { staGdlppFile = "gdlpp"; } #endif char * pchGdlFile = NULL; char * pchFontFile = NULL; char rgchOutputFile[128]; utf16 rgchwOutputFontFamily[128]; memset(rgchOutputFile, 0, sizeof *rgchOutputFile * 128); memset(rgchwOutputFontFamily, 0, sizeof *rgchwOutputFontFamily * 128); int cargExtra = 0; bool fModFontName = false; g_cman.SetOutputDebugFiles(false, false); g_cman.SetSilfTableVersion(g_cman.DefaultSilfVersion(), false); g_cman.SetSeparateControlFile(false); g_cman.SetVerbose(true); g_cman.SetPassOptimizations(true); g_cman.SetOffsetAttrs(false); g_cman.SetCompressor(ktcNone); // Ignore these warnings by default: g_errorList.SetIgnoreWarning(510); // Cannot find point number for coordinates... g_errorList.SetIgnoreWarning(3521); // Vertical overlap between g_cman.SetErrorFileName("gdlerr.txt"); // On linux systems an argument starting with a / may be a path // so use - for options. On Windows allow both / or -. #ifdef _WIN32 while (argc >= 2 + cargExtra && (argv[1 + cargExtra][0] == '/' || argv[1 + cargExtra][0] == '-')) #else while (argc >= 2 + cargExtra && argv[1 + cargExtra][0] == '-') #endif { cargExtra = HandleCompilerOptions(cargExtra, argv[1 + cargExtra], (2 + cargExtra > argc) ? NULL : argv[2 + cargExtra]); } if (g_cman.IsVerbose()) { std::cout << "Graphite Compiler Version 5.2.1"; #ifdef _DEBUG std::cout << " [debug build]"; #else std::cout << " [release build]"; #endif // \xc2\xa9 = copyright symbol std::cout << "\n" << "Copyright (c) 2002-2021, by SIL International. All rights reserved.\n"; } if (argc < 3 + cargExtra) { std::cout << "\nusage: grcompiler [options] gdl-file input-font-file [output-font-file] [output-font-name]\n"; std::cout << "\nOptions:\n"; std::cout << " -c - compress graphite tables\n"; std::cout << " -d - output XML debugger file\n"; std::cout << " -D - output all debugger files\n"; std::cout << " -e - error message file; gdlerr.txt by default\n"; std::cout << " -g - permit and ignore invalid glyph definitions\n"; std::cout << " -nNNNN - set name table start location\n"; std::cout << " -p - omit pass-avoidance optimizations\n"; std::cout << " -q - quiet mode (no messages except on error)\n"; std::cout << " -vN - set Silf table version number\n"; std::cout << " -wNNNN - ignore warning with the given number\n"; std::cout << " -wall - display all warnings\n"; std::cout << " -offsets - generate xoffset, yoffset, and gpoint glyph attributes\n"; return 2; } bool fFatalErr = false; SetGdlAndFontFileNames(argv[1 + cargExtra], (argc > 2 + cargExtra) ? argv[2 + cargExtra] : NULL, &pchGdlFile, &pchFontFile); g_errorList.SetFileNameFromGdlFile(&g_cman, pchGdlFile); if (argc > 3 + cargExtra) { char * pch = argv[3 + cargExtra]; strcpy(rgchOutputFile, pch); if (argc > 4 + cargExtra) { pch = argv[4 + cargExtra]; Platform_AnsiToUnicode(pch, strlen(pch), rgchwOutputFontFamily, strlen(pch)); fModFontName = true; // Give a warning if the font name has something bigger than 7-bit data. // The font-output routines can't handle that. for (char * pchLp = pch; pchLp - pch < signed(strlen(pch)); pchLp++) { if ((unsigned char)(*pchLp) > 0x7F) { g_errorList.AddWarning(511, NULL, "Non-ASCII font names are not supported"); break; } } } //else // nice idea, but don't do this for now //{ // // output file and no font family; but if the string looks more like a font name, switch // if (LooksLikeFontFamily(rgchOutputFile)) // { // //std::string sta(pch); // //StrUni stu = sta; // //wcscpy(rgchwOutputFontFamily, stu.Chars()); // ::MultiByteToWideChar(CP_ACP, 0, rgchOutputFile, -1, // rgchwOutputFontFamily, strlen(rgchOutputFile)); // rgchOutputFile[0] = 0; // } //} } // Is GDL file path absolute? So will be paths in GDX. bool fAbsGdlFilePaths = (pchGdlFile[1] == ':' || pchGdlFile[0] == '/' || pchGdlFile[0] == '\\'); if (strcmp(rgchOutputFile, pchFontFile) == 0) { g_errorList.AddError(142, NULL, "Input and output font files cannot be the same."); fFatalErr = true; } if (rgchOutputFile[0] == 0) { // Calculate output file name from the input file name. if (g_cman.SeparateControlFile()) GenerateOutputControlFileName(pchFontFile, rgchOutputFile); // gtf else GenerateOutputFontFileName(pchFontFile, rgchOutputFile); // ttf } std::string staVersion = VersionString(g_cman.SilfTableVersion()); if (g_cman.IsVerbose()) { std::cout << "Reading input font...\n\n"; } GrcFont * pfont = new GrcFont(pchFontFile); int nFontError = pfont->Init(&g_cman); // Calculate output font-family name. utf16 rgchwInputFontFamily[128]; if (utf16len(rgchwOutputFontFamily) > 0) { Assert(fModFontName); //////// ???????? } else if (nFontError == 0) { // Assert(fModFontName); // seems to be false in regression tests pfont->GetFontFamilyName(rgchwInputFontFamily, 128); if (g_cman.SeparateControlFile()) GenerateOutputControlFontFamily(rgchwInputFontFamily, rgchwOutputFontFamily); else utf16cpy(rgchwOutputFontFamily, rgchwInputFontFamily); } else { std::wstring stu(L"unknown"); //utf16cpy(rgchwOutputFontFamily, (const utf16*)stu.Chars()); std::copy(stu.data(), stu.data() + stu.length() + 1, rgchwOutputFontFamily); } if (utf16len(rgchwOutputFontFamily) > kMaxFontNameLength) g_errorList.AddError(141, NULL, "Font name is longer than 32 characters."); //std::string staFamily((char*)rgchwOutputFontFamily); char rgchFamily[128]; memset(rgchFamily, 0, sizeof(char) * 128); int cchw = 0; utf16 * pchw = rgchwOutputFontFamily; while (*pchw++) cchw++; Platform_UnicodeToANSI(rgchwOutputFontFamily, cchw, rgchFamily, 128); std::string staFamily(rgchFamily); if (g_cman.IsVerbose()) { std::cout << "GDL file: " << pchGdlFile << "\n" << "PreProcessor: " << staGdlppFile << "\n" << "Input TT file: " << (pchFontFile ? pchFontFile : "none") << "\n" << "Output TT file: " << rgchOutputFile << "\n" << "Output font name: " << staFamily << ((fModFontName) ? "" : " (unchanged)") << "\n" << "Silf table version " << (g_cman.UserSpecifiedVersion() ? "requested" : "(default)") << ": " << staVersion << "\n\n"; } // Simple test for illegal UTF encoding in file. GDL requires 7 bit codepoints gr::byte bFirst, bSecond, bThird; std::ifstream strmGdl; strmGdl.open(pchGdlFile, std::ios_base::in | std::ios_base::binary); if (strmGdl.fail()) { fFatalErr = true; g_errorList.AddError(1105, NULL, "File ", pchGdlFile, " does not exist--compilation aborted"); } bool fEncodingErr = false; if (!fFatalErr) { strmGdl >> bFirst >> bSecond >> bThird; strmGdl.close(); if ((bFirst == 0xFF && bSecond == 0xFE) || (bFirst == 0xFE && bSecond == 0xFF)) { fEncodingErr = true; g_errorList.AddError(130, NULL, "Illegal encoding in GDL file - probably UTF-16 encoding."); } else if (bFirst == 0xEF && bSecond == 0xBB && bThird == 0xBF) { fEncodingErr = true; g_errorList.AddError(131, NULL, "Illegal encoding in GDL file - probably UTF-8 encoding."); } else if (bFirst & 0x80 || bSecond & 0x80 || bThird & 0x80) { // not really a UTF check but might as well test for illegal values here fEncodingErr = true; g_errorList.AddError(132, NULL, "Illegal encoding in GDL file - only 7 bit characters are legal."); } if (fEncodingErr) { fFatalErr = true; std::cout << "Illegal encoding in GDL file.\n"; g_errorList.AddError(140, NULL, "Illegal encoding in GDL file"); } } char rgchOutputPath[128]; if (!fFatalErr) { // Calculate the length of the path part of the output file name. auto cchOutputPath = strlen(rgchOutputFile); while (cchOutputPath > 0 && rgchOutputFile[cchOutputPath] != '\\' && rgchOutputFile[cchOutputPath] != '/') cchOutputPath--; memset(rgchOutputPath, 0, sizeof *rgchOutputPath * 128); memcpy(rgchOutputPath, rgchOutputFile, cchOutputPath); /* don't include \ */ if (g_cman.IsVerbose()) std::cout << "Parsing file " << pchGdlFile << "...\n"; if (!g_cman.Parse(pchGdlFile, staGdlppFile, rgchOutputPath)) { fFatalErr = true; std::cout << "Parsing failed.\n"; g_errorList.AddError(139, NULL, "Parsing failed"); } } if (!fFatalErr) { if (g_cman.IsVerbose()) std::cout << "Initial processing...\n"; if (!g_cman.PostParse()) { fFatalErr = true; std::cout << "Initial processing failed.\n"; g_errorList.AddError(138, NULL, "Initial processing failed"); } } if (!fFatalErr) { if (nFontError != 0) { fFatalErr = true; if (nFontError == 7) { // special case - want to avoid font copyright violations std::cout << "Font already contains Graphite table(s).\n"; std::cout << "Please recompile with original (non-Graphite) font.\n"; // similar error msg already in g_errorList } std::cout << std::dec << "Could not open font--error code = " << nFontError << std::endl; g_errorList.AddError(137, NULL, "Could not open font--error code = ", std::to_string(nFontError)); } } if (!fFatalErr) { if (g_cman.IsVerbose()) std::cout << "Checking for errors...\n"; if (g_cman.SilfTableVersion() > g_cman.MaxSilfVersion()) { g_errorList.AddError(133, NULL, "Invalid font table version: ", VersionString(g_cman.SilfTableVersion())); } if (g_cman.NameTableStart() != -1 && (g_cman.NameTableStart() < g_cman.NameTableStartMin() || g_cman.NameTableStart() > 32767)) { g_errorList.AddError(134, NULL, "Invalid name table start ID: ", std::to_string(g_cman.NameTableStart()), "; must be in range 256 - 32767."); } fFatalErr = g_errorList.AnyFatalErrors(); } if (!fFatalErr) { fFatalErr = !g_cman.PreCompile(pfont); fFatalErr = fFatalErr || g_errorList.AnyFatalErrors(); if (fFatalErr) { std::cout << "Compilation failed.\n"; if (g_errorList.NumberOfErrors() == 0) // Make sure some error message comes out. g_errorList.AddError(136, NULL, "Compilation failed"); } } if (!fFatalErr) { if (g_cman.IsVerbose()) std::cout << "Compiling...\n"; if (strlen(rgchOutputPath) == 0) { rgchOutputPath[0] = '.'; rgchOutputPath[1] = 0; // avoid empty path on Linux } g_cman.Compile(pfont, rgchOutputPath); if (g_cman.OutputDebugFiles()) { g_cman.DebugEngineCode(rgchOutputPath); g_cman.DebugRulePrecedence(rgchOutputPath); g_cman.DebugGlyphAttributes(rgchOutputPath); g_cman.DebugClasses(rgchOutputPath); //g_cman.DebugOutput(rgchOutputPath); g_cman.DebugCmap(pfont, rgchOutputPath); if (g_cman.IsVerbose()) std::cout << "Debug files generated.\n"; } if (g_cman.OutputDebugXml()) { bool f = g_cman.DebugXml(pfont, rgchOutputFile, fAbsGdlFilePaths); if ( g_cman.IsVerbose()) { if (f) std::cout << "Debugger XML file generated.\n"; else std::cout << "Error in generating debugger XML.\n"; } } int nRet = g_cman.OutputToFont(pchFontFile, rgchOutputFile, rgchwOutputFontFamily, fModFontName, rgchwInputFontFamily); if (nRet == 0) { if (g_cman.IsVerbose()) std::cout << "Compilation successful!\n"; } else { std::cout << "ERROR IN WRITING FONT FILE.\n"; g_errorList.AddError(135, NULL, "Error in writing font file--error code = ", std::to_string(nRet)); } } g_errorList.SortErrors(); g_errorList.WriteErrorsToFile(pchGdlFile, pchFontFile, rgchOutputFile, staFamily, VersionString(g_cman.SilfTableVersion()), g_cman.SeparateControlFile()); auto cerrFatal = g_errorList.NumberOfErrors(); auto cerrWarning = g_errorList.NumberOfWarnings(); auto cerrWarningGiven = g_errorList.NumberOfWarningsGiven(); // ie, not ignored cerrFatal -= cerrWarning; auto cerrWarningIgnored = cerrWarning - cerrWarningGiven; if (cerrFatal > 0) { std::cout << cerrFatal << " error" << (cerrFatal > 1 ? "s " : " "); if (cerrWarningGiven > 0) std::cout << "and " << cerrWarningGiven << " warning" << (cerrWarningGiven > 1 ? "s " : " "); std::cout << ((cerrFatal + cerrWarningGiven > 1) ? "have" : "has") << " been output to " << g_errorList.ErrFileName(); if (cerrWarningIgnored > 0) std::cout << " (" << cerrWarningIgnored << ((cerrWarningIgnored > 1) ? " warnings" : " warning") << " ignored)"; std::cout << ".\n"; } else if (cerrWarningGiven > 0) { std::cout << cerrWarningGiven << " warning" << (cerrWarningGiven > 1 ? "s have" : " has") << " been output to " << g_errorList.ErrFileName(); if (cerrWarningIgnored > 0) std::cout << " (" << cerrWarningIgnored << ((cerrWarningIgnored > 1) ? " warnings" : " warning") << " ignored)"; std::cout << ".\n"; } else if (cerrWarningIgnored > 0 && g_cman.IsVerbose()) { std::cout << cerrWarningIgnored << ((cerrWarningIgnored > 1) ? " warnings" : " warning") << " ignored.\n"; } delete pfont; #ifdef _WIN32 // COM thing ::CoUninitialize(); #endif if (g_errorList.AnyFatalErrors()) return 1; else return 0; } /*---------------------------------------------------------------------------------------------- Interpret the compiler options, which are preceded by slashes or hyphens in the argument list. ----------------------------------------------------------------------------------------------*/ int HandleCompilerOptions(int cargExtra, char * arg, char * arg2) { if (arg[1] == 'c') { g_cman.SetCompressor(ktcLZ4); } else if (arg[1] == 'd') // XML debugger file { g_cman.SetOutputDebugFiles(true, false); } else if (arg[1] == 'D') // all debugger files { g_cman.SetOutputDebugFiles(true, true); } else if (arg[1] == 'e') // error file { g_cman.SetErrorFileName(arg2); cargExtra++; // skip file name } else if (arg[1] == 'g') // ignore bad glyphs { g_cman.SetIgnoreBadGlyphs(true); } else if (strcmp(arg+1, "wall") == 0) { g_errorList.ClearIgnoreWarnings(); } else if (arg[1] == 'n' || arg[1] == 'v' || arg[1] == 'w') { int nValue = 0; char rgch[20]; int i = 2; while (arg[i] >= '0' && arg[i] <= '9') { rgch[i - 2] = arg[i]; nValue = (nValue * 10) + (arg[i] - '0'); i++; } rgch[i - 2] = 0; if (arg[1] == 'n') { g_cman.SetNameTableStart(nValue); } else if (arg[1] == 'v') { int fxdVersion = nValue << 16; // put in "fixed" format // Give an error later if the version is invalid. g_cman.SetSilfTableVersion(fxdVersion, true); } else if (arg[1] == 'w') { g_errorList.SetIgnoreWarning(nValue); } } else if (arg[1] == 'q') { g_cman.SetVerbose(false); } else if (arg[1] == 'p') { g_cman.SetPassOptimizations(false); } else if (strcmp(arg+1, "offsets") == 0) { g_cman.SetOffsetAttrs(true); } //else if (arg[1] == 's') //{ // g_cman.SetSeparateControlFile(true); //} cargExtra++; return cargExtra; } /*---------------------------------------------------------------------------------------------- Try to be clever about the GDL-file and TTF-file arguments. Don't do this for now, because it can confuse the user. Just given a warning. ----------------------------------------------------------------------------------------------*/ void SetGdlAndFontFileNames(char * pchFile1, char * pchFile2, char ** ppchGdlFile, char ** ppchFontFile) { gr::byte bFirst1, bSecond1, bThird1, bFourth1, bFirst2, bSecond2; std::ifstream strm1; strm1.open(pchFile1, std::ios_base::in | std::ios_base::binary); strm1 >> bFirst1 >> bSecond1 >> bThird1 >> bFourth1; strm1.close(); std::ifstream strm2; strm2.open(pchFile2, std::ios_base::in | std::ios_base::binary); strm2 >> bFirst2 >> bSecond2; strm2.close(); //if (bFirst1 == 0 && bThird1 == 0 && bFourth1 == 0 // && bSecond = 1 -- this can change with the version number // && bFirst2 != 0 && bSecond2 != 0) //{ // // pchFile1 looks like the beginning of a TTF file, and pchFile2 could be a GDL file. // // So swap the arguments. // *ppchFontFile = pchFile1; // *ppchGdlFile = pchFile2; //} //else //{ // *ppchGdlFile = pchFile1; // *ppchFontFile = pchFile2; //} if (bFirst1 == 0 && bThird1 == 0 && bFourth1 == 0 // && bSecond = 1 -- this can change with the version number && bFirst2 != 0 && bSecond2 != 0) { g_errorList.AddWarning(512, NULL, "Did you switch the names of the GDL and TTF files?"); } *ppchGdlFile = pchFile1; *ppchFontFile = pchFile2; } /*---------------------------------------------------------------------------------------------- Calculate the default name of the output font, based on the input font. If the original font is name xyz.ttf, the Graphite version will be xyz_gr.ttf. If we are putting the Graphite font tables into a separate control file, the file name will be xyz.gtf. ----------------------------------------------------------------------------------------------*/ void GenerateOutputFontFileName(char * pchFontFile, char * pchOutputFont) { char * pchIn = pchFontFile; while (*pchIn != 0) pchIn++; while (*pchIn != '\\' && *pchIn != ':' && pchIn >= pchFontFile) pchIn--; pchIn++; char * pchOut = pchOutputFont; while (*pchIn != '.' && *pchIn != 0) { *pchOut++ = *pchIn++; } *pchOut++ = '_'; *pchOut++ = 'g'; *pchOut++ = 'r'; while (*pchIn != 0) *pchOut++ = *pchIn++; *pchOut = 0; } /*---------------------------------------------------------------------------------------------- Calculate the default name of the output control file, based on the input font. We remove the extension and append ".gtf". ----------------------------------------------------------------------------------------------*/ void GenerateOutputControlFileName(char * pchFontFile, char * pchOutputFont) { char * pchIn = pchFontFile; while (*pchIn != 0) pchIn++; while (*pchIn != '\\' && *pchIn != ':' && pchIn >= pchFontFile) pchIn--; pchIn++; char * pchOut = pchOutputFont; while (*pchIn != '.' && *pchIn != 0) { *pchOut++ = *pchIn++; } *pchOut++ = '.'; *pchOut++ = 'g'; *pchOut++ = 't'; *pchOut++ = 'f'; *pchOut = 0; } /*---------------------------------------------------------------------------------------------- Calculate the font name that will be put into the output control file, based on the input font name. We append "Graphite" to the font name. ----------------------------------------------------------------------------------------------*/ void GenerateOutputControlFontFamily(utf16 * pchFontName, utf16 * pchOutputName) { wchar_t rgchw[120]; std::copy(pchFontName, pchFontName + 120, rgchw); std::wstring stu(rgchw); stu.append(L" Graphite"); std::copy(stu.data(), stu.data() + stu.length() + 1, pchOutputName); //utf16cpy(pchOutputName, (const utf16*)stu.Chars()); //pchOutputName[stu.Length() + 1] = 0; } /*---------------------------------------------------------------------------------------------- Return true if what is supposedly the output file name looks more like the family name; ie, if it has spaces in it and doesn't have '.' or '\' ----------------------------------------------------------------------------------------------*/ bool LooksLikeFontFamily(char * pch) { bool fSpaces = false; while (*pch != 0) { if (*pch == ' ') fSpaces = true; else if (*pch == '\\' || *pch == '.') return false; pch++; } return fSpaces; } /*---------------------------------------------------------------------------------------------- Generate a string containing the version number, eg: 0x00030002 -> "3.2" ----------------------------------------------------------------------------------------------*/ std::string VersionString(int fxdVersion) { return std::to_string(fxdVersion >> 16) + '.' + std::to_string(fxdVersion & 0x0000FFFF); } grcompiler-5.2.1/compiler/main.h000066400000000000000000000112731411153030700165700ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Main.h Responsibility: Sharon Correll Last reviewed: Not yet. Description: Header files to include in the Graphite compiler. -------------------------------------------------------------------------------*//*:End Ignore*/ /************************************************************************************* Main.header file for the Language component. *************************************************************************************/ #ifdef _MSC_VER #pragma once #endif #ifndef GRCOMPILER_H #define GRCOMPILER_H 1 // It's okay to use functions that were declared deprecated by VS 2005: #ifdef _MSC_VER #define _CRT_SECURE_NO_DEPRECATE #pragma warning(disable: 4996) // warning: function was declared deprecated #endif #define NO_EXCEPTIONS 1 #ifdef GR_FW #include "Common.h" #include #include using std::max; using std::min; #include "GrPlatform.h" #else #ifdef _WIN32 #include #define getcwd _getcwd // stupid MSFT "deprecation" warning #else #include #endif #include #include #include "GrCommon.h" #include "GrPlatform.h" #endif using namespace gr; /************************************************************************************* Interfaces. *************************************************************************************/ #ifdef GR_FW #include "FwKernelTlb.h" // includes DbAccess and Language DLL interfaces // To handle reading from the Unicode char props database, and breakweight enumeration //#include "DbAccessTlb.h" //#include "LanguageTlb.h" #else #include "LgCharPropsStub.h" // ICU: //#include // u_init //#include // u_getDataDirectory #include // #endif /************************************************************************************* Implementations. *************************************************************************************/ #include #include #ifdef _WIN32 #include #endif #ifdef GR_FW ////#include "Vector.h" ////#include "UtilString.h" ////#include "HashMap.h" ////#include "Set.h" #else ////#include "UtilVector.h" ////#include "UtilString.h" ////#include "UtilHashMap.h" ////#include "UtilSet.h" #include "UtilInt.h" #endif #include #include class GrcErrorList; class GrcManager; class GdlFeatureDefn; class GdlLanguageDefn; class GdlGlyphClassDefn; class GdlRuleItem; class FsmTable; class FsmState; class FsmMachineClass; class ReplClassLess; typedef std::set ReplacementClassSet; extern GrcErrorList g_errorList; extern GrcManager g_cman; ///#include "Grp.h" #include "GrpLineAndFile.hpp" #include "Antlr/AST.hpp" #include "constants.h" #include "GdlObject.h" #include "GrcErrorList.h" #include "GrcBinaryStream.h" ////#include "StrAnsiHash.h" #include "GrcSymTable.h" #include "TtfUtil.h" //must occur before GrcFont.h #include "TtfTypes.h" #include "GrcFont.h" #include "GdlExpression.h" #include "GdlFeatures.h" #include "GdlNameDefn.h" #include "GrcGlyphAttrMatrix.h" #include "GlyphBoundaries.h" #include "GrcMasterTable.h" #include "Fsm.h" #include "GdlRule.h" #include "GdlTablePass.h" #include "GdlGlyphClassDefn.h" #include "GdlGlyphDefn.h" #include "GdlRenderer.h" #include "GrcEnv.h" #include "GrcManager.h" /************************************************************************************* Functions. *************************************************************************************/ int HandleCompilerOptions(int cargExtra, char *, char*); void SetGdlAndFontFileNames(char * pchFile1, char * pchFile2, char ** ppchGdlFile, char ** ppchFontFile); void BinarySearchConstants(int n, int * pnPowerOf2, int * pnLog); void GenerateOutputFontFileName(char * pchFontFile, char * ppchOutputFont); void GenerateOutputControlFileName(char * pchFontFile, char * pchOutputFont); void GenerateOutputControlFontFamily(utf16 * pchFontFile, utf16 * pchOutputFont); bool LooksLikeFontFamily(char * pchFile); std::string VersionString(int fxdVersion); /************************************************************************************* Test Harness defines. *************************************************************************************/ #if 0 #define TESTPROGID "SIL.WRCompiler.Test" //occurs in test\progids.txt class __declspec(uuid("2192B661-143D-11d3-9273-00400543A57C")) TestBase; #define CLSID_Test __uuidof(TestBase) #endif #endif //!WRCOMPILER_H grcompiler-5.2.1/compiler/resource.h000066400000000000000000000006171411153030700174730ustar00rootroot00000000000000//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by grcompiler.rc // // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif grcompiler-5.2.1/compiler/stddef.gdh000066400000000000000000000032231411153030700174240ustar00rootroot00000000000000/* Copyright (C) 1999-2015 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. */ // Standard abbreviations: #define adv advance #define ah advanceheight #define att attach #define aw advancewidth #define bb boundingbox #define break breakweight #define comp component #define dir directionality #define endenv endenvironment #define env environment #define just justification #define lang language #define lb linebreak #define lsb leftsidebearing #define pos position #define ref reference #define rsb rightsidebearing #define sub substitution #define subs substitution // Standard defined constants: #define DIR_OTHERNEUTRAL 0 #define DIR_OTHERNEUTRALS 0 #define DIR_LEFT 1 #define DIR_RIGHT 2 #define DIR_ARABIC 3 #define DIR_EURONUMBER 4 #define DIR_EUROSEPARATOR 5 #define DIR_EUROTERMINATOR 6 #define DIR_ARABICNUMBER 7 #define DIR_COMMONSEPARATOR 8 #define DIR_WHITESPACE 9 #define DIR_BOUNDARYNEUTRAL 10 #define DIR_LRO 11 #define DIR_RLO 12 #define DIR_LRE 13 #define DIR_RLE 14 #define DIR_PDF 15 #define DIR_NSM 16 #define DIR_LRI 17 #define DIR_RLI 18 #define DIR_FSI 19 #define DIR_PDI 20 #define DIR_OPP 21 #define DIR_CPP 22 #define BREAK_WHITESPACE 10 #define BREAK_WORD 15 #define BREAK_INTRA 20 #define BREAK_LETTER 30 #define BREAK_CLIP 40 #define HORIZONTAL_LEFT_TO_RIGHT 1 #define HORIZONTAL_RIGHT_TO_LEFT 2 #define VERTICAL_FROM_LEFT 4 #define VERTICAL_FROM_RIGHT 8 #define LEFT_TO_RIGHT 1 #define RIGHT_TO_LEFT 2 #define JMODE_NORMAL 0 #define JMODE_MEASURE 1 #define JMODE_JUSTIFY 2 #define LG_USENG 0x0409 grcompiler-5.2.1/configure.ac000066400000000000000000000072161411153030700161510ustar00rootroot00000000000000AC_PREREQ(2.54) AC_INIT(grcompiler, 5.2.1, silgraphite-devel@lists.sourceforge.net) AC_CONFIG_SRCDIR(compiler/GrpParser.g) AC_CONFIG_AUX_DIR(admin) # setup automake AM_INIT_AUTOMAKE([foreign]) AM_MAINTAINER_MODE # System checks. AC_CANONICAL_HOST AM_ICONV # Optional features AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [build with debugging. (default=no)]), [enable_debug=yes], [enable_debug=no]) AC_ARG_ENABLE(final, AC_HELP_STRING([--enable-final], [build with optimizations and no debugging. (default=no)]), [enable_final=yes], [enable_final=no]) AC_ARG_ENABLE(profile, AC_HELP_STRING([--enable-profile], [allow profiling (default=no)]), [enable_profile=yes], [enable_profile=no]) AC_ARG_ENABLE(profilefn, AC_HELP_STRING([--enable-profilefn], [allow functioncheck profiling (default=no)]), [enable_profilefn=yes],[enable_profilefn=no]) # Checks for programs. AC_PROG_CXX #AM_PROG_CC_C_O AC_PROG_CPP AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_RANLIB PKG_PROG_PKG_CONFIG AC_PATH_PROG(LSB_RELEASE, lsb_release, no) # docbook2man utility AC_ARG_VAR(DOCBOOK2MAN, [Program used to process XML man pages]) AC_CHECK_PROGS(DOCBOOK2MAN, docbook2x-man, no) if test "$DOCBOOK2MAN" = no; then AC_MSG_FAILURE([Could not find a program to process XML man pages]) fi # Check packages needed PKG_CHECK_MODULES([ICU], [icu-i18n > 3.6]) LIBS="$LIBS $ICU_LIBS" # Set default language for tests AC_LANG(C++) # Checks for libraries. # Checks for header files. # need to check for icu .h files as in unicode/uchar.h AC_CHECK_HEADER(unicode/uchar.h,,) # Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN # Checks for library functions. AC_CHECK_DECLS([program_invocation_short_name],,,[[#include ]]) # Setup the build compiler flags and linker flags. # Enable debug if test "$enable_debug" != no; then CFLAGS="$CFLAGS -O0" CXXFLAGS="$CXXFLAGS -O0" test "$ac_cv_prog_cc_g" = yes && CFLAGS="$CFLAGS -g" test "$ac_cv_prog_cxx_g" = yes && CXXFLAGS="$CXXFLAGS -g" CFLAGS="$CFLAGS -Wno-unknown-pragmas -Wparentheses -Werror " CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas -Wparentheses -Werror " else CFLAGS="$CFLAGS -DNDEBUG" CXXFLAGS="$CXXFLAGS -DNDEBUG" fi # Enable final if test "$enable_final" != no; then CFLAGS="-O3 -DNDEBUG" CXXFLAGS="-O3 -DNDEBUG" fi # Enable profile if test "$enable_profile" != no; then CFLAGS="$CFLAGS -pg " CXXFLAGS="$CXXFLAGS -pg " fi if test "$enable_profilefn" != no; then CFLAGS="$CFLAGS -g -finstrument-functions " CXXFLAGS="$CXXFLAGS -g -finstrument-functions " LIBS="$LIBS -g -finstrument-functions -lfnccheck " fi # Find distrib codename AC_MSG_CHECKING(if already have REL_CODENAME) if test -z "${REL_CODENAME}"; then AC_MSG_RESULT(no) AC_MSG_CHECKING(if have lsb_release) if test "${LSB_RELEASE}" = "no"; then AC_MSG_RESULT(no) REL_CODENAME="unstable" else AC_MSG_RESULT(yes) AC_MSG_CHECKING(if LSB_RELEASE is empty) if test -z ${LSB_RELEASE}; then AC_MSG_RESULT(yes) REL_CODENAME="unstable" else AC_MSG_RESULT(no) CODENAME=`${LSB_RELEASE} -c | sed -e 's/^\S*\s*//'` AC_MSG_CHECKING(if release is sid) if test ${CODENAME} = 'sid'; then AC_MSG_RESULT(yes) REL_CODENAME="unstable" else AC_MSG_RESULT(no, ${CODENAME}) REL_CODENAME=${CODENAME} fi fi fi else AC_MSG_RESULT(yes) fi AC_SUBST(REL_CODENAME) #CXXFLAGS="$CXXFLAGS -DGR_NAMESPACE=1" AC_CONFIG_FILES(Makefile \ doc/Makefile \ preprocessor/Makefile \ compiler/Makefile \ compiler/Generic/Makefile \ compiler/Grammar/Makefile \ compiler/LZ4/Makefile \ test/Makefile) AC_CONFIG_SUBDIRS([test/GrcRegressionTest]) AC_OUTPUT grcompiler-5.2.1/doc/000077500000000000000000000000001411153030700144225ustar00rootroot00000000000000grcompiler-5.2.1/doc/CMakeLists.txt000066400000000000000000000013031411153030700171570ustar00rootroot00000000000000project(docs) find_program(DOCBOOK2MAN NAMES docbook2x-man) configure_file(gdlpp.1.in gdlpp.1 COPYONLY) set(DOC_DEPENDS ${PROJECT_BINARY_DIR}/gdlpp.1) file(GLOB DOCS *.pdf) set(DOCS ${DOCS} README.gdlpp) if (DOCBOOK2MAN) add_custom_command( OUTPUT ${PROJECT_BINARY_DIR}/grcompiler.1 DEPENDS ${PROJECT_SOURCE_DIR}/grcompiler.1.xml COMMAND ${DOCBOOK2MAN} ${PROJECT_SOURCE_DIR}/grcompiler.1.xml) set(DOC_DEPENDS ${DOC_DEPENDS} ${PROJECT_BINARY_DIR}/grcompiler.1) endif() add_custom_target(docs ALL DEPENDS ${DOC_DEPENDS}) install(FILES ${DOC_DEPENDS} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) install(FILES ${DOCS} DESTINATION ${CMAKE_INSTALL_DOCDIR}/${CMAKE_PROJECT_NAME}) grcompiler-5.2.1/doc/CompilerDebugFiles.pdf000066400000000000000000000706461411153030700206360ustar00rootroot00000000000000%PDF-1.5 % 43 0 obj <> endobj 48 0 obj <>/Filter/FlateDecode/ID[<2CA02004ED21184D80AF8C3C71876A89>]/Index[43 17]/Info 42 0 R/Length 49/Prev 28724/Root 44 0 R/Size 60/Type/XRef/W[1 2 1]>>stream hbbd``b`* @ H0_v$&3N` endstream endobj startxref 0 %%EOF 59 0 obj <>stream hb```f``e`b``ae@^ 5Ua. i d XĀ@!lP4100s00]Ҍ@ u> @/+ endstream endobj 44 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <>stream hޤmo0ǿʽ^P?q"UHЖnڡ&Z'U}Q"%}G2>3wIQ mAH*@+ RΆW p&bpb8=%O21־Lfp3YU;s9k5CLښkjhsG3's?$;+m+`$t $ѻJHinY@3rm|2sݺFdVdDNegv w4_Y&cn~Up:bjm+r]pSmIVdEB%D؞c:ߘ&?NFcK_!/6/'eodzn*A]oY"/vm˳̪㎂?s(R9;X7û|GB b1RD1;ogE)Da(IQE?{H~}&.}x}[ cۛaq5g[ڐ?EW8VϜ\UOe@L+~r_=yVx̻}.P=*j[,Zi^Q RwBk#v$!?jQb0# +@-[VHUqjKzzסz~aߓO_}|Ilt' [ 0. endstream endobj 47 0 obj <>stream hތXێF|h yh#~7b¾#Hn(Ra|9MJ50Fu\Tś?67/6f~@Ĺbs Du fEkyoX7ǦUV|Jmo:%D~e!NټAuf܊web-[E|&8\ib!HI!G& j[SD_jp٥6tAj{,'$7;.)z>w]EOC?):l7"{U +&A7N|tvO=R}v/E$Ж%֘yn.枠3InAqLC~7mGBC!P"K0|ې$8v m¡Ue~&jG'OqVpQy,c͉`g,ҘMrs^9mى{%jf@l:DP8[5`*v8MWr$r'$>}ƶl'./=6nThQ5|FYv~}N="v' [vԷ_j(&oǒ6U#B=4QU+t,GBIm1%j599%QyD)?s·;:A0V'ðG rIop/KD\_Ѧ |T8 3m+quDU7"!{:/ϗrW\j͜w3F`YͨY*AB >aX#} I^i!W2uf.v*J_~hmM8K)IoY=ptGMoݍpqa0Q`"c RŨ`(BI8"^Ҝ@Yj3mƩ>gmdFO"pcDSֽ6Y߭TCW,/|:d<+Gq†L&Ճai]~bwy+wΥE|/i63nw^$qxg/ƚ//n,o_/hgݸPIxD"^he %bW54B>gj/]\0j *:3ZD Eˠ98\vh753$Ν̈́l7ڠpD&4CWمY|sPWlq :۩]f뗌 cl#u [gynp$ޛ55ZSϷBioI,ʍ&ϟ|ƕc+| 2p|KKekUC/!ձHEb8I/O`3 f쇝 =NU@HVV;^״Y24aPK/tYz)N~6H[:[/)qOʭ*i쑑s7 =.oIK@~˸Q<{,[I.3Nwsi}WX[%GnVokS}Ja͝ pn6ǰvX2ic90.pG[]?F֡2RR3i*Gſ67` ; endstream endobj 1 0 obj <> endobj 2 0 obj <>stream hެZkB+F|q[EҢXXsI3j̽]mS4HZis_~mWU|\Ko%WRE$jusTۋ\Z* y]5hM{j)w8ay--W"R-"G;*P]MDX\fdby>HF-}2D]ѵ l:]ח%2\.3txy@HA eH}E9mM6΃NRbOͶ>zKyQZv,IzifDjWj0~ji7]bV#SSZrڂSm&H&oi|3~m޼z89JznZ7rVǡQ#%dEjUؙ;;7rڴ?ͷ*Icl-E7}vu}+Joy}k|Ի ?[Q6NbD*7&#CG}*T|ڋl;X /^$#?:"I>Z3&b["MrUBFy֫Vd! ğMӉyni~ '__-wd X1 ]%PpfwS5IEm CH_֦Z:ki(τQ3y6,JJM&Wczϧ4̱NB9 DBDȁ֞GO zkoy7M8͑dN:@ϱ_2[ Z),U5ѻ6%>l݈K=62ͪ?IH-u"kg$gYX >y*ж6kdϫj4E+V,,N\PDhٶ 1˜o7 AUFqlPl3pܥ,X)2=BҒ~ .~3d~LL;ԺxN$7cG&U4C{!*0ȚF#/1V P0phGK:N_F MR3٣e8z4 `U] ]t~i#r/O,1ʥGA bkݔkE8tP `fuƃFy^H*蠂@ fSOaBsh MȆ 5Ծ豖7j,p:t  vєHG*#諚.\Fhµt)CY(EF!  u/)caY|0 ['ED|$?|)ۢA>?uHTnP }lcJ˙臖!dBiD=vpkM{:0uWmKѢ9 5| ISI&X*2xyIS[y"W}/5' ޽赨[e{ mCe=;GGΖf|% O /43kxho][,%0 d*lcY{]L] & ,Љv͗=u_׼ʡ_oe@&i06U{\4S7[ԾĔUYA]f?Oф-%L{iaE|a~$[H$5jSΘA xnG~wMQλj5G@(s>jL>NJO٦i X(p{8_Uj<]s+-n!#0ۼw LR]]GU+ endstream endobj 3 0 obj <>stream hj`@ 0@ endstream endobj 4 0 obj <>stream h8ktSGz+]?1W^[~ dK!l%#H1cR/ lr M͒\Hmf49Kݓip<8)!M}͵pp9o||3s5@ ܕ_|%/! jIʯ1C:G:ZwȏHYA?>!QtDӾ˪@ouvPMlM3 u[;`6 y$ q3Qh)L %F]_+|}L|x,+ZqW@6LdhWHMż$4>9p/rxYR0P0 vh dOaȅpʄL kR(']`O 8F,`+P9)E x؀',#+d0Bs\Nx>)&co`fl?sTa?2a&fg2n!,Rۢ:$bΘ=6ΦzH=T40#d o5l`?Y<GFI;9O>Sh?='6 qF-nbD0c}p?zC3[la,",#MGBߢ_,2/]=$;<֨ݏ$Xx\ZC7l O~Ħb=a .aCs"1`Xrl$md9L^$QrJ> 7BѕnCTz^Y3d߳?7 ~C.<& aLQV,ţO9iZ֬خaglr!ӈV9[n<{=*ހ7q~s7I>Ym-S/Ey!g 81^t\ p%du^_ewʅFaW O / \B aS3+Cae RtUSD7>OL$K2ש&G'+PI@-)f8.&YCZ:6=͖b\a%b2*(v׼d*1,P B&2a|zK*r) c钒gyV} WEJn6K㢗Lz;'vdFGmwj= /w,} V[#O7Eyr{juWW}t ̟7Rܜ9]f9{Y3ҦNKI6%M' (BR\**Kq^(l>LliEoXZ-$WBeQPd]d*WV?zruf 2f3zȎvPzCNj$*B' :C鎐UD' Gy4R3CP<8-j*Þe6{ URPUPj$nzP0r#á&hY[z^#قq\NSj=ީb!GzPAY=s{@_S a臱N>G%0gg5>&YSj&MfH>`fuH{2rQjugFR!w**gLFLㅍLMS$:9l,)pGr@L< ΩwRJ /A/WCL\U1Ǥȡwч%Đc 8^CmZXԂEc]T6$#A#-/|DЌڿ3М5W>kok&} /uU)w/ɔ6^PN\#;BXmIܸtBiEcb7 cxU! n%ܕuɷtƛMv{kXje2_1^baB.u׆Btxk" ٿ*b%]k=C&w{)od5Wrca /A)V s_R1j 1%Hq3\%/(؛8Cc7 ,aq~> 0O)Ci/i@_ `=mk#!.qױ 8x 7aR[Ipg 2\ğ#ܔ@}pncZyib%l՘K"\ehqn(k|Z5p9x*bP.& w!lb:__ǘg v߰ Ru 19>ѿqZ=Rq ?1c03NQ!jt&uũy" xQFr{D}Y1hfŰ i)Ueuo|nq6d;$=ُԅҰ. siXR9],:,/9e;c%>DzfYX.,@;zF Ub#ߢ6'ڬ6{4G &{v!( u(iC qxqGl6|= jcS4!—e֤0?+wDgNA"[ppT~0g<SPԀe6@3҆i`J|dFhUXgx`f )4`QY?Z`YYoJ.H6'瘓mܒ-_ΰ} } `FN[!s!#q'f> T4o.I5(w޽pтiÏ<~x8Yk&/_`wQr㴀}1ڀP BrQx(FMl1T1F3ob`?\ߵErm-rwgX{ed씛:{Mm{};YnV 8uÿ zbV2"iQޡ[(Db?Ɇ#u"nBIz6 "m/-+fh:Q֭`;r~n6k1 &(H},z8{cRg,I|KLԴ*骔W<#St endstream endobj 5 0 obj <>stream hTP=o0 +>stream hdQ]k@+r(ilZ1>N@ w/Q qsss{AK ͬ ^%> endobj 8 0 obj <>stream hތYَ}ﯸd qDQS2O $)Rr/f|oN-rmomN]hNwO_vK)\Y|Jf .O szE]Ɵݞ{|S]yakcw'_JU !e ,7r==U֞Lu}c/{KẌ́TA*R#VrsZW%tk[3"" .KE$K@PcYlۼ$74m4;m~oӿ%h?^BM:a+9o>5͹5=[|I`]|亭'ji:`IkkN5N9cU `=uM&0W蠹;i:Ҙ.Khܡ85VtBt 3[NpD=~EVZ5sM$8«m`z*̈dȎ8xa(Oݴgp'N+p+WoII-Eiv*^gCj~*!0onyy#CE^.z}i=G pMKMk::"PMbMKN 9}[X{l{=Sril6JlKh] ":y`!TN3NJ=Rݖd˪(la9dj&isZt@MIS ZoiVUJeTsI,Ꚍx5kN@+\mic~1rKuQ.NhO&G(KZ@xlbR8#ȇ!ޒq޲K]FFNV$`ST-'FLzfo db` b;{>ҩ 5iTPlSi5&9a I&ZԉFeԿGf-[-jbZWmpo)uW={ bSF'ϩOr;vE"?xC.2Q,z|FUN9|Q] 棵W8yаK~iQHaMA ^\e#yr}p(ऋ$鐎p{3;[W>K!4UOpU ܬqx]{&pJJY%_#]\# =CM 0^T婏bk9b1 s{"l[p;|zō׫)LSuuF=`6I\5:9: (I ]z-j}^20uA62H =v}ȏ"H?S%J"Ь]H FƯvw˲j8pܼjmUy7FQo3Hܸs%^y% 7Ea:$ƀizkzwY~DT*>r$AR>WWȏ U *,0WCo9έUjk'N}ؤS=cG]CYcMj?d,k|g}pӕ9-OVr>  +FwHi!eH2x !F렂Xh|7h?9iM vr(CDQc*¿ęQ$?Y!QQ/+ʽCEwou޶HUЍ {ɍ7x@'T(1py6ptwoX^S}/ΎLS)y yhET4lEM |ɡ矏0'3+Pݭ+|h@xXRaYޫ['%YeɑLa;]_gގ4Gm4YQf: #Yan#XÏ /GJdiӺeI22hϾ4,jB՝^end%dI =;)cDX?xiL#4OЂˋ}DۗR] <|8' 7vbSG _MWW7bp2 -`ZB >Cja򍏑}dzD-GjIY;2ȵ$@/)m%+:vL>9o]Ń-eq~sP$I+{U#nܖx|${o@!a D?LP a*-Oʃ¡qҖ:?v7]b Rlrfx5 B4z1ܢCqP s/?Q/§6>9>1QU{g%t 5xzu ~ ֲhpnǞyWOisn}h$T'Eiz'?f(܇<Â^~Ϋ}'0mXœ4u}t=&#Z/?Sx4foꉫxu^4LĬFOg`pǓ%lxd>@# rYa>Wôhy(hAHS~Z@D'{Yf?:"p斂vbx|qi`*~Jt? ~ĸOHB8dgc0  U4I/9 #.Ӛ`ξ-Oy)1|/x$ kǟ}uSGTF{J&wӴjA==d,LlYی^Ś*=D#@s %7 '".7 -|KZL^*ܓ}ͫZ;A?~3zBtbe U׎^9(bJrPeܑ"YwAw0JONx0{a'X@O{'*t~PT&anݹ((EpG^V1+8 =gD .Y'_?Ov%y"a$ sݒdt귻 04 endstream endobj 9 0 obj <>stream h2P0Pw(q.I,I݃ L Avvny%@#S#i`je)AU'D釤V endstream endobj 10 0 obj <> endobj 11 0 obj <>stream hބYێF}h /Bbx)ef1622:-74W]zm ).$0z4t;-#9iD =OedS=u[qI㽩 "zr.D pAx D{]ud3iR2 NǨ: -¥zVu r;Xu;+ѐERj {'o5ub3GP ]N\p0e [ҿy}w=KLonN'?c$<#˼`od 5K8謱iϻix6ʠou6 COdIN.jZ8r"fPu"˗Z͊uڏ$S&u?=+qL9m!Y @5ұc[n96k6ʦ(EN1֗=9 cg{™2a;[-)S5Te F]Xt\)2^dI%Jͷ+^MnJǶggX`Uw½9$ G40l!,:j)#rQ>t7N ~r=Jœ!"ϞX%k}V9FMC eG/<4d1>De3;Y lLDsR˲>B3FXGn#>] \,X:^ \kɚ-t8h#[=w,T<KxRO{ 7.$EXy_qd Yhjj ,K4Br牉|r(b+;mIJeqD+(=2Yak9IdI0z|p׸dzBB2ཚz=_xf5 =Բ3 6l p4. ȅ?Lr*Acrڑυ#?pOf厬=?謓 X39[5Ixq & zz) U {A7S~Sk}q&>:u7Q'D5%,;a/E2.4)f%='rb9#Ha1)y @RU^S' 8ߓ ߠ07S+)|Ϭ+$ i9{yܾX~{0 ;TlP ?~k̗uo꼢ӂPLy.?oE.%=wCy޽wCM:oU9]M#ǴxbBE'?\"@s{ N?!rdѥRmYw, Y\([tbDœ*! щx6._hg`ƨ@G=Cbvʥ{m endstream endobj 12 0 obj <>stream h,̽ @Woq*]%ݢ!5!gq#:L }hJqXI ' v\`i NB endstream endobj 13 0 obj <> endobj 14 0 obj <>stream hޔXr6 ;xZn;١%H.EjE*v Ѝx.\|7?1o'7 'LS'"Rj`L}d2o'?6zՊ+W,W2KJ=l=?'A/z "^&W#c.FcAF! =r>:42%:C bt0̕1 4烿z:RhA`x%\g^4P1h$]ZT?Jv+aDَ\@Aܙ?fd;qVr@r[0'n;@H]|}\RuX>Vi=N51ԆJͬlāfeFCX iyatJ!܆vV8FCV uE$`Y*I ZfXJs == WqJr/sʪ};2ER>wbaຜ·|)ɄçFç^E7OӦTCg61Pj ʀn(7I폵zpho;s tkhsX4g|Z-7w ;IEc_$4߭G]G >rSt(u:fT&Ihg~bT%dȟſy:+^UOxd>XnEf:W&~| |9ho!!"b섘a/?2Q#ތ(p5ڹRXEӷ}|[ȵvoIn*nYK 'lEa[hj3+մ&U_gfdiMlQL'⟐e6]&?-T벘U.ɗgtee&_ X2ߞ<矝OL ,bChf2Gc`uf>pE`2 ۚ9 } df;^lŸΰHlY ,jQ2Y1ƹ-uViDjVs/SSI] {5W7p0\TQr֌,IY@ p:J$7(xiroBQrSzAA~nccgb7%"M"-­tZ%tؘzᾲ9ŸCLjV96|'!$?-Ü'NjήG; ‚uqe<[@#,> zyYכd]:ѥkZ}K|X+0^^ofCHcΟ1d~>.f9 XE=PU {cج7t>U}>8%?Vٱ=/U3s:MC2 Ew7Щ/im9RF 5<8|_:&NeIYT 03i[GqBtSoWj]{ h[`V endstream endobj 15 0 obj <>stream h,; ѫ .6J%Bg,ld)HBߩ(DV%րi-:>ߥ!Em>Y endstream endobj 16 0 obj <> endobj 17 0 obj <>stream hެXYo6~ $+6 &=6~hQ YB In~ )K!E)O^KFNGT1ɦ\(&ࣩX0/A`ˑÅ.DMa*j]gyV2 l_;XWӷ(3R\)Q}Jqee}X؎X~ƈ]LjƨqI*RBzޯ؂ne `KǴv5IqPJE2-4O66dd7+-R0x2Ddg.v~9Vn{{g.bLw[or#29ͤ~WE6ʏ&i#ǧlz^`"For]s7CMQfL{FS}on6ΖH7]"ގ nל=R:VSf=E#0Uj:;Q3OtE`)6,eֱWGc|Ri"O13{on)nx,n^wzS_ʖowP Gq?3b2~)NaB Ϫz]uvY`ƽV ni87CԮS֗c u F؄}a/"&vҊyQTOވjܛ*˙3ik/`NT|B*_Ŷξ}D̃GJ;˓4sVE>V0+1d 8D:.$JcSkuW=; cB<]~u3QA~QR~|fwm7BF70Tg~{T8p.&K3^5<3gK3e4ez]u=).Jk=0I;raa[+$o@smzìÝ /![5c0*le9Y;Z\ZkۃۡEO?=2w`Y3LlBmO$=3XP"dܯb70VW4s %HCИAM=575*yv ol@ɇGB8g[(8s*+R8h`s4%{\[CKP0}^cw,.5C2^6C>`紜s4х`}eh^JA$}}Y^9L ˉf4HCDkL)[hMxKZ{Ј:l1l 5א">L9zͶJ V/ rmS|jI̼BC*KvBc  }s(3n\hE,ʑ@/ '--hTIWҕeqn-`1u:LkIS9Z{۷1=]$Z?Ť0,$(õ:]D @tj)REs|6*i@!Sb*eByS`JHG+5;gϋ`}m/ endstream endobj 18 0 obj <>stream h4̱ FW@zk U-"\ =~ }ᐁ8\Wr_RZJFjo k`؃v }, ӢR~ew`0G t endstream endobj 19 0 obj <>stream hUik0+qūˇ $kZhdj"`+@8a#hFY! c <AX f4xX=1_Z\`g4Ou]ޓ;]e2z2䬋aGomWX. *~7vaG4tױӔ9 qoDʮ[,I#)o\ OYZm{y}`1 endstream endobj 20 0 obj <>stream h2T0P01P0T+- bB.vv endstream endobj 21 0 obj <>stream PScript5.dll Version 5.2.2 2011-10-03T13:31:07-05:00 2011-10-03T13:31:07-05:00 application/pdf Microsoft Word - Compiler Debug Files.doc Correll Acrobat Distiller 9.3.0 (Windows) uuid:84036fcd-e946-40cf-a14f-91da4edda4de uuid:fd4110bb-2f65-4a38-b6ca-0cf20b53a8b3 endstream endobj 22 0 obj <>stream h21T0Pw/+Q0L)61 )IsBC(3RYZlg`4 endstream endobj 23 0 obj <>stream h|̱ 0W[Riq+]&j _ ng,Ģ"fL+}t4}eFukܬH_y`7Bj9, L ''&3a`j2lU:Ѻ;tR[@-Tܗ6? r0NjE- endstream endobj 24 0 obj <>/Filter/FlateDecode/ID[<2CA02004ED21184D80AF8C3C71876A89>]/Info 42 0 R/Length 114/Root 44 0 R/Size 43/Type/XRef/W[1 2 1]>>stream hbb&F)& w "`:mM@{=ubq\A @. \!wH#`"PFT%_0hp endstream endobj startxref 116 %%EOF grcompiler-5.2.1/doc/CompilerDebugFiles.rtf000066400000000000000000001372041411153030700206520ustar00rootroot00000000000000{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f28\froman\fcharset238\fprq2 Times New Roman CE;}{\f29\froman\fcharset204\fprq2 Times New Roman Cyr;} {\f31\froman\fcharset161\fprq2 Times New Roman Greek;}{\f32\froman\fcharset162\fprq2 Times New Roman Tur;}{\f33\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f34\froman\fcharset178\fprq2 Times New Roman (Arabic);} {\f35\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f36\fswiss\fcharset238\fprq2 Arial CE;}{\f37\fswiss\fcharset204\fprq2 Arial Cyr;}{\f39\fswiss\fcharset161\fprq2 Arial Greek;}{\f40\fswiss\fcharset162\fprq2 Arial Tur;} {\f41\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f42\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f43\fswiss\fcharset186\fprq2 Arial Baltic;}{\f44\fmodern\fcharset238\fprq1 Courier New CE;}{\f45\fmodern\fcharset204\fprq1 Courier New Cyr;} {\f47\fmodern\fcharset161\fprq1 Courier New Greek;}{\f48\fmodern\fcharset162\fprq1 Courier New Tur;}{\f49\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f50\fmodern\fcharset178\fprq1 Courier New (Arabic);} {\f51\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red96\green96\blue96;}{\stylesheet{ \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{\s2\ql \fi-576\li576\ri0\sb240\keepn\widctlpar \jclisttab\tx576\aspalpha\aspnum\faauto\ls7\ilvl1\adjustright\rin0\lin576\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{ \s3\ql \li0\ri0\sb120\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{\s4\qc \fi-864\li864\ri0\keepn\widctlpar \jclisttab\tx864\aspalpha\aspnum\faauto\ls7\ilvl3\adjustright\rin0\lin864\itap0 \fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 4;}{\*\cs10 \additive Default Paragraph Font;}{ \s15\ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Body Text 2;}{ \s16\ql \li0\ri0\sb240\sa360\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 Title;}{ \s17\ql \li0\ri0\sa60\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 Subtitle;}{ \s18\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 Body Text;}{ \s19\ql \fi210\li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon18 \snext19 Body Text First Indent;}{ \s20\ql \fi-200\li200\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin200\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 1;}{ \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon18 \snext21 Paragraph;}{\s22\ql \fi-360\li360\ri0\sb360\sa60\keepn\widctlpar \jclisttab\tx360\aspalpha\aspnum\faauto\ls3\outlinelevel0\adjustright\rin0\lin360\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon1 \snext19 Outline1;}{ \s23\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext23 ParaContd;}{\s24\ql \li360\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Body Text Indent 2;}{\s25\ql \fi-576\li576\ri0\sb180\sa60\keepn\widctlpar\jclisttab\tx576\aspalpha\aspnum\faauto\ls7\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon2 \snext21 StepWNumber;}{\s26\ql \li432\ri0\sb60\sa60\widctlpar\tx864\tx1728\tx2592\tx3456\tx4320\tx5184\aspalpha\aspnum\faauto\adjustright\rin0\lin432\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext26 CCode;}{\s27\ql \li720\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext27 ParaIndent;}{\s28\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 header;}{\s29\ql \li0\ri0\widctlpar \tqc\tx4320\tqr\tx8640\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 footer;}{\s30\ql \fi360\li720\ri0\widctlpar \tx1080\tx1710\tx2340\tx2700\tx3330\tx3960\tx4590\tx5220\tx5850\tx6480\tx7110\tx7740\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 Body Text Indent 3;}{ \s31\ql \fi-3600\li3600\ri0\sb360\keepn\widctlpar\tx1800\tx2520\aspalpha\aspnum\faauto\adjustright\rin0\lin3600\itap0 \b\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 ClassName;}{\s32\ql \fi-360\li360\ri0\widctlpar \jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 \sautoupd List Bullet;}{ \s33\ql \fi-1440\li1872\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1872\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 AttrDescription;}{\*\cs34 \additive \b \sbasedon10 Strong;}{ \s35\ql \fi-720\li720\ri0\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls7\ilvl2\adjustright\rin0\lin720\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 Comment;}}{\*\listtable{\list\listtemplateid-443674218 \listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \s32\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-119}{\list\listtemplateid1943585380{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s22\fi-360\li360\jclisttab\tx360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'04\'00.\'01.;}{\levelnumbers\'01\'03;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-432\li792 \jclisttab\tx792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-504\li1224 \jclisttab\tx1224 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-648\li1728\jclisttab\tx1728 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-792\li2232\jclisttab\tx2232 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;} \chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-936\li2736\jclisttab\tx2736 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers \'01\'03\'05\'07\'09\'0b\'0d;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1080\li3240\jclisttab\tx3240 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1224\li3744\jclisttab\tx3744 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1440\li4320\jclisttab\tx4320 }{\listname ;}\listid184250857}{\list\listtemplateid67698711\listsimple{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00);}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1337146905}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1487355350}{\list\listtemplateid616584080{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\b\i0\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s1\fi-432\li432\jclisttab\tx432 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s2\fi-576\li576\jclisttab\tx576 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\b\i0\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s35\fi-720\li720\jclisttab\tx720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\b\i0\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s4\fi-864\li864\jclisttab\tx864 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1008\li1008\jclisttab\tx1008 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1152\li1152\jclisttab\tx1152 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1296\li1296\jclisttab\tx1296 }{\listlevel \levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1440\li1440\jclisttab\tx1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;} \chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1584\li1584\jclisttab\tx1584 }{\listname ;}\listid1506630628}{\list\listtemplateid-1934717386{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'01\'00;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-432\li432\jclisttab\tx432 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'03\'00.\'01;}{\levelnumbers\'01\'03;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-576\li576\jclisttab\tx576 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-720\li720\jclisttab\tx720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-864\li864\jclisttab\tx864 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1008\li1008\jclisttab\tx1008 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1152\li1152\jclisttab\tx1152 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1296\li1296\jclisttab\tx1296 }{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1440\li1440 \jclisttab\tx1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\chbrdr \brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-1584\li1584\jclisttab\tx1584 }{\listname ;}\listid1717271031}{\list\listtemplateid67698711\listsimple{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'02\'00);}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid2020767601}}{\*\listoverridetable{\listoverride\listid1337146905\listoverridecount0\ls1} {\listoverride\listid2020767601\listoverridecount0\ls2}{\listoverride\listid184250857\listoverridecount0\ls3}{\listoverride\listid1487355350\listoverridecount0\ls4}{\listoverride\listid-119\listoverridecount0\ls5}{\listoverride\listid1717271031 \listoverridecount0\ls6}{\listoverride\listid1506630628\listoverridecount0\ls7}}{\info{\title Graphite Compiler Debug Files}{\author Sharon Correll}{\operator Sharon Correll}{\creatim\yr2003\mo4\dy28\hr16\min56}{\revtim\yr2003\mo4\dy28\hr16\min56} {\printim\yr1998\mo12\dy16\hr14\min31}{\version2}{\edmins0}{\nofpages2}{\nofwords1753}{\nofchars9993}{\*\company Summer Institute of Linguistics}{\nofcharsws12272}{\vern8247}} \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl \fet0\sectd \linex0\endnhere\sectdefaultcl {\footer \pard\plain \s29\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\b TITLE \\* MERGEFORMAT }}{\fldrslt {\b Graphite Compiler Debug Files}}}{, Page }{\field{\*\fldinst { PAGE \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof 1}}}{ of }{\field{\*\fldinst { NUMPAGES \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof 1}}}{ \par }{\field{\*\fldinst {\fs18 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\fs18\lang1024\langfe1024\noproof Sharon Correll}}}{\fs18 , }{\field{\*\fldinst {\fs18 DATE \\@ "dd-MMM-yyyy" \\* MERGEFORMAT }}{\fldrslt {\fs18\lang1024\langfe1024\noproof 28-Apr-2003}}}{ \fs18 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s16\ql \li0\ri0\sb240\sa360\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst { TITLE \\* MERGEFORMAT }}{\fldrslt {Graphite Compiler Debug Files}}}{ \par }\pard\plain \s17\ql \li0\ri0\sa60\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst { AUTHOR \\* MERGEFORMAT }}{\fldrslt { \lang1024\langfe1024\noproof Sharon Correll}}}{ \par Version 3 \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 1\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Introduction \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { The Graphite compiler outputs several text files that can be helpful in the process of developing a Graphite font. Specifically, if the renderer is giving unexpected results, the GDL programmer can examine these debugger files to see whether the compiler is generating the expected output. Together these files create a textual representation of the bulk of the information in the Graphite font tables. \par The compiler generates these files when the /d switch is passed as the first argument. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 2\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Parse tree: dbg_parsetree.txt \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {This file shows a parse tree reflecting the syntax of the GDL program. \par The line numbers refer not to the original source code but to the file \lquote $_temp.gdl\rquote , an integrated source file resulting from running the preprocessor over the program and handling the #define and #include statements. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 3\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Glyph attributes: dbg_glyphattrs.txt \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {This file contains the value of all the glyph attributes for all the glyphs in the font. \par The first section contains a list of the internal IDs assigned to all the glyph attributes. This list includes the system-defined glyph attributes (breakweight, directionality, *actualForPsuedo*) as well as the programmer-defined attributes. \par The second section lists all the glyph attributes whose values are non-zero. Any unlisted attribute can be assumed to have the value 0. \par The \'93*actualForPsuedo*\'94 attribute is a special system-defined attribute that contains the ID number of the glyph that should be used for the final rendering of any pseudo-glyph. This attribute is zero for all glyphs that are not psuedo-glyphs. \par All values that are glyphs metrics are based on the design units of the font (the font\rquote s em-square). \par Implementational note: any gpoint attribute whose value is actually 0 will have a special value recorded, since the value 0 is used to mean \'93not defined.\'94 This special value is shown in the \lquote dbg_glyphattrs.txt\rquote file as \'93zero.\'94 \par }{\i Debugging Tip:}{ the dbg_glyphattrs.txt file shows only glyph attributes, not glyph metrics. To include glyph metrics in the file, define a glyph attribute that is exactly equal to the glyph metric of interest. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 4\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Character/glyph mappings: dbg_cmap.txt \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {This file shows the effect of mapping a Unicode ch aracter to a glyph ID. This is equivalent to the mapping in the font\rquote s }{\i cmap,}{ with the exception of pseudo-glyphs which are given a mapping generated by the compiler. \par The first section of the file contains the character-to-glyph mapping, and the second section lists the reverse mapping. In both sections pseudo-glyphs are marked. All values are shown in hex. \par Items marked \'93[auto-pseudo]\'94 are pseudo-glyphs that are created by virtue of the fact that there are duplicate mappings to a glyph in the font\rquote s cmap. (This behavior can be turned off by the directive}{\f2\fs20 AutoPseudo = false }{ in your GDL program; see sections 3.2.1 and 7.3 in the GDL documentation.) Any pseudo-glyphs that are mapping Unicode values not present in the font\rquote s cmap are labeled \'93[pseudo; not in cmap]\'94. \par For pseudo-glyphs, this file reflects only the initial mapping from Unicode character to glyph. The *actualForPseudo* glyph attribute contains the final glyph ID to use for rendering the pseudo-glyph; the value of this attribute is shown in the \lquote dbg_glyphattrs.txt\rquote file. \par The second section of the file shows two special glyphs that are used for internal processing. The item labeled [line-break] is a special glyph that is used to indicate the line-break \'93character\'94; it corresponds the \'93#\'94 item in GDL rule s. The item labeled [phantom] is a non-existent glyph that is created by the compiler to facilitate rule mapping. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 5\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Finite state machines: dbg_fsm.txt \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { This file shows the finite state machines that are generated for each pass. The finite state machines are used to match the input and determine which rules to fire. \par For each pass, the file first indicates the column to which each glyph is assigned. Following that is the FSM table itself. The rows in the table are the states, and each element in the table is th e state the machine transitions to when an item assigned to the given column is encountered. A value of zero means that no match occurred; the machine has \'93jammed.\'94 \par The state number is followed by a count of the number of slots that have been matched at this state. Each state also contains an indication of which rules are in the process of being matched, and which have been fully matched (the \'93Success\'94 states). When the FSM runs, it keeps a list of all the success states that have been encountered. When the machine \'93jams,\'94 the rules associated with these states are candidates for firing. The longest rules are tried first, in the order they appeared in the source code; the first one whose constraints succeed is the rule that is fired. \par The rules for the pass a re listed following the FSM table. Keep in mind that there is not a one-to-one correspondence between the rules in the source code and those generated by the compiler. Specifically if a source code rule contains optional items, there will be multiple corr esponding rules generated by the compiler. The overall order of the rules, however, is unchanged. You may need to carefully compare the final rules shown in this file with the source code to determine the exact correspondences. \par The rules may be shown in a s lightly different form than they were expressed in the GDL program. In particular, some rules may have ANY classes inserted at the beginning of the context. When ANY classes are inserted, you will notice that the effect is that each rule in a given pass h as the same number of items before the first underscore in the context. (This is an implementational trick to ensure that the engine has a consistent reference point from which to begin matching the rules.) The rules as written in the \lquote dbg_fsm.txt \rquote file are also abbreviated. \par If you are having trouble determining why a rule is not firing as expected, this file may be helpful. On a piece of scrap paper, write out the underlying characters in the problematic text, and below them write the glyph IDs (from the \lquote dbg_cmap.txt \rquote file) followed by the column assignments for each. Starting at the critical spot in the text, step through the FSM table, transitioning to the next state in the table for each successive column in your input. (The slots-matched counter should increase by one at each state.) Keep track of each successful rule you encounter. When you hit a zero element in the table, the machine has \'93jammed.\'94 Compare the order and length of the successful rules to make sure that an undesirable rule isn \rquote t being fired instead of the one you expected (use the \lquote dbg_ruleprec.txt\rquote file to determine the precedence of the matched rules). \par However, keep in mind that your list of input glyphs may not be in the state you expect, due to previous processing in this pass or a pre vious pass, and that may be the source of the problem. To do a really thorough debugging job, you may need to start with the beginning of the text at the first pass and work your way all the way through, modifying the glyph list as you go according to the rules that fire. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 6\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Rule precedence: dbg_ruleprec.txt \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Since it is often difficult in a complicated pass with many rules to determine easily what the precedence for the rules are, the \lquote dbg_ruleprec.txt\rquote is available to help with this task. This file lists the rules for each pass in the order of their precedence. When multiple rules are matched by the finite state machine, it is this precedence that determines which rule is actually fired. \par Note that a single rule in the source code may correspond to multiple rules in this file, since rules are expanded by the compiler to account for optional items. The rule number (e.g., RULE 3.7) corresponds to the number in the \lquote dbg_fsm.txt\rquote file and also in the \lquote gr_xductn.log\rquote file that is output by the Graphite engine. The file indicates the line and file of the source code for each rule, and shows a simplified print-out of the rule. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 7\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Engine code: dbg_enginecode.txt \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { This file shows the internal code that is generated corresponding to the constraints and the effects of firing the rules. This internal code is in the form of a stack machine. See \lquote Stack Machine Commands.doc\rquote for a description of the commands. \par The file shows an abbreviated form of the rule, followed by the action code (the effects of running the rule) and the constraint code (the cumulative tests contained in the relevant \endash if\endash statements and in-rule tests). \par Again, there is not a one-to-one correspondence between the rules as listed here and those in the source code (although the rule numbers are the same as what is shown in the \lquote dbg_fsm.txt\rquote file). The numbers of the passes in this file, however, do correspond to the numbers in the source code. Pass 0 indicates the unnumbered pass, permitted when there is only one pass in a table. \par Several of the engine code commands (PushGlyphAttr and PushAttToGlyphAttr) have the effect of pushing the values of glyph attributes on the stack. A translation between the glyph attribute internal ID number and the original name can be found in the \lquote dbg_glyphattr.txt\rquote file. \par Other commands (PutSubs and PutGlyph) have the effect of substituting one glyph for another. These commands use class numbers, which are specified in the \lquote dbg_classes.txt\rquote file. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 8\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Substitution classes: dbg_classes.txt \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {This file shows classes that are used for substitution in the rules in the substitution table. Each class has a number, which corresponds to the numbers you can find in the dbg_enginecode.txt file, as arguments to the PutSubs and PutGlyph commands. \par The classes are listed in two groups. The first group is labeled \'93LINEAR (OUTPUT) CLASSES.\'94 These are the classes that appear in the right-hand or output side of the rules. These classes consist of simply a list of glyphs. They are organized into groups of 10 so that it is fairly easy for you to determine the index of any member of the class. \par The second group of classes are labeled \'93INDEX (INPUT) CLASSES.\'94 These classes appear in the left-hand or input side of the rules. You will notice that the list of glyphs for each class is sorted by glyph number and each glyph is fo llowed by an index. When the given glyph is encountered in the input, the associated index is used to determine the corresponding glyph from the output class to substitute in place of the original glyph. \par Note that some classes may be used in both the left- and right-hand sides of substitution rules, in which case they will appear in both the input and output class lists. \par }{\i Example.}{ Suppose you have a rule that replaces lower-case vowels (a, e, i, o, u) with upper-case equivalents (A, E, I, O, U). This rule might be represented in the dbg_enginecode.txt file something as follows: \par }\pard\plain \s26\ql \li432\ri0\sb60\sa60\widctlpar\tx864\tx1728\tx2592\tx3456\tx4320\tx5184\aspalpha\aspnum\faauto\adjustright\rin0\lin432\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Rule 1.0: clsLowerVowel > clsUpperVowel; \par ACTIONS\line PutSubs 0 10 6\line Next\line RetZero \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Now suppose the font assigns glyphs as shown in the table below. \par \par }\trowd \trgaph108\trleft1440\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1260 \cellx3888\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl \brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572 \pard \s21\qc \li0\ri0\sb120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {a\cell 0x0021\cell \cell }{\lang1031\langfe1033\langnp1031 A\cell 0x0053\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang1031\langfe1033\langnp1031 \trowd \trgaph108\trleft1440\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb \brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1260 \cellx3888\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\row }\trowd \trgaph108\trleft1440\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1260 \cellx3888\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\pard\plain \s21\qc \li0\ri0\sb120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang1031\langfe1033\langnp1031 e\cell }{0x0025\cell \cell E\cell }{\lang1031\langfe1033\langnp1031 0x0057}{\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft1440\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1260 \cellx3888\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\row }\trowd \trgaph108\trleft1440\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh \brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3888\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl \brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\pard\plain \s21\qc \li0\ri0\sb120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {i\cell 0x0029\cell \cell }{\lang1044\langfe1033\langnp1044 I\cell 0x005B\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang1044\langfe1033\langnp1044 \trowd \trgaph108\trleft1440\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl \brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3888\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\row }\pard\plain \s21\qc \li0\ri0\sb120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang1044\langfe1033\langnp1044 o \cell }{0x002F\cell \cell O\cell }{\lang1031\langfe1033\langnp1031 0x0061}{\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft1440 \trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl \brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3888 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\row }\trowd \trgaph108\trleft1440\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3888\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\pard\plain \s21\qc \li0\ri0\sb120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {u\cell 0x0035\cell \cell U\cell }{\lang1031\langfe1033\langnp1031 0x0067}{\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft1440\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx2448\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3888\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \clcbpat17\cltxlrtb\clftsWidth3\clwWidth144 \cellx4124\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1008 \cellx5132\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx6572\row }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\sect }\sectd \sbknone\linex0\endnhere\sectdefaultcl \pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang1031\langfe1033\langnp1031 \par }{\sect }\sectd \sbknone\linex0\endnhere\sectdefaultcl \pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { The dbg_classes.txt file would contain the following definitions for the classes: \par }\pard\plain \s26\ql \li432\ri0\sb60\sa60\widctlpar\tx864\tx1728\tx2592\tx3456\tx4320\tx5184\aspalpha\aspnum\faauto\adjustright\rin0\lin432\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\line LINEAR (OUTPUT) CLASSES \par ... \par Class #6: clsUpperVowel\line 0: 0x0053 0x0057 0x005B 0x0061 0x0067 \par ... \par INDEXED (INPUT) CLASSES \par ... \par Class #10: clsLowerVowel\line 0x0021 : 0 0x0025 : 1 0x0029 : 2 0x002F : 3 0x0035 : 4 \par }\pard\plain \s21\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Note that the second and third arguments of the PutSubs engine code command correspond to the numbers of the input and output classes, respectively. The glyph IDs are hypothetical, but this is in effect saying that \'93a\'94 is assigned index 0, which corresponds to \'93A\'94 in the clsUpperVowel class;\'93e\'94 is assigned index 1, corresponding to \'93E\'94; etc. (In this case the input glyphs happen to be in sorted ord er, but keep in mind that this is not always the case.) \par {\listtext\pard\plain\s1 \b\f1 \hich\af1\dbch\af0\loch\f1 9\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\fs24 Revision History \par {\pntext\pard\plain\fs20 \hich\af0\dbch\af0\loch\f0 1.\tab}}\pard\plain \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin360\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {26-April-2000: First draft by Sharon Correll. \par {\pntext\pard\plain\fs20 \hich\af0\dbch\af0\loch\f0 2.\tab}}\pard \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin360\itap0 {26-Jan-2001. Revised to discuss ANY. \par {\pntext\pard\plain\fs20 \hich\af0\dbch\af0\loch\f0 3.\tab}}\pard \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin360\itap0 {26-Feb-2003. Added discussion of dbg_classes and dbg_ruleprec files. \par {\pntext\pard\plain\fs20 \hich\af0\dbch\af0\loch\f0 4.\tab}}\pard \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin360\itap0 {28-April-2003. Enhanced discussion of dbg_cmap file. \par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { \par {\listtext\pard\plain\s1 \b\f1 \hich\af1\dbch\af0\loch\f1 10\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\jclisttab\tx432\aspalpha\aspnum\faauto\ls7\outlinelevel0\adjustright\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\fs24 File Name \par }\pard\plain \s23\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst { FILENAME \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof Compiler Debug Files.doc}}}{ \par }}grcompiler-5.2.1/doc/CppDoc.pdf000066400000000000000000006457521411153030700163100ustar00rootroot00000000000000%PDF-1.4 % 787 0 obj << /Linearized 1 /O 791 /H [ 3415 539 ] /L 216042 /E 21485 /N 66 /T 200183 >> endobj xref 787 118 0000000016 00000 n 0000002712 00000 n 0000002893 00000 n 0000003361 00000 n 0000003954 00000 n 0000004339 00000 n 0000004423 00000 n 0000004533 00000 n 0000004668 00000 n 0000004817 00000 n 0000004940 00000 n 0000005088 00000 n 0000005211 00000 n 0000005360 00000 n 0000005442 00000 n 0000005591 00000 n 0000005673 00000 n 0000005840 00000 n 0000006001 00000 n 0000006154 00000 n 0000006277 00000 n 0000006434 00000 n 0000006516 00000 n 0000006674 00000 n 0000006756 00000 n 0000006913 00000 n 0000006995 00000 n 0000007147 00000 n 0000007229 00000 n 0000007364 00000 n 0000007525 00000 n 0000007676 00000 n 0000007758 00000 n 0000007926 00000 n 0000008008 00000 n 0000008172 00000 n 0000008254 00000 n 0000008394 00000 n 0000008476 00000 n 0000008629 00000 n 0000008752 00000 n 0000008923 00000 n 0000009005 00000 n 0000009157 00000 n 0000009239 00000 n 0000009394 00000 n 0000009476 00000 n 0000009618 00000 n 0000009700 00000 n 0000009858 00000 n 0000009981 00000 n 0000010134 00000 n 0000010216 00000 n 0000010366 00000 n 0000010489 00000 n 0000010646 00000 n 0000010844 00000 n 0000010998 00000 n 0000011121 00000 n 0000011271 00000 n 0000011353 00000 n 0000011495 00000 n 0000011577 00000 n 0000011740 00000 n 0000011822 00000 n 0000011969 00000 n 0000012051 00000 n 0000012198 00000 n 0000012280 00000 n 0000012429 00000 n 0000012552 00000 n 0000012706 00000 n 0000012829 00000 n 0000012979 00000 n 0000013101 00000 n 0000013259 00000 n 0000013340 00000 n 0000013491 00000 n 0000013612 00000 n 0000013767 00000 n 0000013888 00000 n 0000014034 00000 n 0000014115 00000 n 0000014265 00000 n 0000014423 00000 n 0000014558 00000 n 0000014639 00000 n 0000014781 00000 n 0000014902 00000 n 0000015055 00000 n 0000015136 00000 n 0000015278 00000 n 0000015397 00000 n 0000015479 00000 n 0000015599 00000 n 0000015843 00000 n 0000016084 00000 n 0000016329 00000 n 0000016566 00000 n 0000016810 00000 n 0000017049 00000 n 0000017286 00000 n 0000017524 00000 n 0000017762 00000 n 0000018008 00000 n 0000018189 00000 n 0000018349 00000 n 0000018452 00000 n 0000018562 00000 n 0000018669 00000 n 0000018698 00000 n 0000020658 00000 n 0000020681 00000 n 0000020789 00000 n 0000020894 00000 n 0000021101 00000 n 0000003415 00000 n 0000003932 00000 n trailer << /Size 905 /Info 548 0 R /Root 788 0 R /Prev 200172 /ID[<844c4bffa0bae290689a1e63bbfcd452>] >> startxref 0 %%EOF 788 0 obj << /Type /Catalog /Pages 547 0 R /Metadata 549 0 R /Outlines 792 0 R /StructTreeRoot 789 0 R /SpiderInfo 551 0 R /Names 790 0 R /PageMode /UseOutlines >> endobj 789 0 obj << /Type /StructTreeRoot /ClassMap 477 0 R /ParentTreeNextKey 66 /ParentTree 478 0 R /K [ 879 0 R 878 0 R 876 0 R 874 0 R 872 0 R 870 0 R 868 0 R 866 0 R 864 0 R 862 0 R 860 0 R 858 0 R 856 0 R 854 0 R 852 0 R 850 0 R 848 0 R 846 0 R 844 0 R 842 0 R 840 0 R 838 0 R 836 0 R 834 0 R 832 0 R 830 0 R 828 0 R 826 0 R 824 0 R 822 0 R 820 0 R 818 0 R 816 0 R 814 0 R 812 0 R 810 0 R 808 0 R 806 0 R 804 0 R 802 0 R 800 0 R 798 0 R 796 0 R ] >> endobj 790 0 obj << /IDS 560 0 R /URLS 561 0 R >> endobj 903 0 obj << /S 326 /O 518 /C 534 /Filter /FlateDecode /Length 904 0 R >> stream Hb```f` g`g``dc@(qE"@ @ AB"+ C#Ӕ `-B呻-AGqsOQYٍujA zJ 'vSvYBAmr1# \+%;۲eSÍ&[65X `e< > /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 902 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 792 0 obj << /Count 44 /Type /Outlines /First 793 0 R /Last 793 0 R >> endobj 793 0 obj << /Title (www.contactor.se) /Parent 792 0 R /First 794 0 R /Last 795 0 R /Count 43 >> endobj 794 0 obj << /Title (Frexx C Preprocessor) /Dest [ 791 0 R /XYZ 0 792 null ] /SE 879 0 R /Parent 793 0 R /Next 877 0 R >> endobj 795 0 obj << /Title (Unintended Grouping of Arithmetic) /Dest [ 467 0 R /XYZ 0 792 null ] /SE 796 0 R /Parent 793 0 R /Prev 797 0 R >> endobj 796 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 467 0 R /K [ 0 << /Type /MCR /Pg 471 0 R /MCID 0 >> ] >> endobj 797 0 obj << /Title (The #if' Directive) /Dest [ 457 0 R /XYZ 0 792 null ] /SE 798 0 R /Parent 793 0 R /Prev 799 0 R /Next 795 0 R >> endobj 798 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 457 0 R /K [ 0 << /Type /MCR /Pg 461 0 R /MCID 0 >> ] >> endobj 799 0 obj << /Title (The #else Directive) /Dest [ 450 0 R /XYZ 0 792 null ] /SE 800 0 R /Parent 793 0 R /Prev 801 0 R /Next 797 0 R >> endobj 800 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 450 0 R /K 0 >> endobj 801 0 obj << /Title (The #elif Directive) /Dest [ 443 0 R /XYZ 0 792 null ] /SE 802 0 R /Parent 793 0 R /Prev 803 0 R /Next 799 0 R >> endobj 802 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 443 0 R /K 0 >> endobj 803 0 obj << /Title (Separate Expansion of Macro Arguments) /Dest [ 430 0 R /XYZ 0 792 null ] /SE 804 0 R /Parent 793 0 R /Prev 805 0 R /Next 801 0 R >> endobj 804 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 430 0 R /K [ 0 << /Type /MCR /Pg 434 0 R /MCID 0 >> << /Type /MCR /Pg 437 0 R /MCID 0 >> ] >> endobj 805 0 obj << /Title (Self-Referential Macros) /Dest [ 420 0 R /XYZ 0 792 null ] /SE 806 0 R /Parent 793 0 R /Prev 807 0 R /Next 803 0 R >> endobj 806 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 420 0 R /K [ 0 << /Type /MCR /Pg 424 0 R /MCID 0 >> ] >> endobj 807 0 obj << /Title (Newlines in Macro Arguments) /Dest [ 413 0 R /XYZ 0 792 null ] /SE 808 0 R /Parent 793 0 R /Prev 809 0 R /Next 805 0 R >> endobj 808 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 413 0 R /K 0 >> endobj 809 0 obj << /Title (Improperly Nested Constructs) /Dest [ 406 0 R /XYZ 0 792 null ] /SE 810 0 R /Parent 793 0 R /Prev 811 0 R /Next 807 0 R >> endobj 810 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 406 0 R /K 0 >> endobj 811 0 obj << /Title (Duplication of Side Effects) /Dest [ 399 0 R /XYZ 0 792 null ] /SE 812 0 R /Parent 793 0 R /Prev 813 0 R /Next 809 0 R >> endobj 812 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 399 0 R /K 0 >> endobj 813 0 obj << /Title (Cascaded Use of Macros) /Dest [ 392 0 R /XYZ 0 792 null ] /SE 814 0 R /Parent 793 0 R /Prev 815 0 R /Next 811 0 R >> endobj 814 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 392 0 R /K 0 >> endobj 815 0 obj << /Title (Index) /Dest [ 303 0 R /XYZ 0 792 null ] /SE 816 0 R /Parent 793 0 R /Prev 817 0 R /Next 813 0 R >> endobj 816 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 303 0 R /K [ 0 << /Type /MCR /Pg 339 0 R /MCID 0 >> << /Type /MCR /Pg 379 0 R /MCID 0 >> ] >> endobj 817 0 obj << /Title (C Preprocessor Output) /Dest [ 296 0 R /XYZ 0 792 null ] /SE 818 0 R /Parent 793 0 R /Prev 819 0 R /Next 815 0 R >> endobj 818 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 296 0 R /K 0 >> endobj 819 0 obj << /Title (Miscellaneous Preprocessing Directives) /Dest [ 289 0 R /XYZ 0 792 null ] /SE 820 0 R /Parent 793 0 R /Prev 821 0 R /Next 817 0 R >> endobj 820 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 289 0 R /K 0 >> endobj 821 0 obj << /Title (The #error and #warning Directives) /Dest [ 282 0 R /XYZ 0 792 null ] /SE 822 0 R /Parent 793 0 R /Prev 823 0 R /Next 819 0 R >> endobj 822 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 282 0 R /K 0 >> endobj 823 0 obj << /Title (Assertions) /Dest [ 275 0 R /XYZ 0 792 null ] /SE 824 0 R /Parent 793 0 R /Prev 825 0 R /Next 821 0 R >> endobj 824 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 275 0 R /K 0 >> endobj 825 0 obj << /Title (Conditionals and Macros) /Dest [ 262 0 R /XYZ 0 792 null ] /SE 826 0 R /Parent 793 0 R /Prev 827 0 R /Next 823 0 R >> endobj 826 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 262 0 R /K [ 0 << /Type /MCR /Pg 268 0 R /MCID 0 >> ] >> endobj 827 0 obj << /Title (Keeping Deleted Code for Future Reference) /Dest [ 255 0 R /XYZ 0 792 null ] /SE 828 0 R /Parent 793 0 R /Prev 829 0 R /Next 825 0 R >> endobj 828 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 255 0 R /K 0 >> endobj 829 0 obj << /Title (Syntax of Conditionals) /Dest [ 248 0 R /XYZ 0 792 null ] /SE 830 0 R /Parent 793 0 R /Prev 831 0 R /Next 827 0 R >> endobj 830 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 248 0 R /K 0 >> endobj 831 0 obj << /Title (Why Conditionals are Used) /Dest [ 241 0 R /XYZ 0 792 null ] /SE 832 0 R /Parent 793 0 R /Prev 833 0 R /Next 829 0 R >> endobj 832 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 241 0 R /K 0 >> endobj 833 0 obj << /Title (Conditionals) /Dest [ 228 0 R /XYZ 0 792 null ] /SE 834 0 R /Parent 793 0 R /Prev 835 0 R /Next 831 0 R >> endobj 834 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 228 0 R /K 0 >> endobj 835 0 obj << /Title (Inheritance and Header Files) /Dest [ 217 0 R /XYZ 0 792 null ] /SE 836 0 R /Parent 793 0 R /Prev 837 0 R /Next 833 0 R >> endobj 836 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 217 0 R /K [ 0 << /Type /MCR /Pg 221 0 R /MCID 0 >> ] >> endobj 837 0 obj << /Title (Once-Only Include Files) /Dest [ 209 0 R /XYZ 0 792 null ] /SE 838 0 R /Parent 793 0 R /Prev 839 0 R /Next 835 0 R >> endobj 838 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 209 0 R /K 0 >> endobj 839 0 obj << /Title (How '#include' works) /Dest [ 198 0 R /XYZ 0 792 null ] /SE 840 0 R /Parent 793 0 R /Prev 841 0 R /Next 837 0 R >> endobj 840 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 198 0 R /K [ 0 << /Type /MCR /Pg 202 0 R /MCID 0 >> ] >> endobj 841 0 obj << /Title (Invoking the C Preprocessor) /Dest [ 182 0 R /XYZ 0 792 null ] /SE 842 0 R /Parent 793 0 R /Prev 843 0 R /Next 839 0 R >> endobj 842 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 182 0 R /K [ 0 << /Type /MCR /Pg 186 0 R /MCID 0 >> << /Type /MCR /Pg 189 0 R /MCID 0 >> << /Type /MCR /Pg 192 0 R /MCID 0 >> ] >> endobj 843 0 obj << /Title (The '#include' Directive) /Dest [ 169 0 R /XYZ 0 792 null ] /SE 844 0 R /Parent 793 0 R /Prev 845 0 R /Next 841 0 R >> endobj 844 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 169 0 R /K [ 0 << /Type /MCR /Pg 175 0 R /MCID 0 >> ] >> endobj 845 0 obj << /Title (Uses of Header Files) /Dest [ 161 0 R /XYZ 0 792 null ] /SE 846 0 R /Parent 793 0 R /Prev 847 0 R /Next 843 0 R >> endobj 846 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 161 0 R /K 0 >> endobj 847 0 obj << /Title (Header Files) /Dest [ 149 0 R /XYZ 0 792 null ] /SE 848 0 R /Parent 793 0 R /Prev 849 0 R /Next 845 0 R >> endobj 848 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 149 0 R /K 0 >> endobj 849 0 obj << /Title (Pitfalls and Subtleties of Macros) /Dest [ 142 0 R /XYZ 0 792 null ] /SE 850 0 R /Parent 793 0 R /Prev 851 0 R /Next 847 0 R >> endobj 850 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 142 0 R /K 0 >> endobj 851 0 obj << /Title (Redefining Macros) /Dest [ 135 0 R /XYZ 0 792 null ] /SE 852 0 R /Parent 793 0 R /Prev 853 0 R /Next 849 0 R >> endobj 852 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 135 0 R /K 0 >> endobj 853 0 obj << /Title (Undefining Macros) /Dest [ 128 0 R /XYZ 0 792 null ] /SE 854 0 R /Parent 793 0 R /Prev 855 0 R /Next 851 0 R >> endobj 854 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 128 0 R /K 0 >> endobj 855 0 obj << /Title (Macro Concatenation) /Dest [ 118 0 R /XYZ 0 792 null ] /SE 856 0 R /Parent 793 0 R /Prev 857 0 R /Next 853 0 R >> endobj 856 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 118 0 R /K [ 0 << /Type /MCR /Pg 122 0 R /MCID 0 >> ] >> endobj 857 0 obj << /Title (Swallowing the Semicolon) /Dest [ 108 0 R /XYZ 0 792 null ] /SE 858 0 R /Parent 793 0 R /Prev 859 0 R /Next 855 0 R >> endobj 858 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 108 0 R /K [ 0 << /Type /MCR /Pg 112 0 R /MCID 0 >> ] >> endobj 859 0 obj << /Title (Macro Stringification) /Dest [ 96 0 R /XYZ 0 792 null ] /SE 860 0 R /Parent 793 0 R /Prev 861 0 R /Next 857 0 R >> endobj 860 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 96 0 R /K [ 0 << /Type /MCR /Pg 102 0 R /MCID 0 >> ] >> endobj 861 0 obj << /Title (Nonstandard Predefined Macros) /Dest [ 89 0 R /XYZ 0 792 null ] /SE 862 0 R /Parent 793 0 R /Prev 863 0 R /Next 859 0 R >> endobj 862 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 89 0 R /K 0 >> endobj 863 0 obj << /Title (Combining Source Files) /Dest [ 79 0 R /XYZ 0 792 null ] /SE 864 0 R /Parent 793 0 R /Prev 865 0 R /Next 861 0 R >> endobj 864 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 79 0 R /K [ 0 << /Type /MCR /Pg 83 0 R /MCID 0 >> ] >> endobj 865 0 obj << /Title (Standard Predefined Macros) /Dest [ 67 0 R /XYZ 0 792 null ] /SE 866 0 R /Parent 793 0 R /Prev 867 0 R /Next 863 0 R >> endobj 866 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 67 0 R /K [ 0 << /Type /MCR /Pg 73 0 R /MCID 0 >> ] >> endobj 867 0 obj << /Title (Predefined Macros) /Dest [ 58 0 R /XYZ 0 792 null ] /SE 868 0 R /Parent 793 0 R /Prev 869 0 R /Next 865 0 R >> endobj 868 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 58 0 R /K 0 >> endobj 869 0 obj << /Title (Macros with Arguments) /Dest [ 45 0 R /XYZ 0 792 null ] /SE 870 0 R /Parent 793 0 R /Prev 871 0 R /Next 867 0 R >> endobj 870 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 45 0 R /K [ 0 << /Type /MCR /Pg 49 0 R /MCID 0 >> << /Type /MCR /Pg 52 0 R /MCID 0 >> ] >> endobj 871 0 obj << /Title (Macros) /Dest [ 30 0 R /XYZ 0 792 null ] /SE 872 0 R /Parent 793 0 R /Prev 873 0 R /Next 869 0 R >> endobj 872 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 30 0 R /K 0 >> endobj 873 0 obj << /Title (Simple Macros) /Dest [ 19 0 R /XYZ 0 792 null ] /SE 874 0 R /Parent 793 0 R /Prev 875 0 R /Next 871 0 R >> endobj 874 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 19 0 R /K [ 0 << /Type /MCR /Pg 23 0 R /MCID 0 >> ] >> endobj 875 0 obj << /Title (Preprocessing Directives) /Dest [ 11 0 R /XYZ 0 792 null ] /SE 876 0 R /Parent 793 0 R /Prev 877 0 R /Next 873 0 R >> endobj 876 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 11 0 R /K 0 >> endobj 877 0 obj << /Title (Global Actions) /Dest [ 1 0 R /XYZ 0 792 null ] /SE 878 0 R /Parent 793 0 R /Prev 794 0 R /Next 875 0 R >> endobj 878 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 1 0 R /K [ 0 << /Type /MCR /Pg 5 0 R /MCID 0 >> ] >> endobj 879 0 obj << /S /Article /C /SpdrArt /P 789 0 R /Pg 791 0 R /K 0 >> endobj 880 0 obj [ 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R 886 0 R 887 0 R 888 0 R 889 0 R 890 0 R 891 0 R 892 0 R ] endobj 881 0 obj << /Subtype /Link /Rect [ 16.67772 237.5936 123.27014 251.18958 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 1 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/global_actions.HTML)>> >> endobj 882 0 obj << /Subtype /Link /Rect [ 16.67772 220.55331 92.81517 234.14929 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 11 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/directives.HTML)>> >> endobj 883 0 obj << /Subtype /Link /Rect [ 16.67772 203.51303 108.04265 217.10901 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 884 0 obj << /Subtype /Link /Rect [ 16.67772 186.47275 62.36018 200.06873 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 30 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros.HTML)>> >> endobj 885 0 obj << /Subtype /Link /Rect [ 16.67772 169.43246 108.04265 183.02844 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 228 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/conditional.HTML)>> >> endobj 886 0 obj << /Subtype /Link /Rect [ 16.67772 152.39218 146.11137 165.98816 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 79 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/combine.HTML)>> >> endobj 887 0 obj << /Subtype /Link /Rect [ 16.67772 135.3519 138.49763 148.94786 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 289 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/other.HTML)>> >> endobj 888 0 obj << /Subtype /Link /Rect [ 16.67772 118.31161 62.36018 131.90758 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 296 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/output.HTML)>> >> endobj 889 0 obj << /Subtype /Link /Rect [ 16.67772 101.27133 92.81517 114.86729 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 182 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/invoke.HTML)>> >> endobj 890 0 obj << /Subtype /Link /Rect [ 16.67772 84.23105 54.74644 97.82701 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 303 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/heddleyautoindex.HTML)>> >> endobj 891 0 obj << /Subtype /Link /Rect [ 92.39822 36.70355 142.50391 46.67393 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 892 0 obj << /Subtype /Link /Rect [ 238.17422 36.70355 318.5083 46.67393 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 893 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 894 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 895 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 896 0 obj /DeviceRGB endobj 897 0 obj << /Filter /FlateDecode /Length 898 0 R >> stream HWmo.aE8K.A-9q\wDCaEHriY_;$ISmȦܙwZJijxκ:Ig";k\V` 30gqCxgX_GY$Z? l_W'1*RɹJ`8Xc8D6!x~|QRe*T:0| _dTQbx mg;(1 ykXj],q|zZ l0Zl#:@JsAnG7WDaΥu2ֱusX8Q&Dq`4ם& b g-g:MfFPmYCIJXI_%55F:i04%Lϖx_`AZ+ j˲QQ%s Tj;`&gyN6I4T& S.j@&31ԯa1 7QRܟM{dē4k@D#OVMkՓ@hX)2Z F—&xycR_|gMMM5TNa& N5#L=4'ߗBf"n&oY 7c˭ x0&jq$j"1g*yB6T8( >F#ΓT[DwZ*Yh1̩#ԕH%Zc#i&H!)ƙ#KLpReX[%˦ nA`𙂄hUXrS2Y4@vz((,GL̍t3 dh"V n#u'Ń ,L#!?Z e1]Q҆Ôu4#Uv>%Ex$:5d0O j\ӦMlM}AMUX%\JzYY|[Q4+v݄7^lF 6ܢWlp,s8\6_NzJmkyt 2ݨno I`w#ȢJlkzlM|exĮbEw֢S91V \B(dF2P x!%;`O1sTFv<ȧv|$\-&΋h(fj>ȃǘtA<(:6JƒChG#vdZ1XyL= 9l+ѩA۠o25ARTCfx*:7ʾ9XY? #-cyDVQt2|4F`1z$Zu}tB_uo>u߱b9H;A~pPR f)ZBwגSq= ާ]h64^vO$ymP|Q1؁|QuoJ/=zm(.ª|+A6|SB|f. z(]6.'\ۀ[,7Ld!bgCgh`]*-I;Rk| ح|;kCNkX_z/ҀWO]bxݖ*./bډ7Ӻbh!l%U3+*kȂܹccϾ>l^d= endstream endobj 898 0 obj 1880 endobj 899 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >> endobj 900 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 901 0 obj << /Type /ExtGState /SA false /OP false /op false /OPM 0 /BG2 /Default /UCR2 /Default /TR2 /Default /HT /Default /CA 1 /ca 1 /SMask /None /AIS false /BM /Normal /TK true >> endobj 902 0 obj (G*]gD]6) endobj 1 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 588 0 R /PZ 1.10327 /StructParents 1 /Contents 2 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 4 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 2 0 obj << /Filter /FlateDecode /Length 3 0 R >> stream HVmo95hdBxz}׮TU1 >o/XHk<_J;I+9`p63[#΄{i?6'ͥX \$kF׽-%Sdﱠy,AMvh3!!j>V#HP\,|~}O]mgBgK> qLm |+Sblc`M"fb+ UgzE筠TKN qǠSu#~DTtb_;'S,gt"I [XdZ3Jc˹V8zګLk^䞸_;+eӗOu/E7L/̬ۡ-}\zxrDiϠo&'e~OҟQݖwRSȧhRޅu(py]]WN 0[k endstream endobj 3 0 obj 1318 endobj 4 0 obj (n|C~UK9) endobj 5 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 588 0 R /PZ 1.10327 /StructParents 2 /Annots 6 0 R /Contents 9 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 4 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 6 0 obj [ 7 0 R 8 0 R ] endobj 7 0 obj << /Subtype /Link /Rect [ 92.39822 675.71422 142.50391 685.6846 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 8 0 obj << /Subtype /Link /Rect [ 238.17422 675.71422 318.5083 685.6846 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 9 0 obj << /Filter /FlateDecode /Length 10 0 R >> stream HTnF}'6nA-9u[XE̓e+j%2!rE}w,ɕSVZpϜ93;r!s okke^9)r&_n+'1VL.HQS¢$NW.` kd3֨Z *Qhhde42:˦ _X(W2 ^s" BhVYb`zu6еJ~A% ^rŀeVF[[Z%VJN{Å)ҕf-7dz> #!*#JC'P?bW^.:zf"uS4f-VU?_>xU)?E딭Yv7߾~7Du\65b}Xg0Ag\#9x ~Tc<$d~UއnP oV88z \0~ 21~%#Np LpO/ˏyGzE|S' Smh<?MI'9{ds)m(]o;ڐNѿ粳tVu5ye??p'}MdTDT0yJW,ǃd`M endstream endobj 10 0 obj 815 endobj 11 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 588 0 R /PZ 1.10327 /StructParents 3 /Annots 12 0 R /Contents 16 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 18 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 12 0 obj [ 13 0 R 14 0 R 15 0 R ] endobj 13 0 obj << /Subtype /Link /Rect [ 191.79384 453.31635 290.77251 466.91232 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 19 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_simple.HTML)>> >> endobj 14 0 obj << /Subtype /Link /Rect [ 92.39822 197.67986 142.50391 207.65024 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 15 0 obj << /Subtype /Link /Rect [ 238.17422 197.67986 318.5083 207.65024 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 16 0 obj << /Filter /FlateDecode /Length 17 0 R >> stream HW]o6}pkW$Էeu]]cq0eDe}؎Ks=#=4{5, w*tcq d$d]L缦^N̯xMD)$<ɝq?0-nJyO`Z9?KH1x=S.YfԯoΛl_6z)W~2)}D~I<ɜ/vGpBkQ/|rtO"lICT#dl3)l:RJfM>,蝬~+k?[q)$Q@ Tgh~@thc~Ԣޟbxp6~7 Y FM+(1Aml@n;5SdB/f/y@a;э@kkZb\1B4Ai*5^g.\A!RIsVcs&[( “upiŞx[Z5AɎ YĞY*&ͤ u5S ͘AK%O)fԃ^Bh-3f{(f iВM[ل- jkSѺ=3jG@F?{єrP[R MFF@ALo66TR+v6MIWA6t];ܗjP-nZ:gl#ۆʸWE_^×wG(?7 hmO4ATNz$I~t;{zU6@~h圛̰|sc?"jhB) hyPʴ(8*Pw٬h٫q-+p(?hֲ)L(| '1;'2GpԳvAV  *FkQ&ܬBf8=v;aGnLl> %cfg3;ʶDK;UWԴy5"PkzJèiQxj% eIYL_$tay0LL /Tݪ}c)il0nmt\z8hN4X{kzFAksc]3gƬÿnko\[ > !arjsչQ`La]1~_WWO-@Io3$(?!'z!%O<3s]ԬH$M̑,ͿAjcVra}k!?(|luQ=A#ZF}mku#?4M7MI{azϧ4:-"'Å4?odFc?#h,!&/= ?"<|k--ؕɪ%a}O5->~[EBfC$bU ×'o,n^j"u2-$Q7JES2wq7G.| .fAr6Fv 0 endstream endobj 17 0 obj 1515 endobj 18 0 obj (9Jtk^-~) endobj 19 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 588 0 R /PZ 1.10327 /StructParents 4 /Contents 20 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 22 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 20 0 obj << /Filter /FlateDecode /Length 21 0 R >> stream HVnF}Ͳd9iK[q*6 ! we}̒dIQFܙ9gΙ]*/skE }'OhcxJ~"ot'RNU!z5z=_:{LW*R1U3tI9&ig ^8Iyz2t-Jg:(_h[z NT·TtGZFjnS7x1N{5%+IǕ0*_/k.ÚhðfzAG^ qr9DT#:u"8ЅtzM^pYӁ!A_UNIfU5ѕ"ZxAƊ"1."SUZy. ˡbHXZJ+ʊ&F0tBX^phkG$%Ţ%?t7%$2U KTlvO+eo/?կ?DU2fw]Nu=5 .9  >yy8aza5-!%w{q~yy՟Q W_B_^?Av']; 4n]۶'*FZƬ+[Ŵ+ۊ: i5LӧBT|rcB3}bSYɲұ4V*ˠX 7[mP4키4̪bNr{$ )˕Җe &c;܆ML3g.Q%[0\v ] jOUR$(Qε6F:Draa"n\gnn+[-Zk9!(')?9І$r_` k-$\rъ6UE9F"j2aGo Т(X0eAΨyŸ@8[&*jg?e;J]VUU,t53kLb9mX. }h!Y0pmLRu/ط֋%bѲKpmavafR~ ~sfCִJ`KM~a\@RQ)RFP!cF* Pb&;3ܔ692ʁl F󊙾mȴWKlΔ7w~G!JPVHqM~odJ`6،VKz-}L%zYU<^| l̔*CG1X݂Wayg*p`8Hnߖܛz+~dmeHOE:LJYWXQm{>;4;z=˥eaۇt3 zAp{?d{> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 22 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 24 0 obj [ 25 0 R 26 0 R 27 0 R ] endobj 25 0 obj << /Subtype /Link /Rect [ 9.06398 342.01067 62.63936 355.60663 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 30 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros.HTML)>> >> endobj 26 0 obj << /Subtype /Link /Rect [ 92.39822 311.70474 142.50391 321.67513 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 27 0 obj << /Subtype /Link /Rect [ 238.17422 311.70474 318.5083 321.67513 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 28 0 obj << /Filter /FlateDecode /Length 29 0 R >> stream HVmo6.K$Ew]8IеZ,Emt|oߑlqR`IGss:>mT>K3/^اJقOND 7x,AHF!$5m:ϫT墂/g&~ \D!3hrkXv|@2bQℐ Wi,l]$ՙewgi ﺎK `a4pe?Q=JK>S` MЃ6`9@I.~Da䵔l#r@ʰ`Dtu{%tZ.F(bx0"C.蟙3|IK! n)䨳ߥЇu>u#ˌKH%jA&giOxo7-*b8v aM+ k1dW 4 :x$/%>NvKkO2(2X< B[LzO[8/,aQ@Zu_}zC,aG8 ǿ&W<yj7zV̈G ]XZolfX9}4R[b9Ga973A]GWP׉h/\;/$Y$|| F !\wv\}#<> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 44 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 31 0 obj [ 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R ] endobj 32 0 obj << /Subtype /Link /Rect [ 25.23323 564.79016 128.04922 578.91322 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 19 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_simple.HTML)>> >> endobj 33 0 obj << /Subtype /Link /Rect [ 25.23323 547.08923 143.86708 561.21231 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 45 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_arguments.HTML)>> >> endobj 34 0 obj << /Subtype /Link /Rect [ 25.23323 513.57047 104.32246 527.69354 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 58 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined.HTML)>> >> endobj 35 0 obj << /Subtype /Link /Rect [ 25.23323 495.86954 143.86708 509.99261 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 96 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_stringification.HTML)>> >> endobj 36 0 obj << /Subtype /Link /Rect [ 25.23323 478.16861 128.04922 492.29169 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 118 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_concatenation.HTML)>> >> endobj 37 0 obj << /Subtype /Link /Rect [ 25.23323 460.4677 104.32246 474.59077 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 128 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_undefining.HTML)>> >> endobj 38 0 obj << /Subtype /Link /Rect [ 25.23323 442.76677 104.32246 456.88985 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 135 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_redefining.HTML)>> >> endobj 39 0 obj << /Subtype /Link /Rect [ 25.23323 425.06584 135.95816 439.18892 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 142 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls.HTML)>> >> endobj 40 0 obj << /Subtype /Link /Rect [ 95.98044 359.87791 148.02867 370.23483 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 41 0 obj << /Subtype /Link /Rect [ 247.40807 359.87791 330.85661 370.23483 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 42 0 obj << /Filter /FlateDecode /Length 43 0 R >> stream HWn6}6]t)nvػͶ4QIP2kWJtywHɲI*#᜙3ڧJ"Q}Hrv\VpkF7!A(* K ҲGƖÇ,Rf^ˬ\:MNQl1 ܊̢>ChqnODRcl}-Eh[9i -@}>ex> ~=**s\}-.W6E!/ BbےII&E^лs"mB¸sD885m{UeZRϬ]?:.aQHbxhv-% /\ ֯8\MY+( ZާmV4YCD0PQ@-d˛F>2(k/d❋243Kل;7MFJբ5@7GZw:jYe"<2d)@fg< ~7u`s]9:<2Sa3Q I}τ*Eȭv; "[䷪54"B8\"g<< $ ǣrsZ-sY$_f-En4iRD J U6^jI^< 1@{e E0MZ2a6޻i&|eyba{فxLa^ IquDzܤ,e1뵴Q߿WHCy8L^v(5Z؃ `L6]_eƾUZW_wKh^v(:q CıJeh1|ߴE>UTz [(:ѡ OB涭Rb! HD \D^8E2F7\j.lWJn%e#Mu[+Q?`+;JBx}l$&tͱc ź7cZdߌɺmha782c^ˆ:оebzs:G7=y0ESnew˾]2cͣap=Q}\섑o)ؔDݣ`(\bEH ) Z5)ג^3!UEcaPuq듆8M:0u1DM؊'?' I%>w%5DҝO2Ƒ@Q?1Oӓn_mUX(Uj"Ѷ3({^eolf'Ue1D|9:';qn'υ endstream endobj 43 0 obj 1310 endobj 44 0 obj (@P\\Lf-D~) endobj 45 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 587 0 R /PZ 1.10327 /StructParents 7 /Contents 46 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 48 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 46 0 obj << /Filter /FlateDecode /Length 47 0 R >> stream HWo6n!s$Kq#6nHQesDbIɑl D{݉qb ~^+E xl7pM`<7t)'c|l {d9Q/7Xy˨,:ޗx$4h2p1YDKX3k,3+yݹ :7w.P`־-Z^ߐ<Ɨ#;3[Ա+CxQgz1?dhi3IL:T3R)^iYMM=l}=u!3EP|g4 T}]A% s|޼اv^dYre:tM"y,!˛nA(HQPt@ԠВϩ4vja!tpF"Z(8!u~'.WD"F^uNAf "#Q%Ȳ(31f$X>J H]ԸXeef^\jbg0dE%(nnLH[Yj!irW`^m VkIS$A$)s{] zFlLJaQRοJHq#bP9pAPKAod^ ^ Ƨ{N A*@s˂EG?oY6j| O$e1́% $.)! e]l6YF0Zhڠ2[t%' Q 4?߱d%f4+4eK}۹93^P4?,[mڑ]d^HEOeefdZ#{%E0_ݧ*xC!RL^OUd,<ԇV5^~eg`MJ 󂳎?򽼬ME$3v.8 @">aD[dDQb׆]%@7ƖL1-Ok<ؽzomG'}xUg#ݚez|-Ӟ۱N9p3'{Uh.:~Hqo ^.WTz4\H_eZFA+yn^9Pƿ̬۽i`tY'쫖= rŏ_[ݫWV*MM>z=Xa-񅴐RMOOxGuz3Vq_"ֻWfoLw`~IIџ51,sI5<|=D6G5pR W1i!H*(j7ښDMB 6bTѪ4k R kG~ZS Y_8W0&xSB8<;oSJuq<D GRH&Ez؍5/;[moar \.˫=4WP endstream endobj 47 0 obj 1454 endobj 48 0 obj (*!.L?8) endobj 49 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 587 0 R /PZ 1.10327 /StructParents 8 /Contents 50 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 48 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 50 0 obj << /Filter /FlateDecode /Length 51 0 R >> stream HWkond#َ'vnd" 6Ll$QKRq=d36F`s%ƩL޽;'ҭ\C=Ʒ& 4fk/xWF)]7~?f Eg鋼ӹ6Ψ.rۘ&~58iY Ejr[zo6u!Kg/||{7;Qۿ/ }&S"#~E /Ƿ9]PQff>x|FO48_k1_4Ǒd>߇#JCt0L^_GgzAҒi-4= = cL3嚞^kJ `}8򫓡mV5֘T֫Lo]*_dfcE0I:Pe|"( ϫsdE#o&0|Qky\(M.nl[䫻!_(߄{g}RMo¿h ndUrQVFgKvw%q!QsCi.@=tԮ*䳒4Π>Ѱ)x5dj4 F(,*?Irr)pk59i+"vjTP +zzV7>LC(%w6E5+_ԚQ>YЫ\ai SY=!SwU>'^m X9[T2Cł-K}ˉox qmeɔLjц㶜]yR5~ѩMբ-vbe=-R]4~m2chRv~GE+U;B!O0+eA@ۡ}}khܓIy6K9P@+p`8@rzXU(-ώ4SMdo^{yS Uӭ M[2NG:?-<tb59]Ԋwe?;j4xhۡ]HFF5PҺj2:aLS 1vЌ 7RBG ;lQSsXlgJٗ8"` d6sMvo.SMde5v'qVotӪ&C[Dd?L*3^`  endstream endobj 51 0 obj 1721 endobj 52 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 587 0 R /PZ 1.10327 /StructParents 9 /Annots 53 0 R /Contents 56 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 48 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 53 0 obj [ 54 0 R 55 0 R ] endobj 54 0 obj << /Subtype /Link /Rect [ 92.39822 401.61943 142.50391 411.58981 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 55 0 obj << /Subtype /Link /Rect [ 238.17422 401.61943 318.5083 411.58981 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 56 0 obj << /Filter /FlateDecode /Length 57 0 R >> stream HV]o6}pc$ԧ-)+Ie.3և(hJ&q߾KJr'%p"_sxyEQ<ׯ#h\KQÕ=;t#\gJ(0 qhy_3?^QEoO-os,8zˎE!^2n͗t?;2b((r² 6B†u*%_Kز?cZu0y^ :GؖHgt >MȷB)Q}2s;ڬCb?_FAkc& `$ll ~py #~yrC--7Xa=P^<:4ORw';P:9>Ԭ)`JLJ{5?xDw#$p5o嚰%Ͻ:0pnD}|»nOKqpɕm{ِTT^HfRY]beum!?o{1}^dulof{VM>.r`ϧ endstream endobj 57 0 obj 1157 endobj 58 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 604 0 R /PZ 1.00719 /StructParents 10 /Annots 59 0 R /Contents 64 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 66 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 59 0 obj [ 60 0 R 61 0 R 62 0 R 63 0 R ] endobj 60 0 obj << /Subtype /Link /Rect [ 18.26866 553.38611 176.7294 568.27904 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 67 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_standard.HTM\ L)>> >> endobj 61 0 obj << /Subtype /Link /Rect [ 18.26866 534.72031 201.74951 549.61324 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 89 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_nonstandard.\ HTML)>> >> endobj 62 0 obj << /Subtype /Link /Rect [ 101.21233 482.65906 156.09773 493.58054 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 63 0 obj << /Subtype /Link /Rect [ 260.89429 482.65906 348.89163 493.58054 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 64 0 obj << /Filter /FlateDecode /Length 65 0 R >> stream HVnF}' qK APKNVD5ZYLy |{I,%E(P\ wfΙےW6YDׯ鹵Q4saQ=Lp}#B}o#\C9gוE#YWESy:ogS7ӨL.a/] Mv>!4qZyP+tRX[d@I>@;Z}Op80Ň}مeɢ[HqjDߢvOSDf@hwOG#:;%cYv RJځQ F)k֭y2UBd%*kmCT( ] rXdNXYxLK4)aQTpia)$- ӨM=F<[rښlT&NXrHdfx}qK) k f(pw`a* 2khȝ,un{sJbw65> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 72 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 68 0 obj [ 69 0 R ] endobj 69 0 obj << /Subtype /Link /Rect [ 252.7038 110.69786 382.13744 124.29384 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 79 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/combine.HTML)>> >> endobj 70 0 obj << /Filter /FlateDecode /Length 71 0 R >> stream HWmOHn0ʩ*귄ЪңW"Cƞ$n]}~6i+>̳̎c9K4yk͒%5q_! C z0D>EƙoON^O."/9ݽűȅ 2K@f &ML. 4 hۻҌLIbKH'߽w lJ]I.ۑXQ~//{3'BkQ@ps l۲ZP._EKaf24_K)0*ka#'l U09}b^?,T\+l0`ݲ,g3w%h2cFR iZ( DI PJc2Kp/*R.-Ļ;?y%e[N\R%ʐxR%Br`Ia3lP] 2N13&j4d{8xuc"Fnn/n۾ l+)*V9gbRI\ӲҔK56-\,a03!Fe]N2UK7nriX1U<O*]-]-&UAsq #7U1ChbuhQDrzH4_2ߍzh!YFH*Fk$'$Vбi|H!ՂErWE&%Ds6߯U+ ,78UT6K--hQ&=1Ѯ uXHVv]C&"]5nR7zwٌb\D[PgXQi_{JS:˒v䏠;}:ژ9"ʑ/h:-bO}<_B;vaQw~!Ň?4 G]؏4>{W5zJ{fƢefB+ۀA^E#ʏbR{O> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 72 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 74 0 obj [ 75 0 R 76 0 R ] endobj 75 0 obj << /Subtype /Link /Rect [ 92.39822 531.05309 142.50391 541.02345 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 76 0 obj << /Subtype /Link /Rect [ 238.17422 531.05309 318.5083 541.02345 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 77 0 obj << /Filter /FlateDecode /Length 78 0 R >> stream Hmo6 w8Œ)ERFQ,v,eUHJuf}'YveP"ͻxϤJa;L0JD w_Vpwc.8 Sb:&8KS%@ "TiYF|IAoEĨJB4jC_}P`5Aȥ9Gq(c"@Iɲ~.|b2Ob6 +bx mˇF}"ưDzA (4R2}, !Qwu'h ( 㚫l[9E2MFW%a.lXƉzv~MPm?5&2 4?Ikță^ԠJ, *OJJB#&!TWMnQҮVRTD]0L4 MP,0--w=( %5 deXC> Ptx'8>u=IEy+#ZH) =Ag(.N![͖y)f{]Pms\cK fPP,򙐧0=J_Eaiă۰؉X~W%fYPn37N\ lʱ!] n#C͗- NV"ųyԡe"#gkIvq}õQ[}&aM?è,a77 mn/Q (LB ljFjZfrbQۘ2c ?C< %UvR{:Oo e`P E(5nx}LǹL [ר&Q "^wCzN?uLnXQyxj-h$eI\.I{)F?qX+}^eo,֣k n<'ir>}T)ֿ1րp3 W:u! endstream endobj 78 0 obj 933 endobj 79 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 604 0 R /PZ 1.10327 /StructParents 13 /Contents 80 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 82 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 80 0 obj << /Filter /FlateDecode /Length 81 0 R >> stream HWQs8~LP`i-Сq!!r"j[Frv%+qҴ<\NHDW1,YSYp2k4pQ08 a8~`sQ2#d _ON;=57:G-?TFLpӃYgl6hӢT(E9OV 7"G|9:턟y|*S+>y o\SDDFaxxw>?>8K?슼i?7_Љo4 6L2Ӌ߅5rA48 `8~ ﰢ~p4Y,¢-L^WZgAf`~XP)^)pHe&Uь'YwbƱ( nZrHX!S8BveLo.b{WP%ppPԹ5 d (NKY̺[t,!DecKԎI4suc Ow27"J;kCVY6$m!Y"!t#ĬFv x)X% `7TS$̺6vS˕BresglevϹҠkLlNYב.M"`>{ޯyIb-fWA|hC1\rMJ+i+T nJdnu`Wa _ 'sJ^JP6QbVِ5 %&(:ʋ+hX̺Z{bJ9/bF9dEZffըJhY5z2ͮhvH'!YCß úARh軪*Nd%LwpUBkCdkc}_yM< Jc4u&n5ڧ r`92jY:Oq _; LUnR.ᡞm"յvnj ~sX\PC(0O$l 1"\l &\oʊCA7P+oG X59 Gfs)c6d`[B%pyq}~ޮ3A1"TE[2 > G\RZ9iڧ5iFW,=Ű#<>:Dz,;u6֔W1 v˃9SV#ז;-p[DWBklK&'s{Rȏ&je]ht}[a,›=9ecr)o3-)wg[8;3!^ٓ2x23Ѡy1ܙ(?A \ HɸVr(L^|Ƕܧs1xWX:KO1<4C8mO`ȱDpp1+E^Ta\.M SMU aRUab> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 82 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 84 0 obj [ 85 0 R 86 0 R ] endobj 85 0 obj << /Subtype /Link /Rect [ 92.39822 604.53531 142.50391 614.50569 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 86 0 obj << /Subtype /Link /Rect [ 238.17422 604.53531 318.5083 614.50569 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 87 0 obj << /Filter /FlateDecode /Length 88 0 R >> stream HmoH#;TVx:ġx§Jyge3Y—/㓉A{<0Ew̥ Uʌqh![P`Fо@ȧyh"eVf=Zβ\44N&k%0~m9Dt[]s\PJIXj- 0/EWP]^=n^%Y{k gwHq.BxNyTM*;umlNmY)dJbZ(+Nuki{yX]\.Cʤ\6B#cT)e(XRԫHC%R, NOa8Ө^ޙ=KC2t¼Cu;(tV) *WlLs4[CeQa{e)is)X|=#>5cTHidzkt~nLQҀt azMe a4@9P;&)B"|iC(q`w`ql6oAlpp)(Clf{h HQtSEԡ<";dkId7uZ/i:#.XKPu 6], 68a<~[ 'Vsp}c ϡVbˍY'@|AT`{O̱8e*Pj/hԵ_Zߦ{Kl_Śd#BGxcw9`y 8K ~X?nY2{˲Һ:2fCkH-fZdqUq V|ěaq0jrw>09łsDWu endstream endobj 88 0 obj 939 endobj 89 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 620 0 R /PZ 1.08954 /StructParents 15 /Annots 90 0 R /Contents 93 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 95 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 90 0 obj [ 91 0 R 92 0 R ] endobj 91 0 obj << /Subtype /Link /Rect [ 93.56221 315.60983 144.2991 325.70583 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 92 0 obj << /Subtype /Link /Rect [ 241.17462 315.60983 322.52069 325.70583 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 93 0 obj << /Filter /FlateDecode /Length 94 0 R >> stream HVMs6sFaOq@f2M'ʸ, ń$XK{ )Ӳt* %X}v{t䉆ׯSy)\3Y;{b#O0hl[ pmVr޼8WM{!rKB,9 E1G#JX9$Z2*s%RJ6剒ϳλn:q/b1^+1>L`7C7! BPJ Xj- p?"]Cj=G>\7^%0(D,m8e)%0oNV[hE$cx}m0ydǾ;LŁńfo.'˽J*%*%QRA)U| +^C-⹱pb>!=rh5$|] \"2ZU2Đip-`cz[kQcg/#\xǧk%[hCRlCXtC-yC1l @g\e! q #9:_٧NT2Pvmi!xOMWPHKA+d,W5/0YR\VNm9ڂ,ђRlOl^šRmfLwUwhӥo_n hSYtY?X*pXX$,F-MO?KS9T`uOOIQĎM!mt"K̫i8tvumނTZh4ؚ[)F`5IVC n텻l  }e;!ý#1q($Qy8(qv9">X. Y*{ͦk͛-ȧm ͦa"K|k8[46 .0T0xWRp! BπFGaO8fܹl8<= ORM9=?=̣pG[O]4Ё=l`)۷_$ŚtCG 3\;&"?F~O2Y.+l6ļHD*R ]V+.i67Mo]V5e}'Xc^ 0N endstream endobj 94 0 obj 1208 endobj 95 0 obj (7ɌN!UhX) endobj 96 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 620 0 R /PZ 1.10327 /StructParents 16 /Annots 97 0 R /Contents 99 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 101 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 97 0 obj [ 98 0 R ] endobj 98 0 obj << /Subtype /Link /Rect [ 92.81517 318.80687 222.24881 332.40285 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 108 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_swallow.HTML)>> >> endobj 99 0 obj << /Filter /FlateDecode /Length 100 0 R >> stream HWn8}N G7; NoY4E71%f+*IE.v}{}YNm<3s b*x9WK39|q&wOa߇hO93Y(3xzrA riOO`)U 5ZCcvF aZGW$nH`1 7z{ua9t~ArU:ywt<:?s,';OHc5[,աk>|= {h8Wl{pq)Lbԫ87*fcsh}s5_Ay=\C`l '͓N_!uچL>u B,")ҜgT$SA %t'|"(%郂 e xyB?j3AksϭฃiE,YYow/3crAsC*%ku xn{2GKAJ %N|D,t,R1U(IM,"i`{ΜGc9h57v+Qc2R yN݊%XsTYZzs*sbT\T3Ydr$kZr,QrΌB VS\3%!4<@@L>L-yqoz k4ȸfp_:(Z 쥵"5ޘr|fP=]p1j8AVs46"*P[b B;vp) c x'xf~W~glfg!9k hQ! E5^]]GVS S>xgsĚm1I{RD ϧ;jιL8) <ZNFpiJ> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 101 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 103 0 obj [ 104 0 R 105 0 R ] endobj 104 0 obj << /Subtype /Link /Rect [ 92.39822 528.51517 142.50391 538.48555 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 105 0 obj << /Subtype /Link /Rect [ 238.17422 528.51517 318.5083 538.48555 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 106 0 obj << /Filter /FlateDecode /Length 107 0 R >> stream HV]o6}p%-R+;]!Xa$VK*I~.a+n![ǹ{u)Tb2oߺưlsq[wI3NJ-BlP })*Vܨ"U8N<ΝٔP0]9,S>rQ̋ jy?u_NOXej0~:V¶!!y?k(_Իci\{ܫb4 L!ܶQJ ')y#J䷳qk=|2JQ3ߧBÀ4a`(J׃\J*fJjcp!䲾[- lǕPx>suVs+^( Jqz#-,ܳL/1 +Ys`BXkG0.ۅЍfv2Y"OJz\\+UHe 0x`тn[`]e#Rj q73ng؟K9'5] p۷sY;x{@\Cu Y)%Y"֫T;6Ku%ly~ w1= +Fr? ].p] DlUi3;&-vnK k VOaZ["gjSL,l+AbQJ|Z>eX6\]9sڈ6b:*K a5Z%> ćU?QPpF1>>Q #KI,Ycꩉ]EeX3X)DiN残xdD&M6mUX9 5x.q ^-G( P(F^蓈fH8:-?~-sߒ$h :PySKOp2dnK{ٽ_2MUMx^sdg ãc;Q~V[E@z 1ձkb4h3my%HYU+?맇 i*mv8m3xGOc?:xy;' endstream endobj 107 0 obj 1105 endobj 108 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 620 0 R /PZ 1.10327 /StructParents 18 /Contents 109 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 111 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 109 0 obj << /Filter /FlateDecode /Length 110 0 R >> stream HVkOHn)C M"m%vBm"C]`,ޱ"I+Hsq -bjx9Ӛsg&s|0 ma0Cd"cZ ޼X.OqoX'{>,Du!B(5Y̻rYlL(еRŴbI"+݂sTͬwo&,eǿx>sD0CC }(2Xj-Spy$nzƨ_kGg8jw6FP N.&LVȫ]no|S ͯ<G}xߠǨ?2h .t=ۇݡW/C5@h "Dn@-C,2 R 0 [βHP, )ϴ 0/:Y'cr!d)Xtϲ+`:;^Ŋے:ob 9/ cOYXزP'[NFW˳ɻ);C2;ԭPĒ2!ĝ6qD)rC~yM}["˗҆fȎ=Sx|||=7fJw?*! YFKU`kunsHK`mEt\L܊=*hgY&%LD K A gR/d>G9ʪR0:m)m\ uZ:O{,kz* u4. b FrHyMi\f٩D C -Jſhz(Ttm}%dTo .r"WnbEFkaҐS2b Y+T4'{"hXtK$jkeK!ZͰѨG^3$ணf֕\j%>k۹.VZ'k`MݳmmCS=Hw5hr)׼mI hLuzB;/$<`H[zlol+,\V\ްocgm-]?˂Ԫo|(C~\.;=^om/wO^GWZz͵O*;kY؊;ELi'ΓL"'stʅqՕP9J Z\;?>\+g endstream endobj 110 0 obj 1263 endobj 111 0 obj (rԂ=-M&) endobj 112 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 620 0 R /PZ 1.10327 /StructParents 19 /Annots 113 0 R /Contents 116 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 111 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 113 0 obj [ 114 0 R 115 0 R ] endobj 114 0 obj << /Subtype /Link /Rect [ 92.39822 678.25214 142.50391 688.22252 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 115 0 obj << /Subtype /Link /Rect [ 238.17422 678.25214 318.5083 688.22252 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 116 0 obj << /Filter /FlateDecode /Length 117 0 R >> stream HN@W;U')B%V` !luUwLHDNV;;48 CcxFpB]u'\ <!ʹp+|,6#G=¡HsTILP&k1  Œt.Qi߂(PYc|'#!9T70@i×Z)f@& P*rr^pu1:vyr;1ύZlΪ~",=ߞdY< Rt/ K綊BRfs(wm|١PF~QJt`AvNsؕTBxD:O @ *ypAY!7𩔎l8H%⮇DL7_L\ڿHF -uM6m5$kDZJj^Բ$>SAUV70>B8?A,>ja$ |9!F-í`J<يOn[f[7B[*; u-L^H7nSZGJV417+gTn$-UNhϝ-3c>.Zm邰OMMc= [4,c=Ʀ)u.i؟QT6.]X\,RWEb8Mj6Tij=9AZΤ$G=a- endstream endobj 117 0 obj 725 endobj 118 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 641 0 R /PZ 1.10327 /StructParents 20 /Contents 119 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 121 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 119 0 obj << /Filter /FlateDecode /Length 120 0 R >> stream HVmo6n|h%;~Iӭ CDY\eR%8FQ_n_ "=|kmE" /_ֲ(1SÝ? `x;2]l!$BIxjt3n~4<{>VbɭhM4܆Ic蜆@ ^Їq6aV0V2bOj6^O Yn Ghͯ)wZtпO ObGZO,"]h] ;AL>ąS:JQƉdBhPf4{0(Z?v n pPX {~ڗZo /Oݞ^[q;C=%g_JH!`W JM. i(=l!R *5aI8`rDCn'\@ݝ2 "A!5k^4J< g0 ^K.-I "4(Ys%lZ2\( dx@/"ZEā!;-45y K'{@wRȺ3-Z=0W>kWJ/j\a+8~fYU*3`8JdXD1#e|J| y"$ZA;Ϳ؃DC,ӡU@_NOm*^{ծ۷UXg4sc-s@>*/98S '庌-\S,79âJ̸+s |0;2ʊԺclSIermY#N)2)kQ[K8p+nrjDLfqհɨtٲu9i%}Ḱ)af|\Ī Iih&8eqkִsb0Q:DeZ*=k&qQ4\PX/VN?mv~ll73 ~/ɷBؓsul,G3=iyi|TEPAJ=͆**7CJD4}dD-{ @5$_g_utz*^W\N"˾&28wsf*MUØ{GU5v}ܼ*}ܧĴQ0_4*eq!ꐿ|j0䜪Ma|;O;}2~3;{=yEuc /B?oV\wHCEnIz}|pX wƗ^c< :ǧ_twJͯ|Zyt`AJ{X?ɳ*(}'Ry潙NaXbnB* 0ۉJ endstream endobj 120 0 obj 1327 endobj 121 0 obj (³C٦VNæH8U) endobj 122 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 641 0 R /PZ 1.10327 /StructParents 21 /Annots 123 0 R /Contents 126 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 121 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 123 0 obj [ 124 0 R 125 0 R ] endobj 124 0 obj << /Subtype /Link /Rect [ 92.39822 69.1526 142.50391 79.12299 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 125 0 obj << /Subtype /Link /Rect [ 238.17422 69.1526 318.5083 79.12299 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 126 0 obj << /Filter /FlateDecode /Length 127 0 R >> stream HWms6x2$Y9Kyi8i]C! w )Jۙ-g}v7ʈֿ1G)Kr)L&Sp,KOAYw_.zЯz =g _L*sD J˞  eڛI3 ? '{,Vޫe VJ~OѼC_LWxPݟKcd;|-욢>9?C/ 'CN#G!Ԇ|,8v߅]3:FȻήzW#YNbp?\^˗C+A4B(l%,VR7>"v䴨5W #L\2`6@.}=|L3-EZ5RFฃf][ 0 Ych\pW)ڔ%WHZ_爻UT9jpxH,V9" (/n|1]<RYKVaA-WK)]f h`MA#jDz wNkX^fHd098hpo͸EcJ =ƬBA6~cM&xP*:A]<F$,<",aj3٣vdh8 )"(x25jXH^+!VJb4rһYk++l򄂱[ ӚeP)%Fqj鷺$|@6<h P9/FK[P*sbUKBDVve(V506Mޯxq~_ /T6Q1+"$k/\bI$drͱH Qsz.VbW}ihbslVіVs+E4 RilUemAfۊ,;.A*:^;bl7 9J#m ,GeKfpqGzc?W׍ WYR%w%zA +T кx,TަeWf]ͳ8K{!k ߫pr˥śP߶* %iJBϲ*J̉mJRd\XYM HӨ(uwV;5雾/Me-TQDzmvؠ9g[6TNQ4Մ JM+Dh*1v&&hTCWn>izϙK-a~sį튺/;7;8;ǽˣ용4]=?tgTbw tK| 7ҁ7{HCμ0-f^h {׬wDxyu4D3; #yI0z~^ ۑPv) hܜCy{q3j4 wt$Ω\qm6ܽF!p|@Y gS‡^d8q0CY_Z͛@zeDQډ( yhBS<(QNʽLǓ)_;tl6sWvshyR8zXGc OϮ^B ecLy·qi/ai],t poeh31 ʏ|^G0n?u"Se* endstream endobj 127 0 obj 1773 endobj 128 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 641 0 R /PZ 1.10327 /StructParents 22 /Annots 129 0 R /Contents 132 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 134 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 129 0 obj [ 130 0 R 131 0 R ] endobj 130 0 obj << /Subtype /Link /Rect [ 92.39822 222.33389 142.50391 232.30426 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 131 0 obj << /Subtype /Link /Rect [ 238.17422 222.33389 318.5083 232.30426 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 132 0 obj << /Filter /FlateDecode /Length 133 0 R >> stream HV]sF}gN28{aङZrc5K˓ X,`鲲]@²v*[p=T< oޘRɂpmFsGu,? g5 GOw_M^#/ МID;w9hA~oiJV\`R0{zA3Q#X,p2Kklt8Bq0$<10{=Z*sfQ@.'H% Ӻp+B*zX;n`*+r2A9rۮ6.`ЇYZ!CCl8 I[# $Y> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 141 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 136 0 obj [ 137 0 R 138 0 R ] endobj 137 0 obj << /Subtype /Link /Rect [ 92.39822 293.39549 142.50391 303.36588 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 138 0 obj << /Subtype /Link /Rect [ 238.17422 293.39549 318.5083 303.36588 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 139 0 obj << /Filter /FlateDecode /Length 140 0 R >> stream HVko6.ִH-)(sh.3V qeH~.)vl\{!y yA3 /^Zlrqg[w:O Hb1IOf5]rA5^t<0j_885+TbZ w3ǝ_hj BOs>??ܝJeVhpr ŏ#I8ď$NNL [𲔲FW_W {=N &~wSM"A<. :? $X{㍱IjaQt|գefٓ-Pp l2O\௟l=?_ Z1+70R1@0t  }}i  [_M|3Z2)SP+ \mK`jfkl{q9x V{Ȩk&q4200+mĹY>VRY2)4f5r[*9^HϊePϏR  IѠZ3բB L$)%Mϵh>ؾ(X%B6"׊ R1VFmÊv>*1A/E+gj^ڳ陋_pӏ =bcdC m=E ":=SR!2w8=fm{)Z{0:([uؘnWvvZB-/W컱 "7L7KfJX=3Ob>3&r2z\nYmy#BbߠA9IJ?#GS֬Chܓl1[`6^J|_#[X*nÎ^3m>*LЍ98=2wFw~HI2j?C(c~?E$c)Ic/qd7ǰ,rT;ZXc̎,{sCl;o;'Qͮ> ܭ斄Xf! _+z$LA$pZXm)P퐼xo؝JOx 5S%PM&8E~DaGod ɪ}id( y|3!L"poq7Ot8Ϗ|eu})55 siݢ.wv)|QXL(σ9nwW0It endstream endobj 140 0 obj 1322 endobj 141 0 obj (ֱ'žX{`|) endobj 142 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 641 0 R /PZ 1.04837 /StructParents 24 /Annots 143 0 R /Contents 146 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 148 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 143 0 obj [ 144 0 R 145 0 R ] endobj 144 0 obj << /Subtype /Link /Rect [ 97.23703 337.66808 149.96671 348.1606 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 145 0 obj << /Subtype /Link /Rect [ 250.6472 337.66808 335.18828 348.1606 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 146 0 obj << /Filter /FlateDecode /Length 147 0 R >> stream HVmo6.>m]]b:Exˇ4(hH*RQe}'Jb2$ sy՚gjx9ҚМpeb!78DvDcZ* rA4޾][Z.tz/,8{͖5/9[嬽.xά,J34wm/ui<:#EΚ.L`Eh-oo~sYJ75[ȇϝsD;CS3χ8AͬW , )Z|bosb{8_`yI7a/m&qg %Zjs.ܨ?s{QaC(y;TG;B#AGn_?eƅdwWAJ 7 }B:eȞ0c& a~Zg_; n4K. MypY$ &aڂ~S wRєV+2ɝ!X+kG0x[ ?H9 p<;r&,t\,sC9TD0}"fKA{hpS^ݛ15 X|S]cK)Q`+ pzA-x.pť )XIlBIWt ;&cu69r]&ܝ$|{ xٮ/3~d?e`drmԒ^NMfi*=# MCLA\[Cl&Px]u\rCi6 XsMNVHZUNVCgaT\ǟ9BpG-.'.'U endstream endobj 147 0 obj 1205 endobj 148 0 obj ($'g^) endobj 149 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 657 0 R /PZ 1.07582 /StructParents 25 /Annots 150 0 R /Contents 158 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 160 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 150 0 obj [ 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R ] endobj 151 0 obj << /Subtype /Link /Rect [ 17.10329 567.45929 102.9915 581.40219 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 161 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_uses.HTML)>> >> endobj 152 0 obj << /Subtype /Link /Rect [ 17.10329 549.98421 126.41556 563.92709 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 169 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_include.HTML)>> >> endobj 153 0 obj << /Subtype /Link /Rect [ 17.10329 532.50911 149.83961 546.45201 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 198 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_include_ops.HTML)>> >> endobj 154 0 obj << /Subtype /Link /Rect [ 17.10329 515.03403 87.37546 528.97691 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 209 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_onceonly.HTML)>> >> endobj 155 0 obj << /Subtype /Link /Rect [ 17.10329 497.55893 102.9915 511.50182 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 217 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_inheritance.HTML)>> >> endobj 156 0 obj << /Subtype /Link /Rect [ 94.75589 448.81871 146.14009 459.0435 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 157 0 obj << /Subtype /Link /Rect [ 244.25159 448.81871 326.63548 459.0435 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 158 0 obj << /Filter /FlateDecode /Length 159 0 R >> stream HVmo6.[W,_DI bӦ%KCtDjeɕ߾dٲcA!NyxϽGqbKȘ8ܨ;!aO<͊de^ W"ǽ9>e^VT*KʜAHA4vTI='Mou d>9#h踗f̼҃lZaiā^}!>Tڹ|>@ƔSpO؀{N.˻Y$6F@rag^m|1Ӟ߃]v4[je+vlsKjLD}wMS)G=cr덯TDaQemx'TD}b3;tbA1$1jƵqdzS76I?D#+F]8My88C.QV3 endstream endobj 159 0 obj 1132 endobj 160 0 obj (jBVerʋ) endobj 161 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 657 0 R /PZ 1.10327 /StructParents 26 /Annots 162 0 R /Contents 166 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 168 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 162 0 obj [ 163 0 R 164 0 R 165 0 R ] endobj 163 0 obj << /Subtype /Link /Rect [ 9.06398 256.62796 62.63936 270.22394 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 164 0 obj << /Subtype /Link /Rect [ 92.39822 226.32204 142.50391 236.29242 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 165 0 obj << /Subtype /Link /Rect [ 238.17422 226.32204 318.5083 236.29242 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 166 0 obj << /Filter /FlateDecode /Length 167 0 R >> stream HWko6.~ں ^%E}еފ!:Fm.QT\o%%%Rb(s=|=Wi \kmYRVp\ qiHЇ8r_1p? /沄/Om~b޲Ri3Pܙ/wIm8G ќ)xZ^:/]/hoa>դQ[Z D s@O$Υֲ[kp?Vʻ?U;o4CJd*3f f],޿^ wwALoSͦOA)h̒tfɋ0Yj$]|}xmfꖁIenUI$ALsfls /5S k UڂCe@mq AL4,eRrha`릪ľXs@˼Eb@Х؟ucBFF`_+xXRܕc!2Yj|GrF3pQ8@`R,MGYA*͔k% B l;25!fW[LRHkCKJl32Őge2> {kq%oӌpEQn:Y.EEz5y y&4X+ I.q}~Nq|8=<젷 a,UC13aJk.8J'#nV1I8.YE ma RKH<KI{ӧ#[F?x4F1uCF8P21;6|zf!>ށ ~(!8 4ú?fx;3,7L}Ֆ;<'K6 +6M1tPq`|bu:=ָĞ]7hwˋ0]bK $P ǣ`]P#4D Ĩ҃lbcާ&~2 &":0EZ&Y\QQ>d( O[tw™9GV8f/ 2}DNպzݎ\"5siu%ΤݬvژCuҥ > /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 174 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 170 0 obj [ 171 0 R ] endobj 171 0 obj << /Subtype /Link /Rect [ 488.67213 540.29564 569.85976 554.79343 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 182 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/invoke.HTML)>> >> endobj 172 0 obj << /Filter /FlateDecode /Length 173 0 R >> stream HW]OH}p>PW/6+`WUՠ2Ό ه{g'$vf >KqT `(ab ͢!}![aJˣi : [סu}{i9tF#otJ7\cz큠c-'8#sCG6Kծk]v3HׄeTGt{9U /״zq~zڽ^WKh Wp^v[=\|c`GogN<ۇj=z^EKTcKRJbIXF%A$ƙ, A #*qdfX 0VD#[Q֮Ô#CŮ%%*,1LςBI<*H\* lk*rG@*dA}eE *pFa KK\WN-֭oYx &;|w!+ ^tlÖ[tXf}7@;{FG x89IkZ B%Gt(8*3<ٲd0Aylp)=+r7V >ٶ}logxyު9-9VHBI;6Y8nY LV-'u=1CC֕`7QhHpRHƥ5F3D9޴NGm>WΞ۰H)r%SeőwB>>PbGMP(k LĬ4$.a0"%j)_'*g{M@o~Lg/^h "G3A&MrW0*J!4++2~-LM//[J|NSLbyQ*:IVhҩQ "K`f1{h Q{NLUh''ovc %PF[6ىlACJ`JGl[5,!dXr$/aϪǦt,TFma񜾰z)鏒Q ,Pŀ#Rע4A7 dv=6{<,WVcf-cAch>/]Vʔa60-Ufݧo8o2w_wp}ռaחƷ.nxx޾v^]}5ЧsTq86Tjے:D*')NTN$ %O&o0H{tN) 04 endstream endobj 173 0 obj 1425 endobj 174 0 obj (=,Bo<:H) endobj 175 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 657 0 R /PZ 1.03464 /StructParents 28 /Annots 176 0 R /Contents 180 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 174 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 176 0 obj [ 177 0 R 178 0 R 179 0 R ] endobj 177 0 obj << /Subtype /Link /Rect [ 9.66519 491.96968 66.79422 506.46747 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 178 0 obj << /Subtype /Link /Rect [ 98.52698 459.65356 151.95616 470.28528 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 179 0 obj << /Subtype /Link /Rect [ 253.97227 459.65356 339.63487 470.28528 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 180 0 obj << /Filter /FlateDecode /Length 181 0 R >> stream HmoF[wQDO4P%UTn݂5~%HMg~3GR^pig+{M pxIOM~K^\[_UJH^3-y[̲3.d/`$qcj [1x3o+c8דuYǖ]Vw-`kI=h_ #D.F )4@Z`R/Wz_cn\ Q~$N:$etHy -XVw(wt(  ' '[q7TrhۜVց£\m~8j6V#. ;^^ ŀeW3t^JAZ*P Y+Ֆ`G .i8zw38=ڃXע/i.Ů+LK=C$Ҧ`+  Ѱg=d4ԝw"wIET)Ͱ)]z# _;m#גLQo.Aiɨ @ (X%둋FKQۧkCkf< _LhZmKIkm+egDwkvZb|a^\D#GûI&QS#Ԑ͎+ VjMb@9lǸP4u5h:xP)V H\X qI鬈~6L=QM9w+>O90~]Ie&m4!W%tC$#ֶOz^ 3,v%tI!q~'isRǘ~Oҙk)/uGXgL30?s\gR>`+{ă]=^ ܞeuܶ51=(f[PEUyH4>vxOǟұ'>GηWd`xt endstream endobj 181 0 obj 1232 endobj 182 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 657 0 R /PZ 1.10327 /StructParents 29 /Contents 183 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 185 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 183 0 obj << /Filter /FlateDecode /Length 184 0 R >> stream HV]s8}gp>c@ȴ)$f&f;Cl-D}lBlMlKsK,}~%+0V%| S_1Fcz`?xm!cK!JӋY O/FT("-Ӹ] ih EյW?\]qV 7F˸qy;k_bJ| L~rh`p/IQFgCм F"Se* ᙅX)VG?h<$st_)9!]_` ?WgHq8qL.tݽ[e,r UkX^%.W E !&{?HͷUDȹQRF[c mՆsv;|yxJ܇-bjM% B "(\\ZӆOW7d ϛtpw(Ț[ZrA| mA[Ji0!2 Gkj_딿 >VZrma%b-9Up-M '>G.CVG"J(w^ "YJղ3i2*Uq 58uvڭldoTIVӨ7#S5T$zsgYUǥh'$>^fQ%5_D-@W?<XΊڙtA]@ SaMl {Z^5b>1*2lEV,I`X:kżҵ×  &"!8”9ےK3BBavҒ j ).ɕrIVL(T5ݐ)3 ! md:Wl p%s|$;sbљ \m .aJc ĻUK|fż>Uȅ$v0j=ndxi1."AȌLl^>%=ל6];zACO+ˏc^x;`.ʺLh㇠3y˃n8\!L/FnEhD=P orR`nS>n`fm J5 :q2;=JʘLh*o !sq]Zw*D#Ɇ-7(k jMG+??q{3Gxhϱ>FW֖alDIn?)36ʼ4L2c|{W2Fdݰ7 ^;y<:o{` endstream endobj 184 0 obj 1416 endobj 185 0 obj (xqV@\npiE) endobj 186 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 668 0 R /PZ 1.10327 /StructParents 30 /Contents 187 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 185 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 187 0 obj << /Filter /FlateDecode /Length 188 0 R >> stream HVOJNptwƘ[6ˋ,2Sv"ߙ)((s;YnDBC''1,~COQO#8vfkS<߰{!Ji[i"\JgXA ʑtDÆiVvzQ=yOfʩK79rrUar1\ O,3E;Qg}ʺՇo!AG$eJؐ+f ^[<+UjxG{=[%AHb ٠d6hzGnr~5ZnyꟉ3bIB0\g BF$ VErS q1&64 ,;M*Ƥ!bTa`2Ě#82=zk,gB]knN$tsR1 x2`*K0aLU+ (wiMۣ¡Cul.OyOf]FNE%VfsA|T՛\}4g*!89іaRDYqs #0?mƆ*w!'A<hS ,If$kqEtr-j=&:T\T,PH Or=ir`☖%VjYM eLk'HW&{T&&K4TVy7W.Rr !L64#d"`Nշ%q-+B0%xڨiђ!ضڪ?L.kC"Z^bQvd8PAG}Kie^DMVKڣKg!9(NsNBip6A)#UZ K6(;+r> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 185 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 190 0 obj << /Filter /FlateDecode /Length 191 0 R >> stream HVn8}I [7_dEqv$m6q Tł($jI*na}؎"Ϝ93\(D޹R$Yxs^Wo6?K0(@n4A4ݒ%+b7of%> s K@0g6wy3gjMAnpNKP+ p+h%xBty;w\8g ʻڭko8!APsJIW]Lwǖ+澍3~4? wh_h2l$3lކRSW.u.MX $~i66Q/aD ltZ7d\^ㆪQ:ǒ,$-%*2z^ST9j[p\b3q'k,bAh%ţ&Zٳ(Cp #-3s)MkldE%+]rR^cZ죤ym>ڌ( &D=82zeJYvk%dRIS-P(e)׽$L K8ti kQה @ ,2+U aN}idkEt@C0A/4aokO^I|6__wmQlJSܟgF/f jF_jkٱXSXcC 1 ge[[#S,0l`vhJ-UCXvc3|z i?#Qҝr_UuJv\Ƽ©ɚ }63`qFwLG;;c?Ĺi8 0 qiN#NWz'/V,|a v vG0G4`xxr _Ԯ 3譔> /Font << /T1_0 895 0 R /T1_1 899 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 185 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 193 0 obj [ 194 0 R 195 0 R ] endobj 194 0 obj << /Subtype /Link /Rect [ 92.39822 753.12062 142.50391 763.09099 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 195 0 obj << /Subtype /Link /Rect [ 238.17422 753.12062 318.5083 763.09099 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 196 0 obj << /Filter /FlateDecode /Length 197 0 R >> stream H]o0-;_4d ]lR͖ƙߎv[6(H(Jb9=|:,ck\Mc.YAƒ Qz_) ,/6%' P?f9 r wV.ʚ<8E$e)0H(j.EP7 )f 9+6/g` URt rqeWF=|\[;C`x%"1ZWS $\+\X2!`m޸\(LE(i$1ɱGEWrOlcqל*jG-q乐P)S)A K|*X@C_-Mn]LogK-VXMV~úE* .@80`]8_f>2Uf3]VTddZt1!YU_|]u$)ȫGF +N^y0Z 0Z^& endstream endobj 197 0 obj 573 endobj 198 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 668 0 R /PZ 1.10327 /StructParents 33 /Contents 199 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 201 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 199 0 obj << /Filter /FlateDecode /Length 200 0 R >> stream HVn6}lr#Yb8] ) y)D$U(og۷:HBK3g\HJjXޕ$NP)L&S touAFVN3|,Z$s|gff`L?0w ~b<%=Jgu| O׎wGפХa/&Di|}0AR xo.9x74}gTh?CWp|9NZ]& F_?[~-i0q_ ۮg`<0pg&? 5llu4alE7>]ag@mӳ4LÔn/:XG|^C!i!EL=^1KVD0!DEaA!)Ă#ji+S. K))אD=4w xx¢(X_f%KWMdVSI4][Dd#FeD9i4Þak\r6 DSiA+|Ɂ@GFݚ1~H8F8:lQ _"fzb%I12 Gu,[ g+0u/J޵uͶ40?VHyۻx";h+]WX;te]2zhFruR.48gFl%3"X<9y0Kz:jJժulUa_5 Yq+{[EmHljMUvUf;%,jexq֧u{2ƍD Bf'mQ6EmZvʊp"&" @沏h8PjDb]a#?Gm2]W݄fJ_SzPrc^S#g^1n̊hhCsUNm2a[s-oB('"nSe+°v25s2qԙ'{:'%}f }X@eӸ6%BP.4_S61NޞOldYdEgzv#-!g%j$#A {92b77nͅpV> /Font << /T1_0 895 0 R /T1_1 899 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 201 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 203 0 obj [ 204 0 R 205 0 R 206 0 R ] endobj 204 0 obj << /Subtype /Link /Rect [ 9.06398 730.19431 62.63936 743.79028 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 205 0 obj << /Subtype /Link /Rect [ 92.39822 699.88838 142.50391 709.85876 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 206 0 obj << /Subtype /Link /Rect [ 238.17422 699.88838 318.5083 709.85876 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 207 0 obj << /Filter /FlateDecode /Length 208 0 R >> stream HmO0[8i(淼#F cX4> ԥR/ %iܺgaa 1$c5u}n?!AOiJ+`gt:0AC8')v2\W"(S )iDŽ⊃xDPS@/9EKȃ}!!|(xS^p1zT fl^IBiFNO22$ʝzTHIJnk.pA=PyDA]CCȈ%".R&#\碀/Kƈ^lL,ђ, m$8\^E-osBmӑT/deJ^Z^k.>wuԨb}-XnsDDC_X+팭Q~Z{IzjVjlBY祕#T'r)`U1+St]8~a}D!^.hbr&Dz܉dM[0Y 'dyl˛\|\xw5tBx#B Z\:h2S5oCn*tR v?KWmzK.(X{- D]Йba> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 216 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 210 0 obj [ 211 0 R 212 0 R 213 0 R ] endobj 211 0 obj << /Subtype /Link /Rect [ 9.06398 304.84834 62.63936 318.44431 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 212 0 obj << /Subtype /Link /Rect [ 92.39822 274.54242 142.50391 284.5128 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 213 0 obj << /Subtype /Link /Rect [ 238.17422 274.54242 318.5083 284.5128 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 214 0 obj << /Filter /FlateDecode /Length 215 0 R >> stream HVmOHn)aJFUu^7ސKpB%8*7L L>EgWzƏ7)`l:ss0$´c9ZZc*5' s".*^ kq L,pK 8cX(joǠZa}`>힮 Dg3ͳXMU=RKVT r?Q]!.(bҨ\OoJ%]Q)Ægt!Ty,AC9{D,/P >V1l}Bn,;‘-$o[<׈odG3mbr bYNhەnkBF{WѣE02Xum'6 b{LH"G\X,{z^Ƶ{X9}}vu@ܧ=:Kk.3G\.I}"JHRq3"Ox>7VIRW5L{dtO#;|K endstream endobj 215 0 obj 1315 endobj 216 0 obj (TTpvS/) endobj 217 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 689 0 R /PZ 1.10327 /StructParents 36 /Contents 218 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 220 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 218 0 obj << /Filter /FlateDecode /Length 219 0 R >> stream HWaoF.aԐIQ-j ZC$+r)nCqݥ}7BIN['qw7of+T.RG/^įi!35^>B&SLhd:Ů(֪N^5>(?O.QJɨ|1%3iFh: -6gU!rJ%*Ȥo7k߼yCwBdL[2r%UOT9?uߊ5>ABh|uPIt<뿢6 Ҏ'Q2KY48ӿ5G8n}sqt3N*ɈhLOvx뜔m!eJ^&Qtm(xՒv};b gtϡgE!L)1x[eid@%,wQ*1]#RX@"IWvtC@Y?qVLP4PUbBGz4}uFp_lȪM]h5>JW?9vr˳BvT{H'~f?ㄕV9Mk'Yp &B¢f.$2%^ SPoQ EmZ[VRaFPc xvMO1OX[DCZ5o}rL8SXa4T Uڔbo6u.~OA_j4OܯG E 2+[ySQwXTKT̗sq14!X#QO>ŁXRs24^ӢO7h;6@c1>bt]Z^om$wXT ؈`GF/-Srsh@R/^}7|aYںdgXP-H\z[ 9У9ڰ] 83޶ 2 J @0#&dʅD_P=l  ׉zb|V7e>DvhsE#C@V @azYʕ|;6Pk;f8n蟴nԐRNK~ǹsh:qG9l#4h xCNpAsˑ&#f98.cv'w w 71$4\dCo/nO{xIԍ4G&l~W q oy\_bӾn:FJv积p(NK@\}60.JYuw/_GgI,(蚞ߍo6=0M endstream endobj 219 0 obj 1605 endobj 220 0 obj (wW$f':+MU) endobj 221 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 689 0 R /PZ 1.10327 /StructParents 37 /Annots 222 0 R /Contents 226 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 899 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 220 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 222 0 obj [ 223 0 R 224 0 R 225 0 R ] endobj 223 0 obj << /Subtype /Link /Rect [ 9.06398 722.58057 62.63936 736.17654 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 224 0 obj << /Subtype /Link /Rect [ 92.39822 692.27464 142.50391 702.24503 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 225 0 obj << /Subtype /Link /Rect [ 238.17422 692.27464 318.5083 702.24503 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 226 0 obj << /Filter /FlateDecode /Length 227 0 R >> stream HN@-檂ݳ6B$P"V2Ά:,;vbAzg9.=,l2b (!i0N N<= r"KM)t*#^GM7K"[$1 ‘T(p‰s6"46Mpj)Knxq+sۍrP t֕/ʸ7rx8W`W@;YضſLʾ`ғ=_-2N2© )NMI#.7 <%0 g%I@")1":j <^W^B/|L-dmF֦U$P "is z(C * )u~,ma$ _MWڠ&Һ~7Z3AٯKc^34(W5 ߘF֥E$Um.XQ+mqB"b/3pQm H*a0Ï iWť; 2NT 8qe2Xim[05@ODBt̍hv'&񏐛"0l5>n{j TrA}_ ybo,9x@ar[7FoH{hDqA&qnxydP{sC 3C> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 240 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 229 0 obj [ 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R ] endobj 230 0 obj << /Subtype /Link /Rect [ 16.67772 450.77844 47.13271 464.3744 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 241 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_why.HTML)>> >> endobj 231 0 obj << /Subtype /Link /Rect [ 16.67772 433.73816 62.36018 447.33412 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 248 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax.HTML)>> >> endobj 232 0 obj << /Subtype /Link /Rect [ 16.67772 416.69786 77.58768 430.29384 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 255 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_keepdeleted.HTML)>> >> endobj 233 0 obj << /Subtype /Link /Rect [ 16.67772 399.65758 62.36018 413.25356 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 262 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_macros.HTML)>> >> endobj 234 0 obj << /Subtype /Link /Rect [ 16.67772 382.61729 92.81517 396.21327 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 275 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_assert.HTML)>> >> endobj 235 0 obj << /Subtype /Link /Rect [ 16.67772 365.57701 62.36018 379.17299 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 282 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_error.HTML)>> >> endobj 236 0 obj << /Subtype /Link /Rect [ 92.39822 318.04953 142.50391 328.01991 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 237 0 obj << /Subtype /Link /Rect [ 238.17422 318.04953 318.5083 328.01991 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 238 0 obj << /Filter /FlateDecode /Length 239 0 R >> stream HW]o6}p[ZH}]е"ѶZ}e}d)qD=2OLQ,kT(^YYyvV bYxxg8eZD2- x|bX~/R0O<ûJ\4g3Üѿ-0[X0ˍIY$Jebf\L'yo&Q%ȯ+0[ _āY=w=ܸ|a>@<+,s0?S\C| }۪A"']$ MjHq(lݵd>!m_FBƂUX23]EN^3}1?>(%Ty]C3Hk %U$!ʲrU$G *RD9n8ˢi̫4~8us֭F'W#{8sbmo$W. ~cZ}BaqEZ ƨCvzl@"DcC)wTN2\ âKxjaC_LۢG?`c,6T)dt&P{4h>BCC ơRaX6sqd֜`p?e$bL7>T"jc&2Uu]6sjz{8NvGneC艜#.cLs:k.^JgMmFv#x8LOy*er!D)X̏;\k%OъnN-p[ sg'P6v Au Y,j$- O7ثBl i$;g#2JC=Gf$ |"ġ<]F -v g\ײ!vH0=0|c oB`Fl/KEO7 \|M1æP<}4@ >p_k IsCKe@4NsؾxiޗF/.HHq:*[Ү@Aiw+\"/ji.e%f\URVLRZb+qz= endstream endobj 239 0 obj 1447 endobj 240 0 obj (> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 247 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 242 0 obj [ 243 0 R 244 0 R ] endobj 243 0 obj << /Subtype /Link /Rect [ 94.75589 260.31082 146.14009 270.5356 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 244 0 obj << /Subtype /Link /Rect [ 244.25159 260.31082 326.63548 270.5356 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 245 0 obj << /Filter /FlateDecode /Length 246 0 R >> stream HVmo6.> ]P^,;+iuh. iPmD~˱sl>=ݑGL`W3cXVnl֟NwcH1P48GuȖfF^9jK|ze)Q"%gKf oM:0e J LqKW{{y|~*>V}CRbDCH(]AτJcd0_ea#Oc L4twepr6G)+ety͏$e:DzՖ_h;[F+sQVbj JX1uB]jusFlւ51}Kwluȇh;Zۂ"w!9 Ӏ.ؽ}n:q=SFj-渷ng s a\ SoljGt8(N2FW .e]:К3\ ?,/C +ml`WGl]W K+d;DXͰlUEdf%趴{2',F'wW6fNw׉-U ʿ`t[XD<{;WՆ ;QhaZ)<69K<MJ%w?aqX\5 ă߰2It(И7[q[w7 R+ Z=RhmM;K ha7C#҆λ;˜;`% GrGCg$Up[ѓ,4.B˔4eW7ܗwH& z إJHHDFO"!(Q$ru%Lj ۧH 8 @ax[}_2ƀ'/x|\Cq)iN}ZܜHE4͙6)OdYv~Yk~8~*OShO1sB endstream endobj 246 0 obj 1338 endobj 247 0 obj (fVstڃ) endobj 248 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 710 0 R /PZ 1.07582 /StructParents 40 /Annots 249 0 R /Contents 252 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 254 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 249 0 obj [ 250 0 R 251 0 R ] endobj 250 0 obj << /Subtype /Link /Rect [ 94.75589 489.34605 146.14009 499.57083 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 251 0 obj << /Subtype /Link /Rect [ 244.25159 489.34605 326.63548 499.57083 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 252 0 obj << /Filter /FlateDecode /Length 253 0 R >> stream HUmOFn0Jz}{z:JHuqdz7wllj"Ցl癝gQi'39;%NE/9~TylTçOŠU8P`YQ4JR0hĿ2V, v0}ۗP0*򩪝ę!f]Dxd/r2Kۖ]#nKodTr~:,)@ejިǙ٧| Cw80ھ66LFNw7L֌ƣ$C *o*|nLv㐈еw" s &Z0nms`L4`:)'ӽjX/=d *30eU$R뢂ӰTf1/J&F=w^~_S" p+喨qT>r|$)9B6Xq>݀E4Ǡ42U8$2_ :DJ U$IajXh?ܴ$΢ ȴDT-ܫ<Ds F>@u׎ UɚEkc$i䓬p'*ojj2-|F\nU,$4_[8'^Y߶q@#H'x4ZeOͼgf(>[ftUӔvz9 .K43ï}@%u; _A*n7[w2vaidF<5SRfm侇? ].?RVخl#,Tاj xO=W0:hDNH﫫=N=P7Mkկz}}XƝMn9;3sxefL9t\<ђ3iٔ&eIzU74vņB`<~W1 endstream endobj 253 0 obj 949 endobj 254 0 obj (A0'\\|; _) endobj 255 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 710 0 R /PZ 1.10327 /StructParents 41 /Annots 256 0 R /Contents 259 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 261 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 256 0 obj [ 257 0 R 258 0 R ] endobj 257 0 obj << /Subtype /Link /Rect [ 92.39822 420.29123 142.50391 430.26161 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 258 0 obj << /Subtype /Link /Rect [ 238.17422 420.29123 318.5083 430.26161 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 259 0 obj << /Filter /FlateDecode /Length 260 0 R >> stream HV]o6}pK$ԧ-)+NvK.և8hhH*Q߾KR9Q"]Rs5IMxJc^o%pcF[s:`>q,ǡh]00?{.Rӳa)a^ GLf9S%42d QjK!DEl8{8cSHj&,m5KYD^F8GBO/`;>Cu5:Nkx2 Io1 *j#O:C(\w/Hxz4U(h`JԒ +mte>=&j9YܙG-y8]QKY1XIqeuEK&k|j>\TFr(MHUj|UNR{dY;]"Ӵɩ3ꛄͪc|k뭂u/ٳfj3'b:cUM]}t{ѫ%@16k#vt,(Ygp̆%o2KX^4Տv<3ZgK-qJ%:}k\A0}j^]M{@Bp#^G}BVŒUhZ5%K.0lߏ[dXd ݅KayE@b>dr"Plܕ Boa9l l5Dnm4ns \YEW]MmZlׅ\a3^?ͭ C0p!aO}DC|shF@!m<C IJ\S=# Et8`jQ᧸"q^(I0<9l,#?IeylIJR4WiւXɒT;2";YbEaF=7!MؖLLg>Sg| >\4#T endstream endobj 260 0 obj 1194 endobj 261 0 obj (+ q\n:) endobj 262 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 710 0 R /PZ 1.08954 /StructParents 42 /Annots 263 0 R /Contents 265 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 267 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 263 0 obj [ 264 0 R ] endobj 264 0 obj << /Subtype /Link /Rect [ 456.33833 241.11578 533.43491 254.88303 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 275 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_assert.HTML)>> >> endobj 265 0 obj << /Filter /FlateDecode /Length 266 0 R >> stream HWmOHn)a|H@H@ ^SuQYuߺNToڠygfα"aWcY<vE 7Iq!xG} 4~(98TL"7oNޞZ.ПS\"-ȸ")匽/.x0N4r4tmoDi*`X, ;jSNY+O;)K4\#à[ Z8<|ә~*􆧕A7?G 0y$1_)N9!:x7z5a,#$wC{x&k~ma8 mw k'N\8lo|/7?v"9T'U "sl-AfC!)%-}1PX3E>=(4F\)4U0gi!s& "7&{V/.Rpt )m8ta"$sX+#LZ]EB^ sM..x] \ݗPT=3 0,L3Ž<ȧ:"1?0ax,bZS"+S<,eV%g(zEb8(mjk5WZm:=?gu^ȡnwI%]*1° ?DZkk KO " DLN9UI¥-˧6p ,goM=g LPYd_sҳ*f 1Jk2HaGAr'LG,#AvѶ Tp"${߸;NtcR01fVk[U$];݊oL(dD; r%j&"]˽"é6Ca0ܛȪK%ЦLޥSx|uVNs'!F=Zv GmݺHp#& )-[D%%nY(ص50ܮkYUsupAlƾyL=v]2uMҦ2IPj$ ٴ-֕-RZagMkyzsvkr[k5bWUsRDN\rZCK]mc:k:i7Hz",*zZzHr`Wx+~&`C;a`Gn; ^j}jOFQʇKuyC*=$]zB=3JEV#1'8y{f2؅TupQ%T kS5EB/%A"fuf y]+Sa3iPW 'x,k֠H2ytrY7hk+ )۝ KnΥ rd&I6EjVHh.T1:/S#Ȫi977>=}$|5ݛ`]v32Ӻ> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 267 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 269 0 obj [ 270 0 R 271 0 R 272 0 R ] endobj 270 0 obj << /Subtype /Link /Rect [ 456.33833 334.08519 533.43491 347.85243 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 182 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/invoke.HTML)>> >> endobj 271 0 obj << /Subtype /Link /Rect [ 93.56221 242.2709 144.2991 252.36688 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 272 0 obj << /Subtype /Link /Rect [ 241.17462 242.2709 322.52069 252.36688 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 273 0 obj << /Filter /FlateDecode /Length 274 0 R >> stream HWmo6.K8ԻmE8I M׵n)FlRT~Љ KDĻ{xr9M<})E%;5|rg3q)L&S)& ޚkkU\T@^pp7XB)Sܙwy$fS#楳,kӴhVTs:wNϏ:j%W:hC !$d·;3(}rX]<ڟD;8>x$ '!NQG6܄3| `ɿgX2$w#ľ/y^iz=8Igo}k5-X@ [MB.֋{lvu\6 \S+*HEYvws!aL mފAiT2%P`"frԊSKAQvC˺`F ԒAE5qSۃ~@ ޚp+TBaK9@v5Bn4xZCn+ah$` ?y$bG,ݎ^HEȆ} / Nwis$5NϔmXZ5Jk6W\-m#]^ ^->Q]]zBnh[COX"HJk-Zb}c JLBrZ[u*낧p(gAi:ʭFWwE+梳n@E+wX둣GjRīh3Ez-h@42s']ȂiPa5&Vrm!%lK Va+[wt5h`bQ̴Ek.OL\3*/zʭȔ@kGIՂt=nȌ(61pѕÝN-Ӵ!,ArLݐlvE+54l'՗*[k)VyCF5쒡( 4}/JxG{O% 7/I G 8/>~ '$ !Ld!(]+tYFC;EW:c0TK/E7iaWMmላG3#㒥z42om0|]@Oc1Y0FGnਰċp |x+KNqQk=]Nv`۱dܙu sbrp$KNjFV, Ǒ?QNx񣱎 I۵] DhA9zh4.g~#, &O8ma8&eŠ*B9mHZeCw՞2  ޏ{H a$$AdEE endstream endobj 274 0 obj 1482 endobj 275 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 710 0 R /StructParents 44 /Annots 276 0 R /Contents 279 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 281 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 276 0 obj [ 277 0 R 278 0 R ] endobj 277 0 obj << /Subtype /Link /Rect [ 101.94 596.56444 157.22 607.56444 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 278 0 obj << /Subtype /Link /Rect [ 262.77 596.56444 351.39999 607.56444 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 279 0 obj << /Filter /FlateDecode /Length 280 0 R >> stream HTN@}T*{{BMB*i!uxwvUuѮϙ33C$il`w 51&t0(naC|HfNtW*'$aoo?t؟D#wo԰H d$8ȡ?g!;I~BFxQlJiK]ϑy4t虺NKs+6#jAZ9g w !AaL=Rs4\m3<4^Á.NazM>6pV* }D&ngH½Bz2$&!mNliaLUrHr0 ZJJ]Ī = Ym f?͟4X[3o$_d]{JN7hvMt:Dz:|FG0,+{.` CK o00YdH)Q% b:?Z*(8RM1:QmOAT:0»U'Htչ>'g[&OOqE욨s*w`LhF_H$\Zg%{ ,)w(].$.rto M*EΦ2.˒|ZQR1gT` fG;(d4O u( endstream endobj 280 0 obj 687 endobj 281 0 obj (hV &wfR) endobj 282 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 726 0 R /PZ 1.10327 /StructParents 45 /Annots 283 0 R /Contents 286 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 288 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 283 0 obj [ 284 0 R 285 0 R ] endobj 284 0 obj << /Subtype /Link /Rect [ 92.39822 219.79597 142.50391 229.76636 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 285 0 obj << /Subtype /Link /Rect [ 238.17422 219.79597 318.5083 229.76636 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 286 0 obj << /Filter /FlateDecode /Length 287 0 R >> stream HVo6]-]R_em8I?.mQ6IH:bd+nsD!wIS:{5-XHp.Dn}ASuH缠^;9e8{ˎE&$ϙ|;Ñ>R'b0#т&@,x1.̀_F9=?v/lzLKlG|0ٝa_c^$sx$ A>Ԧ|-Y '?Ja#-_ DďJ9&^ Q7 q 7pq65LŅZ9Q6avx'N^,ly٧:h6'~7:?cQ`Rh57>|zIv05~+p  @PIdžv,s.j-ɣIʬOl+ӧtG> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 295 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 290 0 obj [ 291 0 R 292 0 R ] endobj 291 0 obj << /Subtype /Link /Rect [ 92.39822 316.23672 142.50391 326.20711 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 292 0 obj << /Subtype /Link /Rect [ 238.17422 316.23672 318.5083 326.20711 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 293 0 obj << /Filter /FlateDecode /Length 294 0 R >> stream HVmo6.kZԋ_ubM34]8XiQFRue}GزwRNs=w;T˗14JY WBpf)L&S> 'L'j) ϩ2WfgsORH3f@qgp܅>,'`M=O`9'\GL3YjXdĴ q" .n q?՜Tlv}˛6w&2Dc?h 9AÝIcd;p?> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 302 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 297 0 obj [ 298 0 R 299 0 R ] endobj 298 0 obj << /Subtype /Link /Rect [ 93.56221 433.8246 144.2991 443.92058 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 299 0 obj << /Subtype /Link /Rect [ 241.17462 433.8246 322.52069 443.92058 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 300 0 obj << /Filter /FlateDecode /Length 301 0 R >> stream HVmO60R;qNGXJ!-XTeHeK{'NaR833 Q,gH(X7zk'7!H{"|]^E2|29j9h%+򂋼dR1\ҿ Zh? jc4\+Y6 |l9jlrז筜3x}GBR<Pi; T~e-}^=nF Y|Kk&3܊R\|zz_3v95=X^S룷m3revX$ kXC /p} a'JLwջϮaƀ+TH) 8"gjJ^ǘb/6iEE1ɫ;Hrⶤb dU uX>\f,꾟UE?j1/KVɦ,L=yBKDL'=0q؃hpf^5LH8])euT5X JH(XpTCzW˰J I*W)eW2{˧^2i6zmE8;=9glr\H.c Jr%̓Q6Q^ B v$\U86jUr-~JYTaR^|ݺ_mjņzr{դok ߸=f;61߷}(4 ib_xe$0lZA}ϐaj[_$zj7blڶ(-m8&CL%ت `h+-!miS߁5Phopsk@Z`5[PAʥM /B^XZ;Y>#h-SR]Gr/SӠP3QZÂ=M1펩Z&v'+6%v_劰d[GňGc?G!X(,.P{W5dojTqɤu}^^rADӺċDZꦁlΡأp1)Wz" endstream endobj 301 0 obj 1070 endobj 302 0 obj (I64MKΘ) endobj 303 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 726 0 R /StructParents 48 /Annots 304 0 R /Contents 336 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 338 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 304 0 obj [ 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R ] endobj 305 0 obj << /Subtype /Link /Rect [ 10 616.2 94 631.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 275 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_assert.HTML)>> >> endobj 306 0 obj << /Subtype /Link /Rect [ 10 597.39999 186.39999 612.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 296 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/output.HTML)>> >> endobj 307 0 obj << /Subtype /Link /Rect [ 10 578.60001 194.8 593.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 392 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_cascaded.HTML)>> >> endobj 308 0 obj << /Subtype /Link /Rect [ 10 559.8 194.8 574.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 79 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/combine.HTML)>> >> endobj 309 0 obj << /Subtype /Link /Rect [ 10 541 110.8 556 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 228 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/conditional.HTML)>> >> endobj 310 0 obj << /Subtype /Link /Rect [ 10 522.2 203.2 537.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 262 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_macros.HTML)>> >> endobj 311 0 obj << /Subtype /Link /Rect [ 10 503.39999 236.8 518.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 399 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_duplication.HT\ ML)>> >> endobj 312 0 obj << /Subtype /Link /Rect [ 10 484.60001 178 499.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 791 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/main.HTML)>> >> endobj 313 0 obj << /Subtype /Link /Rect [ 10 465.8 127.60001 480.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 1 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/global_actions.HTML)>> >> endobj 314 0 obj << /Subtype /Link /Rect [ 10 447 110.8 462 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 315 0 obj << /Subtype /Link /Rect [ 10 428.2 178 443.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 198 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_include_ops.HTML)>> >> endobj 316 0 obj << /Subtype /Link /Rect [ 10 409.39999 245.2 424.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 406 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_impropernestin\ g.HTML)>> >> endobj 317 0 obj << /Subtype /Link /Rect [ 10 390.60001 245.2 405.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 217 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_inheritance.HTML)>> >> endobj 318 0 obj << /Subtype /Link /Rect [ 10 371.8 236.8 386.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 182 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/invoke.HTML)>> >> endobj 319 0 obj << /Subtype /Link /Rect [ 10 353 354.39999 368 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 255 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_keepdeleted.HTML)>> >> endobj 320 0 obj << /Subtype /Link /Rect [ 10 334.2 169.60001 349.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 118 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_concatenation.HTML)>> >> endobj 321 0 obj << /Subtype /Link /Rect [ 10 315.39999 186.39999 330.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 96 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_stringification.HTML)>> >> endobj 322 0 obj << /Subtype /Link /Rect [ 10 296.60001 60.39999 311.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 30 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros.HTML)>> >> endobj 323 0 obj << /Subtype /Link /Rect [ 10 277.8 186.39999 292.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 45 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_arguments.HTML)>> >> endobj 324 0 obj << /Subtype /Link /Rect [ 10 259 329.2 274 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 289 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/other.HTML)>> >> endobj 325 0 obj << /Subtype /Link /Rect [ 10 240.2 236.8 255.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 413 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_newlines.HTML)>> >> endobj 326 0 obj << /Subtype /Link /Rect [ 10 221.39999 253.60001 236.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 89 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_nonstandard.\ HTML)>> >> endobj 327 0 obj << /Subtype /Link /Rect [ 10 202.60001 203.2 217.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 209 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_onceonly.HTML)>> >> endobj 328 0 obj << /Subtype /Link /Rect [ 10 183.8 287.2 198.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 142 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls.HTML)>> >> endobj 329 0 obj << /Subtype /Link /Rect [ 10 165 152.8 180 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 58 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined.HTML)>> >> endobj 330 0 obj << /Subtype /Link /Rect [ 10 146.2 211.60001 161.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 11 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/directives.HTML)>> >> endobj 331 0 obj << /Subtype /Link /Rect [ 10 127.39999 152.8 142.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 135 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_redefining.HTML)>> >> endobj 332 0 obj << /Subtype /Link /Rect [ 10 108.60001 203.2 123.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 420 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_recursive.HTML\ )>> >> endobj 333 0 obj << /Subtype /Link /Rect [ 10 89.8 320.8 104.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 430 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_separateexp.HT\ ML)>> >> endobj 334 0 obj << /Subtype /Link /Rect [ 10 71 119.2 86 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 19 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_simple.HTML)>> >> endobj 335 0 obj << /Subtype /Link /Rect [ 10 52.2 228.39999 67.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 67 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_standard.HTM\ L)>> >> endobj 336 0 obj << /Filter /FlateDecode /Length 337 0 R >> stream HWnF}'I A-َFkCb47Hv~{gūl'*w8ensT8{̪F,f-R/EyǥPIenSMHa02}Q~Vw)v^6H Gl'5\KO`YDc& 7!+ey²蠻 Lx\q NA4!&S\սlIq`C`8:)NA6Al$|!ERjLkBbS p鱾ﳹM8f/%o@m9dNK]X̴kPeΞXGJl:mo{ttm d2ÕPyRtqUX.Apt3-bMpXCn d9Jpdzəak`?6[4'9བྷMd["?꺢8NǨOtd[:> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 338 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 340 0 obj [ 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R ] endobj 341 0 obj << /Subtype /Link /Rect [ 10 749.60001 211.60001 764.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 108 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_swallow.HTML)>> >> endobj 342 0 obj << /Subtype /Link /Rect [ 10 730.8 194.8 745.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 248 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax.HTML)>> >> endobj 343 0 obj << /Subtype /Link /Rect [ 10 712 169.60001 727 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 443 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax_elif.HTML)>> >> endobj 344 0 obj << /Subtype /Link /Rect [ 10 693.2 169.60001 708.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 450 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax_else.HTML)>> >> endobj 345 0 obj << /Subtype /Link /Rect [ 10 674.39999 295.60001 689.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 282 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_error.HTML)>> >> endobj 346 0 obj << /Subtype /Link /Rect [ 10 655.60001 161.2 670.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 457 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax_if.HTML)>> >> endobj 347 0 obj << /Subtype /Link /Rect [ 10 636.8 211.60001 651.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 169 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_include.HTML)>> >> endobj 348 0 obj << /Subtype /Link /Rect [ 10 618 152.8 633 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 128 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_undefining.HTML)>> >> endobj 349 0 obj << /Subtype /Link /Rect [ 10 599.2 287.2 614.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 467 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_unintendedgrou\ p.HTML)>> >> endobj 350 0 obj << /Subtype /Link /Rect [ 10 580.39999 178 595.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 161 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_uses.HTML)>> >> endobj 351 0 obj << /Subtype /Link /Rect [ 10 561.60001 220 576.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 241 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_why.HTML)>> >> endobj 352 0 obj << /Subtype /Link /Rect [ 10 498 136 513 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 45 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_arguments.HTML)>> >> endobj 353 0 obj << /Subtype /Link /Rect [ 10 479.2 94 494.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 275 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_assert.HTML)>> >> endobj 354 0 obj << /Subtype /Link /Rect [ 10 460.39999 152.8 475.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 79 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/combine.HTML)>> >> endobj 355 0 obj << /Subtype /Link /Rect [ 10 441.60001 119.2 456.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 118 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_concatenation.HTML)>> >> endobj 356 0 obj << /Subtype /Link /Rect [ 10 422.8 110.8 437.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 228 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/conditional.HTML)>> >> endobj 357 0 obj << /Subtype /Link /Rect [ 10 404 77.2 419 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 255 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_keepdeleted.HTML)>> >> endobj 358 0 obj << /Subtype /Link /Rect [ 10 385.2 94 400.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 11 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/directives.HTML)>> >> endobj 359 0 obj << /Subtype /Link /Rect [ 10 366.39999 60.39999 381.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 282 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_error.HTML)>> >> endobj 360 0 obj << /Subtype /Link /Rect [ 10 347.60001 127.60001 362.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 1 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/global_actions.HTML)>> >> endobj 361 0 obj << /Subtype /Link /Rect [ 10 328.8 110.8 343.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 149 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML)>> >> endobj 362 0 obj << /Subtype /Link /Rect [ 10 310 102.39999 325 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 161 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_uses.HTML)>> >> endobj 363 0 obj << /Subtype /Link /Rect [ 10 291.2 152.8 306.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 198 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_include_ops.HTML)>> >> endobj 364 0 obj << /Subtype /Link /Rect [ 10 272.39999 127.60001 287.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 169 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_include.HTML)>> >> endobj 365 0 obj << /Subtype /Link /Rect [ 10 253.60001 52 268.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 303 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/heddleyautoindex.HTML)>> >> endobj 366 0 obj << /Subtype /Link /Rect [ 10 234.8 102.39999 249.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 217 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_inheritance.HTML)>> >> endobj 367 0 obj << /Subtype /Link /Rect [ 10 216 94 231 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 182 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/invoke.HTML)>> >> endobj 368 0 obj << /Subtype /Link /Rect [ 10 197.2 127.60001 212.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 142 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls.HTML)>> >> endobj 369 0 obj << /Subtype /Link /Rect [ 10 178.39999 60.39999 193.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 30 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros.HTML)>> >> endobj 370 0 obj << /Subtype /Link /Rect [ 10 159.60001 60.39999 174.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 262 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_macros.HTML)>> >> endobj 371 0 obj << /Subtype /Link /Rect [ 10 140.8 194.8 155.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 89 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_nonstandard.\ HTML)>> >> endobj 372 0 obj << /Subtype /Link /Rect [ 10 122 85.60001 137 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 209 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/header_onceonly.HTML)>> >> endobj 373 0 obj << /Subtype /Link /Rect [ 10 103.2 144.39999 118.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 289 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/other.HTML)>> >> endobj 374 0 obj << /Subtype /Link /Rect [ 10 84.39999 60.39999 99.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 296 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/output.HTML)>> >> endobj 375 0 obj << /Subtype /Link /Rect [ 10 65.60001 94 80.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 58 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined.HTML)>> >> endobj 376 0 obj << /Subtype /Link /Rect [ 10 46.8 94 61.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 135 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_redefining.HTML)>> >> endobj 377 0 obj << /Filter /FlateDecode /Length 378 0 R >> stream HWn8  C*EREQ v4&.zh*ѱ Yrin.;DNeγatr-z*:i,_}FY}& !Q,CHH,7 EW]Ygm<;DAt*7U˵ju#]E-?XiP!hׅ|-x\̃:6N~=q|D‘V?QDYm4kڶYZ(.VIC( i,bxB>,WR^)Է*2 {D0/ 9:|Up3@l7 x랏KڙqϪٗjW ݨuy#) 刍T$$}f?QD.J:$ qS4c🨪\RT$SRGbOE<تBm)ib2Z7eu3]cF9'cnְSY4z[V gv y29iuQˆ8--Ngt |D> v;w_c:xVʤcvYKGjk_l7N=Y{I,3 0'Ϡܺɡ죦bڍ;/b0SbSUpc)',P2;bhܽ{Nh{czK`dǙɱU$PlqL, h6?Kl>f&fo&b ;ubsΝ]n~PT$vuٶG/䠥 ;დ 8Pju˱>J8%DRpJduxZ[+œs&Yq}f=u`tUK B5-]Jn؞E3BT}R?LJnOA!U BufKuuq2GFw}tL5O>j&Hzk7֙ 7q:籬2;gQ3f⌘.=v,A K>r%ol4E0j(a@F[[d6ZnMUDfA\E]۔їg ?<0qDy[:K]]:O: endstream endobj 378 0 obj 1283 endobj 379 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 754 0 R /Annots 380 0 R /StructParents 50 /Contents 390 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 338 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 380 0 obj [ 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R ] endobj 381 0 obj << /Subtype /Link /Rect [ 10 749.60001 119.2 764.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 19 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_simple.HTML)>> >> endobj 382 0 obj << /Subtype /Link /Rect [ 10 730.8 169.60001 745.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 67 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_standard.HTM\ L)>> >> endobj 383 0 obj << /Subtype /Link /Rect [ 10 712 136 727 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 96 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_stringification.HTML)>> >> endobj 384 0 obj << /Subtype /Link /Rect [ 10 693.2 152.8 708.2 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 108 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_swallow.HTML)>> >> endobj 385 0 obj << /Subtype /Link /Rect [ 10 674.39999 60.39999 689.39999 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 248 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax.HTML)>> >> endobj 386 0 obj << /Subtype /Link /Rect [ 10 655.60001 94 670.60001 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 128 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/macros_undefining.HTML)>> >> endobj 387 0 obj << /Subtype /Link /Rect [ 10 636.8 43.60001 651.8 ] /Border [ 0 0 0 ] /A << /S /GoTo /D [ 241 0 R /XYZ 0 792 null ] >> /PA << /S /URI /URI (http://www.contactor.se/~dast/fpl-old/cpp/cond_why.HTML)>> >> endobj 388 0 obj << /Subtype /Link /Rect [ 101.94 584.36444 157.22 595.36444 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 389 0 obj << /Subtype /Link /Rect [ 262.77 584.36444 351.39999 595.36444 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 390 0 obj << /Filter /FlateDecode /Length 391 0 R >> stream Hmo6 wWC:l|H)(n,QIP(SeN(ɒ&5[~?HZ«W$5\иn.=\Aď$P1@OJl^Wc> 9xxYE楱mB{أ1̀C!.Uf__v'sL{ך1,^W8@AkO?CDKu Ĭ-г>(_p{<DRK uKXɺ gwu8E7BpKc` '.d(K(!8Džw>@Pې']&{_Ky^6qm➑5e@I%m:L6szR}xm^<7UѸ28W&&EQoܔy5>k rx:$z?T6!ph䏃} cѐB_bw}XO1`$݅d /{;3;?iq)/'L9تM愙;~׵%h] ,i7'\?>>u;LSUWf lyj#=cpNG3 Q@cp0 ?d %7W'N)nms{߿wdwϩ*j|Ɓym{vNcQ=O70N˭!햤5-Ol,]7ůuѴi( :w*@By%dT(*øEp5q)H endstream endobj 391 0 obj 815 endobj 392 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 754 0 R /PZ 1.08954 /StructParents 51 /Annots 393 0 R /Contents 396 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 398 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 393 0 obj [ 394 0 R 395 0 R ] endobj 394 0 obj << /Subtype /Link /Rect [ 93.56221 271.92177 144.2991 282.01776 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 395 0 obj << /Subtype /Link /Rect [ 241.17462 271.92177 322.52069 282.01776 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 396 0 obj << /Filter /FlateDecode /Length 397 0 R >> stream HVmO80ړ'iӠhy9NcQ&q$&.~~c'V:҆q̌*%R+x>RnPk: uACѼ`b`J>|,z}3}#J\U"JXȲ#z(B3)h@[;#V,A6_j2KWލY'ur9~J5 - m}GFߧ.>TeJdOWa)opx,  ßA0ؼf9P3]Ώ&9mPiT7 =sl0k0.o 0G 0Xwm%.DfW;}y;|5&Yƴ]ýLB1Q0)xsPrDRMxL&D'^i<ܗ֎9 _/ Or~9| 'Y{ļX]Bef9V=CmNpoDKZېik-0V1)%E:?8 !xBV$HpƵ?jF5:W&BEjYG`Nx s2քk x=͔J)YQE<%ia@jPWidJD(,JPhbB ̗SRJQ(0itu$7S_O؇`ٌ͵MIֺ4cb9P:r(,V[kj[[? |W7iNj(ΰ{xWߝJ1\ p׸6[.pW6V崩7J< am*GCpsnoܽ ]B#!fV#k$t|cq6Q8am}YȻZBv5֘ l4NLo<.xܾ9r~./`$ ܕB"3TAfXpox7$`!^ՠ S'ngSf}n^8z9>uH')Z;Ku%2.Ը>E~Cswv΄d[\8L7Q^t(u@۵mft>=A'X㯶ġ>5\&J=͈ib%+RsN@fP)mc$Ĕx:۷]+;t{O7 0 endstream endobj 397 0 obj 1226 endobj 398 0 obj (m<_U_Xk) endobj 399 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 754 0 R /PZ 1.08954 /StructParents 52 /Annots 400 0 R /Contents 403 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 405 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 400 0 obj [ 401 0 R 402 0 R ] endobj 401 0 obj << /Subtype /Link /Rect [ 93.56221 128.00816 144.2991 138.10414 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 402 0 obj << /Subtype /Link /Rect [ 241.17462 128.00816 322.52069 138.10414 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 403 0 obj << /Filter /FlateDecode /Length 404 0 R >> stream HVmo6. sz%Y ]j,-⠡e*V+HHI8Pr(<<#R$1'BhApiLXWh n;CUAxGnt l$4[:f)+2LD3&',Z n0ɴӪHg1O^1?|^Lgc͸1)DU+ykv"-42lT8\3cĄ`oi,8OnbW|߅Y`;/v}&ӾRRl[~o6&_(E‡orYqz0=66%;~{XO7 ÊUP!LH2 X.o(Ρ9} {|靀%g$t?Jedw\YJ*V@Rߎ 5:4\=XEjE"*GOnzgk^p' qG*s`yŸB<.hf>ݓ\PfP_%張r)D,eXഽ[:y iU]+]34U` ^2:pIHG7(u‰z1Q#|n0zZԈeoHL[.P i>W6/dkpH3THW9'1ݯTYZ @划UZ?8#Ůsuxʭ=w$+RT"FxУQշ$:GT: Æ2!lG 2EcT~U}76} ۵[Sv]d{?[B^u9\V-)Kk$ћM6uC͋I`Ua{> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 412 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 407 0 obj [ 408 0 R 409 0 R ] endobj 408 0 obj << /Subtype /Link /Rect [ 93.56221 318.17972 144.2991 328.27571 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 409 0 obj << /Subtype /Link /Rect [ 241.17462 318.17972 322.52069 328.27571 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 410 0 obj << /Filter /FlateDecode /Length 411 0 R >> stream HVQo6~p6)RJ$*bufˌ!RYlQTa}GJUI)PLuw}wViʼnׯݷZɂpNd Wx,oᒎ`8e0 qkrWrp?sQZ޼8?5Džǽ9K%\+xzIDV)h:9,,4:EUhy7qޝ8>;K]+>>L\z/ą^0ΗP8,c\g 1_}dmjDǟp4 $t :?pXk[jiC-B٭#dxg'I֘(&ug 7Bk|x=䁫ek yzkX-x1,DIzK^G\-@U=еA- -Bct&;Ԋ\[G |)s[׌  3)֐C&,<nRVa Ro=}HRs(c+|LaUD۱nL% a#b~/KSC*k:=Ѿw*6zCV鼬d4tMycj?ߥ܆o eW aX,"`+4V Պۊ.j!]̣ؔNzcؕѦgUo iv+O^d?ָcLb&R!4cx򴂧}l?T>mU:Jp'0 i7\Uf،8P: aԃs~7 'I8`(F&bEr/ʵ̷g %eTUq/C(̣X/8Gó.Pt PE2o?Lb)|%H O@=L=?)si8^Vbcg=Ɋ endstream endobj 411 0 obj 1181 endobj 412 0 obj (pUà|^q) endobj 413 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 754 0 R /PZ 1.10327 /StructParents 54 /Annots 414 0 R /Contents 417 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 419 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 414 0 obj [ 415 0 R 416 0 R ] endobj 415 0 obj << /Subtype /Link /Rect [ 92.39822 364.45711 142.50391 374.42749 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 416 0 obj << /Subtype /Link /Rect [ 238.17422 364.45711 318.5083 374.42749 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 417 0 obj << /Filter /FlateDecode /Length 418 0 R >> stream HVmo6. [R8(zIbqҦ˄CdDj%Q8߾#-;dȦO{S ޼Obgpm'{2pM#ףF!>Jg(j Q۷3 \`WħwLBWHA$:@!ɭ(Š E!$uʢ-5LY*EWZGW]bY>?c$\'%H@]Hn}ye'D(%*/y*K>V7kE!zS&qgsJi5{Yu|78uj K( f:ct1 <~`ÁcJ\H*|V9,+tNX 1H-LIB̀%fk&܊Z PKau3/r#0eBJAC+*y\'öP«Z딏@H4[WtJ q9z2ą4뚲Hb2CL`U%z!1(h:ZR hЄ HpyqCa00`MuWw՜K6Q;$PԒEsC )5#RYg CS3[,$#o4Y=,ʲkĝ%t%N6M@1-peh>JgG^C-)XOp0gGoFEsb͎^D`סCɩ8_÷~sfx~!H [NܛV53$ؖ(~XbkJX9OascS\w(/9 PZ+rX1b}[nc~#g6Vrga}2dg0lFbƮYVh?$K8)0כWO=V@+޿XK8r4 8sƎoEGH{m@,IS˪wu!Sס#h,aLǃ7^HӣҌCs7mv3ۯiKҪ#<^"o @ax z^'1ѓ1,??pY*՜j"س<{rΛX6md{*in16;?q'7_`_ endstream endobj 418 0 obj 1191 endobj 419 0 obj (9aQU\rI*w=) endobj 420 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 765 0 R /PZ 1.10327 /StructParents 55 /Contents 421 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 423 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 421 0 obj << /Filter /FlateDecode /Length 422 0 R >> stream HWoH0} 6vH^S5RRTfcaCr@n3me& ^g֊d)| gdK4pQ  GCz4۔GRʹ z#~œTJZ-в3uY̲mhU 'PcaR$Zg;ogNo_0ɻ\~PJ4axr ;C B@8Q֪Y?>Vz8>Љg4 <93\9ͯK)ɑ3U [kV#j< qmޏ))8q~E3,ԁ5k w:v`ObE0{zs|]Xq T^*P(Kڀ,@Z)f,T+3Sbig(Z28puWV)L9] K/i$ȏ ersȔ RCda+5Z%hҠ*[V[HX` =M,X9l6;ns#dJpfzIy5}Dn%}+7O"o*M)`NZbJP:VU vP>Z9Yy]V-9\?A5( 0x5ڶyph+ON m*T:d’Pka~•*ϘT@jIjO1' nHٶo_^ f%VDfQHa 쑵f,d4y@ﻝa)/H1F䛭 RY4$Hl> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 423 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 425 0 obj [ 426 0 R 427 0 R ] endobj 426 0 obj << /Subtype /Link /Rect [ 92.39822 690.94171 142.50391 700.91208 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 427 0 obj << /Subtype /Link /Rect [ 238.17422 690.94171 318.5083 700.91208 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 428 0 obj << /Filter /FlateDecode /Length 429 0 R >> stream HT]o0}Oh_Fv0V[488^ܤmHks}پE^f&BepbL/8!A4.a[M}N:͛p? vJܽVS]jSTʚ"SILX,.9s "윪2;Q2ER,In_ɻM ӤQCG%cH BB`jbhkuXIqۤ}pN#'p' Bwe}& g3JizF$zvU\auD<a8 pdh0ib.bsH m`2u bе*]wxr86YZpTB|@v7J#Bk:KL A@q3e`T3lJ\ hpnw3$>h21AC)bY`ay0ţZS+rݖamA7g2> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 433 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 431 0 obj << /Filter /FlateDecode /Length 432 0 R >> stream HVo6.á4p$K [ ɢFQueHIVdw\$u${n)5~h-O>{|O_mDδ9yz{대 ~xyo[I%v\+*ta,ͦ%P_y=,/)Lab%Fmu*y:ַwoY+W?0t3?t;;޿᭤rO5xfQv?gp||-拉9ԔHq *Uطs_&02t ~˙ |CXliB7g= ~˧!9lȘQ_eGG( vf"*Ƭ)R  *͓>4N2` |[B/\`JH!fYVXgOxr2T{Q; kH*5pt,`OGYYK{\<7u+^V.L"t.DQ&*P2byӲ=E4 !Dm(4YN [Ws_'[LRE/a!L=t°;M(! k7mY 9FNSkާA,sm C/sG cH*՘՚*s\+S oح3pV̒ĄDrZ0,pB) VG[yɀRa͇%dxD 6&ww/,jߔlǟuuYP[Td;3ϑDlIdY[Z`Yzb(W%~x}i (]~ TVĴ$t&뵖hoQ KlVwuaUiVauSԃ j65MH@Ư;#۾< hq |Vj'2Zt͚ZESv1A?w*G endstream endobj 432 0 obj 1305 endobj 433 0 obj ('^5?BnR0`) endobj 434 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 765 0 R /PZ 1.10327 /StructParents 58 /Contents 435 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 433 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 435 0 obj << /Filter /FlateDecode /Length 436 0 R >> stream HWmo6n}H98] $EhhsDwGJ~ICyw=ϑ ϵH,x[+) >өO DQp:1-VBARXJxrѷEB'9ʕZ-в3uY̲Ω3:4fEw}%J1TW" m]`iYE'lq+Lwy ^Rphh\?G9©V^bf!(oB4U᳏t"c3OTH2NqŻW?Ja݁Ƒq4Fӑ[lѐOd2qErL=ȕ`\> ^?T +E ]/VjB$@Z(W4ReL0p^q$G`ʊ- nVZ%hҐ cQ3Z!,Qүys`TKlɈ5" )rHAs(mxB!]#nm$ѵ;Atw6 (D qO:Z.EV4 yʈTQe~M鈕W:{pJZS,GH 5UA.AѧG\;ԫo(1EMiAmRnXDD!ЛTRhXgD̅kFjڻ{(D0_5&0`zn%Kqq&Ki";b~Ha 71jN8& 7 IV%V2gZgVqZKZw@Hk˕\4=:sTnh6-_ԝ˦Q7Ыn`jIWbܩ^5N`x2 ' A7㗉 #w]X[r ܕ%JR8Y< }_*i3O|1kU6x;Wsd)ꇃQ8p|689`46$A endstream endobj 436 0 obj 1576 endobj 437 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 765 0 R /PZ 1.10327 /StructParents 59 /Annots 438 0 R /Contents 441 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 433 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 438 0 obj [ 439 0 R 440 0 R ] endobj 439 0 obj << /Subtype /Link /Rect [ 92.39822 543.74266 142.50391 553.71303 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 440 0 obj << /Subtype /Link /Rect [ 238.17422 543.74266 318.5083 553.71303 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 441 0 obj << /Filter /FlateDecode /Length 442 0 R >> stream HUmoF . H){ѻXdixRa,bNqe}<؊tl:۱jN%|OFsjBI;@!.qfG5&>(di**QAHfQWC4#DC@sGZvuݗ"ҧ>K-:00tU@i mW~۲nwj[FE NL&L-ჀQﵧNTmwnӌC VE"5[C$O)lV]H%e;M~0Ń[U77\] G[3>AF`+Mt\t4mYV_:w[ 7 O/Lyz v]~981 ~٘~>tpc^oqM劈d})  C'1v,3nX?R¸, J5+YZV4-2Oh\tk}[f*򼾭"f#KRלQӥ&NLtf_S:! endstream endobj 442 0 obj 981 endobj 443 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 781 0 R /PZ 1.10327 /StructParents 60 /Annots 444 0 R /Contents 447 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 449 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 444 0 obj [ 445 0 R 446 0 R ] endobj 445 0 obj << /Subtype /Link /Rect [ 92.39822 92.90024 142.50391 102.87062 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 446 0 obj << /Subtype /Link /Rect [ 238.17422 92.90024 318.5083 102.87062 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 447 0 obj << /Filter /FlateDecode /Length 448 0 R >> stream HVao6.kHɖM7$[8heJ*Qqe}GJeΰb'ݻww䙧L y*e.x7Dpkn7"G\|3Y<^r 5O?(2 L0'&M>(?E x>Ypx$䡂ax31\>; Y||m_U4ڰt|Dpa>9R KK0B h:px m90LbNՔ”+FWg?[k[Ei(s ikk03=&b ed# =@C}Oųmdߧ֛9"0aPq1伒PQ$LsbQB&Jr0ȥ!VJf u%W-AVVLW"X=E}W irԭ)ap ۯ;0e~<\JŇXmEz e_uwUpbbYL J~*gAP  s+3**]O$~uv|i["a.8rq(Jud;BYԐyEHUϢ.Q!F d I>GAЅYXv:#03/~_ TށJݬZKh`F E QsWuqB$)Ta7 : 9T_ &ۭ~.TAʳIļuAth"_<6L5 =`z k*FrxpUPwAsڼV L*" 2T`{f\3΂d:/,2WfsQ> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 899 0 R /T1_4 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 456 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 451 0 obj [ 452 0 R 453 0 R ] endobj 452 0 obj << /Subtype /Link /Rect [ 93.56221 431.25471 144.2991 441.35069 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 453 0 obj << /Subtype /Link /Rect [ 241.17462 431.25471 322.52069 441.35069 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 454 0 obj << /Filter /FlateDecode /Length 455 0 R >> stream HVmO80J{IVGKaYQ+ە!q[/iK\ ~ii9Ҧu<3cC %'aGzTD W4r~Wz.OzNe*Sh`? : >Ad U iI>h$̅`n|fމp$ i_00AAE!'_koV7A:=(uR;gJesgbt6݄ߵf &-?:0J&;]IGs:%e;Ug1ζ9>3k$^#1N<۷+"1]ߩ`WWLgCpm&t53.~Cp' cL (Kc&ڐكqDD;d)XZ#' d ]BRAe%$^;~//O?`-?=uNEw> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 460 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 458 0 obj << /Filter /FlateDecode /Length 459 0 R >> stream HWio8na 4\]@m$&Z@]4DJJRq\w|Dq̼98rϔ ~â 0׆OEȦ"gF޼95m6p}}yp[1p43Ys2'M\S0x qBC. G-uS) +"Rs;ihH{I.$.qܗ(i2sШ PZǟ"^7(CƂ*F5ԸLqZ1*ʁ YBr(U/̌XaxՖ&nkTtw.pZ$D` #(/RUd<]"Xq0lngWpoPS1n#6<#iMA&ȊSE t9S) &Rg$4d0zdknԟ"jgfBV |zRCE0n.Q*Mh(՞F*tސS+m3퀚h9=&Gd\'(vbsX\aEL6ٮ !̀SXT(vȥ3% #<*x4 `q6hVdejDb(;f.vW6 W0%]$R9Et˧^8~:*&UUuP^bř'Wr|®{!ސ eR.P^'7ͤ#%K-ePGYZROV{+ |'<̎^RUPz[)K_ OO;B95]t2dOcrϩŬĔRSHfyX2pV zϹn^Vs`w71:-+'OޝsCD <lyf";\pL<į2mXW^9 4x1n&['Dk`o#ǔOZR-[Q"lCzdY{LGnjY#6swÅĉdR6nQZh= jjw {{}H=/kg p:kwqi ^6mp Q.~^Y 5XZ-F唽х;2pޝ|h|Ƿ̘s5†h3mܤH_4vp)<}>>SA#*_WA>|x5OQ endstream endobj 459 0 obj 1512 endobj 460 0 obj (!vƇZp]ܼ*) endobj 461 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 781 0 R /PZ 1.10327 /StructParents 63 /Annots 462 0 R /Contents 465 0 R /Resources << /ColorSpace << /CS0 896 0 R >> /Font << /T1_0 895 0 R /T1_1 899 0 R /T1_2 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 460 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 462 0 obj [ 463 0 R 464 0 R ] endobj 463 0 obj << /Subtype /Link /Rect [ 92.39822 746.65852 142.50391 756.62891 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 464 0 obj << /Subtype /Link /Rect [ 238.17422 746.65852 318.5083 756.62891 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 465 0 obj << /Filter /FlateDecode /Length 466 0 R >> stream H]O0-?i|AmcѸ ԡaI~NBKSF7iZ{9lvy6J}FČ%!c{gBR!@i+}ev {{Aph '9vb \5=[:/ a Hnɣ9 l%/5I&p#\FM܇x=Kc5~" jB B 9}Sb9[;2v_Ms'W> ~"ShsY'Z;"iOiˁ* iN@ZCH#02A8C.N]ڜS24 GdYQOjM;[d#Ldp=;5Vf>q|!1HR/xྦ@ђ_Ҁ{*Vo ؀ׁˆVEht Br*SP}jFz{_N #!錦 5MBPl-(t{zC?.ZssA#*{Z;re\|>bvgk:3x4s,w./f> /Font << /T1_0 895 0 R /T1_1 894 0 R /T1_2 893 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 470 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 468 0 obj << /Filter /FlateDecode /Length 469 0 R >> stream HVko6ns$Kq,; NhP UmExwHI~i;i{} ŜŚ=s_h' eADoDA0"o89u}"gZȜ?\N;}2jgx{ǧ2J,V"&%:M< 睱5/p93yx^)Y"_ %t O"> ?u^ӎϦЕW4˯@1~Fpz>CR +R\5"_Ql?wxwgFhP˴imHqMDחߢQ׫{z 3 n[wкm׍9- OSx֧17ɊlM)K ZLi)Kmuʱ)V>lYd2QwDfPHqcnSjsM9[rP `%2QW;D &C)WݵʊeٚJZ? 0im (iIhq(%ƲYC5鏪(di Yk[\f\f_EvG脰hMKlR Q"@z[j®T{eUݎ֘-ˢTx[T'k @,+P/yq8L!7PeFɎ@%f#=*?x1N-bhIZrOtlt+@M'e ,wKZBqU)E%=Jܱt$6I{TBtјT|Q̹%; ?Υ0Tv{;K wc. %M? f~Yea^Gv.A14ï/щ2/4.&xG~trdgmT'JӋHUD]jZ%h$\=GoOjҒZH! A7l[G/V&n2efȶ%GO Ic&M' ١ށuC E'VUYi41~ۆK>H.l;#s> /Font << /T1_0 895 0 R /T1_1 893 0 R /T1_2 899 0 R /T1_3 900 0 R >> /ExtGState << /GS0 901 0 R >> /ProcSet [ /PDF /Text ] >> /ID 470 0 R /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 472 0 obj [ 473 0 R 474 0 R ] endobj 473 0 obj << /Subtype /Link /Rect [ 92.39822 650.33507 142.50391 660.30545 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/Amiga/Perl/AG2HTML.pl)>> /Border [ 0 0 0 ] >> endobj 474 0 obj << /Subtype /Link /Rect [ 238.17422 650.33507 318.5083 660.30545 ] /A << /S /URI /URI (http://www.cs.cmu.edu/~mjw/)>> /Border [ 0 0 0 ] >> endobj 475 0 obj << /Filter /FlateDecode /Length 476 0 R >> stream HUnF}'@+޸APKNV:L`.MMyre/)Ja*,y!=3Vϓ«W$] nh\pKnxA \0V@.^Oa8k샚Tyet)cxDKBFxq>PυV.PhD&ş7f:q'u?Ij2j|o_k_P(K(/VqemUTs Z/9zǾn7Q#y$jM'+|/#܎#| t "pUڥjT z^fw6 $5djKe&%F=<4t7}f/>wFoQ-Yy XJ,:ys+3U:O=i?}j6z<F񈣟q"'J7wb`{Y+ ,!&E$ > << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> << /O /WebCapture >> ] >> endobj 478 0 obj << /Kids [ 544 0 R 545 0 R ] >> endobj 479 0 obj [ 879 0 R ] endobj 480 0 obj [ 878 0 R ] endobj 481 0 obj [ 878 0 R ] endobj 482 0 obj [ 876 0 R ] endobj 483 0 obj [ 874 0 R ] endobj 484 0 obj [ 874 0 R ] endobj 485 0 obj [ 872 0 R ] endobj 486 0 obj [ 870 0 R ] endobj 487 0 obj [ 870 0 R ] endobj 488 0 obj [ 870 0 R ] endobj 489 0 obj [ 868 0 R ] endobj 490 0 obj [ 866 0 R ] endobj 491 0 obj [ 866 0 R ] endobj 492 0 obj [ 864 0 R ] endobj 493 0 obj [ 864 0 R ] endobj 494 0 obj [ 862 0 R ] endobj 495 0 obj [ 860 0 R ] endobj 496 0 obj [ 860 0 R ] endobj 497 0 obj [ 858 0 R ] endobj 498 0 obj [ 858 0 R ] endobj 499 0 obj [ 856 0 R ] endobj 500 0 obj [ 856 0 R ] endobj 501 0 obj [ 854 0 R ] endobj 502 0 obj [ 852 0 R ] endobj 503 0 obj [ 850 0 R ] endobj 504 0 obj [ 848 0 R ] endobj 505 0 obj [ 846 0 R ] endobj 506 0 obj [ 844 0 R ] endobj 507 0 obj [ 844 0 R ] endobj 508 0 obj [ 842 0 R ] endobj 509 0 obj [ 842 0 R ] endobj 510 0 obj [ 842 0 R ] endobj 511 0 obj [ 842 0 R ] endobj 512 0 obj [ 840 0 R ] endobj 513 0 obj [ 840 0 R ] endobj 514 0 obj [ 838 0 R ] endobj 515 0 obj [ 836 0 R ] endobj 516 0 obj [ 836 0 R ] endobj 517 0 obj [ 834 0 R ] endobj 518 0 obj [ 832 0 R ] endobj 519 0 obj [ 830 0 R ] endobj 520 0 obj [ 828 0 R ] endobj 521 0 obj [ 826 0 R ] endobj 522 0 obj [ 826 0 R ] endobj 523 0 obj [ 824 0 R ] endobj 524 0 obj [ 822 0 R ] endobj 525 0 obj [ 820 0 R ] endobj 526 0 obj [ 818 0 R ] endobj 527 0 obj [ 816 0 R ] endobj 528 0 obj [ 816 0 R ] endobj 529 0 obj [ 816 0 R ] endobj 530 0 obj [ 814 0 R ] endobj 531 0 obj [ 812 0 R ] endobj 532 0 obj [ 810 0 R ] endobj 533 0 obj [ 808 0 R ] endobj 534 0 obj [ 806 0 R ] endobj 535 0 obj [ 806 0 R ] endobj 536 0 obj [ 804 0 R ] endobj 537 0 obj [ 804 0 R ] endobj 538 0 obj [ 804 0 R ] endobj 539 0 obj [ 802 0 R ] endobj 540 0 obj [ 800 0 R ] endobj 541 0 obj [ 798 0 R ] endobj 542 0 obj [ 798 0 R ] endobj 543 0 obj [ 796 0 R ] endobj 544 0 obj << /Nums [ 0 479 0 R 1 480 0 R 2 481 0 R 3 482 0 R 4 483 0 R 5 484 0 R 6 485 0 R 7 486 0 R 8 487 0 R 9 488 0 R 10 489 0 R 11 490 0 R 12 491 0 R 13 492 0 R 14 493 0 R 15 494 0 R 16 495 0 R 17 496 0 R 18 497 0 R 19 498 0 R 20 499 0 R 21 500 0 R 22 501 0 R 23 502 0 R 24 503 0 R 25 504 0 R 26 505 0 R 27 506 0 R 28 507 0 R 29 508 0 R 30 509 0 R 31 510 0 R ] /Limits [ 0 31 ] >> endobj 545 0 obj << /Nums [ 32 511 0 R 33 512 0 R 34 513 0 R 35 514 0 R 36 515 0 R 37 516 0 R 38 517 0 R 39 518 0 R 40 519 0 R 41 520 0 R 42 521 0 R 43 522 0 R 44 523 0 R 45 524 0 R 46 525 0 R 47 526 0 R 48 527 0 R 49 528 0 R 50 529 0 R 51 530 0 R 52 531 0 R 53 532 0 R 54 533 0 R 55 534 0 R 56 535 0 R 57 536 0 R 58 537 0 R 59 538 0 R 60 539 0 R 61 540 0 R 62 541 0 R 63 542 0 R 64 543 0 R 65 546 0 R ] /Limits [ 32 65 ] >> endobj 546 0 obj [ 796 0 R ] endobj 547 0 obj << /Type /Pages /Kids [ 733 0 R 732 0 R ] /Count 66 >> endobj 548 0 obj << /ModDate (D:20041026152617-05'00') /CreationDate (D:20041026152503Z) /Producer (Acrobat Web Capture 5.0) /Title (Frexx C Preprocessor) >> endobj 549 0 obj << /Type /Metadata /Subtype /XML /Length 1163 >> stream 2004-10-26T15:26:17-05:00 2004-10-26T15:25:03Z Acrobat Web Capture 5.0 Frexx C Preprocessor 2004-10-26T15:26:17-05:00 2004-10-26T15:25:03Z 2004-10-26T15:26:17-05:00 Frexx C Preprocessor Frexx C Preprocessor endstream endobj 550 0 obj (Frexx C Preprocessor) endobj 551 0 obj << /V 1.25 /C 555 0 R >> endobj 552 0 obj << /URL (http://www.contactor.se/~dast/fpl-old/cpp/main.HTML) /L 13243 /F 1 /S 553 0 R >> endobj 553 0 obj << /G 554 0 R >> endobj 554 0 obj << /CB 0 /AH 0 /PO 0 /S 0 /AL 0 /AT 70 /AS 1 /SU 1 /PS [ 792 612 ] /M [ 10.08 10.08 25.992 36 ] >> endobj 555 0 obj [ 552 0 R ] endobj 556 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/main.HTML) endobj 557 0 obj << /S /SPS /ID 902 0 R /TID 559 0 R /T 550 0 R /CT (text/html) /TS (D:20041026202504) /O [ 791 0 R ] /SI 558 0 R >> endobj 558 0 obj << /AU 556 0 R /TS (D:20041026202504) >> endobj 559 0 obj (' 3DUg92) endobj 560 0 obj << /Names [ 82 0 R 601 0 R 338 0 R 729 0 R 261 0 R 697 0 R 201 0 R 665 0 R 66 0 R 591 0 R 101 0 R 612 0 R 148 0 R 638 0 R 470 0 R 784 0 R 295 0 R 718 0 R 902 0 R 557 0 R 302 0 R 723 0 R 216 0 R 671 0 R 247 0 R 686 0 R 456 0 R 773 0 R 160 0 R 644 0 R 398 0 R 736 0 R 22 0 R 574 0 R 185 0 R 660 0 R 267 0 R 702 0 R 449 0 R 768 0 R 44 0 R 579 0 R 281 0 R 707 0 R 168 0 R 649 0 R 419 0 R 751 0 R 240 0 R 681 0 R 460 0 R 778 0 R 405 0 R 741 0 R 48 0 R 584 0 R 174 0 R 654 0 R 4 0 R 564 0 R 95 0 R 607 0 R 220 0 R 676 0 R 288 0 R 713 0 R 121 0 R 623 0 R 141 0 R 633 0 R 18 0 R 569 0 R 423 0 R 757 0 R 254 0 R 692 0 R 433 0 R 762 0 R 111 0 R 617 0 R 134 0 R 628 0 R 72 0 R 596 0 R 412 0 R 746 0 R ] >> endobj 561 0 obj << /Names [ 600 0 R 601 0 R 706 0 R 707 0 R 712 0 R 713 0 R 696 0 R 697 0 R 701 0 R 702 0 R 691 0 R 692 0 R 767 0 R 768 0 R 772 0 R 773 0 R 777 0 R 778 0 R 685 0 R 686 0 R 680 0 R 681 0 R 568 0 R 569 0 R 563 0 R 564 0 R 643 0 R 644 0 R 653 0 R 654 0 R 664 0 R 665 0 R 675 0 R 676 0 R 670 0 R 671 0 R 648 0 R 649 0 R 728 0 R 729 0 R 659 0 R 660 0 R 578 0 R 579 0 R 583 0 R 584 0 R 622 0 R 623 0 R 637 0 R 638 0 R 735 0 R 736 0 R 740 0 R 741 0 R 745 0 R 746 0 R 750 0 R 751 0 R 756 0 R 757 0 R 761 0 R 762 0 R 616 0 R 617 0 R 783 0 R 784 0 R 590 0 R 591 0 R 606 0 R 607 0 R 595 0 R 596 0 R 632 0 R 633 0 R 573 0 R 574 0 R 611 0 R 612 0 R 627 0 R 628 0 R 556 0 R 557 0 R 717 0 R 718 0 R 722 0 R 723 0 R ] >> endobj 562 0 obj (Global Actions) endobj 563 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/global_actions.HTML) endobj 564 0 obj << /S /SPS /ID 4 0 R /TID 566 0 R /T 562 0 R /CT (text/html) /TS (D:20041026202505) /O [ 1 0 R 5 0 R ] /SI 565 0 R >> endobj 565 0 obj << /AU 563 0 R /TS (D:20041026202505) >> endobj 566 0 obj (9Bluo6h') endobj 567 0 obj (Preprocessing Directives) endobj 568 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/directives.HTML) endobj 569 0 obj << /S /SPS /ID 18 0 R /TID 571 0 R /T 567 0 R /CT (text/html) /TS (D:20041026202505) /O [ 11 0 R ] /SI 570 0 R >> endobj 570 0 obj << /AU 568 0 R /TS (D:20041026202505) >> endobj 571 0 obj (-}\(ԔWi5xA) endobj 572 0 obj (Simple Macros) endobj 573 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_simple.HTML) endobj 574 0 obj << /S /SPS /ID 22 0 R /TID 576 0 R /T 572 0 R /CT (text/html) /TS (D:20041026202506) /O [ 19 0 R 23 0 R ] /SI 575 0 R >> endobj 575 0 obj << /AU 573 0 R /TS (D:20041026202506) >> endobj 576 0 obj ( y}+) endobj 577 0 obj (Macros) endobj 578 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros.HTML) endobj 579 0 obj << /S /SPS /ID 44 0 R /TID 581 0 R /T 577 0 R /CT (text/html) /TS (D:20041026202507) /O [ 30 0 R ] /SI 580 0 R >> endobj 580 0 obj << /AU 578 0 R /TS (D:20041026202507) >> endobj 581 0 obj (5{;4H΅4) endobj 582 0 obj (Macros with Arguments) endobj 583 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_arguments.HTML) endobj 584 0 obj << /S /SPS /ID 48 0 R /TID 586 0 R /T 582 0 R /CT (text/html) /TS (D:20041026202507) /O [ 45 0 R 49 0 R 52 0 R ] /SI 585 0 R >> endobj 585 0 obj << /AU 583 0 R /TS (D:20041026202507) >> endobj 586 0 obj (R'F:Ggg) endobj 587 0 obj << /Type /Pages /Kids [ 23 0 R 30 0 R 45 0 R 49 0 R 52 0 R ] /Count 5 /Parent 733 0 R >> endobj 588 0 obj << /Type /Pages /Kids [ 791 0 R 1 0 R 5 0 R 11 0 R 19 0 R ] /Count 5 /Parent 733 0 R >> endobj 589 0 obj (Predefined Macros) endobj 590 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined.HTML) endobj 591 0 obj << /S /SPS /ID 66 0 R /TID 593 0 R /T 589 0 R /CT (text/html) /TS (D:20041026202508) /O [ 58 0 R ] /SI 592 0 R >> endobj 592 0 obj << /AU 590 0 R /TS (D:20041026202508) >> endobj 593 0 obj (XvPٲ5z-) endobj 594 0 obj (Standard Predefined Macros) endobj 595 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_standard.HTM\ L) endobj 596 0 obj << /S /SPS /ID 72 0 R /TID 598 0 R /T 594 0 R /CT (text/html) /TS (D:20041026202508) /O [ 67 0 R 73 0 R ] /SI 597 0 R >> endobj 597 0 obj << /AU 595 0 R /TS (D:20041026202508) >> endobj 598 0 obj (Y E?#l3 ) endobj 599 0 obj (Combining Source Files) endobj 600 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/combine.HTML) endobj 601 0 obj << /S /SPS /ID 82 0 R /TID 603 0 R /T 599 0 R /CT (text/html) /TS (D:20041026202509) /O [ 79 0 R 83 0 R ] /SI 602 0 R >> endobj 602 0 obj << /AU 600 0 R /TS (D:20041026202509) >> endobj 603 0 obj (#ppuJG[#) endobj 604 0 obj << /Type /Pages /Kids [ 58 0 R 67 0 R 73 0 R 79 0 R 83 0 R ] /Count 5 /Parent 733 0 R >> endobj 605 0 obj (Nonstandard Predefined Macros) endobj 606 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_predefined_nonstandard.\ HTML) endobj 607 0 obj << /S /SPS /ID 95 0 R /TID 609 0 R /T 605 0 R /CT (text/html) /TS (D:20041026202510) /O [ 89 0 R ] /SI 608 0 R >> endobj 608 0 obj << /AU 606 0 R /TS (D:20041026202510) >> endobj 609 0 obj ('$bRG/?) endobj 610 0 obj (Macro Stringification) endobj 611 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_stringification.HTML) endobj 612 0 obj << /S /SPS /ID 101 0 R /TID 614 0 R /T 610 0 R /CT (text/html) /TS (D:20041026202510) /O [ 96 0 R 102 0 R ] /SI 613 0 R >> endobj 613 0 obj << /AU 611 0 R /TS (D:20041026202510) >> endobj 614 0 obj (9y }I.w<) endobj 615 0 obj (Swallowing the Semicolon) endobj 616 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_swallow.HTML) endobj 617 0 obj << /S /SPS /ID 111 0 R /TID 619 0 R /T 615 0 R /CT (text/html) /TS (D:20041026202510) /O [ 108 0 R 112 0 R ] /SI 618 0 R >> endobj 618 0 obj << /AU 616 0 R /TS (D:20041026202510) >> endobj 619 0 obj (Sa;K0R2TR) endobj 620 0 obj << /Type /Pages /Kids [ 89 0 R 96 0 R 102 0 R 108 0 R 112 0 R ] /Count 5 /Parent 733 0 R >> endobj 621 0 obj (Macro Concatenation) endobj 622 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_concatenation.HTML) endobj 623 0 obj << /S /SPS /ID 121 0 R /TID 625 0 R /T 621 0 R /CT (text/html) /TS (D:20041026202511) /O [ 118 0 R 122 0 R ] /SI 624 0 R >> endobj 624 0 obj << /AU 622 0 R /TS (D:20041026202511) >> endobj 625 0 obj (O/qvmv\nz) endobj 626 0 obj (Undefining Macros) endobj 627 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_undefining.HTML) endobj 628 0 obj << /S /SPS /ID 134 0 R /TID 630 0 R /T 626 0 R /CT (text/html) /TS (D:20041026202512) /O [ 128 0 R ] /SI 629 0 R >> endobj 629 0 obj << /AU 627 0 R /TS (D:20041026202512) >> endobj 630 0 obj ("|v`?7) endobj 631 0 obj (Redefining Macros) endobj 632 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_redefining.HTML) endobj 633 0 obj << /S /SPS /ID 141 0 R /TID 635 0 R /T 631 0 R /CT (text/html) /TS (D:20041026202512) /O [ 135 0 R ] /SI 634 0 R >> endobj 634 0 obj << /AU 632 0 R /TS (D:20041026202512) >> endobj 635 0 obj (X%ӆq^ :^z¥) endobj 636 0 obj (Pitfalls and Subtleties of Macros) endobj 637 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls.HTML) endobj 638 0 obj << /S /SPS /ID 148 0 R /TID 640 0 R /T 636 0 R /CT (text/html) /TS (D:20041026202512) /O [ 142 0 R ] /SI 639 0 R >> endobj 639 0 obj << /AU 637 0 R /TS (D:20041026202512) >> endobj 640 0 obj (\)4cx/MP) endobj 641 0 obj << /Type /Pages /Kids [ 118 0 R 122 0 R 128 0 R 135 0 R 142 0 R ] /Count 5 /Parent 733 0 R >> endobj 642 0 obj (Header Files) endobj 643 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/header_files.HTML) endobj 644 0 obj << /S /SPS /ID 160 0 R /TID 646 0 R /T 642 0 R /CT (text/html) /TS (D:20041026202513) /O [ 149 0 R ] /SI 645 0 R >> endobj 645 0 obj << /AU 643 0 R /TS (D:20041026202513) >> endobj 646 0 obj (?<#9IPƒ%+3) endobj 647 0 obj (Uses of Header Files) endobj 648 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/header_uses.HTML) endobj 649 0 obj << /S /SPS /ID 168 0 R /TID 651 0 R /T 647 0 R /CT (text/html) /TS (D:20041026202513) /O [ 161 0 R ] /SI 650 0 R >> endobj 650 0 obj << /AU 648 0 R /TS (D:20041026202513) >> endobj 651 0 obj (v?dqb/u) endobj 652 0 obj (The '#include' Directive) endobj 653 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/header_include.HTML) endobj 654 0 obj << /S /SPS /ID 174 0 R /TID 656 0 R /T 652 0 R /CT (text/html) /TS (D:20041026202514) /O [ 169 0 R 175 0 R ] /SI 655 0 R >> endobj 655 0 obj << /AU 653 0 R /TS (D:20041026202514) >> endobj 656 0 obj (Xu\r41[]) endobj 657 0 obj << /Type /Pages /Kids [ 149 0 R 161 0 R 169 0 R 175 0 R 182 0 R ] /Count 5 /Parent 732 0 R >> endobj 658 0 obj (Invoking the C Preprocessor) endobj 659 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/invoke.HTML) endobj 660 0 obj << /S /SPS /ID 185 0 R /TID 662 0 R /T 658 0 R /CT (text/html) /TS (D:20041026202515) /O [ 182 0 R 186 0 R 189 0 R 192 0 R ] /SI 661 0 R >> endobj 661 0 obj << /AU 659 0 R /TS (D:20041026202515) >> endobj 662 0 obj (U=zE+) endobj 663 0 obj (How '#include' works) endobj 664 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/header_include_ops.HTML) endobj 665 0 obj << /S /SPS /ID 201 0 R /TID 667 0 R /T 663 0 R /CT (text/html) /TS (D:20041026202515) /O [ 198 0 R 202 0 R ] /SI 666 0 R >> endobj 666 0 obj << /AU 664 0 R /TS (D:20041026202515) >> endobj 667 0 obj (Gb,l!i) endobj 668 0 obj << /Type /Pages /Kids [ 186 0 R 189 0 R 192 0 R 198 0 R 202 0 R ] /Count 5 /Parent 732 0 R >> endobj 669 0 obj (Once-Only Include Files) endobj 670 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/header_onceonly.HTML) endobj 671 0 obj << /S /SPS /ID 216 0 R /TID 673 0 R /T 669 0 R /CT (text/html) /TS (D:20041026202515) /O [ 209 0 R ] /SI 672 0 R >> endobj 672 0 obj << /AU 670 0 R /TS (D:20041026202515) >> endobj 673 0 obj (2H/ k) endobj 674 0 obj (Inheritance and Header Files) endobj 675 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/header_inheritance.HTML) endobj 676 0 obj << /S /SPS /ID 220 0 R /TID 678 0 R /T 674 0 R /CT (text/html) /TS (D:20041026202516) /O [ 217 0 R 221 0 R ] /SI 677 0 R >> endobj 677 0 obj << /AU 675 0 R /TS (D:20041026202516) >> endobj 678 0 obj (1ہPHC) endobj 679 0 obj (Conditionals) endobj 680 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/conditional.HTML) endobj 681 0 obj << /S /SPS /ID 240 0 R /TID 683 0 R /T 679 0 R /CT (text/html) /TS (D:20041026202516) /O [ 228 0 R ] /SI 682 0 R >> endobj 682 0 obj << /AU 680 0 R /TS (D:20041026202516) >> endobj 683 0 obj (a\nC$) endobj 684 0 obj (Why Conditionals are Used) endobj 685 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_why.HTML) endobj 686 0 obj << /S /SPS /ID 247 0 R /TID 688 0 R /T 684 0 R /CT (text/html) /TS (D:20041026202517) /O [ 241 0 R ] /SI 687 0 R >> endobj 687 0 obj << /AU 685 0 R /TS (D:20041026202517) >> endobj 688 0 obj (n2@,!^) endobj 689 0 obj << /Type /Pages /Kids [ 209 0 R 217 0 R 221 0 R 228 0 R 241 0 R ] /Count 5 /Parent 732 0 R >> endobj 690 0 obj (Syntax of Conditionals) endobj 691 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax.HTML) endobj 692 0 obj << /S /SPS /ID 254 0 R /TID 694 0 R /T 690 0 R /CT (text/html) /TS (D:20041026202517) /O [ 248 0 R ] /SI 693 0 R >> endobj 693 0 obj << /AU 691 0 R /TS (D:20041026202517) >> endobj 694 0 obj (٘,+N."\\dvԐ_) endobj 695 0 obj (Keeping Deleted Code for Future Reference) endobj 696 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_keepdeleted.HTML) endobj 697 0 obj << /S /SPS /ID 261 0 R /TID 699 0 R /T 695 0 R /CT (text/html) /TS (D:20041026202518) /O [ 255 0 R ] /SI 698 0 R >> endobj 698 0 obj << /AU 696 0 R /TS (D:20041026202518) >> endobj 699 0 obj (وu=a/#H) endobj 700 0 obj (Conditionals and Macros) endobj 701 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_macros.HTML) endobj 702 0 obj << /S /SPS /ID 267 0 R /TID 704 0 R /T 700 0 R /CT (text/html) /TS (D:20041026202519) /O [ 262 0 R 268 0 R ] /SI 703 0 R >> endobj 703 0 obj << /AU 701 0 R /TS (D:20041026202519) >> endobj 704 0 obj (-\)W874@$HJ) endobj 705 0 obj (Assertions) endobj 706 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_assert.HTML) endobj 707 0 obj << /S /SPS /ID 281 0 R /TID 709 0 R /T 705 0 R /CT (text/html) /TS (D:20041026202519) /O [ 275 0 R ] /SI 708 0 R >> endobj 708 0 obj << /AU 706 0 R /TS (D:20041026202519) >> endobj 709 0 obj (6e=וՊ) endobj 710 0 obj << /Type /Pages /Kids [ 248 0 R 255 0 R 262 0 R 268 0 R 275 0 R ] /Count 5 /Parent 732 0 R >> endobj 711 0 obj (The #error and #warning Directives) endobj 712 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_error.HTML) endobj 713 0 obj << /S /SPS /ID 288 0 R /TID 715 0 R /T 711 0 R /CT (text/html) /TS (D:20041026202520) /O [ 282 0 R ] /SI 714 0 R >> endobj 714 0 obj << /AU 712 0 R /TS (D:20041026202520) >> endobj 715 0 obj (pp\r696) endobj 716 0 obj (Miscellaneous Preprocessing Directives) endobj 717 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/other.HTML) endobj 718 0 obj << /S /SPS /ID 295 0 R /TID 720 0 R /T 716 0 R /CT (text/html) /TS (D:20041026202520) /O [ 289 0 R ] /SI 719 0 R >> endobj 719 0 obj << /AU 717 0 R /TS (D:20041026202520) >> endobj 720 0 obj (]{X\n\n) endobj 721 0 obj (C Preprocessor Output) endobj 722 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/output.HTML) endobj 723 0 obj << /S /SPS /ID 302 0 R /TID 725 0 R /T 721 0 R /CT (text/html) /TS (D:20041026202521) /O [ 296 0 R ] /SI 724 0 R >> endobj 724 0 obj << /AU 722 0 R /TS (D:20041026202521) >> endobj 725 0 obj (\n7O@Wu) endobj 726 0 obj << /Type /Pages /Kids [ 282 0 R 289 0 R 296 0 R 303 0 R 339 0 R ] /Count 5 /Parent 732 0 R >> endobj 727 0 obj (Index) endobj 728 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/heddleyautoindex.HTML) endobj 729 0 obj << /S /SPS /ID 338 0 R /TID 731 0 R /T 727 0 R /CT (text/html) /TS (D:20041026202522) /O [ 303 0 R 339 0 R 379 0 R ] /SI 730 0 R >> endobj 730 0 obj << /AU 728 0 R /TS (D:20041026202522) >> endobj 731 0 obj (Tr E&bh) endobj 732 0 obj << /Type /Pages /Kids [ 657 0 R 668 0 R 689 0 R 710 0 R 726 0 R 754 0 R 765 0 R 781 0 R ] /Count 41 /Parent 547 0 R >> endobj 733 0 obj << /Type /Pages /Kids [ 588 0 R 587 0 R 604 0 R 620 0 R 641 0 R ] /Count 25 /Parent 547 0 R >> endobj 734 0 obj (Cascaded Use of Macros) endobj 735 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_cascaded.HTML) endobj 736 0 obj << /S /SPS /ID 398 0 R /TID 738 0 R /T 734 0 R /CT (text/html) /TS (D:20041026202522) /O [ 392 0 R ] /SI 737 0 R >> endobj 737 0 obj << /AU 735 0 R /TS (D:20041026202522) >> endobj 738 0 obj (Øodw̤fx) endobj 739 0 obj (Duplication of Side Effects) endobj 740 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_duplication.HT\ ML) endobj 741 0 obj << /S /SPS /ID 405 0 R /TID 743 0 R /T 739 0 R /CT (text/html) /TS (D:20041026202523) /O [ 399 0 R ] /SI 742 0 R >> endobj 742 0 obj << /AU 740 0 R /TS (D:20041026202523) >> endobj 743 0 obj (Oq8.c v) endobj 744 0 obj (Improperly Nested Constructs) endobj 745 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_impropernestin\ g.HTML) endobj 746 0 obj << /S /SPS /ID 412 0 R /TID 748 0 R /T 744 0 R /CT (text/html) /TS (D:20041026202524) /O [ 406 0 R ] /SI 747 0 R >> endobj 747 0 obj << /AU 745 0 R /TS (D:20041026202524) >> endobj 748 0 obj (*7wFfI) endobj 749 0 obj (Newlines in Macro Arguments) endobj 750 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_newlines.HTML) endobj 751 0 obj << /S /SPS /ID 419 0 R /TID 753 0 R /T 749 0 R /CT (text/html) /TS (D:20041026202524) /O [ 413 0 R ] /SI 752 0 R >> endobj 752 0 obj << /AU 750 0 R /TS (D:20041026202524) >> endobj 753 0 obj (iFHm ?\)ki) endobj 754 0 obj << /Type /Pages /Kids [ 379 0 R 392 0 R 399 0 R 406 0 R 413 0 R ] /Count 5 /Parent 732 0 R >> endobj 755 0 obj (Self-Referential Macros) endobj 756 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_recursive.HTML\ ) endobj 757 0 obj << /S /SPS /ID 423 0 R /TID 759 0 R /T 755 0 R /CT (text/html) /TS (D:20041026202525) /O [ 420 0 R 424 0 R ] /SI 758 0 R >> endobj 758 0 obj << /AU 756 0 R /TS (D:20041026202525) >> endobj 759 0 obj (4U9\rmv}d) endobj 760 0 obj (Separate Expansion of Macro Arguments) endobj 761 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_separateexp.HT\ ML) endobj 762 0 obj << /S /SPS /ID 433 0 R /TID 764 0 R /T 760 0 R /CT (text/html) /TS (D:20041026202526) /O [ 430 0 R 434 0 R 437 0 R ] /SI 763 0 R >> endobj 763 0 obj << /AU 761 0 R /TS (D:20041026202526) >> endobj 764 0 obj (يJL) endobj 765 0 obj << /Type /Pages /Kids [ 420 0 R 424 0 R 430 0 R 434 0 R 437 0 R ] /Count 5 /Parent 732 0 R >> endobj 766 0 obj (The #elif Directive) endobj 767 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax_elif.HTML) endobj 768 0 obj << /S /SPS /ID 449 0 R /TID 770 0 R /T 766 0 R /CT (text/html) /TS (D:20041026202526) /O [ 443 0 R ] /SI 769 0 R >> endobj 769 0 obj << /AU 767 0 R /TS (D:20041026202526) >> endobj 770 0 obj (LD\)#Yk) endobj 771 0 obj (The #else Directive) endobj 772 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax_else.HTML) endobj 773 0 obj << /S /SPS /ID 456 0 R /TID 775 0 R /T 771 0 R /CT (text/html) /TS (D:20041026202526) /O [ 450 0 R ] /SI 774 0 R >> endobj 774 0 obj << /AU 772 0 R /TS (D:20041026202526) >> endobj 775 0 obj (ja[M֩:F) endobj 776 0 obj (The #if' Directive) endobj 777 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/cond_syntax_if.HTML) endobj 778 0 obj << /S /SPS /ID 460 0 R /TID 780 0 R /T 776 0 R /CT (text/html) /TS (D:20041026202527) /O [ 457 0 R 461 0 R ] /SI 779 0 R >> endobj 779 0 obj << /AU 777 0 R /TS (D:20041026202527) >> endobj 780 0 obj (#J̈́x5 x) endobj 781 0 obj << /Type /Pages /Kids [ 443 0 R 450 0 R 457 0 R 461 0 R 467 0 R 471 0 R ] /Count 6 /Parent 732 0 R >> endobj 782 0 obj (Unintended Grouping of Arithmetic) endobj 783 0 obj (http://www.contactor.se/~dast/fpl-old/cpp/macros_pitfalls_unintendedgrou\ p.HTML) endobj 784 0 obj << /S /SPS /ID 470 0 R /TID 786 0 R /T 782 0 R /CT (text/html) /TS (D:20041026202527) /O [ 467 0 R 471 0 R ] /SI 785 0 R >> endobj 785 0 obj << /AU 783 0 R /TS (D:20041026202527) >> endobj 786 0 obj (4J.`ybz-) endobj xref 0 787 0000000000 65535 f 0000021137 00000 n 0000021485 00000 n 0000022879 00000 n 0000022900 00000 n 0000022934 00000 n 0000023297 00000 n 0000023330 00000 n 0000023510 00000 n 0000023669 00000 n 0000024561 00000 n 0000024582 00000 n 0000024963 00000 n 0000025006 00000 n 0000025251 00000 n 0000025433 00000 n 0000025594 00000 n 0000027187 00000 n 0000027209 00000 n 0000027244 00000 n 0000027595 00000 n 0000029149 00000 n 0000029171 00000 n 0000029206 00000 n 0000029573 00000 n 0000029616 00000 n 0000029851 00000 n 0000030033 00000 n 0000030194 00000 n 0000031518 00000 n 0000031540 00000 n 0000031921 00000 n 0000032014 00000 n 0000032258 00000 n 0000032505 00000 n 0000032753 00000 n 0000033006 00000 n 0000033258 00000 n 0000033506 00000 n 0000033755 00000 n 0000034002 00000 n 0000034184 00000 n 0000034346 00000 n 0000035734 00000 n 0000035756 00000 n 0000035792 00000 n 0000036143 00000 n 0000037675 00000 n 0000037697 00000 n 0000037732 00000 n 0000038069 00000 n 0000039868 00000 n 0000039890 00000 n 0000040257 00000 n 0000040293 00000 n 0000040475 00000 n 0000040636 00000 n 0000041871 00000 n 0000041893 00000 n 0000042275 00000 n 0000042325 00000 n 0000042583 00000 n 0000042845 00000 n 0000043028 00000 n 0000043190 00000 n 0000044198 00000 n 0000044219 00000 n 0000044255 00000 n 0000044623 00000 n 0000044652 00000 n 0000044890 00000 n 0000046453 00000 n 0000046475 00000 n 0000046510 00000 n 0000046878 00000 n 0000046914 00000 n 0000047096 00000 n 0000047257 00000 n 0000048268 00000 n 0000048289 00000 n 0000048641 00000 n 0000050248 00000 n 0000050270 00000 n 0000050305 00000 n 0000050673 00000 n 0000050709 00000 n 0000050891 00000 n 0000051052 00000 n 0000052069 00000 n 0000052090 00000 n 0000052472 00000 n 0000052508 00000 n 0000052689 00000 n 0000052851 00000 n 0000054137 00000 n 0000054159 00000 n 0000054194 00000 n 0000054563 00000 n 0000054592 00000 n 0000054847 00000 n 0000056432 00000 n 0000056455 00000 n 0000056493 00000 n 0000056865 00000 n 0000056904 00000 n 0000057087 00000 n 0000057249 00000 n 0000058434 00000 n 0000058457 00000 n 0000058812 00000 n 0000060155 00000 n 0000060178 00000 n 0000060214 00000 n 0000060586 00000 n 0000060625 00000 n 0000060808 00000 n 0000060970 00000 n 0000061775 00000 n 0000061797 00000 n 0000062152 00000 n 0000063559 00000 n 0000063582 00000 n 0000063618 00000 n 0000063990 00000 n 0000064029 00000 n 0000064209 00000 n 0000064368 00000 n 0000066221 00000 n 0000066244 00000 n 0000066630 00000 n 0000066669 00000 n 0000066852 00000 n 0000067014 00000 n 0000068287 00000 n 0000068310 00000 n 0000068346 00000 n 0000068732 00000 n 0000068771 00000 n 0000068954 00000 n 0000069116 00000 n 0000070518 00000 n 0000070541 00000 n 0000070577 00000 n 0000070963 00000 n 0000071002 00000 n 0000071184 00000 n 0000071345 00000 n 0000072630 00000 n 0000072653 00000 n 0000072689 00000 n 0000073075 00000 n 0000073154 00000 n 0000073397 00000 n 0000073644 00000 n 0000073895 00000 n 0000074142 00000 n 0000074392 00000 n 0000074574 00000 n 0000074736 00000 n 0000075948 00000 n 0000075971 00000 n 0000076007 00000 n 0000076393 00000 n 0000076440 00000 n 0000076683 00000 n 0000076866 00000 n 0000077028 00000 n 0000078589 00000 n 0000078612 00000 n 0000078649 00000 n 0000079021 00000 n 0000079052 00000 n 0000079292 00000 n 0000080797 00000 n 0000080820 00000 n 0000080856 00000 n 0000081228 00000 n 0000081275 00000 n 0000081518 00000 n 0000081701 00000 n 0000081864 00000 n 0000083176 00000 n 0000083199 00000 n 0000083554 00000 n 0000085050 00000 n 0000085073 00000 n 0000085110 00000 n 0000085451 00000 n 0000087006 00000 n 0000087029 00000 n 0000087370 00000 n 0000088846 00000 n 0000088869 00000 n 0000089227 00000 n 0000089266 00000 n 0000089449 00000 n 0000089611 00000 n 0000090264 00000 n 0000090286 00000 n 0000090641 00000 n 0000091998 00000 n 0000092021 00000 n 0000092059 00000 n 0000092417 00000 n 0000092464 00000 n 0000092707 00000 n 0000092890 00000 n 0000093052 00000 n 0000093877 00000 n 0000093899 00000 n 0000094285 00000 n 0000094332 00000 n 0000094575 00000 n 0000094757 00000 n 0000094918 00000 n 0000096313 00000 n 0000096336 00000 n 0000096372 00000 n 0000096727 00000 n 0000098412 00000 n 0000098435 00000 n 0000098471 00000 n 0000098829 00000 n 0000098876 00000 n 0000099119 00000 n 0000099302 00000 n 0000099464 00000 n 0000100292 00000 n 0000100314 00000 n 0000100700 00000 n 0000100787 00000 n 0000101026 00000 n 0000101269 00000 n 0000101517 00000 n 0000101760 00000 n 0000102003 00000 n 0000102245 00000 n 0000102428 00000 n 0000102590 00000 n 0000104117 00000 n 0000104140 00000 n 0000104176 00000 n 0000104562 00000 n 0000104601 00000 n 0000104783 00000 n 0000104945 00000 n 0000106363 00000 n 0000106386 00000 n 0000106422 00000 n 0000106808 00000 n 0000106847 00000 n 0000107030 00000 n 0000107193 00000 n 0000108222 00000 n 0000108244 00000 n 0000108281 00000 n 0000108667 00000 n 0000108706 00000 n 0000108889 00000 n 0000109051 00000 n 0000110325 00000 n 0000110348 00000 n 0000110385 00000 n 0000110757 00000 n 0000110788 00000 n 0000111033 00000 n 0000112649 00000 n 0000112672 00000 n 0000112708 00000 n 0000113080 00000 n 0000113127 00000 n 0000113367 00000 n 0000113548 00000 n 0000113710 00000 n 0000115272 00000 n 0000115295 00000 n 0000115668 00000 n 0000115707 00000 n 0000115885 00000 n 0000116045 00000 n 0000116812 00000 n 0000116834 00000 n 0000116870 00000 n 0000117256 00000 n 0000117295 00000 n 0000117478 00000 n 0000117640 00000 n 0000119080 00000 n 0000119103 00000 n 0000119139 00000 n 0000119525 00000 n 0000119564 00000 n 0000119747 00000 n 0000119909 00000 n 0000121363 00000 n 0000121386 00000 n 0000121422 00000 n 0000121808 00000 n 0000121847 00000 n 0000122028 00000 n 0000122190 00000 n 0000123340 00000 n 0000123363 00000 n 0000123399 00000 n 0000123758 00000 n 0000124032 00000 n 0000124255 00000 n 0000124488 00000 n 0000124735 00000 n 0000124956 00000 n 0000125178 00000 n 0000125404 00000 n 0000125656 00000 n 0000125881 00000 n 0000126112 00000 n 0000126335 00000 n 0000126566 00000 n 0000126822 00000 n 0000127063 00000 n 0000127284 00000 n 0000127515 00000 n 0000127754 00000 n 0000128002 00000 n 0000128233 00000 n 0000128467 00000 n 0000128683 00000 n 0000128922 00000 n 0000129179 00000 n 0000129417 00000 n 0000129647 00000 n 0000129874 00000 n 0000130102 00000 n 0000130342 00000 n 0000130592 00000 n 0000130835 00000 n 0000131056 00000 n 0000131300 00000 n 0000132747 00000 n 0000132770 00000 n 0000132806 00000 n 0000133151 00000 n 0000133466 00000 n 0000133716 00000 n 0000133942 00000 n 0000134173 00000 n 0000134408 00000 n 0000134645 00000 n 0000134882 00000 n 0000135115 00000 n 0000135343 00000 n 0000135591 00000 n 0000135823 00000 n 0000136052 00000 n 0000136276 00000 n 0000136499 00000 n 0000136728 00000 n 0000136971 00000 n 0000137197 00000 n 0000137423 00000 n 0000137644 00000 n 0000137880 00000 n 0000138119 00000 n 0000138346 00000 n 0000138572 00000 n 0000138805 00000 n 0000139046 00000 n 0000139282 00000 n 0000139519 00000 n 0000139733 00000 n 0000139967 00000 n 0000140198 00000 n 0000140435 00000 n 0000140680 00000 n 0000140909 00000 n 0000141133 00000 n 0000141363 00000 n 0000141597 00000 n 0000141824 00000 n 0000143187 00000 n 0000143210 00000 n 0000143569 00000 n 0000143665 00000 n 0000143900 00000 n 0000144146 00000 n 0000144376 00000 n 0000144614 00000 n 0000144851 00000 n 0000145088 00000 n 0000145314 00000 n 0000145492 00000 n 0000145652 00000 n 0000146547 00000 n 0000146569 00000 n 0000146955 00000 n 0000146994 00000 n 0000147176 00000 n 0000147339 00000 n 0000148645 00000 n 0000148668 00000 n 0000148704 00000 n 0000149090 00000 n 0000149129 00000 n 0000149311 00000 n 0000149474 00000 n 0000150906 00000 n 0000150929 00000 n 0000150965 00000 n 0000151351 00000 n 0000151390 00000 n 0000151572 00000 n 0000151735 00000 n 0000152996 00000 n 0000153019 00000 n 0000153055 00000 n 0000153441 00000 n 0000153480 00000 n 0000153663 00000 n 0000153825 00000 n 0000155096 00000 n 0000155119 00000 n 0000155156 00000 n 0000155511 00000 n 0000157033 00000 n 0000157056 00000 n 0000157093 00000 n 0000157465 00000 n 0000157504 00000 n 0000157687 00000 n 0000157849 00000 n 0000158712 00000 n 0000158734 00000 n 0000159089 00000 n 0000160474 00000 n 0000160497 00000 n 0000160533 00000 n 0000160874 00000 n 0000162530 00000 n 0000162553 00000 n 0000162925 00000 n 0000162964 00000 n 0000163147 00000 n 0000163309 00000 n 0000164370 00000 n 0000164392 00000 n 0000164778 00000 n 0000164817 00000 n 0000164999 00000 n 0000165160 00000 n 0000166518 00000 n 0000166541 00000 n 0000166577 00000 n 0000166963 00000 n 0000167002 00000 n 0000167184 00000 n 0000167347 00000 n 0000168405 00000 n 0000168427 00000 n 0000168463 00000 n 0000168818 00000 n 0000170410 00000 n 0000170433 00000 n 0000170469 00000 n 0000170827 00000 n 0000170866 00000 n 0000171049 00000 n 0000171211 00000 n 0000171937 00000 n 0000171959 00000 n 0000172314 00000 n 0000173653 00000 n 0000173676 00000 n 0000173715 00000 n 0000174087 00000 n 0000174126 00000 n 0000174309 00000 n 0000174471 00000 n 0000175384 00000 n 0000175406 00000 n 0000176358 00000 n 0000176410 00000 n 0000176441 00000 n 0000176472 00000 n 0000176503 00000 n 0000176534 00000 n 0000176565 00000 n 0000176596 00000 n 0000176627 00000 n 0000176658 00000 n 0000176689 00000 n 0000176720 00000 n 0000176751 00000 n 0000176782 00000 n 0000176813 00000 n 0000176844 00000 n 0000176875 00000 n 0000176906 00000 n 0000176937 00000 n 0000176968 00000 n 0000176999 00000 n 0000177030 00000 n 0000177061 00000 n 0000177092 00000 n 0000177123 00000 n 0000177154 00000 n 0000177185 00000 n 0000177216 00000 n 0000177247 00000 n 0000177278 00000 n 0000177309 00000 n 0000177340 00000 n 0000177371 00000 n 0000177402 00000 n 0000177433 00000 n 0000177464 00000 n 0000177495 00000 n 0000177526 00000 n 0000177557 00000 n 0000177588 00000 n 0000177619 00000 n 0000177650 00000 n 0000177681 00000 n 0000177712 00000 n 0000177743 00000 n 0000177774 00000 n 0000177805 00000 n 0000177836 00000 n 0000177867 00000 n 0000177898 00000 n 0000177929 00000 n 0000177960 00000 n 0000177991 00000 n 0000178022 00000 n 0000178053 00000 n 0000178084 00000 n 0000178115 00000 n 0000178146 00000 n 0000178177 00000 n 0000178208 00000 n 0000178239 00000 n 0000178270 00000 n 0000178301 00000 n 0000178332 00000 n 0000178363 00000 n 0000178394 00000 n 0000178425 00000 n 0000178826 00000 n 0000179260 00000 n 0000179291 00000 n 0000179368 00000 n 0000179528 00000 n 0000180777 00000 n 0000180817 00000 n 0000180863 00000 n 0000180975 00000 n 0000181013 00000 n 0000181141 00000 n 0000181172 00000 n 0000181243 00000 n 0000181384 00000 n 0000181445 00000 n 0000181481 00000 n 0000182205 00000 n 0000182940 00000 n 0000182974 00000 n 0000183055 00000 n 0000183198 00000 n 0000183259 00000 n 0000183295 00000 n 0000183339 00000 n 0000183416 00000 n 0000183555 00000 n 0000183616 00000 n 0000183653 00000 n 0000183686 00000 n 0000183766 00000 n 0000183912 00000 n 0000183973 00000 n 0000184009 00000 n 0000184035 00000 n 0000184108 00000 n 0000184247 00000 n 0000184308 00000 n 0000184344 00000 n 0000184385 00000 n 0000184468 00000 n 0000184621 00000 n 0000184682 00000 n 0000184718 00000 n 0000184830 00000 n 0000184941 00000 n 0000184978 00000 n 0000185062 00000 n 0000185201 00000 n 0000185262 00000 n 0000185298 00000 n 0000185344 00000 n 0000185439 00000 n 0000185585 00000 n 0000185646 00000 n 0000185682 00000 n 0000185724 00000 n 0000185798 00000 n 0000185944 00000 n 0000186005 00000 n 0000186041 00000 n 0000186153 00000 n 0000186202 00000 n 0000186300 00000 n 0000186439 00000 n 0000186500 00000 n 0000186536 00000 n 0000186577 00000 n 0000186666 00000 n 0000186814 00000 n 0000186875 00000 n 0000186911 00000 n 0000186955 00000 n 0000187045 00000 n 0000187194 00000 n 0000187255 00000 n 0000187291 00000 n 0000187406 00000 n 0000187445 00000 n 0000187532 00000 n 0000187681 00000 n 0000187742 00000 n 0000187779 00000 n 0000187816 00000 n 0000187900 00000 n 0000188041 00000 n 0000188102 00000 n 0000188138 00000 n 0000188175 00000 n 0000188259 00000 n 0000188400 00000 n 0000188461 00000 n 0000188497 00000 n 0000188550 00000 n 0000188632 00000 n 0000188773 00000 n 0000188834 00000 n 0000188871 00000 n 0000188988 00000 n 0000189020 00000 n 0000189099 00000 n 0000189240 00000 n 0000189301 00000 n 0000189337 00000 n 0000189377 00000 n 0000189455 00000 n 0000189596 00000 n 0000189657 00000 n 0000189693 00000 n 0000189737 00000 n 0000189818 00000 n 0000189967 00000 n 0000190028 00000 n 0000190065 00000 n 0000190182 00000 n 0000190229 00000 n 0000190302 00000 n 0000190467 00000 n 0000190528 00000 n 0000190564 00000 n 0000190604 00000 n 0000190689 00000 n 0000190838 00000 n 0000190899 00000 n 0000190935 00000 n 0000191052 00000 n 0000191095 00000 n 0000191177 00000 n 0000191318 00000 n 0000191379 00000 n 0000191415 00000 n 0000191463 00000 n 0000191548 00000 n 0000191697 00000 n 0000191758 00000 n 0000191794 00000 n 0000191826 00000 n 0000191904 00000 n 0000192045 00000 n 0000192106 00000 n 0000192143 00000 n 0000192188 00000 n 0000192263 00000 n 0000192404 00000 n 0000192465 00000 n 0000192501 00000 n 0000192618 00000 n 0000192660 00000 n 0000192738 00000 n 0000192879 00000 n 0000192940 00000 n 0000192977 00000 n 0000193038 00000 n 0000193121 00000 n 0000193262 00000 n 0000193323 00000 n 0000193359 00000 n 0000193402 00000 n 0000193480 00000 n 0000193629 00000 n 0000193690 00000 n 0000193727 00000 n 0000193757 00000 n 0000193835 00000 n 0000193976 00000 n 0000194037 00000 n 0000194073 00000 n 0000194190 00000 n 0000194244 00000 n 0000194321 00000 n 0000194462 00000 n 0000194523 00000 n 0000194560 00000 n 0000194618 00000 n 0000194690 00000 n 0000194831 00000 n 0000194892 00000 n 0000194930 00000 n 0000194971 00000 n 0000195044 00000 n 0000195185 00000 n 0000195246 00000 n 0000195283 00000 n 0000195400 00000 n 0000195425 00000 n 0000195508 00000 n 0000195665 00000 n 0000195726 00000 n 0000195762 00000 n 0000195904 00000 n 0000196022 00000 n 0000196064 00000 n 0000196155 00000 n 0000196296 00000 n 0000196357 00000 n 0000196393 00000 n 0000196440 00000 n 0000196536 00000 n 0000196677 00000 n 0000196738 00000 n 0000196774 00000 n 0000196822 00000 n 0000196922 00000 n 0000197063 00000 n 0000197124 00000 n 0000197160 00000 n 0000197207 00000 n 0000197298 00000 n 0000197439 00000 n 0000197500 00000 n 0000197537 00000 n 0000197654 00000 n 0000197697 00000 n 0000197791 00000 n 0000197940 00000 n 0000198001 00000 n 0000198038 00000 n 0000198095 00000 n 0000198191 00000 n 0000198348 00000 n 0000198409 00000 n 0000198445 00000 n 0000198562 00000 n 0000198601 00000 n 0000198684 00000 n 0000198825 00000 n 0000198886 00000 n 0000198923 00000 n 0000198962 00000 n 0000199045 00000 n 0000199186 00000 n 0000199247 00000 n 0000199283 00000 n 0000199321 00000 n 0000199402 00000 n 0000199551 00000 n 0000199612 00000 n 0000199648 00000 n 0000199773 00000 n 0000199826 00000 n 0000199926 00000 n 0000200075 00000 n 0000200136 00000 n trailer << /Size 787 /ID[<844c4bffa0bae290689a1e63bbfcd452>] >> startxref 173 %%EOF grcompiler-5.2.1/doc/GDL.pdf000066400000000000000000026515261411153030700155440ustar00rootroot00000000000000%PDF-1.4 %쏢 5 0 obj <> stream x][۶>}_=%odNײnKl'?_vP/ZsWޗ1E8f0_/xqqC||}% 0 :xJb %YjT- 9ЊXX=Y.Nov}vafRkEv/?T?+MD0nsPuvyQ>s-@uR~ThrXY"%u5+D?~~W0C|V"!^Wo;?*\X. wj3`PR_||}e)\=p8c i3X䗂Y?;\Ɔ2$, +Bjb e%_u,rkHGsaL(EW;*gU-`WPL-Ww*T&zyP Lv [-e)rlQc?`G i)\Khnw«I@C$GJQJht> >"(+uBK (U5I_8ts%chN\oP#p1ߠL1LWS~/hGL~ՖtTb2ɮ[ "ޚo}PT.6DXK-0 т€|<[)\7,$ ?D*S$1B*HAdžb7?;㿦Ň.Yu(RM?T2k͋-JYf?چ8>kQF&Jc7iŖ &k4>l"mjNAZ 0*2|5.@{c *W #,\&T|LИ5i +wP<Q~,;펝Tͱak:ߖ9EӪyQaVa U֘)qx>C8Rzs1mj}{T x!aȀy%܀!|@؍ ͒z M-FӶz(R*&>DoPsFc/ј5^_kLAXk n&e&hqy. s\/Eg~ӄ,df)"cf!W#US~ @D> .~2mk*%_~_Foo`ϯEaC(ew[X8 "ԖFj4U{c⛱NU%v :v{ySJƜZ,~s+$V2pK\ʪw(g0YaafkaOVW*g,``uisDա!0.\gB\(4jȒeW{b0 u<aض i'@iOQ&3nGPazNKM}hlLNtAm{n%REYHkB3T~%5Á8*z.îv܎;6Ӷ]co{!Vk|ubkNl9hEu`yf=6 f5[w{^8?b=SBQ\`_]lKK8zc 3} ˁ5WWE~y^xD [}"$=M\/5rw1l|9V8NϣL|C*a]H1#dMshDW_QΔAI<XRBOo(x\y5he7k.q%y`BaW+l)i"һ']HOQڛB;w=cN~o}y1@g'9(קN_:dgTDΐ`eT`gۨNxyusNaw S|>y4zXOe:@#0N% qR} R3ۛ鐬[ƒ,cܢܒ|OcBLg=.zgҸwMub$'0N)ݵe 9y Q!5g:mab}HU_~71qQg{"pL}/N2E!)#(X#쨢FgTqI%Bij:$ʯ[sH? _;) Qc9ꋜ9&lNc\ĥwՆS.K}/D(fE`h, g&3Ą G0g8GEgp|_pn 2|78O1)3鼲rT>MNTm]u3eu 7&{:I#=i8t@8 '>4PaeW;@ʷ{m(p{=I<T$vw=c7zK Ḱ̙bO/s ١t&qž=E{D0OOK%M f˷Ѝg(FN+zU k4(P0}IxHl64g:#t~H^[A8[O[r֦`Qeٝ+`T{-6%"ۮv_6ѝ7#yz{vǭn>$ 2ƅQ6~kjH6z^]H*x76pd}l0bN  7/U"#҉33Nrs/h,oendstream endobj 6 0 obj 4741 endobj 23 0 obj <> stream x\Ys7 WS qֱSGIfIJL}AAZɉci%/  wR"7ċ7O}$wkɻ pR_)nΰcRa٫!6U"hnC1 qd.\ƗBSⷆMR+?CN԰aZ}8\c˓VqUHF9yƆZ{MBdkT6cY'"Lv3B+XՍ*Fmwv)8Le/`HbgVYj􂮶vE2p  B5"p "AqQ8E*opJ@/$q4Q . ~.qy<S8^Y%azGc9:q&qYWkhEJ@p Leb:yc#@k&6=TJ[as30 1bs`1M܁.qø WKp ;C93ne##4iJqVqKX 0$ AEz}Qxy@K1|5qC""\Oj%qqAǹ:6sR.;HQ06^Lo!5;;P.FQ~EŰpFÕ%0R.Tǥ G)" 4=Mo1 p dr:,(đ:R| y)_1v$,ӂo]_;D'rx܏,şy/^@tBse:CƸF!{2N:e: خ*h!2ۋhʭv>v%|Ce;N5E@G,X ѧK΅} ۲Zc-)p]EvU\(~Dk Da)RZAWbX_+:W'icTԄR9bm|*:VPbHe) &Fo[j%[hQѻdq:AeQF ӫPE:plAVg>if4箔T"Mgs[S͆AaOeĆa(VDת׈&I)vg8~њ;QQ] &]<>u @UjRnDn 1*z`o⋑y^ K|Q=hS9{x6OSvAגTqA4(> Bxbb1I'hEVӱXpTbT|2!٘!!\j\|qBonx(*Ams[x#qqBi r`v/vwsw8Syxc7w*=AOyWaIu l7Έ4Rs*|!jNp6=϶wjneqy(][^h'q՗ꤾNVlY<yŗ3Xǫ2e7J,Y눱5ӓz F/$v^F7)/;([hQfW +nO-XtQRejD9N =2U+DŽ[h{GͰПbח U`zѽK4IMS;ǀ4h.@[Lo+VXesd:zӛAe `vlQj>DGo&?!endstream endobj 24 0 obj 2194 endobj 28 0 obj <> stream x\[oF$m<«(/ͥشHtݛ^g4P!5s8@"Sp8͕zT+ç;>t/wWק;vZ=x_Y숺Zlgtmή[jzU}e>ݣJԺڸuej!Z'QpWRm`kϫᷮtJeVjeևn[#:EsDžo҄ϗtuc+v2&i ׶xU֭2r? |22^N8ΣUW i;ꥒ ^WN*఩p@X 95sbZ+/+]ԞklcڶT[K8m 3Jx\wLۙq35߇uh[`o뼒mZ! 8!~~3r߫]x씶 9VJԍj ,C}V8;)D9p$^.}N纒Dz:O Զg8OQoUtuxg@VPkk*ލHR,aq9"=[fHrHت ,xߺB} &t;^^KR5BPhoL\m\[+3оWv0(zBkaꭈ={ȶe|ﰗa xZE.Ѐ޸7ֳg Ж|@|"&c;cU%a on" ߝlLFzMhKk܉U{3]cҵ'Z#n2rA2,h!Qz?MzNMH@tO.%::`d:+4Ub:LAS=cxJJk`u *NpI;JQEüHbI;7Tl #w,N?Nd6C )$NiĴ$Gi, 9~̮O8{0r$,',qgHU7tEY:Ԙ.?5u W4MO'"CD' 0`?x¼a04:q/)O:PPK J#kD#[$X/ɖ xx3Sъ RFےmX֤ Q͙NZ~ ,W!@ }n}F-q!,T '8ǘ#P @ D/" Ly #QfH-{#& Ͱ܏ q|aoh-3Iv{-tꏱzqV5?ĉ.&=L3yˆ F,DY5a6-{eҖ^C徬 4`E<Nʛa* ׶O1\n pBa,:}zgCO|ovVTɒu Sf<<ˁQ r6Ȳ?8YabKS Ȫ\e(9NCġsm$0'r@D zLJsGӚ64I'MYb(ad$9eq&??uͬ9Y CY #v8@.)7i$eO5#dN0>|uⱱ g0U"ha^>%P0:ED$<mg;yDQ/}5##-"11=a2O(t#'г]yPo/B6k41Crz9 AΘc'<( i>: DvidjXq~uK>P2;6&A(G$(i8E2+vs:1<{BLIF$ F'-1t㳺DlyVF^NỲ;u%J^ӝIgp|sЂ3UC3Rؙ#GtIg9Ŵ*Z*!$:9:Dkckdz`2j0q;ߠZ~LՀIOK\=b)pS`Oq4=\mN, o%Mr15W=dG.=0u}jhlbڔ8AfqMӈc&Qħ 8|_z.Dii>\Sߥc>D"&=11Q~IcPt.3_!?p#)Id+=H4!Hg*>:\X@J&+ɂ<&,;o%]d:,ɾL俕m0 >@BU:4R"[ǶB>c`"\&끇<+K8z, b"!hvhW[K'̌&vg ;C̠LkѳF"U2`H[JнP^f}#ػJoB'*m-b{45--mJ&[kPtF+Y;{~Ow@U [U֍jߏ `-F6L&I Nf l(\&~kgC󢡿G)>R ÷1ڥmi:qn`[]#d+LlV4aϋ{%AF{f+I/KےlVi N %zID 2#]/q>hMjȝT+&F%@B I_g'=ZA o:ZlxgaZ}#`[A3+Ȍ G?lNLhc^;.°K{aRr)"Z%Oip?%‹[t_uR-PK A8m(ɜҡظ'6x=e |o}CӌNlA|UtҜH͏sN5a|PԀtNUX a;يFa] !?̓e[ܢb ҆{Ą`?ltXɏ^`dmyNLj,Avq.VݪAt(L#X.2ѝ(YvFagnP5h@V#,E&lN@+ ahڴ*YR7 C=|~~@-(&Qpfx潝W#rş/CS6 Lv!/L.ۖjo\,v{01FLW9NP64ۢ7^5ML7y\?jP~\ţzo!43Bm--/y~k9fiS]: y :);C7Y6UV0k\0&b/ܟ :kv5v.j#I} mimS:I,I9pL./TF)) s^V7h0{($F$A0x'&wt((˸ ;lF:yr[~{B!Ka\RT5[?8$ ((~LxswqUj *_G6!3H ccN EMI~O;쓓*mwjDv[wTނnB,&I@҆_o;=|,4re]FFt11+ 1k8od" M,+Oq9D")Eu;`7rג•a ܝQx2 'P&_V,1`6%V Cbv-Ą-cVXMku3!V*o̵&CvЕ?Ĩow6mΡ4wϲXAO; 1>L2kE]ȌW>t'Bv endstream endobj 29 0 obj 4469 endobj 35 0 obj <> stream x][o%qF 9yn^ole, 4ډY4?*U#:=sZV^Cۛg1֚]ga؝}}nϾ89F J~wM؟dN߄Wp*%ki*f5'V_%p:4ZVnQ۱{h|~~}}әV㞿Cp E4\3&w+~u.D\xѷ[˓8ئܼBG^и-~f?mqN]5}s¢3YѶQB8phHiEqc3t4½m^ky+ݱFO0mDcDƭEVk; GTOm:iq tcݚhi.UVnQY*swnP^8>-M(Ӵo*+xNdjkE !CzP"=9-4J5b`寠whxҶU1MwvK~=VϔعF#6}h?SHH_eN8Y'!nɤ?T4+&оvq=IXc/F.ijW5W=m<ٻEÏ{?s I_gۢvnҽФvSWre0rr)h>t:!3Ikh"$zML3{+?_l!{}}TTsmv@aAK7dƽ6_v"ՠ^{PM':3NS8Doȹémz#v3h|60a8wqk.~{pOmqfvT8i67 6e-NVPԽ_Ƕ. wSx`QeZ0! JoP^giT *F3VXMm^YMO쪇qIzCeKzL٠qC4h,Psv눛Bu/ɕArs*aq"Ffs׷6iEBC{W O8CUc)c&LW W3\or9vu;PaM֦Z?;^8Nt:& Igď[u=w+Z"w-Fr_alWa!TD}xc\$#NDK!7(h& ͌.^.2ϜNwAC¢b.dn,-S*3 ?ѶEFO$];>7O F0'XWQ,^C,YO`!DLsI)ɾ);:-rr܃z9uMdJy-di4MJqiv2Ld#^3 x6M@A3Kh.$?B )]$s oYU^D_dsC%Gbqd$fߡH= ṛzfN14aG!(lr{3%?P XW~6,ԚՉĂi 3"*sR0JҖMNj# ~8i3T^cNnr;ϓv9V 0?nB@C&K4S<h#XO͐Iӥ?.让A ΖmN"7 5B8EI A&M27#Cm"p,j9*S@0V(dx)f2-*!C9Jh]+\~ZK`ǫYƊSnh${'_g  x1-yO-MUD5\+ քPc.Dq߯A l)խ4d5Mf:8#wx-8p3p?)myIS`l#_ĴOl!e /Dgb̞wՂ;{n>!}{/)绒P㭍# Bv|5iO3뗤t%;H>s O"1ȇNG R -)OI1Ai#Y`'o碔6a,[TTIg-L< }Q8ɒvL&uG'St H*RW|MMp(?X}Ka cz6:s<8g>}gEOa!:ݔ|[E.}m1'dzh}A<ډh2*T&, J'Oʺ+4G"䚉BlFx-Dyk@\`6Fglaoytѡ)+ ]fmD9P νě#dmd&0/+r"a'5Ktk —gIU"8dԢdCuT8 ˴ Ȇ+oFu`VB26j:r)X y[Q#V4#b",Ke9:o(OA Z8O t\?ytD@౲<*^qR>ݴrwMyopY &}ZF?&?6bi l$Nx3ql42Ɛo@A'F`72E]DhbD#֔Q#}9Ib/*Shʺ1FcVnwU~C%@% .MEC詧nr^DS].xN<_dv}Nonm!)J IL`"eͥ ʷ'gު{E|,.PcD1FkMdJn 0hk{ fMKn4Esuۀ0Fr2Xp/#J ܔ[erO)x,be1yCz ETE$%U(Ea(Z)e& C'ߑecla!P3D0d<f+:kK%OIzUe r4*Ip-T讏Qwpm&~ύ>-:ؒIoCj DԵhJ kb0+ ϙsXnd$B}Ch yƙaA&:r/<ƴdޯajtrѧ~[('3xs(%еmӶq뉱dL,tbqt9D9%KgxזEGXI#akD܎kO*+7@q d=YB.+GiՍ CZP) }#G+К{˭ dF4{,ԥexO',Af(jtx9[;Fqf_0'qkn&:'{kB~hn ҅N"qȣ7@wT-')&'C ![=Y[X $L͉si00.Ĺx(l1y8ǢzבɦHu{ic6B 5M5 H(!#sT6!ZPKI$/|D4dgpbSf,@y.$_QTY=pԙA ]F"<:zR*m!s XrH}rYdjoz A'] UQT>wHAd {̱,t6 Z+;QFV!0u29 mh /.1/8dvcűx#2sO)zZ`/mҟZ!$"m9 fыrג9wFE#ϟ6ʉRdvK `z%ɻhf;;H1Q~B4~SwI; :` ymP]7NJ~-?sqBi$,|;jnn=SwJmΕ}/+b-m+ۭ3Ĭ.q9 Q]$3h~E)'IebDz3`KRda9Y0N9u՗w]jOߔ9S}UЪh6yWKK3?fIɳ#0~<\mϱY&ySD8%8*z-iCpUj9CRYr;ɩ+ֽH@(lf& ecdLjߖܞ3xoґhqzAU˷1$Dn:F~1(gTsN xN֔1wؒm"WǗCgE ۰PSbJn9 i1=N~V}unP(]y;d낋//L4VY-wlrw| +D,7ɁpqFxmc廓r3?#{>Jj$߿Hkendstream endobj 36 0 obj 5924 endobj 42 0 obj <> stream x][o$7vFE0Ӿ5Bl-5iy'ZyXrl҉'78UifV3߳Xwzpt[V@k9'E7#4Q[92) Ou 3'uܩz^ f]sp#P9U&qՀD{}LݱФݍ~$oSϢl:~Wå+N6 L0@.d@C?c=৥.',*\ZJ IHN@ 2LVf[ؗ!zB#ǖ }6kkA3b\s'n֌q-k~qKm$%B #)=i S:W2olL46Z4F,+ vKybp4%P"6q"2( +/ݮj"^~KgߨΓ-&F펾Dƞ_# M%x嵏Y3lq׋fhY,ٸP7NQP ' B"B&Pz,&wfug.=n|zFkŧT<-踙,yVeU3j{؊6&Q-=b8U5_7BV9ZyF_#0;Saa2 6۲DyOJ^*'yG"~D0Z>͋ P&HƧ“G:!b9I{e \k R}Opy)+Ӹ;mIfr4ȘsEB4ڦܶwh,ʹpjBsZvWuYNt#]~:|tv99=fi̛QװrưK_BPv]]a H!*A/RdLXk|^e< %Ra`/XAdS':oE=[ PT  0I#s=\ie{Ix6D8zIjlB.xoG*3BܱL6Njemα:P09i:r./|pi5T=ُ R|l:>>%fvA[_$CҞv@-h";_7NZ'Ab`Ii" }^"~$ 3d2VxC8 J%ۀY^!.4LgɥЌWAԋ:r(;Ȗ.r EsO2?g'I# 0Q3:+1}]sCΣU3M⏬ m-A}"+hECa 90~\?A2CegD5l4t#-Frn6;L(F<ҀTB[K&iT5Ph H$:FSZrWЯQ9ֺU}7bq Œ? u df3mAOylK!=GqCIiybzGp'|`7:QYnpƒ4Pw+C4>@M.+Vld-eHzO8qK#3f=V!#B[;3pEL.BudHCى\:z1HҶ]"`_ɱ.EpQ %egԲ'A̩OQ 9IPґ-c}LqDB02,pdo6؇CwKnH<@k B9Ǣl4V0FF}RX aBukx |Д¶KAX!H'l95M 0l,o%fk{̺% :Ӏ~~k8#ÐYUfdD-^Y_ lC%klfùǢz IrDH9L|MӔ8UQYywL7`Yu߮w/Xߗ_*G9 IPOqf,Zq`. g.\X E"DPyפm:Jq\2tGeQ]m]Z Zbq A{F`5owȪ+$7Gy$7sн8tkW\nvR@MK).莋;Ș[c6-J7PħpܓXIR#u-dX,rt6ґj m,j &kLw93Ve1d"#|adH\ |/pcR^;JQ{%_\㧘oL[Rړ)ASft) VnM`C_.a_P H9OpF&%D^KjT;vb,砻 S.Wlt5MBԆ5^]6vMH[+Dw6LQL VW -x W[\~VQBV/NBػ ]K3G0.g9P‚Rބ<٦h$xJ*;YgR _26Ѫ;T&Ii9N3c\ Y>45YPOB)IxL&Hpŀ6nw$˗<)k/~ !D`,Ay 5_گū,m:y&v ,GI ݏg7{Uu/_䣾y{ <נ^jX?WݷЏZTN~&*ϞW/3Cw+_z"?+ "B5J&|ƇWyzXq aB{\C>_a9Ht: s4pT.s6dQ;Csiuzɡx-ꂼ|#Mh #7`H+=K=n : $347LR+oҌy9 BML RFh,F$>,#s.z2Y }e=[AhgLLg>Cľ)^bmz9w9٧@~*~XbtBELS[zs̯y S e*`q{vJ-Y\\)Ȧt/ӓSat2_[*3sҶGFc<xpʺl>\Yby~Vrf"-`Y%La +#}L)ί`=NtQvj ,K-K n$5eɲP}7蔿~ڭ1~~<%T[Nj}kKmӕR˯m+]wyjgRj-c3nֹUUmW?Lݺ ཅF_ڎw?:gZ2q?l3sբP=_=ZqNE?z!~7~=B̋.b_zD7=h g57,5k I)Qq"Ǝ:=u 1h+oJ*?ã,R.d96(8j+h%ӛ噉+oRfH2sEU4X%YSzi_C6AEicU:Muoe aBn`f&:iJ6Ͱ)2I"5Ypwg@W.> LꡫJb^!/a4a~a݁S;W zD_tQX{V^H  Y&圯3gД43o5BK1c@ ȸF:K-+]Li{z}ҠjmU WVS:ۣ;꺪kUh7T9e~S2Pŋ?'J'el i R*2,2O9?6u~RT9d})i_0>w|&}U\>zcQX$ _NGkendstream endobj 43 0 obj 5811 endobj 47 0 obj <> stream x]ߏ6vƢ-:Ey}],RD%H٦ EnHx~xLl c\RyH'к9p^NkW˸XIe᭗;q1rq ITk{Lrn]ǗP'Oib'YBq_mʗfi, ,H\3 ao=uI[&Ҏ[ J]$1)XnNVr+'99O$ҿw`Ïifxwih˓O$qv?ϐl9ߞhʸN Sr>el'wY%ؿ V]H=#H<9I3y3dqWw7d.Su TwI_<Ur[t,>oL]|+aj% !.RX<XtޛF\} .C&τ $֎>3'$fr|0)^&iysɁ},Y,NbA5\cRHJ2FWiAAc;}Nd~gsKʁla\vZwjiyablLas XO3-!#T1 Y b KQ](A~B~Wmr8$- r9P]1ʞ_cZwK r1$ s+=C9늱4a݀8v;z8hNVKrf8Rع7Q[q8 2Q_Q{TٍVn7y]SEY9I1lQ4BGf橚Ե}Q ,!߈7K7>ٳ @t=ih/yLb*^IL'1_ק10>ǔnƎUm=yL6Sn[Б߂ܕo)_(~H83$n*mxwmI:ǥib@`;LZQ+h \,0|BZt)Ưg b%J,q%88P'6 *ΰ2jA?bZ lP9 zoQ;HH+ F!x'L*,j|tN "jg İ⨡W‹#m͖HխpfN8QS3!#7Zr_EV= }iW,KPIQ\ ̎tyAU9,hY B!6C'HyoA"ǘ<}"\pb0Q*mD6e:-vMMM egdբ$𜜳ӑӭfa*ITDT Ivn8@Jz0FYh^i{$9$mǐp9֗mA"uXkېxj~Ľ=c-k IM"{>0ͯ&]za+|?.B3MwȽ <_߭~E2|@ᶂ |&8DnH2߬CL,ɃJEo)¾M%.`O>@3E6|kI%KF[&uՒ).|=7.}{7ld4MoX+G\ f9\OlfVt"mq'^,&pyriGi{QSTĵ!8| ]fpˍS>/E\(нKq%eqPZskf,f88>et WVyM9ߟۃsy=A'qf hj^47&v}9ŪȞl.=p 'A.ⷄ 4@lǮ(Ʈm9,cR0%lc!6FȝѶ\A1r b@2D$T^y3}&18^EQױ*S3mR?80qee'SX5_@%">f8|5e"I$__X lɂE[ːs^za%DTJ95m-+Z=Z2b2;&?2KR$j뢋'yfMw USx>g/gq|yf -(lN<<:XC?˞\? oV7+e5'f.p8U(e iB0 ~QY 6LGAgKEL‘+q;Lo;Q2HJi3$̇WQV^d'nL;ҭE/`|ECwQDJa^oKyx1ÙFEO2X17C~PC.Aw& \uJn+?q7 =,n&3]mVG>AxpnL>#[d_" !ѝquE!h`bZ.ƲǯM`HqEۊ aP #]Z큠duOX=8^&Pܹ01?o%> ,>11 v@cO6qf(4l:}\4# < eMp|&^PGȎŰ XTyߒNEV|dy/M=|#S!`4Z)w $9j ӊ0rhK_'8º9]#iH9 Mw;԰%)6D+,L_=9Kendstream endobj 48 0 obj 5881 endobj 52 0 obj <> stream x]ݏuG$6A6/:cf82Wׅ jHZv D=9ÙUB吇|ܯ+?{nzoxGS|zl]3,{U5}Meӽ{÷m>֕2JnsU]NljVn.]+<J i͋A -lN9Y zmF(7Si] u /ڦָOܯGT8wi$1ԲyO2Y?<ٻlWh7 )1[#fYxl+L?3aiX~$,0nH׸60NxEWm> ,%MSӘƴ%E>q( И6oL߮6׷d+5@%`7 OVkTQ]Ⱦ~{^!热V:ݡD=nzS\?DSsR Y ZM)=>zn- TlW<(ZpyN@#qkTk2ԨC@ R ,0󧡅;t_+&50Mam|'@tBN6Vi7?f7C&`egonmЅ|k'Urӭ`b?ltIlΒn#;ɍr`8c?ʰ$vX'k:i8GSay7__>nnw1mc]B&(zyvu;͡kp[j-{n&)L* naUk=(PN[؞M]wo`Rp nqpJ̺.PTOF7Q鳉8i7D!$6oPv tCRa`w>މ];% he"D`5vC50[@˜Gn(1E~hHou? =M1lݔaqs5,C X0C5q<4h.n&’y7k,c\W@]q@idUP]9ijq0v0M>U@=b<Vi@zhDž:"qJA,u޻U<|DS5r_fn+cC1 t<ªRMR!W+Ug{N؄SOq $ޡY8 h;d O3 iڋ>*R*ĵw^Wy4ŌtvU@7j!J #;3h]Rd3# UIt!|kھ_-7V8z{}I C"QwJJÖol  _xP K'˻b%,C#Q꒘}钸_$1Uo DnH6 k3j!0F:v{EKKsMvPFĈ h\oFPMdq3ڀqa~sKIY[8+DR<P1X/%){g R691K"Ȃ 6o{s=:zNI :IhT4H#56r#G=pӉ p7>aV(gc)eP;-OJ a61AaajL8?꠩_|VFF'nF6 [8+5ujݙ3qM4z5ES 0!: w5LfG7jckep&;#7$9,s댬"^rD 0ƴ;(~wcU)LP:޷t)C4B"P|mzEz{A'bjz$F 4ҙ/ʗꋔ06[#@c,\0Np0_/E)ݔmY%Sނs4#)r;tĽ336F%.?J#,f5яÙRUЌ6.S(Ҳ-myYޭ]DZn%lSkr#z:2u"'T7HRrR`Җi:6k4Ijڇ&t],dlrv0+`5o6 IA0ּ;FWZ 1]+^F2OQ'y.!J 3hmh6a9x11!dz",=т k&ua1;i7.E>)DIi:|_z'?nD ZD4Ρ +gJ(DM/cŐE8Y\ +F7K= a5h ),U X$2*A^ (+֋FR\/{VFTl%ܿP@6~Qދu3@.;Hâ VVMx`=ҲzsC4$2Fʶ;$ldrH㒹P< G&~b>U:D; 4p0$#̘nޮLI~&P_I6sJ;ΦtG3iHVK LgGJj),P=FpK:rZ68ߜ9)ʓ8HpI.M D2g_طJl~"!cEӏ&L:]Vct& ܧ6"V3qc$rƸW4L4&8ixN[/$ D B21Mӣ!X-(":2vˤ9Y40ԟ)26} :/0.i,땶ydjG} HrlʞW1>q#.\ 'FrFF]B1GAMV= 5^q T# |Lm^a1'(MmdK Oh"'t"biHXp9aocz1f #L'yZ LLHO_ OOq 0[m}p%A.b$"Qr5#Ǹ 7D\7OKб'>gDY(҉/}Kw xM?b/C>oq(>!$7xIQ(Uk\CΗxI9r,) d {w,j.wZxGk=NQ ;jQ$(~3|~ -QYGC!MN$nԓh6G[;G#Sc"݉#~ɴx!!bj 639BK\ѽ d$i9d^ K]e66.H&`*OBl@FfI8A˜zp_FĵO5L>ڼoV*."o!T$8$Z Z~o&үV7@ : I.HʊRD$!: r?({M@cx]4=$CY_٨c"K*(F2gaxm-K5Nq{=|Ga}N>.{hSqY!. T.< rh!˼|9g $E%;lF p0`!o"턿oߒ{kgo9W(e'ZELpAH.ȥTX'@r_u e,җ.R83MLZc1:3 uN^LE/dc, [Gw]|nUp]T=#ܽeV`zV}N(sB" 2Wc` AY=nsye> &a^c/쥔%2͒v>N.trxU;#[̹ٟׅaߘϟ[vqs2N.IWz}s ;.?jib/6+>`8>Q:\i.K(/,xr$F!;RWVZtg?Ej Sn5JZeX$]"_[*n3S;hYfS2 (I=D_k{̵Q#OH`H7AYA gR04HQY=d.(A|19B񺔹uKcSwr,WkEV9 3ءIHUΠlBg)9!J-- $>}UO(RՌ4PZ*άEy9(/!Auezw`Kog;Zp^Jzl2鱯;X "إkd0A<K^nr_(ʼnoZ:#ґDR:ZJ|]`%;.l dKCn^F.Z'&> hZ{bVNcR}jNqߔ6K[!1G E`u4Jڗ%K^!ӮV|4v3WkWD^ڻ(|ZxM/Q`*S%@=Y{w9؟FKsܔ\ETsu‰k¹d|_r&e9^o¥$ҳ ё=ʞR+z51;)3nظ N>I B!Ǘ`0Wf?M0_OBf/;z瓽Uu{:,CP/:dpJo? 0Y~뫭׸.\߈_}-rY7*]w/5/f8tO{"-VU%~Ҥ 4N(t?\)g 3sU<犛 ~g" 欧#%<kESМ;4kC24yx/̾sU1l.IiҲ7wrX:y DS0/ɿXK>=;#drv!>K_HA&Rajb}W tț R/Gϧdv9ʷ&}=R]$QSM2)LK9jmW*]V_8o1ϭz1$mzkVw /xfHA :%]J?܇t961~  ٥=6n&`>A04 .PC)j¹cyֿS~Dkn(XϢY+!͔*S[endstream endobj 53 0 obj 6550 endobj 57 0 obj <> stream x]]q#.SQىrK`䇔%[rRNʑV)%-rwRH И9={\ i4O7_oJM'\<o>d(]|}*uh3bzs䤮Ս~VUmƚʹًfw6t{bɮSJ7ۻ5bʶVnoӱlw*+%WS[r^?ogkɺVח;[ޞN]u*-i;v*5H~މִߏSp5guOpMnvrRƗd?܅~Mx]|îjaZCR - ޤW섫%w?m?VMS~\쇟mR=VJ]b_;!rH y18kPM%l+?ɧe'~u*>ӮC]ÝFNmjxc[w2ՂxFaխCZᨦ2?N}0h'J}DZ;I;˔LJD43)~VGIJdvv/")]b!Y.(P*HpF}j6ϋAI'[nCE_Fkd7ZhZ5b&_^A~`Ki8\ٍۋk&kK*:[Y׫n>L]7m0ښ&d|ىBHZa*@+h76:>27ZH=y44A˾ ֽ۝RYXt m٩J*%簘^zj6E[#Xr`#=|y*&)7*6@`UTӸVAthG UcָLn&A92ޠ?Rr/#X 5Ҩ)>OtZ٢Km+?ǥuYFX|6Y*H摹{6x R0xyEʰzA%Aˑ!$#$qcoywn)ޯ4Ήǣ o-0ʞ& L? Xof@F ~@Nd; /z ?E2cho"ZVK)ӹҴyWZ*q?JF7۟<  }? zl_>"N7: hU{q+ǘM}^t݋*@?NJz_f{a릮k(mSBεq :r fp:P+uCc5ǂL(B.cxDZCc'ÒֽF8h}#dRbRWbhPd0 _ -%pƌA!K b@6cƦk&%* MWIdhL +PIо= QI=ڮfc#/aVgӶj:[̗첁LK3;t`GȐSg%3:!+-Ԍ.&gQ_WЭ jzA<0lDya~@Wl <{H!c-ӍyztMd{t*hw5t2>Y'蜪eV~5¹^+(?v?L#KA=%>:Fg0G+E^k٩}gZy;:s_,,zM!3~gi$2_(dA:GDߊŗ9ܢ漺~{ `֐ `Z% ٱaG7[s"C@RFbZa[7h`lrAk`UȲZA'a4݂ 0>jͻ6&״,8Qw1UocoPS#ѱ_-vz{JIns۞xϊ"0-焀ԉD/1hS؏a8Gzp ,@1Kޱ"۔meDd 8rѓDdRS:|F ,S,e ͦm [&v,N۝jڸ~iqtQR%m cPh 2>&^~8>@Tr75ct#IZN*,+dDR}X&ɥ~0W~EȲa C-7ӱ_iVj:Z+GjgE?"ۿƦe㻕:h^ ]Sp؛ ΉFs_&ؾuFIK?2[X<JBDrѭ FfNudb?18m:lX>#ſӼl98˒_ Ll~1ѨZ>#-Ѳ&Mhls/ <8\<~<[k\;iߖE74ˆJwT{#\auz=VE iLvSQOi_xS#" QoߟklqxIl{PZMgxBN7(RTlH$"Aw^(Q)zUU`7Au2*AJ` |q@wr0W}_05L\+ -g<@H&'3_J=}t 0tZC+j'A:ĒDZ#`/GPO{kgu 7 gaTaSʡ6)錫2:c8 Rώ*hL͌[h%{=3 2̀wS\5&i8_LbН\e9옣4 vTŨlr8)9$ ='?C٦mPIf\O;z:ũdK+v& XAœN郳 rZrq-0qBmaSQ4}؋~ pGa {1Ы!U)?'CAc#>]0l2~l']\2D[aOwUT8|"'q&U< KaJ.UVCp&񈘐8ӰkW3qH]NsII2/CvlC{ټNRQ*e`.ǞoNƨ|RXȼ 9-VW a 8,!O' ֤ꛑ+S]p;>l2"H[ۉz )pPBw@wcA!!SmoU(Nξ1],$ wߣ85ih+~?Tʥq+N ꠬L(g# F8$٘/^B͌y8_" 7ݒd@CC!ז~9 예h+u97"ܻě_v#:R/2.R|6 qGGGሲ3gV ’3Ƕ9;8-CS2drlJ6ټ箭JЦ+,E\4(4R!ܟϣ)Ey/3S 'cZ;6WO;ѲjQ}`[2p_+.[-^\V925YpkDn0?[ ElKu|Hbi @w@YeE.g > }(>L>7Yt׊kVʆ1!XnUap*rL.\8-.+qn<$O"[3y@Ɠ<~H - uFyrw q>1}La8@zrOU<κGPtzEb|H8K|MsdF<ɠbaf0?}"[wE('a ^4yu|3 JIVbou:5 AIꀒg(}ٞNL&}Q htN ̱ NB;!DOa|bG%Yh5"10a$5u@0cLMDyf3|gɎ> stream x]Y~ȅ Myu @ lj;&y;Z%CHV5{VaQ$_~ZW >x4ο9?}+8?@7~gmCcvruxvеnPleDQ^ZWZtBam遭k_f[7ͦ=iקhvǻN_iV1V0,; |;???o6$3Q+mQ'44rVs[3Y2n~xrƴSF-3f|5Lg豍+,{3B0tlk}sEf"M+㕯hag:JXſZQZ^9RUn ۳Li{cgRw,~(RݸӸC]UZ뎁enr`=נ#Vqӯllpr6k{K;p[0idkºG#Xbap/+0؝ Bdہ)>|4٘PmǕgG%T;3_Dqܫݩ.mdw\n.ԮWn XJnQDٹ(2#GŪB8¨+W(_6BtS*O56NGNFt&ތK=d`8@Xu x=;ޕ]Tc"4kaO۱AKH.@3=-vV v k ;~d,bڞok%TxNu$&0ܱ<[h>}9[0sERs7Rʖy!5^@ 4YB܂PG|O,0䳆8(& I')g6sI(Q:~,;+#5*>A5pˉFVhb`X{Gz--Iw)`mXdA3L/"*TR)3B)"+NR]%6xpv &PJ& i H95f%?{^-uX gm.0-P&'c?h Vi.d(=Εַj f$6r^в8݈(ہ=EΛ!JCTy " h^g[MY&q^ЏNۜ(|Kxw$ET y"ҹIM#rnIb#L5+bD0l6Rqw2ub&͹!9ϺOv4B)+"'}>)Al\lUaZ+P \GDhDzS_+KۨɁMBwUBsn|aՀ2rZ?Qy)[b9m0joVvC/JO2.<2:9n?˪.+ vH--7Aܒ>޺ cxQ[fo 7F`c'z&ϩeW둳3WD/Q{y2 VSO@Ga-LCHI6,L%X>In-hQC܍Xi@cy2gN8q6_܋cG0$|\g3 ~H Rs`:#iE{ jU52C.qe` /yYdqYoGꕝMnK;3i͘`Q *I,6}׵]J[ 3,&# gtJ)W]@p}2:}JTa."ȸآ zkC}2x;vgzuKF\ION-i8IAp)fO 3^Qll+xֽDϙg['>UN,q,0VDIjƠVyè[-z zk'$bHC4bG?$ VwTGd\v+Z82N P]{yȩUf (4ć&ӘVQ,#4yICeùu׉:fQуPπӐ@qh ~0c&G)#.MM"Qb@-G`(J1:@ ̝[ F^ETDe}D\`ɝ;}VV%'kB h[a!;B80ng6pXA E,ϮY,o._Ci᮰ǫ ВzƇ ī^RBԠ" `/8S IJ=$x&I-hf!dh sA/8, .1{%paJ8MZ(%$][$V"O'ʮ»D7@f[}=zƠrĕ 4$&PP˘Hˠk meph?

,NS 3S$8ƞgEQ6: vnt$ d!.K,GZ`H}5Bh.LA%z. S )qPV*09#n'XLR,ΟEo<"([`׸(n݂̰1Ic5 H4Nygp?y'Y-SuS`wzn)?xw8Ս]aQjENݜ(/m&fаǡn|#.`?ZJe|Qӥ.s<*(' %J N-u ,Yl=7AanIMod-_"kwsY; 07@sTq,~Ёg7c,[z h:P&bDrK%lSEHIG+.}fQ^"p;{b΂#_BebsW靐8oɺcY;  [=~ ek!0̍.} _7MmZdmK`]0{Aŗ ;Ôo4g{wY- .ICО g܇_ ;_&Tynzu#jMW.]>dy{l鯚՚G`],cwжnͰ~5]1q`t0A(f-:dpI[ܕoJ~b;PS“b1h} vF >EQ>Îp&C gW5@*$O9XV3 QU2/p Rᚾ׉<ϴ/RyJcR~QY8~ &`KB-LWgdSF. ˈջneL32ߦ4<u.}!WVlTʲ8\cTMroVZ(J$(a#NX'ߘu)(y8eE݋b͒YB3o($T2wϢ'<畋w<+țDvV̷IgmsbW!, OΙSҿͮ\ѐX(6s\&D)rP%LD< Uɯ?Zwjs-'So.^m\iDA#ާN/ڨ'ݙUPn Q/O,U|$ V|xT(s̙l;q'^`paZKp)cwqNHMLne:Ąpgέ$%?fendstream endobj 63 0 obj 4979 endobj 67 0 obj <> stream x][ܶ~ y@QUH-b; Zg^>^lovaD5te41T?8޻KіVy3~޽^;ҐZJ)m_`:pLFe%,]pNiW㵝5dHikeJn2oFւ嗡y:n0[95oPU*9̛0 Xg/U-;0\Xk_v)hߊ}lE,+kQK3l MaߕHsQm9 * TsYp#M=:ׇ2TɄrPNPp*k%@ɕ{K3Ѓ&ѝv;'ag`[-k] [N &aCmݩ-[ 0@R֋F8Mq%:A$V66YSrX :Z#N}oq2B2{EhbN-o]"dkS^.ЍOWЬN5iz?̥{z,t'?g[_€}`y'24@Ý\2f\be(4/QY#Eh BMp?ٜmt%vFeQn' &!h{[g>AZځPۂvCYd#4Vq&6=vDv)ymRۈzF(%$7-?2i]__^ Eh>ݠ ~`3tO&!T"14ov~h[W0[KV0AHoAnVhJx9\Əut|xNfެwN7{;EÝ*@U*.ʚU. Ҿ?05R՘ykVA߽~#Kեj\69Ե8qoǽ?!yXUcglZa`4<ɔ:+-^&ˢ-ۊn_]®/ZiwX'mf VVJQUu/6>c8S?#g܄Q_УmH&2{+|6m>4[g7g~UdphOՓ)u W+*ۄ+yH H#D$GAb3-y+{Α 417֟ԍ)h9n^˜MO 5x 4pp=lL1TdgI TGhԃ[ t  ܐX*A7B8R'8~8O:h .l , []}=hDžyK4h"4qCP5!x9mܺ"JFajtIYV%kŴmBa~:vnk:h*c[ਟy"qZGY]hxs0jWg͍uDrQjk*NCG|*rz)㔨CzSU̬WKu[bQP(XDdE,YCg 'k;BUbvuҘs˟t蚷SsL nFUZE44 ٘鄌K5Auä# L-߶SI-F C%T~<4'R۷xń榃6zNa%_VӴ 5Euai_!o@(Eq*C4DB PC,<ij) w&ޛ4]HW60t)tJG$8S(^O\rKLh09 AYM4>u ܫaܓ#l8c& CJazvA{:/A7@Р&+)~wM  z0ݱNK6x&f:Glg05;/RKگQV" CN5F,410ϵV:9T՗apEH"N 9m `N}Eby>tF: 9C}տeAt#> 97gJsD:"sK'抷. @ާRsH`!RAok,u8%%&EF6yG~L摏(;RF3UcspxN]Y '}qi@)/l@v8߸}N K*hFęEoM!ݚ?EJC$tHI'3}4֋g+I:BwO)wY? 3 %&sbɢѥUw[Z#TvhPhuz{[Ci( c0v*W!xbFAnrA[^ RC2R?myNpF. yu(K 'rMLܒꮌÅĶf "MB:S1[K&gL/D`5cCF,4pC<tκuK0%P}+aFi`c14Qhy씧`zbMM(C=!F.34bn+Y܀Ed/n1@S NQ <'X.T֑+4p'!"c>9CjtoF|} ׼Ta^oH$&3[' x=HQgfa6]鯞? > < X+sٸGD7Q4J?'eAi 7$AKUlR:vQ _SG"~1|Yh]GIԍ Q#5=+8,1VۑEY8g:Z~ #J6&>FUgȂMxlK@w"}i_^ɂrO~LĞ^ˁO|4۪}Bl+lՀMWD}#wv {ʂO(4+'l4PU^GF^A *ftEw6{H+O:Ѿ0)'"sQ gz*In=kM_as (9uPkbA R:6|%kPCj`$u`W; OxĻ+hM)J!~n:YtwMORe#(e` ( 9y8^ik'f1=hfAq|6C ?RȄ?3Q|z w!pO EHTiW?@O˖mKȣ%U,][GO+SMِ3nvRt2!E _(DŨ6ƞ /ΐKi/@endstream endobj 68 0 obj 5046 endobj 72 0 obj <> stream xZ[~G E*:9ڻKv׋ $Hȡ t$Mu_+΄x7~5՛Wq:LLoaUnY;l*(fB05jy?WYbg_՜)vCމ+珉ImL X/,pϷijׂNrSmJ^x5 EcaiY5:ʱNLj5jϼ%{p܁חW0`Bނ5!}_eo}WIZ KfUMmKAIvC-d â&paD~IdDU v^g/+x( 36׵j;Vރ3Z0c=pNdx`b={(nj vzdLM-9j!{C,OU^Dy)|K/j CԖvb֏WuL6 ҤxpEiҘʃ%'W+bS3YNB&Zh|bpo緅oHt Iu}V`np]~*"ۙK8@Ji+t3Ths滮x؟VbZmC*+m$E텆3RT fFNϊqd]P>CŌp^hfT Zwuol5U1Pڎ=Z-> aj׺Pr-4DscNH ш6K0u]+;u|Yw~wӯjŤR<@4, R9}Dn8PyԨxSi:&u5B@͐% "0g֗ػ~'dJOdHc?Qs(+b yt`8`otGAFg;O.=kEfYM)g_ġ͞EJ}ٕ@rhxv^a^I'wcou̒JT 2S 2fb&ES.R|ClXM>ǸhTD}IQ8>dD c1Q9ؖʰ s)KpkeOC`@<$ 1x\哽M5rumN$A /AAx٪'R@(Ys(ix۹*_Ok54VWf@%B y  0-iD_*P~IܒVդ|G3Uv%֞Og!{Va`iV0m-gXByڰc4ƍS A:Ȉ'2jv)[K}4bFc->t72rqYZj}=ð]N Υo;8IiS]<9to'uKZ-U L=*Faާ@ǧD@SQG7njr5GjcKs'[G:79/3иGlb&07f&1h+|/J;S /Ȧ-OК6P146#]@cQc<'luPM'h6?zN@)BH^ 'lMި`B!(Fz)ЫAz<̫| hiݐهRksFY0._S!³U;ڀЍ*0M",TUo# aSqIipwІ^ip+Ϣ'4H_~P{ .E,(fU!7!s@ώCE2Cy9O6Sf(tJ"OxIfgnwdPthha"?[ p9oǡzYAEh[ 4Kz*Zn.\/$zApj߼pIf}ۑau1 /e}6o_o m^mo~q^*+'Ԣm. gшG?Я FPC4_8hЏz}@ꠟN.x#~*bQkO?Pښendstream endobj 73 0 obj 2277 endobj 79 0 obj <> stream x]]o&9V,7  jEˮ٫KE7$d;d3LŮ*sU 1}㩔?|Jsz^p0>>|ܸ8A_5m~ͱ8:<~wPWם,à[];o}]5}ӨnwWU]؝eݹƥk\dٷQkF~w|8=aWf8Y Ңjw?+!Ӓa@[盽V׊[דܸp;OruO $Jk *&ukYD^Va\?kF~ovՅcmx,ZL} ܑ6}Prh~?CN4SjxqN&  :cWfmdtLE^,}Xy0rɅM'"|ʥ ' >Qܻ$}HxO{I>;ښg=[@?PJz 0'7xe44/kMk+Gn##mqU$E$l.Y+_'H e,2;ZJ~/-z7kN5ѩ}!2]gi?,/҉^XE2JÈddØfd@c@ C. ,(AOYOtE*X}=.̹d\9e |1!J6.4eV FrX $ssj*5fbsl\34|Ceeh xB-|O{>1~3Jl-:YF4W6oڪnCKvM>5Z ;6% g<~H]M@ƁJ bKAM+7:A-_(Ϻ *sR(a{R1xvC\AGxeq^FK;&[5yED+l #s$<ǰ0}O̤](-7zjzW)tbE _*:qﮀ ZLg\NE ĐxA(.:؊]wXq:r|DpA O34Q0M{_كgHBEBa\ZL~v "=>": #+[!els͌)ۧlR W?9 1[ fc} Ǿ[B; ӥ#eO-.tr#E[&4GӱI,GހTqH{hi>eG{kCÙ'ȩ &sV Q_ئx_o7q3 hډib:^Fa$н!F&~fL)-g'~D;QVg\#V~$R]KVXZ<LN@A "J̀C+0HY8A">}Sh#((Db{iVe1W8ź5B,j`e, Go/DbI61TD1=5,CV4!Q9 슐* V$.O)q{YO:<&欄 {|r8l[ajU!?֝o]N-RES ͋< M]3o «\d Lyҭ9Pǫ g9"V dr L 7疼 ^2sh#d?9Cǁ42DVǟAylq"3+eZJYggl9SG禂FnSJ6 *wuutLKVJQJn`jLgEŴׂ6,D0*xTl ě̈GP(C 7S*V pJNGRh.*:CD:iN.d~4-R F c(<(rSIqS7$_&%Tk)Ain˲2O#B>.4;y+"X>6Tho6 3c_b~­l̸Ast2X= P;@$nI;,^BeR<ʎ1PͶ? K(@{º-sY +@S;30&uLR@AM]ʼ>?po٪WђgW!^ _P,.ѼѸ-^SZIVd](T0r|fBV 5O]v&'oLm4';F8Ԁ}m 0R"{<9B 81Ē=3*X*@@Z!A0"YD^`y~K@O(:ov!S&(hj xT|zL2BxLYĚ0k:g&,F!n!_s.Xl0^<_`a6S#C3w玑m`Khošej eU!{\Qa@U^yLBxf9 `}r)5n=͹X*5\Lt.w ofjb̫pp^hߢb0b1hpS=]|ZG$EK ;miL|`9bs˙[YW FҮzEn۶Kj;/UTaQ=(x `L̖ڹ ]"‚m+üb1A E|b0e]@߆ XD|]c\RB;2tBPb/tq%L B.6CRKqV.2Yge\\`ߋac Uc0斸`a[p=!4Z6I.:Q\n*;ˇp݊J`~iz_Q%mbQȺ|'ӴDN+.:8*0p,瑹 4t/}^L"ʻ [d!"7S I2ilgbb+ӀA\m*Xm_ \¡P"We^ѻ%>x(U 9i>ԨʐfԠaL)To/HH 6FݬAO`vbw]]1AQN!)OLi:4<7P tix{y Ͳ%=1jQ1F'@E`b+wvVS1%lY|J'$7LM)vppEoL"V@4aXJ@ ܒ`r5'D%B&7aP Meը8Δ.Zp祑SҦ3C[W0Wp⌾ 9@=[bԸ%؂ spԮ8snelvftm(D:#XϿ6ŚH\ @8U7> ^<'ywòP&>|@g,TM-*ZVֶ:f rpqO Q| 8|L@A\U"䩝ac6]'!Ӣs`,fu>tȬ7s7ef%a*iLXtr-· %aM7X'?y*>-# Ң["T!Hb.n׈ d YxBH,5`8[i;%z]iBzxԲsi {䠓jB!mh^Mh>ֵݕ/7;#Zug &̝ч;иmo=\ LpwWN31h! qzE Y}3}/Ѳo:}_ޢ}endstream endobj 80 0 obj 5648 endobj 84 0 obj <> stream x\[G,( !H8'Ɏ=A<$vMpw6CS=3U=S}fz [sZ]]E] _,u[?j?/ [_nJZb4lk;G[u4vY,U1 k*;_l-l5a؝[;o=Z]ՕJiX骮ݕlc<ն./Wz_Ɵݷ7;НkE~}JjWZ׍"Ò!,|t]cjT'Mxb+/tP}@w!LshɪjaC )C-&7Ō~mHc߶@j24 3`g\LJ4Z \˩L GDoMlކfO,bS,v}~+TFu@JTZs"Mn`3ikRΦ\edc]mCs{%Ja4Ys2JҺ#!JM#'tDvb%4A;R:䉘{lB&jLڥ֍?. OV>RNfkXW#=BӪ\3)=<'|7/Ԋ6t}bO7 ~gM/!ɾ.װYqݖtJG4NzTJwSq*}JST3{S_ScaS Eu~U>ů *?Ox,>3,>lOquMTdai'0=Tdp2ۋ7Xew耭pV Cc{6;gG;ft;Rh*g<`yteklkXumM.Z]iul\0 LgGXa_&p|=%9 vbZ7tb+h3_Y8\ `>(8yJ'Ы,ߤMAT..$P:IlF㬣`=OH~||)&"kO fZIǸ>%hdi42w$bEi7JL0w٪_H6Tɣ#k;L&s!;xV )~E_@ gip {Zfv< >+Ű0A} ڴ[ИTJ%IAցB6x+j TBbuiN$r!\~~)~$[Rٯ g4$rewsIS^ bI6Bdd^xx8Kt̗a cmʱ#+Co0U2V?pɴ]HWt̴xHf{΄|EC>(o1N;B7efᑕ08C0Js^6& '\Wƺ3pXVR^jlf(ZjVP TcAypWb[yֱz[Cd+HgIQ2(/Ci0L(R$N4" >c4+3bJh$> {_mT+)F1-qY%u1>r(ʛH|ӽ?c XXr7S_ 4BJmQKD˸MQDLƣ&C ,B]@ ) (f-FẄ́N$FÕPпI ć5k`ЬBLu B)/sB|W١'Sn|e޺4͕J1 o B%V!'Ci$pp^ͩT8'fF s89?^838L8vWIy+v)Ð,:t6뙡IVvnF0#ԅ,fˈuK':RpTҨQ}I 1ޞC /Ik]qdh|V^l]LC; xΰ^^IJjaq#CG N:Lrp';lQ8FO/׬oiH91%WWRDeV (RJb:+Q:['<{KҰeԌ{IUQ0(jYif,R9 eBuC؇>{#~G28:env؟8+ܻ2B#Q{\nz/LpW/._耤 ByBiKV:l IJc#_܊Bm7jzK(Z}o!L>ᝁoR|m,J,~ŐPT,]K?zfpqb+Hθc$uf%<'cIG*t)2y팸2߷7tr+2O 'HM0eE𰛇g'taZ3Q,2<݁ @  sP $yQ0;L 8Lx-7&<Q0u|0( 62ىsΟ7cox4{A/JY9 X3'MPId5N>3?XpYիͯUdC`HͿ+elD_#`!"b|x(?q;EfL9˦|LyQg?XJsTgo0h}+՜qi OyyD%Ĩ+]9s~:v*ltTŽ&/ )Rj?!2b)#*`0,L3˟` V%L6 뭽YR9qnRh]Wgw;gǹЀ=Z$̷^>C74k;|[z1/@'Rf2mx$(724 ](\C\iۃI+ZyʖDrt]`W{*U适i# I3< ߺWNgVCnco 'Fg2C#VA(kZYi6Em̃ɗeP::3B icޥ*扷? p:endstream endobj 85 0 obj 5161 endobj 89 0 obj <> stream x]M$q=>xPɷ9WJ Vq@0߳pwM_XX@UH* HL̷a|p/ۓ˗ɷ'/_o~yf>VnnNft۫gDAm:h9{}ξ>lg_}mBۧlVl{M7t| wjwigj҃^7ӳAMumk\n/wiއ o;7j%m yxPuw;I\in47%973gFͨ]|дL Vog10Zs$hMƏXH3r2J0LPLw؟52Q94[jcFKLw+R-lDJ+)+jvafԬ9SoB:I=Cc;eFU*yh7}jo6߱Fuedtd#F.TA_xta{f0cJ=\e4 6QU%2;O;fV z,YecB5-Wn45#Jζ;c 0.cmZ6I);ˏzfM$(4f"eY ?{dg62horPlm_`mbZ S7hjU1Zj Y k+ݰ\iKOtK/|/]ҵ/=6 R J}:W-,?)c$g@^4{7 L{\dՖp6G,trxxʘآJt#{ Q."%#'{ T6m;/iMbX`椆wO  N@([L|.м 0Z8#~_3 N@ 7Lp: Lϭt y\)w;s0 y"Dg{hbgY&&bc:;p8x W /Sa՜r/3f#@A2AY,pEf6؊-jK]6,fkwsUbLCo6U J+s]ܓ` TD<+Zb,i˄7 ؎eAk0a& KJ W.fhǤlw:4R>7Eȶi^Maf< }(>y(ŷxס@Z#A˪>vU[N= kZp[KFt }<4򭘅y0yNwWYa\cSS8̿X2`& *ĽfB??}BG'scR @Ef:[h-l*x{c\ۚb/Xt)R0ǻ.,?Gڞ9Ѽ2zQWL+K3VTcpd7$DM~l2cqޓ}&^A:!FRt؈dz݄r%\͈[ZWД'oS,\9 JZZd/ϩ)$C36'q ]kϑC %1caP&uzXZTJ|lnO#X8]pD|ǡ{4y\Z)s'nzGKU[M9W.G”*#*XJGU#=aU~y ѡAVz{#m …·|sm>kB7<407З NYײm~L]*)9Fb}6{bBgr(镍dUFayHġɢ[$38h/EMOE'!l܈q#!2$Hq3-D&A r+ c9Q @{A8 eCA`%U3CzvN?~q@ðܚ2,:m0T=krn=toLzq9moga {&=9Yb'ݧƆ Nuѱ(5VnŐFPxc*kEXץӣBuZwzW|BS&c,qǡKo ג34,E |04޼Ѱ43a W[KImt :8JBI1[e{W]BUCS슖ĹX4$6f(^]8GG$.f 0K)#!%A'BNni !_ȸUnI˽Hzւ#aL#緄g Easx}- r = 赲LDI$wiҩ\`1J3p!O#%`b"k+!|FW)2qJFHxkngdk{XNcx BrC920{"k:/oy/( !R2Ɖ==pRVJVl:Y Yz]5&ytrC)h)d mM@L(w B;b'XZD4!Jǃ%\dkҖkebewdpa"EVgCHVo DNZ34L&ѝN7\EP[rް~8 v^tNu@a-FQr4YMLYlDݨ`_Lt޺(\vŝTB.8 Wu$e:cMN;yJ"i-&<>{gmk̯pR)TYPZ8 -#ԩpkĭ-ݷpz/ ͥh}G^y$B$IoG|a6wú3gX&,2ү' ,=R4\9[+00 ;G!G<@Ԭ2$1Tsо:;R x24W1%|G%U5]zq$![*Pıi?Z8R|\~m|cy^UV+3L/X8 2 5o W|q?[P giСn+]2~`6ˆ"UWWY`t3ö>bO?}To:4󲠙'tWgPAy-_nendstream endobj 90 0 obj 5624 endobj 94 0 obj <> stream x\KFa\raȴi5M'8p GY 9쮬}y_GwS&b7g+@i>Ūf|ѸClvq|xpuÞgO_?kjkMӪ3[XQ+kBژrQgݰ_|e!U%1-[+^kr( Պׂq7JCOƚf.?xҵbA2hXԷ&t>_ +Z5um C6?UwLm-xk7;c 6-P}p SVa3FP ~co"=BMFe& g(Vsft? gFFZp4ϗ.n&J5L_QF+7UU3v gj*7y(>:m]JUqqbҦaÀZXL\ 鈶V忪-*3*Ԛk zMqݵ0 *}vbp*mh"ѻI嘍 U7\ 'IƶEG롕PVf ,#H[T )v"* 4Eq7U]DRtce|LDບfaS:Ez}ed '=R@{ښ)ɼW$2&}# 4ʑvIb:9m6ъtAd@YI%\L^i iG^P,PfJ :Y[,HA$eU$u壗t>&9 / ?3@XV0+`f 5G& ']%4=+̲L>4iIhQ^t",..:{乣HXy3V5]hjaLZ"\w4YeCR0+l_da+!hN|dCKSglRdr~D<Cٱ!alpijm@( .ƀy e6n3 gF|. O*^Ps*ghYCpK*$ acf($N|sHZhA,ˣ#b4BL+S9J w-&f .D Xd$i@btӞؑ4:ThPl6EFe(˰[(tY~ &ǀi!3x_}fTƁpuKIn:!}=0kw!HD6wFP~ cˏ^ "3YJ55/!CipBmVrȧp !Aʢrݎ|e J v {?:1~goD|<<5wO}'̜ j3י=E)R^J}岮Yk$amAT 37  lmqH]4c'72LO}C–{2Gc[˼1H`525HIKoGafk\x u_o%)M ۓGDtLZLpKz9wW P9Nn@$(WPT82L,&sbkDVm.9[3ȴG>yFQ{:o \J$? Mp4})D3rFW ѵEtIyۙGԕWm2aN&}p!K"(j_o0yRXBIޡyG;厳K>-ڦg!PY>Ǘa1GM>B#wgλ˙xw4"ZcjiygBp۷;ẓ5XuO߽1 f}A@Hȝ̥mpa.iϕr$MҴ^e;BcgZ Lgtu8I*NhB=A{zS38҇2c&;)*Hw-NL}bd+t\~bxCzT>^*Q%@M7nLl^(sZs)[mk[ 'ݚw]̯{- M7gP:jǮr(ʹQ_uQ1C'bu&9ukjq +Fޭ#d+al 6dzy,s7-]YӃSK&_LQ3E<;@=l@f їCyr%ٻ3LN/1И{{swg_ !Tj:k;́ܥ}ngݭ9GHd],k6U lkSD8F;3ϵJ:}NL5Ahæ3dx%^ÞO[KAU. ѤWRXY?pn1:4%H~5+A*4.(hiHCN`\MD&a1=?@& HZ >M~ƠÌē4$o1Os-: c/F-  er5?$endstream endobj 95 0 obj 4303 endobj 99 0 obj <> stream x\KsW-C׊K^֕+E94IûI3>h4?46R!gsˣrv~wώloUMOg)xuu]enŬS]zV贪fYrAm=w7IUrITeU)DE]Le Y0Y[VW{NfYj""j~VRYao?=1dշ&eZLt j%kZquYΒ*dY/FBx #FF˃wIfBך7 )Ж)Rߕ\5}QJVB -R)5[]ըѨ:ͥ5w!V3Q1"]VT YCùB%aZm6w6ZUZmַYU={^WHuQeQv1Rx,&?0:'/S-bАuD׉B c}d#%B)oL5˞Za>פ%:Do2uëmbM:ͤvhp$ieUr}*lrzUn y7I-2"ldJ(1 i8<2!,FF b.*Bu+U7&kD ]ԪA `:Jk-#M̖ [C-"=q[i337ѣfX>|]bTkeR jg{lH䥱@Qc#I\ۭR 7+g3?mɅݏWͼ0}\SjZ3H9].Ȃpk33=SYHl/MMᖵӢ4DA`mJ&C""" XHE"&贕eV֟x>Ͻڵ*]grWp S,ueɭR8ucZE#٦=0o>C[329F2>4k8nrfMD{Tl~!E`v>%=Цu};n:=ipe I[EKYGm`A~;9E0yNG,b"[@6"qE$8Àb:ZhaW/ i%@ˣ ѳ۸gb,ji2o pK{So=u3w < (zdvsܮCxS 5̜^KtyK6wo` RAtpyC%D'dUDb!y %B5Vg9 }zoDA߆aNí _lŭM%m@Kn@/3L'D^Az>̟na 8f "ewi=)X{O]thnl!6-?xj OY*{@\v=_|S2#.a\ Al+îx Pgܝ/+2`NǼg q`NwIv;۶B*/4GcSz2qDO#Xw%d(^]A;Eofj X) 8NwIsi`Iϼ3њ?#O`:(sN$[.'r7Yt Q(H+(h88d9HlOC;~2|0qyˡ~zǔ7a'46FPs = ]va>N\(?l"C[c8l<ogcj=(5s8F ݾՒRs v4`7= R{*=Y] K,ukbCH`438/'4a)dDžvNS9S 15!^@AO{9,]Av(]&HdWv=_*d跋}eLKt fL<NR M3۴0ec}5|,(tarǡ WpMƿGrN}d?{5CysWmϥLH q(s4g͊J!qZ $ %֌$YL6>L ֬M, #EDrhnZej:@骞< {\$i dazH!s`P1܂x0K7N=7m ֽ<6eg9nme9F]%RS# V;#zqŒQ!@ =F]y0lML3) pt5NnOP;@ĦɅ#-4 Ri$:K$a~[I3MĄWA4-q}d ]2 MѬуOvS[Q~)Y/c>EMӎ}YV3YTԧ8Ɏl2p ]+\uM0k1Qڔ"hN4rT{EW٨_WJIebPBkI9o7s" `K+̮022 ϞL:=o\}c:Ei4#֩"Sa42m/cy' / z rq '\W';t% i<&7O|<3ܨd]/:n<XOƜ{|9$N9EDy "zoUԾI,|\ >ܕ8Gn Kzlzo3#!m,Pk2>as7S ksb|^@!P>_et3]_(O5e|x5ze7nx^"iU] \UGoG]l/djFtuߣmsXQYm?.̋L0!=1T'v+ii3buCkǺ *b1kz`AQa Qo>^ s*9Z {R2YLιGOI,rM+]wv:{6 kc8xȔE_7C9PUцgE@~=믻eoYg?nendstream endobj 100 0 obj 3540 endobj 104 0 obj <> stream x][s%q.W|XOo틴ZXjւa(VUZv LAh?(RSX[6Bdu S>Vv Xo_tcaU5߇q9XFUu"%ש4ǤwM*}^7Vg]Wn #pQ򰦴qzHX%3:w ڑ9i~Wz ¦[Pͬ17Uk߹_LV.~æLcehUs|+=%砿̰uibMݰTnaEZV0jk[/5Xٺ‚Tv]3>Lq>԰2ŚН;p8 ^nk,4HݗY`V1>m|{k:oa*U;mlKlvO;78S,އ]l~ cFlEqlP咆f0Nzh_ ^jK[oE$& Vll80YkR:FZQfl>yUFХT>rk@"ej앨KHVjo i—Tć*5u*`%Yar[LT_oڮ,Pt!H"e ]L5yA\bP,b Gɳƭ)q:=bZ{05K  aWXT5ڃMZC` A} tFjSI@/DUp}PKL*-QMA| )-%?r4d Ƕ]޻'w]:~ŷXI,'xcTsgmb`{궸vNd\;[ms} S,yPc6-녽Ŏtyht@BؖҜ1;AО"{ֽ`1D1(`R߇W@?}Z{c@4ݘ ,wUׁ/6/͡ܝ1 oL _jW +˺U{U} g"h)E]JcW-,uI&tUEKKx'5&ntJtJLTm*e~:bJ:}:hR+bVֶb?(9Mrnb܍ 0ІSK4#t).@9CiR~w֦#l)^`}f|#z{9g}5C^NԒea@Noo>:tƑ.Arlsp]< )+(( m0Tz7ƤtxEɡ6GjVg>1{Yo@Q~ [? Eoj6$žhqbjn[9KyJjX'|q*]f  _WcI3ڟvaґ8s)/"1Pkyw7wة Q٣|10tEkhg>j+jp"DF7s` 0:{BAHoԨ r%x1ؗ~dmA^-%8.7W`nB-('jkL'E1!X􁉹QF5ќ"4"o¸xxްܐS.p^#3 xn%ݽ\1f-_ p lcV7$;)UĸvoyK$;y{L >0L*X\L"׬܀41cBF'7HM嬧S]1Kv]2mU ]0=:tV*'KhH4sn3e*3dP։ 7K[]IqˮX"݌p Ɠ#Dt[ͅA,t1EVE"U[A9EcOC,_Q#˘E1mAFJ$m WF (npΦn(gr?߲^iW /=8c&DFF9&QhT⪺K6mH.'1t`VP [ti|IK9aEͪdDQ0 ,Y`b=i&͜vڄJ8 ু0 rbUd1Ȉ }- AIN%[ #r^M|̔A"!(|DX. tR\2P`u-C'&t+fѕr3'R4д}ce470[Hf|M=&='ᲀڼ x]22Lo"=k`NGyz1wj[v(zHc9>4͜S]@٫.As^+>0jPXzzsth9FH8 { 2usDIUSV1̝ILK-.͵bEiEt`)/ rĻN)49n+>$T _ՅKX >,>{Z\PH;446Dk; ]A",֧͇u6(6I%Ket.rNfh@X ]QQ}QA 6)=,U7ÙL>*˝Uq ‰*uQD/eW)ZuA0S3*Bmk[p9@ $,Sմ@+ i>I<3O$= X(~-'%|$'ewe-~=$+, oH{nn!6`0;0<>OTtD v]=r۰: iH~Ɍ2=kf!?bu༷{T,P3|>ڟ2būTOe?:•@H޷;05ւxݹL6.Y"vҷܸ2?c1|%kX+Kģњ>3Yr<~Cib }17FqL@t,b|2#ݾ^EXC$+0ёr)ƴdҿKЁsi2: }A.9K]X.K^]xA[Qst#t1_.S 6si3wZ5ܦJ}x2, e.FܒW^ x,UMÌ=L'+w/M-y声PpE ['7bQZ"'p&%:zijG(1a zɳ6";Od<{f'lio<i_M 3bݗχqg3G>pY:Ӎ usF4 k2I+'jp-=ىiO ڠM؇w}xLLfg־?:>^,qQ [}k61H Du ^w`mI3NۂےIfGQ}:J-̾ N W, 閅\lҤp%L|$3OD ;H3Y*0pNSvR<~|!aPE> stream x][$R^xʥ*mO Kas{vf=;TR/Kճm"ר$߭BUsWGVoǫGEm'/͋yZˋj5E3 ͪm_|u^m^~s4i_>?zW7eQuFewjTE;k\*jUasܚ_?gC??3UeYٴEJO7}u9lZ6dsݨhR󙟻nۮqIiMχ\mtՙV;+7^etegvW EÛիJ)[rz0{wi4"l, ^_6-0Zi5[BߵcMbhFh=k_qgg=(sd;lFjzd+ֵoփoow}o|oʷ^wmzG Ӳ2$4BBX=<79G#\aa2I.N끳%&pQ|ܷ -Qt5XVF!m T\ǜ P%C:r\2.J8XFli.I&[ 뺇( 9F [,E.~K. ]t.:tvGU54Ք>N4ˆzQVO5jG$OS&aq3Q Lr6ߣOc IO>+C B4ylvXau.ZLydy6GB k[Oyщ Ω#?A13 u2]'t4 #XG@U&$};KѴfQO]x5/T=ґS >CR N0`g:!y51ȯg#fww@@ gԌ|ƀ=_U&Mia5Fu?5 f B7m n2עoGo4-jmVؚuY/ b].:Cg{nbqˬM]Tum&.n~'3OD๢q>$]'Йyu:?# OR!9XxLmTNU D4W‚cqǝlB\sc8j4Ռ6AfXP{l\ɕ^2&j0i ' 'u[dz^|o]`#5ɨ<5kokovOt={qo:I~Ŭ͋=gw #[jR 5Q55r=&v'|dz66ᷱ}xkDR4I{g8< -r?x.0H#?:6 bȗJf%b5siI5;FU!= mapvwP1bۃw }MΘXm 0ik GyАP&# C3g&!zt_Da#YvN$:ÀѭSzf^ůT6_ZNvat톢4 ) pA _ 3(Tsqa\{17x"n o.Z4~1<7ی-B64KrA{51КV }=3`'SĘ;]Q65O'9B=5 XS} LW -yHvgL9vC[wKDZX5Ey蓽bYy@0cW>">u%bQ@Z긮nML 5a d1V4v #:KcFH˖yW ;,BrYȣy J i $KG1RSx`Ea eTcDTreb{z8;'͆k6lY n!^`H]4>ƽ8 G\/fr32l6&q" 8vxK3vzVRf )3ExA.hVoU:A+/(F',0lk: *~YRO ` CM ,fvNaN qmx<,fr1j:eAJ\RވKAcsĶ|N`u0@u誦%F2t!%D)B Ykx_*J#_u(d7P4esF=Ev8szrBBCj# ze}9 1kqvi9m8[ƮEmPaÉh,%4ݱhe&JjD$4bO0}-ԝ؅8F,؜/̷S+#NA<H3Va&;y tBU/?q@gM%{DKְ/mi5ݗ:sfb(BT-nHJ̤_T+->"{si/q[+5L%8^r uSj>Z.I09J2JIo;ta,I˞V+ֻv1)6( >{q- YsH,*K [ЪĊZBE #,,Ig:. H؛lG<r ւ]ׂ>J1`Y9޹_QuxICKT,s }&Ƅ8UȊKX;{=BG1Pꗹ^&+&I C'-VXPtb;UWZwsggP?@jV SVT bˡ,3w T.TX+g z=֗1^\~>3?V9p0a# 2NHYfݴ;3QЏ R8Hg Qw?4*9ġ*r_傝Yc`Yݳ?x[ cDS1[0 LbYͥOZmQpya O-oQlX~VA+(P/:xm6gs(!r퓹Y>_! ;+C5V5șzqIժh_wG!9;- dG/Hݩ׀"~Ǝ9Oo`!1XW5$HB*,Y~6cCM*ʿ/ AW2+QMbИ23v%)M uN-00!o(K1 +b.x<_?dgw\~=cYtۋѿ\{endstream endobj 110 0 obj 6194 endobj 114 0 obj <> stream x][6vF`L<$zYqkD^u87`硦nt^_o )!QZ");o7e!4m哧_WO7_|65nϟ|+*o_n>~_<;{R}ߕm=Yl4uug/l7gxқa};_m?ەEUj;Ue׊~'o6.lH]5ﶧϛ뷟dYV䯯vMQJ+* Kvɟퟯv-Tt_qn3OtvuE'luK<7BzmUvu_Mz0̭yQzծkM8CO(q#?7jTD4/*iT?03R4f|MDuWwMmZBo{wHIQoSo;t^M͏w^UUimuz]_;QMW Ҵ#4MfLjZ#eU3d'ˢ&#*zٽ,IJ}/谿ˬ'~>M=:ŋw飝!6QE)k{ LO-kii,ɽ}{XUmE_7aPQ9~WL=_/+6;{P &EO}+74ͦS|e ZV5OWk݀֩kݺ֧µq_߾޺k}]-8c7}K|雗{߼[1GytYaŸ_o|_~v3^Uj> {o`pǓqfm-f7߷Mȟ|^3ghk٩D?p ^uY(k% Öu92sDcCܯ>J@^)'Fo Vo)~~R~;|=\ݩ{Y.p{-uUR9G2^U44"tFBz>O϶R[gZ6]W/TZڹ"gk' ?.7:~F`M] W*ǀIL6$ |UH<7~ٸCu)?;(:*92a'\C8ͫ !Re"q.N)sݏ7d*sȞY.*j$0v ( ߺKKTyotnF!z}ۿF&mv"?O - ki<)";XdF TZ]8!g FcAv4f4g(:US|5(x8R%aBfGA~":MS.Cֲ`"p627nK("?i9ST6KN+)oV"+߼yM?oYl)#o|S~mĈF 7mdj"5~)0f[Yj7b"̛@W(OĺĪ%b2T\3sZwU֛eVăȲj:E !.)_ZBeD4?R1*By Ⱦ3&E(%sBiV̱,EnF)rtfEW >dβ ZƒC8n|/]s5E.X0/R5QCXLtgJk[W"UMPTm՚E@>q<\lZ}}?k}[vRklퟛEO̢B?2KyBiB_'Tiat6ŲBNhZgb O3<Ψ?uvYA I9#/46LٸW+41Re0 r0w^d\tծaJ-OբK fَ;C+ЩbB8s GFeVBFIt >@`U_tu=]X$-zH \ӑ$\ sVA: Bn8*@̆Y =ITn^RMijw8tI'?w9ҷa%g(T CI혈-KRP))8ibТ]UA`lToAx={ wdߟJ Mk<)P,ew(F12 UPƮ^&RQ;q{"*Fȧ- me!"FK+χ؈`kJJcgxztlq ΡŅU3= c4*@XP@BW>^,ّC2RsL7TfWmwgl bY#&o,ACL*?q}!}` }5GןYN%`" V铅Uzj rtH柹}thm|' Q=çFބ]ٯD6{APN Ԫ:o !\CJY!c\88N ApR X@ʢ]ĺo{k& pt`-BBJd[2PfF>8Ď=:3FlPO ~)!DePn TyGvѤl>43 6cpТ`yH5 BIgOmQAOXY緌Ake7+T.DXEU9N 3ښGEFb;ġ'GƇvT?ʻyJYL.тHJBmTWj! E𱃢6`wgŲ&"$ djߑ#1EI B!ʅ'unzȧH \f@(L8 !My9"VS TJBABo o ߋܤ*GZLԀxEmOBTH30x# UHThQ[>|So?>|)lk 6I7ٺ; yvok'~IVd](Ok֮F .[[P;4H**#gYy'Nyp:N 킋Lx]n5b;CRQ>PkܒgUZ,N{D6U5E%jǒ˰o'ȅ Dj{p(*JHogHO6(rΩj&^`TI%Bڲ(fY@6M^.9`#‡~pbW>7o4y A#U8LW5$#StZ4zHQo48m1E?I]}e{~D-QW+RYԁK%<3-MaMWzFZ1ó4z@s`(o`! VݱMle m,3A9RB'tJIOKr 93![|Tp*t(.E{,dڢDQᄜc(C=́P&D,تi} xeLNfBv8QxYG&|8:Ղa3a;TЏab[I\vŃa֩K\q2(@ c{H8 #|&A= BcEҰ<_1~(2(S\P+S[I?6ވTtXa" Zq.@'H m+K}ycJZ,E5wkkhdlJj/<{Ӛ(U]q`Pp Bqv,l>4m}[ڙH) "^+m K4\ʢBq=ݺD>9u=  "kYX$ebNZi P`IQH@\PnPgQ侑EhgNEkj@Syf,DO#ՀA:}IIr$"Nc^wpI]K V~9OKp}*y)> d [Nu׼PPt'8I) N2L18˗ a)Sմ WpXnj9KuURQ@?P<hA8EW@[c*tּ5fU5" rR,~NH ƽ$$ yd="Uݩ t0h!̝f[fSI 1Uc{g[2N Xm;JmG*V%gk>!'egs+EM'nV@ Tёa*?^,, EKP]1}b  ']FDա3):fۺ%Ml#gvE|q5IE}WEqj| iB˃382[kv*IhF0-z@EnG㈉rA\iz_0oKݣ`G!}iK_SKXU8oItg(;& {+!>`( vZ"dV%|o'Ih`@hIrb@mѷ"dwPJ,܁y3F# =u3'?9ZgYnԟ ǤL@ a1"5@%x1l@ Xo9] uosi.DT<~&A4d|?ӊkeD.%WL`LpyڪM@_2$ v ؓ|N ^YW ) <ʯc9!>fVMFy;.MD Ÿ(Ȋ0(ƍ ¹h2Ι}a|ޜз6|ì;F.p~Īg$'́k3e8aδ',AXIg%djEیh8ϊУJEKmq6pAq 7Q͏!rL;"p@@oiFm)5\˚2K\4)b؛ 5WT.AX:ÕW] WୠPy@={/ܒԽO{Uٰͮɗ pD uETM#3r_4hZO9QEДGX &fiHp]U#9>[W`,(|פ2ٍՌgBʞm'І^Tu VP@G۲pO& d[z')dD&D,=37EU|< ѹT5 8X)홲 {fuSv_(|XJt4([h/sM)xHu΁?vlf S9 K-Q{ÀKSgbs#e2f\GU4EzY9mgR6Kuc.ݲ6 Tɶ}L7GYDÉxd#~pR&b^sVןe< Y@fx~$s"l=֡O+e^(,kF.;{Ѵv$W昪U)\i)GpI7Pa|h1$)ٳ֤iB-aMrfK g\W]㎠ymfjߠ+,p]M`ӼZFϱZ3ŇsW`1!YR|0V?⟹ hP9Cq 5݆/ ^cy\>HPU{@ɘeLz/e=C\Ѫl%T$?X|/hgy> stream x]qs8AxюE)0HA]ri^.) A1U]5=oQC~`1Grڿ!qѫ#sF?>{T̯ޜ<LDdÏ+F-dZ; i؟#\E6 藎96^z3u4|OvmXKtFh96͗ S$R h ( UPY곝~idf>}*c#aǘc36@ۮpAxV0[RXYK85Ѝ! 3F8a`>+v ,y`5 J709'Fj0"#Q=?h4| ed7R+褩gN3J7(7$sqL=똺S1uN}SFng/ %@! #0R+&,ЪG}Z#_Ǚ䘓Gn-03@B'本Őn݇,J, V+IE$_S&6 jqQ=s27Dc^ j, B2i] +qhTD%enZ9WD8h x#ϨJ.jk$q$ qĪG,l/0 E)Mrs>gЀ!Z,O JA2 (E &0xBN0:ZӰ ЉFկi. T2D$D~iB,),,dgVБQTzNTj;+*w4DUziGm^i3Vr4GԏZC}S>mld{Oo(u߻Ol5?f_Mq;mvEmT+(mkj'5l:2RFS G_,?[=#nR"i1N͇Nx S3! aQr2b m^4䨒j 1{1L r۫W}1co>iҦ^_Ap{H<ʷ:旊R!g2S 6Rhk([[+ul7k˔K 1pqcZeW7 D#E&,: +<2д"M.~Ēhs6Ys͞q]Y2_Qo| :. ramaұzyN)yK%g6+h_gxJO)-x@ a8[֘!mQ.z0DrW~6чC{R3-pW@-1dO+4<8s:;!7?$wvP"hkg݄}-R}*i+_fr2ROiu`@8}*4op8K[yK/VVF1r63Z ?! /!yAzmmEUYSȉ]+zj|l5=F[I' 1Y f0Pa'c>/#,X[q8,[Q! $gbG-\V䷮mRmfAq-J˻DUfOxN>JԞz^ xC5:E͒VyFͯ#Jb+`d8iУB8!%01Lm(,Xtk NKREQ&Z8G_)SAN1a>o?RqdĘ}D&@m?Af-dabs~.Ͳ0νpƧ!01҉hmp6{,^ωRN Q(W6|@JoɲV Fɦk2I 􇽃GoMïoldn$<ǐ j,WwcxTHZKW6 {A98M:}Oխ5=PXjOkTΔЏ-WȺ˞GVNK+T0\S=rңv/(HizTV-Z\S_wN9%VJ^FӗɲkRaG@q(mΊMg+v}XNUO-S͋bRm&"7;4KOEJ1 C3WI^YR P̃:Ae@y9/iU^H7”+|p'^pF@ h^2ԨHfz}ʿ ( S;Ľ,q)aٟQ c6cY0aL54 拫V n\? xHZJŸIV3rMQ[ߓP: L *a\Xr%? ʮP(Cp7C \j,$;Tl7P) =rts zq'Xӻt1w58}%sb!r8J;WmO~d 0lQ1N)UIRO&*4ҷpƔ\Xc8(p0R?0Ǩ"^s^)9s(SBYֺt4C +V`ܑ)B (rðnBqr}ܧprz هcNd|N_SyHaHw~m#/3+37߀cn_eږ]6|Uܾ*Kerl>)gr0aYwd:3^*[e;D.QފވQ`2BvJ(\PGO,`OXK)rP'}32(m_%[b<(<((lت\U:=  g=l^}P54 JD]BkQ r`@d 7B04N0 LBveJqSwhX,b!"oz{holaxjxvxc9azqUY<,8!/ >۵f{l\0xӶ|^w1dchEqh/I+'mD/n GaXfvjeya(yd@>cE"G/C_7  6桏fsV2зyX0,Ag=l^}蓣c]Ƕ} 8;Y ikǃDihq1wfH^bzyC.*W xo{J륶y>#R_Ὓ_[D7vU"aCN5OgԵG[b<<lت\U:=ЋG|kzaOk ~FZ }p' x4%q/CrIOp @j@ N޸< uBNl `jv`9 `z pU X<,Z<]l˵ʾ\ odXͺfU%;7Qk{^\,vc|C+㡾Xŋa{Enf&ӂ ~$zJRORr--]&dDxAC~Iɛ{AK!/nw- W6_q:nhTnhK,l~7tݐvClUni?,bp\c;hZ|JC1gs#иf㲙[ݼy[4W#emΡ^K5{ rX{m?wK)@ yt18tKA4*dRL}zƔ~kZ_t}H([WYeو1ctH$JH'u)YBb>k<)νd Wsb.  @, 'rU&Z|ey]PE<v@#hIp*K8 pitE/Jߦ"G.QP^N4X[& p$܉/cX*N3M Bǐ#_dN:F9i@#k+c|סHZ˥S4bbLr:6a( MCLvA\!a@dzxo& #_xRLRYxg) 6Tkϗט9uĆo0afU#` c!"eLR0$EVq.q:nsQ@SIR6 t >d9fkƀI@ tb@ i%TF𯕿hLC6":I9(ɎyetM(sވ^ī,t(4=TB#G-TAܣW,"Ր`5>誇I'ks*>L@+H^ulZCZnaq(Ǫ Cg 3wcH29 Jy8EnSO֘w4* '1匤33D.}f&/RO1am`\MB{ gMJ(@],Nd}ǘ5#jAFkU-!yudH>$<0e# «5QHo3U4t7HDE0%LnhmΗ"hto- ~у>AOG:-{kr$iSoD;PcQ_41[yM&8ԓ&ҬA(+3&턑Zn+>hꌶ%>n4ڰo݋&v> stream x][s$uTTBRũnj%ˊ[^1r2%).~Gt9ᬒâѸ;߹m_/$o~ʬ?^}K<\}{d?b~mmζF٪:ҪvuhڜQ=_^iafMZ֧N}H1oV7ڕd;Wo֟x F7 .ͱml;eNJS]x|aѪ/Ӕm "O|44WYXjc%7.ōϓuXxaZFi,޵qƐrCjK^/ZnRntC Pꡁ2uZ5rhd0VN[T˴?$j囪]>v%[MJ^ )Q_ܕ'?(7R]C֍s,fm@ʭaYm&94wzͱKv\(9/7m4U}j0tnLa#bj4J`v6&H]ۇҋ_lL*쀦2XK_&5y޲a0S6%~$0+V6J#Jxk_k|M͵aMn [3n;8aX4evn][a6B )u?mG쐼Ժ qɌ~ˉuUSCV庿MTgZc3PX6BW})7; r?4|7+úFo2BI OcEL>S )yJ)UJ~/R%ZW`kF0-ìJ1xRy٤[(XJdWvPiJ%1cdB S/)Im^'ӓ?]sJ3لO]rNӦg9:c*eteLb Vos<oX8:m;Y{l&Z.$o ͮ|[N]yf ?fsCG~O<#?NޏXN?+)x9 obu/ގ$I;\eг+DApV~ u{Pď>_(d 6>$DesMv@qa𘡅ɦNw,v໎Q>17at`)@4cy0~hvapra ,^WZp r'.Pr`Z[טC1WB@m>q딾x{8h9>4eD9&,$o]: oPo8t@znI$9T *GX> r5sL(XB" P1Q7MddžHڰca}FOp9]x\p٨t05Fq)390Gxx;%a H!25v#Nyrnc+Tq[Vtٜ^i/=-+Ip7A"Mі2,<.S2#b#,\Xz8P_L!! (&fQg̍t+y7uHӔ|m۴- G$j5 ,BBU kL .+sRg o +/-`׼ͺ->K\RL0+l'ljTC)<7e@?/csZ?8Oٮ ACwqFbX0ַ*9e|t!GXwМebeں;غ'vp/kbً!sy4Ifᰊl7ŵ~K'0 I [$KmeYi,K5ZR+i"Ev^q\ŋEE1c>K#˼ ˬ~KC*dNϣ+m8<""Aa˸U2u4SJ.b0bm e\""GT=oE|ނv6kl =Fr>ʁ? m %U0U0ʃivu61%1_6^sUm dݺޢ4`Xr7gm(j߃+E@,؆: .@Sy@,YZhP8nAd[gE96m97 ]#^;1c ySg,r4`y&.*nQ5Ds5Me>䚖q;#?:sJBȣe>aX]XBSddaA23] Ϩ!Q2d\H}כnlA똺1)v^sظ;5~si|*` VX 76L]-x}L >nq0Sg@!k44Ё WМ1Xj6pZ/KGdiDvy`>\(UpUoIV-aR(A!i5Y_eB+IckRQpw$&^e#l[9GcdAz9C+'vkIPCi衃N@wA0TY z]ϴJ+󚛴! Jr+vyb\bcƑ ?\sXȴn~I_n^?zz#|aڍ,um'ITٹCoVm.</)$Sُ7~0%Ԗ~[uVAYE1*Qɨr wF^ l{|*˃"g %(!1dUS}ÖJҠ,Abh .&_JI)z ҍ4 1,L0(HA})1߸:f`NQ ɒH(vR8w7O0T5J{w?K, xfG[m6C\#;{z̥RaciZ|%@e'XpY_DR @!L<4;_`g />6"qz}= !J%젳 M@b+DnOP X`CpQRbԥd2{d[ŲDG*P~D|jʤ#b,G2LEٺČ֙ _A/Ȩ>5J7$DU0Ii,[(3.=7I/8I ,tH3s ~!"I<g5VkܲP*mx0xL'".aBX;FlsB_/98hQhw>ˈԾf.MTb|e8nc%/tfhc2;5ERm``@_6?֌Q'lpqY0GSRPfn%ijNƒa#fneP-mfFӃ   jno;`W$86(nơށ$E&)\W4r j4(ڕ:0QAִg92GXk.0/j2PE3,/s2G.EJHkWXt$#k;z c" GGGwe)W~|V y@շE&JWB /Ld1 q _*IrZWKTyczL!{˼YD  8Bx/LsaiVgl;-9v=ld<1&}1D9$cld#+8F,-#`ְ0EĦzw;?L`w 'ゲ x?BG} DMc~dqǨ M!ώ L:bQePua8L@.4qo@יh n+T)*z6":vIуWz$O)a( ׍f!pfM+ҍ0Sfg{C T|2o g*BBAHvGF낡g})gsLBR 1㨣c毋¡ pUF *5Aec,@Ah҃*aBЋмoM>=1#I/4,>RB U*l!}%FLUGRkc<2HbZ nGV?wqg"u9lԣ8zIFd83Ξ$],2|=(Xz;wV5 F*l>$f5B P'Z[p鲨ІR4pѥun-ZH#Lx?yX^ gL}yᇥ/Ʀ:!GcX|ҤQ˫͓- @Ťu8'euأRD2c~ՇP@R~W!afOSc8V!澘a8C]`vkJfѵi$r _1ȥ8pzTy뜫F.1Mu({Gi: M)nyѾ-Xlgq(-8V͏xT<ܘ<7XY50ƢVП@ʊH(wwHk=d=ͻ5~9͑%r,CٮS+ 1Mٚ1('>XoVWpq[qZfJ:G#^̉{݅C|z9ě8pѥcj-hf"~O.˫EjT'Lr >K\JBp ۸G@n*́׀3:,5=w|%⥞[F(se4 WW\ #Da{h6~PpWw>)-1[Y"J.&n*:nyħDȷ(,!xigC)Ls.Kf$o5_4N*V?WjNyؑ6OD?2q<:uXlFH4",/+zE0ߒvXi?'ec,bM{'=*.QWWx\KXĕn|C1Tq> >/"Bqirj`ģ>P4|O/-_endstream endobj 127 0 obj 6814 endobj 131 0 obj <> stream x\_ ONU$4#9Cn h3`zozO_43jg|wa/ĬDQEQ3!gxgb<{#Ώ~3^~wlp3k uْik̘|VgaqYiRB1M-BVr~7x[,$+4XTf?o;y~(*E)|U, S xǁ/!4|RU+<uQ mO`0#%k; /5^QXƅw )-MoFmΦ飜UvF`[ 2`R5sVzF,+7 !0/\T~@6Tڋp^^8F =uL: CVVݸqkns)ӕQv3ZDuSLK[U,ie3<,$g8{FXB1t.Gx#ZzZBs^Mִ|*}_xcf\lDKJf֦W22a ˲.q7 -8ldJ(ܔb0Ag5pFB>,/q7Ek`"xS~S|i7J3"e f ;KK]*zM%yz8W:'z*y;k7ciB{ w)Fp>,R 9I'D 'r-q>g|B;&B'z""Raj| chwH7ĸ[\5oD7NDK NY(Ƞ6$ɀ&EVO: ;0UKj䦨1_ Bϟ|䧁ߏW &@Lkv/ר'Mr NTs#lzNj`"=s/hwc,R>LoC9:z7ݷSP'dݦUI #YMH =m2b<f5Ӣd,5FjLhk@ L4mҞ3Um$̖>+oN ºL)Z˲J cMw<ݫ(,b'vtjQuǵoՅP20hg^ 2rE r9jDpMrgFz%]Ix*  G(n-UtY\/gFrm3s !A2,&JX.}Xf;ȃ4 Y'b -XT².vXXVkrbb Ra~Ef|U4DA`إzd< ly;(OLo/aٷX9\U2XMH9MzMM|&sb\؅ʬ#Cp 肔;!a';i3#Q l6$I\I䝱j.ȟMuq BsF `?R{MT4`Xg u^,ʛ&D/$]53VhG}XfEmTnB8^H` ϗSl{{e{/2Ju-6sh&Ei֤d޴[!F.0F5cOi}AL ͮ>On*>E&ʹoRLB>ݥ(UV G>a Q PGPz 'pS3qd#Rwqҡ9i;%䚹9kJ&UHmtYNaho/wCm"q&@؜ FsU6z\R#Av 6C(RXAm wfMc<[SNzsPe?;uv8*Tӄn|>i)7c.G8q2jq1d !YMR  : 9008% BoN>h~ɱzMg5}+ =Z6IvWuꪵ읲l-R{ZIfdCDCuENE 6TutmLq=s IN|C1"bdB@nRڱm37@Hy ٭#"ˇr?0XU7~ILk=s2ڦy S zYiXJ 3Fܡ[({֑RÚY|aߊ_ˆP==NsZ6GM0ϩ;IWB82a ,vr A!OMI%F^4kJKPj$Hr e-ZM𴊲m8 ժdӹ2Y6$hG0\dWD]E}5L|7ܳ2[@&h]w-JDW]7OĦ3 VӠA=1o ++;bAW+072NAߣ%t̵ }\tWJT GC`]\8@F7jAg.n?RHpToh H&VWBY< aKđyAkA5_?l)/FeIi~U750柹EN QKe0:{(+wo ȤzvJa Y6|SԊ>mffĄK5rr?a4gwR uW2#}?# ^BxŬpPh@\?+VRz!1$&}MLeޭ"-P}rfmר"Quxr=U:d93a.mM=&F?\e+̞K!@JrCGf1yC\dx@r* &4Jfqv-1ƸCt!ȿTNq@m&}<ܥz顝p!XQ>1rOQ wޛ{/2NqD7Tη'G{t Bendstream endobj 132 0 obj 3641 endobj 136 0 obj <> stream xkGQ@E<> a+$2A&"=s>;oggw;Ke^}_-Xł8|}8}}^ܿ;{_V>|=|ejZ/lzatbrònZTvyѨ1gr݈x## h%,6+w_c1RarRK,~g L_yFr2&ԓFh\ a?|<1Yg˿4e\{\pNp M'[h(`j 0Kb~6YjHhoB %6P5&?iсTr8v Npg !SΫoi4pUi5;_2 צ6qp8Yab rmffRWy5(X8- ppz)Nk&\e?{Kt.tL31G&eBG hg8(ʼu㟂Y&qg(x#X݈ Wx(`gg 7RI,OEZ`KZavr2 炚^ӔF i0Er,!zf%*6vg"W?HJ c!x>b)$Ml`s cip [Xmn N@W) fvUDӰX+E2Ǎa \j>[3~&ۇ(JK1frimval+#I;0$VO2d h=/Z]R.,m<] d.lRJ囝(;}Ư*L |ަ.q !LEц;nu֔<p0Z|sE F9b˰oy)[cTZ浞vp &JN >`YrsV^|z`*k? ? zf3b1pހZ7`R,,+M]H@e/i >rzbե?[oLy-{ 4.dؠG%JËa]l%,,7am`lRޡƶ96O]=]Z챷9*ӻqt]FBH`++`"m)L JҷGf6t U&Tq7`W0N&2Q;F=܈#ȇ-Ql01"WoJp-0gM*YVx 얐$7/$FbiL^n8ز˸L_i'}%Uq &MvpR'PdPO"xb C%>K c.W*/0hjHC.u?yxNȥv! 2>* ^% \'l|ImZ";01z%R ~ॖ"d2y0/8ʑf?^[K ޱVX9=dM&Æ5KSIp*A˖ 2;KfƆ eCt33R EFgȼ(}Ū';]Ȣ{A'nEQb'NLDȠY"}ctqA HQ vЊb$\Yņ>6< -rYOg}6<Dwh NSTgzJVz ix<ҋŎ_0g%`y_^s8u5\8ӌ$jraz9LAuK28̴S1DNm0H'8B6s$ӺG+|8FG6]RلA_((U̖tMH_O&c<e.!62fB&'[uE`V1 h;fX%}=AAH]׏ot;g2eV73k %6)j+wwd擼':%0g<`})/1!iߔ4=!X:3eVG |yY\BC}i>#o*(- ~䀻Dvİ`w؏.2.(BqLC0k4wNo ݎ7ߦ焸SuT_b^dcRr:߫ͼdTkifP9yQb U=[|>kJG))[B8!=5lQ19 p<09 W B^R[q'#GN6`s+, +qJYF;ü8zfdn zQE.j~e~θcџ@t&'"Eh6*}7͙ؿpvaKiYլxNDO_I*TC~]H;vW˹*cgo o)?4_ΗQ$Tw: 2Q>m |΂\2DE?9qxH1av!/~K~ݚp^qgZ}' p90ʡ}rW?($~@ɹOY)w3)܌`|-|=Cc}Wh51jT?a3"}K|fYw]ԍAltTVpgXTYcCEƭ%`Yv+wџ731K>: ibUQ~6?a!YdNM,fo5T2N&:5~bp ^ RJW=`lEmj;@Ds* lԘZC(8Am,`w t> cZ *ֽ D]VO u 6Ù^-YryqJsY?qr~HScH[Kzm[Ʀyj|endstream endobj 137 0 obj 4140 endobj 143 0 obj <> stream x\[o~iEE=[XޗI͑'udɑtEDq%g;< *p8~f=,XłX}fqx>^<~.ٲ \}xg7t)S-V;gY|d kk;Ϸj-yˇR5ˋJՌن/W3b"bšUm$r?^tϜuw8Do/+Sk.ZV۶V9ESW >*F3{~߮Z_8Nzթ-lm/~;ܫѰ[}goՌkx=D|ϡAjl6ʛZUZklC) HFsU)3t|  /"յIEW7~ ְ6KpC} $Y4"ORiKUq':WF?R ;L5Q%7&}CNs'b.d) <aoX2`3|Ǹ@1W.m%t=$]m0c(R^"-u%aa=?7xylYc~ z}YOskP;.c<YA@5k?WD{6{6Y&q](@YwR [Zܙ! 9WK0ߎ϶{  <0KcL:7wK!_Rd9q 7{ֿl@O`}zf",'8~7v .7ʴ6#?qqH#>VN6)D>fIKQ_ޝpn_*^71SLEy}%Ne\r~bjQQZFۦV̛,|:UwNhZ? U.$Xl` Y'|ogƪ 4ogm7{VYi 3g Tv)0묇5Jca{Fg@qH>j4(2~ X`, ,+쬐xt|J= )5zڛ*IPiwHB6^T(4/gIM[YяPVrDn2i![@O>c 2~ )YH#lj):# YVX{I. QA]|C&)"Aj4^6$v~"#\wVX,TV}tJ6votj>#E7V!MvJh!/ĖXAa`h96 {t{Gd?\ߦ%/cuч*\橊Ð j-s$7ml EKJKoDŽ%yf=aCءx~f<1S(KzORi'OORq*թ(} ]>e=K"}0idጔg@tn)6e͒Oyt0 #&`RawM4!SJBta+p'I3j1c7;(&] M!C&a sJ9' v=0߼@G\@;a.YfhZ@C+L$9ѳ.:}p1tufpl*Q.t#,zĝ BBZ'AqH|*z0  Jߘ$ ͇Yf@ߢM~EƉU)HD^XlD!H)6om>+$1rcfW,6FཕgC9ֻwM_젅 z4sl# _ݚdtEW2ܖe 5n<ڐu [[c @'&O!AC %]~32"^HGeq(k +339O(jLĨ 6GH {2k,ιZ@]P٠2ˤĉwO(PxVZMK(O_C&(bh yu&PaU8uFd2B r};#%0L.녓&׹N5nuB+|Lxuf˔e U 7 :$#шn=2pc&1V_$L)MGp}V-F `]^dj,ԓp7jН)&:ǛEp r ֌*Pj:_@/q/{oZu^I4j_C@WX-*LӠP#0}ͱ;UϦ6x7-8 >r.:FPhnLj[-Pm,_#𱚞8ѝEsJA޶$ N^OJ#z/ GWZ2ytNf KsśZZuѝ'C}vX sLIbm Q$m̅Mf'"B,KqH=gݝP@e F3h I-}KH{@1uRgcWc9/̇endstream endobj 144 0 obj 4110 endobj 148 0 obj <> stream x]mq.W|r*|ʮ`VQJ,;eW9R-yw$݉"i Ӌ5i; ggxh.}uѣ~gūg_٦WO.܋+L4`EoƟfh3 fәWg⋳W{˳o?ۉmnwNmŋprwV*m_;W* v+N ђ_ugsh-TK^*~ $?߅owo:#4}|lx.,?M5*zwz?]ekF/z7g f0xzpπhvCw'(F6Jnj$.J΄FMemT|BK5΁> XGqb oI#Ki\4l ~gk؍6r Efh|%ɿ$lSHJ(xrN\gMiF{x4ms;SۿS9U?p%BmSXݡk{l~JCr-6'J}o2!Uye}Ļ6JO\[헳{X=-rSݹn:Zg\*^~'zr\TF>FC+'u;o)mW/oH cwKEkMگroIicb>۹YhVmt_Ks_+Mj M߿mk܀^vZQ'Aɣ鈒B 7 nfwi8L͍ooW;^ ۧϯ@ܑ'r8I^|I&ǡ]K \1\V{,L g]·7Jk$*RT߿]&>) @Nj0*s~}N(,]/#U^?8I0ⰿ,OQ#bH."dzq!$^彰m:hSfSdߖm;}x gZoIpiOű`fjgVQPN4ne/^2&r@rNzhxDbҙ>tԶ |<5o].8`;6<⟌YqgFP:kN-ugqjXa ~}{kZJC~ 1ƍG2p؎X[Hz|NL pn+ո\{XڸU6Z<]G׉. _OT,x=_|x!'%t!Gؾ2[|8 {oׅH%EE<MIIKr /0ҕ2PU'*"#T-wvy-2b}^ d'J*u]jft xW wxm2|ԹdnϾ~ uiuNT꣤N:+{TخrAl}YRl%}ad<D1ނ iVӥ25L!PjQ' Pt"Q~0 Ea̶ę0q[j*puG<8:6ڃPFN8F?\܀b`QR.>L`qX2b`*VJ\)B 3͔ɘ8¡DoZkoet43*r̡4# @uK>3moVu3k2k` l yԊ0#d+\FӐh_'6 Lc}^S{gŴ]&zM3QjpO$-gMfaNˏ͎ʞ<ʅ@fѱ[9AtK/" gIHiͼ5xHfgODU Q4E`D>]b'j,&'la<iQLtCDq), ̑>~MA?X-=  2{L,)R%'3@L86Dy$Xv>/ a=z׭kDRd +LKZi,w'# e ?RwS߳uR g~We?<9[tA}Gj0ޤ*,drhcˏቨuvHNHeh[-QdRJqR%\34ٷ3I1KPaTx"S o !qJZ{A4*BhTge Gs|^UቕG"+uĪY s,V $Nq5$d keXqXBbpjjؿk[C} KTDV{\ߔ-,:õ F=Ϙ/d[2/T6nᡢqJ4Ҷoc7dgȢHC1AablSrG$H00'!8b'`.m>[oZ }ήb 2d.2n23\,> 6M V}+qaƶ@Dϕᓼ<4zl}b">#L8]͔p֟GqKu2w(CdL݌lPͅk:v^fq/iVh̞'Id$`Y٘:+ v`~M {h0a8ͬuF@t F1;n-]">OM_9z]8V4}k>?; Zݳ{DBFC%Qo/9*HS'1v`H#ʧ=lk8.?P1_곐+Y\XO3F4kNv%HgtN+;!Rx^CSq>VS$~W81f-=G› ULƉ7ML*y\ǂ0j Yy*IQ 1q CɤTc_MJS˦)lZ%+FzZ;3y[p{Hq%^!ӼruCt L蝲=V) jJ>i&^)Ԅ^aus)}F7+sb6!o!g was8j^B`H %FVr5aX1cKVIinGIFX`AO5V4ۂl?~radF/pp/Di1hs/]7Q?_SD~v>O%FBIdu7*\k86O=a3ݛAT5$ Sk.H=aF$ŧ<Ȑ\*4RneMvYwvQKJcEO,XlC폓Gf !@Ϧ`?=.o%K>"g`n3:O{la]\ڣSUg8DTyCdRKw%L^m5YWsM.xeh{d[qV< MHkyOKaBI9щ+ ,8.?$oQߞĭO6bFM_ |z5_+Abye!XK뱲vu]r\ŚXP=͝/zrԷ޿LO%M u7pCvؑC$C.'qF]endstream endobj 149 0 obj 5721 endobj 155 0 obj <> stream x]ۏGVH+x'>^<ꪾl6$P@Fˢ<{<;6 S՗:~{쐬H,E5U\~RB]Mӗ|.w_}1n/}-*_O_>;v/viivʢڲjU:mѶ㗏ou/tš,L=,FOZopu8Et[Gknxֵ9]PVUOGmaLU[vd?~>mix_NPp9^'uOpm˛ڢF7_έRaFS6nՏ=+Je;˛wWZ)ZՠWEX-rۿcRA7(êB8&131]QiO4OPQNGbmjTGDmmPmܶWn\˭Vv5ϩ53c}uj>۔m9 [b%G;\°m&/ch8USX9b++ .Zuc}z8?(StnMyݓ-YJ]xYi&+E ûlQj;q@Y4~e״ o?- * MU؅ÿU448FhBk4t}e6^ .g(6vZȾkVf< ]:1hUͧ|3g:[58-USgl;ʧd *{An}[gIs6cٛ0aM+jэU|кsD:wgH۲W8֑r2#1ĹhFx&Ii:)-߿ ;WE:r<ʛkW>V`̤ Vrݘ=&^3`̸}$M-酂 o٤8:P.gT;sXm=\]yE1ƣfyHNXɆf.틸 #K/Y6ջuoHd8]/)wD]oM/uSvʜ A%`flL\Oj6I4]4:Ip&&;%5j[I+e[F9DdIvXcJbJ*r|t4|NGf GyP;2+&˩aULc4kA  L )TӖetv uWg~B`.=`?z~02Ð\J;j4/>DoٯWר86ב{Gmn/wG]Xm j;mЯUzx`$pdwFhɭ&TPt2j@>=N:cC2TL B䈠};'EP5w-,7*<IkɎ }0M9P,eho3a A?vcFW+l|cɒ)ަ5h~QIX#~\dr ,E݇Z [''R$D((k܃(g@3bC6lH,I[H8Ufg1D%J 4͐8ńD FIC3y8%O} /;>yLa044 #_U=( 6iZ b/|h:ޚ:oau $!̟B(;I60Day/+vN-cg>DZ ib2 Pz,p'y9,]ybfsK֫ӸDS*18ZaL,b5cxdt[Os5-Ȩ Źe,Mi)UzGYmL&.£0i"u !53FtЈz 8[~e\Z frhp"fۜ[?'{K(/NŤ2` b:Z)5!Vk: k]Gz~MG"ylh )%qg42^U-H(]Ee~(>L{Ȕ5ZVPU]3oeH߆Wd7R nuYfSt!' jВe c}my(WPj6%$fs-Yg s>U*~f_՛ ymu(1:\MKy4UwH&d`y9?mBda1izZ䶄ǕW!/h2hФ슖<J5Ц|rEގ0Ǖ 8s6ă٪;WhZ#m9GYeL/Z[n{#hmc. M;xOIt͢mʐ۵V?]ָq?/ej]` vrpC-vdcҟZD)jm&HÛQ$N[_S~NXL@IXQRvfBr*j͈UUFBԆgc0) L[H5gAgXfR7 R'}g :ǽ!U&o1Mb"Ht&PA4$>0vy݄Fq}\L8J9L'{8b ,eJ 7V~ Y@R>}9r ~jpRB Q F+U+"HߦժK@$ zn3"^&`LUX-.JQF$,!Rc T@8n|&\%<z !C oNVoa!!} ldBNN Ro,)uA`LD gxS43f $(YtÜ8لr'`-erN`%&hիm x'=1(p%@쑴 kQhVUS!3iމ5xA2`@H>7<\]2УpЈǓycik;K D8(gyIlQ!,i dl$$o h~"֦]b̞!, `[M eQVHy%CCݭp kOn6 *TJmJTg*dIçMڌy3&2'M0Fo[aFAn.L5h-/@uc,Ot2e fLA8dsR7,>!&\vK8)vdf $^*0pD]bd]&0;7x$UU  oDUcjݢ?π PO Dאܚ)s߂N)8(qr9pp`\n»٪scD](C6qӳz5 =w5uL'B8Gf$9ysX(۟吩'6iA;:S5 Upޅ0Cvilu-5mcM]*KFZSya؜;"3;a㛀ψX דBam/^p7q.flUJgCӛONѝ_zJT =T#O\4=or~(gAС\ ." g.[W_U )H[<-5uѴܯԻ2~L.k$m0>*A?L4|+xoX?pjq́ u]Sy3@\yReDNr!s:;~Хw9.$f RwKR]wazoկU[|T-Ȏ- p3~ Z=8 M7bI0 E3pB.-fr::~P5%#uSCXr2uŵMs\jDSn`+q%cښVp3b3)^UgTS͛ef5d/ Bj 0(N[E|5f/Z 2]G΢aFLe*NJ}߰`{`D})3KxA<'푶U 7ȏ q !Т}6 TPg3q Ȯm*l2;sQf|Ru0.%gzNu񲣩5g$HuVJ)Nt3"/|&s4mE 3`8;4[NMȸ>E3Ҩl`ww*)9e&?RJ*~'*6 6AfQ=ÜXUUj^kSB?aELPBO@Q;QeB)˝PcptJL/\*,^;'G?9ݥyM\rc+0LO&.U ,60 k79xH,tqʛpge1ҫ7xE+rsy~GyM݋C^kp"bC. qGV\Ѷ"fnE3u mlKFotȺ sFE0\J4rjA]R(6Y)(p Y*0 t {N'19Ew͉ͅ6t#'3I3qfR OuC>:Xr%K ?bcV` +]8C7TgfQ>Dp90"/好y ۂS"R[}äTt{_r|>Œ,ܓ/uq^ LH|՗?BT|r&s2]-x> ܡ`"ΦM꯼6aS8JD-k$ȁ^MKRyCńW.Cл%y>MOt'D%~tWtIKѧo`5)s3}<.N;!n|i$ X78<~S6|+l(O]no+8HV>e'qO-;*Ibv-޻Ѱv7lnepIk? Pendstream endobj 156 0 obj 6289 endobj 160 0 obj <> stream x][7rFd0! r6@s Mym.do vM3JH n2#I4/T7&vWWB />]:.l(]}{*uhɉWk;yzTWmtŮUi[rnwh;|sԆמ|~tWuRtU׮Ӄlk6cXVJHgַZwֵO}s`+#ñ[E^KN/~$_7TԚx4W WfR'kmrwpZ6$']4w?'G_V0 )-Mk x4Za=P1 A0K ܶYjHht[)?R? =16? qYj*]>-;)7x+⣮1Z=UmM󃨌u %/; \#RO&-#;lǾJe|rueu{#o<]~Lit dV~0JQ"sw~5HbLJ lB&jaOQOO5i1 @sTc2רs@ MV<򗹅H'Ki]:;퇀kFk؏6PnV-Y@R]#NU萇jc?oi&]*ݥқTzJCIڡ߾|LnR"T9˃m0xͼW6Nw{ݱl-U_U;i75Ahh!$4fi[T1)N*`ˡb^@K2\\Tt#g9p1 }uȥ61ڝmdh D4n紗"xO-"m8 p*-NnVa[\7]^GƘUIꢭ,ÐyeZ%[yH&-\oNt,/>p%-%I;cHk_% 1PArWws+Of!5'\/<WH׹&r2_.wmawXT+/j5T@ˬnA$)v}dd5Hߥ (W`T!D 뛓= E])VMr l~G7.m#رr 0ۧ{mQ!5 Hda?};:Qhg(;+ѫ~k-&QiJ?%%CuOo8,uNXcIt;) Z!koAV^? RѶFF?Mhwocض>2rk/{VhM/ph؆A칁LVrēdt\ ㅝCOa4VW:-FzΜrlRaYc)@`U\rP (EOtd-ϑfI ,* K_@Ў%j֓v83 v;d%7á`y{ a@lw;ZdR02C\8 ϠƳ1f@`A)bfB]c,"ftQ } lzN. G^< f{'r9#zFhjxM8 ɜ%]3Ҭ)90G 2xuTq^¤k[W@DVИ?,"u ȶEIu?`I[z1¡eH^m6(mٛԛ۔E挮7Afj U$^/gfza]Wu-ui\@7\7xU_xA<ՃyZ T?*r^*XPaw<U@m0?z j1j110M'Si/QZ:A\6Knܱ_@gBn]dOb;mmsQX(j??Zk%]Ef?9%['ﻪil+h< C`*>0 )2GmΏʱ"^H?vFѤe\/GڏOOHjZ-RL10⫝ !¡`XDgIiκXHuwN W-ѴnF%C,q c1+K?0ޓ+{*E+Fd+k8+٭i/^-NP v?}!7vpgzDӎ1I01Gu#beHwf59/dAY0fb0q͌,[c A Џ"!qQr`%gVve#4чe!;;ǀk1ty=g}DZ$ s>ٜ hLZ89(Vb w1H)yª M*ck dcU,ߋ55$ƑńƩ)0Fݎg)R[rZ&?]Qz|u.UI1nNUmL>9W`J0>YgkVQhitkы/uz`2[ind|(?O=q+]$DZĽH%8<ְ|-"] xu-ؐ[FI;.! ʓR2r.D6KB-`f95$Y-+7H1؇PdTRhQ4l<<5QctϜF;j RB=S{J!\k]d'ÚQ?) _JQMpAGp5ȰsyU4ا/@~=/մPUӪ<|dXjT_2Ң)^ިw v?ͺ;Բ-{Dc->3QPvBt oh\XeR{ˍ;fgJW 4֚LFv"v3Mm ޻ \HLYv׭/zmܕcHuՈ.\֤/|;v#:vtku 3WMB>pXaM5ފ/|$ͰU +`-f >>*;mxC&o$"^-$q!,'́)b"+`[weiFi#ۦ\R ܯ '7яz=v~CƭtGۡ-ɮ:bG|hdgc-P>Жlj@R\FxD/"5 Opļ5 fdd-O7C*勀`g ʯf({ !Tuq֓@Ɖq{i~ZSͩEYyI5x(HMN7g){R(>&Uݏ*z;uSt$Oe>`X^ikmYp61!_9\9 ׯb{R w,mP.o<s[ROlK%}g2AؘrO?F ,?<>@Y[586#2cG%@H B59wfϛ?mʑnz鼗j0Ϗɲx6F`60"IlØMJ]ʼnQT ؁q<#H,-|BP2 2f4s,9'x9ʈr,x^ G[=UuZyM}_ۏk&sA4,h –(U2bH|>&56ԒF=XRv֐6&jNPv[lؖL@i&uc0ee|ɣTk~[.O&ƣ!H1rh=lR w)=٥zˈmp}[˙ZuL]/z࠮\[P$)h!ِ([C7Nx|}PB?+<䈠t׬$e(XqҊd$׸|ߏ֫lNum[˭?}dTq"~$G'FӾR " gY F%nÙIcm!T칚↺.489nbHu% 3rzTopK;;0vKH0ŝskq"o}ͨOYIмKJFFxSұ-L )Ε#j3"t W|:x(m|Pz:Iu%Zgd;`NZX#M Բ:7/z1 IL|D(/7+uh&J[6(֧!*UiƧ*GlD' Aa&g}z_RfK2k275fߐ,Q<:Cy i?_$Ccޡe0V䣤(f2<h)0ktk(ʭ5@Q$,CÖ\~}roּendstream endobj 161 0 obj 5912 endobj 165 0 obj <> stream x]]s6v*TTˢ  oa׻q6|Mʛhiiɯ@y.Ad Dpq'mBM۳Ͼn6κǛ OgߝEuhWCcjsqsVƴebcB7.vsl]̸n/:헻ڪRildQZn}/eQ ym[jM=כi׶9YynWZTRmvmTi*-i;t$N4EKE{ʿjC^&u«\&7h-ɦ.Dxah7ٙhڼ^H!lg?kAۛ0[eZ֖ LOa - )ں'g\FLLQI4lq';Qu)j׿/e"֎T]]sr+~Xv֨ݮmʶں߉Bm)H ׈@VibRNȩBKSo;E#+͐NE-ke;ݑ'=vB)\OfA,}gNd#@^_J~#Ji& 5XE<٭VE ,8{B)+䶁n;flܷE?m]Ԫ_Hѧ[Ձ*RV~/-iE]z,˩ƲdTmYRw*}$^LJXt'l,Hx 4OV⚓!ZMLk߄.@@XI%)ŨҴٻ0QЂˊ$FX9r6LIce7'C|O*dU&8O[*}5$L72p=}[%mabw+zde30t!ZH6 jeX9C+cֈ-8{CY5.o}Uلr59ćtW=Hqpt7R)KRsUYǨ͹ut=7S&kwUpSJC+Vdܸ2 z]rh)`Ng3ŲUS2:.F:d1!2y)6q V L-=/2Cz$] ]D_JnPLv_\~FMZ%W5捉ȫh݁YV&XnC8Hf08 il+@De7v0?6+AΥ5DMʪTFodqCUhD[B̄TI龊t2Xv*L Vm/C)"A Jˢ2 #n݈}j~ڶ~ŐUZwY[* { z'PJlFm-OS 襒b{ӭkUv'U=}Z}mJov5XXy,u՘zh[\]?ag?߹[%: +oMtn; 1nCը10G<؊tQ m?E|{R)JY#@} x2<{6k!@b R#[EA FC:} #w0YцQ"fh־% L\AU.MI>"uZLbWi'+9ypp! k= Uf<Fsz_Wvui^NoWзJ^5jFSj 3wj㚌SU/Ng'>B;(Pua"/>1 s^C>qHB8 馣 XEͲ=vg5dؒqV@%?%¯ч^=ee]D&m`.Z53FKR G =`0~AH .9-&g+"č"`DA+vT2+[ՌàdC S#,}ȡ @6$292Âˠ: Uen6kl[\:WD 3+Ύ]g^lf>{Y9K K9LO0.8 T8o33ZĘ H3. +. =Uz09fNZ !BXܤj3TT(Qty0d2KĨC Ȯ kthG?Z>ag;>ZsL1A }H ~BgF$E^ʃW(oQ̺%_u5W(zYY0.}.MX>!1>PCce[U_It#ӠH)g3߻+„^-DŽekd^wOR'gjŬ/1lXى61VRڨ 2紆2%nHNc¤F|MDdX%P΍׸Bq]@g#IMapF4&jy3 zdj%ZDL!$xvp]$ d~th8-( -F҆Fo.5˪P7:ڠױxkE#r5ltSL$f^:3]e%HB1g1b,`4Hֆf<i9,6{KsVeGh# 'nb9L0'Zs,{ Kr{/<8XC3 bQxcGxF.91Xx0S[W\#ܝt왻oA#8l]8LhG4t< 9k:@;Mj$.jzX]oG+|@c}e"!Mոۻ{I(NarAlQ Gi|4k;8qbѷ1Q|@ha" 2||!M'sY9M'6<0lS)G&e,+xpʂ45~N2=6"&?0Dߧ_A:.5Ѫٱ!hg&PEE} w0V?U"ՑE}=I˸+Xb$6J/tJ@ FyZB 7N3 |[Po?̎2?c(]wcZ~: 6[_\6qiNrfƒ@&}$)un|p~2qnғ?s˯V|S4tJYNPʺP?Pߝ51)J.pv/ wbttQRafEœMQ.:xh4vӢ;$EHv^D#:3C Cmžj$۝**mjuߓbU )SKHOϥֵ`;EԟE=֦qe 5;jkDqX&8t:8'-Īϡt0\X;&VC״+SVe|8]i_hQn^+Ì@66=ZsjJ :N#m`,丼s dp7ajk7)f} 6eSq^ŧԵsx8lƓct jZW]̢&wʙ%H/ K@! #n0~I㿑2|f2 El ˞6/x"ɢͧIw~ٝM})'y<60ӉK02aŦ%$y@FC*fʽ a&{%Ѡi`. >3U4d=h!R,{ňo .LZZS$I6w*M0\gUW{0DVOպK-W\}[:9WPk:CZcdC ܿHnk'5}ȵP] p wbUINkJSvBB&15BhZlugH\=KXM|:@AAH>?Vdw-dն.JV,ʟRؖ_bS!J%;".W"b$s x@|[ AEƖ>@}l? -li +E|D +wgbendstream endobj 166 0 obj 6006 endobj 170 0 obj <> stream x]qFMA4-ڢ(.7Dp9I"R,ݝ;Y;?C3ܝtnBKə 7u˃h7W_ʄZ>}ytv𴶛:_.6\׹M*7G/gG<~+㍱Vu[=Ig|w+ojߞ7wۏ:]׆zTNmC_Y[w4K bNUjK[,z TuVk[(+^m¨<׮j:GV-xӳiȣE> Cmw9P5éJ+j~nPkHilW?wJ@w sjBoD;߸ L>Vn+,~+Ch`TCv{\׋\kEJ; UYɤw\c~;byuBù97UcJ=МMFm GΫkH,?KeSUv<$]ַi1 qʧ9453oX{Xe\+dGkxCi/Ն~fYq}lK C@߷#&E?40_4ATn\}SjZq_k= 2Go::vy s-_2j A>4ۡZEPu&UlovqH.s][|y;X~@.[=V&6=^ބ޹ؠC5)5PP܍CO[D u;_5E+罠T< JNxzkut@"n6×@v!RU ,}!{S{>1UT@HsDϫAm(C]͡9Fmm>ѬV$XCm1j h-im&`S)kghZм?? ̰CP&@a_FY0fkʍk+? G{VR"w*~Pڄ.J_X* L*>r#!/ mG?$aů6 GhY@^lTv pJ&?aq`ѫTbhCfXL4M;3/򛒽(hq0@j ;Gt_[ jI'd'f;iaI^>8!m箓 k Fa0eS'J;\ $⾢F[ ߢ#xK~wAAMt6;*wI5Ąa?vfec+,?tH9$W zˤ (.X~Y#E:JU#2,1sԷE9Oi眩(RxMRܑjʴn[9(,`= E&˛\z<{Nj^u|^MN$5-n8Q3.r5"(@7,qNFUNޔ7.9\BTI}(2Fd ֬Rħf>ΥvRnCwKv]:D-!d|TjaerA9Z!FL21*DOzia(p26K*Z-;$ 9cr/M!E%nemV\hD[3(פٟa->WږeԈnYrśCNqJ5 ,Mǃj59"Ƌj*ݑUn.Ng=C'5HY*0LM2z?06Ś]vKWR!'a%䷣@<:5suSzR ZImy[:Y*Fg*o=%+ ~[XeD5[&b:Kw#fo&  ÄSƽ6xX yA'1"ϳ&_IvE \&ӽ}Fpf)џ Qwe'ԅj5ҩM!63Dq¦$TrA1i+Q,G:.4aB+S$ OGQR 06xv $HQUus ten)@xd>rJ Vrt)Ǵ[&FP)2 >ㅸԖCuo'zYփ:ZCCaBi)*A9+r )l/I+$u.خN1e f]D"/&+xWm6Yu3 P>`Ah5Vuhr=fЈ2RFK3}նM1QW]9]Hqoኧ1ڦiCfb@_UF}? 9*&#&Ўef*Otr R"EWd&anqqn)GK=椘@U8тU{8E1"db| 6M%bS4^Q綠[:_ q서q`^k?sfw3 %z2@].${eJdNivi'DN8Ƣ.DCh2훘2* 0x :ԗIyXfꆋG%,[I_Lml#`-KeWʮ2ܦ 's\0Ob"C?gO[&`?3^ز@Nf]8q)vuvyno83ѳq:j;n$[ ™"zM+*G S.O|",b>)|s'zhlz;=Qޔ12ƧoΎrt@ڑvnRosMFN\&{fIdk{*ka# cSQX"'9x^Tҧt a_8ZgFQ@1kȑpU"e{G(M}9;' NA4θ#n1]l {%mnMBԑGxc ?+=i1?b<!|=rb g2&'%kǁ; vǟ;?O')<kYt 'yXRY0llr>FWl3F-~8DlPD V|Ӫp.aJ&QL0תosIҤBU%!R#tTEM>֞rGGy0=Jd+'k k%w!ʷА@2v'p&3dMa$Cu,V cUsN:/4ț6VhM3`:ڼ 4)pZ//?ft]iO`HIȭ[L>>b2{x<W?$*ricBXy!A{A`%9b;E>3+Xv\IKIK"B H 4:KYE[ԑJ1>#ZĀ JtC8Z HemoS󖓇.-)ћypQ;<)풰ز/`t9?YIxhTÚm^'`z 2kpu[9.bvVeB$^$t:c!izl `})>FER5QEȉcI"l2I؋A]YKACVx ҾQ1Y3R'9ӒHW[q f%f<*y}YQPYQ? }.7 9I+,na3:7(eW7A9R!Rm]+Z uc:/_=C+>!Q^%x Mx5*#p-@eCu$0DV<1l}Oj]>gz wД74 ,* dLv(܍:g^-3;q=8x]?Ѕ}3iKY܈dr8s_c/Bpٳ̧bB=4h~.' M4֖ׅPw'&XgΗrȹ-r*.{QP9E`P"9e2Xܹa=@Z_" KMz?,fX|M?cW{:dN×W%_ R*$)s)lw>1S{.lJ*_[cAćSR2: -:X^wk4OtnW왢32M/x M(q2+ܕkOʘ~>u$Kl_bE8} AWL6ybf}L$g ?4/ ^Hd^SyH0ŠlöaUMTHZ~fK"t.唏vʘ=l(a!ݢYW2,PA{.bh9ۓw&Z>sm,@ בEO {yFˬDTzl%e̅s\Aƚ6ᐑp^c W=WI<^` :@a<q=sFi28J (';/C!&8aW+{A3z5& rs 2)fyq:PWGU_ z]Ly,+w~pydj)Py1PdrKڌ:|޹F4Aň$w=tO>~ɚqyy5i.}8lætJG(O4Vck8M!7?9:Aۂw`Do ͫ[mcfg3lṞ&}Ӥo(jU綿iSEl+S& ȩn 0* _}>fN`6?%W J~T _kxHCt 'Aȩ2Dmu+D;M:6Psj}CԌXFp_5y? dx\>aZӡN%ۜ5@mtj{JxR_<;F, w0?Nc GKm.x|$LH띇QaVD4!~a:.Ng wx"$QH)P|W D0V@}AmpW#t7jmJpO01j<A7,RlFImȱ&1 9r * :Jh)f?"+"9Wk k+4eYWKnc᥄bc Ie xa@{r~y AfMzZ <[&3O:{Fc#?$/2$f-a_/'endstream endobj 171 0 obj 6513 endobj 175 0 obj <> stream x]YuF;G>8յfl9Q(< BP#( ?8U]U=A8,ԩŮ^}i{xsG}-ļ8ޝ\0u׌?ݠf]T};yqN~4nO>9:yLJRRtU}'YC+/]+|~8oǭiy7=aӜkE~VPR}u=(-iw*4H~q?_DWMiϟ_OC:iMOZv$O٬~FWwfOΏ>aj mތ^H!jg=A7KZ~|Gևi  e4oNd`nhP)i0TbSّ4M-Zۿ+!oCm*a]>6-R4x*\⣱1znw,ИUՍM7ۺ:iZa~X`6ߐr4UǦ8H0 몕6|"=\H<[aV飰Jdwnœ&)]Eû%6;UaOHƩCwh {w{Tk2ԨCF{UQ+iXWdKi8lwp,e}aڄ;]!IUu ]ٿ17yf?랴V^HYǷfZmX8Nvv庡RƎjSSmujpl6][&v;{!GZuu-MtO|Ǽ`T}C{^4YOݚFK*E݈^onնIJ5g{f,FlμL0L1vJ۵3mOq|Mm> 鵹oH~2C+lݙ[pmٿ8LBڋ1hkڸ3=]w5)B~VUh5]wf1ޒ#tA^^L餎*O(6[NMӾ7B;i7]ivw=RX#5Oj 96;`{&8.I9ZlG0dU']Оɜ BoGv7EF^ݴVj3s?yS+&^g3{Jy1cC lX ~tSzʷd9Bڋ0?tTC/#uХSE'`m6Udt%S)!JMD{MyVU)X'I솒<y̳ q}q1Y[|<2ƈ*S\yWt5R D P=? FyP,36:, ZVDuA"#(,t4p 'EzZcGMʤj#=&m 9f /%pZtM7qF͉9gҢ2Q?J_e<ȆeNx!E" ͏rJJPQLXv62$6$q0wZ5b &*e&yFpDON<5 uX̱{Fy'KDYZ[A;5Ywp3M%FӚ-NM{Wt$&-FǨ'fH' +c f3ƮZCPf3*Ȼ8R\^B0Q(uUHm!~p xE: :MVN/avqQ xoMsA4=P8d,:žOKdk (]Wa eF xN-aiN,1@v \M-% IH{}ƨBVJ281EĆN$b\ccNIΐ=&A`hO1,X="[7"a k.pNW~;ZS՝ R@ؒMT˙)s֎V#UMr35.7dwVX wc/*t`(1`ԍ,Y#vͻi 1eIE+pmz":f2 uU+Y ~|nMCڈ#M:ICi(> W(e]'e1 7D]hhBW;$lׇBT_b(,-x)O-"!0&Wv>ҹu^Shv<*MiG.ٿ 9w;Uu6 2*/9F^` ULsJ0rݠc) oY9:k5+mm%c v|y 7hH#~!sU)/ $ʎBZ5V:d}8]R T_})`0G RB:D YK6@PװBwb5bRS†P'Dy,On,Ow@l#ʐϭ_G#@ 93ddm-2A  dr" DO- pLcTN;c(WT?aYL,Ы(_,:`_GمrL'RC25MM.S=eqSl.Vu%ϻ[Fvq!H_K$.B.Zۤ2?vj!R}6GHj3^GlkYi(܃ҚK S|3_v g\Pgpʇr.1Q8. I-yns>_ny>Yٻ;)([N `2~Woc<>=`f߆T042QJC>V}y^yro`kuS&EؑUZ E{Mhv}.]yXu!( p&ƹ 99)"1(۝1>Z0|K@AYS" 'YfFQ9%vFd.'ё#7QF"CQ'gF,o~ld/"nm:cm?I-k.*܎ЙSC?Ԗ3ntNu%1$5W2OMRΤƈQ37AdtdL{EAvs!8^"B@_f5c!YCϥdrFpvm{MeS<'QF ",91_9{}מGZŗdp~;4 i1>6,}%1#S {ݵX$c^;+r½,겧βʢkc"΁.Tt}f`G@ܓ=ڌKp~ GgkƆcd3{wSbebٷSF*nJ?D]e.u 41zIF3"YteIhk, n8$RfKx LlF MBRԄ0d0\TR=ղ^{ a0-Lc a=RjsIЁQ-mwg(Eʊ#E̫ܢgcf6H}owA> wg,He7~I5}ŝ8 ɷTY ɪA,:AK0ԬGsJZPF`:"e3cOŏr%sG *tԆ_TΣ}*),,?t?DvrKZ#5ۿ٪J l*]_u)YrHÃX![t h:렼W~ 8aE,x Pժ*@o5{Ma*h&<܅/>\ ~$,([I>[&!xF!?*HI[k絖-1 9^nHD˥9J«ԫïBM}44CH 'Βؚ_!C1 k4LAm ¢3V(~Y:; aA֌ɝo/%&Xry/CG+-Av}1Tw缥٭v)TWWUי պ#>X 9pyBtAG6\җbaSmW:7lbSYO>HZɩ[1O ?=}hfg Ho}ۊ ??}P%T?Ч߱e/:Kn)H-+#CuF$ۿggӶB4b/z#0~bL{(C}b#j;;6geZI9f}h6Ztenj-Ov]/V+:Ƿ橙uVmwnv釮Z3%PJ FRizHr> \ \ fs/IBL Zx!bl%COm<ę|7y7G=P.HbUݷ>uE K_2 ycU+~Jؔ푽dp\XQ(#Td%-YOAT'nc2kHWQ\ JmJ)t5K7ޘ[̩PO1QmIc눾J9GwͿAHtC_ƥѿI>4c=C]iDD)ՐF=m]CHX}w!'`YT+ĦOJԣ {y _tvn즳Bmb}Vni^L\G!iWKɤ;_;, *׾t(_ٜ?EP>= E _x6WO?tEqrendstream endobj 176 0 obj 6760 endobj 180 0 obj <> stream x]ݏuG4E'A6O}^#% ر[Dž (x?/wKJ"y((;/F]] ?oφ˻?OϾ9U .ZY],vZc]VZ.>sfc/>;x'jtӨ~pPU]^Yu~eyggFw5c;CWjy8וRic/wW][+_i^e?m5rwЕJv${_l.D RLUִtzz!ԲMj7ʒZڶL`FhE%lEQ3Qjc/rr}ʭmkѹ-]Vn{cwάh_u.&SڨiaCkZ5=w}s ӵ #;2\/²jc7'd9M_t<ۡM,磃Nv>8NߙpL~TM&>)S@R}۰c2 r-t.8]37#۷' )^ Ǥgɀ7ՠɶv,!p+6~'~cH*BTӞQ#|G-W#'^ԲO1:REoD79k0֊>ƴ}'}.g/y7Aikp.QJ4t,Sfoy^rG-U^I, SuO HBItGiN3NjoF)دo 9ܶhޕH݅H .Y uM[ id/ O2S\RUk-0 ބ^hWPlk^Ĥv5d|'~ RCQY(4rhT#k3(y9wȂǰ«0q;Rs2W\gO&yDEêI盚X\iAuK)kYluԲ6X[w= ]c x3݄̒ZX㏂)ݙ`݉s#'ȮwZj.+UbeFgg3@NCä,25V9FWjCяU |{PB?xH+9͓_/7a hqQ0fa':PT(81NuP+쌵@7c Ǐzvjb,< :6*C1eu!h0Ti&!^&N9CdyX"8EΛ=>vJ-1jX^3|խ %ٍ@&&kUw&ծ^m'ug :EKٗk?qCݻȵZ_*޾{k ҭЂblDŽWצ̐vLvT;bI ax7:[w%F/R05t@"InLBj c'MS=@L=p"tR!\@F=jm}UF.ӝF@V'Wnj٦ <{ ~,FH$#T f8<{b]i]]E3sdX#7F3 7(s- 愁|Zcd%ŵliqf۩To=\ > ė@Yt7bT~]*"u ӥP&6e!]hw8 CWߪ0yjĒKV1W䉻d 9/f4tih& ,C& GXZ!FODւܲdct?ع{r?h>|h}51LHF>BP,̀x<>x]JpHQeVlXnlVXëS~Cjz\Xĵ}0pM/By"7,Lb*Xe% ]2ȹebےv;G9/>~$[#`dvG{h*%,Ȗz]$k|1lx:UeE: ?cV!&:? QŴF:crwBF>0IZ}){Re˜VCYu[“v=Rnፖqo&_ ȭ_9o1hI9~w\ rZs|94rMڙm0hYG$s,?YҳR0@ߣX>?FjA`%=f1 wzexk.ot(׀;kXå s&sEF ԥ+!^$2 BnlrΘB@Ry*}%QIw㐇qBз }G)e }2G@$lv?*W$לϪokB%1qK׀*?@]oC1HnlhZ_SzѢ[l^!r c "h3%^'sΧx|  j8=L}S*"cXjUs tzeWjǓ1r-+NU662acIj s5M\hyb,58R^!X[7y [s'ەastP[z0lT˒ C6VLLcT+פtxPZ33A$OxCK"S tL~Aנvj6&G eQ4sW?xJ%ܳ< E=>$OT"ʝ*{a$}-AnA^yc'}T 6B|>*LY%W|r*_mr)\ow}2A}a R_hjb PE̟ث3a>\ ̞J~PX3Nzy-jpAW{ifVZMcu|?uW}@4'fi52JSN黹 jr}$8 Ymf2w͗D~ my-1IC*_UwqRGǨ"lH ʤ,cAka?ͤaU- C2 BS` \H{%Y-4Ќ T(1,PCSS "ږY_Jd?\w7YTp؉ Tx!5i$ P,oF 1 ajh S4WQs&cEYGnbk6\dpr`r,Y%_7$-_$kD>SC!*;,Pj5ڽ+"霳*uvTvRR/-DsUP+ yȂq+5џ#n:0:)c ZEH~ 6!\j7emH`Кpa +AcTbʻ^&CZPECM_^ۢG>R)4llC\OmL2weW乁l\bM鶀Bn#ly9T$;B/Bqn5–kezl(D%p!~Qհ/z;"'x"k1h 6m帠'ѡ ه(guAo2{n#FW&rF `Y^!d7%pE"`cl{E20zWl&'jgmp4tFOԲ4 9-`G::=1.iěTγT(ޒ6b5#U19}E_*u"J\q&[%}%m `kꤍFL-U^냡]Qq}4!@5߰EKwK4!)8qR4dR4`bkYsrfX:E`D"rH%ץ燮dI;M'`ǴbEcnIs 0w8OC}HD 0Oѽ8Cw#uo– uͪLr4]^츈)<Iе%{38!jUez&BtJIR@9_L~87u`LY> stream x=ێ$u@a'?@m[mR`+pD+ij3ٛCɪ"yX3;;ovm#>dӶgÎ77^nwΎ^733;o[~}ۋ^7RFςÇ_N~wC65ƛOipN7Kw3;_=4-SFg -Lg}|:xYHr@`FPLwG0p?wj hiw@to;,4n&JsZ RZNcvd͙96bxLj#qwTr}05-- ;\´Zc߃v27nm.1Owm:I9޷ W;&c=`k.]2K]c{uob~J9`cB5-W KmM{8~ta |mlH&aWl9~w*L_Ҵ&0cHu?aۀ[_t.Ϸ-itSZy/s"VIX0evƽ&{Kڟ%^KKBgN4\ָMrP#|/w_N^c5G(_ڶwP}#Tp[M%xx`ǤcnwMÇq%΀v7P= k7=#AR~ؼ͇|׵9lbz4q}n5OY'`o_WqS_L70 غ~N{IpL!X+R@u@ 9F:܃=sCl:l|~u[hWQ̎c",4L^]ow̟%Pl 8fXHHniZ$8ٴH/{(!JIwM2yѭOJIoaO=_ P=+1&X+I E8tQ0Mr Kc߲R4̆a_jHG7~E.ӓmG_ܗ-" !H9(ɣ䙯aO7]xH,EàI І"-_#7Pzζ;h(^6Rw \zl~ÞL]UЊi zϑw<$xh=?cZ뛟&'ӟ&۷@I9*DJr¢( (0pi'S2,"i9d|@]G h73X0, {n4I#* ͠0%?[P({DeӄRsORHs $EM%Ĉhϱ b !]# ^V|OQ`Cб@lY`  `- n:Qx1wk @gAB1RR_'*WlCxn'9Bi"ji ^< "A>ޖ &8DaB$Q07jS2j*.)Mk΄ح@ӊhkolt; PM۷j@7+"Ɓ wn%~\XÌFֺ{1 r;{@O , VD(aOvU F40|oN =_K`fqdO3j.U+T3=D6H!UU |aɢ0alZ&F2k$ulB q.l)l۪jk.o9wф4s),éI30,\50pt,&"*FБt_dQq_06B66_cm@<ؼC_(6S\&N-\#bǡy6YO[$D+t?xz0!4O<ŀ-IFe{<).D!ܹIRQӑ㋡cQ}/"B0۶.=ѯ,󈅖@HKq\jH&Ucџ(~Wʉn#_&JjsaoL~P nP@Yb1!"`;z% E`ngٛFuCvG8.;\IӀ B#p^H# 6Vr?\WWVocI܂P]!_t̪F 16Q?T]QH6'8N%z ]^)~Dz|>| xL7iITuQX# }oYC}dڅ0,6ksS XrܜL3W,^շd̈́mєԱ փcl1e {W[B(齅Ɛ2h:q(Qy!ˆ]<sn:cF NCM(G&{qaq.굪u"V ,UbؕG;xZVo͢X]Nb!lE:{Ȭq(BrGi>A"{*rM2)ۏE5D 䡨*DKu)*D shYzօdc`J>P *aElHCGa .Xstƀa@&0#[V^,^3E]#yrQ5a@V8 9X֩,Njf[CHu}X(}`oKq&R9(bh L^;cVUjLEzg᢬3(B2Z+,bpp$.W7]A!f<\sC&-č2 .EĄ8ڏ QھQ7'MK rP_SeR*90u.6fW<#Qn4(Sb(osMhol_~q\x tPۚzR)oϗzRwMO[ s_%m/gS]" X. !twfÀc&}jn+9m(FLy |pL,}k Mg?qwFm=4G}2gWUb;J3+61v?tIh~({cLmٹs5gORO0V}6w(쥫6&n+8zcbEOZF*Z ^,P2-v!xy|P %gyEME U9#k aM(*jJlJ%ӎc~UFM]vrF$k1~a2xbh(ŷT-5ISE.(d)T:|$t`:m A? ͸4cDz|^)Iӡm:<yt]$mR1e reW;j uMϢG tC\zy p#rVJLv3:@^$kRؿ{jendstream endobj 186 0 obj 6216 endobj 190 0 obj <> stream x]َyI"yss 5b-$e %9eԈˁqzfZ]"YUEo}S)Օhv˗gn~<xssYWI7<˗O/싽}ZY]}WzYzY;]<>ݴ_]u%;)UsPU]wMez}7^ΛJ3scGnލnkZ_U-tv}&3 f߽E^w=juZ[ FТjDg`~6jT4dPbSh] @;햪+a]>#wc*vx WӸCӃm뮳ƺ;JeaGXkEXVˤ,Gnzpn}#5M](;q T3}!9S{ApJS" ,6H bX  J}۵ty@ɣw(e+kMQ&M3܁vEX"?qK).,lwmp؞6-]_fzsUV;Z7yh]}h}Wס%hw9D@94bul*_fI/-g4_ՍR뒢]ZQWJ"ѹLHcY/ݩa6(eW|zf teڦq^{%y-ƕݒ!.c+tJ T0<}/IYI;u p&Nqm,F&fXm=yo܋? h_ɵ&E:kU“^vဥ0~CWMB*,YEdHYd5q̙ӍeUF#dRY9Z*0PWڸ(]0!@V|f{N(=wيGNf\+8r3H1?_zv9ւ(]BsHEx3?w74S+%1ٜ_9o6b#6 VZ 2:<;WA.|BeV6=+56T#&/&Yaj>6ڝgL'na9BxPw>LG I)%}+P#XQ#1yԵUEQY:([R{MNtp7T4/F4*f9D K80y!R$g4+Bt}ZhӁYODQƳbOG*2)r4o L[?'\;&{$3f CwQ k$r#6t=t9V k$?Nb]FB/Mb]*f0?{I ӍM2v}j_3hN) lmp/f ᴝϜeӲ#ر㓭i38:mշr uC$jj{5p3;FC18eJ"+!L")-"ZRQ ױ?{Ϸ%o yG*o ~˶+LP_¾/k1|ƱDwf,Awtg*ΔחE)Jht{JS4R7qd3I|7 kReXk,\JRjd!l6‚DdGʌrta1&J<]ű|Ґ!/V.(<2AQ@fDsr NFӥubEM3I0"^.&!1]{،x_P 6C0@5mHEZmOz";C9[q NcZ%/tA2G8~8[=NºR̀@C=َHXa`/ PVzD}Td#GvY 4Q@> \Nd;]GMo -HTZ%Ned֐tgnIXE6+zph$6Hȡ2WXD\l+L#/Ø4h;Q6(u=[%pXNOEi$4)4gH у[6GI$!6 .J],ƎƱbS8dޤ"?#L=(45m}K:鲳p)`{ͥAǶ0{[uFL<*RJ6To58>r:D{3Q` B Q$nCd9G:2q3bF_0Ilq IAiƥL=ӥ:ӥm="<,C)5kk,P0Hwըetît[ZA6M,GA:'Pr^CHp =NJe!{6um3!S=4~l!,8!%kug1-_.Wb0b@> ȉ'8GIE2쭔'e}&4!plMpXԏ2agmI}r9VIY:/<@:)fEP_BRt߷zׇ16VnXο .`rpg9ݱ/uHBΆur3cF!$3nՠ](w5 !dYJR$tAiBJAhJx>YSw}9=A94*V$ E6YS X(KIWI((\"a+NdlK3JC4 q <'BJ39]IjlO}i m!~rNm/ k{&mGC¥ x_ 9}df-d06Z/{8f^G iRĔbr&,q"$Rf&dp~z=i!dޅUr<'IN}I`òk$WY%3&Aq,Jrˏsזvz2Y5LxVʨhfrZ.%C*4 W$Қ1[@|&l:L`8dzA>0DdrSCG FrI2A<EԾ@`5e = WhS3ΖwDew<_qPP9'^.GȴV yħdkѣrESڜ o_-/CIJUs̖DB$qL|hc9P 2NKE鉇:@ hYrl4oX)e 'Vt=ʦ(W}^+67x o@mhZǕѯq߆'V%DQͷ0 Z $}T\Bq؋ҸWӶڋ&Yi,O{Ć|o*܊J3Q蹌IPZ)2#YRdع' b-gSpϗDk_7"U(3BA9yls:vMSRDu1*ƶMٖ 󫍒v"3iΝAD@pLH<' N!Wri~xκ}B֚v(K㊉Mb),MЙ8oB #KrJQ+"#.!/ת6XSՎ.4l!u%M ʑ9Jد)y06=wٟêԌ*qQ ŲW'bo=ad\SƋ`s0q_# gGkB㊈h\RVD^hY.8o% ^O(Sdt>3q-F\?f 9E)XK1:_H8eq-VsR+cU TH۟ $uS~Wp8 2!CO|Rf"aM;60j=EH1zVd42k=t+/1AQC^_RRaΈ>}jVL>nZ;mR )m_5}6圤dqتPqig pk$[MPSFٝpE$E[2B:(2y!B NuD$8-zql~ZgeL %hN)zeb/,k e~k? ?OrMQl,&3JCsnN.d8,V+r?qYEdE.!?\rDwiMGϤ2(%]͈mݭG% 2*obb's4;dgk!@*"'^Ke>`e7 (.zRBg(/B-Oo"&֑9r @Z.I2jF8P]WPxMRLyrfMט@9$DHMM()"로aZC~}I0z'8 >0Sn+FgagќL#HdaJ́,=ab*+Wɥ S HQ2֚Rz%6&0R/5|I\a(` g$kޖ+l*.?%d*+;8#yEbզߢu&z0tUqӲ4)C;p$ B^QD*U)(0QV5]a' CBLK5}5WAceb3| NpKu&V[% HmnIVL'DJh o.&9Lf29XR;,y$K:~u]8+O2c \[H5r20ߍ!Rm 0̩K?D"`i`dY*# ~f3BʠfϹuIǁ)e~5Țax=^= ,~||MdZx2UuLbBQ$\s^ t\U e1N%݊]]}p?C8H) e*]|5#)y g,'kO e܁ jcJBeTkhzܣ߽:>EȡC˗O/rJL&!ϻž`afzLVF7.\R/P⮭dW]noGE2+Nз; Ӭ<,םlnA8-7N*v%þom{%}HlVIt\ao4Aek5CFcoВBL79R.gw-Lqؼ;#Kt,>?87m@N`ܖutn2,n>XF?*VVO$.{ }8"=f|*{8 ; /@`E /t ˹`xp(}G =1(+ )uk:{̈́ eG#{ BoDdg+q=DA'* W2? \t<(r<7 k\(9HR: ']ՙ&^EAv(FJ< 7sJ9?w,endstream endobj 191 0 obj 6908 endobj 195 0 obj <> stream x][u~H$tʉJuEjBSօe+BH)r\2v.%V*=@8h|=\ s?mJM|{?l7 7?9^^ӽRpϿ|xjoZoNܫ ?M*fӘ6nvswݞ~vݯJuJvrZ=ɪlw"+%dlov'my3^~mNֵ"5J{E%mobj'ڪ1==K_ꄟᚎ6uU'lmIλaF[vOjŮjazCR0[4}}f h;zgBЏ#aD%E׌D}J}ʍĘZ4_"ә1n+Ol˝f</bX|ohLw>;?;C~ۺ<^DedeGXkEVۗIoH9j+#f{ 3vhqkX*/iŗ'Xwa9/_Ƣşj¯ a󔎦$}?s_af7J49ݝUk֖/uD?<L]jE]i!$j~@P~^;<@soQRNIo";;hէ][K۝RuTއ yЀNhELeh,{ںc7]5T<x%,śvLq}5n:K1i Obl5y n2 7n9%"e@X)KIddoB">0t2Ş HA6yu J$v J||8;ףHT/9OɑvuNnN}DmLKa:uO)tZᛝ.*%gpk+V;]Wk>~X,Tk nRO5a^{fy,ZKwu!4*qh qqrFffB?"݆-w:3^mjuT'mڃ[Xs^w ?r&몮"}$(ԨhguK3Et-L{UiF'ӐO#,_%aVQSB7]#쬨u^/r2ܸsYpb+. O}&$*|_f|ޢMRs6R ;lTmH){Bd <*2jujJ>x=J#eA7w.r97A K(">Kmԕц]34d'Oz?٩yB.錎+gGm鰗9d`s8&hH{/Z%pBY䤙 hu)C`W;It3ve1䱺BVNm\Ri'fuЉktK=Y _nԫ3]LID_NΊRv- f cm"Xb2!OVsh ,QZc턓y 3S͙7HX墯 :h]G#3⛯ƣyy(>ubN&_xC逡lb]5R;gn] a_K#R] y~ !8 = ]LjB 1u σsE(~gt  P=G5{CއW{B3J *nFץQ06 8zk&zsڇl1YP\dYz6Mw8XRG w G tŗy&쯛e,N;>EbJMk(8 MKmN<0aSK27o6 [Le] 6xabnYi:x NC 3C̬GU 3Gqi{$Sエ VTgX;A,!0E-S!j3QEe\KWAhŹ4  [씕PNzNKkQ+'rcD)|PF|017vj>C "f ϕk#%YUgyՁ&qx£_b2M90鬁_-`.TjSnKfYtÝKl>7hqiyH]!Q)gRi-{9lzwO; g{(KZX{7c\?MqGba` N:;Uq>grPl)]ɹ-e٠'92v&,`0 c,G. e]& F]T'qQ~Jo@|lʆbv73T>!Z%=A@, $s\Ąuu004KecmXEX2H*>RL[Z>eCfQxعIKaB?zYobIL7q7"C.Fas]ط8m$G/:E8"@s8uzt1HyyZgY楘HՊ_+ԇ|Sʝ:B+/n pkHg?Iyd鶔ztUҫ#7|6*:[NZFwH z"nI:]t?xZ}/~-ҶB4vN:/C>}F3? A(X> C[ }\f"3 y q:- Arn梳E"Q,~VӧMK]J1GU`͇6;Őedy9@sViu%bk[՗I2w);?'YQۿӥ+zb~)i{[_nsk˄s9JZ&~SmZ독{@z,ҳ;?9wI!GU` g<=0|":NO׍&!.HSn)Y)P`$4bcQA 5935[]g8@>|&.h;q8) Ԣ>]>鯐aL1){|P"Y`qY<t |iWxf3.`2eA8O^&$?I0h$N~Za)OՄ5=?0oYqsFl#c\aMGZ'^?H3gS? .fb_`tR0 :2wm*>!;u62T_}j٥UU|Zϑ[і;{)F90S+¹ 2KI$(fqK.oPPhrlfy&]e^#^v0O±xwfNݑ?G<.Cl}Zc``z(R%}+8N:EcΫ'gmXg^Hco|x k>Mӊ0ua1˲pqC &aQ49AC fK'v34ԗd=UEuAݴIHNZZr7Y.W0hu>&;UOi!%&1e{fA\da>-ТLn-fZ3ΊUJ$[KϱàG o*̹31UUfNAj VܹlPc"w`ʧ7Шs%`񍹱~p%`H< в<͟"%&*U h~jAQ&k !=DSAK]%4B͊̀=W9/x 52 (Po؈+"Ah6 ĄGBw>m+]Ga ak2-oܪXmΚcXFs@G?߽"l׃3> stream x=ˎ$7r0?|Viթ#3I-k_R>hPUOwLƆLA2"ɬ.YL2Hߴ O67oOǛ97ܜD5`36O[9>iU;tlEimQjsdٝDi~}r_F(!}M۪m;G׸uWSU}ڝf$i_x ]tLp؝FV 0-O??wlhp__ܸq笏iSpN5K>o;c~chg'neug -Lg2CxxYHruA=A0c g Hn?3XbXHe5 Q:wԮa؅9S3~W}h~2&c]gvUvr7}wh2Ǻ۱U@370VaЎCqomwj;6=陵OpcfOa߽2%."87;fnyM"]݀{ qϛvN[ʝУ M|5|<$ PaY%u+kWy6;w@¯tP,ʦWض+ 4T6}x&dvVdNICA{crܰ3߄ӹ|~'.D{_Xӵ`o{;מB6,@ݙ,!F0ţL& c1 X9o ym{^%riAѴh7Ys&޲g8C୰ 0,>]4yɒ9i 00X/{EhK@}86Q%[T)>dn(٭eAUgf6 rKo[-%1vRƣOTHH95ǀ2"r#wa<2n,CN'NGJ G T&B wlgS r>^񕇑=J0lm3 ^X.f/uEnA\ W3ǁq3 4:0H T^ xE/!rn} F)m@ 8w(1N*v2l=d*"מ  6ƹF"|3+;z$৘iE@VO0R>iWFk$..3+#ƝJA sd'Wq遼{j/r etjhf֙?G v!l4,wbry#ԟ5A~v5SopaGvø7?2;buQx$h!AmtW~0$]t}&NJ/nB'A%)G<A{b挈gB"LC=6| :ArhBv9XPYpz3a/%=4v{t*9Ŗy2cby,\qȂgaHPКYz,Hܡğ{q[CqS6U0 #HVȟ %, xmD\hcXY9$xDUwN"+6Feҩ)1s%;ٸ, L?=Te8@эd2$}'}JS dvrUDn-sHY  3Ax q WQz ӱiK% 80Ta2 =QIuL ČO^ղÌݡ:VT{LFKN!(lK?.LtUݬx͵8g*Pcega,ѴQ{&a98# ,c!7\A*փRCG ƽƥC `=wK D=mC3؁2הOpZ PHeJ!15 ^aGbJ(gM|>S3[H_ pNlXy|&bDu[wu[o=[z[Oȳ=kxv&YN|8s @*B *\%փ ȁct$kwO.q>&RD_cfT9c2nW2-n ]j{L PS+!4`4+Ln&BG;*<5S3uV۹OŵI';@G;X[A5,Rj`6@NM_OhC>/3#(ن5L D̃^4'1nd!er.׏Svvp{N٦Df:f3̈IQ$Ԥbɢ6 IBbx3(+Of7{]}<'<^{M<nj0؞0V2ϳ Cd(5zE`7g(,MXu`B&pVs3 t_"c~'a@~}BZ V ѧ?M?CL1x^#<.۴h6GTJ!xF?͋ K;GaxWȂZ .D~f3g{\*E:XErlYuv~8935UV.4&NK4dr$LY2#qYCl >e(zGzgd!)t|+x$TQW9TWIJj'T(P -$tK.=ɫ AN .g[f. JI-; >,S189ݧMwJTȄ"Z+ܛpCË, P OE#_4z Z6?Q̔:/mjF|#8z݃Y!wjևYͰ.RmxQ{1HAzj B̴g`$7Cik'^)>Sp #1YAO}u$$ߞ8`K@p?^44Bp168w0naDѺV[yՂ6 Nњ6K$Z%663fLNf$QSx]b3D`@GDViauUۅrEԲ- b5W|c+w,Fh_C] R(z"8T|)*@Q0đ9u.a9$ޢKRG`]V3mQJ@pS-F;e33IOKɵm ϐ( U}c{fP2[y[+o{d@C`f\I-ʇ1Z 1)BౡnneE=fGhlx!UigU*t)F0B9hLև[$Ic0hNA=ylW}RaܨuM!W֋mUCkKx#s`IxG>7)ى? WCމj#ƹ_̍>V~jVӅ B'Q9[csK TyLOPQցN| r$w喼7FK{U@!+$C"]sL{濸+0U5 d5"QDL )nW4TօE1%"!rA`[K|_DK>/@GK%:+7Wzk3uj *jlG`aP]73VM GV`ϝ:+$F-:ӸB#JHM[c&W y|xh+Qk#H 7vKޛ*DRqᬒ:gˢA6d.+\KƩ~g͞˄/ͩV?:pAnF0#? t 3Bo*k~fTEFzK1Q(g1]| Zl*_L>X5זOIF6hBA_5y+cjD/*,s E|ɔ-in}IS*z%Pk~ZwäIGKF4bLqqRs+v֐'X3'iyNΣWY)Wvl0Oa\Ԇ)ìd*J85Bjy9Vo/!>>h/ eGӃ <f=$:z5d;[ؘx/}c z뗾FNK*0?Xq@n ӂmԏ߈Ҟڴ>^ZOvf0?6k ~No OOV#56(Oh1:+_$20'f7O&uF#мòVs6bUڡ sP_CMy^n0g)9'J{c xrwT3[f܀DN$pTI-q[4MT\\c\ZGBF] \&(F\PE u{:))6DǢCiR ^ZzFUޟtka0Cʊ /ݍ-ЈbO L cVMO[$V=3ufHlUjp&[/#H yjT"N${$*Rn+)QUbp;ؔxVVDqLf 0cUv7΅qr5> O؄ ]Jә>?#d;Pn \Gh=j~qF9Xv4%$VY@FjʈUG ?.z !|<>ZM+DMA:@\ 3V9BB JL2c5r[KVyBRn.~a1*"+k0=X->SM[ LpH"ŁIWetˎS[.1l _ e2LZ@oN/cendstream endobj 201 0 obj 6603 endobj 205 0 obj <> stream x]You~ID ` y} rctUWo30N'8MP$(C:M]->з>u,ݮ,ޕon~WGW}+*ow8jivEwe[?]_u׻.nw~w8Q=O}(*o(ˮU.bn4NxCWtֶt}Wohţ'8E+-{5`73[nxح6- 2jUh5G2p?7D5&"vDdo,n&u]ƍ?7Q]SօoiU_QnφLכߡCmwf7}-ꠊJZv%Vi}TmQ}8^W0_tY41v`?[;6A{=\$.vۃ>Zx[z|pĦ(u="gh&R˾Zt@4y6?ﰪڊ?鎒x5zxF~+`ޱI~ˊ?ft;?a>v 8 f|n=;hv%ǰl/mewu[·|ڷ/>\1105掚O͟P5|A3j^S95}7:.q2c8bltee]PN'}8 U~`|eَ)kVZVk8`4nx+v3cPֶUMB7\QǗtԱAzPAnve9ϘwAC.{Ñ#jz>u6k iŭjc^Eް[Y{wP7(%ww$qaC<;)uήҕśaN'&ߚjSJM]dS =8;h >ҍ%5͆?)ܴH]ƚϸ.5Xwu]:8DY czھO8޳5kl~E1X9E{X>OXү),{U]_`=ow9oV ,I2?u(Rȕx: s%.ǻ`͞5oQ;k'ޏwmH$|cD<;,7x+j9m5#U Mi!Czٓ ^e bd@,st=5uϛ!P7NWm_ 0:&NX9mn ω2pIWϼ.e"Ч$<,(^K.X 7<f#7K2B#-#T8\ }:;ߠaiKlMLq?ox'Ùj醛tcƧHD)@1Jpdkh5V7fx̌ o\okOdAʬ(mF,Ͱg  _|gLxB/iVYWgXkMmU91[Օغh'{e{E:`eLB`3u9"|l! tNjg#+^3s͍Ĩîb_]gp?!kQʽ(ċL)d9|A7gPvt0LrAF`3zZIZ{xkRDAt^]LU.ěsL 5Rp^#HkZܒE#®L l'$##9 \9b )~J0̑aIWBd5yHE/hW>|00Re3{D@ cVthuOWYf&ft"Rwd&inc&ttċ`j޸`,-|?r<#SwS c&lu dž[ŀ~gݰI'1~sߥ/u"[6TP"4?R5֐j7ߨ3]~&0V]ٕȈȂʦTMhg` pt]t%&)FUB &fqR?"&4(܃ 2P.@%1W3񬑁O@ό-t3F&^hqkK\NdJFouیv?zKQCu:7т"ԛ&.߫d3 u>$MV* LtE}"3¨4@*ɦ,DBPC=fHҟ'ME?HtMI+sש +ys}]vp &"~dwH=Oh\F#^Wh:ɦQ Ͱ !(A7U ]a]?r(^.'BbZ xQ뽧Kݹ}k 4$_7<I Q!:y ZDMs^0V%U1=Um(2YuFx̺i|<汙‡uLESEqE[.}wi752*=*Pr":G-G^8B%-@Ϛ3&D60 g@:h{f"S O0J]2!zʸTX0j+C _ dTtSnb=.8FBwHQG2u-ўSi^d>C{*^#DpH o@F{q,9 (oyB\B@ E*,p };U|űuJG~o'X)2S<1ϙ=W7]Oa"עD[v<@-^V,'T_ *{v6?tM cYX M""yl"#6G=VpY4>0o x6V-wʤL%&]*¼Jl\Zt| aX`1Eˢm&{.$@e7)hw hFK/1*STV vD )8[-a5E߶5e qn os`Id-e-A,A/ֈ->0&^m'?R[xAfn>_TUX~M/Y8#['8FztM$5QU6elaL}ݘ! ܴMm@h@We`|E 'hɯh;Ua%#,80zm@: 'WoXT];` q[<}h)8Xs^(t' 12"/wYc͇tG )kK̟ϰcp3:8rh$|Lf}w8Kc7fٮ<0d#C">F闺n7Ѝ5P.xOwmC|PX: 8tVq`5{`EJ`;:0x\Bd1љ3|btFPOlF^ZN\>>ٓd2p[z*~m/r$ $.;y*QsLHpLQ( U; wrieDlL #TƜkЖ AQC\"@UEn4Y[_+NbA.uLNH*!xM!8SɅYW=R>9ˡ L^ 09Qn0G8'!=wĦXq;HRljm\ĝN‘ݹJ=E0QMYe<`ƘfpR6|;[ ]i#^硕`T]/M2$hB~2D&]Mʔ"dޚm t??u=)bhr8]B|!Uo bZ_w婴 a>3oۃrgnUͰG'nF;Qs_sղĶ,Mgzvz߸j{an.s7J);[wg4UN=vz;W o}HX;VmMq!桊 B> VSH>= d򦀉H0`7`cӅ K1B8BH% %M2T4lRm_#ki$&X:D Ǫ~0Ջ*bf9I bUO! c,p+ѽs#-s~VUʡxlJ2GJ(_ !l'›呐j!ooS%-g\G1'.~'9pOD֊0jUTk yh)4>TŢI*@-\Kv4&UQ_{k`aYJ)-9,-ےG+@ F '`qpHU 8QkmH*>P$}1*hIV*&Kn .^63 CBa3(Ø}|8nQfBNV$!qX+@[)9-Ѷi躮@\6c=mHa#=AWi%dNErTѻ'nx!g`jۏQ׈;B6Tm]‰ָ'5 Zm I^8ٲdO#ܾl/¬ՙ9~6(m S7θּ-hA#pPޔx` k\#.$rbLWX=l#uiP]pC 9):l ʖXIiwQ HTxB##DD]z5BJئP}Oz%*WC["}m+ r%/n5M"ƣTݿVÏRp/JPF3H G9;@r JPR%[DQÕ{S>|z2p_K :Sמ?1AOP--7:+|3m9RߧEѳ|  -a(>}UxVV /t h'&H) r%k*R-Ԝ6,sW\K0%֭`=2UhW빓-(|mce@ea0CPVf{_dv&БS*04o3AA *?7}%uJN%`-yp.@qvF˰o7 ~re[ɛ䯏8RqRN!3Ff# ܆$Se?.&"+mPc_' Yl<UӀ9kD 001#v+f̱i|@8؅9ax j JNT|b> stream x]Y7v~ȂD,0O}˽wUl 0#{LOyIq[ZUEZZ-I Qgvu%pjw_<|,<R@g;ֻuunMu2]gvݝ~`;σw{ŃӟPW*ڶb<Ȫ OBDVJHo'kvv~ :?sɺV2BI?;JS[v65H~ ?_D[5ִ/¯Tm,<:a&w[YeJ}on݅ /0ںu~zo]U ڼBrTxւoһq˶Gc#na #*)l3 p sFDJIO4_ 7ʏĘZ4PWGD?TS kJaߥEpiݾ`ܪj~߇~ZαLckAJv#Va՝LZ~CpT[5:b'aAU#:ݑ"=\:1>$Ks>Y-ҧi`8߃_oA)zKOfKޔ;~/SQ'1oay*>[u*>=KTHW3O(!P#t\?LJ; -8ӱ@pDg"kkj[9di}4uv;4"1K;iibqƕ '*6;jԶJ4x~/R"OSI*>uIqO`]5l/SQb܄1L:b"^ӲEXzK],}=FK0WZ 8[kWL- EʌeF%0cD[dH7Ҩ A$C ЊGnb+QƈvYn*ӝ;D[9Eг̓zZ@3c#s{\w G Zi"p3GD؉;"8+ޜ0r#e^D!)];aiMc`ZOA>lɌgbDLgѦOKnb h'Z%UfѢY2l~.;oT@k? QIL`D A^HiJVVKWAK m,W^7 ,I`ņP7G%/C r RN%3pHCNLZۧ$$’Nus d8]PXxnPJFj9W^~Lx+3Ayx[MqO(EM10:mJdR񑭵)'i#E]."ٻ b[0USU]Ec;n8 <3s6{wGm N]hѴix'.rN1m]n@xpF֝{~Z/jv¨ArKJ91 qWD)״'⋯/w5MENg0F^V~a@U$& $d٪njJR2Q/Q:`-]9̒yL, g%wS)ShVH-r"P B#qzU#QRj Qs0AvDN|]9a DQeX*d tJ: rDqĦ:+MH1y7vJnE-=2 176J.k0+ASGphf̑%$/&r : u'65q<:HsUoaʭqek Bg>A} `Ԉ A0 ` ]Vl07NӍ*WYo9YD9-n30K],9 ~}:t{ 2֙ygzzPμH2aU#MfɄ9FI%M"Q6a]O~]lzD,$CEո_fqaCߏ#΂*+oؓ6tS D$ny l5e]*Cg1(#,,. */BAL) Ν"yR;}/\o@hol#!Cx֭R06IIM;4$OGKk!pu6"tFtkgdsWK!}rK D;\wnt~FIjNSV̮/OqJXN{s/X̰8Uڢ-|"%'n6dzZWp rN'iw[.Hs( ׄ7c-.@1TDrTȣeBFF5{.cb]tݟ=^Fz94plmSiПV:/9QT|TL'p,' ueC+ +fx֛[l,:Vxu_sS}I%޼kDrkŠ hy>dBЉ>C"riOa-1bo=4޳Ƕ ˿D؋]j|xƔ!S+M zMڵ(sLF"mMTnu1[bp~*/H@+rq'NwN a9q [m^fN91$?3AIt ؄W.ㅁ,I*MMhXJo@\TI'%^]X\Sr1EXdHإ8rq OT|y{x& ^рs6.k1f b'C)73ۆ#[蓼r}z8}I@k1Ok| RaVCeJ9ֶ7a\PIGpLNd݉4U=;`;?[7okjeq(j6T?ԦPZm@B7ڗVu_cܶlH-<1~'Wj:6!탃E%ǵB|"@]{iwRᚻӹNxrL?-|tK;L*-"Lw>;LdLuw[COKd<܊ 'y.Q>d[,\ Ѷ^~F6SW*`a5!3*$XNGBY{ʺ*L0|lhC?MfJ.gF,-U "#D:l{4Da’<$dN.9,tMweo Dl{iùFےRSiΑxc$`nQlO ͒;e@7R)022](B,|͑,D'Ĝ$M$VU)8Ƅa-եIlqxk>'7̍e[Hҹ$3/҅lZ[$%T.஡foaaۦ &.3 ø`7IY [ܟc+CԻV]BH&_=;c%tmɾ M5tQ&"3oȟp kܵ>%޹э-p -&֬],;/tS{6 [#*[Ir]uӕ^e$g)'N0Efy] 3  6K9mu61L=Vdę{ApڲyNAt60Gd`߳wڶD~I p4"5(:-{n'noŵ9,g ʼnpw]e  #%y[m۪ gOCkgضc.He> kGOyLU1g[69 Mj$ >!_Fyc 8qH3O+D HeU(i~nr?'oQ3z=2o`ަ q1Yi˰''L;3.vdW֔cG#0 l\@D'j{T2n*rGnzN-36BkSj|!jBct!i 088Jdprx]IK k@сnw'H > stream x]Y7v~ȂD$Aܗ 5ŭ 8 /iwO.UwukŮW{kLu'/w'}Իn|Ͼq+)냮kxU7rÉ]=49Y׊TF(gҺ閴: _oSkc6|nV'4tݡ:ekK?u",h֮GW0 )X-Lge|2yy|Gۥc%~a #*)fH&RΈFh ;ʍĘZ4_GKD3]cPM%+'N 6/bXdhLw]Umoo[w]ATjAJv%VaսLZᨶ2oq8^* 糃F6v#}Kz8]vMicxH|J}/h_V鳸Jdw^&)]E ûM(Sx +xD#ZmE&RXE<9VE Wq/b o Ki8. lwmf4ԪNZrZjY[nvTUG|nӶNiwUzk(]P=4ԓw՞?[ʥ=eg[V`{s6~_M҉uEFT`N><|EZx~힒gӿuHp D;| myHW"e5<@eOSKjj2xseHLZ@m&{9y-fZr團\ `pz&=Qv'49L,NcR<|>-WyFD9 0BT `6tdXYP`T)+Of᤯Z#"5 iBzɼ)&z^d2cciq+čx>rlFi!b8ٿD+p0C>ci8nNOa`I!$v9Vj :8 ))F&$QfHURL`dfE$9M+K?5cX%ʌQ'=Ԡ@$ LsG[8I;oN,j5" j)6ӈǁqyIn~,G"I*e$HN#'o F~W2I@0eԭRIMQ/ҸE,$L{Uע([0p?.?> Hy5~e>"AEO2 V!Y,cUF<BiڳgWzA4 z%GxF%n`'dgH"3w"co\]8r52>^@QlMʕTNV5 ]vke1s1>}ȌpPbkzWPZ(|&cUݮi LHKSwk0|)꒫<#뼏%3iT5j^P1]WIgWˉwIpahaz^ǣc%unPgG;g(.z(lR9wt gLWWJ 34vaKM}׀/ÔW#U|er"bљ9C!ϗM?NȲLݙI9:͸QAU;X԰210/q &JJ:D }Ťe>YQ Z|9yy5=ǜOrim&g+ilVDq^iP៞'p̲4Qdcc"ߙ.b]2ĒB4MO1Kֹlomx" !EYD"I徇GGj6@n{ɏn]J7:Br7~=fO+S(-O=eE ;1mD}?iDJBmq4wed’-Pi;=  :(6$^GθKz)μEٵ4~Ι! S~1l~s_5sŭq9A h{̸3}+P}YM#mZ6KHЊ]4!7P>t$fi}IZf~ύ%C@ `*Jcm] Ikۈs@ iT5̃NnCXնeU84JD)DUKr` *mM'xDs\ی/q Tj"%Sć<3:׉-MNPL~8e0.ȨR v^ QCWuD48vA뵁Af(%,)ӑ@-nP\'PMuy VBo"F@=eɽqAupW5B}<ײuxHeLLuO#&.ڽ"W!{Zy BiJ 硴>yޯP:b[#U,~ +.PT8gvI /a_"9w͊ԭJERycyG Qp7`[9r~]cBN(rS5:S9FziB `W]Ơ_uVK|KIгaIUjv:2J,4gQz -g%k ))qfk\x6()GL8)Y.~(g$*+IBLw(݀p6]FOJ__ymB/^.̼71 @ꚰlSe =ߖ#ݥڐ7ᆁ%3Ÿ~F)rB 75(,F;gàB S"S%k&@5v~&09U:\iVmaъf(ȕnVPɤ\D)! t2ȕʘG몶'FgnǮM@׌}j\ۘVwًH`eW?IМT^Qԃ&ď#u:LPi\<(YSRUEN {vu ((s6Q'Pˢ@u}Qwˍx&H~Vԕ;ׂpA41+D"aX-;ጽ&2{4 "yϲ#LIz7I1?X{*Gq?od.0d > :WA& `*quTc9; E˖ɢ\tGNQx^ F2D;)\ rA]^:Ġ~Oxox06 ʟDK{JbhkD?O^keɷ![lI:}ckp4.Ů^u;m+?qI^6?w3Fi GhpEv}~:M7GAza.sӘ5%itt[GVF]$T3`U%ab(Ęʑ xKW<){BTwlj2Xqeh,*s[Y@^·LSiS|i8Z QD9sC0ٙsW4 B֗ ~ܔpi:vLDtl"qGoMׇQd hcF)UDL"B\KrǼױl ۔(- 1xQ#PU4cEPWZ.HTmL>&հb}84YL24mPg ]|,o] fc<.Be&1M?ր2~K_ .F|NJ(oO4e/?ˠ7R3Cz ZeG} QE1yO PHhӃo5ɬN]HWáˆ^[8[W!6M X'0ǂ%͛\kiYz,:J!pg:-9[? @ Xler \.vޞPwJ?8lt&$,kXYlsoL-uk97zyL*RM6/B%="[td<}1p#mB2_n6Ʀn{ -lɿ]Y#dvkSU$9;xh_Iľ˂b Zi$dO īxwT.!ˈ]RA{0=~/9X剧Ar:Hbb;k\/WlHܳşij!|ћST//_o/&-k36D"wE d-,\`nZC^o/zf[s_/F@HzW<_"SK,zUXEXm'̐eýƊ5YklТh*1J+19x<\^Vb}F6i<+Y {ͭrq| Z+twje2CqvE!P5!ig5zfl9O1܀J}Ŧst^ٮ65i+MK' ubJ]U`<{ )2`w 6[tJ 1!Hu߹*mb 5F$ty>!36Im;HmTmtI; f3zGO,U ѩv5cd\JIϑb]Txp w+֘;Uy[FC*"O4ǦgFu_ja I(Su IȨ2triB^8㡼$k{Fo.@KdgcZuB$(w0+'%6h 4DhUޕ["OD~i5*PHs "M E/$ NSo#;oËaQE= K YnQJ3".i7E+-j˽)';u/gu(4% HbD^b=K0"X _ꊠ}|KIkR$" ˛1l`+r3ܯ\r*` a 'D_Y^mG1LxINO$gi$5C6RgHb>vp{l6ehYhWk ?uasܐ6a|VSדd4?U-OT*./%ByW=2R7&pS\Zftc%SJm7q`>2e?#OӋuѯ@6J\fT`3J${MI5#Jۉp(Lna<FkHO XJ#9Iw*`0Ob^K. -Bi=1b꼅FNkR0 (֒RV\/q/ZiT/̳vN{c/!h0R5տA羷i IL-n,-k> Y{l͵v̺,vP|L>WP+ N0MiUmoD=  5zV*/C(iB|a&F`Mڭ*;5(tƲ|b -'wAkw$>*9k?hԦPum@8b(e7ݜ> stream x]%7Z mX$:Vp:C`YVN 392sMBğrwUnϙY媟e+QKOh]<~֮^W~=6^||jaOYhm\u]gW[^W:?Ӄ÷?XvZv2mk&4CEQ5j@OsjxֹnKN ɯR+>66Ft KbU%ۺБ_8 @uUjjZK/VֿZHY=P/ :fk4r|o TZn%ZI bnPjDhLWk{ %0Sb?4:Ieװ)ia_棾3:37QY઱fw0n+>Ǿ.*Y IZ ;,bgڪY@SyRnTc`8=ᤒm|HXsq$.\"󲒠MiL&An9Ju-?ozLnW.֭)|C`HC_:؁g/ M?3,.v (vmXU㚺1z{O*WOu獩tĠSUW тv eҵ)X@mIwOKX{O0q0]W~[Zi-:vHgLHE|Hx@Wt,)w \VMb[|@i%sN;ygEC}<*3dF[c`פ?@iEw㗰+D:}$'y5J@G)ٰC_>D'H(;|Lc+7CPLp$CHBD(cW'2q\R0EEgQL¸zVxFY%dDd br`Oc[$7_VsnXM%H`Vy>ɘ%#e ok@ؖ (CBP_DD# #. .̗, drGewJr/92LQƩ 0=qm ]c{/3jmkQv.pqJu Pm{kU|uzhF#>`oN2BNxg!E` Z #{5x:u;_4! >Լz΀r g>0o%F 19yHfs~Q)B&v@Ѣu~M &20eϖ >"y qvZ=BTD5Y圲Y2(I@^6=naS9x9{'%J%zC)#jt!gR *G3V)@_]Ȑ۬7>![gw39;bXx{a´"K?F֝l.n]&yַݙ vZcYނӽ4QNqbwII,;X(bï$-`Z8sz3:™rzpJ. O&PrKaƠNE/"OO±hL9_-S !Rt-W q9[Vl|H(zGy&8AfRۯzMm ^.o|}۲W͸L<;;= 33Mޜ:hLA8 qxϣ"!Ndщ7k2d!S-&C{~H令-[oGs)/Nd 'ŸbNN6޴A-M* `49 QJkFƝw&S%]9~|U8ġk.r^$\#! QrUY e!e R&-ctVT ĚV*ֵlt׬OD{}i o۾Syo c`Snݸ+Vn2IV%]S -̪\dwj3&mg9(oXEp&M.A! -2,%e#I" =&(Vw?츇_ Qmt H*Z$ h,hm+L{r0ɵCVH|˯ I@s%V_PIaO7@ :.@y $rz,7.Wjag[DyQ uP&͈2aЁW4"E*Ի+kY7?-osϳw;Ej# (42ǩ5Wsf oɖLp%,>F"Ĩ쎰QRO(tz Id >]c1jsLbγ)hL\T/%Y=d֛(?lY,bb>BHۤHf1%%,g EC$rFp윳JHƬi.T*F3*~YR.Y,E7IsȖyRCb$Bä̂2)̩@_Ѫ3/4$ qA-6!Lf\T< L(!N+9 6fepr(ս4u[':6_Ultl&\}T?1~2VuЊd[2~>ВC74yW| ?g;#͟B)ǰmg;zʌ5`[PdR\.yM6Oا,o>gye_e6%6ʾe~`" VWhY<$ m%~FuB?O=O+.F.Wu[`i-BT/*oP\~LvHy~| aMt.l::u|$. 6gکMP·'(?b6]F~ gYվ_gm#o|~6 |èQO:'Ntf5_Uh3BSםwB㉅tKt5i?-Ay;nGӴ[vB%~!pm__PL} ^'@JrTh!xia a[7]|D\@Y)d,UlIe$Kh/ab}.כ'OǒTRCWI\ $2z!/(t K$7 @*h BuYTcIo*i&Y,?,"iAnFCYIPR$lΐ`b xbjӒC~rZByv*vgs(O9O1]o.VvW/uź-ևf( xv.V,wյS1Z@"tJѱIOS6^7?hFDA{+O8.O9d D 9 KclL_YO,ydx$'G ,sg.Q3Q)̧r&{X\#k&gp.ެ/S+sJLMR޼T2{nQ@!78~¿V\^)=i/ LkݵMosr83O(ӛCm4tH/2GX6z%7 NjXE}[ *Bx ϟR||JiUªO|1p7bW !:#*Jx Z0|ʫB?VFZjdcb0wh;xYtDI_P'J(brJ?|0Pנ?u5^ !q T4sD}:%K>-)DL>l 97hM'!; 0Krh,}k -1|wDؼ>@3%Fͮ{l\&˥dkx«!XGߦ!p{ͽmp5TX&wP9g̲MH,/6{ㆳqϕK쮼iR1ϥ{%:vAkkX ha;-M;2<.z^w?Kn4,>PG@x^@gj%,TϬw>2y3TH.z;@ S8sR lYF/3RRʗZ)D;CzkN܁Y+u-ӵkendstream endobj 223 0 obj 4880 endobj 227 0 obj <> stream x[sܶf<޸%]EA6Nwu.;ȺX$;^Gb$Gtlpb,&q$$v*Ó_OYO.'G30N(ϳg1ɓH繞:ʲ r0,I nBqfDp(S,+MES%Bfi Y~,Xv26L#-pEJyoW0Qc;?~=i%qVw9:C024Y /&6VyGйFVz!`eT53_S-XkTh-򵄄 -")t-PQyHס%8DXnʂHg:KUGš=֞ZΙ:xK&\`\| (VJr}MeVϞE("fbGXŊskL&Nb"-4G8d.!PQ*Se7yaE(T[c?GKIK`PXoZJV_|E( Dfq}uc$bM8+ ;{-]+7δ=}og A|)#U/¾wD^u`́.Jů|@ < 38auKf)AC+VP?guNXf`eWh,1?m~ZA1v2b(Ƽ <Cff8^wP*hJNG'kلHI!2%R!ч, m`C]SĠ@h3}g EmS"99cBm1k7qG-!R߇"wApU]1đpD%#R  R;JP<=EYKc 1S yUvrUQtExvMd?䌙3LKN]n?h{2Y p1ZK&r㜙3U7Ga.\jIS"g.r3I5'>YOyos,6G 4p`SSU5&DWH,%]9C2s\rv4s.A*.u݌-_3(# [>؂ֲqRv3\% P̚A@k[&R[F{ J=_#VZ|kPnqQxZnANѝ]x8.gs#c:}Lun߈il"#&BUoI?g+Ju\on2cT-!·E[&kߦ5b%Op?ٺKX䴍-dJ^tIk0u_Y _ѩ %A+ .d`>(3:߲jӻEx}y7A{Kêtlݙp{z"sA2 es~Hl߱zI6|䞢{61b(8}G%9blsR*YOCvTu)}1W՚G>Xˀ ˡ 9X/h²kv])j&2L{%W 3%>adW{[ꄎ,86raCc^=Vy҈]5d[pQ nd/IAܮ{ ؕ뽱'}VW CoÒ&-[ L+5C G vوItzعMJl}2H8HT@ ʐ(C3jᏝPelGw z\n\Kj|7}'~1Wլk˿ \6ݲj&A N_ZW)߲|QN9clp {p۴`{vm O/tzu~ÂA_ό?nۻ072hxoAE|> stream x\Woꁠڪݥ} P z5G.wG.=wK_=g>7 QI_ voݺ,Ϸ;p-Wi_@Nja` ,DնN4,lEm+ۏEVݾΗŝRTimIi*!\#UUq8*R(5pr+Eֺ)!4z^֕Zb\j2-'@i|Rʦ0t{ a .'}^\(E*jRARFK h}{oⳲAzdm&IfS{Enў%D˰Rս5Zi+|Y|RJ V˩$ Y70"묫V]n/S'Hcf\kaiAƚa~F8zKY I( (ha3)Љ8jVivDUq:ާdRҾHT7RJ:3ZZ"M0P|.}PzcVBՌW$RE۸^h0ʅ=ԺtI~5# 1@}_3. (w (fàmkh8}$UhTzRQK6:j/RZEj'RǑB.Fj[ _~"uAWtQWX>(bH=aF<(':HeE! F?3D'q*2{L[)Sw1GHX[,I:|GH^}yd1Xv|)H#y2#XyO;;рѵ4~ .lUd9`k ;ddP/ÂUangF܋\WH~H~HaJv7ub[PH~6N,+-Oⱜ%&#dC"Owp9K z`YE'ΟsFq ^ߧ,.Y;/o&$eFcགྷL6SuTGy)Bgzy #\ko-OoJƖM ^@2\9#$G1蜡r)Gh,ӵ8jALFxC%o|sΒwY?$_d 6DtM-JKya&UdQ:0RgxGhpG V zƵ͘7E>a8sI5!yDaBr %beW<vH_ MalĠ:nA)V^oZCL '8v6-^F7?)`J&nyܴx(jAj@S1Z-h6FGSTSL*kDgZ׺JvPNzTu/D]z Jyi4( ?6;j*A*e:EeV?m|v v]ͶJF_`nK_{:ТzO }WOVBi 20jLlAr4%A'q!ˁ]mguPP#kCtldL)i5Du%?!}{QSJ&;@^e D" 7(ijγq=-[KV{IgL M=qFX'&7@v#GQɶb֌uAH+ a5Ƞ{(+;p0SpBbOI^tD =/+vX3:iK`,d vXE ,oXqfUNibjYSۍ+ q XBG$ /j!*! Z#]LX܊Cv=EU^F#]OT(|EaQT%DOw;pBXmm#mjN;DYKTN1ͮo^!)5:i*@utD[.;lq[:-t|>tZOvPڣꤙo S. ѝ%$ X@˞dg87lE{XE[h[ @OY3&d=|9F& fЈEOAg($^őRiHqTbVx4$ 9H{cG$_*ia|h-..ְE H¾$Z !X8h켢3D(EVӚXQhgC6z: .hgSmr"8EhV=f*Snd *:ܕ,=̂ O3x D J:xUamjSñ)^%͈ü'1 {MZ$\ *ߵ>0VI{`)[A1/ҍMB:Df/h G$w%^2&1>+pg`}R+6ĢnQRk=ଝK)2/Ӥk20x#I8iźsi#(Rb݇ec"qUC dN,J۾@/uqLQEE-J_X*!s~S^nm~*'_Il~%UxvG+ԯ?_Ժ)^jߣC)aCXyChl_V7mM vom,-d-TOmM+5ڀZ^6l SPanm:T(-|wUԭ":GpW^S2?Ҁh Z[U'*+/ǀu%$0L}7D}џF)"uI V7rN|%쵿o9[ɄFs ɒ<(oy ;ʅFr r9=2B>tQ6#%$bD̞) k!Z_.nRвRMRak>1;W ZXMb&xeOW> '8a؇|-b-Oj`9;/ RFupR7~#D^A&8i͘4p@e*t='^+zfU&zeJ372,eNޔ3aŬP[U8_4gR>WB؊'Wx $`}h?k P'?k8`S~O#2S,l8Iβ,ܡϜ.w1&2GG\p_|J^P;q1D;#lJ8dJn:<3uB %'qv+:WŝfF˘k} H,!,bR{*؛4Elg$5~&)Z5ݹ)$0wx3ƀ}P1.ǯ?}ĠoK NH3KV?sHBH9/<γU+c#k@fXLsc`Vy&RE0]rIk8.8Zr2ŧ$ReIj>LIUńroooWjfendstream endobj 233 0 obj 4307 endobj 237 0 obj <> stream x]ߏݸu~hZ mE.P7("EIԾm66ŶI7aO+" ?9D9.U5' ^pe%j{7olTA SZNrZ;>S3ǂw`^cmԩMM֗"l_r6/aV6[N'6ac!`-/,8hT& \H2y|Dhu:/< OM,m"+V%Y^8g<_W'na܆Hr`a@L__`Y@`hͩXQlم:0ԤO2Nr-dl,nfr/#48 ^0iƺ2]{|IJ,AoAVl,׌z% 1#>|q3w7}gc o[o'!5";Xvo2pv"! \P@}14}nPCv0:e1> M+s!n"I|B@0c@ɠ-7طkf6uMѠ>ƤKaܥ% kxw"d >K8R(KMc\_zz :\)Y$5n!et,zL)Cf>K},#eogGxYc-U1V޵QTO`w'G66LJIx^BaAɜ*7I׭a d#dp 䤛jj[0&2 #1,D"O$IKya6YqwvbG&eFH SkeNIp- +MDM [B!y l4dkl,'(h|.kpaG.gf t(5/&.#TH|c1ژu=P0tx,Y:,bVWMk0S9@BJq7*~1(#)8ۈBG=>RJ8˒@Ĥ8It>FUn=enHH+i.OlĦWk9iˑ8w9|rߖ3[Wk,߄I *%崨Z*O}Y'|9s/_ -@<j }F+Dq̙ s ym% _n>KO%ud]劌w)wc^ngDj\3\%:5&It+9dگOn^HWȼTXͶ:3#m˔ss?LU/vԷe1kNoB۲uU BHom;Ny1$T%dp1Mj{2SY'$*6ڝ.᣶ǔThYeձ} LY?!9aS@A $\0@<+((AaLe'O[_̍HhG9ЍZ @) \&| .s)ևfq$Qڛ\Ahm, j O Z)^ 8(,-oTb^XځXTYl{9 Y-<32 3~`l]ƙKԋM#Ң.r'DZ=-5 "Bq.T:F ,kd迄(J2PS s-՛xg61hLmIPErد.9"ecF@~;HPh>q;Hܟ`}CD/dVNK@)>y*aA9P8,f"f{%L.b](Ph'q1 RKsB!0YCHU>K؁ʚ d6J-F0T j3Jk|!I06?iԅ< WFRZ0R N,ee.P2! 9"1_!Vmԃ1hh6ii-0 `_ \ؿ\$ctڂR)BDpf3`?1 7+Nˎ)lm'b!n!VoUgt_2]CLT`)i Lb2r q"qb?wyrIS6{븳W͍4LD0zޚ;q傧D̟SzGQ @;4)ܬZE#dD@pC(xG:l 4D {R14VĹ% -) fnű[Ə!-&v%G/p6EvZO/ںeKluS 5<'L&Oyf9etShAMxU@Y&/g&tK|X]Pz_TG*sc𼬵\Ы4-A{ 漽1wY&|EQ0Jb3y[5ڒȗvG}@a7t_ISJ_x2kڑ8q|rd: @~O  *peTp ?cgkMBp@vŠs| IWveD=ʒ%y0rIm%'wF \3WdwO]FafHO髦my| ;;WJv <|pNo?nW=&AQgKFAd/å.->U 搈'n0_̒Z u!;_N@X( l^Q[W_Rzw_{5inRyU5Ao*%V|ECo֞Mmts\Om^x PxH˗I3^޼G_.+=`  Ћ;5PVL',p{ OX{Xʑ$' _9h y`CwЩx?GvIjDUc#A c0B(h}ǟpS  åH53b a׊+%/W,-'3y֤fcyɟhVlۥ,l߭6rtl7-<FrTeb=;$oSʟ00 oK}p X8WF2@b!"7"(TKmGTr/t 4YRp%[0!cYv> c$endstream endobj 238 0 obj 6040 endobj 242 0 obj <> stream x]K$7 0& +M0e=Ko؀LC]όg?^RU%)U*I%e~C_D'N?ӗg݃ۧg_N`../~;~w~w,a/xvDo;?Tׇ^oŧ\uZ*_{~ލ_CwJ~}y;+2ùAaQyWCu ][aLKixݴ?ӵw;+\)yXw)KVB' wJJbI41uyI^-1:vc! dX)qğ"5f&4&tZEx %:]Bqt;"m$l>v\>. /Όfw`aU5Ӹq9 ;{!Ȏs2OKL|]gU8eP2D׫y8ot=hi5}a>,v A9t^.C|iVqzWMU;  rUm"Jys0Ava5CP4gZ:AvL:o8e& #d: d%x#ӽdhs]/i$ |l< $6(3j[)Ѽj(qRPFv*м/E3F lG91xQ:O,c9cTb#GM*skx7I!Gv^XCBf3%njH~*\N`9=Œ3RY+(izZI_w( E?B(,FBZ9٢s׈Q^UȕW# I$]-Z_CHe8yT|#j9+ѯ@m<6?ĵ6GQSSQ1wWu ?v *3^8=Eڦy͵!uES+㝝tx7F۱"I4O{173fΙyz'__ G˖XTşUލ#LXK|PвWܙ}Hz}U( [ RDf ix57xדLT062{5FIg]: e8T#q״ഇ^Ɯ-8GzpM>/ ^J{m9{`l] z?Ob} D9\A<>ď bȤYW." s~RwV$&5~CcT·-LXpNu{0DIe$c`t P24PE9R&o#&؟/if7Yg|ky,!K: {1ˮh&A6@ Fk:DUCG1A$H5d elB~~anoÇg ‹ZG$R1sV%U4J%*ǥ[ CaG(٦M;F]ab#4e_x9{dtLx%c<.de)HSH:wZke0Y+FRq> #a*H6+i\Ӵ_-c#<)R93rwq me7) , |D"Mxgn;\L m( u5HEtƐ\@7"M@tK&WV@]|VrSU֜!~nETt?@׮̋EH3)SqnY`e1NuwE98Wi:UUTlJ SaI1lgSV}qihȸDя$sq l8vVO嘄v*aƘo0aVc]Omb0?D= n8Dn7H6Xc2@dHB1]cȆ!>2/xիɦN(Y*׉#2s@lgy2/B)K`(' yCؖCo,kǑ/A|9mRG'{q6mV^6s.:!d7[3d\q61ccG ϒr̟M~D\zMޓ*+3`byO"*|LMjN2Rz$AERxm&F6guͪ143q C.feT"UsPp-S^Ɠpk߿}Pꦆ{t0E,V4V 0ȳC=%򛔈 aOo] J]iAZ@`z^fxCQ_.\@qUq Ep oЃ EI'"N=4<d[IP 8C!:tb9\D-p-p,;jYt2PU蠶P_o,M^C20Iȸ<+'ׯEhdS8CZP]÷Z PxXQܔvb+-gC X"obF[G4$6ξع;)XK`__V:qS;?5ЯrIK' 0x2&H}WTlBCcNgF7FS Ȉ0[Uk+ӓOĽhE3ZS+~O%[["=I|3IkƜi)R FҤ5)DTk@u 0Єkh N:|Dq8ZIW\QJ2+k' /Er#A[]A~˱5eEgDR=c~L( ^j '[ϯ=s1#AZWGrJXLf\7J$дe;;0:M.#NP8?d+iH;Ų1&|A}C%Ntn<dr(X>fx*$OkێT.ΗiuRf-5Im<ӼFHr(bV-R?tq/]FPC[`[S21@aVE퇔z e4?oήDLctL]l죱uV^ýgX %ޜ^<+Qendstream endobj 243 0 obj 4800 endobj 256 0 obj <> stream x]KuFbvɮ𽉻\dHfdI& d1΢IV[H?$7d%yH~XպRlDn<;Omn diGXEVka9N764gȮg۽lA#}KF ElUK:Vvq M=t71{GlV^LKmͨG6 K3캱آx5r:%m:X1o_ޒI2mG_Sp:Ltn~=fngri)ڪzV^_%mn3mn.SqI}cpvt>{}R_f箒WYFJ3Oo%=f#&lFN $RrQoA6s˯`#.ShG34PMzk̬muFaE3c.TJx>@6 + D\Վg0XDrC_S zag9rX썑+%aBvdwDrؕ v>ݼD,z , ʹVzkldWtDx )qS2ƫe Wrr# 3 H qUh_n},Mє##pjWs'L^IN9K0/)%>DxC/+z𸶐+_ilb37=6mRnwT yAvw"2j ,]`Uzf!v)wʟ<N_geb=J(\2!S,v/|-<%>I T? A /ϐQ{_Yf ]1̐ǬVd5U*/|31Xm{^/)ڢ'j3UZ~jTr;"/0սe5 4PjApcMA=Qp(g$nL'3Nt PVQD!J A[ ]^I(i:S| .06[s6I W_:# 5}FCx-]9l SqQ|ѥ?Ԅ iyx*s%:b‰u|db4d_锡дx9k` [P Ƹ; %[K2h\7y45;[D,T[gW' G|p39N9-OW{IGlTҀP)T.V\|L'?8c(%?m7~X8:5J*̼IDz"k]`֑*B9d' {nA$i!o'BlxXs*|p"Olrn2ՍAmJJwMJ S@c5nL.*IwS ؁d/>J}Vvy?wK=wZa bR(]-鯿Dkq6p%-q?ۋߞBtLrsȞ#Գ<\m. Mp2G}Go4_ Df2E[P7jL?eQ-t/%P4ݘ)|a_ 4F QsK*ߊXE"kn^]="(zkKM쒋'~B,O*6'i-Ded6htSjFOBPG"G/0ųɗI4MS_s"XpYxEls=kJ_tZ[* 0)"ҫόOxO @E^2.DŽg,kU4ip.PW5*!ˆsΣTagRL~=39B]ng5Qs JOlv_1VCwjژb יrZA~0VV]cZM~He}RJ'*PεUjJ97#nza'94bG~k=qoN~j+Rq#Z\ܮ|4j8˰" |m9t{gIVyoWa^X`S]L4}U7%y jHM}]ÅYN/XA]~Z%r3p-uXYlM\hz |Iw<${'V7H3s/ 2Vg[_ڔg Cye\>ȸjauX` >*Hۇ8І!톀K !{T")HBO)< 9C 2CA" KX+S{Ty(j_&0w#v:--pgv_ P&>]ߣ.g~eʪ`Q&7Y:#d)gf3gYfo=l#Dm5+ 1-Zj!r/|bav ?vd<|lh}d8tJWQb.]+v!ѥFIqs:7#mS`E|fyrwȊlMnPxE{nWJR%6ޓv'&xTc[qeao:|jiTqU/:ܦ~ȑQWp3ȻTPyGfQxzyއ91" *]sq1 R1 eͷo9Ș0:I!|9_\1?@[\VR6˕X5O<~NUTFZѬsiչaՊ+x* XL*x~X 6c}6˟8h]=G ,]sA{sz6 ؜fnC! s̾&|lO_endstream endobj 257 0 obj 6132 endobj 261 0 obj <> stream x]Ys%y.:UIJRyoh*?he%L9UR8܆ Iq(>@w{I3/n|+ԕ7G\=~|R:hol>:/ZmN.jo?T8ashٝ|s4fO>?:WOwu MNUu=b{U7vr{g lzw,Fȡ>;]0 8Otu׷jE#lw~Gt_j\6;Ph&/A^tC7 nR:1n몕_^˴w(cT!F>ZUcqui muۿ7?LjPzK{+@%Ƕ넆ڵ}߹?+R/}cqo MOfUw\ۦSɈ6b;eXTJfARsͰn/96t<ݘkFZJ7֕.\ޕ\i:hɈv.h~jk5 o?z>,?Nksj2(5 Fyjt/`=b5hfWVKCYӞ[3_$"_H+^zݒ;=MS>gKyפ9Mڠ.򀯌t^s%9gi-~;MRdn܏WD?_+@khR9?Is#.}˧x_@&]nf!d][Φ~/ ;W2+egM9)Geɦz;km-4 FG51L f 5XL~9w40ldb{ Ң yIAꛠb8ACK2pa^9iۼvE0*˼'N0r W|x2!،k<nS3' ר d6/*/SX 6Zp_L5_hΦxQuA?v{G!Bl2,t{/c1,Y@G/vzk:Qz\/xG@=ٍOCܳsG>7p9n _or ;D=h7 eLZYgHvCПSU-@;pvk.RK>@޴KNG'hL!Y-lASx_,uORJФ3 O'`T6HpY*&뤶Rteɶ&h:kYv.v1 tѣɘ4-HbB@FruHc~cA'?b:cGlt.V ?Is^"t{荂csJQQzGDi}{J,We/'/ݾကsʎe'+Ql,#^(S';߿E dՉ 1O:Py4<S tI-ؚ U;ks UXX; XUpz5)1`qɁa,cPi*C|4N;< XԃNB_ۂƉ3*)8Id/otf0;DPWb!:?B_BUsfFUaL 4ܢXWɐbNi&@:F ̹bAFa7v3ӧj/T`y~b5m9e1  VpG35X9>/E]`%MbZa _IaD VƵFP1_b)$*{C1W #/]ekY$)7#ReYJX)vTl^vdfrHZ*$j^IHxKi,XM͚)8?:7U=ڶ$=ovOw뉇J Վ&֠#1ng]lb~Ӧ4i+SnUS_N7J,B4511[SUz l k&FAi2}!A؂Gsz3Dݪӣ+R[88Ey8 YrJ.=Q#'_!,#р6!FF/NOU:`/NOu9l# =?7?΅Yr|]STnY44#%/c`A0=AOwG3"ʋB7'NJNbƗ3s~MV(u e4R<%T"\*9%I`\gbJWn@q=>sz`.o AV+GDn0Y8&Yؼ Rw' սiuHy>9fhe'!&Cyj{lbq5' #ΠL\ +MD$sThTc ;<>ٛ% M 1FFCHİ96Ϝsa"':)ސyyO+HsOevk xm&2~R`in2 >ꒈ:-ȍ&wIp ޕ.]I"ө>j3.{M~NX}'} QkT6,p+7cΪѠGOWK1xFɔN`K5T" Qrᯤ|Qvm[FqYe#¬n_N됿n `}j-3%T kG)b` [=,16c{g3F p̊Z7L֏d9.t gZ`C*No?0*Q!}S u T3 %(njymf]ޅͱ;NS#:hSDnU*1%{9`?$)#>8=ԭ/z_7 ?}Px#v٬ =X*w|l(j, c輖{tc/@v6#C%d04[R"9Qn-u6;MAZL,2 ,gr;$ٌ ;U&#{¼24% N@XFdGzHw&cpP gP!sO uȪ| P~+d|eʈd0B㈵L&'6!>LgD{4Q%y8%]RK=o6(۽Ge`FB^+Ef0]Qa-7BBbC` (sj\r  EI-q+ vhJѮw9yEDkQeѽap"gٖM'A/sHͰ%9)k61jb9_Q>/>7L_/PcFd,7y xaz  㱈(B֘aD b21(%F|Ȯ]prbjQ%,#[ Ys9|\q$> ЁOca-'x^VE }N!F~gɌe+͇mZ#|0yXQY=[`HU3'$ dS'o= <̺+1^؇ V` }(ҤK/;rf&!6!bg Izpi%p #(qye dQ OS2 !x\a(o a|6 ;4sR|Wg#;TAYH ZnUPޥ|3$r|~H?B:ىJLw[]Pw9w(ጓ"` #+"ǖ%Bu3icwt0C6t/suEQ"^{oR` Ȱ`8 X-z%CX&l(wW׾7_gMiWLv}g.?0cIř!eY R,8jgKY*WӰ脠cox@B'03 !*$L:ZAK̙I,Vn9WE,W(9]E~=/D$\;5~ifYX١/,ʆ:W i>'&AY5K$+1@7[uxTе!OMx$J;?J838<]^&m-l:棒n>@;$8UKJ|$U,Y}P#8fv +pJ#*AO]"~"y c) "l ` ȖƂaE]t6B9fiDI8.ENiQڢ毛MlEX !~ ϡҜ&7)ҋhB^`3?NqӍ\U@{7y k3\l&ﯓ0a`Y7?[EslYdX7|>hv.'G˽5 1Jwq7fzޡQ`~rHWNٷnOq1i]r˜I!ު-߹z@;)Y8|O'wz<3xHf%Yn69،yJGkfKr0ۦ"Qe;Xyqۍ4ѱ|2z=ed_DWBą)#DZMg'9.]MKg|laK@qbJE}=)>HѺErPB~%d"XqTQFqV+x">g/ibHR|r5y9N>ew2E12{1Z>Ԁ-c Ip˴ 6T?=UIDk7"M # P4~. àm+Y$6%M)ˆƒ}\'B9ԕLjeϑX_;1֙>[J.UcEQ]<7`ʥ22a?=Q-NϔMԓ#HF U8mPcƻv>[179Y~`޻  ͋:^bVIu+F~`EONgoe ϼ,PAǠFݝxƸe-ڦjX~=r=mnp{m{Z$ZUmK#7HC~=]5mV>=s.V.$F UA Xb6nэHF`C 1w 7G).e0f.B. +b[4zDSgs:7c=ez)"aC)(7ï$AL"ޤ (z@<=8yy=y(:䕳ս(.HTtn,ȎHq}ej;?PWiFF+K{g` kOHy.KyvV$ Ϻah?ˏ_)2@QI鿞-Vendstream endobj 262 0 obj 7290 endobj 266 0 obj <> stream x\Y~Ƚ8i#mn # Q6Ƀݕ~NVYYl ãX,~|4T3Vyvhіtk?hWaf;[j/j,glؙӭlVxk^kS/L%|Pk_ `*-wŶ|ϳ[НB_/R+3[lh2,;|χpՉ?uZO-|Q5T໔ȨE \ߺ?ӢRIp cF?Ƕ[oւ4(VVJz؉A١ԘИ*' )AJ`:UZ!](z J²kXm+ixΰxjލ[ ϱBȎe$K4rt]YոPlr.rÑ>!#,) k3.5eKwKdu/$&hGJ<#}*&&8(i*״2Za 5m"?ծV:X{ !̀_63,>6[ X@ף= &E̜w3z,@ [HA8\l 7 iV Q9i + G~4pjlJkl8 v˖2ceBJяt0r|XXKag@Z Rɋ@X7lqKtKtKΙ䣈/oXRt+I`ͧ , _`Q$P- C뷟_'_U2F꺒ew auQT=Mq YcLNJ@蔵7t' Bk,)2pC1$Dኇm`|miXraD3Lm_ZVcT9i; A_⢕/PQ.tMB$Y=lk]-qR|p+"VH-]8dI*6,Χ9]ny ٕ#us7 f8E oj NvO%&ȎdWˊPymra+O'a7i+Gn;w ==Ē%ڻ*D" ;Y7  nO؍ql3(mAA#pZ.P΃Tªo`ChsA. /l2!]5zo3MB]kP 0* (g;J;rTS0MVuW%5 (* WҮ-@q1S^8zmi`}Ϡ+`4Ĝ#bBZx%mؑhJ8`vG]xXJ7* %dI ! kP]E n쵀.fXcArfg c^ɷ[@'pWpJsM@Ls\[Emz1+z6<`UvL u1!=|;r4CV;$c{ԑXs ,aF9JQ5}a2THe1`A}Qې':C2̜{X0䥷nnn=nƔW: ҃X:cw HK-w0NGkCsG]ǁ%ɉW mH9%dC"_]ƬȎ02L*7b7V2c2> NxR2 C^Y17kv0U|(ivʒCd!ی+pax.7T-E$d$h_Ƙ:a^({^O$Q48ЅSW̷DwS"ǖK9aW3V$ϧ.I7D"\H^4?cGAedb8bà wP}.CFǴ͎,?;S~EV.&jޞ6kv`+N aR6b+qoҁgsix;Dull`G( {6W1 dvq"Ul"lMt.qKs+&+& ̖//7 ecv["Gو a:n\[\~|c>e+cd$M0Y{Q(g)7Lm+lzPH8y߂Eu țG>NJd7y{}8;|{GtF2=IJl- k(C:BcT3 lo@L% }z9<RR뀲/|(N5h3i@gj}׹]-€/K>53V#c &\Oa,R`gP<fHg[lXN75lGN) W7%O9f-B GЈ( $US3Y]b;MHUSEVU7bBG*/Qɋ|*g2mheKa eE'רהANY,OB.s8 1WWDGwϣXuw;V2, d"kx{5I> stream x][o%7rF H`\xXqNN,v8h$F/bf+}lꫯd*ϔ^,ګy::?ȳ5ySu?U[dUVʌY^ZӮV`Y ]O6&+˼-kYwT!zj-6.}tonexɌ.ucK1}kJWM^?:=z6UVzze=63e᪩ A۷$RV؋&)'BSY|RVJd%Uڽ,T\SLa/hښV+*4m9n*۫eU޿ɍܨMXʎ(߬X9hNdno6FYҾؿ}*)w/9zmW^zFYmϱD>5oǰ(?鎜kt7*m|F=F5aW5aͨݶ 8fö[⏬jSwe7^S:ѳUlFv[m5~9,:E_>!7;J,>tpn>~Bmai첗FM[;mƋV,]]{wx\_nTՍNV*}k.Fe<~S}&g]YU{{Qgfu gbn kXΨzcʊϥ5yﺏɫ&!>Q?Rk7rBZ[_彮fee]+Ef^6ZNTynͿ eO;ԋ hpȰh馘2' FAr5#rXT֨PY FкQ$b}k͡SǨtIŪ1};Wzg)aϽ>( oƽ7E=6#omᦶa+oU uZ4'1SEvjf[)`\myꢲx/Zs']×ш3 v!@%,B"?U⍬({L:CF YCĄ>D"q H 12@ۼZP$+is])W xNhV5Pڧa 7tJw%<0g hq1)0ڄ c"Wvq a@v.@Kx֫Q٣ZuHFie 0v(kBJ}9{&o7a`FY7}OclTfM:C pOǓ)_fa]7B^(omV <g;8 wSI-%˽sL#- ~3P]2XHd9J LCZqHi9J#rH~zf+!g0b~I3*~IkX#ЮIK9_l@!?|H#- T&wIK:9QEWc8uЎ;/QTaUf*wδ.ݤ ͟,/Q6j?WKLeR|պ]p=.7(栋LE[֍*kk}WkkP mU[6k…q ye_l:,mVnIHңa5.ZmveD=DYr+Iխ%[:}9R!UF38,z2Z:(#:cVU #~~igh:ȺFllA`L#h((t{.+W)Zֽ Ī0SL2LѪdREE 3$N`aHiYwt'lĖfxN sW&ee'L؁gX⿓,Hvcw.L̅ QB5]:^"@θzXH0 ` fίL[n] ރkcyVqgX8\W̓}3MxdN%k}O2f%T3IP YiJ>NŌ$.+~H,yi5=ar=G_$]U2Mp:)0ot? I.ϲ}!g0B9$Fb1A) I_'{a u ]MrЕ |JldBELd*Ux<+Hl!*!;$xXi:-J@{ .7{6))14Iө V^4?N T  A$OE. qd do\n"gb7\` v<҂GaFrDk<3%Z4ޅŐWPRh+zXsOEu M6;+V+_[pK@uҕ/]|iKg>6g_«WTk*9հoc{لsȾO6g ymHhlT X%t:qtK%kHI}HvW2T$g?_>L`ds oxBCQn{斦Cw @|vx (t=j yDx^ gUo}z/I/]~ͺI3P5j͂%EoXnoM4X{?je(MgaSd_l=9e`a ov/F&EIc }W\5 [) ncl0QK"gt !Y*dY6TKNSz [1xxǼ&{oὬ;xG3DZ/ @T O8c 9}/&.r7-Á&y> <3!\vV]]z(PWiK'$)V,t}*?38?'%9t?Y@2GF3% /'8'^p ;ge+1L/ۮ`q~!x ?8n8"gp"uE3P0Ɖߣ2`|4@\·jBrzeG -`.[ 0( #TLװ^lpt[iۇ̭@J_ho$-Og=lZ{N}XG@) }^WzmVddNgxk*hZ7Nųn);KRr)=':tVۚ%@Akmʚ<ܢ"oKݮ֕UelSj+XVnmU7?YST*pہ7m-Ü*9>C5;,nw Q—qmg&`0̀T86ܢ\|a0Í3bdʼsfa `{G,~y5op(Kqʜ̞<; $Lj;!ghW--},od%nw(3)WXf{Zo6[Ҵ(6;lG:ܮ\bAFy H+%I^ ӽ '{gC ari DIlRck~q $۲r؆•Iَq>Gd*T-xޥ<ސb't0 hDq$HQQc`J> y&#H43 lHL?\N|Rw({-뻖~{(@]`2S(I[aGŃXHe9uۏK#&28}z or#9dD0- :\*`ƟaMz)5"a'$e@<SE5\"MوY\ƺ QJ{zaVPO@R*-̎g!n_Fy>Y0!ʫ~ }\}wY$FY]x^>fTʠ `#sBi爙@"|@ 5EJ,`-]!0(vtcitK$%Gp{[.ݖkiǼ$, LRf@~r!0<^=mR]i?0q~"$|׭?s4ͼ(lu)M)0.~ gw f+ݞyRgzB2BBfz$Abɝͺe yU& Mh5}8z44EgBX ْzF9'G > stream x]muF&MhҠEX0zo9 'ĎjN[{"b/liWehѿҿWr<$32*}ug8OwmәS^5mk;˦{{O|T6߽ڟ'3ݕ|26qNmG~-:vS(Վ~;$o国^zo;4W=<]mh'{`[r0~]w! ;쪟]>t/i5^H!jߔ̀oa3sh- #ehHay3}N:t^K%u7[ѻ}-iMTu#wvOmF "6 73eFuwjb*qΡg{޴,KpjG-i'F˱6Gif:˶ea8W{Ѯ)K9t,'q+"'脧}bZPsRS,Y;;%L@GD3̾wvLz#7_ {ʭyn _ȡ,UVv}y *@R O"@p(wkg'n:Pn =FAds8?HmBp#d:@h#$D_6) t,ٗ{tV$K`x4"W@=J~|y 'K]-`tӬ." iC(Gϯ9Z\phV+Ή.aD -a]E*&{hF+$RgTFɐ W XBXqAxJ /*u﬈1K)t_#2{OhJ[L:QC;NFto.[S@{ Ԟ/G&Z@ 0:stx@~|/;ФzF253-icp/Î cO9G+ѦjB޵:@Rh+ӋRբ}^m'1brI:iBʡhS+&G~tO#ZiIǰ:#M~ߎl޶~^лts^J;[e]EgNF V Եa}X;ڽxLМxz9܄tkGy)瞒sZHI,R#6lHPQ.ꝲ4)~N ` WT?aiD(;?^ C.Kϗ"ܑ\|0$: n1CzGb%$Jc Ɓt7ѨxF;&VH{o+GZcGU쉓 ^R=3"ae.X(执hET xh!SGF(>w)_pXs~[|}@4K3&.zaAuYr~L J'~%Y\swS B6ǝ_s)[qaDFLӺ6Nߚ rN]A"UsTyEhp)g:Q-G.OXq^<ϘU.(Z *ĕ(5R(zi}a4R0{e(T]I'JR, 0 tVHfL`fMPrKa, mw0P~%'0pyfTP"6}fCx3-<PJ;'_yQZSn@hlaLLTaӏZ!VYFWK+YF65T.CPazK V"z)ff-HmRgێhR0sSA槪,c0XFoJG0K ۿ6q/ɧpHg Į!Hx$q '7wg09'SަeXKL7H9SG_ &fjQJ ė%+5 KB 2hY6&ֻϠF=8pz6$HA'?ҡy! ?{~ elT9'j{&juaŦ@~G f©#P!Z]J~MBpa^;tk.X: qf)79$OF+tM1 f//s8 4ඈKX4e.ygg#]_'itȜ恙X3 Swy2ŊOf.4IAq2xQ^E~)ldsWҏ}0!4mn;4CPm9lJJ ~.1ܕMEkUJ62+f!RA@MCDqyֆ` -X4-k$' >vxT$|XhxߞQD6C&L~U"CN gZ$rlkt]99 !/HS+hNYA8( B>|gξ10 =Oݠ<& ,nCnUc MR ݝ9@[yMq ѵ睦6s0 Ѕ-y]0 s}gX(9D'ЗE:WX>cq_s Y!B)LS{k, I~lWԤT~(T#F¨n?9b97<>t|sv +JS009Q~9pS2TjWR[Mv8⨄ڴtCa"@bN90fL=ơ -$7Y9ww9[ osNa WSyh8k}) g~hԨ‰sZ5YVԂ|QZ<y]iC= T䔺@FcTWPaSZIpsъӂ3'vY..P:VtcBP]'پc >]- #ĩ=/ӽdcĪ)RUQd. 3>LX%)S-FqOer&RjMyO?/BA&j +I>V:4vT{r*6jӞ+y[ܹvV$@u!T%9j͢7_&3ǣ$7` Pw7WCAH6(GO7)L'ӣtꂫtpͤ+R{EPGTZ Yr&!iCaºo-y#nV@jG>."ɣ}y)mtcWMo TXYlp2+x)$):Kg6~̤c))kĺ1Z$q ɞ$I0vh8vIAct͐+_V/ YF5aԩ< 5ӵ[3r?|`CK8!}9X-|$y2S,/?FBY«FX\?ўzdBG%84>ghҰEyf&E1}0~7> kc\QhYI|[Kr6 tS± p[rQicW7O\c=2b}j,${aDo;?7nLޮL̑EpzRѥ$eVC/'CI{K5!H yqZe!j ׹SJ INz`)7pҡbl9vwC}%9l]݇޶&kb.EQ5=oɼCRR',g)ʶ%*V)X) aTj=UuN@-x4|lhTaz]n`ck}U\>"oweڼ4M]^H*MGV( lMF-4-e}^56PSXMh!h})}ƨsաw4N.| ?fԄc@7h־&NLQɮ[[TX\_ 9u)뽵6LgS~U]we}=әp2~2e zn?*[5}L@ߗ[$T0h"fPqZ M#w"9\XQEW${.ls*}ӧSs~PqV d1h`VMfp"ln3A^IєSL%u 'š, /o <<; 1-pv1(瞫mOb6X JQ#64֝{lAu(g-q`&G} {7` >+S}P_XQ=[Qa#sϧS- &aO섚lBCz/#~ Nh}۶je?J#mh2[O~,%܄ۓur l&!}EZ#t}ӛcG;~`9>8<1Q z_\8Gl3@R|*aA*.8U9efz1ٹQ54R펭h -= 8֢t_˩2Yr$~ xIG*|@-$""+)X%$Q7Gw_2endstream endobj 277 0 obj 6407 endobj 281 0 obj <> stream x]qG碍`?{v4}%K>HA=HܥKJFtU9VOR~i飺,>)x;7'W/O>`l^=A[?GO~v^Ҟ]>(k˦V')Nhۓv't~ڳ}Yn(˶Q^uW݋xj<ٟ(ֻiFjvw1|2K;؀4,p8lLz8q@K]6-M pm6M/5?&:i`<}p8Rp|qr~4zm@Z 7ɩcvZxmLƓn \Qp 7R5'@(d`NhD} JPD*"joⴉu\nxD$_LF@ 'Z ۓrzrs-(Zb =har;0\ċj nP(eʊJy+R A#‹Tc6<'X_:{ȞbP:"krW 'sĬi4<& \E`n0Q$mycG;qPee\3i]OLk gMciٳhl0( PN퉏`F87W'n65L>2yaX%F\AE a吃AOݿ,ș92 Z)e9Vq)b3eyu{:0oMXan @Q7HWRϪvf$(=ߴ(mBS0 WXrk+`Él\Pd !"*j.TDR< ]e4%=Hޱ1M d@K$QY|tEPF F=!6^wҪhHl^T&R7Jx17ck>3^95_ROyI7,F&+bR>Ra,"K0SeWT5dX 3vv6c.c'h; VѻCrZOǖ׀ ^-rZ#VBmVd7 aф&$Mz&:$Pe9PքAntdS1ljLmcuNg,ZJ!Ux ,0[G"L=ȔYf-56ǭvVʏT++Ȝ0jK<=XQ{1:bp?  ~e *6|^ϛFIV$Cۢi_+fh9J^)ľQ~hA:DMՍSap6~&lzFrls!ZHsg /BK&Ń G'Q'2Q ײzS#p>rlR&GiOLI!˽1fImUĺѶuڳcX'6g"F:$beYZz[r<3O= }6:aPqYJR E-%1zi1Y){ҩ-AmTpbv,,_Xk2ZBLB¢^)o媨YX)N䶅. CA͏(اY4jp?o Z2sq1s37 O2I \ \sl6 IPdW ,xh0AJnZ-&<G3O,$ x5)\ OeX,$z#)(k]xŇI3B;5S&bSxE|tj 2*# m2H9kXBpr JH$іIQT^YPPVp{xcp,{,OY4hY들^:|l.FbH|_!x1ہ\!$$3W:_T$cN#S!@SZ_Ymڈͧ!a x3R428|# R ϟ":yFJl9۳$%L{~|](U_GͅCIbѼC!wRhx>Nk ̾1a#]Q7AɈdiܻEOft-\ 6xճs}z!́ͺf7b[ٯ֕TooFpJPoE*׌s G9XU 3߀eX6,s"Q[Kvס_jrd &Jfj-J=0Oq%L[Q9w{Q,r{a y#nZRUnA\]}[=+h|`t5_*Դd}IVAWxUͦeilC9irf!}UnB˵*W+z!&Y\zrrs1ѶD̜ "Bϒ6olAAgѣ f1 fK| 1]7m@ 9ˤ 61=[_he7{f-o.[i"F< PqۗIX@IJrم8" It< Wh}hHbd^|'nlϋ6j<B}GS31MF(;c{8+L:4$[pd.73'L*h MƑXzJ 9[v6' OlZt NM_X_QPNbBtB„kv bP`eK։]eTEaY)G8S0<RHĦLڑE4VX`M %զQR ?j}h#uf#c 𚪠k\ʳ.y@n b̃F"(K)_U7]#]F/RIGu/4Hl|B>[rȕwFoq}rT$|[ 8U) }eɫHs`rI%%!.ӞAC;Rtʀ!(6{bI!U`OzK Kjg=?qjkU{!+ǟW]$G^h`LVU=Mv:#!Ǖ>x㺊gN"}Dځ0;$QޠsmRHV>},ktG!+/iwbGԊW !$`Pꫮ }SU_W"þ̔ݗpC, nn_|=; RW1ze<.EUI~>Q81iF'SeO߁M] o7)QoSY-9}hJ~?_@7 K!uVfQ/o0MH #|e!K`ޚ=zC$!kΪ&9E1Y+Jdg  yIcÏ!P3{%)&O_THdf\D> stream x]muFhAH(Pܛ"EQ]pԍř(Ap}wggdz;lhn+C;;_]<<<|+9_BU~֬.^tW}k^|yOÖfut~Pmʦ~V*궭W.[=?X6GOZ?/~x,*WUYnLQQFz}34.Ɠ͡.*]Zɵn}6Ꟶ]D鲬į/7Uds cʶÊCj [F-k\ SOnd+6nܯ>!+lGiRm-'V pó=C6IڞBZZ9؋ٲԘИO7Jt OI]ߓծvօehgU~3~᚛Όkͮ߮MM\5ٍ;)#>6+h(FʖS߈vDNn!5[]r~ea54pNlLOP4R*9f3XۍD߉fb҇/lR(f8EtS-52rVUS4QrFwk`s{x-|iJ~f . X 5=LgTb7zEkZ~~ծO2VJ!z#6 ^ZcWK[`$hsEV$6ıw C|^Pb^q7f'4.RwH Քeo<}ΘSbК$ܭ@F6;x!I hF ZqK*Zy%ϝw_ǦB>^Kj!U@]RWE[Mjڙ*bW#šCn!|ݽZ[)Qhi+% wMcX~ۇ7]+ZVv^`aX&@C7D/]W1[2Xs=4Neσ&+ 10DE:=WJWқb/Dwg_1WX2ᄤޅ)],܂i${xQuai, I ߚTe:Kӛ)%Ͳ.KټN;p22wht[WmM "ykY}w~ǀ1$0wOD`\ޏoXS1OAxۋN*BD`Id? p `0 ^ %”MH|ډIQ:F $H:C$/ez^1w4]<e&x"^ r:ՊHVRCR٘Al&tHEοBOKSa61MQ\o)a\`"*&džQBAҴRJ2-ޔ,8MElrp;bHdemXd9CvȚ{9Dր47m޽{Gٷf|fEv]YkBR7 چIh*~ZOC.^֫zZ&ooǴ~V^\qAY^y/Dw3~qqh= zp :x n;[ﯗ`}=_qi oApV/ b)Ȁ:g]QRMZ& gcɔ*|],Ԛo2Hͫ7=΄1`U04ae Lx;B V!':\ )$.cmKK"CC QF^g'"">JIF1${b[>l(Ym sQTjΪg)y-ъ&ˆ&\SvT[ulMu2 xu`*&bi_0ٓQ SL&f 4]oWN;k?!RBmZI}1?(zLBgϸ$g+Rx=XU&H>wkTiaDLCBz'Göhjm(mxW %Jf+Ґ~D&p)n ~"}aEv̸B+U*S(膬o<N2USL̡=#Eΐ5Hx+'QycNfPs/%Z%Y3m9*[eIN; g[I>dyf(E+D$$}y$v}m6v-'T (#/ -3ˉ^l[eir0ƝU@gc؅*< ,7Dv S`"sӕˎBT4b4IA، ʉ?&@ d>` Y~s^+:?'#Q(*~9ɒc5VN#C%Y3Ȍ@};FeA&.:'|K]]R3“%`he\7MэiУ=BԘc1\lAj\ҕ ¼mM<+^0Ukjd_`<4+x^ .e hg{li)ѸbMUnCB~8 [)1MbX9|ګ$2{~bPh4P '( 1÷,9oǹWi<~0W,F76;;+_dfW$q]\1D@!d1\ROHW^-Tثh㰱b?,is@]_!BuCpl_ʴiӧބt+eJU3G&\f,5f"rFj&dSeDiT\/ݐ5jp쓮[EP}Mr<8ű2uR^-}`s( I PfCނPE IhM֧J@k5??r#n_`7Ϳrs`vTf@K!`n_pyuhqoǽ9s8y$OdWD(`trR)WXe5 ,A;z8U="-Ow?%-3*;>%+(.\YjŽ vNr[ZՁcaN˂;2'-t`D#HGғPji ^_jk eu;y!rUM+ŵb0t!ma A 9ǑE:aF8,&9xsπg9~,cP pqNcɼ<ȷJNsmYX^1\1L=NٚNWf;> ٣QcUviÂ" 3h%ٺԄOf#o,,8\AHLd6:(u%hǧqx|>:JWe5U;)?*^t;${aƳKCu['`rG#út=_I^B2ДK2:Z =tB7 @ !):UD'^q&&aWЮ[TډbfP'E+*~;Sxq!M1ck$) d/2G@Eـ*s챳}Ex0@d^ &k89Q 8 16-k #iRTK ?tFsTSʐp1vashXx"SX;cos;Qdhj: PK.8ՒG^l?f%q%A`p)Ҳx]ozKpE@㯉'F#ڌoZE8*So5/ϢBM?j $ҌBX=HNKWfoz$ ϓZP u;vWJgRDaW _BN$gbɩLq?U;Ƈx(J^Wʒp^vDx: "WۨF½4.bvfq%v~JMʷ]%BW!y@Lʴ|>^Q*YwAەO͖n,^k%,k'ޣ;7erJ~P_{*7pI{Dɻ]~']3]&.NnQ>xr f\,cjsy>H2wu~%nx"`¼=Nrnw/Mv3 YT;on.ѭA{aG8]gE} TM&l|y3P.eE8 (J@avQ^x3>7x̛.sC%4Xk,0Ivn zB<22x~Wu Z=G _(f 6AxrB%7GV(| YE}؆^/@CBVr{p0sqmJk(fZVm3z68J<$(-Ju1>_|^>ݞf4U$ԁm!O>L%)|P"'r|PBp&{|ܼHGps>U,aϏ/{gEendstream endobj 287 0 obj 5601 endobj 291 0 obj <> stream x\[oF@(ݣ%)"@.MRݻ^gmAz%%3./^3g>RvJ.aryx|c5tɮhS&G;ְZ5?JeZhU}\wv^>(XYY!KL͗BjIN(+.^^+Z2,ϋ5vkN0V_/ ]*^ /V uڎ_AMu/¯k( A?U7(LiDmGwΣFj݃.lɸ 7F然3q =BMSG:UB)#Pv5Xe%|YNG?8#RFPUݲWnWe#Z> xiL+vB9J%~YK HrÝ<YX~d8U]*abD+*Χ`ZcwhQu:e!R@Kr -} ZBΛ\=$JWTɄ PNhpM*qC+lrjUUW Dz6Y%.J50cAs4zU$kEn 6+EN_R/jv]+u%1vA^΢|IBwp3&Cc96įϢt=:і `rJVA/.@C% P멲-.;>`BҠ5a7oQ|L1'4M1jfn^nee-&,nMA >QDZƣQonMG~7++ʖL;67iG YlXG,&@@=92vRUsvNaIBٕ3.oվ-Ҽ컭4JGQz[\*[=W1A7_D 6a&0x[3EPadפe?'%o&I@"V̓u;tN9neN .mrm)vE3">5t2nq )ӂR3PP >]FsY A*EU1 RR%M︅Wqv,O¥Og.(Uش5=f8kDc^I͋i/u ^P#-:V*3\c_2 X Ki<. O+54Yjۂ6~Xp}f3dyȳ;)p}䂸 ~٤IeÅ]gp%8MIGg nzat8(PYa6/Q! K6jMVIQ܏IM6B V@m=a!ʸ-:n`51SJז UJd<&t]V:t&v5dC*†v/.vj!F&/Exd6on!=8b+ ڹ.9 +U%`b<AǀS\#Hf6G[d'J)[gEMbNȐğz|?τ[)dj] ޹| 7}ŁY/N.+jsYC0i1&ģw@X w"P¥۠6b4ldRpWTPkZiQnLAEFksZ𫧴pav֜{TԢZe.z3g.pBEJ0U~[/k_r^􌋁e`,^RnN H7w]SLVxU%+$5MYڊ]/IBT3g&{XVo+P8{^#+_ZN+g<.Z^Ksq_ΔptO[)Υ3ZBwpg?+sN-|YfA[kÌ_GDy&|B N08ZSHp kN!1e,Fs W4L9Rqc$L2EgG$r7]K@s6 6'1iNMD~Ƙ0=>#qj)\`'JX2 P9 l_#H l اƢZטVGD)G]D Ч!/&r`*w;1EΠ8ԠKG98f`13uL3bAuc ]+lf鳢"99s}gs‡Ge3҉QQ\6E4 +u'IfҤT d~+BEp A krq5 ^Lj6!bȜсMVB 15A\r\L܄hȬP4DSy?K m5eUh"t$z?(,gH-:4A@kքZ"ſ롃Ah.)EY @,ǍWbE'ὩGv$~B!i@&¦58[nq@/ArGg 9;d̥9|S]*C5S%̒J#YQf)>p?3 rG4Rךsg 4Do!c&v@s-F:|}x^-$d+j`$y^GA y gWCP :Dv=\;x$V Zq[fxIgl)y A0wt=}n4"dOp.#1} PSon^d'h_RobGb)"}U#$- ȋ?ΜLaӧ>GҐ{4G=wh;eTprЮxE(84%Dٚ+&sgxTl=E}.c4Ҥ؇&sZB,%cqzٲ=كeI2*MC9@xLߧ!h`]ͩ;iMs gC _ɝ0c?'Wl^gTڄe#_Uκ1cBč?_^&*O|Q2` 1(_3.OO#  HYY1 ONbm|itqt.S3RJ]+0a[w0?^ 2Jr=3EO!`ö| b f{OKr8n)-Tr9Mz==SH.B{j5wwendstream endobj 292 0 obj 4569 endobj 296 0 obj <> stream x\Ys~Q):T%Oyۇ<8"˩cYvb.WNT+rIQ"2qo{vzvvyؒ饉i4{0~;L O3{umַ͓[n佝1V';[3c1 dxk:vo4ν~TqRMO+8NLgd6X9}G8%SBz;=m䃟I|~IzzVYfz[m{5 dA zȏO*5\3`kL\xʣF]I噗ZHIs7]bxpEm}={&,>j/bm}}Pg_Ժ2D'F0)ml =5zit`J&zi%D841 _o5IUD\vW{;JR pZArkDjq7:}suT fQwDt8'Z1Jo\ PkYE5>Y־C=] '/ʾQ $/Šd'cCB!f h1$C<EB炝Bpx!qn3\u,:Dp늊"B)S\.Q NFC2cv3eVIal:ø}b ܌[ )W ]~/䍕#~щ߷1C((j,6*ٲbb^"L]گO!o$9_oRٺ̣) 39dh ojchmmZOL[G{9yu]ژU_T9}ڎ^LH F?dt"zN0L>7c[N ǹ.xP/BY1#Fks1b4g6;"1u׵KjE_:{| htځt5g95:y!V}V;o q3[zqaҧr~ѨNh0vy=/nt0xƧht>+ VXYv\'=,C,/)jW>}=6AfKepXb8S[CG.MmBZ^t!P"q*Ǽ2`N:Ɯa&a3~ Rh)"Y:>N[embm2+]-ѢXlwW7xn{[t# Xo\TmHK-\L)2n)Y5.R D&ާHx(_ ]A𲞶h>,{z [  lBeˋYۧPE)9ͼ3BaᝓA]g&c9{N>de] 3X`%u$ f Hs:UH.k–(hDJ8]t֡ fg`F(cmlp!a\,Z p\EA$ր;;E QaQ:I?u4=&G7^ubk*-H SӡI;bEH>2R՚aekpwW"`PD?]=1G~ie"a*rvW3B4N-` `QpC橱\ʀO*Twv,Dj^L#+z%X$U"..6 z'Nk ˡG=3/#w+0xր3*=MqLծC٠\xF(?[Q:o@_bpc {>JS*PZtNᡝ N@zBmP[K?Rv4Mj,o\3n%ƞ/sםJa2t祑|[¯T(I͊;)ۣQcA }G)q.Gw/w(/ڼiqeS_/TV,YGNi'#6;SKb>v$u7J `V1L9[fC$mNh!%<#zP|f}=KХQ7BW$:q _dو,~~ _?K\:_4Iy+J F&G@9w IToYAm/ D\*|e(_of\Mm~uꉸ}xq_MTM9kcpىM,F~KJt2q"T|83fÝ&E@9UȲzǍI=^kн#op:'*.ڤ5&߈l̂lȞ-L\vZ,+EUY..oG?PB;b1R'it|FMCGD:w{{l[kP`e_=S@XTِ{2IFq8K"ƲqK\owendstream endobj 297 0 obj 4049 endobj 301 0 obj <> stream x]_s7rH%L>>Bh *dRҕkIQ$-jIS$e>p1Βb9Fv͢R-$^=zl'7{V΅G/9o^%iբqYvqroX|´|dU%j[,VZT5r^)ѺV-/#qվT]^[:</6gNUU>}jE#kG}+\ͦeĐ}|?ެmSi>5uHLzqY.VVX2oyK/2^,}D%p^zmMl4yl1ګZFz 2)m/`o㖬FF;Q`4OZI/GIm?FƶMo{w{sJ6DS 1oGfxF?5^ωJd $Vfr 3qj#_Wtn v*ѪVtllyTl%$-vj%7q:JL]xM֍T=@hp$Z9c ?%&q{XצīQhyW`揉-j>LCqmlUߚ{m3 'szHD0*F'A 90jhLHԟuD'*QuW`ͱ^HMN S"a_+"_&2{gxmmWp6#`{GV7p2ѓڶan23;Jz6O^3;I_Ȁ?HO5L% os"LW[9CrmkJ vug`ߞ'j`W+..hMo- wvO:Q7#-|8b/_Oȯ|@Id԰tjpP=#9P #[|@q,JY`n0c5Gs|-0 XCq0z;N,Sq(IPn_ڕfV2un G?1k7)ULzBDj} 圐/dAI_q[Z!C6KU= o=D18J5pU&>8Se# CchFnAv>qտH˓$Z"RZ h)p0Lqaa_3ፉa#|Xgu%:_Ǿ` +QrOlIԫC'I[C͗`r p۞=m99hʓșls+ՙ]-C2el[Cn )b2B .[B,:|dT~/U\C+ZՎֱd9ZC9$az3k(9dˍ5Q z.uqfxrP4b>6J5ѼedV+֘\@ Y,Yٽ8ϦȊsL޽\&+\:&?e6AN)bSfA0FO`,3C2 ӥy[=M<.`Esf hyטԊzJiX )x5gg'd'&^x0$;]nO ױ?ºs [8)·dǷ.툾߈<(=z,wyLE9]QoNFgRr7`6ᕯE[eik`o'цQF鐇'Ep:*y׫Z\6`qYx~>٤gqڙHegsJ:Ѥ y_hx[7?dVd. llSe+˷sOȋO{l$ O{^Z*ذqE9Rgͪ[kmZe t [T*)3(`;hu4mХ2u"CT]ZJH[^ 7M毹Bd32;Ai+.Yæ09F&r & gv$ juMkbW = ̯tsVՃd=;Q#zcpRFȬnD./:ǀ /䲛mZ2CxhWlagvB-V:ӳ6 b820̸yP:I&䚖n65ɨt&!l<5a<1틔QqQ6 &@U+-B).+GA6v @>Ig$FFo)3X.8˂S A}[.޺ u9$B`rC\pZ}u`XE{<2}A|TVN 5Q$C|,9%qp8Ԭþh67g {9yccޛm@y:NkLR$aMyO FT- 嬠/ y[zd<{nQWpR#'7cm !`%kG1yKhgzl[K[m0TB2LHVpiL#UBN,<}:P`5^g_\6! vC2+:;SܑtfPj0sXRXxx]bbvN}JKTnp[EMܡ"٦A f[XްUr ܗ./4wjY^ +DYx1*ԑR :ն+)"Z}oo۪U%gãrJ8g>>B')beqJ[{z a}_tհ~X( '9|5rQ P:HIhaYFdQe!f)*_雺t1 0uPoY&S2; LF2vhuo~rNL^!:@ݞ0dy,Yn 撻5Xqm{0W#mCs[3^d &'Al¼0+w9̐( LE5@l ;׏kp䪣,zC!SRw=$"C脡#UNjaXȸɉ }\RAs}SdoC=Y+]3 8߅Trjd~ .d)y'υV^M FI`rUu5ư~x.VuKxz%{`)LWaDd E= NxQ4&b߿tpcҏ "n~BQYbU讔Ǧnï{ KTupLVh-}QO4k|?-g&[*)]} v^_G0lV[xP 70Lh̖KdG` uL^:XC'] x>Edxr>6BK>h(ۊ2&no|p >~*-仵8U-Q6=ܙF7y\ެt)D)ygս-[>:1'nU wDQ6>`A۪OBVջ79NaR]86!(|ޫ P=ϖhY[#i~O4Rk.|"09#7Ttw. 0#H2;D8CxBC <Aqh9 X dqb=x_~DyPԂ\St56Zz > g;āw=ň8]V]/yh?ET~\p1 l,%th.2!F_]ӻf* wY$`'aI= '[&ńoK ;CfeQ1ʞ.e hw64ĺ_:e0i(zJJiMW<;.7x9;U^{ ~Ⱥ w8iQfvz =[Zˏ@Olg%C:-%n/?> [y?s?=˞1>'q)+J/jMv:{ßnᄶyWo J؅3C\Vuwqh]66KW!jd=ߍMw[#+UȆ[ӰKje$MvZ)cx^S+0/F+ٿKE]t uC"l'qV6׫V^}v5;n<'L4_Pݸ-χoٮCݶDvS JZ+9ޗ+n8 g]װd$ztЪF6lCluZ ĺo׹7IxګܚcjߖmΒ֒m\`(JR.krhIX[ |\Qc_j~*Q;r3.tsAGƺj3%W=8(Ƞ7\Yنm d2puWMUG |m%K)D}(:DŽ(c1tun=.(.s/~AA Q䒂3N3Ӊ[ $n懐;L)xbߓ72ךA$ݦ¡prd:pϽ6ͦtxQh?OlY\3$b T s[BW1qö'~ hY-m<&<8\J;l/vY_b&Nendstream endobj 302 0 obj 5066 endobj 306 0 obj <> stream x]Ks%uB$xyw7[ 4mWmR\DWRwF! N/glPMqp}+!7 >\=?oz1/骱|zi8ڜ\0o?T0ޜ>nv'{4aO<:o/vuQ~ֽwNn\+\e3=Aoݟ7ӷAߙd]7ow]ՊFXWJCC%}BϷ7;W][+:Pm.\cViniT7%9Bf}ݛ]?9;fPբZڽB2ZMoC [(j׶!aaVTRnD]FZf;! Tv&m[Ύ0DVwj[ s9cӳ~M(~:v~j;CMtK#Iku(LIWMY.] !یMwt$ NQ^zJ^8qzw{ҞDWH!8gw%K.Kze+D. sE:J=k(VSr(ܱ-ߦ+ A*$Cujzb yk/'|L\' 0nƵYu- WvBOlTDVIs#wji/|j6r|deҍx`]I_1'V>lah?^¹XSRd4 5WݐU8v/;wt+g5 JpZpK/>:!p(j#}%I1? %Ui {hc*RXA,DNI A/fBo*$J1[.ϞSS @w=#euLvԭt$S_`hIql hxhTD`J1C1/&ighWC|c^}wސ ps;.XǒB[ ."pp촥 dF1ʪkԝlΥj9!s)-h -:#t4)[˵D1`=&.GnSd] -qqdne֡ ;|ɃL.LƂ`=riȀX݃kP)/!!RMa-[c*s<)m!EOᩯ_x FW I[Z~nMCM(QuZÙR#~ov h?D PB;@=ba)'&=j]J sG#zVa<4ûal. C)I$*X;6Y.G~=/4 ?Кo:G KP8"EoGX%&.dh{lx)33 OzOuhl*:EDT 0VUKX( ˳;7Id{4@1KZA\G[|A夘IWSDqCxf?gp$xTWpjPW]4^gZNȨwsGvrPa0h7~0YqbYxD4C_^^x3t\L h^ À5|at>*%,I62gdkx:ie 448i Ni9 8d`YCʘ3j\1aarsN{RkqҾSnfkc }b(&j-tW/ٳsij ? ݐooR/b?JjlJGf Nz%DJwh=ꂂWjDu 1wPð|Cie$fZ]')d:C ,C#:x?< qݰ$dq|K'0p4rIPg̙R 933&cScv'"ׄsܜ]3 :p>^-f$ddQ#eUKogF?L0 z"|@ǕRh)Q |phXg".fb{XB$\cN 7p'1)c7C2<&Ou0CV?ıK'7cC$gUu]s0ʘBۚ} \\OƋrƿ@) !CYzKQF!$)AYL1Q/0!+ى0\\T{"K )pGS7WaԳ٨,W0Yi'jG1? #8crt0ZN(UCRbv^|$OIV'&}UzZxaS/?%0q5 /õ\F7lwѷHm;2ד|}J0j*$M VЗі3*> nEO>dsP+9#)Ul2csg:%h.2 -ɼ<" yS/׈D%zm!Q~f0^tn5=wNx 2s)[  _ (3v&[~3_ރ/=Zha7`g̝ܕ,Y]S!}nع{km؆[W`yw8&7 d)FE=C>_\c,.G"p.|tvӕ rt~7E3 ,X?;8@5%ÞP8IcRC_(= 5>쇴whl2> stream x][$uF`Iֆ y7wrbD[I,}4nmTR70Nm8gޤ?.yxK~,(NTеU]R0塠}k?Lꎜ󩛃kǤ\bI H 77NTe׹a<ea_c7 \`/"̫ᛢ= خWd" IuesY/QwdHeO=tng|Nk5 yY'}JcZ*ǡNJб/O,rqCC%{1a,>g$Cd+-F'>_. w`ȻLA)y{t5 wf4qHD)'U q5yqg[tcPeyY3 w>ŸafFkV~Q2x@DyhJ$rڍ/!`8s݅ t0+y 7]t=5FكU]&iC^ ?8Q<3)UQl,"{Yع) WwxYuo"Ap}:CL|>́KzZG{ +]TB#QfUwEWgqC6NR=YZΌ ݬhA@Gn2K&#'B&1֔eBM# -:k𣣖F:jyhEYpVv\}S^#$r:V@jxckH:PQuKcV}e [ f%,MG ]b&Gz<|wO CD9$;?oU*wlnFqXG"U%HaBM(y#QLjDk YdN;zkG neb@N1"h$E;1\5^j/|]B&pHd"oc31+Zr>Xqy r؍޶m]\3qvyrſ1:ה*0&+g\KP.FXCSsA-Y|D7uTI̩!UUP:"< Yhj }nO%M'֜Lڦ?ǖiyUf~u,Hi&WaR6aܹ)(ʅ~̓1cNuEk(C 2 r(m₎6İx9s2Ũ8$ 8F_A7\hHQOԫI[͘p\´jPkn1sxq,Ir1"y1iEط+E"GTJݠtE$;m<l&*|WhD_vB.ڙXÝy ^~F:C)(6BU(}J78E7 +>r+-G(be22}XJsB5‡o0a T1C>`τi|%Cm3Nfd#kmzs.7"\& JEKleQ~WU).E"܊(:aH4/ Աa#ehb}(%@^a!&~f`1; tǑie w%xk>DKfkV ?%nDokRUJ w("Yѵ֊P-hUCٳ|3 *>fU1h!HHiEeJqÈі'hT͆y`%d)WTO}JD#KA Ls4Z,wU y"){%`310~&肇d? #oNedMlnEqJ1{ l:# /$ӰoQHβN. bO~C膜2.6 Y8Tkx?x6/D!3@td{e$UFR7ѣ<픿w5/veBcH&A Moͯ94QnۦWj"+P:I$9ן9!JEZcL&2 5neZE蝣Fqpqonn"E̍{b{L^eꡫ3uqK _Ȳ&4b+eR};{{TPC?tc12qCr@3qL(m8f8!mi`7 "s-ĺ&Tq?}⺮Ry WPH {E0"', Sykk9w*.ɯ?H,l`qƨeF$HoD(j4;eTӚĉ&&\<ŧXWi,X|;ZkVTk`N2I?O3Pru9w5G՗c"IմnTt`M񴪓>xsώb^m:vP$dna6vzqDJ G_~3 ߍf+iۮ'^ɘTn(8GRhiOd7:9F4S[7gT#nVBN\(MCǘY:8>,.%PV>q^!WwH(C SIQg$})GW͵s;"GGYZ&-3/DBNA"Tz19nŸzsY\oڎ*qQJ`("[~zi8;dd#?K3m+髟ߎ/t~кn֩*?eeUTA5@J޸K*~_kRu  O%V \Y'zյnqxiLnhwrMxJy70#*4(abdg=&:1XKƷ[hD ygD.Y=BiV?Xo[dyISv| CɁ9o>h[HԱgxZ'$Մ%]䠖I,9!1^l9ñρyffRHh!yc Idd]דlb ? V)d~e'iw m+BG:A۠< U<=Erp;JTW)=>ƴJ V&ؼl "V&cN^Lw _Sg5? ms;ŘI ¹ۚd!0dr .IN>~i ֖[j8zٟ2Ё+ k [Wu'uǢP4n@)ڨ2m,&ɻ/7#ޯK&޸ҫz|'siB"DWIxpo8VakH՞cb|T}ؗ8Bu9VtqWGYL}rz}K0$ XQ4Va+BmW{ t_P8np:tCO 歕F1|f34h,}P]Wz7K`BǶE|0 YysJ6&2)>6"$8};7PʶL%, ^Pcl_FO/^Q tNAg%o-{1 *0,g1^ʝ#ZɔEHX&` ڌg^&#E].Gݑ/7Ucy{INd=*\ۿ%うy!å?BS)s͠G4S{;Yt3U^9)̬qcȔ_@y+X(8D jhN;W||l4>Ї."3=b_w>bjz2jkZn8`3<6uxc@k@xAhdxIZ8ɥ;׻A9/Iϗp}BjbXD5P 6Įq|c4{g)7´ת406|"ATK.% 8TiMr1ag)]/7`:Tt F%e t+E rLV$wdra4$ EbF,$\T!;&*J-;,<5j9|C_zα=B r9 ?iH5;]TԵ|[ YeZi8qoa4}S>Li-ߘPSppk{K:i!+ L!U% m8Ftja69FXcǐ\HkRCon>{E_A6_<7V/]X3 Fgl5Kn%ӫ7txOa5B&g7X9lz0.K >>.űt[7f!*;f^!gTTbf+1 ^gC _柗]6: VɴVU<%fsC;rpSYB a<8 :@؏`IZBĶ_U,;0%;'> stream x]ےݸuT^%OxN*!@TyIƪ(7HݭvU>%<6 3N"=!}Y{mܵ8z/Oo~bnO틣۪ӫ'm3؍]Qz{~wxU'OLשa栚5؟dӏp&NHz[f'۶#=T4JcG%ewۃ^<>vgOssE1R^.Dxa1OalZGMR[zP]|*yL(꠵`[g8Osg&NI_BYb?q-Ѻ_N"mknΎ-Hm0eFu*wm*N1CY/ѽisG 7ЬvI?9h98Qvi6앭8TG T3>Ϟk.^GA}DFAd#WC(&tJW@SsԒSq0-t1캡D/i PQT6~{24v5kBvmP7CmoܷE_oz5 Z*e޵O5k`(oe׻oMm{@tS'rjKUE i{`\y49tnƆƼu5-{ei,r[)9Z,8)w2 ߚJ'ƐzkؚS t+?Ij; n)@RXPiYo 2~'e$dw޷^c?2`n}uC;ޒNvm[LH2ִaT|!E(+ AǏbLF+1޼E.韹c2q7OH9 GZ{nSg3?w,'끮Iy̅'b/AQ@#;LP~£2Eʏ|2"Fv];~%!=$sY] ⟽NwX)qR|SųX *]ZY P]H_$=(7F=Ep#p%8H?{EE,,5fB9i5kg P,JF?J.aЕ5^ dA^RHݩ9>B'1ܤ0Xι20r`Z 0+&"ol;0ӴwPHk r3nd 4-~ i} rJ❿*Etj_vvUX/ڒ|Ss&~PYG' *̧X0Mr> ]ow bͲEL.'K_(eRBolkȣ1>P7 )Ǵ9pQI񂬦&ecDGK~>[<Ĵs@(' "(*#Q#?\"zMq+ض`'ZuxƢ#S8 T\.ON+~^Ry':gn0Xgu>y^Wro mjիpuބkP^,pu?'&7ݡoۦm x#u%q65a0A<8~XIɉd)8 #bƩ(@BoW`%ïɲ~Q8""mN ?}(́GG xqZ|5۶qUfy"7Ϧs> S>r1DND|nf#S]6HqB5_"-?̺Vlu &(B5'wx:^#|yj%|xm3v kMӲVl} x {8jv%,HM6Tk1j'|3l9BVĘ~5Yp~Tc0U8v~䷤Rf~ &:-R_ֻ%+rx JsGe R43HK^ f], 0>B%`.Cf~TAx]r(0wM"5ݡH0 =Q$U9(M6,̝Y'#~fŬ5v/k}ve"m!'^SQS'aˈXx*~Rw׊VI5ftDhd_^\5cnR} +XhZ;mF;b@fz /%%#f]rϡbd̲`BPOFzf#SRCCZ)ԜMy\8w"YMG#hkFhv HI}2 8*`o E`ئD_q)m eZk(d MA6w Le{^mqf'(p+1Hp ^[lWPugs:Q TR" Y(jg!-zX.B8x9"ሉ7Pyv{UkC~R+MNt@3g.w63 @ȹN,Tc($rE3F[dI@fbl6Ns"-"$qa1Ij/ \EUhXd/ 's@'7c%D5i1DﭶYMa>@u#]Rf lU]ƱQxPSD<b4> :>A\H JM;Q:tOѼ'p9G +)JL=\9Y%g 2֯-.!st6J_iM |͹#JZvƸ\KdU[>Yug>&*C]Xc]J’@쒉T&NfP{ [h'LDg6hnߡ'BNb3 f]jP&m;-De5B}I]#@`4_K7H];cU4;xcB>$*bd @uZ4o)u^R)[KqoyƯMIs"M|0.Vv ;/эATU4q.F:0(3Bak>TSMU1T ?`}ͼLCm#fQ_5K` ڰ[CX>Di~8/fCa"f.&=FzsѼIwpI2ORikS:w$H&"#{Q,WO5rnHXȃT٤N\>51.P&͓kTkIXT7 zEnFZ5&>(8'&"|]zEBOr9  pX(L҅=C)8jdUz#ީf<"HR y.L*/1p@0pMMJԃ<j) 0K6,o(^ G) >W슂"~Q!̅BJ-t$Ap]b'0L EY+>\`#v ihVrc4}'d]ƓDX6UKd`lRYט55qei,@g ~\#C :wdݎ۰0Ag Wȧ98Yi zJsI2?ӵ$t mmxgɅ^a4{Uk h-$\-$0 uaFAKXX 8qX&6:]lB*؃bZHQq1Th* j ݝTgѳ"܍’bWƕe#1i؟pYI7s I|C}!%,,.CI}5QCO~18Ta%iwxṊ)Wo! –RB9J?/G;uiS[AZJKqh87]r4̸xSTҖ.“aʩᫌOrCgKF$ ~pgH-܈$BǢR31j'/B; )']g?#VAbY R"=Ȩ†k ͋Փ `@IpnU+a0+|敆5hqv͘i'd0P@3xzBtoB'#B(\Kom%a~ȖtL)n^*-:{U.@eN_Oڄŏ+K BvQ! %*IK[k0 eUːSPB&stUbYF)U=F\$w2]^]|`fɶu같O+"OȂE8>a@2e3[0./}*mN >Uw*Dupl.:ܡsl',d@]ԇ4.[Hq ,p"81,1$gy#;/JM"q1IT%p_>v9T-ZM jQE57!T͂ƭ㻀@ Y ׶"i ZLs'c:tπJm"Vʵ^^AYǻ* ~Aa *:Dt{%|J`wIuTwCO8 &bo۷Ȥӑ+6\iHв7h`>oS v{%r * CGݖ>̟ܶ1iˋ^ hLx'%vHo.o dGXVbmV:+_h'uwjZdsW΂A6 C?JA5RBӮv[qFi/atdnћql-:9 Eo֛VE;S%7!*a 1&PiAF Æ kƛL,F(B.K,>:G@qwp /C`QFh6hpE#~ϭS dN1a ~(Lm Gc D U`ACƫm|}j=H]r݊էƱ4,$$ۇ!A`03i O;Jϕ@$Ck۬y’M,R,ZU|S WqC"k5Fpu1m[H̩#V29B=(yKsn>cVU%Q^ssqȸ &zZGYF{OLendstream endobj 317 0 obj 7208 endobj 321 0 obj <> stream x]Ys6~ׯ}f$:<$[[Z˒lKI\) tR.h| WrՄH{vuf泑x}j*`}a6z]ŪS:vnroׅfgUS+nׯ+]7kz[vV"<gFJHg\jxֹnN6BoT6BI>6ֺj՝ mmMqO-Heҫ*WԲl?.Dbhs}hWUW7tW{/3DIhj]ctCA2pv ]dRSڏ^3ΚUS ?0@C +Ӯc=Qe<@) CH?wҳD !׿TJ5=^W]F*1ֺ tqTfK]8J؉90.Pa؊Z9W<Ɵg[hMMmpw2@iH'iz>\~?G4/1 .~//)E@Ոg3vGaI4N' W:s XE-d{5s~eKR Eϖ]Vq͐4.(WrۆǠ~zrGdMnGQJڶR\ = -@6k0 U뮔# a/ѵY l duV .I!&0 bŸѥE\9L&zBT64ⶂF{M ScJMT qGfQ[$h5Zy.?/*h]Qk%^l'F89{T'Y6-d Wٖ_`I"UZ+ ec|W:kWAINHޮ dwj[M G@df@'N)MP ,RԥPoM״|V^'.v'*o5BZW[U{t}\=L˨] E!AXn'WA)GAAbLMy`I` w,(z-z2!s<}?2(huQ:^vBYw4vL L4CZ2  ) 0 R\ ISC*D8C>/K7!BnZ*[+uc:]j$P.0iH[RSu !-rPQJ8TB]oޘZ_7R"yJt =K嗉zR,~_mB`_ƒ|ԧ6SNsPn7p0,DAnUk;Df|FٺN|,GJ!"8Ws!rGUr >;z"\CޑyCځ6All kwORcaG b;ݐS D@؎u[criќ$ꌰp~[K3׉OcQ<}ؓ3 ɲt oAPp\8Q_|B|+g%Շ`&旉(Q$)Qqn'gvCr`j!Uld7D$]}Iʿ>+&ψos-'&; Or@ xg`@:CPd#Cc gyj>$+}}fD5Zwow X;4͸uv55RgwUH:S7hmz[%XJhpog+(fI"Eb 59t,D ,&lf$2F|13$.D5xN<5c=>^蝶(6F8Eqk;ٵV:eUP~@w]ɶ g_ "SrM:?"QXϴO<0.j!J+Y+;S_h k>9't7Z?epKv0 14ĤLl74@e )),Pc##7ϖ'X1l%jpT O5\a$+E9q]C0Ap  xu\d2.jܝD{B9IMsʍ};y6Y;f <! E7SbsM>d@nj @\iq0R:&xI2܉uPGLTFz&d6:4\~=G< gbzT1zZǘ1#~dyy<2u;q3(q^`~eH!0j1䊪d;D]c5dcFu^ʍ̯Bac"AgI?OZߥ_foNzEKPg 0/$+_.ƙ:+l-4l\V1" 3脋S !n~\F+IYre cYa2-p3ٻ RNnd&f 3U\u8p0 5ݥ<rԻwUYpZ6S%,\[M}̝!8EGIM jp ez:lm&Ihq@0Df92W {sȃLOp}[;z05 |Y0sSV^:]_ࣳ΂s':̳[gh&{'-wͺnk|/  S**7 0yI z(t} #nĀWV ˜6cؐJ<q[ RQ+WbKrsqt<.1g> stream x]Iܶϯc3冉|픓TΡgGiF3G[=v"bc[z\ՌUɗoջwC0t`{vhZN/Ojf[WV2m^5:}{^U?XNNfHSX]`m!4C&04n&c"YcߺD]K뻪aKֻjcR`Y0w\9M~?Ue\om64Be'oW82%Z_9nm:geY͵pz{.8G ߧZ`p?F9RJk;L94{6?7kT42)<{Ź:D7~c"miߪftq3ԼHRn2e_WQUi5[ޯ8:ǹn+tcjZwcm&ll;eZfjVHMlJԬr +\T\1h nC@pPD%p:OwƁNĸ?XyfRZ l[l'ݫֶ5-H< L8C)[ ԣNMmDw+`$_ރM~]7t;@oB'+nUOJx+[!){opz}Y5N4igfի wJ9Xj22(xd:Ԏp6SVrmW](B6^[n=^0'Վ:pS4L@*"mb+)e/b:KwhqgMۿBy^iePI&-mNR3l87h7sV ]x\ MdB9 *RĚp/s:uG8&̐! +Zamd? a?wSyL\D˛r)ԅK\t~v/")X2 )q@pp{xf\:eQw+M30 n Vp4|G1NktT6x>+w'xvJ7؅pGކsA~^VA[l nhu1=x"'qU/I^>()2T%Nb`ZA^Ӱ93i?^xc ;M\*$H9.}\W#sgHnw7`{_v,A]vg74?wjK}s-w@N.~v57%/4904eYFMM豟 {8 5 :m/\5ZΟuI\ä6Z3-/Ėh| mIsS2dӶ̴i;h7)~@;ܤUj^¨ҚD9 i)K-"@NmU!ɉ2A/lBc 癷KHrF/E e)g1aeQmw 0ekܹ< PEsBr2^!3PQ gUsIV溰Z%HPu{]pwL^ig5A"VINSpUK#4qΓ4 L/r>oRϐ:($α|{tu%AB->bDwT ⻠>'x׵͐Dh)!:KB֝P%t)zq:s<`Jv?7'QgcG5h +.01NPPIF8/RwT2P`eҶc0v*@R>6ipdE] nKigP8 |ӃCxi>051y \P0GOJ95֬'i ss^*1gJ ӳX pW`Mh) 檠l:LY|<$,^-v``q/p ('";#ѷ=z_!X(Y11QAf _oI/?P6(:ddxJH8CY̎)J<3Np[ǰdj{$~h:/0y>'C)J5[VhEw6ISG"e'%o0O~r"DQFsQa.Z`PBx=zf-ehc=h|< .aJۃ#vXHEpW-Qu+̧Kv>`FhTI5^lxd8CnJԄнCQ4gAa[0QuFq7&^D ZFz/gmO ϗ2Y\8Y^ &wsR|ԃרک^kbT(PARiw}%uxV.S8Dze7]8<2HJ) i au}J)5_esxCN`VÑF> :/M9PX28W,\h^瞋W3[>/\1jI$8aÑojA RZ̄._Ph8!^<]]P|ME(uJ.L"wW|0kHo!.s$dI@B9_t@ nB/UA#T>+gOߡH.+lrHҫ"FigKy9PN~C7?uӲS9eQ:ˡ4o/ #Z{ǀWTl7jDoMlC^5զml=VąE)*/mZ9Ғ8^5nh~oE*}m*C-d=VƵ>i6~9˷lN% DoxY E.˦Wуl)quf,_^3 +GÑ-yGepQ8 &e3_|>7Oqyl9\^ά^VnjJL& =OUYVs0I]fH%aё32_ߟendstream endobj 327 0 obj 4208 endobj 333 0 obj <> stream x\Kܶ>r[ns4 "TȎIV`0ڗvV+I~p@7Y`x4~7]C՛ɗSi7q!7i \_stg,eN;mǔUxxz#垩H-ޑԲQJ9& 3k93 =p̘FVp4?l0m+Qc?4rL2KU-s.iȆ3} pG`X9;4(GU4o8qtc]7Uj9a4;Lrn5- ڞMC}fhl)i *YONaN{uA1>lL*H@@=aF˦'>e ~CnpIܕ`/`wh%m'k\ 4A 0ɰ6}XMoy}Ո% kl?Km{Ht߭E(9@[2ҁל^C?ER]NE9*dKɦaGݷ0sԷ(.ƌRң ͷ^儛"<%b k55ܠgʅcj`=.X`VO'7IxEkod`6|Eՙ])OfwvAZ͎[)&`3=Ni;Sp:84w̸LU+ȥTWRn秒F:p;%r-Dxm(kyn)1fLtluS>qm"ȈʃXqلٸDI8*8Q-ͰW-z[&.b.nb F3-=1öf8>WJX48Fy܃ "yXh=w.tA : =\iJjM)=a28ǓR,2"ጞ%E0(`TzQ _x;hXhIlSg<2<98"eTh<* \'LH46r9^I]y8?_y2+zlļGq~%{aL5z[ogJ0x =L Uj_;Q(YjG_j͞v0p &-۰(6I=U"MblP C'"*_&YRH#Ȣk4Q%q3!rn< X5.Uv_p "3>iwD0p.˩c'6e6Z Dqap hY}N[t6H.Xf5tB7XJ: :Ba@|k$y-S"M>GD'p$1SLsR챝Y!ߕ:.at cagԹ{R,0o1,6kwO_@5s .a>ZJ! `S~㮽~CΐNv+LkEN僽D8bբ^NϡE"lZ6@ !3N'Afz0Ѹ/` R:Ub+XЯ)V*]0]0m ',Ʒ1F`!FB0p}Ёe;-Bs%6 6c+HqdjO482]x]=r^l=ܢEjV*@1yE4f `/bI#$t+GpM#t=HR2߹D6٪kcz[W  Ȝ }Q)~4E8"qv_:(.-xaV4 h!nB4м9n,D%fK(MV&N+7H_qHf~]3Tm A!̼„[vFSl&ib o kNA) `x^p]P$8>, Ce`xkw >i m#bqoP`@ICԽ1`Ռ)mO㵄@TS Z G=6&+k1L0& J2rtyOQTu*э%= im=%! t>TPgH]ʳ>ԀPQ6-9㋕?1~2yȸ~Z2Agyn"x9)4BǡxAZ~{ZRpD.Ѩ#kVGt ~kFSlᗑٓ }IC(c9x 9Rd>L#<!,eE^BJź#FW0 $))ѧA%et*UD: rJ<5)ʥHBrKDcKANtl*+prq ;Ε\p ɇSh[ ©Ttv-!*+Mt ]S&I*xMB[$aY|IG)4S! kR@8T6U E>]<{Xv*LUz̻jq0ё%!$IyںdQ猂{`zT!i:a60Bq\֜E)HQvJ5-R-]c93eku,;2u4:gkEי.[m&Dt* Kۆ޼ynK$!i̷ |Blȭy9.V)%<'9ttbV 7Ɨ"_WHϐD/@ iiNU3w/UNt1L'C̚Ng+%9]Зd+("P䍓ÈQƭ#'>& B,ޣfv,))Ҳ"#X?'45w-y|俉6x ߈b\ì  cLDQl "rp[:pTC_1ݕnFepJk Xtwфpj$Ӈ5v>$)ލHL I[ ,q%2ӹ/b3giqdLp1wIBF (tADCw7'٦x񧍦LWC OtCgEQ8!?2%CsBH+k[slLoqpyQ> stream x[o -ڧ> (ZHEV7[brmfk{g$͐ub'NB?Yr.bv4fH.Fp!Fg#K(y2qK7T2YX^I)s]:1:6$wTc'[?ޤ2K+*LقL4"= ~ %֤8N /r'o),k@\ĩZ\m1$J{gwΣ`dw&}9Ԙ k1q ]DkͶڣUvNPgh nM-`~ڀרӨ2;͛njs%NK5Ɵ:'V[:ڥl{ G3eK'vVUZ5vs fsu\8ppb]&oGI_gcGBq62r#r㐾yU^:8L۳RYr| +mgEۇ9m(}K3l\ " _a)%I*+ [`}|rvpRoIk#;P\5dρ5[_doS6 d! 0ۢb-&7;c &qX)l%*sQ 4vJ6G׹)g4cO a~ZTa7`KG0,`<`s`7:l:`LIՈLBJV c:҂qn+q|mcr5Y`=f tL}Wy.ݨHP PVkۊ} IXPt坖w"-6: kXxUwO1@2-l -pBh(hqdGV5#2 kٕ-t *4l d2󂪮 "XG}p?dTvjnE% NƔu;nu.6tO_ ]um\}]CuZmoo @T"\B*o=--Ƙ!Ȫؙ $g\U2"jy€a]҇P' zɵ>M)U&ni!19GԮaU6I Rh̺2G*Yǝ92Xoba׶(&ɔ )W- +" EOBd@'zkE4P] d@7"L!1еЗkNTq\ɐ N[F j$%IT3#i][3T̀tuS-]ˁ%$e]UXXD4wt2z5:Ker%XREI+Rd/]=e h-UxV+](U^lu6QVVx߻z@i(a2~iZj+nWVYIi%'I rq^{dvrU^WUk Sv"Ldr G1zmAese n[sU\W X%+%yʨ2-k<[}e"}1üК||K4`wP8TPndi?TZqeLRƸ:^omO?AiLwDl+zJ_'.=A}N_qʢrw)N]ċ: hzI q*Fx "*aPj@?@@eC .B  z~a ;Z];]_(xAUJ[*j(&]r|s!UͶlyšGE.z,﮽o#ǽni ѣ/ˮ:C~zh0=~&@} ļ{*47kvݪ4-ZADD!m+<&֛@%P?ڂq܍rkO{@> ?&L1f@x`@b0a^3TlW{~B͞x-a#XcB^=Qw iӬ@e'쿻'VB"ֽ^<XV;*̆ HA}wApYΉu{IPԍQVXЛH Ֆ~G$"<1v Qx}=wrG4b9zMkzQnONt*s΁D; ؄kD^?Eo@|oy二}a߸.޻ƀumr[o\T/<@n B>Rn(ܺhwsCTrsF!:a#ܺ'WZ?ŽLJ8sXv]NwT*K QjC=Hh\_FJ.+dtuެ0dw+b}F"0 ?ɂc2hW^c/cᯫ֝&еAPc8(StS=  =PB#$Fj6g]i3OP#zVW+p8nnf'>6endstream endobj 342 0 obj 3071 endobj 348 0 obj <> stream x\Y6~ׯ[ĭ& >ofDYI94x5v\) R"%~$Hqgh4}z ݠh^@0W4p|t=i "o|:D BgY%? ˧ x5D0J~$@r8HD JpV?R"J'ù?J %I[e:>1T;? U4 1FX'qj,Q{h=27'HgђnjGyן/M-7qɐi . 3#+섩U _#35)=&)1\&3,DC?76"PqCI KuWa.I9J: 4ըBxWD$1U,-c_n#u߿wj/ZT⥪r DromaaK΢- +_6^[¢Z4hbgi=_D%/ z$m X-nt0gpȭIu|1dk')9$v @/ ^Sp|Xn+adDNH'K[FƪE'I<%f 0d=ZGpT?cvBVyp#AqvImU8pw'BƞVNW"xGOɠSAQ.{UѶ>%=_ aciO> 5g[|"sQak;sw)w"许j";#8&0| ]D?H5v u e޳Vuێo#2Iqm3fVBšg.19G]PU 'zX0eKGAmY5m:0}+ko {zx: a6-@xyF+v9:布Rag _aEFp$bhf5aon)kuQ$/v}jǷ lV Lg M= :YWYaiwЋ] s۫S/s.[gV02^T0rW/[/^P|mlS8~(6#>H-0&X(ŢJn#9ۚ% U˳Iл J+=2-j5g sz \uwJ52x;7&n4%={P$IAZ'GI _>HeL;*K؁eMC 7H}LNJ 3YBSnwc=01)#)3…+~}qv;nuW6RT X7/ #3LKK=X J~vrl~#v8zA{k`jBesITֹ7+(L nwל6# '77oPvLP~nU+O+FebLm\5o3<7GMendstream endobj 349 0 obj 2541 endobj 353 0 obj <> stream x\[oFQhվ,PiCΐ8qQN%%YZ9vݒ3<3wfe;D,<<<΍"rVsq=;iG;/vL^s/ZPÝ"n~3[Z=tnl|}c{vdqV)KU/3|ɼ_tqGd2/4|V'c|<[??pɢ(ٯWYkQJ5vMTaK6,; gJuAZ#mOkv]2d(Y] xبI}`VB U3 F?w˦yG9QLk9$"TkjHkTOiKNKtrωօWDhSiϪ΅[ҭHψ\R3"4)cUoCi'UU;nuas4L!tG8E`n19;ekiٮ#,u,JV c}FXfBɔ]L4)Y+_HIe&nr1jët?&JRw; qLyC trѽe5,˺IjQg#5PB񦨃 <>&/{-J,v~S6K3euUjY'w]/u[ P_Yì%eղ)Mgudy-w;Du@j ءwW:.@u?PǠ5%;!rA> >e]u$IN$>Om\(*h`Nu<>^fBY߃ y WO\B}8C`q_ޠTAvh\v+@w=10I-t_ ;O` 9G@nLpGg@Vo)d9DB- V/="!#"-^ه;vjR:Bo(D{aۿ(e:ms2YeVeoU{Rƌ4vQxgg[1&М݇WKnp ɽmG3w'u/xpvжDz:=RheuԂ۲n,4_Tb_xxչ)ҼXzZ7LJa3/ߪN 9Pv*јq_0?W(Vyi Zn]NKܰEɄr Տ/Ͳ/vk ^+:̍y2 NL{.u[/aX*BޭD# 0^۱7si!Ö۸͙ht{ԩES>+m] K=mOUP$7k7upD2aYWmltwӱgbZ@%_W❯-}7va )GWM0r"[]aq&9# e b5mM_9Q=8-GψA?|鑍t{v|TUP.t9V!474u0; 1Kt_n*x_6̆H3 +“H!JX28pYbc)gMax#4g[@X;CVjPN8y<:_D* ^ܞ :tw޴j8~t[>̇@*Xh͟@M~>lxDSjJy1-&,DH6-eczuaHPv^kOf6 6_fRs'DpSn %q0t.IpՌ~}~'N:GrUPF@=ʄ30Ov*w2v4ΩhމZ:iZ]Qܽ>sBY+]0e>o H ^JkU_组 %ςtD9}|Ċ4qj+! Uw0ÊiCPɰ\:MA Lq{j7=qB:X1oVMn='fP\c8 ʨ4Ɩpx]s\>''U҇6a;^h/ȰH×U|0ϛ-ĝA2Gӥǁ&Pt!.Z(5bk5v,AG@zS"񗋢o6tGYdA#HnsV0.3&Rv͑T`0μ:)r*@T-ԽA7ǹ^ ]Bnr5^?LS* /& [cWC%upBQFl؜ֻa1lQ"MAE{/݄(LiTBPçOYd9*aA=lph-ezepM]?o]TqbU%-\ HǷS5DlG 6>+?85fjڽcݻC*}j4u/㻶{(IMȄn$T`l{^DL'x9oGmUۯjWckԞ? |؟w(joI | endstream endobj 354 0 obj 4427 endobj 358 0 obj <> stream x]o%uF'nmh?Žj<|͐1fuZGE 㮤}JJ^$#bfs8\M_=>>;|~`+ux|oZԕsnMX9U̪1js=nJYt誮m+ۍe,<ǛCY)!m6uv}^ߜu=9Y׊tTF(ǛC[i];źeSD|~m՘Z?nPx 7:~rԲ%>B~mU?:9jao ~AmbmFcg׏8ÈJ  hW)6Bx.өHE_x&2ƄJmW~=e+YFSw:b:=n_Um߶֯suil-X ׊4 GYzsN*S{YWl8upr~MymȖdJ fV=Z%;WɷcSi|xfT4QܢtS]k[NZ @Sbnd[*>^l`m!㹹m,()kze%a$v8@7J=JE7WQMU\l d"rk2j R;4SAWm]r^ϴZ*km7 sw~r׃2ZZ Li}_fwA;6X:h:"'OJkOKf}onݪkوwnm!VnaتnlR#FϻyOJ}Gjm~جyEHUa >:x7V':x-6pxrک1mVUU:vE`8;}ColH+ ցUXx'w u"uNѽ`Ğ$bl_c+թ |1K{/5aT(mR"|`Kj7GrŻW]gv{+~>o3-+hQdȈl͍;S5mcRmX VWf]SҢ ~Tɖ`ꒅh=qOyMw L"30fKqL8]Ol\S)֒[) A, AD̏V[7ZNS\.]^M\nv~CӉV/^HUqkv1.@ [PҞ3ihl\l As>1jM#m .1A!mZ*?NCܐjks Qf@YCKZ@.+B>.'`/:-`9 ΄@KчW2ک7ufzoTNH>$s A*c{e#BY2]@5Y">&>5)ros`ДLЁY8Epgh0 &?ӢZuFjT8̰g0֠\n+f~'W/2ֶ\nj.Gv!Uini&rIcP.qͬZ`(H)G';'/RX.-jl3'SqY [,P+)p"C8FSu$e؉D| Jq&dgJZA>QYE6*̥΅J^3`J~p2" .W"r<"&S9?Ңi803DLrFsxbaѡ]LJJZ+ѧԶn3գqX4'V<ƶuƿ ]y 'jsaoHm#=&dׄUjb- /wP֘}))ވ}j~#m}}$d;'<-o4G}N 4vx .aXpI10ǺF.c$- i`~e`/a],cu\!qیde 'I8T:y'U.Gqr c:Ʉ_st |`)Ԧd}l8eb6&~ٔ"(=;WۂK NP+|PeP1tmF(}v&̔Jɔ|Z%|L3YHZ_$f~eȟ }Jǩ, $rz+>_DPeӼQ3Wfw撣qT|VH)ђDoA 8%s.p/|>Y#v%)\#*L@fO-0W(P=*|CVHxGj-l~={u +saHڃkS{p t/mSJ ܪnʅ~|ur4R զRxR{?fMm{$bC~?QCՈ4Nb;5I|hs d>Sg|^2Cjs1p߇W]SG?Q4MٸZEwG攎9f~<$ ~NNb Ox M4A/PJǁ']oq+h>L9&YbȀ  4e|8 D@~xR@9"O!|+0fRGJ'5B2G} ߀9+fYEͰq9gi*K3a4ב%|h(kF?ąVQ 8=-?zu70zj}hjjÈ0tp)l AX\(څP4KW( ݩHC[ܢ10FYKCI{q䢔\1CP :( BvWy)6A`3ݳvQtYS#[fw-ZZ:圛9O i7cqFcŶY;2pn}ZJl`AKAZ:[)$Y,l) Ů$ &{yjqr=.kF)-\KT]"*I Ϩ H*yk/D(-5'*;#tb a1N=Xe&@PWc 3eXL/.o.HX·3q$ᦱ >1rY~F  DtzC-N4텃R˽3d4 (DzrH2 ,Y|Y Q]r6XD Cb`fգVҝpѣ]Y 旁7"ZQhbˁYthܛY9z,(웹3-_3iqd3_.5q)A.vy5 /iϞw8> {›G.]O: >zAr>ey3 L][Q)2h"J'5|kqҒULJovۿ}RO MAi4i+=i*racz4>CP r Dmzu>L EgYB0J?{{\L4}WiGyf24dˡ>i(S8&$Z4%{9#Hwi0gƱL+.O`G1O++^΍deFfKץՍߓ<ڽReIzOa.ؿ4YdbAh]Ta@3s\4rcQC)+Weר:{؞d6n͌3Tt ;}Q$V  ~0]¯oVtJX PV8h!Q"a;sr6n=V҆D]؛ҝ8I۪m1 J_ޛm8_ Sۆ?IuӴoϢNayu#&<~s[!97Toe0=xv}?EY7B9ٿCzT@8|B!zh mQTag1s=l̞g\}*@O@oNuֲM(;RnXv@,(7 T^poLk? jirǾG!'♥'ͺdX/;<>tjyG~fS6HpP{=)sͺ_k*Rz i,>Y\p0.!^wٯ#u~9 q=2 (^H߉y%8f=eYo(J5هO gZvy@&$?[opaumǞ"(򅗛 (>[ۨie- z^-OA //yo~RѢНpDm7AYDrO?"帗y6 ?vgendstream endobj 359 0 obj 5577 endobj 363 0 obj <> stream x\Y$G!,#вՅ+ ˲|- ,cP\\X_?ȪΌȪȮe[x%6+Ȉ/fj&H^tͳg;O@0Vaf;n[/}V׶m|Ve >ٓJkmeej!|#Jծuj~HW Uk_W 3YvLUj+2jkcDɲd5NH>gljg+?_mMFf'}ٵN9|Q P]$x l4v[tz^*)iAmY$ic@Ԧւ=VJz3ثAPk@iL[kו%:pb.O@%^^I;>v8Cn2[#?,HX^w_ރ\'B tG52%Z8LJAVnjd-aD3pZ_IS SwhV#)~BJ\V jb?lRZ(-۪hd2 n4@ߍHCrlc>pKy/ M]UѺA}3a6}@,:d漫Z ]`86 ZnyY!oW+{ l!kj>#VUp#Ա/pV"-Xa<8xo}c|q~{$퐱Flu0ic=C#)u^e]L&;Z⸞pp5:mJƟtToyK|-> 2l~t 5Fs,JT޺lыP_@an\4%Dd?YJ]hU';baL#T=5*i,r;VA<$!1I@gpF$k0"`w&%euKfăDuĢ,CJ2[7 fțC{}>K$A'H>b8NBRz1H|%I)mͧU[k"X@Nr}:**<3|˙Ϙ~G#yfW HrfǪs ]&C9/3xul/:[zk1h IӊhT2"\i\| (8Bο_B#I*7L +!z|9d VV X-ڀ +WÍR `5I0 Ȱk2ŏR40Z QӺ*c6{ʧH1~FE'>ugBG/7loz#gaUΓ8)>8 #w꼰zB*=6e^ܫ¿ 53ubxxw7E#z9|zjk) 11b9wL¶fD/VMWLFA$|m;1w H|h2ml2`o`F{ $&NQO#6%dt n;2ڨ@Jv A1`E/)^qe]cm!SM-|1 JW:HޘvYX"\b3[L6 "KB{#Nf(ruS>T|'7XӉӔQb(La%kPR LbFaxzω m:" 3[S5c4$t)&_| {JYv|[7~`ƽ-~\d,T|J; 'Y񳍴^BH-֟4Z,lex2x׫86No9 RnBEH4:ڑW-/uN}V>c(9麮ܤrZ52r mat^F728NCr'iws5n9k!*,\\Y cxޮ~ ӶB#cxՀ(N̄,*:BV?-$'٢s!<`GoLoK1haEMbGOSRh4J=W. 4r>ElBpžŭFAtC|\Su7t4}9Qx:XHleՃ-dΧiwN֓a·\{'\RuZaL~ȄMgYB?dm3 (ʈ&Q:QL;CfR\? (x=oG6p2Qro5rzɈ0Q70)F#$IitH!ygF3v~ᗈffJƷr&\dskJ1_l~E)35CmD.5M~䱁2;L*emYWIx^+CNވA=‡b}%;LS+ VjD&{~pɊA1}wizWZ`{F29Z7_s/e=NvO~u㙰vo+|)֜6Ľ[sڥ2Y`'f ?b[_>fy֟ / /.oծ"Af8|_p;jw%#-{ҺZmv8PcC>n%pzX^y˱4&)jDкa3>3p9#qrݝ__;endstream endobj 364 0 obj 3770 endobj 368 0 obj <> stream xXMo7ؓ,*KEMj(Ңub)[[vjExw$Aəy;vRM8JJ[qNk~orP_ǘjìQcʰ+`'v՘hLZ9~`RF-k ~EdmZ.u(fJ38:lSfcW5>\Lr[{!ڑQpNfZ"ab'·hǭ u+E[+YݱmڗtE8'N: 2ehN'DVto|<> stream x][qaIVF1by8y|NO߻$J%H a..ETϥzm sZS]ե{ٴ6 gϏ~<{쓡7GQOϞo>:zsry6!֙g 1!5G䫣=_~knrNlOw틱p5ev{;Г~{1d*;ޞ}uoǟov5ִi6YS?]qoAI:'t"^4\'G_lkV`p0{! 涗Zh c B?F4RxOg\'LCdd/ę  LdĩFkW𶏡g/~M.L~G;TFNu@N4Vs"M 2q{T.\cdC1He|mc0pb'tizHs>RyJg*r'`7A;TGwل2M+͸ OtKm?/Fd<[*n&s6hqUs,S" M(thn4n@,a6L tw75}#7hm a|g_^+U?ݑNc a7ҤoH%Ѥ4f;5r9آ.i;!Po,T})] K ILoA *M9_KuV i#MȊS֨OcaFĞ#oIE'P 1.15 gsg5MANU0lUomK;wLt4{Bu&f4Za9zpbtء}~EHl0Pt6y"/fNϙׅ4F#D Q=xc2,C&@Fn>3TtI5̴ =[ҴL8n Z8}v(IiWvp:6-.Rn[ifiLoܹ숄C{iBSxpnŮq72@= ۗjŋ߼ElcOH@O: k/N30dJ߭ċ]R/=0ťQ!ce$5-6s45o *I nLo6z+̇ndSQ4sr`:N2bAX90kctf| + Q1f!H m D6n uZ0K4$}\ d˃waO^ U4)T>^ ;/IT_}*}K0YP}+ 7D.dy.*[3Yؓ 0:Nogx.z{~xlvQ $.n9؉.51H0{M &V]MlA<^^S_Դӓl@Aseb$% zgX =-qܗo92O7*kH^xSZ}3=%ڻgQ5Y1b:2K~F8To9ֺY6tJ쾺$e"UZ#2+9-r/FSf^L{Ov|X' 9?zK[¿Fǣ'Fva Xɫ _+m,e|IϢ8'g)!Py搤5bY*9rGgxX(s]LyւL%GOօNa]g:.1!^4Yic0ML[KAQ %q"M$$y_4+N#@db3 c H0r}՘;Wm3_ }6s~EWyLT<{I8&퓐Uf,ʺ'6J+tC+"VKѪ@m/1٬$<%:i9s$~`L\|;D&8ƈQnYDq/$f-IS37I"%r)y73g(9sC"M1bX; ܑ.iM[3XQMWLLnX 'yBۡ@Y.2VcX[Pߣk6Jq[NLw8g% 0^e,hEnn$x׶wNPEƓ>ޫGdp1h5wɠG]mP8A tuϕ S+bϵZyrr?n1^\Nj}lNtNkc<ԐOYAgh9|N!å+!nhLLi[4_3" 3K">Hr嫂HE'?1 JpF[[&!/"h1ҋl|9=72X<|gK&:#(_$9-4PdMRN5qL~[2e-?鐜N'8$V0*^$Gf#-u|0)@{4upGNCUA'Bd9a!8r04cOa e DSʦ3פRE7,:ٌd0\}Ҙ驘;?FLDNFdzx6=K Xqq\( p:儎4@rE: G>@Բ*fQ%֬Ta J.mo~ Zt5]7E_HK6IRrg}㺋2[w1›!Bvc춿W39*wvʏ]U\U[\KeR@M9s99sNŲZ^K Z^H|.\[9v<&(aJFG0IyM7bau٩XiwU 7H;/H-'THml a[a9}=4eF_lO'oH.ȸh4-Ue,(kּU>G+Pr>Ճ,"d:A5Tc?c 9:}!u2*l х C:ၪ1%Uoؓ]kBV_߾,I<ͅ9m\qUR\BF%\ˋ>P -G D, bի;Y+|e {m =F;mq!os]y!-|TcgD"ljl)(Ti2퓾o~Lp2"JĈd }uAȴ>IZv_~㽿UMV-| AP7h@F^۳orph+Z&ՉG@Jof_NH,ඊ̀6ۨco 4tA>ƙI%CXtm\*od0b3=նA%tj l "ۂ,j,7C\b-g͛xBkr'0/yF>`"CqWщx FR>`RRq;d]"WRP F<\uew]k<E ?p5)9v(e>!:vSTeHQ6y7O K~r%2endstream endobj 374 0 obj 6143 endobj 378 0 obj <> stream x]m$qر6E6 2_ VI"ɶqrʇݽeu3{)v7YtABIvU] ÿ8{vfu}zEx~yT}@gV‹zuwucڟʫxoVTέNW>aߞM])n7k׈n#+\Ul\oRB:~Zy?g/a8Y׊bc+#UZ^ii8 6|MeM̿[߸W>n!WW9e-ٸ: P_xC )C-xf㳆}E^v;H7`߭9ÈJ gvl~5z4WJy%9UX1ag`"㌳&,T]noad'Y?vG`yݏ6?6w{7oS;tNc=݈XW pH˪=l&mKrTS-4T7&Nӑ'3\l<Дݥ4#*y/_NPsٝOĴ>~>fT4Q Z5tq3yrrqj}Mbvд+75>@_d}k]K [mt w@D@O'B4Wػ0ZZI_l@'vN2έtejkreD檦^F^z?"PQxrMt>4umzl Y엤kF)xȘ3چFbMm;J?\njNM"%|aQUmlU| a2\{x@߆ /BНhmuek,] Nڴz wG }bd̗"$TRk &};<S٦Fn`` kLd]EHl>Dg-[I*}q:ҡ h@y,AߣS7gDٖȗijߦwdlb⛍R@+ΐ^W39 hؾFiA>JꌀVj@vϣQ^M-3@JVd~=au *;Y`a; oͨUjUL[דUhtKULII/gRRrC:엳-QqCܒ.#{A*yewxV&|p4ʰi;el{(h @k`ƭ.k/yA0nRaMSIp)YD>4+{ApQ0& `wF%QЮ3<]bG0wRw; 9*n)Ÿ :vt# t;XRg _C5M/lF$C;XeUGIauO[0m<=E?Wgؗ@EI*YOP-6<˫DLv<ڠsFy'U͉s)~GnO ;*8~ѫF3s}tuV:L8:ªr(\ GW7ue6(iy/X AUDI%Eh"緬4ۙmeA>*S7)*ѼvɽS⮠(} >m'KvFx`hOj&2mQXC-L\.8ȱ=-!~S52`%w]ֽWu\O H{r?6<$LZB_c{c }Fjà@h9ժ,0Xۗw#tCM*mET9٪_t䴆i2Zn 01ø΂TH&8$B1:N )ޮ/i WYia/o?Fh +ο˴W7!lN~v[ |k8̼1`Zr}ΰzN:m_%_-;5{&\T({Z0Sqt5~GQuYCgÑ(\>,ޑo4>||ɟM'*VJ3z*e>=t!kcgoj+IhSTR;l>7lkl^b Vu-&e_Noᰩk_M=هJ C" .sgp&Bd#gVk#$\n|[zN Agτ˰1GÝm {m`^/7Y2WJYW`b9X8C@{}mېz"/"И6Uf}@2`c)EFK`mAY鹗ޠ҈chot Q/=1ȣz#ߩEڥሇzfv1gL@#uW[C8dB.ŝ[AW$5$:d#-d}%G4ډݖ'H%80N~xL w;tֵ#z2([5;g _lmh yYВ5\g1G !ˋAG)$ׂ9T2M&# ՝2d:D]k1@ǁ0TSY<7;#|HFL1>_b+I e%ELňR>dH)k5Ji{P(U:B2Ak䀂_I\MsY% \xSoNC[A "Si[~s;OsϿ/T-X84@YoϞ!~z ǹz]Ү->Q:mj=eZ^0ݛ%mѥE>"(E*)ũP]hbrI==*S3{b(H˜H$O! L3NE/;laz~hGc/ɐVT+Q5hVH sFG#KS?MI)=`nHȢٕsB1 3ٍn%nA S 6ۦ Ƒ~(lέt#*VqU PЅuHVI@[grg0h_]V6(gWDNxҊMt)¬=)BӘ'@fdΟ߁EMT>)ǡt_x!F$%]YWq0:=xZd4|%x̻ߎ5wNQ'RygϬ#;NT1xgdd1>0#qCUxH2ӈۅh1Lcu^h^^1ih :JLJå2=*ʡq -D;.Ggiy`z[G)@dLZcKM8 G]k`^ wK%]~ڂfIMd _ |*Q#- y^eeZ)25  HƔܗpPgœ<&oV{_pdGanTgtVAQ(<1۟a .eg+8t9;6ʔuTbo$P_p1>cSv>w~2)LVefeh&n=NwJfˁC,ҁjd:[4ckhEt4hpc{6f *t3#<\?=8ʟo7ŧ!t0*,kΙZ@2Q 3Ghںc_7ܟ(_džHA9ё`\E.OpҎ+OI"yZZJ!krZi`p-„Kh)L>*Wv=P [i4U O#U Hl_"` S!1YpăE|N\ GFxP}s'yA/8Lu!$6`;ڿt@M%1 Y%^V̩J| /V16y 42!̡#йˌ$diM W';:;W(< s"N{oX-R%WO+qQjw` 4AI3TW&1~Jӣ ,%0^oĺNWr)3(dVUH?dv#*ulxQ!'=nD 4/gFH\YJr􏠆 ad)^Zm6!GThOn{8\pb-Bh  锲 ;Jaγ9kyeY!Z\46bc&fϱ77;uqDϻPş4:[ӽ7ʙ|5{XE:NaGT쏇\_#{l<$^Y&M$a@7@AҀQbTMÂ5?/R0B> stream x]qc)NN'/ 5xt˂aYRg{:)2zfzjgfoIAdcտz7rUpjV/ǫ GJ?\>} iW'Gu彫,V^U{rnuhڜݞ|yt_lJ9t誮]#ۍr<“ͱή6Zrޭϫw~4'Z__llez}9vֵW[v.7~?_oDSYSkm.cNqUNj@I6_O] l|U nF/j39EZ-rc F)ÈJ gvd~jh D6Bt0cjaC@DgMl>f4s\|6}m:62v\#ҰjoPj*#]^* Ӎ++SwhP+knC4gU^n;JUBsp=T:1ޥO6؄2U-M< nS} 6*(5\g#=BT3U^+4ȏҾV5Mץ6t`F|8~eemaN6Ǿjx}qZw)G }oB~i8(X_:OTzJO_Ҧ9 ~ꪱ0.6ǺT~5*gWNk9ҁ"i '|mʺb;v@XXt6u wW>pۍRM7pi w+z7ITTAc>͡G3 _Ίc\*7v.K5v)Fub䭌.7 5[iK_Rتim..ӏ8:W@[Dg 5QO! =^Yo'\|Fwt4ho0"X>6>OTTe*}JJ_WD{۱(+<}<rQ.>!+@MAPd0]m⧩%sݱ~S{~oXl559HXzIiu a X-CVҭC=<dbL@I) ߚR~BqpoX/ H>+@a@HRh@8BĥBуPQ߅"\ݨu-bFH~paZk0N*jǩ%fD#97U۞4; 7U9寻^F4 8ڨ>dS4kG4?IeqsM*]̩^򻙏U} (_TMK<hI9"LXFf-Kk Dxĭ @lsgb̝Q;l#Lexgci }IMzZwiqisr[;/REt[qA?n1$珇cԝbW,p-B41;V)W-!\_XEpb] ϒ\:&B\iqI{o$a |*kjs殢c:]\\$j[=![xLⵖQWpMN2kM]d4#ǬGpZ^{siEK|;F&jrvVEjX& 9F }vtכ!J56 r m(D߻`7sY%i.c\S,Ź3告];eGj4YKֽ-yynYzh {h fRi!z¥`'; q K}}42H FEHF#-f72P `.%^Q*4M3ES%R{#[hAq渑G#<#8Bz0&Yu-{N4'gc㖫˫])Q\`L3Vf050[oӧS1*29G~LhCvR5rczq,/vڨRW&@)5i+.b "H3|:a3PukF㪯:-;&|-*=g)6'CPZujHFv[n`1x9KJlPLɞE\YJc'>[N7{-F^A)Yu!bW6M:=ioj4h+)Pl֮2ΐڍm"Ydh iy8pt;H`ƎhhG,QRDNN3 sxX/…c{J[w.@QB3*C{0#å;EMlo (7 a<}OsrT6h X[#c;dktBk}]hBp>@/+jm>SMeӑzd&N%#N]H`yY:C +<%L#z&}kml*BҬ_Ta5SKV@)ќx&پA@}ڡy/35Z X] q֬(LomÎ;@Eu?]la¿|ߕvlӇ7lt04y m xF+wCiax0`\YBG̑wX}O儢tFHw{']!}{wuN9U'tBJfӉ}9JU[$%Ҏb T/a_ FxBXStkQJBA4RGpY o{#$vGdf7Ps_anf?.2| f1ʎ:d1 i!HNTeladSZFSDg ScL&e)޻dNWfߩ(Hw`aQikDw- AKfe7S?O8.Z %aJFeqN:]%ÖerXQ$,P*xL"t0 jˮbҫ%b#.x(` OI95ѳ[L/{C) in\޸ #{eS{D;~ +Hr!L)XjU)@ i$ۤRگB6R^5g?.ryvvY|XL2xϧ^zݖbbHVN$,9i.4񜺮R*@Z/CH_"آK@]u!ѫpISҝpbjA+8@q]rOh@1Qd:\/M4gJщ #/'Vtͷr)`,82|}!ٚuSM(~灂rY]D~'  [VI"E@iXn2o4;B)*' ;X$I9krHm"g޲G߷ρĆ8Q4)$i,&?3EΣ|gh3!ҵ-LDYaQ 7a4 !ǺjB-gt\\ΥeO@ju u"uьGkIqd>;0^&AZZ)euЅtKIY)ʇO4>%*f!HQsL3f`rPi?s|N8&7!_LLTZIz :Y"D4Q8m5ݙ5POFWF߇Sǡɔg%BMIrb=wacC.my6(mQklNWy(ª4M/- =EcͩMQm3 m~M]U(|a.K8_!wp_%ik#VB om6kA@VV'bdw8\鐕Qx3[(dQܦSCa w V r?@Rs:M E ҥ_=[^0S -9K-Yu0 a#Xu>߉4_D>MGNʣyGf~\Y1fh%50(gu_Ȃg$aYN3˓Nh;[fnevYzGcdP>0i)i psdj!ev奛xҽb8Dd"@$ch(E16k-B8 \3]oar }k RTzk/>Gkk ;\6Hw]I[)"kp~3haj mpt)ck? !?mcsVRp #l-#N&[w`{$!Ǭ[RƦ3 NE(R0Dpp/C5&FdH &2,-MbnI0酼e0v"h5e!c&j 77koaO6'ŀIJ,;cb4N#C&0+#U째XrMPQg |vg=McU֭oy0M#04վYz,| {ά6}`FtJ|#e'wI+Ք+$+tT^YUP~PeH:91T3 %qǔ`=jO0S;y34!|N(q{6qC9jj.a9Xfpi3!oMNQ2k:o!$jm!.}I*S6{ M8CANa3=dDtp> stream x][o$u8d KCl#q$Q.( KwWS]UOe8kKȗBOu]O}Z_nXņXxq'WOO^F._|x/zx5;fu3xhƹًfwىݞ짟l?ڱF:)ݾک1g|'³Xx;™@Kλ>y $i4Bm/vQyEms͎hpϿj}i,<ꤟj\Jºߟ;i9 2 ~vy;0X-xf3O~߽J^v; Z@a ؑAdQQ"'qTiHf܄c_0Tpv } -;\ 7~ۘr^wVUi;2`S[;hG%gy󰙸HhwS(z!ue8 atC}zj<){w_3˼Jhw^8&x"ѻ.aB̬95v[gqbXL-PJ+k"`HF{Uk4ȿ <5Eץmvt`wvpac+L~b|إ9)ŔPpցLmBԦpJrDH%&0o ͌~ow {oZ0-(Mĩpmzs;B)d} @`ZvP*<9KE8mj>? S ᐪaz iD@o郙 uKT#)*I$0JF:L}>& ԼH w4YV ˆ0,"uz<Iـ":`נX㺤f^NHTlr@*Cm54~ayiGT3>Q/~ 4QʹLͰg7:ˀkb!_3b-5.-[h%RPq~3-J+YySp0!Zދ-y(mп!edOkLWxa@@+ ,ީ Wۣmz}ЅδQ&ʔ.ㇿkvz~k]KNr]c>YM èA^ FϼlT5a+e`OVB 0(#E?>#tv~J9_]R\o6i' G JO|X*X̍5u!{DG\.?)SL#buWzkP 1X0%I:HXO$Qtm?'GEFW٫QDxS{Iyw1BJ)$$}'!,#Y#Z?}p51 ne+kZ&fcXۃ羘ϋL7|{y0<YAa7(G_~N4^WbpO;&pc8e  O =SϿWeW< ]C=\ mdUjc 9zU z{P7V -yRMKͥ]Ԕkɏ5l>s^6Π; S,sUB# ɑ>N&E%9*@_d-]3vJD "$l=r rjaSH#D:l,fas@(daT{ǪOkuntmQtjP4~es2"[:.TXqֿN?k; `B]y󮺙"cg޵u0:ܭM'm&Tzk_[ V?s1O ~n1z&L)i/dl_:-ehuן&AFXAt` dPv&o" XY*̦ZSIZU(q0 5m)e75T*#}3b T[lɄ|`gA0㝎'UMofWͯj% q<*Kgd 2>CMe)`B|q4##gwuisL+Ȏ6qγoӛZu{Uji>fG0Wʚ5CM=ț_%yW Y65|mI*^M{%HUU ä*>L%|atӤ1WFׂ7DAjE(s|7[yكvdך-s 9k&M8и4\1^v;|"^q<>/DR¥j@7i YLOAG^t78td{+tYWwE͏4!"mqZ5QZ]ɬ|2kC} 6ep=9!R_D_NPN6 wIEʭRHc |>b%' EV@!NzZHk}fw+Cg 9Ei) e )=HFX!TG{E%GtGXecԊ8[Ko`Jb5.h52@SV] whLwIi!oF8"Qbgp][Kei6S*5YC#:7tJeJ$JRr|J=cUhN Ntt:k0TW\kΙ1aPq妁G{L*˖WS|GurhȬ d-L>_!d$0VџMd(>|l%\tgʓ/M]3b Ք(B)) x o"Aпs"aVdpF8ZAᦌD{FQ!= ZLGzްnʶnѹT!\ho`q< 滝\@.A!)YkXùc7tAXcZۻ@`\ u K-d-V'"ifY5>fJ$\2ǐ!-{;l4[ 0=i@UHۿ73nls$ߠ$AL'{LQ E%[AP 6rqcX^s+fԑ |=\rS.BZj&KkqeDkN&7feA?>.b*dQ=t2o'E*67Fg"[Mք/31L)-=p%MkWxWsW+"RWg{JWv6Ov!y*幼w9 쑢4Dx)M8#T{Pe&ZYB"u!R"e?E,t٣մp#6F{ ׼.K`5%რ;:<8B@ag>𬴶,Z~]DEQ+D?ha{D2x͠tEJ ;ijzduHic¢uLS33ns~EK5*PCZ?PH4ymc> stream x=k$GRBp<tpHI-!Di\ F{y=>lfzgv̮לOpUUUս=f~( !|vzyxI<{t5(>_=kxZ^YԵ+i^E SfQ¹r:{pg,?YrJi|EY:++YTu%Wxվ,Zެ+ny^/g;Y^UJz ZaIq쐼 /V)5~x{:QWt].VpRK _ ]aK ~p/WuQ S=^H!݂g6<+/ۓ[c|aHP3D0U[4+C]Jzf%ĘRT~~ HdqS5cWpг, x .t]~jqqmsl% SRpGYUpt-?2|eQJq8dE {JƇdkv]wγ8?>\yd4;xͤYjY[giCoaʅ3T*%jdsZhڔ`c/$Kץiv.Nl ~g{wv(xU[Jg^{7OJ[ßR{ # ~j[tLS2 hAE l.ׅ@D # ~pt#hkEw ދ0} k& ,4("X/;1}$3W;'Ct% <1N|Lk?n b<Ҕp562A[RN6ag~êRʣ+`ciZJ_ | WtGЮWh:|v,N%s^銛,!uYWeӡ`)GtcE:=O㗔~7d dA7!82hw.3@lO^_ǙpC!FbFQ<'O vz6M{\<jD]sKgAAYt+A e+K;nGH7t)}}uX{oVua:!xk D7!+K/1~3zN܀D@bf)Ux Ѫ# b(`ÕQ#:<UM: 1x?z9OdP-i戨p3 iu2;IN]fn8mww4aؐoRږ}sgbJji,D38xi$sa"%Cx|qBE""0 t$ȥC%^iiZXtI~׊w fH]/%O 4ehId,㷿GK0˄2"r׍JfE[y&&Lt ٫!pb$sĤG"# 2=%*\&aQv(N\:$vؼʤ3#4H(Uj@.\B>$<8'F'Oso&f &7`wJBUkaa+?-ʼPl$de6R+Y5 dcrp%-A"0BŪ*E.l 0̈́s*) 8dK'!SR 3 R YY`iτ=Lct7i諴3,nY9'ie4Q3]X7-S.y{YxI t(8biv ftRS[|x/2%Kx9ID qtJ)5{dia:6prnN"mpmP x@hIs_"g"xMA`}OY_+<tdC*hTOesA$F"!\e,H xإ tM'* gxZ3p[#HoLOPû+r3 0 TR5ٹ;8c#/U!Ovv:j6S"BFu>h"&JqI}^b⋸'F yGpPBU c2*\T㭠q/^FrN#YҎhD'xߗߏȍhNL΁&[s4$>PYa?$yҗnz8K@MGc 5>Ó$rB[E Wj oϚ ɔ5޶n^\wyj#et ōڱ`sle92 )BDFq(vgH*})gRZ6C({$eiJ t]4B~I @&ŋwCjfQIniޛ E#EQXFΌs6G= C4F I.F3f֢jDP8 R MEyDIt Hn' kc{0=W2c*sO3/~iFJ)% {(iuP1& K|F9x# SP+vRr?3]\saTȔvJljGڪE9uGAWv/ɭ)FwF9WwUfv=KFn N$ןpV݌No3c&odt h^xF2>r{@N%fcF0 #yЗ:ЇL/y{}HfްmGOo]P{ٵo;ok#`.WOw84Xvaw̜1Y:BLO#y{@03$I2 zϰ4svD2.D R %@_ҾħY\A];9JixF) QJEt]U 3{#!Ym4s>oo.A# CЉ̹gXK[KukV%cZUo@|ķl,i1 .a B Q%KlTKXa&"4PhUN\} =G.{Fs0r_"T<)'*ί%}}5#˨ '' MfF_q^D<Uv l<>jW<όвa9?z$[;+ɶ*`Z3$(QqEҧ\B=}rL(3 6gWj@TD#~EzLm{ܺs $-;p9":>ٿG=)ݞ3d=MsQ[ !lϭg w_^{&Ql.C?e`N__ lϘ3`j\Q% 'PJX+z6.»gVյwOVHg,H2٧OɄni;FyIU@lYUÂInԕ4=Kfe-Jvi_IQ4f -(s7 ABfcĔM&>M0 ~Wm(mI'um)k$K'8 =\lVv 5#l>r̓vr'> "@~lfY`bQ"81aI>:[ ~6JSJ].x(8+8ZT*y7#T5݅t]Zv~w$Fw6)j {[xe]ޏCۗL2 ̳}ӑ]yLI񬝈6spx&\akELYKQ gQ¤>}YTL|7х6Zx|ՋeJV~ؒvWiYLmO-t 'Y *fNx) V9^ݸث70 `lӒd;TWHNFNYicc5U{_Jendstream endobj 394 0 obj 5614 endobj 398 0 obj <> stream xَAdrH>r'sI AK{HwIvwr+#>@vWUWWٜkX틃٫=52k`xb&zx5;fulzetAu/?|V}^F:)^֪aY^mjoDu\kH.nLλ$^uϼ`Ljh.5J1/Y;1)LvY^OƤWa5N(a wΓ9a<^q5Fs9!-xf3NPsOdQ jUkA |a  6YkHioJK9h , h͸ #GP"3:.a׀ 3x\fr^x[qAJ}G2@ 78A,Ol1o<`GF o/5^H]`Zp"{(\5dnC$㉔)}ve4<BLѻIK0 hf$8iʼu㟂AY'7q{(x#XՈvWx(`OO2;oRIn#$Q}UC)M'M oJ LI̬t+,X/Z;BUU[ok $&A o0]%d2Ly`xEtjğH(X3tG.GI-DI,h>5uȣ^0] ږK&"9/jcA}i_R"HbV¾/  3 \<.4/dɮ JY=@gƃՓmJ?"#GhixS !IN(.@i ?ϣϧ&=F g9n{:ֺͱV!WU-B u^b"ȧW`deHYg!p|4!8bC. lP@C-|!Q q!o2ֽ%4<#1|L@?#7$(-H>ҍҢlošszC)1`yiSQ'k#39~Xv:TKR1.X#ZbD mϼOYl]ZRh`]h4`nak`,z% \[1g S~3wj5F)c4LS _mÄԼ@c^ GD8^W^. ##2bD渞"c2[ˤ‡Ղb݆rNW&nȾNIt1 Up0ّ>%+;1 BL +*wt'C߂ JxP*5ЍTߖ@ycr<ΎW8Նsɥ,AQrN'͆L-y(~um_ z9!oo3]Gx9Bw i3_",1k>'hȟ;'ނ/Πj3h$5.Y YdY2+6?sL wz , ١ sf de١#gJR{6)`kgSłMLbBr5q q%7T&zǁ45\Q.;bk g)p#i'V|Y$*)/YVi +EDzNȂ-`/2XfЩ6-vcG7I٬@pxr&"J0Lgl;"SM.N 6OdPԤF "Ca%6U*9Ab.ht\'ZnԪfG7zWZwj'MP'> @D{7bMYKP흷0σ(RVQ0R]kkIcH98-Vi9(}& ~trp쏮¼G^"*^%l 2 JR^EGf*Dm' }x !蛩X<ϩnPȁ>{<1:^we(*@Qpj (v)jZr @'\qS !^AȒ-UQ)VV e/ngBub&_O}ܺqE= ɋZ-SVv;*1M&YgEqZ^shHQʉ#kQ{:izfc5,G`{`֯#2*]aEa/­4^.cO![i;˲tGW58G( , CV &C93EQDEvP4'SFszaC " .EFcT{L@v@~+wjX`Z0K&Yln^T.MTy{_"\AY6sa-Ty'7s a4~wG'Yt_,}ml8WqKɛVQ>Ao*<[U~MeUEG.cRa4EC};׊&K0!G<2mvC1KɈqifr`;YJ)֙$&VC~WjW w[MnnPudDQ圴@|mX%i[ XLDt+A'Q~BhFbޜ剐ߑMB&u_NrNP/L ~AQp#Zi—^Q0zj-SYR1pJvAKVĸQFwG602bW2^cOo8-]Ic>-Fݽ_;µ0m) }@?¦ N$endstream endobj 399 0 obj 3658 endobj 403 0 obj <> stream xnrS2X`N HI^ےXNl3j5l\h$UEv븘𗁣g{N{td`@wg^v{=3snvlo>[|ۃ/hp:Tv~Pcr!:㍘_f,\83Y伛r,=?r1Z\ 5?ZN)%bh7 j n;œ̭ڭN3pѧ4%q$g 9HX߃s^&YG-|Ǹ-xf3Ap'e8 Z-֠>IX5CNpgI BZ֔FN4\pZ$Z3n H;òKX}'\|)UO7.4̪ҪޞZst;mpkđ›z!uCuF ;4jUaNqeyxc'f:Khu 'G_Aٸ:[@71KJ8T歳&&2cRZD*HF5P\-dRxs_3)+ٺa wv͆aQfƙ($! ..`>UeZ7lqXo \N 8FG~yX!z()6_E+1G n~J%Mc:1 4ϏCVL?BʴDہw:nA6XLf0ԋ7)4_4HY,x߰9'PuvX&:: [Mea E{0!_[\XD tߛ2$v|z~XMd9, )`jf. wB?ٰHj ˄Ckx]RݑvZ?1-_^z/z- xݛkhcN as٭!b]Q.q= ><Š!HVbNaM sHH 'TZQ _`"f Ȏ0|y@@+}.[Aao[#Ҁ !MR 6`2fyqЪn!F3~Y1>1/Aˁ*7-_}gL+f2V{'[0fج#ͅ=Wp>>DӵfVG >d ^Vtd<"=|faEɰ`y9{f ~`>=|vZ2we}H$|MOfp%x|a3)nt" j@oF=#|FP9[=A`*׽)&f!mKdbGR[ugQeGrz(;YN BWk6rXoƒNyDE ,e햭<!s*mc$Tcpm}5j!lN;qJcQ"U ߒV}BXnм<$zU}KP\b)P۾l3~Ϥ yT%Ҩ\ju&vx5kD pYOlN;x)SDŽ廉#B#T\QN{WN=qFfb RzH (Q@=J PS|01.@XׅV_VcB?Y-sm[a5`7TBer^O9У弚yѨٹL9/j \ulN;q^LDndrT'nޚ˪.$hJF0WM>t, i.F[C2 jԔաB\cs( vȠm8BE5:uaQfN"IɛO=m VOy^[]Y&Azk[(fl]jCJCd$wW$fjJ^hȎuF}3!)9ܗw ;55c95.|j9&IIz}@jhQ0Q=ZM;44j8&ʳܢ] h͑~y:=!TT4Fg]UvoxjW#Ȅ<JUrcҷ7PҌ0EENmymXp*\RSw1dqOӫtPU,蓷z 3aө}d9 uv.R wLɠ-P+&BL4m7p b>+qJ<*¯_vjSz\J;5ܔ҂שZinlN8,Utaj-i44&徹Eyy{W7O/1{yM9 f:-अLQ_gl#| ^f96xӣ&1Z9/ $ `FjI8zrՂuY]CU'<1.zl5A̼T_,qR87\/]gJGDQpd$WwxwxB<[-Y H`$|Rkv yYk`5zZi|fp ~ XH^AS`4 Y3?=yy\ڎ<=: !!U@=~|YIUqB.}<>Ю>DSWB ?#}a坓K@)uQܫ֣ bRS$aw!h=E<Vz8U"WS:bS;d>Oꦑ^EgSBvtAi|I|`M#֠J>8\.xjendstream endobj 404 0 obj 4495 endobj 408 0 obj <> stream xZKI>84!r( B۹~Bbd 03m{f*3;#ki/#2"2㫈~;P@I8]| Wxx$ wW K/<PtrAs`68AsjЊX;.xr'_/N~|dDX!YލPj [h$qʼn`ø`:\O9sRQ& .)նC1X'x32C =-˒p5 d(lmr-\r7'3 C db|ʔSyqقgfz&.9[ :R-G\=,7C1™x <˭;F:"4ϗ[Ri$.j]U 8X"˂M?Ƥu2 ◣J%ӾxPk!ȈҖJݢ?T;ŝ^~3@t\(ĝFNZy*j$qzi~Xb/Kαzۿd髒tFzn'1>?1j2Ӗ'!T5}'INg(/+hpzi>>+_ %lkc8U7&~kvj]τqUa#2VK8-@t,]g2KD,diƳ4F 1h"mApW,Df/렇A3En%'YzF91"(])"nم4T/+8}]fY!ohÿj\we/%o0sPM'r\I)ڧgסnrmù%@_z `.0pԿߎ#Y!K_aXhr?,.`B1=/R[/.Z 4ۆv 嘪ZtTgs]dxB9 ]V $3XY|UtM&Ԋ 7ڷ?uǩ_;nז9/cZ~w 97 QTO'wJ"?Vb x(zƗ4m}sK0D m/esdS$Gq2T12kWPM|E+XS{Jg. 6ՂlfYk?CTxT&TЖJ26\5\mJ\|C!6 1z/Xez/Tr/o,nu+Fs͙t]Qx;hڡ#ȧ}OF$ᮦq|^[yc֨2[@3Wt5 EGa\= g8ڑ@B8tҞFXkpD0HPD,\]ɠ!LZAGX97~EoPo<\; ZoPlP8Վ|t0\Ҫ,y>t]1F>$i 0|Pj㦡Q|~JI /ݦSM^kbͰNia]RwkݡF?G8]gzhZ/&f[W]IÊ)"){Cʸv$ɵ)ډ[p8IՎIx0¹2lqawH`CzpW;dC8|RY"[\!6?v=XY8oc92I>+4B+ V̅`:کzkqµ썯8\v`7\3-io.+::1Q"ǍA$>w0>佱_'7Ĥ 5>V~endstream endobj 409 0 obj 2898 endobj 413 0 obj <> stream x=[sIyEحA%*l<j5L_{ KXH6`]d[Ȓ/Y39nwM x'ѧƫGS<||/zxQy?WlۜDIzRvxT UlY>qcઃc;"#xÒa<Ő OX:.<|zt rIrH"^$rNox$Iz2=i8 Ѓ2YA)6`i6]ݴz´&X:0>KY ]Q:Z<_ {VO( 4VvTB)wJkŷH؞` V/Ky=hVrZS$5f[jUzB-T<_]!vJMF Ih'YPڋ !J45IMc3I 4cOFPNGfP%A ^@0wh,f"Œ@. _ j6 L#*[QmP`L UfG^$rSJMF-6pbb7Ś+uC/#T bQ @Ld Se0Mb%Sqq m$E.s00Sk*ُ3*7IAj`/[:,]uJ;1!!/5 +2&Zol`_'F,`/I|s-Zw[AT^L72Iehڎd4hFW$,a|hx$REAK|]}gANiqX:s`8WIrRLJ|VYFfW鑌*s9DokwdF(kCIV21q"2N"fӗ[;K^2<~/M->H[$o>'55D2VsJ[0aߒ[DܰtmI 'CЩfCuu",폺f\u!Qk$ iv,|%QK.w0܅ci9tᘴ<.eA4f\G/*Z3c*! NKF PqaMqGO#yeRb,ދR rDo8TF4c +_\`dRmpWDJ=H?#.(Z\ )1̽%}6wgt&>` `6 Ѻo0 ʙ@:hooqfcACe49>n:qZ+8 ~ sZ xh\`Haih9v2E>€ :hK؈~yRvYY bz?awΌ!j4^lv'S}*\A/+a߅׽]؟ӂ &n >{jD׼ ,4nj ):v ;|}diC <0*hkm =S^yH#! N?O\ cO961BypgDd3F8),ҟwInd:>;s F3g5^B1InQc]M%^x˅X7˞o̸̹ N&H h1jްBALAJ zJARȥ,G.;Z> r4j&A^v23Ҍ?5^M%rSvAu h<)\J(ii *喌yWy:FfY+z/H "D A}hQP?'n!! S7%4"Nix\ZZBV4 $(oB^ 9#ĥЗGɦ%qcHT}2$gd`KV\F Sd8\5 ^$$&3 M 6DHE<4Iyo$B(AMXڠ0/M,͛(OwQgo6rP:&RyWTǎIe/ Q4"9Nj\z8UVn&q*-#+aPAIh9 q4?ȄH:?r tuvMj@6CS.w.1>,?E4ma!*ʟа\'Ed,eFGDDx˚d5IAȲ6Ŋ! &Tb~׹r.j E5%^"HX~"i20P(n]@+mȘMI*T~.f>!;@1SVii7DG"` e&3hWsPp2]aF&F@g4xi]\ǥl Sd0P(xNt $Kϣdu)D+LRt2n7{ֲef27)TYx͸c5 U4FB*͟ Ϡ8w qzjawpwsl& 裤f bsRVkORvȭ?+f UF!BGQa]9&V<0[Tg6e::D WU![EXrᖬ3rg>{e/x&F͜Ei$\LC8&T'`r .:=^ZNDvygVZ\|Xqy6kܴ«F$XJjO6ilXa0,:8'kY2Kʂ-/Fd7_L?;GF 3`}vw*l:, %+%"/.A/hkgUX<eLA7PF2T>Q3EKdq* MUX~3wk9n)+s6=2rd=A,tM-;҅ e6D]9*0o.%&>i^c}bZ?d-Jl8ACbKf5 qzWvweiX>cOcDnmD7EURa]LPck1!Y4LNoBBy˲Y S[v0W;j}ϕg2xU/t,7E^p|(K~ӂyy,,*?kv\j1qÀHl9„\0f5 $i]DD]6žgE*A7i 0!Y?Y) ձB('OU;2,P&0h"1 )n&o ]e{@Õ@p0NzJPT/w!NIN K'(r`h"} z5 x" |'Tc1 }Rd; -J}jBKb_QxEIf忕JǘxMN}^f:\_"%!xZuj^W3X;Ѽ%Rh!ew IP^Mn~>՚rY47VyibK#.Hg f8#/N :eϙMD,>8c^aqn*('o$(mc98`'־>2Ni 3 eq[7hC NY<0g4P*7Ș"#:Fb hoVVhBA J}6Dq;ML)Mn\r<)"UML~@\b rX_We3Y"R]IV$gW:>@_MDkU->`Vvx=|YMf!"ڨӨtl]hԕLDaLC}Hc2cF5.(tpS$Y-FRFY=ǀӈ=Qp,{ŃZ}aX &ϷqqӴ> stream x[Yo7~_я }d7 $yp0:,y#Y,CYbOz.X,+{U0^ׁ:}??tnb]TfOf&8gQQ*'rNUZkdZճN\v|25% !Rkt^sӷ8@{MI'gκ^Td& .G%RR'a3ikP/;;V$QcʪrɍGg~g,9y3 5O#)rzC埙BF6ղVJ pάn l 5D\ !h^NS3OKL;"e*.jx͖35 4xIT&{U*َ,o5ZfDiKY|0p% /# Q U0绚S~4\6ߛlIO0s񊗜cwlujw܉>|C1d%qkr08br aDލC  k ̛b <n2#K:*n5&êyfi{ogy a+G\ o{HMՕf(\ܨx-KP{ 5v~t^w;&?O~-uӕՠZpXxŪ3L%zw+3Yieq_/[&UWNibˣyB $MBUB_#NzhN,ߦ bf}@cۄ.jC]8&곍:hنvӡhO+V+)Ԋnr)g# nd32W{EasAqa.P'OE˽#FqnMSBa6vQ/wtlC0kd\`9!DDwmhƍRR)]SVݤ .[ӸYr˩(n;ImL=P? bMO9T?z>yՈ %^S}z4/{J{. -JW_g4)⨿,O^n{- ؅.Sgf\HC]|}BduآG˽cB5MZD,Ѣ_$riOpOqEoS…OCPyxQ3EG5<~(M B'^,ƈZeJU|"dO6\} _kh&kp5&Xv[EłڤO$xAھK-ӡ>O*>EhleBx 6~Ts?O-BnKyh~7`_-|esVrnf~Y6rC7h%S)yn>6AZid`<~'9 ]mY42*,݃.:0 rа ?*KjCԘ{ԇ px}*͒>¬^rendstream endobj 419 0 obj 2202 endobj 423 0 obj <> stream x][uF8m&@$m݇fd"L&)=vs9"[Ro>cμE֍mrtq7A؄Vvq4@=^u~y E9T(zLW@ M/E 4שH'KV4쮝:v~kfk؏67)q734MI1= !F[ /nN(۶roakxJKu鵟)2JmǾ`hL^΋_(ik~pVVZqImǁM#`n= J9wZm+ׇk ̸rqk!Xs`gS(wmk6wfAnDڋt㽟Hcj?#!%/@܏TusõF 5w9v \赤AV^{ rHǘ#=JF5_ڝ5<6w4A:)Y:Iz6, )(F#t8^|? g|LˋXF.i{:]I|hiD/Gu$XҨ0K=#0g3͎#|ߙl\ヴYEKBo{<-bfb2\!xGj!ޣݗ;rrܐ&hs3טNjMhG=;A PɦbD#o/iH˷!AGx"M/}2=,L_d$質-F!ڸ`ɻo҈NGo~Sk{]=LҜ`xhDDǓ: GSrӁ< Ca鉟d 'P'Ztė6;}jA0;Z;*ϩx`IJ9m¾{6uEuO&FybOTECIs]N)I ~jݰ@KlՖJX kE߬N;7XM:#V'|ǟSO;Msr)Tڌk k}QWpw@) QV&ΌGB7^g%t;VJfAA͟T7q"ģ1At{Aq}bN8cxocj^X{iRŪʷgQDLQ;;fq0Cm Y ,%&\ɄfL21b4 YpL cu93/B/i{gG] WĮrwLߠ[JPEμGF$c f>`py31?iNZ.jNL_*q=C. %)K-$<#\KggpMO'K.4q @4[ t߼@J#ba2`lVO f*zqf18M/("bM119{Ҳp}"8Q…YvX -IpK#) 2d-T|L2Q ^yܢwޡqKm2C Ƌ'J]1>!KrdI;Nk.,3L;oGЇø~B9W ]x\b9NalW"3AR@+GZAPjl. )6٥|GCTFpӯY /ixؗ4~: A.GLZ<ÔAѠsZ~TK qq,[ U#85*g|a.+=P .\R $|(7$t6 %8Hʡ(kF(#f2, '_󔻓mhu,rwJSNiz'`2sBPNad%rB&IxVi"TbIPle2<濜*Ȋ e?뚈#]ᅃ +QiIc_M{b\nj̓̔<CC;5ә\riҠr.'A[K~Ǣf* M++ j)U {xA7J9ҡ7 H20"$/=PoMywp<1G&a!y*X毉Lo'vĬ'LsvR8BJ` cefv E .'NXH鍀j}6giAW,șG ^zCI]31da$VIC1{OX9 sJ4YIԲf? 5޲φD>|QمPgb!j/yx^(Y&>Db1 B)YC,I R-sigf10eA)wB;Mv0;9YqZRJ:ĩs6g,M'4+@!i !-P:{ܯgiCДxè1$hl^Ҏ\mtr0,QrDځ{[BZ,B&4ɶ2?(,lܺ j-gB2*sFrU]x[L9j"cb{jEt󁷤Fm{⎴RYnpg4̄IV;+2?UdXOwUI$t3nkfqSj\ZRLg~0S*LrRV_Vw汭omFٿ ʤ ؘɷ>0AG0@e@Ge¹UKRI6@`f:Q9agp<)U<µ=ȪY[Wȧ'07jf E4veʙZȄ$-X Zbi?9j!/V>ի< ؘFeHqedg90"JFAZQG%*a Me|/p3m3B;FHwRXW(]~fH`6&@.h8d% oqabgX[jW8K#C.gf-Y +vSфqtW0^BɏHE&_%ϊ8pai)+N ѱeݚ 2m*rcdC.4^PrAx>7~ܜkۡx=ʴA 蜞|3zLC]e62637>ؚ_x.x.oP:{Ӈ'*"i//aODusX\dAJ )-y]ypy&6}س>J. fܒ[m-, a zJsD7j'ptݾ׾7tf| [Z.u6rhlh{@Y2J%dgk>q/|@F˱Ccyё[}u!KwkKg6|4'"$3Scw:: 3I @HA-F)voKbKoi3RHf6x@]Q6}E8 8>xm+EO[D-ǃƌG*+5]E' HEendstream endobj 424 0 obj 6611 endobj 432 0 obj <> stream x]Ku^$Σ $ wK)R"Ǜ'N' $Jɢ)WWgdRC;j{#R|wd}kj!w.ޞ7'ϧ듯NL |v3uo;:ijkMgmջNޞwٯO'gyԭi[+U7ug;nëT֭?TX ?w?dӴT]E+:5Rmɰ8C|~D_wQt__S:78:ǾT֝iyr#"Nn379NZnթ{t>dSwSn8Y#y|IH󲠒+T,Q}%4%&bޥO+lu#uzh&Rۛ_>z$<_m۷3Z4F{MQyeLmZ5qb*H#Uɰ6NcOvNj4pOjd0imm;!Ww-yg; ][%^UvYU[˶m38WqBiˁ^e!0M+LH<5p5JY!aRv@œD:LRem_}钴z[;m%tn, S emE`fVmao,?fbۦ%8t!ENrF66QR&Ibz*T ψ*>cv\wd\|;EyT JeįT(a929!D\aqB$„ZWQ0cr3nvvL1N"18ON=d)4KцS2]oKNAi䛵-kzk=eRkS_R[J+>9? T'*,S"U7l;e[Tɘ%rfwJ;;׹z'l*1n8k$HpoOTJ"Ij(!AX7CrI˽/>1}[a GpȀtEARLB0z;H8%äQnRo!xZ Kc@y);ȹ9mFY B"g 9S2_FKd`hs}H4L!0#67"#Rlc81 'ƜEiT #IPy:-Z }Y7F V[]CI έ׽Øے1CTᱳqlQv5/zFAxho %y¨Ut>nĐwm )d`1O6R!Mkx` Vk)bb7{Qip{S5 :$ML !WS;@;%=!OƸXFx2z G&q92_?Dw?3"-y8GYvS@w=*cFHQ 5B_xšt KetYmm/0pakDyZrS`_q<=XDZČiR^a[*Kji..F1;id?.#?[X m2bL3@SHD 3s .DFGĀKY) uoLY-OY S@^V9CxY赭$|WÁCk'eRO_ogk#Sh;e#ǦAZ+Vb7j|=M]XVޱq$.Vy=K` a|p|;껶q_}C` z[xuSKNMɃF]p E//q|T/.;WHL-Zy(.Rsz)'^/.q6!vgI2"0-Gf!\=gp}t $d)epKM8r|}>]ߖ3rώ/LBO*iAu;쌯 I2i[$L߷$%1۪U?NpxT7AQ[jq%XZ6Oۋ\:LR7m] -#ҕUDbޔ 3=$67]Q /6 d\#%.!EG%6~dNS|3\}ar)~,&s2ƶ2FMrDbtչ?Og,DiIm(<ȻrFȋƑ@wb0X ne fX=L!ᚧ/-̍TPZ ԘXMʅ6L&MLj2Q_3Ws]R1T`% uQ]"9,^99ukXf-p{MZJt_JN3'i \zKg)3/0C+;Z\\FSoي^1>L: 86np']ƿ̏3"?p׵>5i0t@]iʐYFݡZm "pN6 7qY`) j }slX931/=jDRa.YL&Qbl->R=m|TO]TϝmY> stream x][q8AA(7$s hz{.C@ɲ"Cdq p7JZ.W3tLwUwuzΊ`9=}]q]vٓ>鏯9nr룡jݟ>{r}pwk}|zyTW8Խ~Vc[q4ǝx{=mU;7϶Wݶk6Ɀb{Tjn|{ٞq\{0n~eke~*Foζ'Cu=lXw9u~~٪L_wlwY<]3.C54UyJWv}]?=?lvjeFûWR`O˰[mZo1yDFUy3;qDíRJr*7cjչY"2:j*e_{kyh|E.ߜ:è~˷6z7}sz* bWv%^iգ}%in^Mk鼳mk:mñ`#\lF.d[s8*>.CγdcWx[zuĦZSՍPvpf2-n&wö[XC-jīiwMQ+ MX1 ;o=w-? f':GƔohmO=6X~ n}RGJgJ~mR;6mlrފƦq%ת׵mnw[?{ukfS U- {:,3myM[ 쩿WvFv?-vf 8Xv72 I{K%8j3uWT?Vt{2ViMjt68ah0Qʉ'+f*!&⭗TԬ1{L@Kz1^1ih9DŽ99죡2r7"DD%DnBb5Jf}V~:^h|/ s I_VDߕ+8!oQ0_pKp]-Z8&siFX0<ʦzЏt)uJȥugn'rL%g/w֔C \ei:ak4L?bG>O\ab!g?`3G/臊S@6d"֚ظZ(Yԙ^P>b ǫtD[5|<02wOs_ J`y`S$|De7L%Ig1֬[cZ{bK5Ts*"NH`WU琐6w by{ͺc pf˦wPs'X^EKU/zD;L1՜ѷu{R~,ڢjV u !^&s4~&Ƞ琭f^ C@W38] a6,9_"}63^OAmomD-F׾J z/V>53jIG9uL4C3*} VvW>øaUiƺR]T],/~9^]/\MSh49j]k^۩LnjϷ{{b?O7![;=<|Lz.~dzbcemATE&4USw\ʳ q> mf@nqNR (G,0h`cvNbLC%˒ }]|vԀb;e=bثm0c`k Z B*XUېƠ#)\dFk2ݼK/ZafX7eaC.l)pOA.G~,y)~uk> oЎ& ܐy"5mDN-AٗV\F9%PɨY7֊LԔܯt.p:o.',Z_rBzv, !fvqKV; 1Z7_@3b5Ek'Z+ٔj)XtM?eZl~7WZRQșGIF*:S_bfL͏H|F 7 ]hy5@X@t@&3o<)գ* £>'PBT_#p93_'D52Co5;R<$wHN^NiSOt~\+?tY`ՎV,%ugu6ROھZ|tp?0ITJKxBfcIī^UݺNhNnR^Y;Ti#v' [D|cJ@LurJ& U TUu,23eu^Į*1et߿oWaė k?`@=dY],$^,ޘu!01W@mU*vdMvQ\\Ov}S R2EO衰wDn4;9-9ґiMSI: "E,3<GHcG1d1t 7Gh B{,(W/DxOLS0|6ʼnH\ 2ASL1M8Boݙ2Hb%CX ;_d$-EB1ι |rySef{A*`;)σAHTϘ>;H'eAmbpEI.ЪK9.@8 nKmSnK=tj ;dgKt3Kx񣴭;68'4Fwp t' qЛ+B]NZsnQqn#T[7dzʚ_cR\Fr-09~8R|.|Q)fZ;+F"!(`تtoc9MA̼FU@!OHɽCV_9$W[=gS;_݈hq4xȨaگߕ43:q%Lf$?4u#rB)fAG&eA9")`f84! $|5i푿""'L$Lz9e &q$GW?@tn쵡t<厶u.H=)y%"X|K gC;Ʀ%ڼlIZަtJZ9yY{CXC`sD\Gf=eAӏ:^.Mw7gq%soE׫t^&+n㰣9M cʸwn?B cP*ێ3UQW H%p+zs;{qBPBgQ+4 אpw!9A|^]ҐOT38぀V"!&CLBЊxYڍU׎ O̒fbdcZ0g&<6T=s GOL$-4AiLLC4f(VZA#&J(UO/ŰpTr7}](R::pZ,҄aͺ:%D劚O͞a }Z(1E4G%롡@0G̜Ȗe&=d\Y 4X@dtz,ʇjw+bχ,#e.)|y3.Y&0^n$~2f`ЊIW!F.]gV7I&ZI 0"qJѶ%6Gg?uWӨVIŻW} 17#qrNInC5V?,f쫱Sy!Tx:4ȱ~uhd8}?XR7 Hʀe2Rс{(yJgp: ZIzuSIpv}ω ]Jw | LޟbJ"9aČA~X]a~G!x0=a&Cb*9 ,%{)/B~.R0W{ :|[xn E/grWe:~슸zZ "`Ԕ6Zj-9ب{(bEhKKrYTgԁ k bQ#]{k/wq!p T%m [)%I_1""u:)2PjE;"AZ'i͔A/TYy1 }g<7:}jp0pa6,ֻ 0u eh/i[dwRrn.^1&Kr7q1fpPԛ [?,7)~R"EgH2" a\![|A%?/OXO>X§TzzptXOY8){C`ldF"YDZʴ]HUYm"8U&=co;0~VW:f`\*P}uqA `S_W3 n`-'9t@2 3g&qtdOK)G57096`>Xg865e(ŔoӅj{C=UԓEt{1SO\گH 3=o +$Esz) ]0<׽W# y p)~1Ӊ1/FoCx&rrQ0;5kw;̟=FۑHpDausx8 fQE.D׍|l)LÝgm3ibܨ ߻MLo_E1\>t}tn̸0k c7=a, ܕҝrZuvrҥp` { SlʒUsW DVFb?y%x3M/.9/@Ȁ5y'IXśt½yXWnB na]!+c;?0nN}1TD$I 2ŃWoфlmH?߆Y.tt'&{5͂#7##}7[w4_ N.^];SlU$3}g~Z1kX-"56v}u+3vcfm~f'մD3~+&`!"Fl`EH.SbA$Ը4]ǒاud8hgbZVzmBgo- IZyG ,endstream endobj 438 0 obj 7726 endobj 442 0 obj <> stream x[Msܸ\jXXH 7{&T[=rKcYkY˒lU FiU+mVuϾ{խ?W~7>yդl_~\CZŻZ?Uh Z_]|<[BZެj}כʨ6fˍqShcuƙ|my5| >3uV9ν , s ?҄}ҝj]mq u7sigiyrUy5]lQZQ/ެUUkNFkF[[f{n Um+\40HH2ڷ[;1TcѼY:ZI܎J8W6?F#r%Q؛xqfo[:QY?/*jݯ;}Xz纭r5hpŪCat 3ԣ&ӟr!+fB) u,+[Uٻ }7mX8dVv8%AtmDs4䃉y(evк΃ꜱ6w `ֿ v7UKW6ƇkFQG8&Bv 8b9co;`/t=J" \>oǹb1=8[:\g %1pǘ:gl=:/4urkihۨ#ȕq+Z޽0 uXi.nioU+7G=*pLbDAvd{wvzϸ:y>p C-]Jm2 >%!4Z 筇g#s1f|*WG:D\ԅZ7=b@>X.F~8 Iq̰k hۍ̼1=,TDdh-a< NgDqKš8k[E gӺ9LQ'41.LNv":hO@Yḛ `e7'e=sa4-CXpa +dc>J|K$8U:}rҥ ̐ Xd DbnPFQX) L 'o~:O.}[1a~D8Ν{ sP̢;! "c[Z` lxB" A& Ƣ+-}3X}µo9e(^Y$SiG{0=̖b°.U:J. 9w |pIC/Sޒqd7-f|w99m켛W)zIv(k֒x3y#bc ͤhq$XYڡ1 qPIX4=8){k|!,JRPt:,Kfܩe [!;qzI7ѺS$4Q|S2ƫxi H ;LIx@7ZB0ꉃě9( USǚVZ40%JM(igAJ:qA\vd+ `Hgcb[g"ɢg rm9HOvuYZ*(a> 9)XObfNS=g&7C O&WB \DԵ f ,biv> N2ɛ.bs &=KF&j |qA̲֖ToWǘ.;\0x3FGELz~3%v!V[i }|G͊S՜n6oDY,&dkg{6-܋_̰a Vx)ρwaYRq2"ZR%J} seTd: v6hZLrW+!~')2Q> stream xYm7VW,]=~ChE[QH :(-Njػ^;M6K^<m(\dg&axtΟMN,/ :X&9gQa 'rNZ1kIYT'o;{0]+ΤMy^!(+Ӣ| &AX]4YgE.1g]l])x2A[)B6n-zQSr$ fqG3yiNTSj9*iv siq;AsA9ȷ}{ ;muKw*O6q `Yʝ&=q>|H_$F `i-l|_$ 3#o|k[Ê*n ֬aB;%i7EO=Ҧ,V^VDfT`. (V!blpb41QB|19"љ\TBf86 1.X"!Ӡc ) J#Ӽ CE ,,/nZN&r'8p15p+0n"WN)?Ie/HH)e ֊j=Xkq-ִAV(hθay[6NrEϒ> stream x\ms۸~կGsb~sr/m%sHƎN R"vE,^(QndvX,vz?g%szy=0Ͽw3SVӫSbc[^X4ժ*UӨV1b^{ִӞ0;w++SU^d|qVR7Z,n{uO)0zq_,4fqw7mi_cPRJŪXRJThZ4D7}ץVL{-q3kî2xyaJ#-%j?Zs-5O׳d\5 osBZm޽p^VԲPJY%h6f(^ nFF6e%ZySD)u;O*2hղJn#-; q;iTyykf҆qDYVjbLLvTыKK6RvZhi'vӡ~D3\)~5"Ѭ=)5 ӾHHH ]i!ޥU6^ ՟2!3nMVg[ê+'jDK(5@A0GZ%V$ɮq͋t[`oFvs ATwjuw۷-Bʭ!M7f;kќ92g|vx3o-=\nkyiZZ/Pe'˺=QFΞV z_}5[M{8_A#oΣMW/֮_wgnj]u{5u5o6b~5H+Vq_;62%uɑw@6[mrJ|iܳ}M~ OB?Z=a#CK o!^6܂ŧ.H 5 r)ױ&9'i;OtK8#L0!vk UzLAAsi[Ns<^2D rd RˀP곕gp:ˉ8 *b&Xs=XGO?ÁH-)KAY'qSt-_&`5<9:$Ub`}뭣.m"Hyi,+p鯮1i]+xO0G$m/(Aʮ}dCD)0.PƗ4_u˞/ljF֋gʰzP6D ?:.@$<ޑ#H6A}=bG<) ‰)Yr&CHӲ5>}6Ȝ"Vm QQ EBؗYApiD0R7'EAN!{m2F FL)D,#;Κ;^?ι:I(L{)]/1Z),_-zІuCq|Es;rz JY  C)T+ڴdIxݻ^:zқfdQ1xKD51Ef.p!Ci ] + Yzjَ:Jch{;i46&}"\|+CBNMF˞Ak +El7@ KH ྌ3N]Eg kl\G*k@Bºcvc T j#/%Z4!Zmgֺxx &m%_5ݐ9Ga(" kD{%y{By%' (͇һz FZ= @L:y{(j_ZP2sMRk1qS>zM * 1B]ᱣGSJaw:wԙҫa$kc HKYOw;[;+_o zѐ Hk=ou34nYIՉ;DAY?Ď[u SרRs]"Fp0sx:AQб z%\5&وjbj2;~jFկ;NT QT Xm6jڵ&7CToqggKW7xv r b[@l+zWd+;+"}"kWww 腪^ʛ!Ǐj>>Uٰwa,4M eJ>qN>CKrB=\ #17Zɉ$9+Z ǎJe5d)uyف7$``WH Yn^x)Y'xF\mL9ҶɁIpw_ewJ 7 Hr`I/5 wP?DĆ"y&S{ ;ℛ3Mz +PPEǫ ^- ]tWÀC~<T۩p#)g{f:$X4?i}M'CS@Losy]xtI .XG\c$Yv@#W0;P(|uKNnFۄDޑ%AkL@IcA^oHyJ[n:~Elg:X^i0#m (;c+P ޅ䂨9uKrKBүʱ{~{vVak3?(?)9 H]`+ʺo4GChx=- ck ,]l]&uG iZ¹N&v<\U=6ө2jƛ@خVX-ߜPHΈd tW=Op,wprEbiid舠x Y$q(fz2]EX!U+d^}e?REdhIŸ$%O y|CxH.\9 Gސ'Eiv gmT44gNb'OBHe7H"|O䢣HhA*HZZ9QUtH%"QIWwD> f  NDD;gPF:$Ggۃ T(\"}Y!=B1 D_ds2IđQR@D-7! WG SG}=MzK'})4i=Ϩ*QO[ Pq<;1K)_b>^SNP G}_4V@3 z?ݾ,+ȘHF~ӵ@i?Q5Aendstream endobj 457 0 obj 3710 endobj 461 0 obj <> stream x\mo7}կG.6i"ڜ; 8[v:ywݙ]\I/p83Cϛyٻlsyq9{?6pW9?5s1js͝sjUml1N0_/WM-,+Y75lqZZ;wmm۸[XWK{.VnwǛF*]+&\UK[K8E}wCt}S1SkH<)zTؘPuUuF$6XA`[]C!qx&=Y$~@W _5&Iqm'ؼj۫5F++!bFl6!|VoyT0nij3G4k'p߯fQp*:}iy@Q3ifl .4o;:>8ڙU=*c! t/욢;ŝ$EeSov/y0Z"k6bK(Jn}ox-XvAL'޴X:vkL^4$c5̿hl{M;k foabpch{ߠm~GaKlZz h#͐H;-R ēYL /eM{l(II&)y-lwNyw_=*LT;Nwߖ4cn Kj)4Z.YO~+h72g~,f)i\"b3HGw5Ms6%,[1 ލ4MaAPM=k'FdSPtb(aQT_C(-4Q?5KOCj N) 7KWqSz V9ҩ )gZ~l$2&Z0|bžY%0i+ k-)!9rkLDl2|2FAt&֦jܒr6b(V*@(UtBd9;5sФ Z>^BBbS uStZ[c7i`z$\¼>w(.0ru &&CrA"IQs+>3Cl6,8liuBa64{oprcFN9p<51 zg\$MK Y,21=fr 卅)Fx\*O=b\(M闭&hߠL K:#eeH' |JcFabI$ɝ)*%7#lIr{#AȠtO ?G5ezBP5BjZH⩷>/x9-F㜮26)CA[[Uvh{.$KGI 'y e$f]S559wNaoINAͦ>D]c?ǔ=|㟏ckUo.k5xU`Z35BŸ"b͏єVE}C^hڃ"‘%+Q!NJl? Mppz"QPz3f;SNADudv !F)XF#8{Jh= MeO>S~/ P%'&lNpCsCLNnE$Qx ѣg5\\Cs'M8.QHD%IzljlAӸ:]4\n&|&o)յ.# c2?#nO1nE:5i] gamk UiXI!-RVYQRh)~ ݌sCP+:2A}+7\Z?g8tJPPPHs6~\uz{=ǟݚRLȞ:u ަS{ԇLaDt:vعAl%dۺZ4h1(0feN\9Z?ѹNC7-tpM>j2 J;b={ڞw6 ր˧P0{W)ǔZ|ͦxAԹxs2sqHY#Xmw6G.rħ\o^W]Q>g lo$GrO0E/vJsr6F5 b 1խֵ~^3VӖv+8[I):5-ARt||78>D{0Ve+ H{^тxXJBS"='0`]Mwrqx+r?sBu<lABL3Z cbI6߲YA{.PCZuc3^սK[h` J~]bt%Gm/$SaɁhg XtIH 9^xŕ^iJĖlXo+|~i(NV7${sC1Dkuh>VUz#,'!hXIQ u3by6 ⺖DUxv7˜^/h~ 3`;;):!-*FAAlO|M-=Ձ4D}(j ֝EN|$Itj;<@cة~Cg79^ vF"i =& h2^}c'N|RC:sWkF- @ZSTPLa0݊=W_RgcNV %4޸ Uc=-ʻC[Qi@|^2ގ}\șjJz}9 Ħ<`&ޅ-{(EF "GʂwuG+)վb 3dwڬtɱ֎P{TI%{,DqN$aI@C[6QĵGœb$9t%9.9I&q6gT+4kendstream endobj 462 0 obj 3563 endobj 466 0 obj <> stream x\rܸW0Wy[n9^,W\,du,y^rn l'V n7p>,eq|^}\4O”k`bui%TjҊRYZ,/eqi.zJaꦐeU ^j:oXR0nXk7f 5vW@ ]*&\kSJYYEcw€*4_.$ih=׶Y FtMrC. S.y(^񝱎-jÓՋ–SVg{f3A~}O;n:KjY(v .߬Aj@h-Bz`INWTŴ?uB2ZcndÙZr/\L+6B9J%ynJ!sWnYuψ-GԥVQiPP\K7q7'4æ`ݣ!bɈK2<~.ӹ)&QSƄ*+ Q+iZx12yzpBwF$ޜdJ F_VwrMe۱:츍p1"7bЧvB\79qpɟ?.~]ڝ{E,Ym_{7icviaYzm{y <7TdiW#qjL4\CI/o':9 N (mݪVx*WM{vzR oР61YCu/L/Vy,+f / ]U[7gn1MDub3=Z>gnwr>oA y(dm<"y6me:̱]g]9I +jW贳5 V0i54ӂmaPEL -vB14Z9X{%K?=`vcQGl1:zB.Xo)4G @oEBZ %qJpw*1(7[0. 3rg$01j 0&yPGCBnWa(e^It -|גn@n|C>=H4%gc0Mi 8 7T\V>tuOKy'9we؅q[QO ȗ@b'HQr# 0LJfz =׭Y7^ 3!Hw.Bv.6{"1>:Ws_ C(.5bсnA:̏C" ص; ]WQ'rcδyy+$0 L6 kCX`wtu*u"qFqr򋓽l3rRH?AoH J\Hv1,-W*?3*jT$J1bt1(%9C^ì} ^;|hFQѰ{Gx"&ܠg"g#y^Qy]xKd1ZHgP܁ fMo%a/%jlz/eF jɨܒa !!ޢdxԯyx^כG6J 2=(\V41lnKmMu$4[ yTN̥W+TFr2~{T5nGN)hۊ9 Gz5ԋD ߴKz|g$_oQJ"Twb%|uw 7)v1z)&S2J0e!RN{$N!a8(7t97vCЙ"]AJ!* +3)`YޣbqEƁ^@8RoCfR6Ì'd![%磞ҢIA:{1dmZk#羅=ܞ+w1vXAQrze{2/33M3fM]YYi֦Bg9LOa$j| _%Qm0hnx%%b;agӎ#AȠ',嬪ӆ? Zaft.8!ئ$ YVUr/=##7Љ1HB ȳ=XF|jqj4Tpb@*@QQ/;꼣:>"lR1hQY}[f4*PqND b6ۅ}-{pw3r@0'uI!|YmRLPB nj(7@>qcdj* ]G]" 'D߻ vƇ#(p=`Gd>ܒz\~a HJd߉L&ރUy$eIY3Q@. [- )O9iSrF$6SaeH+7U# +w[Fgs-W;Lt:TEDhT܍ %q\rU&׷ij㎺!Y:?J%']h~H~{62bhU}1P78ꊲ_!Ҟ3wJ'J uiD9 보A`곴(vH3{!kޥt2<`V^` A\OM_-*ڌ~&jF>D%B L!$(#$5UB퓷$|Wpa難jbeXnA9>/D@ϫhйlVkԃԳ}׳p6E:d4r:7+T92+C/zp|7> stream x\IF+Kn^R,0Ybif4U]䫪"-$ -dÚ4WzeW{Cjaeml_r\Q✥F Skfralm(Vi6$Z6g 'i}r"zl_:]n_S*Ffk -X;nϷ 3D+*_ҰCo M/ŤunQRþݾZz0 0pE„O= Gӛo:.TNZvI_QI\ [7u{@fdÞ=bKxpCK zӑvtQOu+-WrMY-~&A4+[YlhAiVlD +:D&M2$FY䬰 <ߜмJ|JǮɽoR"5=KtԼj4t>Wf/W$cZ[m_(Oiaw[ wiDҊ5|(GHߓ~6H8>X_TUqQ.jHFvb1{ղTݥ7  T/|;U\O4ۯQ4U2` "D܈# !0 LX'Hǟ!*pw,z'eBIz[9RUhvz2RpѱyK^JdVsOڥ >y!R4DB^0/+}(}c `").:mB#Aq2a1#1>ۊ*PMi .Z91ar3XE%AAˌžN~<5~84|@|BPuoy2KbǶ_u/gʑ[Pa8Զ_ .ۼJ%{m;lPz ԽXWmfQ[S?ZZ̢GG*˥xIHĵJ/,ˇ5 ^n(mv#RU&v1t Pg@d>(釮1EeP}(mL8ΞaSPLdcYb|pÜM$2ǵ'%k/D2 r"6w"1@ I1N1{ ײX`m KVcw1+GJϞr\8QR$ f}j#PWF~A\RY/3IlZMjx!y`OyS_!H./pe4g-&*8c4T'z̔O׀H G>ݧyp G\F'{AiY#g<4e{n`.䭋M_*tA+sVuo <;.ګiB)ڜWjds\u6ly{N*I ŶC=5df8ՇFv0c3Sx0묍V;*4qDd3I9^2^V{;~7cQTTseDYbk>GzXju_8Ӑ/#ѿ1PD;쪮(0}tU/jp+R4˔6*I~T8*fE,uW}_cl"cLG^xU^[*G -scU2tT@24rY%jIiCOHeVZ9<^p~1k鉳\ A v'q#kI3?Zcr  eeh?#L\]FPyzeΟSƔ#ʈso$TS\xN/cL>}{P0!͋*WHc* F$a$b0bd+ *{~;JUuyT?F.+I_4ߩA Fz/Vz*T͢ݸ0Z? rendstream endobj 472 0 obj 3065 endobj 4 0 obj <> /Contents 5 0 R >> endobj 22 0 obj <> /Contents 23 0 R >> endobj 27 0 obj <> /Contents 28 0 R >> endobj 34 0 obj <> /Contents 35 0 R >> endobj 41 0 obj <> /Contents 42 0 R >> endobj 46 0 obj <> /Contents 47 0 R >> endobj 51 0 obj <> /Contents 52 0 R >> endobj 56 0 obj <> /Contents 57 0 R >> endobj 61 0 obj <> /Contents 62 0 R >> endobj 66 0 obj <> /Contents 67 0 R >> endobj 71 0 obj <> /Contents 72 0 R >> endobj 78 0 obj <> /Contents 79 0 R >> endobj 83 0 obj <> /Contents 84 0 R >> endobj 88 0 obj <> /Contents 89 0 R >> endobj 93 0 obj <> /Contents 94 0 R >> endobj 98 0 obj <> /Contents 99 0 R >> endobj 103 0 obj <> /Contents 104 0 R >> endobj 108 0 obj <> /Contents 109 0 R >> endobj 113 0 obj <> /Contents 114 0 R >> endobj 118 0 obj <> /Contents 119 0 R >> endobj 125 0 obj <> /Contents 126 0 R >> endobj 130 0 obj <> /Contents 131 0 R >> endobj 135 0 obj <> /Contents 136 0 R >> endobj 142 0 obj <> /Contents 143 0 R >> endobj 147 0 obj <> /Contents 148 0 R >> endobj 154 0 obj <> /Contents 155 0 R >> endobj 159 0 obj <> /Contents 160 0 R >> endobj 164 0 obj <> /Contents 165 0 R >> endobj 169 0 obj <> /Contents 170 0 R >> endobj 174 0 obj <> /Contents 175 0 R >> endobj 179 0 obj <> /Contents 180 0 R >> endobj 184 0 obj <> /Contents 185 0 R >> endobj 189 0 obj <> /Contents 190 0 R >> endobj 194 0 obj <> /Contents 195 0 R >> endobj 199 0 obj <> /Contents 200 0 R >> endobj 204 0 obj <> /Contents 205 0 R >> endobj 209 0 obj <> /Contents 210 0 R >> endobj 216 0 obj <> /Contents 217 0 R >> endobj 221 0 obj <> /Contents 222 0 R >> endobj 226 0 obj <> /Contents 227 0 R >> endobj 231 0 obj <> /Contents 232 0 R >> endobj 236 0 obj <> /Contents 237 0 R >> endobj 241 0 obj <> /Contents 242 0 R >> endobj 255 0 obj <> /Contents 256 0 R >> endobj 260 0 obj <> /Contents 261 0 R >> endobj 265 0 obj <> /Contents 266 0 R >> endobj 270 0 obj <> /Contents 271 0 R >> endobj 275 0 obj <> /Contents 276 0 R >> endobj 280 0 obj <> /Contents 281 0 R >> endobj 285 0 obj <> /Contents 286 0 R >> endobj 290 0 obj <> /Contents 291 0 R >> endobj 295 0 obj <> /Contents 296 0 R >> endobj 300 0 obj <> /Contents 301 0 R >> endobj 305 0 obj <> /Contents 306 0 R >> endobj 310 0 obj <> /Contents 311 0 R >> endobj 315 0 obj <> /Contents 316 0 R >> endobj 320 0 obj <> /Contents 321 0 R >> endobj 325 0 obj <> /Contents 326 0 R >> endobj 332 0 obj <> /Contents 333 0 R >> endobj 340 0 obj <> /Contents 341 0 R >> endobj 347 0 obj <> /Contents 348 0 R >> endobj 352 0 obj <> /Contents 353 0 R >> endobj 357 0 obj <> /Contents 358 0 R >> endobj 362 0 obj <> /Contents 363 0 R >> endobj 367 0 obj <> /Contents 368 0 R >> endobj 372 0 obj <> /Contents 373 0 R >> endobj 377 0 obj <> /Contents 378 0 R >> endobj 382 0 obj <> /Contents 383 0 R >> endobj 387 0 obj <> /Contents 388 0 R >> endobj 392 0 obj <> /Contents 393 0 R >> endobj 397 0 obj <> /Contents 398 0 R >> endobj 402 0 obj <> /Contents 403 0 R >> endobj 407 0 obj <> /Contents 408 0 R >> endobj 412 0 obj <> /Contents 413 0 R >> endobj 417 0 obj <> /Contents 418 0 R >> endobj 422 0 obj <> /Contents 423 0 R >> endobj 431 0 obj <> /Contents 432 0 R >> endobj 436 0 obj <> /Contents 437 0 R >> endobj 441 0 obj <> /Contents 442 0 R >> endobj 446 0 obj <> /Contents 447 0 R >> endobj 455 0 obj <> /Contents 456 0 R >> endobj 460 0 obj <> /Contents 461 0 R >> endobj 465 0 obj <> /Contents 466 0 R >> endobj 470 0 obj <> /Contents 471 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 22 0 R 27 0 R 34 0 R 41 0 R 46 0 R 51 0 R 56 0 R 61 0 R 66 0 R 71 0 R 78 0 R 83 0 R 88 0 R 93 0 R 98 0 R 103 0 R 108 0 R 113 0 R 118 0 R 125 0 R 130 0 R 135 0 R 142 0 R 147 0 R 154 0 R 159 0 R 164 0 R 169 0 R 174 0 R 179 0 R 184 0 R 189 0 R 194 0 R 199 0 R 204 0 R 209 0 R 216 0 R 221 0 R 226 0 R 231 0 R 236 0 R 241 0 R 255 0 R 260 0 R 265 0 R 270 0 R 275 0 R 280 0 R 285 0 R 290 0 R 295 0 R 300 0 R 305 0 R 310 0 R 315 0 R 320 0 R 325 0 R 332 0 R 340 0 R 347 0 R 352 0 R 357 0 R 362 0 R 367 0 R 372 0 R 377 0 R 382 0 R 387 0 R 392 0 R 397 0 R 402 0 R 407 0 R 412 0 R 417 0 R 422 0 R 431 0 R 436 0 R 441 0 R 446 0 R 455 0 R 460 0 R 465 0 R 470 0 R ] /Count 84 /Rotate 0>> endobj 1 0 obj <> endobj 7 0 obj <>endobj 20 0 obj <> endobj 21 0 obj <> endobj 25 0 obj <> endobj 26 0 obj <> endobj 32 0 obj <> endobj 33 0 obj <> endobj 39 0 obj <> endobj 40 0 obj <> endobj 44 0 obj <> endobj 45 0 obj <> endobj 49 0 obj <> endobj 50 0 obj <> endobj 54 0 obj <> endobj 55 0 obj <> endobj 59 0 obj <> endobj 60 0 obj <> endobj 64 0 obj <> endobj 65 0 obj <> endobj 69 0 obj <> endobj 70 0 obj <> endobj 75 0 obj <> endobj 76 0 obj <> endobj 74 0 obj <>/Length 2307>>stream xl:AbAD/m6~hlTLjԱ])D SU !% ) JDI{ϿRwݞ;YW;W}]aUaye1(XQ0bsUa,!GVoXT]J b+V%QYUZ7|Iy>^n`Qv=C>LJJ6~z{_3Y]OpWkx^)GVϽ`Eg8IevG[B* T!V7 4ר)p `yTQՕJpHN+Fcsϼ#&.SŇ Ec!o 7Qȉޭc2`0%|=4SRnlO"K 'Q_ ^@'$@*([OHv SђemأiBq0db&9Y'yZYPTÍۿD N"}dM1ܜ@^&đ"ʑ_lQÑd uIX\ZluT1=-!H?j)EGK9 6^\<;WMr)&tq .''?4B=TB  ʠ޲Ym`Vzܿve`ykYOe9\ހ-1V`/r1RFK LiԹRhbJ^G\P룝_:~Z%eUgHr//ф=((Foo#/@3r7X3yM#/u0jo=2TJ!/KP!װ["$˰J k4/Z%wGtB4+%Rh7+#Ф tPF!O,ߪ~Hh)AzZ=C $41Gَ4 ¸I긘:ȯ$ s1lt#xKdFΘ8i%^QXѯ ݭEAKM[j($6?Rɧגּ@;޳mzW,j:kjܧC}wdWV}~bW¤d tUC9&r27NgNO;n@)t2 fI6ao@'ʍfkh,Ga™|s85UZbKI&Bo3W2HF)F$::W/hI ,\ClY^9H2uk tQH`^˫Ub7qmU?iT" m/׀o5c I&cUW-Cc|g&evG07+ ,޹+\@"; _4w +V99-2ͱE$&Fer WxbRN2GR~O`WN-SW+Ź䥠Ri(5Sj$Gv-(5S'cf hAkL!{TI?t_ endstream endobj 77 0 obj <> endobj 81 0 obj <> endobj 82 0 obj <> endobj 86 0 obj <> endobj 87 0 obj <> endobj 91 0 obj <> endobj 92 0 obj <> endobj 96 0 obj <> endobj 97 0 obj <> endobj 101 0 obj <> endobj 102 0 obj <> endobj 106 0 obj <> endobj 107 0 obj <> endobj 111 0 obj <> endobj 112 0 obj <> endobj 116 0 obj <> endobj 117 0 obj <> endobj 123 0 obj <> endobj 124 0 obj <> endobj 128 0 obj <> endobj 129 0 obj <> endobj 133 0 obj <> endobj 134 0 obj <> endobj 140 0 obj <> endobj 141 0 obj <> endobj 145 0 obj <> endobj 146 0 obj <> endobj 152 0 obj <> endobj 153 0 obj <> endobj 157 0 obj <> endobj 158 0 obj <> endobj 162 0 obj <> endobj 163 0 obj <> endobj 167 0 obj <> endobj 168 0 obj <> endobj 172 0 obj <> endobj 173 0 obj <> endobj 177 0 obj <> endobj 178 0 obj <> endobj 182 0 obj <> endobj 183 0 obj <> endobj 187 0 obj <> endobj 188 0 obj <> endobj 192 0 obj <> endobj 193 0 obj <> endobj 197 0 obj <> endobj 198 0 obj <> endobj 202 0 obj <> endobj 203 0 obj <> endobj 207 0 obj <> endobj 208 0 obj <> endobj 214 0 obj <> endobj 215 0 obj <> endobj 219 0 obj <> endobj 220 0 obj <> endobj 224 0 obj <> endobj 225 0 obj <> endobj 229 0 obj <> endobj 230 0 obj <> endobj 234 0 obj <> endobj 235 0 obj <> endobj 239 0 obj <> endobj 240 0 obj <> endobj 247 0 obj [/Indexed /DeviceGray 255 <00FFFBF2F9F5F6ECEFFEF4F0FAFCE4F8FDF7E5E9E8EDE3D3EEE6F10C08F3070A 180501041E0D0913031202EADE0B14E70E061011210F1A17DCEBE216DBCE1520 2726E02319DF1CE128DD1B1D241FD922D82E30D4DAD7D5D20000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000>]endobj 249 0 obj [/Indexed /DeviceGray 255 <00FFF7F3FC05FEE4F8EDFBEFFDFAF9F1F2F6F4EED8E8F5E7F0DFEB0B110CE60A 0D1B07032412DC08091915E10F0E0406142DE51310021A01EC1721EA18E9D91F E3231DE016CD25292B1CCB1EDD28DE36E2DA2022D2D6D4DBD732262ED1D50000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000>]endobj 251 0 obj <> endobj 252 0 obj <> endobj 253 0 obj <> endobj 250 0 obj <>stream x} cؑn^-$$4 KBf@b pӞnoI3ɾc)0$1 )Ʉ0)L0y$>wжto'YIR d_(4'MrMWE#A?" I%K,*.v>OyWc!}D)u8Faw)nTl[d|f"Cݘh"/ף(g$ꤷM]G6dO]F9!#ETO0!vlc?wлL^.Dd9O@NXGC&iiTq QDY-u~ՙ[ 1Ijp=3:JۨRon~?Kns5+!(* VRiBGQ3%E cdy?w0`u,.6Ti rv5(K"YQ (mlt{HfH0OT;6H2N%$.씜)I*lR8Nj޸H0)|c&&q6y~ipu;rfH:m)TD!bf䩡1Hwv#d"?*/="1x0YxDy"d$+l:'> [5~ĉ\ 'r! ʟ8^E *oф"H}+%Һ #Be:$~pi LLۆ8[PK// 7Pdծt=ypT=%$d+['q}z~6-SkAB)hWh~C\6gg s0t@wFǴ$š|!-db0d*;rV+rK/`nI>'b$jWp(h^Jm3=xF'$})sےq^pih\Ia|`GG٢'' t ?KRo72VOhɛ>? L)kq?:9?cFQ0oγyJgaӇ1Q3?Qych] wg|%SAVEI4\ƙ*rR^|ɢ8e2(~DuCɔƔnoWtsሡ\mR~DAN^Ҧ@ٕ?G&+mGj[ЇȧX"JG f.Ĝ+pMfgmdڱ:lЉRc2<`D3)?rl" usyUis婽: ~Hnֆ5xܪIHQg ћ2XeṖuGQ5Fv$mңPtZݧJ*Inm;ҏLʅG ^TYR@#vTg\)!n~~y 1 ߡ#EN=C|JN6 8魾\M[tXbQIMrEfQHo"VRB#!*pV o{"Ü)`zK^tpi[(<GU0 9EpnB.{ɨH4GxT:9x A1<@&H@>uEI0d" ^W!m锘xn>"(~3:'[~J 4rxcн)X=?)LZ;0G2=NJA-sŵP.V^)&,=8YL'Yu 0x{OB:xM.'.Ao']VS%Eib)9\=)9}H4&IP:UKA;A2o+( A$|% @27BP!p\chqUŜhDtc9<__RC]ITK"|+#oSTy& 5^&l5OΨħD5+$I|DS1DܢyGMqx8QG(9\ڤ4*K-E͍u'nDY)ox, &ȓJ0%W %ۓH<\x*}^e(1<:VHs^AId璘$*0yI(ߛЇbUD3sE|Szǟ-ioQu@ϖ%<$9 F~aһ3[] !5gבSIc@wg(  '2l| < K´7ޙOUQm DGW\:~N 16vKa#FOPd7p Dn71$_)>AIޑk4'jaKAH0.~_k٫J@1\rҽc@N/!>+fCΏ<;$1ymʵ|$v`6țŧ)X("SI;\BIRg>duKL=`&&R05$J,Y1O e4T夻pD#8*ٻ൤C#{%gWPXHZH;Ä$먜8 6W+ VVYuu?y#ʠ,[ƉPR2N,_hM$vUTV)qkϪˊOa&SV)fYnt'/6Z-l-1޸GEHt#k?$ WݔKI,/L遨OH"R+n:+zYOZ݅UHI1v9lH3lI(5FC2shE}bB)#7%Q;, &գwq軓\-uE_ q |.CAPTgED&Lf댅^T#>-I"Z}3E2s>CMg4PI4PQ=.[q^#r!Dr7_7Df-'k׎T<*$趕Y*}"T[Z-++Z]iᴈLq^:ܪGh\221K>"&3lFUE /A,ʫkmBP9ȳ(8,dq^\OM} Wps>emD@@<n$ߔD1ʬVK(iEh(S]Iif~u;OԹ|Pvt8AM8S>rUi5Z+ˆw9#) x:?䙏d HMb6SD"ۢc>&wJCAɉ F)Su dZ.,1D(PK6DAɆ B$fp<|'T)5ۑMy ܎cw7)\r瞰 ['ʫ϶C!%_&rtMʶmС頭+"9K*M":8)5t*Sa[칸mfV,+d3g du0H6X͒9]EҺwt2#6H>;*٧y4v]?Ws93;K/{taL7! YI!O—čY)$>HCGa闌lő:xۗ\3"q6wZ79^@ sF)~^D3)|c$YQ7mcݧo=Ek͂(c?'MEzAf`~+#=9$Dz~vGl[#n&Ӈͽ%Jy-ߧߦ3h/zО֤MҔ&03aƬI`̛"$I"@z,7]|RK쮉Wi䘕cIjߑCN1{1Etc:ԓqÛa4?,aŷ%/J|5"l.Br f]"Rg 7έRF:!e9_0H쨥fuK;K <`m˞@Mo`!ʼnewwlW;W҃ SO4;7j" d:|P)%qˉ%Hȧ; DѨ]ITteo$(jR.qΏh9wCgVH2T>=Yw%8.sT6-;su+&q9َR{ys*o ?g޿ YՂrk2ee-mJ+{Jb~= AS*]TȣZv(H?hH5ey2Fޮ$6lGC6rxb뇤;4R8",J. QA?qbֺ r(3%<2W88%>jwbΒ£ȇdTԌ%t<趪ĝItM(:CZ&o O g?]I$CwebE @hIt) ~cꆣwao ⿝w{$&ߝ>ݴcLw=s t#9DIX.rQ@CyvqDloP(,\s^m0^ZpJb It\DkqPxY\).ްQ\Te{$`>ucc6(X,Ͳ2`џYyt@aW.?t yx:*J!} .`Cb~cCh8Ijwpq-26[<wOĒ0(<6ʟ'=ܬ#ql`KnfqKN׬^F},a-Hop!nU4hJ=۸PDҸ|֦.kkTl`m~jʍ{N9ND*QgT:jٯK j9{qcs:gl.SMD6ƴϭZ.)41xKudA4Q*]2X!t vG⁂d7\L^`KYՑa/5-Pj>#Wp 0JR5ÿڜX)-)6i̊9,*d8-^k$o.xjmVt!$ Zb[>[6;"˫C( ITKW M _և)huB> M긪4nٿnk_ /p (x7\tb(,Fy YCF5jԨQF5jԨQF5jԨQF5jԨQF endstream endobj 248 0 obj <>stream x] cFB 0fe`!l!x&%dwrۻ۽䪰<1-I<4hРA 4hРA 4hРA 4hРA 4hРA!a QFE#l,:PեWk :7LƮ0-Ejzx0kb56=S5#o:[vktJZo( O_G lU:Lb͠1@kzr>j4N$sA "f5CVJ`#5i@ 0R3V{t1~;DpȑSo_U0{ҹi @F{+@ad HLxk5 G9S$lCed-R$` .C 73PذA U%D*W)Od3%oN0Em>v+5u(vnŐ$}=#-2  RsRaBhm@c2~wTv-uĠ=Ŏc;nf#POYD0%}=b$^i>j@CC4ŽW{xI S6W$|[B挻!=s:$]rGWbd}v]]fsNAOG&1x6 o YӮAviw߫.惥A`hbH~8=D:00@Rk%0{]WPؤ>j0؇C=L3;Cw-}$"0cg.Y'r Y<&1)Z=C9mbsħgeњ=,Դ@yw. BXx1JP_S=7ӫ2,f1B>D)sp!Z2CG0r)e#Իͮ7@8KЋy;|B(lqD= DD%K3KIajW޶.'JO! I%wqܘz땥5uS ծb]#x/%}]KBk 0p2pH0Tj-=r? 54WǺЇѧ>y!L 5r[dkCR7N27Tɐ>J쑅>20KF(\َC/yUG?A8 z@~K;CC`aJij. ͑\^j(Z= ˄+zQlC?HY2$"t?BY+6}󳗢 ~6(mR-꺺f $!cY}BI !a:\@^ydٸ6 '6joNGB!#᧛Oel[m]++SoݦQh?.҇ԻJއY;}w2]p\In rOwQGYR8AH$ҧ dd& 9PR*uO%'A&ϻGvhwH%|91jʳ4*SXGԉ<[.i4;S<,t IstapL1`s'g;rQ{B{M cwI>gӷbU5k¥ΎPshBRNnԃ*?K411QnPK`g{MƓH^BvL>H s^nFS1^)>| xnxSyoy ;u7kqUG+@d'NYxĠG<PqxT $3p>}4$wkκ=^5]YAρ'E >72Q`V=/nqx.>"I9 `{n7$$e%oQi4q{3b v9>]أ%gU{zi4d끣$1mR75gHpʂe'o_ ټtD&uq=+;z4,y)&98)hJW rYj 1('v~'XӍⱵOvNFx{dEFI߯){f~[CyøpəM)>bE IKg"^yl1n=~I(wyUwDAqMҫk|^h){?>Y 43Q`4q=m [9)kqodK kn5d hE&;'4/9rϤׇ@E*[)#}BƸ#Nqqk]`YؽBr%p~"9H'UI9/d;ѻξ-_p?j;Ix -,ӝgaL{XKI/]!*O Àu3/A]Ǯ^ĜHZ.?U\s'Ҁ<᝾*(?&Dse9UWhtDYeӌy=+cDu)/K,·??_rX|Iӣ}&Oλ<-W (# d ^re ,b-K֫tpG|ZCFNC_K"d`3rm˱>.%wa cyy[ P z^sF_9NyixxDrd/H#G<l%JM>k N>2t(\pƉ-JSy`'ה> qZ%2'CϤQ72vonVq#IBwȆ$\[:}*d/E&sى3a+Jz>+Ǵ).gmAl=s!l!/*Z3t}2KfhN?u:.>r3!p=c,WjyJ*j[ٔW!kv,&Yef'序c y&MQmh Jl ʭD|7Nn2_ΥYL lA -Μ «nQt,6^MW*JceA.OJo8[ѵvo ΈB"orQF'y8+.-vkKGRhg@?R{$T8K;mAh}'M*49V2uɯg:!~/rgR - \ҁh Q[Y j3Yླྀ@BVÝLjP]&c')=8Azy6.628[_D(ɥXb+~^ox獽\G}OiV0v>. mi 9@Ɋ }0G6j(6¤! L>sxͩPW.CH5|!+;//w(K8c-\&6~qJEQgs`xrm)>mq&NUS3֕>ߞ-} A~Fˑ;_2^5 ;-HJ9a8cMsQ*tI[:!Mead;cEq7~g)},>:W޿>ȳ$mB4Zq`S_]ydAĹ4TMs{+.,ag)})aZeJݧʧD1C cSzCP6e8cM k URudkA]n0' ǻNL &&6$@4y:fXTƐ ~(ԥOgD|Ҹ5Nb|'A!%`N~>l|eҟo2% y[忓JXʤ]S8O"N|l\9'$T^pe( qDNS"(}gїa2a9.4Flï%ue+ԨszDDTby? s/ҋ}aqYQ3z)St;X&F^H}r!,9%k7V=p:97fQC.¯}Jg?bL+JToo4Po!ʯs,١blÂLI^פ9va4 877siyxQTٗ~: C(\ ިaDcǾi`a|Dz}Ԝ|OvۜQca=;j?7> ŷ+gZWPipϵ HS՜>΄!y|.i(;@voh Nh\amiZt% Gr?p/n}y]7Ib!Set /R+[S+ue2];Y>O1DJv]Зx*}y]j? JQwBaaIɶT6~ }԰b `0|>kؒT8tuWJ;0O=ά VwBru)^{ޚ3z*}żSr@8ydK]/ЧFפB'Kj^X?9U+p9o9oG׽^?;LUuްLo)Hu@/&59O^ƟyZLib$FaLD+@g3og-RB_G0PyHW(s%3 ` B:716w7+N>&G#5.8JuұD>b.ϵI|xk&x7T{op:ECXH3\1 铙o@ƌW{W;ope6.2&*>9в^2f()V Dƹ igUzORlۋ=즷Q7U|cmwwhc_d)/æBy^ IMU嘗5?vdK9}`e _I*>t[Zt7h}n48u;v| ,l:߃,ӵ-#pM>!ZL#:> m66Qٟo_H yΒ?'D-kgn hIOݟQg꟠6ȐL>stream AdobedC       C  ? }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (7|hu:?~&D@>LVZ򖶩s?wtDw@g$!{mOMXj^Rh! 6zel|}އ=ūipX(KYG̓l؟'0 ?k _ uI7sjV>!H&D$fC :?2}}& ( (Ϗߴ/ٓV'c4&=Bd7;7HW?0~_]r?HKj'~i4m~{gGb@v?7-5ؿd)7?MOXA }|et<1gyF ( ( ( ( (?O*wuޣX}NrkK(l?yse~/?>kO7@P@P@|?մKgOZ&ĐIky{ bO< WW|+үͶ[M< (f|% ?~ ٨>o#fkWS07o6?;;wxPHxGukH^ Y4}E}| y ΠO?>~_oľ/O-e֛r?( ( ( ( (?டto|>Ś_ ? ϩ$6_ckzZytMco@P@P@PϿ'b=?GWMjXjBHoYO`MPtP@GI1|=x;Ɩ`O7hOqHˏ|dzD~~?K/wZ\i#{Y'M3P''% }|~d1??>~_oľ/O-e֛r?( ( ( ( (?ZѴ{I4-_IԴ-B'M&s>.| r~^\/Ӯ slj{x]$]Ik?ΈgIAw៊~ >D~Կ!|.V ^hME-o;QHԧMF7Oe~s|-⟄<3we?PDI}' 7M:;L>dž5]ß;l'qA6,.ɱ'M؀|M}?4ofO;&}HȞ\Ϟ7G;~Կ!|.V ?/_ U€}'KBjIRЅZ,(~8G~+|~u2e}gҵ(tۤ$GGGtpcwa|>[+׵_.lfï^~m {Y᳅I>ʛx^~Կ!|.V ?/_ U€}'KBjIRЅZ,(~Կ!|.V ?/_ U€}'KBjIRЅZ,(~Կ!|.V ?/_ U€}'KBjIRЅZ,(~Կ!|.V ?/_ U€}'KBjIRЅZ,(~Կ!|.V ?/_ U€}'KBj#' "-_#W~a-bfI#ͿP?|:ǃ/=CXZYO7naO/e߿/_ U€>?ਾ)LKþ?s,at72o{>;bl;z~@P?cyF4{&7Go͂iM5$BBtC弎o O>J ?_t?d€q]Y?eWCO|( ?_t?d€?$ivcĿaGeggP~_xN0__͟eoe}2'Ì/@8,P2'kQ2F<#Լ͵y{foz8t\0׾$Gax}iomk?0͛?> ?_t?d€q]Y?eWCO|( ?_t?d€?>-x*?_>#|6ԇuCC:`Yx|/{߰@WC>5>'>^Ok{8,P2'FaH%#Sӿپ;f]6|0O/|>%r_'?cw)oM??[?_t?d€54#.SKtOڮ]#5t7 ( (?;Molo> ( A?| keor@P@/c'II8O@_E5?^M ( (?i?C y^Ɍ| o ɭ?M~B/?kL}@P@P@o_wb}@P@P9L4˧Gr( (?_N?p?~k?~~@|4m-n#%8/=Ih_'|Wo*W핮zŗ-+zT4]A{kMi%~Zi^BҼIAEִގ{Xa$?PWG.SD2|-%{1I_ V)@.kNj͝<7:oIttkX~?Nq3x\'[v!fhm|&>HQ?wi%~ ~-R? (?i?C &7GCxrk , >|3"w>D7>r?bާ~}=#zj^3R%k;ΟG Ѽk?|3?<9xW,/}{ɤ?ΛDD/?>kO7@~?ieJ?!?|?5k ( (?;Molo>{v,> M'Rdٿ~nfF?h?c%^kDkIMo]#֨ã3s |'#?W?ןMy ˛\?ןMSe__?Ax#F&&Y;@C.(񏋴/xWľ0=A/'Gyb|~(x QG>^j>$uBg.!DIM߾G+@~v}u>J'm6h_ȶt|zehh5>׼Y]>m=BM"}?V"4k-SZͤ?c̃A4{t 7<9[~YMCPH̶m? 7=Xh~|;A3iKgb̹g<&P@xh/_hΊMNt'uo_uw⧎j<1]i5ݣؽ(ɹ_$ys$QK1~@Z5?YRO%??( ( (N[?@ \qt1/|ǯ?-ߑ}pvP/OMzl6o(f (s/h!OڏP'߆ TK\<>w7_f!x~Erm4ٱ6::|ʨ>E|@Ѿ|;_tmpWO&DGwDp_/o<8m? l_];7>[wٿ߱>J3-~'~:y}O[[x9kZVX@xLՒezlw7> g٫:oM=͌%|}x-f߽!K&OMߪ[^iFu5 cM l(ޠ (s/h!OڏPP"Ҿ4x[X÷|pЭ{3F7Y&t?>xM:Gl?^"W~#W\YG{m1ZIg؟x{kE2xj <*lc0]WDZyZlb&ʾ x?%VM;'O cΎҀ?l~N_ş 4N?e u]=F 3NI IRyqdp: S 1BE/Gk߈0k} DK< q'ڑ;q۽SO/5[xx4>7ڵ)r{n~1x"~ǯ7Ze$=.2oO:?ܠ y&13_y( O&/7T q3_P@P@P@t~kg|p~1? "~٠k7ZeE2oO7ܠ>.WcKoﳽMo@pO>tt@W?_ 5x9G&D7 [CF(0,!kkOD!Iw_PP yǾ0k?4[˭*"F6ZM)?|/u3D?.msh?Ě7M*~}zUp3I h'''c=O?K1~@Z5?YRO%??( ( (N[?@ǯ+/<-ghb-#~]Rq8a{נ/&7A~ϟ? xKQkg=JY źI!y/f1$#}ՕP Cp_3XߟC.(8kFҵ'Tе}&Rе^6,eA yvѾǂgވ=ɽo$+Gk 4rka[{KKIO%}ý>DIbl?eh 'f?]?j?)@P@_< ៊~ ׃cmy͝GDt@_ٟo|F5Of[;e7[QOg(5>ѴsSҼ9{/Eӧ#}& (' y&13_y( O&/7T q3_P@P@P@=\kR_ I$Dq} "o"B}yPg_ x;}Z.(gM>Ǎ{PhVjZ ^X]ByǍGGOe~?x7 kO?,-sB-u#MUx2n!Dt{w?$c@~I~ןL >/ xU~)k^K=u٬v$i4;o|>ܿXpez_Ļ &m;VHִ[亶Լy}&ϵF?ޟ=~@P@~iZhZmhZ/myau O 7G>MY0?d km: ?m/ƕ6$ɲm"o![lwr!R^x/s x їʼne hXo>?H:[$>e~;χ|Siz/|ϳ5^wGOH ?i$4 jI=לD?ߎ}"|;/|>|6#747^GN<.zF wSxL}cWt^j +!Hgc̛6]?r?0g&_ٗQ \|_N|Ai~4)ػO"IҀ?w ( ( ( ( ( ( (ڟ5ESa;eĸ1K7lx]g᫨O폀ٵ[mo-6I};:I$/hP@P@P@P@R‹\6 c ( ( ( (R XPy"\8kKj`)EY qjP@P@P@P@ cz'~|H5ٿrkIwow`j ɽvƈ|Üǝ\Ik`a@P)ص;mU).a2B# ]鹵@P@P@zR>?k~0?xzg[ݽ:9M&:c /B.i}Y8Sɝp}ߣ?g8D׵ #Eu;PwM/L{tl}#ynDOzNGc*?WEx?>;V7N$>f+'Z~ou?/4KAS$ (Ƞ ( ( {۽7M.Kh^X=Idq0x:nTuge_~WOKZWX[{KcK40@dvϘ] wH_s,t, (j;0On7؉хJ9֣Aψ?KtèuC{C"?$:v#5a\?uP@P@h`'lǿ,Wq;~߃[3?N|)Jh.#Qis<ʈ«WlZKp*>;Z|~;>x%/|cmej5dp<s3"+Bǝ]rOSjn<_',t/Vʂ[ɯ.f$PA HO3#Dwnֹ|m/м3'ſr@ǂ#$1i~;cyn0a&m>\TЋc,CRM~R4 hI-)te:.(\~>S7 _&]$6RCcq ox.m&vZ p̀j,i >{PY҉o[wtUfw@}Vʹc*l_ e~*j7yeiGtGœbϒY|O~#>(d%![Yhb#ܻAyn WR/luG$g}X-P@ $??ٰܵ_[55OМFtJc[!hP@ QkVG9?u@5fG/S+|LI޽zQngws\odà P@=Y {ɵxo#'I?邭ρGG/?o=IYߡH|Sk9{k]G-#zاϋW<Щc\M+X4WD/{;f кGB?W18ay@f6V-Ŝ3MionOtϣ6dtRoF[Mhd6pU/2X~3OtJdB1((9hxA|;yqqg5ZcD(Y_5i&6.V/__g|f񮢰˭\?|3o_U#(HGt*UkI{cvl sh( (9^N/;R=;Ohkfi#@x:̴*7->T> 5t /".hBMSetBàc[ @€ g^)BW&HԬwOx\M'PڜO_ 8e#GH[DǗzZD^9쁚U|M 0I3ʡZW26iZ(Ъ,( (1I_)ύߴ'|1CQZjwzcmn I]yl>r~gLeh'ⷋ{f&5Di7l(DfG(vTaC݄_vYU|*;XO2\xoPҵY}1 GtϚxl+?j?-| ԡ/%k C{/8#2\ ߏ îJلZH[~"~ZY-]kwAd}w0>ϟ䊌o('4+˭6NxGxkg<-Mx x{F! \S|+x᷏!d:^Z4к$'SsQAݟOٿn+O>𞑠xK_/Z$~ry֢Cr_;pwMTr#bUC?c?ړi4u/5yLF]"(ވVܾ>ݚw?)Լ᫟:'[X_k488Q]G$QM€ ( C@TX`r)]E%̉( `M.[p'ZjRm hI{7v|rh ( ( RÎ8{~]weD 8AD^w$#R\ĕ`(\X =)r=!FI,6J(;'jQw6(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (? endstream endobj 254 0 obj <> endobj 258 0 obj <> endobj 259 0 obj <> endobj 263 0 obj <> endobj 264 0 obj <> endobj 268 0 obj <> endobj 269 0 obj <> endobj 273 0 obj <> endobj 274 0 obj <> endobj 278 0 obj <> endobj 279 0 obj <> endobj 283 0 obj <> endobj 284 0 obj <> endobj 288 0 obj <> endobj 289 0 obj <> endobj 293 0 obj <> endobj 294 0 obj <> endobj 298 0 obj <> endobj 299 0 obj <> endobj 303 0 obj <> endobj 304 0 obj <> endobj 308 0 obj <> endobj 309 0 obj <> endobj 313 0 obj <> endobj 314 0 obj <> endobj 318 0 obj <> endobj 319 0 obj <> endobj 323 0 obj <> endobj 324 0 obj <> endobj 329 0 obj <> endobj 330 0 obj <> endobj 328 0 obj <>stream AdobedC       C   }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1K7:RZw⚷@qF h` LGm_ntM"70~Rʫ)eB0ʒSuLO 4|kޯtHCi5,iޣeb >L(f &%OsR4OMBI.o.XUPIb@OJ":yW?#u*(W%x2 V5]Q,bݑ2VpAڬ|8~iX'!BD o4Ǹi4"vS`ѼlUwmq jE5shDWAKZ~_6CnsͭSe*{Rmy~"xφ,_S"Ym%Y/̛J*.ΤWL/ifcngfcUIMz5+B1:[V?<۲]f_Iĩ|sw1)U+ Dh#,+xWi,9tw6-*sFRBUw`wP*ԕ7;9J]_Y'/cs6ᶿ u^&U~~\/ :GZ\)(']$bπ,o?L+V]Y[MuuqI,ҸEdcI$`W\A- u=q&_&7:, c#ǎX-kGx'^5fQȮH ? e8uSa>cǟuuVuO)F[P'>S_׵ -Xᶹr26~Jr>_Il sSs ǴqrM4H 3($zɚF{.dy?S܏=ncOKu5>+ u .hr _]Lhce'nmQ=zqKgxQ$lxnUNdU{2v('j?>4Ik=_?IJ~fݷ~7m\8**( ( ( ( ( ( ( (4VygsxDI?k-Kp;xL^8-(jE;ZXt3M$v|F\r8:ׅ=8,ܽwkZuiwvst[y_"6b`v7jٌJࢎ:޷N\ޱ{6:rmܬpy GCN3hе9$+[Fq&J;h}ZLkR]#N}Y١<*mdrk^fhKJKqXtORoMPԠCmu pyMc+JY1E#P/$ki$-!w7'h=sO捚VMTUt {>{kky7\H# &(ٵhH?:u\K w%crFp2y8kHm[G+T#ݣ9vg Z,ܴ<)ר:+gw bR7b'bnP3ߨ ( ( ( ( ( ( ( nZ]@Wߋo O. j;n>iEUpۢ]6ʴSLM]r:'vus@DK|1v:2iqaf{LRj%1XзI!#'3;ІΞяҴEE%tj6tnI^:kFqESw:+A\]Z(~Z8LhT:k^1ZDj?r:uhx:+_Ǝ~5JFCM㟲'bnP3ߨ ( ( ( ( ( ( ( c/MO)O3z/gEtHV+wq+fmV_?U[6,;WQyS uVG!h9%Z,@t}V,mtWY[v5ZhgKh2+DR:;Nv)Oݪ:;O)9 J%j4oD'^+Ѵ]*5k-7{vRG=piYxs]ѼAd5 V@^pINNk]m@A 3#Q:^E Q߇KF4Gl?E@~ ( ( ( ( ( ( ( (2;TBjWB?tmcx ڍtvHtS*Iu]d>Rsˈ̮cZ2Zgr>=h'Y YgUch€:{^:{?ᤘ-oU:[_સ5Ŗtݪ,#GKkSC:[^)%})譻U %)W y R>e>!|iLj#σ5;7Kg-ceHYW%^R˱6ҢGk;ex%*jws˹&Y{Amp0@`>ӿfO> P>YP|K9-c9dػ,w0 syQ=cg[kNƫxNCN--ʒK@>ɴ9 ۷)sH>Aɿ? M'bnP3ߨ ( ( ( ( ( ( ( )!3'/ir5]O vv\01Cs"01)+o&ReT2#>a9k~oh׬uc,ۗbʹRWv+Zln~~͟o~Pp@lE9``c`95%/ BxUl7ݾ )*N)vv6''NO'99: nT7QqM)[v(,"i?wT3?tU;?e6r"^5Մ hW&T,{f&e~&_=?xzt-jb[0 dSrP=ՁPIg_P/?{*.vf]*HeD&YI |}{q Ƌs/O-9#G\@:}У/牠 *WA%ڔ3cOٻMOx6WJUlM̅IڤđgHv)1^ҨhmR(ݏMFEOM~7GH{P@P@ @9 ( ( ( ( (=E җP u_z$+m& Kt+YYD[*Re,睴(#jsAM  QEɿ?֨;)ɲ~&I2~ (x4uQc~(!7) 'h>Ԯ;7xucu84zJz+5%1P@P@P@P@P@ l|/@,<|w~Ϟwxssqpi|}턨qs"H EV8qyev -΢ f׷ҁEUci֠hGKkttV:[AE-h%UKjZDTr.+%T2~b8,0H8G5F: PO+1tef 3`޽jփU~s۠R:_բuQqYu GPӭ8mW d}39JyVU\~:Ư\x ~6n+ ?#?2m*.&+1PvG|3i[` =%| x*GB0Mtg&uV]R@t!hl})15֑:k>J)LgKh2+HoҨgGl>GGh~aZģVR: nեAEFQVtVPZZ(݋T5.'l?ELߨ kuLI0{I}kZg O{w*(PǀO3[x(]_`Ry[2k8p!ʀc 287U;bkxf]x`q0: ``t矟w?cB8xmx]ºg4ٖ{;cA 9Fʰ$7 ]{voQͰ5~~fRxt:lI' \[n$NTJ6U7q3G +73W$*9^E^*V{IL ( ( ( (Zc'sx5mO ivVna)UVRQA֩ȏ~en8E*5~}hӪ:k>M)YUtM %QLgIkҴH-U O> Z%%j[v,z ,R7z3  QEɿ?֨;)ɲ~&I2~ (9 8o>ޯjlfk}18G$$qUPW;}LmUJgX'Og¸GIIAAPO̹-\hpMUϋK*8trR5EZ$;$]*_=hv?7e?6OI"QP@VaKB2. XyŽ[,pFSi(NIeV7Ez6t1;s9?/)]ٟЧ AE·0qW(WwE'80Mhe&߁>!xo/Yd ΁)0 2(e'%JiD#0"#zφƿử WխL鷟y0\ey99Y*t{Ely@P@P@P@P@78þ_ߋZ/|-q. j<[GfU\6ԩ IgR)O*Ӫ{tC:;^ZZ% }jƎ۵PΎנ)ֽER jۨբkT\O?gt$GP@ E# noh& U`y ! 2J5"cvhm?jٛ_ϋ%/w vRQAUm@%W12?;T#ø 8^CGq}ұ=KAEdM< M$ɲ8n,z O~3 %'VLag:7zH:|^p%B2X~#zM^7rx|;!bQB{#˝ݲQ@P@P@P@P@1zMWY5wxP<xssqp|n3}ͶT[CV6,;WPr=jXu68(m0hl})15֑:KnE%CGKkSƴH-zҨgGj 44tvQڊ#GCmڴe#zרC:;?PuZQܛj㿲'bnS((zbzD)'y~_2Hb1ã`en{-l:幎#+R~ѿg 6B¥r"c?2# w!gdݏ`gįGxKm8-*xeZ` T';xv>wṲw#aE 2G$2z:z)ۖ}" ( ( ( ( ZOQ=OO(~. ?7Z5;WNU몺| G\µes}{WTў[GUg4ϵ!UU-u$POg4SE# c:k?"4tݪ:K?ᦆר3iJ }hh-8LZDh-V:;^oZHgGg5:nV7cQqTj:+I δT:;R9Stw+I7mHy3YxӝV4tv~a<}5%bp:wjFA(ke5ܨFK_~+9wddW+{u?(+#3GzQ̻9fWP@޿.Y(rޞ(V#nhO1G=尭mPw/(P@P@P@P@P@P>\tz ,~;|w~Ϟw<"4HEg7َJ^ UgcUy9eqڼ*|ާQhvUZ/4}@MIh3)-c:{?"Imڨ}hh:2dq_uMKBA'Vo-tRD 5I\2*Ds4 w}ԟ> ’'[?'?+wbaWO#{*JxGĠ3E1#wA ڪM^Y"mq$vZyvBIiN@fɮTOÜ$ܑ]6Kr}~k.l|$h[=~>!~!i:'k?_^9~'׊|wI|?=zV]܍\ytW啧Z)^/exJ3^W|hQ!A=րHo d`4׎F =9P@P@P@P@PnWB?4m_x ڍKtvHtS*u]d>Rsʼnήa^:?+L\g|EfysVgSfyZwmt6˝X,tPΚ}ՠӨGKktZDh-Ut@tvO)?G|}O@jzG}Q:F^"Ve̾#N1hcZ/p``g⸻} oLAsA?s|S)Hӎ2o8nU+.uI\}#W0;PP@P@P@P@!(8wUxzXl.j-Ԟ01Cs"01)+o&R2,5zʭE-6y~uMݝUMJu6_ӱϨj-?:k>M)ZuZi:;u+hhy; q5tQ=l:7>/Wb윑4zW?=D'ҁuQk lHNa{jnZ]EЇzZr>¤^ qY42][gۊ#a¾;@D@91ƁXێz2 .hIZC רi-cwqB ;MP3h NTgUhϡ`o-0_g #1tZx@ˑsoI#Ѥܤ>i}7_|Fѡ'=m W7(pwTP@&}/@ @O-P@P@4)]wg+ӿh[GCb*h/ᙎ[ų֟ykũOƏx_Rq9GF81}>#)rnW)ųcOs,hQ$2WQЂ 8އ6wO4vNb`7~ ~禧=d~=S$x>887KM/k&Z֯"m̖W`6r2K40ӯx†cok%I7s5m(t?3ABH^]cNy -{}}YcOiƷ \1`W$8QWBnOc^$ܙ7zxR|*rn~Bw$Zwm;zh-pF)s:F{_G xc_"|I-3J[+^Qnh۽n\+ ݣKh3oyˏ̤jČ{{vO:MC&5KO'x&%uRhX` %M I~KIEƉyc7qJ*6 ,YO81KΘ t(M[\tתkc!. kWpɜdOg/OMOٵ[ZYflIsS`edK@HdOCA?g+Xo ,K1K 6 x̏d|<4.t',=x{vU>Sh/,u[UJ]Ý R0dxqOThUo4o٣|?UqFWAtƾ ?6L.SF;M;:eܙr;`p8;I1s(`P@78x xoŭ>^jVtHAv-#ȳ*tJT*ӹH*Ӫ{tVW_P`V?2lcAN/S/? tm[X\Y{ a%^J)gtn{λWUk[98xA0j6r #a'wR wPtԑl7d~|V-U`Ai~陊=UI \,7g_q<3 1z[ ˯zԔ4>/+w{k=)zQiT~*kh_ofXPŸfTb˖_sɇ?|J˘HTOCJ>"9ܟ~!kоOk8"y g Gx>5pŦ˧Iz֓j0jlZ A =A~ +:VhP@0gC|"4HEK-l%Uĩ#8%UkCV6%yۊ|gߑY 4-# 5'l-W:P>\p W:Oᥨ_zf\/tWT)z5֊CE_,&Zvt֣hmY|P4VQ /E|%H$zKs4O Iߘhn!w1u?b⣅Qߴ2nfٔ$+yprs?_>ޑ=7F>IdfBI_zMSķ)2Z3 c(mt+։EN:|k~kjѮ[2YRE8) 7U4B/\iܲil w$wvycˣ[\G[8z,r7~滞^DyZWR*2:5x~KkvlcuFTnlj,LZg?b>Q/ -y{Gt|B]GfYtI;iJ-?xW9Kr=OmTнhޅ<jgQ>VxýaڣǷ7R<gF+X8|C'j1FS7ˁ'\%1_6Čy.N@P}C껇R+O$h5-g߄,Ԏ,'-jˉ?0W<aޮ9㚴ai~EqLjG߳.eԠ;Sלja"lϡtiUi(@E<GAxY}K KǏ*?}nA/,?G]c~9]a h]cą֏K_\}o[}?>돸YQ>><[\}82Xƺך%ͽIqypP@FcUTd@rI9UYˡuh~5];ZWWv=uf;T/TBSflq328xnzv@P sW?-?ࢿktOgV{}Fե&9`uWYb(sվe+p =^L\0 H<QerL -^;{ { pcӔ_1-qTnO^_PXMI=ݔBq+LdTf?rzx-MX G+Tccx'1ZxTe)O3^6`sMԢMI,sӰCƅRco6puGʻo^*sg]W!?jR?q͍өq[ 1AT>*XRץr?)jcO| 娃ƟAX-P-TpZQE4Z9*-?Jj~, 9*-aΛ [gM9*jŭ/QP-Tw-0t࣒T?ni@}KDֽAxCJԥxoMv)V[y 9r4">sԖ5s~Ǔھ{t?KP@8qz:\M@,#ռYthPK"9VFU s0" %Fy#rę> |'_Z ttl/ G2'L%/ZnK<ܷyoH ?㏇'Tl;J"|; (w@5ރIG#XS 1$Ay'QN_iIlb;K k>?h?ȀP?k;p^4@l^rȃ'$ ?=L w7dG'Լ{7c ?k''JH#ᮟŷo4k[{Gx Uxt*p0A.eV/0l&ghZ@QFmLg=}Egײ 5?@?u}J؃Cl?l`;?`nOQQܨB|Ʃ}#~>ed;zʼ<:?DZ'=eaJ=8Gb+-t#bE_Cd{Wz!&d|$d{q)j+I`yf`*YrIjb)ҋ=<-TV} E?c0=v*Tʮ*rgiӵ3δ8tYV)!V 09 fQΣϦCsGi'-Q^4kM OP>fİڃ-gccjh4NO&r.Xz#VVȾJ݅M?ؖ< 8:Ot >nuaf/|Z$'o Zn `?PR̺zt0m?S(O-(UA&i}mz<( $? ?—֤>i@0;ORi<wl? ?©⤄1O4X Ne?q:gc2\ZBKo*":+FA:T)"Ww?te_?w5+nYԵ(›G>\ ;|HIyF&x:rz򯆌zǪP@ nޗ5-n~b~z^i6;饗N3C!U%^%q1.I GѩTW,$}|ϗ$3־]7{hH< &(]7he] G+ ۊ=в컋/ #d7ae)݅p)6&myHisN-^_;Nǃ-A=؛s3L/CбX+X§F'qr F6rž \IN+H/\ Տm_|Hѭ.lo]4ypzr3^mV}./xxݔ?en6}~G7NA񭥕ӚYK1ݪCCu+^o4kȯ-CDH@ WJCrޞ9{ mnμ֔HOmx~ u?K0PP#=^Wɟ<k]&Km_: +D+. I#,Ă[=#`-e,活2ao=t-3TF]͏<5zԢz1'Яwχ3G x3i:* R;5V!,"]úJs6kڂEtK 3j%9% *0Arc)­\Ml66_?zz;g8+u'qPZi<zA@ @ =M%;Qp Kq3~/2xzxO kS# {9o*`ź~jn=?g m!TU]K0U=q|kTpOC7+ QTO]mXD'T.z Rhӆ ecU1ϩ~w1!;Zf;>_ .x7#1^u ?5NS5W^;'&Й|9]}:p_,3*zل}8A,2>N_Ei݋? j'h22ߍTtTlo9oE/`d'' =gh>= OYZ='|'-C OYZ=+> =gh>wOYZ= 'ȴ{VC|Շu1uSZ?kIe}]2^)׀DG9𶲦XH#Pk<wjKcl<=?G| ]z4AY]Bk)0xfUu!#TA?}ÝlzJWGa]P@ oJal$R|Vljo>蚩aDԢ=M+;Df3 #[#N~ TaWiש{t?_RWg **`<~2(hh g|^c_j2y##얼4B GѲhz8Vz}X|ަ@;xcAp.18}InmQIVcqsԈaXq#>nj7`0{-#q&@aiyVhn%YBlhkqfe/k˨*yJ֥8 m8~̑|? 9*4+qx{͚3>=Z;}p,PMp8V2;"^gҾ3xTs&cicv<)q HP{ pӎ1džR"W>5 m[NmA6P,$^J2}G6)㣙~!6 eBz?¯4.maOT7گ:qڏM}%{< 9z͞)EiE(ŸBNy QQG߳<~?:TGi~0ՠB7ZNṳp`Ҍ`{7_kEv|= |EFHpl"XJѽs 5aw jZoO-XGs"M%̍fiU=¸}jp~!h?ь'Q{FcQ{F;Ga`؟QX]{FKME{{U*dؒvh᷄D5]9$09T^iGqS?ZE;(/;Yk{ϒ  36prtJT:CP B3@ epǿEm7To9SG(IX'hy'糜WCdq&˧0?5fI¯_ѧavN´Ӻ|ݡKNh]v@\m m$&X2qW%ݫSvzY|53>tFRw\즾[|e:N>X|s:GeX=16P`+Նrzץ mZys nOOσ%tYEIJ^1@n IQ7q[Rˢev70Z|'-> [%pҲ e5Ə=WN0R:Lz.iPf1'>b:Opayz?e1ګ1S|ZRY|~g򷊋0G;F93# Kh#dTp"U\eTԴ@}xge|E./w~ĉ-ޫxdې>FXwn,V'N}yxn~\\9Qp .E(\.^4sES_Mϴyn|,7l;vvz*s4>^Ҿ-5tt Bq@ ':KփúuP1%\# 9b;1C Y=qTx&8s/w<<<ݿ!Cykq0A˯*4 :M6:gEV_{8?' ZoQ[Q >` ?a.?*V??qM>[ æ\M'%?0BVc ?( Zg4g/7q?1i_Cf[ma ?$ZgGQ[ma|Qt [maM3?jkWG!GA /#%$K9/5VXꚾqc:).;z⺰Qz-3318+(כ"irX=/W&9º+Gs5)9GG*9η F{ҀG $~~W*~˕ٳGÐ+[-CYɨ_^Dҕ Hωiǖt=\ER m!7q]!sӏ¼uvkmj?7n 6\GBq?3Ga4ԣwV?!bG\r5 lifj6G:mă/Y`c``E,Mh(i3M_FӤ=dA@[:՚曕Md+%.XS (G`$i{y^9`$dV r:V N>e^k>$_[R䲶rA'ҭMQw=R (@ ֒w?1k=3W.{cؙؐ%qÐĹ'!QR[UG ::)]w>_#${W8x;Z P4E}2(@  p 2[{9m^9T2e8nd xixoLx5;iXCo 4nHOE|.[ҿ?S>" x\̵M;xX̵~Q4spz_s.\ ?*wc zW{JDOD/Bޕqҧp1<-/h;Oz_G= x\̷MՇ<-úgG혽-ÚY{~oJli{V/c'"?Ҿ/&cx\Εq o a~(̟c ޕ?cQܙQ柲q"αX68_MU1xx3G!g:z( ( ( SG(?= ?,tyRM4($ 1˰Xf]8cZ=Y CI$IST:R6a@j~3ξ*iz>C>v{`3 ]XJr ʌq\PE_$VcTu#񱳞}y+;M '*0o{ 4::Ԍ(A.joZPq@ ڀր (h XwJ9@i$ L2}(50CQdQt2}(ltm1\_O>] t;=Ѵ _ѪdэTY_7qRU}L>f~5OstA  ( ( (}4s?' ՙe7G40 )H:C.^-t}kzkX3[*A*A28_aM5R;3>cnP@(SuR|Vķ]UXm5(ac$?y@!1nBN4xk\l; ]{J^cud ]HPdPހ pm@'Z( ( (hP@րcCtaWg~y_aV?ac3 D)U@X*( ( S@EFO#H.ǀI8(Igs=;/;k{ϐ  O!"(hnvGC+P@!h6o&{03>>> ?-o~#iGӟϲl?o*/x# M|?8P!L.\( P@P@hѾ}}3>o_##9ݎٯg#S4}_yGH (nSǃ|n?槦CBYd`AUP9| AahO|c!q\a'~k9s68F=#uQP@ =M8t(w{PzȠ۟ZMmPI@ q@(zx9Pc?ҮcSfx'ҫJ˾ ?PW hl)P@P@P@>$i{y^9`$dV r:UQMI>g^^$qp?xeoHRǒвaәzzP[0JM6{_{,׶Q} ex`Ĺ'&3\EFR[U ::*5ioaTLh4Pu: Zah(Pq@@ @[XBظ#mGtM"8Tۙ$O$09_BhTtcjFP@F}i%:uSJѵ-e 8r@gP 0*0Ar dؚlu)auo?<kv?hI1o{!U)hu/]}@: ZB3@ ހ mo:mo}@ 6Pf@GҀE}@~_6gy_aVq?@i~n `P@P@P@ gZ$[.[ixppOӨ2O*ب3m Xk3[ J#A8_aƽ5R'Rw6a@3+\ߵ/m{[z}TMJ(c+;|''ҟ^1 /{7$E|\w',,^qHhzp(h@P@P@04P@PS@-jg=M⿳?Ư7ZO??^gS_4?7AM 0 ( ( (GE-đo$0D0Xu$ sUӃTJ;#z=;(uVy` N O! ~aFRJJ (#4 qJKCcx67F{)'2e\rHy >^I,}cdՖo ?9}?#HԗQGztڑb ahà: Bph@@P@PS@-P@04P@wcSfx' Vq?|@~5OsdS ( ( (t}Mz7“j$i{y^9`$dV r:V-N#>e^k>$qp<2)celO_ ^A@+~bZfk55 eNٳA!T$9@J5!T}<($.H  CGJ:cZEYn bI$I'x`Wah=%luڮPFZS~)zFֺA 6,%9% *1 q(¥&d|u*{5#D-G1Fe @+[߇z&,6PǵOgoZ˛ ~}dG;[m5732:P@z0?T6i_6o}9rǔ2|9V< >^I-tGGqcɱ 8izH_R@4 0@o}2(@z6ހ mo}@z6ހ mo6E}p# CUO1<[c94ؾSk_Q/?M|46( ( ?TPUdJw_4{=kŚ}ZFf8ʩڪA <SAr1d]4}o6Goo oH :;WSk'JEa@ҀH#=UҸ<ŭ5M7W픇O1,lYXT(c 3l0]ާpAαQ=I䌞Wtec UU{@h4ӳ1j\d9Z1g~uվM=ֽr3G}@$C^0ugb3QUِ7;g%Ωi ?+N}:֫JG'{mgBk\w!SK퍼gy,2An``::0ʃyV#G;Ў*ӑI*J%>h-/%' ޴w;PIu@@ 'րN ;P@ =M8tP[*l4־1?OW hl)P@POjQ<yqqDc4?w=A?#w =֫hR 8?YʜBXUu wOZh: fp z$qb~QUTe}Q-ZE.rOOFH$x>WwiT[/u3mR}f,5RxPOxy.E9!y&021lrxMp('5,ia_CW^2VgXۨ  6hq@ iPS@44PuP@ =M8tP5t3 3f/<o*~i~l `P@L]Ú|UELPf8PJyY#};Y/нޣfK0h-Հs.:0aZ3O(EԚ''j:E;*^;NQƷ9'?Z;MҭJmth Os^|1sqξxyϩ_np@}|JLAYn(z =H׵K=#OT7,UK@ r@]L7*]ʌ9ϱ|E?gHнypؒyp0HQ?AUv:cS (h3zM]Z|TҴm_5٣N:|%ܐ̈́,%9% ʌq\pEKaԥC⺷Ojy:c yы{dH<}~tB_|׵>()Kcݎ~$<^g"?pGqv]C$vlDFr*@YF+`\&D|g0ٻ?|)[Y.M{W' JV ##{ !w76kKDvU<%)YiQ| ?"KDiq*ɬ2L(B )t{:o*vz>/ 꺵vϪ)Ŷuz &-3y,8UUK`.k­Rzeq2S/ĝzuo.-f/' 6#XܜJ\Ϡ#{ů|aM'$5M2P[ȥVFQ" H` q3ѿ:ǧx_F9t+/,*̼9''jL:H˪,h Zm:UlŸ !rU;ry3i(RcA{ }+Q `)@ U[AwU2o#vy;~c{&s\θz}{Pa׊M]kc_x6o9)'2|9V'hy'rϭt~|Y,ԍ6GF2?F) zjKx +6q'iQz NfƩo6şk1xjwK-4e| 8Ri7:i87컦z/+nu _%(8#s"1q8!6t_,)xr}6ÖdhntcOk}8S W T2bA?tIs߱>4_x_AmE-kԨ,\uEf,)@ÍZfk-yU;UW$s>MIVliIj}o 6oo`"G*H(:KUPi<<ŝu=8_ol:u1]\# ;#+̱p}W p+:EQ~G9<H6g}({ Qd؂iErhL/>p<ҼA-ݬ[QxGd ($+r MS q恤ABM@mP bMUҰ\)J.OZP ,r`A=h(|Q[=߳?Ɵ7Tr]GkJCa@P@'S܀=Rww9/>>5Xs.jzle'8Jas-ep Mg3&1B??uֺZW=LOtm>K]YDE焌|9?9^Uܽ?sI J.S{~4jךgݷ/2*TB0y]X%<00O TxpKd9 s鯔m$~ĤP`1i{cMS{yRچ)1G&ӱIu jҲ;Bn [lsJ͠ݞ\{RLST X%(N@\ڥI]f}9+I.}rP5Ɏ';y`{Nmy]!7})]l w۵%SK M؜CsO#r.hޔ>uI6ܣ)K7*I;M`֫]]@I=? i`RФNOt ''4'Β^q9'4F!{z~>kޥnO7h;} ]7(ţ?f/X{]O #1zkĚR?DVbW/O෿д,эJQAxgʩ20Hy5\J>+:㼯#*3|#V9ox n65!,  #9>//M_#|{K +ѴmW:Kw? #=Ic@>IS=3exybqcڟoK %ИImn#{uC Xrb@N+֞C?hωxĺ2vogyg[IҨ.tz> |AY]((9a*n#Uqic㳾;2I5]GtZxEO oedPppX8FA 3͊˫`ި.%grX=DIS=2eybqw={S-zD5rOnx܀Uc,H;Iz+Ӧ3p%eF֏g޼NGiTU!ΞW/O? дMGxƧ{ %e8 U#vFF  )I2ܒr'zK.եtY[]dt$8FA 3ˊk`=|p9Uzҥ'eѽ>%4$M5R.8HB^VU1^|MwZ}a#2 #F~\F0H]\Jϕ>mLsÚχ&fKFK#+ppH#98WiIϱ- wfH2Xk 4j՗*D ZYzt&Uei" zʅ,OCөVyiO<=|v/bOEf_8D$}YF܅#vG$z8|)^&us#[aZ{gK!%\RFG','Lc>Syfmă$xvowƖQf ~Wi ei" ،ĎT)bzL/)<ӌ<3r3'x{^%,qih23/'p՘dmR7g -Z#X25k>uyTU88e$dqQXb5DM4g彅w3HrO_'I\)HFquƖQ6[*'Ny"yguu*wdw>%<1]ih3/beG:I$ĒI$I5S *>_.ZMɜ>?%tdKG/'Bpp ̷8eysql˫]WI%נGDԯ2Haܪ܌rGxq9pq5/dz px5?yX_5Ϟu/.cFI+cirp\p (P:@y52|4΢}v3%B]6[]4 ;=*<`p$I$I$I$Mz4Bybbj+Ji^OsÏEnhx8t 1|-,TmR'^[2'7WMq_dB".UAFNNp0Ugp%wnF^i9k;}GWS]{XD</rO*A弧 RWOoü4j=|+: vzUypEI$ĒIbI$I$Jbj+:y3|Dnh$x"F8yԿeo1$5qeP)V2t jdjQ> 9N-n ch\0F8QԒO$I$I$I&TNuwoi:\Z蚕Yn()U99el#gSgQ&ۡwpt^WVGŵϞ5/ك%4kXX\p\TFT\5i/g8z:l]Al#ҭd0D>I'I$$I$IF8Q,M\eiV+{<zBޭ'BpHTcj8ڪחgnx9ٜ>>uykit:蚍In()˕Pq0m $zYfy\15=i+:נz7ߡ | Oχ<-qxUԣڂ$R3>Z0 msjة5c-3MlӴuڑ@?'$$IӅh#g|I6"`bѶFBzᔃFpp28|ߘ/!LvϠjށCv_x(+ 9a;8k>u℔CWӚ/}ӮiAߘ/!LvϠjށCv_x(+ tc}K&B-Zڡ;=z^wy4-=(" ? JM3ޕ Nhڕ wC9Jg=j4ڗ3޻v^- Q00 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (? endstream endobj 331 0 obj <> endobj 337 0 obj <> endobj 338 0 obj <> endobj 336 0 obj <>/Length 17978>>stream xw|M/bƮZ1#UbJKZM5JR$B5ВHHĨD$D=ܙ{從x|y^|F B!XʄB@U&B2!b-P !kL!X TeB!Z*B!UBʄ(U BU&-m!2!D?;dgg[B TeB$&&k.99M!怪Lѕnݺ]~lis)P !:9hРT| Kiرc5)vڵdv…uZXBU& WҫW/KNNNhj֬yUNl߾=ڍÇ0bkƺL>}ŊS=ѣG*Ujذ!7/*b, hY|MKۢhn߾]V-aFkԨј1c-[f>ۈMڼyNN9p@xxxٶLL0aѢE׷-zPD5j\vM3f|W`>ۈM?xxxȲlp``޽{S3gD2m) 2!F^{ҥڵku+PxǏ.\ӧեKYfM6͘Ԑ˗ 8 .]UXw/_VSN5k hrrIVZeL%*Ç7xVjP9HII3gNpppzz:)RdС~믿ni27o޽ӧ-m Xrѣ믽Z\7337*'&&:::=e˖ FAU&&gxݻP^9rĉ,mW~CU&2v yFFF M:BϺPJ$|ܹshѢݻwk=EZRP!KU&&Ç7oV(!~ƍ{W Vڶm}]x7rJWL???d䦻@U&J*p[ڐg|Wmڴӧ5JIηu+믿1c1 o5 ݺs玛o&-*cxuIJJ \/66_",]1صkǎE+VN:67$ׯߎ;ʗ/ 3aj:tME8~…M4Q6O?E|ri!U իO< 1ݻ׵k'N.]j;~iĈyZɒ%'M_W49Tebկ_ٳ6$s!Txa4kɓ5LH]ܖ*U +yCBBF%-*}yI^d. ,uuu3gd/t̙-[fee[ha u"w^~]8  UW4Tebв秌xA"EÆ srr2xmݺu/]JFm)S&--H]qF5\P_wQrxk׮U[LBHҥNgϞUVyc.rƍ˗/nU U7N:EEEՑ#hѢbŊ{===z6JP… ?S[#GڴighZ2 84!xr℟#k…׹sg\d)HsTҿمPըQWVMZz5;vn:dEU& bdfW.ϛ7xpF'MW_}5!!wݱc_CҤIiyRR&ٳ|訋lX|رc`)T[Q`TexA9Nx,5m ޺u9%%E*::ZG)Ly(W\lll)H޽322ϙ3GKaPI~sUU޾}RJ7o?~ŋP_gTR'NоR"ɓ' """p1袋Zlh׮Ǐ=~z!QM,Dw"s0`ʕ+¶mBSÇ-[v]4mR(СU9rxa*hR<{cǎuɓ'H7 7f 2 +2o ݺu*l޼O3jԨQ ƍm&&&Μ9~ʕ@4%K֭ %۷o۷y'ߚ7yv)6@u)lOO+VpuBD6l0bĈo^(Vv$. *:uR(CAGy?CgСxb#W_}jispOܹSihʐ3߳gOōL ޥvϵTeb | >@#pK(:Tװ;.Hbbbڶm+dȷnݒVX^- KIIHHW^tt4B{(]SLUy0SwHpϟK{!*PP.yZxbDW1-GɦB5JNNNVDϟ֯_?(bYdʕυA6l18]Z?v* WU;NsҤI-cln-۷OVyɒ%ѾwBbw8^c(8., 9F?+r! ᠠf1Uy!T^.=<nZ\ٳ5u&D K./1WV JeӅݽME.$̭4[ <ԯ_~;v.#7fggC0!]j"65 ZȒHwv}۶m  "([5! ),n`ct1""Bl.[ 6Ø }dӢ6J C8Qw/^?prU/=#˜? OII$#^<~8l\666$$dƍ¶5kDl1wiyu_F_Q֡_~ƘS\~FFGKcʩYb %Q2B>ZQ(AP4Z谁tP111Za3jk7+6m-@-]wȐ!cZjZ^\9a1h/,_]\Qv֮׊5^aP&HvU,JJtۇUJUY52akz:*$Q_bBs~~NTɹDxlhM-8={a ㈻9"|ر#HHH@\,qAKg˯@^x0jTGd/_Ek=@PSOOOR\]7bd=ĄX[ mذ˗#kԨѨQ#Ȗ-["cqv/rnaX`q3TRDu}܉'įxUGn*c4CpSVӝ,+{+f?ϖ{djdQ+ s9^A> +ǐ R,Iܦ}37n 2g#osg%bu_v4o'_ @,3ͺhɓ',XO?+~aBȏwޭi *ի_lL @8,Dh Udog]B=͚5S;Wi HDD3a Q9 E\Sȑ#WZeXqLQA+1qDh2@X J ]\\m]S!LM4|%5݉>>Nb'[:oUp -PUF>yMnB@@b ک$8It$|QZ2eJ޽M0m۶mٲٰ'??ۯ]pʕ2e >|֬Y-&"k:[pp s[/~[aÆ{x>|?B_"R[i >Z#oGɈ@&$$=zTxꐼcO``86[k,]Czӧb6D7o9iX:P#99YS;cW\1--$X`3qr#ۚ /( / WgHY/pUV+[SFIBȡ+";ERB]-bTR1{I3y`q^cI##FXn8;;;w(qnIhv۷xu&M$v>^ +Qr-N:%*R7 gΜPjҥKjC[bE\Dzv),cH+ PtY5kּyTҶm[4qTK%VJ싺c%bjqUTUVH]羼КڵK1x+W ,[l %vvv>Qw޺uKX.O6mH 7q@.|H=!r:c @8ߺu͛z䴠f4h#|ad7|\%~qjjۉi(C!tCڰa>L%4Λ7OldPV&TR#kGx IFp?8p ܰa$_~赳b oooĸ- "k{>+tNt9W}T+, B}Aj{>繾tv49YAM K<;fe*6oNs9(2~A>OOϐ3f u0ɓ'ɳ{J\m=(Y By;ZO"ΆB iBX__ӧ믿~9 c7stI!IQ%GU+G[~S{e/óĴ˫̳Вj'PHz]޹۹F.Z[h/{\: xoq…|"Zd3g4m. i û5kA>\ tWStpp@_)4fзo_d6+Z*NN0kܸ11cx<`'|"E]zUr{hK,裏yY\K cڵ7qH3Dܵx͵nΝ;ZN gu6 BtM-!C`&*U 'JqFmE bl*J{キqFZ˲H-d4` <{)p"KQr/꾀V gWBN Rer坱crLJ zP4}[,5jbAqAT7zk_)O o@%E+[ӳxhkT_egg %kg -K4kԩSHeA[jVݘ\ѣGCM2n8K;t?.wޑo tV2P 1 ]rGEE`4|@ܺcǎB ,0ߍR/ϥKF8"׮]Cᡈ.:P 1}BCCK,*TΜ9Bm`ݺu#F0ܤUXQKGZ#TeBL}hѢQQQ...& :uEXbC[L[n]vMR+X1b&LоܠAnݪ{mvvv?|JB'-U^R,Y2~xNٳGumL)Ѳ\rrrV\K=Ȓ7m4`3Hl]Tݻw}OԾm~BU&$޽lm Uԩn:v\s*,Bg%|MjM)RdfJwʄ+IIIcƌ4n~~~eʔgÈ-*P^zYF/4hPLLLGV\9$$Da P k֬9tЕ+W222ʕ+KZ,m)辥J.]ߟ_v,d'H?DL![ p]vhbp_6lطoߙ3gn߾bŊv:b대ʄbC踥J֭-jBU&B-U,mBU&#-U*BeKb)ʄbhRł8TeBERX2!(ڷT!L!-UHCU&B2!b-P !kL!X TeB!Z*B!UBʄB@U&B2!b-P !kL!X TeB!Z*B!UBʄB@U&B2!b-P !kL!X TeB!Z*B!UBʄȸ~zz,m! 2!DoƏɓe˖YB TeB~߿w>sKBHALуv%''mڴ94ʄ]֭ϟ?_P!K[DHALщAshh-m!2!$o&N|\b-"`BU&h޽{[lmذβVRP*B4rѡC^tI:v"EX*B 0TeB2|SNעEB-m!2!DG}vkZ6mԺukZE-@U&˗{qykW\YBZE@U&׭[$|.QĂ ƍgi!ʄg ?n׮]JJ >;;;oڴqƖ6ۂL֭[m۶|2>=zťJQTeB"++CP˗LQL2eܹ;vx7,m! U[СC:ujҤIDDDժU-m!6 U-@->\reKCCU&ĦY~{tt47K&*bdgg;995jhǎUeϞ==zXj|`i[!9P ] _5mҶBr*b+ɕ*U99p@PPPdd͛7{{jժծ]?~,kCU&Fҥ ><~hѢ6.=<<~g-Ǭ]F*b̝;wʔ)ŊCli[ǯ[n~XXXXϞ=$BU&F0`m*TjX C՞'ҥKUֱc5j)R$###--ڵk1118… uֵUoܸѲeKKbJZn}Q¾ѧO'O0b;ƺL>}ŊS=ѣG*Ujذ!7"P ɛJzeiCL5k^zՀ۷o&7͛7z)w=mTeB !!Aoii[L R۷oתUKؽQ/5j4f̘e˖6b#,9;;2w^(̙3L[LHL0aѢE׷-D5jԸv횾~73fꫯ$555$$dBhoopB///KەP zKj׮mis }W ;x?.\ӧO=K.QQQf͚6maW'DJJJʜ9sH"Co_uKPI~p[ C8uTfqpp9/\~^9/,337*'&&:::=e˖U-GL͛ʁq^}U^\m#=(UrJs2e҆AU&fv46/7uoVLLjYJ%O>dܹPhQa^ݻ5 / V-/T*y葬K&%%O>P/sҥM{]vyxxyp1kq21;UTA@zyK򌯾M6ht9xԨQB-K)$_3 Nxi֝;w~7՟DG xHDիW|p?Q.J:q̟wHЙ6yda@DDo0+yꢖڵ{ѣGׯ_v3y;;/j*lذaĈl߾Pvڈt;t} *:uR(C G{ȑWpK&٫r9Tӝ;w?[nHgTrT(v'8nqU9Bc?uȵg;ɕÅWya iMrҙm# ۼy34j(ļTu 'gΜiooʕ+M%KT ׭[5%h/+|>}: =m,v]~_=J.b Do;OGw y@%c?Ӆ *öq.NjСx\#UW_}j6n-Z 4f0A=_~K$,ꥋ[ e/7IOTrsy_WjreFۭvɺv49Y;::zxx=z9ĉOׯ_W=R^"UVʚBn烲ܕ?e%::\IRKGJ??Pn;w QRkL~rCHHᇱcr<\ph2Tw5xȏHwv}۶mz}A徾hRcBX=M Cňܸ'M%\A_]x3mL=HMHVxܸqGNOO"nٲs`bΙ3G*{qQgJJ $ߏ|q-HQ(_"BWΝO <;,, ήR\xΡ҉gϞmӦ3XdtMPHs Kǎkժj9RyaaP e$YIWayU3fLPPlBa>5ax>-[^*l)qFj֬"> (ټys&FWh_~SYx G}hʩb)73336lxe5j4j0e˖Ș|WX{q1bu oBp +c!cpS jZGVE{`|EϞ=۰IMpqGvf$$$}HHVdh/$!!!yVֶYfZ&Mu=""B_ˉio9y.=zT zxx U5ƞ .@e"h-IӡCC=x@ui(؃?͛q/ҙi܋!Ӫ]pC8JKK3r2$vZ2eJ޽M0m۶mٲٰ'??ۯ]2l/;;L2Ç5kI']^%ovpp0cU~[oZmذ t"5вhܵBf!FbqlѢũSdA3h<&(NR(seXi+V?sNa|FD_/4ۇCegeff֬Y͛_vJ*m۶E47NuPI& "DCR xДQNTrĉXBTR '{#n?rA3 8q"!ju1bݺuFV|9ٟQ{_ѺEEEkn߾}ŋG3i$WM3Ë0abbA7q0x0"t##_̙3jhsdPVrLddd>}^uD̺ 2ħ&x9F]y?0==] `c6r 1c6B@}M<m\CK#ѴOl7 O>b߫WjZHXkÇ%K|Gj<{lƍD܀,Z$o.\ȷ+"Gf9sLӾS۷) û5kTjS $$$訦@*ѣ Ɋ#W߾}wܩZUVYSBA ƌc=Q}`{m7*ղ]EZh!)b|PػwH999!nժt2Ll 4RhkT:&T?ìYMH:u3J,yeo}R ҥK#@w?k׮!ſիWiYP l*PrGEE)Is|| ر0g„ ,0V vٷo_+{꟔ XٮeƔ*7o*xW M֭[<+&& '$$Ϻ UXQ#G|Ur?:hs~& 2!cr8^O>%Kt<.49sW֭1bbCtY:{xyy-\P˂t>\h̙3ճ7mf^CU*l*'րdWׯ__8r˖-~~~b@&!D;ҝ֭;q!CGB/$%%7L TeBt˜MDcYa%7nkA/]/ۄʄb[;1TeB-L;1TeB9_ԝ 2!"/NUBʄB@U&B2!b-P !kL!X TeB!Z*B!UBʄB@U&B2!b-P !kL!X TeB!Z*B!UBʄB@U&B2!b-P !kL!X TeB!Z*B!UBʄB@U&B2!:q!U!D^kܪ{UmWe8ř+ʄ UY U{Cڄ޻o[.*^FU&D+ơ%~~=瓊* ˔rz Q Ƀb(SeaThm&(k'gz~=g!˨ʄW!˞CU&$ot\qSmʄw TeB!z*B!UBʄB@U&B2!b-P !kL!X TeB!Z*B!UBʄB@U&B2!b-P !kL!X sG endstream endobj 335 0 obj <>/Length 31638>>stream xw\jUDTp@EQUP,22WnqQĂZ+ZAU87""߻|LBz#\'9b(b(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1>'O|MwqqpssoJ?ٳ<yB ׫Wh]]]J"9_t͛7kײsYxqJI^ȯ]CAjEs'111y޽eʔaOիSNIپ|9Ν )[,7===s< 8plkPBllC gffL޿_LqU{{G6m;vZj[l9rdrûuoeCA5j(55{ )㘻w]J6®B נAtǽlba@5CAիW޽{@) ]b(h?J*zJCAjll977w(P~,߻w*v΃ >9yu? z_vmSSݻ7bŊ–T1fffo.LL]vիW'&&رCq%ro޼1be~RY@@֭{}kk… _C Ylن fϞM۵kjw3..N"##{"CA|gSΜ9C_zUNÇ,KK˴4鞞[lQbرck׮mcccbbMݻ3w7n,ta@CA^LS>{lذa{YLLLϞ=ΡHAJ)IHH7o̙3^ԕC yϟW}@岲AXX GGLjV?~<=hذaVqZ[nk{{vH}611q„ 'OrppPq@(.^ؾ}{z@)sF7n,OlllrssmF˚5k ^t-z#FϧIA?&&… ͛'T @CA޽{KKKÆ 񱰰̜5kVXX`g'<'==SN>tpp8x U 6]-s}}\ROP*p=KIz`v?y6))/}XXX=zf͚g)n֨QDGG۳=޽;ePss8\('N|=._Lbff&t@Ͳj׮ۤIx J~ɓ';99kȵk\]]SRRZjSV-Z }vȐ!l3cǎ=b(h_~e„ gϞmٲسΝ544LLLdh۶m#Gζ۽{7Y\[lYdɝ;wLMMO-*8OA?!!`ƌǏI B -Fv֭_i&?޷o_zpȑ;Q`=p̙3-Z'@5իnjßj*///.]\n]5hŦTR(b(hСC鹹2,YRBvѿ٭ZZfPe\---߿ϟh``_}*[VRСChh(7M6W^mٲ7n,*~^y9_ã˖-˦\~ֻw(6jHD]ݼywެu1ʣB4Um۶v<sηnb5*88X'!Fze9__~{{{OvZ֭)ezzz)l4V.A^|Ɏ#ӯi&6q… ,>>>k׮_}Uff`'ԩ^"##ٰ#F D޾}hѢ1cpHΘ1wٲelJ߾}<Shhj  '))O>J*-[{aJJJ^^؋-,,ƍ7tP^I/_>elΝ;ܚ5kϯȨ^_уPGJ o&6lpϞ=>$??Ϗ:;[DD_|!t@ݽ~ٙz]vZꍥKN6=jժc҃͛߼yST8::a\bgg38ݹV=Ա̌o@a YÐ!CK?ѰaC;;;꠳SN TThܿ_l:ɴ<)+V\f JIKKǏSѦM []ANnnnR..._SzK.Fϝ;G^yHHwQo.%!Ơ82}t]]݀)SU$m۸qW^o^l ,XpaXXŦd{E5n*T`kkKRȁR/RJԩҥ M|ⅻ;=EҥK%-u~׻vO5zf͚޽AK2MhɁ\I&rVWƝ>|hll\k4;wdccCY966 dKbA QVGIN4o<՗Gˬ]@ɮ^GoݺUfMa_ iӆ,U]v-z;vP?ДCwԩ_IF3-mnbfff>}Ο?Zz5tٳ:͛7Euhn۶M⨅gϞRg/..u$uurԩSIqwH_zޞ5T';vZj[l9rdrûuVCAcÔb ?hׯ_hт'z}Ax1U:(/aaaJ+V(^pgϞwϞ=_~cFR6k֬4_M߿ܹsCBBF<~Zvɪ~pp9 Rqww`W(\q7TZhz˗/Z%WWߍ7,,,Ff͚Ϥd;ҨdUTaH ({CA 0tcccRU_m2zhJߣ]+&M$VoԨQٳŭרԩkӦM 5kO>l5E_<O+++y|p֭QFђ))6l(Y&u*hcQd5U.](}Wxyyeggo۶zZիW !Vȓ'O JYd TԽOVW(ڍ\ʸ+W8qt(OqFjaη^3DΟ?O[lmmo^Fbܹsm۶%m޼[r:5ϗ/_b7䔁ZÇ+T7o=zؠ"U\YbR[Q]ܺu+~Qq|űcǞ={gTTF_U;WdT9J+` )ʸZh$G+VoiiiW^BZwHSE4dȐhyyy8',6I&}uW֯__1VϞ= iÐ=$ՏϧƘg̘l2V[nԨQb* swwСR0:u+ 6C߿9a)dtF&v&M 6LOOٳM/jg„ 3D In9j"l:::r(~w_h"6. ϟ?ۨ$&&kNj@Ν; M "#G\|y܉ E׋-66۩SVZafdwD|c;T[lK]6 }W{%VW^iͺN:5tPڠ# 7nU+k!ͮh5A3&&f׮]600AA0U kySo[}2`"QrgVujB(>O_ׄ bQNV~ ﳴū(/V=x`yTjcvwr9s<2|eʔΝ;K% zj+ZEjM}YY޽{]]]UPH&s%*؁dggG˜.TWPբFU~MQArrr*][ƾV *(*F]޽{y{zzz6l5jVW)饏k!MYg~M|IoaKVl}u,%G!/m^F/"" g$gi)W]mٲeذaԩSk5jԠ>=...E\VK.ծ]x%VKW\ٹs)磯߬Y3Z,RzR4WX Ԛ:55Uv/~uݹ:zSs^n]ooiӦU)J}V(HvDՕU|RLpɝ:uUKˋB֑ L%kb֬Y[ڥ!cLnͧ"Q֭[і'c2U/#'3D",5x3Q^ ,%/ϋΝGݻwetjrp  4fJWXѣZ32-ZL]@@5?2SB:[ߺu3gk۶ԳV?^q͛7]˶j8uTn"Տڻw/1꠪j:WE[)S/_.9f$yjG *v6]]]Sͩ" uQֲeK[!Mybb7v^^^Æ /^,vhׯˈ;7Tj6ǒɂfAbGVFιOl~uD1N|ng%P;}xM2O*ZzM 7`o3bϮ_5[ (u!-(>]yT/ٳ_}Ձn출 tUjV۴isرjժmٲeȑ_|EDDD׮]KI (٥Heʔquuݵk %b5k޽=zJm[P?ٳgc|JKY*77֭[\|a슦 d"#\϶%߬fKN'R_V7oyYuֱcGyƦٳgc###===ōkwޭ_>5m`!MiիWАZhݠ zeZDKf̘1κ.*t>E_$%rs翇>-^ gv3WCr̍ b7\ ͊ϱ+NJ1[ dO3.XI({>Q~ܫIIQ"2++K\)M ;;;f@=j۴4777S&+PǑ`mߎ mmb<sΔ]ؿF zKiza^zݾ}LY-hgggeVm۶}wĜQlY 'Ndprr2lMPĎ|/E |V^XHyVB8[6O-$JEtͭYW_})[gϞh``@ҥK? [vm eG<ȟDE/_2>~-e+WH})[Ig%NBr4"("/&P+ZjӡC/^PݻwohgV!;rɯEZM6M[:Lh׫WoСem{_Hh#JMM0'OtvvD7o~ȑ|:X.{^v PmܸSlcsܸqё6,ivd(7S@[Epz=5p;vy䤸߫3` ucLXߞۿV1r2 +amIY[Zlx+u!d'0UC]\\5~'U RU섞֭[)߿u[%Q5zM.*'Nv壜($Qm(_dݺuׯ_i&^~]FѣGvJmi^jj5뢂3$^~&J.f۶m{JUا%?ّU m>C tNٲeWV=BG5Oʕ79_OͭE#*8 1`֭[Rܛtж_SzU4aÆ9+ZW>w\nnԟHTYQ%;vHk<0dGqC9~sߋ$5|=R'3v,rj AC?ͳ(PA~aڵ/^駟fΜ))}}} +ƠO>-.]\M%/SNu҅],,Ce533w+J]\e={l5k&WS[w8p@pUʝAJ*]pASM  &\R#۷dO==Ǔ=U*2rOvbeeeuROlrbپ}A“5220$H؝S7nLYVYvE1Y:TW5Fpp0u[<ɱu S~}kժ%ϋdGV^5C PiLh2f[D|bP VΙ:O Ν;?%##OOZ]`cX"0111,Qػw#J;v젼?HTRs޵k7nSI@39zh&j>XإrO<166.5(RGU|Ǐk֬ikkxb(V^-^6`dk$̙3n2QPQm%?ّk(A9(P=lIKya92$$DQW\XYYSFm6//SR)?^{|ܹ/^d?Ӌt*͛7iU:>͍Ԁ~#mAG|b}/Y.J./t]bǧKynҦ>)ŧG%s_Qǵeʷx1kESl͛";׮] *`իu||WRI/Ơ#J5eRRK٣G?BտNNNj>} 999"e,**Z_O8xg͚E{5*6۷o?SF@?_V$/y棘rnh)9#dG.GGׯIԄfUA1{QogϞ}EGI?~<iii=^J+WIPw`bqM]򉉉tܙ(RDsa1E(YVT֭[L]e˖شi .!߫}3Ou~:9Cf8-+=~Qm"Qo,JOlK BK?X}NS^3!,#zUVT򟥆-##ի'$$pL8{0`=tNMǏik ͹w9q ذaȑ#u&f̕+W荬￷mG ={ZJʠ7ydnC[zzH߲ ڞR^Rl7{\ DsrruIl$UJC1mll.\<|]F])PI2(U\w]6U^4󈈈Do+WK.wb}"#G\1x_2OS\\ܘ1c~RΊ] իW/MV>|8Or#JΝ.͡СCyyyc{藢=ux-[F 34Oll,E@;;;6c.%HJԌDّSkɉ>=8qe4U7J\bDi?(hѢ$ҋ{C*ؙ':I]5jP*hHNN*Q:uo=Q?I޽{1;]؈`o߾X"?/c2n߾M-u%>}A=}޽2PWlٲToA-/0TSgOrғ{14+ vzظJ`bbBےiΝ#Fd71huyKy(U 44h, Q,332(;vuzPS޽_A @i`ʕRwԅP=>} D:zhqyΕ$aׯŋUV-,-Q~*Yh|[߿?m&+.U_w9WbbbBBf|._\mvOdd$`0;{w`PoT\tА4b}Ӓ{1|&jL e>NJZ:h2K_R7oޔ<:ԩmӦMhhI؅,hJy͹sR3C1QmnJ }Ce)~;\> x&6K N9VZ2]m۶Ф|'Nҥ d*&ڹPKpC* ®7]hQ SLظaÆFFFb@yh|իWϟ?*?0 (L[(,hy_MDy2(wa^^ʁOe{ 1δԐ$3d.(8tjoƙ;T2$#Gt]QeTŰJ98UM4X"_%wgΜ0AIoJ\HAAٳgOm r)p|K?pmcyfv^f͚QQQC ŋj(ߟº(vJ}◓V~AܦO.9p-u\e\ ߫CA) sNQdw}4i6DYiӦ ;!Zjiii*UTu֍RMU‹` C5|}~GJ*z/*{{ܪUU᠋}vJTz8ȥkUL-;v;!ԔCQfmР:sٳGTbEv[#ڮi!cТ7n:uwԨQ[.999T }׺tBBJ 1 (dŊ'NԄ3fÆ ]J'?X#Y>{Օҭ+bƍըך+E袂ݢ7oޔׯS %*Q-һw7oNmF5# W%uܿ-Z8sԳgV/^CM Kzzzeʔ)[AZ!k֬IFz7nlff֤Ie|LА-m ⾾T PN.u䮸CA)l1m$]ѣGsΠA.\uyy:Z,((੝zwݺu_~TRs/b?~<(ٳG)Rx9=nԨQRRRw[r%͙ZJYŔJ6 dK???-"vPš*b((moFFFv(SXbԨQ_~ay**qm:::gϞ3gNayf˗/?2i$f Ν;eI:-J#7/k׮o~89 "Wl鱱;v젙#-j ߟqQQooojW\_r%22Zz5H?~\\'jk)4lpذavvv憆yyyRm۶gϞqPk7QC_ެYS[O>ݵkҥK}n( Dܹs&M zYD+lyB eIh hjjPzuIYf%xcŊO>ݦMIWr8˷lٲnݺS͛7OAL~( +7.~1֭-yA!rIҸ-]:?CA{5NjѢqrss6mVwرcJ*v+@BS),RìP\d ePZ 333虶>n36%g1@ %x"EYÇސkުNGG'$$D0ԮٳGS"ܿ^[M6M4)::SNrI24CCCi}駟3)IP- ΑK@깥kֽ>1@  jܸ1ePa[G7w\y^YB-[hɓ:șa޷o@˗/_x4rijjįWNO>-pgmx/ePP)S GmHAsdɒٳg`۶mƿJƍ$o-iӦ[nm߾?ŋ?Õ+WOgJ*l(>]]];vLQ.u\jBtMvӾb(1n8nݺ-\T'>>OOKݨÖn1@  yYggLʠx"֙3gN0!::z׮]}!rTw/}Pm3`!C].Hw/ePt[[[6bZٲe*MP-ٳ͛]&9sϟO,1@ %''S (055jժB 1@;ZjܿwvvH|Zk .$"88~DA  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @  C@ Pb(1 @ (o.Zh̘1&&&lJ``3|}}-[&l4b(@~ĉ]v/.]:m4UƎ+l 4b(|.N==.%%=,,۵.իWtw(H ÇwʪZjyΝoݺ5jTpp S<^lcc3pdzMB *1B{{{ʣ~Mܙ}>>k׮Uqb(hVZ]~]1w&&&5;;;;;ݻL2-5C gnn}y̝9wUHHHٲeUW\b(h?33dz2e;:@ רQTzݻrʉp@ kРAzzP6 گ^zݣJ1TCAdddTTիWB ڏPcc'O(vιdS(.P~,߻w*v΃ > 1fffo.LL]vիW'&&رCq%յgeeYZZMܲe˭޽{׳gϸ8/ݻjBA -Gkx2eNٳaÆ߿_e111ΡhbbrecccZ{;688v666 _~}]Ȓ7n,ta@CAeeeу0KKKvcO1WZ5~xzаaVZZjEGGnZe6 VVV͛9srrr(7o/b(h/oߞP>|GqƒbMnnmhcYfҋu۵k &h^zĈbK2??rUbbb:Zpy*!b(hӧ&&&J)\rR^:=0`]O>>k׮UM CA$%%'==WRRÇSRR^LhܸqCMڵk[ɦ[PܤpɍKv46mb.\`KNNꫯ233EgP8qN:*N"22ݝ ?bĈKTv566/XtiسV;v,{ꚝM-{-Sj  ʕ+vvvϞ=322Z|9536:iңGo6?a bʔ)^ϝ;w5k,>>Qhh(u Չ USߟ۷ 6ܳg꾏zd%Am0o޼4ie*ׯ3>899>|A2?㏳gf;wӓ~PVUCAtܙ$>}O?$ef{iP=bĈ-ZGG?~6߭[ F0hڴinn.Vk~+WSuUCv+N Z4PZ»w._ 222C zmڴ8ݻ?~W_}%tY@9s,^ȗQW}m&tqʕ+4iPc`֭K=]v)lڊ@'''x&MuxΝGlll8~x*T[ʻ%yUCAcPy Λ7OJ\ݾ}{2,X~0 O)))ի׹s稟MY*;[[[ REFFR嘝]R.]/^SXt"(5Eyn f͚޽ޕuNtN3SSSھȶ"&i+ZN:UwիW6m;vZj[l9rdrûuVCAcCb ?h%٦օ].͛ߺuf͚קutt4h@eYwڵȫjvFmw?'':t(>>SN%JjIj+٧OϳV^M\M/ QoѢ.z4~x)Zh>{?y˗+V,L(և1BJ7nܰ5jԚ5kJsԟ8p o=E5jשSpe[~EZ])qîl'N(5jZ! 1W``y޽{'5e˖MLLl޼JĚmR_)6'SJ[ڵ+v9!!?&K uB.^غu_p]tСÊ+8-sTs_kϞ=7hРgϞ) hu베`g V*zeUZ(,^ؘz,2@ݡ˞unݺu~PXmSv2h|/PPGZ9rƍER/(;yX]ZÇS*GSv %Ji>r n.Eu4V|ʕ&MH?7N9|{RRRfҨ@1] @Q^ <<<*Tp 6l`M(}Wxyyeggo۶ UzQF2xԩ`ꮈ g̘1{ݻ]իW%=CգVR5i*UBA! 1ѼyXM -~5h@OO2U?kٲЅ0mSSTQA3CKçOާOvEFj͓J?_d7ydyBBnLɒis8/*]v988?iӦ1B]| p%ZRڵ+-"Y;;G*hzjazIQ56|>|?>PWp ؕpk Mމ'JN괱P#[\94(>|/PP;ϟ͌e۷oQF~ܹmlSiԨQKv֍fzzWZׯ_W`(E9;;cӦM ޽r͚5Pn]~P'YMsQhw>Z> 6dCԬYIYt yfooo/_޺u9-[F%N -1nnnl-ZP?S=+V=N-%vHZZZUl-V=T] 2$::Zlz^^%NĦ7iҤO>cY~_-PN={d7࡭B@?TR3vX* 1c/50*)l[YYrʰaÆÇ+T7o=z >LE\b?Ne;ŵ<<<~7//ŋ={gTT^Uz֭(/6Zǰ0www *RW~UM2~waQ\h|"ذłDEc׀X,7vWzoԈM5*F[,7r5 .ߗ=8v~YfgΞ9s抅޽{7o޼{nww4ɮE>^&_x^/<~RO︣]4 'gxuwp i^+<߼ymp̙3ĝ6/B%6mjDq(.-^ LyǏoߎUÇgrY}% d-8PB1cƼ[;wرTD1"[رcpx 8еG0%ٱclj'VNlf/ rV$yyy6ߺu+^'/̭I7oVy.]X֘,]vt׮]+ɽ{ZjuUq4CUOeUSѦM5۽{wRyfŊK,)8n\ͭUhI񯇇Z-4ThӧO+Jf„ i~AB+K:.Q:^^j7 ]T_0>?Am"TqF@:?#(; 4^f_ JfG¡W~KA (Ŀ?~R@{J[nPc۷/krmNNΠA ~GnL^#`׋fgE006iVy֬Y'AO:Uo*>gwjذaAAAff&,޽VШ9pޜdR)  `- @Y^YXÀivB\&o׮wر, k׮!k,Y> ۓ'OXӕ(C$ˌFA;N2)]>}8{8T1rHae[+U'l2f Fb߾}qqqIII9s(e{_҉w|1T6H(&튫P2DSyJ T$"Ope|&],KlP*p4>HLLTy N>~࠻;_Ȉ (eO4X۳b <XsgϞ={feeyyyS@i?z5ׯrVQT)ɓ'RBc|wKMs~̅ A7 wGjZC},[5,ի]cL ~'???bj$??1ܘ_lܚ5kuv_rEH?}EAsƍIs5Ls)?iӦ| Sk/^r>}xhL^+O⍀?xƍ&]VsK:;lL-T+x#˅ a>Y< i QZVJ_m^5K'[l+[/#e;gVN ;wuւ<v6Qrܾ}WšA̍DϞ=;::i4l4@hTo[juiL9rDI}Bw%99yٲe rPa u/ǁ`c`hU)֭-'$$k`СCry`Q& 1Y&PKh0!Y*9 F[Ϟ= "k\|yJ4r͗8y!Fn%}W#ّ#GL Mtʕ####ݜ*M ʓ۴iʣf ӬMqC: ]^+0Ԑ]lqMeh rUS ̌(y2}9Nƍ[|3gΔ˝puݎ;琐h\AGVV~}ݯDMRPȻ ؅f?Nj: % )啀ׯ Q%!Ű};wX)zX$&'pEeN29uTN`pGƊ4L$^G~Xo~ LZʞA4Bn|)Ճځ͛7CL M#{\^6h͞8\hSRRVdK6%9ۇ\JӆBdkjh=wT l+]h -tZ>]t˗aOd5[.Z@WhdZqz왯Ç# 6l: 6wSvB~Ǐ?XA9s/Wɓ'=(RJyxxg18:iҤ n۶T6::ٳ9~駾}*'eOe˲VqF!ӦMKųCQP,{uVɁcD9nZ]h;+ .\1cƬ\ ˱cڷo?x`xvQף1|Exx_~)>Y'No|A$+3f .cd###M~5 P a߯>>Y%vQ*6-'ً7XQ#bgj\[Q'k"J'C $,nƍYzbbb$';WV-//F`p2AqqDL nݪT9Puh P7osMOOOdq.]*m"۵kW(]ѲeK8*N1sS >}$&&GEEĜ/CdrB4qͤ^ ;5*ڿPZ3`C &,a呑02ZzLlvf͠I]~'SJJwU{HӒƌ#kW`֬Y8G0OzƋӿ .(L}M6ck4l0++Knǒ1u*tHɓ'sQQ䶢\XI-**UYfnnϟ?۽{8t-f4V1RWXn2|ߗR"SPm vl*ZHE1j{U*.L`}kk~DE1Eu`daPddUB*(^JHP±%aaaqqqÆ S?a,ѣGϝ;w'N v8lҥ 76w׮]U `>=A^^^5zdzll;'r1 }2/La F hqDr!D geRCS?}ڴiJ2G Ju@B֠pМ@S 9zժUp,g`` S3111FYb.}r}xrmV|2 N7Z@)v _ oAY Ԕ({wߥҡCs#u_8F.6 Sq./&LXdIIII={ItͶ}6kH3gD+g%˒u*lق|С WjxL͛7oݺiԨ] v!~?;wqSSSq!kj@OlFpp=zFl`eRFs8`$7n@+W2B2y^[ܯ*[oӰo備@cM8 W1Á @DGGIR D҂ XCvvɽmTrr2_|a*n {$4|p(`ʖ-;{쨨(q߬,ׯݛ_*z)FTRCZڵkњG}dK'! kC͚5")GVɦMF af.̶kbb"ڻ{B=yؖIxx8 3̳5@uڕE—(g(m@83𢟟߮]aƌf*WBSQzuheH+5CԮ];((Ȭ ϟ?BTveӧD/hppW}gb݃:qƹszzz w+57b.DӼy6mXlڵk-/^LKKKIIo-r#l&v'`$Ww񝇘T#;rȤIN:5*$$C${QdP6&o܉z4ކsC9`ѶhZFYv0;vK.,1 6A&oݻw[ޟ…`fBCCSPXzQtl\^GyWn6ѮL̘\X pٳ&Mȭ@E6vՂӧ+wyTTN:+Vtssx PAόoܸ<@ժU~8Vݻ {,/('nݺZB#pevp̘1qqßZ@23-uD>ٔjqix/c;rh 9/2ufͶcvkܸ1iv%""" d!.ǽ̙3D`0D4o߆R$M>W` ֢9~W,qLQׯ_lټ<ɮ}s=+ioǎ*:uZjf\|||HH8K.y;eH7[m{kxwܩͽrUVyyypS | ZINN#7Os>{zz&%%ٍS^Z#a 9r|B5.YO 3ı tFCe[!/ JhBPPЦM ƙvΝ3N2pDk&ʚ1; 0RݝP^xтŋ3k޼y j{n͚5q"nK.ᝒ2Qߕ-Zi6*T<*WkhP?QhcgfCje)vھ}{ڵ* +++..n˖-W^>54l[=zM-O?几^zǎۼys?yyѡC<{%PB2W_MXFcۦM9{3ЧN 5j̙NA=$C M`C3j&|2ɓ'U'NP}ڸqc FNբE~)|NRWeff"lxV <+; |xNʗ/奦&&&nڴdcǎkL=ٰaU*dMx\(혘n&Vr Ry3ww?RN#GvڵQFϞ=qƙ3g ׯ_=Lʩ@ T& PB+#рZpaݺuSRR*Wl,2QvE_ްa ;w6o<|~p@# AfڵkW~} Rv-[6~x .,[ѣG[ha,9(ݤpfHc~;99[,0Q:pHKnڴi5 F+t*Ģk/yA7 ę2w7xcʕjfE6rU\ JhKll&^zРED[lQ>,qBBBϞ=mիWO2eϞ=m۶,g****22R͙eʔwZeM\WHhѢӧ d [dVD7Q.í[Zn6`۶mlw`sn߾dt!8gj޼ygV6CkW6N^&zܤp1Od(a>駟 0:w ϕqrJ?>vi 4XnoßχXLMMMHH[6]9r?qFM6mĈ[ g.=nRb'@2hU:teҷ~stt3(#//oرrFTR111nnn6ѝ;wN4W^p9k\i$N@ZZ>|X|w;Y&zܤp1Od(A4Q.IJJʚ5ksrr=z<ݻ<zrrҥKg͚%v8Bn*<A:F]M\WHA#\ J\l$ @2 B/HAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAAd(AAHAA endstream endobj 339 0 obj <> endobj 344 0 obj <> endobj 345 0 obj <> endobj 343 0 obj <>/Length 33522>>stream xy\ /Y#ʾ}P YRd(;_[}ID|QQ"TJD$Kc\^i{?z̜̼Y^s'  !$AA FA!8HAAhAA$AA FA!8HAAhAA$AA FA!8HAAhAA$AAȳg###w^͑$AAGRRR6m~$AA(iӦ^o+QϞ=O8!bccULL$AyǏ/7n\ժUYʪUfΜ9eʔ5kkA`33 !D+4ӧO[YYb4$)))ݻwx񢩩i@@@…W^=}t_WWk!Acc㄄y@xx8rjj* M&I@ ܓamm}ۣGڊ7,K,3gFx򉊊ܹǏVS!߻wo+]]]hA䞹s.[٠ҐS 0 @۷>o4+W._޽{C 155uww1cGXXX 6$==z8ydyʗ/ S#Mc'NLOOǶ7i:?6776l؎;XƍI]R%^mI4 rϓ'OZns.̬_~XRhрl$HMM3f p{*\0Vi8o߾mժUdd$۝:u5kGծ]'$Ay֭[]ty7n|2eٳgԨQ :ydv x ""/6l֭[ ,ȯUSSzA&ԨQ#Z$+Ŋ;|pRXbTTVZ xɉW>>lJ*755*#$$C>}Ri&<7nҥKdD# SKK˻wݮ]޽|ZEHpq[[[lll ,=zy7i҄o3Im]Ҋ)R@m hsssȅݻ>:7n+gΜyY*Ut U:ѱcp®F""[\ti˖-.\";_TRZ@'LtNI4BIJJjݺ5h̘1*~شiSkk+V(/_\2:ҥK+B7d\NEd%K̟?jժǏ*Ajjȑ#8Eݻw<}ʕ+l(Z Hxx8*ajj*2z͛7hYYY(QBq'T.(XΚ5 "c߾}y?G۷o```۶mb#WBCCϟRP! >}*W0'I4MDCe._ mΎ2Ae˖ի*Æ ۵k*gAgmhMeUVW^RSŋ.\g8nKNOOǃCV06W)NNNk׮eEIw^Qfzޗ "dv=tX]tao+^~n144TGGg̙ )/H0h,X c$GO%caH uɒ%+Vx=bQ$P0q8@HAz՚kXlbŊM2ew*-11B 4m3נ>}(s_o DY H?B੅J4P$TcǎK4Eì\V }[={9p@wnݺ"EJ46O>V58Ep4ir===QC7oֲH"?~IXJ*6"౶n֭[)vU ~ذa˗WL$T-Z\~]]uQ&҅zIIImڴ:::_ _ T<,P6h1bbbҸqϗ*Uosԅ%K1Ij֬5D2e :---Bwiaa}ӦMҭH0 4`_+L/_Fguss7n\OAzyy)S&;oܸQcLFEE)Krh,D-ȑ#Ҝអ=9s̏o@Gs%UVJ*˗eORlY]vmDy1$8z@4qŋG PhWvrrAM100`72W̘1cժU(\pzyZlal"ZFI搻ӧO[YY؄xN5 9EvZl[ZZnB)]tRRR(9r֭[O>dɒJ(ǎ =<<޽v\|Yff h*Oo v7Xh8d:27:֟NAd:u rW\A7oѢ2׳ۿ?fggʕ+Gz,tuuα˖-aY'h_֪UK9xѱϟoڴ)+ >}jѢP2W&&?s~E3;P?~Vړ'Omggdž2Zj(Q9,XpBELdχLFEDDg[(ɨoldL ˎ L.~_Q.Ow}_v9 6Bfiiy2[[[Y.ݻ7Si>>>^=vSL-`# \tCPP`S:fhhS$:88Ѡ^Ffim"@lAרQNĿ222IG ܻwO"FR39z(׏cݶmY[}7;ȚƍF:GIOOOKKD={ 4---Xm֬Y+V>vX[n5lP9Uׯهit۷g_Nl7olڴ)6֭[7yd&hH;맷jdJ2O&rZhQв9"44tĉ=vz9:gs@{ bbbmܸzzzAAA*U[l3f̾} %vrr244WsеV[[[7 7sȑ26ѣGM&|p/^l$tUIrI }6z;njӧOhᥰoߢy,^xRR?Ps``('o׮s;wQreh8Q"dj4/ڏCؿ߇}hs-$%U術#4mhOWr99B']֡C %W~h4QԩS׬Y./`3f׮]fd@½Ecǎݓ΃4a„6BܹsG:˗/QB+͍7X\ "$a(w%^RZ[[׬YM<{-Z +y4\pTw|}}ut9sDEE<{L"8Ǎ1-%=SF6L$ښ)h?Cd1ַn?2wHL $an<ʢM5W⭉޽$^zA'5jH l=S5,bZj,t{~ܿ[4Z[[?_!ZN:q˼r ʀwxݨ޼y鉚ΣXbC]lY6$`:!K_| M"EX{, 6SѢE3fhm=%-Bj*vF Ȱz?n24Gٴi inn&EӥA wfNCEWi_9&Sf}y'~K4t \[nɀW>|…Y{ot7/^d7}UCCCzꡊ\2M_ZeҤI\@ХK]n۷oϾyf=>}*qn2-غw=x:ۼy0wdLlܹs~,q5kL:K;w. ϟ?+UԬYЪ޾gϞdCCC (ښo{KNѦ=~F<-M5N %ŋ̽۾}ѣ%볰2uuue\k֬3)v-̨K!!!:t` +"SSS.7%L'O^n.\uh111Z̘R3g3SNmРϟ цrʡDAX裡< ,@/9"H>M ܧOA&1eɒ%p VZA+N1!޽{#@|K,ꥥݶm[<_ Ǚеb;D"YKDq\h\~hkabb$ {ުmmmJ)X۷o{聟ߤI>xАׯ_ZTEm6jh ˡb!dbP2sL6TZj1PQ'YBbbJ0XMuqqalܹs7-[7hg$&>o߾hDTP624 5&3O~b6mG5S\ ą'65:hSd4rS  &)йL={%޾}&::Nǂg|rRDDnH^ݻ'sEC\9].>Ǐ(H\&&&dتU?~E"ׯ_P $b)]jzI(2OLLҥ |0HTsu<‚h7n9=b[N\vGϟ?GǷ~5FsFӧ^둉2mݻ+A5jԇs>|X15[4M+P/\ V$"?Nu֯_e|"b,k޽{F1D 3S#7֨Qc+WDD|>I&2)DFFH";v젩r ߵk׶m.]lذV<5kkv:tH&ih Z۷oK޽{xxixq}yr%zOa_&L։BmpP'M*ħOڴi#4f˖-`WK<-Z8G?>,HaJt*pHxF!R߀e!J GC9u_eC;ٸq㌌ VfMnRUXjJVZjW/&)?7n\ժUY n̙3Lfۃ^/l߾]b@jj*ܹSz!t&1((ZOOy (TYQZ5qPfe˖c*AΝ5,g +V(=7ٳghAjdq8 n:6sآE|ҧOlٳ"JY $E{^ XpC/ިQ 3o^`[nn%)))ݻwx񢩩i@@ZիWO>Uf@2i$.Vvׯ xʉ'pŋXbر4IAt;;;zp~0͛|kk넄! 4ؼys۶mϞ=fbauVoܸ1f,]vE ^֭ȑ#">/]Ӗ-[rK 0 P4Ya(ԩS܇s͝;7$$yСC vtÇd˖-׭[ۻyK *eΝ;iǡi IHӧOxB|CڵkG=~8:!%?8y򤩩 ؀ /t邖HaI$.ZG m۶7NbyQf,Pi$z_! >;UR:4dHTT Vۨzҋ<<1]r%$Tټ,bqlRO"ORF W\Ank׮'~DV&x:t`g9N>͗I|Ae|ݣG9s #Fz vBu+Z|n&qݺuh3P'荜Ə\v˃\oBrsd3j? OZAZ(0_-T*L&NجYaÆ6'OZn->s~p֎-Z4 b9b`s1\-e.Ŧ틊ȈaoD+ 6me}|ϭ|ímmm>|TR,1** bVZ957m׮]ݻw?q z˗/mڴAߏ+BlILv!xg̘1p$֮]ˋ=ȰGuwwGȷ9??~4|H4%kܸ]>}P6x1,xzz:88}FH*>|:u*n>z' mrOdɒ֭ɓ׬Y#`C|yYIG-O++o=" = 6}6w'''nnrMLLƌ={ҥK:t|iYo^~@k/qssv%U<|Y#E|XR8vsssRRJ۶mK.ݱcGh(^ #[El1b֭[eF֭[^ny/^B˕+'>e˖g}1!!!Zh۷ś~FBv!q ,55o[ef2}'r!Dw},y((S`q[g~-ifDN}d<ɳor)66VIɿ=/̜9sʕL}+5k֬+Vl}j׮-֥Kccc(Zj(4hOFf*p8߸qc޽~ |\wÆ ]}L2(Y! ???++"Eܼy3`7B@P۾H~Lүĸ7bw+R" I]SB.@pps t9]29zS,ׯ_TЩS3gd\vbBTTIfݻ:u*<ŊPBҥK(Q$ _2IKK{IRR:Whܸ?#=w^h(իWZڍF~<.q޽4}U, ?.khdʖʕDWb*4ǏVB >E^:4|p-,,bBߞw^Y䔎߮]7nmmse:Gy'[tȑe*͛7ٓezzzoߖU(xϟِݻw+u;wf~ 2CR BEljKlpOdVKn:?͛7vvv\ٳXM4 lɿ].L4 7!99kHdsǩSLMMbucFvEӦM[h|٧gϞ[jUShQA|4/_L:ͬ0/q <%DA@*Ջ(6sĉyD@/kę3g._\: $ڷYFK_e=SE\VY2;UztÇ%2=zH&<x(sΙ+Vyɿ]^a/3>9HKpݻ/]0w ?Μ}6?6oA֭by%K_m6rHeF=2ꏊrʬQ-[^tK1bĎ;6TTڄ e4:u$aR||Grʭ[x0W%|,XԴq>>>pϯY[QgNZttݛrC]+ 2MTQ8aےHdbƍyr.ctR)@˥D;lصE ӧ\Jʕ{9f!##ȑ#_ۊ2y={VGgho;m۶ n޼kEIzzzBef͚XXX\e=RՍ3'p+Uw]g]UT{{{6> MO ˿2]t@20Q.aƍ'^}4144|D,%DrD~d &g$-3h?L{(vOAdd&ǣmݺűdɒFFFrPzڴi#sp=GjիڤIY84+-[B^ޠEw^XX>z(..իW߿Gg{Q3 *5Ir*V[z:uԭ[FΨqz2"jOQv퀀Owऱ%.B^QF_^f();wʃF\cz+W(QB~x(KL 6~+EHƼ\4WoфOhI2T'u~ O]Ev2 Ȝ#^hoWLvٳ|ۢYt9Dtuy>J*yZE o>pT\yho޼^zϞ=T8zؐmڴ h {{#G '  Q߿/C{Oh!D֭5 BU(T[Qѣy9ϢE.\(C/^l۶-:xX֭CMb[`|ĉ...y9ϫWjԨѿn'ٶm۸q֯_?i$.X ((ܹsyI4"zzz1117olܸ1߶D^AgVHlh",,,Ao]N--ugtw܁/ ΢y1/w0Qp[t@'O@:u *T.^D ?~̘1yI4"RhP>}*Z(6ttt޼yY{ޖ-[F)Wy ۳gϠA;{ϟ RvDyVBBBr}Srhx~r .Z&s}ϟ?ׯ_rY$A(oߢQ\Ahпܹs8 ܹ3N׷[nݻw-==RJP /L8Q^dׯ_ u WE777Į]Wy$B+[lLL ߆|(_<9iҤ_ؘ/_l޼gLMM/]ye˖wޕ^ӧj2a?cff[XX2C6lPewyzz;v\r6$A il l*U*666GRSS;t dL8pݯ>qSn޼wÇIII# ̛7oz x*֭ۅ *VXF ===}} @R*h!8222 ( !XZ=f̘M6e@>}?j ---аQFY, {ΝKB4n֭[(S D,HIIi׮]xx(36$Bp$&&-[v֬Y|Bm„ -[~{Ç{BOϟ?,,LPKT׆ ޽ŬΝ;sׯ, L.v]]]y۷omll7sssDPQHۼyѣ Cdddݺu|͜9s Ç˖-[vmZZKw̸ܹ}v-vݿ,M:uݺul{SurElڴiر8P[[˴ I4k֬9xիW6 ;u~C.k;vL>>}UU*I4SL!L/_>{,\Ν;mmmmXveˎ?njjʷ-J ?M ===3@ F۷WBj+V@e4jhϞ=j3ݻwn޼y1)ҥK͛ECӧMRHA&((hʔ)l ի7uÇzaGq)GGGKK˗gg~>gΜF&M+> FAí[.\ ߶mۦMm< ={,DZZZ7LȐD# BDDD@GEEA(QN:'I4  A  BpD# $  I4  A  BpD# $  I4  A  BpD# $  I4  A  BpD# $  I4  A  BpD# $  I4  A  BpD# $  I4  A  BpD# $  I4  A  BpD# $  I4  A  BpD# $  I4  A  <{<22r{UHAA6m_|"I4 PsMzjPmzy //2e($?.^xܸqUVe)V9s)S֬Yïm6eddmjchhȽB8}H ~HII޽ŋMMM . /쿮ǏBPbbb#P\ (T"I4 x3gn=hkk+"-YdΜ9 AMTTTΝ?~\jէOm߻wo+]]]]$A<0we˖6Tr*P?'!}Çm r˗߻woȐ!3f kР".J ѣɓ'S|pnAg'NLOOǶ70?6776l؎;Xƍ5\R%_$A<ɓ֭[?K133ׯ:(-Z4 Ą? B%IMM3f {*\0V.o߾mժUdd$۝:u5kծ][&F?ܺuK./^vƍϟ?_L={5PB'Ol׮6ѿ6l֭ *ԩS)z KKKO jԨ/M ވ-VÇK*jժůmr9991Jzɓ'mSNhDCCԫW/<<\[[[&FAMJJȑ#}||n*UojjʯUAHHH>}ĥ mFVH (B$ɓ' w^z/wnܸnoo[ZZ9sٳgUTQ%KBdddt)\QHtҖ-[.\tURZjYL0A9E$!))u\41cƸϟ_ 8M6^b"ʕ+ILL,]".|Z,!r*BXdVzqhRSSGy,޽{.I4BMٳ'S &vI兇Ǹq.^h'bٶm۠~  3666008s:r&iii;w :|/MP n˗/_U+UdffVjUh4S>|HIIy+WBQQQA&<<'55K=z͛y4I󳲲*Q4'T.|W,g͚}߾}y?#~ȑ}mV)6j4G+TtO>+WXXXܯN ՚occF_6z-[T^=66VA6lخ]tuuVWU,gϞ~ћ6mzɎ;\ByF3w.>U\ٳ N.]P oDDKZXX$ш_3Ѯ^:h 8=rA#uMehk׎R%"ԩSw>|vddJJjܹs\JN?$'NTwPF)ׯdp -Z4|E\$i„ L$ qJ*ݻ&Mpk{{۷qϟ7k,!!A<$"|nݺzrsss)U<ϊ5EbbPLL(3ƺut9h4$]XJ1i$£ŊЕ+Wt۶mk޼kt ::"X__~O<6l=۸ql!GfT|ܝՕ A{E i >~8tCa\rcǎ)$43\l~LW^Gd9Я={A1y){W\Zz&/^p!kᗣ.]:==ժZj\BuqrrZv(/RHN2x{2}!",,޽{趺tY~chh̙3WD,X@9HٟJ ɋ,Yb % ѣG,$#Jʉ". 9Qo^Y4bŊM2e*-11B 4mS @OiQd\?Pss .hiilP#b?<ۅDMII ٳ'$^%hͱcD%"iV\Yf8<;}*IddH(u)@>}>|X&j4iȑ#zzz|C(͛-RǏs}RJrMiݺ[رxɒ%Æ +_>|/_Iʖ- еkW???9ڦ<~ ZŋiBtJNlMիW;99)}kDv(]tRRR(9r֭[O>dɒJ( c۫){.#bbbreuH&||K\q?i(uۗۋc$dRN6_ʕ+(a?~|pttd3 5jL y&hH;맷jdJ2OB'$3g lmm{f޽{3KWW֮]{ʔ)Jƒ".pҥ:@CAa=t䚡!SiC utt,6m{?M[P5jԀ#񯌌 4;p@(4=c)x"۶m>|8K|9{׀L . Sx&~->\D{o7Gj u{H-,,?2d_rݻKϘ1:p @PիWgZ?;@X7kL"V> .@O>ΎV?7n* ===--ׯy3h ^#䎖L6k֬+VHҿp(-,X׭[6lHc5/_fߔ״oߞ}~qttݼyiӦXnɓi!O3:ehoDDw;4 N3N}KvA"T-ZDh:qGAXYY9~?cbbG]lܸzzzAAA*U[l3f̾} %}trr244sr6_|p(JY Gmǣ9r UeP7qoO6My_x 愢a\r#o߾cǎxZ铿?ZDx8l&>۷hi/96ϟ+T(t۵k:8}+Wr:wQreh8 ̠v Sa_9&uK']vCܧ#l'''۷,Z"4U0lwԩk֬qww_G__Ϗa'3fpk׮eq?`poرc,hM0x((0we勮.nKq v$!þQByK.Yx[h%hD^֭ҥK̙3Ǐ7n\\\/.Omo 'QHW ALLL.g.tIB% ,--Mv:8Μ%_n0W"I\1!! xx-sbl.\EһwomtE6SOpO144POWj̅t0e\\\&Me9" K.l~۷g_޼yGO>8 %D{f+Oܽ{{,*)n/n4m z&cbΝ;g/sƧYfԩ\"ܹs8D^3RJ͚5 ]Ç{ M1444==@h۬Gs"JlLH/^0lG<ՕY&O=J6tЁ5g tophLMMڐE2NNL}X"I`` Ĥ%K6)500[j՞% ޽{ѭ@7Kǥܶm[< ,]I'kXLjڵk011 N BIѽ{wooo-d~q[[[lll||| ,=zNT&M<n~jժT&I4 m&> Md:41D̐N 0sL6ʸZj1PYQ%Yb=!s`0L0+x]\\X"A6w\.e˖mrDDZ<)PD@ςfw_;###J^)kx^)* +iP$Ѥ4޽{8q?PBh)$D yL@%G 2dHѷq!w{X.\~EY$nŦMK|?eWs4#F@; i.͓v#::]2z]vMi4J,{QfۋF}.S :۷Y V:EK7Bż /{{[n::::;; JI2$ 5&bA!F-9 n,74Yd``e333loذEyIի:ܽ{y/^T>ҥKڵ"CÆ Q?fyt >mvKGCBB .03N```NqS_9TtR. 4mڴ,Z+W?kPlu͚5c7ԩqF{m͛7݀|}}ϝ;gnn/Pyt)Aeddyyymo[GzscSSS?}||Csw zݏj(:u*Z, 6eZYYoJjРGgpذalUnGٲe*x$={ִiӊ+“);w8MV[XX;v[n7-4ɢOsA1on&J8GMA gixx8A anٳgX۷mll 9{ll,˗sߕ"""zu=o"GG>bڵpӹ(QNa!|MLLUV=~8㥙|K"2UV3(.]BD=XPXqm޼9###;88@jr͵kzstW8$ԟӧ^+2Gmݻˌ5jԇ>|X15[ ߊ+P.\ R$B?RP@nע%P$^eͻw\\\?~ܨQ#F(QBaf 8AAAg5/^rJH4i (3 -AdddϞ=w*S%j|6`/`7VEŘlು`X V^<0A0EDHԈ]T|avwX69;3ߙ܊+n۶O0m`;vlݺԩSH/:NNN/^ٳ >IX@>y$$$fdd 2$..SNloݺv(GkÇoafΜ։.>*T =A)4͛]S1X<穷3K i:t@ <$$odWjVPlJ-K;v,ITd鏉JGXX˵ɡښ\48x'Yܹ'O۷B8l鞪UR}wm׮ݱcPbŊW^nz5[)k֬4hKsC22=z MƟc*֨Q#ntj*XƍhhڴALRׯ)T>}w_`9sV^{ﴷ.233oڴ|o^o߮8'ziS,S\`7T&V~}HլYpE9ui֬Y~t=c̘1˗/^!ѤkVRWA)Y.͵kײǐ9r$}صkExc~]pq㴸J9~4h˲}OQ={HQ/nkk{%5Xc]taI$˗/ ݽ{Hr>>>׿ׯ_4ßNqww2Zg}F7$ˏ?HW\yʕӦM#.neIܹ?hrqncǜ߿_5hRUV[l֭/B*2S|ʕ>ҥKSN%mD`tߜ;w䎣ɓi{ MCʲcǎ 333>geeQ$7۷o]!Hm@芓k#Ǿ:/xﯾENPJ̬Y{)* q3E5#,,{xgRK?~_͟L p3R[6-[ƕٻwo cӏ>ZHf͚%&&㠾\VLLLkD4w!?B$G4i4{w~{K,ٰa@u!'χ-N'E?Pn:}t2yN|S -:нW^"Sbj`.RJŝra*WU&44I eIޜesС={䤧n2͛7o۶-ݫz*IJ ׯ_'D\nݜ9sʔ)CXK(P$ŋK.t#ŶtRC[ uر)NuRnW T>%!ix1) 6޸qYf)'((LM>]O8J`_EBRjEVr]C7m$n:a˖-$U5s[[ѣGdR9@J}̘1]:tZjlcjj*ƍ;v2dȏ?-;;k׮Il &1uT /IY qrrr&MDN`ƍu}e˒-t>E*ke1"Hܐɀe؂!8@|֭(7o Cϟ?l0ZԩS{>377''5c "?{@ꐿ" 6U޽{?fC.\FAnQ!x|;pѣG:6 23gӻt钧͛7siH4R#\o.x`_xOn8:{ϓs̯KQIa{O?4$$dҥK,oJGӝ|r P\ չsg}h<}DB H+fP|5]&m\&e' ~9h"-,ŋMƭu}Qؐ(٣ DLHСɓ'1KWPcg+rPmaa!d-db+KHkXD)$SGrq ! ,_wVxRiyDSXgCIrѥp ϛ4i3y@=ڨ6d ɵqF~ǎJirIGEE4ezzLH^׬Yw^Q+Lܹ/Н= b+lVVmk׮5H_n:tڮ]~N]#]>WdR|$=KW V@qH4eSE_&\nݻw*KJJڰa zu֭z}%CB 1jM&)K1qĀsrr22yUggc|_VZɼ;v$TM,iiiϞ=+WBBk3ʗ/m6@~Oe$`...<8[- ցVP勢|M=OqI0MLuH$oW#`̘12-͛7֭[zW$Fmɰ`^&gX .\reid&MoooOqJE4ߝ;wRŝ;wp?NҥKwϷoߦ닗@իWZrʱry)u q믊cP\a(tC6h@1R\y UmIqԨQ|hHL|Ƨ%ZA"|,B.!W3fNΝ;˻}dFmIҏx_i셎vmv]kZ 2ۛDavEf8`(NEf,jGъaj3mmZXXlٲJ*q֭'OvqqQ\:th-DFʒߋG;vx)nĉm>"6sbF}'|"8JFF<9D#wJ)2Yl^Z4ދI, G2oBIԔM h/_ܰa*uݸqErBCC3vᨡVxf^jh[@‘n"Zj9;;Sץ8[f8`(\]]Ϝ9s !_WlY}.D10݄l|н{w;;`R_۷O?"۷)KKK;vݻE^1bW|Wl⧚qPGFݙ`#3~( ,TIIT?Wkw%*Mb:v+wn:è7muӾ} .mڵ23v988 0+A/^ԭ[T溊*Uk9i$6A^J RF=}7WqH0)4-K:uĉ]ƨQ8 ͛7~`_|AbQI4M}LOqxOdRz@7E-(k׮J'%}CO---6mJ2n6mlQotؑ]X59޼yݻ>|9uNo߾%q/DIWSVڵkשSAVVV666 6,pF=gN8#]_ I&W]Zٳgku/9p)-)S֭[aR899m߾]q>y꤂rɇԅ9sjժjGץzꊪu֊h G*P19ޥ =KM!&gho޼M=:YX*\è7y&۷/bh[3:ǏSaUΝ2==QF0M%*߿_Zɉ#3nܸPjJ (}F`cJJ o={o߸qY޿ommU~}ͣb`>}*$:tPJLM8X nϻkҥKp@{F*U+I&=zHOUϜ9ӭ[7Eԩ[d>|#G USZc=;nٲEdLL ?^zEFF/[L sfff|al` h_~e -==]M|ulٲUTbK[@* 5:HǏ1bīWd ʕ+XD]/OJJjٲv2`#I5k*I], 0)ڴis3ggf8֭[7ggg{j^[ƍMyU& cƌ!ƒڠȑ#6͟? s{{{ԧO/yqQ@UYLS\WCzoq_+WL.bl€; 0)|%K,]ж W_}E{ҤIAAAVuY4j6E۵k:ŋw::4={ّ%aÆ$a4ϫWȼ;wԮ]K.M4 ׯ-Z 0)(NLL,YlL Dϝ;؃)S۷ǺKhtQ0|u&Ǐ߹sVr/^$ɫT(NJȨW^xxAMSD`3#H@)?wѣG 46lV^* ZH׮]Ϟ=A&M:|0]5f8y$j1]&׉'H0'$&MJJJkP(_<[1$$Dz.]{֭֮]KڶmKg͚I=>lذѣt֭[On:www,Yr騨( Iaiiogggh[0$}VX>t/q=[YYݿ_Go9###)^zbb")'ghC0ZVVVmmmEV%M*d]r>ԨQ|^|ٳgϸ8<ik]Y_ 0?~\fͅ ._ж`x6l0sLK{%''>%*[ |}}^*2_~3-[VӅ%RbK.܌3֯_O<1b{uЧOS]HH4LtKK-[ OJJ L2 ,XdI ղe֬YŶh}9GBBBv9zhbs]v-{g|||hh(o_SRJtFk $Rӧ̙ дiӹsN0īC6hР+V3?ЉZh>iӦݻ@MH4+Wtx ?);d "j4 .ƳJb?ixT;6X5Ÿl]52pPך.5P\Sy\-8KpŸ́RB њ<@|%(s!َLcj]Yx4!*_j B:2%JDj.?+ʿn*H-.I^Tk||W>h@d2^ۗUWTpXV[=UWM6LaTzW߷[+]u&Fsߥ;Z25R5]wAm=7'hpv9~~)6I[Q/E* l{<_1!㪄gRt_o^J^z e(&[$||H4M4wsb"EadHAHqϽ?OJΟ-ШUBn>@Zq+~&E{#^ ѢDSRS#|{'deāDD{Mcbg[A Q-7˂x#UD*>ܜ| HTُQg0@R=Gj{0..H4]7MR܊hjY$Wz9 ToUnH\/q"ygR(VM?_ љD+V~ѩh|Wi]h@G>#9Tk%hy6G2aTuPw,%TgEz%Ѐ.S6`Ԭ9|=_H-"PnS>c-||$UPYĵ|j.x~nPy]+ɋ&S_67,}ns _E제z\>8J> endobj 350 0 obj <> endobj 351 0 obj <> endobj 355 0 obj <> endobj 356 0 obj <> endobj 360 0 obj <> endobj 361 0 obj <> endobj 365 0 obj <> endobj 366 0 obj <> endobj 370 0 obj <> endobj 371 0 obj <> endobj 375 0 obj <> endobj 376 0 obj <> endobj 380 0 obj <> endobj 381 0 obj <> endobj 385 0 obj <> endobj 386 0 obj <> endobj 390 0 obj <> endobj 391 0 obj <> endobj 395 0 obj <> endobj 396 0 obj <> endobj 400 0 obj <> endobj 401 0 obj <> endobj 405 0 obj <> endobj 406 0 obj <> endobj 410 0 obj <> endobj 411 0 obj <> endobj 415 0 obj <> endobj 416 0 obj <> endobj 420 0 obj <> endobj 421 0 obj <> endobj 429 0 obj <> endobj 430 0 obj <> endobj 434 0 obj <> endobj 435 0 obj <> endobj 439 0 obj <> endobj 440 0 obj <> endobj 444 0 obj <> endobj 445 0 obj <> endobj 453 0 obj <> endobj 454 0 obj <> endobj 458 0 obj <> endobj 459 0 obj <> endobj 463 0 obj <> endobj 464 0 obj <> endobj 468 0 obj <> endobj 469 0 obj <> endobj 473 0 obj <> endobj 474 0 obj <> endobj 475 0 obj <>stream xWmL[~Wbs` # {3NVh )KMڵˬ*+]UUjNҺ#q$Z7):e4RFFF*LsmAԯ?{{s}s=G#"3-Hǃ^5܎X^ږЉ'+v;[}-\ХF_{L/Edv(.G$v%mmN?qbZkDҢ 33 ~͵ĹZQ.>*7 5ӋBS%.*+CmZݠw&Wd/[%0KɂH2cSY|ud$q, gq4fjb@̈IoJI+ᙴ2Md$Dl:T24}YκfT d&P*Z^Of9vB;KD E@-'ԮeTs#0Z2DqSz]ߤdAʅ~"NaP]dk PH ahF"Dud- f:@H%z)L~rrG!mA,@5+uS+yؐ^SY9B@} |, h PBD>L"0(tZ"+-۠B{JbIXZ|1O:Leqgzi^,0[i7@kd+R9HcFѭPc4^F.e%uhSDyfC'E1O ޗ`׺ ^=K @9ʵ葭c>CfkM֗ zf5}wlM-#figm؂CU Gz*}j몠EmtlnaBnH WTNS8 ޓ,H})Omӹ= ۘg HTv$CDhuoY8ʻKG5=ya >Զǽ"3̧BU޴,y5cx  hv1NÊ`ke{Bޡ>}UV¢/lsſsTp`_:a}pH-WpflFрl4OX;_ ;e씝S___ê?NE^wsW?!m Y/U>םhb=u>RK?a{.%)G &ݡ/ҒL+ܤE&~@S};cg̥TyZ;2rt{vw) sgIՙ endstream endobj 476 0 obj 1833 endobj 477 0 obj <>stream x9 pGݣ0`; XxL{%` A$@-c8᳁$ fA Ůb;~_EPpa/ \ZԒڻZ[z${(*UWwuE_73 ȏ4aisi9R ny[;b܆;3AH3{MWg ܿ-q߃|{y΁ ylv68< ή/&@>ڼq<wy_6@Z%&܆q J~}$s-B(ifohZ\JH߁vrjDh h]UJtxAޅ \3ȥk-lh'@:TLй&D:]<;x}Xy8GCeLp&X¯?Sq塳/"g$l= «! ȸ]S 0F GQDYtTUDۄys9eRb.]4kfa ~˟78ܜY줉RS IzV`dv5N)(B1fyT1n  )%{D$9')t\htwsmWamLd ΙJ΀{ԔjڗRbFTSRfA<``f9mA&3p*żNA8JC0LVveR*U7ZIRpkr^.hbQ8o>R4^7^h?喘CxKIa:1pA2qƋ\& 6Թ8-1K'NJi{<R)>F~!lµq jr SPI;_% U7kak<`CۿO&(.T+E%Ṛ' 3*b.5x7)rZD^Ȓqظ^R2]#VOHbBhF34*m^=M+NS)p =H'dݡZZbx<>N[p]aك<s, nq 0sW R"E8PKMTy9!ժo GFi8;*TɈ6ΑG@3i~ 1StANӘ 1)i(KlAjR!&Ƹ$ w/ii ,T WKe5yuu?Uw?cZk;Mڗݝִ^e;Dpg'{3﨧m3 E2(X ` `#މ8he4Ybп?iRׁ"}>i@vHmM_v8`񫠽 xwFgor\^+z c0> 0J 7Fp:hq']0:Α'h{^:YbVN޶Gw av e$.1Un|Jn䥗,-,! x,d:  YB/ ,fI -nK-B^ y%+9~J~챒z+Yb%uKdr+iX`%JJ/JZ+J.g'ԩ09|8L09r$LN3g¤?L%Lä+LAZ[odӦdժ0 oä (1Gȟ<!/"NG+#Ggkgw&BvwdE2D)Q!G3#Cd(Y=B"+B DnׁYy LZȼ(i-dkTɚ!R%G{n'B{„lW7"M"ı)LjWEɟ`lFȎ`Gɞ(E~!C7MM)Btsϥ__~uM~MOJ}*?',cK+I_>,҇HK/J']|O ?9=iJqrg9McSs!אm2dXDC!`0 Zc;\\jCum3)px;V2uv1=ElkJ+VZ.I5N[CV8m!=DAV!#ηʰ%t灡3+3MBq⢯s.&W-B(_ah}FX/ }p9Ͷ>ѼEMLMmp U@Y%V bv[(] ^ٕGhɵ:mv)e@ɖee*H ;NlN 1-YyBcTϯ$E`O_ZËg1|hPF endstream endobj 478 0 obj 3765 endobj 479 0 obj <>stream x}VyTSW!I掠v@tڢmUUQRA¾BXn dcA@-*=<*Z;Kbhg8ZOO7G;\Ϝa19#7mߕP^D"y8<-;CΘIV扁qGQjE^CO~gc:=LI%zGx6?C39K)8$d{eahh*)U:SsI%GMUZ '))m)LUmSԻTV V-Z`a&5);S.mwj*^3;%1C5q~(µꘈ;#34W$楪b*z"*ZODmFj.ZGQRєFM x7īi[]/ceM60L)/Ozwﳾ?ND\{L0gtnnO#uٖɅ6fF{Kc>f\z\`/rT8s[ m(j&Zt4M5dl6Zf#m:|5i@ꗊJ:Xg/^وY]g52VMoW˹a+xݙO?x c%TdکWYPM hBuUotyUt Ib8pg$0f oGKbo~X8]oA`*?~O^&vhz9=[# STV= Lt. 50 sYyeuy9&>=1Ovsmk] y7OLkyTUVv{ zc=elzsYN_!)8?S~ ԟ=, {[+/K;O"%@L-_\A=6;KbN_{'ca$w퓊gu 53?p Kpyr`΍8zNq=v;Va* :]/fEܨOnhm7V#Ca / #,~/pV^]> O*Hv L$˰)R2~ ǏF$ j<"=xi9`®b e0>KՔQiuQuў0EcXIJĹ覿?8yRv"xBinlh̺Z~ye;Zo, +V EQ7D!%í>ZNAo}+NaGGqt ^6 ]4Lfa]FMܢ5l:4fTt[I ϡZ`WUo^vo~Pc7 ~pŒ>3ൟѣjfda?O7_wm;b,/Zʵ 9voP띙*E!-4h+.+ͩw'bؕMb`rPEQҜ 6,;xħ3֢:0:0;~) "iUkEFT$Ue`_ lBe5L+-M 6|Rn1q[GLz_h1Z3-Da~3t}AbX:{,=>l[2 ?]›d ~znZS>TYp¹)e3 #ؾɑCfqj0UbTVV55.Z'fo<~ )?E#;} w ge8M [nkaci'8W\t{"-q"m u%@9dk5_D?sܤl͑ѫwmM"S?Cf)*)Eʘ~]q.d(#c*R~,\=Kmdl?4*x$G;4N#uمrVF󓍷XC1Aŋ*J̕3L{O*x !BwHv@w-//tu%D)ϮJ D΢^z1I/XߚZZ9_:g`Cg!&:yw@}AXzb0L4^23-q#Feơ81V. )[(SEC,t,[v wElgE9mm|?l/DoWaCЧy#]GgoƮqXeR= kF (O$y-qGΫq%έd*knv("kޓ~IAa.þmGbJgλ|}`V[\N'-L=+Q3 endstream endobj 480 0 obj 2614 endobj 481 0 obj <>stream xux XSWj]I#ֺm?uGwd-,!+l@HX"(TkE-EX?t9Й93|3s@{ b`LݓpsABfzbBz~n<.kĶIS&2̄Cӡ}d0$rҼԴ1^]>bŊc&r}r~zjv<093G]v:|u&AdjTބȍBaNauF.]$j!tGz1Q~dLNVBv䎜"cSE y^@H$X'L^!/5?-fSADl."nL+:o/\$j+VBE XO,"^"b11El$^&bMD1MG!6ˈD,xxKl%$^#ۈ~N%B v$b2 ӈL"|"M!VZ'0fޟdհaM"rhR듫Y-SM:u`Zߧff$h9sfpxx'sٷqWr}t#"DU]CyVޏ|lll0"tL@ ^κn@6(2<.a.UIJ['̈d oyz󄳊 U׊h0U͠? pcӅ/zͫ_Npgߩs:PVa<(dU֦:>H.n5rhe _6F _g1\ᶕAE+@ r48W*tJ`zڣ(S;ՀdI {0 8O6e"G]TZPSy $Od7\e hUi.h3î#8t<-Nʋ_x_0N,)!Kںm'zc#mǪ Mor`5X Я>[svw;*q]&VqEs>]RwT=f_NdLzϝڿUy~h1^i-/:=ھ"@gRYmRXV8|I!*A\bqh% 8p'EO"q^b>Һ@ -!*9xҚVkuKc,(H|'wE5V\NESYk#d_D\gb1s”GC+ݦjY]%f3 7_wU@ޅ\529uɏϧŇQϔ2Hƀ}3?׹~p ^msV Ц.v`W:ٙaVEAFCX ۹boohJݺK~k-Ә+q[y>zsCwBl "Bpc =[l6^@^LC<+Gx+^M}X Wܯꔕ" .׷~ˡ^6o^Kh( 06,U`؜fC#לM#Tfq]sA5|j6 "Mܴ)zʬyDRZsT\BUH+{ԚG =X)Vb[1\Nֲ1\XzmC?}tNo'|M-EasDn9h`m#mЋb\PtQsEȼyjiil-(1H?hzf;l|(W^pR.[1pAiEa\Z.<>AVs>QoZFʤk3$TAVHr1O'knp=ZC(<OSoxJ/Kkt^R1cyuz2qzNl,~}UnsTKKaH\n,I+&,~m)X҆'8 q!PҌҧOL1:|K9577^OmҬ}uO(Yo[ɩvK 5J5N]ǓYFQ7 ䷴%& dXӬ`Uծܩ*2*h_pꬋ݊{mW[* 8MNG1VE)*ԱhybQ*ofkZZ_>t7 k|iMJt.ѱ$. \n Τ_`Ѯs +$ˌzwᾚ\*:Q*@QU߂?!7:o0}+ ?鯭x,V/ 9|ՆjFѷ\0xgΑٱ}'\*̓;|zGgU4U$2Yg71ʠ${4}:2>q9F1Z`y.g (j<^}M90KN=|J-lp])%gZ5ŠX".}z'OaY{(`|w,uzE&fe<\؍~enRޒPE釪p6$mYH{]$N=_Q϶|]'dQV BsƽuE]^|0|;Ji2+MrjJTg?Bp1`! ̠ſ1nC\!ZxmmMٝ#_sƌ Nkctz3wL-f9;A(qW`2NGap> q]A_I^3~4SS5K;ag:ɸ'0Ue\C>KE{a$Դua j< \ ,&J.,Š)rDkD:J$JV7}yy:w . r݅θJ37K:ӫoCwF٪3o? x?b3#uѢZ6Kt((omk~Ht&_k蠞GaY8 i2B$]Emv5I$30r2d17v6?s€¦ƦzaH1v[O6:NrVUT5Crڼ g朗l|5֟}m+*$r[wЗ ջw]am(wmiI5Tŷ6Z@0foo8: ulQ5yt槺CݰOȠ9몾,䵟#SKpΡo{GMmݷO |"O([\v"^Uk$dQ}l"L}[Ez@'G^ [ÊA#kw~p U1 ݌3FѓESy.S;:=ȓק)Z)i3p B ;RYꟆO%<y3ЌaOLhrL+_+U&~ɡ1 9^:z .OP.ًcw@AL֖=KpQ$_(yc{8'~ljH8X hQip*ߛ/ߌ 96nPyA3eޓˬOZvcȨ ,}џ9'2sVpUe?cUw* ?b+%|=3H-y0OY⒍ehE/&$[sD eܥ |*͈ؑ~MfO_0\T`A.Ǫ3K{4Ɇ@ǂPbȕf /mI?}i hsYouzE"J#SgtF+mUz" GLEfEg؁8ⰻ{ݭ|Np[kiN;04i=V㖳 !GSdrPx2OTV1_kpb jQƾUwZJqn &z~-3E5ikhe1e/8V/ٓ:/_%&]h7JJlbg>rd&+oҩ ( OE/7^a0-:K7mţcSMǍ&B&տt3\a̤롞ȨCp"d۳K,y&h(:3.]&#kaxg}*/vaZAQtZbP \.vxl \s ՋѬвr8 >Sc]L(ӹZ5>T d(sVS6ijl5z~D qȯ<=QI' \`2O5rWwÿՔf{٬>?!Vtéc7nO(;f%'T]uUߎIKM>H9&o\/Le2ҩ_{S]WZBYJcpC_9뜱R$@"?!iŀ.>8Y^2l1WvsjWŢ'Ѩ!PVk㇨7 /ʠA&W5,F>}cuYy{hJ=cm¢?S#7REj!@vXm+Nyv/|g[&R5ơq)jB[-on)~O56)<~'~T҂ 36`Ѩt)'P0J jLhdzw5KzE`ƱCф{APEԥ؀bUlV+:vOP,IE`YO2ɋWv$ln\nCJ*T_s~,N^hQ.$Ӧ$@*m8O33j֯pX D@kVDEo5Z<ܸ%.ͺQa14a_hT{:>LBAnOGFoR qT^k{:;z8ĎHtT5<`]v9뒱T\E;'yrpwɉ냥D>C/qk^n`ӸT!x6Ֆ%ec<`?~0П5\(*ca:n/!#S^l}wsXaO޿9mݲ5GM=. 7AF㭲!0u7ɆG?y'WWW⤣DfoJرҁN>]y-dzEb̥ EOJX ܗbvVѶ0(>ܬ캼-Y!'oc72Z0ƖsQzI n,M<2 W8KxM^j>6VļL%o>MulFW_.~Gu8rC?P^⬆~9`aISG=vWKt؏ [f`V`"Jj:W6 `0.W8jUJf 1鹐(Tbd='[׏,IKȳsz^͞ksi߆BĠcnۼ Bv?䅰>6;>L=Hq t&eS rkHm{VԢ#9ddn sEyg Pz'ٽﵐ6' |'n=p]p_\opޞ;Xˑkw, &Z+@6nˀГk%3 7GYzBH ]&ɕYmt7.sTVۧ{nڰ7/ywv8@/CwtGh 3>~}w2.SQ×7!0 F{(YOt][Gl_@* {{weeSdɀܖrHg=gu-ZԐ egnnj'7nf~^F։ּLj^{H5vgjSzG endstream endobj 482 0 obj 6733 endobj 483 0 obj <>stream x{|Tչ7u\L̄!H$h4r[L1t\Ĥx" ±-jYЪ`O=*oU* Uj{jdvg= h=9u}Y{}Z3!.0<aI)qwɊum!phUWFn[oW_.'8!x5o Yתe+2\ɴ.p}| ߵ|{-ߓb2zW>JO7[WlҾ_Wy}%Gz LL~ >4OR5[ӱdZ爃7@79< sl.A~AQ9zއb>akX9z ғ >\ 1r^4+9]KOt+%M0lmGHG_n. ྟdbr>@~k澽ZKS3wzwZ;?cmOm}+I-zY?C_sw!wgآߐ\&C>?Cӓp;jZ_iW|s]vYjygǥKۖ/Z[<ޜ756ΚyQMT}cʊie%/.{Mp蚪@d~gRʏ66ϯ0c9fL2)E\KJdhI0#UH]4Faɂ8\m$\q. ^pWm$ dU]}uX~1+:kbaੁgPx!ZX7c?%6ꖭL6/f涊<2KԕTf%UQWd-/~&YY\]li<ɖC}7-JN&'ly'M^,%X )H'rβtg~BiJB,?پhoYшtC8V?dw[fghM7>6;-yehnevIMF!"uAُܾ$wXl3xg*1+NY+prޕ7x?dWtU}ZKœ5xR,ƺKNZdIt}i޵ cI$\~*YRWu IS#ُӑ ί닯\^:Mִ"[U\fr‰lc駰m_)=R\"E\0#R*a$K.,3"q&#-KHog5[?:1;5HN$%s21c&=%iviNЄHݪsRrtm_O'Hxw6byh0b5"b@$]m 4y8E^`I\-$ה$(;5iٱUW͞:۾hʾxU:kQ܊GjQ^u_qD595\^;xF:gF!H oM 'BtmNً̆fbU KMt;@gul?FL~^h|B+s'`+//d:.Ŵ$ԋyc:1!u2NYϪyM+ZQG*"MIk5`z WY|hJ޲8l>[[EB$iH*vr>QIk/Z* G^/?HYs_jLu"+xkEgĖhlȶsVKDrdo7.GR◟ْVxq՛.6R+ wVH*/[^͂~DTt5-Ci?o`NraQ#]3v[DV9$܁ri$QmIkW3mEk_u>\G@3g"qq8XFFVRQn[y/ 9ݣ}5_ j$`{eM^LC0{:FuuEkrxH}G+y~SE_P"ޜHgk] ,@$*je;4i^" ϲ>.HkvR]ǂU(4Ji!}}ѾPz,5~E(5ijH-. /qh ݊>Cry>__dzZvt(RK:{q'], M+ yuEռ9{E]X"exyP*~(ICx7bK#ƊMlt$I#oftVy\w4kFƞ8Bm|øUnxΗ>GnDzLRBa|xŇl{09(hYΓyW] A2% &9$6) " NqmAr%xtu1 .ãG/S⁲X|_'pA80= O/~fӋVs'9aVSf?n.Qr󤺱n ZPk>ܚSshhF5W1ӚniMfrۇ\0vd#;l,焌?Hc[C09sf묥1hpEEڈ!\?L&7}s}*$HYy.Be [RU5B%5A.vtJB(Hz%!% ta o7/כVJ,USoi\) SȱxMlbPǏ5ab q!,>H}&A}UZ\)WUF"HS!PJ9G2Eb5d`V8Ŧ &=MvM-?KwF4ʃk{ߠߤ֤^޷~sFBx AwFuSuKLb :uhGA%1%ӱrR" _T~友:V^\[wӼNZX5m/77u0YxB5p =4Re1 Yu o|4<^eqmAȣu-a^;{Zea}YX~-C;0!Z@h ^ 4J{ێN*|ƷEo ob͔>-D+ /-I9  32}p'<JJ٬lWnWSm \NI/E09QۘMs1lHE|Z5w[ XxT|LRAFRhd6}ϭ 7xkϦmLbؓ ZZvZc o O/kyJ%**ĉ}|7JPx8R8eO۞\\>K[G goythEs;Qnڐ~SQn4ҷG+5[{BJO'a D}pC^Xה649e63O[ <>w(b6wi0_92pd&z[֖qD@N;2Ix+*GO͏F\6`n}oˤ/%Vo)yn?]r#zf3.y#[/=,ʘҶ⤤ )%T8-Fd \K%rQNu[t/G':h\8d(DsJKؽ -Ee@.;6ZŢhmvX]o}-XއZu_ rˮ daaCk{\.pt?탇 2 ç%|>' a߄\N/ق)z77^on +:wߚ6omZwg.=ԧǮ8r LYqk輡wS/޸[ӄ~D`^-:x[*ܠCw݋͝٦(@2ڜ.b۫l`byqZᑜJf[BA¥ 7]>(*R xc&Z/.ng} XAft+.er@щfKF \ڝH=.T&FGQ+]EnrũLͩeo7^]wǏ:Uڌ| Dah5 hΧ9*+lGUSL FaIJ[s1.E-^^4y0;N2嵨P Ph ȁ=akS|.ENCohMe0__hh[l0V|(.<δrMwcY(ms}C;oyzϟn++/i-+g=z.,~oՋ'~ܓu_dKY׺wQLKn4et-h ϕ&!64#-wWFr["#GP[°-t+,ϰzD| fu=ul^r 1y@x ܩkSW2M\:!: :њ#m]'#ΰmaCY v2}[϶D8 OޯR#=Uܳ){SKr&(SM4oDy#%:d]j&k:'ʏ%€*hTnLP m&#@"d9I}DMz=p;?|--PаZ0(F aD؍HI? =_'GЂD ɨp# H_CK^y^:rxX߾L9qAFARDe$&آ)w*(zFubyY..'wRvbJTg 8dRz ziWYoI*2Ǭ"4Ep[~AIX(t|ژ.`XD$+; En2} WjN.Ʉ׭mHTx\qr˱z6nsS[ PJho7ɇГI.9,fP[F(hJQ]UVZ'kG¬h@(h01)&-#HJ&pKT(q)~1gC`)ynspcCmto)JՔ@/MГ_V*!Ƒ~tA0op;]b@a;^WʹN^?|갎>tʺGzKDI~ebQ7cb1 x^#v7÷<6\>zؙ2 =X@g4.r8+ 835xN]FmȆ@7ƾD{;$8zt#k(wY_or~fs#voY`:dG3EP: ֛nYSJRf 1©)Int-=ap{gˏX|`Cǹ&s}E~hG)?S! #v g8@uo9Xp [g.oY*,N)n *nzMkD߰nҫg Gp/X'Ftpp TH\jEȋ&uQ5M39xOT$$tMnL`Y u$-ti't߱gVǭiڐ:lJ*4PThZW;Nj& ZiUHhU9ҾN&BU/S(,ΰgu8[d\6y\P| jf("!S1:b]!0{]^y%ڭ׿o=k 3_z[@OsO`!n}(J5R6 hTVJ!@QI%SN6wL=ڞF ~{vcoZg@ h~JSF/j=#݅422YC=A~`V#vM_&7+jK4)4U`MN]bRo5@D$n+xpS&̤N>u-HY'`֟v`a#<> QO\tF pYD L=#d@=Q}Q}p8FGC;;ebTu/Z4J׿i]=3:4ۂ,8z$JQN kLSZJ9@XcbUO{ z$֡ǀFD}Qu`')|CF17aw˽- 2M˅2zaPIzL=:P϶E%'CfáV7id`NCͺsa` tm@қ$cs8z.6)lݡ-ȯOЃP's:Q8&KlDkt̢ Y5 ֚L % 3 #(B^oQ:+i0؎@JKn&[x~}7l \YErlHPMޘTW iC?;Z2rY&>c=_@A\nkjM EhaYQlk)6WTq{7.%tҝa}i;(=V GS 騵VY=qImÈ"3ۺcقڃ޶ TfHF owW1:uLhL6&HuQ6vpk20K7rR QLߢ[”q`B˂:U r20L(o &C|`tlBDx"XP̐ MwF+aJ:?g||g_ kw/6W=KV@7Z'O,K;_wG':N,sݎoݳ8o(U/%T{KH?Zkh/KPP+(5UA()Byy|DSے_Zy>I߷X_K/1Iz@w`z%{/chB bԹ0Ư ;=;2УH1 QNӚ0-PR\dItrD ߻柀d>ɹ߿q|{ )g|+d@0|d3Tfjg BRۡ֞^aTЫ@fѧX0(닏yE%CmA[S{i+LJ7\f$?ds–<؜[h(CT)5J 9!L By (-!~#@h8{b6 Jь]fC~9yk|bl>udQ wc&7_f==FԎ׳Ϛ陗>a 1 Eq cc f>W,kaҋ`11>4dO`Hh$GKM_w҇aU1ۏ|%9sL&b ˞_ۅoZ{HŴfW׿}-f6!cFa+8^ef<Skέ+'   sb*5\Fjbͫ46 6/¡X+9g4hEϊ &`aʛV^D?}vKe=w7/WY K=k; o\v:v9:8qB48ge,؞q{BIT>K r1Fj t Pzw1QBBP7vbbؑk1WmW.D8 F4+Ϯqn-pb ՁF{AJrK x}p˖Ϭ`x~^_~\-SPɥa1JC)J~?{5 ʺ=~,uFtu ۧBڢԽLl;CpxP犄h#TU  eAp.dTInh* 6O`9??mY94rOaE`eAu)^sTXgֶv],_~mI˥[.+EzPjش~ z'Ugj5?>͘͵*tv=aH1ϡ;ܪ1bΉfmv @]rcĀ+[sźE[0eU׬lZDgVљa7U|16 I}C~,t2ӯf^s1/cLp5t:LNGFK6TRQ!x̴c11T/Tw|G~^b*exᏭt,lGT 6?wŜfWF-}K99݂ _s"cP<%M>ks7~eynyj6/h۱ r=b9@s].6_72=;`8UYVȊ:: tetz18҈*钘ή凪aEBeO OOhs#Sg{`o[w~d]Z{d4uu W֍nniHdn@wO8ـᗤ*Bȋֶ|An/EWU3ŜC<6}mKP9GEmSs"goA(bJUs y 5ޓ^0apX3qh#[ >/uܞMO[mI0ul4i3}ld>;5ZV^D;~]ZZrEЃe](ٷ?,:=4~K*t.6~Ya֦6_gpơմM% ^FMMkCMZ}򛮻pҙ!deϻ+h)4F /AWp+d/q- 0-Ty|AY逢(y|]7g!TBcjbzd ctѩ9"a*/G;">1? 曬}4j2LIY{~XKEVvܳJ۬?O4)|}я7ĸLqb3 r6qUeG=T4vc(f/>w&Jw?jYmCxhIuƥ>a*{7?(6]Y%HP-i!iP\?BiAɈ1oLwR4hRx@fA:[EzEY^y JNwㄟJv\h-+  /zo TF8 wC{>>݊>WۯԠꧪz@#AcNMQ4|H/mvbxۉљ51.CY-CCkZlLJ_U@q<TCi|>l ֠!i#8 Ă { =|Aó۳99̣zy|K 2+2dvgfܛy ӑ'yaQIǧ8r˂[}Aic:'-|L5C&% JL_Rcc0cFَv ^1Lnu"0xc|A<.v:Ji$P׺[r4nv d]s7pk7Gk+QSKU^;M£Avi{ao(:wfTfPq|4Hc$|t3%bi#Txأ;LuB,A{|30(k@FӔ_5 AZ%ZAw-wVѦ)^ hˤD Zg䬴yW3bFֆWH=JKۣ=[mcx/b+Ȧ?19tpm!Xr~ |H-}>>6O! * 4SiZXii2!C/C3E"\KbpGץŨvME&i>do8aʇ'3:9^;]0C< t _bi]yCR7XF7$D=΀2(m^^_j%@= ޖ&rԵtj#kI>XKc8*=B%)@T'UvA L4Ő1:ӿ9w쯖>%Γ.6AkA6IZjΓ|X=8TA.Cwt:OjJX)T}+w(}g6Roԑ]|gNt;= #_ ۰q|т&:$h/qd`/e9#1 9o*-[԰BC?Lqm^3+5X!!9x&ڃ IzP$J51@ꖨnb}ԈCQ*F#.X%Ř!^> h]b7'T:ҿ2Ý [g=XHVhy|j ~DA7~!VCQ  Me6Eqo|]MɡxN|QI)t"Z|WFw+֬fIwHQj8:hϟi=넡=9AĚb(c0>= h]Y/")=?lq(kxQ[ޕ Y^mHRk{m5 K玔1Xe8"]ﻗvԳ[3˼ vy-=x0Bp\3wJ%<̽YR֡kslط[?ns?>f3s&_/hYkaڅu/i=qisuX`)Upif^aۤ󲲋ΟѾhogD{kJQ0/-&1 ⤞AzI>% IO%&RLV%r1)' {R%B2&dFLL"Cr\b3/#Dphє)S]9y/,X~/_~D>R0lIt- $gd=O#rWҍazSJRg'%"I{&)b_E$R*x'r<_JQN^ ^,?> Y.'l#)xJqIcuf`,/G_?':>stream xY tTչ>ʋLI8g8IxLBB ` d&<@`D (V!VAPV^X3!z\nUebZkeBZwb{9;!FDiI5m.)#~f&bU7v(o:S'(+W=vsQ=+lZCg>v#RKAh!saDCv6OgY<-X˵m#)6< u;j[ei m-ͰF 0H5#u/Tj?fm~o(TM54_?E PL3duRG3/,c>zr+Ŝ1%yٝ b P6wUVn~J?'bK+[ 9TWN#fFCGlkcZv~)Ezd i6E^l,eJ6>gXTUt m z>c SXغm|._7Ic4*h2-E{&51+pj;=Ʀ F}S5o+m!PS`XF`P؄tAiرEEݮh AŁ)%LKώ:B˜1 N g|\TqP%mk{R ӌjEA;DV# "!e7q{.[:0r͏-Gw&-Gy߇ZarϚ5Қ#ݥr徖2uX~ݳwD?ǁ̟ugc'bXc  ޜh&vi %V"-4$*4@t"+8''W^ʡеX8Kb#`@v\_@N$cV!?Pyunf&Oۺ+dGefWRLȆe, -7з԰Xܘ;-avW7$oLH6c]c~/3x1H5*>j_ϋy Cq>]0nL^E dGLKJ.5#1^ Ә0BSi)O^) 4VKcC6h(q=Ӓd™-&,2 Ɵ#fOpM I4&bF: ='Ħ&a.nt|rM3ZqW{q>&fo=GY(s_l+r{{O:G}YGW&wn;aB,278ze8`Cc]Nˌm GV5=> M6y \Hb> #8(c|,LDQxb|4zkH cyn$V."e|/4&B&F[ma˱e2mv[-fYl&A25h}˩a}ެY򼅚YeZf᷵C˒xCs6݀߇MZAKj\2@To7qv muW!bh΁>pi ~V&]yqmq07!sױfnDٰd6 (Fke$:$zc4 iGePXC#Gq}ɬy|* VC38]KpN[jTFʼn$#.A+PcofzcD'OTU\S\#X&2XCăo|~2 3<0v'kӂ$BA۷J BZz $||xv僗UvF޿qvŗ"fT_+5Fͦ8+z"_O}N(b%JBYF3mOb#c?Wu9ϫn*U/ue2 0D"]/*WI3&͞6*:Kb̒b؞S~_>O]1՝*YKPdR|݇X,v)ja22'O_\+*&dd-uda9( ՑY e,ڿu;^;9ւ VG˕dwdaRqw>fK+6N~̘SV]+JZtS}z^z/W]N'`M1H5e>ؒ8Lćxq,W--K+:JK ._,ѳtV08 k0٨"R'Cvwizyr& ~}IҢ9I~I> endstream endobj 486 0 obj 4318 endobj 487 0 obj <>stream xyXTA3'vE9{4(V l(VP#}dmSQ(ADcMhT4Z5?jru6}od&n{.ko'ʥ̈'DG&; }Ac/7vkN3R+^R +gŧ&Doܔ=8l!Æ |.z@5i 2;&&zƘMk7l dmLmރg =jG#ȏ!ѱq[y/(YA6Oݺ~Y CfG?Y $nZh|9۶%Ǭ]27%vt =߈3*}GeSFS(gxx K'Q?Oͤ|T8J͢&R#)j@MFQT MQ9j0FQc!j.5J-QSèeT05O S! j%=3ՅJ9QݨNTwʙAP=) ՋZI\M? eRb0'-NzX YP$qxFf\Kh\0K:UMы8M.S 8467THs0H%oJC*S L_ Gfb m AM$җ| JRa_;iVx~'g3tk̼uKr٧x+Z] LƱ~MY|=~AV5nv҇,F#;kcקȬٕg[ye0o߉"`֥1-!-S<BWv%5!} O#ƍ#-^jT:/_斅MAfvv|:=vI1/VX*̼TvZc24Tj\!O 0_w xAA"[eԕW*KDvGx4-Zh]u!+p(F4Zw7'fś%sOS4w,Boa oCCF :x$~?7"3?v(oo\OH[=Ő(8?0T_z՚i@g_ɾyڂ#Y һ"ǃp 0Dzk4l۹md-Y7^=I%H08;R|l:f*g9ىE$"X%8Yי0Ů@Pgͯs37O[O[ ָjq=tw)T ;XI4.Cxtק8Yio7&&M2h ß[`ƍƫ0P+r౛4H|*F|)[Ol\+vAߎ_,p, zCD3mi|I(lGϋrcQiVK|P̮<14$"|Y( ^]} gwY22&^Sk> F<-toK?_KBRu9b*tFF.*M;۸>WC 5\f UaZ,FCVEvѧ| bO?B^x{-XACFN2x/mنn'ad^MơM' #=h$~tQeTis5-Sh틯+cpG&$GIՆL5p?U k$p#Mѫ*$j3ʕmk$PiOZ,Xke1a2}/C_pw ~#̏>p,L)x32 lል8ސ%K8UK0@z5ddY{>ZL3x_y|%Spap_# nq`i-Z+{i98Z"Tv-{IZ:xwY ՊIp ~>{ȍZKNBĔm Z) E"棹K!cty{šyzl&}Dt&@?m}y߁pIw s4@KX0cXQJ>M[eg6}"T|9pa=SM`} R*kC4\;6ߜD)XZkPdXqz8+;Ɛg1"3b,nF=t-2orћ*D OhYtb &kwNSW*ZXFVR+7nEPh܇K pz7>ύKN.#F`K.wqǬ4pqX ߣ(-hՑ" C|^*{ف+ij/[ }8Ÿ'XjhZ\G.rſ`GNLLe7\YA[KӴj.hhdɨJ@I̴$h؏g5tRY@H_ sN]uz3o6EIA]7cv[j#Muc By9Yk[yVUU ZO/ԩ˼uFlRYA̴]EvY]9XmV'-Q >f^e {aaM_[uy6DW׽RG9a;42dmR2 iblrSxsN[/;:CNwn W2 .#wnlH{gcb4:Vg,zxH3wPz'KIVJ}כ54W]BOѝu%˘RRc5\jgdhIfϔF]\=ФVm LUuWbMΰ0 t .vn;i/~ڤpg-BL-<@]ǽc k:xC6fqtݮQ e\mEEf =&FY\6åfwYaPLա^'][>? ?5ں}iU[&V؇K$!'M  _*3[.'zՒ1駖uUUճ\_l~ܫT_"kh5J8=6X%w5&AE8#qDsxٮ@w#d;+(X;Ԗ6}.KݷWh+1ίe'/;kz>n/`ϓ-Ǎ+_:uB?r~D ;K?v/,vD.CEDӥ醬R5VbZj+0M{"Ln;vO(Zy&;vN"BXX `UxIB$C亽{8B䶮wbMB fl1RSϒӲe?|Jr5:vem{?$ [\y}K|鍭!6*5)"[\;0yN5k耯qOR̲ Z2 |?$)p;zJÿZVgRAO |Γ8p5u HiI_{d7Yv{L\SN{Ѡ,a +O4OwZg`zM67 ֬fCm 彋͙_4aۿ3c1з?0*(3u1բ,FW E`>Q=y?SZS^B3Ӿ\=r'\f["6"[>{iVBk" YrZ@WmNִ%4o JUiJ+j /&O؇w_4ϿW{`E,j c "ѽs ƅ(y]@|< Vh}oNv>e-3O]^^s+y}C&<ћ7>lb_S%;C408ơ8ЎmIx_LEBkMG$N@R7 ڽէ*Z<G5Q<6(.Z`U=M*2GTڤmIs%Y'KT};Ɇ\Ra|bBܸ2CB4CE9(3|rC@ v^u>"HI;mAeWAi@L`*/+gA7w_%1 Yu/!Te堼lkk #; wFy(2LFnow>5e˿%ҠD"n yHbqmAnAT*YYz>/ϵEފؤ#lP鐧ɨ7rKBbeIi)2l{G҂AQX.ՋmKLb\rl h*G C3J&A[B;@&g&v;K˷V#'@X@;#(F`,RܬFexZ'8 b"77;v,f_uMЋ[9XfO*)y*Vy|@WQ]⸦}~; ˿GtNۍ*SPU5n'+.*^`8[+^mtcE1*J&7Sg^&?HiT%%:y#!8<x$T/28,ee!){)Rޥ؝Q 3eeFМVe2;?hN5ќjntI'sE*+#ZxXo˿)GckMɥe2҅^HZHۿK6K2F3-da0B;щ\F,gt1Ӏyn)c >P0߿dѵO?\݄P}́h.3ZƮGG'%l&~ԛ5vâ]{tŨ)S3]a)JHܘV(Sݑw4.E1YhӪ+EՔr[z;ͻיjE8YWWmֶIVIl;kvZ}EKW}6zX¢bTYY]MWqD%k?S+Tt59L| aރ),NߒF IO^D 4;ZXYhСrD̓Q8qyɰ z{.ǜ ֙'lNچ։H 1df"O-l둗OҔh X+9Hr r ?B-I(^%E5*ZRW rȾX>?LjTdH3鋊 ܁3 r5q֦۔+N[/ϙx~ FԙHM6JQ&Tʺ/*hF_IDZXJijFBl,،Z3[E7Sn*s@iG"lA <2hX'm]jn#FoKMjL2G7z[{vHq),=ʡhcw>c WxyHVJa4IοIv1l%y/ x]O)}I^A[ė,E3C.iXv< bZ:(&M>kr,DEtR3p4y)XPX5(rYY+?mzSj>MPK"5[&(I+*))*-jMIJG=}ȂV]HR)g7M?G+=:JmYV Z!˭rJ"۬?=*p` ^GmDz}PO N.bqOJ!3W #^uu_{N~Ȝgg Ƥ3̛v JXi g<ݡvړQ3غfSuCGkIr\vq$ۘid[@H-?~gOx<.~|ߞ];KC[<)ݻ%cqd^8&'cv;&C pĐdUk,$=< V͝MW/O}ucù9?A߿xfPR?n|}{>stream xV{PSg!psU-i*67]NNjˎ/|T<EIyI j$! *ZZvP?n[K|q_L&ssqNXXzbkDš {ҲVlEZUvS,=UA&dwXrl] 5?,ֱOֈ**U'Z~ɖ;w J3'JQE`5Q+2aj`JE VQ B O$)Z}[7o޲}mJJay\pH/? a/iJߓ+5JH-6bX!v{ۉŎayدwIVaR, Ⴅcc,1+vaK_yFə vS F!6$6ӱ|Z e ;`kp%lTt@r;l%x7p9u>>sgd7U XP{W->KEpv lmU-:-P IX;g2%C3X|[)~g nI@3 4l'4˸Tl?oCJ ]m%S̳z7岸[zP7xxRGݘ8Ϸoo<u#NNjӰfݥٱhe CP\HZe"q@00 N/gp(WV4Pf_]\gUKJѭG]^D޾6.S:O՞SYV>py6zYPjU0*1 $qڦ!؂lz`jW}q#^Y}^t/EL͈V0,Vp6SQƕd"$A& jffO16Ȗ# gfq͆ xZ&c5ͼ _<l]f[{mݚPCoH1I;Hwp)^dŅ|(Cp{mrY\ |JYRi K(ѺXo QM_mW9~Ƕ]Ѿ?rdKb7U3iS:f5 ʅ{:: Hv+[K4 zU%:_J߉i{,Xl(Ln?qmsD$6vRsxIpG6ρݨ=_ڱui=cPl鑽 *rgÕp2z0xa6 6s0,6>J:;xwxjD!ͿiȆo#ڶ/zJDٿuHWZ 1qh' ғOe@Х9\ryL]xܥ>'64U\[>stream xjSAgiW(~.iA54ҝ{M&3 -usōַ_H!t܄|p֨1^1UIxZ-2$armu}Y MV6e9 _oV#y=ӱp؂]c 'Cg[[/_@! rvvq{ڨ q_:2E ƁZ< 5:$ [Le4IZ`э1a&̀ HqVn4u&꣨R]ɧNZHz葆*Q̤FFBj'TqV"rc)伅z@L׭ZX̳%yTy#X GY.??#Vjx>ars{t{6NvΟn^>?^,o1) endstream endobj 492 0 obj 424 endobj 493 0 obj <>stream xXyX纟LN%jں`]u֥ DEqc'@a [a 4삠Rt;նVO=~О{uxL2|{GD >y|etu?MOǿfpo &רmG&"G;h4%י?ξ IH.3SƥnwΙ;w޿~Y; XY"Y&뺎VGE$CEˣ\7*qqdWus\Yp|"&8)u2&(KSHE~jl^Oe>uqü77&D QkS[[p;,]|JOAS)wj&MmVRoS3Fj!5ZD͢vQٔZLQ-jZJEmQs)OʃZNVP"j"25r+GJM\( 5F\({ʗ% 'wnݰ=cjaL[d>읗t&c X4)Ӌ_fҚI&9ot\x+;_i$wյ&66Mٜ!#WDGDJ]X/uuf%bnMG{Q5#F{5Zbq}FlU'&gqm+CQz>&%U 2$8I,wIbjF喆 .Dw2$V5E;ie8X7|J BofQ-L M (it:exGKPrŌ LSaYaNNͩ G|%uOھD$WzYqiq)*a%aqr ҆&So0ݥdeU:/5 aC܊lAul䙙,#fĠ#MfCb;vp>424̄ $ %̃=ݷ)äN7u\d& Aąg#vCKZcLV#*4''m:O:߹O/Y]c,n^EW*GCE i6֜(U[TT Pu\\ItVg[a?pp|LXf_Dz UR,vYyeuJ"Dii:=9Ī౅QgT@` 86;"qm=hI޶1hWf\fUevth[JV TݼZ eG ڮZCX2u= >rhL*sX Kaqg-UP;ތ,IpU`N" #+N,ߕzqZ,n<}+d|8X}v[7"Bxa_e%φE0J?΀)=yNusɊ+>x^;<̂GHf^'\d&7X.tڑk.M^SM򍿃ȏ[1~]L<eP^vZ&%1Y=?Wڭ 3K ζ]H8}#."uf*aOI2-Um4I-(jVg3Cu0{F0+Ϯ$6vTBVMm(u~>">i*ڄ2dGc R,z!if1S>V.WWTI'J˭OFY|!ӫ^jO49 Sķl3a_DѶء; !#0SЦ5&c2#Z5ҡJV|}4| p x||t꜠58\_29'/)/T 3ZĠ݁"$ >̈́n:s`f`spl;< W\E~ vk8,'qá8Dd6$C ρOv(q#x"a3$}Xxw?%)⺧8JQ$6n 3@0v8]&WTH^}!,kM&É;#7vH[xh^(߁-T9R^V NvK9A,|l8e@ppb.;VfeKuZF7'tt[,WoM&Eډrc :ɱcS&0%w~a}ʊ;DtĝW6^8 yjRB]%J]eMu0-K(MH]?1WSFq?Ծ?&it/:(M)X05*8g@B eQ"n'3,Ēi 7{.@͘VbCc7z,UvnaʎTRT^TYВ5mE׾8cJ `[-=-FiCJU1wfs4nӆ @A k +a{RvJ4e Ķ 4ez\[[-Zj{)-voxx/&x-IMUc|rLDiV a7rA@yR3WX&AL 0j^AL F'*OW΋Q㑯d~;YʥqݙiXeZT sϥu¸=&óM3k'{n:vDƚ0V$K}pe ~R0*ҫY'=g)X*v)cq΃;;ߩyG334xՐY !17E(O4\\ёkG 8LQ+0d@w1Z%b3Le=N`ruB{S,>Pg+ұi%&󐏗8VT6 L[>ay3/ 1F҅]NäBiA f_,̚Ru PC==9/*N~C);7e4.69#_)dPd"]UTyH\X4HW+.:=(IC1H,=/C,LG zL[8o/,_Н}!%^/ MÌZZ]_/0H F}92аH^S{dc]mEd!@?7(^K=T*0 5zHo[]lzoU̹܊T>qiA|z0V~jr&rGSg!\XfP}d gNwC<~s@ ;&i_omG5&loB!6GD̋1_Ŷu)Xq5~Um11%(v=K* NgvʒixxDSxv 5`/"A2L=R9ox^Moo'PLLA_rpNxn|`+b|~ ܾLɷh3+ `Wbx4-:=W"wx|XdɫKKдZa!<;>RNLZW{c{%,~{1W'9=騤Mf:l|Y1S+eiwct򲚒ĎE7k">^Kr#憋DBh|pGZVcέ0]% Sn:QOtq2C0ud?'=D5כR'}#S]s O^7nyEt`Nbdtf9cyޟ)2xWWlsZD0hUÁ/W¯,68`W&}>stream xy|T{f&L I"If %Ùd#  FbKUuk5-hUV[Wl^Z%sߙ gޝ{}nN ԭl,k3x[&v3WѺO:){Cד;~3Ȕ wv{g{o],_ƲN48 +9uv ܼ5Lz=6/G%!vo/f=׼}YFث6A/w סpAG*.H5<fyeؔ6r,ts޻sd؜ 6+c:zXydq,e K!+aJrX ! 6x] tVmЃc}q ;`'삁8ݘ߉]zn\#(j؇r ޯpdZq>oF7}o/|~ oùփp+|Ea|Yyn:}zyOwqM= v sO? o)x~?p[ pGGy~߈ #~9mbd2Ͻ8%.G8{ԉhy';^OGmÃ_ƎC/pdԒ~ÅZ"p&߀!&~^O߆G]|QQΗk% q}c;/=/9矆-<'vyxK2ހ+}ɜ~/4d8O+`L]H۳{떮͗mعekV7JScC}˗.Y﫮Ļh +[6tzI"yLwm)Vd4dHRBH^r 1*?GB4Ӌxz;9 ()|a>堤HW\XCwVK*|{gv[\n+)͎Y;ԩrw3T(V{jpmj]}W-\AUz[JmIYp->~ -!Oj^P a1"jG&Wv]nWjꑱچp픥G˧<[nGÄ<`l!b\7TxK=A㉒ &JFd*_(ޙH%8Ǎ,TCQ1iܚ3pR0R[͖+ J]B5^K-U$_$TM;- gl8*"_$֡! g\7A6KSv ҟ¾]pf=R A6[hx++ӥlF++'@ `qbpW-aEVj xL&jӖ 1s>54fM|cר)`Ogc0ְ\(2q碍ft|I:) Aא.ZF9v|4Ө4\XP*\~V]_ k2+i͖꺠bqGj U^Ne)#`K$F}/"rM[Dn Tz a{v&rMQ;PrGu@S@9*TN [yfeFHLa-5b#^AԨtufM8h%F*&hmƽXd%G `zS!e& -G7éfn)^RCs=mpԆ31 (́éwdN\Cx6v;# {{@.Up*'/bT&Wv1"݂+pK7E;&G{cp:½9xp3b&!4/V[,P]}h]jl!%z:laV\kaYϢ_A5a l թyj.6MEAH|nsgHؠ1@U|XɒXh4^&Ƣv]lBX næLcr[A ^NՎx,ag?\bC_,h% wMO7oG\le/A{gja=OqWpAyk̅vܨ\hPW{JZ9:>1JȻ[٩d N_o(£Y*Wnd^lT'n;# k4uxsT3;޲J6 f\ 6RDrev+/fq2*ZpcPa_N[?I$ 6ĺI/\}p"*!PGkֿ#lq~G p³Ce}1a@D䈪X?:cEjsܮcXKZ#ڐG"#E cQR, 0- c9gtyk-CVU!%\2<*W\Cs 2^/*ՖT)~ *$&E?=;kI@kOfۡmV#"|7!JryOL ~Cxkr2"Mx𦖷 u-Rk_W 焟~J./i?!$㋄~L?"%%Z"ӄՈcKx(;B&#5y5_E$\IC &\Aإ;IOAM_NNOXMJB"l&\F]DHrZ^Dn}%UfZֲדqV˾FއXe!5kYAB@˲!.%Ҳ- wHhв,<ع:J-EB#5%Z&\|d&TiZ۔hW"i͈ Z+  \(F2!s Y 63 3 6K BPH'L>GA܄)*L&O$Q"=oa"yN TP@'LoAz6 (FQeD(Gow1kPASʛ(oZi/P^Eyh(/O'Q^D9(?F96:>/X>ڞS.;$sl%O:fOE9MNO'>(a5d}TGP-o |a!.AN}hʽ(PA.܉rD6ۃWl"r A/:/7o%hGף3k \WTTT=C}W >4v++v);˕C+G/@[lW}~ }J;ԣ@O]`c\ᡇ ǎ&=UڪlR6a7(C6}Mi-oQ!e}ZeZeMyzY KUy 5)JP|keC%Jeq_aas4dU)`A B^U,\YpS!=d>͟VO;vy,o޴~uJַM~3}s"z#skIaϣ\7<ɱLq7G=aKV֭Vݽͪ J@n 꿱Tٯu} 7DsJXYNl hC&VkAz|]+\ zzޅV8q&ÐsyɧstޛIOxvi3gÐusuMthEvk_TKf\oyj\?=>}ԯ̋{K>__V0kx͔/T}c%%֊Kli 2nL٬l~Rs/ >stream xyxSպJ:Cڴ ) P JZ`Rt@ҁIUD0" )06a3J3Oq~fU-h|B U+;B?Z۰`ɺc8ԯY?꟧}C|BxuKW?eU׌곖Tje9KjMݰ9H744XпI(7 q qX,M6q,RNlw{&/%"ָCDBt:t.w\ ztY>)+,:#El؏hCwVyFxŷ7{֓ƠDb+|_-BbQ/zn)UZVkhYH M*[[JUbX#kEkwY5z~X'Ɲ9G;V k&q.v~qbq'.EL\JqZ\qIkfq Uv"N>*ăa},0j4"<.6` w4~+Gk]]?x?+jGM@+U=~T(qq#sSMWrEoE.w^l+E*ܾW~;Dmb;bTۂ@wd%؃I$<`i=F'SȫZ{V<ExY W}W~x[^_x53'&aޅqQC_bK]+~6NLq rX7?&>Ib{O9ЁG ;v[77475.oXtIE TWΟ7wr]V:xigM-2 ?/7g+{Ə5f̡CHoKMJěcLaF>2S QyG|hv^~bMj֞TE5]5>AL2؞k9읲9kt?MazƌLZZSu|_눉uD,:c`cഁ9pԍa`0a5cz~EV\ϳy"rH/BuB{=:-猭vTWh 4ZS,\ vkN:+}[v'8Չ`$"PV]b0 q}ii\.tJdLW3T.Iv6.ns[ ~Wԥjm!17_5cNiEߑGV\y0w D .bhВ9T K=z`3-)W`+-3?O=ˣT}9J<;ň#m#HU硥d=յgYkX4uxj.9,ڠ8\~D\Y]yd1X^uǑ3.=hGZWQ5;dSTQ5͝bMN;=#Rk~XFN5X(ecZPt1C՚빍 8Ee7sw#NUU}BuS)f:VaT'b͜^XAđōMj 4E#Օbܱ$tvmuN;C';1Qr@2trԬ~_72Uҫ[8yWcjaSWoC#Oګjᔋw+*״޹2s2(LJ{\Zk,jx2#vP?z nR㏧NM*;:, jZUļxxБ}ؚOZj>Q^t=V¯qתET[QHDS+:ǰVy[>ӮP NGEBתt޶͚\AXK JSW>'F"跏c GXF,^Udou9 ByUJWi Y.sRe+lG+*|RfS3Bx9Qbx]x]3yGo_ZQ3DwHp~um=4NJ181JqLȧrȖTOXO 'zT "2F!GwuH!;J Yfx.,{mx6}u~kǡAnfx_e .')b^$Ó"Tfp%GQvzn8o{Tb=sٜælֱieYlְYflVia̦r6 lYf z6,bMlj԰fSŦMl汙flxx؜f726lf)aSfl9Ml La3M|6ylr䰙&D6f$\!MRN%I2MRFRJ2dti$gL X !$S֩$k$?`=GKCe$M$9dO2%"C2du6drpaY&Pj7d0TA$IN3Hҩ$uH%Cb%=ҋ$5{'I I(؃$$,$#1RY I4IH"I"!^%0# $BErL"RW_HP?)3?H~"1Z!Z rߑ|Krʾ$H/IN/H>'__(>'$IP$QCH'yKwH<V,ț$oPu$JU+$/D"Uyy >G,3$O$$$I"5H ƓđIbf Ռ`$$jS0 I $D+mcUն_G?Ŀߡ[o_/Qw-%|"v1|{]ymp[77~N۫`؋W{ټ/?o^d{μyi} = = .=h{$ɶ+ٶt? BvmC,:Ym{ fbZm1l{`+ 3vvp v 7o@_ף׵]W+r ]=vI l]նn;Ϙe[/l紷v׵cZeL[]kkgqvtj_e8_6&WZZ[?"Hh[FwS{[475ja(;lk+6- Kkf-p׵/pfUkګUY,{~\9Yno}&*sܥY%%YU>=5k}{rV;/X-fuYX[ÄU{z3zeuI/c|T+uz~a=\= -){1Y][ʴ]HүՖ(OɶdC7|av)@&.mǤWCBKE$fiٚܤ_WIIٞ)/AKR0EoؼY)z-[x6].w)/PN 'w[Y 2>+ +> l3O٘2#Ⲃ[3#-p VsN:y~55;/r^٢NUߦfUj߄O3wChR z^ ) $ $ q bA Q"Aak 1y _O3 ~߃0|  9+ | >1|>6x 5*W%"x<ςg)$x1(x;A'`~ph{`+ `  n7:p-\ W+2p)\ 6.Fp> 'I/1%_bK/1%_bK/5@b X$5@b X$5@b X$5@b X$5@b X$5@b X$5@b X$5@b X$s_bK}/1%ܗs_b?>?G451SnWk2F)ƊibF<*xS8Cyy!)6; [\W|wlǎQ ّg̣JyHf~x𣃖o&qñOmQ;G#6U{WT}f;{utu^gLpjuJ#Nh52?ΠF38~cG&T^Znq4°Α=kDxIpC!-' i0"_TȄ)}Mľ)}"w_r1~N&CXDDg^O+ÒbLL7}T}?;B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)$1$aRAm']]|"g/7 QV6*tazj1=,waq!.vvh?Gыȗk_Vv9i4Q:K5 endstream endobj 498 0 obj 6935 endobj 499 0 obj <>stream xZ}tSǕ%Y,62ɦ2`,@Pؖ?0YAdANb.Ql{BP[6!MJq4i =͞YMMyOCm=7fܹs7w3+  +fׂ|j'f73`g۶*δCo~aƛ~|s|ac6 K;rD42 ڿ M[㽈Ruϛz:AFrsM}yf[l5si}w MI(Crr {,Z? @ϰWo3\j_=z,cg?X>cʔ$7*úT`gMBc{Sd2{4{@6i3ܧUM-dUɼh:~JNO#/Ä6۵ 5+^ֹ$؈㼽^jaXm#aX~³IIіS-]exRkE &bFRmRmx_SzӗQ d;Z <(ߓin@u$T d(t6H]4g|/mvڥD2&@KH`Ց ̅$Cs5# '^AIZ8 T}Ix#pnWIOә>I! 3a6ȸzy"%A0!%h =]VҮnok%(P;V%6L;aGuy1Z3KL4gR:UH{{f #&ܣw}IMNBtیڶ>H,r~4v&&+vO8d֏!zo#-$Um]@ͬۙj#6hnnf$*<_vS+N;P #*1&{WJ63CTCrd:%N*aP.eҊB+TS+.>[9{G h<#@ lR.` BJY!Q5xX{uu(1'uM0JR%ZN&)w]Aת%胮[0QSݙLgRIz D#bu1Z,hfA _O_| qEuWyKە(\g;Ozq;AZLo ʵPJ!EVAW}mI QM3S^J4}Ny=^D6>I-&6%-/kЪ.Ӂf'3V?0З m *4  ^zS1+80mpps>|#b5kYlE-'&zmO^ǖ5 ZeMmASTM(!JxbqGyI*ҳo(D& p+MHfhFxe5}L Y]磟^3n?$BE`XHBs ԥ{]^%=bipoOH́+T ANG)PC:^$ x#V{htү<=q$ ^*= \~;Q3yQqjOow>o3C#*n>dX"pxYo~ t}#,܍ސE/ukB%Q!hQAcPkn twKthY<&DME SRt$*1qX WioEc:Ѯ3!G+M6#{c_F`gO6 ◲ ,B:O^-2=gH,rpb|alOH<xޏTshC?$ c!rחzզR9UH+HHmH1]9MMs< H7 E#- fwܷwpwoomo6>4@UKPa=."9HE2rLJ%,٤,I q#>*[!䮤h!Br |@6k6$۵ 0a^;fj2@ˤxukH61.y`H(٤ErN78-Fǀ>@;t)G! D10/+y?Y!"l% RCEpWKcXf{jK~^Ქl4"5DŽǨ?s?6=֯ {T& bBZ+ݸ\BCJUMqf =Xۭ#y3:`1d(Yn$0FrL,&4ZLE~]3!"~XhyCZ'z|_``v֟})#G1 :f֦wdvFp +ekxNq3Fp^޼=DHQ.+"d7G!!u6t}6eJF.DFdʣ%ǠuxK0PqI2@Yx7O-bރ fk/"I LwxJʊ%eef>/i~TJ}, u7 ֆDAUFWS+*7\U!!v6<#!}eϞao>H>]+27 ݗR/bG>nE( g͝!/K~FCHK%-?_XVZ,TÙ|%wY{k `Ũ:Q:]FdK=, "b,q+t{v/ӵsj'E0\ʼ ;[㵧NX00]vj ~7πtkvUBJFߠO0hXgIIQt8̈geNFYɔr3ZT-rH5I~83J? 8H|e9KeS<||zaf<];T+c8SC~w#Ez.ңK,\>p˦yOaߣxmS0"ȪW*C4SN勆đwW{rIFptU'׿X5D5}NOXxMļ o֊EDe/{qGYs)QV eK8TRXܥHʜ.WEau0I&򌉘BrȠ)u`!ZFϔQƔUBJנ[r2wRН:"{pn`opǂ?y[a6 e lOz<7TR̃Ȝ(iYw/u cЅ߱ ӿb/{hDkv&"U%խ_w@1azP&UPL4ba% z*"3 {Sb)ݎ,BBRHNpD8!<B!eq3Κ-89do^}EzӨd`D3;1$o'#:LgwdzgwQ!r ?7߼| a!gWr˸P sJN.qWٍRi#puuc0ˇ\hqVTUK"Q[qbB<]$kY[ŚL.Dq江86crb0Y[QYxVQ&|%@z *F'5OV8o-}29nyw/~L?)"Lɉ)c~d$vvq$lkZkZ['02L SωdV,oh u`s~'4:bqX- Bڀĕ&9sZS?te<] 1cx7\s\>$A[ l%"<an-Dvh050 7h][}p /?oK޺x(Eĺc endstream endobj 500 0 obj 5744 endobj 501 0 obj <>stream xUV TS}1'E5Pdh"D@@!LU[WkZ)ZQq *CkQMm?/a믕{u{sJ ؇+ MFJ?L"sH4{29]pUb0蜠]J(n+]y,0o&O6M/EnFZ6,ʬlB!KʌY(;=WH'+yʌ|\O;?C2/WΕe1`V2 Qh8Kƻ,*vqiJY"Zbȑ H^1V/{|ig[U6 V۰oTv[:XkqbkK/lK:u×]3U u_Moץ%.^#&IgL iC{ B>6_Z*A^X'80ק2@CD6 3t]| SuMIknȔ]Ê'wC'Fh3A13QզCߪP J] Pi1 Ǐ9ytd\RfOfJ$3OZѷ(C| !84 vn5  d* Ґ̨TB F k/7},'piǧ[]p汐 8Y}3.{N$̛g? hafҴp:Wpdӑ-m-7nu#p+lj *RB  3?,q4A(|l%is0f30|,GK1T.ٷMPU6AbЃ X݊v\>bn۴u=C+3ڧDTX m4"EpTy2? N,Zz6Az*飫6l6B6W)W}(c²~^;Oh_NH:^w6'$qa8 q,cG__0Hޑ*:Dv)?.UIז#%>+BoǃZrC'u?$?lZNz6 Z! [ T]ČlVTYX+9fwZž$95$Jc;;|ogp707])b~K$ZuRj(*Jošlj ]rw4/##pdcy(A_c* :Q%8|mD~.&s+/,6^^=x3fV<#<KaWk`:j;~&./A;B"x%SatUFרm_2XcĦ}V 19-DiwHx`un("޹a0mw.<46p%6χ?.9"fR%ٟJΟNV.+AǠ∍ؾhs9ʥ(zݎ+7$;+r}t[Nơkr4ʕ'"6RQxpOԴK]~ /|h egK DwY{trYM_?gjNh7Bkf+XZ*K0_ !Dg{W- \VJ\N,/o .$y,I {za˖M^!ӧ|]+4rցGk~2+=o^M>|rwh2 LQO*˚/wT)/?}E#b;o̊]D&{߈}J߾Ru A2AЛQH?ƈrPw-*~rmq;S0`ڽ) ݰˋ ً^:RnL;%,|C'͋HL3'ܝsflt׺n6aj:cД:޾Wv9 1-F endstream endobj 502 0 obj 2916 endobj 503 0 obj <>stream xuWy|P2-KID"7Yt!隦i6M,tK_&m@-h) WDϫקUO= Uc23w|wGCx!Irͼ5 (EA͹9Mx?V🣶|}# -8D8?J'P><^FUdN0+4h9s˖- $`\ I.dU\<`-Vb:U& J&˼R6+UYkg`yIi(ee[eiI9EQs޶f};\!hc͡oڲ{ s8mex}媰WDJQi|j:Z@͠R3?QYbj6zzC-RPjKSc H=GSJJPSZIPs 5sgOXt~+%P3B&i}b'>7nҸ{|/oKO'1~N8 |M5"mk=>(ڻ395JlT+3/][mݵ 9E;%u Rl*N"Ĭ #~'N7'` ߥ=ծBxoxX@ԣe)+X.B觢6-kN1lI >?37 XDJhj[Z'|8ࢃmӮŢK.au]f8_V+YqGy;btجd{ ; 'q^,aqO }\^To7M(3USW d.gFd80ϰ;ғSgYԝјؘPll5 Mi\-k(;P`G+:8,z}1</?<銄8lYV>X*Iwi'=?~w,:l-!'*<{>3P5{0atFt{}*I/<$:GM'!eH-y /cTLicTo刻;P8JReqnRe継RZH%H%c. b9Q+)~{xʁ2"&Wp.MR}ͻ_6iҐɜxڭ7V!;ٿK8%vEKoP~7Հ7"![-+]y"Ƴ<=){XO\z봦 8Hi.sb]xpY [PhyWD5Uv7?]ad{*Rp4 š\):E&І feҏawǺ`-J_n܆&:.phKD٘Rd.6qK /՗1d{$.L _ Y{xl.+@XkL G8?BN;$4no:%K Hm gVm]ȹ6QBsk=rϋ~]qvL!Q& G|*&H`N%A&N-˫b Z=p!Lz 3C1b53{u1(uo#7/93$fG NB\oxm"P{0%W1emȵ{7> 6babtԩ"4$)4/UW䁽\:k++5'i]UĨ5)əa:YԊNWvdTL "n9QuxQ_a(1O`L+0 =Ookoh)26J2:!7S):5Ɗbk.4u:LV% , u&QWe=]"nَjTôj!.]LSR:\uJbѮmHRh٥ƪ4I]"Hèv>Aȇ~@ {e _D2LH3^̜NnVh2zITQB%56:1!*=w\.La##݉}΃RRD<.n? bӋq yZ^Lޥ?%͟opڑ~t <('*`}n󽁐޽oa||kVW-?V`uoYr@.>/6}cS쏯JWnmO!P4{~~0=zX@|?J;]i˨>x EoiŢ (M "|PlB=̕'쥨&ً^IAa(X)C^[GC:H%?=䦱E\ alBrxa7,m=)B2ؖGON>z_wCWɛjaIЎL][Y/L"n/F>н \X7mM;Ȧ靱(Ed(&0[z^8u.%/>stream xzx׺IBW$z/`ӛ0.c]ŒlْvlrcM7! )$l޷eNyei4׿sc3?;b$+ļagagrmP@L¶;qcM3LaΝ'\'$p_H-XhYammmyL=۽#}C,A`uAA-}~^'Nx0s *mW,V.Yl) 9ay 2넷yrUC9z[/t =AnwٷU!9[ہa>v6;"vF; pxp4y,ء9s,\d%/lޘ+J )7Qm`Ӫͫs?\Ӣ?b6{A,!'܈všXJ" ;†XK,#fbC8;\‘E$Nnb>qC"^b58DbXC,&\6Š wqO!&\b"1DD8qIL!r D$#x$=b*!%QMȉ b31B 0n):NޘZܓ?{WOOVPj/uB5g;?;<&|:q;vLc|a8Gp+VE*~'VEnUg` -*zEQz+TzĎrk"-ʛ0е}3lddht@J#{ )wiamAFQVŃkQA> \J`5y `-Q-oB^ V:3hl,IJ%k Q`( AAߓN1UT$Jd$k]}R`UXLt >]%+2J#ûogå !>?09?۟s쌼|@*(q*$Z KҰ:W^ʠbM[| [h(#Hw)Mw93i:Nc.>\θF8zޏ!Z |Q9R ˍlNqszJv4t)u7j*5TLcSa R (!DK_Dr!(34զ 輌\!\pZUF>S*P߁!&RqQ |SK5xH9g+!'X#sO g '19˖~ČR*V6Y"pf0H dcS(l$Ű<&#?I,[鑅YX#1SQ~y9+"' /hݝMfya뵐o)Q 3*ٌ{o556SWT\ZL)D[ m]p!Ed`^V%Qs>q<2P~,a7Tb5ÁIkr1g-9p:#Ըb Jh$"a9g@?Qm^){` h("qdOɎ05ZNݗK.`2hEH3NS eߡwj "4|§3Z,9w':Zrj^Bs.|a3bJ훐/fS ?^0I9nwchq|RѻW1N6R3h84\h+Dxag(Gqc `xH[p&ƳXwAs<z c|^:$<z*/7^7A=x%8P| IlҾP3E>Főkg/sET)z#`O2]F tE4 С3RA \J} B+*#I$eJ$ ^ I6;Fʕ%+*ߓ gFjSK)6r48sSVO1ʠV7Okvf( " ƞDMX+t)+$rk|v2~U)| mL#60))4>*G nٶܶfX&+t!j).)GX8?3Fޒlszx.(eM-59 `L)LmPTkh.BH#ӤX7诚ԾN uA1foK- ՊbQ_8A;yW$) ۣDf]֒7ۿ]4L+<[_+jލ8$? ?L[e!Zι7.9sPp%'-}]]'MC%Fa}Aׯla0lur: 90Yf ƶU(1{4 sgDYN)1+SN_aN-8 ő))$ Mz\̰\96. hD g?\&P_cH-Z^H2 pdR*tx]mMRׇ>h:*FuI ;j/Qq?1w3%#7 Ԩuo<]CCwWsk"xE*1?6<1F22@{rGq% e)Ge%Q^j3 32Ҽft f n44VIУn L:0!/l{MfXDZRcJ]H &Gٗ qm~N'~q&n]p|/=jć9KFO. FF~p?Xg6iEfoQ# ١2ZTˮLPR%gTd AЋ'T,PGǽYj1RK{ix6綃!PDFԡ4UWH3ݾQs;KhDMZ8a*0A@Zԋޅ.O8cM}qcЀV*<بD]\-U $fP iNǕT=(V7 YhJ8@Ib 2S8+dKȵIf`W2 shkŒguneAtLŠ 7P|A U=%--Z+;8s4PipYT}OSi?/Z/ KNW!ઑu<BpD#h0uVtDZwÍ&񙳍O}, KKuT;+$ȟa&[*/v͠\{s"uAb]|3 it})\q;ndPP49Xh: |MS ;n~G=E;2tq,h돯7|vA5o s LufҲEtp%H|zɅ}<߶9]Qg IZBF܊{~~Rsj}!/Ȇypg-Nj|l[WrW&0R[n73r=Ȥ)ңu!jVqXa4MɅ"u'Ǜ5ªR@ |ODv`AXqB`֨շg*BYT%Xmٵ bObRR)ώdPZMyd,diDTM[1c1:# XNGˋs%}^>`790&IvC C&?ER(y9ngX>nHxFV >kM{ ۼ~\UXQ^_Ql:_t<^/ w?ʽ <2ưd͟뇓bÂBªw2+ydz~!Y`tdFym'8F΂49Qgq`'.M8o͐|e7 RG kkV*=bN:IqPKҜOFJ+TOwdzUgԃֺZc8Zc»BhJ=y|HK *77)[+{S(vlPRͩ~o6VR;z#j 9M譓m#iS2tr&Jc!FޞW{O@>}) WIp/h#4޼,ʪ70]V+n6i{Ԉtd?f!oqz+׻TTAV~ffz${S2Pl~W%{[|ZN+ &M5,8_r9~ے>LP ppe+8 6Hb1v~gkU t=]VhgspÙse&qyye~vhiMY@7sRPBr]?jA뭛[*L8&aةHn6Dc|0G[ze%p&qPB@pt<O?}4 昩ֺ͗TJJ}=(t8<1մrHِ|xdLy2Cx(97?a]ib0Q,Z 'XCr&ڄV!hdB /pO _N} 8w I5+T hr'Nqz4&dz-ݷ->vyݵ|1e" iNȃH>zϑ#{6 }v{h1kok{.^M!|beSܾ?[֏>_<1eG]kYq8Kiˁ3XOBc*%P-!?6=ؠEO;w{.smOBIX2TFֿq^OMG endstream endobj 506 0 obj 9474 endobj 507 0 obj <>stream xUUiXTG} ݯhlh4FFEhvѠ#(4F1Z#EUP "]A,F$hɨh41Wd$͟^޺sn(f{ĥ$+"l]Uqњ%Δ̴N T (YHWʹ0;lHS%w*d-mb(T#uIRȏԘ8Ub|LBt9ԉ$iDttL&lKD\vLLLTJ-YJ.YbgK>WG$I"RMBQoB*1-vNy#Y!]bt+)ʖܨ FJF-<(;*6Q^Pҧ (5b!eDS&SGBxW|iҾ_/A(ܦt0X/`KgZ=scJ'Yl{o$ K2EkVoDI0 *c|XaROT " z02"$v=yz?:*A2{˗C 0fqefԓuio5#?|>5[bM[Q^fo畇#lե wO=MjK}(XUB\hA W]`/ql &;Ro5%aB:> $zнl+#MWoqUC7}˪Ç į;(84l{)Orz2}PbFH1y=B! 4<|l#~+cTCbX1$f(jKhMB'Q"¬A"]Q"3 ^:OI{P4ِ,B3~x5N'ƒk%BP- 1^HgG%oU\O@_$$;|˭^!/~=85hk2$z)xC@/ IVȰ-O)P??,9N:t]-jkѰݭ wEd@LM]E*);˲`_ l!L[k{2#H\>)`ڷh@[Wz26UJ %0GZل0Ǡ Ei<胑;Sv00M,7}g iW2u~za 3FZ.aۋ[{%SւG4!9{U ,RPx^/{eDLN \ j Di'k$DOIB ==?fZkN~zqsrP_wS h]!yw.V_o|iv* 08CR&EY1ⳓ BZӋE~19S4K,# H܄PHaD:M+UQR,̀ ]  q8tSKy7܆GNi9)L',)+ZӃIyo)m f/jsP4jۮ7>A``W"e #<:8.<,L(T%dCOуcygZk*Q_7a@15S{@:m0ek8#C@Rk< nTcy|3۟%`=:3`RA1eg^X13lp@So@gL{arW`DD79(l<|)k&6[ {/ *+iFLor[A#.{ص'vqLu '؏?_s4{&Si) u%ݺuCVګ_h#+ALؼzEޓvbÏ"%`!?SZce-D$u 80qg+U]5CкpY3,z'Wn$o`1[mN ^Ԏ*էBKl:dOXznJމi ĎoUsq֌BHk˜? 6 9"߄ ΖV1g[;L@z b#Uq&_)M8)74&,&Gec@ +z~5f~a__imXPkZPo:4H9F@ 0,nG(=q= 5|W&oqoZA4j!~K sOVT149HYl5v ^rP .4L> endobj 509 0 obj <> endobj 510 0 obj <>stream x] DwtKV D 1@Βuw'6p( 9 .׌#M X]m$-@^=ђ,R<2F?(LjK]u˟N:390*@`j 6/JM endstream endobj 511 0 obj 153 endobj 426 0 obj <> endobj 512 0 obj <> endobj 139 0 obj <> endobj 13 0 obj <> endobj 513 0 obj <>stream x]1n0~O,g(Q6` $J.r'N/0E i{od1b-cvL[;=Tֵڶx~ I*J?5JcH{CYIee9H*P#iX>H*T#hK$O,Im,5zj$I#5Sn`5yVpW;rf-%&oy` ۏ,a5yG V,,a5y;h]XMޞ3XMQg%p&)Xp\ 9p.8U 80! :p.`>;p.`Cq\|z8J]:V =7S6T0^l\AɩN08AM\/VOqdl,z`&!`rٺ \0W=p}83 J~   JJ{BhI?: @Oﭛ?mw]3Vx\&o;  endstream endobj 514 0 obj 550 endobj 31 0 obj <> endobj 515 0 obj <> endobj 516 0 obj <>stream x] DwtKV D 1@Βuw'6p( 9 .׌#M X]m$-@^=ђ,R<2F?(LjK]u˟N:390*@`j 6/JM endstream endobj 517 0 obj 153 endobj 428 0 obj <> endobj 518 0 obj <> endobj 38 0 obj <> endobj 213 0 obj <> endobj 151 0 obj <> endobj 519 0 obj <> endobj 15 0 obj <> endobj 520 0 obj <>stream x] DwdX%CJc"Dпo Igɺ;ݓx9E|`i[FBwk6?`H`t&-$zL: Rj˩պXv!-gҰFL?Sm.M endstream endobj 521 0 obj 152 endobj 450 0 obj <> endobj 522 0 obj <> endobj 523 0 obj <>stream x] DwdX%CJc"Dпo Igɺ;ݓx9E|`i[FBwk6?`H`t&-$zL: Rj˩պXv!-gҰFL?Sm.M endstream endobj 524 0 obj 152 endobj 17 0 obj <> endobj 525 0 obj <> endobj 526 0 obj <>stream x]1n0 EwB70r\%Cd 4DgkMO>!w%vuOlL9TJllDۯnwa8^O\}9)F4ÿK|F{T`ZpY (:(::TEgTT`n#*Hԣn]P׾AkT` m6$-yk];u endstream endobj 527 0 obj 225 endobj 122 0 obj <> endobj 528 0 obj <> endobj 9 0 obj <> endobj 452 0 obj <> endobj 19 0 obj <> endobj 11 0 obj <> endobj 244 0 obj <> endobj 425 0 obj <> endobj 138 0 obj <> endobj 12 0 obj <> endobj 30 0 obj <> endobj 427 0 obj <> endobj 37 0 obj <> endobj 212 0 obj <> endobj 150 0 obj <> endobj 14 0 obj <> endobj 449 0 obj <> endobj 16 0 obj <> endobj 121 0 obj <> endobj 8 0 obj <> endobj 451 0 obj <> endobj 18 0 obj <> endobj 10 0 obj <> endobj 2 0 obj <>endobj xref 0 529 0000000000 65535 f 0000456933 00000 n 0000731329 00000 n 0000456215 00000 n 0000442183 00000 n 0000000015 00000 n 0000004826 00000 n 0000456981 00000 n 0000729552 00000 n 0000723919 00000 n 0000731018 00000 n 0000725431 00000 n 0000726541 00000 n 0000718118 00000 n 0000728579 00000 n 0000721801 00000 n 0000729150 00000 n 0000722996 00000 n 0000730287 00000 n 0000724762 00000 n 0000457022 00000 n 0000457052 00000 n 0000442343 00000 n 0000004846 00000 n 0000007112 00000 n 0000457137 00000 n 0000457167 00000 n 0000442505 00000 n 0000007133 00000 n 0000011674 00000 n 0000726949 00000 n 0000719314 00000 n 0000457241 00000 n 0000457271 00000 n 0000442667 00000 n 0000011695 00000 n 0000017691 00000 n 0000727356 00000 n 0000720621 00000 n 0000457334 00000 n 0000457364 00000 n 0000442829 00000 n 0000017712 00000 n 0000023595 00000 n 0000457449 00000 n 0000457479 00000 n 0000442991 00000 n 0000023616 00000 n 0000029569 00000 n 0000457564 00000 n 0000457594 00000 n 0000443153 00000 n 0000029590 00000 n 0000036212 00000 n 0000457668 00000 n 0000457698 00000 n 0000443315 00000 n 0000036233 00000 n 0000041866 00000 n 0000457783 00000 n 0000457813 00000 n 0000443477 00000 n 0000041887 00000 n 0000046938 00000 n 0000457898 00000 n 0000457928 00000 n 0000443639 00000 n 0000046959 00000 n 0000052077 00000 n 0000458002 00000 n 0000458032 00000 n 0000443801 00000 n 0000052098 00000 n 0000054447 00000 n 0000458168 00000 n 0000458106 00000 n 0000458136 00000 n 0000460661 00000 n 0000443987 00000 n 0000054468 00000 n 0000060188 00000 n 0000460724 00000 n 0000460754 00000 n 0000444149 00000 n 0000060209 00000 n 0000065442 00000 n 0000460828 00000 n 0000460858 00000 n 0000444311 00000 n 0000065463 00000 n 0000071159 00000 n 0000460943 00000 n 0000460973 00000 n 0000444473 00000 n 0000071180 00000 n 0000075555 00000 n 0000461047 00000 n 0000461077 00000 n 0000444635 00000 n 0000075576 00000 n 0000079189 00000 n 0000461162 00000 n 0000461193 00000 n 0000444799 00000 n 0000079211 00000 n 0000084719 00000 n 0000461257 00000 n 0000461288 00000 n 0000444965 00000 n 0000084741 00000 n 0000091009 00000 n 0000461363 00000 n 0000461394 00000 n 0000445131 00000 n 0000091031 00000 n 0000098295 00000 n 0000461480 00000 n 0000461511 00000 n 0000445297 00000 n 0000098317 00000 n 0000105646 00000 n 0000729346 00000 n 0000723567 00000 n 0000461597 00000 n 0000461628 00000 n 0000445463 00000 n 0000105668 00000 n 0000112556 00000 n 0000461727 00000 n 0000461758 00000 n 0000445629 00000 n 0000112578 00000 n 0000116293 00000 n 0000461844 00000 n 0000461875 00000 n 0000445795 00000 n 0000116315 00000 n 0000120529 00000 n 0000726225 00000 n 0000717725 00000 n 0000461939 00000 n 0000461970 00000 n 0000445961 00000 n 0000120551 00000 n 0000124735 00000 n 0000462082 00000 n 0000462113 00000 n 0000446127 00000 n 0000124757 00000 n 0000130552 00000 n 0000728367 00000 n 0000721560 00000 n 0000462188 00000 n 0000462219 00000 n 0000446293 00000 n 0000130574 00000 n 0000136937 00000 n 0000462307 00000 n 0000462338 00000 n 0000446459 00000 n 0000136959 00000 n 0000142945 00000 n 0000462424 00000 n 0000462455 00000 n 0000446625 00000 n 0000142967 00000 n 0000149047 00000 n 0000462552 00000 n 0000462583 00000 n 0000446791 00000 n 0000149069 00000 n 0000155656 00000 n 0000462658 00000 n 0000462689 00000 n 0000446957 00000 n 0000155678 00000 n 0000162512 00000 n 0000462775 00000 n 0000462806 00000 n 0000447123 00000 n 0000162534 00000 n 0000169170 00000 n 0000462892 00000 n 0000462923 00000 n 0000447289 00000 n 0000169192 00000 n 0000175482 00000 n 0000463009 00000 n 0000463040 00000 n 0000447455 00000 n 0000175504 00000 n 0000182486 00000 n 0000463126 00000 n 0000463157 00000 n 0000447621 00000 n 0000182508 00000 n 0000189385 00000 n 0000463243 00000 n 0000463274 00000 n 0000447787 00000 n 0000189407 00000 n 0000196084 00000 n 0000463360 00000 n 0000463391 00000 n 0000447953 00000 n 0000196106 00000 n 0000202479 00000 n 0000463477 00000 n 0000463508 00000 n 0000448119 00000 n 0000202501 00000 n 0000209249 00000 n 0000728081 00000 n 0000721214 00000 n 0000463594 00000 n 0000463625 00000 n 0000448285 00000 n 0000209271 00000 n 0000216274 00000 n 0000463735 00000 n 0000463766 00000 n 0000448451 00000 n 0000216296 00000 n 0000221250 00000 n 0000463841 00000 n 0000463872 00000 n 0000448617 00000 n 0000221272 00000 n 0000224964 00000 n 0000463947 00000 n 0000463978 00000 n 0000448783 00000 n 0000224986 00000 n 0000229367 00000 n 0000464053 00000 n 0000464084 00000 n 0000448949 00000 n 0000229389 00000 n 0000235503 00000 n 0000464159 00000 n 0000464190 00000 n 0000449115 00000 n 0000235525 00000 n 0000240399 00000 n 0000725821 00000 n 0000716938 00000 n 0000481611 00000 n 0000464265 00000 n 0000473757 00000 n 0000464830 00000 n 0000465535 00000 n 0000465395 00000 n 0000465443 00000 n 0000465474 00000 n 0000496457 00000 n 0000449334 00000 n 0000240421 00000 n 0000246627 00000 n 0000496545 00000 n 0000496576 00000 n 0000449500 00000 n 0000246649 00000 n 0000254013 00000 n 0000496662 00000 n 0000496693 00000 n 0000449666 00000 n 0000254035 00000 n 0000258761 00000 n 0000496779 00000 n 0000496810 00000 n 0000449832 00000 n 0000258783 00000 n 0000264509 00000 n 0000496885 00000 n 0000496916 00000 n 0000449998 00000 n 0000264531 00000 n 0000271012 00000 n 0000496991 00000 n 0000497022 00000 n 0000450164 00000 n 0000271034 00000 n 0000277846 00000 n 0000497121 00000 n 0000497152 00000 n 0000450330 00000 n 0000277868 00000 n 0000283543 00000 n 0000497238 00000 n 0000497269 00000 n 0000450496 00000 n 0000283565 00000 n 0000288208 00000 n 0000497344 00000 n 0000497375 00000 n 0000450662 00000 n 0000288230 00000 n 0000292353 00000 n 0000497450 00000 n 0000497481 00000 n 0000450828 00000 n 0000292375 00000 n 0000297515 00000 n 0000497567 00000 n 0000497598 00000 n 0000450994 00000 n 0000297537 00000 n 0000303767 00000 n 0000497673 00000 n 0000497704 00000 n 0000451160 00000 n 0000303789 00000 n 0000310777 00000 n 0000497790 00000 n 0000497821 00000 n 0000451326 00000 n 0000310799 00000 n 0000318081 00000 n 0000497896 00000 n 0000497927 00000 n 0000451492 00000 n 0000318103 00000 n 0000323261 00000 n 0000498026 00000 n 0000498057 00000 n 0000451658 00000 n 0000323283 00000 n 0000327565 00000 n 0000498222 00000 n 0000498156 00000 n 0000498187 00000 n 0000540964 00000 n 0000451849 00000 n 0000327587 00000 n 0000332172 00000 n 0000559289 00000 n 0000541107 00000 n 0000541028 00000 n 0000541059 00000 n 0000591131 00000 n 0000452040 00000 n 0000332194 00000 n 0000335339 00000 n 0000591296 00000 n 0000591230 00000 n 0000591261 00000 n 0000625022 00000 n 0000452231 00000 n 0000335361 00000 n 0000337976 00000 n 0000625097 00000 n 0000625128 00000 n 0000452397 00000 n 0000337998 00000 n 0000342499 00000 n 0000625192 00000 n 0000625223 00000 n 0000452563 00000 n 0000342521 00000 n 0000348172 00000 n 0000625320 00000 n 0000625351 00000 n 0000452729 00000 n 0000348194 00000 n 0000352038 00000 n 0000625439 00000 n 0000625470 00000 n 0000452895 00000 n 0000352060 00000 n 0000353256 00000 n 0000625545 00000 n 0000625576 00000 n 0000453061 00000 n 0000353278 00000 n 0000359495 00000 n 0000625629 00000 n 0000625660 00000 n 0000453227 00000 n 0000359517 00000 n 0000365209 00000 n 0000625748 00000 n 0000625779 00000 n 0000453393 00000 n 0000365231 00000 n 0000371727 00000 n 0000625867 00000 n 0000625898 00000 n 0000453559 00000 n 0000371749 00000 n 0000377424 00000 n 0000625997 00000 n 0000626028 00000 n 0000453725 00000 n 0000377446 00000 n 0000383134 00000 n 0000626103 00000 n 0000626134 00000 n 0000453891 00000 n 0000383156 00000 n 0000386888 00000 n 0000626222 00000 n 0000626253 00000 n 0000454057 00000 n 0000386910 00000 n 0000391479 00000 n 0000626328 00000 n 0000626359 00000 n 0000454223 00000 n 0000391501 00000 n 0000394473 00000 n 0000626445 00000 n 0000626476 00000 n 0000454389 00000 n 0000394495 00000 n 0000401008 00000 n 0000626551 00000 n 0000626582 00000 n 0000454555 00000 n 0000401030 00000 n 0000403306 00000 n 0000626679 00000 n 0000626710 00000 n 0000454721 00000 n 0000403328 00000 n 0000410013 00000 n 0000726023 00000 n 0000717470 00000 n 0000727154 00000 n 0000720366 00000 n 0000626774 00000 n 0000626805 00000 n 0000454887 00000 n 0000410035 00000 n 0000415106 00000 n 0000626908 00000 n 0000626939 00000 n 0000455053 00000 n 0000415128 00000 n 0000422928 00000 n 0000627014 00000 n 0000627045 00000 n 0000455219 00000 n 0000422950 00000 n 0000426039 00000 n 0000627120 00000 n 0000627151 00000 n 0000455385 00000 n 0000426061 00000 n 0000427866 00000 n 0000728953 00000 n 0000722496 00000 n 0000729870 00000 n 0000724328 00000 n 0000627215 00000 n 0000627246 00000 n 0000455551 00000 n 0000427888 00000 n 0000431672 00000 n 0000627336 00000 n 0000627367 00000 n 0000455717 00000 n 0000431694 00000 n 0000435331 00000 n 0000627470 00000 n 0000627501 00000 n 0000455883 00000 n 0000435353 00000 n 0000439000 00000 n 0000627604 00000 n 0000627635 00000 n 0000456049 00000 n 0000439022 00000 n 0000442161 00000 n 0000627738 00000 n 0000627769 00000 n 0000627859 00000 n 0000629778 00000 n 0000629800 00000 n 0000633651 00000 n 0000633673 00000 n 0000636375 00000 n 0000636397 00000 n 0000643218 00000 n 0000643240 00000 n 0000658089 00000 n 0000658112 00000 n 0000662516 00000 n 0000662538 00000 n 0000670443 00000 n 0000670465 00000 n 0000672654 00000 n 0000672676 00000 n 0000673188 00000 n 0000673209 00000 n 0000678859 00000 n 0000678881 00000 n 0000684218 00000 n 0000684240 00000 n 0000691262 00000 n 0000691284 00000 n 0000697115 00000 n 0000697137 00000 n 0000700141 00000 n 0000700163 00000 n 0000704631 00000 n 0000704653 00000 n 0000714215 00000 n 0000714237 00000 n 0000716916 00000 n 0000717115 00000 n 0000717223 00000 n 0000717449 00000 n 0000717640 00000 n 0000718670 00000 n 0000719293 00000 n 0000719760 00000 n 0000720119 00000 n 0000720345 00000 n 0000720536 00000 n 0000721711 00000 n 0000722250 00000 n 0000722475 00000 n 0000722666 00000 n 0000722750 00000 n 0000722975 00000 n 0000723164 00000 n 0000723248 00000 n 0000723546 00000 n 0000723787 00000 n trailer << /Size 529 /Root 1 0 R /Info 2 0 R /ID [(qdq'4A)(qdq'4A)] >> startxref 731525 %%EOF grcompiler-5.2.1/doc/GDL.rtf000066400000000000000000377217031411153030700155710ustar00rootroot00000000000000{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica;} {\f5\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070409020205020404}Courier;}{\f6\fbidi \froman\fcharset0\fprq2{\*\panose 02020603040505020304}Tms Rmn;}{\f7\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202030204}Helv;} {\f8\fbidi \froman\fcharset0\fprq2{\*\panose 02040503060506020304}New York;}{\f9\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;} {\f11\fbidi \froman\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt Yu Gothic UI};} {\f12\fbidi \fnil\fcharset129\fprq1{\*\panose 02030600000101010101}Batang{\*\falt \'a2\'aeE\'a1\'cbcE\'a1\'cb\'a2\'e7EcE\'a1\'cb\'a2\'e7E\'a2\'aeEcEcE\'a1\'cb\'a2\'e7E\'a2\'aeEcE\'a2\'aeE\'a1\'cbcE};} {\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ?????????????\'a1\'ec???????};}{\f14\fbidi \fnil\fcharset136\fprq2{\*\panose 02010601000101010101}PMingLiU{\*\falt !Ps2OcuAe};} {\f15\fbidi \fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic{\*\falt ?l?r ?S?V?b?N};} {\f16\fbidi \fmodern\fcharset129\fprq1{\*\panose 020b0600000101010101}Dotum{\*\falt \'a1\'cb\'a2\'e7E\'a2\'aeEcE\'a2\'aeE\'a1\'cbcEcE\'a2\'aeE\'a1\'cbcE\'a1\'cb\'a2\'e7EcEcE\'a2\'aeE\'a1\'cbcE};} {\f17\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010600030101010101}SimHei{\*\falt o???????????\'a1\'ec?????2???????????\'a1\'ec};}{\f18\fbidi \fmodern\fcharset136\fprq1{\*\panose 02010609000101010101}MingLiU{\*\falt 2OcuAe};} {\f19\fbidi \froman\fcharset128\fprq1{\*\panose 02020609040305080305}Mincho{\*\falt ??\'81\'66c};} {\f20\fbidi \froman\fcharset129\fprq1{\*\panose 020b0600000101010101}Gulim{\*\falt \'a2\'aeE\'a1\'cbcE\'a1\'cb\'a2\'e7EcE\'a1\'cb\'a2\'e7E\'a2\'aeEcEcE\'a1\'cb\'a2\'e7E\'a2\'aeEcE\'a2\'aeE\'a1\'cbcE};} {\f21\fbidi \froman\fcharset0\fprq2{\*\panose 02040604050505020304}Century;}{\f22\fbidi \froman\fcharset222\fprq2{\*\panose 02020603050405020304}Angsana New;}{\f23\fbidi \froman\fcharset222\fprq2{\*\panose 020b0304020202020204}Cordia New;} {\f24\fbidi \froman\fcharset1\fprq2{\*\panose 00000400000000000000}Mangal;}{\f25\fbidi \froman\fcharset1\fprq2{\*\panose 02000400000000000000}Latha;}{\f26\fbidi \froman\fcharset0\fprq2{\*\panose 010a0502050306030303}Sylfaen;} {\f27\fbidi \froman\fcharset1\fprq2{\*\panose 00000400000000000000}Vrinda;}{\f28\fbidi \froman\fcharset1\fprq2{\*\panose 02000500000000000000}Raavi;}{\f29\fbidi \froman\fcharset1\fprq2{\*\panose 02000500000000000000}Shruti;} {\f30\fbidi \froman\fcharset1\fprq2{\*\panose 00000400000000000000}Sendnya;}{\f31\fbidi \froman\fcharset1\fprq2{\*\panose 02000500000000000000}Gautami;}{\f32\fbidi \froman\fcharset1\fprq2{\*\panose 00000400000000000000}Tunga;} {\f33\fbidi \froman\fcharset1\fprq2{\*\panose 00000000000000000000}Estrangelo Edessa;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} {\f35\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0400000000000000}Yu Gothic{\*\falt ?a?S?V?b?N};}{\f36\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010600030101010101}DengXian{\*\falt |????????????\'a8\'ac?????????????????};} {\f37\fbidi \froman\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial Unicode MS;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} {\f40\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Segoe UI;}{\f41\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria;}{\f42\fbidi \fmodern\fcharset177\fprq2{\*\panose 02000603000000000000}Nachlieli CLM;} {\f43\fbidi \fmodern\fcharset0\fprq2{\*\panose 00000500000000000000}Frank Ruhl Hofshi;}{\f44\fbidi \fmodern\fcharset0\fprq2{\*\panose 00000500000000000000}Miriam Libre;}{\f45\fbidi \fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;} {\f46\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;}{\f47\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift Light;} {\f48\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift SemiLight;}{\f49\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift;} {\f50\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift SemiBold;}{\f51\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift Light SemiCondensed;} {\f52\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift SemiLight SemiConde;}{\f53\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift SemiCondensed;} {\f54\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift SemiBold SemiConden;}{\f55\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift Light Condensed;} {\f56\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift SemiLight Condensed;}{\f57\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift Condensed;} {\f58\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Bahnschrift SemiBold Condensed;}{\f59\fbidi \fswiss\fcharset0\fprq2{\*\panose 020e0502030303020204}Candara;} {\f60\fbidi \fswiss\fcharset0\fprq2{\*\panose 020e0502030303020204}Candara Light;}{\f61\fbidi \fscript\fcharset0\fprq2{\*\panose 030f0702030302020204}Comic Sans MS;}{\f62\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609020204030204}Consolas;} {\f63\fbidi \froman\fcharset0\fprq2{\*\panose 02030602050306030303}Constantia;}{\f64\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0503020204020204}Corbel;}{\f65\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0303020204020204}Corbel Light;} {\f66\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Ebrima;}{\f67\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603020102020204}Franklin Gothic Medium;}{\f68\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040605051002020d02}Gabriola;} {\f69\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Gadugi;}{\f70\fbidi \froman\fcharset0\fprq2{\*\panose 02040502050405020303}Georgia;}{\f71\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;} {\f72\fbidi \fscript\fcharset0\fprq2{\*\panose 03080402000500000000}Ink Free;}{\f73\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Javanese Text;}{\f74\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Leelawadee UI;} {\f75\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0402040204020203}Leelawadee UI Semilight;}{\f76\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;} {\f77\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;}{\f78\fbidi \fswiss\fcharset129\fprq2{\*\panose 020b0503020000020004}Malgun Gothic;}{\f79\fbidi \fswiss\fcharset129\fprq2 @Malgun Gothic;} {\f80\fbidi \fswiss\fcharset129\fprq2{\*\panose 020b0502040204020203}Malgun Gothic Semilight;}{\f81\fbidi \fswiss\fcharset128\fprq2 @Malgun Gothic Semilight;}{\f82\fbidi \fnil\fcharset0\fprq2{\*\panose 01010100010101010101}Microsoft Himalaya;} {\f83\fbidi \fswiss\fcharset136\fprq2{\*\panose 020b0604030504040204}Microsoft JhengHei;}{\f84\fbidi \fswiss\fcharset136\fprq2 @Microsoft JhengHei;}{\f85\fbidi \fswiss\fcharset136\fprq2{\*\panose 020b0604030504040204}Microsoft JhengHei UI;} {\f86\fbidi \fswiss\fcharset136\fprq2 @Microsoft JhengHei UI;}{\f87\fbidi \fswiss\fcharset136\fprq2{\*\panose 020b0304030504040204}Microsoft JhengHei Light;}{\f88\fbidi \fswiss\fcharset136\fprq2 @Microsoft JhengHei Light;} {\f89\fbidi \fswiss\fcharset136\fprq2{\*\panose 020b0304030504040204}Microsoft JhengHei UI Light;}{\f90\fbidi \fswiss\fcharset136\fprq2 @Microsoft JhengHei UI Light;} {\f91\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Microsoft New Tai Lue;}{\f92\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Microsoft PhagsPa;} {\f93\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Microsoft Sans Serif;}{\f94\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Microsoft Tai Le;} {\f95\fbidi \fswiss\fcharset134\fprq2{\*\panose 020b0503020204020204}Microsoft YaHei;}{\f96\fbidi \fswiss\fcharset134\fprq2 @Microsoft YaHei;}{\f97\fbidi \fswiss\fcharset134\fprq2{\*\panose 020b0503020204020204}Microsoft YaHei UI;} {\f98\fbidi \fswiss\fcharset134\fprq2 @Microsoft YaHei UI;}{\f99\fbidi \fswiss\fcharset134\fprq2{\*\panose 020b0502040204020203}Microsoft YaHei Light;}{\f100\fbidi \fswiss\fcharset134\fprq2 @Microsoft YaHei Light;} {\f101\fbidi \fswiss\fcharset134\fprq2{\*\panose 020b0502040204020203}Microsoft YaHei UI Light;}{\f102\fbidi \fswiss\fcharset134\fprq2 @Microsoft YaHei UI Light;}{\f103\fbidi \fscript\fcharset0\fprq2{\*\panose 03000500000000000000}Microsoft Yi Baiti;} {\f104\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}MingLiU-ExtB;}{\f105\fbidi \froman\fcharset136\fprq2 @MingLiU-ExtB;}{\f106\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}PMingLiU-ExtB;} {\f107\fbidi \froman\fcharset136\fprq2 @PMingLiU-ExtB;}{\f108\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}MingLiU_HKSCS-ExtB;}{\f109\fbidi \froman\fcharset136\fprq2 @MingLiU_HKSCS-ExtB;} {\f110\fbidi \fscript\fcharset0\fprq2{\*\panose 03000500000000000000}Mongolian Baiti;}{\f111\fbidi \fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}@MS Gothic;}{\f112\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS UI Gothic;} {\f113\fbidi \fswiss\fcharset128\fprq2 @MS UI Gothic;}{\f114\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS PGothic;}{\f115\fbidi \fswiss\fcharset128\fprq2 @MS PGothic;} {\f116\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500030200090000}MV Boli;}{\f117\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Myanmar Text;}{\f118\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Nirmala UI;} {\f119\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0402040204020203}Nirmala UI Semilight;}{\f120\fbidi \froman\fcharset0\fprq2{\*\panose 02040502050505030304}Palatino Linotype;} {\f121\fbidi \froman\fcharset0\fprq2{\*\panose 050a0102010101010101}Segoe MDL2 Assets;}{\f122\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600000000000000}Segoe Print;}{\f123\fbidi \fscript\fcharset0\fprq2{\*\panose 030b0504020000000003}Segoe Script;} {\f124\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0a02040204020203}Segoe UI Black;}{\f125\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Segoe UI Emoji;}{\f126\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Segoe UI Historic;} {\f127\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Segoe UI Light;}{\f128\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0702040204020203}Segoe UI Semibold;} {\f129\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0402040204020203}Segoe UI Semilight;}{\f130\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Segoe UI Symbol;}{\f131\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;} {\f132\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}NSimSun;}{\f133\fbidi \fmodern\fcharset134\fprq1 @NSimSun;}{\f134\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609060101010101}SimSun-ExtB;} {\f135\fbidi \fmodern\fcharset134\fprq1 @SimSun-ExtB;}{\f136\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505000000020004}Sitka Small;}{\f137\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505000000020004}Sitka Text;} {\f138\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505000000020004}Sitka Subheading;}{\f139\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505000000020004}Sitka Heading;}{\f140\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505000000020004}Sitka Display;} {\f141\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505000000020004}Sitka Banner;}{\f142\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f143\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS;} {\f144\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f145\fbidi \froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}{\f146\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0400000000000000}@Yu Gothic;} {\f147\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0500000000000000}Yu Gothic UI;}{\f148\fbidi \fswiss\fcharset128\fprq2 @Yu Gothic UI;}{\f149\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0700000000000000}Yu Gothic UI Semibold;} {\f150\fbidi \fswiss\fcharset128\fprq2 @Yu Gothic UI Semibold;}{\f151\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0300000000000000}Yu Gothic Light;}{\f152\fbidi \fswiss\fcharset128\fprq2 @Yu Gothic Light;} {\f153\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0300000000000000}Yu Gothic UI Light;}{\f154\fbidi \fswiss\fcharset128\fprq2 @Yu Gothic UI Light;}{\f155\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0500000000000000}Yu Gothic Medium;} {\f156\fbidi \fswiss\fcharset128\fprq2 @Yu Gothic Medium;}{\f157\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0400000000000000}Yu Gothic UI Semilight;}{\f158\fbidi \fswiss\fcharset128\fprq2 @Yu Gothic UI Semilight;} {\f159\fbidi \froman\fcharset0\fprq2{\*\panose 050a0102010101010101}HoloLens MDL2 Assets;}{\f160\fbidi \fnil\fcharset0\fprq2{\*\panose 01000000000000000000}Aldhabi;}{\f161\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Andalus;} {\f162\fbidi \fscript\fcharset0\fprq2{\*\panose 03020402040406030203}Arabic Typesetting;}{\f163\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Microsoft Uighur;}{\f164\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Sakkal Majalla;} {\f165\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Simplified Arabic;}{\f166\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Simplified Arabic Fixed;} {\f167\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Traditional Arabic;}{\f168\fbidi \fscript\fcharset0\fprq2{\*\panose 03020402040406030203}Urdu Typesetting;} {\f169\fbidi \froman\fcharset2\fprq2{\*\panose 05020102010507070707}Wingdings 2;}{\f170\fbidi \froman\fcharset2\fprq2{\*\panose 05040102010807070707}Wingdings 3;}{\f171\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020404030d07020202}Tempus Sans ITC;} {\f172\fbidi \fscript\fcharset0\fprq2{\*\panose 03060402040406080204}Pristina;}{\f173\fbidi \fscript\fcharset0\fprq2{\*\panose 03070502060502030205}Papyrus;}{\f174\fbidi \fscript\fcharset0\fprq2{\*\panose 03090702030407020403}Mistral;} {\f175\fbidi \fscript\fcharset0\fprq2{\*\panose 03010101010101010101}Lucida Handwriting;}{\f176\fbidi \fscript\fcharset0\fprq2{\*\panose 03050502040202030202}Kristen ITC;}{\f177\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040403040a02020202}Juice ITC;} {\f178\fbidi \fscript\fcharset0\fprq2{\*\panose 03020402040607040605}French Script MT;}{\f179\fbidi \fscript\fcharset0\fprq2{\*\panose 030804020302050b0404}Freestyle Script;} {\f180\fbidi \fscript\fcharset0\fprq2{\*\panose 03070402050302030203}Bradley Hand ITC;}{\f181\fbidi \fnil\fcharset2\fprq2{\*\panose 05010100010000000000}MS Outlook;}{\f182\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0606020202030204}Arial Narrow;} {\f183\fbidi \froman\fcharset0\fprq2{\*\panose 02040602050305030304}Book Antiqua;}{\f184\fbidi \froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;}{\f185\fbidi \fscript\fcharset0\fprq2{\*\panose 03010101010201010101}Monotype Corsiva;} {\f186\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f187\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020705040a02060702}Algerian;}{\f188\fbidi \froman\fcharset0\fprq2{\*\panose 02020602080505020303}Baskerville Old Face;} {\f189\fbidi \fdecor\fcharset0\fprq2{\*\panose 04030905020b02020c02}Bauhaus 93;}{\f190\fbidi \froman\fcharset0\fprq2{\*\panose 02020503060305020303}Bell MT;}{\f191\fbidi \fswiss\fcharset0\fprq2{\*\panose 020e0602020502020306}Berlin Sans FB;} {\f192\fbidi \froman\fcharset0\fprq2{\*\panose 02050806060905020404}Bernard MT Condensed;}{\f193\fbidi \froman\fcharset0\fprq2{\*\panose 02070706080601050204}Bodoni MT Poster Compressed;} {\f194\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0903060703020204}Britannic Bold;}{\f195\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040905080b02020502}Broadway;}{\f196\fbidi \fscript\fcharset0\fprq2{\*\panose 03060802040406070304}Brush Script MT;} {\f197\fbidi \froman\fcharset0\fprq2{\*\panose 0207040306080b030204}Californian FB;}{\f198\fbidi \froman\fcharset0\fprq2{\*\panose 02030504050205020304}Centaur;}{\f199\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020404031007020602}Chiller;} {\f200\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020805060202030203}Colonna MT;}{\f201\fbidi \froman\fcharset0\fprq2{\*\panose 0208090404030b020404}Cooper Black;}{\f202\fbidi \froman\fcharset0\fprq2{\*\panose 0204060206030a020304}Footlight MT Light;} {\f203\fbidi \fdecor\fcharset0\fprq2{\*\panose 04030604020f02020d02}Harlow Solid Italic;}{\f204\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040505050a02020702}Harrington;}{\f205\fbidi \froman\fcharset0\fprq2{\*\panose 02040502050506030303}High Tower Text;} {\f206\fbidi \fdecor\fcharset0\fprq2{\*\panose 04090605060d06020702}Jokerman;}{\f207\fbidi \fscript\fcharset0\fprq2{\*\panose 030304020206070d0d06}Kunstler Script;}{\f208\fbidi \froman\fcharset0\fprq2{\*\panose 02040602050505020304}Lucida Bright;} {\f209\fbidi \fscript\fcharset0\fprq2{\*\panose 03010101010101010101}Lucida Calligraphy;}{\f210\fbidi \froman\fcharset0\fprq2{\*\panose 02060602050505020204}Lucida Fax;}{\f211\fbidi \fdecor\fcharset0\fprq2{\*\panose 04030805050802020d02}Magneto;} {\f212\fbidi \fscript\fcharset0\fprq2{\*\panose 03020802060602070202}Matura MT Script Capitals;}{\f213\fbidi \froman\fcharset0\fprq2{\*\panose 02070704070505020303}Modern No. 20;} {\f214\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020502070703030202}Niagara Engraved;}{\f215\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020502070702020202}Niagara Solid;} {\f216\fbidi \fscript\fcharset0\fprq2{\*\panose 03040902040508030806}Old English Text MT;}{\f217\fbidi \fdecor\fcharset0\fprq2{\*\panose 04050602080702020203}Onyx;}{\f218\fbidi \fscript\fcharset0\fprq2{\*\panose 03040602040708040804}Parchment;} {\f219\fbidi \fdecor\fcharset0\fprq2{\*\panose 040506030a0602020202}Playbill;}{\f220\fbidi \froman\fcharset0\fprq2{\*\panose 02080502050505020702}Poor Richard;}{\f221\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040805050809020602}Ravie;} {\f222\fbidi \fscript\fcharset0\fprq2{\*\panose 030604020304060b0204}Informal Roman;}{\f223\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020904020102020604}Showcard Gothic;}{\f224\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040a07060a02020202}Snap ITC;} {\f225\fbidi \fdecor\fcharset0\fprq2{\*\panose 040409050d0802020404}Stencil;}{\f226\fbidi \fscript\fcharset0\fprq2{\*\panose 03070502030502020203}Viner Hand ITC;}{\f227\fbidi \fscript\fcharset0\fprq2{\*\panose 03020602050506090804}Vivaldi;} {\f228\fbidi \fscript\fcharset0\fprq2{\*\panose 03050402040407070305}Vladimir Script;}{\f229\fbidi \froman\fcharset0\fprq2{\*\panose 020a0a07050505020404}Wide Latin;}{\f230\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0602020104020603}Tw Cen MT;} {\f231\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0606020104020203}Tw Cen MT Condensed;}{\f232\fbidi \fscript\fcharset0\fprq2{\*\panose 03040602040607080904}Script MT Bold;} {\f233\fbidi \froman\fcharset0\fprq2{\*\panose 02060903040505020403}Rockwell Extra Bold;}{\f234\fbidi \froman\fcharset0\fprq2{\*\panose 02060603050405020104}Rockwell Condensed;}{\f235\fbidi \froman\fcharset0\fprq2{\*\panose 02060603020205020403}Rockwell;} {\f236\fbidi \fscript\fcharset0\fprq2{\*\panose 03070502040507070304}Rage Italic;}{\f237\fbidi \froman\fcharset0\fprq2{\*\panose 02020502060505020804}Perpetua Titling MT;}{\f238\fbidi \froman\fcharset0\fprq2{\*\panose 02020502060401020303}Perpetua;} {\f239\fbidi \fscript\fcharset0\fprq2{\*\panose 030303020206070c0b05}Palace Script MT;}{\f240\fbidi \fmodern\fcharset0\fprq2{\*\panose 02010509020102010303}OCR A Extended;}{\f241\fbidi \fswiss\fcharset0\fprq2{\*\panose 020e0502030308020204}Maiandra GD;} {\f242\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0509030504030204}Lucida Sans Typewriter;}{\f243\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans;} {\f244\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020605060303030202}Imprint MT Shadow;}{\f245\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0706040902060204}Haettenschweiler;}{\f246\fbidi \froman\fcharset0\fprq2{\*\panose 0202090407030b020401}Goudy Stout;} {\f247\fbidi \froman\fcharset0\fprq2{\*\panose 02020502050305020303}Goudy Old Style;}{\f248\fbidi \froman\fcharset0\fprq2{\*\panose 02030808020601010101}Gloucester MT Extra Condensed;} {\f249\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0a06020104020203}Gill Sans Ultra Bold Condensed;}{\f250\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0a02020104020203}Gill Sans Ultra Bold;} {\f251\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0506020104020203}Gill Sans MT Condensed;}{\f252\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502020104020203}Gill Sans MT;} {\f253\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0902020104020203}Gill Sans MT Ext Condensed Bold;}{\f254\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040504061007020d02}Gigi;} {\f255\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0606030402020204}Franklin Gothic Medium Cond;}{\f256\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0903020102020204}Franklin Gothic Heavy;} {\f257\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f258\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0703020102020204}Franklin Gothic Demi;} {\f259\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;}{\f260\fbidi \fscript\fcharset0\fprq2{\*\panose 03060902040502070203}Forte;}{\f261\fbidi \fdecor\fcharset0\fprq2{\*\panose 04060505060202020a04}Felix Titling;} {\f262\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0602030504020804}Eras Medium ITC;}{\f263\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0402030504020804}Eras Light ITC;}{\f264\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0805030504020804}Eras Demi ITC;} {\f265\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0907030504020204}Eras Bold ITC;}{\f266\fbidi \froman\fcharset0\fprq2{\*\panose 02090707080505020304}Engravers MT;}{\f267\fbidi \froman\fcharset0\fprq2{\*\panose 02020904090505020303}Elephant;} {\f268\fbidi \fscript\fcharset0\fprq2{\*\panose 030303020407070d0804}Edwardian Script ITC;}{\f269\fbidi \fdecor\fcharset0\fprq2{\*\panose 04040404050702020202}Curlz MT;} {\f270\fbidi \fswiss\fcharset0\fprq2{\*\panose 020e0507020206020404}Copperplate Gothic Light;}{\f271\fbidi \fswiss\fcharset0\fprq2{\*\panose 020e0705020206020404}Copperplate Gothic Bold;} {\f272\fbidi \froman\fcharset0\fprq2{\*\panose 02040604050505020304}Century Schoolbook;}{\f273\fbidi \froman\fcharset0\fprq2{\*\panose 020a0402060406010301}Castellar;}{\f274\fbidi \froman\fcharset0\fprq2{\*\panose 02040603050505030304}Calisto MT;} {\f275\fbidi \froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;}{\f276\fbidi \froman\fcharset0\fprq2{\*\panose 02070606080606020203}Bodoni MT Condensed;} {\f277\fbidi \froman\fcharset0\fprq2{\*\panose 02070a03080606020203}Bodoni MT Black;}{\f278\fbidi \froman\fcharset0\fprq2{\*\panose 02070603080606020203}Bodoni MT;}{\f279\fbidi \fdecor\fcharset0\fprq2{\*\panose 04020505051007020d02}Blackadder ITC;} {\f280\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0704030504030204}Arial Rounded MT Bold;}{\f281\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0503020202020204}Agency FB;} {\f282\fbidi \fnil\fcharset2\fprq2{\*\panose 05010101010101010101}Bookshelf Symbol 7;}{\f283\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}MS Reference Sans Serif;} {\f284\fbidi \fnil\fcharset2\fprq2{\*\panose 05000500000000000000}MS Reference Specialty;}{\f285\fbidi \fswiss\fcharset0\fprq2{\*\panose 020e0802020502020306}Berlin Sans FB Demi;} {\f286\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0803020202020204}Tw Cen MT Condensed Extra Bold;}{\f287\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010205020202}MT Extra;} {\f288\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503060000020004}Gentium Plus;}{\f289\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500070000020004}Doulos SIL;}{\f290\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400020000020004}Padauk;} {\f291\fbidi \fnil\fcharset128\fprq2{\*\panose 02000600000000000000}Code2000;}{\f292\fbidi \fnil\fcharset128\fprq2 @Code2000;}{\f293\fbidi \fnil\fcharset0\fprq2{\*\panose 02000606070000020003}Tai Heritage Pro;} {\f294\fbidi \fnil\fcharset2\fprq2{\*\panose 02000608060000020002}Maestro Percussion;}{\f295\fbidi \fnil\fcharset2\fprq2{\*\panose 02000506050000020004}Maestro;}{\f296\fbidi \fnil\fcharset2\fprq2{\*\panose 02000506050000020004}Maestro Wide;} {\f297\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}MaestroTimes;}{\f298\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}EngraverFontExtras;}{\f299\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}EngraverFontSet;} {\f300\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}EngraverTime;}{\f301\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}EngraverTextH;}{\f302\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}EngraverTextNCS;} {\f303\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}EngraverTextT;}{\f304\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}Jazz;}{\f305\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}JazzCord;} {\f306\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}JazzPerc;}{\f307\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}JazzTextExtended;}{\f308\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}JazzText;} {\f309\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}Petrucci;}{\f310\fbidi \fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Seville;}{\f311\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}Tamburo;} {\f312\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040504020204}Noto Nastaliq Urdu;}{\f313\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000004}Jameel Noori Nastaleeq;} {\f314\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Andika New Basic;}{\f315\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603050302020204}PCStitch Symbols;} {\f316\fbidi \fnil\fcharset0\fprq2{\*\panose 02000003000000000000}TAML ThiruValluvar;}{\f317\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Andika Mtihani;} {\f318\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500070000020004}Doulos Graphite Tutorial;}{\f319\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500060000020004}Charis SIL;}{\f320\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Abyssinica SIL;} {\f321\fbidi \fnil\fcharset177\fprq2{\*\panose 02000603000000000000}David CLM;}{\f322\fbidi \froman\fcharset0\fprq2{\*\panose 02040903050405020204}Source Serif Pro Black;}{\f323\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Caladea;} {\f324\fbidi \fnil\fcharset1\fprq2{\*\panose 00000000000000000000}Reem Kufi;}{\f325\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0506030804020204}Noto Kufi Arabic;}{\f326\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000000}EmojiOne Color;} {\f327\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503060000020004}Gentium Basic;}{\f328\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0809030403020204}Source Code Pro Black;}{\f329\fbidi \fnil\fcharset0\fprq2{\*\panose 00000500000000000000}Amiri;} {\f330\fbidi \fnil\fcharset0\fprq2{\*\panose 00000500000000000000}Alef;}{\f331\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Carlito;}{\f332\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000000}DejaVu Math TeX Gyre;} {\f333\fbidi \fnil\fcharset0\fprq2{\*\panose 00000500000000000000}David Libre;}{\f334\fbidi \fnil\fcharset178\fprq2{\*\panose 02000000000000000000}KacstBook;}{\f335\fbidi \fnil\fcharset0\fprq2{\*\panose 05010000000000000000}OpenSymbol;} {\f336\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0803030403020204}Source Sans Pro Black;}{\f337\fbidi \fnil\fcharset178\fprq2{\*\panose 00000500000000000000}Amiri Quran;} {\f338\fbidi \fnil\fcharset177\fprq2{\*\panose 02000603000000000000}Frank Ruehl CLM;}{\f339\fbidi \fnil\fcharset177\fprq2{\*\panose 02000603000000000000}Miriam CLM;}{\f340\fbidi \fnil\fcharset177\fprq2{\*\panose 02000503000000000000}Miriam Mono CLM;} {\f341\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603030804020204}DejaVu Sans;}{\f342\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0203030804020204}DejaVu Sans Light;} {\f343\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0606030804020204}DejaVu Sans Condensed;}{\f344\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609030804020204}DejaVu Sans Mono;} {\f345\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503060000020004}Gentium Book Basic;}{\f346\fbidi \fnil\fcharset178\fprq2{\*\panose 02000000000000000000}KacstOffice;}{\f347\fbidi \fnil\fcharset0\fprq2{\*\panose 02000604000000020004}Rubik;} {\f348\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609030804020204}Noto Mono;}{\f349\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040504020204}Noto Naskh Arabic;} {\f350\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040504020204}Noto Naskh Arabic UI;}{\f351\fbidi \fswiss\fcharset1\fprq2{\*\panose 020b0502040504020204}Noto Sans;}{\f352\fbidi \fswiss\fcharset1\fprq2{\*\panose 020b0506040504020204}Noto Sans Cond;} {\f353\fbidi \fswiss\fcharset1\fprq2{\*\panose 020b0402040504020204}Noto Sans Light;}{\f354\fbidi \fswiss\fcharset1\fprq2{\*\panose 020b0502040504020204}Noto Sans Arabic;} {\f355\fbidi \fswiss\fcharset1\fprq2{\*\panose 020b0502040504020204}Noto Sans Arabic UI;}{\f356\fbidi \fswiss\fcharset1\fprq2{\*\panose 020b0502040504020204}Noto Sans Armenian;} {\f357\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040504020204}Noto Sans Georgian;}{\f358\fbidi \fswiss\fcharset1\fprq2{\*\panose 020b0502040504020204}Noto Sans Hebrew;} {\f359\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040504020204}Noto Sans Lao;}{\f360\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040504020204}Noto Sans Lisu;} {\f361\fbidi \froman\fcharset1\fprq2{\*\panose 02020502060505020204}Noto Serif Armenian;}{\f362\fbidi \froman\fcharset0\fprq2{\*\panose 02020502060505020204}Noto Serif Georgian;} {\f363\fbidi \froman\fcharset1\fprq2{\*\panose 02020502060505020204}Noto Serif Hebrew;}{\f364\fbidi \froman\fcharset0\fprq2{\*\panose 02020502060505020204}Noto Serif Lao;} {\f365\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0509030403020204}Source Code Pro;}{\f366\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0309030403020204}Source Code Pro ExtraLight;} {\f367\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0409030403020204}Source Code Pro Light;}{\f368\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0509030403020204}Source Code Pro Medium;} {\f369\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609030403020204}Source Code Pro Semibold;}{\f370\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0503030403020204}Source Sans Pro;} {\f371\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0303030403020204}Source Sans Pro ExtraLight;}{\f372\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0403030403020204}Source Sans Pro Light;} {\f373\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603030403020204}Source Sans Pro Semibold;}{\f374\fbidi \froman\fcharset0\fprq2{\*\panose 02040603050405020204}Source Serif Pro;} {\f375\fbidi \froman\fcharset0\fprq2{\*\panose 02040203050405020204}Source Serif Pro ExtraLight;}{\f376\fbidi \froman\fcharset0\fprq2{\*\panose 02040303050405020204}Source Serif Pro Light;} {\f377\fbidi \froman\fcharset0\fprq2{\*\panose 02040703050405020204}Source Serif Pro Semibold;}{\f378\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Khmer Mondulkiri;} {\f379\fbidi \froman\fcharset0\fprq2{\*\panose 02060603050605020204}DejaVu Serif;}{\f380\fbidi \froman\fcharset0\fprq2{\*\panose 02060606050605020204}DejaVu Serif Condensed;}{\f381\fbidi \froman\fcharset1\fprq2{\*\panose 02020502060505020204}Noto Serif;} {\f382\fbidi \froman\fcharset1\fprq2{\*\panose 02020506060505020204}Noto Serif Cond;}{\f383\fbidi \froman\fcharset1\fprq2{\*\panose 02020402060505020204}Noto Serif Light;} {\f384\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500060000020004}Charis GrcRegTest;}{\f385\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600020000020004}Padauk GrcRegTest;} {\f386\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}PigLatin GrRegTest V2;}{\f387\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}PigLatin GrcRegTest;} {\f388\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade GrcRegTest;}{\f389\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040504020204}Noto Sans Lepcha;}{\f390\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Mingzat;} {\f391\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Awami Nastaliq;}{\f392\fbidi \fnil\fcharset0\fprq2{\*\panose 00000500000000000000}Alkalami Released;}{\f393\fbidi \fnil\fcharset0\fprq2{\*\panose 01000503000000020003}Harmattan;} {\f394\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0a02020204030203}Lato Black;}{\f395\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030203}Lato;}{\f396\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030203}Lato Light;} {\f397\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0202020204030203}Lato Hairline;}{\f398\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Amarante;}{\f399\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Asul;} {\f400\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000020004}Rambla;}{\f401\fbidi \fnil\fcharset0\fprq2{\*\panose 00000a00000000000000}Exo 2 Black;}{\f402\fbidi \fnil\fcharset0\fprq2{\*\panose 00000500000000000000}Exo 2;} {\f403\fbidi \fnil\fcharset0\fprq2{\*\panose 00000900000000000000}Exo 2 ExtraBold;}{\f404\fbidi \fnil\fcharset0\fprq2{\*\panose 01000000000000000000}Annapurna SIL;}{\f405\fbidi \fnil\fcharset0\fprq2{\*\panose 00000500000000000000}Alkalami;} {\f406\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Alkalami Light;}{\f407\fbidi \froman\fcharset0\fprq2{\*\panose 02020502060505020204}Kamtapuri;}{\f408\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Oldstyle Stitchery;} {\f409\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0606020202030204}Liberation Sans Narrow;}{\f410\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070409020205020404}Liberation Mono;} {\f411\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Liberation Sans;}{\f412\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Liberation Serif;}{\f413\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade;} {\f414\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000000}Linux Biolinum G;}{\f415\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000000}Linux Libertine Display G;} {\f416\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000000}Linux Libertine G;}{\f417\fbidi \froman\fcharset0\fprq2{\*\panose 02020502040504020204}Noto Serif Bengali;} {\f418\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Oleo Script Swash Caps;}{\f419\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505000000020003}Berkshire Swash;}{\f420\fbidi \fnil\fcharset0\fprq2{\*\panose 02000706050000020004}Acme;} {\f421\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade New;}{\f422\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Awami Nastaliq Dev;}{\f423\fbidi \froman\fcharset0\fprq0{\*\panose 02000503000000000000}Yezidi4Unicode;} {\f424\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times;}{\f425\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_215 LT 300 CN;} {\f426\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_700 BD 300 CN;}{\f427\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_565 SB 300 CN;} {\f428\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_400 RG 300 CN;}{\f429\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Times New Roman CYR;} {\f430\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Times New Roman TUR;}{\f431\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Arial CYR;}{\f432\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Arial TUR;} {\f433\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier New CYR;}{\f434\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier New TUR;}{\f435\fbidi \froman\fcharset2\fprq2{\*\panose 05020600000000000000}MSVisi;} {\f436\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}MinioMM_345 wt 500 wd 11;}{\f437\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR A;}{\f438\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR B;} {\f439\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Letter Gothic;}{\f440\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}BR-01T;}{\f441\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}BR-05B;} {\f442\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Brougham;}{\f443\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}BR-11U;}{\f444\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Albertville;} {\f445\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Albertville Extrabold;}{\f446\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Antique Oakland;}{\f447\fbidi \froman\fcharset2\fprq2{\*\panose 00000000000000000000}BR Symbol;} {\f448\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}PC Brussels Demi;}{\f449\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}PC Brussels Light;} {\f450\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cleveland Condensed;}{\f451\fbidi \fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Conneticut;} {\f452\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Guatemala Antique;}{\f453\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helsinki;}{\f454\fbidi \fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Maryland;} {\f455\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Oklahoma;}{\f456\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}PC Tennessee Roman;}{\f457\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Tennessee Roman;} {\f458\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Utah;}{\f459\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Utah Condensed;}{\f460\fbidi \fdecor\fcharset2\fprq2{\*\panose 00000000000000000000}W Dingbats;} {\f461\fbidi \froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Batang;}{\f462\fbidi \fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}BatangChe;}{\f463\fbidi \fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@BatangChe;} {\f464\fbidi \froman\fcharset129\fprq2{\*\panose 02030600000101010101}Gungsuh;}{\f465\fbidi \froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Gungsuh;}{\f466\fbidi \fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}GungsuhChe;} {\f467\fbidi \fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@GungsuhChe;}{\f468\fbidi \fnil\fcharset0\fprq2{\*\panose 01010101010101010101}DaunPenh;}{\f469\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}DokChampa;} {\f470\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0503040102020104}Euphemia;}{\f471\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Vani;}{\f472\fbidi \fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Gulim;} {\f473\fbidi \fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}GulimChe;}{\f474\fbidi \fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@GulimChe;}{\f475\fbidi \fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Dotum;} {\f476\fbidi \fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}DotumChe;}{\f477\fbidi \fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@DotumChe;}{\f478\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Iskoola Pota;} {\f479\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Kalinga;}{\f480\fbidi \froman\fcharset0\fprq2{\*\panose 02020503030404060203}Kartika;}{\f481\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Khmer UI;} {\f482\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Lao UI;}{\f483\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0604030504040204}Meiryo;}{\f484\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0604030504040204}@Meiryo;} {\f485\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0604030504040204}Meiryo UI;}{\f486\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0604030504040204}@Meiryo UI;}{\f487\fbidi \fmodern\fcharset136\fprq1{\*\panose 02020509000000000000}@MingLiU;} {\f488\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}@PMingLiU;}{\f489\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}MingLiU_HKSCS;}{\f490\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}@MingLiU_HKSCS;} {\f491\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\f492\fbidi \froman\fcharset128\fprq2{\*\panose 02020600040205080304}MS PMincho;}{\f493\fbidi \froman\fcharset128\fprq2{\*\panose 02020600040205080304}@MS PMincho;} {\f494\fbidi \fnil\fcharset0\fprq2{\*\panose 02000504070300020003}Nyala;}{\f495\fbidi \froman\fcharset0\fprq2{\*\panose 02020602070100000000}Plantagenet Cherokee;}{\f496\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Shonar Bangla;} {\f497\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Aparajita;}{\f498\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Gisha;}{\f499\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Kokila;} {\f500\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Leelawadee;}{\f501\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0100010101010101}MoolBoran;}{\f502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Utsaah;} {\f503\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Vijaya;}{\f504\fbidi \fnil\fcharset177\fprq2{\*\panose 02010803020104030203}Aharoni;}{\f505\fbidi \fswiss\fcharset177\fprq2{\*\panose 020e0502060401010101}David;} {\f506\fbidi \fswiss\fcharset177\fprq2{\*\panose 020e0503060101010101}FrankRuehl;}{\f507\fbidi \fnil\fcharset177\fprq2{\*\panose 02010502060101010101}Levenim MT;}{\f508\fbidi \fswiss\fcharset177\fprq2{\*\panose 020b0502050101010101}Miriam;} {\f509\fbidi \fmodern\fcharset177\fprq1{\*\panose 020b0509050101010101}Miriam Fixed;}{\f510\fbidi \fswiss\fcharset177\fprq2{\*\panose 020e0502050101010101}Narkisim;}{\f511\fbidi \fmodern\fcharset177\fprq1{\*\panose 02030509050101010101}Rod;} {\f512\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609060101010101}FangSong;}{\f513\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609060101010101}@FangSong;}{\f514\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609060101010101}@SimHei;} {\f515\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609060101010101}KaiTi;}{\f516\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609060101010101}@KaiTi;}{\f517\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}AngsanaUPC;} {\f518\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Browallia New;}{\f519\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}BrowalliaUPC;}{\f520\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0304020202020204}CordiaUPC;} {\f521\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}DilleniaUPC;}{\f522\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}EucrosiaUPC;}{\f523\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}FreesiaUPC;} {\f524\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}IrisUPC;}{\f525\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}JasmineUPC;}{\f526\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}KodchiangUPC;} {\f527\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}LilyUPC;}{\f528\fbidi \fscript\fcharset136\fprq1{\*\panose 03000509000000000000}DFKai-SB;}{\f529\fbidi \fscript\fcharset136\fprq1{\*\panose 03000509000000000000}@DFKai-SB;} {\f530\fbidi \fdecor\fcharset0\fprq2{\*\panose 04000508060000020003}Amienne;}{\f531\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Arnprior;}{\f532\fbidi \fnil\fcharset0\fprq2{\*\panose 02000700000000000000}Baveuse;} {\f533\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Berylium;}{\f534\fbidi \fnil\fcharset0\fprq2{\*\panose 02010603020202020303}Blue Highway;}{\f535\fbidi \fnil\fcharset0\fprq2{\*\panose 02010603020202020303}Blue Highway Condensed;} {\f536\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Blue Highway D Type;}{\f537\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Blue Highway Linocut;} {\f538\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Burnstown Dam;}{\f539\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Carbon Block;}{\f540\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Credit Valley;} {\f541\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Earwig Factory;}{\f542\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Hurry Up;}{\f543\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000020004}Heavy Heap;} {\f544\fbidi \fnil\fcharset0\fprq2{\*\panose 02000506000000020004}Kredit;}{\f545\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Minya Nouvelle;}{\f546\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0500000000000000}Neuropol;} {\f547\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000020004}Planet Benson 2;}{\f548\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Pupcat;}{\f549\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Stereofidelic;} {\f550\fbidi \fnil\fcharset0\fprq2{\*\panose 02000506030000020003}Sybil Green;}{\f551\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Teen;}{\f552\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Teen Light;} {\f553\fbidi \fnil\fcharset0\fprq2{\*\panose 02000506000000020004}Velvenda Cooler;}{\f554\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505030000020004}Biondi;}{\f555\fbidi \fnil\fcharset0\fprq2{\*\panose 02000506020000020003}Boopee;} {\f556\fbidi \fnil\fcharset0\fprq2{\*\panose 02000505080000020003}Byington;}{\f557\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000020004}Catriel;}{\f558\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Euphorigenic S;} {\f559\fbidi \fnil\fcharset0\fprq2{\*\panose 02000506000000020004}Huxtable;}{\f560\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503030000020003}Ligurino;}{\f561\fbidi \fnil\fcharset0\fprq2{\*\panose 02000506050000020003}Ligurino Condensed;} {\f562\fbidi \fscript\fcharset0\fprq2{\*\panose 03080602050302020201}Mufferaw;}{\f563\fbidi \fnil\fcharset0\fprq2{\*\panose 02000508030000020004}Tandelle;}{\f564\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Waker;} {\f565\fbidi \fscript\fcharset0\fprq2{\*\panose 03000502030604030003}Bella Donna;}{\f566\fbidi \fnil\fcharset0\fprq2{\*\panose 02000506000000020003}CatholicSchoolGirls Intl BB;} {\f567\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Wickenden Cafe NDP;}{\f568\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0604020202020204}@Arial Unicode MS;} {\f569\fbidi \fnil\fcharset2\fprq2{\*\panose 05010101010101010101}SWGamekeys MT;}{\f570\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0606030504040204}Nina;}{\f571\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0606040200020203}Segoe Condensed;} {\f572\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603050302020204}koine ISA;}{\f573\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}ZWAdobeF;}{\f574\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603020201020101}Euro Sign;} {\f575\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Latin1+E9xx SILDoulos;}{\f576\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SimpleGraphiteFont;}{\f577\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}PigLatinDemo;} {\f578\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000020003}Conakry;}{\f579\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade Graphite Alpha;}{\f580\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Lanna Alif;} {\f581\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500000000000000}Adinatha Tamil Brahmi;}{\f582\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Cadet BD auto;}{\f583\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500000000000000}Krishna Tamil;} {\f584\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503060000020004}Gentium Plus Compact;}{\f585\fbidi \fmodern\fcharset0\fprq2{\*\panose 00000000000000000000}Grad;}{\f586\fbidi \fmodern\fcharset0\fprq2{\*\panose 00000000000000000000}SWMacro;} {\f587\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Minion Pro;}{\f588\fbidi \fmodern\fcharset0\fprq2{\*\panose 00000000000000000000}Bamum Symbols 1;} {\f589\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro Bold;}{\f590\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro;} {\f591\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Fangsong Std R;}{\f592\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Fangsong Std R;} {\f593\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Fan Heiti Std B;}{\f594\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Fan Heiti Std B;} {\f595\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Gothic Std B;}{\f596\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Gothic Std B;} {\f597\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Heiti Std R;}{\f598\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Heiti Std R;} {\f599\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Kaiti Std R;}{\f600\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Kaiti Std R;} {\f601\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro Bold;}{\f602\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro;} {\f603\fbidi \fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Birch Std;}{\f604\fbidi \fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Blackoak Std;}{\f605\fbidi \fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Brush Script Std;} {\f606\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Chaparral Pro;}{\f607\fbidi \fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Charlemagne Std;}{\f608\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cooper Std Black;} {\f609\fbidi \fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Giddyup Std;}{\f610\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Hobo Std;}{\f611\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N B;} {\f612\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N B;}{\f613\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N EL;} {\f614\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N EL;}{\f615\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N H;} {\f616\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N H;}{\f617\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N L;} {\f618\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N L;}{\f619\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N M;} {\f620\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N M;}{\f621\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N R;} {\f622\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N R;}{\f623\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N B;} {\f624\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N B;}{\f625\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N EL;} {\f626\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N EL;}{\f627\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N H;} {\f628\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N H;}{\f629\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N L;} {\f630\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N L;}{\f631\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N M;} {\f632\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N M;}{\f633\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N R;} {\f634\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N R;}{\f635\fbidi \fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Lithos Pro Regular;} {\f636\fbidi \fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Mesquite Std;}{\f637\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Minion Pro Cond;}{\f638\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Minion Pro Med;} {\f639\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Minion Pro SmBd;}{\f640\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Nueva Std Cond;}{\f641\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR A Std;} {\f642\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Orator Std;}{\f643\fbidi \fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Poplar Std;}{\f644\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Prestige Elite Std;} {\f645\fbidi \fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Rosewood Std Regular;}{\f646\fbidi \fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Stencil Std;}{\f647\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Tekton Pro;} {\f648\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Tekton Pro Cond;}{\f649\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Tekton Pro Ext;}{\f650\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Trajan Pro;} {\f651\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Arabic;}{\f652\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Hebrew;}{\f653\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Ming Std L;} {\f654\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Ming Std L;}{\f655\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Myungjo Std M;} {\f656\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Myungjo Std M;}{\f657\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Adobe Song Std L;} {\f658\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Adobe Song Std L;}{\f659\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro B;} {\f660\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro B;}{\f661\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro EL;} {\f662\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro EL;}{\f663\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro H;} {\f664\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro H;}{\f665\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro L;} {\f666\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro L;}{\f667\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro M;} {\f668\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro M;}{\f669\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro R;} {\f670\fbidi \fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro R;}{\f671\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro B;} {\f672\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro B;}{\f673\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro EL;} {\f674\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro EL;}{\f675\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro H;} {\f676\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro H;}{\f677\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro L;} {\f678\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro L;}{\f679\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro M;} {\f680\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro M;}{\f681\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro R;} {\f682\fbidi \froman\fcharset128\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro R;}{\f683\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Letter Gothic Std;} {\f684\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Myriad Pro;}{\f685\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Myriad Pro Cond;}{\f686\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Myriad Pro Light;} {\f687\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Andika Basic;}{\f688\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Andika DesRev A;}{\f689\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Andika DesRev B;} {\f690\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arabic Transparent;}{\f691\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Bajera;}{\f692\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0500020104020203}Andale Mono WT J;} {\f693\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0500020104020203}@Andale Mono WT J;}{\f694\fbidi \fscript\fcharset0\fprq2{\*\panose 03020802030008000000}Bradley Gratis;} {\f695\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}CDAC-GISTSurekh;}{\f696\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500060000020004}Charis SIL Test;}{\f697\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500060000020004}CharisInDesign;} {\f698\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Cipher SILManuscript;}{\f699\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Conakry Test;} {\f700\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Cam Cam SILSophiaL Reprise;}{\f701\fbidi \fswiss\fcharset177\fprq2{\*\panose 020e0502060401010101}David Transparent;} {\f702\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600020000020004}Deemawso Unicode;}{\f703\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000000}Dingbats;}{\f704\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500070000020004}Doulos SIL LTR;} {\f705\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500070000020004}Doulos SIL RTL;}{\f706\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Doulos Justification Test;} {\f707\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500070000020004}Doulos SIL SmallCaps;}{\f708\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Dream Orphans;}{\f709\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}GrErr BadVersion;} {\f710\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Test Test SILSophia Reprise;}{\f711\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}FwGraphiteTest Arabic;} {\f712\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600020000020004}FwGraphiteTest Burmese;}{\f713\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500060000020004}FwGraphiteTest Roman;} {\f714\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600020000020004}Galatia SIL;}{\f715\fbidi \fnil\fcharset177\fprq2{\*\panose 00000300000000000000}Guttman David;}{\f716\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503060000020004}Gentium;} {\f717\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Graphite Test Arabic;}{\f718\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600020000020004}Graphite Test Burmese;} {\f719\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500070000020004}Graphite Test Roman;}{\f720\fbidi \fnil\fcharset0\fprq2{\*\panose 02000606070000020003}Graphite Test TaiViet;} {\f721\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603050302020204}Hebrew ISA;}{\f722\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Kankan;}{\f723\fbidi \fnil\fcharset0\fprq2{\*\panose 02010a04020202080504}Kimberley;} {\f724\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Koli Nko Manden;}{\f725\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Michaelmas;}{\f726\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}.Mondulkiri U GR 1.5;} {\f727\fbidi \fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Fixed Miriam Transparent;}{\f728\fbidi \fswiss\fcharset177\fprq2{\*\panose 020b0502050101010101}Miriam Transparent;} {\f729\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Musique Unicode;}{\f730\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}NeoAssyrianRAI;}{\f731\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Padaloma;} {\f732\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Padaloma Italic;}{\f733\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SILDoulos PigLatinDemo;}{\f734\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}JanaHindi;} {\f735\fbidi \fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Rod Transparent;}{\f736\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Sahu SILCharis;}{\f737\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0504020207020204}Saysettha OT;} {\f738\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade Gr Experimental;}{\f739\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade NP hacked exp;} {\f740\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade NP hacked;}{\f741\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}Scheherazade-AAT;}{\f742\fbidi \fnil\fcharset0\fprq2{\*\panose 01000600020000020003}SenAbsSr_gr;} {\f743\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SF Arborcrest Heavy;}{\f744\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SF Arborcrest Light;} {\f745\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SF Arborcrest Medium;}{\f746\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SF Theramin Gothic;} {\f747\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SF Theramin Gothic Condensed;}{\f748\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SF Theramin Gothic Shaded;} {\f749\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}SIL Galatia;}{\f750\fbidi \fnil\fcharset2\fprq2{\*\panose 00000400000000000000}SIL Vai;}{\f751\fbidi \fnil\fcharset128\fprq2{\*\panose 00000400000000000000}SIL Yi;} {\f752\fbidi \fnil\fcharset128\fprq2{\*\panose 00000400000000000000}@SIL Yi;}{\f753\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Std SILDoulos;}{\f754\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tab Leader Demo;} {\f755\fbidi \fnil\fcharset0\fprq2{\*\panose 02000606070000020003}Tai Heritage;}{\f756\fbidi \fnil\fcharset0\fprq2{\*\panose 02000606070000020003}Tai Heritage Design Review;} {\f757\fbidi \fnil\fcharset0\fprq2{\*\panose 02000606070000020003}Tai Heritage Graphite;}{\f758\fbidi \fnil\fcharset128\fprq2{\*\panose 02000600000000000000}Code2000 Tamil Graphite;} {\f759\fbidi \fnil\fcharset128\fprq2{\*\panose 02000600000000000000}@Code2000 Tamil Graphite;}{\f760\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Test Test SILSophia;} {\f761\fbidi \fnil\fcharset0\fprq2{\*\panose 05000000000000000000}TAM ThiruValluvar;}{\f762\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Shifinagh Niger Graphite;} {\f763\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603030804020204}Bitstream Vera Sans;}{\f764\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609030804020204}Bitstream Vera Sans Mono;} {\f765\fbidi \froman\fcharset0\fprq2{\*\panose 02060603050605020204}Bitstream Vera Serif;}{\f766\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Shifinagh Niger SIL Test;} {\f767\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Graphite Test CrossLine;}{\f768\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Annapurna SIL Design Review A;} {\f769\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600020000020004}Graphite Test Burmese Two;}{\f770\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Aboriginal Sans;}{\f771\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Ezra SIL SR;} {\f772\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Namdhinggo SIL L;}{\f773\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}ZZXiboTestGr;}{\f774\fbidi \fnil\fcharset0\fprq2{\*\panose 01000000000000000000}Annapurna SIL Beta 1;} {\f775\fbidi \fnil\fcharset128\fprq2{\*\panose 02000000000000000000}Nuosu SIL;}{\f776\fbidi \fnil\fcharset128\fprq2{\*\panose 02000000000000000000}@Nuosu SIL;}{\f777\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Dai Banna SIL Light;} {\f778\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Dai Banna SIL Book;}{\f779\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}New Surma;} {\f780\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600020000020004}Graphite Test Burmese Three;}{\f781\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500060000020004}Graphite Test Charis PConstr;} {\f782\fbidi \fnil\fcharset0\fprq2{\*\panose 01000000000000000000}Graphite Test Devanagari;}{\f783\fbidi \fnil\fcharset0\fprq2{\*\panose 01000000000000000000}Annapurna SIL RC1;} {\f784\fbidi \fnil\fcharset0\fprq2{\*\panose 01000000000000000000}Annapurna SIL RC2;}{\f785\fbidi \fnil\fcharset0\fprq2{\*\panose 02000600000000000000}Code2001;}{\f786\fbidi \fnil\fcharset129\fprq2{\*\panose 02000503000000020004}MPH 2B Damase;} {\f787\fbidi \fnil\fcharset129\fprq2{\*\panose 02000503000000020004}@MPH 2B Damase;}{\f788\fbidi \fnil\fcharset136\fprq2{\*\panose 02000500000000000000}HanWangLiSuMedium;} {\f789\fbidi \fnil\fcharset136\fprq2{\*\panose 02000500000000000000}@HanWangLiSuMedium;}{\f790\fbidi \fnil\fcharset0\fprq2{\*\panose 02000603000000000000}Tagbanwa;}{\f791\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}ol_ciki_classic;} {\f792\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}ol ciki raj;}{\f793\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}Hanacaraka;}{\f794\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}adjisaka;} {\f795\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Eeyek Unicode;}{\f796\fbidi \froman\fcharset0\fprq2{\*\panose 02070102010707070707}Aegean;}{\f797\fbidi \froman\fcharset0\fprq2{\*\panose 02060102010707070707}Musica;} {\f798\fbidi \froman\fcharset0\fprq2{\*\panose 02020102010707070707}Symbola;}{\f799\fbidi \froman\fcharset129\fprq2{\*\panose 02020603050405020303}Quivira;}{\f800\fbidi \froman\fcharset128\fprq2{\*\panose 02020603050405020303}@Quivira;} {\f801\fbidi \fnil\fcharset177\fprq2{\*\panose 02000603000000000000}Hebrew Samaritan;}{\f802\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SILDoulos Kern Temp Test;} {\f803\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}SILDoulosUnicodeIPA;}{\f804\fbidi \fnil\fcharset0\fprq2{\*\panose 01010100010101010101}KaputaUnicode;}{\f805\fbidi \fnil\fcharset0\fprq2{\*\panose 00000400000000000000}RTL Demo;} {\f806\fbidi \fnil\fcharset0\fprq2{\*\panose 02000000000000000000}Andika;}{\f807\fbidi \fnil\fcharset0\fprq2{\*\panose 02000500070000020004}Doulos SIL Cipher;}{\f808\fbidi \fnil\fcharset0\fprq2{\*\panose 02000400000000000000}Ezra SIL;} {\f809\fbidi \fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite (Hebrew;}{\f810\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite (Arabic;} {\f811\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite (Vietna;}{\f812\fbidi \fnil\fcharset177\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite (Hebre;} {\f813\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite (Arabi;}{\f814\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite (Vietn;} {\f815\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Minion Pro CE;}{\f816\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Minion Pro Cyr;} {\f817\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Minion Pro Greek;}{\f818\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Minion Pro Tur;} {\f819\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Minion Pro Baltic;}{\f820\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro Bold CE;} {\f821\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro Bold Tur;}{\f822\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro Bold Baltic;} {\f823\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro CE;}{\f824\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro Tur;} {\f825\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Adobe Caslon Pro Baltic;}{\f826\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Fangsong Std R Western;} {\f827\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Fangsong Std R CE;}{\f828\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Fangsong Std R Cyr;} {\f829\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Fangsong Std R Western;}{\f830\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Adobe Fangsong Std R CE;} {\f831\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Fangsong Std R Cyr;}{\f832\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Fan Heiti Std B Western;} {\f833\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Fan Heiti Std B Cyr;}{\f834\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Fan Heiti Std B Western;} {\f835\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Fan Heiti Std B Cyr;}{\f836\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Gothic Std B Western;} {\f837\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Gothic Std B Cyr;}{\f838\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Gothic Std B Western;} {\f839\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Gothic Std B Cyr;}{\f840\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Heiti Std R Western;} {\f841\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Heiti Std R CE;}{\f842\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Heiti Std R Cyr;} {\f843\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Heiti Std R Western;}{\f844\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Adobe Heiti Std R CE;} {\f845\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Heiti Std R Cyr;}{\f846\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Kaiti Std R Western;} {\f847\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Kaiti Std R CE;}{\f848\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Kaiti Std R Cyr;} {\f849\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Kaiti Std R Western;}{\f850\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Adobe Kaiti Std R CE;} {\f851\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Kaiti Std R Cyr;}{\f852\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro Bold CE;} {\f853\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro Bold Tur;}{\f854\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro Bold Baltic;} {\f855\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro CE;}{\f856\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro Tur;} {\f857\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Adobe Garamond Pro Baltic;}{\f858\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Chaparral Pro CE;} {\f859\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Chaparral Pro Tur;}{\f860\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Chaparral Pro Baltic;} {\f861\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N B Western;}{\f862\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N B CE;} {\f863\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N B Cyr;}{\f864\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N B Greek;} {\f865\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N B Tur;}{\f866\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N B Baltic;} {\f867\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N B Western;}{\f868\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N B CE;} {\f869\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N B Cyr;}{\f870\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N B Greek;} {\f871\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N B Tur;}{\f872\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N B Baltic;} {\f873\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N EL Western;}{\f874\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N EL CE;} {\f875\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N EL Cyr;}{\f876\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N EL Greek;} {\f877\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N EL Tur;}{\f878\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N EL Baltic;} {\f879\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N EL Western;}{\f880\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N EL CE;} {\f881\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N EL Cyr;}{\f882\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N EL Greek;} {\f883\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N EL Tur;}{\f884\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N EL Baltic;} {\f885\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N H Western;}{\f886\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N H CE;} {\f887\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N H Cyr;}{\f888\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N H Greek;} {\f889\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N H Tur;}{\f890\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N H Baltic;} {\f891\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N H Western;}{\f892\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N H CE;} {\f893\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N H Cyr;}{\f894\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N H Greek;} {\f895\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N H Tur;}{\f896\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N H Baltic;} {\f897\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N L Western;}{\f898\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N L CE;} {\f899\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N L Cyr;}{\f900\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N L Greek;} {\f901\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N L Tur;}{\f902\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N L Baltic;} {\f903\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N L Western;}{\f904\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N L CE;} {\f905\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N L Cyr;}{\f906\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N L Greek;} {\f907\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N L Tur;}{\f908\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N L Baltic;} {\f909\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N M Western;}{\f910\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N M CE;} {\f911\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N M Cyr;}{\f912\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N M Greek;} {\f913\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N M Tur;}{\f914\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N M Baltic;} {\f915\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N M Western;}{\f916\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N M CE;} {\f917\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N M Cyr;}{\f918\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N M Greek;} {\f919\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N M Tur;}{\f920\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N M Baltic;} {\f921\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N R Western;}{\f922\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N R CE;} {\f923\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N R Cyr;}{\f924\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N R Greek;} {\f925\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N R Tur;}{\f926\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pr6N R Baltic;} {\f927\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N R Western;}{\f928\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N R CE;} {\f929\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N R Cyr;}{\f930\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N R Greek;} {\f931\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N R Tur;}{\f932\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pr6N R Baltic;} {\f933\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N B Western;}{\f934\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N B CE;} {\f935\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N B Cyr;}{\f936\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N B Greek;} {\f937\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N B Tur;}{\f938\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N B Baltic;} {\f939\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N B Western;}{\f940\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N B CE;} {\f941\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N B Cyr;}{\f942\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N B Greek;} {\f943\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N B Tur;}{\f944\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N B Baltic;} {\f945\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N EL Western;}{\f946\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N EL CE;} {\f947\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N EL Cyr;}{\f948\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N EL Greek;} {\f949\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N EL Tur;}{\f950\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N EL Baltic;} {\f951\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N EL Western;}{\f952\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N EL CE;} {\f953\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N EL Cyr;}{\f954\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N EL Greek;} {\f955\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N EL Tur;}{\f956\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N EL Baltic;} {\f957\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N H Western;}{\f958\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N H CE;} {\f959\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N H Cyr;}{\f960\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N H Greek;} {\f961\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N H Tur;}{\f962\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N H Baltic;} {\f963\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N H Western;}{\f964\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N H CE;} {\f965\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N H Cyr;}{\f966\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N H Greek;} {\f967\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N H Tur;}{\f968\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N H Baltic;} {\f969\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N L Western;}{\f970\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N L CE;} {\f971\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N L Cyr;}{\f972\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N L Greek;} {\f973\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N L Tur;}{\f974\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N L Baltic;} {\f975\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N L Western;}{\f976\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N L CE;} {\f977\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N L Cyr;}{\f978\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N L Greek;} {\f979\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N L Tur;}{\f980\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N L Baltic;} {\f981\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N M Western;}{\f982\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N M CE;} {\f983\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N M Cyr;}{\f984\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N M Greek;} {\f985\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N M Tur;}{\f986\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N M Baltic;} {\f987\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N M Western;}{\f988\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N M CE;} {\f989\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N M Cyr;}{\f990\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N M Greek;} {\f991\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N M Tur;}{\f992\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N M Baltic;} {\f993\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N R Western;}{\f994\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N R CE;} {\f995\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N R Cyr;}{\f996\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N R Greek;} {\f997\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N R Tur;}{\f998\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pr6N R Baltic;} {\f999\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N R Western;}{\f1000\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N R CE;} {\f1001\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N R Cyr;}{\f1002\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N R Greek;} {\f1003\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N R Tur;}{\f1004\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pr6N R Baltic;} {\f1005\fbidi \fdecor\fcharset238\fprq2{\*\panose 00000000000000000000}Lithos Pro Regular CE;}{\f1006\fbidi \fdecor\fcharset161\fprq2{\*\panose 00000000000000000000}Lithos Pro Regular Greek;} {\f1007\fbidi \fdecor\fcharset162\fprq2{\*\panose 00000000000000000000}Lithos Pro Regular Tur;}{\f1008\fbidi \fdecor\fcharset186\fprq2{\*\panose 00000000000000000000}Lithos Pro Regular Baltic;} {\f1009\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Minion Pro Cond CE;}{\f1010\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Minion Pro Cond Cyr;} {\f1011\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Minion Pro Cond Greek;}{\f1012\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Minion Pro Cond Tur;} {\f1013\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Minion Pro Cond Baltic;}{\f1014\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Minion Pro Med CE;} {\f1015\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Minion Pro Med Cyr;}{\f1016\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Minion Pro Med Greek;} {\f1017\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Minion Pro Med Tur;}{\f1018\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Minion Pro Med Baltic;} {\f1019\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Minion Pro SmBd CE;}{\f1020\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Minion Pro SmBd Cyr;} {\f1021\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Minion Pro SmBd Greek;}{\f1022\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Minion Pro SmBd Tur;} {\f1023\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Minion Pro SmBd Baltic;}{\f1024\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Tekton Pro CE;} {\f1025\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Tekton Pro Tur;}{\f1026\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Tekton Pro Baltic;} {\f1027\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Tekton Pro Cond CE;}{\f1028\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Tekton Pro Cond Tur;} {\f1029\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Tekton Pro Cond Baltic;}{\f1030\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Tekton Pro Ext CE;} {\f1031\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Tekton Pro Ext Tur;}{\f1032\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Tekton Pro Ext Baltic;} {\f1033\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Trajan Pro CE;}{\f1034\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Trajan Pro Tur;} {\f1035\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Trajan Pro Baltic;}{\f1036\fbidi \froman\fcharset178\fprq2{\*\panose 00000000000000000000}Adobe Arabic (Arabic);} {\f1037\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Adobe Hebrew (Hebrew);}{\f1038\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Ming Std L Western;} {\f1039\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Ming Std L Cyr;}{\f1040\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Ming Std L Western;} {\f1041\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Ming Std L Cyr;}{\f1042\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Myungjo Std M Western;} {\f1043\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Myungjo Std M Cyr;}{\f1044\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Myungjo Std M Western;} {\f1045\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Myungjo Std M Cyr;}{\f1046\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Adobe Song Std L Western;} {\f1047\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Adobe Song Std L CE;}{\f1048\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Adobe Song Std L Cyr;} {\f1049\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Adobe Song Std L Western;}{\f1050\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Adobe Song Std L CE;} {\f1051\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Adobe Song Std L Cyr;}{\f1052\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro B Western;} {\f1053\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro B Cyr;}{\f1054\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro B Western;} {\f1055\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro B Cyr;}{\f1056\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro EL Western;} {\f1057\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro EL Cyr;}{\f1058\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro EL Western;} {\f1059\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro EL Cyr;}{\f1060\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro H Western;} {\f1061\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro H Cyr;}{\f1062\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro H Western;} {\f1063\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro H Cyr;}{\f1064\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro L Western;} {\f1065\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro L Cyr;}{\f1066\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro L Western;} {\f1067\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro L Cyr;}{\f1068\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro M Western;} {\f1069\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro M Cyr;}{\f1070\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro M Western;} {\f1071\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro M Cyr;}{\f1072\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro R Western;} {\f1073\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Gothic Pro R Cyr;}{\f1074\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro R Western;} {\f1075\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Gothic Pro R Cyr;}{\f1076\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro B Western;} {\f1077\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro B Cyr;}{\f1078\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro B Western;} {\f1079\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro B Cyr;}{\f1080\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro EL Western;} {\f1081\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro EL Cyr;}{\f1082\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro EL Western;} {\f1083\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro EL Cyr;}{\f1084\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro H Western;} {\f1085\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro H Cyr;}{\f1086\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro H Western;} {\f1087\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro H Cyr;}{\f1088\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro L Western;} {\f1089\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro L Cyr;}{\f1090\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro L Western;} {\f1091\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro L Cyr;}{\f1092\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro M Western;} {\f1093\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro M Cyr;}{\f1094\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro M Western;} {\f1095\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro M Cyr;}{\f1096\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro R Western;} {\f1097\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Kozuka Mincho Pro R Cyr;}{\f1098\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro R Western;} {\f1099\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Kozuka Mincho Pro R Cyr;}{\f1100\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Andale Mono WT J Western;} {\f1101\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Andale Mono WT J CE;}{\f1102\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Andale Mono WT J Cyr;} {\f1103\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Andale Mono WT J Greek;}{\f1104\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Andale Mono WT J Tur;} {\f1105\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Andale Mono WT J (Hebrew);}{\f1106\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Andale Mono WT J (Arabic);} {\f1107\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Andale Mono WT J Baltic;}{\f1108\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Andale Mono WT J (Vietnamese);} {\f1109\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Andale Mono WT J (Thai);}{\f1110\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J Western;} {\f1111\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J CE;}{\f1112\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J Cyr;} {\f1113\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J Greek;}{\f1114\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J Tur;} {\f1115\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J (Hebrew);}{\f1116\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J (Arabic);} {\f1117\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J Baltic;}{\f1118\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J (Vietnamese);} {\f1119\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}@Andale Mono WT J (Thai);}{\f1120\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Charis SIL Test CE;} {\f1121\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Charis SIL Test Cyr;}{\f1122\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Charis SIL Test Tur;} {\f1123\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Charis SIL Test Baltic;}{\f1124\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Charis SIL Test (Vietnamese);} {\f1125\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}CharisInDesign CE;}{\f1126\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}CharisInDesign Cyr;} {\f1127\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}CharisInDesign Tur;}{\f1128\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}CharisInDesign Baltic;} {\f1129\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}CharisInDesign (Vietnamese);}{\f1130\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Cam Cam SILSophiaL Reprise CE;} {\f1131\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Cam Cam SILSophiaL Reprise Tur;}{\f1132\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Doulos SIL LTR CE;} {\f1133\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Doulos SIL LTR Cyr;}{\f1134\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Doulos SIL LTR Tur;} {\f1135\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Doulos SIL LTR Baltic;}{\f1136\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Doulos SIL LTR (Vietnamese);} {\f1137\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Doulos SIL RTL CE;}{\f1138\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Doulos SIL RTL Cyr;} {\f1139\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Doulos SIL RTL Tur;}{\f1140\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Doulos SIL RTL Baltic;} {\f1141\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Doulos SIL RTL (Vietnamese);}{\f1142\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Doulos SIL SmallCaps CE;} {\f1143\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Doulos SIL SmallCaps Cyr;}{\f1144\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Doulos SIL SmallCaps Tur;} {\f1145\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Doulos SIL SmallCaps Baltic;}{\f1146\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Test Test SILSophia Reprise Tur;} {\f1147\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}FwGraphiteTest Arabic (Arabic);}{\f1148\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}FwGraphiteTest Roman CE;} {\f1149\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}FwGraphiteTest Roman Cyr;}{\f1150\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}FwGraphiteTest Roman Tur;} {\f1151\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}FwGraphiteTest Roman Baltic;}{\f1152\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Gentium CE;} {\f1153\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Gentium Greek;}{\f1154\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Gentium Tur;} {\f1155\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Graphite Test Arabic (Arabic);}{\f1156\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Graphite Test Roman CE;} {\f1157\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Graphite Test Roman Cyr;}{\f1158\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Graphite Test Roman Tur;} {\f1159\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Graphite Test Roman Baltic;}{\f1160\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Saysettha OT (Thai);} {\f1161\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Scheherazade NP hacked (Arabic);}{\f1162\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Scheherazade-AAT (Arabic);} {\f1163\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}SenAbsSr_gr (Arabic);}{\f1164\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}SIL Yi Western;}{\f1165\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}SIL Yi CE;} {\f1166\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}@SIL Yi Western;}{\f1167\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}@SIL Yi CE;} {\f1168\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Tab Leader Demo CE;}{\f1169\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Tab Leader Demo Cyr;} {\f1170\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Tab Leader Demo Greek;}{\f1171\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Tab Leader Demo Tur;} {\f1172\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Tab Leader Demo Baltic;}{\f1173\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Tab Leader Demo (Vietnamese);} {\f1174\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite Western;}{\f1175\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite CE;} {\f1176\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite Cyr;}{\f1177\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite Greek;} {\f1178\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite Tur;}{\f1179\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite Baltic;} {\f1180\fbidi \fnil\fcharset222\fprq2{\*\panose 00000000000000000000}Code2000 Tamil Graphite (Thai);}{\f1181\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite Wester;} {\f1182\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite CE;}{\f1183\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite Cyr;} {\f1184\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite Greek;}{\f1185\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite Tur;} {\f1186\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite Baltic;}{\f1187\fbidi \fnil\fcharset222\fprq2{\*\panose 00000000000000000000}@Code2000 Tamil Graphite (Thai);} {\f1188\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Shifinagh Niger Graphite Tur;}{\f1189\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Shifinagh Niger SIL Test Tur;} {\f1190\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Aboriginal Sans CE;}{\f1191\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Aboriginal Sans Greek;} {\f1192\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Aboriginal Sans Tur;}{\f1193\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Aboriginal Sans Baltic;} {\f1194\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Aboriginal Sans (Vietnamese);}{\f1195\fbidi \fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Ezra SIL SR (Hebrew);} {\f1196\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Nuosu SIL Western;}{\f1197\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Nuosu SIL CE;} {\f1198\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}@Nuosu SIL Western;}{\f1199\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}@Nuosu SIL CE;} {\f1200\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Graphite Test Charis PConstr CE;}{\f1201\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}MPH 2B Damase Western;} {\f1202\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}MPH 2B Damase CE;}{\f1203\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}MPH 2B Damase Cyr;} {\f1204\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}MPH 2B Damase Greek;}{\f1205\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}MPH 2B Damase Tur;} {\f1206\fbidi \fnil\fcharset177\fprq2{\*\panose 00000000000000000000}MPH 2B Damase (Hebrew);}{\f1207\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}MPH 2B Damase (Arabic);} {\f1208\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}MPH 2B Damase Baltic;}{\f1209\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}MPH 2B Damase (Vietnamese);} {\f1210\fbidi \fnil\fcharset222\fprq2{\*\panose 00000000000000000000}MPH 2B Damase (Thai);}{\f1211\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase Western;} {\f1212\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase CE;}{\f1213\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase Cyr;} {\f1214\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase Greek;}{\f1215\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase Tur;} {\f1216\fbidi \fnil\fcharset177\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase (Hebrew);}{\f1217\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase (Arabic);} {\f1218\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase Baltic;}{\f1219\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase (Vietnamese);} {\f1220\fbidi \fnil\fcharset222\fprq2{\*\panose 00000000000000000000}@MPH 2B Damase (Thai);}{\f1221\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}ol ciki raj CE;} {\f1222\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}ol ciki raj Cyr;}{\f1223\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}ol ciki raj Greek;} {\f1224\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}ol ciki raj Tur;}{\f1225\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Eeyek Unicode Greek;} {\f1226\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Aegean Greek;}{\f1227\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Musica Greek;}{\f1228\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Symbola Cyr;} {\f1229\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Symbola Greek;}{\f1230\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Quivira Western;}{\f1231\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Quivira CE;} {\f1232\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Quivira Cyr;}{\f1233\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Quivira Greek;}{\f1234\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Quivira Tur;} {\f1235\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Quivira (Hebrew);}{\f1236\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Quivira Baltic;} {\f1237\fbidi \froman\fcharset163\fprq2{\*\panose 00000000000000000000}Quivira (Vietnamese);}{\f1238\fbidi \froman\fcharset222\fprq2{\*\panose 00000000000000000000}Quivira (Thai);} {\f1239\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Quivira Western;}{\f1240\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Quivira CE;} {\f1241\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Quivira Cyr;}{\f1242\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Quivira Greek;} {\f1243\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Quivira Tur;}{\f1244\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}@Quivira (Hebrew);} {\f1245\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Quivira Baltic;}{\f1246\fbidi \froman\fcharset163\fprq2{\*\panose 00000000000000000000}@Quivira (Vietnamese);} {\f1247\fbidi \froman\fcharset222\fprq2{\*\panose 00000000000000000000}@Quivira (Thai);}{\f1248\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Andika CE;}{\f1249\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Andika Cyr;} {\f1250\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Andika Tur;}{\f1251\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Andika Baltic;}{\f1252\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Andika (Vietnamese);} {\f1253\fbidi \fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Ezra SIL (Hebrew);}{\f1254\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}MS Mincho Western{\*\falt ?l?r ??\'81fc};} {\f1255\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}MS Mincho CE{\*\falt ?l?r ??\'81fc};}{\f1256\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}MS Mincho Cyr{\*\falt ?l?r ??\'81fc};} {\f1257\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}MS Mincho Greek{\*\falt ?l?r ??\'81fc};}{\f1258\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}MS Mincho Tur{\*\falt ?l?r ??\'81fc};} {\f1259\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}MS Mincho Baltic{\*\falt ?l?r ??\'81fc};} {\f1260\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Batang Western{\*\falt \'a1\'cb\'a2\'e7E\'a2\'aeEc\'a2\'aeE\'a1\'cbc\'a1\'cb\'a2\'e7\'a1\'cb?IoUAA};} {\f1261\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Batang CE{\*\falt !\'cbc\'e7Ec\'aeEcc\'aeE!\'cbc!\'cbc\'e7!\'cb?IoUAA};} {\f1262\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Batang Cyr{\*\falt ?E?cE?\'aeEc?\'aeE?Ec?E?c?E?IoUAA};}{\f1263\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Batang Greek{\*\falt ?E?cE?\'aeEc?\'aeE?Ec?E?c?E?IoUAA};} {\f1264\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Batang Tur{\*\falt \'a1\'cb\'a2\'e7E\'a2\'aeEc\'a2\'aeE\'a1\'cbc\'a1\'cb\'a2\'e7\'a1\'cb?IoUAA};} {\f1265\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Batang Baltic{\*\falt ??\'a2?E\'a2\'aeEc\'a2\'aeE??c??\'a2????IoUAA};}{\f1266\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}PMingLiU Western{\*\falt !Ps2OcuAe};} {\f1267\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Dotum Western{\*\falt \'a2\'aeE\'a1\'cbcE\'a1\'cb\'a2\'e7EcIi\'a2\'aeE\'a1\'cbcE\'a1\'cb\'a2\'e7EcE\'a2\'ae};} {\f1268\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Dotum CE{\*\falt c\'aeE!\'cbcE!\'cbc\'e7EcIic\'aeE!\'cbcE!\'cbc\'e7EcEc\'ae};} {\f1269\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Dotum Cyr{\*\falt ?\'aeE?EcE?E?cEcIi?\'aeE?EcE?E?cEcE?\'ae};} {\f1270\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Dotum Greek{\*\falt ?\'aeE?EcE?E?cEcIi?\'aeE?EcE?E?cEcE?\'ae};} {\f1271\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Dotum Tur{\*\falt \'a2\'aeE\'a1\'cbcE\'a1\'cb\'a2\'e7EcIi\'a2\'aeE\'a1\'cbcE\'a1\'cb\'a2\'e7EcE\'a2\'ae};} {\f1272\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Dotum Baltic{\*\falt \'a2\'aeE??cE??\'a2?EcIi\'a2\'aeE??cE??\'a2?EcE\'a2\'ae};} {\f1273\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}SimHei Western{\*\falt o????\'a8\'ac?2????\'a8\'ac???};}{\f1274\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}MingLiU Western{\*\falt 2OcuAe};} {\f1275\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Gulim Western{\*\falt \'a1\'cb\'a2\'e7E\'a2\'aeEcE\'a2\'aeE\'a1\'cbcEc\'a1\'cb\'a2\'e7E\'a2\'aeEc\'a2\'aeE\'a1};} {\f1276\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Gulim CE{\*\falt !\'cbc\'e7Ec\'aeEcEc\'aeE!\'cbcEc!\'cbc\'e7Ec\'aeEcc\'aeE!};} {\f1277\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Gulim Cyr{\*\falt ?E?cE?\'aeEcE?\'aeE?EcEc?E?cE?\'aeEc?\'aeE?};} {\f1278\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Gulim Greek{\*\falt ?E?cE?\'aeEcE?\'aeE?EcEc?E?cE?\'aeEc?\'aeE?};} {\f1279\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Gulim Tur{\*\falt \'a1\'cb\'a2\'e7E\'a2\'aeEcE\'a2\'aeE\'a1\'cbcEc\'a1\'cb\'a2\'e7E\'a2\'aeEc\'a2\'aeE\'a1};} {\f1280\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Gulim Baltic{\*\falt ??\'a2?E\'a2\'aeEcE\'a2\'aeE??cEc??\'a2?E\'a2\'aeEc\'a2\'aeE?};}{\f1281\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial Unicode MS CE;} {\f1282\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Cyr;}{\f1283\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Greek;} {\f1284\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Tur;}{\f1285\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Hebrew);} {\f1286\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Arabic);}{\f1287\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Baltic;} {\f1288\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Vietnamese);}{\f1289\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Thai);} {\f1290\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Batang Western;}{\f1291\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Batang CE;}{\f1292\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Batang Cyr;} {\f1293\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Batang Greek;}{\f1294\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Batang Tur;} {\f1295\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Batang Baltic;}{\f1296\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}BatangChe Western;} {\f1297\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}BatangChe CE;}{\f1298\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}BatangChe Cyr;} {\f1299\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}BatangChe Greek;}{\f1300\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}BatangChe Tur;} {\f1301\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}BatangChe Baltic;}{\f1302\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@BatangChe Western;} {\f1303\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}@BatangChe CE;}{\f1304\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}@BatangChe Cyr;} {\f1305\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}@BatangChe Greek;}{\f1306\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}@BatangChe Tur;} {\f1307\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}@BatangChe Baltic;}{\f1308\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Gungsuh Western;} {\f1309\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Gungsuh CE;}{\f1310\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Gungsuh Cyr;}{\f1311\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Gungsuh Greek;} {\f1312\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Gungsuh Tur;}{\f1313\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Gungsuh Baltic;} {\f1314\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@Gungsuh Western;}{\f1315\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@Gungsuh CE;} {\f1316\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@Gungsuh Cyr;}{\f1317\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@Gungsuh Greek;} {\f1318\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@Gungsuh Tur;}{\f1319\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@Gungsuh Baltic;} {\f1320\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}GungsuhChe Western;}{\f1321\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}GungsuhChe CE;} {\f1322\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}GungsuhChe Cyr;}{\f1323\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}GungsuhChe Greek;} {\f1324\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}GungsuhChe Tur;}{\f1325\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}GungsuhChe Baltic;} {\f1326\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@GungsuhChe Western;}{\f1327\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}@GungsuhChe CE;} {\f1328\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}@GungsuhChe Cyr;}{\f1329\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}@GungsuhChe Greek;} {\f1330\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}@GungsuhChe Tur;}{\f1331\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}@GungsuhChe Baltic;} {\f1332\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}DokChampa (Thai);}{\f1333\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Gulim Western;} {\f1334\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Gulim CE;}{\f1335\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Gulim Cyr;}{\f1336\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Gulim Greek;} {\f1337\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Gulim Tur;}{\f1338\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Gulim Baltic;} {\f1339\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}GulimChe Western;}{\f1340\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}GulimChe CE;} {\f1341\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}GulimChe Cyr;}{\f1342\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}GulimChe Greek;} {\f1343\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}GulimChe Tur;}{\f1344\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}GulimChe Baltic;} {\f1345\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@GulimChe Western;}{\f1346\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}@GulimChe CE;} {\f1347\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}@GulimChe Cyr;}{\f1348\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}@GulimChe Greek;} {\f1349\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}@GulimChe Tur;}{\f1350\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}@GulimChe Baltic;} {\f1351\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Dotum Western;}{\f1352\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Dotum CE;}{\f1353\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Dotum Cyr;} {\f1354\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Dotum Greek;}{\f1355\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Dotum Tur;}{\f1356\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Dotum Baltic;} {\f1357\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}DotumChe Western;}{\f1358\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}DotumChe CE;} {\f1359\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}DotumChe Cyr;}{\f1360\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}DotumChe Greek;} {\f1361\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}DotumChe Tur;}{\f1362\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}DotumChe Baltic;} {\f1363\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@DotumChe Western;}{\f1364\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}@DotumChe CE;} {\f1365\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}@DotumChe Cyr;}{\f1366\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}@DotumChe Greek;} {\f1367\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}@DotumChe Tur;}{\f1368\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}@DotumChe Baltic;} {\f1369\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Meiryo Western;}{\f1370\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Meiryo CE;}{\f1371\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Meiryo Cyr;} {\f1372\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Meiryo Greek;}{\f1373\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Meiryo Tur;}{\f1374\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Meiryo Baltic;} {\f1375\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Meiryo Western;}{\f1376\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Meiryo CE;}{\f1377\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Meiryo Cyr;} {\f1378\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Meiryo Greek;}{\f1379\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Meiryo Tur;} {\f1380\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Meiryo Baltic;}{\f1381\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Meiryo UI Western;} {\f1382\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Meiryo UI CE;}{\f1383\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Meiryo UI Cyr;} {\f1384\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Meiryo UI Greek;}{\f1385\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Meiryo UI Tur;} {\f1386\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Meiryo UI Baltic;}{\f1387\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Meiryo UI Western;} {\f1388\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Meiryo UI CE;}{\f1389\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Meiryo UI Cyr;} {\f1390\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Meiryo UI Greek;}{\f1391\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Meiryo UI Tur;} {\f1392\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Meiryo UI Baltic;}{\f1393\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@MingLiU Western;} {\f1394\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@PMingLiU Western;}{\f1395\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}MingLiU_HKSCS Western;} {\f1396\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@MingLiU_HKSCS Western;}{\f1397\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@MS Mincho Western;} {\f1398\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}@MS Mincho CE;}{\f1399\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}@MS Mincho Cyr;} {\f1400\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}@MS Mincho Greek;}{\f1401\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}@MS Mincho Tur;} {\f1402\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}@MS Mincho Baltic;}{\f1403\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}MS PMincho Western;} {\f1404\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}MS PMincho CE;}{\f1405\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}MS PMincho Cyr;} {\f1406\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}MS PMincho Greek;}{\f1407\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}MS PMincho Tur;} {\f1408\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}MS PMincho Baltic;}{\f1409\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}@MS PMincho Western;} {\f1410\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}@MS PMincho CE;}{\f1411\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}@MS PMincho Cyr;} {\f1412\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}@MS PMincho Greek;}{\f1413\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}@MS PMincho Tur;} {\f1414\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}@MS PMincho Baltic;}{\f1415\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Nyala CE;}{\f1416\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Nyala Tur;} {\f1417\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Nyala Baltic;}{\f1418\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Gisha (Hebrew);} {\f1419\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}FangSong Western;}{\f1420\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@FangSong Western;} {\f1421\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@SimHei Western;}{\f1422\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}KaiTi Western;} {\f1423\fbidi \fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}@KaiTi Western;}{\f1424\fbidi \froman\fcharset222\fprq2{\*\panose 00000000000000000000}AngsanaUPC (Thai);} {\f1425\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Browallia New (Thai);}{\f1426\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}BrowalliaUPC (Thai);} {\f1427\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}CordiaUPC (Thai);}{\f1428\fbidi \froman\fcharset222\fprq2{\*\panose 00000000000000000000}DilleniaUPC (Thai);} {\f1429\fbidi \froman\fcharset222\fprq2{\*\panose 00000000000000000000}EucrosiaUPC (Thai);}{\f1430\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}FreesiaUPC (Thai);} {\f1431\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}IrisUPC (Thai);}{\f1432\fbidi \froman\fcharset222\fprq2{\*\panose 00000000000000000000}JasmineUPC (Thai);} {\f1433\fbidi \froman\fcharset222\fprq2{\*\panose 00000000000000000000}KodchiangUPC (Thai);}{\f1434\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}LilyUPC (Thai);} {\f1435\fbidi \fscript\fcharset0\fprq1{\*\panose 00000000000000000000}DFKai-SB Western;}{\f1436\fbidi \fscript\fcharset0\fprq1{\*\panose 00000000000000000000}@DFKai-SB Western;} {\f1437\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Arnprior Tur;}{\f1438\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Baveuse CE;}{\f1439\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Baveuse Tur;} {\f1440\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Berylium CE;}{\f1441\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Berylium Tur;}{\f1442\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Berylium Baltic;} {\f1443\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Berylium (Vietnamese);}{\f1444\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Blue Highway CE;} {\f1445\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Blue Highway Tur;}{\f1446\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Blue Highway Baltic;} {\f1447\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Blue Highway (Vietnamese);}{\f1448\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Blue Highway Condensed CE;} {\f1449\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Blue Highway Condensed Tur;}{\f1450\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Blue Highway Condensed Baltic;} {\f1451\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Blue Highway Linocut CE;}{\f1452\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Blue Highway Linocut Tur;} {\f1453\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Blue Highway Linocut Baltic;}{\f1454\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Credit Valley CE;} {\f1455\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Credit Valley Tur;}{\f1456\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Credit Valley Baltic;} {\f1457\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Neuropol CE;}{\f1458\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Neuropol Tur;} {\f1459\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Neuropol (Vietnamese);}{\f1460\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Pupcat CE;}{\f1461\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Pupcat Tur;} {\f1462\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Pupcat Baltic;}{\f1463\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Stereofidelic Tur;} {\f1464\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Stereofidelic (Vietnamese);}{\f1465\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Teen CE;}{\f1466\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Teen Tur;} {\f1467\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Teen Baltic;}{\f1468\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Teen (Vietnamese);}{\f1469\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Teen Light CE;} {\f1470\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Teen Light Tur;}{\f1471\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Teen Light Baltic;} {\f1472\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Teen Light (Vietnamese);}{\f1473\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Velvenda Cooler CE;} {\f1474\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Velvenda Cooler Tur;}{\f1475\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Velvenda Cooler (Vietnamese);} {\f1476\fbidi \fscript\fcharset238\fprq2{\*\panose 00000000000000000000}Mufferaw CE;}{\f1477\fbidi \fscript\fcharset162\fprq2{\*\panose 00000000000000000000}Mufferaw Tur;} {\f1478\fbidi \fscript\fcharset163\fprq2{\*\panose 00000000000000000000}Mufferaw (Vietnamese);}{\f1479\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Tandelle CE;} {\f1480\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Tandelle Tur;}{\f1481\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Tandelle Baltic;} {\f1482\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}CatholicSchoolGirls Intl BB CE;}{\f1483\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Western;} {\f1484\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS CE;}{\f1485\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Cyr;} {\f1486\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Greek;}{\f1487\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Tur;} {\f1488\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Hebrew);}{\f1489\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Arabic);} {\f1490\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Baltic;}{\f1491\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Vietnamese);} {\f1492\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Thai);}{\f1493\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Lucida Bright CE;} {\f1494\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Lucida Bright Tur;}{\f1495\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Lucida Bright Baltic;} {\f1496\fbidi \fswiss\fcharset238\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter CE;}{\f1497\fbidi \fswiss\fcharset204\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter Cyr;} {\f1498\fbidi \fswiss\fcharset161\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter Greek;}{\f1499\fbidi \fswiss\fcharset162\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter Tur;} {\f1500\fbidi \fswiss\fcharset177\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter (Hebrew);}{\f1501\fbidi \fswiss\fcharset178\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter (Arabic);} {\f1502\fbidi \fswiss\fcharset186\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter Baltic;}{\f1503\fbidi \fswiss\fcharset222\fprq1{\*\panose 00000000000000000000}Lucida Sans Typewriter (Thai);} {\f1504\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Lucida Sans CE;}{\f1505\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Lucida Sans Cyr;} {\f1506\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Lucida Sans Greek;}{\f1507\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Lucida Sans Tur;} {\f1508\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Lucida Sans (Hebrew);}{\f1509\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Lucida Sans (Arabic);} {\f1510\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Lucida Sans Baltic;}{\f1511\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Lucida Sans (Thai);} {\f1512\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Nina CE;}{\f1513\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Nina Cyr;}{\f1514\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Nina Greek;} {\f1515\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Nina Tur;}{\f1516\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Nina Baltic;} {\f1517\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Segoe Condensed CE;}{\f1518\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Segoe Condensed Cyr;} {\f1519\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Segoe Condensed Greek;}{\f1520\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Segoe Condensed Tur;} {\f1521\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Segoe Condensed Baltic;}{\f1522\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}ZWAdobeF CE;} {\f1523\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}ZWAdobeF Cyr;}{\f1524\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}ZWAdobeF Greek;}{\f1525\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}ZWAdobeF Tur;} {\f1526\fbidi \fnil\fcharset177\fprq2{\*\panose 00000000000000000000}ZWAdobeF (Hebrew);}{\f1527\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}ZWAdobeF (Arabic);} {\f1528\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}ZWAdobeF Baltic;}{\f1529\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}ZWAdobeF (Vietnamese);} {\f1530\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Lanna Alif CE;}{\f1531\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Lanna Alif Cyr;} {\f1532\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Lanna Alif Greek;}{\f1533\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Lanna Alif Tur;} {\f1534\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Lanna Alif Baltic;}{\f1535\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Lanna Alif (Vietnamese);} {\f1536\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Adinatha Tamil Brahmi Tur;}{\f1537\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Krishna Tamil Tur;} {\f1538\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Krishna Tamil (Vietnamese);}{\f1539\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Gentium Plus Compact CE;} {\f1540\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Gentium Plus Compact Cyr;}{\f1541\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Gentium Plus Compact Greek;} {\f1542\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Gentium Plus Compact Tur;}{\f1543\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Gentium Plus Compact Baltic;} {\f1544\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Myriad Pro CE;}{\f1545\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Myriad Pro Cyr;} {\f1546\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Myriad Pro Greek;}{\f1547\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Myriad Pro Tur;} {\f1548\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Myriad Pro Baltic;}{\f1549\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Myriad Pro (Vietnamese);} {\f1550\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Myriad Pro Cond CE;}{\f1551\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Myriad Pro Cond Cyr;} {\f1552\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Myriad Pro Cond Greek;}{\f1553\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Myriad Pro Cond Tur;} {\f1554\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Myriad Pro Cond Baltic;}{\f1555\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Myriad Pro Cond (Vietnamese);} {\f1556\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Myriad Pro Light CE;}{\f1557\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Myriad Pro Light Cyr;} {\f1558\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Myriad Pro Light Greek;}{\f1559\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Myriad Pro Light Tur;} {\f1560\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Myriad Pro Light Baltic;}{\f1561\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Myriad Pro Light (Vietnamese);} {\f1562\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Doulos Justification Test CE;}{\f1563\fbidi \fnil\fcharset204\fprq2{\*\panose 00000000000000000000}Doulos Justification Test Cyr;} {\f1564\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Doulos Justification Test Tur;}{\f1565\fbidi \fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Galatia SIL Greek;} {\f1566\fbidi \fnil\fcharset0\fprq2{\*\panose 01000506020000020003}LateefGR;}{\f1567\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0500040200020003}TH SarabunPSK;}{\f1568\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000000000}Kavivanar;} {\f1569\fbidi \fnil\fcharset0\fprq2{\*\panose 02000503000000020004}Mehr Nastaliq Web;}{\f1570\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Leelawadee (Thai);} {\f1571\fbidi \fnil\fcharset0\fprq0{\*\panose 00000000000000000000}BookmanOldStyle,Italic;}{\f1572\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}LateefGR (Arabic);} {\f1573\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}TH SarabunPSK CE;}{\f1574\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}TH SarabunPSK Baltic;} {\f1575\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}TH SarabunPSK (Vietnamese);}{\f1576\fbidi \fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}TH SarabunPSK (Thai);} {\f1577\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Kavivanar CE;}{\f1578\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Kavivanar Tur;}{\f1579\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Kavivanar Baltic;} {\f1580\fbidi \fnil\fcharset238\fprq2{\*\panose 00000000000000000000}Andika Viet CE;}{\f1581\fbidi \fnil\fcharset162\fprq2{\*\panose 00000000000000000000}Andika Viet Tur;} {\f1582\fbidi \fnil\fcharset186\fprq2{\*\panose 00000000000000000000}Andika Viet Baltic;}{\f1583\fbidi \fnil\fcharset163\fprq2{\*\panose 00000000000000000000}Andika Viet (Vietnamese);} {\f1584\fbidi \fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Mehr Nastaliq Web (Arabic);}{\f1585\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Helvetica CE;} {\f1586\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Helvetica Cyr;}{\f1587\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Helvetica Greek;} {\f1588\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Helvetica Tur;}{\f1589\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Helvetica (Hebrew);} {\f1590\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Helvetica (Arabic);}{\f1591\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Helvetica Baltic;} {\f1592\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Helvetica (Vietnamese);}{\f1593\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Times CE;} {\f1594\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Times Cyr;}{\f1595\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Times Greek;}{\f1596\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Times Tur;} {\f1597\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times (Hebrew);}{\f1598\fbidi \froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times (Arabic);} {\f1599\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Times Baltic;}{\f1600\fbidi \froman\fcharset163\fprq2{\*\panose 00000000000000000000}Times (Vietnamese);} {\f1601\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Times New Roman CE CE;}{\f1602\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Times New Roman CE Cyr;} {\f1603\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Times New Roman CE Greek;}{\f1604\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Times New Roman CE Tur;} {\f1605\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman CE (Hebrew);}{\f1606\fbidi \froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman CE (Arabic);} {\f1607\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Times New Roman CE Baltic;}{\f1608\fbidi \froman\fcharset163\fprq2{\*\panose 00000000000000000000}Times New Roman CE (Vietnamese);} {\f1609\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Times New Roman CYR CE;}{\f1610\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Times New Roman CYR Cyr;} {\f1611\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Times New Roman CYR Greek;}{\f1612\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Times New Roman CYR Tur;} {\f1613\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman CYR (Hebrew);}{\f1614\fbidi \froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman CYR (Arabic);} {\f1615\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Times New Roman CYR Baltic;}{\f1616\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Times New Roman Greek CE;} {\f1617\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Times New Roman Greek Cyr;}{\f1618\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Times New Roman Greek Greek;} {\f1619\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Times New Roman Greek Tur;}{\f1620\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman Greek (Hebrew);} {\f1621\fbidi \froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman Greek (Arabic);}{\f1622\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Times New Roman Greek Baltic;} {\f1623\fbidi \froman\fcharset163\fprq2{\*\panose 00000000000000000000}Times New Roman Greek (Vietname;}{\f1624\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Times New Roman TUR CE;} {\f1625\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Times New Roman TUR Cyr;}{\f1626\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Times New Roman TUR Greek;} {\f1627\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Times New Roman TUR Tur;}{\f1628\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman TUR (Hebrew);} {\f1629\fbidi \froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman TUR (Arabic);}{\f1630\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Times New Roman TUR Baltic;} {\f1631\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic CE;}{\f1632\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic Cyr;} {\f1633\fbidi \froman\fcharset161\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic Greek;}{\f1634\fbidi \froman\fcharset162\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic Tur;} {\f1635\fbidi \froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic (Hebrew);}{\f1636\fbidi \froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic (Arabic);} {\f1637\fbidi \froman\fcharset186\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic Baltic;}{\f1638\fbidi \froman\fcharset163\fprq2{\*\panose 00000000000000000000}Times New Roman Baltic (Vietnam;} {\f1639\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial CE CE;}{\f1640\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial CE Cyr;} {\f1641\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial CE Greek;}{\f1642\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial CE Tur;} {\f1643\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial CE (Hebrew);}{\f1644\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial CE (Arabic);} {\f1645\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial CE Baltic;}{\f1646\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial CE (Vietnamese);} {\f1647\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial CYR CE;}{\f1648\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial CYR Cyr;} {\f1649\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial CYR Greek;}{\f1650\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial CYR Tur;} {\f1651\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial CYR (Hebrew);}{\f1652\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial CYR (Arabic);} {\f1653\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial CYR Baltic;}{\f1654\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial CYR (Vietnamese);} {\f1655\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial Greek CE;}{\f1656\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial Greek Cyr;} {\f1657\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial Greek Greek;}{\f1658\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial Greek Tur;} {\f1659\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial Greek (Hebrew);}{\f1660\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial Greek (Arabic);} {\f1661\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial Greek Baltic;}{\f1662\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial Greek (Vietnamese);} {\f1663\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial TUR CE;}{\f1664\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial TUR Cyr;} {\f1665\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial TUR Greek;}{\f1666\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial TUR Tur;} {\f1667\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial TUR (Hebrew);}{\f1668\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial TUR (Arabic);} {\f1669\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial TUR Baltic;}{\f1670\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial TUR (Vietnamese);} {\f1671\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial Baltic CE;}{\f1672\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial Baltic Cyr;} {\f1673\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial Baltic Greek;}{\f1674\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial Baltic Tur;} {\f1675\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial Baltic (Hebrew);}{\f1676\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial Baltic (Arabic);} {\f1677\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial Baltic Baltic;}{\f1678\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial Baltic (Vietnamese);} {\f1679\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}Courier New CE CE;}{\f1680\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}Courier New CE Cyr;} {\f1681\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}Courier New CE Greek;}{\f1682\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}Courier New CE Tur;} {\f1683\fbidi \fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New CE (Hebrew);}{\f1684\fbidi \fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New CE (Arabic);} {\f1685\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}Courier New CE Baltic;}{\f1686\fbidi \fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New CE (Vietnamese);} {\f1687\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}Courier New CYR CE;}{\f1688\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}Courier New CYR Cyr;} {\f1689\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}Courier New CYR Greek;}{\f1690\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}Courier New CYR Tur;} {\f1691\fbidi \fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New CYR (Hebrew);}{\f1692\fbidi \fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New CYR (Arabic);} {\f1693\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}Courier New CYR Baltic;}{\f1694\fbidi \fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New CYR (Vietnamese);} {\f1695\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}Courier New Greek CE;}{\f1696\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}Courier New Greek Cyr;} {\f1697\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}Courier New Greek Greek;}{\f1698\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}Courier New Greek Tur;} {\f1699\fbidi \fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New Greek (Hebrew);}{\f1700\fbidi \fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New Greek (Arabic);} {\f1701\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}Courier New Greek Baltic;}{\f1702\fbidi \fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New Greek (Vietnamese);} {\f1703\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}Courier New TUR CE;}{\f1704\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}Courier New TUR Cyr;} {\f1705\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}Courier New TUR Greek;}{\f1706\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}Courier New TUR Tur;} {\f1707\fbidi \fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New TUR (Hebrew);}{\f1708\fbidi \fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New TUR (Arabic);} {\f1709\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}Courier New TUR Baltic;}{\f1710\fbidi \fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New TUR (Vietnamese);} {\f1711\fbidi \fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}Courier New Baltic CE;}{\f1712\fbidi \fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}Courier New Baltic Cyr;} {\f1713\fbidi \fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}Courier New Baltic Greek;}{\f1714\fbidi \fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}Courier New Baltic Tur;} {\f1715\fbidi \fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New Baltic (Hebrew);}{\f1716\fbidi \fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New Baltic (Arabic);} {\f1717\fbidi \fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}Courier New Baltic Baltic;}{\f1718\fbidi \fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New Baltic (Vietnamese);} {\f1719\fbidi \froman\fcharset238\fprq2{\*\panose 00000000000000000000}Rockwell CE;}{\f1720\fbidi \fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arabic Transparent CE;} {\f1721\fbidi \fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arabic Transparent Cyr;}{\f1722\fbidi \fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arabic Transparent Greek;} {\f1723\fbidi \fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arabic Transparent Tur;}{\f1724\fbidi \fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arabic Transparent (Hebrew);} {\f1725\fbidi \fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arabic Transparent (Arabic);}{\f1726\fbidi \fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arabic Transparent Baltic;} {\f1727\fbidi \fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arabic Transparent (Vietnamese);}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria;} {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} {\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1728\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f1729\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\f1731\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f1732\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f1733\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\f1734\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f1735\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f1736\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f1738\fbidi \fswiss\fcharset238\fprq2 Arial CE;} {\f1739\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f1741\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f1742\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f1743\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} {\f1744\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f1745\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f1746\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f1748\fbidi \fmodern\fcharset238\fprq1 Courier New CE;} {\f1749\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f1751\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f1752\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f1753\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);} {\f1754\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f1755\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f1756\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);} {\f1860\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ?????????????\'a1\'ec???????};}{\f1880\fbidi \fmodern\fcharset0\fprq1 MS Gothic Western{\*\falt ?l?r ?S?V?b?N};}{\f1878\fbidi \fmodern\fcharset238\fprq1 MS Gothic CE{\*\falt ?l?r ?S?V?b?N};} {\f1879\fbidi \fmodern\fcharset204\fprq1 MS Gothic Cyr{\*\falt ?l?r ?S?V?b?N};}{\f1881\fbidi \fmodern\fcharset161\fprq1 MS Gothic Greek{\*\falt ?l?r ?S?V?b?N};}{\f1882\fbidi \fmodern\fcharset162\fprq1 MS Gothic Tur{\*\falt ?l?r ?S?V?b?N};} {\f1885\fbidi \fmodern\fcharset186\fprq1 MS Gothic Baltic{\*\falt ?l?r ?S?V?b?N};}{\f1938\fbidi \froman\fcharset238\fprq2 Century CE;}{\f1939\fbidi \froman\fcharset204\fprq2 Century Cyr;}{\f1941\fbidi \froman\fcharset161\fprq2 Century Greek;} {\f1942\fbidi \froman\fcharset162\fprq2 Century Tur;}{\f1945\fbidi \froman\fcharset186\fprq2 Century Baltic;}{\f1988\fbidi \froman\fcharset238\fprq2 Sylfaen CE;}{\f1989\fbidi \froman\fcharset204\fprq2 Sylfaen Cyr;} {\f1991\fbidi \froman\fcharset161\fprq2 Sylfaen Greek;}{\f1992\fbidi \froman\fcharset162\fprq2 Sylfaen Tur;}{\f1995\fbidi \froman\fcharset186\fprq2 Sylfaen Baltic;}{\f2068\fbidi \froman\fcharset238\fprq2 Cambria Math CE;} {\f2069\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f2071\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f2072\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f2075\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;} {\f2076\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f2080\fbidi \fswiss\fcharset0\fprq2 Yu Gothic Western{\*\falt ?a?S?V?b?N};}{\f2078\fbidi \fswiss\fcharset238\fprq2 Yu Gothic CE{\*\falt ?a?S?V?b?N};} {\f2079\fbidi \fswiss\fcharset204\fprq2 Yu Gothic Cyr{\*\falt ?a?S?V?b?N};}{\f2081\fbidi \fswiss\fcharset161\fprq2 Yu Gothic Greek{\*\falt ?a?S?V?b?N};}{\f2082\fbidi \fswiss\fcharset162\fprq2 Yu Gothic Tur{\*\falt ?a?S?V?b?N};} {\f2085\fbidi \fswiss\fcharset186\fprq2 Yu Gothic Baltic{\*\falt ?a?S?V?b?N};}{\f2108\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\f2109\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;} {\f2111\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\f2112\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\f2113\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\f2114\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);} {\f2115\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\f2116\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\f2118\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f2119\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} {\f2121\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f2122\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f2123\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f2124\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);} {\f2125\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f2126\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f2128\fbidi \fswiss\fcharset238\fprq2 Segoe UI CE;}{\f2129\fbidi \fswiss\fcharset204\fprq2 Segoe UI Cyr;} {\f2131\fbidi \fswiss\fcharset161\fprq2 Segoe UI Greek;}{\f2132\fbidi \fswiss\fcharset162\fprq2 Segoe UI Tur;}{\f2133\fbidi \fswiss\fcharset177\fprq2 Segoe UI (Hebrew);}{\f2134\fbidi \fswiss\fcharset178\fprq2 Segoe UI (Arabic);} {\f2135\fbidi \fswiss\fcharset186\fprq2 Segoe UI Baltic;}{\f2136\fbidi \fswiss\fcharset163\fprq2 Segoe UI (Vietnamese);}{\f2138\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\f2139\fbidi \froman\fcharset204\fprq2 Cambria Cyr;} {\f2141\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\f2142\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\f2145\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\f2146\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);} {\f2158\fbidi \fmodern\fcharset238\fprq2 Frank Ruhl Hofshi CE;}{\f2163\fbidi \fmodern\fcharset177\fprq2 Frank Ruhl Hofshi (Hebrew);}{\f2165\fbidi \fmodern\fcharset186\fprq2 Frank Ruhl Hofshi Baltic;} {\f2168\fbidi \fmodern\fcharset238\fprq2 Miriam Libre CE;}{\f2172\fbidi \fmodern\fcharset162\fprq2 Miriam Libre Tur;}{\f2173\fbidi \fmodern\fcharset177\fprq2 Miriam Libre (Hebrew);}{\f2175\fbidi \fmodern\fcharset186\fprq2 Miriam Libre Baltic;} {\f2188\fbidi \fswiss\fcharset238\fprq2 Arial Black CE;}{\f2189\fbidi \fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f2191\fbidi \fswiss\fcharset161\fprq2 Arial Black Greek;}{\f2192\fbidi \fswiss\fcharset162\fprq2 Arial Black Tur;} {\f2195\fbidi \fswiss\fcharset186\fprq2 Arial Black Baltic;}{\f2198\fbidi \fswiss\fcharset238\fprq2 Bahnschrift Light CE;}{\f2199\fbidi \fswiss\fcharset204\fprq2 Bahnschrift Light Cyr;}{\f2201\fbidi \fswiss\fcharset161\fprq2 Bahnschrift Light Greek;} {\f2202\fbidi \fswiss\fcharset162\fprq2 Bahnschrift Light Tur;}{\f2205\fbidi \fswiss\fcharset186\fprq2 Bahnschrift Light Baltic;}{\f2206\fbidi \fswiss\fcharset163\fprq2 Bahnschrift Light (Vietnamese);} {\f2208\fbidi \fswiss\fcharset238\fprq2 Bahnschrift SemiLight CE;}{\f2209\fbidi \fswiss\fcharset204\fprq2 Bahnschrift SemiLight Cyr;}{\f2211\fbidi \fswiss\fcharset161\fprq2 Bahnschrift SemiLight Greek;} {\f2212\fbidi \fswiss\fcharset162\fprq2 Bahnschrift SemiLight Tur;}{\f2215\fbidi \fswiss\fcharset186\fprq2 Bahnschrift SemiLight Baltic;}{\f2216\fbidi \fswiss\fcharset163\fprq2 Bahnschrift SemiLight (Vietnamese);} {\f2218\fbidi \fswiss\fcharset238\fprq2 Bahnschrift CE;}{\f2219\fbidi \fswiss\fcharset204\fprq2 Bahnschrift Cyr;}{\f2221\fbidi \fswiss\fcharset161\fprq2 Bahnschrift Greek;}{\f2222\fbidi \fswiss\fcharset162\fprq2 Bahnschrift Tur;} {\f2225\fbidi \fswiss\fcharset186\fprq2 Bahnschrift Baltic;}{\f2226\fbidi \fswiss\fcharset163\fprq2 Bahnschrift (Vietnamese);}{\f2228\fbidi \fswiss\fcharset238\fprq2 Bahnschrift SemiBold CE;} {\f2229\fbidi \fswiss\fcharset204\fprq2 Bahnschrift SemiBold Cyr;}{\f2231\fbidi \fswiss\fcharset161\fprq2 Bahnschrift SemiBold Greek;}{\f2232\fbidi \fswiss\fcharset162\fprq2 Bahnschrift SemiBold Tur;} {\f2235\fbidi \fswiss\fcharset186\fprq2 Bahnschrift SemiBold Baltic;}{\f2236\fbidi \fswiss\fcharset163\fprq2 Bahnschrift SemiBold (Vietnamese);}{\f2238\fbidi \fswiss\fcharset238\fprq2 Bahnschrift Light SemiCondensed CE;} {\f2239\fbidi \fswiss\fcharset204\fprq2 Bahnschrift Light SemiCondensed Cyr;}{\f2241\fbidi \fswiss\fcharset161\fprq2 Bahnschrift Light SemiCondensed Greek;}{\f2242\fbidi \fswiss\fcharset162\fprq2 Bahnschrift Light SemiCondensed Tur;} {\f2245\fbidi \fswiss\fcharset186\fprq2 Bahnschrift Light SemiCondensed Baltic;}{\f2246\fbidi \fswiss\fcharset163\fprq2 Bahnschrift Light SemiCondensed (Vietnamese);}{\f2248\fbidi \fswiss\fcharset238\fprq2 Bahnschrift SemiLight SemiConde CE;} {\f2249\fbidi \fswiss\fcharset204\fprq2 Bahnschrift SemiLight SemiConde Cyr;}{\f2251\fbidi \fswiss\fcharset161\fprq2 Bahnschrift SemiLight SemiConde Greek;}{\f2252\fbidi \fswiss\fcharset162\fprq2 Bahnschrift SemiLight SemiConde Tur;} {\f2255\fbidi \fswiss\fcharset186\fprq2 Bahnschrift SemiLight SemiConde Baltic;}{\f2256\fbidi \fswiss\fcharset163\fprq2 Bahnschrift SemiLight SemiConde (Vietnamese);}{\f2258\fbidi \fswiss\fcharset238\fprq2 Bahnschrift SemiCondensed CE;} {\f2259\fbidi \fswiss\fcharset204\fprq2 Bahnschrift SemiCondensed Cyr;}{\f2261\fbidi \fswiss\fcharset161\fprq2 Bahnschrift SemiCondensed Greek;}{\f2262\fbidi \fswiss\fcharset162\fprq2 Bahnschrift SemiCondensed Tur;} {\f2265\fbidi \fswiss\fcharset186\fprq2 Bahnschrift SemiCondensed Baltic;}{\f2266\fbidi \fswiss\fcharset163\fprq2 Bahnschrift SemiCondensed (Vietnamese);}{\f2268\fbidi \fswiss\fcharset238\fprq2 Bahnschrift SemiBold SemiConden CE;} {\f2269\fbidi \fswiss\fcharset204\fprq2 Bahnschrift SemiBold SemiConden Cyr;}{\f2271\fbidi \fswiss\fcharset161\fprq2 Bahnschrift SemiBold SemiConden Greek;}{\f2272\fbidi \fswiss\fcharset162\fprq2 Bahnschrift SemiBold SemiConden Tur;} {\f2275\fbidi \fswiss\fcharset186\fprq2 Bahnschrift SemiBold SemiConden Baltic;}{\f2276\fbidi \fswiss\fcharset163\fprq2 Bahnschrift SemiBold SemiConden (Vietnamese);}{\f2278\fbidi \fswiss\fcharset238\fprq2 Bahnschrift Light Condensed CE;} {\f2279\fbidi \fswiss\fcharset204\fprq2 Bahnschrift Light Condensed Cyr;}{\f2281\fbidi \fswiss\fcharset161\fprq2 Bahnschrift Light Condensed Greek;}{\f2282\fbidi \fswiss\fcharset162\fprq2 Bahnschrift Light Condensed Tur;} {\f2285\fbidi \fswiss\fcharset186\fprq2 Bahnschrift Light Condensed Baltic;}{\f2286\fbidi \fswiss\fcharset163\fprq2 Bahnschrift Light Condensed (Vietnamese);}{\f2288\fbidi \fswiss\fcharset238\fprq2 Bahnschrift SemiLight Condensed CE;} {\f2289\fbidi \fswiss\fcharset204\fprq2 Bahnschrift SemiLight Condensed Cyr;}{\f2291\fbidi \fswiss\fcharset161\fprq2 Bahnschrift SemiLight Condensed Greek;}{\f2292\fbidi \fswiss\fcharset162\fprq2 Bahnschrift SemiLight Condensed Tur;} {\f2295\fbidi \fswiss\fcharset186\fprq2 Bahnschrift SemiLight Condensed Baltic;}{\f2296\fbidi \fswiss\fcharset163\fprq2 Bahnschrift SemiLight Condensed (Vietnamese);}{\f2298\fbidi \fswiss\fcharset238\fprq2 Bahnschrift Condensed CE;} {\f2299\fbidi \fswiss\fcharset204\fprq2 Bahnschrift Condensed Cyr;}{\f2301\fbidi \fswiss\fcharset161\fprq2 Bahnschrift Condensed Greek;}{\f2302\fbidi \fswiss\fcharset162\fprq2 Bahnschrift Condensed Tur;} {\f2305\fbidi \fswiss\fcharset186\fprq2 Bahnschrift Condensed Baltic;}{\f2306\fbidi \fswiss\fcharset163\fprq2 Bahnschrift Condensed (Vietnamese);}{\f2308\fbidi \fswiss\fcharset238\fprq2 Bahnschrift SemiBold Condensed CE;} {\f2309\fbidi \fswiss\fcharset204\fprq2 Bahnschrift SemiBold Condensed Cyr;}{\f2311\fbidi \fswiss\fcharset161\fprq2 Bahnschrift SemiBold Condensed Greek;}{\f2312\fbidi \fswiss\fcharset162\fprq2 Bahnschrift SemiBold Condensed Tur;} {\f2315\fbidi \fswiss\fcharset186\fprq2 Bahnschrift SemiBold Condensed Baltic;}{\f2316\fbidi \fswiss\fcharset163\fprq2 Bahnschrift SemiBold Condensed (Vietnamese);}{\f2318\fbidi \fswiss\fcharset238\fprq2 Candara CE;} {\f2319\fbidi \fswiss\fcharset204\fprq2 Candara Cyr;}{\f2321\fbidi \fswiss\fcharset161\fprq2 Candara Greek;}{\f2322\fbidi \fswiss\fcharset162\fprq2 Candara Tur;}{\f2325\fbidi \fswiss\fcharset186\fprq2 Candara Baltic;} {\f2326\fbidi \fswiss\fcharset163\fprq2 Candara (Vietnamese);}{\f2328\fbidi \fswiss\fcharset238\fprq2 Candara Light CE;}{\f2329\fbidi \fswiss\fcharset204\fprq2 Candara Light Cyr;}{\f2331\fbidi \fswiss\fcharset161\fprq2 Candara Light Greek;} {\f2332\fbidi \fswiss\fcharset162\fprq2 Candara Light Tur;}{\f2335\fbidi \fswiss\fcharset186\fprq2 Candara Light Baltic;}{\f2336\fbidi \fswiss\fcharset163\fprq2 Candara Light (Vietnamese);}{\f2338\fbidi \fscript\fcharset238\fprq2 Comic Sans MS CE;} {\f2339\fbidi \fscript\fcharset204\fprq2 Comic Sans MS Cyr;}{\f2341\fbidi \fscript\fcharset161\fprq2 Comic Sans MS Greek;}{\f2342\fbidi \fscript\fcharset162\fprq2 Comic Sans MS Tur;}{\f2345\fbidi \fscript\fcharset186\fprq2 Comic Sans MS Baltic;} {\f2348\fbidi \fmodern\fcharset238\fprq1 Consolas CE;}{\f2349\fbidi \fmodern\fcharset204\fprq1 Consolas Cyr;}{\f2351\fbidi \fmodern\fcharset161\fprq1 Consolas Greek;}{\f2352\fbidi \fmodern\fcharset162\fprq1 Consolas Tur;} {\f2355\fbidi \fmodern\fcharset186\fprq1 Consolas Baltic;}{\f2356\fbidi \fmodern\fcharset163\fprq1 Consolas (Vietnamese);}{\f2358\fbidi \froman\fcharset238\fprq2 Constantia CE;}{\f2359\fbidi \froman\fcharset204\fprq2 Constantia Cyr;} {\f2361\fbidi \froman\fcharset161\fprq2 Constantia Greek;}{\f2362\fbidi \froman\fcharset162\fprq2 Constantia Tur;}{\f2365\fbidi \froman\fcharset186\fprq2 Constantia Baltic;}{\f2366\fbidi \froman\fcharset163\fprq2 Constantia (Vietnamese);} {\f2368\fbidi \fswiss\fcharset238\fprq2 Corbel CE;}{\f2369\fbidi \fswiss\fcharset204\fprq2 Corbel Cyr;}{\f2371\fbidi \fswiss\fcharset161\fprq2 Corbel Greek;}{\f2372\fbidi \fswiss\fcharset162\fprq2 Corbel Tur;} {\f2375\fbidi \fswiss\fcharset186\fprq2 Corbel Baltic;}{\f2376\fbidi \fswiss\fcharset163\fprq2 Corbel (Vietnamese);}{\f2378\fbidi \fswiss\fcharset238\fprq2 Corbel Light CE;}{\f2379\fbidi \fswiss\fcharset204\fprq2 Corbel Light Cyr;} {\f2381\fbidi \fswiss\fcharset161\fprq2 Corbel Light Greek;}{\f2382\fbidi \fswiss\fcharset162\fprq2 Corbel Light Tur;}{\f2385\fbidi \fswiss\fcharset186\fprq2 Corbel Light Baltic;}{\f2386\fbidi \fswiss\fcharset163\fprq2 Corbel Light (Vietnamese);} {\f2388\fbidi \fnil\fcharset238\fprq2 Ebrima CE;}{\f2392\fbidi \fnil\fcharset162\fprq2 Ebrima Tur;}{\f2395\fbidi \fnil\fcharset186\fprq2 Ebrima Baltic;}{\f2398\fbidi \fswiss\fcharset238\fprq2 Franklin Gothic Medium CE;} {\f2399\fbidi \fswiss\fcharset204\fprq2 Franklin Gothic Medium Cyr;}{\f2401\fbidi \fswiss\fcharset161\fprq2 Franklin Gothic Medium Greek;}{\f2402\fbidi \fswiss\fcharset162\fprq2 Franklin Gothic Medium Tur;} {\f2405\fbidi \fswiss\fcharset186\fprq2 Franklin Gothic Medium Baltic;}{\f2408\fbidi \fdecor\fcharset238\fprq2 Gabriola CE;}{\f2409\fbidi \fdecor\fcharset204\fprq2 Gabriola Cyr;}{\f2411\fbidi \fdecor\fcharset161\fprq2 Gabriola Greek;} {\f2412\fbidi \fdecor\fcharset162\fprq2 Gabriola Tur;}{\f2415\fbidi \fdecor\fcharset186\fprq2 Gabriola Baltic;}{\f2428\fbidi \froman\fcharset238\fprq2 Georgia CE;}{\f2429\fbidi \froman\fcharset204\fprq2 Georgia Cyr;} {\f2431\fbidi \froman\fcharset161\fprq2 Georgia Greek;}{\f2432\fbidi \froman\fcharset162\fprq2 Georgia Tur;}{\f2435\fbidi \froman\fcharset186\fprq2 Georgia Baltic;}{\f2438\fbidi \fswiss\fcharset238\fprq2 Impact CE;} {\f2439\fbidi \fswiss\fcharset204\fprq2 Impact Cyr;}{\f2441\fbidi \fswiss\fcharset161\fprq2 Impact Greek;}{\f2442\fbidi \fswiss\fcharset162\fprq2 Impact Tur;}{\f2445\fbidi \fswiss\fcharset186\fprq2 Impact Baltic;} {\f2476\fbidi \fswiss\fcharset163\fprq2 Leelawadee UI (Vietnamese);}{\f2477\fbidi \fswiss\fcharset222\fprq2 Leelawadee UI (Thai);}{\f2486\fbidi \fswiss\fcharset163\fprq2 Leelawadee UI Semilight (Vietnamese);} {\f2487\fbidi \fswiss\fcharset222\fprq2 Leelawadee UI Semilight (Thai);}{\f2488\fbidi \fmodern\fcharset238\fprq1 Lucida Console CE;}{\f2489\fbidi \fmodern\fcharset204\fprq1 Lucida Console Cyr;} {\f2491\fbidi \fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f2492\fbidi \fmodern\fcharset162\fprq1 Lucida Console Tur;}{\f2498\fbidi \fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f2499\fbidi \fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;} {\f2501\fbidi \fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f2502\fbidi \fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;}{\f2503\fbidi \fswiss\fcharset177\fprq2 Lucida Sans Unicode (Hebrew);} {\f2505\fbidi \fswiss\fcharset186\fprq2 Lucida Sans Unicode Baltic;}{\f2510\fbidi \fswiss\fcharset0\fprq2 Malgun Gothic Western;}{\f2520\fbidi \fswiss\fcharset0\fprq2 @Malgun Gothic Western;} {\f2530\fbidi \fswiss\fcharset0\fprq2 Malgun Gothic Semilight Western;}{\f2529\fbidi \fswiss\fcharset204\fprq2 Malgun Gothic Semilight Cyr;}{\f2531\fbidi \fswiss\fcharset161\fprq2 Malgun Gothic Semilight Greek;} {\f2532\fbidi \fswiss\fcharset162\fprq2 Malgun Gothic Semilight Tur;}{\f2533\fbidi \fswiss\fcharset177\fprq2 Malgun Gothic Semilight (Hebrew);}{\f2535\fbidi \fswiss\fcharset186\fprq2 Malgun Gothic Semilight Baltic;} {\f2536\fbidi \fswiss\fcharset163\fprq2 Malgun Gothic Semilight (Vietnamese);}{\f2540\fbidi \fswiss\fcharset0\fprq2 @Malgun Gothic Semilight Western;}{\f2539\fbidi \fswiss\fcharset204\fprq2 @Malgun Gothic Semilight Cyr;} {\f2541\fbidi \fswiss\fcharset161\fprq2 @Malgun Gothic Semilight Greek;}{\f2542\fbidi \fswiss\fcharset162\fprq2 @Malgun Gothic Semilight Tur;}{\f2543\fbidi \fswiss\fcharset177\fprq2 @Malgun Gothic Semilight (Hebrew);} {\f2545\fbidi \fswiss\fcharset186\fprq2 @Malgun Gothic Semilight Baltic;}{\f2546\fbidi \fswiss\fcharset163\fprq2 @Malgun Gothic Semilight (Vietnamese);}{\f2560\fbidi \fswiss\fcharset0\fprq2 Microsoft JhengHei Western;} {\f2561\fbidi \fswiss\fcharset161\fprq2 Microsoft JhengHei Greek;}{\f2570\fbidi \fswiss\fcharset0\fprq2 @Microsoft JhengHei Western;}{\f2571\fbidi \fswiss\fcharset161\fprq2 @Microsoft JhengHei Greek;} {\f2580\fbidi \fswiss\fcharset0\fprq2 Microsoft JhengHei UI Western;}{\f2581\fbidi \fswiss\fcharset161\fprq2 Microsoft JhengHei UI Greek;}{\f2590\fbidi \fswiss\fcharset0\fprq2 @Microsoft JhengHei UI Western;} {\f2591\fbidi \fswiss\fcharset161\fprq2 @Microsoft JhengHei UI Greek;}{\f2600\fbidi \fswiss\fcharset0\fprq2 Microsoft JhengHei Light Western;}{\f2601\fbidi \fswiss\fcharset161\fprq2 Microsoft JhengHei Light Greek;} {\f2610\fbidi \fswiss\fcharset0\fprq2 @Microsoft JhengHei Light Western;}{\f2611\fbidi \fswiss\fcharset161\fprq2 @Microsoft JhengHei Light Greek;}{\f2620\fbidi \fswiss\fcharset0\fprq2 Microsoft JhengHei UI Light Western;} {\f2621\fbidi \fswiss\fcharset161\fprq2 Microsoft JhengHei UI Light Greek;}{\f2630\fbidi \fswiss\fcharset0\fprq2 @Microsoft JhengHei UI Light Western;}{\f2631\fbidi \fswiss\fcharset161\fprq2 @Microsoft JhengHei UI Light Greek;} {\f2658\fbidi \fswiss\fcharset238\fprq2 Microsoft Sans Serif CE;}{\f2659\fbidi \fswiss\fcharset204\fprq2 Microsoft Sans Serif Cyr;}{\f2661\fbidi \fswiss\fcharset161\fprq2 Microsoft Sans Serif Greek;} {\f2662\fbidi \fswiss\fcharset162\fprq2 Microsoft Sans Serif Tur;}{\f2663\fbidi \fswiss\fcharset177\fprq2 Microsoft Sans Serif (Hebrew);}{\f2664\fbidi \fswiss\fcharset178\fprq2 Microsoft Sans Serif (Arabic);} {\f2665\fbidi \fswiss\fcharset186\fprq2 Microsoft Sans Serif Baltic;}{\f2666\fbidi \fswiss\fcharset163\fprq2 Microsoft Sans Serif (Vietnamese);}{\f2667\fbidi \fswiss\fcharset222\fprq2 Microsoft Sans Serif (Thai);} {\f2680\fbidi \fswiss\fcharset0\fprq2 Microsoft YaHei Western;}{\f2678\fbidi \fswiss\fcharset238\fprq2 Microsoft YaHei CE;}{\f2679\fbidi \fswiss\fcharset204\fprq2 Microsoft YaHei Cyr;}{\f2681\fbidi \fswiss\fcharset161\fprq2 Microsoft YaHei Greek;} {\f2682\fbidi \fswiss\fcharset162\fprq2 Microsoft YaHei Tur;}{\f2690\fbidi \fswiss\fcharset0\fprq2 @Microsoft YaHei Western;}{\f2688\fbidi \fswiss\fcharset238\fprq2 @Microsoft YaHei CE;}{\f2689\fbidi \fswiss\fcharset204\fprq2 @Microsoft YaHei Cyr;} {\f2691\fbidi \fswiss\fcharset161\fprq2 @Microsoft YaHei Greek;}{\f2692\fbidi \fswiss\fcharset162\fprq2 @Microsoft YaHei Tur;}{\f2700\fbidi \fswiss\fcharset0\fprq2 Microsoft YaHei UI Western;}{\f2698\fbidi \fswiss\fcharset238\fprq2 Microsoft YaHei UI CE;} {\f2699\fbidi \fswiss\fcharset204\fprq2 Microsoft YaHei UI Cyr;}{\f2701\fbidi \fswiss\fcharset161\fprq2 Microsoft YaHei UI Greek;}{\f2702\fbidi \fswiss\fcharset162\fprq2 Microsoft YaHei UI Tur;} {\f2710\fbidi \fswiss\fcharset0\fprq2 @Microsoft YaHei UI Western;}{\f2708\fbidi \fswiss\fcharset238\fprq2 @Microsoft YaHei UI CE;}{\f2709\fbidi \fswiss\fcharset204\fprq2 @Microsoft YaHei UI Cyr;} {\f2711\fbidi \fswiss\fcharset161\fprq2 @Microsoft YaHei UI Greek;}{\f2712\fbidi \fswiss\fcharset162\fprq2 @Microsoft YaHei UI Tur;}{\f2720\fbidi \fswiss\fcharset0\fprq2 Microsoft YaHei Light Western;} {\f2718\fbidi \fswiss\fcharset238\fprq2 Microsoft YaHei Light CE;}{\f2719\fbidi \fswiss\fcharset204\fprq2 Microsoft YaHei Light Cyr;}{\f2721\fbidi \fswiss\fcharset161\fprq2 Microsoft YaHei Light Greek;} {\f2722\fbidi \fswiss\fcharset162\fprq2 Microsoft YaHei Light Tur;}{\f2730\fbidi \fswiss\fcharset0\fprq2 @Microsoft YaHei Light Western;}{\f2728\fbidi \fswiss\fcharset238\fprq2 @Microsoft YaHei Light CE;} {\f2729\fbidi \fswiss\fcharset204\fprq2 @Microsoft YaHei Light Cyr;}{\f2731\fbidi \fswiss\fcharset161\fprq2 @Microsoft YaHei Light Greek;}{\f2732\fbidi \fswiss\fcharset162\fprq2 @Microsoft YaHei Light Tur;} {\f2740\fbidi \fswiss\fcharset0\fprq2 Microsoft YaHei UI Light Western;}{\f2738\fbidi \fswiss\fcharset238\fprq2 Microsoft YaHei UI Light CE;}{\f2739\fbidi \fswiss\fcharset204\fprq2 Microsoft YaHei UI Light Cyr;} {\f2741\fbidi \fswiss\fcharset161\fprq2 Microsoft YaHei UI Light Greek;}{\f2742\fbidi \fswiss\fcharset162\fprq2 Microsoft YaHei UI Light Tur;}{\f2750\fbidi \fswiss\fcharset0\fprq2 @Microsoft YaHei UI Light Western;} {\f2748\fbidi \fswiss\fcharset238\fprq2 @Microsoft YaHei UI Light CE;}{\f2749\fbidi \fswiss\fcharset204\fprq2 @Microsoft YaHei UI Light Cyr;}{\f2751\fbidi \fswiss\fcharset161\fprq2 @Microsoft YaHei UI Light Greek;} {\f2752\fbidi \fswiss\fcharset162\fprq2 @Microsoft YaHei UI Light Tur;}{\f2770\fbidi \froman\fcharset0\fprq2 MingLiU-ExtB Western;}{\f2780\fbidi \froman\fcharset0\fprq2 @MingLiU-ExtB Western;}{\f2790\fbidi \froman\fcharset0\fprq2 PMingLiU-ExtB Western;} {\f2800\fbidi \froman\fcharset0\fprq2 @PMingLiU-ExtB Western;}{\f2810\fbidi \froman\fcharset0\fprq2 MingLiU_HKSCS-ExtB Western;}{\f2820\fbidi \froman\fcharset0\fprq2 @MingLiU_HKSCS-ExtB Western;}{\f2840\fbidi \fmodern\fcharset0\fprq1 @MS Gothic Western;} {\f2838\fbidi \fmodern\fcharset238\fprq1 @MS Gothic CE;}{\f2839\fbidi \fmodern\fcharset204\fprq1 @MS Gothic Cyr;}{\f2841\fbidi \fmodern\fcharset161\fprq1 @MS Gothic Greek;}{\f2842\fbidi \fmodern\fcharset162\fprq1 @MS Gothic Tur;} {\f2845\fbidi \fmodern\fcharset186\fprq1 @MS Gothic Baltic;}{\f2850\fbidi \fswiss\fcharset0\fprq2 MS UI Gothic Western;}{\f2848\fbidi \fswiss\fcharset238\fprq2 MS UI Gothic CE;}{\f2849\fbidi \fswiss\fcharset204\fprq2 MS UI Gothic Cyr;} {\f2851\fbidi \fswiss\fcharset161\fprq2 MS UI Gothic Greek;}{\f2852\fbidi \fswiss\fcharset162\fprq2 MS UI Gothic Tur;}{\f2855\fbidi \fswiss\fcharset186\fprq2 MS UI Gothic Baltic;}{\f2860\fbidi \fswiss\fcharset0\fprq2 @MS UI Gothic Western;} {\f2858\fbidi \fswiss\fcharset238\fprq2 @MS UI Gothic CE;}{\f2859\fbidi \fswiss\fcharset204\fprq2 @MS UI Gothic Cyr;}{\f2861\fbidi \fswiss\fcharset161\fprq2 @MS UI Gothic Greek;}{\f2862\fbidi \fswiss\fcharset162\fprq2 @MS UI Gothic Tur;} {\f2865\fbidi \fswiss\fcharset186\fprq2 @MS UI Gothic Baltic;}{\f2870\fbidi \fswiss\fcharset0\fprq2 MS PGothic Western;}{\f2868\fbidi \fswiss\fcharset238\fprq2 MS PGothic CE;}{\f2869\fbidi \fswiss\fcharset204\fprq2 MS PGothic Cyr;} {\f2871\fbidi \fswiss\fcharset161\fprq2 MS PGothic Greek;}{\f2872\fbidi \fswiss\fcharset162\fprq2 MS PGothic Tur;}{\f2875\fbidi \fswiss\fcharset186\fprq2 MS PGothic Baltic;}{\f2880\fbidi \fswiss\fcharset0\fprq2 @MS PGothic Western;} {\f2878\fbidi \fswiss\fcharset238\fprq2 @MS PGothic CE;}{\f2879\fbidi \fswiss\fcharset204\fprq2 @MS PGothic Cyr;}{\f2881\fbidi \fswiss\fcharset161\fprq2 @MS PGothic Greek;}{\f2882\fbidi \fswiss\fcharset162\fprq2 @MS PGothic Tur;} {\f2885\fbidi \fswiss\fcharset186\fprq2 @MS PGothic Baltic;}{\f2928\fbidi \froman\fcharset238\fprq2 Palatino Linotype CE;}{\f2929\fbidi \froman\fcharset204\fprq2 Palatino Linotype Cyr;}{\f2931\fbidi \froman\fcharset161\fprq2 Palatino Linotype Greek;} {\f2932\fbidi \froman\fcharset162\fprq2 Palatino Linotype Tur;}{\f2935\fbidi \froman\fcharset186\fprq2 Palatino Linotype Baltic;}{\f2936\fbidi \froman\fcharset163\fprq2 Palatino Linotype (Vietnamese);}{\f2948\fbidi \fnil\fcharset238\fprq2 Segoe Print CE;} {\f2949\fbidi \fnil\fcharset204\fprq2 Segoe Print Cyr;}{\f2951\fbidi \fnil\fcharset161\fprq2 Segoe Print Greek;}{\f2952\fbidi \fnil\fcharset162\fprq2 Segoe Print Tur;}{\f2955\fbidi \fnil\fcharset186\fprq2 Segoe Print Baltic;} {\f2958\fbidi \fscript\fcharset238\fprq2 Segoe Script CE;}{\f2959\fbidi \fscript\fcharset204\fprq2 Segoe Script Cyr;}{\f2961\fbidi \fscript\fcharset161\fprq2 Segoe Script Greek;}{\f2962\fbidi \fscript\fcharset162\fprq2 Segoe Script Tur;} {\f2965\fbidi \fscript\fcharset186\fprq2 Segoe Script Baltic;}{\f2968\fbidi \fswiss\fcharset238\fprq2 Segoe UI Black CE;}{\f2969\fbidi \fswiss\fcharset204\fprq2 Segoe UI Black Cyr;}{\f2971\fbidi \fswiss\fcharset161\fprq2 Segoe UI Black Greek;} {\f2972\fbidi \fswiss\fcharset162\fprq2 Segoe UI Black Tur;}{\f2975\fbidi \fswiss\fcharset186\fprq2 Segoe UI Black Baltic;}{\f2976\fbidi \fswiss\fcharset163\fprq2 Segoe UI Black (Vietnamese);}{\f2998\fbidi \fswiss\fcharset238\fprq2 Segoe UI Light CE;} {\f2999\fbidi \fswiss\fcharset204\fprq2 Segoe UI Light Cyr;}{\f3001\fbidi \fswiss\fcharset161\fprq2 Segoe UI Light Greek;}{\f3002\fbidi \fswiss\fcharset162\fprq2 Segoe UI Light Tur;}{\f3003\fbidi \fswiss\fcharset177\fprq2 Segoe UI Light (Hebrew);} {\f3004\fbidi \fswiss\fcharset178\fprq2 Segoe UI Light (Arabic);}{\f3005\fbidi \fswiss\fcharset186\fprq2 Segoe UI Light Baltic;}{\f3006\fbidi \fswiss\fcharset163\fprq2 Segoe UI Light (Vietnamese);} {\f3008\fbidi \fswiss\fcharset238\fprq2 Segoe UI Semibold CE;}{\f3009\fbidi \fswiss\fcharset204\fprq2 Segoe UI Semibold Cyr;}{\f3011\fbidi \fswiss\fcharset161\fprq2 Segoe UI Semibold Greek;}{\f3012\fbidi \fswiss\fcharset162\fprq2 Segoe UI Semibold Tur;} {\f3013\fbidi \fswiss\fcharset177\fprq2 Segoe UI Semibold (Hebrew);}{\f3014\fbidi \fswiss\fcharset178\fprq2 Segoe UI Semibold (Arabic);}{\f3015\fbidi \fswiss\fcharset186\fprq2 Segoe UI Semibold Baltic;} {\f3016\fbidi \fswiss\fcharset163\fprq2 Segoe UI Semibold (Vietnamese);}{\f3018\fbidi \fswiss\fcharset238\fprq2 Segoe UI Semilight CE;}{\f3019\fbidi \fswiss\fcharset204\fprq2 Segoe UI Semilight Cyr;} {\f3021\fbidi \fswiss\fcharset161\fprq2 Segoe UI Semilight Greek;}{\f3022\fbidi \fswiss\fcharset162\fprq2 Segoe UI Semilight Tur;}{\f3023\fbidi \fswiss\fcharset177\fprq2 Segoe UI Semilight (Hebrew);} {\f3024\fbidi \fswiss\fcharset178\fprq2 Segoe UI Semilight (Arabic);}{\f3025\fbidi \fswiss\fcharset186\fprq2 Segoe UI Semilight Baltic;}{\f3026\fbidi \fswiss\fcharset163\fprq2 Segoe UI Semilight (Vietnamese);} {\f3040\fbidi \fnil\fcharset0\fprq2 @SimSun Western;}{\f3050\fbidi \fmodern\fcharset0\fprq1 NSimSun Western;}{\f3060\fbidi \fmodern\fcharset0\fprq1 @NSimSun Western;}{\f3070\fbidi \fmodern\fcharset0\fprq1 SimSun-ExtB Western;} {\f3080\fbidi \fmodern\fcharset0\fprq1 @SimSun-ExtB Western;}{\f3088\fbidi \fnil\fcharset238\fprq2 Sitka Small CE;}{\f3089\fbidi \fnil\fcharset204\fprq2 Sitka Small Cyr;}{\f3091\fbidi \fnil\fcharset161\fprq2 Sitka Small Greek;} {\f3092\fbidi \fnil\fcharset162\fprq2 Sitka Small Tur;}{\f3095\fbidi \fnil\fcharset186\fprq2 Sitka Small Baltic;}{\f3096\fbidi \fnil\fcharset163\fprq2 Sitka Small (Vietnamese);}{\f3098\fbidi \fnil\fcharset238\fprq2 Sitka Text CE;} {\f3099\fbidi \fnil\fcharset204\fprq2 Sitka Text Cyr;}{\f3101\fbidi \fnil\fcharset161\fprq2 Sitka Text Greek;}{\f3102\fbidi \fnil\fcharset162\fprq2 Sitka Text Tur;}{\f3105\fbidi \fnil\fcharset186\fprq2 Sitka Text Baltic;} {\f3106\fbidi \fnil\fcharset163\fprq2 Sitka Text (Vietnamese);}{\f3108\fbidi \fnil\fcharset238\fprq2 Sitka Subheading CE;}{\f3109\fbidi \fnil\fcharset204\fprq2 Sitka Subheading Cyr;}{\f3111\fbidi \fnil\fcharset161\fprq2 Sitka Subheading Greek;} {\f3112\fbidi \fnil\fcharset162\fprq2 Sitka Subheading Tur;}{\f3115\fbidi \fnil\fcharset186\fprq2 Sitka Subheading Baltic;}{\f3116\fbidi \fnil\fcharset163\fprq2 Sitka Subheading (Vietnamese);}{\f3118\fbidi \fnil\fcharset238\fprq2 Sitka Heading CE;} {\f3119\fbidi \fnil\fcharset204\fprq2 Sitka Heading Cyr;}{\f3121\fbidi \fnil\fcharset161\fprq2 Sitka Heading Greek;}{\f3122\fbidi \fnil\fcharset162\fprq2 Sitka Heading Tur;}{\f3125\fbidi \fnil\fcharset186\fprq2 Sitka Heading Baltic;} {\f3126\fbidi \fnil\fcharset163\fprq2 Sitka Heading (Vietnamese);}{\f3128\fbidi \fnil\fcharset238\fprq2 Sitka Display CE;}{\f3129\fbidi \fnil\fcharset204\fprq2 Sitka Display Cyr;}{\f3131\fbidi \fnil\fcharset161\fprq2 Sitka Display Greek;} {\f3132\fbidi \fnil\fcharset162\fprq2 Sitka Display Tur;}{\f3135\fbidi \fnil\fcharset186\fprq2 Sitka Display Baltic;}{\f3136\fbidi \fnil\fcharset163\fprq2 Sitka Display (Vietnamese);}{\f3138\fbidi \fnil\fcharset238\fprq2 Sitka Banner CE;} {\f3139\fbidi \fnil\fcharset204\fprq2 Sitka Banner Cyr;}{\f3141\fbidi \fnil\fcharset161\fprq2 Sitka Banner Greek;}{\f3142\fbidi \fnil\fcharset162\fprq2 Sitka Banner Tur;}{\f3145\fbidi \fnil\fcharset186\fprq2 Sitka Banner Baltic;} {\f3146\fbidi \fnil\fcharset163\fprq2 Sitka Banner (Vietnamese);}{\f3148\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f3149\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f3151\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;} {\f3152\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f3153\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f3154\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f3155\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;} {\f3156\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f3157\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f3158\fbidi \fswiss\fcharset238\fprq2 Trebuchet MS CE;}{\f3159\fbidi \fswiss\fcharset204\fprq2 Trebuchet MS Cyr;} {\f3161\fbidi \fswiss\fcharset161\fprq2 Trebuchet MS Greek;}{\f3162\fbidi \fswiss\fcharset162\fprq2 Trebuchet MS Tur;}{\f3165\fbidi \fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f3168\fbidi \fswiss\fcharset238\fprq2 Verdana CE;} {\f3169\fbidi \fswiss\fcharset204\fprq2 Verdana Cyr;}{\f3171\fbidi \fswiss\fcharset161\fprq2 Verdana Greek;}{\f3172\fbidi \fswiss\fcharset162\fprq2 Verdana Tur;}{\f3175\fbidi \fswiss\fcharset186\fprq2 Verdana Baltic;} {\f3176\fbidi \fswiss\fcharset163\fprq2 Verdana (Vietnamese);}{\f3190\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic Western;}{\f3188\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic CE;}{\f3189\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic Cyr;} {\f3191\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic Greek;}{\f3192\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic Tur;}{\f3195\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic Baltic;}{\f3200\fbidi \fswiss\fcharset0\fprq2 Yu Gothic UI Western;} {\f3198\fbidi \fswiss\fcharset238\fprq2 Yu Gothic UI CE;}{\f3199\fbidi \fswiss\fcharset204\fprq2 Yu Gothic UI Cyr;}{\f3201\fbidi \fswiss\fcharset161\fprq2 Yu Gothic UI Greek;}{\f3202\fbidi \fswiss\fcharset162\fprq2 Yu Gothic UI Tur;} {\f3205\fbidi \fswiss\fcharset186\fprq2 Yu Gothic UI Baltic;}{\f3210\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic UI Western;}{\f3208\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic UI CE;}{\f3209\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic UI Cyr;} {\f3211\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic UI Greek;}{\f3212\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic UI Tur;}{\f3215\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic UI Baltic;}{\f3220\fbidi \fswiss\fcharset0\fprq2 Yu Gothic UI Semibold Western;} {\f3218\fbidi \fswiss\fcharset238\fprq2 Yu Gothic UI Semibold CE;}{\f3219\fbidi \fswiss\fcharset204\fprq2 Yu Gothic UI Semibold Cyr;}{\f3221\fbidi \fswiss\fcharset161\fprq2 Yu Gothic UI Semibold Greek;} {\f3222\fbidi \fswiss\fcharset162\fprq2 Yu Gothic UI Semibold Tur;}{\f3225\fbidi \fswiss\fcharset186\fprq2 Yu Gothic UI Semibold Baltic;}{\f3230\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic UI Semibold Western;} {\f3228\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic UI Semibold CE;}{\f3229\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic UI Semibold Cyr;}{\f3231\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic UI Semibold Greek;} {\f3232\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic UI Semibold Tur;}{\f3235\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic UI Semibold Baltic;}{\f3240\fbidi \fswiss\fcharset0\fprq2 Yu Gothic Light Western;} {\f3238\fbidi \fswiss\fcharset238\fprq2 Yu Gothic Light CE;}{\f3239\fbidi \fswiss\fcharset204\fprq2 Yu Gothic Light Cyr;}{\f3241\fbidi \fswiss\fcharset161\fprq2 Yu Gothic Light Greek;}{\f3242\fbidi \fswiss\fcharset162\fprq2 Yu Gothic Light Tur;} {\f3245\fbidi \fswiss\fcharset186\fprq2 Yu Gothic Light Baltic;}{\f3250\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic Light Western;}{\f3248\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic Light CE;}{\f3249\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic Light Cyr;} {\f3251\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic Light Greek;}{\f3252\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic Light Tur;}{\f3255\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic Light Baltic;} {\f3260\fbidi \fswiss\fcharset0\fprq2 Yu Gothic UI Light Western;}{\f3258\fbidi \fswiss\fcharset238\fprq2 Yu Gothic UI Light CE;}{\f3259\fbidi \fswiss\fcharset204\fprq2 Yu Gothic UI Light Cyr;} {\f3261\fbidi \fswiss\fcharset161\fprq2 Yu Gothic UI Light Greek;}{\f3262\fbidi \fswiss\fcharset162\fprq2 Yu Gothic UI Light Tur;}{\f3265\fbidi \fswiss\fcharset186\fprq2 Yu Gothic UI Light Baltic;} {\f3270\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic UI Light Western;}{\f3268\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic UI Light CE;}{\f3269\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic UI Light Cyr;} {\f3271\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic UI Light Greek;}{\f3272\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic UI Light Tur;}{\f3275\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic UI Light Baltic;} {\f3280\fbidi \fswiss\fcharset0\fprq2 Yu Gothic Medium Western;}{\f3278\fbidi \fswiss\fcharset238\fprq2 Yu Gothic Medium CE;}{\f3279\fbidi \fswiss\fcharset204\fprq2 Yu Gothic Medium Cyr;}{\f3281\fbidi \fswiss\fcharset161\fprq2 Yu Gothic Medium Greek;} {\f3282\fbidi \fswiss\fcharset162\fprq2 Yu Gothic Medium Tur;}{\f3285\fbidi \fswiss\fcharset186\fprq2 Yu Gothic Medium Baltic;}{\f3290\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic Medium Western;}{\f3288\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic Medium CE;} {\f3289\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic Medium Cyr;}{\f3291\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic Medium Greek;}{\f3292\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic Medium Tur;} {\f3295\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic Medium Baltic;}{\f3300\fbidi \fswiss\fcharset0\fprq2 Yu Gothic UI Semilight Western;}{\f3298\fbidi \fswiss\fcharset238\fprq2 Yu Gothic UI Semilight CE;} {\f3299\fbidi \fswiss\fcharset204\fprq2 Yu Gothic UI Semilight Cyr;}{\f3301\fbidi \fswiss\fcharset161\fprq2 Yu Gothic UI Semilight Greek;}{\f3302\fbidi \fswiss\fcharset162\fprq2 Yu Gothic UI Semilight Tur;} {\f3305\fbidi \fswiss\fcharset186\fprq2 Yu Gothic UI Semilight Baltic;}{\f3310\fbidi \fswiss\fcharset0\fprq2 @Yu Gothic UI Semilight Western;}{\f3308\fbidi \fswiss\fcharset238\fprq2 @Yu Gothic UI Semilight CE;} {\f3309\fbidi \fswiss\fcharset204\fprq2 @Yu Gothic UI Semilight Cyr;}{\f3311\fbidi \fswiss\fcharset161\fprq2 @Yu Gothic UI Semilight Greek;}{\f3312\fbidi \fswiss\fcharset162\fprq2 @Yu Gothic UI Semilight Tur;} {\f3315\fbidi \fswiss\fcharset186\fprq2 @Yu Gothic UI Semilight Baltic;}{\f3334\fbidi \fnil\fcharset178\fprq2 Aldhabi (Arabic);}{\f3344\fbidi \froman\fcharset178\fprq2 Andalus (Arabic);}{\f3348\fbidi \fscript\fcharset238\fprq2 Arabic Typesetting CE;} {\f3352\fbidi \fscript\fcharset162\fprq2 Arabic Typesetting Tur;}{\f3354\fbidi \fscript\fcharset178\fprq2 Arabic Typesetting (Arabic);}{\f3355\fbidi \fscript\fcharset186\fprq2 Arabic Typesetting Baltic;} {\f3364\fbidi \fnil\fcharset178\fprq2 Microsoft Uighur (Arabic);}{\f3368\fbidi \fnil\fcharset238\fprq2 Sakkal Majalla CE;}{\f3372\fbidi \fnil\fcharset162\fprq2 Sakkal Majalla Tur;}{\f3374\fbidi \fnil\fcharset178\fprq2 Sakkal Majalla (Arabic);} {\f3375\fbidi \fnil\fcharset186\fprq2 Sakkal Majalla Baltic;}{\f3384\fbidi \froman\fcharset178\fprq2 Simplified Arabic (Arabic);}{\f3394\fbidi \fmodern\fcharset178\fprq1 Simplified Arabic Fixed (Arabic);} {\f3404\fbidi \froman\fcharset178\fprq2 Traditional Arabic (Arabic);}{\f3414\fbidi \fscript\fcharset178\fprq2 Urdu Typesetting (Arabic);}{\f3468\fbidi \fscript\fcharset238\fprq2 Mistral CE;}{\f3469\fbidi \fscript\fcharset204\fprq2 Mistral Cyr;} {\f3471\fbidi \fscript\fcharset161\fprq2 Mistral Greek;}{\f3472\fbidi \fscript\fcharset162\fprq2 Mistral Tur;}{\f3475\fbidi \fscript\fcharset186\fprq2 Mistral Baltic;}{\f3548\fbidi \fswiss\fcharset238\fprq2 Arial Narrow CE;} {\f3549\fbidi \fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f3551\fbidi \fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f3552\fbidi \fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f3555\fbidi \fswiss\fcharset186\fprq2 Arial Narrow Baltic;} {\f3558\fbidi \froman\fcharset238\fprq2 Book Antiqua CE;}{\f3559\fbidi \froman\fcharset204\fprq2 Book Antiqua Cyr;}{\f3561\fbidi \froman\fcharset161\fprq2 Book Antiqua Greek;}{\f3562\fbidi \froman\fcharset162\fprq2 Book Antiqua Tur;} {\f3565\fbidi \froman\fcharset186\fprq2 Book Antiqua Baltic;}{\f3568\fbidi \froman\fcharset238\fprq2 Garamond CE;}{\f3569\fbidi \froman\fcharset204\fprq2 Garamond Cyr;}{\f3571\fbidi \froman\fcharset161\fprq2 Garamond Greek;} {\f3572\fbidi \froman\fcharset162\fprq2 Garamond Tur;}{\f3575\fbidi \froman\fcharset186\fprq2 Garamond Baltic;}{\f3578\fbidi \fscript\fcharset238\fprq2 Monotype Corsiva CE;}{\f3579\fbidi \fscript\fcharset204\fprq2 Monotype Corsiva Cyr;} {\f3581\fbidi \fscript\fcharset161\fprq2 Monotype Corsiva Greek;}{\f3582\fbidi \fscript\fcharset162\fprq2 Monotype Corsiva Tur;}{\f3585\fbidi \fscript\fcharset186\fprq2 Monotype Corsiva Baltic;}{\f3588\fbidi \fswiss\fcharset238\fprq2 Century Gothic CE;} {\f3589\fbidi \fswiss\fcharset204\fprq2 Century Gothic Cyr;}{\f3591\fbidi \fswiss\fcharset161\fprq2 Century Gothic Greek;}{\f3592\fbidi \fswiss\fcharset162\fprq2 Century Gothic Tur;}{\f3595\fbidi \fswiss\fcharset186\fprq2 Century Gothic Baltic;} {\f3662\fbidi \froman\fcharset162\fprq2 Bodoni MT Poster Compressed Tur;}{\f4028\fbidi \fswiss\fcharset238\fprq2 Tw Cen MT CE;}{\f4038\fbidi \fswiss\fcharset238\fprq2 Tw Cen MT Condensed CE;}{\f4178\fbidi \fswiss\fcharset238\fprq2 Haettenschweiler CE;} {\f4179\fbidi \fswiss\fcharset204\fprq2 Haettenschweiler Cyr;}{\f4181\fbidi \fswiss\fcharset161\fprq2 Haettenschweiler Greek;}{\f4182\fbidi \fswiss\fcharset162\fprq2 Haettenschweiler Tur;}{\f4185\fbidi \fswiss\fcharset186\fprq2 Haettenschweiler Baltic;} {\f4218\fbidi \fswiss\fcharset238\fprq2 Gill Sans Ultra Bold Condensed CE;}{\f4228\fbidi \fswiss\fcharset238\fprq2 Gill Sans Ultra Bold CE;}{\f4238\fbidi \fswiss\fcharset238\fprq2 Gill Sans MT Condensed CE;} {\f4248\fbidi \fswiss\fcharset238\fprq2 Gill Sans MT CE;}{\f4258\fbidi \fswiss\fcharset238\fprq2 Gill Sans MT Ext Condensed Bold CE;}{\f4278\fbidi \fswiss\fcharset238\fprq2 Franklin Gothic Medium Cond CE;} {\f4279\fbidi \fswiss\fcharset204\fprq2 Franklin Gothic Medium Cond Cyr;}{\f4281\fbidi \fswiss\fcharset161\fprq2 Franklin Gothic Medium Cond Greek;}{\f4282\fbidi \fswiss\fcharset162\fprq2 Franklin Gothic Medium Cond Tur;} {\f4285\fbidi \fswiss\fcharset186\fprq2 Franklin Gothic Medium Cond Baltic;}{\f4288\fbidi \fswiss\fcharset238\fprq2 Franklin Gothic Heavy CE;}{\f4289\fbidi \fswiss\fcharset204\fprq2 Franklin Gothic Heavy Cyr;} {\f4291\fbidi \fswiss\fcharset161\fprq2 Franklin Gothic Heavy Greek;}{\f4292\fbidi \fswiss\fcharset162\fprq2 Franklin Gothic Heavy Tur;}{\f4295\fbidi \fswiss\fcharset186\fprq2 Franklin Gothic Heavy Baltic;} {\f4298\fbidi \fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f4299\fbidi \fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}{\f4301\fbidi \fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;} {\f4302\fbidi \fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;}{\f4305\fbidi \fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f4308\fbidi \fswiss\fcharset238\fprq2 Franklin Gothic Demi CE;} {\f4309\fbidi \fswiss\fcharset204\fprq2 Franklin Gothic Demi Cyr;}{\f4311\fbidi \fswiss\fcharset161\fprq2 Franklin Gothic Demi Greek;}{\f4312\fbidi \fswiss\fcharset162\fprq2 Franklin Gothic Demi Tur;} {\f4315\fbidi \fswiss\fcharset186\fprq2 Franklin Gothic Demi Baltic;}{\f4318\fbidi \fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}{\f4319\fbidi \fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;} {\f4321\fbidi \fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;}{\f4322\fbidi \fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f4325\fbidi \fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;} {\f4448\fbidi \froman\fcharset238\fprq2 Century Schoolbook CE;}{\f4449\fbidi \froman\fcharset204\fprq2 Century Schoolbook Cyr;}{\f4451\fbidi \froman\fcharset161\fprq2 Century Schoolbook Greek;} {\f4452\fbidi \froman\fcharset162\fprq2 Century Schoolbook Tur;}{\f4455\fbidi \froman\fcharset186\fprq2 Century Schoolbook Baltic;}{\f4478\fbidi \froman\fcharset238\fprq2 Bookman Old Style CE;} {\f4479\fbidi \froman\fcharset204\fprq2 Bookman Old Style Cyr;}{\f4481\fbidi \froman\fcharset161\fprq2 Bookman Old Style Greek;}{\f4482\fbidi \froman\fcharset162\fprq2 Bookman Old Style Tur;} {\f4485\fbidi \froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f4558\fbidi \fswiss\fcharset238\fprq2 MS Reference Sans Serif CE;}{\f4559\fbidi \fswiss\fcharset204\fprq2 MS Reference Sans Serif Cyr;} {\f4561\fbidi \fswiss\fcharset161\fprq2 MS Reference Sans Serif Greek;}{\f4562\fbidi \fswiss\fcharset162\fprq2 MS Reference Sans Serif Tur;}{\f4565\fbidi \fswiss\fcharset186\fprq2 MS Reference Sans Serif Baltic;} {\f4566\fbidi \fswiss\fcharset163\fprq2 MS Reference Sans Serif (Vietnamese);}{\f4588\fbidi \fswiss\fcharset238\fprq2 Tw Cen MT Condensed Extra Bold CE;}{\f4608\fbidi \fnil\fcharset238\fprq2 Gentium Plus CE;} {\f4609\fbidi \fnil\fcharset204\fprq2 Gentium Plus Cyr;}{\f4611\fbidi \fnil\fcharset161\fprq2 Gentium Plus Greek;}{\f4612\fbidi \fnil\fcharset162\fprq2 Gentium Plus Tur;}{\f4615\fbidi \fnil\fcharset186\fprq2 Gentium Plus Baltic;} {\f4616\fbidi \fnil\fcharset163\fprq2 Gentium Plus (Vietnamese);}{\f4618\fbidi \fnil\fcharset238\fprq2 Doulos SIL CE;}{\f4619\fbidi \fnil\fcharset204\fprq2 Doulos SIL Cyr;}{\f4622\fbidi \fnil\fcharset162\fprq2 Doulos SIL Tur;} {\f4625\fbidi \fnil\fcharset186\fprq2 Doulos SIL Baltic;}{\f4626\fbidi \fnil\fcharset163\fprq2 Doulos SIL (Vietnamese);}{\f4640\fbidi \fnil\fcharset0\fprq2 Code2000 Western;}{\f4638\fbidi \fnil\fcharset238\fprq2 Code2000 CE;} {\f4639\fbidi \fnil\fcharset204\fprq2 Code2000 Cyr;}{\f4641\fbidi \fnil\fcharset161\fprq2 Code2000 Greek;}{\f4642\fbidi \fnil\fcharset162\fprq2 Code2000 Tur;}{\f4643\fbidi \fnil\fcharset177\fprq2 Code2000 (Hebrew);} {\f4644\fbidi \fnil\fcharset178\fprq2 Code2000 (Arabic);}{\f4645\fbidi \fnil\fcharset186\fprq2 Code2000 Baltic;}{\f4646\fbidi \fnil\fcharset163\fprq2 Code2000 (Vietnamese);}{\f4647\fbidi \fnil\fcharset222\fprq2 Code2000 (Thai);} {\f4650\fbidi \fnil\fcharset0\fprq2 @Code2000 Western;}{\f4648\fbidi \fnil\fcharset238\fprq2 @Code2000 CE;}{\f4649\fbidi \fnil\fcharset204\fprq2 @Code2000 Cyr;}{\f4651\fbidi \fnil\fcharset161\fprq2 @Code2000 Greek;} {\f4652\fbidi \fnil\fcharset162\fprq2 @Code2000 Tur;}{\f4653\fbidi \fnil\fcharset177\fprq2 @Code2000 (Hebrew);}{\f4654\fbidi \fnil\fcharset178\fprq2 @Code2000 (Arabic);}{\f4655\fbidi \fnil\fcharset186\fprq2 @Code2000 Baltic;} {\f4656\fbidi \fnil\fcharset163\fprq2 @Code2000 (Vietnamese);}{\f4657\fbidi \fnil\fcharset222\fprq2 @Code2000 (Thai);}{\f4666\fbidi \fnil\fcharset163\fprq2 Tai Heritage Pro (Vietnamese);} {\f4854\fbidi \fswiss\fcharset178\fprq2 Noto Nastaliq Urdu (Arabic);}{\f4864\fbidi \fnil\fcharset178\fprq2 Jameel Noori Nastaleeq (Arabic);}{\f4868\fbidi \fnil\fcharset238\fprq2 Andika New Basic CE;} {\f4872\fbidi \fnil\fcharset162\fprq2 Andika New Basic Tur;}{\f4875\fbidi \fnil\fcharset186\fprq2 Andika New Basic Baltic;}{\f4876\fbidi \fnil\fcharset163\fprq2 Andika New Basic (Vietnamese);}{\f4898\fbidi \fnil\fcharset238\fprq2 Andika Mtihani CE;} {\f4899\fbidi \fnil\fcharset204\fprq2 Andika Mtihani Cyr;}{\f4902\fbidi \fnil\fcharset162\fprq2 Andika Mtihani Tur;}{\f4905\fbidi \fnil\fcharset186\fprq2 Andika Mtihani Baltic;}{\f4906\fbidi \fnil\fcharset163\fprq2 Andika Mtihani (Vietnamese);} {\f4908\fbidi \fnil\fcharset238\fprq2 Doulos Graphite Tutorial CE;}{\f4909\fbidi \fnil\fcharset204\fprq2 Doulos Graphite Tutorial Cyr;}{\f4912\fbidi \fnil\fcharset162\fprq2 Doulos Graphite Tutorial Tur;} {\f4915\fbidi \fnil\fcharset186\fprq2 Doulos Graphite Tutorial Baltic;}{\f4916\fbidi \fnil\fcharset163\fprq2 Doulos Graphite Tutorial (Vietnamese);}{\f4918\fbidi \fnil\fcharset238\fprq2 Charis SIL CE;}{\f4919\fbidi \fnil\fcharset204\fprq2 Charis SIL Cyr;} {\f4922\fbidi \fnil\fcharset162\fprq2 Charis SIL Tur;}{\f4925\fbidi \fnil\fcharset186\fprq2 Charis SIL Baltic;}{\f4926\fbidi \fnil\fcharset163\fprq2 Charis SIL (Vietnamese);}{\f4948\fbidi \froman\fcharset238\fprq2 Source Serif Pro Black CE;} {\f4949\fbidi \froman\fcharset204\fprq2 Source Serif Pro Black Cyr;}{\f4951\fbidi \froman\fcharset161\fprq2 Source Serif Pro Black Greek;}{\f4952\fbidi \froman\fcharset162\fprq2 Source Serif Pro Black Tur;} {\f4955\fbidi \froman\fcharset186\fprq2 Source Serif Pro Black Baltic;}{\f4956\fbidi \froman\fcharset163\fprq2 Source Serif Pro Black (Vietnamese);}{\f4958\fbidi \froman\fcharset238\fprq2 Caladea CE;}{\f4962\fbidi \froman\fcharset162\fprq2 Caladea Tur;} {\f4965\fbidi \froman\fcharset186\fprq2 Caladea Baltic;}{\f4998\fbidi \fnil\fcharset238\fprq2 Gentium Basic CE;}{\f5002\fbidi \fnil\fcharset162\fprq2 Gentium Basic Tur;}{\f5008\fbidi \fmodern\fcharset238\fprq1 Source Code Pro Black CE;} {\f5009\fbidi \fmodern\fcharset204\fprq1 Source Code Pro Black Cyr;}{\f5011\fbidi \fmodern\fcharset161\fprq1 Source Code Pro Black Greek;}{\f5012\fbidi \fmodern\fcharset162\fprq1 Source Code Pro Black Tur;} {\f5015\fbidi \fmodern\fcharset186\fprq1 Source Code Pro Black Baltic;}{\f5016\fbidi \fmodern\fcharset163\fprq1 Source Code Pro Black (Vietnamese);}{\f5018\fbidi \fnil\fcharset238\fprq2 Amiri CE;}{\f5022\fbidi \fnil\fcharset162\fprq2 Amiri Tur;} {\f5024\fbidi \fnil\fcharset178\fprq2 Amiri (Arabic);}{\f5025\fbidi \fnil\fcharset186\fprq2 Amiri Baltic;}{\f5028\fbidi \fnil\fcharset238\fprq2 Alef CE;}{\f5032\fbidi \fnil\fcharset162\fprq2 Alef Tur;}{\f5033\fbidi \fnil\fcharset177\fprq2 Alef (Hebrew);} {\f5035\fbidi \fnil\fcharset186\fprq2 Alef Baltic;}{\f5038\fbidi \fswiss\fcharset238\fprq2 Carlito CE;}{\f5039\fbidi \fswiss\fcharset204\fprq2 Carlito Cyr;}{\f5041\fbidi \fswiss\fcharset161\fprq2 Carlito Greek;} {\f5042\fbidi \fswiss\fcharset162\fprq2 Carlito Tur;}{\f5045\fbidi \fswiss\fcharset186\fprq2 Carlito Baltic;}{\f5046\fbidi \fswiss\fcharset163\fprq2 Carlito (Vietnamese);}{\f5048\fbidi \fnil\fcharset238\fprq2 DejaVu Math TeX Gyre CE;} {\f5052\fbidi \fnil\fcharset162\fprq2 DejaVu Math TeX Gyre Tur;}{\f5055\fbidi \fnil\fcharset186\fprq2 DejaVu Math TeX Gyre Baltic;}{\f5056\fbidi \fnil\fcharset163\fprq2 DejaVu Math TeX Gyre (Vietnamese);} {\f5058\fbidi \fnil\fcharset238\fprq2 David Libre CE;}{\f5062\fbidi \fnil\fcharset162\fprq2 David Libre Tur;}{\f5063\fbidi \fnil\fcharset177\fprq2 David Libre (Hebrew);}{\f5066\fbidi \fnil\fcharset163\fprq2 David Libre (Vietnamese);} {\f5088\fbidi \fswiss\fcharset238\fprq2 Source Sans Pro Black CE;}{\f5089\fbidi \fswiss\fcharset204\fprq2 Source Sans Pro Black Cyr;}{\f5091\fbidi \fswiss\fcharset161\fprq2 Source Sans Pro Black Greek;} {\f5092\fbidi \fswiss\fcharset162\fprq2 Source Sans Pro Black Tur;}{\f5095\fbidi \fswiss\fcharset186\fprq2 Source Sans Pro Black Baltic;}{\f5096\fbidi \fswiss\fcharset163\fprq2 Source Sans Pro Black (Vietnamese);} {\f5138\fbidi \fswiss\fcharset238\fprq2 DejaVu Sans CE;}{\f5139\fbidi \fswiss\fcharset204\fprq2 DejaVu Sans Cyr;}{\f5141\fbidi \fswiss\fcharset161\fprq2 DejaVu Sans Greek;}{\f5142\fbidi \fswiss\fcharset162\fprq2 DejaVu Sans Tur;} {\f5143\fbidi \fswiss\fcharset177\fprq2 DejaVu Sans (Hebrew);}{\f5144\fbidi \fswiss\fcharset178\fprq2 DejaVu Sans (Arabic);}{\f5145\fbidi \fswiss\fcharset186\fprq2 DejaVu Sans Baltic;}{\f5146\fbidi \fswiss\fcharset163\fprq2 DejaVu Sans (Vietnamese);} {\f5148\fbidi \fswiss\fcharset238\fprq2 DejaVu Sans Light CE;}{\f5149\fbidi \fswiss\fcharset204\fprq2 DejaVu Sans Light Cyr;}{\f5151\fbidi \fswiss\fcharset161\fprq2 DejaVu Sans Light Greek;}{\f5152\fbidi \fswiss\fcharset162\fprq2 DejaVu Sans Light Tur;} {\f5155\fbidi \fswiss\fcharset186\fprq2 DejaVu Sans Light Baltic;}{\f5156\fbidi \fswiss\fcharset163\fprq2 DejaVu Sans Light (Vietnamese);}{\f5158\fbidi \fswiss\fcharset238\fprq2 DejaVu Sans Condensed CE;} {\f5159\fbidi \fswiss\fcharset204\fprq2 DejaVu Sans Condensed Cyr;}{\f5161\fbidi \fswiss\fcharset161\fprq2 DejaVu Sans Condensed Greek;}{\f5162\fbidi \fswiss\fcharset162\fprq2 DejaVu Sans Condensed Tur;} {\f5163\fbidi \fswiss\fcharset177\fprq2 DejaVu Sans Condensed (Hebrew);}{\f5164\fbidi \fswiss\fcharset178\fprq2 DejaVu Sans Condensed (Arabic);}{\f5165\fbidi \fswiss\fcharset186\fprq2 DejaVu Sans Condensed Baltic;} {\f5166\fbidi \fswiss\fcharset163\fprq2 DejaVu Sans Condensed (Vietnamese);}{\f5168\fbidi \fmodern\fcharset238\fprq1 DejaVu Sans Mono CE;}{\f5169\fbidi \fmodern\fcharset204\fprq1 DejaVu Sans Mono Cyr;} {\f5171\fbidi \fmodern\fcharset161\fprq1 DejaVu Sans Mono Greek;}{\f5172\fbidi \fmodern\fcharset162\fprq1 DejaVu Sans Mono Tur;}{\f5174\fbidi \fmodern\fcharset178\fprq1 DejaVu Sans Mono (Arabic);} {\f5175\fbidi \fmodern\fcharset186\fprq1 DejaVu Sans Mono Baltic;}{\f5176\fbidi \fmodern\fcharset163\fprq1 DejaVu Sans Mono (Vietnamese);}{\f5178\fbidi \fnil\fcharset238\fprq2 Gentium Book Basic CE;} {\f5182\fbidi \fnil\fcharset162\fprq2 Gentium Book Basic Tur;}{\f5198\fbidi \fnil\fcharset238\fprq2 Rubik CE;}{\f5199\fbidi \fnil\fcharset204\fprq2 Rubik Cyr;}{\f5202\fbidi \fnil\fcharset162\fprq2 Rubik Tur;} {\f5203\fbidi \fnil\fcharset177\fprq2 Rubik (Hebrew);}{\f5205\fbidi \fnil\fcharset186\fprq2 Rubik Baltic;}{\f5208\fbidi \fmodern\fcharset238\fprq1 Noto Mono CE;}{\f5209\fbidi \fmodern\fcharset204\fprq1 Noto Mono Cyr;} {\f5211\fbidi \fmodern\fcharset161\fprq1 Noto Mono Greek;}{\f5212\fbidi \fmodern\fcharset162\fprq1 Noto Mono Tur;}{\f5215\fbidi \fmodern\fcharset186\fprq1 Noto Mono Baltic;}{\f5216\fbidi \fmodern\fcharset163\fprq1 Noto Mono (Vietnamese);} {\f5224\fbidi \fswiss\fcharset178\fprq2 Noto Naskh Arabic (Arabic);}{\f5234\fbidi \fswiss\fcharset178\fprq2 Noto Naskh Arabic UI (Arabic);}{\f5378\fbidi \fmodern\fcharset238\fprq1 Source Code Pro CE;} {\f5379\fbidi \fmodern\fcharset204\fprq1 Source Code Pro Cyr;}{\f5381\fbidi \fmodern\fcharset161\fprq1 Source Code Pro Greek;}{\f5382\fbidi \fmodern\fcharset162\fprq1 Source Code Pro Tur;}{\f5385\fbidi \fmodern\fcharset186\fprq1 Source Code Pro Baltic;} {\f5386\fbidi \fmodern\fcharset163\fprq1 Source Code Pro (Vietnamese);}{\f5388\fbidi \fmodern\fcharset238\fprq1 Source Code Pro ExtraLight CE;}{\f5389\fbidi \fmodern\fcharset204\fprq1 Source Code Pro ExtraLight Cyr;} {\f5391\fbidi \fmodern\fcharset161\fprq1 Source Code Pro ExtraLight Greek;}{\f5392\fbidi \fmodern\fcharset162\fprq1 Source Code Pro ExtraLight Tur;}{\f5395\fbidi \fmodern\fcharset186\fprq1 Source Code Pro ExtraLight Baltic;} {\f5396\fbidi \fmodern\fcharset163\fprq1 Source Code Pro ExtraLight (Vietnamese);}{\f5398\fbidi \fmodern\fcharset238\fprq1 Source Code Pro Light CE;}{\f5399\fbidi \fmodern\fcharset204\fprq1 Source Code Pro Light Cyr;} {\f5401\fbidi \fmodern\fcharset161\fprq1 Source Code Pro Light Greek;}{\f5402\fbidi \fmodern\fcharset162\fprq1 Source Code Pro Light Tur;}{\f5405\fbidi \fmodern\fcharset186\fprq1 Source Code Pro Light Baltic;} {\f5406\fbidi \fmodern\fcharset163\fprq1 Source Code Pro Light (Vietnamese);}{\f5408\fbidi \fmodern\fcharset238\fprq1 Source Code Pro Medium CE;}{\f5409\fbidi \fmodern\fcharset204\fprq1 Source Code Pro Medium Cyr;} {\f5411\fbidi \fmodern\fcharset161\fprq1 Source Code Pro Medium Greek;}{\f5412\fbidi \fmodern\fcharset162\fprq1 Source Code Pro Medium Tur;}{\f5415\fbidi \fmodern\fcharset186\fprq1 Source Code Pro Medium Baltic;} {\f5416\fbidi \fmodern\fcharset163\fprq1 Source Code Pro Medium (Vietnamese);}{\f5418\fbidi \fmodern\fcharset238\fprq1 Source Code Pro Semibold CE;}{\f5419\fbidi \fmodern\fcharset204\fprq1 Source Code Pro Semibold Cyr;} {\f5421\fbidi \fmodern\fcharset161\fprq1 Source Code Pro Semibold Greek;}{\f5422\fbidi \fmodern\fcharset162\fprq1 Source Code Pro Semibold Tur;}{\f5425\fbidi \fmodern\fcharset186\fprq1 Source Code Pro Semibold Baltic;} {\f5426\fbidi \fmodern\fcharset163\fprq1 Source Code Pro Semibold (Vietnamese);}{\f5428\fbidi \fswiss\fcharset238\fprq2 Source Sans Pro CE;}{\f5429\fbidi \fswiss\fcharset204\fprq2 Source Sans Pro Cyr;} {\f5431\fbidi \fswiss\fcharset161\fprq2 Source Sans Pro Greek;}{\f5432\fbidi \fswiss\fcharset162\fprq2 Source Sans Pro Tur;}{\f5435\fbidi \fswiss\fcharset186\fprq2 Source Sans Pro Baltic;} {\f5436\fbidi \fswiss\fcharset163\fprq2 Source Sans Pro (Vietnamese);}{\f5438\fbidi \fswiss\fcharset238\fprq2 Source Sans Pro ExtraLight CE;}{\f5439\fbidi \fswiss\fcharset204\fprq2 Source Sans Pro ExtraLight Cyr;} {\f5441\fbidi \fswiss\fcharset161\fprq2 Source Sans Pro ExtraLight Greek;}{\f5442\fbidi \fswiss\fcharset162\fprq2 Source Sans Pro ExtraLight Tur;}{\f5445\fbidi \fswiss\fcharset186\fprq2 Source Sans Pro ExtraLight Baltic;} {\f5446\fbidi \fswiss\fcharset163\fprq2 Source Sans Pro ExtraLight (Vietnamese);}{\f5448\fbidi \fswiss\fcharset238\fprq2 Source Sans Pro Light CE;}{\f5449\fbidi \fswiss\fcharset204\fprq2 Source Sans Pro Light Cyr;} {\f5451\fbidi \fswiss\fcharset161\fprq2 Source Sans Pro Light Greek;}{\f5452\fbidi \fswiss\fcharset162\fprq2 Source Sans Pro Light Tur;}{\f5455\fbidi \fswiss\fcharset186\fprq2 Source Sans Pro Light Baltic;} {\f5456\fbidi \fswiss\fcharset163\fprq2 Source Sans Pro Light (Vietnamese);}{\f5458\fbidi \fswiss\fcharset238\fprq2 Source Sans Pro Semibold CE;}{\f5459\fbidi \fswiss\fcharset204\fprq2 Source Sans Pro Semibold Cyr;} {\f5461\fbidi \fswiss\fcharset161\fprq2 Source Sans Pro Semibold Greek;}{\f5462\fbidi \fswiss\fcharset162\fprq2 Source Sans Pro Semibold Tur;}{\f5465\fbidi \fswiss\fcharset186\fprq2 Source Sans Pro Semibold Baltic;} {\f5466\fbidi \fswiss\fcharset163\fprq2 Source Sans Pro Semibold (Vietnamese);}{\f5468\fbidi \froman\fcharset238\fprq2 Source Serif Pro CE;}{\f5469\fbidi \froman\fcharset204\fprq2 Source Serif Pro Cyr;} {\f5471\fbidi \froman\fcharset161\fprq2 Source Serif Pro Greek;}{\f5472\fbidi \froman\fcharset162\fprq2 Source Serif Pro Tur;}{\f5475\fbidi \froman\fcharset186\fprq2 Source Serif Pro Baltic;} {\f5476\fbidi \froman\fcharset163\fprq2 Source Serif Pro (Vietnamese);}{\f5478\fbidi \froman\fcharset238\fprq2 Source Serif Pro ExtraLight CE;}{\f5479\fbidi \froman\fcharset204\fprq2 Source Serif Pro ExtraLight Cyr;} {\f5481\fbidi \froman\fcharset161\fprq2 Source Serif Pro ExtraLight Greek;}{\f5482\fbidi \froman\fcharset162\fprq2 Source Serif Pro ExtraLight Tur;}{\f5485\fbidi \froman\fcharset186\fprq2 Source Serif Pro ExtraLight Baltic;} {\f5486\fbidi \froman\fcharset163\fprq2 Source Serif Pro ExtraLight (Vietnamese);}{\f5488\fbidi \froman\fcharset238\fprq2 Source Serif Pro Light CE;}{\f5489\fbidi \froman\fcharset204\fprq2 Source Serif Pro Light Cyr;} {\f5491\fbidi \froman\fcharset161\fprq2 Source Serif Pro Light Greek;}{\f5492\fbidi \froman\fcharset162\fprq2 Source Serif Pro Light Tur;}{\f5495\fbidi \froman\fcharset186\fprq2 Source Serif Pro Light Baltic;} {\f5496\fbidi \froman\fcharset163\fprq2 Source Serif Pro Light (Vietnamese);}{\f5498\fbidi \froman\fcharset238\fprq2 Source Serif Pro Semibold CE;}{\f5499\fbidi \froman\fcharset204\fprq2 Source Serif Pro Semibold Cyr;} {\f5501\fbidi \froman\fcharset161\fprq2 Source Serif Pro Semibold Greek;}{\f5502\fbidi \froman\fcharset162\fprq2 Source Serif Pro Semibold Tur;}{\f5505\fbidi \froman\fcharset186\fprq2 Source Serif Pro Semibold Baltic;} {\f5506\fbidi \froman\fcharset163\fprq2 Source Serif Pro Semibold (Vietnamese);}{\f5508\fbidi \fnil\fcharset238\fprq2 Khmer Mondulkiri CE;}{\f5518\fbidi \froman\fcharset238\fprq2 DejaVu Serif CE;}{\f5519\fbidi \froman\fcharset204\fprq2 DejaVu Serif Cyr;} {\f5521\fbidi \froman\fcharset161\fprq2 DejaVu Serif Greek;}{\f5522\fbidi \froman\fcharset162\fprq2 DejaVu Serif Tur;}{\f5525\fbidi \froman\fcharset186\fprq2 DejaVu Serif Baltic;}{\f5528\fbidi \froman\fcharset238\fprq2 DejaVu Serif Condensed CE;} {\f5529\fbidi \froman\fcharset204\fprq2 DejaVu Serif Condensed Cyr;}{\f5531\fbidi \froman\fcharset161\fprq2 DejaVu Serif Condensed Greek;}{\f5532\fbidi \froman\fcharset162\fprq2 DejaVu Serif Condensed Tur;} {\f5535\fbidi \froman\fcharset186\fprq2 DejaVu Serif Condensed Baltic;}{\f5568\fbidi \fnil\fcharset238\fprq2 Charis GrcRegTest CE;}{\f5569\fbidi \fnil\fcharset204\fprq2 Charis GrcRegTest Cyr;}{\f5572\fbidi \fnil\fcharset162\fprq2 Charis GrcRegTest Tur;} {\f5575\fbidi \fnil\fcharset186\fprq2 Charis GrcRegTest Baltic;}{\f5576\fbidi \fnil\fcharset163\fprq2 Charis GrcRegTest (Vietnamese);}{\f5614\fbidi \fnil\fcharset178\fprq2 Scheherazade GrcRegTest (Arabic);} {\f5644\fbidi \fnil\fcharset178\fprq2 Awami Nastaliq (Arabic);}{\f5648\fbidi \fnil\fcharset238\fprq2 Alkalami Released CE;}{\f5654\fbidi \fnil\fcharset178\fprq2 Alkalami Released (Arabic);}{\f5655\fbidi \fnil\fcharset186\fprq2 Alkalami Released Baltic;} {\f5664\fbidi \fnil\fcharset178\fprq2 Harmattan (Arabic);}{\f5668\fbidi \fswiss\fcharset238\fprq2 Lato Black CE;}{\f5672\fbidi \fswiss\fcharset162\fprq2 Lato Black Tur;}{\f5675\fbidi \fswiss\fcharset186\fprq2 Lato Black Baltic;} {\f5678\fbidi \fswiss\fcharset238\fprq2 Lato CE;}{\f5682\fbidi \fswiss\fcharset162\fprq2 Lato Tur;}{\f5685\fbidi \fswiss\fcharset186\fprq2 Lato Baltic;}{\f5688\fbidi \fswiss\fcharset238\fprq2 Lato Light CE;} {\f5692\fbidi \fswiss\fcharset162\fprq2 Lato Light Tur;}{\f5695\fbidi \fswiss\fcharset186\fprq2 Lato Light Baltic;}{\f5698\fbidi \fswiss\fcharset238\fprq2 Lato Hairline CE;}{\f5702\fbidi \fswiss\fcharset162\fprq2 Lato Hairline Tur;} {\f5705\fbidi \fswiss\fcharset186\fprq2 Lato Hairline Baltic;}{\f5708\fbidi \fnil\fcharset238\fprq2 Amarante CE;}{\f5712\fbidi \fnil\fcharset162\fprq2 Amarante Tur;}{\f5715\fbidi \fnil\fcharset186\fprq2 Amarante Baltic;} {\f5738\fbidi \fnil\fcharset238\fprq2 Exo 2 Black CE;}{\f5739\fbidi \fnil\fcharset204\fprq2 Exo 2 Black Cyr;}{\f5742\fbidi \fnil\fcharset162\fprq2 Exo 2 Black Tur;}{\f5745\fbidi \fnil\fcharset186\fprq2 Exo 2 Black Baltic;} {\f5746\fbidi \fnil\fcharset163\fprq2 Exo 2 Black (Vietnamese);}{\f5748\fbidi \fnil\fcharset238\fprq2 Exo 2 CE;}{\f5749\fbidi \fnil\fcharset204\fprq2 Exo 2 Cyr;}{\f5752\fbidi \fnil\fcharset162\fprq2 Exo 2 Tur;} {\f5755\fbidi \fnil\fcharset186\fprq2 Exo 2 Baltic;}{\f5756\fbidi \fnil\fcharset163\fprq2 Exo 2 (Vietnamese);}{\f5758\fbidi \fnil\fcharset238\fprq2 Exo 2 ExtraBold CE;}{\f5759\fbidi \fnil\fcharset204\fprq2 Exo 2 ExtraBold Cyr;} {\f5762\fbidi \fnil\fcharset162\fprq2 Exo 2 ExtraBold Tur;}{\f5765\fbidi \fnil\fcharset186\fprq2 Exo 2 ExtraBold Baltic;}{\f5766\fbidi \fnil\fcharset163\fprq2 Exo 2 ExtraBold (Vietnamese);}{\f5784\fbidi \fnil\fcharset178\fprq2 Alkalami (Arabic);} {\f5794\fbidi \fnil\fcharset178\fprq2 Alkalami Light (Arabic);}{\f5818\fbidi \fswiss\fcharset238\fprq2 Liberation Sans Narrow CE;}{\f5819\fbidi \fswiss\fcharset204\fprq2 Liberation Sans Narrow Cyr;} {\f5821\fbidi \fswiss\fcharset161\fprq2 Liberation Sans Narrow Greek;}{\f5822\fbidi \fswiss\fcharset162\fprq2 Liberation Sans Narrow Tur;}{\f5825\fbidi \fswiss\fcharset186\fprq2 Liberation Sans Narrow Baltic;} {\f5828\fbidi \fmodern\fcharset238\fprq1 Liberation Mono CE;}{\f5829\fbidi \fmodern\fcharset204\fprq1 Liberation Mono Cyr;}{\f5831\fbidi \fmodern\fcharset161\fprq1 Liberation Mono Greek;}{\f5832\fbidi \fmodern\fcharset162\fprq1 Liberation Mono Tur;} {\f5833\fbidi \fmodern\fcharset177\fprq1 Liberation Mono (Hebrew);}{\f5835\fbidi \fmodern\fcharset186\fprq1 Liberation Mono Baltic;}{\f5836\fbidi \fmodern\fcharset163\fprq1 Liberation Mono (Vietnamese);} {\f5838\fbidi \fswiss\fcharset238\fprq2 Liberation Sans CE;}{\f5839\fbidi \fswiss\fcharset204\fprq2 Liberation Sans Cyr;}{\f5841\fbidi \fswiss\fcharset161\fprq2 Liberation Sans Greek;}{\f5842\fbidi \fswiss\fcharset162\fprq2 Liberation Sans Tur;} {\f5843\fbidi \fswiss\fcharset177\fprq2 Liberation Sans (Hebrew);}{\f5845\fbidi \fswiss\fcharset186\fprq2 Liberation Sans Baltic;}{\f5846\fbidi \fswiss\fcharset163\fprq2 Liberation Sans (Vietnamese);} {\f5848\fbidi \froman\fcharset238\fprq2 Liberation Serif CE;}{\f5849\fbidi \froman\fcharset204\fprq2 Liberation Serif Cyr;}{\f5851\fbidi \froman\fcharset161\fprq2 Liberation Serif Greek;}{\f5852\fbidi \froman\fcharset162\fprq2 Liberation Serif Tur;} {\f5853\fbidi \froman\fcharset177\fprq2 Liberation Serif (Hebrew);}{\f5855\fbidi \froman\fcharset186\fprq2 Liberation Serif Baltic;}{\f5856\fbidi \froman\fcharset163\fprq2 Liberation Serif (Vietnamese);} {\f5864\fbidi \fnil\fcharset178\fprq2 Scheherazade (Arabic);}{\f5868\fbidi \fnil\fcharset238\fprq2 Linux Biolinum G CE;}{\f5869\fbidi \fnil\fcharset204\fprq2 Linux Biolinum G Cyr;}{\f5871\fbidi \fnil\fcharset161\fprq2 Linux Biolinum G Greek;} {\f5872\fbidi \fnil\fcharset162\fprq2 Linux Biolinum G Tur;}{\f5873\fbidi \fnil\fcharset177\fprq2 Linux Biolinum G (Hebrew);}{\f5875\fbidi \fnil\fcharset186\fprq2 Linux Biolinum G Baltic;} {\f5876\fbidi \fnil\fcharset163\fprq2 Linux Biolinum G (Vietnamese);}{\f5878\fbidi \fnil\fcharset238\fprq2 Linux Libertine Display G CE;}{\f5879\fbidi \fnil\fcharset204\fprq2 Linux Libertine Display G Cyr;} {\f5881\fbidi \fnil\fcharset161\fprq2 Linux Libertine Display G Greek;}{\f5882\fbidi \fnil\fcharset162\fprq2 Linux Libertine Display G Tur;}{\f5883\fbidi \fnil\fcharset177\fprq2 Linux Libertine Display G (Hebrew);} {\f5885\fbidi \fnil\fcharset186\fprq2 Linux Libertine Display G Baltic;}{\f5886\fbidi \fnil\fcharset163\fprq2 Linux Libertine Display G (Vietnamese);}{\f5888\fbidi \fnil\fcharset238\fprq2 Linux Libertine G CE;} {\f5889\fbidi \fnil\fcharset204\fprq2 Linux Libertine G Cyr;}{\f5891\fbidi \fnil\fcharset161\fprq2 Linux Libertine G Greek;}{\f5892\fbidi \fnil\fcharset162\fprq2 Linux Libertine G Tur;}{\f5893\fbidi \fnil\fcharset177\fprq2 Linux Libertine G (Hebrew);} {\f5895\fbidi \fnil\fcharset186\fprq2 Linux Libertine G Baltic;}{\f5896\fbidi \fnil\fcharset163\fprq2 Linux Libertine G (Vietnamese);}{\f5918\fbidi \fnil\fcharset238\fprq2 Berkshire Swash CE;}{\f5922\fbidi \fnil\fcharset162\fprq2 Berkshire Swash Tur;} {\f5925\fbidi \fnil\fcharset186\fprq2 Berkshire Swash Baltic;}{\f5944\fbidi \fnil\fcharset178\fprq2 Scheherazade New (Arabic);}{\f5954\fbidi \fnil\fcharset178\fprq2 Awami Nastaliq Dev (Arabic);} {\f6026\fbidi \froman\fcharset163\fprq2 Times New Roman CYR (Vietnamese);}{\f6036\fbidi \froman\fcharset163\fprq2 Times New Roman TUR (Vietnamese);}{\f7086\fbidi \fnil\fcharset163\fprq2 Blue Highway Condensed (Vietnamese);} {\f7106\fbidi \fnil\fcharset163\fprq2 Blue Highway Linocut (Vietnamese);}{\f7524\fbidi \fnil\fcharset178\fprq2 Scheherazade Graphite Alpha (Arabic);}{\f7546\fbidi \fnil\fcharset163\fprq2 Adinatha Tamil Brahmi (Vietnamese);} {\f7576\fbidi \fnil\fcharset163\fprq2 Gentium Plus Compact (Vietnamese);}{\f8735\fbidi \fnil\fcharset186\fprq2 Cam Cam SILSophiaL Reprise Baltic;}{\f8736\fbidi \fnil\fcharset163\fprq2 Cam Cam SILSophiaL Reprise (Vietnamese);} {\f8795\fbidi \fnil\fcharset186\fprq2 Doulos Justification Test Baltic;}{\f8796\fbidi \fnil\fcharset163\fprq2 Doulos Justification Test (Vietnamese);}{\f8806\fbidi \fnil\fcharset163\fprq2 Doulos SIL SmallCaps (Vietnamese);} {\f8836\fbidi \fnil\fcharset163\fprq2 Test Test SILSophia Reprise (Vietnamese);}{\f8866\fbidi \fnil\fcharset163\fprq2 FwGraphiteTest Roman (Vietnamese);}{\f8926\fbidi \fnil\fcharset163\fprq2 Graphite Test Roman (Vietnamese);} {\f9114\fbidi \fnil\fcharset178\fprq2 Scheherazade Gr Experimental (Arabic);}{\f9124\fbidi \fnil\fcharset178\fprq2 Scheherazade NP hacked exp (Arabic);}{\f9356\fbidi \fnil\fcharset163\fprq2 Shifinagh Niger Graphite (Vietnamese);} {\f9396\fbidi \fnil\fcharset163\fprq2 Shifinagh Niger SIL Test (Vietnamese);}{\f9539\fbidi \fnil\fcharset204\fprq2 Graphite Test Charis PConstr Cyr;}{\f9542\fbidi \fnil\fcharset162\fprq2 Graphite Test Charis PConstr Tur;} {\f9545\fbidi \fnil\fcharset186\fprq2 Graphite Test Charis PConstr Baltic;}{\f9546\fbidi \fnil\fcharset163\fprq2 Graphite Test Charis PConstr (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;} {\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} {\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} {\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} {\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 } \noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{ \s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon43 \snext24 \slink15 \sqformat heading 1;}{\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 \sbasedon43 \snext24 \slink16 \sqformat \styrsid6294731 heading 2;}{\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 \slink17 \sqformat heading 3;}{\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 \slink18 \sqformat heading 4;}{\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar\tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 \slink19 \sqformat heading 5;}{\s6\ql \fi-1152\li1152\ri0\sb240\sa60\widctlpar\tx1152\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin1152\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink20 \sqformat heading 6;}{\s7\ql \fi-1296\li1296\ri0\sb240\sa60\widctlpar \tx1296\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin1296\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink21 \sqformat heading 7;}{ \s8\ql \fi-1440\li1440\ri0\sb240\sa60\widctlpar\tx1440\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink22 \sqformat heading 8;}{\s9\ql \fi-1584\li1584\ri0\sb240\sa60\widctlpar\tx1584\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin1584\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink23 \sqformat heading 9;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\kerning28 \sbasedon10 \slink1 \slocked Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\kerning20 \sbasedon10 \slink2 \slocked \styrsid6294731 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20 \sbasedon10 \slink3 \slocked Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20 \sbasedon10 \slink4 \slocked Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \i\fs20 \sbasedon10 \slink5 \slocked Heading 5 Char;}{\*\cs20 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink6 \slocked \ssemihidden \spriority9 Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \fs24\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink7 \slocked \ssemihidden \spriority9 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \ai\af0\afs24 \ltrch\fcs0 \i\fs24\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink8 \slocked \ssemihidden \spriority9 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink9 \slocked \ssemihidden \spriority9 Heading 9 Char;}{ \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 \slink25 \styrsid992611 Body Text,Body Text Bullet;}{\*\cs25 \additive \rtlch\fcs1 \af0\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 \slink24 \slocked \styrsid14431810 Body Text Char,Body Text Bullet Char;}{ \s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 \slink27 \ssemihidden footnote text,ft;}{\*\cs27 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20 \sbasedon10 \slink26 \slocked \ssemihidden Footnote Text Char,ft Char;}{\s28\ql \li0\ri0\widctlpar \tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 \slink29 footer;}{\*\cs29 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20 \sbasedon10 \slink28 \slocked \ssemihidden Footer Char;}{\*\cs30 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20 \sbasedon10 code;}{\s31\ql \li720\ri0\sb120\keep\widctlpar \tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext24 \slink77 \styrsid10032279 Display Code;}{\*\cs32 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s33\ql \li0\ri0\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \spriority39 toc 2;}{\s34\ql \li0\ri0\sb120\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \spriority39 toc 1;}{\s35\ql \li220\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toc 3;}{\s36\ql \li440\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toc 4;}{\s37\ql \li660\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin660\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toc 5;}{\s38\ql \li880\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin880\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toc 6;}{\s39\ql \li1100\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1100\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toc 7;}{\s40\ql \li1320\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1320\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toc 8;}{\s41\ql \li1540\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1540\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toc 9;}{\*\cs42 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 \sqformat Emphasis;}{\s43\ql \li-720\ri0\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Heading Base;}{\*\cs44 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{ \s45\ql \li0\ri0\sb600\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext45 Paper Title,pt;}{ \s46\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon45 \snext46 Paper Subtitle,ps;}{ \s47\ql \li0\ri0\sb240\sa1200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext47 Author,au;}{ \s48\ql \fi-360\li360\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext48 Biblio Entry,be;}{ \s49\ql \li360\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext49 Source Code,sc;}{ \s50\ql \li720\ri720\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin720\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext50 Abstract Text,at;}{ \s51\ql \fi-864\li720\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon3 \snext51 Abstract Heading,ah;}{\s52\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\expnd-2\expndtw-10\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext52 Table Header,th;}{\*\cs53 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\f1\fs20\expnd-2\expndtw-10 \sbasedon10 Keyword,kw;}{ \s54\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\expnd-2\expndtw-10\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon52 \snext54 Table Entry,te;}{\s55\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Table Caption,tc;}{\*\cs56 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \fs16 \sbasedon10 Keystroke,ks;}{\s57\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext57 \slink58 header;}{\*\cs58 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20 \sbasedon10 \slink57 \slocked \ssemihidden Header Char;}{\*\cs59 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs60 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf12 \sbasedon10 FollowedHyperlink;}{\s61\ql \li720\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext24 CodeSample;}{\*\cs62 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\f143 \sbasedon10 GlossItem;}{ \s63\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af142\afs16\alang1025 \ltrch\fcs0 \f142\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext63 \slink64 \ssemihidden Balloon Text;} {\*\cs64 \additive \rtlch\fcs1 \af142\afs16 \ltrch\fcs0 \f142\fs16 \sbasedon10 \slink63 \slocked \ssemihidden Balloon Text Char;}{\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext65 \sautoupd List Bullet;}{\s66\ql \fi-360\li720\ri0\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext66 \sautoupd List Bullet 2;}{\s67\ql \fi-220\li220\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 1;}{\s68\ql \fi-220\li440\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 2;}{\s69\ql \fi-220\li660\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin660\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 3;}{\s70\ql \fi-220\li880\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin880\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 4;}{\s71\ql \fi-220\li1100\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1100\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 5;}{\s72\ql \fi-220\li1320\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1320\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 6;}{\s73\ql \fi-220\li1540\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1540\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 7;}{\s74\ql \fi-220\li1760\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1760\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 8;}{ \s75\ql \fi-220\li1980\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1980\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 9;} {\s76\ql \li0\ri0\sb360\sa240\widctlpar\brdrt\brdrs\brdrw30 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext67 \ssemihidden index heading;}{\*\cs77 \additive \rtlch\fcs1 \af0\alang1025 \ltrch\fcs0 \f2\fs22\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon25 \slink31 \slocked \styrsid14431810 Display Code Char;}{\*\cs78 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf15 \sbasedon10 \ssemihidden \styrsid683565 Placeholder Text;}{\s79\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext79 \shidden \ssemihidden \styrsid1053901 Revision;}{\s80\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext80 \slink82 \sqformat \spriority0 \styrsid14818913 Code;}{\s81\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f314\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext81 \slink83 \sqformat \spriority0 \styrsid5707854 TextSample;}{\*\cs82 \additive \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon25 \slink80 \slocked \spriority0 \styrsid14818913 Code Char;}{\*\cs83 \additive \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f314\fs20\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon25 \slink81 \slocked \spriority0 \styrsid5707854 TextSample Char;}}{\*\listtable{\list\listtemplateid-845382912\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listname ;}\listid-125}{\list\listtemplateid239378498\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}{\list\listtemplateid-698216022\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\hres0\chhres0 \li360\jclisttab\tx720\lin360 }{\listname ;}\listid91511459}{\list\listtemplateid-698216022\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\hres0\chhres0 \li360\jclisttab\tx720\lin360 }{\listname ;}\listid333609426}{\list\listtemplateid-2091755078\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid-717961574\'09Region \'00.;}{\levelnumbers\'08;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 \leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2 \leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 \leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2 \leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 \leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2 \leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid402290665} {\list\listtemplateid-465941844\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 } {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel \levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23 \levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 \leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 \levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 \levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid497313154}{\list\listtemplateid-618520602\listhybrid{\listlevel\levelnfc23\levelnfcn23 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 \levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360 \levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0 {\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 \'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid573012115}{\list\listtemplateid-1154729370\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360 \levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0 {\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 \'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689 \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691 \'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 \'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid703141571}{\list\listtemplateid625123376{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s1\fi-432\li432\jclisttab\tx432\lin432 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s2\fi-576\li576\jclisttab\tx576\lin576 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s3\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s4\fi-864\li864\jclisttab\tx864\lin864 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s5\fi-1008\li1008\jclisttab\tx1440\lin1008 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-1152\li1152\jclisttab\tx1152\lin1152 }{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-1296\li1296 \jclisttab\tx1296\lin1296 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers \'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-1584\li1584\jclisttab\tx1584\lin1584 }{\listname ;}\listid709720022}{\list\listtemplateid492708056\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\hres0\chhres0 \li360\jclisttab\tx720\lin360 }{\listname ;}\listid947465702}{\list\listtemplateid135847432\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360 \levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0 {\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 \'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689 \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691 \'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 \'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid951014175}{\list\listtemplateid33474890\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\hres0\chhres0 \li360\jclisttab\tx720\lin360 }{\listname ;}\listid1012994977}{\list\listtemplateid33474890\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\hres0\chhres0 \li360\jclisttab\tx720\lin360 }{\listname ;}\listid1066074920}{\list\listtemplateid33474890\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\hres0\chhres0 \li360\jclisttab\tx720\lin360 }{\listname ;}\listid1073046042}{\list\listtemplateid1114416696\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 \lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360 \levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0 {\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 \'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689 \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691 \'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693 \'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1579824955}}{\*\listoverridetable{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-125\listoverridecount0\ls2} {\listoverride\listid-119\listoverridecount0\ls3}{\listoverride\listid-125\listoverridecount0\ls4}{\listoverride\listid-119\listoverridecount0\ls5}{\listoverride\listid-125\listoverridecount0\ls6}{\listoverride\listid-119\listoverridecount0\ls7} {\listoverride\listid-125\listoverridecount0\ls8}{\listoverride\listid-119\listoverridecount0\ls9}{\listoverride\listid-125\listoverridecount0\ls10}{\listoverride\listid-119\listoverridecount0\ls11}{\listoverride\listid-125\listoverridecount0\ls12} {\listoverride\listid-119\listoverridecount0\ls13}{\listoverride\listid-125\listoverridecount0\ls14}{\listoverride\listid-119\listoverridecount0\ls15}{\listoverride\listid-125\listoverridecount0\ls16}{\listoverride\listid-119\listoverridecount0\ls17} {\listoverride\listid-125\listoverridecount0\ls18}{\listoverride\listid-119\listoverridecount0\ls19}{\listoverride\listid-125\listoverridecount0\ls20}{\listoverride\listid-119\listoverridecount0\ls21}{\listoverride\listid-125\listoverridecount0\ls22} {\listoverride\listid-119\listoverridecount0\ls23}{\listoverride\listid-125\listoverridecount0\ls24}{\listoverride\listid-125\listoverridecount0\ls25}{\listoverride\listid-119\listoverridecount0\ls26}{\listoverride\listid1066074920\listoverridecount0\ls27 }{\listoverride\listid1012994977\listoverridecount0\ls28}{\listoverride\listid1073046042\listoverridecount0\ls29}{\listoverride\listid947465702\listoverridecount0\ls30}{\listoverride\listid333609426\listoverridecount0\ls31}{\listoverride\listid91511459 \listoverridecount0\ls32}{\listoverride\listid709720022\listoverridecount0\ls33}{\listoverride\listid-119\listoverridecount0\ls34}{\listoverride\listid-125\listoverridecount0\ls35}{\listoverride\listid573012115\listoverridecount0\ls36} {\listoverride\listid951014175\listoverridecount0\ls37}{\listoverride\listid497313154\listoverridecount0\ls38}{\listoverride\listid703141571\listoverridecount0\ls39}{\listoverride\listid402290665\listoverridecount0\ls40}{\listoverride\listid1579824955 \listoverridecount0\ls41}}{\*\revtbl {Unknown;}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid1391\rsid3215\rsid5794\rsid15915\rsid18190\rsid131592\rsid148441\rsid148896\rsid210160\rsid218992\rsid267767\rsid277128 \rsid288338\rsid339115\rsid342330\rsid417363\rsid469280\rsid472677\rsid481109\rsid491130\rsid525975\rsid542409\rsid544302\rsid553301\rsid555420\rsid555918\rsid606012\rsid607147\rsid607729\rsid661883\rsid683565\rsid683903\rsid729376\rsid733228\rsid787311 \rsid808567\rsid866332\rsid992611\rsid995967\rsid1005583\rsid1006136\rsid1011182\rsid1014291\rsid1053901\rsid1071306\rsid1127236\rsid1186690\rsid1193315\rsid1200093\rsid1245746\rsid1252785\rsid1253877\rsid1266258\rsid1276637\rsid1324241\rsid1324914 \rsid1379877\rsid1381947\rsid1384200\rsid1390984\rsid1444730\rsid1456354\rsid1463938\rsid1473004\rsid1473706\rsid1523338\rsid1533885\rsid1576606\rsid1591042\rsid1595709\rsid1649404\rsid1718947\rsid1721040\rsid1725713\rsid1735558\rsid1769921\rsid1783341 \rsid1786819\rsid1799294\rsid1835347\rsid1836536\rsid1859294\rsid1926997\rsid1986070\rsid1993797\rsid2047816\rsid2055135\rsid2056815\rsid2057015\rsid2062576\rsid2114287\rsid2170323\rsid2178983\rsid2179873\rsid2195324\rsid2231385\rsid2245366\rsid2256505 \rsid2256891\rsid2297447\rsid2299931\rsid2300534\rsid2359712\rsid2362828\rsid2369896\rsid2443954\rsid2452755\rsid2494772\rsid2494969\rsid2497673\rsid2498852\rsid2505103\rsid2509747\rsid2561874\rsid2582172\rsid2631866\rsid2695776\rsid2699082\rsid2706971 \rsid2758620\rsid2776810\rsid2782923\rsid2837658\rsid2850037\rsid2892314\rsid2893403\rsid2969362\rsid2977846\rsid3036012\rsid3047227\rsid3149578\rsid3153696\rsid3169197\rsid3212909\rsid3278163\rsid3302722\rsid3309199\rsid3343437\rsid3354481\rsid3359808 \rsid3365126\rsid3366966\rsid3368261\rsid3429696\rsid3437177\rsid3541062\rsid3542035\rsid3557081\rsid3609042\rsid3673855\rsid3687276\rsid3689205\rsid3736929\rsid3754495\rsid3758916\rsid3817280\rsid3824457\rsid3889589\rsid3890678\rsid3932344\rsid3937356 \rsid3947043\rsid3950677\rsid3957786\rsid4021983\rsid4025037\rsid4066498\rsid4069738\rsid4132949\rsid4158269\rsid4161483\rsid4208203\rsid4217979\rsid4260629\rsid4263887\rsid4270419\rsid4292167\rsid4349947\rsid4351562\rsid4476740\rsid4488093\rsid4526103 \rsid4542526\rsid4549159\rsid4588864\rsid4589507\rsid4597251\rsid4608786\rsid4653268\rsid4656120\rsid4660360\rsid4663923\rsid4665064\rsid4675967\rsid4728086\rsid4804234\rsid4809259\rsid4850771\rsid4864337\rsid4876520\rsid4934271\rsid4936243\rsid4941788 \rsid4982180\rsid4994478\rsid5057207\rsid5059405\rsid5112622\rsid5121974\rsid5131842\rsid5137802\rsid5186698\rsid5245514\rsid5249367\rsid5262392\rsid5262926\rsid5333035\rsid5339290\rsid5451268\rsid5534672\rsid5577495\rsid5584316\rsid5603171\rsid5660397 \rsid5660739\rsid5668165\rsid5707854\rsid5713056\rsid5768012\rsid5776182\rsid5777649\rsid5843152\rsid5844056\rsid5856894\rsid5922455\rsid5927348\rsid5930066\rsid5983729\rsid6030206\rsid6038399\rsid6048895\rsid6099547\rsid6106538\rsid6163651\rsid6164928 \rsid6167452\rsid6180187\rsid6181713\rsid6227672\rsid6237696\rsid6238656\rsid6294731\rsid6310410\rsid6359126\rsid6367110\rsid6370457\rsid6438185\rsid6441627\rsid6442112\rsid6453180\rsid6495192\rsid6504638\rsid6506951\rsid6507790\rsid6520694\rsid6561358 \rsid6561992\rsid6571730\rsid6633322\rsid6694521\rsid6705527\rsid6712372\rsid6717218\rsid6761345\rsid6763422\rsid6816429\rsid6828056\rsid6836781\rsid6839767\rsid6888986\rsid6895880\rsid6903018\rsid6909818\rsid6959983\rsid6967300\rsid6967823\rsid7012992 \rsid7018752\rsid7020039\rsid7021698\rsid7025206\rsid7103363\rsid7144074\rsid7147797\rsid7156227\rsid7157300\rsid7158858\rsid7161910\rsid7212310\rsid7214265\rsid7215101\rsid7228255\rsid7275025\rsid7284323\rsid7343642\rsid7365815\rsid7417560\rsid7420570 \rsid7424484\rsid7424752\rsid7425738\rsid7473035\rsid7490867\rsid7493554\rsid7496159\rsid7498831\rsid7503572\rsid7542784\rsid7547338\rsid7553735\rsid7556628\rsid7558531\rsid7628139\rsid7633337\rsid7698492\rsid7737827\rsid7758757\rsid7763454\rsid7811488 \rsid7812007\rsid7874519\rsid7957769\rsid8012871\rsid8083486\rsid8128800\rsid8135265\rsid8135998\rsid8155096\rsid8192603\rsid8202353\rsid8219503\rsid8263065\rsid8323323\rsid8325900\rsid8351243\rsid8355049\rsid8391927\rsid8406997\rsid8411671\rsid8463743 \rsid8468716\rsid8475459\rsid8530879\rsid8534141\rsid8537957\rsid8591179\rsid8655500\rsid8727424\rsid8740106\rsid8741813\rsid8788263\rsid8795211\rsid8805889\rsid8848808\rsid8850939\rsid8858513\rsid8859204\rsid8877048\rsid8922457\rsid8943451\rsid9068000 \rsid9070860\rsid9071063\rsid9076409\rsid9113792\rsid9131465\rsid9132578\rsid9176000\rsid9181011\rsid9186145\rsid9192740\rsid9247998\rsid9256977\rsid9264546\rsid9270955\rsid9333433\rsid9377239\rsid9383391\rsid9385658\rsid9450999\rsid9466271\rsid9503813 \rsid9504423\rsid9520540\rsid9569556\rsid9574336\rsid9593153\rsid9647926\rsid9652667\rsid9653801\rsid9654696\rsid9662604\rsid9709762\rsid9711046\rsid9719884\rsid9721353\rsid9728905\rsid9780230\rsid9790785\rsid9833003\rsid9835975\rsid9916164\rsid9916552 \rsid9917108\rsid9977390\rsid9987386\rsid10029569\rsid10032279\rsid10036964\rsid10041095\rsid10048838\rsid10104332\rsid10104867\rsid10107140\rsid10188639\rsid10232165\rsid10239652\rsid10248196\rsid10252332\rsid10308570\rsid10355168\rsid10357361 \rsid10429894\rsid10495142\rsid10501788\rsid10562309\rsid10624217\rsid10624980\rsid10625391\rsid10641448\rsid10645618\rsid10700709\rsid10755847\rsid10758255\rsid10759067\rsid10775859\rsid10778916\rsid10816985\rsid10827159\rsid10882157\rsid10948838 \rsid10960879\rsid10968496\rsid11018446\rsid11042230\rsid11077249\rsid11087530\rsid11087861\rsid11100088\rsid11106424\rsid11142608\rsid11144291\rsid11150640\rsid11162178\rsid11172004\rsid11278135\rsid11281406\rsid11294724\rsid11354402\rsid11366356 \rsid11417590\rsid11551179\rsid11551833\rsid11562639\rsid11563208\rsid11600246\rsid11620405\rsid11624960\rsid11629424\rsid11668745\rsid11668945\rsid11672145\rsid11677467\rsid11691456\rsid11731076\rsid11733885\rsid11734660\rsid11736491\rsid11742721 \rsid11746460\rsid11750692\rsid11753606\rsid11754491\rsid11760533\rsid11796733\rsid11867165\rsid11884926\rsid11933107\rsid11954014\rsid11995611\rsid12014603\rsid12022032\rsid12023150\rsid12063036\rsid12063404\rsid12066819\rsid12069527\rsid12076215 \rsid12090931\rsid12128545\rsid12147575\rsid12149987\rsid12217164\rsid12264339\rsid12284966\rsid12287227\rsid12322770\rsid12328733\rsid12334988\rsid12341454\rsid12347718\rsid12350496\rsid12404956\rsid12461773\rsid12464051\rsid12465879\rsid12479678 \rsid12524361\rsid12534745\rsid12539420\rsid12591202\rsid12602594\rsid12654224\rsid12660340\rsid12674630\rsid12727609\rsid12780249\rsid12800499\rsid12846458\rsid12848391\rsid12876756\rsid12925916\rsid13049793\rsid13062298\rsid13062770\rsid13062857 \rsid13065243\rsid13111606\rsid13116219\rsid13119649\rsid13124075\rsid13183894\rsid13189394\rsid13253547\rsid13304231\rsid13304285\rsid13313532\rsid13316070\rsid13324220\rsid13332095\rsid13332724\rsid13387249\rsid13401452\rsid13456407\rsid13462646 \rsid13506119\rsid13529737\rsid13571049\rsid13571676\rsid13592443\rsid13636493\rsid13638499\rsid13644114\rsid13645220\rsid13647779\rsid13648436\rsid13650650\rsid13651208\rsid13659625\rsid13725341\rsid13788639\rsid13833275\rsid13835175\rsid13847961 \rsid13902579\rsid13965674\rsid13973305\rsid13985354\rsid14031212\rsid14048223\rsid14090380\rsid14095845\rsid14104185\rsid14105216\rsid14111009\rsid14159926\rsid14165934\rsid14171049\rsid14174265\rsid14222000\rsid14234872\rsid14236767\rsid14253032 \rsid14313047\rsid14316653\rsid14316729\rsid14352584\rsid14382289\rsid14383905\rsid14431810\rsid14450529\rsid14491932\rsid14493504\rsid14561310\rsid14567862\rsid14576579\rsid14772695\rsid14812606\rsid14817352\rsid14818678\rsid14818913\rsid14823183 \rsid14829808\rsid14891486\rsid14892069\rsid14902826\rsid14905339\rsid14958275\rsid14959888\rsid14965718\rsid14972120\rsid15021668\rsid15026686\rsid15037952\rsid15076881\rsid15082493\rsid15085311\rsid15097101\rsid15149315\rsid15149892\rsid15155620 \rsid15209531\rsid15273263\rsid15276030\rsid15283156\rsid15285090\rsid15288816\rsid15341776\rsid15402820\rsid15416403\rsid15419579\rsid15541520\rsid15548349\rsid15629574\rsid15677976\rsid15679112\rsid15749808\rsid15802538\rsid15805300\rsid15810661 \rsid15814273\rsid15818847\rsid15879987\rsid15884252\rsid15941566\rsid15943157\rsid15999377\rsid16019119\rsid16021022\rsid16021297\rsid16064325\rsid16073428\rsid16074968\rsid16087527\rsid16123331\rsid16126611\rsid16134208\rsid16136696\rsid16137214 \rsid16192542\rsid16321502\rsid16333881\rsid16344474\rsid16402221\rsid16454129\rsid16458420\rsid16464892\rsid16467701\rsid16471979\rsid16583850\rsid16587381\rsid16587884\rsid16599166\rsid16601346\rsid16606012\rsid16655118\rsid16665574\rsid16669086 \rsid16672065\rsid16678386\rsid16726483\rsid16733953\rsid16736340\rsid16741734}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title Graphite Description Language} {\subject version 3.000}{\author M. Hosken, B. Hallissy, W. Cleveland, S. Correll, A. Ward}{\operator O2K16 Lic.#xxx - Correll}{\creatim\yr2019\mo7\dy2\hr16\min28}{\revtim\yr2020\mo5\dy20\hr10\min57}{\printim\yr2020\mo5\dy20\hr10\min56}{\version409} {\edmins20557}{\nofpages84}{\nofwords32429}{\nofchars184850}{\*\company Summer Institute of Linguistics}{\nofcharsws216846}{\vern99}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smart tags}}\paperw12240\paperh15840\margl1872\margr1152\margt1152\margb1152\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\ftnrstpg\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1 \aftnnar\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0 \jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl\nojkernpunct\rsidroot7365815 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup16{\*\ftnsep \ltrpar \pard\plain \ltrpar \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14561310 \chftnsep \par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14561310 \chftnsepc \par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14561310 \chftnsep \par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14561310 \chftnsepc \par }}\ltrpar \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\footerr \ltrpar \pard\plain \ltrpar\s28\ql \li0\ri0\widctlpar \tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 \line } {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 Title}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid4675967 Graphite Description Language}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 Page }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 PAGE }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\lang1024\langfe1024\noproof\insrsid4675967 81}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 of }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 NUMPAGES}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\lang1024\langfe1024\noproof\insrsid4675967 84}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 \par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid10357361 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\lang1024\langfe1024\noproof\insrsid4675967 M. Hosken, B. Hallissy, W. Cleveland, S. Correll, A. Ward}}} \sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid10357361 }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\insrsid10357361 PRINTDATE \\@ "MMMM DD, yyyy"}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\lang1024\langfe1024\noproof\insrsid4675967 May 20, 2020}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\insrsid10357361 Rev: }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\insrsid10357361 REVNUM}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\lang1024\langfe1024\noproof\insrsid4675967 408}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid10357361 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 \par }}{\footerf \ltrpar \pard\plain \ltrpar\s28\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 \line }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 Title}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid4675967 Graphite Description Language}}}\sectd \ltrsect \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 Page }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 PAGE }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\lang1024\langfe1024\noproof\insrsid4675967 1}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 of }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\insrsid10357361 NUMPAGES}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\b\fs16\lang1024\langfe1024\noproof\insrsid4675967 84}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs16\insrsid10357361 \par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid10357361 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\lang1024\langfe1024\noproof\insrsid4675967 M. Hosken, B. Hallissy, W. Cleveland, S. Correll, A. Ward}}} \sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid10357361 }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\insrsid10357361 PRINTDATE \\@ "MMMM DD, yyyy"}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\lang1024\langfe1024\noproof\insrsid4675967 May 20, 2020}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\insrsid10357361 Rev: }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\insrsid10357361 REVNUM}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs32\fs12\lang1024\langfe1024\noproof\insrsid4675967 408}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid10357361 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 \par }}{\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} {\*\pnseclvl8\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar \s45\ql \li0\ri0\sb600\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 TITLE}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite Description Language}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s46\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14159926 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid683565 Version }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14159926 4}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid683565 .000}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s47\ql \li0\ri0\sb240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Author }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid1006136 M. Hosken, B. Hallissy, W. Cleveland, S. Correll, A. Ward}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \line SIL Non-Roman Script Initiative (NRSI) \par }\pard \ltrpar\s47\ql \li0\ri0\sa1200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14823183 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Copyright \'a9 1998 \endash 20}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14823183 20 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 by SIL International. \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 toc \\o "1-2" }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Introduction\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864593 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003500390033000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 1.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Capabilities of the Graphite system\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864594 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003500390034000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 1.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Graphite and Unicode\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864595 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003500390035000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Overview: rules, glyphs, and passes\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864596 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003500390036000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 2.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Rules\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864597 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003500390037000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 2.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Glyph Identification\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864598 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003500390038000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 8}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 2.3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Passes, streams, and slots\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864599 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003500390039000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 10}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 File Structure\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864600 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300030000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 12}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 C Pre-Processor\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864601 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300031000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 12}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Global Settings\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864602 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300032000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 13}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Tables\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864603 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300033000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 14}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.4}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Environment\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864604 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300034000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 15}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.5}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Glyph Table\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864605 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300035000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 18}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.6}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Feature Table\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864606 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300036000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 21}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.7}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Name Table\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864607 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300037000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 24}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 3.8}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Global State Variables\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864608 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300038000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 24}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Data Processing\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864609 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600300039000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 25}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Processing Rules\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864610 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310030000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 25}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Converting Characters to Glyphs\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864611 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310031000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 30}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4.3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Linebreak\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864612 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310032000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 30}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4.4}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Substitution\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864613 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310033000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 30}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4.5}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Directionality\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864614 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310034000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 34}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4.6}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Positioning\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864615 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310035000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 35}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 4.7}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Placement\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864616 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310036000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 39}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 5}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Example File\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864617 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310037000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 40}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 5.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Example\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864618 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310038000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 40}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 5.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Description\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864619 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600310039000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 41}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 5.3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Conclusion\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864620 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320030000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 42}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Advanced Concepts\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864621 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320031000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 43}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Cursor Hitting\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864622 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320032000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 43}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Pseudo-Glyphs\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864623 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320033000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 45}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 User-definable Slot Attributes\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864624 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320034000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 46}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.4}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Backing up the Stream Position\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864625 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320035000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 46}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.5}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Justification\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864626 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320036000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 47}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.6}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Mirroring\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864627 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320037000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 53}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.7}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Pass optimizations\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864628 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320038000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 54}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.8}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Automatic Collision Avoidance\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864629 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600320039000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 55}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 6.9}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Backward-compatible feature IDs\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864630 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330030000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 63}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 7}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Reference\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864631 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330031000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 66}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 7.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Attributes\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864632 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330032000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 66}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 7.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Attribute Table\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864633 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330033000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 72}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 7.3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Abbreviations\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864634 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330034000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 73}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx440\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 8}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Language Structure\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864635 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330035000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 74}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 9}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Glossary\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864636 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330036000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 76}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard \ltrpar\s34\ql \li0\ri0\sb120\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 10}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Appendix: The need for Graphite\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864637 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330037000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 78}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \b0\caps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s33\ql \li0\ri0\widctlpar\tx660\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 10.1}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 OpenType\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864638 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330038000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 78}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 10.2}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 AAT\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864639 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600330039000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 78}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 10.3}{\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 SDF\tab }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 PAGEREF _Toc40864640 \\h }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005f0054006f006300340030003800360034003600340030000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 79}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \scaps0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 }}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\*\bkmkstart _Toc441048616}{\*\bkmkstart _Toc40864593}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 1\tab}}\pard\plain \ltrpar \s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Introduction{\*\bkmkend _Toc441048616}{\*\bkmkend _Toc40864593} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This document is intended to be a semi-formal description of the Graphite description file format known as Graphite Description Language (GDL). As such, it introduces concepts in, hope fully, a more natural way than a formal description would require. \par This document is also primarily concerned with ensuring that the language has adequate descriptive power to describe all possible script behaviors. Therefore the document will tend to conce ntrate on the more complex aspects of script description, thus not representing the balance that you would find in a typical description in which most behaviors are relatively straightforward. \par This document has been written assuming a basic understanding of fonts, characters, glyphs, and rendering issues. Please refer to the Glossary in section 9 for a definition of terms. \par Please send comments or questions to: graphite_nrsi@sil.org. \par {\*\bkmkstart _Toc40864594}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 1.1\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Capabilities of the Graphite system{\*\bkmkend _Toc40864594} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The Graphite system is designed to handle the following kinds of complex rendering situations: \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 shifting and kerning}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kerning}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , where the position of a glyph is adjusted based on the presence of a neighboring glyph \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature substitution}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , where one glyph is used to represent several underlying characters \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reordering typical of Indic}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Indic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scripts, where the order of the rendered glyphs is different from the order of the corresponding underlying character data \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stacking diacritic}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s, using attachment point}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bidirectionality}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bidirectionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , as found in Hebrew}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Hebrew}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and Arabic}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Arabic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 -based writing systems \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 See the \'93Graphite Requirements\'94 document for more details. \par {\*\bkmkstart _Toc441048618}{\*\bkmkstart _Toc40864595}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 1.2\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite and Unicode{\*\bkmkend _Toc40864595}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Unicode}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite is intended to be used with Unicode data, that is, in situations where the underlying data complies with the Unicode standard. Similarly, a font used to render with Graphite should be Unicode-based; that is, the character values in the font\rquote s cmap}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cmap}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 should be Unicode codepoints. Although it is possible to use Graphite with \'93hacked\'94 or customized encodings, this is not recommended. \par {\*\bkmkstart _Toc40864596}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Overview{\*\bkmkend _Toc441048618}: rules, glyphs, and pass}{\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es{\*\bkmkend _Toc40864596} \par {\*\bkmkstart _Toc441048619}{\*\bkmkstart _Toc40864597}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Rules{\*\bkmkend _Toc441048619}{\*\bkmkend _Toc40864597}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The basis of a rendering description is rules. Rules are used for almost everything, and allow for contextual attribute assignment, substituti on, etc. The rules are replacement-type rules in a format familiar to those with experience in generative phonology. \par Our initial discussion will concentrate on substitution type rules. There are other types which we will come to. \par A typical substitution rule might be: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gLowercaseI > gDotlessI / _ gTilde; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This rule says that an underlying lowercase I glyph is replaced by a corresponding dotless I glyph on the surface, when followed by a tilde glyph. More precisely a glyph stream containing: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ... gLowercaseI gTilde ... \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 would be modified to contain: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ... gDotlessI gTilde ... \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The names used for the glyphs are identifiers that are assumed to have been defined to refer to particular glyphs in a font. The particular mechanics of how this is done will be covered in a later section. \par From the above example, we see that a rule consists of three parts: the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 left-hand side}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 left hand side}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 right-hand side}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right hand side}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 context}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 context}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The left-hand side (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 lhs}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 lhs}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) consists of the partic ular glyphs in the underlying form that are to be replaced. The right-hand side (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 rhs}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rhs}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) gives the glyphs that will replace the glyphs in the lhs. Notice that there is a strict one to one correspondence between the glyphs on the lhs and on the rhs. Following the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 /}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 context}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 which describes the environment in which the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 lhs}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is to be located and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 rhs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 will be output. \par The various parts of the rules\emdash lhs, rhs and context\emdash should not be seen as strings, but as sequences of glyphs. Thus, in the above rule we are saying that the glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gLowercaseI}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is being replaced by the glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gDotlessI}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 when followed by the glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gtilde}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . In the context, therefore, _}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 _}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used to represent a single glyph corresponding to a glyph in the lhs of the rule. \par Specifying both the rhs and context provides the greatest clarity and self-description when describing rules in terms of matching; however, it is possible to use a simpler format for rules which has no context. For example, the above rule could have been written: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gLowercaseI gTilde > gDotlessI gTilde; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This is not as clear since it does not highlight the glyphs being changed. It is also weaker in not allowing the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gTilde}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to be re-matched in the same pass. But the rule is possible and an optimizing compiler (which we are not promising to develop) should give the same results. This rule is strictly equivalent not to the first rule but to \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gLowercaseI gTilde > gDotlessI gTilde / _ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Notice the two }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 _}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , one for each glyph on the left hand side of the rule. It is an error if there are a different number of }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 _}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the context as there are glyphs on the left- and right-hand sides. \par The context of a rule can be as complex as needed. The lhs does not have to refer to a contiguous sequence of glyphs: \par }\pard\plain \ltrpar\s31\ql \fi-720\li1440\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gLowercaseI gTilde > gDotlessI gTilde / _ gLowerDia _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Notice that the two _ in the context correspond to the two glyphs in the rhs, and also to the two glyphs in the lhs. \par Some rules do not perform substitutions at all, but only set }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 attributes}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 on items in the glyph stream. In such cases, the left-hand side (and the right angle bracket) }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1381947 are}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 omitted: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid13965674 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gCapA \{kern.x = -Kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13965674 PostV}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \} / clsCapVW _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13965674 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The code inside the curly braces sets attributes on the capital A glyph, kerning it towards the capital V or W. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13965674 PostV}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is defined elsewhere in the file as a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14892069 glyph attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13965674 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid14892069 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14892069 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14892069\charrsid1127236 glyph attribute}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14892069 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14892069 , a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 numeric constant for this glyph. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Rules without a lhs}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 lhs}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are used p articularly in the positioning table, which will be discussed in more detail further on. \par Semi-colons}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 semi-colon}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are required to terminate rules. Line continuation}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 line continuation}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is assumed if there is no semi-colon. Other statements may use an optional semi-colon terminator. (For the technically minded, semi-colons are actually separators.) \par Comments}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 comment}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are preceded by two slashes. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 a > b / _ c; //this is a comment \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Note that comments do not require semi colons. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Classes}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 class}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 If every individual combination of glyphs that we want to alter had to be spelled out with its own rule, then the description would be impossibly long. Instead a system of glyph classes is available. Our first rule can be generalized to the following: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsDotted > clsDotless / _ clsUpperDia; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This rule says that all dotted glyphs (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 j}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , etc.) are replaced by their dotless counterparts when followed by an upper diacritic. \par From this we see that classes are a bit like arrays. When an element from a class is matched, its position in the class is remembered so that it can be used to refer to an element from a different class (which must be the same size or bigger). This correspondence is very helpful to reduce the number of rules. \par The use of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 cls}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to prefix the class name is purely a coding convention. It is used in this document to aid in rule readability. \par A more complex substitution rule might change two glyphs at once: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCons clsVowel > clsConsJoin clsVowelDia / _ ZWJ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8135998 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This rule might occur in an Indic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8135998 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Indic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 script where vowels may be diacritically joined to the preceding consonant via a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8135998 zero-width j}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 oining character (or glyph in this context). This rule is not ideal since it would probably be preferable to delete the ZWJ}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8135998 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid8135998 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8135998 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8135998\charrsid13119649 ZWJ}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8135998 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 at the same time. We will come to that later. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.1.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Variables}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 variable}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 & Lists}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 list}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Classes are defined using a standard assignment command (in the glyph table). Assignments allow for variables to be defined either as individual values or as lists. Assignments are of the form: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 variable = value; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In the case of a list, the list is identified between }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Thus: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsDottedI = (gLI, gLBarredI);\line clsIWidth = (clsDottedI, gLL, gUI, gUBarredI); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Commas within a list are optional. Also note that the semi-colon following a cl ass definition or variable assignment is optional, unlike in rules where it is required. Class names do not need to be declared separately, unlike many programming languages; the assignment statement functions as the declaration. \par Elements can be added to the end of the list using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 operator. For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsDottedI += gLJ;\line clsIWidth += (gUJ, gUL); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The list mechanism also allows for temporary unnamed \'93classes\'94 within rules, although this is not good practice since it does not e ncourage the definition to be self-documenting. By naming every glyph class, the GDL author is giving documentation to their description as they go. There are other mechanisms to encourage this throughout the file. \par An example of a temporary list (if it must be used) is: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsDotted > (gLDotlessI, gLDotlessBarredI, gLDotlessJ)\tab \tab \tab / _ clsUpperDia; \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.1.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Ranges}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 range}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Lists may also be made up from ranges. A range is an inclusive list, including both endpoints. Thus: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCaps = unicode(0x0041 .. 0x005A); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is equivalent to: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCaps = (unicode(0x0041), unicode(0x0042), unicode(0x0043),\line \tab \tab unicode(0x0044), \'85, unicode(0x005A)); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Both forms would create a class containing the glyphs for all the uppercase letters in the standard Roman alphabet. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and related functions will be discussed in more detail later. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.1.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The ANY}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 ANY}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 class \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A special class, called \'93ANY,\'94 can be used to match any glyph.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4936243 This class also has a special use within the Graphite system.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Attributes}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In addition to substituting one glyph for another, rules may be used to associate information with the glyphs that have been matched by the rule. This information is stored in attributes. For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gCapA \{kern.x = -bb.width/10\} / clsCapVW _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 indicates tha t a capital A following V or W should be kerned inwards by 10% of the bounding box of the A. Notice that for this rule, there is no lhs. Since the lhs and rhs are the same, we do not need the lhs. This is because there is no substitution occurring. In fac t we could do away with the context also with: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCapVW gCapA \{kern.x = -bb.width/10\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 The bb.width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 expression}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is one of several read-only glyph metrics that can be referenced to aid in positioning. \par Multiple attributes may be assigned within one rule, as in: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase clsMark \{shift.x = -10m; shift.y = ascent / 2\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This example is shifting a \'93mark\'94 glyph 10 units to the left and up almost half a line. Attributes with subfields can used a structured syntax; for instance, the above rule can also be written: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase clsMark \{shift \{x = -10m; y = ascent / 2\}\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are a number of different attributes which a particular element may have, most of which affect positioning. They are all considered in later sections. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.2.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Types of attributes \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are two kinds of attributes, }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 glyph attributes}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 slot attributes}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The values of glyph attributes are constant with respect to a glyph\rquote s ID number; they do not depend on the glyph\rquote s position in the data or any neighboring glyphs. For instance, each letter \lquote A\rquote in the text would have exactly the same glyph attribute values. Glyph attributes can be thought of as extensions to the glyph metrics in the font. They are set in the glyph table, and will be discussed more fully below. \par Only slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s are set in rules, and therefore may have different values depending on which rules have been fired during the process of rendering a specific glyph. In our examples above, the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 kern.x}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attributes are slot attributes. Not every capital V, W, and A would have the same values for these attributes; }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4936243 only }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 the ones that occur next to each other and so cause the example rule above to fire would have adjusted values for the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 kern.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute. Similarly the \'93base\'94 and \'93mark\'94 glyphs would have different values of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 depending on whether they were involved in the firing of the second example rule. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Optional}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 optional}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ity \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One of the most useful things about regular expressions is the ability to have optional elements, which are elements which may or may not occur. They are marked by a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ?}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . GDL uses the same character }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ?}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ?}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to mark optional items. Thus the rule for dotless i may be extended to match with an optional lower diacritic coming between the dotted i and the upper diacritic: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsDottedI > clsDotlessI / _ clsLowerDia? clsUpperDia; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Optional items may occur in the context, as shown above, or on the left-hand side of a rule, but not on the right-hand side: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsVowel clsTone? > clsUpperVowel clsUpperTone / clsCons _ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In this case, if }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsTone}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 finds no match, then no output from the corresponding element on the right-hand side, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsUpperTone,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is generated. \par Graphite also provides the capability to mark element sequences as optional. To group the elements, use }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 [}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ]}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 square brackets}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsDottedI > clsDotlessI / _ [ clsLDia gLower ]? clsUpperDia; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 uses the dotless i even if the sequence of grouped elements appear between the dotted i and the upper diacritic. \par Notice that the other regular expression string operators: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 *}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 *}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 +}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are not supported for two reasons: they would confuse context referencing, and they are unbounded. But it is possible to provide a limited form of these operators using }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 []}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 : \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 [x [x [x [x]? ]? ]? ]? \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \~is equivalent to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 x\{0,4\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in Unix regular expression syntax. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4936243 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 For more information on how optional rules work, see the section}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4936243 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4936243 under Data P}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rocessing. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.1.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Rule Constraint}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 constraint}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In addition to setting attributes on a matched element, rules can be conditionally executed based on the attributes of an element. \par }\pard\plain \ltrpar\s31\ql \li720\ri-288\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin-288\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gB \{kern.x = MAXSP - @1.rsb - @2.lsb\} / gA _ \{@1.rsb + @2.lsb > MAXSP\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This rule will only be applied if its context matches the glyph stream }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 the constraint in the rule\rquote s context is satisfied. For this rule, if the ph ysical gap between the first and second rule elements is greater than a given value, the rule will be executed, which will set the interglyph gap to equal a fixed value. Constraints within a rule can only be specified in the context and the context must b e explicitly stated. \par Constraints for one or more rules can also be specified using }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 features}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , which we will come to later. \par {\*\bkmkstart _Toc441048620}{\*\bkmkstart _Toc40864598}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.2\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph Identification{\*\bkmkend _Toc441048620}{\*\bkmkend _Toc40864598}}{\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 So far we have described glyphs by name. But how are these names converted to actual glyph numbers in the font? \par There are four ways of getting hold of a glyph number}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph number}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 : \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 by using the actual internal glyph number in the font; \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 by Unicode value via the internal character map (cmap}{\pard\plain \ltrpar \s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cmap}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) in the font, which takes a Unicode codepoint number and returns a glyph number; \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 by Postscript}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Postscript}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 name; and \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 by 8-bit}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 8-bit}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 character code according to a codepage and then via the font character map. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Each of these methods has its own strengths and weaknesses. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.2.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph ID}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph ID}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph IDs are identified numerically using the following syntax. Notice that the number may be in decimal or hexadecimal. }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 glyphid}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyphid (439)\tab \tab glyphid(0x1B7) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The GlyphID command can also take a list}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 list}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of values which it returns as a list. Thus: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 glyphid(0x1b7, 23, 128) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The advantage of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 glyphid}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command is that you have direct access to any glyph in the font even if it has no usable Postscript} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Postscript}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 name and it does not appear in the } {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 cmap}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cmap}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The difficulty is that glyph IDs are often unique to a particular font and even a particular version of the font. Using glyph IDs directly requires close liaison with the font designer. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.2.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 U nicode}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Unicode}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A glyph is identified via its Unicode value using the following syntax: }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 unicode (0x203F)\tab \tab unicode(}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9076409 8255}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9076409 \tab \tab U+203F}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Care should be taken with hexadecimal numbers, which are often used for Unicode codepoints, but }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9076409 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 which must be explicitly marked in this syntax. Thus the second value here is not 0x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9076409 8255 but 0x203F}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9076409 However, a 0x is not needed when using the U+ syntax. Thus all of the examples shown above are equivalent.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command may also be used to generate a list just as in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 glyphid}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command. \par Using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command to identify a glyph can be very powerful. It has the advantage over }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 glyphid}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of not being dependent upon font and version. But it does require that the glyph be identified in the cmap of the font, and therefore is only useable on such \'93exposed \'94 glyphs. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.2.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Postscript}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Postscript}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Accessing glyphs via their Postscript names is an important and powerful method. Since it is possible to give every glyph in the font a unique name, this method allows the description file to refer to glyphs that do not necessarily have Unicode values in a cmap. \par There is also a weakness with this approach. It is not necessary, when designing a font, to give every glyph a unique name, and so this method may not always be able to identify every glyph in a font. \par The primary context for this method is where a script engineer is working with a font designer and they can agree on names for glyphs. This frees them to work semi-independently, without the need for the font designer t o take great care over glyph numbering. So long as the names line up, everything should be OK. \par A glyph is referred to by its Postscript name using this syntax: }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 postscript}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 postscript ("Ccedilla") \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.2.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Codepoint}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepoint}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The final method is very similar to the Unicode method. This is to give an 8-bit}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 8-bit}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepoint value which is mapped through a codepage mapping from its 8-bit value to a 16-bit Unicode value and thence to the glyph ID via the cmap. Due to its similarity to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 unicode}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command, it inherits all its strengths and weaknesses. \par Eight-bit values can be entered using two methods. The parameter to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 codepoint()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 can be a string, in which the characters are converted to 8-bit values and thence to Unicode then glyph ID. Alternatively a number can appear (decimal or hex). }{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 codepoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepoint ("a")\tab \tab codepoint(192)\tab \tab codepoint(0xC0) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The codepage to use in conversion is specified by defining the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 CodePage}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 CodePage}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directive. Any 8-bit conversions from then on will use that codepage. The default codepage used at the start of the file is codepage 1252}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage 1252}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par It is also possible to specify a particular codepage within the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 codepoint()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command as the second parameter: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepoint("a", 1251) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 codepoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command may also be used to generate a list if it is given a list or a string as its first parameter: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsDia = codepoint((0x93, 0x94, 0x95));\line clsVowels = codepoint("aeiouAEIOU"); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The standard C}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 character escape codes}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 escape codes}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are allowed: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \\t}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 \\\\t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (tab), }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \\n}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 \\\\n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (newline), }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \\\\}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (backslash), etc. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.2.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph class identifiers}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph class identifiers}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The examples of rules we have seen so far have not used any of these approaches to glyph referencing, and yet they are legal. Why is this so? \par Rather than having to use a full glyph identification for every reference to a glyph, or codepoint, it is sensible to use identifiers to save effort and to improve readability. \par Thus some of the above examples might have been entered for IPA93 as: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gI\tab \tab \tab =\tab codepoint("i");\line gBarredI\tab \tab =\tab codepoint(0xF6);\line gJ\tab \tab \tab =\tab unicode(0x006A);\line gL\tab \tab \tab =\tab codepoint("l");\line gUI\tab \tab \tab =\tab unicode(0x0049);\line gUbarredI\tab \tab =\tab postscript("UCBarredI");\line gUJ\tab \tab \tab =\tab unicode(0x004A);\line gUL\tab \tab \tab =\tab unicode(0x004C);\line gDotlessI\tab \tab =\tab codepoint(34);\line gDotlessBarredI\tab =\tab codepoint(0xAA);\line gDotlessJ\tab \tab =\tab codepoint(0xBB);\line \line clsLower \tab = (gI, gBarredI, gJ, gL, gDotlessI,\line \tab \tab \tab gDotlessBarredI, gDotlessJ);\line clsUpper \tab = (gUI, GUbarredI, gUJ, gUL);\line clsBarred \tab = (gBarredI, gUbarredI, gDotlessBarredI);\line clsDotless \tab = (gDotlessI, gDotlessBarredI, gDotlessJ); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 It is unlikely that anyone would use such a wide variety of referencing schemes in the same file, but notice how much clearer it is to refer to glyphs within a description file using identifier names. \par These assignments would be done in the glyph table}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Notice that the list parentheses}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 parentheses}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are not needed for single glyphs. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.2.6\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 References}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reference, to slot}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot reference}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 It can be awkward to constantly have to keep naming everything. An alternative is to use the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to refer to the corresponding glyph on left hand side}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 left hand side}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Thus the following rule simply copies a glyph: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCons > @; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A more common use is to reference glyphs in the context by number: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsA clsB > @2 @1; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This rule swaps the glyphs. \par Notice that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 may only be used on the right hand side}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right hand side}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of a rule. It cannot r efer to an optional element. We will see much more of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 later on. \par {\*\bkmkstart _Toc40864599}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 2.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Pass}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es, streams}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stream}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and slots {\*\bkmkend _Toc40864599}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite processing is organized into a sequence of two or more passes. Each pass takes a stream of glyphs as input, processes its contents, and produces an output stream. This output stream then serves as the input to the following pass. The initial pass (considered pass zero}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1835347 \:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11551179 pass }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 zero}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) converts Unicode characters into glyphs. The other pass es run rules, performing matching on the input stream and placing the results of their rules into the output stream. In particular the final pass places the glyphs into their final positions for rendering. \par Streams}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stream}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are made up of a sequence of slots}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slots}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , each containing a single glyph. There is a correspondence between the slots in the input stream and those in the output stream, and slots can be inserted, deleted or rearranged. \par The figure below shows an example of passes and the slot streams they process. Each square represents one slot, and holds one glyph. Notice that during pass 1 an \lquote X\rquote was inserted (between the \lquote c\rquote and the \lquote d\rquote ), so it is appropriate to think of a slot being inserted into the stream to hold it. Similarly, \lquote Y\rquote has been deleted, and the \lquote Z\rquote has been reordered\emdash moved with respect to a neighboring slot (the \lquote g\rquote ). \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11077249 {\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}} {\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw14736\pich9947\picwgoal8354\pichgoal5639\pngblip\bliptag-1024028960{\*\blipuid c2f68ee069f7928ab14a91ca0ff085b8} 89504e470d0a1a0a0000000d494844520000022d00000178080200000017205efc000000017352474200aece1ce9000000097048597300000ec400000ec40195 2b0e1b0000210849444154785eedddeb72acaaa206d093f3feef3c77efa23645212a022d688ffc5895d5536e03f453ba93fcfdfbf7efff7c1120408000814902 ff3fa95dcd122040800081ff0ac821eb8000010204660ac8a199fada264080000139640d10204080c04c013934535fdb040810202087ac010204081098292087 66ea6b9b00010204e4903540800001023305e4d04c7d6d13204080801cb2060810204060a6801c9aa9af6d020408109043d60001020408cc14904333f5b54d80 00010272c81a204080008199027268a6beb609102040400e5903040810203053400ecdd4d73601020408c8216b8000010204660ac8a199fada26408000013964 0d10204080c04c013934535fdb040810202087ac01020408109829208766ea6b9b00010204e4903540800001023305e4d04c7d6d13204080801cb20608102040 60a6801c9aa9af6d020408109043d60001020408cc14904333f5b54d800001027ffffefd1ba2f0f7f797d613ab8daf5736148eaf3c38b4d85064c89055428000 0102fd02c39e873ec911c2237e133a175faceceba5044a9b38a83fcbc8ca9e388c000102046e1018964337f4b5b989866c6b6e4b4102040810b8243032873e8f 1ddb2b7ef1c5e36797abb171b5894b400e2640800081af0a8ccca1e38e7ed222ee8fa5df8752db57d2d7b7054f6b0807c4af6d2b7b356445beaaaf7202040810 b82f87d24f2e644f3ce181e6f395be9113f2a0f86e53f10128d4997d2ca2583c1c96f6216debea1b5ad61001020408f4080ccba1ca4db9ed61d92b693c1477f9 3ea34da3222d9e454b4ca662ec656a5737037bd095254080008128302c874e4dc3934a960dc5f44a9f57e2934aacbf27308a7dc87abed7a5d3013a8000010204 1a04eecba118427bbd4c37e542146df7e52a47789025c5180b5b82dbccab6cce6104081020d02cf0c51c4ac360fbfd36754250a56ff0646ff9ecede96dabcade 8b0a071cf421065ecfc356f31c28488000815f1618f6fb14c2853ea52cbe5b130fdb7eac20dd344b6b3bfe8043f698b5fd00423c20cba1b460da7351f4cbe783 b1132070bfc0c81cbabff7598b6d6fed1c44d7f411e9000102045e2ff0861c0a41d21642d97e5d98efe6aa2a974bf6e05859ca610408101822b0daaecf4b7228 db9dbb3a55073b8a57abaa397e54cea9e7589b0f9f9af371ef18eba747ef52d92f7e4ee1523f7a0ece7e58b5a1aa5043fc6aa8411102040810681378430eb58d 5c29020408105841400ead300bfa40800081df159043bf3bf7464e8000811504e4d00ab3a00f040810f85d81961c8abf02277c13f1e2ebdfe6ccdaad6faeb960 7d138b1cb9f847c317efde2293d8d08decdcfc9d05df60a5c83a022d39143f9f967d50ade62f260cb900357ff8bdb9e03a1356d39321c8350db51d33b77be995 3af47ffb4ac3b86ebb093bed5bf6c9cfe6353f779a4e87e9803709b4e450cff89bcf8a9e46af967dfa19b838f2dceea577516161c4fba7e68e851f34095f4f5f 3c319baf9e358e27d02cd09843c59ff01af5635fa783696ea8a660cd31a73d74c08304c6ce7873980d114b5bef19d7dc510ca150c983041a73e87884e9ae74fc beb87151ff62dc3fd9367dba25b2b74b9ef62dbd0dcc6e69b787c583bf71f37b3a9cfae535eaed81515d5aa73faf7970d95b0c3d2154bfc01c496088c0577228 de4ca52743f66652b8241dbc985d29e2c1e9a5bf5849e6522c18526dbb91b27d8b6baff810fd62a68edae119d5f3584fe7b57bb5fec49b89ce7bffb0208744ec a8bc1fb838878c6b607f54f54a81961c2ade6a6d5f3c7d259effe985a07851c8aa3a3d3e4ed55ec1cad70fdafd349185e890f5914678678529efa8e7b6e64b76 7647d239b421d7eb10abcd238a43e87f7b294dc4786fd4336543c6b577afd639778a13d80ab4e4d0a9633885c2f959195a7b47d6bc1e9f8a8a4f427bcf1c35a3 e8bf489db652ecdea8eb4843eb8f28121f19a74cd03d44cd431bb8789afb700f91565e23f0951c8a21d4c3b41760699d35fb72f166b3d899cabbcecac37ac69b dd14f757a5861f14a8396b7e90c5901717189343e9eadf7e1f37d08b6f30142ff1072fa695c49db1e39c88cf67d961d9ebb1e7c7878547b46f27d3c0fa07de20 37f72a9db5b81efacf8de6fef4373dbc8640b4f770dfdcdcc0d9bfda87f434d9fbfe6a9d8e7fa5404b0ea527cce969538ca8e22997bd98ee09a4adc40a6bcedb 62c11824db9dc36c387bc5bfba14b246dbdaaac1a9ac795455b19ef8864a6507b2c346f5a7adf5ef950a0b3bde5a353414033ee6d99b72ba014491a7080c789f f629435da79fa36e51d5733ca7073ed905faf88d9063e7b4aa51f57cc67550d50df31e07956d3f14c16fe8cfa593577f9acf8b4bce030f6e791e1ad8bcaa084c 11483fe9d0f96efc900f4da40f43a1c2b98f32e99359e753da94f9d5e8b304e4d0b3e64b6f091020f0360139f4b619359e270a5c7acff58903d46702070272c8 f220b084c0c0adc225c6a31304aa05e45035950309102040e00b0272e80ba8aa24408000816a019fdbaea61a77e0dc8f428d1b879a081078a440e76744878f59 0e0d275521010204085c10b02f7701cba104081020305c400e0d275521010204085c10904317b01c4a80000102c305e4d070521512204080c00501397401cba1 04081020305c400e0d275521010204085c10904317b01c4a80000102c305e4d070521512204080c00501397401cba104081020305c400e0d275521010204085c 10904317b01c4a80000102c305e4d070521512204080c00501397401cba104081020305c400e0d275521010204085c10904317b01c4a80000102c305e4d07052 1512204080c00501397401cba104081020305cc0df632d93eefde9ee2ffd3dddd8dc97ea1fbe6e5448800081510272e84832c443cc86ec7f87cdc1ff5af952fd a3faa91e0204087c43c0bedc37542fd499664f08bcbd47b10b953a94000102cf119043cf992b3d254080c01b05e450e3ac7e9e5ae2575a45f1f5bd831bdb568c 0001022f129043e79399e64dba75f6f93edb498b9b6ce9c70d8a2f9eb7ea08020408fc86801c3a9fe7903731753e05d2efb7e58b1f37f019847368471020f093 0272a871da8b9b72d927eb42d5c5171b5b558c000102af1390432d537ab0d5268a5a40952140e08705e4d0c8c96fd8914bdf61b277377232d44580c04304fc1c 6b79a2b63fc493fda683e201e98bc70f4659ab7e9fc243ce17dd244060bc801c1a6faa4602040810a817b02f576fe54802040810182f2087c69baa9100010204 ea05e450bd95230910204060bc801c1a6faa4602040810a8179043f5568e2440800081f1027268bca91a09102040a05e400ed55b399200010204c60bc8a1f1a6 6a24408000817a0139546fe54802040810182f2087c69baa9100010204ea05e450bd95230910204060bc801c1a6faa4602040810a8179043f5568e2440800081 f1027268bca91a09102040a05e400ed55b399200010204c60bc8a1f1a66a24408000817a0139546fe54802040810182f2087c69baa9100010204ea05e450bd95 230910204060bc801c1a6faa4602040810a8179043f5568e2440800081f1027ffffefd1b5fab1a0f05fefefe081120406096c06a977d393461257c7268c83a50 cff1e4f1e1d3737a5b3f3d7a97cada97bbc4e56002040810182c20870683aa8e000102042e09c8a14b5c0e2640800081c102726830a8ea08102040e092c0b373 e8f34662fc0ac38e1f450baf5fb28835b4156c684b1102040810786a0e8598f97cea2c7e65c1d3fc81b4e6824b2da6f5a374620f8bb72fd90dcdd5d9ec2c7eb5 b9e3e3d301f6746ce21c8d0551dbe2028fcca19840296ec88f77a448e7a259fff231b787e1de255d2df17fdbd64f7a4b34776871e5a4b7686de7c52203e93c17 147f84c02373a846b6f9b3ffcd056b7a75cf316d17d37bfa165a59ad8703277db5a1354feb6b06d22ca0e06d02cfcba1834bc6f6ccc936ebb2fd8a8ff2c1db48 0765e3f434bf0b7530c13d1b29b7ad9b1734f4592d6fbde54f4f848111fb8249378435059e974345c7ed8e7f7adf1d2f37d9f64bdc4ed95e8fb2b337dd78f9ea 448edde11912936373b1bf4b63fb13ee457aeefdc3e259705cfd430b4bbd7f685f3d6554fe028197e4503160b65b40f18a13ae1dc5e7a7709b7c70614aff29be d3306a29c4cafb6fd50f52b6beb7c3733188358f6e6c7f4ee7ba06aaf3bda578ad8fefe82c75dd1fb28a6a181df3cb022fc9a18629dc4b9a34abe231e182d57c f5bcd4bdd050cf1d7a16c03dd7fdb4e79d5d4a07d553d5f0e7a14bb373cfc13d3eb1876357d13d03d7ca6f0afc500eed9d96d9ebc587a4f0f034ea827eb0d4e2 ede76f2ec79a51c7e7862117eb9a169f78cc90107ae2c0f5f98902cfcba16218a4675df83e7b76d91e90ee87ec7d7ff000f4edc7a37b9ebd9eb8645fd9e7f8c0 3d243f8a955851af5c39ef18d4f372283c9ac4cd99621e6ccfc3ecde39163fb8a7cea26bd476d9e9ba491b1a72ed187269fb74bbb333e9cd41a8aab3c2cee2a7 1371e701f139f84b0f79a3d6c05593f4f4dcfbfe6a9d8e7f9fc080f7211647d99e81b3cec9b11bf7e13a7e9ca3a1c5d34bdb3df5c487ce782771fa165d7169c5 f81935ae53a54a9f53ea837ab24c3d1e5a7d7f52c0e28673e5fa39363f1d57682554b2fdfee6f3a2fe7a35ea42f1d67aea254f8f7c6d0e85b95f30844ef3e374 ce9cb795444f39ffafaed2a78cab729aace74aa8d5e6bdb2db35873d725fae6660c5cbfd90eda0cad61d46800001023502afcda1f0a9aa8c207ed4aa86c63104 ee11d8bedf79bae5784fc7b442e01e81d7e6d03d7c5a21304420fd30ba101a42aa920709c8a1074d96ae122040e0850272e885936a480408107890801c7ad064 e92a0102045e28f0dacf6daf3c576ffa01cc959df58d0081a2c06aef41ca210b9500010204660ad8979ba9af6d020408109043d60001020408cc14904333f5b5 4d8000010272c81a204080008199027268a6beb609102040400e5903040810203053400ecdd4d73601020408c8216b8000010204660ac8a199fada2640800001 39640d10204080c04c013934535fdb040810202087ac01020408109829208766ea6b9b00010204e4903540800001023305e4d04c7d6d13204080801cb2060810 204060a6801c9aa9af6d020408109043d60001020408cc14904333f5b54d8000010272c81a204080008199027268a6beb609102040400e590304081020305340 0ecdd4d73601020408c8216b8000010204660ac8a199fada264080000139640d10204080c04c013934535fdb04081020f0f7efdf3f0a5b81bfbfbf22cb37b8d2 b6be51bff9254080c0ca0272e868764242c46cc8fe77ecbc7eb5f2b15d551b010204060ad8971b88a92a02040810b82c20872e932940800001020305e45023e6 671b2d7ea555145fdf3bb8b16dc5081020f0220139743e9969de84f78ae27b39e9ff6e5f0f5567079fb7e708020408fc92801c3a9fed4fd8c4af7074f8dfbd92 c54f1cf818c239b4230810f8490139d438edc54db9ec937531b4d207a3c6f614234080c04b05e450cbc41e6cb589a21650650810f86101393472f2edc88dd454 170102bf21e0e758cbf3bcfd7d0ad91b42c5038abf19e1f4d7259cb6f51b4bd1280910f8510139f4a3136fd80408105844c0bedc2213a11b040810f8510139f4 a3136fd80408105844400e2d3211ba418000811f1590433f3af1864d8000814504e4d02213a11b040810f8510139f4a3136fd80408105844400e2d3211ba4180 00811f1590433f3af1864d8000814504e4d02213a11b040810f8510139f4a3136fd80408105844400e2d3211ba418000811f1590433f3af1864d8000814504e4 d02213a11b040810f8510139f4a3136fd80408105844400e2d3211ba418000811f1590433f3af1864d8000814504e4d02213a11b040810f8510139f4a3136fd8 0408105844400e2d3211ba418000811f15f8fbf7efdf8f0e7ddeb0fffefee635ae6502047e5d60b5cbbe1c9ab0223f3934641da8e778f2f8f0e939bdad9f1ebd 4b65edcb5de27230010204080c16904383415547800001029704e4d0252e0713204080c060013934185475040810207049400e5de27230010204080c16904383 4155478000010297048e72e8f3b1c5bd9f7409ff54f97330a7479e1eb01dd2d522578f8f2d3617bc340dc30fae9c9ae1ed6615c6759232a62f76766091617e46 71e98cd85bcf45ae4ea2e6e2ebd8360f41c1a7081ce550f81997ed720caf7cfeb5f28760d2c38ab5ed35748058d974ace1eaf1fd0527ae8075ae207191a4ab25 cc45fdfad9935c6798e1074dc25773af620dd1c7129a28a0e93b05eede97dbcb83feabd29d6a8bb7d51cba5f1a5776751ef5e381ab0d33e8add9abab33fb8e51 5c1db5e367099ceccb6d97637c18aaeff1c175a7f99274b5e0d5e3e3e89a0bd6fb644776eef034b7fbd582318aeef7fceab846559eed19888151b0ea7984c0b5 e7a1e24564efba99bdb3921d16ff75efdd8262b535efd61c6cb2ef7529eb4c71e60ecaa6a1d5bc2d132a19b2c333b03fb15735f2b7adf8519d1912f961c60776 a93f84868c2b9dfadb665643bf29702187b62114967b71673cbe1eafcbd9ce5bf6ce41763f188ba7b3b2adb3f82411fbb3dd2409ada45d0ac7c4d7f7b6f8b3b1 a7a31ebb6ea243679ea591d659d5a8680c8f44432eb29defc48c8dfcf8764effd086aca56cbe7a66fff48c1bd2619510d8cda1bd4b46f67af1dcdb3ba678354f 2f0a713e8afb81e98b07ef336d27356db7b80112ced5bd468faf9e59affa2f4631dd3b5767ec49dc13ebacb048545f6760ecb92cc6700d8d8ea2eeec52bdc0e9 9143723a6ba547a9a7ece9601d40200ad43e0f151f866a42e8aa756c28bd1c379c9f578bec9d72697fb22bfb37ae5fc507c1ab868eaf14888fce2b5c70afaed8 ca313a8cc0fa025539547386148f69bb52c704dacbb93dd670bb5df93cd1fcc0171f9efaefee0fd6471bddb20b2e6a7f156dd9e19f766ce0e973e92c38ed9803 08dc2050cea1ca6b74ec5ff1a219afd7e19b6c5b266d22fba770971a8a6404599ddb7f8d77b869dfb6d7be6debe1f8e3d70fb22184df90094b7374489d35b711 953d6feb4fd6819e284acbc67555d9f967a57ef3ac8582f124eac769ae213d29f6be6fae5cc137091472289edef1a293a6425c4fd96d57faec925d49e33f1d9c 5af19ff6eee6f6eadc46d13612b6ed664f5aa1c8f1999f45d4e9f16dab24bd82f45c4a06de14f75415e7220db0ed02bb6415fb1326b1794bad675c69873b8713 efb7e222dc2ee04b3ea1c2f875b56cbc214b3b56bc296cab5929025b81019f5f6a636dbedddb6b2eab305c1db617a96dbbc37b720a32aa45f51c53ffa0cfa5e5 fd833ea7e7667687d17c97f30bf55cc23c3eb8eafda151edc59be25127c041c7b64f3ce19e6efbfa90a5368a483d040810f835815b7328ee187ce3d29f6eb314 37cd8a2164c3e1d756fcbbc77b7a16bc7bf846f750815b73e8db6f9fc6fab7efac14df6bf9767f1eba2674fbd1020767c1a3c7a5f32f16b835875eec68680408 1020d0262087dadc9422408000813102d33e2f37a6fbcfac25fd10f33347a0d704083c58e01befd0f770c8a11e3d6509102040a057c0be5cafa0f204081020d0 2320877af49425408000815e0139d42ba83c01020408f408c8a11e3d6509102040a057400ef50a2a4f800001023d0272a8474f5902040810e8159043bd82ca13 204080408f801cead15396000102047a05e450afa0f204081020d02320877af49425408000815e0139d42ba83c01020408f408c8a11e3d6509102040a057400e f50a2a4f800001023d0272a8474f5902040810e8159043bd82ca13204080408f801cead15396000102047a05e450afa0f204081020d02320877af49425408000 815e0139d42ba83c01020408f408c8a11e3d6509102040a057400ef50a2a4f800001023d0272a8474f5902040810e815f8fbf7ef5f6f1d6f2cfff7f7571cd697 b862735faaff8d53644c0408bc44400e1d4d648887980dd9ff8e5a0259e689a251b0ea2140e01102f6e5264f53cc36f1337926344f80c02401393409fe7fcd7e e247024d9e03cd13203055400e35f27f9e63e2575a45f1f5bd831bdb568c0001022f129043e79399e64d7876c936d3e21b3cc54db64b3b6f9e8dcee7c3110408 bc4bc0e7148ee6b3e68309e931c58fbd557e16aea6ad77ad3da3214080c07f053c0f35ae83e2a65cf6c9ba5075f1c562ab1e861a27433102049e2c20875a66ef 60abad2d8a3e15d6c7554b8f95214080c0aa027268e4cc14f7d64e37dcc201f101cb53d1c82951170102cb0b787fa83c45dbdfa790c543f180f4c5e307a3d8ea 6943cb2f211d2440804097801ceae25398000102043a05eccb75022a4e800001025d0272a88b4f6102040810e81490439d808a132040804097801ceae2539800 0102043a05e45027a0e204081020d0252087baf81426408000814e0139d409a838010204087409c8a12e3e8509102040a053400e75022a4e800001025d0272a8 8b4f6102040810e81490439d808a132040804097801ceae25398000102043a05e45027a0e204081020d0252087baf81426408000814e816ffddd87ed9fd5f974 b4ff2fbc9dfe4db94e0ec509102040e066816f3d0f85c8f9fc377ec5811523aa72d8fd4956d990c308102040e01e816fe5d041ef65c93d53ab150204083c42e0 5b39f479e8c9fe30f690f849ab7d84af4e12204080c0b1c0b772a8d8ea2745c257f8d7bdefb37fedd9c733fd04081020b0b8c01773284b9d0f4478af288aa40f 4cd9d35278eef97c09a1c51790ee112040a053e02b391453247e5a21f672bbb176faca415c750e5e7102040810982ef0951caa1c55fa21ec9846de01aad47318 010204de21f0f51c3afe78c2f1bfda947bc722330a0204081c088ccfa183079af04f215db20fd46ddf0a8a4f4be9f192c96a264080c0cb0406e750cc8cbdc0d8 4ba92c968adb74b6ec5eb6f80c87000102ff7d2c19f2633d280910204080409bc0e0e7a1b64e2845800001023f2b20877e76ea0d9c0001024b08c8a125a64127 081020f0b30272e867a7dec0091020b084801c5a621a74820001023f2b20877e76ea0d9c0001024b08c8a19669487f53784b796508102040e07f02cfcea1835f aff0d5dfbce087ae9c410408101825f0ec1cdafeb588e8222a462d11f5102040e0ab02cfcea194e6cedffa73675b5f9d7e9513204060bac09cdfeb1337cde2af 37dd7bb2495f2f6eb58503b6157e5e2c962dfeb5f2f42f508429492b8c9394feea55cf5bd3d7ae0e1020f00e813939945eeb6390a489b2fddb77dbdfcf1dd262 efafe4a5bf2935cda4e2eff90e71b8edc05ea359c8bd63291805010204a6084cdb97db3e82c4f19f3e6a64d19505d2f67f0f2a2ceeb06d8fcf0e3bede194b9d4 280102049e28302d878a8f1407efbb844796ab9f823ba8300dc2ed9f99086d6d03ef8973accf040810585960dabedce93e5bfa58737a7096377b11b2b78f976d ca65199995eadf94bb9aa62b2f207d2340e07102abede8ccc9a1d33c082114aff8c76fea64a913fe37fd6f5825f515c6e3f7debb3a78ccaa59919dc56313ea39 d6e6c3a7e67cdc3bc6fae9d1bb5476dabe5cd8f8ca663a6ebe85d7b30fbc65c767e154ccb6830a53a658363b3ebde2ef3d635de27630010204086402d37228c4 ccf6f1b0f87a7c311e9f96cd8a64d5ee5518214e8f4f6b28f6d9aa22408000816681093934ea69b779cc0a12204080c03a0277e7507893c61bf5ebac003d2140 80c05c81bb73686f3b6eae82d6091020406096c0dd39346b9c3fd8ee220f9df10329e19b3011e98b3d53b3c8187b86a02c010272e89d6b609d0b74fc6447f6d1 928f7be7873ed6196316ae6d4b2a0bec34b6db2aec2fb59a70ff88d4b0a6801c5a735e7a7bb5dacfa9850fc4c7510df9acca52638c3f69908df4d244669f0b9d 3b40217469ee1cdc2320877af494bd20102fd04342e842c3b71f3a373f460df71da318a5a19eaf0a3c32879ab72c9a0b7e750eb2cae3fecc9046470d796caf3a 87f6ca41a5d7fdd74775e70250fc65028fcca1e63bb5e682b7cdfa90ed9d6cfbab67a728bef311b78c7ab66b424f3a672112f5f4e433ae81d4a12703d3b19f68 5467068eebb69348438f1378640e3d4eb9bec3f102d479910d2da6bf7e624885699df583ca72b1a727698c755eace315b6a73fa973e7c72e1a3c8b45b27ced1c dda8d41f353af5bc52e09139d47c4fdd5cf0ceb90f77b2fd17d93bfbfcd0b6b2cf05ac308ae153dfb9903a8baf40aa0feb0bac9e43f16d89ed3e43f6caf6c883 ad8983b2e9cd7be7bd64c3f4c7dbcf86b28b178957d8fe7dc2c547dadcbde121d4dc130509dc29b06e0ec5c782f40750529a70a716a322fc6f3cf8603f213bdb d37d8c3be98fdb1a1b81032f706d1dcb3ad01c4569c1d093b6fe64f8432ae95c3cc5396ae85820f254dd391d8adf29b06e0e8550d95aa4a76bf12346e1d4dd96 0d058fafc869a959dbfde915a4e13214c5065e8f7aaa8a8f9ee9586284340c307626de79b49d303d836a6bf16aa9b6bb8775eeabe2d487db8538d7e9f7574d1c ff4a81a57328dd22bbb44fbd77703cb1b3305be7c488ef58a4cf76cd2b2fadadb99250b0b9aae27b309d6fccec3d225f1d63f3a08a8f533dab280de6f8347375 38e9f932a492f8b819bbd7dc2505091c08ac9b43976e57f7ee1cb3d78b0f49f122db706f6e6d114843fad2dd524a9706734f48a70f43a19ee655bdbd25ba3aba 744761ef7beb87c04760dd1c2a6e2fc4bdb574f2d2b0a9fffee0fcecb9b1b5aa08102040e092c0ba3914f604b691b07df4c96ed362a983dbb72cae4291abb77b 97a01d4ce006817417c1aabe015c13430416cda16c7b21a651f6d98162781437fdd38cd96e1164d566ff3b045a2504ee11c8b6f8ee69542b047a0416cda16c48 db279ef0b4b47ddd334dcf6a5096000102f70b2c9a43a7db0bc5100ae1743fa21609102040a059c09b22cd74ed058565bb9d920408740bacb66f2487baa75405 04081020d021b0e8be5cc7881425408000812709c8a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de272087de37a746448000 812709c8a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de272087de37a746448000812709c8a127cd96be122040e07d0272e8 7d736a440408107892801c7ad26ce92b010204de272087de37a746448000812709c8a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b01 0204de272087de37a746448000812709c8a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de272087de37a746448000812709c8 a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de272087de37a746448000812709c8a127cd96be122040e07d0272e87d736a44 0408107892801c7ad26ce92b010204de272087de37a746448000812709c8a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de27 2087de37a746448000812709c8a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de272087de37a746448000812709c8a127cd96 be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de272087de37a746448000812709c8a127cd96be122040e07d0272e87d736a440408107892801c7ad26ce92b010204de27f01f8aae1eda02fe891e0000000049454e44ae426082}}{\nonshppict {\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw14736\pich9947\picwgoal8354\pichgoal5639\wmetafile8\bliptag-1024028960\blipupi96{\*\blipuid c2f68ee069f7928ab14a91ca0ff085b8} 0100090000032e35000000000535000000000400000003010800050000000b0200000000050000000c0279012e02030000001e00040000000701040004000000 0701040005350000410b2000cc0078012d020000000078012d0200000000280000002d0200007801000001000100000000000000000000000000000000000000 00000000000000000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffffffff80101ffff ffffffffe0f3e3fffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101ffffffffffffdf75f7fffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101ffffffffffffde7efbfffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffe1cf787b9873fffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fc1f f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffefd73bbbabb3fffffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fbeff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffff1ef5ddddbbffffffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fbeff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffeeef6decde7ffffffff7ffff f7fffff7fffff7fffff7fffff7fffff7fe1ff7f807f7fc1ff7fc47f7f333f7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffef6f6ced 6dfffffffff7f89ff7fe3ff7ff1ff7e1c3f7fe5ff7fe3ff7ff7ff7fdf7f7fdfff7feeff7f333f7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff ffffffffe776766eaddcfffffff7fb3ff7fddff7feeff7fbeff7fd8ff7fddff7ff7ff7fdfbf7fe3ff7feeff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffffffff834e09ece1cfffffff7fbbff7fdeff7fefff7fddff7fbdff7fdfff7ff7ff7fefff7fddff7feeff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffff7fffefffffffffff7fcbff7fdeff7fefff7febff7fbdff7fdfff7ff7ff7ff7ff7fddff7feeff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffbffff7ffffffffff7ff3ff7fdeff7fefff7febff7fbdff7fc1ff7ff7ff7ffbff7fdcf f7fe6ff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffbffff7ffffffffff7fbbff7fcdff7feeff7ff7ff7fd9ff7fddff7 fe1ff7ffbff7fe3ff7fe9ff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffff3fffe7ffffffffff7fc7ff7fd3ff7ff1ff7fe bff7fe5ff7fe3ff7ff7ff7ffdff7fffff7fefff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7ffff f7fdfff7fffff7febff7ffdff7fffff7ff7ff7fdeff7fffff7fefff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffffffff fffffffffff7fffff7fdfff7fffff7fddff7ffdff7fffff7ff77f7fdeff7fffff7fcfff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff fffffffffffffffffffffffffff7fffff7f9fff7fffff7fbeff7ff9ff7fffff7ff8ff7fc07f7fffff7fefff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffffffffffffffffffffffffff7fffff7fdfff7fffff7e0c3f7ffdff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffff8fffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffdfffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffefffffffffffffffffffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffe1f1e198ce3dce389fffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffeeee6eab55c dd5db2fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80000ffff ffffff76f6eddedeeec7b9fffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffff fffffff80101ffffffffff7afb9ddedf66d9bdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffff3b7b7ddeef736eddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffff9b3b76ef677566ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffe27c780c478e678f2ffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffeffffffffeffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffff7ffffffff7fffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffeff7f ffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff fffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffc3f373133fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffeff575655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101fffffff7fbbb73bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101fffffff77b9b7bbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffff77bcdbbbfffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffff83dd5d9dfffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffbb199e5dfffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffbbfffffdfffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff fffdefffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101fffffffdedffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101fffffff80fffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101fffffffffffffffffffffff81f021c3f03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7e66cd9f83ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7e678f1fddffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7f071e3fefffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7fe63c7fe7ff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffe06666cdff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff fffffffffffffffffffe730f0e1ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101fffffffffffffffffffffffe73fffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101fffffffffffffffffffffffe73ffffff33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe73ffffff83ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffff807ffffffc7ffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffffffffff0000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000007fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffffffff fffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff fffff1fffffff079f1fffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fc1ff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffff6ffffffefbafbfffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fbeff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101ffffffffff7fffffef3f7dfffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fbeff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fc2c31e267738e27f0e7bc3dcc39fff7fffff7fc7ff7fe3ff7c387f7fe5ff7fe3ff7fc3ff7f00ff7fc1f f7f88ff7f333f7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fee6ee6cab7576cbf7eb9dddd5d9fff7f89ff7fbbff7fddff7f7dff7fd8ff7fddff7 fefff7fbeff7fdfff7fddff7f333f7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ff676f6e77bb1ee7f8f7aeeeeddffff7fb3ff7fbdff7fdfff7fb bff7fbdff7fdfff7fefff7fbf7f7fe3ff7fddff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ff6b6faf77bb66f7f777b6f66f3ffff7fbbf f7fbdff7fdfff7fd7ff7fbdff7fdfff7fefff7fdfff7fddff7fddff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ff6d77b777bbbb77f7b7 b676b6fffff7fcbff7fbdff7fdfff7fd7ff7fbdff7fc1ff7fefff7fefff7fddff7fddff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffad b3bb3bdd9bb3f3bb3b3756ee7ff7ff3ff7f9bff7fddff7fefff7fd9ff7fddff7fefff7ff7ff7fdcff7fcdff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101ffaebc7ca301e3cbfc1a704f670e7ff7fbbff7fa7ff7fe3ff7fd7ff7fe5ff7fe3ff7fc3ff7ff7ff7fe3ff7fd3ff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101ffaf3fffbfdffffbfffbffff7ffffff7fc7ff7fbfff7fffff7fd7ff7ffdff7fffff7fefff7ffbff7fffff7fdfff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101ffcf9fffdfeffffdfffdffffbffffff7fffff7fbfff7fffff7fbbff7ffdff7fffff7fefff7fbdff7ffff f7fdfff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffcf9fffdbe9fffdfffdffffbffffff7fffff7f3fff7fffff7f7dff7ff9ff7fffff7 feeff7fbdff7fffff7f9fff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ff9fc7ff9ff3fff9fff9ffff3ffffff7fffff7fbfff7fffff7c1 87f7ffdff7fffff7ff1ff7f80ff7fffff7fdfff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffffffff fffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff fffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000007fffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101fffffffffffffffffffffff81f021c3f81ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7e66cd9fe7ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7e678f1fe7ffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7f071e3fe7ffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7fe63c7fe7ff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffe06666cdfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff fffffffffffffffffffe730f0e1fe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101fffffffffffffffffffffffe73ffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101fffffffffffffffffffffffe73ffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe73ffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffff807ffffff87ffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101fffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000007fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7f83ff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffffff3e 3ffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7f7dff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff ffffffffffffff5f7ffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7f7dff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101ffffffffffffffffffefbffffffffff7fffff7fc7ff7fc7ff7ff2ff7fc7ff7fc1ff7fc3ff7f83ff7fc03f7fc47f7f999f7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffff81cf787b9873ffff7f89ff7fbbff7fbbff7fec7f7fbbff7ff7ff7fefff7fbfff7fefbf7feeff7f999f7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffff7dd73bbbabb3ffff7fb3ff7fbdff7fbfff7fdeff7fbfff7ff7ff7fefff7fc7ff7fefd f7feeff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffefeef5ddddbbfffff7fbbff7fbdff7fbfff7fdeff7fbfff7ff7ff7 fefff7fbbff7ff7ff7feeff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffefeef6decde7fffff7fcbff7fbdff7fbfff7fd eff7f83ff7ff7ff7fefff7fbbff7ffbff7feeff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffefeef6ced6dffffff7ff3f f7f9bff7fbbff7fecff7fbbff7ff7ff7fefff7fb9ff7ffdff7fe6ff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffefc367 66eaddcffff7fbbff7fa7ff7fc7ff7ff2ff7fc7ff7febff7fc3ff7fc7ff7ffdff7fe9ff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff ffffffffffefff4e09ece1cffff7fc7ff7fbfff7fffff7ffeff7fffff7fedff7fefff7fffff7ffeff7fefff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffffffffff7f77fffeffffffff7fffff7fbfff7fffff7ffeff7fffff7fddff7fefff7fffff7fef7f7fefff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffff7f7bffff7fffffff7fffff7f3fff7fffff7ffcff7fffff7fdeff7feeff7fffff7fef7f7fcfff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffff9e3bffff7fffffff7fffff7fbfff7fffff7ffeff7fffff7f0c3f7ff1ff7fffff7fe03 f7fefff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffe1b3fffe7fffffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffffffff fffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff fffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000007fffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101fffffffffffffffffffffff81f021c3fc7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80000fffffffffffffffffffffffe7e66cd9f93ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7e678f1f39ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7f071e3f39ffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe7fe63c7f39ffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffe06666cdf39ff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffe730f0e1f39fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff fffffffffffffffffffe73ffffff39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101fffffffffffffffffffffffe73ffffff39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101fffffffffffffffffffffffe73ffffff93ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffff807ffffffc7ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101fffffffffffffffffffffffffffffff00000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffffffff80101ffffffffffffffffffff fffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff fffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fc1ff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fbeff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fbeff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7ff fff7fffff7f83ff7fc3ff7fc1ff7fffff7f88ff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffc1ee671e3c4e3f89898c4e7ffff7f89f f7fc7ff7fe3ff7fe5ff7fe3ff7fefff7fefff7fdfff7f00ff7fddff7f333f7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffbeeeaaedcd95dfb2 b2b5967ffff7fb3ff7fbbff7fddff7fd8ff7fddff7fefff7fefff7fe3ff7fbeff7fddff7f333f7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff bf7776fdedcc7fb9b9ddcffffff7fbbff7fbdff7fdfff7fbdff7fdfff7fefff7fefff7fddff7fbf7f7fddff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101ffffbf7376fdf5ed9fbdbdddeffffff7fcbff7fbdff7fdfff7fbdff7fdfff7fefff7fefff7fddff7fdfff7fddff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101ffffbf79b77ef6eeefdddddeeffffff7ff3ff7fbdff7fdfff7fbdff7fc1ff7fefff7fefff7fdcff7fefff7fcdff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101ffffdfbabb3677666fececef679ffff7fbbff7f9bff7fddff7fd9ff7fddff7fd7ff7fc3ff7fe3ff7ff7f f7fd3ff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffdfb323c78f978ff2f2c7979ffff7fc7ff7fa7ff7fe3ff7fe5ff7fe3ff7fdbff7 fefff7fffff7ff7ff7fdfff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffdfbffffffff7fffeffeffffffff7fffff7fbfff7fffff7ff dff7fffff7fbbff7fefff7fffff7ffbff7fdfff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffefdffffffffbffff7ff7fffffff7ffff f7fbfff7fffff7ffdff7fffff7fbdff7feeff7fffff7fbdff7f9fff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffefdffbfffffbffff 7ffffffffff7fffff7f3fff7fffff7ff9ff7fffff7e187f7ff1ff7fffff7fbdff7fdfff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffff 838ffffffff3fffe7ffffffffff7fffff7fbfff7fffff7ffdff7fffff7fffff7fffff7fffff7f80ff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff fffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7fffff7fffff7fffff7 fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101fffffffffffffffffffffffffffffff7fffff7fffff7fffff7ff fff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffff9ffffe0ffffffff7ffff f7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffff7fffffffffff80101ffffffffffffffffafff fdf7fffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffffffff80101ffff fffffffffffff7fffde7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffff83dcc4e3be7bcdce1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffff7ddd595dbeb9d5d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffff7eeedcc7df7aeeef1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffff7ee6ded9df7b6e6eefffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffff7ef36eeecf7b6f36f7ffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffbf757666e5b3b75677ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffbf667978c9a706 6783fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffbf7fff7fffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffdfbfffbfffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffdfbfffbfffdff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffff071fff3fff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff80101fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80101040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par Pass zero}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1835347 \:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11551179 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 zero}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is automatically handled by the Graphite engine. The other pass es, which contain rules, are defined within the GDL program. \par Passes are organized into table}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. There are four kinds of tables that can include rules: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 linebreak}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 substitution}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justification}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justification table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 positioning}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 positioning table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ; of these the substitution and positioning tables are the most commonly used. The following shows an example of how the tables and passes of a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 GDL }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 program might be organized: \par }\pard\plain \ltrpar\s61\ql \li720\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(substitution) \par pass(1)\line // rules to handle ligatures\line endpass; \par pass(2)\line // rules to merge base characters and diacritics\line endpass; \par endtable;\tab // end of substitution table \par table(positioning)\line // rules to attach glyphs\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Tables and passes are discussed in more detail in the following sections. \par {\*\bkmkstart _Toc441048621}{\*\bkmkstart _Toc40864600}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3\tab}}\pard\plain \ltrpar \s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 File Structure{\*\bkmkend _Toc441048621}{\*\bkmkend _Toc40864600} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The GDL file}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 GDL file}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is made up of a set of table}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. Currently there are }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 eight table types, one each for: \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid5057207 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 feature definitions \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid5057207 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 language definitions, \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid5057207 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 glyph definitions \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid5057207 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 line-breaking rules \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid5057207 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 substitution rules \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justifica}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 tion-related substitution rules \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid5057207 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 positioning rules, and \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb60\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 name definitions.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5057207 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5057207 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The linebreak, substitution and positioning tables are used in particular pha ses of the rendering process. Within them, the rules can be grouped into multiple, ordered passes. Rules can also be conditionally applied based on features which are defined in the feature table and which are referenced by conditional statements in the r ules.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5057207 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The glyph table}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used to define the glyph classes} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph classes}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and provide information about the glyphs that the rules will later use. The line-break}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 line-break}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table can be used to provide information on how lines should be broken. The name table} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 name table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 provides a way for arbitrary text strings to be stored in a compiled GDL file. There are also several global settings and directives that can be applied across various sections of a file. \par {\*\bkmkstart _Toc441048622}{\*\bkmkstart _Toc40864601}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.1\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C Pre-Processor{\*\bkmkend _Toc40864601}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C pre-processor}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 To allow for commenting and some sophisticated macros and definitions, the description file is first passed through the C pre-processor. For example, the C pre-processor allows a standard file to be included which gives definitions for glyphs: }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 #include}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #include}{\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar \tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 include}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15943157 \'93IndicGlyphs.gdh\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are many other uses, including using the same file for different encodings. Organizing everything in tables facilitates including files. For exampl e, even if the #include statement occurs in the midst of the substitution table, the various table types in the included file will be properly interpreted. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10357361 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5245514 Not}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid787311 e: any paths inside an}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid787311\charrsid661883 #include}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10357361 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \cs30\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid787311\charrsid661883 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid787311\charrsid661883 #include}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid787311\charrsid661883 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5245514 statement must use Linux-style forward slashes rather than Windows-style backslashes.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16741734 Paths should be relative to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 including file. (This was changed as of version 5.2; before that point the path was relative to the current working directory}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9569556 in some cases}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 .)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5245514 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite has a complex description language so that it can describe all the different vagaries of the orthographies of the world. The needs of one group of orthographies can be very different from the needs of another group. Using the C pre-processor \rquote s mac ro capability allows us to develop macro sets which will make particular common features of an orthography family easier to describe. The added burden of learning particular sets of macros for particular needs will be offset by their ease of use. But diff erent regions will probably have different macro sets. For example, some possible first candidates for macros would be ligature representation and more complex Arabic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Arabic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rules. \par The very beginning of the file may likely contain various pre-processor commands, such as: }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 #define}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 cpt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 macro}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 codepoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 postscript}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 glyphid}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 string}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 LG_USENG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 CP_USSTD}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #define cpt\tab \tab codepoint\line #define u (x)\tab unicode (x)\line #define ps\tab \tab postscript\line #define gid\tab \tab glyphid\line #define str\tab \tab string \par #define LG_USENG 0x4090\tab \tab // {\*\xmlopen\xmlns2{\factoidname country-region}}US{\*\xmlclose} English\line #define CP_USSTD 1252}{\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar \tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage 1252}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \tab \tab // {\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place }}US{\*\xmlclose}{\*\xmlclose} standard code page \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.1.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Standard Include}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 standard include file}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 File \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5262392 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There is a standard}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid661883 #include}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5262392 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \cs30\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid661883 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid661883 #include}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid661883 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 file provided with Graphite, which provides easy access to numerous identifiers. This file provides #define}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5262392 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 #define}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9721353 s }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 for the GDL constants and abbreviations seen through out this document}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9256977 , such as}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid5262392 sub }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9256977 for}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid5262392 sub}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid15679112 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid5262392 titution }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9256977 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid9256977 DIR_LEFT }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9256977 to indicate left-to-right}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . To use this standard #include file, place the following statement at the beginning of your GDL program: }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5262392 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 stddef.gdh}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #include \'93stddef.gdh\'94 \par {\*\bkmkstart _Toc40864602}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Global}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 global}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Settings{\*\bkmkend _Toc40864602} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are a number of global settings}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 that are typically used at the beginning of a file. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.2.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 AutoPseudo}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 AutoPseudo}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 AutoPseudo = 1; // default \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This controls }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 auto-pseudo}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph mapping, which is an advanced feature used when dealing with multiple Unicode codepoints mapping to the same glyph. See the discussion in the Advanced Concepts section. This has global scope}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scope}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and is used on a line by itself at the beginni ng of the file. If it is set multiple times (typically with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid2055135 #include }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 files) all values must agree. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.2.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ScriptDirection}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 ScriptDirection}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ScriptDirection = HORIZONTAL_LEFT_TO_RIGHT; // default \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This variable indicates the directionality}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of the writing system. Possible values are: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 HORIZONTAL_LEFT_TO_RIGHT\line HORIZONTAL_RIGHT_TO_LEFT\line VERTICAL_FROM_LEFT\line VERTICAL_FROM_RIGHT \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (Vertical}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 vertical}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scripts are currently not supported by the engine.) \par It is possible that some GDL implementations may be appropriate for more than one direction, in which case the values can be added together: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ScriptDirection = HORIZONTAL_LEFT_TO_RIGHT + HORIZONTAL_RIGHT_TO_LEFT; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In this situation it is the responsibility of the calling application to determine the writing system direction. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.2.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ScriptTag}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 ScriptTag}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ScriptTag = (\'93ABC1\'94, \'93ABC2\'94);\line ScriptTag += \'93ABC3\'94; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This variable stores information about the script being implemented by the file. Since a given file can describe more than one script, the setting accepts a list of values. This list can be appended to using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +=}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 operator. Script tags must be strings not longer than four characters. \par {\*\bkmkstart _Toc441048624}{\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.2.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Bidi }{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 Bidi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Bidi = true; // default \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This setting is used to indicate whether or not a pass to run the Unicode bidirectional}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bidirectionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 algorithm should be included. The value is true by default, but may be set to false as an optimization for scripts that have no internal bidirectionality}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457 (which is true of most scripts except Arabic} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid8922457 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457\charrsid2297447 Arabic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457 and Hebrew}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid8922457 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457\charrsid2297447 Hebrew}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8922457 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The concept of internal bidirectionality and the bidi algorithm are discussed in a later section. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\lang1036\langfe1033\langnp1036\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.2.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid1006136 ExtraAscent}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\lang1036\langfe1033\langnp1036\insrsid1006136 ExtraAscent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ExtraAscent = 200m; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Due to the fact Graphite can position glyphs in complicated ways, it is possible that the ascent}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ascent}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 as defined in the original font is not appropriate for the Graphite renderer. For instance, if Graphite provides for a stacking}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stacking}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic mechanism, it may be helpful to increase the as cent of the font to allow vertical space likely to be needed for the diacritics. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ExtraAscent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 global can be used for this purpose. \par Including an \lquote m}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 m}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \rquote after the value of the global means that the number is scale}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scale}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 d relative to the size of the em square}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 em square}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 as defined by the MUnits}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MUnits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directive. This feature is discussed more fully in the section on metrics. \par The default value for }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ExtraAscent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is zero. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.2.6\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ExtraDescent}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 ExtraDescent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ExtraDescent = 100m; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ExtraDescent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 global can be used similarly to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ExtraAscent}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to provide for the fact that a Graphite renderer may adjust the vertical}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 vertical}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 position of glyphs so that they extend below the standard descent as defined within the font. \par The default value for }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ExtraDescent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is zero. \par {\*\bkmkstart _Toc40864603}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Table}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s{\*\bkmkend _Toc441048624}{\*\bkmkend _Toc40864603} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A GDL file uses tables to organize assignments and rules. A table is identified by starting with }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 table()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and ending with }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endtable}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(substitution)\line /* rules */\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 introduces the substitution}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table of rules, which are used to reorder}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reordering}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , substitute, insert}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and delete}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyphs before positioning. Terminating semi-colons are optional for both commands. There are seven table types indicated by }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 feature}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 feature}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 glyph}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 name}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 linebreak}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 lb}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 lb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ),}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 substitution}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 substitution}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 sub}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 sub}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 subs}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 subs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ),}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justification}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 justification}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 just}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 just}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ), and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 positioning}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 positioning}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 pos}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 position}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). \par It is not necessary to group all the elements in a table together in the file. For example, you may interleave two tables so that semantically similar rules from different tables can be near each other in the file. This will result in multiple }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 table}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 commands referring to the same table. The compiler will collect all these separated elements together and sort them out. Features, classes, glyph attributes, etc. must be defined before they are used in rul es; the tables where these are defined are described in later sections. \par An }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endtable}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command is required to indicate the end of a table. If a new }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command is encountered before an expected }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , the statements for the new table are processed and the next }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement causes a return to the previous table: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(substitution)\line /* rules for the substitution table */ \par table (positioning)\line /* rules for the positioning table */\line endtable; /* ends the positioning table */ \par /* more substitution rules */\line endtable; /* ends the substitution table */ \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Notice that this has the effect of syntactically nesting}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 nesting of tables}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 one table in another, but semantically the two are independent. This nesting capability is helpful when using #include files. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.3.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Pass }{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The tables that contain rules\emdash the linebreak}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , substitution}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 substitution}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and positioning}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 positioning}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 tables\emdash are made up of one or more passes. Passes are identified by a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement parameterized by a number. Note that the number is relative to the table containing the pass, not to the overall process. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endpass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement terminates a pass. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement is optional for tables with only one pass. \par As with tables, if a new }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 command is encountered before an expected }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endpass} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endpass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , the statements for the new pass are processed and the next }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endpass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement causes a return to the previous pass: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass(1)\line /* rules for pass 1 */\line pass(2)\line /* rules for pass 2 */\line endpass;\line /* more rules for pass 1 */\line endpass; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 If no }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statements have been encountered for a table type, the pass is 1. The current pass for a given table type is remembered. If the table type changes, the current pass number for this new table type is used if one has been set. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14316653 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (sub)\line pass (2)\line /* rules */\line table (p}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14316653 os)\line pass (3)\line /* rules */\line \line table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (sub) // from #include file\line /* these rules go in pass 2 */\line endtable; \line table (pos)\line /* these rules go in pass 3 */\line endtable; // end #include file\line \line /* this is position table pass 3 */\line endpass; // pass 3\line endtable; // position\line /* this is substitution table pass 2 */\line endpass; // pass 2\line endtable; // substitution \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 All rules must be in a pass. If no }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement is encountered in a table, all rules ar e placed in pass 1. For a multi-pass table, all rules must be explicitly placed in a pass. \par {\*\bkmkstart _Toc40864604}{\*\bkmkend _Toc441048622}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Environment{\*\bkmkend _Toc40864604}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 environment}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 Directives}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directives}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 allow the author to specify how certain statements are interpreted . The directives are applied across various sections of the file with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 environment}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 environment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 env}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 env}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endenvironment} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endenvironment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endenv}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endenv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) keywords. Environment statements can span multiple tables. Directives can also be applied at the beginning of tables or passes. This effectively creates a new environment that ends with the table or pass. \par Here is an example showing how a file might be organized using the major structural elements of GDL (table, pass, environment). \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 AutoPseudo = 1;\line environment \{CodePage = 1252}{\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar \tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage 1252}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ; MUnits = 1024; PointRadius = 6m\}\line \line /* feature and name tables may go here */\line \line table(glyph) \{AttributeOverride = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7737827 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \};\line /* classes defined, glyph attributes set */\line endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 ;}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \line \line table(linebreak);\line /* set breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 preferences */\line endtable\line \line table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (sub) \{ MaxRuleLoop = 3\};\line pass(1) \{MaxRuleLoop = 5\}; // this value overrides the table value\line /* rules for substituting, reordering, inserting, and deleting */\line pass(2); // this uses MaxRuleLoop = 5 since nested in pass 1\line /* more rules / \line endpass; // pass 2\line endpass; // pass 1\line pass(3);\line /* rules using MaxRuleLoop = 3 for table*/\line endpass;\line endtable; // substitution\line \line table(pos);\line /* positioning rules */\line endtable;\line \line /* \'85 */\line endenv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 environment}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 environment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statements can also be used for a subset of rules within a table or pass. When a new environment begins the previous directive values are saved (pushed), and when that environment ends the previous values are restored. The si mplest way to specify the directives for an entire file is to place an }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 environment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement before all tables and an }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 endenv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement at the end of the file. Any included files can provide their own environment which can be popped when the include file en ds. A default environment containing the default values for the directives is present if no explicit environments are in scope. \par Tables may have directives}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directives}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 applied within them. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(glyph) \{CodePage = 1252; MUnits = 1024\};\line /* class definitions */\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This is equivalent to: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(glyph);\line env \{CodePage = 1252; MUnits = 1024\};\line /* \'85 */\line endenv;\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 If tables are nested then the directives are pushed before the inner table is entered and popped after the inner table is ended. \par Passes can also have directives associated within them, though typically only }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxRuleLoop}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MaxRuleLoop}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is relevant. The mechanism is the same as for tables. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Directives}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directives}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are a number of directives that affect how certain statements are interpreted. The value shown in the example indicates the default. They can be applied with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 environment }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 environment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 table}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statements. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4.1.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 AttributeOverride}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 AttributeOverride}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 AttributeOverride = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10048838 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This controls how conflicting glyph attributes are resolved. It is discussed in the section on the glyph table. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid472677 \hich\af143\dbch\af0\loch\f143 3.4.1.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid472677 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 AutoKern}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid472677 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid472677 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid472677 CodePage}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid472677 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 AutoKern = false; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16601346 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 The auto}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12264339 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 kern algorithm is part of the automatical collision }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12264339 avoidance }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 mechanism.When}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid472677\charrsid472677 AutoKern }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 is set to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12264339 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 , automatic kerning will be performed to avoid collisions between sequences. The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid472677\charrsid472677 collision.flags }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1473004 bitmap attribute should be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 set to include the value 16 for glyphs that should be kerned.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12264339 Automatic collision avoidance is discussed in the Advanced Concepts section.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid472677 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4.1.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 CodePage}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 CodePage}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 CodePage = 1252}{\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar \tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage 1252}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This assignment allows the redefinition of the default codepage used in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 codepoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 string}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 commands }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 (discussed later)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1071306 \hich\af143\dbch\af0\loch\f143 3.4.1.4\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid1071306 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1071306 CollisionFix}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid1071306 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1071306 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1071306 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1071306 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1071306 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1071306 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid1071306 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1071306 CollisonFix = 0; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1071306 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1071306 When the value of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1071306\charrsid1071306 CollisionFix }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1071306 is something other than zero, it indicates that automatic collision avoidance adjustments should be performed. The value of the di rective specifies how many iterations the algorithm should use. Automatic collision avoidance is discussed in the Advanced Concepts section. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4.1.5\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 MaxBackup}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 MaxBackup = 0; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This indicates the amount by which the rules in a pass can cause the stream}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stream}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to back up}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 backing up}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The use of this directive is discussed in the Advanced Concepts section. Note that to use the back-up mechanism you will mostly likely need to set MaxRuleLoop}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MaxRuleLoop}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to about twice the value of MaxBackup. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4.1.6\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 MaxRuleLoop}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 MaxRuleLoop}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 MaxRuleLoop = 5; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This limits the number of rules that can be applied without advancing the slot position}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot position}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the input stream and is used for avoiding infinite}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 infinite loops}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 loops. It is discussed more fully in the section on scan position. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4.1.7\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 MUnits}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 MUnits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 MUnits = 1000; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This directive specifies how many units are in a font's em square}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 em square}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . To scale}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scale}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 an integer using this quantity, postfix an \lquote m} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \rquote to it. Scaled numbers must be used when specifying the coordinates for attachment points and ligature components and for adjusting glyph positions. This is discussed more fully in the section on metrics. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.4.1.8\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 PointRadius}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 PointRadius}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 PointRadius = 2m; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This controls the default value used for finding points actually on a glyph given coordinates for a point close to the glyph. It is discussed more fully in the section on attachment points. It must be a scaled number. \par {\*\bkmkstart _Toc40864605}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.5\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph Table{\*\bkmkend _Toc40864605}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The glyph table is where glyph classes and glyph attributes are defined. The glyph table has the following syntax: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(glyph) \{ /* directives */ \} \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 /* class definitions and glyph attribute assignments */ \par endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Recall from Section 2.2.5 that classes are defined using a standard assignment command. Classes can be defined with just one element, a list of elements, or a range of elements: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCapitalX = gCapX; \par clsDottedI = (gLowercaseI, gLowercaseBarredI);\line clsIWidth = (clsDottedI, gLowercaseL, gUppercaseI, gUpperBarredI); \par clsCaps = unicode(0x0041 .. 0x005A); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A typical }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 glyph}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is an attachment point}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , which specifies where to connect two glyphs together (typically a base character}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 base character}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and diacritic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \emdash each would have an attachment point). Glyph attributes are used to define such points since they do not depend on the glyph's location in the glyph stream. (In a positioning rule, if a base character followed by a diacritic is found, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 slot}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are then set specifying that these two particular instances of the glyphs are to be joined. These slot attributes apply only to glyphs that occur in a given slot or position in the glyph stream.) \par Glyph attributes are frequently defined for an entire class, which effectively sets the attributes for every glyph in the class. Since it is possible for a glyph to be i n more than one class, it is also possible for a glyph attribute of a given glyph to be set to different values. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 AttributeOverride}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 AttributeOverride}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directive is used to determine whether the first or last value is used.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11691456 If this directive is false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , then overriding doesn't happen so the first value will be used. If it is true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11691456 (default)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , then the last value is used. \par There are two ways of assigning a glyph attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . First, we can use normal variable assignment as in: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase.udap = point(advancewidth/2, bb.top + bb.height/10); \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Second, we can use the attribute assigning mechanism: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase \{udap = point(advancewidth/2, bb.top + bb.height/10)\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (We\rquote ll discuss points more fully in the next section.) Note that the above statement could be mistaken for a rule with no lhs}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 lhs}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or context, but it is known to be a glyph assignment statement because it occurs in the glyph table. No floating point}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 floating point}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 numbers are allowed in a GDL file. \par Like class names, user-defined glyph attribute names do not need to be declared separately. \par The system-defined glyph attributes include directionality}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , line break weight}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 break weight}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and ligature component metrics} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature component metrics}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , as well as s tandard glyph metrics}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 standard glyph metrics}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 available from the font. In addition the author can create his own glyph attributes as with the } {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 udap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point in the above example and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 upperloc}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 variable below. These are specified with user-defined}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 user-defined}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 names and can contain an integer value. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsUpperDia = (gCaron, gUmlaut, gAcute, gGrave) \{upperloc = 850m\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 upperloc}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value could later be referenced in positioning rules to provide a consistent height for these diacritic} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyphs. \par In a rule, glyph attributes can be accessed either for the current slot}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 being operated on or for other slots by prefixing the attribute name with the reference operator (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) and a slot number. For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri-144\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin-144\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase clsUpperDia \{shift.x = -@1.advancewidth/2; shift.y = upperloc\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 sets the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 shift.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute of all the glyphs in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 clsUpperDia}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to half the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value of the glyphs in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 clsBase}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\*\xmlopen\xmlns2{\factoidname PlaceName}}{\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.5.1.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Attachment{\*\xmlclose} {\*\xmlopen\xmlns2{\factoidname PlaceType}}Point{\*\xmlclose}}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 As part of the glyph attributes, it is possible to define named points which can then be used to set attachment (slot}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) attributes. In a TrueType font, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 points} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 point}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 which specify a glyph's contour} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 contour}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s are organized into }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 path}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 path}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . A path can contain just one point. All points and paths are numbered. For technical reasons the point numbers can be difficult to use; however; the path numbers are quite convenient and can easily be obtained by the font designer (using a program like Fontographer}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Fontographer}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \'ae). \par There are three ways to describe attachment points in GDL. They all involve specifying an offset}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 offset}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 from a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 base}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 point}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 base point}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Ideally the base point has actually been designed into the font for attachment purposes. The point in question should be the only one in its path. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpath}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 gpath}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function is used to specify the first (or only) point in a path. \par }\pard\plain \ltrpar\s31\ql \fi-630\li1350\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1350\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gA \{ udap = gpath(3, 0, bb.height/10);\tab \line ldap = gpath(4) \}; //no offset is required \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The first argument is the number of the path, the second and third (if present) are the x and y offset}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 offset}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. Of course if the offsets are omitted, they are assumed to be zero. In this example}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 udap }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ldap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) are short for upper (or lower) diacritic attachment point and serves as the name for the point that can later be accessed by the attachment attributes. \par The second way of specifying an attachment point is like the first except that a point number instead of a path number is used to specify the base point. Instead of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpath}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function, one uses the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpoint}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 gpoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function. This can only be used if the exact point number is known. It would be useful if the base point was in a path with more than one point and wasn't the first point. \par The third way is to specify the base point in terms of x and y coordinates}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 coordinates}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 along with optional x and y offset}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 offset}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. This is particularly needed when it is not possible to know the path or point number of the attachment point, or the glyph does not actually contain a real point that attachment can be based on. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase \{ udap = point(advancewidth/2, bb.top, 0, bb.height/10);\tab \tab \tab \tab ldap = point(advancewidth/2 , bb.bottom) \}; \line \tab \tab /* offset not required */ \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Simple integer mathematical expressions (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 -} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 *}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 *}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 /}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 /}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) are allowed, as well as simple functions }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 min}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 min}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 max}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 max}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 since often locations need to be calculated. Also a C}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 -style conditional statement is possible: }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 ? : }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Note that the point names are very much like user-defined variables. Later they will be referenced by slot attributes in the positioning rules. \par See the section on positioning and units in the next section for details as to the meaning of the metrics in these specifications. The first attachment point (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 udap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) is located at the center of the glyph horizontally and 10% above the top of the bounding box of the character. The second attachment point (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ldap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) is located horizontally centered at the bottom of the bounding box of the glyph. \par When a base point is specified in terms of x- and y-coordi nates using the third approach above, Graphite, with its affinity for attaching to real design points, will try to locate an actual on-curve point close to the x- and y-coordinates. If it finds one, it will then associate the base point with the on-curve point and the attachment point will adjust with the hinting of that on-curve point. The directive }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 PointRadius}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 PointRadius}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gives the default hunting range to find an on-curve point which is considered identical to the base point, so the base point is moved to be the same as that on-curve point. This value defaults to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 2m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.5.1.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Ligature}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8192603 }{\rtlch\fcs1 \ab\ai\af0 \ltrch\fcs0 \b0\i\insrsid8192603\charrsid8192603 [Not implemented]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 True ligatures can be considered to have components which are visible and which may want to be identified within the ligature. In the glyph table}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 we define glyph attributes for the bounding box} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bounding box}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of each component in the ligature with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 component}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 component}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 comp}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 comp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) keyword. The correspondences between the ligature components and und erlying glyphs are handled in the substitution table when the ligature is substituted for the underlying glyphs. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 oeLig \{component.o = box (0, bb.bottom, advancewidth/2, bb.top);\line \tab comp.e = box (aw/2, bb.bottom, aw, bb.top)\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This example introduces the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 box}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 box}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function for defining the bounding boxes in a ligature. It is similar to the functions used for specifying attachment points. \par }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid10755847 Note: as of Graphite2 version 1.3.12}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8192603\charrsid8192603 , ligature components are not supported. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.5.1.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Directionality}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Directionality support is based almost directly upon the directionality description in Unicode. Unicode specifies that a codepoint may take on a number of different directionality types of which only a subset are relevant at the glyph level. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In Graphite, the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 directionality} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 directionality}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 dir}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 dir}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) attribute for a glyph may take on any of these numeric values:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 DIR_}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 constants}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt \brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\pard\plain \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Numeric Value\cell }\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Unicode Type\cell GDL Label\cell Description\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr \brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl \brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 0\cell ON\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_OTHERNEUTRAL\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Other Neutrals (default)\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr \brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl \brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 1\cell L\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_LEFT\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Left to right, strong\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt \brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar \ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 2\cell R\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_RIGHT\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Right to left, strong\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow3\irowband3\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt \clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 3\cell AR\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_ARABIC\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Arabic Letter, right to left, strong\cell }\pard \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr \brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt \brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 4\cell EN\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_EURONUMBER\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 European Number, L to R weak\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr \brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl \brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 5\cell ES\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_EUROSEPARATOR\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 European Number Separator, L to R weak\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr \brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl \brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 6\cell ET\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_EUROTERMINATOR\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 European Number Terminator, L to R weak\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr \brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl \brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 7\cell AN\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_ARABICNUMBER\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Arabic Number, R to L weak\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow8\irowband8\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr \brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl \brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 8\cell CS\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_COMMONSEPARATOR\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Common Number Separator, L to R weak\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow9\irowband9\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr \brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl \brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 9\cell WS\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_WHITESPACE\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Whitespace, neutral\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow10\irowband10\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt \brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row \ltrrow}\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 10\cell BN\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 DIR_BOUNDARYNEUTRAL\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Other formatting and control characters (ignored in processing bidirectional text)\cell }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow11\irowband11\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth1008\clshdrawnil \cellx900\clvertalt\clbrdrt \brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth3060\clshdrawnil \cellx4950\clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth4140\clshdrawnil \cellx9090\row }\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyphs receive a directionality by virtue of the Unicode codepoints which map to them. Values for unmapped glyphs, pseudo-glyphs, or Private Use Area (PUA}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 PUA}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) codepoints are defined by setting the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 dir}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 dir}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute. If a one of these glyphs is not explicitly assigned directionality, it will be considered neutral (ON). The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 dir}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute can also be set in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 substitution}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table. \par See the Unicode Standard Annex}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Unicode Standard Annex}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #9 for a full description of the bidirectionality algorithm and the meanings of the above values: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\insrsid1006136 www.unicode.org/unicode/reports/tr9}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.5.1.4\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Breakweight \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Each glyph also has a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute which describes whether line-break}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 line-break}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ing can occur after such a glyph and at what level.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 BREAK_}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 constants}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trrh315\trleft-27\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind81\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth507\clshdrawnil \cellx480\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx1980\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx4380\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth480\clshdrawnil \cellx4860\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx8760\pard \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 10\cell white-space} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 white-space}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 break\cell }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_WHITESPACE\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 30\cell letter break\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_LETTER\cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trrh315\trleft-27\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind81\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth507\clshdrawnil \cellx480\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx1980\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx4380\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth480\clshdrawnil \cellx4860\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx8760\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trrh375\trleft-27\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind81\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth507\clshdrawnil \cellx480\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx1980\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx4380\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth480\clshdrawnil \cellx4860\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx8760\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 15\cell word break}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 word break}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_WORD\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 40\cell clip break\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_CLIP\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow1\irowband1\ltrrow \ts11\trgaph108\trrh375\trleft-27\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind81\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth507\clshdrawnil \cellx480\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx1980\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx4380\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth480\clshdrawnil \cellx4860\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx8760\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 20\cell intraword break\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_INTRA\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trrh375\trleft-27\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind81\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth507\clshdrawnil \cellx480\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx1980\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx4380\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth480\clshdrawnil \cellx4860\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1500\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2400\clshdrawnil \cellx8760\row }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 To indicate a possible line-break }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 before}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 a glyph, the }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute should be negative (e.g. -10). \par Values for unmapped glyphs, pseudo-glyphs, or PUA}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 PUA}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepoints are defined by setting the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute. If a one of these types of glyphs is not explicitly assigned a line-break weight, it will be considered level 30 (letter break}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 letter break}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). Other glyphs can also be set explici tly, or the compiler will assign a default value. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute can also be set in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 linebreak}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.5.1.5\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Metrics}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metrics}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Each glyph also has a set of metrics associated with it. See the section on metrics, below, for details on what is available. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid10036964 \hich\af143\dbch\af0\loch\f143 3.5.1.6\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid10036964 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 Mirroring}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid10036964 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid10036964 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964\charrsid2359712 mirroring}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 attributes \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2362828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 When the Bidi}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2362828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid13324220 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13324220 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13324220\charrsid3153696 Bidi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13324220 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 global variable is turned on, glyphs can set the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10036964\charrsid13324220 mirror.glyph}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2362828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2179873 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2179873 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid2179873 mirror.glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2179873 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10036964\charrsid13324220 mirror.isEncoded}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2362828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid13833275 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13833275 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid13833275 mirror.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1993797 is}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid2362828 Encoded}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13833275 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3429696 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 attributes, which are used for mirroring glyphs in right-to-left scripts. See the Advanced Concepts section for more information. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6227672 When Bidi is off, the mirroring attributes are considered undefined and will result in a compilation error. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6227672 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10036964 Note: this feature is only available in the Graphite2 engine.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6227672\charrsid10036964 \par {\*\bkmkstart _Toc40864606}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.6\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Feature Table{\*\bkmkend _Toc40864606}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 feature table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Features provide a way to produce rendering variations for a writing system}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing system}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 feature}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table defines what the features are. Rul es within the substitution and positioning tables can then be conditionally executed based on feature settings in the underlying text stream. An application program can determine what the allowable features are and can set them in the text stream it provi des to the renderer. \par For example, you might create a Graphite renderer with a feature that allows several options with regard to the creation of ligature}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. As the calling application passes the Graphite engine a string of text to be rendered, that text contains mark-up indicating which kind of ligature replacement is desired. The Graphite rules are fired conditionally based on that mark-up, so that only the rules appropriate for the kind of ligatures requested will be fired. \par Features are similar to glyph}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s in that each glyph in the text to be rendered holds values for each feature, glyph attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and slot attribute. Features are different from both glyph and slot attribu tes in that feature values are determined by the calling application; glyph attributes and slot attributes are entirely private to the Graphite rendering process. While glyph attributes are specified in the glyph table and slot attributes are set by the r ules, feature values (at least in the current version of Graphite) cannot be modified by the engine; they are read-only. \par Each feature declaration consists of a structure of information regarding naming and possible settings, etc. Features follow a standard variable naming structure whereby }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 .}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 .}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 period}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 fullstop}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used as a variable structure separator. Thus in the example below, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ligatures.id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 may be thought of as the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 sub-variable of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ligatures}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par Each feature must be declared in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 feature}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table. For example, for a feature called \'93ligatures\'94, your GDL program might say: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(feature)\line ligatures.id = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 \'93ligs\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ;\line ligatures.name.LG_USENG = string("Ligature Replacement");\line ligatures.default = std;\line ligatures.settings.all.value = 3;\line ligatures.settings.all.name.LG_USENG = string("All");\line ligatures.settings.std.value = 2;\line ligatures.settings.std.name.LG_USENG = string("Standard");\line ligatures.settings.min.value = 1;\line ligatures.settings.min.name.LG_USENG = string("Minimal");\line ligatures.settings.no.value = 0;\line ligatu res.settings.no.name.LG_USENG = string("None");\line endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Notice that there are four possible settings for this feature, the default being \'93standard.\'94 \par This example introduces the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 string}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 string}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function which returns a list of Unicode values, one for e ach character in the string. It accepts standard C}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 character escape codes}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 escape codes}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \\t}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 \\\\t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \\n}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 \\\\n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \\ \\}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , etc.). The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 string}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function is much like the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 codepoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function in that it also takes an optional codepage}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 parameter. Thus we could have written: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligatures.name.LG_USENG = string("Ligature Replacement", 1252}{\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar \tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage 1252}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This information can also be expressed hierarchically as part of the feature definition. Thus our example would become: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (feature)\line ligatures \{\line \tab id = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 \'93ligs\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ;\line \tab name.LG_USENG = string("Ligature Replacement");\line \tab default = opt;\line \tab settings \{\line \tab \tab all \{\line \tab \tab \tab value = 3;\line \tab \tab \tab name.LG_USENG = string("All");\line \tab \tab \tab \}\line \tab \tab std \{\line \tab \tab \tab value = 2;\line \tab \tab \tab name.LG_USENG = string("Standard");\line \tab \tab \tab \}\line \tab \tab min \{\tab \line \tab \tab \tab value = 1;\line \tab \tab \tab name.LG_USENG = string("Minimal");\line \tab \tab \tab \}\line \tab \tab no \{\line \tab \tab \tab value = 0;\line \tab \tab \tab name.LG_USENG = string("None");\line \tab \tab \tab \}\line \tab \tab \}\line \tab \}\line endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9780230 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 id}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used by applications so that they can store a language independent reference to a feature without having to go through the language system and full names, which may vary. \par Features and feature settings each have a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 name}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 element which is language specific. The fall-back language is } {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 LG_USENG}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 LG_USENG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 default}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 element is set to the identifier or value of a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 setting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 element and is the default setting of the feature if no setting is applied. If there is no }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 default}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 element, then the setting with the lowest value is chosen. \par A feature need not have settings. A feature with no settings specified results in a boolean}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 boolean}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 type feature. It can have two possible settings: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) }{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 0}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.6.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Styles}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 styles}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1053901 }{\rtlch\fcs1 \ab\ai\af0 \ltrch\fcs0 \b0\i\insrsid1053901\charrsid1053901 [Not implemented]}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One special use of features is to support font style}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 font style}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s such as bold}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bold}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and italic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 italic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . There is a special feature ID which is used to handle all styles. By defining a feature with this ID, one is specifying that this feature will be tested against the style information available for a text run. There is also a pre-define d set of possible settings which correspond to font styles. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(feature);\line style \{\line \tab id = STYLE_GENERAL;\line \tab name.LG_USENG = string("style");\line \tab settings \{\line \tab \tab regular \{\line \tab \tab \tab value = STYLE_REGULAR;\line \tab \tab \tab name.LG_USENG = string("regular");\line \tab \tab \tab \}\line \tab \tab bold \{\line \tab \tab \tab value = STYLE_BOLD;\line \tab \tab \tab name.LG_USENG = string("bold");\line \tab \tab \tab \}\line \tab \tab \}\line \tab \}\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136\charrsid5603171 Note: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid10755847 as of Graphite 2 version 1.3.12}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid8795211\charrsid5603171 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid5603171 this feature is not supported}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136\charrsid5603171 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid16136696 \hich\af143\dbch\af0\loch\f143 3.6.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid16136696 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 Language Table \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16136696 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 The language table can be used in conjunction with the feature table to define sets of features tha t are associated with a given language. Languages are identified in terms of ISO-639-3 identifiers. Groups of languages can be assigned default feature values. The syntax for the language table is: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 table(language); \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid16136696 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid16136696\charrsid16136696 language}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid14972120 -g}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid16136696\charrsid16136696 roup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 \{\line \tab languages = ( }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid14972120 ISO-ID}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid14972120 ISO-ID}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 , \'85 );\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid16136696\charrsid16136696 feature-name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid16136696\charrsid16136696 value}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 ;\line \tab }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid16136696\charrsid16136696 feature-name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid16136696\charrsid16136696 value}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 ;\line \tab etc.\line \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 ; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid7424484\charrsid7424484 language}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid14972120 -g}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid7424484\charrsid7424484 roup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 \{ \'85 \}; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16136696 endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7424484 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 The features listed must be those defined in the feature table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5776182 , and therefore the language table must follow the feature table in the file structure}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 . The language group }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8219503 label }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 can be any arbitrary string that meaningfully describes the group of languages. \par An example of language definitions for Arabic script might be: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 table(language); \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid7424484 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 si}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 ndhi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 \{\line \tab languages = (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 snd}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 sd}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 " }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 );\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 meemAlt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 sindhi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 ;\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 easternDigits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 sindhi;\line \tab shaddaKasra = sindhiUrdu;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 \line \}; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 kurdish }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 \{\line \tab languages = (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 bdh}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 ", "ckb", "kmr", "kur", "sdh"}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 );\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 hehAlt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 kurdish;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 \line \}; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 urdu}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 \{\line \tab languages = (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 urd}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11760533 ", "ur"}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 );\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 hehAlt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 urdu}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 ;\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 easternDigits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484 urdu;\line \tab shaddaKasra = sindhiUrdu;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7424484\charrsid7424484 \line \}; \par endtable; \par {\*\bkmkstart _Toc40864607}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.7\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Name Table{\*\bkmkend _Toc40864607}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 name table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The name table is used to insert multilingual}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 multilingual}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 text into the compiled GDL file. Each compiled file has a section referred to as the name table where these strings are stored. For those familiar with TrueType, this is an extension of that standard name table. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9780230 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(name) \{CodePage = 1252\};\line NAME_AUTHOR.LG_USENG = string ("John Quick");\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This would insert the Unicode string corresponding to "John Quick" in the compiled GDL 's name table. The string will have a language }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of LG_USENG and a name }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of NAME_AUTHOR. The language }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s and some name IDs have been standardized with a semantic meaning by the computer industry for use in a TrueType font\rquote s name table. Many of these are accessible as #de fines from a standard #include file as shown by LG_USENG in the above example. In addition Graphite has defined additional name }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s that may be useful as shown by the NAME_AUTHOR label. \par Users can also use arbitrary integers to create their own name }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 name }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s provided there is no collision with a standard }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or with an }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 that Graphite uses. Specifically, to be safe users should only use values greater than 40960 (0xA000}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 0xA000}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) for their name }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. Of course, only the user will know the semantics of their name }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s, unlike the well-known semantic meaning of standardized } {\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. \par {\*\bkmkstart _Toc441048625}{\*\bkmkstart _Toc40864608}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 3.8\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Global State Variable}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 global state variable}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s {\*\bkmkend _Toc40864608} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are several global state variables that are used for justification}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justification}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . They are described in the Advanced Concepts section. \par {\*\bkmkstart _Toc40864609}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Data Processing{\*\bkmkend _Toc441048625}{\*\bkmkend _Toc40864609} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In processing a run of text, Graphite takes the text through a number of processes in order. The text starts off as a series of Unicode codepoints and ends up as a sequence of positioned glyphs. The processes, in order, are: \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Convert Unicode characters to glyphs \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Set line-break values \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Apply substitution rules \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Internally reorder mixed direction text \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Apply positioning rules \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Perform final placement \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (For simplicity, the steps above do not reflect justification. See the Advanced Concepts section for a discussion of how justification affects the Graphite processing model.) \par This section takes each process in order. But first, some further details on how rules interact with each other. \par {\*\bkmkstart _Toc441048626}{\*\bkmkstart _Toc40864610}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Processing Rules{\*\bkmkend _Toc441048626}{\*\bkmkend _Toc40864610} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Rules do not exist in isolation, and here we consider their interaction. In what order are rules tested and executed? What happens after a rule matches? \par For the most part, the processing model should be sufficiently intuitive that it can be ignored. But there are times when an author may need to consider rule interaction, and then the processing model becomes highly significant. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Scan Position}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scan position}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Rule matching}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule matching}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 can be considered as having a scan position, the current location in the input stream. When matching a rule, the scan position corresponds to the first underscore}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 underscore}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 _}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the context}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 context}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or the first item in the rule if there is no context). When a match occurs, the action (the part to the right of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 >}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) is performed, and the scan position is moved t o just after the last underscore in the context (or after the last item in the rule if there is no context). The new scan position is then used to start searching for new rules. If no rule is found, the scan position is advanced by one glyph and the proce ss restarted. \par Why is the scan position moved to such a strange location\emdash after the last underscore in the context? \par Consider the following rule: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 X > Y / A _ A \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 with the following input: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A X A X A X A \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In order for the output we might expect (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 A Y A Y A Y A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ), it is necessary for the processor to rescan the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 that occurs at the end of the context. This is achieved by placing the scan position just before the final }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the context. More generally, the solution is to place the scan position after the final }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 _}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the context. \par For rules with no left-hand side}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 left hand side}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , scan position is also adjusted to be after the final _ in the context, or after the final glyph in the rhs}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rhs}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . However, this may not be the most convenient approach, particularly for po sitioning rules. For instance, it may be useful to only advance by one glyph at a time, so that a sequence of diacritic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s of indeterminate length may be stacked on top of each other without reference to the base} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 base}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 character at each step: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase clsDiacritic \{attach \{to = @1; at = udap; with = lap\}\};\line clsDiacritic clsDiacritic \{attach \{to = @1; at = udap; with = lap\}\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Always adjusting the scan position past the last glyph would preclude this set of rules; several passes would be required to produce the desired result. Instead, the context can include the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ^}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ^}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 symbol as an indicator of where the scan position should be placed after the rule is applied: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase clsDiacritic \{attach \{to = @1; at = udap; with = lap\}\}\line \tab \tab / _ ^ _ ;\line clsDiacritic clsDiacritic \{attach \{ to = @1; at = udap; with = lap\}\}\line \tab \tab / _ ^ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This says that the new scan position}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scan position}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 should be after the first glyph in the context, rather than in the default position after the second. This allows rescanning of the second item in the rule. \par Note, however, that this feature makes it possible to write rules that result in infinite loops}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 infinite loops}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 during rule application, that is, where a sequence of rules never allows the scan position to advance at all for a given input. In fact, it is quite easy to write such rules, and even with care it may be possible to get this sort of nasty effect. As a safety net, therefore, a directive exists indicating the maximum num ber of rules that can be applied without the scan position advancing. If this number is reached, the scan position is forcibly advanced before the next rule is applied. The default for this variable is 5; it can be changed using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxRuleLoop}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MaxRuleLoop}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directive: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass (2) \{MaxRuleLoop = 10\};\line \tab /* \'85 */\line endpass; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Typically this directive is used on a pass, but it can be used in any environment. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Features}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 features}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The feature mechanism provides a way for users}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 user preferences}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to parameterize rendering}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rendering}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Thus users can change the style of a rendering according to their preferences. For example, they might want to enable or turn off ligature substitution, or even switch between a script and its transliteration. The feature mechanism interacts with an application's user interface to allow a user to set different features for a run of text to change how it is rendered. There is also a mechanism to map font style}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 font style}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\field\flddirty{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}{\fldrslt }} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s within a text run to features, thus allowing for features to be used with styles also. \par Features appear within a rendering description by specifying what rules are available for matching, via }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 feature constraints}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 feature constraint}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . These feature constraints can be tested either for a set of rules using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 if}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 if}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement or for specific slot}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s using tests within the context of a rule. The former method uses feature constraints that look much like }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 if()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statements in C}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . They can be single-line or multi-line and can be nest ed. The. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 else}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 else}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement is also supported. An }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endif} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endif}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement is required following the conditional rules. A terminating semi-colon} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 semi-colon}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is optional. \par Within the test for either method, all the usual C}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 logical}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 logical operators}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 operators can be used (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 &&} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 &&}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , ||}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ||}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , ==}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ==}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , !=}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 !=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , !}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 !}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , >}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 >}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , <}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 <}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , >=}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 >=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , <=}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 <=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) along with parentheses}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 parentheses}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 for subexpression grouping. The order of precedence} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 precedence of operators}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 for these operators is as in C. Features allow the end user to control the way in which Graphite renders the underlying data. By setting different features to different values, it is possible to completely change the way a piece of text is rendered. A typical feature test might be structured as: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 if (ligatures == no)\line \tab // rule \line \tab // rule\line else if (ligatures == all)\tab // \'93else if\'94 is available this way,\line \tab \tab \tab \tab \tab \tab \tab // if both are on the same line \par \tab // rule\line \tab // rule\line endif; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 For a rule from above to be applied, the feature must be true for all the slots in a rule. To test specific slots, the test can be specified within the context of a rule. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gA > gB / _ \{ligatures == all\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Slot tests can only be used in rules with an explicit context. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Slot Constraint}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot constraint}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In addition to testing for features in the context of a rule, one can also test any readable attribute. This mechanism allows for constraints to include glyph attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s, glyph metrics}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph metrics}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. These attributes cannot be tested using an }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 if}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 if}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gA > gB / _ \{bb.height > 1000m\}; \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Bidirectionality}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bidirectionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.4.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Rule Item Order}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 order of rule items}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 When Graphite processes a rule by matching glyphs to the elements of the rule, it always works in logical order}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 logical order}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rather than physical order}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 physical order}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (with one exception that we'll discuss below). At the same time, the elements in a rule are always logically ordered from left to right (assuming, of course, a left-to-right editor in which one is writing GDL code!). \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 item1 item2 item3 > replacement1 repl2 repl3\line / context1 _ _ _ context5; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This means that for a right-to-left}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing system}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing system}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , the items in the rules are written in GDL in the opposite order from the way they are ultimately displayed to the user. For instance, suppose you have a rule matching glyphs A, B, and C, in that order: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gA gB gC \{...\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In a right-to-left writing system the final output would be "CBA" but the rule is still written as above. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.4.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Internal and Final Reordering}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reordering}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In the linebreak}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 linebreak table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and substitution}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 tables, the order of the items in the rules always corresponds to the underlying text order. For instance, if you have a right-to-left}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing system and your underlying text is "ABC 123 DEF", this is the order of the glyphs during these two tables. \par Some writing systems have }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 internal}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bidirectionality}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 internal bidirectionality}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , that is, there are sequences of glyphs that are in the opposite direction from the overall flow of the text. This reordering occurs at end of the substitution table, in a special pass called the "bidi pass}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bidi pass}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ", just before the positioning table. \par So if, in our right-to-left}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing system, numbers are written left to right, the bidi pass will change our sample underlying order from "ABC 123 DEF" to "ABC 321 DEF". This is the order that is used during the positioning passes. \par At the very end of the positioning passes, just before glyphs are displayed on the screen, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 final}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reordering is done for right-to-left}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing sys tems. Our final example output becomes "FED 123 CBA" and this is how it is displayed. \par {\listtext\pard\plain\ltrpar \s5 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\fs22\insrsid1006136 \hich\af0\dbch\af0\loch\f0 4.1.4.2.1\tab}}\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Contextualization}{\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar\tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 contextualization}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Across Direction}{\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 direction}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Boundaries \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Note that the above process makes it possible to do contextualizations across internal direction changes using }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 logical}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 logical adjacencies}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 adjacencies in the substitution table, but using }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 physical}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 physical adjacencies}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 adjacencies in the positioning table. \par For instance, as part of the substitution table we could write a rule recognizing the logical adjacency of the "C" and the "1" in our example text, but not the physical adjacency of the "C" and the "3". On the other hand, the positioning table could conta in a rule recognizing the physical adjacency of the "C" and the "3", but not the logical adjacency. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Tables}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 While syntactically two tables may be interleaved, in terms of data processing, the elements of a table are all grouped together. Th e substitution and position tables are strictly ordered: all the rules from the substitution table are applied before any from the position table are applied. We will examine these tables in turn in following sections. \par Certain of the slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s are associated with certain tables. If a slot attribute is set in a table that does not recognize it, a compile-time warning}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 warning}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 will be given and the setting will be ignored. \par Each table is made up of one or more passes. The passes, in turn, contain the rules. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.6\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Pass }{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Not being able to reprocess data that has been output can be a big problem when there is complex processing involved. For this reason a table may allow a multi-pass}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 multi-pass tables}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 processing mo del. This allows the GDL file author to have one set of rules, which are considered to run together, once, over the glyph string. They can then have another set which are run once over the resulting string, and so on for as many passes as they need.}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid1006136 \chftn {\footnote \ltrpar \pard\plain \ltrpar\s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\fs18\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 Ther e is one implementation difficulty which it would be worth bearing in mind if it is intended for the description to be used to generate GX tables. The GX }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10357361 mort}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 table is where the substitutions are made. The problem with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10357361 mort}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 table is that any insertions cannot be used in any subsequent passes over the data. Therefore insertion rules should only be used in the final substitution pass of a multi-pass description.}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Pass}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statements act somewhat like }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 if}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 if}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statements. They can b e single- or multi-line. Each pass has a number and the data stream is processed in the order of the passes. It is not necessary to group all rules associated with one pass together. This allows for rules to be grouped according to other criteria such as linguistic structure. You might use a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 #define}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 #define}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to name the pass numbers rather than embedding their numbers in the code. This has the advantage of making it easier to insert new passes without having to change every }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statement. \par If no pass statements have been encountered for a table type, the current pass is 1. The current pass for a given table type is remembered, so when the table type changes, the current pass number for the new table is used. \par A typical structure for a multi-pass description might be: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass(1);\line \tab /* rules */\line if (feature == yes)\line \tab /* rules */\line endif;\line \tab /* rules */\line endpass; // pass 1 \par pass(2);\line if (feature == yes)\line \tab /* rules */\line else\line \tab /* rules */\line endif;\line endpass; // pass 2 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Semi-colons following the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 endpass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 statements are optional. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.7\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Ordering of Rules}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ordering of rules}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule order}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 precedence of rules}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Within a pass, rules are given a priority order. This priority is based on the length of the context}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 context}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ; i.e., longer matches have priority over shorter matches. Thus: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A B C > X Y Z / _ _ _;\tab // priority 1\line A > D / _ B;\tab \tab // priority 2 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 will be tested in the order given here regardless of the order in which the rules appear in the file. If several ru les have the same length, they will be processed in the order they appear in the file. This allows the GDL author to control these subtle ordering issues. \par For the most part, ordering should not need to be an issue of consideration for a GDL author. The priority-based-on-rule-length approach used by Graphite has been found to be the most natural in other rule-based systems. \par Linebreak pseudo-characters in the context are counted for ordering. Inserted glyphs are not counted when determining rule ordering. See below for these topics. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.7.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Optional}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 optional}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ity \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 When calculating the length of a rule, it should be noted that rules are not dealing with strings, as such, but with a list of glyphs. When a rule contains an optional element, it is internally re solved down to two rules: one with the element and one without. These resolved rules are then inserted at their appropriate locations in the priority order. \par For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 B > Y / W A? _ C;\line C > D / B _ E; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 An input sequence of \'93WABC\'94 will result in \'93WAYC\'94 as might be expected. But what about \'93WBCE\'94? The above rule set will result in \'93WYCE\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid1006136 \chftn {\footnote \ltrpar \pard\plain \ltrpar\s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\fs18\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 For this particular problem, an alternative solution might be to argue that all of the context before the first ma tch character (in the case of the second rule, the match character is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10357361 C}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 and this pre-context is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10357361 B}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 .) should be ignored as part of the length as per }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10357361 pre()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 in CC. This would result in the same solution but would weight rules towards those with earlier information on the left hand side of the rule.}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 because although the first line generates a rule that has only 3 items (when the optional item is ignored), this shorter rule is still the same length as the second and precedes it in the file, and therefore it takes precedence over the second rule. \par {\*\bkmkstart _Toc441048627}{\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.1.7.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Rules beginning with context}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 context}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 items \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The scan position}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scan position}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is considered to be before the first item in the left-hand side}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 left hand side}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , that is, just before the first underscore} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 underscore}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 _}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the context if any}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (Note that this represents a change from earlier versions of Graphite.)}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Therefore, given the following rules: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A > B / W _;\line A > C / _ X Y; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and the input \'93WAXY\'94, the output would be \'93WCXY\'94 . Neither rule is considered to match when the scan position is at the beginning of the input, so the W is simply copied to the output stream with no change. Now the scan position is before the A, and both rules match. But the second rule has precedenc e due to its longer context. It fires, and the first rule is ignored. \par {\*\bkmkstart _Toc40864611}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Converting Characters to Glyphs{\*\bkmkend _Toc441048627}{\*\bkmkend _Toc40864611} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Without smart font capabilities, the process of converting a Unicode string to the corresponding glyph string would consist of looking each Unicode codepoint up in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 cmap} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cmap}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table in the TrueType font, where it would find the corresponding glyph number. \par For the most part, this is what Graphite does also, and in most situations GDL authors can leave the firs t phase of conversion as just that. In the case of two or more Unicode codepoints mapping to the same glyph, Graphite, by default, treats these as separate glyphs. This is achieved using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 pseudo-glyph} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pseudo-glyph}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 mechanism, which is discussed, in the Advanced Concepts section. It is also possible to define one's own pseudo-glyphs. \par {\*\bkmkstart _Toc40864612}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Linebreak{\*\bkmkend _Toc40864612}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 linebreak}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule tables}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One of the Graphite engine\rquote s functions is to produce line-breaks in cooperation with the calling application. As the application asks for a range of text to be rendered, it specifies how much physical space is available, and the engine produces an appropriate break point in the text. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7417560 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite\rquote s line-breaking algorithm is based on the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7417560 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7417560 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) attribute of a slot}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7417560 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute indicates the level of appropriateness for a line-break at that point in the text. Graphite can set a line-breaking weight either in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 glyph}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7417560 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 linebreak} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7417560 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 lb}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7417560 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid7417560 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7417560 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid7417560 lb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7417560\charrsid481109 keyword}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7417560 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) table. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 lb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table is made of rules that set line-breaking weights for slots which override any line-break weights set in the glyph table. These rules look very much like position rules, but they only set the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 break}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute. As potential line-breaks are determined, these weights are considered as }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 preferences}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or hints for where a line-break might occur. Nothing in GDL can explicitly }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 force}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 a line-break at a specific slot; the linebreak table only suggests possible breakpoints. \par See section 3.5.1.4 above for a list of possible breakweight values. \par Since the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table cannot perform substitutions, it is an error to include a rule with a lhs}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 lhs}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\*\bkmkstart _Toc441048628}{\*\bkmkstart _Toc40864613}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Substitution{\*\bkmkend _Toc441048628}{\*\bkmkend _Toc40864613}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule tables}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This is the meat of Graphite. In addition to simple replacement, as has been covered in the previous section, there are more complex tasks that substitution rules can be used for. \par The substitution phase runs the substitution rules, which can replace, reorder}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reordering}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , insert}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and delete}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyphs in order to get the right glyphs into the right order in the glyph string. In some scripts, there is hardly any substitution work to be done. In others , the substitution rules become multi-pass and highly complex. The Graphite language aims to provide the expressive power needed to meet the most demanding of needs. \par Substitution rules can be thought of as transforming an underlying glyph sequence into a surface glyph sequence. In a multi-pass system, each pass does one set of transformations, and the \'93surface\'94 glyphs for one pass are the \'93underlying\'94 glyphs for the next. \par The substitution table consists of a multi-pass set of rules. The table is identified by:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 substitution}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 table(substitution);}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Selecting Glyphs From A Class \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Whenever a class}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 class}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used in the right hand side}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right hand side}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of a rule, Graphite must select one glyph from the class when applying the rule. Graphite selects a glyph from a right hand class by its position within the corresponding element\rquote s class in the left hand side}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 left hand side}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of the rule. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 c(192) > clsLowTones$1 / clsVowel _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In this example, the glyph corresponding to the 8-bit}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 8-bit}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepoint 192 is to be replaced by a glyph from the class }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsLowTones}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 which has a correlation with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsVowel}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 class. The }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 marks the following number as identifying which element in the rule should be used to index this array. \par Notice that the number is with respect to the context}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 context}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and not to the list of substituted glyphs. This is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 always}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 the case. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 All numbers which refer to a slot}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 slot}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 in a rule are with respect to the context}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and not to the left hand side}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 left hand side}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of the rule. \par The $}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 $}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 symbol differs significantly from the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 symbol. While the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 symbol refers to the glyph in a neighboring slot, the $ is used to access the }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 index}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 index, within glyph class}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of the glyph in the specified class. Consider for instance, the following rule which is similar to the one above: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsVowel c(192) > @1 clsLowTones$1; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In this rule, the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @1 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 has the effect of replacing the glyph in slot 1 with the glyph in slot 1\emdash in other wo rds, leaving it unchanged. The second item in the rule places an element from the clsLowTones class\emdash not the clsVowel class\emdash in slot 2. The purpose of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is to select the glyph from clsLowTones the corresponds to the glyph in slot 1, based on the latter\rquote s index in the clsVowel class. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4.1.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Slot alias}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot alias}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In a very long rule, it may be error-prone to actually use numbers as glyph selectors. For that reason, it is possible to define a temporary alias to be associated with a slot, and use th at name to indicate the position. So the above example might also be written: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 c(192) > clsLowTones$vowel / clsVowel=vowel _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Aliases may also be placed in the left- and right-hand sides of the rule. They may not begin with a number. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Reordering}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reordering}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Another action performed by substitution rules is reordering. The right-hand side specifies this with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 symbol and a number. The number is chosen as in selection. For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCons clsVowel1 clsVowel2 > @2 @1 @3 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This places the glyph mat ched by clsVowel1 first followed by the glyphs matched by clsCons and clsVowel2. Slot aliases can be used instead of numbers. See the Associations section for how the reordered glyphs are associated with underlying glyphs. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Associations}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 associations}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One of the most complex areas of script description is that of associations. In order for the cursor to behave correctly and to reflect either the underlying form to the surface or the surface to its underlying form, it is necessary to associate surfa ce glyphs with their underlying characters. For the most part, this association is done automatically, but there are occasions where a more complex relationship is required. \par Graphite provides a rich mechanism for associating surface and underlying characte rs. In fact, the model which Graphite uses is more complicated than that presented here, and users who need an advanced understanding of this area should read the section on Cursor Hitting in the Advanced Concepts section later in this document. \par In addition to being able to work relative to another glyph, it is also necessary to identify which glyph a substitution is associated with. Consider the following (slightly false) example from Devanagari}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Devanagari}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 : \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCons gDepI > gDepI$2 clsCons$1; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In Devanagari, the letter I is rendered before the consonant it is stored after. This example would achieve the task of re-ordering the two glyphs, but there remains the question of what happens to the cursor. If we were to select the initial }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gDepI}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 on the surface, and delete it, we would in fact be deleting the consonant in the underlying text. What is needed is some way to indicate that the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gDepI}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 on the surface is actually the same as the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 depI}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 underlying it. The colon (:}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 :}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) is used to create this association: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCons gDepI > @2:2 @1:1; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @2:2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 specifies that the consonant should be replaced by the second glyph (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) and should be associated with the second glyph (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). Here the }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used to indicate which underlying glyph a surface glyph is to be associated with. \par Unfortunately, this is a rather cumbersome way of describing what we want. In order to simplify the syntax for simple situations, the following equivalencies have been set up: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 @2}{\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar \tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 @}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f0\insrsid1006136 is equivalent to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \tab @2:2\tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f0\insrsid1006136 which is equivalent to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \tab @:2 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Referencing a glyph assumes an association with it, and associating with a glyph assumes a reference to it. In effect, there is only a need to give both numbers if they are different. We can now write out re-ordering rule as either of: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCons gDepI > @2 @1;\line clsCons gDepI > @:2 @:1; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 although the first syntax is preferred. \par It is also possible to do re-ordering and substitution at the same time. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsVowel clsTone? > clsUpperTone$3:3 clsUpperVowel$2:2 / clsCons _ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This rule selects the uppercase version of the vowel that was in the input (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsUpperVowel$2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ), and uppercase version of the tone that was in the input (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsUpperTone$2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). It also reorders the two so that the tone is rendered before the vowel, but is properly associated with the original tone in the input (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ), while the vowel is associated with the original vowel (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). \par Notice that the numbers used for }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 here are not 1 and 2 as might be expected if the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 were referring to an element in the left-hand side of the rule, but 2 and 3 which are elements in the context. The numbers for }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 always refers to elements in the context and their position within the context}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 context}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Notice also that the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 operator does not change association, thus without the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the above rule the glyphs would not be properly reordered. \par It is helpful to keep in mind the distinctions between the colon(:}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 :}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ), @}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 @}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ,and $}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 $}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 : \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The colon (:}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 :}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) is to used to specify an association between slot}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s in the input and slots in the output\emdash and ultimately between underlying characters and surface glyphs. \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The @}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 @}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 refers to the glyph that is in the specified slot, }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 has the effect of creating an association (that is, a colon is implied if none is present). \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The $}{\pard\plain \ltrpar\s24\ql \fi-360\li720\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 $}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used to select a glyph to put into the output based on the index of a corresponding glyph in the input. In other words, it creates a mapping between the members of two classes. The $ has no effect on associations\emdash the mapping between underlying characters and surface glyphs. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Slot alias}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot alias}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es may be used in place of the numbers: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsVowel=V clsTone=T? > clsUpperTone$T:T clsUpperVowel$V:V\line \tab / clsCons _ _ ; \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Insertion}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 & Deletion}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 An alternative way of dealing with our dependent I is to delete the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 I}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 from its place after the consonant and to insert it before the syllable. This would be done by the following rule: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 _ gDepI > @3 _ / _ clsConsC _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This rule moves the dependent I to the gap before the consonant. Notice how the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 _}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 underscore}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 _}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used on the lhs to indicate an insertion} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , while on the rhs it indicates a deletion}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . In our example above, we deleted }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gDepI}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 from slot 3 and inserted it in slot 1. \par Insertion and deletion create some special problems that require associations to be specified. Consider another example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ZWJ clsCons > _ clsConsJoin / clsCons}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid1006136 \chftn {\footnote \ltrpar \pard\plain \ltrpar \s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0\pararsid13638499 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\fs18\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 This is probably not the way that conjuncts would be handled.}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 _ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 If a glyph is deleted, the question remains as to what to do with the cursor. If the cursor is placed between the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsCons}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and the }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsConsJoin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , where should it be placed in the underlying text: before the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ZWJ}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or after it? It is necessary to indicate which s urface glyph a deleted glyph is associated with. This is done by allowing a surface glyph to be associated with more than one underlying glyph. In the above example, we may want the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ZWJ}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to be associated with the following consonant. Thus our rule should be written: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ZWJ clsCons > _ clsConsJoin:(2 3) / clsCons _ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This indicates that the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsConsJoin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is associated with both the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ZWJ}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsCons}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Notice again how the numbers refer to elements in the context rather than on the right hand side. This is to al low linking to elements in the context which are not replaced by the rule. For details of what happens if no associations are made for a deleted glyph, the reader is referred to the Advanced Concepts section on cursor hitting. The aim is that not specifyi ng an association for a deleted glyph should result in the most natural behavior occurring. In ambiguous cases, this behavior may be wrong for your requirement. Therefore, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 associations}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 associations}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 should always be specified for delete}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 deletion}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 d glyphs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid1006136 \chftn {\footnote \ltrpar \pard\plain \ltrpar\s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\fs18\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 I assume that not associating can be made an error condition, but there may be something more useful we can do.}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par Insertion}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s are also possible. In Thai}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Thai}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 script, amongst others, some vowels are split}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 split glyphs}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 up and consist of a number of glyphs arrayed around a base}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 base}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 consonant. The following is an example of one of them: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 _ VSchwa > VE:4 VShort / _ clsCons clsTone? _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This inserts the two parts of a vowel diacritic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (before and after the consonant and tone}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 tone}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) and associates them both with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 VSchwa}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Again, as for deleted glyphs, unless there is only one non-null element in the left hand side of the rule, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 associations}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 associations}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 should always be specified for insert}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 insertion}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 ed glyphs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par Inserted slots are not counted when determining rule precedence}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 precedence of rules}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Ligature}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One use of attributes in the substitution}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table is to associate underlying cursor positions with surface cursor placement points in a ligature. Since the relationship between an underlying form and the perceived components of a ligature is not necessarily one-to-one in a particular context, it is necessary to indicate the relationship . This is done by associating each of the possible cursor locations in a ligature with a position in the underlying string. \par Consider the following example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Co ZWJ Ce > Coe:(1 2 3) _ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The relationship between the cursor position, which is available in the \'9c between the o and e, and the underlying text must be marked somehow. We would probably want the cursor to be placed between the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Co}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ZWJ}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , since the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ZWJ}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is really modifying the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Ce}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par The ligature component association is indicated using glyph attributes previously defined on the ligature: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Co ZWJ Ce > Coe:(1 2 3)\{component\{o.reference = @1; e.ref = @3\}\} _ _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This indicates that the whole ligature is associated with all three underlying codes. (Notice the glyph deletion}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to make the ligature.) Each component is named with a glyph attribute and has a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 reference}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 reference}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ref}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 ref}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) attribute which refers to the underlying glyph associated with it. The named components correspond to bounding box}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bounding box}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es which are defined with glyph attribute} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s for the sub-regions of the ligature associated with each component. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10755847 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1005583\charrsid1005583 Note:}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid10755847 as of Graphite2 version 1.3.12}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8192603 ,}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1005583\charrsid1005583 ligature components ar}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8192603 e not supported.}{ \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1005583\charrsid1005583 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.4.6\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Line-break}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 line-break}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Pseudo-glyph}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pseudo-glyph}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 While most control characters are dealt with at the application level, one important pseudo-glyph is kept in the glyph stream. This is a glyph to mark the end of a line}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 end-of-line marker}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , either the start or the beginning. This allows line-based context}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 context}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitutions. For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCaps > clsSwashCaps / # _ ; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The line-break glyph is identified using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 #}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 hash mark}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pound sign}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 character and may only appear in the context of a rule. It is counted when determining rule order }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule order}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ordering of rules}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and when determining slot numbers for references (with }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 $}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 $}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 :}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 :}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and @}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 @}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). It cannot be optional, and it is not permissible to reference the slot it occupies. \par See the section on the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table for more information on how line-breaking is done. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 Each line-break pseudo-glyph has a break weight}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 break weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 associated with it. This break weight can be determined by asking for the } {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 ) slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 slot attribute}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 . For instance, you can use the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 attribute to determine whether to insert a hyphen}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 hyphen}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 at a break: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 _ > gHyphen / _ # \{breakweight == 2\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 As mentioned before, the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 attribute is also used to specify line-break preferences for glyphs or slots. The usage in the above rule of the same attribute differs in that one is testing the actual type of break that resulted from the line-breaking process. \par The meaning of the values for the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 are the same in both usages: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_WORD}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_INTRAWORD}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_LETTER}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 , and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 BREAK_CLIP}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cgrid0\insrsid1006136 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\*\bkmkstart _Toc441048629}{\*\bkmkstart _Toc40864614}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.5\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Directionality{\*\bkmkend _Toc441048629}{\*\bkmkend _Toc40864614}}{\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The substitution process does not have the sole responsibility for getting all the glyphs into the right order in the output glyph string. There is also the Unicode directionality property to take into consideration. This takes into account that, for ex ample, in a right-to-left}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 script, European numbers may be read left-to-right. \par Rather than leaving this to the substitution table, an extra process is ins erted which takes the Unicode directionality properties of each glyph and from these, does further reordering to get the final glyph order. Between the substitution rules and the positioning rules, any glyphs which have a direction opposite of the overall writing system direction are reversed. This process is called internal reordering}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reordering}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par Glyphs all receive a directionality by virtue of the Unicode codepoints which map to them. Values for unmapped glyphs, pseudo-glyphs, or PUA}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 PUA}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepoints are defined by setting the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 directionality}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 directionality}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 dir}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 dir}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) attribute in either the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 glyph} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph table}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 substitution}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table. \par Based on the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 dir}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute for each glyph, the glyphs are reordered according to their di}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid469280 rectionality and the Unicode bi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directional algorithm. Rules are always written based on the underlying text order except for positioning rules which must take into account internal reordering. \par If you are working with a script that you are sure has no internal bidirectionality, you can set the }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 Bidi}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 Bidi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 global to false. This is an optimization that allows the rendering engine to avoid the superfluous step of performing internal reordering. \par {\*\bkmkstart _Toc441048630}{\*\bkmkstart _Toc40864615}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Positioning{\*\bkmkend _Toc441048630}{\*\bkmkend _Toc40864615}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 positioning}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule tables}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Once all the glyphs are in the right order for output, we can go about positioning them. The glyph order for positioning is the same as for the underlying codes. Thus, if the primary direction of the text for this run is right-to-left} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 then moving forwards through the glyph stream moves us left. \par The positioning table consists of a multi-pass set of rules. The table is identified by:}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 positioning}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 table(positioning)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par The primary mechanism provided for glyph positioning is attachment. It is possible to define attachment point}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s on glyphs (as glyph attributes). These attachment points may then be u sed to position two glyphs with respect to each other using the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 att}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 att}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. A typical rule used for diacritic attachment might be: }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach.to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach.at}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach.with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase clsDia \{attach.to = @1; attach.at = dap; attach.with = base\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The strings }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 dap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 base}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 refer to the named points which are glyph attributes. \par Due to the nature of attachment, it is an error to attach to glyphs that are not visually adjacent. In other words , attachment must be done between two glyphs which are adjacent or between two glyphs which are separated only by glyphs which are attached. (This may be difficult or too costly for the compiler to check for.) \par Note that it is an error for a rule in the positioning table to have a lhs}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 lhs}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Shifting}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 shifting}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In addition to being able to attach glyphs to other glyphs, there is the ability to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 a glyph whereby it is moved (along with all its dependent attachments: those glyphs attached to it). For such purposes we use the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is the offset}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 offset}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 from a glyph's normal placement (after attachment is processed). \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsBase clsDia \{shift.x = -@1.advance.x/2;\line \tab \tab \tab shift.y = diaheight\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This would shift the diacritic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 above the base}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 base}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph. Shifting does not change the screen position of the following glyphs. Attaching a diacritic does not alter the slot's }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value. \par In left-to-right fonts, shifting by a positive number moves the glyph to the right, while a negative number moves the glyph to the left. In a right-to-left font, the opposite is true. In other words, shifting by a positive amount always moves the glyph \'93further along\'94 in the direction of the script\rquote s orientation. \par To aid in shifting and other positioning operations, it is possible to interrogate a glyph for the value of one of its attributes. This is done by using a dot notation and the name of the metric needed (as above). A full set of mathematical o perators is available for calculations (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 -} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 *}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 *}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 /}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 /}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 += }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 -=}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 -=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 *=}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 *=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 /= }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 /=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 min}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 min}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 max}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 max}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Advancing}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 advancing}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and kerning}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kerning}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 To alter the screen position of following glyphs the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 advance}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 advance}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 needs to be modified. There are two a}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 dvance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 adv}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 adv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s describing the distance between the origins of two glyphs. The glyph metrics} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metrics}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advancewidth}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 aw} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 aw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advanceheight} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 advanceheight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ah}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 ah}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) also exist. The default }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value is the advance of the glyph; }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 defaults to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 aw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ah}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gOverhanger \{advance.x += overhang\} / _ clsAny; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This example would move all glyphs on the line following gOverhanger to the right by the overhang amount. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Overhang}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is just a named glyph attribute. (Note that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 clsAny}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is not a special class. It was created by the author using normal class definition.) It is possible to set }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 with }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 instead of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 +=}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to ignore the glyph advance metric. \par Note that, like shift, the meaning of the advance value is determined by the direction of the font. A positive advance value moves the following glyph \'93further along\'94 in the direction in which the glyphs are being laid out. So in a right-to-left} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 font, a positive advance value would cause the following glyph to be positioned further to left than normally. \par It would be relatively rare to use both horizontal}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 horizontal}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and vertical}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 vertical}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 advance attributes in a single font. Normally }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are significant only for horizontal scripts, while }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advanceheight}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are needed for vertical scripts. An exce}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9466271 ption might be in a font for a N}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 astaliq}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid15915 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15915 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15915\charrsid14905339 Nastaliq}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15915 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid9071063 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063 N}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 astaliq}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 -style (sloping) Arabic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid9466271 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9466271 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9466271\charrsid8858513 Arabic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9466271 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 script, where the vertical position must be continuously adjusted along with the horizontal advance. \par Normally }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used in conjunction with }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to accomplish }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 kerning}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kerning}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs42\i\insrsid1006136 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 When a glyph is kerned both its screen position and the screen position of following glyphs on the line are moved. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gA gW \{shift.x = -10m; adv.x = advancewidth - 10m\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Since this is such a common operation, the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 kern}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is available. It is implemented by specifying both }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is not a readable slot attribute; it can only be written. The above rule could be written more simply as: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 gA gW \{kern.x = -10m\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In addition to general shift and advance values, it may be that, at a later date, device-specific values or those associating with a control point on the glyph outline may be added. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Composite}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 composite metrics}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Metrics}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metrics}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Once two or more glyphs are attached, composite metrics exist for the glyph cluster. During line layout these composite metrics will be used. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gLowerI gTilde \{attach.to = @1; attach.at = udap; attach.with = bap\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In this example, which places a tilde over a lower case i, the need for composite metrics is evident. If only the metrics for the i were used, characters on either side of the i tilde glyph cluster would collide with the tilde. The line layout must be adjusted by using composite metrics derived from the tilde and the i. \par These composite metrics can also be accessed in a rule. For example: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass (1);\line \tab gOne gTwo \{attach \{to = @1; at = dap; with = base\}\};\line endpass;\line pass (2);\line \tab gOne gTwo gThree \{ kern.x -= @1.bb.width.1 / 10\};\line endpass; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The trailing '1' indicates that the composite metrics should be used. Without a number, the metrics for the single glyph in the slot would be accessed. \par The above represents a simple case of a more general mechanism. There are cases where multiple levels of attachment are needed. A sequence of base}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 base character}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 characters may have to be attached in a cursive} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cursive}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 script. Some of those base characters may then have diacritic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s attached. The diacritics may have other diacritics stacked with them. To keep the vari ous levels organized the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.level }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute is used. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass (1);\line \tab gDia \{attach \{to = @1; at = dp; with = bp; level = 1\}\}\line \tab \tab / gBaseOne _;\line endpass;\line pass (2);\line \tab gBaseTwo \{att \{to = @1; at = trail; with = lead; level = 2\}\}\line \tab \tab / gBaseOne gDia _;\line endpass; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The composite metrics can then be accessed using the level numbers. Continuing the above example, in pass 3: \par }\pard\plain \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs18\insrsid1006136 gBaseThree \{kern = @1.advancewidth\} / gBaseOne gDia gBaseTwo _;\tab \tab // line 0\line gBaseThree \{kern = @1.advancewidth.1\} / gBaseOne gDia gBaseTwo _;\tab // line 1\line gBaseThree \{kern = @1.advancewidth.2\} / gBaseOne gDia gBaseTwo _;\tab // line 2 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Line 0 would access the metrics for the glyph only. Line 1 would access the composite metrics for the base glyph with its attached diacritic but not with the second attached base gly ph. Line 2 would access the composite metrics for all three attached glyphs. Notice how higher numbered levels incorporate the metrics of lower levels. If an attachment is made without a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 level} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 level}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute, level 1 is the default. \par Sometimes it is desirable to attach glyphs without moving them from their normal positions. The author may want to obtain the metrics for a sequence of glyphs even though they are not visually attached to one another. This can be done using attachment without specifying the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.at}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach.at}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.with}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach.with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attributes. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.level} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach.level}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute can still be used in this case. \par Note that composites are only available for glyph metrics}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metrics}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , not for normal glyph attributes or slot attributes. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Position \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 position}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 pos}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 allows one to determine the distance between two glyphs. It is readable only. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Pos.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 both exist. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Pos.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 provides the distance of a glyph's upper left corner from the baseline}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 baseline}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . A single }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value is not meaningful in and of itself. It is only useful when comparing with or calculating the difference from a second }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid3212909 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Cursor Placement: the }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs24\insrsid1006136\charrsid3212909 inse}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs24\insrsid3212909 rt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}{\pard\plain \ltrpar \s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid3212909 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cursor placement}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One of the difficulties with glyph positioning is working out what the cursor is going to do. We generally have an implicit assumption as to what we want the cursor to do in a particular situation, the di fficulty is formalizing this behavior in a way which is both natural and right most of the time. \par If two glyphs are attached, it is probably desirable that the cursor not be allowed to come between them. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2369896 attribute}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used to control this. Normally }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is set to true (1) }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . To prohibit cursor placement before a slot, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 should be set to false (0) }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute is automatically set to false when }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used, though this can be overridden with a slot attribute setting. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 can also be used in the substitution table, where it may be particularly useful when glyphs are inserted. \par Note that in the Graphite system, insertion points and range selections are always defined in terms of the underlying characters, not the rendered glyphs. This means that in practical terms the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute applies not to the glyph itself, but to the corresponding character (more specifically, the }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 first}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 corresponding character). That is, when the }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute is set to false on a }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 glyph}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , it indicates that no insertion is permitted before the corresponding }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 character}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 in the underlying data. \par This is important to keep in mind when reordering is occuring in the data. Consider this example: \par \tab underlying data:\tab \tab A\tab }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid1006136 B\tab C\tab D}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \tab E \par \tab surface glyphs:\tab \tab a\tab }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid1006136 c\tab d\tab b}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \tab e \par It may be tempting to set }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to false on the glyph \'93b\'94 to prevent insertion in the middle of the reordered cluster (BCD).This will not have the desired effect; instead it will prohibit insertion between the A and the B in the underlying data. A more appropriate action is to set }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to false for the glyphs \'93c\'94 and \'93d\'94. \par Furthermore, when attachments are involved, the automatic setting of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute can have an unexpected effect. In the following example, suppose that \'93b\'94 has been attached to \'93c\'94. \par \tab underlying data:\tab \tab A\tab B\tab C\tab D \par \tab surface glyphs:\tab \tab a\tab c\tab b\tab d \par This has the effect of automatically preventing insertion before the \'93b\'94 , that is, the B character. But as explained above, this does not have the desired effect of preventing insertion between the attached glyphs (instead it prevents insertion between the A and the B). In this sort of situation, the rule that performs the attachment should also explicitly set the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute appropriately, to override the default behavior: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gC \{insert = false\} gB \{attach \{to = @1; ... \}; insert = true\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 By default, a ttaching a glyph moves the cursor to be following the attached glyph, otherwise the advance width of the base character is taken. Adjustment will also move the cursor but never so that the advanced width of the new position is negative, and never off the b ase line. This latter principle works well for diacritic adjustment since it is never necessary for the cursor to be moved backwards from the advance width of the previous character. In the unknown situations where this is required, direct kerning can be used. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.6\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Metrics}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metrics}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2850037 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 So far, no discussion has been made of how positional information is expressed. Numeric values can be scaled to the size of the font\rquote s em square}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2850037 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 em square}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , or unscaled. Scaled numbers are specified by postfixing an \lquote m}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2850037 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \rquote . By default the scaling factor is 1000, thus }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 500m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 indicates 50% of em. In general, values related to glyph metrics should be scaled; the compiler will give a warning}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2850037 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 warning}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 otherwise. Floating-point} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2850037 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 floating point}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 numbers are not all owed. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The scaling factor can be specified with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MUnits}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MUnits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directive. The most common reason for changing the scaling factor would be to match the units per em square for the font a particular GDL was designed for. Such a scaling factor could make it easier to specify attachment points and ligature component boxes. \par Metrics are available for all glyphs in a rule's context (using dot notation with a slot reference if needed) and when specifying glyph attributes for a class. The following metrics are available: \par {\pntext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \loch\af2\dbch\af0\hich\f2 \'95\tab}}\pard \ltrpar\s24\ql \li360\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls28\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls28\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 leftsidebearing}{\pard\plain \ltrpar\s24\ql \li360\ri0\sb120\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls28\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls28\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 leftsidebearing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 lsb}{\pard\plain \ltrpar\s24\ql \li360\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls28\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls28\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 lsb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , rightsidebearing}{\pard\plain \ltrpar\s24\ql \li360\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls28\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls28\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 rightsidebearing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 rsb}{\pard\plain \ltrpar\s24\ql \li360\ri0\sb120\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls28\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls28\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 rsb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \loch\af2\dbch\af0\hich\f2 \'95\tab}}\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls29\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls29\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advancewidth}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls29\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 aw}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls29\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 aw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , advanceheight}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls29\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 advanceheight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ah}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls29\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 ah}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \loch\af2\dbch\af0\hich\f2 \'95\tab}}\pard \ltrpar\ql \fi-720\li1080\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls27\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1080\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 bb.left}{\pard\plain \ltrpar\ql \fi-720\li1080\ri0\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1080\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 bb.left}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , bb.right}{\pard\plain \ltrpar\ql \fi-720\li1080\ri0\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1080\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 bb.right}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , bb.top}{\pard\plain \ltrpar\ql \fi-720\li1080\ri0\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1080\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 bb.top}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , bb.bottom}{\pard\plain \ltrpar\ql \fi-720\li1080\ri0\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1080\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 bb.bottom}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 bb}{\pard\plain \ltrpar\ql \fi-720\li1080\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1080\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 bb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is an abbreviation for }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 boundingbox}{\pard\plain \ltrpar\ql \fi-720\li1080\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1080\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 boundingbox}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \loch\af2\dbch\af0\hich\f2 \'95\tab}}\pard \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls27\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 boundingbox.height }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 bb.ht}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 bb.ht}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , boundingbox.width}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 boundingbox.width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \loch\af2\dbch\af0\hich\f2 \'95\tab}}\pard \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls27\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ascent}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 ascent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metric}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 , descent}{\pard\plain \ltrpar\ql \li360\ri0\widctlpar \jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls27\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 descent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metric}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (as defined in the font)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The coordinate system for specifying attachment points, moving glyphs, etc. always increases left to right and bottom to top (i.e. a typical left-to-right system). The origin (0,0) corresponds to the l eft-hand side of the glyph on the baseline. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid12350496 \hich\af143\dbch\af0\loch\f143 4.6.7\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid10104332 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12350496 Substitution in a positioning pass}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid10104332 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid10104332 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10104332 substitution\:within a position pass}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12350496 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1721040 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12350496 As of version }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1721040 1.3.9}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12350496 of the Graphite engine, it is permitted to include substitution rules within the positioning table.}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1721040 This can be useful if the shape or size of the substituted glyph is based on the position that has been determined within the positioning process.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12350496 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid683903 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid683903 For instance, in Nastaliq}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid683903 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2850037 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2850037 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2850037\charrsid9654696 Nastaliq}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2850037 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid683903 you might substitute shorter versions of kaf and gafs depen}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13462646 ding on their vertical position. Another idea would be to substitute smaller versions of diacritics based on the results of a collision avoidance pass.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid683903 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6048895 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6048895 Substitution rules within a positioning pass are more limited than those in the substitution passed. You can only do a one-to-on}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14165934 e substitution\emdash }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6048895 no insertion, deletion, or reordering. Also note that if an attachment existed involving the previous glyph, the new glyph will be considered to have the same attachments but the positions might now be wrong. None of the positions will be adjusted based on the new glyph. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid683903 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6048895 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.8\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Example}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 example}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The following are some examples of positioning. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.8.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Example 1: Lam-Alef \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The first example is from Arabic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Arabic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and addresses the problem of ligatures with component diacritics. The ligature is Lam-Alef and there are diacritics which may need to go on the various components of the ligature. The two rules might be: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(sub);\line \tab gLam clsM1? gAlef clsM2? >\line \tab \tab gLaf:(1 3) \{component \{lam.ref = @1; alef.ref = @3\}\}\line \tab \tab clsLM1 _ clsAM2;\line endtable; \par table(pos);\line \tab clsLM1? \{attach \{to = @1; at = ldia; with = base\}\}\line \tab \tab clsAM2? \{attach \{to = @1; at = adia; with = base\}\}\line \tab \tab \tab / gLaf _ _ ;\line endtable; \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.6.8.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Example 2: Dotless i with Tilde \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The second example is taken from a Roman based font, such as }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 IPA}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , in which there is a dotless i with a tilde over it. The tilde is wider than the i and for this example consider its advance width to be zero. Advance width modification is required for following letters with a high initial stem. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsUDia \{attach.to = @1; attach.at = udia; attach.with = base\}\line \tab \tab \tab \tab / clsbase _ ;\line clsWideDia \{advance.x += bb.width/2\} / clsIbase _ clsLeftStem; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Except that this does not deal with wide diacritics which may be placed under the i rather than on the top. \par {\*\bkmkstart _Toc441048631}{\*\bkmkstart _Toc40864616}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 4.7\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Placement{\*\bkmkend _Toc441048631}{\*\bkmkend _Toc40864616}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph placement}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The final phase of processing is a cleanup and resolving operation, which occurs entirely within the renderer and in which the description file takes no part. This phase includes: \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard\plain \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Converting pseudo-glyphs to real glyphs \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\ql \li360\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0\pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Resolving positioning information, such as attachments, to absolute positions. \par {\*\bkmkstart _Toc441048632}{\*\bkmkstart _Toc40864617}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5\tab}}\pard\plain \ltrpar \s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Example}{\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 example}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 File{\*\bkmkend _Toc441048632} {\*\bkmkend _Toc40864617} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The following example fragment would be part of an IPA}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2850037 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2850037 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2850037\charrsid555420 IPA}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2850037 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rendering description file. The fragment is concerned with two independent areas of rendering. The first is the handling of dotless i and friends. The second is the question of whether a user wi shes to see pitch rendered as pitch letters or using superscript numbers. The alternative renderings are handled via a feature. \par {\*\bkmkstart _Toc441048633}{\*\bkmkstart _Toc40864618}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.1\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Example{\*\bkmkend _Toc441048633}{\*\bkmkend _Toc40864618} \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 /*\line \tab Sample description for handling dotless i and raised numbers.\line \tab Neither implementation is complete.\line */\line \line #define c(x) codepoint(x, 32765)//make a default codepage for IPA93\line #define C(x) codepoint(x)\line #define u(x) unicode(x)\line #define p(x) postscript(x) \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid12461773 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #define LG_USENG 0x0409\line \line table(glyph);\line \line \tab // lists for dotless i substitution\line \tab gOverTilde = c(226);\line \tab clsTone = (c(157), c(152), c(147), c(143), c(136));\line \tab clsUMod = (c(126), c(95), c(161), gOverTilde);\line \tab clsUDia = (clsTone, clsUMod);\line \tab clsDottedI =\tab (c("i"), c("j"), c(246));\line \tab clsDotlessI =\tab (c(34), c(190), c(174));\line \line \tab // these lists are shortened for the example \line \tab clsLStem = (c("DHLT[\\\\]bfghikl") c(132));\line \tab clsTakesDia = (c(65 .. 71), c("I"), c(75 .. 86), c(88 .. 90),\line \tab \tab \tab \tab c(97 .. 123));\line \tab clsIBase = (clsDottedI, clsDotlessI, c("l"));\line \line \tab // lists for converting pitch letters to superscript numbers\line \tab cls1Pitch = (c(159), c(154), c(149), c(145), c(138));\line \tab cls2Pitch = (c(232), c(217), c(216), c(134), c(133), c(128));\line \tab cls1Num = C("12345");\tab \tab /* use real numbers */\line \tab cls2Num1 = C("133551");\line \tab cls2Num2 = C("515133");\line \line \tab gRaise = pseudo(codepoint("^")); // make spare glyph to mark raises\line \tab clsRaise = (u(0x0030 .. 0x0039), C("-"), c("nhjNm") c(248));\line \tab clsRaised = (u(0x2070), u(0x00B9), u(0x00B2), u(0x00B3),\line \tab \tab \tab u(0x2074 .. 0x2079), u(0x207B), u(0x207F),\line \tab \tab \tab u(0x02B0), u(0x02B2), p("engsuperior"),\line \tab \tab \tab p("msuperior"));\line \line \tab // define attachment points\line \tab clsDottedI \{udia = point(advancewidth/2, bb.top + bb.top/5)\};\line \tab clsUDia \{base = point(aw/2, 0);\line \tab \tab \tab udia = point(aw/2, bb.top + bb.top/5)\};\line \line endtable; // glyph\line \line table (feature);\line \tab fPitchNum.id = 64000; // arbitrarily chosen id from user-dfnd range\line \tab fPitchNum.name.LG_USENG = string("Pitch Numbers");\line \tab fPitchNum.default = letters;\line \tab fPitchNum.settings.letters.value = 0;\line \tab fPitchNum.settings.letters.name.LG_USENG = string("Letters");\line \tab fPitchNum.settings.numbers.value = 1;\line \tab fPitchNum.settings.numbers.name.LG_USENG = string("Numbers");\line endtable; //feature\line \line table(sub);\line \line pass(1);\line \tab clsDottedI > clsDotlessI / _ clsUDia;\tab /* dotless i substitute */\line \tab clsTone clsUMod > @2 @1;\tab \tab \tab /* diacritic then tone */\line \tab if (fPitchNum == numbers)\line \tab \tab cls1Pitch _ > cls1Num gRaise;\tab \tab /* just one raised number */\line \tab \tab /* others result in x3-5 or whatever - lots of insertion! */\line \tab \tab cls2Pitch _ _ _ _ _\line \tab \tab > cls2Num1 gRaise C("-") gRaise cls2Num2$1 gRaise;\line \tab endif;\line endpass; //pass 1\line \line pass(2);\line \tab clsRaise gRaise > clsRaised _ ;\line endpass; //pass 2\line \line endtable; //sub\line \line table(pos);\line \tab clsUDia \{attach \{to = @1; at = udia; with = base\}\}\line \tab \tab / clsTakesDia _;\line endtable; //pos \par {\*\bkmkstart _Toc441048634}{\*\bkmkstart _Toc40864619}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Description{\*\bkmkend _Toc441048634}{\*\bkmkend _Toc40864619} \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Macros}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 macros}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The example starts by using the C}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C pre-processor}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pre-processor to effectively allow us to work in two different encodings at the same time. The lowercase }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 c()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 macro}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 c()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 macro}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 returns a glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 based on the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 IPA93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 encoding. This assumes that the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 IPA93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 encoding is a mapping to the correct Unicode values for those letters, rather than to some codepage 1252}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage 1252}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 overloading. The uppercase }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 C()}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 macro}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 C()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 macro}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 uses the default codepage (1252) to map standard }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 ASCII}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 type letters which are not available in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 IPA93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph Table}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2.2.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyphs and Class}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 class}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 es \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The next step is to define some variables. The first block of assignments are the classes needed for the dotless i substitutions. The next block contains three class assignments. These assignments would be very much longer in a real description file, but have been truncated in order not to swamp the example. The final block contains assignments to handle the change of pitch letters to superscript numbers. \par The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pseudo}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 pseudo}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph has been created to help mark characters which should be superscripted. There is probably a better way of doing this (like converting to the superscript glyphs directly), but this illustrates a useful technique. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2.2.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph Attribute}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Following these assignments, we have the glyph attribute assignments to indicate where the diacritic attachment points are on each glyph. Since the font has not been modified to add specific attachment points, locations are used instead. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Feature Table \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Next we have a feature definition for the pitch numbers question. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Substitution}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 After all this preamble, we are ready to write some rules. The substitution table is taken in two passes. The first pass does most of the work, dealing with dotless i, diacritic re-ordering, and then the possible conversion of pitch letters into numbers. \par There are two sorts of pitch letters we need to consider. The first is a level pitch, which just gets converted to a single sup erscript number. The second is a simple contour between two pitches, which must be represented by a sequence of numbers: for example, [a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \super\insrsid1006136 3-5}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ]. This means that a single pitch letter glyph is converted into 3 output glyphs. We also use our pseudo-glyph to mark the numbers that need raising, which results in there being 5 glyphs inserted into the stream and 1 substituted. \par One question which immediately leaps to mind when looking at these rules, is why there are no cursor associations for the inserted and delete d glyphs. Since in each case there is only one non-deleted or inserted glyph, there can only be one association possible. Therefore, there is no need to explicitly give a long list of associations which are clearly obvious. Even if the fallback effects of not associating, as given in the next section, come into play, the results will still be obvious to the user. \par The second pass simply deals with the special raising glyph. Anything followed by this glyph is converted to a raised form. The result is that the re is no possibility for the raised glyph to appear in the final output. Our initial mapping of the glyph to a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 ^}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph, hopefully, will never come into play. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.2.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Positioning}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 positioning table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Table \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The positioning table attaches a diacritic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 diacritic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to its base}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 base}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 character. In fact, the base character could be another diacritic, which is why diacritics need two attachment point}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s: one to attach with and one to have others attach to. \par {\*\bkmkstart _Toc441048635}{\*\bkmkstart _Toc40864620}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 5.3\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Conclusion{\*\bkmkend _Toc441048635}{\*\bkmkend _Toc40864620} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This GDL file does a lot of work in a remarkably small number of rules. In a real situation, especially for something as complex and quirky as rendering }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 IPA}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , there would be many more rules and many more classes. It behooves the GDL author to use standard programming techniques to organise their description. Again, the C}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 C pre-processor}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pre-processor can help here by allowing some of the information to be stored in external files which are #included}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 #include}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 include}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 into the main description. \par {\*\bkmkstart _Toc441048644}{\*\bkmkstart _Toc40864621}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6\tab}}\pard\plain \ltrpar \s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Advanced Concepts{\*\bkmkend _Toc441048644}{\*\bkmkend _Toc40864621}}{\pard\plain \ltrpar \s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 advanced concepts}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The rest of this description examines more detailed and advanced aspects of the Graphite description format. It looks at the description from both a more computer scientific standpoint and from its implementation. \par {\*\bkmkstart _Toc441048645}{\*\bkmkstart _Toc40864622}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.1\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Cursor Hitting{\*\bkmkend _Toc441048645}{\*\bkmkend _Toc40864622}}{\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cursor hitting}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The association model which is presented as part of the substitution rules is not strictly correct. From a descriptive standpoint, association is a helpful way of considering what is going on. But from a cursor point of view, it is not the glyphs themselves which are in focus, but the cursor points between the glyphs. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.1.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Split Cursors}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 split cursors}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10759067 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 When considering a cursor between two characters in a stream of text, we can say that it is after one character and before the next both on the surface and in the underlying data. The problem is that when the underlying to surf ace relationship becomes more complex, a cursor may n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10759067 ot be between adjacent glyphs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Consider an internal cursor placed between two codes in an underlying string. On the surface, the two glyphs that the underlying co}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10759067 des are associated with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 may not be adjacent. The result is that on the surface, it is necessary to split the cursor to indicate which glyphs the cursor is before and after. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5707854 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 As an example, consider the word }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136\charrsid15677976 tirkha}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 , meaning \lquote thirst\rquote in Nepali}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sl-240\slmult0 \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5707854 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid5707854 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 Nepali}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 . In its underlying form, it is stored as }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 tirkha}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15677976\charrsid15677976 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 but on the surface, it is rendered with the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 before the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid9647926 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 r}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 placed above the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 which is placed after the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 kh}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 (a single glyph \endash aspirated k). The result is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 itkhar}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 : \par }\pard \ltrpar\s24\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12534745 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11077249 {\*\shppict {\pict{\*\picprop\shplid1026{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}} {\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex40\picscaley40\piccropl0\piccropr0\piccropt0\piccropb0 \picw8440\pich6429\picwgoal4785\pichgoal3645\jpegblip\bliptag-2125431484{\*\blipuid 81507d4470c6654fc73449412576be72}ffd8ffe000104a46494600010101006000600000ffe1001645786966000049492a0008000000000000000000ffdb004300080606070605080707070909080a0c 140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb0043010909090c0b0c180d0d18 32211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232ffc000110800f3013f03 012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01 020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a 535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6 c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f010003010101010101010101000000000000010203040506070809 0a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e1 25f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a929394959697 98999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c030100 02110311003f00f7fa28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28ae6fc55e32d13c1760b77ad5e794 24dc208514bc93328c90aa3f019385048c9191401d2515f28eb1f1cfc617fa83cfa75d43a5dbf212de182397032482cd22925b04024601c74159dff0bb3e217f d0c1ff009256ff00fc6e803ebfa2bc2fc33fb42d8cd1a43e25d3e4b69cbaa9b9b11be2c163966463b9428dbd0b93cf03815eada0789f45f14599bad135482f51 7ef84243c79240dc870cb9da7190338c8e28037a8a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a00c 1f12f88f4bf08e8b36adaa5c08ade3f955579795cf4441dd8e0fe449200247cf7e27f8f1e25bfd4dcf87e44d2ec11d8440c4924b22f1832170c01e09c2e31bb0 4b601a83e3b6bd7b7de3d9b479da3fb1e9888b6caab839923477663d492703d30a38ce49dcf83df0bf46f126893ebbe21b69e785e5682d6df2f1210b82650ca4 16e49518e06d6ce4fdd00c5d17e3d78c34fb8dda84969aa40ce85926816365507e608d18500907ab06c6071d73eede0af1fe8fe3b86f25d292ea36b475134773 18560181dac3692083b5875cfca72071992f7e1df83eface4b597c2fa62c6f8c986d96171820f0e8030e9d8f3d3a579c6a9f0df5df0778ff004fd7be1e69ef26 9e5145cd98bd55c8046f8c994f28ea01072c430278c2d007ba514514005145140051451400514514019babea49a3e8d7da9ceb23c5670497122c60162a8a5881 9206703d457c71e2ff00176a3e33f10c9ab6a3cf58ede2c2fee61deccb1e428dd8dc46e2326be9df8b7797161f0bbc4135bc9e5c8d0a424e01ca4922a38e7d55 987b678e6be77f851e1f9fc41f11b4a4864d91d94ab7f33e01da913023824672db578ce37670403401ea9e04f819656da7cf378cad61bcba9f6186de19e45fb3 0c12c19919433127040c81b382735eb7a6e85a4e8be6ff0065e956361e763ccfb2dba45bf19c676819c64f5f535ab4500727e20f87be16f13dd8bcd5745827ba ef323344efc01f332105b01401bb38ed8af1ef12fc11d7fc39ab5adf781aeafae89dff0037da23b79ad7e503fd66e5ddbb73f4030060e739afa368a00f0bf01f c6b6170344f1cf996fa82ce6117af12c4aa7272b3af1b0861b720639f982ed2c7dd2bcb7c73f06345f147dab51b0034dd6e5dd2798a4f933c871feb179c6707e 65c1cb16218f15e6ba778f7c65f08f5693c3bafc1fda16b160c714d2b7fab0a550c129ce23385e0a903691856dd401f4e51583e1af11e97e2ed161d5b4bb812d bc9f2b2b70f138ea8e3b30c8fcc1048209dea0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a00f933e38595c5b7c51 bf9678f647751433407703bd046b193c74f991873e9e98af73f827ff00248f42ff00b78ffd2892b9af8fbe168352f0b45e23408975a6baa4ac700c90c8c171d3 24ab952012000cfdcd1fb3e6ad14de0ebad324bf8deee1bd95e3b5698174876c7caa672137b37206324f73401ecb451450014514500145145001451450014578 7fc49f8afe2bf04f8c27d2edac34a366d14735b493a3b3c8846093b6418f9c38e83a7e2790ff00868cf17ffd03744ffbf137ff001da00f7ff1dffc93df12ff00 d82aebff0045357cfdfb3e4f143f10ee639658d1e6d3a548d59802ede646d85f53b558e07604f6a49fe3ff0089aead65b7b8d2340961950a491c96f2b2ba9182 0832608238c579c689acde681ad596ad60fb2ead2512a64901b1d55b0412a464119e4122803ee9a2bcbfe19fc4a9bc7da6df5a4e96d67ae5aa161b4168a456c8 571197de429c0619eebf30dd81c0eb5f1bbc73e1fd66f748bfd2b444bab495a27c41380d8e8cb99012a460838e4106803e8ea2be60ff00868cf17ffd03744ffb f137ff001da3fe1a33c5ff00f40dd13fefc4dffc76803e9fae4bc6fe0ad33c73a2b58dfaf9571165ad6e9065e073dc7aa9c0caf7c762011e1bff000d19e2ff00 fa06e89ff7e26ffe3b47fc34678bff00e81ba27fdf89bff8ed0067e9b75e2af81fe25637d611bc37685191a4630dd46ae3e6465380e0671b865449cafcd5f48f 86bc47a5f8bb458756d2ee04b6f27cacadc3c4e3aa38ecc323f304120827e6af137c60d67c55a1cda4eafa36872c1272acb04a1e271d1d0f99c30c9fcc820824 1d9d23e20e83e03f062c9e0cbcba9f54be9e36bbd3357dd2a5b00ae1991a358d492760ce72405c818c000fa6a8af983fe1a33c5fff0040dd13fefc4dff00c768 ff00868cf17ffd03744ffbf137ff001da00fa7e8af983fe1a33c5fff0040dd13fefc4dff00c768ff00868cf17ffd03744ffbf137ff001da00fa7e8af983fe1a3 3c5fff0040dd13fefc4dff00c768ff00868cf17ffd03744ffbf137ff001da00fa7e8af983fe1a33c5fff0040dd13fefc4dff00c768ff00868cf17ffd03744ffb f137ff001da00fa7e8af983fe1a33c5fff0040dd13fefc4dff00c768ff00868cf17ffd03744ffbf137ff001da00fa7e8af983fe1a33c5fff0040dd13fefc4dff 00c768ff00868cf17ffd03744ffbf137ff001da00fa7e8af983fe1a33c5fff0040dd13fefc4dff00c768ff00868cf17ffd03744ffbf137ff001da00fa7e8af98 3fe1a33c5fff0040dd13fefc4dff00c768ff00868cf17ffd03744ffbf137ff001da00fa7e8af983fe1a33c5fff0040dd13fefc4dff00c768ff00868cf17ffd03 744ffbf137ff001da00fa52e2de1bab696de78526825529246ea195d48c1041e08238c57ce3aff0087e4f841f1374ff115a58c8fe1d371985b26428ae856588e 48c3856729b8f200c9621b10ff00c34678bffe81ba27fdf89bff008ed50d6fe376bbe20d267d2b54d1f44b8b19f6f991f973a6edac1872b3023900f06803e9ad 2b54b4d734db7d474cb94b9b3b84df1cabd187f3041c820f20820e08ad4af903c1df15f5df0468f369ba5da69d2c12dc35c335cc6ecdb8aaae06d7518c20edeb 5d07fc34678bff00e81ba27fdf89bff8ed007d3f45787fc3bf8db79e21f13c5a2f882d6c2dbed7f2db4d6d98d564c13b5c3b9ceee831ceec0c1dd91ee1400514 5140051451401c17c47f87507c40d3ece17bcfb15d59cacf1dc79465f91861936ee51c90873db6fb9af3cff8665ffa9bbff29bff00db6be80a2803e7ff00f866 5ffa9bbff29bff00db6bc02beffaf802803e8df863f0aaf3449f44f1659f8908373691cd2d99b33b5e3950168cb0946719041231b954e0e315d07c40f83b67e3 7d721d5a0d4bfb3ae7ca114f8b51289b1f758e194ee03824939014718e7b2f027fc93df0d7fd82ad7ff452d741401f3fff00c332ff00d4ddff0094dffedb47fc 332ffd4ddff94dff00edb5f4051401f3ff00fc332ffd4ddff94dff00edb47fc332ff00d4ddff0094dffedb5f4051401f3fff00c332ff00d4ddff0094dffedb47 fc332ffd4ddff94dff00edb5f4051401f1278d7c37ff00088f8bafb42fb5fdb0daf97fbff2fcbddba357fbb938c6ec75ed5bdf0d7e1aff00c2c41aa7fc4dbfb3 fec3e57fcbb79bbf7eff00f6d718d9efd69bf1b3fe4ae6bbff006eff00fa4f1d77ff00b32ffccd3ff6e9ff00b5a800ff008665ff00a9bbff0029bffdb68ff866 5ffa9bbff29bff00db6be80a2803e7ff00f8665ffa9bbff29bff00db68ff008665ff00a9bbff0029bffdb6be80a2803e7fff008665ff00a9bbff0029bffdb6bc 5b5ed3468bafea5a579de77d86ea5b6f376eddfb1caeec64e338ce326bee9af883c77ff250bc4bff00615baffd1ad401d9fc3cf8443c7de1fb8d546b9f61f26e dadbcafb279b9c2236ecef5fefe318ed5d67fc332ffd4ddff94dff00edb5d07ece5ff24f750ffb0ac9ff00a2a2af60a00f9fff00e1997fea6eff00ca6fff006d a3fe1997fea6effca6ff00f6dafa028a00f9ff00fe1997fea6effca6ff00f6da3fe1997fea6eff00ca6fff006dafa028a00f9fff00e1997fea6eff00ca6fff00 6daf16d7b4d1a2ebfa9695e779df61ba96dbcddbb77ec72bbb1938ce338c9afba6be20f1dffc942f12ff00d856ebff0046b5007a17837e07ff00c261e13b1d7f fe122fb1fdabccfdc7d8bccdbb6464fbde60ce76e7a77addff008665ff00a9bbff0029bffdb6bd03e09ffc923d0bfede3ff4a24af40a00f9ff00fe1997fea6ef fca6ff00f6dae4fe21fc221e01f0fdbeaa75cfb779d76b6de57d93cac651db7677b7f7318c77afab2bc7ff0068dff927ba7ffd8563ff00d152d00782782bc37f f09778bac742fb5fd8cdd799fbff002fccdbb6367fbb919cedc75ef5eb7ff0ccbff5377fe537ff00b6d701f04ffe4ae685ff006f1ffa4f257d7f401e0907eceb 35a5c45716fe319239e270f1c91e9e559181c8208972083ce6bdee8a2800a28a2800a28a2800a28a2800af802beffaf802803edff027fc93df0d7fd82ad7ff00 452d7415cff813fe49ef86bfec156bff00a296ba0a0028a2bc6bc7ff001c6d341bd9b4ad06d52ff5085da3b896e03ac5048afb4a6de0b9e1b904019520b72000 7b2d15f207fc2ecf885ff4307fe495bfff001ba3fe1767c42ffa183ff24adfff008dd007d7f457c81ff0bb3e217fd0c1ff009256ff00fc6e8ff85d9f10bfe860 ff00c92b7ffe374007c6cff92b9aeffdbbff00e93c75dffeccbff334ff00dba7fed6af15d635bbff00116af3eadaadc79f793edf325d8a9bb6a851c28007000e 057b57eccbff00334ffdba7fed6a00fa028a28a0028a28a002be20f1dffc942f12ff00d856ebff0046b57dbf5f1078effe4a17897fec2b75ff00a35a803dff00 f672ff00927ba87fd8564ffd15157a66abaa5a687a6dc6a3a9dca5b59dba6f9256e8a3f9924e000392480324d799fece5ff24f750ffb0ac9ff00a2a2ae07e38f 8eff00b7b5aff846ec64cd869b21f3f31ed2f74bb95b04f3b5412a381925ba8da6803a1f10fed12b15c5ddb787f498e74470b6f7b752b057008cb188007079c7 cc0f4240e56b89bdf8dfe3ababc79e3d4e0b389b044105ac6513000e0bab373d7927afa71543c01f0df54f1fdc486293ec5a6419135f3c7bc07c6422ae46e6e4 13c8c0e49e541f74d33e07f832cf4db7b7bfd3a4d42ed1312dd3dc4b1995bb9da8e028ec07a01924e4900f1ab2f8dfe3ab5bc49e4d4e0bc89724c13dac611f20 8e4a2ab71d7823a7a715e87e12fda074fbc716fe28b4fb0cbcff00a5da2b3c27ef1e53975e028e37e4927e515d87fc293f87bff42fff00e4edc7ff001caf3df1 0fececd15bdddcf87f569277440d6f657512867200ca994103279c7ca074048e5a803ddedee21bab68ae20992682550f1c88c195d48c8208e08239cd7c57e3bf f9285e25ff00b0add7fe8d6aeffc3be2ef187c22d46db49f10d8dd7f6233366da455206eda59a090704ae412a1b6e5981c31dc3cf3c577706a5e2ed6afad1bcc b6b9bf9e68a4c11b91a462a7079190475a00fa8fe09ffc923d0bfede3ff4a24af40af3ff00827ff248f42ffb78ff00d2892bd02800af1ffda37fe49ee9ff00f6 158fff00454b5ec15e3ffb46ff00c93dd3ff00ec2b1ffe8a96803c83e09ffc95cd0bfede3ff49e4afafebe40f827ff00257342ff00b78ffd2792bebfa0028a28 a0028a28a0028a28a0028a28a002be00afbfebe00a00fb7fc09ff24f7c35ff0060ab5ffd14b5d0573fe04ff927be1aff00b055affe8a5ae82803cf3e2af8e8f8 27c2ff00e8af8d62f77259662deab82bbdce78f9430c673962bc119c7c875eff00fb4d7fccadff006f7ffb46bc97c13e1e1e2af18e97a2190247752fef581c11 1a82efb4e0fcdb55b1918ce33c5007a1fc3ef81b71af5a4b7fe2afb6e996e7296f6c80473b1079760ea76af0400464f5e001bbd5ff00e149fc3dff00a17fff00 276e3ff8e57a051401e7ff00f0a4fe1eff00d0bfff0093b71ffc728ff8527f0f7fe85fff00c9db8ffe395e8145007c69f13b45d3bc3bf11755d2b4bb7fb3d8c1 e4f9716e67dbba1463cb124f249e4d7a5feccbff00334ffdba7fed6ae03e367fc95cd77feddfff0049e3aeff00f665ff0099a7fedd3ff6b5007d01451450051d 42fedf4ed3ae6faea5f2ededa279a57da4ed4504b1c0e4e003d2bc4afbf68e857513fd9de1f926b054201b8b9114aec76e0e1430503e718f9b395395c107d975 ed34eb5a06a5a579de4fdbad65b6f376eed9bd0aeec646719ce322be2ad574bbbd0f52b8d3b53b67b6bcb77d9244dd54ff002208c104704104641a00fa8ed7e3 5f806582291f579207750c6292d26dc848fba76a1191d38247a135f3278aeee0d4bc5dad5f5a37996d737f3cd14982372348c54e0f23208eb5875bde1af0e6a9 e2ed6a1d274bb732dc49f3333709120eaee7b28c8fcc000920100fa0ff0067c82587e1e5cc92c52224da8caf1b32901d7cb8d72bea372b0c8ee08ed5e19f11ac e7b1f88de238ae63f2ddafe5940dc0e52463221e3d5594fb679e6beb3f0c787adfc2de1bd3b44b53ba3b388219391e6393977c1271b98b1c678ce0715e17f1e3 c137b6de207f165b4324b617491a5db839f2255010646384650801e7e6c838ca8201ee9e18f0f5bf85bc37a76896a77476710432723cc7272ef824e3731638cf 19c0e2b7ab99f06789e0f15f85ac3568a78259a48945d2c390229c28f31307918278cf620e48209e9a800a28a280307c4be1cd2fc5da2cda4ea96e25b793e656 5e1e271d1d0f66193f990410483f1c7897447f0f788aff00479b797b39de20cf198cba83f2bed3d032e18727823935f58f8b7e24f867c1bba2d46ffcdbd5c7fa 15ae249bf87a8c809c306f98ae46719af92758d6effc45abcfab6ab71e7de4fb7cc9762a6edaa1470a001c00381401f557c13ff9247a17fdbc7fe94495e815e7 ff0004ff00e491e85ff6f1ff00a51257a050015e3ffb46ff00c93dd3ff00ec2b1ffe8a96bd82bc7ff68dff00927ba7ff00d8563ffd152d007907c13ff92b9a17 fdbc7fe93c95f5fd7c81f04ffe4ae685ff006f1ffa4f257d7f4005145140051451400514514005145140057c015f7fd7c01401f6ff00813fe49ef86bfec156bf fa296ba0ae7fc09ff24f7c35ff0060ab5ffd14b5d05007917c79f0bcfad784e1d62d56479f4766778d727742fb439c004e54aa36720050e4f6af24f82f796367 f1434c37b1479992486de5797cb114ac8707d18b0ca053de418e40afaab50b0b7d474eb9b1ba8bccb7b989e1953711b91810c32391904f4af8bf55b3bef0678c 6e2d925916ef49bdfdc4d243b4b146cc726c6c8c101580390411d45007dbd4562e81e21d2bc49a58d4747be4bbb4dc537a82a558750cac0153d0e081c107a115 b540051451401f207c6cff0092b9aeff00dbbffe93c75dff00eccbff00334ffdba7fed6ae03e367fc95cd77feddfff0049e3aeff00f665ff0099a7fedd3ff6b5 007d01451450015e41f18fe1ac3e23d3a6f10e936b21d72d914bc502826f23180411ddd57904649036e0fcb8f5fa2803e16d0f4fb6d535cb4b0bad420d3adee2 558deee704a440f738feb81ea54648fb17c2be0dd13c1760d69a2d9f9424da6799d8bc93328c02cc7f138185049c01935e25f1afe1bae8f71378b74ade6d6eee 3379010cde4cae49f301ec8c7820f4660064300be89f07fc7abe2ff0e2e9f7d3c6758d394472299199e788001663bb9249e1b93cf271b80a00f4dacbd574bb4d 734db8d3b53b64b9b3b84d9244dd187f3041c104720804608ad4a2803e798b45f1f7c20d42f2f7478bfb4fc2b1ca6e27804caf98b2546e040649026d2cc8bb78 04e4290372c7f689f0fc9691b5f695aa417273be384472a2f271862ca4f18fe11e9cf5af6aae0eefe12f81f50bb92ea7f0e408ef8cadbcb24283000e111828e9 d873d7ad0079c6bffb464c59a3f0fe8b1aa07044fa83162cbb791e5a11b4eee8779e074e78e0f55f8c1e37d592e227d724b78267dde5da449098c6ec855751bc 01d3ef648e093935efff00f0a4fe1eff00d0bfff0093b71ffc72a4b4f84be07d3eee3ba83c3903ba670b712c9321c82394762a7af71c75eb401f31e8fe16f137 8c2f1e6d3f4dbed45e691fccba60761931bdb7cadf28639cfcc72723b9158da8585c69da8dcd8dd45e5dc5b4af0ca9b81daea486191c1c107a57de35f1078eff 00e4a17897fec2b75ffa35a803e9ff00827ff248f42ffb78ff00d2892bd02bcffe09ff00c923d0bfede3ff004a24af40a002bc7ff68dff00927ba7ff00d8563f fd152d7b0578ff00ed1bff0024f74fff00b0ac7ffa2a5a00f20f827ff257342ffb78ff00d2792bebfaf903e09ffc95cd0bfede3ff49e4afafe800a28a2800a28 a2800a28a2800a28a2800af802beff00af802803edff00027fc93df0d7fd82ad7ff452d7415cff00813fe49ef86bfec156bffa296ba0a002bc7be3c78406b1e1 a4d7ace1dd7ba67faedab9692dc9f9b38524ec386e480aa6435ec345007ca5f05bc6d6fe13f134b657ef045a7eabb2396ea562be43a06d873d3692c54e718c83 9001cfd5b5f3a7c71f87b69a45bdbf88f42b08ed6d8b886f60b74db1a123092055184070558e4024a719249e9be0378ca6d63419fc3b76d199f4a5536ced3132 4b0b16e369e70870b91c00c83031c807b2d1451401f207c6cff92b9aeffdbbff00e93c75dffeccbff334ff00dba7fed6ae03e367fc95cd77feddff00f49e3aef ff00665ff99a7fedd3ff006b5007d0145145001451450054b8b786eada5b79e149a0954a491ba8657523041078208e315f32f8a740d7be0e78dd35ed19bcbd2a 795becce03347b09c9b69413938038c9f9828604303b7ea5acbd574bb4d734db8d3b53b64b9b3b84d9244dd187f3041c104720804608a00caf0678c74ff1a685 06a162d1a4e501b8b5332bc96ed961860390095254903239c0e95d4d7cc1aef833c4ff0007b5c1e25d0aebed1a5a4bb049824ac6d8c4770a000549f9770e3201 f918a8af5bf877f1434cf1b69d0c5712c167ae29d92d997c79a40277c409cb2e01247257073c618807a2514514005145140057c41e3bff009285e25ffb0add7f e8d6afb7ebe20f1dff00c942f12ffd856ebff46b5007d3ff0004ff00e491e85ff6f1ff00a51257a0579ffc13ff009247a17fdbc7fe94495e81400578ff00ed1b ff0024f74fff00b0ac7ffa2a5af60af1ff00da37fe49ee9fff006158ff00f454b401e41f04ff00e4ae685ff6f1ff00a4f257d7f5f207c13ff92b9a17fdbc7fe9 3c95f5fd001451450014514500145145001451450015f3df8a3f679686dccde17d4249dd1496b4bf2a19c80c7e59140193f280a401d4961d2be84a28030fc296 93e9be11d16c6ed7cbb9b6b0821963c83b5d6350c32383820f4adca28a0028a28a00a9716f0dd5b4b6f3c293412a94923750caea460820f0411c62bc7b4ef821 75a4fc494d6f4bd523b1d1adae12e2de2567927232bbe16fba0210645cee63b70083935ed945001451450079278ffe0b5a78bb53bdd6ecb529edb55b8da4acc0 3c07646115700065ced5cb65b1cfca7b3be0ff008135cf03def8861d5a381a39fecc2de78250e92ed1216c038618de07cc07b64735eb34500145145001451450 01451450054b8b786eada5b79e149a0954a491ba8657523041078208e315e1de3cf8297c359feddf042a42fbc4c6c525f25a29430c340dc051fc582576edf949 c851ef945007877827e37992f9345f1ac3f61bf5945b8bc11f96808186f3d49fddb6e1c9036fcdc840b9af63d3efed353b28ef2c6ea0bab6933b268241223609 070c3838208fc2b98f1c7c3bd13c716e7edd0793a824463b6bf8f3be2e72323203ae7f84ff0079b0549cd79e781be19f8bbc0ff122d9c4df68f0fb798d7335b5 c6c4906c916312444825812a700301bb83d6803de28a28a002bc4fc67f01a1d62f6f754d1353923d42eee24b8963bec18999df710ac8b94032dd436781c726bd b28a00e2fe18e8ba8f877e1d695a56a96ff67be83cef322dcafb774cec395241e083c1aed28a2800ae5fc65e0db0f1c6911699a8cf7114115c2dc2b5bbaab160 acb83b958630e7b7a57514500783f84be0f6bbe0bf89fa4ea697106a1a445e76fb94c46f1e60651ba327bb3606d2dd32715ef145140051451400514514005145 1400514514005145713a4fc54f0deb5e359fc2b68d75f6d8d9d16578808a464fbcaa739c8c375007ca79e9916aec0f4573b6a28a2800a28a2800a28a2800a298 66884eb019104cca5d632c3715180481e8323f314fa0028a28a0028a28a0028a28a0028a28a0028a2b91f1b7c41b0f01c76f3ea9a66a735ace762dc5aa46c81f 93b4ee7041c0cf4c7bf5a4da5b8d2b9d75158fe16f1259f8bbc3b6badd8473c76d73bb624ea038dac54e40247507bd695d4cf6f6b2cd1dbcb72e8a488622a1dc fa0dc42e7ea40a6d72ee25a93515c0784fe2f683e30f111d0ec6c75482ec23b9375146aa36f51f2b939fc2bbfa3cc3ad828a28a0028a28a0028a28a0028a28a0 028a28a0028a28a0028a28a0028a28a008e791e1b792548249dd14b2c51950ce7d06e2064fb903debc87c2be27f87b77f1524874ef0b6a161e26b89268a59a74 4088ea097e04acaa4ed3caaf393cf26bd8abe5ef067fc9cc4bff00611bdffd065a70d6a25e4c25fc36cfa868a28a4014514500159dae6ae9a16913ea0f697977 e50c882ce0696473e8028e3ea7007735a3505e7fc78dc7fd736fe55336d45b45455e4933e77f04fc54d4755f891a9ebb7fa3eafa823d9986dec74ab7fb41b64d ea47191c71cb7727e807d136771f6cb282e7c99a0f3a357f2a65dae9919c30ec47715f367ecdff00f23a6a9ff5e07ff462d7d335a349452feb76649de527fd6c 828a28a92c28a28a0028a28a0028a28a002bc7bf68dff910ac3fec229ffa2debd86bc7bf68dff910ac3fec229ffa2dea27b7cd7e65d3dfe4ff0022ff00c30d5d 741f817a76a8f67737715b2dc492a5b6cde104b2166f9d941000f5cfa035da785bc509e2cd2c6a50693a958da48a1a17be48d3ce073ca857638f72003918cd7c f7a37c429b43f05f84344bed2675f0f4934a6fe790616ed3ce6ca263aa2ee0587f1636f4ce7e9db79a1b8b48a6b674782440d1b21cab2919047b62b6a9ab94bc cc96965fd6e7cabf0a355b2d1be2d5cdddfcde545b6e1170a5d9dd9b0aaaaa0b3313d00049af72f0ff00c5cf0f6bfe263e1e36da9e9ba964aac5a8db888b30e7 6f0c486c73838fcebc5fe0bc6927c6898ba2b144b965246769ce323d0e091f8d4be396307ed296ef1f045fd89ebfecc7514f5f6717d51535ad46ba33ea0a28a2 800a28a86eed96f2ca7b5767549a368d990e180231907b1e693bdb41adf539c6f1dd8ceb7afa2e9fa86b9158b325d49a72c656365192a0c8e9e61c764ddf9914 be0df1fe83e3ab5964d266956787fd75adc26c963c920120120838ea09f7c1e2bcefe1be9ba778475cd6b42f0bea4fe24bf942b5cbb2f9169688a48c3b8dfbdc ee206d073820edc1238bfd9f0b2fc4cbe5c8e6c250703fe9a25542d276f2bff5e429689becedf79ec1e2ef8b9a3f827591a66afa56b0247412452c31c4d1cab9 c641f301ea08c100fb559d73e2af877c3fae586957897e5ef182adc476ff00b94390082e48ce09c1dbbb0720f3c57917ed23ff00236e8f8ff9f23ffa19af723e 11d0f54d2f438f52d3e3ba3a608e4b6672728e14739cfcd9c0241c838191c52a7ac799f7fc027a3b2edfe47454514500145145001451450014514500473c8f0d bc92a4124ee8a59628ca8673e83710327dc81ef5f3ef877c0de35d2fe2f1f16dcf85e7fb0bde5c4c634bcb6322ac81c0e3ccc646e19e6be86a285a4b981eb171 0a28a2800a28a2800a64b1896178c9c0752b9fad3e8a4d5d598276d4f03f87bf0efc71e02f1c5ef91a75a5c58dc44d6cba8bdca8445c86126cc9724631b70327 f880e6bded0154552c588182c7a9f7e2968aabbb25d856576c28a28a430a28a2800a28a2800a28a2800af2df8d7e1ef10f8b744b2d2342d165bb29702e24b8fb 4431a2e15976e1dc313ce7a63dfd3d4a8a4d5c69d8f0f8bc01ad6a1f03bfe118d4fc3b709ace9f234965b2e6021dd9d8e437998030c43038f6c9adff008570f8 dbc35e1b9745f117876e1e2b452f652c3756eeccbd7ca3fbc1ce7a13c638246057a8d154dddb7dc9b6de47cf7f0dbc07e32f0bfc46fedbd4fc3932d9cc254631 dddbb18f79e091e672077c73e80f4a4f14f81bc69ac7c5c1e2ab6f0c5c7d823bab79423dddb091963080f1e6632769c73e95f42d14968e2d741bd79bcc642ed2 c11c8f13c4cca098dc82c87d0e09191ec48a7d1450015435cb29f52d0750b1b5b8fb3dc5cdb49147373f2332900f1cf19abf4526aeacc69d9dd1e25f08fc1be3 bf06cbab595d699616f6d745317535c862a46e1b91133bc60e76b14faf5aa5f0cfe1c78c7c17f116e2f2e34cb69b4f68de0fb5b5e2a0642ea772aa8662703852 147b8af7aa2a9369f379589b68d7ccf06f8c9e07f1878d3c596f3e8fa03c967696e21599eea04f31b7162402f9c7207201eb5ed3a1cf793e8b6ad7f612d8dd08 c2c904ae8e5580c1e518823d39fc074ad0a2947dd8f28e5abb851451400514514005145140051451400514514005145140051451400514514005145140051451 40051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451 40051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451401fffd9}}{\nonshppict{\pict\picscalex40\picscaley40\piccropl0\piccropr0\piccropt0\piccropb0 \picw8440\pich6429\picwgoal4785\pichgoal3645\wmetafile8\bliptag-2125431484\blipupi96{\*\blipuid 81507d4470c6654fc73449412576be72} 010009000003eac701000000c1c7010000000400000003010800050000000b0200000000050000000c02f4004001030000001e00040000000701040004000000 07010400c1c70100410b2000cc00f3003f0100000000f3003f0100000000280000003f010000f30000000100180000000000408f030000000000000000000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7fffff7fffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7fffffffffffffffffffffffffffffffffff7fffff7fffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffeff7fffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7f7ff ffffffffffffffffffffefe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffff fffffffffffffffffffff7fffffffffffff7fffff7ffffeffffffffffffffffffff7effffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7fffffffffffffffffffff7fffffff7f7efffffffefffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffefffffffffffff fffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffff7fffff7ffffeff7 fffffffffffffffffffffffffffffff7fff7e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffffeffffffffffffffffffffff7fffff7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffffffffffffff f7fffffffffffffff7fffffffff7effffffffffffff7fffffffffffffffffffff7ffffffffffeffffffffffffffffffffffffffffffff7ffffffffffffffffff fffffff7effffff7fffffffffffff7ffffe7f7ffefffffeffffff7fffffffffffffff7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffff7ffff f7f7fff7fffff7fffffffffffff7effffff7ffffefffffffefffffefffffeffffff7ffffffffffffffffffefeffffffffffff7f7ffffeffffff7ffffeff7ffff fffff7f7fffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7ffffffc6d6de1018290000 100000080808100000002118180800002921084a4229ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffbdced6000008080000100000291810fff7efffffffffff fff7fff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff212931000008000008 081018000000180000210800180808423942efeff7c6cede000810000000080800080800211808080000080800b5b5adb5bdbd00000800001000001000000808 0000292110100000100800d6ded6394a4a081821000010000818000008080000180800100000524a4adededeffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffff fffffff7ffff738484000000100800180800cec6b5fffff7efffffe7ffffe7ffff42525a100810180000311810d6bdb5fffffffffffff7ffff8c9cad00101000 0008080810080000100808100808100000211810c6bdb5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffff7ffffeffffff7fffff7ffffa5ad bd000818000008000008080000100800cebda5ffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffffefffff94a5ad101821000000080800211008180000100000e7deceffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff848c94080818 0000001810181000001800009c8c8cfffffffffffff7ffff9ca5ad000000000000080800080000292110e7ded6ffffffffffffeff7ff18213900001008081010 0808080000736b52fffff7f7fff7f7ffffbdcede000008000010000000100800210800ceb5a5fffffffffffff7f7f7f7f7f7ffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff e7efff7b84940000080000002110081800001000000808004a5a5ae7ffff5a7384081821080000210000180000180000181008eff7f7efffffefffffadc6ce08 18180000000000000800001000004a4239fffff7fffffff7efe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffeff7ffdee7 ff000010000010101010100800181000ffffe7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffffd6e7f7081821000000101010080000180800f7deceffefde635242fff7 efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdee7ef101821 081018000000180800311008e7d6cefff7fffffffff7ffff7b848c000000101808181000100800b5b59cffffffefefefffffffeff7ff5a638400001000000800 0000180800ada594fffff7ffffffffffffefffff001021000818080810180800210800f7deceffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff d6e7f7001021000008081010180800180000b5a58cfffff7bdcece294252082939000008100000210000421810ffe7d6fffff7fffffff7ffffefffffe7f7ff08 1018000808101010181010100000c6b5b5ffefe7ffffffffffffffffffffffffefefeff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffffeffffff7ffffd6e7 f7081021000008000008080000211808fff7deffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff7ffffe7ffffc6d6e7001018000808080808180808523931ffefdeffffefe7d6c6d6ce c6f7f7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7eff7ffffffced6de081021 000008000008180000391808fffffffffffff7ffffb5bdce000008000808000000080800635a4afffff7fffff7ffffffeff7fff7ffff394a6b00082100000010 08001008008c846bfffff7ffffffeff7ffdef7ff082131000010000000100000311000f7d6c6ffffffffffffffffffffffffefefeffffffffffffff7f7f7ffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffeff7fff7ffff deefff001021000008000000100000523929ffffefffffffefffffadcede000010000008210810210000290000ffdecefffff7ffffffefffffdeffffefffff4a 5a63000008080808080000181008c6b5adfffffffffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffffd6e7 f7101831000010000000100800211808ffffdefffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffefffffefffffb5cede000008000000080000100000634239fffff7fffff7ffffeffff7 e7fffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7eff7000008 000818000008210800311808e7d6ceffffffeff7ff182939000008000000080800292910fffff7ffffe7ffffffffffffefeff7f7ffff4a5a7b00001000000800 0000100800a59c84fffffffffffff7ffffe7f7ff183142000010000008100000422110efcebdfffffff7f7f7ffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffe7f7ff deefff182942000818000000180800846352ffffe7ffffefefffffe7ffff18394a000008100000391810390800efcebdfffffff7ffffe7ffffe7fffff7ffff4a 525a000008101010100000180808efded6f7e7defffffffffffffffffff7efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffff7f7fff7fffff7ffffefffffcede f7001021000008100810100000210800fff7d6fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffefffffe7ffffb5cede0000080008080000001000005a4231fff7defff7e7ffffffffff f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffcedeef081831 000008080000180000210000fffff7ffffff9ca5ad0000080008100000000800009c9484f7e7d6fffff7f7f7e7fffffffffffff7ffff394a6b00002100000008 0000180800a5947bfffff7ffffffefffffe7ffff000829000818000000180000290000f7d6bdfffff7fffffffffffffffffffffffffffffff7f7f7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7fff7ffffefffff efffff8c9cad0000080000081808005a4231ffffe7fffff7efffffd6f7ff000821081831100000290000390800ffdecefffff7ffffffe7ffffdeffffe7ffff4a 5a63000808080000080000180800decebdfffffffffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffcee7 ff001029000010080000210000311000fff7deffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffe7ffffbdcede000808000000000808000000634a29ffffdeffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffc6deff001031 000008080000210000291008fffff7e7e7e71821290000080800001000005a4a39fff7e7fffffffffff7ffffffefffefffffffe7f7ff395a8400001800000810 0800210800bda584fffff7ffffffefffffd6f7ff002142000010080008180000391000efcebdffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff7ffff638494000010181010180000d6bda5ffffefe7ffffd6ffff00214a000021180008290000421000ffdebdfffffff7ffffefffffe7ffffefffff52 5a6b000008080000100000100800ded6bdfffff7ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffbdde f7001829000008100008210000391000fff7defffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffe7f7ffbdcede0000000800000000000008005a4a18ffffd6fffff7ffffffffff fffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffb5d6ff000839 0000081000002108081800004a4a3952635a000000000810080000291008dec6b5fffffffffffffffffffffff7efffeff7fffff7ffff294a7300002908080818 0800210800ad946bfffff7ffffffdeffffd6f7ff001842000018080008180000311000f7d6c6ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff ffffffffffffdeffffb5cede080008180800181000ffffe7defff7cef7ff00184a000029100008290000310800ffdeb5fffff7ffffffefffffefffffe7f7ff52 5a73000000080000080000180800e7debdffffefffeff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc6e7 f7001021000010080008290000310800fff7defffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffbdcede080808000000000808000000634a21ffffd6ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff000839 000008100000180000180000292918000000000008000810100000ad948cfffff7fffff7fffff7fffffffffffff7fff7fffffff7ffff39528400002100000810 0800291000ad946bffffffffffffe7ffffd6f7ff082142000010080008180000391000f7d6bdffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff7fffff7ffffdee7ffffffffbdb5a5081000314221f7ffffdef7ff08184a000021180010180000311800f7deb5fffffffffffff7ffffefffffefffff4a 5a73000008000000100000180000e7debdfff7defffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbde7 f7001829000008100008210000391000fff7d6fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffe7f7ffbdcee70000000800000000000000005a4a21ffffdefffff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffb5d6ff001039 000008100000210000210808dedece313931000008000810211810fff7efffffeffffff7fffffffffffff7fff7fffffff7ffffefffff31527b00002100000018 0800210800ad9c73ffffefffffffe7ffffdef7ff001839000010080000180000290800f7d6bdffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffff ffffffffffffeff7fff7fffffffffff7f7e7ffffefadbd9c000000425263080839000021080008180000211000f7e7bdfffff7fffffff7ffffefffffe7f7ff4a 5a73000008000000080000180000d6c6a5fffff7fffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc6e7 f7001821000010080000290000311000fff7defffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffe7ffffb5cede080808080000000808000000634a21ffffdeffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff000839 000008100000210000311818fffff7ffffff101821000008c6bdbdffffeffffff7fffff7fffffffffffff7fff7f7ffffffffffe7f7ff31527b00002108081018 0800210800b59c7bfff7e7ffffffefffffdef7ff102139000010100808180000391000f7dec6ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffeff7ff ffffffeff7ff4a52730000100000008c8c7bfffff7f7ffe7ffffffbdcede080831000018100008100000211000efdebdffffffffffffffffffefffffe7ffff42 5a73000008000000100000180000ceb59cffffeff7eff7fffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffc6de ef001829000008100008210000311000fff7defffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffdeffffb5cee70000000800000000080000005a4221ffffdefffff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffb5d6ff000839 000008100000180000180000f7f7e7ffffffdee7ef101021b5b5b5fffffffffff7fffffffffffffffffff7fff7fffffffffffff7ffff314a7b00002100000810 0800180000c6b594fffff7ffffffe7ffffdef7ff081831000008080000180000311000ffe7d6ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7ffffffffff eff7ff7b8c9c000018000010000000181008c6c6adfffff7e7efefefffff080831000018100008180000210800f7e7cefffff7fffffffffffff7ffffdef7ff39 5a73000008000000080000210000a58c6bfffff7ffffffefeffff7fffffffff7fffff7fff7e7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffc6e7 f7001021000010080000290000310800fff7e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffe7ffffb5cee7000008000000000810000000634a21ffffd6ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff000839 000008100000391010290000ffffeffffff7ffffffced6e7292921decec6fffff7fffff7fffffffffffffffffff7fffffffffff7ffff395a8400002100000808 0000291000948463fffffff7ffffefffffd6efff081829000008100000180000422110fff7e7ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffff e7f7ff4a5a6b000010000010211018100000d6c6adfffff7ffffffefffff101839000010180810210000391800ffefd6fffffffffffffffffff7ffffdeffff39 5a73000808000000180008290000634229fff7defffffff7ffffd6dede081000392918ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffc6e7 ef001829000008080008210000311008fff7defffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffdeffffb5cee70000080000080000080000005a4221ffffdefffff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffb5d6ff001039 000008100000210000391010fff7e7fffffff7ffffffffffcecece181008e7d6cefffffffffffffffffffffff7ffffffffffffeff7ff294a7b00002900000810 0800180800311800f7efdeffffffe7f7ffdeefff081021000000100000210800422910ffffefffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffffefffff efffff94a5b5000010000010080000523931fffff7fffff7f7ffffbdd6de001029000010100000210000391000ffefdeffffffffffffffffffffffffd6f7ff31 5a730000080008081000002900009c7b63f7dec6efefeff7ffff081818000800180800a58c7bffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffc6e7 ef082129000008080000290808311008ffefdeffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffefffffe7ffffadc6d6000008080808000810000000634a21ffffdeffffffffffffffff fffffffffffffffffffffffffff7f7fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff000839 000008100000290000310808ffffe7fffff7fffffff7ffffffffff211810180800decec6fffffffffffffffff7ffffffeff7f7f7ffff31527b00002900000808 0000291800180800181808efefeff7ffff6b7b8c000008080810100800180000b59c8cffffefffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffff f7ffffefffff526373000008180808efded6ffffffffffffffffffc6dee7102129000008211010210000b59494ffffffffffffffffffffffffeff7ffe7ffff29 5263001018000008100008311010ffdec67b6b52f7f7ff9ca5ad0008001018081808007b5a52ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7fffffffffffffffffffffffffffffff7ffff9cbd c6000008000008291821180000311008fff7e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7ffff6373840000100008210808180000080000080810102910002108000808000800004a39 31fff7effffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffb5d6ff000839 000008180000290000290000fff7e7ffffffeff7fff7fffff7f7f7292118100800181008ada5adfffffff7fff7e7f7e7ffffffefffff39527b00002108101808 08002110009c8c737b73630000000000080818210000000000000800005a4a39ffefdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff f7fffff7fffff7ffff6b6b730808005a524afff7efffffffffffff2129310000000808080800006b5a5afffffffffffffff7f7fffffff7f7f7ffffffc6def700 1831000008000808180810180000e7cebdfffff7212121000810000000000800311810a58c84ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efeffff7f7ffffffd6d6d61018210008 10000008181829080000210000391810fff7e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffa5b5c60000100000080000080008180000002108003118001008000808005a52 42fff7effffffff7f7fffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff000839 000008100000310800421808f7efd6ffffffffffff6b737b000008080000100000100800080008080808e7f7e7fffffffffffff7ffff425a8400001800081008 0000180800ad947bffffffffffff1829310000081018180808006b6352ffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff fffffff7ffffffffffffffffffffffadb5a5101010000008080008000008101010000000efe7e7ffffffffffffffffffffffffffffffffffff94949c00102100 0010000810000000100008211010efdec6fffff7f7ffff848c940000000808005a4239fff7e7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffffff7ffffffffffffffe7ff ffefffffeff7fffffffffffffffffff7ffffefffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7fffff7fffffffffffffffffff7ffffdeeff7c6d6e7000810000010000008081010524221ffffd6fffff7ffffffffef e7fffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffb5d6ff001039 000008100000290000390800ffffefffffefeff7fff7fffffffffffffffffffff7fffffffffffffffffff7ffffffffffffffffe7efff314a6b00002100000008 0000291800ad947bffffeffffff7f7ffffeff7fffffffffffffffffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7fffffffffffff7fffffffff7fff7fffffff7fffffffffffffffffffffffff7f7fffffffffffff7fff7fffffffffffffffffffff7f7f7efe7ffffffe7f7ffef ffffeffffffffffffffffffffffffffff7fffff7f7f7fff7fffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffe7ff ffe7fffffffffffff7fffff7fffffff7fffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7efffffffffffffeff7fff7ffffd6deef000818001021000000524221ffffdeffffffffffffffff fffffffffffffffffffff7fffffffffffffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff000839 000008100000390800390800fff7e7ffffeffffffff7fffff7f7f7fffffffffffffffffff7f7fffffffff7fff7ffffffffffffffffff425a7b00001808081010 08001808009c8c73fffffffffffffffffff7fffffffffffffffffffffffffffffffffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7f7e7fffffff7f7fffffffffff7fffffffff7efdefffffff7fffff7fffffffffffffffffffff7fffffffffffff7f7fff7 ffffffffffffffffffffffffffffffffeffffff7fffffff7f7fffffffffffffffff7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffe7ff ffeffffffffffffffffffffffffffffffff7e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7efe7fffff7fffffffff7f7fffffffffffffffffff7ffffbdc6d6000010081818312908ffffe7fffff7ffffffffff effffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7ffffb5d6ff000839 000008180000310000390800fff7defffffff7fffff7fffffffffffffffffffff7fffffffffffff7fffff7fff7fffffffffffff7f7ff4a5a7b00001800000010 08001800009c8c73fffff7fffff7fffffffffffffffffffffff7f7f7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffeff7f7fffffff7e7f7fffffffffff7ffffeffffffffffffff7fffffffffffffffffffffff7f7efffffffffffffff ffffeff7f7fffffff7f7fffffffffffff7fffff7efeff7fffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefff ffa5bdc6000008080000311010fff7effffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffefffff8ca5bd000000635231ffffdeffffffffffffffff fffffffffffffffffffffffffffffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff000839 000008180000310000310000ffffeffffff7eff7ffeff7fffffffffffffffffffffffffffffffff7f7f7ffffffefffefffffffffffff314a6300081810101810 0000180800ad947bfffffffffffff7fffffffffffffffffffffffffffffffff7ffffffeff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7fffffffffffffff7ffffffffffffefe7f7fffffffffffff7ffeffffff7fffffffffffffffffff7effffffffffffff7ffffffffffffffffffff ffffffffffffffffeff7f7fffffff7ffeffffff7fffffffffffffffffffffffff7f7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffff7fffffffffffffff7ffffadc6 ce000810000810080000180000524239fff7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffefffff7b8c8c423921ffffe7fffff7ffffffffff f7fffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffbddeff001031 000008100000290000391008f7e7cefffff7fffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffeff7ff52637b00001000000010 08001000009c8c7bffffeffffffffffffffffffffffffffffff7fffff7ffffffeff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffff7f7ffe7fffff7fffffffff7fffffffffffffff7fff7fffff7fffffffff7ffff fffffffffffffffffffffffffffffffff7fffff7fffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffb5bd c6000008101018000000100000211008fff7e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdee7e763635af7f7efffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffcedef7000821 001018000000180808210000fffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffff5a637300001000000800 00001008008c8473ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffbdc6 ce1010180000000000001008004a4231f7efdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffefffffe7f7ff6b7b8c000008 000008081018080000211008ffefe7fffffffff7f7fffffffffffffffffffffffffffffffffffffffffff7fffff7ffffefffffeff7ff10182100000800000800 000008080894948cfffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff ffc6c6ce080810101010100800fffff7fffffffff7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff293139000010000008 081821000008080000423129efe7defffffffffffffffffffffffffffffffff7fffffffffffffff7fffffffffff7ffff9ca5ad00081008081000000800000800 00000808088c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7fffff7f7f7ffffffffffffffffefffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7f7f7fffff7fffff7fffff7ffff dee7effffffffffffffffff7fffffffffffffff7f7ffffffffffffffffffffffffffffffffffffffffffeff7f7f7fffff7fffff7fffff7f7ffffffffffffffff fffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fff7ffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffefefff fffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffffffffff7f7ffffffffffffffefeff7f7f7fff7fffff7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 fffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefeffffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffefefeff7f7f7ffffffffffffe7e7e7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffffffffffefefefefefefffffffefefefffffffffffffffffff000000080808080808e7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7f7f7f7efefefffffffefefeff7f7f7ffffffefefef101010000000000000080808000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffefefefefefefffffffffffff000000212121000000101010101010000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffffffffffffffffffffffffffff080808101010000000101010101010000000101010000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefefefefef101010000000080808000000212121000000000000181818000000181818f7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000080808000000080808000000101010000000101010ffffffefefefffffffefefefffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f7ffffffffffffefefefffffffffffffffffffefefeffffffffffffff7f7f7efefefffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffff fffffffffffffffff7f7f7fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7fffffffffffff7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffffffffffffffff7f7f7fffffffffffffffffffffffff7f7f7ffffffffffff ffffffffffffffffff101010000000101010000000000000181818000000000000000000fffffffffffffffffff7f7f7fffffff7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffefefeffffffff7f7f7fffffffffffff7f7f7e7e7e7ffffffefefefefefeffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7 f7f7f7f7f7fffffffffffffffffff7f7f7fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefefffffffefefeffffffff7f7f7ffffffefefefffffffffffffefefefffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7f7f7f7fffffffffffffffffff7f7f7efefefffffffffffffffffffe7e7e7 ffffffffffff080808080808101010101010000000000000000000ffffffffffffdededefffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f7ffffffefefefefefefffffffffffffffffffe7e7e7fffffff7f7f7fffffffffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffdededeffffffffffffdededeffffffffffff000000212121f7f7f7fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffff ffffffffffefefefffffffe7e7e7f7f7f7f7f7f7ffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffdededeffffffffffffffffffffffff000000000000ffffffefefef ffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffefefefffffffe7e7e7fffffff7f7f7ffffffe7e7e7f7f7f7ffffff 000000080808000000000000101010000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7f7f7f7e7e7e7ffffffffffffffffffffffff000000101010fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffff101010000000ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f7ffffffffffff000000080808080808000000fffffff7f7f7fffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ff ffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffd6d6d6ffffffffffff080808101010000000000000080808e7e7e7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffefefefefefefffffffffffff000000000000 101010000000101010101010000000000000ffffffffffffe7e7e7ffffffd6d6d6ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffe7e7e7ffffff000000000000080808080808fffffffffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefefefefefffffffe7e7e7e7e7e7fffffff7f7f708080800 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefefffffff080808101010101010101010000000181818ffffffefefeff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef efeffffffffffffff7f7f7f7f7f7fffffff7f7f7080808101010000000000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffff000000000000080808000000181818080808000000fffffff7f7f7 f7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7f7f7f7ffffffffffffffffff000000101010101010 080808080808080808000000080808fffffff7f7f7e7e7e7fffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7ffffffffffff212121000000212121101010080808000000ffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7ffffffefefeff7f7f7ffffff08080810101008080800 0000080808000000efefeff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000101010000000000000000000101010101010000000f7f7f7f7f7f7ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffff ffffffffffffffffefefeffffffff7f7f7080808000000080808101010000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000101010080808080808101010080808080808000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffefefefffffffffffffefefef000000000000181818000000 080808181818000000ffffffffffffffffffefefefffffffe7e7e7f7f7f7ffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef ef000000080808000000181818181818000000080808000000080808ffffffffffffefefefefefefffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7fffffffffffff7f7f710101000000000000000000000000000000008 0808080808000000fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808 08000000000000181818181818000000000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefff fffffffffff7f7f7ffffffefefef212121000000181818080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff000000000000101010000000000000080808080808000000212121080808f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7ffffffefefefffffff101010000000080808000000101010 080808000000ffffffffffffffffffdededeffffffefefeffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000080808080808101010181818000000101010080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7ffffff00000021212121212110101021212100000008 0808101010000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00080808000000000000080808000000000000000000000000fffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffe7e7e7ff fffff7f7f7ffffffefefef080808000000181818000000080808080808000000ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff000000080808000000080808000000000000000000212121080808000000fffffff7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefefffffffe7e7e7fffffff7f7f7ffffffefefef080808000000101010000000101010000000000000 000000ffffffffffffffffffffffffffffffe7e7e7fffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000080808000000000000000000080808000000000000000000ffffffffffffefefeffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7ffffffffffff08080810101000000000000008080800000008 0808000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef efefffffffffffff101010000000101010000000101010000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7fffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7f7f7f7ffffff080808000000080808000000080808080808000000000000 fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 f7f7ffffff000000000000181818000000080808000000080808ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef effffffff7f7f7fffffff7f7f7ffffffffffffefefeff7f7f7ffffffe7e7e7e7e7e7ffffff000000000000181818000000000000101010101010ffffffffffff d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7ff ffffffffff000000101010000000212121080808080808000000ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7ffffffefefeff7f7f7efefeff7f7f7fffffffffffffffffffffffff7f7f7000000101010101010101010080808080808000000ffffffffffffefefef ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef efef101010080808000000000000000000080808000000080808f7f7f7f7f7f7ffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef efffffffe7e7e7e7e7e7ffffffffffffffffffefefefdededeffffff000000000000080808000000181818000000080808000000ffffffffffffffffffffffff f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefefff ffff000000000000000000000000181818000000101010ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefeff7f7f7fffffff7f7f7ffffffffffffffffffffffff000000000000080808080808000000101010101010080808dededeffffffffffffffffffe7e7e7 ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000080808080808181818000000080808f7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffe7e7e7ffffffe7e7e7f7f7f7efefef000000000000000000080808080808101010000000f7f7f7f7f7f7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10101000 0000313131000000000000000000101010000000fffffffffffffffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffe7e7e7ffffff000000101010101010080808181818000000000000fffffffffffff7f7f7ffffffffffffffffffffffffe7e7e7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000029 2929000000000000212121080808000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7f7f7f7f7ffffff000000080808000000080808000000000000101010fffffffffffffffffffffffffffffffffffff7f7f7ffffffffffff f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7fffffff7f7f7f7f7f7ffffff00000008080800000010101010 1010080808080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffffffffffffffff7f7f7ffffffffff ffffffffffffffffffffffffff000000080808000000080808101010080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffe7e7e7ffffff00000018181800000000000008080800 0000000000080808181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7f7f7f7fffffffffffffffffff7f7 f7e7e7e7ffffffffffff000000080808080808000000000000080808fffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff00000010101010101010101000000018 1818181818000000fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffefefefffffffe7e7e7ffff fff7f7f7ffffff000000000000181818101010080808181818080808ffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff00000008080800000000000010101010101010 1010000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffe7e7 e7ffffff000000080808080808101010000000313131000000ffffffffffffdededeffffffe7e7e7ffffffefefefffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10101010101008080808080810101000000000 0000101010ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7f7f7f7ffff ff080808000000080808080808000000101010000000ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffff08080808080800000010101000000008080800000000 0000ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffefefefffffffffff ff000000101010000000000000080808101010ffffffefefeffffffff7f7f7fffffffffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff00000010101010101008080808080800000000000010 1010efefeffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7ffffffefefef0808 08080808000000101010101010000000ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef00000010101010101000000000000000000018181800000000 0000fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffe7e7e7fffffff7f7f7ffffffefefef0808080000 00181818000000000000000000fffffff7f7f7fffffff7f7f7ffffffffffffefefefffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff000000000000212121000000000000080808181818101010000000ff ffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001010101010 10080808080808000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7000000080808101010000000080808000000080808000000080808ffffffef efefffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7ffffff1010101010100000000000 00101010080808080808fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7ffffffffffffefefefffffffffffffffffffff ffffffffffffffffffffffffffffefefeffffffffffffff7f7f7ffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7fffffffffffff7f7f7ffffffffffffffffffffffff000000101010000000212121000000080808000000ffffffffffffffffffff ffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000808081818182929 29000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefeffffffff7f7f7f7f7f7fffffff7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffefefeffffffff7f7f7fffffffffffff7f7f7efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffff101010000000000000080808080808000000101010f7f7f7ffffffe7e7e7ff fffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffff0000002121210808080000000000 00000000000000ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffd6d6d6f7f7f7fffffff7f7f7fffffff7f7f7ffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7ffffffefefeffffffff7f7f7d6d6d6ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000101010080808000000080808080808080808ffffffffffffffffffe7 e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000808080000000808080000000808 08080808f7f7f7fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffefefeffffffff7f7f7f7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7fffffffffffffffffffffffff7f7f7ffffffe7e7e7000000080808080808101010000000080808181818000000d6d6d6ffffffefefefff fffff7f7f7f7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001010100000002121210808081010100808 08ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7ffffffe7e7e7ffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7e7e7e7fffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefeffffffff7f7f7ffffffffffffefefef181818080808000000101010000000101010000000000000ffffffffffffefefeffffffff7 f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000808080000001010100808080000001818180000 00ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10101000000010101000000021212108080800000000000000000000 0000000000000000000000000000101010181818000000101010080808101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefefffffffffffffe7e7e7f7f7f7ffffff000000000000292929000000181818080808080808000000efefefefefefffffffffffffff fffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808000000101010080808000000181818080808ffff fffffffffffffffffffff7f7f7fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000010101000000018181800000018181800000010101000000008080800000008 0808000000080808000000080808080808000000101010000000101010000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff080808080808181818000000101010101010000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7fffffff7f7f7fffffff7f7f7f7f7f7fffffff7f7f7080808080808000000000000181818000000101010080808ffff fff7f7f7fffffffffffffffffffffffffffffff7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff fffffffffffffffffff7f7f7efefeff7f7f7fffffff7f7f7f7f7f708080808080808080808080800000008080808080800000010101008080808080808080800 0000181818000000000000000000101010000000080808000000080808101010000000080808080808181818000000ffffffffffffffffffffffffffffffffff ff000000101010181818101010000000181818000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7fffffff7f7f7ffffffffffff000000101010000000181818000000080808000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7f7efefeff7f7f7ffffffefefef000000000000181818000000080808000000080808000000ffffffffff ffffffffefefeffffffffffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffff7f7f7fffffff7f7f7ffffff ffffffefefefefefeffffffff7f7f7ffffffefefefffffff00000018181800000000000008080810101008080800000010101000000008080800000018181808 0808000000080808080808000000000000101010080808080808000000000000080808000000000000080808181818080808000000000000fffffff7f7f7efef ef181818000000000000080808101010101010000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7f7f7f7ffffffe7e7e7ffffff080808080808080808000000101010000000181818000000fffffff7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff000000080808181818000000080808000000080808101010ffffffffffffffff fffffffffffffff7f7f7ffffffffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffefefeff7f7f7efefef f7f7f7ffffffffffffffffffffffff00000010101008080800000000000008080800000010101000000010101000000018181821212118181808080800000010 10101010100000001010100000000000000000001818180000001818180808080808080808081818180000001010101010100000001818181818181010102121 21000000101010080808101010000000000000080808080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7e7e7e7ffffff101010000000000000101010000000101010000000080808181818efefefffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffff000000000000000000181818000000101010080808101010000000ffffffffff fff7f7f7ffffffffffffdededefffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffe7e7e7e7e7e7ffffffffffff ffffffefefefefefef101010000000101010080808000000000000101010000000101010ffffffffffffefefefffffffe7e7e7fffffff7f7f7ffffff00000008 08080000000808081010100808081010101818180000001818180000001010100000001818180000002121210000000808080808081010100000000000000000 00101010000000000000000000000000000000080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffffffffffffffff000000101010080808000000181818000000000000080808f7f7f7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffff080808080808212121181818000000080808000000000000000000212121000000ffff fffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7fffffff7f7f7ffffff ffffffffffffffffff000000101010101010000000000000181818fffffffffffffffffff7f7f7efefefffffffe7e7e7ffffffefefeff7f7f7fffffff7f7f7ff ffffffffff0000000000000000001010100808080808080000001010100808082121210000000000001010100808080808081010100000002929291818182121 21181818000000000000080808080808101010000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000101010101010000000181818000000080808101010ffffffe7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7fffffff7f7f7efefef0000000000000000000000000000001010100000000000001818181010100000000808080808 08fffffffffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffe7e7e7 f7f7f7efefef000000101010212121080808000000101010f7f7f7ffffffffffffd6d6d6ffffffffffffe7e7e7fffffffffffff7f7f7ffffffffffffefefefff ffffffffffffffffffffffffffffffffff0000000808081818180000000000000000001818180808080000000000000808080808082121210000000808080000 00000000080808181818000000000000080808000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7fffffff7f7f7ffffff080808101010080808000000181818000000212121101010000000000000fffffff7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0808080000000000000808081010100808080000000808080808080000001010100000001010100000 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7 ffffff000000080808101010000000080808fffffff7f7f7fffffffffffffffffff7f7f7ffffffefefefffffffffffffffffffffffffffffffefefefffffffff ffffffffffffffffffffffefefeffffffffffffffffffff7f7f7ffffffffffff0000000000000000000808082121210000000808080000001818180808081818 18000000080808000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7f7f7000000181818000000181818000000080808000000000000000000080808f7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000808080000000000000808080000000000000808080000000000000808080808080808080000000000 00080808080808000000ffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7ffffff 000000080808000000181818101010fffffff7f7f7fffffffffffffffffff7f7f7fffffff7f7f7fffffffffffff7f7f7fffffffffffffffffffffffff7f7f7ff ffffffffffffffffefefeffffffff7f7f7fffffffffffff7f7f7ffffffefefeffffffff7f7f7ffffff0000000808081010100000001010100000000000000000 00000000080808000000000000080808000000080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000080808080808080808000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f7fffffff7f7f7ffffffffffff0000000808081010100000000000000000000000000000000000000000000000000000000000000000000808 08181818000000101010000000fffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff 000000080808080808080808000000ffffffe7e7e7ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080808080000000000000808080000000000 00000000080808080808000000080808000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000000000080808181818000000101010000000e7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7 f7f7f7f7f7ffffffffffffffffffffffff0000001818181010100000000808080000000000000000000000000000000000000000000000000000000000000000 00000000080808000000080808000000fffffffffffffffffff7f7f7ffffffffffffefefeffffffffffffffffffff7f7f7ffffffe7e7e7fffffff7f7f7000000 101010000000080808000000fffffffffffffffffff7f7f7efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808081818180000001818180000 00000000000000101010080808101010080808000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000101010101010000000000000000000101010fffffff7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffff fffffffffff7f7f7efefefffffff1818180808082929290000002121210000000000000808080000000000000000000000000000000000000000000000000808 08000000080808000000080808000000000000f7f7f7ffffffffffffefefeffffffffffffff7f7f7ffffffffffffffffffefefefffffffffffff000000000000 181818101010080808fffffff7f7f7ffffffefefefffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7ffffffffffff0000000000000808 08080808080808080808000000000000181818101010080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000000000080808101010181818080808000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7f7f7efefefffffffffffff0000000808080000001010100000001010101010101010100000000000000000000000000000000000000000000000000000 00000000080808080808080808000000212121101010ffffffffffffffffffffffffdededeffffffefefefffffffefefefffffffffffff000000080808101010 000000000000000000efefeffffffff7f7f7ffffffefefeff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7fffffff7f7f7ffffff0808 08000000000000080808101010101010101010000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000101010000000080808000000080808101010000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7 f7f7ffffffffffffefefef0000002121210000000808080000002121211818180000001818180000000000000000000000000000000000000000000000000808 08080808000000080808212121080808000000000000080808fffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff000000101010181818 000000212121080808ffffffffffffe7e7e7fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffefefefffffffefefef1010 10101010080808000000080808000000080808181818080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000000000080808000000080808000000080808212121080808ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffff ffffefefefffffffffffff0000000000001818181010101010101010100000001010100000000000000000000000000000000000000000000000000000000000 00080808101010000000000000080808101010080808000000fffffffffffff7f7f7fffffff7f7f7efefefffffffffffffffffff101010101010080808000000 000000000000f7f7f7efefefefefeffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7fffffff7f7f7fffffff7f7f7f7f7f7f7f7f7ffffff0000 00181818000000080808080808080808000000101010000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000080808000000181818000000181818101010000000101010ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ff fffffffffff7f7f7ffffff0000001818180000000000000808080000000808080000001010100000000000000000000000000000000000000000000000002121 21000000101010181818101010000000000000101010080808000000ffffffffffffdededefffffff7f7f7fffffffffffff7f7f7080808000000080808080808 000000181818fffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7ffffffffffffefefeff7f7f7ffff ffefefef181818000000080808080808080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000080808000000101010000000080808ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 f7f7fffffffffffff7f7f70808080000001010100000001010100000000000001010100000000000000000000000000000000000000000000000000000000000 00212121080808000000181818080808000000000000000000080808f7f7f7ffffffffffffe7e7e7fffffffffffff7f7f7ffffff000000080808000000080808 101010000000fffffffffffff7f7f7fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffffffffff7f7f7fffffffffffff7f7 f7ffffff000000000000080808000000080808080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000212121000000101010000000000000000000000000000000000000000000000000fffffffffffffffffff7 f7f7fffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000181818000000101010000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffff7 f7f7efefeff7f7f7ffffff0000000000000808080808080000000000000808080000000808080808081010101010100000001010100808080000001818180000 00181818080808000000101010181818000000080808080808080808fffffff7f7f7fffffffffffff7f7f7ffffffffffffffffff000000080808080808080808 080808000000fffffffffffffffffff7f7f7ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffefefefffffffffffffffffffffff ffffffff080808000000080808000000101010000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7f7f7f7ffffff000000000000101010000000000000000000000000000000000000000000000000000000000000000000f7f7f7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000080808000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7f7 f7f7ffffffffffffe7e7e71818180000000808080000001010101818181818180000000808080000000000000000001818180000000000001010100000001818 18000000101010181818000000000000000000101010080808000000080808ffffffffffffffffffffffffe7e7e7fffffff7f7f7000000000000313131000000 000000080808fffffff7f7f7ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7fffffff7f7f7efefeff7f7f7fffffffffffff7f7f7efef ef101010000000101010000000000000101010101010000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7f7f7ffffff101010080808000000000000000000000000000000000000000000000000000000181818000000080808ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000101010101010000000000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 f7f7fffffff7f7f7ffffffe7e7e7080808000000101010000000000000000000212121000000000000ffffffffffffdededeffffffffffffffffffffffffefef ef080808000000000000000000080808101010000000080808080808000000ffffffffffffefefefffffffffffffffffff101010101010000000000000080808 181818000000ffffffffffffefefeffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7ffffffffff ff000000393939181818080808080808000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefeffffffff7f7f7fffffff7f7f7ffffff00000008080800000000000000000000000000000000000000000000000000000008080800000000 0000f7f7f7efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808080808000000000000000000212121000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7f7f7ffffffffffffffffff000000101010212121181818000000000000fffffff7f7f7e7e7e7ffffffffffffefefeffffffff7f7f7ffff ff000000080808000000000000000000080808000000000000080808212121f7f7f7f7f7f7ffffffffffffffffffffffff000000000000080808080808000000 101010000000ffffffffffffffffffffffffdededeffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffff ff080808000000101010000000101010080808080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffdededefffffffffffffffffff7f7f718181808080800000000000000000000000000000000000000000000000000000008080808080808 0808080808fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000101010080808101010000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffff ffffffffffffffffefefefe7e7e7ffffffffffffffffffffffff000000fffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffefef ef000000181818080808101010000000000000080808000000080808000000fffffffffffff7f7f7fffffff7f7f7ffffff212121101010000000212121000000 000000080808080808fffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffe7e7e7f7f7f70000 00212121181818080808101010101010000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7efefeffffffff7f7f7fffffff7f7f700000000000000000000000000000000000000000000000000000008080808080800000000 0000000000101010000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7080808000000000000000000101010000000000000000000000000000000ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffff ffffefefeffffffffffffffffffff7f7f7efefeffffffff7f7f7fffffffffffffffffff7f7f7ffffffefefeff7f7f7fffffff7f7f7ffffffffffffffffffffff ff101010080808000000101010080808000000000000000000101010000000fffffff7f7f7f7f7f7ffffffffffffffffff000000101010080808000000101010 000000080808000000fffffffffffff7f7f7fffffff7f7f7efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010101818 18000000000000101010000000000000080808080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7f7f7f7fffffffffffffffffff7f7f7ffffffffffff00000000000000000000000000000000000000000000000008080800000018181800 00000808080000000808080808080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000181818000000101010080808000000101010101010000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffefefeffffffffffffffffffffffffff7f7f7e7e7e7fffffff7f7f7ffffffefefeffffffffffffff7f7f7f7f7f7fffffff7f7f7efef ef000000080808000000101010000000080808000000101010000000101010e7e7e7ffffffffffffffffffefefefffffff212121080808080808101010000000 101010000000080808000000ffffffffffffdededefffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 00101010181818000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffffffffffefefefffffffe7e7e7ffffff00000000000000000000000000000000000000000000000000000010101000000010 10100000000808080000000000000000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000 00080808000000080808000000080808000000080808080808000000000000080808000000101010000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f7fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffe7e7e7f7f7f7fffffff7f7f7ffffffffffffffff ff101010000000080808000000000000080808000000000000080808080808fffffff7f7f7ffffffffffffffffffffffff000000101010000000000000181818 000000080808000000080808f7f7f7ffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffff7f7f7ffffff0000000000000808080000 00080808000000101010000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10101000000000000010101008080800000010101008080800000000000000 00000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808 08000000000000000000080808000000000000000000000000000000080808080808000000080808000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000080808ffffffffffffffffffffffffffffffffffff101010000000000000000000080808 000000080808080808080808000000ffffffffffffffffffffffffefefeffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff0808080808080808080000000000 00181818080808000000101010181818000000080808080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000008080808080800000010101000000008080800000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000101010080808101010080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000000000fffffffffffffffffffffffffffffff7f7f7000000101010101010000000000000 212121000000000000000000181818101010fffffffffffff7f7f7fffffffffffffffffffffffffffffff7f7f7efefeff7f7f7ffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7ffffffefefeffffffffffffffffffff7f7f7ffffffefefefffffff0000001010101010100000000000001010101818 18000000101010181818000000000000000000101010000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7ffffff00000018181800000008080808080808080800000008080800 00000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808 08000000080808000000080808000000080808000000080808080808080808080808000000000000181818101010000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000080808ffffffffffffffffffffffffffffffffffffffffff000000101010000000000000 181818000000000000101010000000080808000000fffffffffffff7f7f7ffffffefefeffffffff7f7f7f7f7f7ffffffffffffe7e7e7ffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7ffffffffffffffffffefefefffffffffffff000000080808181818101010000000080808181818000000080808efef ef080808000000000000000000080808101010000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff00000010101010101000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000080808000000000000080808101010101010101010000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffe7e7e7ffffffffffff000000101010101010 000000000000000000101010000000101010000000000000fffffffffffff7f7f7ffffffe7e7e7fffffffffffffffffff7f7f7ffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffff000000101010181818000000212121000000000000080808000000ffffffffff ff000000080808000000000000000000080808000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffff00000010101008080800000008080800 00000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808 08000000080808000000080808000000080808000000101010101010080808000000080808000000080808181818000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000080808fffffffffffffffffffffffffffffff7f7f7ffffffffffff101010000000080808 181818080808101010000000212121000000181818080808101010000000000000fffffffffffffffffff7f7f7fffffff7f7f7f7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000101010101010101010212121000000080808181818080808101010181818000000ffffffe7e7e7efef ef000000181818080808101010000000000000080808080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffff00000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000181818000000080808080808080808000000101010000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff080808101010 000000000000080808080808000000292929080808000000080808080808080808000000ffffffefefefffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff080808000000181818000000080808080808000000181818000000000000000000181818000000ffffffffffffffffffffff ff101010080808000000101010080808000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7f7f7f7efefefffffffefefefffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818000000080808080808080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000080808fffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7f7f7080808 08080800000000000018181821212100000018181810101010101000000000000021212100000010101010101000000000000000000000000000000000000000 0000000000000000000000000000080808181818000000101010101010080808000000080808101010181818080808ffffffffffffffffffffffffe7e7e7efef ef000000080808000000101010000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff000000000000080808000000080808080808000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffff7f7f7fffffff7f7f7ffffffffffff000000 10101000000010101000000008080818181808080808080800000008080808080818181800000010101000000008080818181808080800000008080800000008 0808000000080808000000080808000000101010000000080808000000000000080808000000000000000000fffffffffffff7f7f7ffffffffffffffffffffff ff101010000000080808000000000000080808000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000080808fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffff 00000008080800000000000008080800000000000008080800000000000000000021212100000010101008080810101000000000000000000000000010101000 0000181818000000212121000000080808080808000000000000101010000000212121080808080808efefeffffffff7f7f7ffffffefefefffffffefefefffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7e7e7e7 ffffff00000000000008080800000008080800000018181800000008080808080800000010101010101000000010101000000008080800000000000010101000 0000080808101010000000080808080808000000080808000000101010101010080808000000e7e7e7fffffff7f7f7ffffffffffffefefefffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffdedede ffffffefefefffffff00000008080821212108080800000008080810101018181800000018181808080800000008080818181810101010101018181810101000 0000101010181818000000101010101010181818080808000000080808000000ffffffffffffffffffefefeffffffffffffffffffffffffffffffff7f7f7ffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffff7f7f7f7f7f7efefeffffffff7f7f7ffffff f7f7f7fffffff7f7f7ffffff08080800000000000010101000000000000000000000000000000010101008080808080808080800000000000010101000000008 0808080808000000000000000000101010000000080808000000fffffffffffffffffff7f7f7f7f7f7f7f7f7ffffffffffffefefefffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000080808fffffffffffffffffffffffffffffff7f7f7ffffffefefefe7e7e7ffffffffffff ffffffe7e7e7ffffffe7e7e7f7f7f7f7f7f7f7f7f7ffffff00000008080808080818181810101008080800000018181800000029292931313100000018181800 0000080808080808181818080808101010000000ffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffff7f7f7ffffffefefefefefeff7f7f7 efefefffffffe7e7e7ffffffffffffffffffffffffe7e7e7fffffffffffffffffff7f7f700000008080810101000000021212100000000000021212100000010 1010000000000000f7f7f7ffffffffffffffffffefefefefefefffffffffffffefefefffffffe7e7e7ffffffe7e7e7fffffffffffff7f7f7f7f7f7ffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000080808fffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffff ffffffefefeffffffffffffffffffff7f7f7f7f7f7ffffffefefefffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffdededeffffffff fffffffffffffffffffffffffffffffffffffffff7f7f7ffffffefefeffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7ffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7f7f7ffffff f7f7f7ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffefefefffffffffffffefefefffffffffffffffffffffffffefefefff fffffffffff7f7f7fffffffffffffffffff7f7f7fffffffffffff7f7f7fffffffffffffffffffffffff7f7f7fffffffffffffffffffffffffffffff7f7f7ffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000080808000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000080808000000080808000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000000000080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000008 0808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808ffffffffffffefefeffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7080808000000080808080808101010000000080808000000080808080808ffffffffffff fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000101010000000000000000000101010000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000101010000000000000000000000000101010fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000008080808080810101008080800 0000080808080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7 f7f7ffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000080808fffffff7f7f7ffffffefefefefefeffffffffffffff7f7f7fffffffffffff7f7f7ffffffe7e7e7 f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefefffffff000000080808000000000000080808101010000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808080808000000000000101010080808000000000000101010000000fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808080808000000000000101010080808000000101010000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff00000008080800000008080808080800000008 0808080808000000fffffff7f7f7fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7fffffffffffffffffff7f7f7e7e7e7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7 f7f7f7f7f7ffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffd6d6d6ffffffffffffefefefefefeffffffffffffffffffff7f7f7ffffffffffff f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000080808101010000000080808000000000000000000101010000000fffffff7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000101010181818080808080808000000080808181818101010000000fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000101010181818080808080808000000080808080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffff00000018181818181800000000000008080808 0808080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7efefefff fffff7f7f7f7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffefefeffffffffffffffffffffffffff7f7f7ffffffffffff efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7080808000000000000000000000000080808080808000000000000181818f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff181818000000080808080808101010000000080808000000080808080808fffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff181818000000080808080808101010000000080808080808101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10101000000000000008080808080800000000 0000000000101010f7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefefffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef efefffffff0808080000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000000 00000000000000000000000000000000000000000000080808080808080808000000080808080808000000efefefffffffffffffffffffffffff080808000000 18181800000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000 00000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808 08000000000000000000080808000000000000000000080808181818000000080808181818080808080808000000000000080808101010000000101010000000 00000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000 00000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000000 00000000181818080808080808000000080808000000212121101010000000101010000000080808080808000000080808000000000000000000080808000000 00000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000 00000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000000 00000000181818080808080808000000080808000000101010000000181818000000000000000000080808080808080808000000000000000000080808000000 00000000000008080800000000000000000008080800000000000000000000000008080808080800000018181800000010101018181800000008080808080810 1010101010000000181818000000080808000000000000000000080808000000000000000000080808000000000000181818101010000000101010101010ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefffffffff fffff7f7f70000000808080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000080808000000080808080808000000fffffff7f7f7ffffffffffffffffff080808000000080808 18181818181800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000101010080808000000000000080808080808080808000000000000101010000000101010 08080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00212121080808000000080808101010080808000000000000000000101010000000000000101010080808000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00212121080808000000080808101010080808000000080808181818000000080808000000080808000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000010101008080800000000000010101000000000000008080808080800000008 0808000000101010000000080808000000000000000000000000000000000000000000000000080808080808000000080808000000080808181818080808ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ff ffff1010100000001010100808080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000080808000000101010000000ffffffffffffe7e7e7ffffffffffff000000080808101010 00000010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000181818080808080808000000080808080808080808000000080808080808080808080808000000000000 08080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000080808101010101010000000000000080808101010000000080808080808080808000000080808101010000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000080808101010101010000000000000080808080808080808080808080808000000000000080808080808000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000010101000000000000008080808080808080808080810101000000000000008080808 0808000000080808080808101010000000000000000000000000000000000000000000000000000000080808181818000000101010101010000000181818ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7 f7f70000000808080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000080808000000101010000000fffffffffffffffffffffffff7f7f7000000080808000000080808 08080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000181818000000000000080808000000000000101010000000080808000000000000080808080808 00000008080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808 08000000101010080808000000101010000000080808000000101010000000101010080808000000080808000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808 08000000101010080808000000101010000000080808101010000000080808080808000000080808080808000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000008080800000008080808080800000008080800000008080800000000000008 0808000000000000181818000000000000000000000000000000000000000000000000000000101010000000101010000000080808080808101010ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000001010100000000000000808080000000808080000000808080000000808080000000000000808081010100000001010100808080000000808081010 10000000101010000000080808000000101010000000101010080808080808000000000000ffffffffffffffffffffffffffffff181818080808000000000000 18181808080808080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800 00000808080000000808080000000808080000000808080000000808080000000808080000002121210000001010102121210000000000000808080808080808 08000000080808000000080808101010000000080808080808000000080808000000080808000000080808000000080808000000080808000000080808000000 08080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800 00000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808 08000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000 08080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800 00000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808 08000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000 08080800000008080800000008080800000008080800000008080800000000000008080800000010101008080800000008080800000000000000000010101000 0000181818000000101010000000080808000000080808000000080808000000080808000000181818080808000000000000000000000000080808f7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffefefef29 29291010100808080000001010100000000000000000000000000000000000000000000000000000000808080000000000000000001010101818180000000000 00080808000000181818000000080808212121000000000000080808080808080808ffffffffffffefefeff7f7f7ffffff080808000000101010101010181818 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000002121210808080000000000001010100808080000000000 00101010080808000000000000080808000000101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000008080808080800000008080800000010101008080808080808080800000000000010 1010080808101010000000080808000000000000000000000000000000000000000000000000000000181818101010000000101010101010ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10101000 00000000001010101818180000000000000000000808080000000000000000000808080000000808080000000808082121211010100000001010100000000000 00000000101010080808080808080808000000080808181818000000080808000000efefefefefefffffffffffffffffff080808101010000000080808000000 10101010101000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800 00000000000000000808080000000000000000000808080000000000000000000808080000001818180808080000001818181010100808080000000808081010 10101010f7f7f7ffffffffffff080808181818000000000000000000080808000000000000000000080808000000000000000000080808000000000000000000 08080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800 00000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000 00000000080808000000000000000000080808000000000000000000080808000000000000000000080808000000000000000000080808000000000000000000 08080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800000000000000000008080800 00000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000000000000808080000000000 00000000080808000000000000000000080808000000000000000000080808000000000000000000080808000000000000000000080808000000000000000000 08080800000000000000000008080800000000000000000008080800000008080800000018181808080800000000000000000000000010101000000008080800 0000000000080808080808000000000000000000080808000000000000000000080808000000080808181818000000101010080808000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e718181800 00001010100808080000000000000000000808080000000808080000000808080000000808080000000000000000000808080000000000000000001010100808 08080808080808000000080808101010000000080808080808101010000000fffffffffffffffffff7f7f7ffffff000000080808000000080808101010080808 10101000000000000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008 08080000000808080000000808080000000808080000000808080000000808080000000808080000000000001010100808080000000808081010101010100000 00f7f7f7ffffffffffffffffff000000000000181818000000080808000000080808000000080808000000080808000000080808000000080808000000080808 00000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008 08080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000 00080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808 00000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008080800000008 08080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000000808080000 00080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808000000080808 00000008080800000008080800000008080800000008080800000008080821212108080800000000000000000010101008080808080800000000000010101000 0000000000080808101010080808000000080808000000080808000000080808000000080808000000000000080808101010000000fffffff7f7f7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000018 18180000000000000808080000000000000000000000000000000000000000000000000000000808081010101818180000001010101818180000000000000000 00080808080808181818080808000000080808000000000000000000f7f7f7ffffffefefefffffffffffff080808080808000000101010080808000000080808 08080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000080808080808000000101010101010181818000000000000ffff ffffffffffffffefefefffffff181818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000008080808080800000008080800000000000000000029292908080800000018 1818000000000000080808000000000000000000000000000000000000000000000000000000000000080808000000000000f7f7f7f7f7f7fffffff7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffef efeffffffff7f7f7efefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffefefefffffff1010 10080808000000101010000000080808080808fffffffffffff7f7f7ffffffffffffffffffe7e7e7fffffff7f7f7ffffffefefefffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffff1010100000 00000000000000101010fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffefefefffffff000000000000181818ff fffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7 f7f7ffffffffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefeffffffffffffff7f7f7ffffffefefef0000 00000000181818181818101010000000080808ffffffefefefefefeffffffff7f7f7efefeffffffffffffffffffff7f7f7fffffffffffff7f7f7ffffffefefef ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000808080808 08000000292929000000ffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818000000292929181818000000ff fffff7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefefffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffef efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffe7e7e7fffffff7f7f7ffffffefefef0808080808 08101010000000000000080808101010fffffffffffffffffffffffff7f7f7fffffffffffff7f7f7ffffffefefeff7f7f7fffffff7f7f7fffffff7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefefffffffefefefffffff0000000000000000000000 00101010000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7fffffff7f7f7ffffffffffff000000101010000000181818000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdededefffffffffffffffffffffffffffffff7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00101010080808000000101010000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffe7e7e7fffffff7f7f7fffffffffffffffffffffffff7f7f7ffffff0808080808080000000000001010 10000000000000fffffff7f7f7ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7fffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7ffffffffffff080808080808000000080808000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001818 18080808080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7ffffffefefeff7f7f7f7f7f7fffffff7f7f7efefeff7f7f7ffffffffffff0000000000000000000808080808080000 00000000fffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7f7f7f7f7f7f7ffffffffffffffffffdededeffffffffffffffffff000000000000101010101010000000ffffffe7e7e7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000808 08000000181818101010000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffe7e7e7fffffffffffffffffff7f7f7fffffffffffff7f7f70000001010100000002121212121211818180000001818 18ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffffffffffffffffefefefffffffe7e7e7ffffffefefefffffff000000080808212121000000080808f7f7f7f7f7f7e7e7e7ff ffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000808 08000000000000101010101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7f7f7f7ffffffefefefffffffffffffefefefefefef101010000000080808212121000000181818000000181818f7f7 f7e7e7e7fffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff080808080808000000181818000000fffffffffffffffffffffffff7 f7f7fffffff7f7f7efefeff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001010 10000000101010080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff181818080808080808000000080808101010000000181818ffffffffff ffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffefefeffffffffffffff7f7f7f7f7f7f7f7f7ffffff000000000000313131000000101010ffffffefefefffffffffffffff ffffe7e7e7e7e7e7ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00000000101010101010000000ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7101010000000000000000000181818212121000000fffffffffffffffffff7f7 f7efefefffffffffffffffffffefefeff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffffffffffffffffffffffffffffefefefffffffffffff000000181818292929000000101010fffffff7f7f7ffffffefefefefefeff7 f7f7efefeffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001818 18000000000000080808212121f7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7f7f7101010101010000000080808000000000000101010101010fffffffffffffffffff7f7 f7fffffffffffff7f7f7efefeff7f7f7ffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefeffffffffffffff7f7f7ffffffefefef000000080808080808000000101010000000ffffffffffffefefeffffffffffffff7 f7f7fffffff7f7f7ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00000000080808101010000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000101010000000181818000000080808080808000000fffffffffffffffffff7f7f7ffff ffffffffffffffefefeffffffff7f7f7dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefefffffffe7e7e7fffffff7f7f7ffffffefefef080808080808000000000000181818101010000000fffffff7f7f7fffffffffffffffffff7 f7f7ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffff0000000000000000 00080808181818000000080808efefeffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7f7f7ffffffffffffffffffffffff000000080808080808080808000000101010000000000000fffffff7f7f7ffffffefefefffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7fffffffffffff7f7f7ffffff080808000000080808000000101010000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffefefeffffffffffffff7f7f72929290000000808 08000000000000000000000000fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffefefeff7f7f7ffffffffffffffffffffffff000000181818080808000000000000101010000000000000fffffffffffffffffff7f7f7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffdededeffffffffffffffffffffffffffffff000000181818181818000000000000fffffffffffffffffffffffff7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffff0000000000000000 00101010181818080808181818000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdededeffffffff ffffffffffffffffffffffffffffffffff000000181818000000000000080808181818000000181818ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffffe7e7e7ffffffffffff000000000000101010000000080808ffffffe7e7e7fffffff7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefefffffffffffffffffff1818180000001010 10000000080808101010000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7fffffff7f7f7ff fffff7f7f7ffffffffffff000000000000000000101010181818101010080808181818000000f7f7f7e7e7e7fffffffffffffffffff7f7f7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7fffffff7f7f7ffffffffffff080808000000292929000000101010000000fffffff7f7f7ffffffffffffefefefffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7ffffffffffff0000000808081010 10080808000000080808080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7e7e7e7fffffff7 f7f7fffffff7f7f7000000101010000000080808000000000000080808000000ffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffffffffffffffffffffff000000212121000000101010000000080808ffffffffffffe7e7e7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7f7f7f7ffffff1010100808080000 00080808080808000000000000000000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000080808000000101010101010000000181818080808fffffffffffff7f7f7f7f7f7f7f7f7efefefffffffffffffffffffefefeff7f7f7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffffffffff000000101010080808080808080808000000080808fffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7fffffffffffff7f7f7f7f7f7f7f7f70000001010 10000000000000080808080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff08080808 0808000000000000212121000000000000181818000000ffffffffffffefefeffffffffffffff7f7f7fffffffffffff7f7f7efefeff7f7f7ffffffe7e7e7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7f7f7f7ffffff000000080808080808000000212121080808080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffff0000000000 00181818000000000000181818000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000008080800 0000000000080808000000080808080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeffffffff7f7f7dededeffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7080808000000080808000000000000000000101010fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7f7f7ffffff0000000808 08080808181818000000101010080808000000101010ffffffe7e7e7fffffff7f7f7ffffffefefeffffffffffffffffffffffffffffffffffffffffffff7f7f7 fffffff7f7f7fffffff7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff00000018181800 0000101010000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffff101010000000101010080808000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7efefefffffffffffff1010100000 00000000080808101010000000000000080808000000f7f7f7fffffff7f7f7efefeffffffffffffffffffff7f7f7f7f7f7ffffffffffffffffffffffffffffff fffffffffffff7f7f7fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000010101000000008 0808080808101010080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7181818000000000000000000181818000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000000808 08101010000000000000080808000000080808080808000000fffffffffffffffffff7f7f7f7f7f7e7e7e7fffffffffffffffffff7f7f7f7f7f7ffffffffffff fffffff7f7f7fffffffffffff7f7f7f7f7f7fffffff7f7f7fffffff7f7f7ffffffffffffffffffffffff10101008080810101000000000000000000008080818 1818000000000000fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffff181818101010080808101010181818000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7f7f7fffffffffffff7f7f70000 00000000101010000000000000080808000000000000080808000000181818fffffffffffffffffffffffffffffff7f7f7fffffffffffff7f7f7fffffff7f7f7 fffffffffffff7f7f7fffffffffffff7f7f7ffffffffffffe7e7e7efefefffffffffffffffffffffffff00000010101000000008080808080810101010101000 0000fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7000000000000080808101010000000080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefeff7f7f7fffffffffffff7f7f7f7f7f7efefefffff ff000000000000101010101010080808101010212121181818101010000000080808ffffffffffffffffffefefeffffffff7f7f7fffffffffffffffffff7f7f7 fffffff7f7f7fffffff7f7f7fffffffffffff7f7f7fffffffffffffffffff7f7f7ffffff101010000000292929000000212121101010080808000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff212121080808101010000000000000101010080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7f7f7f7f7f7f7ffffffffff ff080808101010000000101010080808000000101010000000080808101010000000fffffffffffffffffffffffffffffff7f7f7efefefffffffefefefffffff ffffffffffffffffffffffffefefeffffffff7f7f7ffffffe7e7e7f7f7f7101010000000000000000000000000080808101010000000000000212121fffffff7 f7f7dededeffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefefffffff000000181818000000080808080808080808000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7ffff ffffffffffffff080808000000101010181818181818212121000000181818000000080808000000000000000000fffffffffffffffffff7f7f7fffffff7f7f7 fffffffffffffffffff7f7f7ffffffffffff181818000000313131000000080808080808101010000000101010000000080808080808ffffffffffffffffffff fffffffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7313131000000101010000000000000080808080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff080808000000000000080808000000080808000000080808101010000000101010101010080808080808000000000000080808f7f7f7ffffff fffffff7f7f7ffffffffffff000000000000000000101010000000101010080808000000080808000000000000000000fffffffffffffffffff7f7f7fffffff7 f7f7e7e7e7fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffff000000212121000000000000101010000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7ffffffffffff000000080808080808000000080808080808000000000000000000080808101010000000080808000000000000000000080808000000 000000000000101010000000080808080808000000101010080808000000000000101010080808000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff181818000000080808000000080808000000000000101010ffffffffffffffffffefefeffffffff7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffe7e7e7fffffffffffff7f7f7ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000000000000000101010000000101010080808080808000000080808000000000000000000000000000000000000 000000000000000000101010080808000000101010080808000000101010080808000000fffffffffffff7f7f7fffffff7f7f7f7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffff080808101010080808000000000000000000080808101010000000fffffff7f7f7ffffffe7e7e7f7f7f7ffffffefefeff7f7f7ff ffffefefefffffffffffffefefeffffffff7f7f7efefeffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f7fffffff7f7f7ffffffffffff080808080808101010101010101010000000000000101010000000080808000000080808000000080808000000 080808000000181818000000101010181818101010000000000000f7f7f7ffffffffffffffffffffffffffffffefefeffffffff7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff101010080808000000000000080808101010181818000000292929fffffff7f7f7f7f7f7ffffffffffffefefefffffffffffffff ffffffffffefefeffffffffffffffffffff7f7f7ffffffffffff000000000000080808000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f7ffffffffffffffffffffffffffffff080808000000000000000000181818101010080808101010000000000000000000000000000000000000 000000000000000000181818080808000000ffffffffffffefefefffffffefefeffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffff000000000000101010080808080808000000000000101010000000ffffffffffffffffffffffffffffffffffffffffffffffffef efeff7f7f7ffffffcececeffffffffffffffffffffffff000000000000181818000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7ffffffdededefffffffffffff7f7f7ffffffffffff080808212121101010101010000000181818000000080808000000080808000000080808000000 080808000000080808000000fffffffffffffffffff7f7f7ffffffffffffffffffdededefffffff7f7f7efefefffffffefefefefefefffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000101010181818000000080808080808080808101010101010000000fffffff7f7f7ffffffffffffffffffffffffffffffff fffff7f7f7fffffffffffffffffffffffffffffff7f7f7000000101010181818000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef efffffffffffffffffffefefefffffffffffffffffffffffffffffffe7e7e7080808000000000000000000000000000000000000000000000000000000000000 000000000000fffffffffffff7f7f7ffffffe7e7e7fffffff7f7f7f7f7f7e7e7e7fffffff7f7f7fffffffffffff7f7f7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefeff7f7f7ffffff000000000000292929080808080808101010000000212121101010000000fffffffffffff7f7f7f7f7f7ffffffe7e7e7ff fffff7f7f7fffffff7f7f7ffffffffffffffffff080808181818000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7f7f7f7ffffffffffffefefeffffffffffffff7f7f7ffffffffffffdededefffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefeffffffff7f7f7ffffffffffffffffffffffffffffffefefeff7f7f7fffffff7f7f7ffffffffffffefefefffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefefffffffffffffffffff212121000000000000080808101010101010101010000000080808000000101010000000ffffffe7e7e7fffffff7 f7f7ffffffffffff101010080808000000181818080808000000080808101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f7fffffffffffffffffffffffffffffff7f7f7ffffffffffffefefefe7e7e7ffffffefefefefefefffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefeffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefeff7f7f7ffffff00000018181808080800000000000008080810101008080810101008080800000018181800000018181800000010 1010000000101010000000080808080808080808000000080808000000fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefefffffffefefefffffff00000008080808080810101000000000000010101008080800000010101000000008080800000000000018 1818080808080808101010000000101010000000212121000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7fffffff7f7f7ffffff00000008080800000010101008080800000010101000000008080810101000000018181800000000 0000000000101010000000181818000000181818000000000000fffffffffffff7f7f7efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff10101010101000000010101010101008080800000008080800000010101000000010101010 1010101010181818000000080808292929000000000000ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7fffffff7f7f7ffffffdededef7f7f7ffffff00000008080808080800000000000000000000000000000008080810101000 0000000000212121000000181818e7e7e7ffffffffffffe7e7e7ffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7ffffffffffffefefefffffffffffffffffffffffffffffff10101010101010101018181808080800000010101029292900000010 1010101010000000000000fffffffffffff7f7f7fffffffffffffffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefefffffffffffffffffffefefeffffffffffffffffffff7f7f7ffffff00000000000000000010101010101000000008080800 0000fffffffffffffffffffffffff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefefffffffffffffefefeff7f7f7fffffffffffff7f7f7efefeff7f7f7ffffffe7e7e7fffffffffffffffffff7f7f7ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffe7e7e7f7f7f7ffffffefefeffffffffffffffffffffffffffffffff7f7f7ffffffefefeffffffffffffffffffff7f7f7fffffff7f7f7ff ffffffffffffffffffffffffffffffffffffffffe7e7e7fffffff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12534745 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5707854 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15541520\charrsid5707854 If}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 in the underlying form we were to place a cursor between the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 and the }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 we would get a split cursor on the surface to indicate that we were after the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 and before the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 . This would look something like: \par }\pard\plain \ltrpar\s81\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5707854 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f314\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11077249\charrsid12534745 {\*\shppict{\pict{\*\picprop\shplid1027{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}} {\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex39\picscaley39\piccropl0\piccropr0\piccropt0\piccropb0 \picw8440\pich5609\picwgoal4785\pichgoal3180\jpegblip\bliptag-595173473{\*\blipuid dc865f9fe6527f560145f6347b3874bb}ffd8ffe000104a46494600010101006000600000ffe1001645786966000049492a0008000000000000000000ffdb004300080606070605080707070909080a0c 140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb0043010909090c0b0c180d0d18 32211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232ffc000110800d4013f03 012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01 020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a 535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6 c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f010003010101010101010101000000000000010203040506070809 0a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e1 25f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a929394959697 98999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c030100 02110311003f00f7fa28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28ae77c57e33d0fc17a7addeb579e5 09370821452f24cca3242a8fc064e141232464500745457ca3ac7c77f19dfea2f3e9d750e976dc84b78608e5c0c920b348a496c100918071d05677fc2edf885f f430ff00e495bfff001ba00fafe8af0bf0c7ed13633c690f89f4d92da72eaa6e6c46f8b058e59918ee50a36f42e4f3c0e057acf87fc51a278aaccdd689aa417a 8bf7c2121e3c9206e43865ced38c819c6471401b745145001451450053bd6bd4b491ac21866b918d91cf31891b919cb056238cff0009f4e3ad70de33f1febbe0 6d221d5353f0ee9b2c12dc2dbaadaeaaecc18ab364eeb7518c21efe95e8b5e3ffb46ff00c93dd3ff00ec2b1ffe8a96803d3741d4ff00b6bc3fa6eabe4f93f6eb 58ae7caddbb66f40db73819c6719c0ad3ae7fc09ff0024f7c35ff60ab5ff00d14b5d050014514500145145001451450014514500145145001451450014514500 62789bc4ba5f847439b56d56e0456f1fcaaabcbcae7a220eec707f224900123e78f13fc7bf13ea1aa39f0fc89a5d823b088185249645e30642e1803c1385c637 6096c0355fe3cebf7ba87c409b479da3fb1e9688b6caab839923477663d492703d30a38ce49dcf837f0b346f12e8771aef88ada7b885e5682d6dc9789085c132 86520b724a8c7036b6727ee806268bf1f3c65a75c6ed464b4d5606742c9340b1b2a83f30468c280483d58363038eb9f7bf04fc41d1bc7b05e4ba525d46f68ea2 68ee630ac0303b586d241076b0eb9f94e40e32fbef875e0dbfb392d65f0be96b1be3261b6585c6083c3a00c3a763cf4e95e6daafc35d7bc19f1034fd7be1de9e f269e5145cd98bd55c8046f8c994f28ea01072c430278c2d007ba514514005145140051451400514514014357d4a2d1f46bed4e7591e1b3b792e2458c02c5514 b103240ce07a8af8cbc63e2ed47c69e219356d45bd63b78b0bfb9877b32c790a3763711b88c9afa8be2ededc587c2bd7e6b693cb91a14849c03949245471cfaa b30f6cf1cd7ce9f09bc3d71e21f891a5242fb23b1956fe67c03b5226047048ce5b6af19c6ece0806803d57c03f022cadb4e9e6f1a5ac179753ec30dbc33c8bf6 6182583323286624e0819036704e6bd774cd0b48d17cdfecad2ac6c3cec799f65b748b7e338ced0338c9ebea6b4e8a00e57c41f0f3c29e28bb179abe8b04f75d e646689df803e66420b6028037671db15e37e26f81fe20f0e6af6b7de04babeba277fcdf688ede6b5f940ff59b9776edcfd00c01839ce6be8ea2803c2fc03f1b 585c0d0bc75e65bea0b39845ebc4b12a9c9cacebc6c2186dc818e7e60bb4b1f74af2ef1dfc16d0fc55f6ad474e1fd9badcbba4f3149f26790e3fd62f38ce0fcc b83962c431e2bccf4df1ff008cfe10eaf278735fb7fed1b48b0638a799bfd5852a86094e7119c2f05481b48c2b6ea00fa768ac4f0cf8974bf176870eada55c09 6de4f9595b8789c75471d98647e60824104edd0015e3ff00b46ffc93dd3ffec2b1ff00e8a96bd82bc7ff0068dff927ba7ffd8563ff00d152d007a07813fe49ef 86bfec156bff00a296ba0ae7fc09ff0024f7c35ff60ab5ff00d14b5d0500145145001451450014514500145145001451450014514500145145007c95f1cac6e2 d7e2a6a32cf1ec8eea282680ee077a08d63278e9f3230e7d3d315eebf04ffe491685ff006f1ffa5125737fb40f8560d4bc2b1788e308975a63aa4ac700c90c8c 171d324ab952012000cfdcd27ecf3ab4537832eb4c92fe37bb86f6578ed5a605d21db1f2a99c84decdc818c93dcd007b2d145140051451400514514005145140 0515e1ff0012be2d78afc11e329f4ab6d3f4a364d14735b493a3b3c8846093b6418f9c38e83a7e2790ff00868df187fd03743ffbf137ff001da00f7ff1dffc93 df12ff00d82aebff0045357cfbfb3ccf143f116ea39658d1e6d36548d59802ede646d85f53b558e07604f6a27fda0fc51756d2dbdc691a04b0ca85248e4b7959 5d48c1041930411c62bcd744d66f3c3fadd96ad60fb2ead2512a64901b1d55b0412a464119e4122803eeca2bcc7e18fc4c9be206997d693a5ad96bb6a8586d05 a2915b215c465f790a701867bafcc376079f6b7f1c7c77e1fd6ef748bfd2b444bab495a27c5bce0363a32e6404a91820e39041a00fa3e8af983fe1a37c61ff00 40dd0ffefc4dff00c768ff00868df187fd03743ffbf137ff001da00fa7eb95f1c78234cf1d688d637ebe55c4596b5ba419781cf71eaa7032bdf1d88047857fc3 46f8c3fe81ba1ffdf89bff008ed1ff000d1be30ffa06e87ff7e26ffe3b4019ba6dd78b7e06f8a19af6c23786ed0a32348c61ba8d5c7cc8ca701c0ce370ca8939 5f9abe96f0cf8974bf176870eada55c096de4f9595b8789c75471d98647e60824104fccbe27f8c9ad78b3439b49d5f46d0e5824e55960943c4e3a3a1f3386193 f990410483b7a3fc42d07c03e0b593c1979753ea97d3c6d77a66afba54b6015c332346b1a924ec19ce480b90318001f4d578ff00ed1bff0024f74fff00b0ac7f fa2a5ae03fe1a37c61ff0040dd0ffefc4dff00c76b63c3be23bbf8e9a83f863c4e905a58dac46fd24d354c72191488c02642e36e256e319c81cfa807b3f813fe 49ef86bfec156bff00a296ba0af9a6ff00e34788fc1fa8dd78634fb3d2a4b2d1a56d3ede4b88a4691a38498d4b959002c428c9000cf6155bfe1a37c61ff40dd0 ff00efc4dffc76803e9fa2be60ff00868df187fd03743ffbf137ff001da3fe1a37c61ff40dd0ff00efc4dffc76803e9fa2be60ff00868df187fd03743ffbf137 ff001da3fe1a37c61ff40dd0ff00efc4dffc76803e9fa2be60ff00868df187fd03743ffbf137ff001da3fe1a37c61ff40dd0ff00efc4dffc76803e9fa2be60ff 00868df187fd03743ffbf137ff001da3fe1a37c61ff40dd0ff00efc4dffc76803e9fa2be60ff00868df187fd03743ffbf137ff001da3fe1a37c61ff40dd0ff00 efc4dffc76803e9fa2be60ff00868df187fd03743ffbf137ff001da3fe1a37c61ff40dd0ff00efc4dffc76803e9fa2be60ff00868df187fd03743ffbf137ff00 1da3fe1a37c61ff40dd0ff00efc4dffc76803e97b8b786eade5b79e28e6825529246ea195d48c1041e08238c57cdbe20f0f49f077e2869fe23b4b191fc386e33 0b64ca515d0acb11c91870ace5371e40192c43622ff868df187fd03743ff00bf137ff1daa1adfc70d7bc45a44fa56aba368971633edf323f2e74ddb5830e5660 47201e0d007d3da56a965ae6976fa96997297367709be3957a30fe60839041e41041c115a15f1f7833e2c6bbe06d1e6d334bb4d3a5825b86b866ba8dd9b71555 c0daea31841dbd6ba2ff00868df187fd03743ffbf137ff001da00fa7e8af0ff873f1c2f3c47e278b45f105a585b7dafe5b59edb31aac98276b87739ddd0639dd 8183bb23dc2800a28a2800a28a280384f893f0e6dfe2169f650bde7d8aeace5678ee3ca32fc8c30c9b7728e48439edb7dcd79d7fc332ff00d4ddff0094dffedb 5f4051401f3fff00c332ff00d4ddff0094dffedb5e015f7fd7c01401f477c2ff0085179a24fa1f8bacfc4a47da6d239a5b336676bc72a02d196128ce32082463 72a9c1c62ba0f885f06ecfc73ae43ab41a9ff66dcf94229f16a251363eeb1c329dc07049272028e31cf63e04ff00927be1affb055aff00e8a5ae82803e7fff00 8665ff00a9bbff0029bffdb68ff8665ffa9bbff29bff00db6be80a2803e7ff00f8665ffa9bbff29bff00db68ff008665ff00a9bbff0029bffdb6be80a2803e7f ff008665ff00a9bbff0029bffdb68ff8665ffa9bbff29bff00db6be80a2803e22f1b786bfe110f175f683f6cfb67d97cbfdff97e5eedd1abfddc9c63763af6ae 83e1af89bfe1053aa78a8da7db76795a6fd9bcdf2b3e76f937efc374fb3e318e77e7231cb7e367fc95dd77feddff00f49e3acdd0b4ad4759f03eb76fa6585d5e ceba958bb476d0b4ac17cabb19214138c9033ee2803d47fe1477fc269ff154ff00c245f62fedbff898fd9bec3e6793e77ef366ff00306ec6ec670338ce051ff0 ccbff5377fe537ff00b6d7b0f832096d7c0de1fb7b88a48668b4db74923914ab2308941041e41078c56fd007cfff00f0ccbff5377fe537ff00b6d1ff000ccbff 005377fe537ffb6d7d0145007cff00ff000ccbff005377fe537ffb6d789ebda67f62f88352d2bcef3bec3752db79bb76efd8e577632719c671935f7657c41e3b ff009285e25ffb0add7fe8d6a00ec7e1d7c21ff84ffc3f71ab0d73ec3e4ddb5b795f64f3738446dd9debfdfc631dabaeff008665ff00a9bbff0029bffdb6ba0f d9cbfe49eea1ff0061593ff45455ec1401f3ff00fc332ffd4ddff94dff00edb47fc332ff00d4ddff0094dffedb5f4051401f3fff00c332ff00d4ddff0094dffe db47fc332ffd4ddff94dff00edb5f4051401f3ff00fc332ffd4ddff94dff00edb5e27af699fd8be20d4b4af3bcefb0dd4b6de6eddbbf6395dd8c9c6719c64d7d d95f1078effe4a17897fec2b75ff00a35a803d07c17f037fe130f08d8ebfff000917d8fed5e67ee3ec5e66ddb2327def30673b73d3bd6f7fc332ff00d4ddff00 94dffedb5e81f04ffe491685ff006f1ffa51257a05007cff00ff000ccbff005377fe537ffb6d723f117e10ff00c201e1fb7d58eb9f6ef3aed6dbcafb27958ca3 b6ecef6fee6318ef5f57578ffed1bff24f74ff00fb0ac7ff00a2a5a00f02f04f86bfe12ff1758e83f6cfb1fdabccfdff0097e66ddb1b3fddc8ce76e3af7af5df f8665ffa9bbff29bff00db6b80f827ff00257742ff00b78ffd2792bebfa00f0483f6719ad6e22b8b7f194914f13878e48f4f2ac8c0e41044b9041e735ef74514 0051451400514514005145140057c015f7fd7c01401f6ff813fe49ef86bfec156bff00a296ba0ae7fc09ff0024f7c35ff60ab5ff00d14b5d050014515e37f103 e3a5a787ef66d2bc3f6a97fa842ed1dc4b701d6282457da536f05cf0dc8200ca905b90003d928af903fe176fc42ffa187ff24adfff008dd1ff000bb7e217fd0c 3ff9256fff00c6e803ebfa2be40ff85dbf10bfe861ff00c92b7ffe3747fc2edf885ff430ff00e495bfff001ba003e367fc95dd77feddff00f49e3aefff00665f f99a7fedd3ff006b57896b5adea1e23d5e7d5b55b8f3ef67dbe64bb15376d50a385000e001c0af6dfd997fe669ff00b74ffdad401f40514514005145140057c4 1e3bff009285e25ffb0add7fe8d6afb7ebe20f1dff00c942f12ffd856ebff46b5007bffece5ff24f750ffb0ac9ff00a2a2af50d5754b2d0f4bb8d4b53b94b6b3 b74df24afd147f3249c000724900649af2ff00d9cbfe49eea1ff0061593ff45455c0fc74f1eff6feb7ff0008d58c99d3b4d90f9f98f697ba5dcad8279daa0951 c0c92dd46d3401d0f88bf68c58ae2eedbc3da3c73a2385b7bdba9582b804658c400383ce3e607a12072b5c3defc72f1e5d5e3cf16a7059c4d822082d23289800 705d59b9ebc93d7d38aa1f0fbe1a6a9f102ea43149f62d320c89af9e3de03e32115723737209e460724f2a0fbbe97f033c1367a65bdbdfe9d26a17689896e9ee 258ccaddced470147603d00c927248078bd97c72f1e5ade24f2ea705e44b92609ed2308f904725155b8ebc11d3d38af45f097ed0ba7de15b7f155a7d825e7fd2 ed159e13f78f29cbaf01471bf2493f28aec3fe1497c3dffa17bff276e3ff008e579ef88bf67368adeeee7c3dac493ba206b7b2ba89433900654ca08193ce3e50 3a02472d401ef56f710dd5bc57104b1cd04aa1e3911832ba9190411c104739af8a3c77ff00250bc4bff615baff00d1ad5def86fc5de32f841a95b693e22b0baf ec4666cdb48aa40ddb4b34120e095c825436dcb303863b879e78aef20d4bc61addfda49e65b5cdfcf344f82372348c54e0f23208eb401f52fc13ff009245a17f dbc7fe94495e815e7ff04ffe491685ff006f1ffa51257a050015e3ff00b46ffc93dd3ffec2b1ff00e8a96bd82bc7ff0068dff927ba7ffd8563ff00d152d00790 7c13ff0092bba17fdbc7fe93c95f5fd7c81f04ff00e4aee85ff6f1ff00a4f257d7f400514514005145140051451401e7df0cfe267fc2c5fed4ff00894ff67fd8 7caff979f377efdffec2e31b3dfad7a0d7cfff00b32ffccd3ff6e9ff00b5abe80a002be00afbfebe00a00fb7fc09ff0024f7c35ff60ab5ff00d14b5d0573fe04 ff00927be1affb055aff00e8a5ae82803cfbe2c78f0f81fc2ffe88f8d62fb7259662deab82bbdce78f9430c673962bc119c7c835efff00b4d7fccadff6f7ff00 b46bc8fc11e1c1e2cf19697a2190247752fef581c111a82efb4e0fcdb55b1918ce33c5007a2fc3df81771af59cb7fe2afb6e976e7296f6c80473b1079760ea76 af0400464f5e001bbd5ffe1497c3dffa17bff276e3ff008e57a051401e7fff000a4be1effd0bdff93b71ff00c728ff008525f0f7fe85effc9db8ff00e395e814 5007c65f14344d3bc3bf11b55d2b4ab7fb3d8c1e4f9716e67dbba1463cb124f249e4d7a6feccbff334ff00dba7fed6ae03e367fc95dd77feddff00f49e3aefff 00665ff99a7fedd3ff006b5007d01451450054d42fadf4dd3ae6feee4f2edada279a57da4ed4504b1c0e4e003d2bc3efbf692857533fd9de1d926b054201b8b9 114aec76e0e1430503e718f9b395395c107da35ed33fb6bc3fa9695e7793f6eb596dbcddbbb66f42bbb1919c6738c8af88f55d2ef743d52e34dd4ed9edaf2ddf 64913f553fc88230411c10411906803ea9b6f8dde009a08a47d66481dd4318a4b39b72123ee9da846474e091e84d7cc1e2bbc8352f186b77f6927996d737f3cd 13e08dc8d2315383c8c823ad62d6df867c35aa78bb5c8749d2adccb7127ccccdc24483abb9eca323f30002480403e87fd9e60961f8757524b1488936a52bc6cc a4075f2e35cafa8dcac323b823b57847c46b2b8b0f891e238aea3f2ddafe5940dc0e52463221e3d5594fb679e6beb8f0bf87adfc2be19d3b44b53ba3b3882193 91e6393977c1271b98b1c678ce0715e13f1efc117d6de207f175b4324ba7dd246976e0e7c8954041918e119420079f9b20e32a0807bb785fc3d6fe15f0ce9da2 5a9dd1d9c410c9c8f31c9cbbe0938dcc58e33c67038adcae73c17e2783c5be14b0d5a19e09669225174b0e408a70a3cc4c1e4609e33d883920827a3a0028a28a 00c4f13786b4bf176873693aadb896de4f995978789c74743d9864fe64104120fc65e25d125f0ef89351d1a6de5ece778833c6632ea0fcafb4f40cb861c9e08e 4d7d6de2df897e18f066e8b52bff0036f571fe856b8926fe1ea320270c1be62b919c66be44d6b5bd43c47abcfab6ab71e7decfb7cc9762a6edaa1470a001c003 81401f56fc13ff009245a17fdbc7fe94495e815e7ff04ffe491685ff006f1ffa51257a050015e3ff00b46ffc93dd3ffec2b1ff00e8a96bd82bc7ff0068dff927 ba7ffd8563ff00d152d007907c13ff0092bba17fdbc7fe93c95f5fd7c81f04ff00e4aee85ff6f1ff00a4f257d7f400514514005145140051451401f3ff00eccb ff00334ffdba7fed6afa02be7ffd997fe669ff00b74ffdad5f4050015f0057dff5f005007dbfe04ff927be1aff00b055affe8a5ae82b9ff027fc93df0d7fd82a d7ff00452d741401e45f1f3c2d3eb7e118758b5591e7d1d99de35c9dd0bed0e70013952a8d9c8014393dabc8fe0a5ed8d97c52d30dec51e664921b795e5f2c45 2b21c1f462c32814f79063902beaed42c6df52d3ae6c2ee3f32dae6278654dc46e460430c8e46413d2be2ad56cefbc15e33b8b68e5916ef49bdfdc4d243b4b14 6cc726c6c8c101580390411d45007dc14564681e22d27c4fa58d4b46be4bbb42c537a82a558750cac0153d0e081c107a115af40051451401f207c6cff92bbaef fdbbff00e93c75dffeccbff334ff00dba7fed6ae03e367fc95dd77feddff00f49e3aefff00665ff99a7fedd3ff006b5007d01451450015e45f197e19c3e24d36 6f10e916b21d76d914bc502826f23180411ddd57904649036e0fcb8f5da2803e13d0f4fb6d535cb3b0bad420d3adee2558deee704a440f738feb81ea54648fb2 bc29e0cd0fc17a7b5a68b67e5093699e6762f24cca300b31fc4e06141270064d787fc6ff0086aba3dc4de2ed2b79b5bbb8cdec04337932b927cc07b231e083d1 980190c02fa2fc1df1faf8bfc36ba7df4f19d674e511c8a646679e2000598eee492786e4f3c9c6e02803d36b3f55d2ecb5cd2ee34dd4ed92e6cee1364913f461 fcc1070411c82011822b428a00f9e62d0fe207c1dd42f6f7478bfb4fc271ca6e67804caf98b2546e040649026d2cc8bb7804e4290376c7f68df0ec9691b5f691 aa417273be384472a2f271862ca4f18fe11e9cf5af69ae16f7e11781350bb92ea6f0e408ef8cadbcb24283000e111828e9d873d7ad0079b6bffb47cc59a3f0ee 891aa07044fa83162cbb791e5a11b4eee8779e074e78e0755f8c5e39d592e227d724b78267dde5da449098c6ec855751bc01d3ef648e093935f40ffc292f87bf f42f7fe4edc7ff001ca9acbe1178134fbb8eea1f0e40ee99c2dc4b24c87208e51d8a9ebdc71d7ad007cbda3f85bc4fe31bc79b4ed36fb5179a47f32e981d864c 6f6df2b7ca18e73f31c9c8ee45636a16371a6ea37361771f97736d2bc32a6e076ba921864707041e95f7a57c41e3bff9285e25ff00b0add7fe8d6a00fa7fe09f fc922d0bfede3ff4a24af40af3ff00827ff248b42ffb78ff00d2892bd02800af1ffda37fe49ee9ff00f6158fff00454b5ec15e3ffb46ff00c93dd3ff00ec2b1f fe8a96803c83e09ffc95dd0bfede3ff49e4afafebe40f827ff00257742ff00b78ffd2792bebfa0028a28a0028a28a0028a28a00f9fff00665ff99a7fedd3ff00 6b57d015f3ff00eccbff00334ffdba7fed6afa02800af802beff00af802803edff00027fc93df0d7fd82ad7ff452d7415cff00813fe49ef86bfec156bffa296b a0a002bc7be3df8386b3e184f1059c3baf74bff5db172d25b93f3670a49d870dc90154c86bd868a00f947e0a78e2dfc25e2796cb506822d3b55d91cb752b15f2 1d036c39e9b4962a738c641c800e7eaeaf9d3e3a7c3bb3d1ededfc49a158476b6c5c437d05ba6d8d09184902a8c20382ac72012538c924f4df00fc6736b3a04f e1dbc68ccfa52a9b676989925858b71b4f384385c8e00641818e403d968a28a00f903e367fc95dd77feddfff0049e3aeff00f665ff0099a7fedd3ff6b5701f1b 3fe4aeebbff6efff00a4f1d77ffb32ff00ccd3ff006e9ffb5a803e80a28a2800a28a2802bdc5bc3756f2dbcf1473412a94923750caea460820f0411c62be61f1 5787f5ff00835e384d7b446d9a54f2b7d99c0668f613936d282727007193f3050c086076fd4d59faae9765ae69771a6ea76c97367709b2489fa30fe60838208e 41008c1140191e0bf1969de36d060d46c5a349ca037168665792ddb2c30c072012a4a920647381d2ba7af9835ff0578a3e0deb83c4fa0dd7da34b49760930495 8db188ee14000a93f2ee1c6403f231515ebbf0e7e29697e37d3a18ae2582cf5d53b25b22f8f34804ef8813965c0248e4ae0e78c3100f42a28a2800a28a2800af 883c77ff00250bc4bff615baff00d1ad5f6fd7c41e3bff009285e25ffb0add7fe8d6a00fa7fe09ff00c922d0bfede3ff004a24af40af3ff827ff00248b42ff00 b78ffd2892bd02800af1ff00da37fe49ee9fff006158ff00f454b5ec15e3ff00b46ffc93dd3ffec2b1ff00e8a96803c83e09ff00c95dd0bfede3ff0049e4afaf ebe40f827ff257742ffb78ff00d2792bebfa0028a28a0028a28a0028a28a00f9ff00f665ff0099a7fedd3ff6b57d015e7be19f85165e0f375fd83e21d72cfed5 b3cee6da4ddb73b7efc0718dcdd3d6bb2d3eca7b2b768a7d52eefdcb9225b9589580c0f947968831c67a6793cf4c006857cf7e29fd9d9a1b733f857519277452 5ad2fca8672031f96450064fca029007525874afa128a00c5f0a59cfa6f83f44b0bb8fcbb9b6b082195320ed758d430c8e0e083d2b6a8a2800a28a2802bdc5bc 3756f2dbcf1473412a94923750caea460820f0411c62bc6f4df81d75a3fc4b4d734bd563b1d1adae12e2da2567927232bbe16fba0210645cee63b70083935ed9 450014514500792fc41f82969e2fd4ef75bb2d4e7b6d5ae3692b300f01d918455c001973b572d96c73f29ecbf073c05aef816f7c430eaf1c0639fecc2de78250 e92ed1216c038618de07cc07b64735eb3450014514500145145001451450057b8b786eade5b79e28e6825529246ea195d48c1041e08238c5785f8fbe08df2eb3 fdbbe06090bef131b1497c968a50c30d0370147f16095dbb7e5272147be51401e1de07f8e464bd5d13c6d0fd86fd6516e2f047e5a02061bcf527f76db87240db f372102e6bd9ac2fed353b28ef2c6ee0bab6933b268241223609070c3838208fc2b98f1cfc39d0fc756a7edd0f93a8a4463b6bf8f3be2e72323203ae7f84ff00 79b0549cd79cf813e18f8c3c0bf12ada413fda3c3ede635ccd6d71b1241b2458c4911209604a9c00c06ee0f5a00f78a28a2800af13f1afc038759bdbdd5743d5 648f50bbb892e258afb0626677dc42b22e500cb750d9e071c9af6ca28038df85fa26a3e1df873a5695aadbfd9efa0f3bcc8b72beddd33b0e54907820f06bb2a2 8a002b99f1a78334ef1d6910e99a9cf7514115c2dc2b5b3aab160acb83b958630e7b7a574d4500783f843e0e6bbe0af8a3a4ea697106a1a445e76fb94c46f1e6 0651ba327bb3606d2dd32715ef145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140 05145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140 05145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140 0514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451401fffd9}}{\nonshppict{\pict\picscalex39\picscaley39\piccropl0\piccropr0\piccropt0\piccropb0 \picw8440\pich5609\picwgoal4785\pichgoal3180\wmetafile8\bliptag-595173473\blipupi96{\*\blipuid dc865f9fe6527f560145f6347b3874bb} 010009000003ca8600000000a186000000000400000003010800050000000b0200000000050000000c02d5004001030000001e00040000000701040004000000 07010400a1860000410b2000cc00d4003f0100000000d4003f0100000000280000003f010000d400000001000800000000000000000000000000000000000000 00000000000000000000ffffff00fbfbfb00f2f2f200f9f9f900f5f5f500f6f6f600ececec00efefef00fefefe00f4f4f400f0f0f000fafafa00fcfcfc00e4e4 e400f8f8f800fdfdfd00f7f7f700e5e5e500e9e9e900e8e8e800ededed00e3e3e300d3d3d300eeeeee00e6e6e600f1f1f1000c0c0c0008080800f3f3f3000707 07000a0a0a00181818000505050001010100040404001e1e1e000d0d0d000909090013131300030303001212120002020200eaeaea00dedede000b0b0b001414 1400e7e7e7000e0e0e00060606001010100011111100212121000f0f0f001a1a1a0017171700dcdcdc00ebebeb00e2e2e20016161600dbdbdb00cecece001515 1500202020002727270026262600e0e0e0002323230019191900dfdfdf001c1c1c00e1e1e10028282800dddddd001b1b1b001d1d1d00242424001f1f1f00d9d9 d90022222200d8d8d8002e2e2e0030303000d4d4d400dadada00d7d7d700d5d5d500d2d2d2000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010110010d010d01020108010d0e01040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010c0101010a012b010101050102011d01010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101110d1d0b010104010d050310100101100101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010d10030f020401010d04011505010912010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101011101010d01110a01010c1002030106060101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010a0101151d010b0101010021264201010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101060a190505010411021a1001010202010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101100b101501181101132d22002d22040c010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101180110090101010b012b01190101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010d0108150101004a001c350000010f010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101012a2a000022000000221f00012b0157010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010111010c010110212500261f0030001001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101011e0000272f01011110011a10090101420101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010c012b15320000004a00002900371801010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101001c1c00010a0501050201012b0109010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101011101002a222a1c001f001f0107010a010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101000000000101090901010101010101010101010101010101090903020118010201151001112b010c0101 010101010101010101010101010101010101010101010b04090401100b0101050101020d0c1001010101010101010101010101010101010801020d1001020401 1901010a010d0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010b04090401100b010201 0411020101090a35003500003b00221e02090106010601010101010101010101010101010101010101010101010109080102010101020c010110010a01010101 01010101010101010101010101011101080103010f0d0409010f0111021001010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010000000001010909010101010101010101010101010101011001030f0c10011d0e011839020101060101 01010101010101010101010101010101010101010101010106050f0101040f0101080d010c01010101010101010101010101010101010301150105012b100115 010102011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010106050f0101040c13 0101020e010f26282d1c2a2200011050010b110f01090101010101010101010101010101010101010101010101010101110108070c01010e011a0d010f1d0101 01010101010101010101010101010404010901030f01011004010c01011101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010000000001010909010101010101010101010101010101010d3c01013c100d224605010101111a010101 010101010101010101010101010101010101010101010104110109390c2b0a1101010401490101010101010101010101010101010101010c010d0138010f0d01 000001180d130101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104110109390c2b0105 011203010031000031000023010d0901040901010202010101010101010101010101010101010101010101010101040605130109010a00350601010115010101 0101010101010101010101010101101001030109090102010a042d00010b01010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010000000001010909010101010101010101010101010101010d010a0101001b2a00010410010106010101 01010101010101010101010101010101010101010101010f11090c06010109010000000102010101010101010101010101010101010101390102560101283000 00212f010901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010f11090c0601010a07 0d0100003200351f0000010d19015510080101040c01010101010101010101010101010101010101010101010101100101042f0600002121010d11090f010101 0101010101010101010101010101090106031d011815010b2d000022010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010000000001010909010101010101010101010101010101010113041c262526003b0115020f0101040101 0101010101010101010101010101010101010101010104010114040108060108002d0021001301010101010101010101010101010101010d0301012200220027 28000105180601010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104010114040108060401 01001e26282100002a01151401090101091104040902010101010101010101010101010101010101010101010101011d1d014a003e2d28001d0d010110120101 01010101010101010101010101010d010804011a0401313300220022391101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010000000001010909010101010101010101010101010101012800330000003225001d0c01050c01100101 010101010101010101010101010101010101010101010f020110010f2b010521002827001c010101010101010101010101010101010102102322003231283300 1c0004010c0d0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010f020110010f2b01012b 210037003127000101010801130a0d0e010c0101011d0101010101010101010101010101010101010101010101010b001e0032330000282810011a1801090101 01010101010101010101010101010c0a010105350000000000221e2a010501010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101000000000101090901010101010101010101010101010101210000273e000028440d10010f0109020101 0101010101010101010101010101010101010101010101022b01021d01394600352a0026000101010101010101010101010101010101080100002d00001e2800 4a280b0d010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101022b01021d01390929 0021003028000104014501180c01020a01020c0401010101010101010101010101010101010101010101010101010100221e23270025310004010d0101040101 01010101010101010101010101010105101a0d00324a1f4a00282600010c01010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010000000001010909010101010101010101010101010101012200230021001e2a281d010c020105010101 010101010101010101010101010101010101010101010b011401110d151b003300222600010b010101010101010101010101010101011101001c00222100003b 2800010b010c0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010b011401110d151b002d 001b230000010d111001140101060d010f0c01090410010101010101010101010101010101010101010101010101020026002a001b002300010118011a010101 010101010101010101010101010102010c0901223000002a2a1e221f060101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101010101010101010d010d0801091f001e003000000a0201010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010101010101010101011a01091d040a01011101040a0131003100 221e0000010a010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101010101010101010110010301000033001e002101010804010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010101010101010101070111010f01010705012b0e010000250000 251b02015501010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010101010101010101010101010101010101111d0302060026002e1e230001390102010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010101010101010101010101010101010103010b05030b010209010a00322d1f281e 000101070c01010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101010101010101011001012b352800000028001f1a050119010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010101010101010101010101010101010b01072f0109012f4701282a2d0027002300 0d0101010f01010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101010101010101010f111301000000003200350106011301010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010101010101010101010101010101010c0306010f010201010000310000311b1e38 01090f190103010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101010101010101010c01010000211e2700260503010f0109010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010101010101010101010101010101010401012f01160c080000002a2130231a0201 020f01011001010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010104011e00482a00003500010c0103100a010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010101010101010101010101010101010d0c0401041401002d352a27000006010a01 0c110f130f01010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010101010101 010101010101010101010101010101010101010101011b00003f00004300280801020c060101010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010101010101010101010101010101010201010602010023001e2200290a01020909 091d01010f01010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101071a010f0a0100310026251e2800230101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010b04090401100b010101011011002100231f00000a0c01090101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010101010101010101010601010f1501002d2a002d0000284a010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010106050f0101040f19010923231c00002201010111040d0101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101100d0c08010100262d3500332900050b0101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010104110109390c2b01050100003e1e00272606011909010d0101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010101010101010101010105010802001c00001c2526001f09010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010f11090c0601010e0100211c2d00480002012c0112012b0101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010101010101010101010910010401251c26003500221c04020b0101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010401011404010806012d00260000260001090110010c15010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101040102052d22001e0031000001021d010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010f020110010f2b0101003000001c330218011d04010501030101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010101010101010101010415010d001b31311e0000302b0102030101010101010101010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010101010101010101022b01021d0139221c00321c000a01012b0401020c01090101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010101010101 010101010101010101010101010110011300301e000000200000090b01010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010b011401110d151b003322002201040d040d012b0d012b010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010d010902010301020201002a3b0000231c2500090c0201130101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010101041002010025312a00002e020d0101010101010101010101 01010101010101010101010101010f100904010902010101010101010101010209010409100f01010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010c0101100401130a001c2d0023222a0028013901020b010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101080f010a01253300001c31310d01060101010101010101010101 0101010101010101010101010101012b02010501012b01010101010101012b01010501022b0101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010101060101150c010101001c0046002a0001020104040101180101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101010101050f010000293f002e050f0d101101010101010101010101 0101010101010101010101010101031a010c1d01070110101010101010100107011d0c011a0301010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010103050901013914012500001e21001f0f102f01010b01010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101014701012a4631002200000d0119010d01010101010101010101 010101010101010101010101010118015406010b0905010101010101010105090b010654011801010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010110010104010d11011e001c2800311e21010901160101010c0101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101011004010023000000001c08011011090801010101010101010101 010101010101010101010101010104060a0118010101020202020202020201010118010a060401010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101110101050d1d013a00233125002336004501030106050d0b0101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010900302836211c250601040b01010901010101010101010101 01010101010101010101010101010101110403013a050101010101010101053a01030411010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101011511110101193b2a001b001c000001011a0203090104010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101012200002621002e00010c0101042f0101010101010101010101 0101010101010101010101010101010425223000441c00000000000000001c4400302225040101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010101010101 01010101010101180110181d0100004300321c1e1c390f020901050102020101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010101010101011a1e282d21003b22010a01011102011d01010101010101010101 0101010101010101010101010101002d00320033001e2a2a2a2a2a2a2a2a1e00330032002d0001010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101080106010131002900352622001001010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101011a01030108030111222100223e002d1f091a0109010101050101010101010101011a 01091d040a0110021a0f01021d31221e22002821001b2a1e0000332a00211c002800283200262829000401010d1001001b332a003300280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010a011801010026003b00210000010901010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010f1502010700003b281e0023000d01011309091a060101010101010101010701 11010f0101070b01110115012830000023301e00350023003e2100231c00282d233100003100003127210000011a134400001c1c2900280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101050a1a01420123222a001e003500010601010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101012b0901010201001f30002a002a251a010209011d0909011501010101010101010103 010b05030b0109090100351e000000221c002d003236271c00303000260000003200333100312900313000293e304b001b281f00001c280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010110011116012d2a0030003300212e150c01010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101010101010101010d010e010f00000029002d261f2a05021801013a010a0101010101010101010b01 072f0109012f0b302a251c00232523350d0108010e11030f211f001e3231293e2a2e001b00332224001e311c0000001c28003100002a280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010f0806020100312a002000002203010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010101010a01112122442e002a2800004b00010c0d010d05010201010101010101010c03 06010f01020101002d1f00003e090c09030701130103030118010100002221222200311e36000030282821003f33372e0000221f2500280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010109010000331f002000223501121001010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010106010f0700000000003500003e1b2a211b010115011a010901010101010101010401 012f01160c08001f4a28232905100153010d07020906010903011006010209001b332a0000272600222a234b00220000212900002600280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010b100b01283322002e0036300000010c01010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101010101010101010102010c1e2222233528002323002d002d0000000d0101110101010101010101010d0c 040104140100212d001c09110101010f090701010501011501011101101501010918100100230021370023003e313b00312a00002100280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010101010101 0101010101010101090b22320027002a0000221b0c0201010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010d01001e28001f2200220000232a1b002a1e1f000d01080101010101010101010201 010602010023002d25011002011003011101091a010c04011101010f1d01110901050114011a01002d30003200222300250023220028280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010909010100000000000022312100010d01010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101020d06010c0b010a020100232600002300000000000000002a3e003200010904100d0111010113010109 09010401001e281e00011201010a0101010101010101010101010101010101010101010101010106231b000031000000311c00260028280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101090901010000000022283e002922140101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010104010111050d01010100373100312128000000000000000000001f0026000109010a0111080101011101 2b040c232e002d000c11011d1a010101010101010101010101010101010101010101010101010d0201112d3e00330000001c21261e00280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010109090101000000002d290000003e0c0501010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101050f02010419023221460020000031000000000000000023002200222a001501010e01010603110115 0401000035251c0103013901011401010101010101010101010101010101010101010101010101011a03090900000031003100003326280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010109090101000000000022333b1c00210101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 00000101090901010101010101010101010101010101100c0101111501010023001e00262521000000000000000028221b221e00341b0d11010d3c010b010b01 0100261b22000013011d012b1d010101010101010101010101010101010101010101010101010439010905010c012300002a351f2d00280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010109090101000000001c2a00000025000101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010d011d0c01012b00200022002027003500000000000000002a1f0023372100002801040409011d0f0402 06001c27004d1e010f190101070101010101010101010101010101010101010101010101010109011d0c012b0118311f1e0000000030280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010909010100000000231c0031001e4d0001010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010105010d01150f012a0035251f35002500000000000000000000313300002829310001010a010315011001 3e2626000000053903010d0f01040101010101010101010101010101010101010101010101012f010a01060a0c01003b00231e28001f280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101090901010000000023002700291b003501010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101111a01010504002700001e001c00270000000000000000200021321c000035220001014e010a020105 2100221e003b01010901110c010501010101010101010101010101010101010101010101010110012b0609012b0501393300211c2200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010109090101010101010101010101010101010100000000000000002a0d010d010101010101 010101010101090901010000000028002822001c000001010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 000001010909010101010101010101010101010101010101091d0d010626001f311b220030000000000000000000004a21003228000000230301011901020601 001f002a29000101060f011a01010101010101010101010101010101010101010101010101010f1001090d1d01010501000031002d1c280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101012100281f0a0c010f0101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101110101010024003000000000000000000d11011d0103010301010101010101010101010101010101010101010101010102010000330030000000 0000010109090101010101010101010101010101010101180110181d010000212200001c001b282d31001c28003700292a001c3e00210023101a010918010601 001f00232100100d011101011301010101010101010101010101010101010101010101010101010e0c01080d010101012a00232a2d00280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010100000000010d01100101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101011a0401210030000000000000000000210005010104010101010101010101010101010101010101010101010101010104013100280000310000 00000101090901010101010101010101010101010101011511110101193b2223222d373e001e00000032000030004a00332e230000261c003110010c0c120c03 00005200001c010a01110801010101010101010101010101010101010101010101010101010114010c081101010b1827001e0000351f280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101012226352801060d010101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101040102080932280000000000000000003e002a010c10010c1010101010101010101010101010101010101010101010100d0d2a00303300220000 00000101090901010101010101010101010101010101110101050d1d013a2300310000004400230c015001011001161f0000001c30002a3100010f1a01010135 1f000026322a01010e010106031101010101010101010101010101010101010101010101010101041801010d150401005130221f0000280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101012100001b1501010a0101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101011d0105011a01003100000000000000000023002a060701020101010101010101010101010101010101010101010101010d011b2800002a360000 0000010109090101010101010101010101010101010110010104010d11010102001c4a3e000001062f010d39010a0100312a0000260023004f1a110d01040900 002231002e000d11010d3c010b0101010101010101010101010101010101010101010101010110050102140c010101000021001c1e23280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010201010a010602010101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010110470101020a37210000000000000000001f3130280139010202020202020202020202020202020202020202020202020c0c00281c221e000000 000001010909010101010101010101010101010101010103050901012b1411010101000108010301010101010d01130029231e000031001e00010d0601060936 1c004400002d2801040409011d0f0101010101010101010101010101010101010101010101010d091d090f012c1d004d332831350000280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101030b0d0601010a0101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010615010f02060000000000000000001f31230028250000010101010101010101010101010101010101010101010101010b2600000029000000 0000010109090101010101010101010101010101010101060101150c0101100b090301010105012f1102030d1009011b21001f21002a00250001041a01010900 33220035231e0001010a0103150101010101010101010101010101010101010101010101010102010901091001294a00001f2a002600280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010f0d0d0d0101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010b0f011010050101000000000000000023003e2a22002126000000000000000000000000000000000000000000000000004a003028001e1b0000 00000101090901010101010101010101010101010101010c010110040113010201010b14010a010a0201060a010a19282a001e00222330001e190f0101130c3f 002821002d00220001014e010a020101010101010101010101010101010101010101010101010101050106010022002d270000280000280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010102010d0601090c010101010101010101010101010101010100000000000000002a0d010d010101010101 010101010101010504011d01130c00000000000000000026001f001e00222a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2100002a002d00000000 000001010909010101010101010101010101010101010d010902010301020601010f010901011401150f010b01010d1b002123001f0022222601040f010d0100 3200003b00210023030101190102010101010101010101010101010101010101010101010101102b0108010022310023003500220000280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010105250022261f003500000000000000000000000000000000000000000000000000000000000000000000311c002600280000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909101025 00000031001e212d00010d04010b010201050d01010201010101010101010d010201100d01010139010d211c282200292a001c3e0021280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101001c310030003100000000000000000000000000000000000000000000000000000000000000000000001c21261e000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909101d00 353028004b00220046250c040501101101010a2b0401010101010101010104011801100106022b01001b3300001b4a00332e23000026280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 01010101010101010101010101010a0b01003b2a00282a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a00310031000033260000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 001b000029000030001f00010206010711060801011410101010101010100a1001091902010000201f00233b001e161f0000001c3000280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010110011d01001c270000000000000000000000000000000000000000000000000000000000000000002300002a351f2d000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909101901 010032300022231b281f00220c011d01390901041101010101010101010101010f100111002535004600002300010100312a00002600280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010111010c0f060f00292323232323232323232323232323232323232323232323232323232323232323311f1e00000000300000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100501 012d002829261f004a0035212d0000010c011a010a1d02020202020202020f010032303244000027282d33220119130029231e000031280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 010101010101010101010101010101010401010202090000000000000000000000000000000000000000000000000000000000000000003b00231e28001f0000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c01090910010c 050f261b00001f2a003f2300212a2d000113020401010101010101010101260036001e00002e2200002700010201011b21001f21002a280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101011d0f1a030b0115010101010101010101010101010101010101010101010101010101010101010101393300211c22000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100105 01041525000000273700301b1e00004b0029262200000000000000000000223700331f1c00211b2000100101012f19282a001e002223280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010101010101 01010101010101010101010101010101010c0110140110101010101010101010101010101010101010101010101010101010101010100501000031002d1c0000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100a01 100101002500290026322822001e3132002d00233e002a2a2a2a2a2a2a2a0030002822001f2800000409030c01010d1b002123001f00280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100201 0106020100230000282a0023002800460035232522000022252335004600002d00232600272a1b150d110114010b1028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100d0c 0401041401002326002a00330031280025210025000000002500212500281f00260030302a0039011d02012b02011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100401 012f01160c080100234422002a2d3200271c001e271b1b271e001c2700321e29282a28000c01012b0f011001020f1028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100c03 06010f01020103011c002a1e000000000026282a1e00001e2a28260000001e001f2a100d090a06080104140101041028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100b01 072f0109012f0119081a0801001e233e3122003500434300350022313e232d0001012b0401010101060c09110f011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100103 010b05030b013901010f01120106091a002333004b00004b003323001a090f010739010118092b0c3909011104011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100701 11010f0101070c01110518011409040109021001470101470110020901040d010601150f0d0f0401010f050601011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 0000010109090101010101010101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c01090910011a 01091d040a01100501090d011a010f0108010139010c0c0139010108010f011a010d020c0110010b10010409040b1028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000026 0000010208010b0111011d011801010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a003000 1c0011250000304709090301011a010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 2100010046330001040f0c0b0101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000033 00000f003e001f012b0101181001010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a00312a 0033011c210000110901040c0111010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a003500 1c000f00001f290c01022b0d0111010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010109010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a000000 2700012835002a2f0b01010d021d010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000002a0d010d010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d01000021002a00302d 002202001b0000010402011a0101010101010101010101010101010101010101010101010101010101010101010110280028000022002a00280c010909100101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011028002800002200280001010c0110010101 0101010101010101010101010101100909010c28002a002a00210000010d01010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010401010a0109040101010101010101010101010101010100000000000000000002010311010b09020f 1101050901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010118232200222d000033 001f0d00000000010d0d010b0d100101010101010101010101010101010101010101010101010101010101010101062600281b2200001e00220d0d0104010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101062600281b22000000320201010903010101 01010101010101010101010101010104010d0d22001e002d220022231801010101010101010101040601040d0110010101010101010101010101010101010101 010101010100010101010101010101010101010101010d01050a02010e010909090909090909090909090909090900000000000000001f1111010b3901010f01 0205010e04100909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090b01001e2a0031264400 1b00043100352506011a39010601090909090909090909090909090909090909090909090909090909090909090901311f0000301c00001f00011001090a0909 0909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090901311f0000301c003300010d01010c110909 09090909090909090909090909090a09011001001f002631002a1e00010b0909090909090909060a0101010b190d010101010101010101010101010101010101 010101010100010101010101010101010101010101010111011a1d01011401010101010101010101010101010101000000000000000000011017010113151d0d 100a10011d01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101100100211f2800000000 001e0c222e00001d0b011106010d010101010101010101010101010101010101010101010101010101010101010110001e290028001f35320001011a03010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010110001e290028001f230001100f1001090101 010101010101010101010101010101031a01010032350000281f2100011001010101010101010201013904011101010101010101010101010101010101010101 010101010100010101010101010101010101010101011d0b0b01060301061010101010101010101010101010101000000000000000000011010109011d010101 010b01040b01101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010091a25000000281c1c25 2d2a090000231f010111010c020d1010101010101010101010101010101010101010101010101010101010101010013e0000211b0028002a2d0f011105011010 10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010013e0000211b00282a350a01010102051010 1010101010101010101010101010010511010f2d2a001c28000000251a0910101010101010100401010d01010618010101010101010101010101010101010101 0101010101000101010101010101010101010101010101090f08011b0028222222222222222222222222222222220000000000000000311e28002231000b010f 050100003500222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222002e0026302128002a00 0023220101100a00001e0023282a22222222222222222222222222222222222222222222222222222222222222220000291c0000212a2e1b003000211e002222 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220000291c0000212a2600330000002a262222 2222222222222222222222222222001e210030001b2e0028213026002e002222222222222222310000371e00302d010101010101010101010101010101010101 010101010100010101010101010101010101010101011d2b010103001b2a0000000000000000000000000000000000000000000000002223002a1c000105010c 041f22003e3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022002d2200003123251f 2d0023100801092d30001e1c002a000000000000000000000000000000000000000000000000000000000000000023443100231e1f0000003500001b2d000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023443100231e1f001c270021212100000000 0000000000000000000000000000002d1b000035000023310000222d002200000000000000001f28002300212900010101010101010101010101010101010101 0101010101000101010101010101010101010101010101013a0d1b001e28000000000000000000000000000000000000000000000000000023221e00090c2c01 0528282d001e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030282300313100000035 001c231101151a1c002527001c0000000000000000000000000000000000000000000000000000000000000000000000281f1c00003135002a2a2a002a250000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000281f1c0000310021223100002a1c0000 0000000000000000000000000000252a002a2a2a00350000313100232830000000000000000000213e00311f002e010101010101010101010101010101010101 010101010100010101010101010101010101010101010c0201030000000000000000000000000000000000000000000000000000000000232832000110010103 002d00282600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b00211c22001c2e00 25002a10010d09002a2800302a2200000000000000000000000000000000000000000000000000000000000000002d00352100262823002d001c230026000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d003521002628233200262a00231f000000 0000000000000000000000000000002600231c002d001c00221c21003b00000000000000000035002e002622330a010101010101010101010101010101010101 01010101010001010101010101010101010101010101100601000025002a282828282828282800261b2a1c3100312d221f0028001f001c2a282200020201010c 331f0000272d2828282828282828282828282828282828282828282828282828282828282828200031440000281c310021002a30001e28282828282828282600 1f2a2101160201002d00003300002828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 28282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828 2828282828282828282828282828002d00352a22280000001b001b001c0028282828282828281f23002a00001c1d010101010101010101010101010101010101 010101010100010101010101010101010101010101010401144d2923002d0000000000000000231e0000001f2e0000280032002a2400001e262101011a060122 001b1b330000000000000000000000000000000000000000000000000000000000000000000000462800001e2600002725001e23001c00000000000000000028 1f003215010101440000370000310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000001f220023221b31211e00001f261b2323000000000000000000323500272d010c010101010101010101010101010101010101 01010101010001010101010101010101010101010101100d2500001f320022222222222222221e2a2a361b001b0000001c232a2a00211b001c00130301011d1e 31002300261f2222222222222222222222222222222222222222222222222222222222222222322300371b21002326300701051f320022222222222222222629 002000110f010500221e00004c002222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 222222222222222222222222222200003523000000221c0000000026220022222222222222220027001c2a001101010101010101010101010101010101010101 01010101010001010101010101010101010101010101014737001b31222322222222222222220000002a0000231f1e282d001c2d231e2325230401011111002a 001e3300300022222222222222222222222222222222222222222222222222222222222222222a0029230028301c001502010f2a002e22222222222222222900 2100300c0601012d33002130312a2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222224b2822002132301e00002e00002a2728222222222222222231001c1f21010a10010101010101010101010101010101010101 0101010101000101010101010101010101010101010102040020000023000000000000000000233327001c360000002600272800230000220b09130101212100 1c1e00312a2200000000000000000000000000000000000000000000000000000000000000002326001b1e44002201100115114a002a00000000000000000036 3300231d0110101e001e290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000212131210000002423002e0000220000000000000000000021000008050103010101010101010101010101010101010101 010101010100010101010101010101010101010101011a010139011a08010101010101010101050d0109010d1801251e0026001e2d0301110901014701030113 01010101010401010101010101010101010101010101010101010101010101010101010101011a0104020f02011b000000350d08010d0101010101010101013a 0c0205221e0023010116010910010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010301020f0201130100003e0401010a100101010101010101100f0904010d010f010101010101010101010101010101010101 010101010100010101010101010101010101010101010d011306010104180202020202020202010c2b010405013900002e291b0031011403010a13100c101d01 110a01180c0b020202020202020202020202020202020202020202020202020202020202020201010c01060100282122340001040f0b02020202020202021a01 100101003e2800010f0c011809040202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020110050401182700363200090310050102020202020202020c0106010a180101010101010101010101010101010101010101 01010101010001010101010101010101010101010101101801080109010101010101010101010301070111010b251c2d00002125040401011d01010a010b0f01 0a010601100101010101010101010101010101010101010101010101010101010101010101010d15012b0100222a2a25000f0c01010101010101010101010d01 01060923000026090c01040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101020601111010001f00350001010d010a010101010101010101380109010c0111010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010901010d010d2a00332200252a020101010101010101010101 010101010101010101010101010101010101010101010101010101010101100c01140106110110011801231c2a003122000108012b1001010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010b04090401100b0101020b0201232100310001020601010401010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010901010d010d2a362121002a04011101010101010101010101 0101010101010101010101010101010101010101010101010101010101010c0118111001022f11010f0000003123220001060105010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010106050f0101041601100100001f2a00012f04010c020901010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010901010d010d2a0000301e0001041001010101010101010101 010101010101010101010101010101010101010101010101010101010101010e0601100610011a222d0020441b00290110090109010201010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010104110109390c2b01181d0031460023150f3a012f01010201010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010901010d010d2a3100281c3049010201010101010101010101 0101010101010101010101010101010101010101010101010101010101011d0a012b0101081933001e36003300321d2c010f091d090d01010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010f11090c06010101011e000020000101100104010a0b0f01010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010901010d010d2a2600262800010f0101010101010101010101 0101010101010101010101010101010101010101010101010101010101010d020108110f01362223002821002e1d01010c140201051001010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010104010114040108061d01000048001b01130101011939011801010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010901010d010d2a000030310001030101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010d0101082e00220027360009010904150d0101180c0101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010f020110010f2b0101002e3f001f020501181a050b010a0101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010901010d010d2a3b00001e360f011a01010101010101010101 01010101010101010101010101010101010101010101010101010101010101110a0915351c2a3123001f310f0d0d0b010111080c011401010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101022b01021d0139002100001e0001012b010111010f011801010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010d010d2a28001e310006090901010101010101010101 0101010101010101010101010101010101010101010101010101010101010d0f0109212500272a262d000111010c01010d08010c0e0101010101010101011009 09010c28002a2a0d010d010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010b011401110d151b1f0022322d0001180106020a10010b0101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010110110103040c002a2a2129002315010601010101010101010101 010101010101010101010101010101010101010101010401011101021a011001012a002800003122000108012b10010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101011d040d1a09210028001b28000d0c01010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010105010b0d011840003500220000010c0901010101010101010101 010101010101010101010101010101010101010101010201010d080a01090d0100272d0000272200010601050101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101013a0110020109233e3e00220c0101011a010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010d02010e010100220033322a2700040101010101010101010101 01010101010101010101010101010101010101010101012c01100101101001001b00003130002901100901090102010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101050147010c00001e002a0f42011a01010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010109080a010c0246003200231c0029011001010101010101010101 0101010101010101010101010101010101010101010115010d010a01010023003332250044001d2c010f091d090d010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010c011109011e0043003000010a010107010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010105010311010c00231c3100212a2a000101010101010101010101 010101010101010101010101010101010101010101010c19090601180025003100002200010101010c1402010510010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010106010c0102003700310031020145010f010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101020101160401321e001c1e002200442c01010101010101010101 01010101010101010101010101010101010101010101010102013128002d3300201e01090f0a04150d0101180c01010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010111010f311b232a23002d0111010501010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010101190401081108001f00001c2800000101010101010101010101 010101010101010101010101010101010101010101013911231f00004400002e0001010b0d010b010111080c0114010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101111a010023002a202331030c020106010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010902012f010d0100002923002e00000601010101010101010101 0101010101010101010101010101010101010101010101001e002a21001e1b01010c0d01100f01010d08010c0e01010101010101010101010101010101011009 09010c28002a2a0d010d010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010d021c2100000000250f0b010c0201010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010109111a01010a01002131320026310025012f010501080201010a 010d020a01110905010d0c100910010106010904010a010027001e00003101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010d0c011e00272822280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101090109031502013522001e352a001c0006011139010c01050a01 01010c0d0c010f090101090b010c0c010104090f0401001b222a1c33260401010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010d071b2200002e280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101060d010201011700232500222600311f00010c011a0412090101 1a0b01010a0609011a1a0111010f0f1002012d212d22000000370000011d01010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101011d10251c2a3e3000280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101100c010c0502010300003500001e0000210044050d1101011d06 010a010801010301090501022b0b010901010025002a313032000101041001010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010800001b1b0021280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010b110201111d15092a0025212331361c31001c010211070106 01010f06011d0c03010915100d0108011f224300441c0022000104010d0101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101013b212d000029280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101050c01010f1a1101021e3000252800210000300001010201090a 0701030101110101391106010e0b3e00230000232d000036011a4201180101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101011801001f211e3122280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010101090505010101080d01012a00351b273700302a210000000c01 010b010f1d0102110d012e00402222231b001c002a311d0f10100103080101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101091a41001f000021280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010d0109010d04100909010131280026002100262d001e32001e00 231f0304010609012300282500251c0026000000010d010b010f07010d0b01010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101011a01002e2a002d00280001010c011001010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010101010101010101010108010d001f1e2a2a21002a003126000000 0000000000001c00221f00352300001b2a0001041101010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101100f30002300222a003501010d0701061001010c010d020112010106011501020101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101011101010d000000001f001b2d28231e0000 000000000000002d2100322a2a262600100111010f11010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101110a1c261c002a001e2600010f011305011303010b0c012b0111150f041a01010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010109011a011501011b00321f35000031002a2a 2a2a2a2a2a2a2500263e1b00000309010401011a010f010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101091b28000031302e003f011a1d0101180106011015010904061001002821000101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010101010101010101010201050d010d0c011c002200331b31300000 000000000000003528000d011a010b01010102020401010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010106010000351e2600221b000101010c06010f01140f013d0f02090100002e00370101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010a013a010118020126373231003b002323 23232323232322280109011a1001013c010607011415010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010c01003032002823281b2d00021d0101010d0c011a010110060113001f29002b0101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101150109091d0109020102191c002800000000 00000000000001110a011401021a39010a02011d0101010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010503010000241f2a2d00202d0001011a02010e0d1110050501021e3323002d010101010101010101010101010101010101010101010101010101 0101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010101061a09091301010b090138010105010101 0101010101010c07010311010601011a0301150f0113010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010113010d0a3600001e2d1e31003121250006190105010c30260037000000270d0c0101010101010101010101010101010101010101010101010101 010101010100010101010101010101010101010101010101010101010101010101010101010101010101010101010501010109011a09011518010a18010d1010 1010101010100901180c010103100d010d010b090201010101010101010101010101010101010101010101010101010101010101010101010101010101011009 09010c28002a2a0d010d010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101180601001b1f00002a25223300003300290032002d0023281e002600010f0d0101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010111010d050201021d01 0610012835002606010d1d0901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101102b0108010022313000002922211b002800003700232600310037000111010c0101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010701050101010d01011d 10031000353600040501011a11010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010105010601002200351c001b00313500372300001c0030002e0022010d04180101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011015022f1011060d06 01010f2900002a010f15010d01050101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101020109010910012930001f1b2128310030001c322d33002a34000001130106010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011013010a0101271c0028 000029002a24002b01010c1d010d0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010d091d090f012c1d01001c1c0000000000002d000020002e19010114011201010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101050113011318040a0901 111d05011d030101151101010c100101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010110050102140c010103021e1f1e2021222324002526000001011a01010c0f0c0a0101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101110902070d0117010202 09180404040102190401020f05010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010c1801010d150401011a010000001b1b001c00010101020c0b050a0d0110010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101090b0101130d06010101 01010105020101010d05110101040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010114010c081101010b15060116010104040101010111010d0110010d1101060b090101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102010301010401050601 0701080104090a010b0c01060d020101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010e0c01080d0101010204010b0902010f101109010a0c0101011201040801040101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5707854 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 The before cursor is placed low down and the after cursor high up, following the German convention with quotation marks. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14958275\charrsid5707854 serif }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 on the cursor helps to show which glyph it is relevant to. Worse, if the cursor were placed between the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 i}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 r}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 , we would get: \par }\pard \ltrpar\s24\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid11077249\charrsid11668945 {\*\shppict {\pict{\*\picprop\shplid1028{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}} {\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex40\picscaley40\piccropl0\piccropr0\piccropt0\piccropb0 \picw8599\pich5371\picwgoal4875\pichgoal3045\jpegblip\bliptag-241936394{\*\blipuid f19457f6aa0364eb512637f101e0c108}ffd8ffe000104a46494600010101006000600000ffe1001645786966000049492a0008000000000000000000ffdb004300080606070605080707070909080a0c 140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb0043010909090c0b0c180d0d18 32211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232ffc000110800cb014503 012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01 020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a 535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6 c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f010003010101010101010101000000000000010203040506070809 0a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e1 25f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a929394959697 98999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c030100 02110311003f00f7fa28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28ae73c57e33d1 3c17a7addeb377e509370821452f24cca3242a8fc064e14123246450074754ef6c2d353b37b4bfb482eeda4237c33461d1b04119539070403f857cbbac7c75f1 95fea2f3e9f770e996dc84b78608e5c0c920b348a496c100918071d05677fc2ecf885ff4307fe495bfff001ba00fa7bfe104f087fd0a9a1ffe0ba1ff00e26bc8 3f665ff99a7fedd3ff006b55cf0cfed0f633c690f89b4e92da62eaa6e2c86f8b058e59918ee50a36f42e4f3c0e055bf819e17d73c2f79e26b6d674d9ec9dbecb b0b80524c0949dae32ad8dc3382719c1e6803da68a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a00c 3f1378974bf0968936adaa5c08ade3f955579795cf4441dd8e0fe449200247cf3e27f8f3e26bfd4dcf87e44d2ec11d8440c4924b22f1832170c01e09c2e31bb0 4b601a83e3bebf7b7fe3e9b479da3fb1e9888b6caab839923477663d492703d30a38ce49dcf83bf0bb46f126873ebbe21b69ee21795a0b5b7cbc4842e0994329 05b92546381b5b393f74031346f8f7e31d3ee376a325a6a9033a1649a158d9541f982346140241eac1b181c75cfbd7827e2068fe3d86f24d292ea37b4655963b 98c2b00d9dac304820ed61d73f29c81c65d7bf0efc1d7d6725acbe17d31637c64c36cb0b8c10787401874ec79e9d2bcdf54f86daef837c7fa7ebdf0f34f7934f 28a2e6cc5eaae40237c64ca7947500839621813c616803dd28a28a0028a28a0028a28a0028a28a0028a28a00cfd63528b47d1af7539d64786cede4b8916300b1 5452c719206700f715f1af8c3c5da8f8cfc4326ada89cf58ede2c2fee61deccb1e428dd8dc46e2326bea0f8bd797163f0b75f96da4f2e4685212700e5249151c 73eaacc3f1e39af9d7e13f87e7f107c47d292193647652adfccf8076a44c08e0919cb6d5e338dd9c100d007aa780fe05595b69f3cde33b586f2ea7d861b78679 17ecc304b0664650cc49c103206ce09cd7ae69ba1693a2f9bfd97a558d879d8f33ecb6e916fc6719da067193d7d4d6a51401ca7883e1ef857c4f762f356d1609 eebbcc8cd13bf007ccc8416c05006ece3b62bc32efc41e36f8bc34ebad074bfb3ea7a1f9be75dd85e883fd7f0bb43b065f9636070cd9e7a6715f4f57cfff00b3 2ffccd3ff6e9ff00b5a802e780be36b0b81a1f8e7ccb7d4167308bd7896255393959d78d8430db9031cfcc176963ee95e5de39f82da278a7ed5a8e9ea34ed6e5 dd2798a4f933c871feb179c6707e65c1cb16218f15e69a778fbc65f08b5793c3bafc1fda16b160c714f2b7fab0a550c129ce23385e0a903691856dd401f4e515 89e1af13697e2ed121d5749b812c127cacadc3c4e3aa38ecc323f30464104edd0014514500145145001451450014514500145145001451450014514500145145 00145145007c97f1c6cae2dbe296a12cf1ec8eea286680ee077a08d63278e9f3230e7d3d315ee9f04ffe491e85ff006f1ffa5125737f1ffc2d06a5e168bc4681 12eb4d754958e019219182e3a649572a40240019fb9a4fd9ef568a6f06dd69925fc6f770decaf1dab4c0ba43b63e5533909bd9b9031927b9a00f65a28a2800a2 8a2800a28a2800a28a2800a28a2800a2bc3fe24fc58f15f823c633e976d61a51b368a39ada49d1d9e4423049db20c7ce1c741d3f13c87fc346f8bffe81ba27fd f89bff008ed007bff8effe49ef897fec1575ff00a29abe7dfd9ee78a1f889731cb2c68f369d2a46acc0176f3236c2fa9daac703b027b513fed03e27bab596dee 348d02586542924725bcacaea460820c98208e315e6fa26b379a06b565ab583ecbab4944a992406c7556c104a91904679048a00fbaa8af30f865f12e6f1fe9b7 d693a5ad9ebb6a8586d05a2915b215c465f790a701867bafcc3760701ad7c6ff001d787f5abdd22ff4ad112ead25689f16f380d8e8cb99012a460838e4106803 e8eaf9ff00f665ff0099a7fedd3ff6b5607fc346f8bffe81ba27fdf89bff008ed6ff00893fe2c17d9bfe116ff4cfedadff0069fed5fde6df271b76797b319f35 b39cf41d3b807d015ca78e7c11a678e7443657cbe5dc4796b5ba419781cf71eaa7032bdf03a1008f0bff00868df17ffd03744ffbf137ff001da3fe1a37c61ff4 0dd0ff00efc4dffc768033b4dbaf15fc0ef13335f5846f0dda14646918c3751ab8f99194e03819c6e1951272bf357d29e19f12e97e2dd121d574bb8f36093e56 56e1e271d51c766191f982090413f33f89be316b3e2bd0e6d2757d1b439609395658250f138e8e87cce1864fe64104120ed691f10741f01783164f065e5d4faa 5f4f1b5de99abee952d80570cc8d1ac6a493b06739202e40c60007d35457cc1ff0d1be2fff00a06e89ff007e26ff00e3b47fc346f8bffe81ba27fdf89bff008e d007d3f457cc1ff0d1be2fff00a06e89ff007e26ff00e3b47fc346f8bffe81ba27fdf89bff008ed007d3f457cc1ff0d1be2fff00a06e89ff007e26ff00e3b47f c346f8bffe81ba27fdf89bff008ed007d3f457cc1ff0d1be2fff00a06e89ff007e26ff00e3b47fc346f8bffe81ba27fdf89bff008ed007d3f457cc1ff0d1be2f ff00a06e89ff007e26ff00e3b47fc346f8bffe81ba27fdf89bff008ed007d3f457cc1ff0d1be2fff00a06e89ff007e26ff00e3b47fc346f8bffe81ba27fdf89b ff008ed007d3f457cc1ff0d1be2fff00a06e89ff007e26ff00e3b47fc346f8bffe81ba27fdf89bff008ed007d3f457cc1ff0d1be2fff00a06e89ff007e26ff00 e3b47fc346f8bffe81ba27fdf89bff008ed007d3f457cc1ff0d1be2fff00a06e89ff007e26ff00e3b47fc346f8bffe81ba27fdf89bff008ed007d2d75043756d 25bdc4493432a9492391432ba9182083c107a62be6fd7fc3f27c1ff89da7f88ed2c647f0e9b8cc2d932945742b2c472461c2b394dc790064b10d887fe1a37c5f ff0040dd13fefc4dff00c76a86b7f1bf5df10e933e95aa68fa25c58cfb7cc8fcb9d376d60c3959811c80783401f4de95aa59eb9a65bea3a65ca5cd9dc26f8e55 e8c3f9820e410790410704569d7c7fe0df8afaef81f479b4dd2ed34e96096e1ae19ae63766dc5557036ba8c61076f5ae87fe1a37c5ff00f40dd13fefc4dffc76 803e9fa2bc3fe1d7c6fbcf11789e2d17c4169636ff006bf96da7b6cc6ab2609dae1dce777418e776060eec8f70a0028a28a0028a28a0028a28a00e13e247c39b 7f883a7d942f79f62b9b3959a3b8f28cbf230c326ddca39210e7b6df735e75ff000ccbff005377fe537ffb6d7d0145007cff00ff000ccbff005377fe537ffb6d 78057dff005f005007d1df0c3e145ee893689e2eb3f12e3ed36b1cd2d99b33b5e3950168cb0946719041231b954e0e315d07c41f83767e37d722d5a0d4bfb3ae 7ca114f8b61289b1f758fcca7701c1249c80a38c73d8f813fe49ef86bfec156bff00a296ba0a00f9ff00fe1997fea6effca6ff00f6da3fe4e27fea01fd85ff00 6f7e7f9fff007ef6edf27df3bbb639fa02bcf7e1a7c34ff8576754ff0089b7f687dbbcaff976f2b66cdffedb673bfdba500703ff000ccbff005377fe537ffb6d 1ff0ccbff5377fe537ff00b6d7d0145007cfff00f0ccbff5377fe537ff00b6d1ff000ccbff005377fe537ffb6d7d0145007c47e35f0dff00c223e2ebed0bed9f 6c36be5feffcbf2f76e8d5feee4e31bb1d7b56ff00c34f869ff0b106a9ff00136fecff00b0f95ff2ede6efdfbffdb5c6367bf5a6fc6cff0092b9aeff00dbbffe 93c75dff00eccbff00334ffdba7fed6a003fe1997fea6eff00ca6fff006da3fe1997fea6effca6ff00f6dafa028a00f9ff00fe1997fea6effca6ff00f6da3fe1 997fea6eff00ca6fff006dafa028a00f9fff00e1997fea6eff00ca6fff006daf15d7b4d1a2f88352d2bcef3bec3752db79bb76efd8e577632719c671935f7557 c41e3bff009285e25ffb0add7fe8d6a00ecbe1dfc221e3ef0fdc6aa35cfb0f9376d6de57d93cdce111b7677aff007f18c76aeb7fe1997fea6eff00ca6fff006d ae83f671ff00927ba87fd8564ffd15157b05007cff00ff000ccbff005377fe537ffb6d1ff0ccbff5377fe537ff00b6d7d0145007cfff00f0ccbff5377fe537ff 00b6d1ff000ccbff005377fe537ffb6d7d0145007cff00ff000ccbff005377fe537ffb6d78aebda68d17c41a9695e779df61ba96dbcddbb77ec72bbb1938ce33 8c9afbaabe20f1dffc942f12ff00d856ebff0046b5007a1782fe077fc263e12b1d7bfe122fb1fdabccfdc7d8bccdbb6464fbde60ce76e7a77addff008665ff00 a9bbff0029bffdb6bd03e09ffc922d0bfede3ff4a24af40a00f9ff00fe1997fea6effca6ff00f6dae4be227c221e01f0fdbeaa75cfb779d76b6de57d93cac651 db7677b7f7318c77afab6bc7ff0068dff927ba7ffd8563ff00d152d00781f82bc37ff09778bac742fb67d8cdd799fbff002fccdbb6367fbb919cedc75ef5eb9f f0ccbff5377fe537ff00b6d701f04ffe4ae685ff006f1ffa4f257d7f401e0b07ece535adc45716fe329239e260f1c8960559181c8208972083ce6bdea8a2800a 28a2800a28a2800a28a2800a28a2800af802beff00af802803edff00027fc93df0d7fd82ad7ff452d7415cff00813fe49ef86bfec156bffa296ba0a0028a2bc6 fc7ff1cad340bd9b4ad02d52ff005085da3b896e03ac5048afb4a6de0b9e1b904019520b720007b2515f207fc2ecf885ff004307fe495bff00f1ba3fe1767c42 ff00a183ff0024adff00f8dd007d7f457c81ff000bb3e217fd0c1ff9256fff00c6e8ff0085d9f10bfe860ffc92b7ff00e374007c6cff0092b9aeff00dbbffe93 c75dff00eccbff00334ffdba7fed6af14d675bd43c45abcfab6ab71e7de4fb7cc9762a6edaa1470a001c003815ed7fb32ffccd3ff6e9ff00b5a803e80a28a280 0a28a2800af883c77ff250bc4bff00615baffd1ad5f6fd7c41e3bff9285e25ff00b0add7fe8d6a00f7ff00d9c7fe49eea1ff0061593ff45455e9fac6ab65a2e9 573a96a372b6d676e9be495fa28edee4938000e49200e4d7987ece5ff24f750ffb0ac9ff00a2a2ae07e3978f3fb7f5aff846ec64ce9fa6c87cfcc7b4bdd2ee56 c13ced504a8e06496ea369a00e87c43fb452c571776de1fd2239d11c2dbdedd4ac15c0232c62001c1e71f303d090395ae22f7e3878eeeaf1e78f5382ce26c110 416b1944c00382eacdcf5e49ebe9c550f87ff0db54f1fdcc86293ec5a6419135f3c7bc07c6422ae46e6e413c8c0e49e541f75d33e07782ecf4cb7b7bfd3a4d42 ed1312dd3dc4b1995bb9da8e028ec07a01924e4900f19b2f8e1e3bb5bc49e4d4e0bc89724c13dac611f208e4a2ab71d7823a7a715e89e12fda134fbc22dfc536 86c25e7fd2ed559e13f78f29cbaf01471bf2493f28aec3fe149fc3dffa17ff00f276e3ff008e579ef887f67568adeeee7c3fabc93ba206b7b2ba89433900654c a08193ce3e503a02472d401ef36f730dd5b457104b1cb04ca1e3911832ba9190411c104739af8a7c77ff00250bc4bff615baff00d1ad5df7873c5de31f843a8d b693e21b1bafec4666cdb48aa40ddb4b34120e095c825436dcb303863b879e78aeee0d4bc5fad5f5a3f996d737f3cd14982372348c54e0f23208eb401f527c13 ff009247a17fdbc7fe94495e815e7ff04ffe491e85ff006f1ffa51257a050015e3ff00b46ffc93dd3ffec2b1ff00e8a96bd82bc7ff0068dff927ba7ffd8563ff 00d152d007907c13ff0092b9a17fdbc7fe93c95f5fd7c81f04ff00e4ae685ff6f1ff00a4f257d7f400514514005145140051451400514514005145140057c015 f7fd7c01401f6ff813fe49ef86bfec156bff00a296ba0ae7fc09ff0024f7c35ff60ab5ff00d14b5d050079efc57f1dff00c213e18ff4472358bddd1d9662deab 82bbdce78f9430c673962bc119c7c855efff00b4d7fccadff6f7ff00b46bc93c13e1d1e2bf18e97a2190247752fef581c111a82efb4e0fcdb55b1918ce33c500 7a27c3ef81971af5a4b7fe2afb6e996e7296f6c80473b1079760ea76af0400464f5e001bbd5ffe149fc3dffa17ff00f276e3ff008e57a051401e7fff000a4fe1 effd0bff00f93b71ff00c728ff008527f0f7fe85ff00fc9db8ff00e395e8145007c67f13f44d3bc3bf11755d2b4bb7fb3d8c1e4f9716e67dbba1463cb124f249 e4d7a67eccbff334ff00dba7fed6ae03e367fc95cd77feddff00f49e3aefff00665ff99a7fedd3ff006b5007d01451450052d42fedf4ed3ae6faea5f2ededa27 9a57da4ed4504b1c0e4e003d2bc46fbf690857523fd9de1e926b054201b8b9114aec76e0e1430503e718f9b395395c107d9b5ed34eb5e1fd4b4af3bc9fb75acb 6de6edddb37a15dd8c8ce339c6457c4faae9779a1ea771a76a76cf6d796efb2489baa9fe44118208e08208c83401f535b7c6cf00cb04523eb1240eea18c525a4 db9091f74ed42323a7048f426be62f15ddc1a978bf5abeb47f32dae6fe79a293046e46918a9c1e46411d6b12b77c35e1bd53c5dadc3a4e976e65b893e6666e12 241d5dcf65191f98001240201f42fecf704b0fc3bb99258a4449b5195e3665203af971ae57d46e56191dc11dabc2be2359cf63f11fc4715cc7e5bb5fcb281b81 ca48c6443c7aab29f6cf3cd7d6de17f0edbf85bc35a76896a7747671042fc8f31c9cbbe0938dcc58e33c67038af09f8f3e09bdb6f10bf8b6da1925b0ba58d2e9 81cf912a8083231c2328400f3f3641c654100f76f0b787adfc2de1bd3b44b525a3b38b617c11e6393977c1271b98b1c678ce0715b95cdf82fc4d078b3c2961ab 453c12cd244a2e961c8114e146f4c1e4609e33d883920827a4a0028a28a00c3f13786b4bf16e873693aadbf9b04986575e1e271d1d0f66193f990410483f1af8 974493c3de23d43469b797b39de20cf198cba83f2bed3d032e18727823935f59f8bbe257863c1bba2d46ff00cdbd5c7fa15a8124dfc3d46404e1837cc572338c d7c8faceb7a8788b579f56d56e3cfbc9f6f992ec54ddb5428e14003800702803eabf827ff248f42ffb78ff00d2892ba0f1b789bfe10ef085f6bdf64fb5fd97cb fdcf99e5eedd22a7dec1c63767a1e95cff00c13ff9247a17fdbc7fe944947c6dff009243aeff00dbbffe9447401bfe08f131f18784acb5d36bf65fb5799fb9f3 3ccdbb6464fbd819cedcf4ef5c07ed1bff0024f74fff00b0ac7ffa2a5ae83e097fc921d0bfede3ff004a24ae7ff68dff00927ba7ff00d8563ffd152d007907c1 3ff92b9a17fdbc7fe93c95f5fd7c81f04ffe4ae685ff006f1ffa4f257d7f40083bfd6968a2800a28a2800a28a2800a28a2800a28a2800af802beff00af802803 edff00027fc93df0d7fd82ad7ff452d7415cff00813fe49ef86bfec156bffa296ba0a00f22f8f5e179f5af0943ac5aac8f3e8eccef1ae4ee85f68738009ca954 6ce400a1c9ed5e49f05af6c6cfe28e986f628f332490dbcaf2f96229590e0fa3161940a7bc831c815f55ea1616fa8e9d73637517996f7313c32a6e2372302186 4723209e95f16eab677de0bf195c5b24b22dde937bfb89a48769628d98e4d8d918202b00720823a8a00fb7e8ac6d03c43a578974b1a8e8f7c97769b8a6f5054a b0ea195802a7a1c103820f422b66800a28a2803e40f8d9ff0025735dff00b77ffd278ebbff00d997fe669ffb74ff00dad5c07c6cff0092b9aeff00dbbffe93c7 5dff00eccbff00334ffdba7fed6a00fa028a28a002bc87e327c3487c47a74de21d26d643ae5b22978a0504de46300823bbaaf208c9206dc1f971ebd45007c2ba 1e9f6daa6b9696175a841a75bdc4ab1bddce094881ee71fd703d4a8c91f63f853c1ba2782ec1ad345b3f2849b4cf33b1792665180598fe27030a09380326bc47 e367c365d1ee26f16e95bcdadddc66f60219bc995c93e603d918f041e8cc00c86017d13e0f78f97c5fe1c5d3efa78ceb1a7288e4532333cf10002cc7772493c3 7279e4e3701401e9b54f55d26c35cd2ee34dd4ada3b9b3b84d92c4e3823f9820e0823904023915728a00f9ea3d13c7ff0007b50bdbcd222fed3f0a4529b89e01 32be62c951b810192409b4b322ede01390a40dcb0fda33c3d25a46d7da46a90dcb13be387cb95179e30c5949e31fc23d39eb5ed35c3defc20f026a176f753787 a0491f1b96de5921418007088c1474ec39ebd6803cd35ffda3662cd1f87b458d50382b3ea0c58b2ede4796846d3bba1de781d39e382d57e30f8e3564b889f5c9 2de099f7797691242631bb2155d46f0074fbd923824e4d7d01ff000a4be1effd0bff00f93b71ff00c72ac597c20f02585e47730f87e0774ce16e249264390472 8ec54f5ee3dfad007cbda3f85bc4de31bc79b4fd36fb5179a47f32e981d864c6f6df2b7ca18e73f31c9c8ee45636a16171a76a37363751797716d2bc32a6e076 ba921864707041e95f7957c41e3bff009285e25ffb0add7fe8d6a00fa7fe09ff00c923d0bfede3ff004a24a3e36ffc921d77feddff00f4a23a3e09ff00c923d0 bfede3ff004a24a3e36ffc921d77feddff00f4a23a003e097fc921d0bfede3ff004a24ae7ff68dff00927ba7ff00d8563ffd152d741f04bfe490e85ff6f1ff00 a512573ffb46ff00c93dd3ff00ec2b1ffe8a96803c83e09ffc95cd0bfede3ff49e4afafebe40f827ff00257342ff00b78ffd2792bebfa0028a28a0028a28a002 8a28a0028a28a0028a28a002be00afbfebe00a00fb7fc09ff24f7c35ff0060ab5ffd14b5d0573fe04ff927be1aff00b055affe8a5ae82800af1ef8f3e0f1acf8 6535fb38775ee97febb6ae5a4b727e6ce1493b0e1b9202a990d7b0d1401f297c15f1bdbf84fc4d2d96a0f045a7eabb2396ea562be43a06d873d3692c54e718c8 39001cfd5b5f3a7c73f87969a3dbdbf88f42b08ed6d8b886fa0b74db1a123092055184070558e4024a719249e9be02f8ca6d63419fc3b76d199f4a5536ced313 24b0b16e369e70870b91c00c83031c807b2d1451401f207c6cff0092b9aeff00dbbffe93c75dff00eccbff00334ffdba7fed6ae03e367fc95cd77feddfff0049 e3aeff00f665ff0099a7fedd3ff6b5007d0145145001451450055b8b786eada5b79e149a0954a491ba8657523041078208e315f3278a740d7be0df8dd35ed15b cbd2a795becce03347b09c9b69413938038c9f9828604303b7ea5acdd574bb3d734cb8d3b53b64b9b3b84d9244dd187f3041c104720804608a00c9f0678c74ff 001ae8506a162d1a4e501b8b5332bc96ed961860390095254903239c0e95d457cc1af782fc4ff0775c1e26d0aebed1a5a4bb049824ac6d8c4770a000549f9770 e3201f918a8af5cf875f1474cf1b69d0c5712c167ae29d92d997c79a40277c409cb2e01247257073c618807a1d14514005145140057c41e3bff9285e25ff00b0 add7fe8d6afb7ebe20f1dffc942f12ff00d856ebff0046b5007d3ff04ffe491e85ff006f1ffa51251f1b7fe490ebbff6efff00a511d1f04ffe491e85ff006f1f fa51251f1b7fe490ebbff6efff00a511d001f04bfe490e85ff006f1ffa512573ff00b46ffc93dd3ffec2b1ff00e8a96ba0f825ff00248742ff00b78ffd2892b9 ff00da37fe49ee9fff006158ff00f454b401e41f04ff00e4ae685ff6f1ff00a4f257d7f5f207c13ff92b9a17fdbc7fe93c95f5fd001451450014514500145145 00145145001451450015f3df8a3f678686dccde16d4249dd1496b4bf2a19c80c7e59140193f280a401d4961d2be84a280317c27693e9be11d12c2ed3cbb9b6b0 821963c83b5d6350c32383820f4adaa28a0028a28a0086e6d61bcb696de78a3961954a491c8a195d48c1041ea08e2bc674ef81f75a47c4a4d6f4bd523b1d1ada e12e2da2567927232bbe16fba0210645cee63b70083935ed94500145145007927c40f82b69e2fd4ef75bb2d4a7b6d56e3692b300f01d918455c001973b572d96 c73f29ecef83de03d73c0d7be2187568e068e7fb30b79e0943a4bb4485b00e1863781f301ed91cd7acd140051451400514514005145140156e6da2b9b796de78 525825529246ea195d48c1041e08238c5786f8f7e09df0d67fb77c0ea90bef131b1497c968a50c30d0370147f16095dbb7e5272147be51401e1de08f8e064be4 d17c6b0fd86fd6516e2f047e5a02061bcf527f76db87240dbf372102e6bd934fbfb4d4eca3bcb1ba82eada4cec9a090488d8241c30e0e0823f0ae63c73f0eb44 f1cdb1fb743e4ea09118edafe3cef8b9c8c8c80eb9fe13fde6c152735e77e05f865e2ff037c49b6713fda3c3ede635ccd6d71b1241b2458c4911209604a9c00c 06ee0f5a00f78a28a2800af13f1a7c058758bdbdd5344d5248f50bbb892e258efb0626677dc42b22e500cb750d9e071c9af6ca28038cf85fa26a1e1ef875a569 5aa5bfd9ef6dfcef322dcadb774cec395241e083c1aa5f1b7fe490ebbff6efff00a511d7a0563f8a7c3969e2df0ddde877d24f1db5cecded030571b5d5c60904 7551da80397f825ff248742ffb78ff00d2892b67c67e0dd3fc73a445a66a53dcc504570b70ad6ceaac582b2e0ee5618c39ede955343f01c9e1dd261d2f4bf14e b76f6706ef2e30b68fb773163cb4049e4935d558dbcb69671c135ecf7b22e733ce103be493c84555e3a70074f5e6803c3fc23f0775df05fc50d27534b88350d2 22f3b7dca62378f30328dd193dd9b03696e9938af78a28a0028a28a0028145140051451400514514005145140051451400514514005145140051451400514514 00514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514 0051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451400514514005145140051451401ffd9}}{\nonshppict{\pict\picscalex40\picscaley40\piccropl0\piccropr0\piccropt0\piccropb0 \picw8599\pich5371\picwgoal4875\pichgoal3045\wmetafile8\bliptag-241936394\blipupi96{\*\blipuid f19457f6aa0364eb512637f101e0c108} 0100090000035684000000002d84000000000400000003010800050000000b0200000000050000000c02cc004601030000001e00040000000701040004000000 070104002d840000410b2000cc00cb00450100000000cb004501000000002800000045010000cb00000001000800000000000000000000000000000000000000 00000000000000000000ffffff00f7f7f700f3f3f300fcfcfc0005050500fefefe00e4e4e400f8f8f800ededed00fbfbfb00efefef00fdfdfd00fafafa00f9f9 f900f1f1f100f2f2f200f6f6f600f4f4f400eeeeee00d8d8d800e8e8e800f5f5f500e7e7e700f0f0f000dfdfdf00ebebeb000b0b0b00111111000c0c0c00e6e6 e6000a0a0a000d0d0d001b1b1b0007070700030303002424240012121200dcdcdc0008080800090909001919190015151500e1e1e1000f0f0f000e0e0e000404 040006060600141414002d2d2d00e5e5e5001313130010101000020202001a1a1a0001010100ececec001717170021212100eaeaea0018181800e9e9e900d9d9 d9001f1f1f00e3e3e300232323001d1d1d00e0e0e00016161600cdcdcd0025252500292929002b2b2b001c1c1c00cbcbcb001e1e1e00dddddd0028282800dede de0036363600e2e2e200dadada002020200022222200d2d2d200d6d6d600d4d4d400dbdbdb00d7d7d70032323200262626002e2e2e00d1d1d100d5d5d5000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010801010603011e0c0106100108061001010101010101010101010101010101010101 010101010101010101010101010101010101010101010c01040101010a010d060d0801030106013b011206080101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010a0418160811010a0a08061a03010c3201010101010101010101 0101010101010101010101010101010101010101010101010101010101010101160a01010106010c060d01010a120d01020d0103010c01010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010103060115130613010101002e2743010101 01010101010101010101010101010101010101010101010101010101010101010101010101010c010c010106060e0c0d011003061001020108010101110a0101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c130e17013d12013b20 23001d350e0e0101010101010101010101010101010101010101010101010101010101010101010101010101010108010101010403083b120101040112010101 01120e040e0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d 013b1501010042001f2500000102010101010101010101010101010101010101010101010101010101010101010101010101010101010101020308013d060110 3b0f0d010102011306010102013b0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010111010201040a2e20001b20003437040101010101010101010101010101010101010101010101010101010101010101010101010101010101020e 010101385237050036252e001b003720010103013d01010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010108013d38340000372100002a0039380401010101010101010101010101010101010101010101010101010101010101010101 010101010101010104060e010000052a4e11120a0101060f0e01010f011601010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010411010023232328001b001d011a010b0101010101010101010101010101010101010101010101010101 01010101010101010101010101010d0601010e01002c1f000c0d10010801011201010c0116010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 010101010101010618080138010a011a0e010f1701040101010101010101010101010101010101010101010101010201011604010801011206010a040a060101 01010101010101010101010101010138010a0c0c010e160150010c12010c01010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010102010104010c0b060e0102110d010106031c002500003c0000050d0c01160111010101010101010101010101010101010101 010101010101010b010a01010602080a0a0d01160106010c010a01010037370001010a010c0116061a010f01020d020c010201020d0a01010101010101010101 01010101010101010101010101010101010101010101060606010101010101010101010000000101010101010101010101010101010101010101010101010101 010101010101010101010101010104010b12020d01030701383d0e010108010101010101010101010101010101010101010101010101010e1201010101010801 06090a010e010101010101010101010101010101010113013b0603013d0a013801010e010a010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101160311010116023201010e400108282f2c1b233500010d5d01131611010c01010101010101010101 0101010101010101010101010101010112011a150801014c010904010411010c010a01010037370001010a010c010d08060c01120e01010408010d0106160101 01010101010101010101010101010101010101010101010101010101010106060601010101010101010101000000010101010101010101010101010101010101 010101010101010101010101010101010101010101010e580101140a043521120101010810010101010101010101010101010101010101010101010101010104 11010d0b010203110101020157010101010101010101010101010101010106110108063e06020101000001380e07010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101011203010d17111e010f0c501801002f00001f23002301040d01160d010c0e0e0101 010101010101010101010101010101010101010101010e120f40010a0111002c120c06010901010c010a01010037370001010a010c010c04010f06060c010d01 120d1b00010b01010101010101010101010101010101010101010101010101010101010101010606060101010101010101010100000001010101010101010101 0101010101010101010101010101010101010101010101010101010101010e010f010100202e00010e0c01010201010101010101010101010101010101010101 0101010101010d0101010c0101010601000000010e0101010101010101010101010101010101013d0c025c01012e330035221701040101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010116120408030401183d0e0100001c001c200000010d3206560d 380601110e010101010101010101010101010101010101010101010101010a01011107110037201f010d120a1601010c010a01010037370001010a010c010401 101318013b17010f1d00003701010101010101010101010101010101010101010101010101010101010101010101060606010101010101010101010000000101 010101010101010101010101010101010101010101010101010101010101010101010101010101150e281b341d003c011a021601010401010101010101010101 01010101010101010101010101010106010201010710011800200005001501010101010101010101010101010101010a0f010c37002e00442f35011609120101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010e01011702011a1008010100281d2f273737 2e013b07010c010c0416080e060a010101010101010101010101010101010101010101010101010f12013f003c202e00100d0101013b010c010a010100373700 01010a010c010d041a16011811012f25373537373d16010101010101010101010101010101010101010101010101010101010101010106060601010101010101 010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101013500250035003334000302010f0801010101 010101010101010101010101010101010101010101010101010e0a033b010222352239352701010101010101010101010101010101010a0c2e00001c27053335 28000d010d04010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080d010d0c03320c0138 2200360028440001010c1a0117120a50010e0601011201010101010101010101010101010101010101010101010138001f00394400372e2e0c01131a0101010c 010a01010037370001010a010c010a03010111250000000037352735010301010101010101010101010101010101010101010101010101010101010101010606 0601010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101012f3700443c35002e210c 04010201010101010101010101010101010101010101010101010101010102011101040c01514200252f00280004010101010101010101010101010101010901 00001d0000220500492e180a01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010108 17010818011501300027002c2e00010e0126013d0e010810010e080201010101010101010101010101010101010101010101010101010100231f2844002c2735 0c0108010a16010c010a01010037370001010a010c0101120a0f0100303f1d4200051f0001080101010101010101010101010101010101010101010101010101 01010101010106060601010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101013700 2f00273722372e1201040601080101010101010101010101010101010101010101010101010104013201111217340025002e1b00011a01010101010101010101 0101010101011201002700372e000029050001130411010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101380132011104091d002d00202e0000010d110a014001010808011202010a020a0101010101010101010101010101010101010101010101010a00 1f0035002d000000010138011801010c010a01010037370001010a010c010801110c01051c0000050528351f1606010101010101010101010101010101010101 01010101010101010101010101010606060101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 010101010101000000000000000035040104010106010101010101010101010101010101010101010101010101010c010d0901061b001b372c0000120a010101 01010101010101010101010101010401000005003500000000000101060601010101010101010101010101010101010101010101010101010101010101010101 010101010101010b010c030d1601041201160f012f352f002f1d0000010b01010101010101010101010101010101010101010101010101010101010101010101 0101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010101010101010101010c011801000033001f 00050101130801010101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010101010101010101010101 01010101010101010101010101013801110111010c1510011e2b0100003435002c200a0155010101010101010101010101010101010101010101010101010101 01010101010101010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 0101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010101010101010101110f 180e160028373c1f2f00013d010e0101010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010101 01010101010101010101010101010101010101010101010f0113101338010e0a0103001c2d2d22280001043d0e01010101010101010101010101010101010101 010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010101 0101010101010a01013d2d3500000022001f18100140010101010101010101010101010101010401000005003500000000000101060601010101010101010101 0101010101010101010101010101010101010101010101010101010101011a0115400104061e19013535200039002f000d040d01020601010101010101010101 0101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010101 010101010101010101010101010116161501000000003035340112011e0601010101010101010101010101010101040100000500350000000000010106060101 010101010101010101010101010101010101010101010101010101010101010101010101010111090f01120c0d01010000273723282c2f51010a1140010b0101 01010101010101010101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c010a010100373700 01010a010c010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 0101010101010101010101010101010101010101010108010100002f2233001f160f011101040101010101010101010101010101010104010000050035000000 000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010a010140011911380000372e2234050f0201 0d0801010d06010101010101010101010101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c 010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 01040101060101010101010101010101010101010101010101010101010108012700480500003400010e010f0412010101010101010101010101010101010401 000005003500000000000101060601010101010101010101010101010101010101010101010101010101010101010101010101010101010a0801163201001d34 2e440000120c0f010e0208151101010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037002300 01010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 00000000000035040104010101010101010101010101010101010101010101010101010101011d00004123005a353509010e0e16010101010101010101010101 01010101010104010037050035000000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010d01 01030801002700282300330301110c0c0c1001010201010101010101010101010101010101010101010101010101010101010101010101010101010101010c23 0023000037002e0001010d010c01010c010a01010037370001010a010c010c0606010d2300350035000537000104010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 0101010101010000000000000000350401040101060101010101010101010101010101010101011a0b011610010027001f20222e002f01010101010101010101 0101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010101010101010101010101010101010101180e 060d010c18010101010c1100350027202300120d010c010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010000000000000000350401040101060101010101010101010101010101010101120c01161a01003423002000370542010101 01010101010101010101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010101010101010101010101 01010101010101010310110101161607010605052837002e010101160e0c01010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 0101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010d0e11380101002d1d1c 002a4400020f01010101010101010101010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010101 0101010101010101010101010101061203010a1716320c10010000291b053c1d160d430d01060101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010116 01090d00270000281c20001d06010101010101010101010101010101010101010101010101010401000005003500000000000101060601010101010101010101 010101010101010101010101010101010101010101010111160c0d120c012b0100221b34005b000a013e0150013d010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010101 010101010101010c010e0620281f003400231b0e0e38010101010101010101010101010101010101010101010101040100000500350000000000010106060101 0101010101010101010101010101010101010101010101010101010101010801013d0e011316011d371d37001d000c04010a01023b0101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c010a010100373700 01010a010c010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 010101010101010101010101010111010e121d2e001b002f3700010d180101010101010101010101010101010101010101010101010104010000050035000000 0000010106060101010101010101010101010101010101010101010101010101010101010101160e01040111150101001c00371f250a3b01100e010301090101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c01010c 010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 01040101060101010101010101010101010101010101113b0104002c1f1f2800002d3b010e180101010101010101010101010101010101010101010101010401 00000500350000000000010106060101010101010101010101010101010101010101010101010101010101010101010815010e0f0115231f00331f0012010115 08010a0d01040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037002300 01010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 0000000000003504010401010101010101010101010101010101010101010c011a0034270000374900370c0b0106010101010101010101010101010101010101 01010101010104010037050035000000000001010606010101010101010101010101010101010101010101010101010101010101010109011701110a1a280025 350023010d040e0401150d0c3b010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c23 0023000037002e0001010d010c01010c010a01010037370001010a010c010c0606010d2300350035000537000104010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010100000000000000003504010401010601010101010101010104010c0a011001040401002e3900002e341c00040e0a010701010101010101010101 01010101010101010101010101010401000005003500000000000101060601010101010101010101010101010101010101010101010101010101010101010101 020a0d01001c222e37002a0404060101010101010101010101010101010101010101010101010c01060801010601010101010101010101010c0a01010a010101 0101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 0101010101010101010101010101000000000000000035040104010106010101010101010101010e010104080c171200281d002f35230005013d010d09010101 01010101010101010101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010101010101010101010101 01010101010109110610012d2a00001f27220c011101010101010101010101010101010101010101010101010101011301010801010b01010101010101011206 0101040a0d0101010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101000000000000000035040104010106010101010101010101061201011a020101010028004b002e00010d 0116110c061a01010101010101010101010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010101 01010101010101010101010101010c0112020100354441002a12020a06080101010101010101010101010101010101010101010101011602010108010f010606 060606060606011101110101020c01010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 0101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010118120601011e50011d 00002822351d160e400c01130c010101010101010101010101010101010101010101010101010401000005003500000000000101060601010101010101010101 0101010101010101010101010101010101010101010101190101233f28000500000d0132010c0101010101010101010101010101010101010101010101010901 40060118010d0101010101010101110112010150010401010101010101010c23002300003700230001010d010c01010c010a01010037370001010a010c010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010401 010d010d03012f00272e0027282f0c0e06430101010e010101010101010101010101010101010101010101010101040100000500350000000000010106060101 0101010101010101010101010101010101010101010101010101010101010a0201002f003735351f0b010a110618010101010101010101010101010101010101 01010101010112110e01090c01010d0d0d0d0d0d0d0d01160112080b060f01010101010101010c23002300003700230001010d010c01010c010a010100373700 01010a010c010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 010101010101110101120a0f012b002e222c0005210014010b0103030d1801010101010101010101010101010101010101010101010104010000050035000000 0000010106060101010101010101010101010101010101010101010101010101010101010101060c00342f42281d2c0206081301010601010101010101010101 01010101010101010101010101010101080d180143160101010101010101124c01101203010101010101010101010c23002300003700230001010d010c01010c 010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 0104010106010101010101010101013b031001061e392e002d001f00000101090d10040c08010101010101010101010101010101010101010101010101010401 00000500350000000000010106060101010101010101010101010101010101010101010101010101010101010101010037002028003c00010d01010232010101 01010101010101010101010101010101010101010101010e2000200029280000000000000000234d002f2d1c090101010101010101010c230023000037002300 01010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 00000000000035040104010101010101010101010101043d011617180100005a002528222f150f08060112010e0a010101010101010101010101010101010101 010101010101040100370500350000000000010106060101010101010101010101010101010101010101010101010101010101010101132f2e2d2800362e0103 0101110d0118010101010101010101010101010101010101010101010101002000340030001f23232323232323232000442f2000250001010101010101010c23 0023000037002e0001010d010c01010c010a01010037370001010a010c010c0606010d2300350035000537000104010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010100000000000000003504010401010601010101010101010106060901120101220030001c1b350004010101010101010101010101010101010101 01010101010101010101010101010401000005003500000000000101060601010101010101010101010101010101010101010101010118010f01090b01102e2f 00353900201f060f0104010101160101010101010101011606040c010801010d1a12010818220022002e00280030351f23003400002228002e002e1c001f2f30 000d01010a0401002c3c1f004423230001010d010c01010c010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 0101010101010101010101010101000000000000000035040104010106010101010101010101060301380101001f003c35220000010c01010101010101010101 01010101010101010101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010101010101010101010101 111a0e013d00003c2e273527000c01061704040b1601010101010101010112010a0111010138160110011301352c373723362f372d0005002927000528002e1d 05223700223700272a2f0000011015293700201d2a00230001010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 0101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010112030b0119010523230028001c0001160101 01010101010101010101010101010101010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010101 0101010101013d040c040801001f1c0035002e3403010d0401180a04011a01010101010101010101010f01113801010c01001c270000002e2e0005001f492a28 00341c351d0000002500332700273000281c002a3c1c4b002d2e1b000028230001010d010c01010c010a01010037370001010a010c010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010104011150011b23003400 30372230380e01010101010101010101010101010101010101010101010101010101010101010401000005003500000000000101060601010101010101010101 0101010101010101010101010101010e0143010200000033001d1b2d05110d3806014e01100101010101010101010a010a0a0106013b0f2d233420232f2d352d 03011501260812023528001d332f30392e39002c00332352001f281d3700001d050005000023230001010d010c01010c010a01010037370001010a010c010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010213 120d0100280500210000231001010101010101010101010101010101010101010101010101010101010101010101040100000500350000000000010106060101 010101010101010101010101010101010101010101010104180116052e4b3900232e00003f0001080e010e03060e01010101010101010201080101010f010100 2c2c00003c060e063b100113010210013b01010000002223230027284900002c052f2700244442290000371b2c00230001010d010c01010c010a010100373700 01010a010c010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 01010101010101010c010000302d002135233401400a010101010101010101010101010101010101010101010101010101010101010104010000050035000000 0000010106060101010101010101010101010101010101010101010101011601163b00000000003400003c2c052f1d01011a010b01060101010101010101010c 01030115011a002d3a2f05301104015401013d01040d010a13060a16010801002025230000301f00232e2f52002e0000273000001b37230001010d010c01010c 010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 01040101060101010101010101010b040b062e330500390042340000010201010101010101010101010101010101010101010101010101010101010101010401 00000500350000000000010106060101010101010101010101010101010101010101010101010e010e2f373505342f370505002c001d00000004010108010101 01010101010106010d0101180123051c0028041101060116100b0c0118010138060116010d1a010106090c01002e00222900050044223c35222300002f002300 01010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 0000000000003504010401010101010101010101010101010c0b3533003c37053735351d02080101010101010101010101010101010101010101010101010101 010101010101040100370500350000000000010106060101010101010101010101010101010101010101010101010d0100272e001b3700230000222f2d002e28 1b000c0118010101010101010101080101111101003500252a010e0d010d1101180104020c0a02010d0101121801110c06030117010b01001d2c003400372300 20002e3500232e0001010d010c01010c010a01010037370001010a010c010c0606010d2300350035000537000104010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010100000000000000003504010401010601010101010101010106060101000000000037232205000108010101010101010101010101010101010101 010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010e0a1201080b0110020100221d0000050000 000000000000053c002500010c02010c01160101380101040d010f01001c353400013b0104160101010101010101010101010101010101010101010101010111 2e1d002328000000281d001d0023230001010d010c01010c010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010000000000000000350401040101060101010101010101010606010100000000352e440025001e0101010101010101010101 01010101010101010101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010111010112030d0c010100 361f00222e00000000000000000000001d001b370104011201021801010102011e02020033001b000a1601030901010101010101010101010101010101010101 0101010101010e0801162833002c0000001f271b2800230001010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 0101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010106060101000000001d300037003008030101 01010101010101010101010101010101010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010110 16080111400833275200490000050000000000000000050023002e23000901013201010203020115110100002c2d1f0110011501011e01010101010101010101 01010101010101010101010101010101101006060000352737220000331d230001010d010c01010c010a01010037370001010a010c010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010106060101000000000023 253c1f002e0101010101010101010101010101010101010101010101010101010101010101010401000005003500000000000101060601010101010101010101 0101010101010d020606123b01010005351b002d252800000000000000002e352d2e1f0041200a02010c26010f010f0601002c343500002b01080c3d0d040101 010101010101010101010101010101010101010101010413010116010e0122000023341b2d00230001010d010c01010c010a01010037370001010a010c010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010606 01010000000028233737002d00010101010101010101010101010101010101010101010101010101010101010101040100000500350000000000010106060101 01010101010101010101010101010e0118020401170029372300493900300000000000000000231b002236270037050108020a01030d040e1000204400532201 023b0c01030101010101010101010101010101010101010101010101010106011002011e0115271d270000372e33230001010d010c01010c010a010100373700 01010a010c010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 01010101010106060101000000000528002700275237010101010101010101010101010101010101010101010101010101010101010104010000050035000000 0000010106060101010101010101010101010101010103010d011a11010000331c201c002d00000000000000000000273000232f30220001010f011809010101 25281b000037123218010811010801010101010101010101010101010101010101010101010115011201030f1101003900052805002d230001010d010c01010c 010a01010037370001010a010c010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 010401010601010101010101010106060101000000002e002a00302d001c01010101010101010101010101010101010101010101010101010101010101010401 000005003500000000000101060601010101010101010101010101010101010218010112080039350028002800330000000000000000210028301b0000342300 01015501100d01102e00352f00490a010a0a080e011601010101010101010101010101010101010101010101010101011a1106013d12011a2500281d2e002300 01010d010c01010c010a01010037370001010a010c010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 0000000000003504010401010101010101010101010106060101000000002e00052e001b00370101010101010101010101010101010101010101010101010101 01010101010104010037050035000000000001010606010101010101010101010101010101010101060304011128001f051d3500340000000000000000003552 1f003005000000231001013201081001002d00001c000a01030f01180201010101010101010101010101010101010101010101010101110a010a0e180a010301 35231f002d1f2e0001010d010c01010c010a01010037370001010a010c010c0606010d2300350035000537000104010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 0101010101010000000000000000350401040101060101010101010101010e060d010052003300000000000000000a11010f060f011006060606060606060606 06060606060606060606060606060401003733002d00000000000101060601010101010101010101010101010101043d011617180100000523000028001d222d 28001f05003c002a22001d39002737220118010413011001001f002f2200010d010806011001010101010101010101010101010101010101010101010101013d 0d0110040a0101012e0005352000230001010d010c010102010101021b00001d110a010102010c0606010d23003500350005000001040101010101010101010a 0a010106060101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 0101010101010101010101010101000000000000000035040104010106010101010101010101013b0f0122002d0000000000000000002f371206060201060101 01010101010101010101010101010101010101010101080122000500002f000000000101060601010101010101010101010101010101013b031001061e39352f 2320363c00280000003335001c004900302a2e00002027371f04010e0e40080f00005900001f0c38011615040101010101010101010101010101010101010101 0101010101011e01083d1101010b3833001f00001c20230001010d010c01010a010a0c010027330006160401040e0c0606010d23003500350005000001040101 010101010101010a0a01010606010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101000000000000000035040104010106010101010101010101080116130634232300000000000000002900 2301080d06020c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0d0a3500343300230000000001010606010101010101010101010101010101011101 01120a0f012b0500280000002137230e015801010a01321d0000002f2c00351f0001120b0101011c1d37001b1c23010d40010111111101010101010101010101 010101010101010101010101010101041a01060e170d010059252e1d0000230001010d010c010d0101041106002c1d000108120c01010c0606010d2300350035 0005000001040101010101010101010a0a0101060601010101010101010101010101010101010101010101010101010101010100000001010101010101010101 010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101010101010101160116010301001f0000 000000000000002f0035163b010e0101010101010101010101010101010101010101010101010e011d2e00000542000000000101060601010101010101010101 0101010101010401010d010d03010104351f42440000061040010817010b0100223500001f372e234618030a0102010023052800440001160101570108010101 010101010101010101010101010101010101010101010a0e01081a0a010101350028001b1f27230001010d010c0101040e0101013000052c0f010101010d0c06 06010d23003500350005000001040101010101010101010a0a060106060101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010c40 01010a1629220000000000000000001b2f20230138010a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a080e002e1f2e1f0000000000010106060101 01010101010101010101010101010118120601011e5016010101000113061001010101010401170044281f000022001b00010e120112014b1d004235001b2f01 02080201080e01010101010101010101010101010101010101010101010111010306060151030053442228340023230001010d010c010e01010403063d010e32 0112030c01010c0606010d23003500350005000001040101010101010101010a0a06010606010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 010101010101011109010308120000000000000000001b2f2e00232d000001010101010101010101010101010101010101010101010101182800370030000000 00000101060601010101010101010101010101010101061201011a0201010d090418010101100132160e0f040c0601201f002c220037001c0001111801010100 2a0500250522000101100c130f01010101010101010101010101010101010101010101010101030104010106012c4200372d2e001f37230001010d010c010102 0e010101010311010b0601010a0a0c0606010d23003500350005000001040101010101010101010a0a0101060601010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 01040101060101010101010101011a080108160f010a00000000000000002200442337002f1f0000000000000000000000000000000000000000000000000021 003405002720000000000101060601010101010101010101010101010101010e010104080c1701080c010b1e010f010b1101100f010f40230500280000232d00 1b07160101150453372227001d002200010156010e040101010101010101010101010101010101010101010101010c0110060206002300204400002300002300 01010d010c01060101010108010d030c0401040c01010c0606010d23003500350005000001040101010101010101010a0a010106060101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 00000000000035040104010101010101010101010101010204013801151100000000000000000020001b002f00002e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e 2e2e2e2e2e2e2f37372e351d000000000000010106060101010101010101010101010101010104010c0a0110010412010608010c010632013b11010b01010e1b 000535002700370520011611010a01002500373c002f370003010c32010e0101010101010101010101010101010101010101010101010c13011501000020002f 0025000000002e0001010d010c010d010c0201011001010301010d0101020c0606010d23003500350005370001040101010101010101010a0a01010106010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 0101010101010000000000000000350401040101060101010101010101010101010101010101112d00231d1d0025373737373737373737373737373737373737 37373737373737373737373737370000281d001d0023000000000101060601010101010101010101010101010101010101010101010101010101010101010101 0101010101010c230023000037003500230d0106060c041d00000027001f2f1d00010a02011a010a01160a01060e06060606060606060a060d01040a06010c15 010a05272337002a22001d390027230001010d010c01010101010101010101010101010101010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010000000000000000350401040101060101010101010101010101010101010101010028270034002800000000000000000000 000000000000000000000000000000000000000000000000001f271b280000000000010106060101010101010101010101010101010101010101010101010101 01010101010101010101010101010c230023000037003500230d0106060c180034342f003f003537492d0e021001041101011015110101010101010101010201 38010a01160e3d010020333700204900302a2e000020230001010d010c01010101010101010101010101010101010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101000000000000000035040104010106010101010101010101010101010101010110180100392e35223535 353535353535353535353535353535353535353535353535353535353535352737220000331d0000000001010606010101010101010101010101010101010101 010101010101010101010101010101010101010101010c230023000037003500230d0106060c0101002c00003300002c001b00060e12013b1603380101070c0c 0c0c0c0c0c0c180e010a070d010023212000223c0027321d0000002f2c00230001010d010c01010101010101010101010101010101010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010a01 1001001f4400000000000000000000000000000000000000000000000000000000000000000022000023341b2d00000000000101060601010101010101010101 0101010101010101010101010101010101010101010101010101010101010c230023000037003500230d0106060c2b060100331c00370520051d00350e010f01 150a0116100101010101010101010101160a0102002d30005200002f00010100223500001f37230001010d010c01010101010101010101010101010101010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010101 010101010101120c0802110e00302e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e271d270000372e3300000000010106060101 01010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003500230d0106060c18010120000525281b00 4b001c2f1b000001020c1301180b0a0a0a0a0a0a0a0a110100342c33490037442f2033370107170044281f000022230001010d010c0101010101010101010101 0101010101010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 010101010101010101010101010101060201010d0d060000000000000000000000000000000000000000000000000000000000000000003900052805002d0000 000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003500230d0106060c0a02 03021f2000001b2e00412200222e1b00013d0d08010101010101010101011f0049001f2300292300003000010e0101201f002c220037230001010d010c010101 01010101010101010101010101010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 01040101060101010101010101010101010101010101011002181813013b0101010101010101010101010101010101010101010101010101010101010101011a 2500281d2e000000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003500 230d0106060c010301021a203700002a3600252c1f35003f00301b3500000000000000000000233c0025201f0027203600010101013240230500280000232300 01010d010c01010101010101010101010101010101010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 00000000000035040104010101010101010101010101010101010101010101010108010d320a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a 0a0a0a0a0a0a030135231f002d1f0000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c23 0023000037003500230d0106060c03010d0a01002c0030001d302205001f1b30002c002239352e2e2e2e2e2e2e2e0034000535001b2300000a01120d01010e1b 0005350027002e0001010d010c01010101010101010101010101010101010c0606010d2300350035000537000104010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010100000000000000003504010401010601010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010401000005003500000000000101060601010101010101010101010101010101010101010101010101010101010101010101 0101010101010c230023000037003700230d010601061601060f0101002f00372e230005372e004b001c2e2000000000202e1c004b003520372f1d002a232838 0608014001090c23002300003700230001010d010c01010101010101010101010101010101010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010000000000000000350401040101060101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010101010101010101010101 01010101010101010101010101010c230023000037003700230d010601061201030e013d01002f1f002e0033002727001c1f001c002323001c001f1c00272700 2f002c1c2e001e01030a01170e010c23002300003700230001010d010c01010101010101010101010101010101010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101000000000000000035040104010106010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010101 010101010101010101010101010101010101010101010c230023000037003700230d010601060116010b064e0143010005212e002f2c25002a1f0028442c2c44 28001f2a00252f3400002e370a010c1e110104010a0e0c23002300003700230001010d010c01010101010101010101010101010101010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010401000005003500000000000101060601010101010101010101 0101010101010101010101010101010101010101010101010101010101010c230023000037003700230d010601060c0a02010c010f010f0127002e1f00000000 001f05232800002823051f00000020001d23060c0c0f10380108150101080c23002300003700230001010d010c01010101010101010101010101010101010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101040100000500350000000000010106060101 01010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003700230d0106010601010308010e01560140 38180b0100282f39272e0033004d4d0033002e27392f1c0001011a0e01010101160d061111010c23002300003700230001010d010c0101010101010101010101 0101010101010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104010000050035000000 000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003700230d01060106010c 013d0d1850011e01041601400116061000051c004b00004b001c050010061101151501011304380d1a06010202010c23002300003700230001010d010c010101 01010101010101010101010101010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 01040101060101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010401 0000050035000000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003700 230d010601061001080112010150020116100901170402010a080e014c01014c010e080a01020e010f01090e04080d010108020801010c230023000037002300 01010d010c01010101010101010101010101010101010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 00000000000035040104010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010104010037050035000000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c23 0023000037003700230d01010106010c01080c0c3b010412010c0d010b010e010b06013d010808013d01060b010e010f010a0a0a010a01130d0104010a0b0c23 0023000037002e0001010d010c01010101010101010101010101010101010c0606010d2300350035000537000104010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010100000000000000003504010401010601010101010101010101010101010101010e060d0301040e01010101010101010101010101010101010101 01010101010101010101010101010401000005003500000000000101060601010101010101010101010101010101010101010101010101010101010101010101 0101010101010c230023000037003700230d01060106010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010c23002300003700230001010d010c01010101010101010101010101010101010c0606010d230035003500050000010401010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 0101010101010101010101010101000000000000000035040104010106010101010101010101010101010101010101060601160d0a0a01010101010101010101 01010101010101010101010101010101010101010101040100000500350000000000010106060101010101010101010101010101010101010101010101010101 01010101010101010101010101010c230023000037003700230d0106010601010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010c23002300003700230001010d010c01010101010101010101010101010101010c0606010d23003500350005000001040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010101010101010101060f130d120101030101 01010101010101010101010101010101010101010101010101010101010104010000050035000000000001010606010101010101010101010101010101010101 010101010101010101010101010101010101010101010c230023000037003700230d010601060101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010c23002300003700230001010d010c01010101010101010101010101010101010c0606010d2300350035 00050000010401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010100000000000000003504010401010601010101010101010101010101010101010a01 011001120d0101010101010101010101010101010101010101010101010101010101010101010401000005003500000000000101060601010101010101010101 0101010101010101010101010101010101010101010101010101010101010c230023000037003700230d01060106010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c01010101010101010101010101010101010c06 06010d23003500350005000001040101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000350401040101060101010101010101010101 0101010101012f00001b1a0101030101010101010101010101010101010101010101010101010101010101010101040100000500350000000000010106060101 01010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003700230d0106010601010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c0101010101010101010101 0101010101010c0606010d2300350035000500000104010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101000000000000000035040104010106010101 0101010101010101010101010101231f2c3501120a01010101010101010101010101010101010101010101010101010101010101010104010000050035000000 000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003700230d010601060101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c23002300003700230001010d010c010101 01010101010101010101010101010c0606010d230035003500050000010401010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010100000000000000003504 0104010106010101010101010101010101010101010135000000010a010a01010101010101010101010101010101010101010101010101010101010101010401 0000050035000000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037003700 230d010601060101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c230023000037002300 01010d010c01010101010101010101010101010101010c0606010d23003500350005000001040101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010000 00000000000035040104010101010101010101010101010101010101010127002e1f100e01020101010101010101010101010101010101010101010101010101 01010101010104010037050035000000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010c23 0023000037003700230d010101060101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c23 002300003700230001010d010c01010101010101010101010101010101010c0606010d2300350035000537000104010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010102010108060a0e01010101010101010101 0101010101010000000000000000370e01120d01130c010d0201160c010c0101010101010101370035230a04010c010101010101010101010101010101010101 0101010101010101010101010101013823003723200027002f20160a010201010101010101010101010101010101010101010101010101010101010101010101 010101010101112800231d3700001f00000d0e061101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101112800231d37000000340d0c0c0c1601010101010101010101010101010101010111060e0d00001f00202337002338010101010101010101010d 020c0204010d0101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010c0c03110c0150010606 060606060606060606060606060600000000000000002d0811011638010111010e16013b010106060606060606060023350001040a0606060606060606060606 06060606060606060606060606060606060606060606130100272e00271b2e002e000101010c0606060606060606060606060606060606060606060606060606 060606060606060606060606060601221b00002c2700001d00010a01041006060606060606060606060606060606060606060606060606060606060606060606 060606060606060606060606060601221b00002c27002500010e0101040d060606060606060606060606060606061004010a01001d001b27002e270001130606 0606060606061611010101161a060101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010111 01101201013b01010101010101010101010101010101000000000000000000010455010117380c0101030d013d120101010101010101271d3700060c10110101 0101010101010101010101010101010101010101010101010101010101010d01002f1d053737002e1b000c181604010101010101010101010101010101010101 01010101010101010101010101010101010101010101010028300005001d33330001011810010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010028300005001d0500010a110c01010101010101010101010101010101010101101801010033333737 051d2f00010d01010101010101010d01013b02010801010101010101010101010101010101010101010101010101010101010100000001010101010101010101 010101010101160b13011610010e0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0000000000000000370301010101130101040638010e18010c0c0c0c0c0c0c0c0035 2f00010804010c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0418200000002e271d0000301201010e0c0c0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c013c0023272c002f00052d0d010811010c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c013c0023272c002f2e341201010104080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0111 08010d2d0500272e0000002018040c0c0c0c0c0c0c0c0d01010d0a06123d01010101010101010101010101010101010101010101010101010101010000000101 010101010101010101010101010101060238011d002f3737373737373737373737373737373700000000000000002f2e00003723003806161001052339003737 37373737373701040801002f350037373737373737373737373737373737373737373737373737373737373737370030001d34272e0000051b002000002e3737 373737373737373737373737373737373737373737373737373737373737373737373737373700002a1b37372705392c00340022280037373737373737373737 373737373737373737373737373737373737373737373737373737373737373737373737373700002a1b373727051b0025000037231f37373737373737373737 3737373737370028220034002c39002e27341d0030003737373737373737280000292700251b0101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101183b01010f002c230000000000000000000000000000000000000000000000000523002e1d0001120106 0d1b23352a1d000000000000000011100c0600371d270000000000000000000000000000000000000000000000000000000000000000230020353700272f1d00 001b051c2d370000000000000000000000000000000000000000000000000000000000000000000000000000000022492800221f200000001c00372d20000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022492800221f20001f44002f222f00000000 000000000000000000000000000000202d37001c00002f2700373520002300000000000000002f23002e371b2937010101010101010101010101010101010101 0101010101010101010101000000010101010101010101010101010101010601400a1b351f350000000000000000000000000000000000000000000000002300 2e2e1d000c0d540138002e1c002c0000000000000000060a0401003523000000000000000000000000000000000000000000000000000000000000000000252f 05002f2235002e2e051f00373700000000000000000000000000000000000000000000000000000000000000000000000000000000000035051d1b0000282c37 2e05050023200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035051d1b0000280027 2e27000023270000000000000000000000000000000020230005052e372c0035222f00052f250000000000000000002e2a002e20002a01010101010101010101 0101010101010101010101010101010101010100000001010101010101010101010101010101120d010f00233700000000000000000000000000000000000000 0000000000002323372500010a0c0103001f002e280000000000000000000c01040a233500370000000000000000000000000000000000000000000000000000 0000000000002336372322370020002f23001d05372f000000000000000000000000000000000000000000000000000000000000000000000000000000002000 3422001b2e2f001b001b2f0028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000 3422001b2e2f25001d05002f1b00000000000000000000000000000000000028002f1b001b0020003722233736230000000000000000300021001f2e25100101 010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010c110100002d002e2323232323232323001f 202e1f22002f1f371d002f0020371f232300000d0a01010d332000372a2023232323232323230112040c37351f00232323232323232323232323232323233600 27210035052827002f00352d00282323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323 23232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323 2323232323232323232323232323232323232323232323232323232323232323232323232323001f002d000023000000200034001b2323232323232323232c22 002337371b0301010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010108013b532a2200200000 00000000000005270000001d2a00002e002500053a3700281f2e010c0b120135002c2c30350000000000000000000e0c01402100370500000000000000000000 000000000000003f0500351f1b0000302d002205371f000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d23372e001d222f283700201d202e350000 00000000000000252c00331b0111010101010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101040c 3435002d2537000000000000000027232e492c00200000372822050500221c002800170b010612282700220020200000000000000000061a3801002533000000 0000000000003737373737373737332200362c2700221b2c3801121b340000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002300252f000000231f35 00230028000000000000000000003544002800000301010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101433c003428352e2e2e2e2e2e2e2e2e0000002e35002f1b272e20001b2d2f28222c2e08010c1212002e001f2a231c002e2e2e2e2e2e2e2e060e 01101d0005002e2e2e2e2e2e2e2e373737373737373723002a22002f1c1b000b0401023700302e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e 2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e 2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e5322 2e002f1c2d2700002a37372e2a052e2e2e2e2e2e2e2e22372d202e01030601010101010101010101010101010101010101010101010101010101010000000101 010101010101010101010101010111110029000035000000000000000000231c300028210000001b354405002f00000013041701010505001f1f002805230000 000000000000100a01101d00231d00000000000000000000000000000000051f37202849002e0106013811360037000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000002f052f050000003f050030000035370000000000000000002f0035130301110101010101010101010101010101010101010101010101010101 010101000000010101010101010101010101010101010901013d010b13010101010101010101120a0106010438012c28001d00271d1001120a01012b01030115 01010101010e010101010101010100350500060e0401010101010101010101010101010101011806080a0e04012d0000002d0d09010a01010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010f010e110e013d010000390d01010f0a010101010101010108160408010d010e010101010101010101010101010101010101 0101010101010101010101000000010101010101010101010101010101010d011e0301010e130d0d0d0d0d0d0d0d0c021501080301170000392a2c002f011718 010f1e0a0e0c1801161201130d0b0d0d0d0d0d0d0d0d053700230a010c0e0d0d0d0d0d0d0d0d0a0a0a0a0a0a0a0a010102011101002e22353a00010211130d0d 0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d 0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d 0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d010d101101093000522a0006180a10010d0d0d0d0d0d0d0d0801030c0309010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010c09011a01040101010101010101010113013d01160409281f2d 0000272c0e0e01010f06010f011312040f011201040101010101010101011f00231f120a01120101010101010101010101010101010102150117060037232e2c 00020804010601010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010102100116040c002000340001060a01160101010101010101014c0104010401030101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010106 010104010435001c23002c0008060101010101010101010101010101010101010101010101010000000001010606010101010101010116040110010810010d0c 13012e220000200500013b013d060101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101081101110d0640010608130d012f2737220001021001010e01010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 0101010101010106010104010435492f2f0023160602010101010101010101010101010101010101010101010101000000000101060601010101010101010e01 0803010d0d3216010800003705232e000c0f060f0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010608100301010819010a0100001d050001071201020d060101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 010101010101010101010101010101060101040104350000341b0001160c01010101010101010101010101010101010101010101010100000000010106060101 01010101010101070101013b0a011837200049422d001c010a0d060a010e01010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101040e030106070e1e0a1a0300283f00051a11 4e015001010e01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010601010401043527002e1d2c510a0a0101010101010101010101010101010101010101010101010000 0000010106060101010101010101030d01100a011e071c001f4b00440033104c010e0112010c0101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c010301013801010401 272e23213701010e0403011838160101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101060101040104351b001b2f00011201010101010101010101010101010101010101 010101010101000000000101060601010101010101010d01011613040d36370500221f003c110c010d3d0401110c010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011601 01180c01030b0f01000031001d01320c0a015017013b010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010000000101010101010101010101010101010101010101010101010101010101010101010601010401043500002c280001130101010101010101010101 010101010101010101010101010100000000010106060101010101010101010a0108013d3c003700444b00010106163d0e060109080101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101011004010101101a0101003924001d0a12011a090f0901180101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101060101040104353900001f2112010f0101 0101010101010101010101010101010101010101010100000000010106060101010101010101010f0212102820372f05001d27020d0e090101120908011e0101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101081301080301380027230028000101170401160116011a0101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101040104352e00 281f00100d0601010101010101010101010101010101010101010101010100000000010106060101010101010101040a040100250030351f2000011601120101 0413010e320101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010d011601100150202d002e252000011301120e1004061306010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010c01 013d0c0a001b000530000015010301010101010101010101010101010101010101010101010100000000010106060e010108010c030101010123002e00001f00 000138013d0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101100e0a130d2e002f001d23000d0801010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 010101010101010410010a1a4f002c000500000102040101010101010101010101010101010101010101010101010000000001010606040101060f1601010d01 00331b000033000001090d0801060101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010119010c0d010a2e3c3900350d01060c1801010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010601014301010005372a302f2a000e010101010101010101010101010101010101010101010101010000000001010606014e 01040101040401003400001d33354901160101120a01010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101030619010e003728002308190c18010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 010101010101010101010101010101010101010101010a0a0f01010425223300281d003001060101010101010101010101010101010101010101010101010000 00000101060615010804100101002f353939303542001a3d010b120a010b01010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101110616040127004d0034 00011001011a01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010106011201111137001f270022052e0006010101010101010101010101010101010101 010101010101000000000101060603430d03011800343722000037000c010106031201013d010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010301 02010a0021002837220d014c06020101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010601010716011c2e002722002337294c01010101010101010101 0101010101010101010101010101000000000101060601010e0128272f332a003622010d120b0302010e0111010e010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101160c11222c270522001d0111011201010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010c121101080243231d0000282f0000010101 0101010101010101010101010101010101010101010100000000010106063b112e1b00004b00003c0001010b04010201010c1616011301010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101110b0100272323212f220f080e011601010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101160109080801000033 2e0029233711010101010101010101010101010101010101010101010101000000000101060601000500372e002f2c0101160201040d01010109010415010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101040e22222e0000002c0e18010e0e060101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010a02 0a06010b010022272500201f001c011e010301090d010111010c0d1001120c03010a0e0406040000340001100d01010030002800000501010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010e12011d00332237230001010d010c01010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 0101010101010601010f1312012c2e00281c2e001f00160116150111010f160101010e0a0801080c01010c1301080005002001020113001d352e1f1c27080101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010111131c00000030230001010d010c0101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010e0e0c01010d4a00222c00352800052800010e010916430d06010b0b010110160c01180b0112011627284900372200290000 373c0000011801010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010f082c20372a3300230001010d010c010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 010101010101010101010101010101010101010101010c0a01010b0d011600001c00002700001b0021160a11010c0f120110010906010f01040301081e381b23 002a00251f00271c25000101110d0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c1a00001b1d35052300 01010d010c0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 010101010101010101010101010101010101010101010101010101010101011116010e04183b0123002c27271b3f2d1b0028010d111a011201061112010f0e0f 01041a0a0e012e00010128003000232300010e010d04010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 291b1b00001c230001010d010c010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010b01010c0b1608010d222c001c2700200023340001010e010403 1a011801061601013b111601400b010c010b1f000000004901181901090601010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101011301003405221b00230001010d010c01010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101060c0e10010101090a01012e00331c3c3600 2c35050000000a0101180111100c0d1604012a004723110a1801372f2f00120e0404010f18010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010b48001f00002e230001010d010c0101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010104010101090a010101 01222e001b0028001d20001f33231f002f1b10080112040123000534001c0110061023000102011801023b010c10010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101011001002135002c002e0001010d010c010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 010101010101010b010c001d1f05352e0035002f280037373737373737371b00231b002c2e000138040116040118010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010d0e25000500352e002c01010d3d01110c01010d01040a012b010c160138010e0101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 0101010101010101010101010101061106010a000000371d002d1d232e270000000000000000001b2200302f051b120c2e00010b010601010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010112121b201f002337281d00011601070f01171806090201170112 1a020e0f010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101040113013b010128052a2d2500002700353535353535353520001d291c0000032e001f230e0118040101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101062d22000022343c004601130b010c3b01 03010d3b060a1103040100052f000101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 0101010101010101010101010101010101010101010101010101010101010e06030d010816041f002300302c271c000000000000000000302200040113013000 23000e110a3d01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101030100001c281b00352d 0001010108110111011e020145080e04010000393536010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010112014301061a08012f443422003c002e2e2e2e2e2e2e2e2722 010a01380d0c00240027014001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201 0034330005052e2c2d00040301010c0d08010f01010c12013b371d2a000901010101010101010101010101010101010101010101010101010101010101010101 010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010901060603010c0d0c114005003500370000 0000000000000111180440060d103c001d37170d1a1a010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101031801002e41202e3400422c0001010f02012b0d11041616010d27252f001d010101010101010101010101010101010101010101010101010101 0101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010116180c063d01011304 013e010110010101010101010101113d011816011601002c3400010e030101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010117010d163f0000272d1b1d002705203503400112010d2c1f003c00003733040e010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010301 01010c011001010913010f3b01110a0a0a0a0a0a0a0a0a01180c010113021f002800010201030101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101011a030100252d0000232c2e3035003c00250025002c00282e27001f0001110e01010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010108030a010a11010101010101010101010000000001010606010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010e170138010023282d000033372e1f002e000039002322002d003a00010201010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010e040a010b0e0101010101010101000000000101060601010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010103011201002300331d003400273435362200001d0025001d 37000101040401010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101011a020a06040117010a0a0a0a0a0a0a0a00000000010106060101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010d010401040401252c001d2d222e2f002d00 271c2030000531002f013201090c0101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010106041212120101010101010101010000 00000101060601010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010c011004110126100100 27280000000000001b000029002a1e01062b01090101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010b1e1a01010201180606 06060606060600000000010106060101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010611 010e1e08010c030c1f201b2122231f2400251d000001011a010102010d1201010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010a0f01040a0a0a0a0a0a0a0a0000000001010606010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010d13010c0d1a08010618010000001b1c001d0001010c080103060b110116080101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010c011211130114010101010101010101000000000101060601010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010115010e091601010b171801190101161601010101120608061001010f01011201010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010201030104020505000000000000000000000000010106060101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 0101010101010101010101010101010101010101010101070801090a0101010202060b0c0d010e0c020601030e0101010f011003011101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010100000001010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010000000101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010000000101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010100000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 Here the before cursor is before the clump containing the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs83\b\f314\insrsid1006136\charrsid5707854 r}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid5707854 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.1.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Basic Principles \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One of the basic principles of split cursors is that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 you can only be at one place in the underlying text}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Here is a typical approach to cursor placement in a complex rendering system. \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard\plain \ltrpar\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls30\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The user clicks the cursor down somewhere on the text on the screen. \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls30\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The application asks Graphite where the cursor has been placed. \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls30\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite calculates a position in the surface glyph string for the cursor, including in this attached glyphs, etc. It then returns either an underlying position the cursor is before or an underlying position the cursor is after depending o n where the click occurred. \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls30\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite returns the position for the split cursor. \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid1006136 \loch\af0\dbch\af0\hich\f0 \'95\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls30\pnrnot0 \pnstart1\pnindent360\pnsp120 {\pntxtb \'95}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The application tell Graphite to show a split cursor on the screen. \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Another important principle is that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid1006136 editing is done on the underlying text}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . This means that handling backspace}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 backspace}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is the duty of the keyboard handler in conjunction with the underlying text directly. The renderer only deals with rendering that edited underlying text. The keyboard handler does not work via the renderer since the rendered form o f the text is not held anywhere, except for display purposes. \par Arrow keys}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 arrow keys}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 should endeavor to move through the surface text, although to what extent this relates to attached glyphs is up to the application. Arrow keys should also endeavor to move in the direction indicated regardless of directionality of the text. This requires interaction with Graphite. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.1.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Before & After \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 After Graphite has finished dealing with all the associations, insertions, deletions, etc. the final result is for Grap hite to know, for any position between two characters in the underlying text, what positions in the surface text this underlying position is before and after. Likewise it also knows the reverse information of how a position between two surface glyphs maps to before and after positions in the underlying text. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.1.3.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Insertion}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 & Deletion}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The default behavior of inserted and deleted glyphs which have not been associated is not immediately obvious. As a result, it is best never t o rely too much on the default behavior. By looking at a rule it is almost impossible to work out all the implications of the defaults without running the cursor tracking algorithm by hand. Having said this, the results of the default behavior are very na tural and may be relied on to give some sort of behavior which a user might expect. \par For completeness, though, the default behavior is described here. \par {\listtext\pard\plain\ltrpar \s5 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\fs22\insrsid1006136 \hich\af0\dbch\af0\loch\f0 6.1.3.1.1\tab}}\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Insertion}{\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar\tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 An inserted glyph is not accessible from the underlying text. There is no underlying cursor position which maps to a position which can interact with the inserted glyph. \par On the surface, placing a cursor before an inserted glyph results in an underlying position before the following glyph. Likewise placing the cursor after an inserted glyph results in an underlying position after the previous glyph to the insertion point in the underlying text. \par {\listtext\pard\plain\ltrpar \s5 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\fs22\insrsid1006136 \hich\af0\dbch\af0\loch\f0 6.1.3.1.2\tab}}\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Deletion}{\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar\tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 A deleted glyph is not accessible from the surface text. There is no surface position which results in an underlying position before or after the deleted glyph. \par In the underlying text, a position before the deleted glyph results in a surface position of before the following glyph, and a position after the underlying glyph results in a surface position after the previous glyph. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.1.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Insert}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2369896 attribute}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Attribute \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7490867 The}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid7490867 insert }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7490867 slot}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 impacts how cursor tracking works. By default all slots have this attribute set to true. When attachment is done, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is set to false. Of }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7490867 course,}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid7490867 insert }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7490867 can}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 also be set explicitly to 1 (true) or 0 (false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12727609 ). \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7490867 When}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid7490867 insert }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7490867 is}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 false on a slot, the cursor is never placed between th}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid544302 e }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4864337 (first) }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid544302 corres\-ponding character }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6633322 the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid544302 character}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6633322 that preceeds it}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid544302 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6237696 Note that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6237696\charrsid7215101 the}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid6237696\charrsid7215101 insert }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6237696\charrsid7215101 attribute}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6237696 really affects the corresponding }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid6237696\charrsid6237696 character,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6237696 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9503813 since that is what insertion bars are associated with, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6237696 not the glyph itself.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6294731 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 When the user clicks at a location }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7215101 where}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid7215101 insert = false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid7215101 , Graphite}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 will move the insertion to one side or the other, to the closest legal insertion point. Similarly, if the application program tries to set an insertion point at a place in the underlying text that would correspond to one of these invalid locations, Graphite will }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7811488 suggest an alternate}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 legal position.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7811488 (However, ultimately it is up to the application whether or not it abides by the insertion information Graphite provides.)}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6294731 {\*\bkmkstart _Toc441048647} \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid6294731 \hich\af143\dbch\af0\loch\f143 6.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid6294731 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6294731 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 {\*\bkmkstart _Toc40864623}Pseudo-Glyphs{\*\bkmkend _Toc40864623}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid6294731 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pseudo-glyph}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 {\*\bkmkend _Toc441048647} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid2170323 The}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid2170323 pseudo}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \cs82\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid2170323 {\xe {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid2170323 pseudo}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid2170323 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid2170323 di}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rective synthesizes a new glyph, just as if the font designer had copied an existing glyph to an unused slot in the font and assigned it a Unicode }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6967300 value.}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par Consider an example: suppose a script-engineer wants to support a special variant of A which has been given a PUA allocation of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 0xf141}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . He could be tempted to map it straight to the glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 u(0x0041)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . But, apart from not being able to, he wants to be able to position this new glyph differently from }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 u(0x0041)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . So he includes the following statement: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 GP1 = pseudo(unicode(0x0041), 0xf141) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This command does two things. First}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6967300 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 it }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6967300 has the effect of creating a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 new glyph in the font.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6967300 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 It finds a spare glyph number (as suming the font hasn't filled its 64K allocation of glyphs, in which case an error is raised) and assigns this to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 GP1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4597251 Second, w}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 hen initially processing the input, it maps the Unicode codepoint }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 0xf141 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6967300 to the pseudo-glyph. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4597251 A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 t the very end of processing, it will convert any instances of this pseudo-glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8468716 to be the glyph associated with U+0041. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In other words, our pseudo-glyph will look like an A. \par In fact, if two Unicode codepoints are mapped to the same glyph by the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 cmap}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cmap}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , one of them will be automa tically mapped to a pseudo-glyph and then mapped back at the very end. This ensures that two codepoints can be treated differently within the rule matching which follows. This auto generation of pseudo-glyphs can be disabled by assigning }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 0}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 AutoPseudo}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 setting at the beginning of the GDL file. \par Notice that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid16678386 the}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 unicode}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \cs82\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid16678386 {\xe { \rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 unicode}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid16678386 and}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 codepoint}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \cs82\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid16678386 {\xe { \rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 codepoint}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid16678386 functions}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 will return the glyph that the Unicode value has been mapped to within the program. This may be a pseudo-glyph ID or a real glyph ID. For the most part this is the expected behavior. But should a GDL author require access to the real glyph ID of a glyph, regardless of whether it is pseudo or real, he can use }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid16678386 the}{ \rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 glyphid }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid16678386 function}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 which guarantees to return the real glyph ID (the one which a pseudo glyph will revert to at the end of all the processing). \par As we saw in the example, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid16678386 the}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 pseudo}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \cs82\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid16678386 {\xe { \rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 pseudo}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid16678386 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid16678386 function}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 does two things: creates a pseudo-glyph mapped to a real glyph during output, and maps a Unicode codepoint to a pseudo-glyph. It is not always necessary to do the latter mapping, and}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid16678386\charrsid16678386 pseudo}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \cs82\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid16678386\charrsid16678386 {\xe {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid16678386\charrsid16678386 pseudo}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid16678386\charrsid16678386 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 may be used with just one parameter to create a pseudo-glyph mapped to a real glyph. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pseudoX = pseudo(unicode(0x002C)) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This is useful if two identical glyphs need to be rendered with the same glyph but positioned differently. The positioning rules may not be able to express the complex contexts involved and using a different glyph may fix the problem. \par The following statements: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 p1 = pseudo(u(0x002C), 0x201A)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12461773 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \line p2 = pseudo(u(0x00AE), 0x201A)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12461773 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are in error. It is an error to try to manually map a Unicode codepoint twice. The automatic creation }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13062857 of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pseudo-glyphs can be overridden but not twice. \par {\*\bkmkstart _Toc441048648}{\*\bkmkstart _Toc40864624}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.3\tab}}\pard\plain \ltrpar \s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid6294731 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 User-definable}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid6294731 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 user definable attributes}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid6294731 Slot}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Attribute}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid6294731 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s{\*\bkmkend _Toc40864624} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In addition to the slot attributes mentioned above, there is also a set of user-definable slot attributes that can be used in any way the programmer deems helpful. The names of these slot attributes are }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user1}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 user1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ,}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ,}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , \'85 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user64}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . It is generally most helpful to use }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid2195324 the}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid2195324 #define}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \cs82\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid2195324 {\xe { \rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid2195324 #define}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid1006136\charrsid2195324 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid2195324 mechanism}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to give the attributes more meaningful names. \par These slot attributes can be used to communicate information between passes. For instance, one pass might set a flag based on the sequence of glyphs it encounters, and a subsequent pass could perform a substitution or adjust the position of glyphs based on the value of the flag. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par #define raiseFlag user1 \par \line table(sub)\line \tab // record the fact that the tone mark needs to be raised,\line \tab // and delete the character that should not be displayed\line \tab clsToneMark gRaiseMark > @1 \{ raiseFlag = true \} _;\line endtable;\line \line table(pos) \line \tab // shift the tone mark up if the raised flag is set\line \tab clsToneMark \{ shift.y = 100m \} / _ \{ raiseFlag == true \};\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par Note: in order to minimize the amount of memory required by the Graphite engine, it is strongly recommended that you use consecutive, low-numbered user-definable attributes rather than an arbitrary set of these. For instance, it is preferable to use the following: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #define vowelMarker user1\line #define diacMarker user2\line #define consMarker user3 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 as opposed to: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 #define vowelMarker user10\line #define diacMarker user56\line #define consMarker user28 \par {\*\bkmkstart _Toc40864625}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.4\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Backing up}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 backing up}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 the Stream Position{\*\bkmkend _Toc40864625} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Due to the way Graphite manages the process of matching rules, it is possible to write rules that cause the stream position to move backwards. Consider the following: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsVowel > clsVowelAlt / ^}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2195324 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 clsCons _; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Before this rule is matched, the position of the stream is considered to be just before the vowel, but after the rule fires, the position of the stream is before the preceding consonant. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6294731 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In order to allow this phenomenon to occur, it is necessary}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6294731 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to set the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxBackup}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6294731 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directive to some positive number. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 should be set to the number of successive slots that need to be backed over as a unit. If }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is not set high enough to handle a sequence of back-up operations, the processing will simply keep the position of the stream unchanged. For instance, if the above rule is included in a pass and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 equals zero, the stream position will not be set before the consonant, but will be left before the vowel. You will likely need to set }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxRuleLoop}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6294731 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MaxRuleLoop}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to at least twice the value of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.4.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Example}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 example}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This back-up mechanism can be used to handle a sequence of modifications that are based on first recognizing the end of the sequence. Suppose you want to change a sequence of the letter A t o alternate between two forms, A1 and A2, but with the final item always being A2 regardless of whether there is an odd or even number in the sequence. You can use the approach of first recognizing the end of the sequence and using the back-up mechanism t o modify each previous item based on the following one. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 should be set to the maximum expected length of the sequence. \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 // For marking the elements of the chain of alternating items:\line // 0 = not in chain; 1 = change to A1; 2 = change to A2\line #define Alt user1 \tab \par table(sub) \{MaxRuleLoop = 20; MaxBackup = 10\} \par }\pard \ltrpar\s31\ql \li1080\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1080\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 // Beginning of sequence: another A follows this one;\line // keep going forward till we hit the end of the sequence:\line gA > @ / _ gA \{Alt == 0\}; \par // Found the end of the sequence; start a chain and back up;\line // mark this first A to be changed to A2:\line gA > @ \{Alt = 2\} / ^ ANY _ \{Alt == 0\}; \par // Continue backwards; mark this A the opposite of the\line // following one:\line gA > @ \{Alt = 2\} / ^ ANY _ \{Alt == 0\} gA \{Alt == 1\};\line gA > @ \{Alt = 1\} / ^ ANY _ \{Alt == 0\} gA \{Alt == 2\}; \par // Special case: hit the beginning of the sequence with\line // no glyph before:\line gA > @ \{Alt = 2\} / ^ _ \{Alt == 0\} gA \{Alt == 1\};\line gA > @ \{Alt = 1\} / ^ _ \{Alt == 0\} gA \{Alt == 2\}; \par // When going forwards: switch to the alternate form:\line gA > gA1 / _ \{Alt == 1\};\line gA > gA2 / _ \{Alt == 2\}; \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 endtable; \par {\*\bkmkstart _Toc40864626}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Justification{\*\bkmkend _Toc40864626}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justification}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Graphite includes various mechanisms to allow a range of text to be fully justified to a specific width as requested by the application. Justification can be performed by techniques such as kerning}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kerning}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to adjust the amount of space between glyphs, insertion of kashida}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kashida}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s (extender glyphs to create stretch within cursive}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 cursive}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 script), subst itution of glyphs of varying widths, and creation or removal of optional ligatures. \par Justification may involve either stretching or shrinking the line to fit a given amount of space. The techniques to stretch}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and shrink}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 shrink}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 a given glyph may be quite different. For instance, it may be possible to stretch a glyph by following it with kashidas, but shrinking is not possible using this technique, and must be achieved through kerning or glyph substitution, or may not be possibl e at all. \par Keep in mind that many applications that support full justification use only stretching, not shrinking. In other words, they never attempt to fill the line beyond what will naturally fit, so shrinking is never necessary. For this reason, shrinkin g is most useful within applications providing high-end, sophisticated paragraph and text layout. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Justification Overview}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justification}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1444730 \:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 overview}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Justification is performed by setting justification-related glyph attributes and adding appropriate rules to the rule tables. These attributes and rules take effect in two stages. In the first stage, each glyph is assigned a potential stretch}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or shrink}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 shrink}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , indicating how much it is possible to adjust the width of the glyph. The second stage involves using the actual assigned width to modify the glyphs and actually achieve the desired width. \par More specifically, justification is incorporated into the Graphite processing model as follows: \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Stage 1 \par {\pntext\pard\plain\ltrpar \s66 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s66\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls35\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls35\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyphs are initialized with }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 glyph attributes}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , which may include those related to justification. \par {\pntext\pard\plain\ltrpar \s66 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s66\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls35\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls35\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 substitution table}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 may include rules to set the stretch and shrink values of each glyph and related information. Note that this is the }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 potential}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , or maximal, adjustment, not the exact adjustment. \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The bidi table is run as normal. \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 After the bidi table, the}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 justification routine}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 determines where adjustments should occur to create the necessary width. This routine is implemented by the application, and therefore may differ somewhat in i ts exact effects from one application to another. \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Stage 2 \par {\pntext\pard\plain\ltrpar \s66 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s66\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls35\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls35\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 justification}{\pard\plain \ltrpar\s66\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls35\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls35\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{ \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 justification table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is a special substitution table that runs following the justification routine. Its purpose is to perform substitution s that are needed to achieve justification, such as replacing a narrow glyph with a wide glyph, or inserting kashida}{\pard\plain \ltrpar\s66\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls35\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls35\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kashida}}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. \par {\pntext\pard\plain\ltrpar \s66 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s66\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls35\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls35\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 positioning} {\pard\plain \ltrpar\s66\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls35\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls35\adjustright\rin0\lin720\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 positioning table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 may include rules to adjust the positions of glyphs as needed for justification. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Default Basic Justification}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid14818678 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14818678 justification\:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 default}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14818678 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The Graphite system provides basic white-space justification}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4208203 justifica}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14818678 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4208203 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14818678 on\:white-space}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , involving the capacity to stretch}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 white space up to 100 times its natural width and shrink it to 75%. This behavior is implemented at level 0, the \'93emergency stretch\'94 level (see the discussion of justification levels below). You may override this behavior in your GDL program if you so desire. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Global}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 global state variable}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 State Variable}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 variable}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Global state variables are available to test the state of justification-related processing. These variables can be used within rule constraints to determine which justification-related rules, if any, should be fired. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.3.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 JustifyMode}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 JustifyMode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The JustifyMode variable indicates the justification mode in which the engine is being run. In other words, it indicates whether and how the application is interacting with the Graphi te engine in order to generate justified text. There are three possible modes: \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f3\fs20\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 JMODE_NORMAL}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash no justification is desired; the justification routine is not run. \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f3\fs20\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 JMODE_JUSTIFY}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the justification routine will be run in order to produce justified text. \par {\pntext\pard\plain\ltrpar \s65 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \cs30\f3\fs20\insrsid1006136 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s65\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls34\adjustright\rin0\lin360\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 JMODE_MEASURE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash used by applications that are doing sophisticated high-end justification. The \'93measure\'94 mode allows the application to measure the width of text before actual layout in order to determine where to place line-breaks. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.3.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 JustifyLevel}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 JustifyLevel}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5059405 Eventually we anticipate four}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 possible levels of justification rules, depending on how much adjustment is needed, and JustifyLevel indicates which level is being applied. It is generally considered during Stage 2 to determine which rule s to fire. The standard levels are 1, 2, and 3, where in general the higher level represents the more extreme or invasive approach. Level 0 represents an \'93emergency level\'94 , and as such the application may decide to take a different approach than what is specified by the GDL rules. See the discussion of justification levels below.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5059405 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10755847 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid5603171\charrsid5603171 Note: a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid10755847 s of Graphite2 version 1.3.12}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid7498831\charrsid5603171 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid5059405\charrsid5603171 only one}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid7498831\charrsid5603171 justification}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid7284323 level is supported. T}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid14048223 he JustifyLevel variable should not be used.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid5059405\charrsid5603171 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Stage 1: Specifying Potential Stretch}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and Shrink}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 shrink}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are several attributes that can be used to indicate how much, and in what ways, a glyph is permitted to stretch and shrink. These exist as both glyph and slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.stretch}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 justify.stretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.shrink}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 justify.shrink}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attributes indicate the maximum amount by which the glyph can be stretched and shrunk, respectively. The value is in em unit}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 em unit}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. For example, the following indicates that a space character ca n be stretched to 10 times its natural width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10032279 (increased by 900%) }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and shrunk to 75%. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gSpace \{justify \{stretch = aw * 9000; shrink = aw / 4\}\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Note that the values of these attributes indicate the amount by which the width can be }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 adjusted,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 not the total fin al width. Also note that the value of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.shrink }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is always positive. \par In some cases width can be adjusted only in increments. For instance, when inserting kashida}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kashida}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s, the adjustment must be made in strict multiples of the width of the kashida. The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.step}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 justify.step}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute can be used to indicate this; its value is the width of the increments. For example, the following permits the insertion of up to 5 kashidas: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gKashida \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid995967 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 incWidth = aw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid995967 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \}; \par clsLetter \{justify \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid995967 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch = gKashida.incWidth * 5;\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10032279 \tab \tab \tab \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 step = gKashida.incWidth \}\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 When substituting one glyph for another,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.step }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 can be used to indicate that the adjustment must be exactly the difference of the widths of the two glyphs: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gNarrow \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid995967 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 xWid = aw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid995967 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \}; \par gWide \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1986070 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justify}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15037952 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1986070 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15037952 shrink = aw \endash gNarrow.xWid;\line \tab \tab \tab \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 step = -justify.shrink\}\}; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 If the step value is positive it applies when stretch}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ing, and if negative, it applies when shrink}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 shrink}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ing. If a step value is needed for both st retching and shrinking, two separate justification leve}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8877048 ls must be used (although this is not supported as of Graphite}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10755847 2 version 1.3.12}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8877048 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.weight}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 justify.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute can be used to indicate that some glyphs should be given preference in deciding how to distribute width adjustments. Assigning a glyph a weight of 10 means that it will receive 10 times as much adjusted width (if possible, given its total stretchability) as a glyph with weight 1. The default weight is 1, and the maximum wei ght is 255. In the following example, we use the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.weight }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute to prefer stretching of white space over intra-word stretch: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gSpace \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justify}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch = aw * 9000; weight = 10}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \}\} \par clsWordForming \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justify.stretch = 100m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \} // default weight = 1 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 equivalents for each of these attributes that can be used within rules. For instance, the following rule uses kerning in sequences such as \'93WA\'94 and \'93VA\'94 to remove the illusion of white space between the diagonal strokes. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (gW gV) \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justify.shrink = 100m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6441627 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \} / _ gA; \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.4.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid14818678 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Trailing White Space}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid14818678 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 white space, trailing}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid14818678 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 trailing white space}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid14818678 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid14818678 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14818678 justification\:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 trailing white space}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14818678 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 If part of your strategy is to stretch}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 stretch}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 white space, you will need to include a rule to remove the stretch from white space occurring at the end of the line, since it is not part of the line\rquote s visible width. The following is an example of such a rule that will handle up to five trailing space characters: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 gSpace \{justify.stretch = 0\}\line \tab / _ [gSpace [gSpace [gSpace gSpace? ]? ]? ]? #; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (Note that this happens automatically for the built-in white-space-stretching capability that is provided at level 0.) \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 6.5.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Stage 2: Performing Justification}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justification table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 rule tables}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The justification routine, which is run just after the bidi}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bidi pass}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 pass, sets the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.width }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute for each stretchable or shrinkable glyph to the desired amount of adjustment. This value is used during stage two\emdash within the justification and positioning tables\emdash to determine how, and how much, to modify the glyphs. \par Rules to handle justification by kerning}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kerning}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are placed in the positioning table, along with all the other positioning rules. A simpl e example is shown below. It is good practice to test the JustifyMode}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 JustifyMode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 variable to ensure that rule is only fired when justification is needed: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(pos) \par if (JustifyMode == JMODE_JUSTIFY)\line \tab someGlyph \{adv.x += justify.width; justify.width = 0\};\line endif; \par endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 It also is good practice to subtract from}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.width }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 any width that is being handled by the rule, so here we set the value to zero. This is not actually necessary when your program includes nothing but simple justification, but it becomes more important when you begin working with multiple rules and strategies. \par Justification-related substitution}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 substitution}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s, insertion}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insertion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s and deletion}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 deletion}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s are performed in the justification} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 justification}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 keyword}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 justification table}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or \'93just}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 just}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109\charrsid481109 keyword}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \'94 ) table, which is run after the substitution table and bidi pass (if any) and before the positioning table. Again, you will want to test the value of JustifyMode so that the rule is fired only when justification is necessary. \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(just) \par if (JustifyMode == JMODE_JUSTIFY)\line \tab gStandard > gWide\line \tab \tab / _ \{justify.width >= justify.stretch\};\line endif; \par endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The rule above substitutes a wide version of a certain character for the standard version. The rule use s the constraint to make sure that the amount of additional width assigned to the original glyph is at least equal to the amount of stretch that will be achieved by making the substitution. \par A more complete example}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 example}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 below shows how to adjust th e width of a glyph using a combination of substitution and positioning. The amount of stretch available equals the difference between the wide and standard glyphs, plus a small amount of additional kerning}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kerning}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 table(glyph) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \tab gStandard \{\line \tab \tab wideGlyphDiff = gWide.aw \endash aw;\line \tab \tab justify.stretch = wideGlyphDiff + 100m\}; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 endtable; \par // no rules needed in the substitution table \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(just) \par \tab // rule 1\line \tab gStandard > gWide \{justify.width -= wideGlyphDiff\}\line \tab \tab / _ \{justify.width >= wideGlyphDiff\}; \par endtable; \par table(pos) \par \tab // rule 2\line \tab (gStandard gWide) \{adv.x += justify.width; justify.width = 0\}; \par endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This example shows why it is a good practice for each rule to subtract the \'93handled\'94 width from}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Rule 1 subtracts the width handled by virtual of substituting the wide glyph, leaving the remaining width to be handled within the positioning table using kerning (rule 2). \par Notice that (because}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.step }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is not set), the assigned width may be less than}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 wideGlyphDiff}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , in which case all the stretch will be handled by rule 2. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid3609042 \hich\af143\dbch\af0\loch\f143 6.5.6\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid3609042 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 Tips and Tricks \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid3609042 \hich\af143\dbch\af0\loch\f143 6.5.6.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid8155096 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 Kashida}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid8155096 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5777649 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9270955 k}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649\charrsid13788639 ashida}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar \s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid8155096 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid8155096 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8155096 justification\:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 using k}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649\charrsid13788639 ashida}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8155096 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 Insertion \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3609042 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2977846 To use kashida insertion to accomplish justification, you would set the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid2977846\charrsid2977846 justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4263887 step}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid2977846\charrsid2977846 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2977846 attribute to the width of the kashida that can be inserted. The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid2977846\charrsid2977846 justify.stretch }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2977846 attribute will generally be set to a multiple of the width of the kashida, the number of kashidas that can be inserted.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2561874 These attributes could be specified either in the glyph table alone or also using a rule in the substitution table. Then }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4263887 the justification table will contain }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2561874 the rules }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4263887 to actually insert the kashida, and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2561874 the number of kashidas to insert would be based on the value of the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid2561874\charrsid4263887 justify.width }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2561874 attribute (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4263887 as it}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2561874 was set by the justification module which happens between the running of those two tables).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 The following shows an example where a feature is used to control the amount of stretch permitted. Note that the rule in the justification table uses the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11731076 scan position }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1836536 adjustment mechanism to repeatedly insert kashidas until all the assigned width has been accounted for.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 Setting MaxRuleLoop}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3609042 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid481109 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid481109 MaxRuleLoop}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 to something relatively high is useful when this mechanism is operational.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid13592443 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid13592443 table(glyph) \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9711046 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 \tab gKashida = glyphid(\'85) \{ xAdv = advancewidth \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 \par \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 clsCa}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 nTakeKashida \{ kStretch = gKashida.xAdv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6694521 ;\line \tab \tab \tab \tab \tab \tab \tab \tab justify.step = kStretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443\charrsid13592443 \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid13592443 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid13592443 endtable; \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid9711046 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid9711046 table(subs) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 // The \lquote stretch\rquote feature indicates how much stretch we allow.\line if (stretch == maximum)\line \tab clsCanTakeKashida }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6694521 \{ justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 stretch = kStretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6694521 * 5 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046\charrsid13592443 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 endif;\line if (stretch == medium)\line \tab clsCanTakeKashida }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6694521 \{ justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 stretch = kStretch * 3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6694521 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046\charrsid13592443 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 endif;\line if (stretch == minimum)\line \tab clsCanTakeKashida }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6694521 \{ justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 stretch = kStretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6694521 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 \};\line endif;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11354402 \line // if (stretch == none), leave justify.stretch = 0.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046\charrsid13592443 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid9711046 endtable; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 table(just)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 \{MaxRuleLoop = 30\} \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11933107 // Keep inserting as many kashidas as there is width for:\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 clsCanTakeKashida}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 _\line \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 > }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 @1 \{justify.width -= kStretch\} gKashida:1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 \line \tab \tab / }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 ^ }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 _ \{justify.width >= }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 kStretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9711046 _}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 ; \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid6694521 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13592443 endtable; \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid3609042 \hich\af143\dbch\af0\loch\f143 6.5.6.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid7212310 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 Ligature}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid7212310 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid3609042 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212310 justification\:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 using }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 ligature}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 expansion}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 Expansion \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3609042 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13571049 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571049\charrsid13304231 justify.step }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13571049 attribute is useful to perform ligature expansion as well. In this case the width of the step is exactly equal to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13304231 difference between the ligat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6442112 ed and non-ligated forms. I}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13304231 n a normal mode of operation, the substitution table is used to create the ligatures, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6442112 but }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13304231 when justification is occuring, it is the justification table that must be used, so it can recognize when }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid13304231\charrsid13304231 not}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13304231 to create the ligatures. Unfortunately, this leads to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6167452 a slight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13304231 duplication of code.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3609042 \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid4066498 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid4066498 table(glyph) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 \tab // ligatures\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4526103 g_ae \{ xAdv = advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9728905 ; kStretch = 190m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4526103 \};\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 g_oe \{ xAdv = advancewid}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587381 th}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9728905 ; kStretch = 210m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587381 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 \par }\pard \ltrpar\s31\ql \li0\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15884252 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15884252 \tab \tab g_e \{ xAdv = advancewidth \}; \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid148441 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15884252 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587381 g_a \{ ligDiff = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15884252 + g_e.xAdv \endash g_ae.xAdv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9728905 \line \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 kStretch = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15884252 15}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 0m \};}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4526103 \line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 g_o }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587381 \{ ligDiff = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15884252 advancewidth + g_e.xAdv \endash g_oe.xAdv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587381 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9728905 \line \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 kStretch = 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15884252 0}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 0m \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441\charrsid148441 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11736491 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 g_ae \{ ligDiff = g_a.ligDiff \};\line \tab g_oe \{ ligDiff = g_o.ligDiff \}; \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid4526103 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4526103 \tab cls}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 Makes}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8537957 LigWithE = (g_a, g_o)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 ;\line \tab clsELig = (g_ae, g_oe); \{ /* define component boxes */ \} }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4526103 \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid4066498 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid4066498 endtable; \par table(subs) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4526103 if (JustifyMode = JMODE_NORMAL)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3957786 \par \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 // Normal}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8411671 case}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 :}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1390984 always make the ligature.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 \line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 clsMakesLigWithE }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 g_e\line \tab \tab > clsELig:(1 2) \{ /* define component refs */ \} _;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498\charrsid13592443 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 endif;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid6571730 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 if (JustifyMode = JMODE_JUSTIFY) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2509747 \tab // This stretch value assigned here is valid when we *could* create}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 \line \tab // }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2509747 a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 ligature.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15884252 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 \line \tab clsMakesLigWithE \{ justify \{ stretch = ligDiff + kStretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid15884252 \chftn {\footnote \ltrpar \pard\plain \ltrpar\s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0\pararsid15884252 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 Notice a slight anomaly here. We assign extra kerning width}{\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \cs30\f2\fs16\insrsid10357361\charrsid6030206 kStretch }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 assuming that the ligature will not be created. If in fact the ligature is created, and}{\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \cs30\f2\fs16\insrsid10357361 k}{\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \cs30\f2\fs16\insrsid10357361\charrsid6030206 Stretch }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 is substantially greater than the value for the ligature, the ligature may be kerned inappropriately. This would most likely be a problem when the step value is relatively small and the difference between the two}{\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \cs30\f2\fs16\insrsid10357361 k}{ \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \cs30\f2\fs16\insrsid10357361\charrsid6030206 Stretch }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 values is rather large. A multi-level justification approach would be needed to solve this problem cleanly.}}}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 ;\line \tab \tab \tab \tab \tab \tab \tab \tab \tab \tab step = ligDiff \}\line \tab \tab g_e;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730\charrsid13592443 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 \tab // Otherwise assign the normal kerning stretch value.\line \tab clsMakesLigWithE \{justify.stretch = kStretch \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730\charrsid13592443 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6571730 endif; \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid4066498 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid4066498 endtable; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 table(just)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 \par if (JustifyMode = JMODE_JUSTIFY)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid15419579 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 // Only create the ligature when we DON\rquote T want to stretch.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10308570 \line \tab // Note that i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16344474 n this case}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10308570 , the step}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16344474 mechanism should ensure}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10308570 \line \tab // }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 that justify.width = 0.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 \line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 clsMakesLigWithE }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 g_e\line \tab \tab > clsELig:(1 2) \{ /* define }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587381 comp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4850771 onent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 refs */}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 \} }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4850771 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 _\line \tab \tab / _ \{justify.width < justify.stretch\} _;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441\charrsid148441 \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid148441 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 \tab // }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 S}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 ubtract the amou}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3957786 nt of stretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 we }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3957786 \'93inserted\'94 by }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2452755 virtue of having}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3957786 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2452755 \tab // NOT created}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 the ligature. Th}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16321502 e}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 extra width will be handled by the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16321502 \line \tab //} {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 positioning pass.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2452755 (Note that due to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16321502 step mechanism the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2452755 \line \tab // }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3824457 extra width will be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2452755 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3824457 exactly ligDiff}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8355049 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3824457 or zero.)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 \line \tab clsMakesLigWithE \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4934271 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 justify.width -= ligDiff \} g_e\line \tab \tab / _ \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4934271 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 justify.width >= justify.stretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4934271 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441 \} _;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid148441\charrsid148441 \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid4066498 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11600246 endif; \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid15419579 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4066498 endtable;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13304231 \par }\pard \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid6909818 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid6909818 table(pos) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 if (JustifyMode = JMODE_JUSTIFY) \par \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3824457 clsMakesLigWithE \{ kern.x = justify.width \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818\charrsid13592443 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818 endif;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6909818\charrsid6909818 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15419579 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15419579\charrsid15419579 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3609042 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13304231 To avoid the duplication of the rule, it would be possible to create the ligature and undo it later. This would result in a loss of the correspondences between the non-ligated glyph forms and their underlying characters. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6705527 As the comments above }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11417590 mention, the step mechanism }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6705527 will }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11417590 constrain the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6705527 kerning}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11417590 width }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6705527 that actually gets }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11562639 assigned }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11417590 to be a multiple of the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid11417590\charrsid11417590 justify.step}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid11562639 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11562639 value}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11417590 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8411671 The multi-level justification capability that has not yet been implement}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid417363 ed would provide an improvement.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11417590 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13116219 Note that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4292167 together all }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13116219 the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13116219\charrsid4292167 }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4292167\charrsid4292167 justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13116219\charrsid4292167 width }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13116219 values set by the justification module should }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4292167 produce cleanly justified text}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13116219 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4292167 I}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13116219 t is essential that the subsequent justification and positioning passes be meticulous about making adjustments to account for each value. Failure to do so will result in improperly justified text. \par {\*\bkmkstart _Toc40864627}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid2837658 \hich\af143\dbch\af0\loch\f143 6.6\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid2837658 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 Mirroring{\*\bkmkend _Toc40864627}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid2837658 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid2837658 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658\charrsid2699082 irroring}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6370457 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 In right-to-left}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6370457 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2837658 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658\charrsid2699082 right-to-left}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2837658 scripts, certain characters need to be displayed as}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6836781 mirrored alternates. For instance, while in a left-to-right script the opening parenthesis is displayed as \'93(\'94, in a right-to-left script it should appear as \'93)\'94. The same is true for similar pairs o}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3817280 f characters such as brackets (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6836781 \'93[\'85]\'94), braces (\'93\{\'85\}\'94), and wedges (\'93<\'85>\'94). }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6370457 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2179873 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8351243\charrsid1799294 }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8351243\charrsid8351243 mirror.glyp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6180187 h}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2179873 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2179873 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2179873 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid2179873 mirror.glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2179873 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243 glyph attribute can be u sed to specify what form a mirrored glyph should take. The value of the attribute is the glyph number of the alternate glyph.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 In the Graphite2 engine, the bidi}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2179873 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid12022032 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032\charrsid2699082 bidi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16192542 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 pass will use these attributes to perform mirroring.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243\charrsid6370457 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2837658 {\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid13650650\charrsid13650650 Note: the mirror attributes are only handled by the Graphite2 engine. There are no plans to support }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid13644114 automatic mirroring}{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid13650650\charrsid13650650 in the original Graphite engine. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243 For the examples}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13650650 mentioned}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243 above}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6836781 , the alternate}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 glyph shape}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6836781 s come in pairs that can represented by pairs of Unicode characters (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 e.g., U+002}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13644114 8/U+0029, U+005B/U+005D, etc.). T}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 he mirroring can be accomplished by substituting the glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13644114 normally assigned to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 the opposite member of the pair. The Unicode Standard defines these pairs, and the Graphite compiler will set the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6099547\charrsid1799294 mirror.glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 attributes automatically based on the information in Unicode.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 se}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243 values can }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13650650 also }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8351243 be overridden in GDL code as necessary. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 In other cases, a single glyph exists that needs to change its shape in a right-to-left context. There are quite a few examples of these among mathematical symbols, such as the square root sign. There is no Unicode character that represents the alternate form of the square root; it is simply an alternate shape of the symbol.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 In these }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13650650 cases }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12022032\charrsid12022032 mirror.glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 attribute }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13650650 must be set in the GDL explicitly, since}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 there is no way of determining a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12876756 default}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12022032 value from Unicode.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid13650650 \hich\af143\dbch\af0\loch\f143 6.6.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid13650650 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13650650 Application-based }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12876756 mirroring}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13650650 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2837658 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12876756 Some applications perform mirroring }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16192542 independent of Graphite. In this case the Graphite engine does not want to duplicate the work that was alrea dy performed by the application. However, the application is only capable of mirroring encoded pairs such as parentheses and brackets, not the single mirrored characters such the square root symbol.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6099547 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3429696 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16192542 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid16192542\charrsid16192542 mirror.isEncoded}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3429696 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid11754491 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11754491 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid11754491 mirror.isEncoded}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11754491 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid16192542\charrsid16192542 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16192542 glyph attribute exists to indicate which glyphs should always be mirrored versus those that should only be mirrored when they have not already been handled by the application. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4809259 Appropriate values are 0 (false) and 1 (true). }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16192542 Like}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid16192542\charrsid13506119 mirror.glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13506119 , this attribute} {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16192542 is set automatically by the Graphite compiler, and can be overridden}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13506119 in the GDL code}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16192542 . \par {\*\bkmkstart _Toc40864628}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid7812007 \hich\af143\dbch\af0\loch\f143 6.7\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 Pass optimizations{\*\bkmkend _Toc40864628}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid7812007 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 p}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid3215 ass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1835347 \:} {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid3215 optimizations}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid7812007 \hich\af143\dbch\af0\loch\f143 6.7.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid15818847 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 Pass constraints}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid15818847 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid7812007 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 p}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid16134208 ass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1835347 \:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid16134208 constraint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 Pass constraints}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid7812007 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid7020039 constraint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1835347 \:}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid7020039 for passes}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 provide a way to optimize your code so that some passes are ignored altogether. For instance, you may have a pass that only contains rules to handle a specific font feature. By embedding the pass inside a constraint, the pass can be skipped efficiently. \par A constraint is considered to apply to a pass when the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7812007 if}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 statement containing the constraint is followed immediately by a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7812007 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 statement. \par }\pard\plain \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid7812007 if (specialFeature)\line pass(3) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 \tab // rules to handle specialFeature \par endpass;\line endif; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 If the structure of the code inside the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7812007\charrsid525975 if }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 statement is such that it contains something other than}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7812007\charrsid525975 pass }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 structures, the constraint will be applied directly to each of the rules rather than at the pass level. Note that the behavior will be the same, but the optimization effect is lost.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid5660739 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid7812007 \hich\af143\dbch\af0\loch\f143 6.7.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid1835347 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 Pass key slots}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid1835347 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid7812007 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9790785 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1835347 \:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007\charrsid12347718 key slots}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 The compiler implements an optimization that allows the engine to skip passes that are not needed. To do this, it creates the set of key glyphs by looking at each rule in the pass. For each rule it works out which glyphs, if no t present, mean that the rule would never match. For example, if the pass consists of a rule to create an fi ligature from the characters f and i, any glyph other than an f or an i means that the rule will never match. More than that, we can say that if t h e run does not contain an f (regardless of whether it has an i), then the rule will not match. The compiler, therefore, analyzes the pass by looking at each rule, picking one slot and determining the set of glyphs that covered by that slot. If those glyph s exist in the run then the rule might match and the pass must be executed. If not, the pass can be skipped. \par The mechanism used to identify the set of glyphs for this pass optimization is a built-in slot attribute called}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7812007\charrsid525975 passKeySlot}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid9790785 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9790785 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid9790785\charrsid1783341 passKeySlot}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9790785 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 . Each rule in the pass will have one slot identified as the \'93key slot\'94 , and all of the glyphs that can possibly be in that slot when that rule fires are added to the set of glyphs used in the test to see if a pass can be skipped. \par If the GDL author doesn\rquote t explicitly identify which is the key slot, the Graphite compiler will pick the first \'93modifiable\'94 slot in the rule (i.e., the first slot in the left- or right-hand side of the rule, not in the context). \par The default chosen by the compiler may not be optimal, however, so the GDL author can explicitly identify the key slot by setting the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7812007\charrsid525975 passKeySlot }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 attribute to \'93true\'94 (or 1). \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid7812007 \hich\af143\dbch\af0\loch\f143 6.7.2.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 Example \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 Consider a pass that attaches marks to their bases. For many scripts, the set of bases is much bigger and much more likely to occur in a run than the set of possible marks. By making the key slot be the slot containing the marks, we will get to skip the pass more often. A rule to do this might look like the following: \par }\pard\plain \ltrpar\s80\ql \fi720\li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af2 \ltrch\fcs0 \insrsid7812007\charrsid2057015 clsBase clsDia \{attach \{to=@1; at=udap; with=lap\}; passKeySlot = 1\};}{\rtlch\fcs1 \af2 \ltrch\fcs0 \insrsid7812007 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7812007 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 Notice that the effect of setting}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid7812007\charrsid11668745 passKeySlot }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7812007 is to indicate the second slot\emdash the diacritic\emdash as the key slot for the pass rather than the first, the base. \par {\*\bkmkstart _Toc40864629}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid5339290 \hich\af143\dbch\af0\loch\f143 6.8\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5339290 Automatic Collision A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 voidance{\*\bkmkend _Toc40864629}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086\charrsid7957769 collision avoidance, automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5856894 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5856894 As of version 1.3.0,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 the Graphite}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13401452 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 engine}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5856894 provides }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 the ability}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5856894 to perform automatic collision avoidance. The GDL language includes directives to control the mechanism and attributes to parameterize the behavior.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3278163 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5856894 Setting }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14234872 a pass\rquote s}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5856894 directive}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid5856894\charrsid5856894 CollisionFix}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3278163 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4728086\charrsid7957769 CollisionFix}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid5856894\charrsid5856894 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5856894 to something }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3278163 greater}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5856894 than zero causes the algorithm to be run at the end of the pass. The value of the directive indicates how many iterations the algorithm should use. A larger value may produce a better result in the case of complex col lisions, but may also slow down the rendering process. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10232165 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177 There are two aspects to the collision avoidance mechanism, shifting and kerning. A given pass can include just shifting or both shifting and kerning. It is possible to turn on collision avoidance for }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10232165 a }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177 pass that includes rules, or to use separat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10232165 e pass with no rules }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177 (the latter may be more convenient for debugging}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12328733 in Graide}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13124075 ), in which case the collision fixing happens after the rules are run.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid7553735 \hich\af143\dbch\af0\loch\f143 6.8.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid7553735 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 Shifting}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid7553735 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086\charrsid13065243 collision avoidance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 , automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086\charrsid13065243 \:shifting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11087530 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3302722 The core of the automatic collision avoidance algorithm involves shifting \'93moveable\'94 glyphs to avoid collision with base glyphs and other moveable glyphs. \'93Moveable\'94 glyphs may include }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11087530 diacritics and other parts of characters that are represented by a separate glyph, such as nuqtas.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11620405 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 There are various factors that contribute to the glyph adjustment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11087530 result}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 , and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11620405 each pos}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13124075 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11620405 ible resulting position has a cost associated with it. The factors that are considered are as follows:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1384200 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar \s24\ql \fi-360\li720\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls38\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 The distance the glyph is moved from its original}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 p}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9916164 osition\emdash }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 the algorithm attempts to minimize the total movement}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12524361 , using a weight of 1}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9916164 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1384200 \loch\af3\dbch\af0\hich\f3 \'b7\tab}How much the glyph intrudes into the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 specified}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 margin of a neighboring glyph (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1384200\charrsid1384200 coll}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid342330 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1384200\charrsid1384200 sion.marginweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 ). \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid1384200 \loch\af3\dbch\af0\hich\f3 \'b7\tab}How much the glyph violates the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 specified}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 sequencing by intruding into }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9916164 undesirable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 spaces close to neighboring glyphs (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1384200\charrsid1384200 sequence.above.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1384200\charrsid1384200 sequence.below.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3278163 ). See Sequencing, below.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid3278163 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3278163 Whether the glyph and a neigh}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 boring glyph would create an undesirable horizontal line (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1384200\charrsid1384200 sequence.valign.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 ).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1200093 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 The attributes }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 indicated above}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 allow the GD}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8135265 L programmer to adjust the cost factors}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 . These attribute}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 can be set directly as slot attributes, or as glyph attributes from which slot attributes are }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14576579 then }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14382289 initialized. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9247998 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 There are a set of flags stored in}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1200093\charrsid1200093 collision.flags}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9247998 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid10239652 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10239652 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid10239652 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid342330 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid10239652 on.flags}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10239652 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1200093\charrsid1200093 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 that specify how the glyph should be handled by the collision avoidance algorithm. Glyphs can be marked to be shifted (appropriate for nuqtas and diacritics)}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11294724 , kerned (see }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9247998 Kerning, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11294724 below}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 ), }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9247998 considered}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 when}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 fixing other glyphs but not moved themselves (appropriate for base glyphs), or completely ignored. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5843152 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 The flags }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 are also used to indicate the start and end of a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 cluster}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 of glyphs within which there is likely to be collisions}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12014603 to be fixed by shifting (rather than kerning)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1725713 For instance, in Arabic script, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 it would be normal (although not required) to trea}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12014603 t whitespace }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 as the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11734660 boundary of a cluster}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5843152 , so that collisions within the cluster are fixed using shifting and i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 nter-cluster collisions }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5843152 are}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 fixed using kernin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11734660 g}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5843152 Clusters }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid5843152\charrsid8012871 can}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5843152 be arbitrarily large, but k}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13651208 eep in mind that using large clusters could potentially have a deterimental effect}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11733885 on the performance of the font, since the number of comparisons required is O(n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \super\insrsid11733885\charrsid11733885 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11733885 ) where n is the size of the cluster.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1200093 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13124075 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2443954 The kerning process (described below) also takes into account a flag }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13124075 can mark}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2443954 certain glyphs as whitespace.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5534672 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13124075 Glyphs with no outline are automatically considered whitespace, but you might want to have \'93visible space\'94 characters that are also treated as spaces. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5534672 See the \'93collision.flags\'94 attribute in the Reference section below.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2443954 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3890678 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 Each glyph can be given an ideal margin using}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12780249\charrsid12780249 collision.margin}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3890678 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid3890678 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3890678 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid3890678 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid342330 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid3890678 on.margin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3890678 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 . There is also a \'93movement rectangle\'94 that indicates how far the glyph can be moved in any direction. This is controlled by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12780249\charrsid12780249 collision.max.x/y} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3890678 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid606012 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid606012 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid606012\charrsid15802538 collision.max.x/y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid606012 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12780249\charrsid12780249 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12780249\charrsid12780249 collision.min.x/y}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3890678 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid606012 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid606012 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid606012\charrsid3687276 collision.min.x/y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid606012 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 . Note that even for right-to-left scripts, positive numbers indicate }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11796733 right-ward movement}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 and negative numbers indicate }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11796733 left-ward movement}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 ; this}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6903018 behavior}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 is different from}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12780249\charrsid12780249 shift.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16126611 (where the direction is based on the direction of the script).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8135265 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9450999 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4161483 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12524361 Graphite compiler}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4161483 creates an estimate of the shape of the glyph for the purposes of collision avoidance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12524361 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4161483 In the case of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12524361 simple, convex glyphs, a simple estimate is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4161483 usually}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12524361 adequate. But for glyphs with con}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9520540 cave}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12524361 edges, a more complex estimate is often needed.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14829808 Setting the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14829808\charrsid14829808 collision.complex}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7012992 Fit}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9450999 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4804234 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4804234 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4804234 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid342330 i}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4804234 on.complexFit}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4804234 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14829808\charrsid14829808 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4161483 attribute to true creates the more complex estimate.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9520540 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9450999 Tip: i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7425738 t can be surprising }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5534672 how subtly}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9520540 concave }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5534672 an }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9520540 edge }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5534672 can}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9520540 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5534672 be to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9520540 n ecessitate a complex estimate, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5534672 in order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9520540 to get high-quality positioning.)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12524361 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12524361 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7012992 It is also possible to adjust the glyph shape use}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid131592 d}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7012992 for the collision algorithm using the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7012992\charrsid131592 collision.exclu}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid131592\charrsid131592 de.glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid131592 attribute. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2582172 The shape of the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid2582172\charrsid2582172 exclude.glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2582172 is added to the shape of the main glyph when determining collisions or potential collisions.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7012992 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid277128 \hich\af143\dbch\af0\loch\f143 6.8.1.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid11150640 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid277128 Sequencing}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid11150640 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid11150640 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640\charrsid13065243 collision avoidance}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 , automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640\charrsid13065243 \:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 sequencing}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid277128 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid277128 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid277128 The sequencing mechanism was designed specifically to help support the diagonal sloping effect that is distinctive of Nastaliq}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid277128 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid9071063 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063\charrsid14313047 Nastaliq}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid277128 -style Arabic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid277128 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid9071063 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063\charrsid14313047 Arabic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9071063 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid277128 . It also can be used to enforce the position of diacritics relative to nuqtas. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7343642 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid5121974\charrsid5121974 sequence }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 attributes }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 work by defining}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 classes of glyphs and their behavior relative to glyphs in the s ame class or other classes.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10029569 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 There are two kind of relationships.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 \par {\listtext\pard\plain\ltrpar \s5 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\fs22\insrsid7343642 \hich\af0\dbch\af0\loch\f0 6.8.1.1.1\tab}}\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0\pararsid7343642 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 Vertical sequencing \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14383905 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 Certain}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5922455 kinds}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3149578 of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 glyphs can be }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3149578 kept above or below other glyphs. F}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 or instance, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3149578 you might want to ensure that }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 upper diacritics }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3149578 are }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 be positioned above upper nuqtas, and lower diacritics below lower nuqtas}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6106538 \emdash in spite of what }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14383905 might}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6106538 be permitted by their movement rectangles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6106538 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1391 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 This is achieved by using}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7343642\charrsid7343642 sequence.class }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 to create the two classes of glyphs, and setting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7343642\charrsid7343642 sequence.order }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 on the constrained glyph and its}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7343642\charrsid7343642 sequence.proxClass }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 to the other class.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2300534 The classes are identified by arbitrary integers.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid218992 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14383905 built-in}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid218992\charrsid1391 order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1391 constants}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid218992 are:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6106538 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid218992 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar \s24\ql \fi-360\li720\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls39\adjustright\rin0\lin720\itap0\pararsid7147797 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid218992 NOABOVE = 4 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid218992 \loch\af3\dbch\af0\hich\f3 \'b7\tab}NOBELOW = 8 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2300534 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 For instance, to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2300534 ensure upper diacritics remain above upper nuqtas:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 \par }\pard\plain \ltrpar\s61\ql \li720\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid14383905 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2300534\charrsid14383905 #define UNUQTA 1 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid16073428 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2300534\charrsid14383905 // arbitrary\line #define UDIAC 2 }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid16073428 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2300534\charrsid14383905 // arbitrary\line #define NOBELOW }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5922455\charrsid14383905 8}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid4588864\charrsid14383905 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid16073428 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid4588864\charrsid14383905 // built-in constant}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid14383905\charrsid14383905 \line c_upperNuqta \{sequence.class = UNUQTA\};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2300534\charrsid14383905 \line c_upperDiac \{sequence \{class = UDIAC; proxClass = UNUQTAS; \line \tab order = NOBELOW\}\}}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2300534 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14236767 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 Note that it probably do}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7147797 es not make sense to use the NOABOVE (or NO}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 BELOW) }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10495142 flag }{ \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid6164928\charrsid7556628 without}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10495142 also }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 setting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6164928\charrsid6164928 proxClass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 . When}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6164928\charrsid6164928 proxClass }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 is left unset}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14236767 , the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6164928\charrsid14236767 sequence.class }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 itself }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10495142 is}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 used}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10495142 in its place. This}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 would indicate that no}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10495142 member of the class can }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 be above (or below) other members of the same class, which is}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10495142 inherently}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928 somewhat contradictory. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6164928\charrsid6164928 \par {\listtext\pard\plain\ltrpar \s5 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\fs22\insrsid6106538 \hich\af0\dbch\af0\loch\f0 6.8.1.1.2\tab}}\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0\pararsid6106538 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6106538 Diagonal sequencing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642\charrsid7343642 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11867165 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 The sequencing mechanism was designed specifically to help support the diagonal sloping effect that is distinctive }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11018446 of Nastaliq}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11867165 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid7496159 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7496159 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7496159\charrsid11172004 Nastaliq}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7496159 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11018446 -style Arabic by e}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 nsuring that a class of glyphs follow a diagonal sequencing pattern. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11142608 The built-in}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid11142608\charrsid11142608 order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7147797 constant LEFT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11142608 DOWN = 1 is used to generate a diagona}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7147797 l slope. (There is also a RIGHT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11142608 UP constant, 2, but ther}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11867165 e is no known use}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13124075 for it, except internally within the Graphite engine.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11142608 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14965718 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14965718 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid5121974\charrsid10029569 sequence }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 attributes are }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11018446 used}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10816985 def}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10501788 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10816985 ne}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 regions around glyphs that are}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14105216 not appropriate}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 for neighboring glyphs\emdash as well as the cost of violations. Specifically, when you want to create a diagonal sequence of glyphs, the area below and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11018446 on the far side of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10029569 the glyph in question is not ap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 propriate for preceding glyphs.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5121974 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16726483 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 In the image below, we are trying to position the red single nuqta appropriately relative to the two black }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10252332 nuqat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 . The various regions show the costs of positioning the origin of the red nuqta, at the bottom corner shown by a very small +. \par }\pard \ltrpar\s24\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11100088 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1324914 {\*\shppict {\pict{\*\picprop\shplid1029{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}} \picscalex66\picscaley66\piccropl0\piccropr0\piccropt0\piccropb0\picw12488\pich13097\picwgoal7080\pichgoal7425\jpegblip\bliptag2030137996{\*\blipuid 7901728ce400a2aaef118bc3e2f5eaf5} ffd8ffe000104a46494600010101006000600000ffe111044578696600004d4d002a000000080005011200030000000100010000013b00020000000f00000856 8769000400000001000008669c9d00010000001e000010deea1c00070000080c0000004a000000001cea00000008000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000536861726f6e20436f727265 6c6c000000059003000200000014000010b49004000200000014000010c8929100020000000338320000929200020000000338320000ea1c00070000080c0000 08a8000000001cea0000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000323031393a30373a31312031353a33323a303500323031393a30373a31312031353a33323a303500000053006800 610072006f006e00200043006f007200720065006c006c000000ffe10b21687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f003c3f787061 636b657420626567696e3d27efbbbf272069643d2757354d304d7043656869487a7265537a4e54637a6b633964273f3e0d0a3c783a786d706d65746120786d6c 6e733a783d2261646f62653a6e733a6d6574612f223e3c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f31393939 2f30322f32322d7264662d73796e7461782d6e7323223e3c7264663a4465736372697074696f6e207264663a61626f75743d22757569643a6661663562646435 2d626133642d313164612d616433312d6433336437353138326631622220786d6c6e733a64633d22687474703a2f2f7075726c2e6f72672f64632f656c656d65 6e74732f312e312f222f3e3c7264663a4465736372697074696f6e207264663a61626f75743d22757569643a66616635626464352d626133642d313164612d61 6433312d6433336437353138326631622220786d6c6e733a786d703d22687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f223e3c786d703a 437265617465446174653e323031392d30372d31315431353a33323a30352e3831383c2f786d703a437265617465446174653e3c2f7264663a44657363726970 74696f6e3e3c7264663a4465736372697074696f6e207264663a61626f75743d22757569643a66616635626464352d626133642d313164612d616433312d6433 336437353138326631622220786d6c6e733a64633d22687474703a2f2f7075726c2e6f72672f64632f656c656d656e74732f312e312f223e3c64633a63726561 746f723e3c7264663a53657120786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d 6e7323223e3c7264663a6c693e536861726f6e20436f7272656c6c3c2f7264663a6c693e3c2f7264663a5365713e0d0a0909093c2f64633a63726561746f723e 3c2f7264663a4465736372697074696f6e3e3c2f7264663a5244463e3c2f783a786d706d6574613e0d0a20202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2020202020202020202020202020202020202020202020200a202020202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a2020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020200a2020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 202020202020200a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2020202020202020202020202020202020202020202020202020200a202020202020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 0a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020200a2020202020202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020200a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2020202020202020202020202020202020202020202020202020202020200a202020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 2020200a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020202020200a2020202020202020202020202020202020202020202020 20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020200a202020202020202020202020202020202020202020202020202020203c3f787061636b657420656e643d2777273f3effdb00 43000201010201010202020202020202030503030303030604040305070607070706070708090b0908080a0807070a0d0a0a0b0c0c0c0c07090e0f0d0c0e0b0c 0c0cffdb004301020202030303060303060c0807080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0cffc000110801ef01d803012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b510 0002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728 292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7 a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f01000301010101010101 01010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291 a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778 797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9 eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00fdfca28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a 2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a 2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a 2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a 2800a28a2800a28a2800a28a2800a338a335cafc5bf8e3e09f805e1b8758f1e78c3c2be0ad1ee6e56ca1bed7b55834db696765775896499954b958dd82839211 8e300d00755ba80c0d7c3bff000543ff0082dff827fe09dbe17f00dce8ba3d8fc54d4be2140754b0874cf10416f6a9a5ec063bd33224c592666510958ca4a239 c89079786f13ff00825eff00c1c68dfb5e7c6bf0bfc34f899e0dd07c2badf88fceb583c43a6eae20d3ae2f4b33dbdbfd92e0f991f9883ca52b3cccf398d42012 feef8279961e3515372d7faea60f134d4f91bd4fd4ece0519acef12f89b4df07f876fb56d5750b2d2f4ad32de4bbbcbcbb9d60b7b486352d24b248c42a22aa92 5890000493c57e4578d7fe0e85d6a6f89f65ff0008a7c23d39bc17677176b749aaeb6e9a96ab0e316ac8d1c463b3707e6910adc86076ab2e379ac463e8d1b73b fb875b114e9db9dee7ec3519af23fd88bf6bed07f6dffd9cb43f1fe870ff00679bfdf6fa8698f751dc4da4ddc476cb03b21ff75d0b04668a489ca26fda3cd7fe 0a2fff00053ed0ff006049bc37a72e83ff00098788bc45e64ffd9d1ea8967f62b44f97ce94ec91c6f90ed8c797b5fcb98ef063dad72c6528d3f6ade853ab051e 76f43ea6dd46eafcfcfd833fe0b6127ed15f14bc3fe04f1d785f4bf0feb1ae79b041ad58dfecb19aeb2cd0c2609be68f7a8118226919e528028127c9f7a6b5ad d9786f47bad4350bbb7b0d3ec6179ee2e6e2558a282241b9a467638555504924800026950c6d2ab1738bd1770a756335cd12feea2bf387c43ff05dabeb8f1a5a 9d07e1f59ffc2396f35c09d2ff005265bdbf8b188194a214b761f79d489c1ced0c31bcfdb5fb2f7ed19a4fed41f0674bf1769718b3fb56e86f2c5a74964d3ee1 0e1e262bf832960a591d18aaeec08a39851ab2e48bd4985784dda2cf44ce28dd5e0ffb64fedc5a6fec9cda3d9c7a547e22d6758df37d8c6a0b6bf66b75e3cd73 b5d86e73b506cc36c93e605307cf7f64dff82974ff0019bc6fa5785fc55a169ba4df6a4b24716a5697a7ecf24f92638cc320ca6e5f90112b967da028dff2b963 e8a9fb36f5fc0a75a0a5cadea7d759e28cd54d4754b5d1b4d9aeaeee21b4b4b68da59a69640891228cb3331e0280092491815f25ea5ff053eb8b8f10c3fd97e1 58bfb261925122dcdd9171729d232a5415888eac08901ce0118dc6eae2e9d3ddfdc13a918fc47d7f45721f04fe2fd8fc6af87563af59a8b73700a5c5b34ab23d acaa70c848fc1812012aca70338ac4f8f5fb4859fc12934fb7166355bebfdcfe42dcac7e4c638dedc1232dc2fcb83b5f91b706a589a6a1cf7d0ae78db9ba1e95 45787fc17fdaf1fc7be20b3d1f58d3ad6c6e6ef722ddc33621693928bb1b95c8f97efb12d818f9b8f69bad422b1b69269a48e186352eeeec155540c924f603de 8a78aa73574c232525744f4578dcdfb53cd3ea49f65d263fb1ab306f3653e6483f87181843dc8f9bd33debd33c15e3183c69e1e82fa202332644911604c4c3a8 3fcc6719041c0cd38e221276428d48bd8d8a2b9ff17f8f23f0b490c6b1adc4b364ed0fb76a8ee7a9ebd38e707d2aaf867e21b6af3470dc431c523e46f53f2e7b 707fc7ad3f6f0b8f995ec7554546d70a8bb98803dcf5aa91eaed20660ab8504fd78cd5aa89bb228bf45701fb29fc72ff00869cfd993e1f7c46fecbfec4ff0084 ebc3d63af7f67fda7ed3f61fb4c093795e6ed4dfb77e376d5ce3381d2bbfab00a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800 a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2801b22eeafe783fe0eb9d13c79a3fede7e1a9f5ed7b5cd63c09aaf86e3b9f0adacb 626df4dd1240c62beb585c1d93cecf143712c871205bab78d86c8e1cff004405f06bc7bfe0a0ff000ffc2bf14ff61af8b9a1f8dafacf47f0bde7847526d4354b ad2cea69a2a476d2482fc5b2fcd2bdb322ce8a987df0aed21b0473e2a9fb4a4e26388a7cf4dc4fe436ceee6b882de16dde5db0d91ae39451c63f41d6ba4d163c 6372f6cf2315cae8aff38e9ffd7aeb34a6f94735f07d59f33d6c7792f8f75df13784f44d0752d6b58d4341f0df9ffd91a6dcdec92d9e95e7b8927fb3c4cc522f 31c067d806e6009c9ad4d217815c8e94cd95f98edf4c5753a39762a77363e839aad46b7d8f41f865e38d6fe18f89ad75cf0deb1aa683acd9eefb3dfe9d76f6b7 36fbd0a36c9232197723329c1e4311d0d68694776d6392735cbe912302bdc7a62ba4d2a462073f8628bbd8b3acd39038c100ae3a1aedadfc5dab6ade1ad2f46b ad5352b8d234412ff6758cb72ef6d61e6b6f97c98c92b1ef6f99b681b8f2726b87d299be5ae93477381f37e9442e38e9b33a8d278c576be03f13ea5e0ad76df5 4d1f50bed2753b5dde4ddd9ced6f3c3b94ab6d7421865588383c8247435c3e90ec08ef5d3e9321f97a56d4cd61a3d0e9b4b3803803e95d368e71dcf2b8ae5f4a 9318f96ba4d1e524afddfd6b6345b9d9db7882ff0051d26c74fb8bebc9ec74c127d8eda494b4369e61dcfe5a1e137372768193d735a5a48f98d6069327e7d38a e8b495f96b486fa9a6eceabc23adde787f50b7bcd3ef2eac6ea1cf9735bcad14899041c3290464123e84d6ce97d57eb581a4c606dfa5745a5a7dde2b6858b474 1a51c1fc6baeb1d4ae2eacadad65b89a4b7b5dde4c4f212916e396da338193c9c7535c9e97183b6ba6d338db5b53dcd62741a6f54f958718c1ebff00eafd2ba6 d02e25b09239a19248645ced743b586720e08ff3cd733a70c15ff0c62ba2d247dd381c8ebf9d76c0d11d06947e65f719c5747a67de5ae734afbcbd7818ae8b4b e4afe55bd3d8b8ee747a6ccf855dcdb54f009e9f4addb4e6197feb99fe46b034ce1bf1adeb41fba93fdc3ffa09aeea7b1bd33c73fe094fff0028cafd9f7fec9e 687ffa410d7bf5780ffc129ffe5195fb3eff00d93cd0ff00f4821af7ead0d028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028 a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028cd1450035bad7e16ff00c1cd7ff054ff001e7867e3bea1fb3e780bc5dfd8fe115f0dc31f 8d6decaccc37b7b73767ce36925cb8cf91f63fb2b6db72aaeb773472b48098d3f7448c1afcb6ff00838b3fe09047f6b9f066b1f1fb45f187f63f883e15f826e0 dee8d7d6de6596af636524d7a7cb950ef8675496efef2c892b7929fb901e43c78c8ce54df21cf888cdc1f21fcf7e927322f20e0e38ed5d5691fc35cae924975c e7d067b5755a47f0d7c3bf899f37cb73a5d1bee8aeab4539db5ca68fdabaad13efad162b94eab473922ba4d2d70ab5cce8ff007c574fa5f6a2c558e9f483f76b a5d1bb7d2b9ad20636d74ba376fa538d8a474ba5f55ae9b49e8b5cce97d56ba6d27a2d6d0b5cd22749a5d749a4745ae6f4bae9348e8b5bc772e3b9d3693f7d6b a5d2b94ae674afbc2ba5d2cfeeeb6a66913a4d24e76fd2ba3d2cfddae734a1861f4ae8f4ced5b44d23b9d1e92bf76ba3d34ed8f71dcabd9d81083ea7ff00d7f4 ae73477579d570e790bc2e4e5beef1dfa1fc715f32fc43f8bff10bf6d1f8e1e22f867f08fc477df0d7c35f0f6ee3b4f19f8fa2b38eea7b99c852fa6699952ab3 2e4ac93165f2d86369eb5bd28b7a9b44fae3c5df1a3c1bf091213e2af15f867c31e660a0d5b54b7b2dfeea24752473d700fb5769f0ebc73a37c41d146a1a06ad a5eb9a68207daf4fbb8ee6124f38dc848e98ea72735f97be37f1cffc137be006a3bfc65ad783fe22f89660ab7da9ea125df8df50b96c1dc669ff007d1641006d 1b3030000140afa3bc3bff0004c8f843f103e14e9be3afd9ef50d63e06f887c4da5c1aae85e25f09dc5cd9c32c52a2cb11bad3e46586ea16040314899c13c8e2 bba30b46e6a7dd3a52023ef2fc808619e411dbea2ba1d2ce4afd057c6dfb107ed6be31d23e39de7ecf7f1c1ad2ebe2d68ba48d7349f1269d6a20d1fc6fa597da 66b75c0293c3b9639a000e0c4eea587ca3ec9d21b72ab6edcadf3039ce73dfff00d5d6b48ae8544e874dfbe3eb5bf69feaa5ff00ae6dff00a09ac0d37ef8fad6 fda7fa997fdc3ffa09aeda7b1b40f1bff8253ffca32bf67dff00b279a1ff00e90435efd5e03ff04a7ff94657ecfbff0064f343ff00d2086bdfab4340a28a2800 a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a09c51477a00335f 1e7fc15eff00e0aa7e03ff00827b7c04f12697378bbfb3fe2e7883c37792f83b4bb2b317d78b74c0c16f79223298638239db793390b22dbceb1acae8633f60e3 8afe73bfe0eb4f879e2af0e7fc145346f106b1797da9786fc47e12b55f0fc8fa58b6b6d31209665b8b049d78b975998dcb331de83508d0808b196e3c6d594295 e273e26a3841b47e6ae9030ebf5aeaf48fe1ae5749e245aea7483f32d7c3fda91f3ab5674ba3f6aeab44fbeb5cbe923045751a27df5a561d8ea347fbe2ba7d33 eed735a48dac2ba4d2f9414c6755a573b7e95d2691d7f0ae6749fe1ae9b48e48fa538ee38ee749a5f55ae9b49e8b5cce97d56ba6d27f86b686e691dce934bae9 348e8b5cde975d2691d16b68ee59d2e97f796ba5d2bfd57e35cce97d56ba4d29b11b7d6b686e5d3dce9f4afbcbf4ae8f4afbc95cde92795fa5747a51fba7d2b7 89a9ca7ed7bf152fbe07fec93f12bc5fa5b84d5bc3be18bfbdb26c65639d20731330f67da403df07b549ff0004d1f87e9f0ebf614f85ba7e0fdb350f0fdaeafa 8ca49335c5e5ec62e6ea477392cef24cf973c923b558fda73e0edc7c7ffd997e207826ce48e3bcf15787af34bb6676daab24d0ba4658f602420b7fb3595ff04b cf896bf11ff636f03d95e4cb0f89bc1da727863c47653304b8d36fec02db4c92a9fbb9319901ee8ca5412703b28af74df73e2fff0082f5fec0ff0005ff00661f f8272dc6b7e01f86fe16f0beb0be28d3edfedd696dbaebcb75b8de9e6b967d876a929bb076d7e94ffc1367fe51fdf047e5500f80f443820360fd821e39cf18e3 03031f8d7e6cff00c1c0dfb78fc1ef8f5fb0a5ef81bc21f10345d7bc5d6be2eb169f4ab51299e1108b859890c807c8f807d7b718afb0bfe0951ff0508f82de3b fd9cbe08fc31d1fe22787efbe2043e0cd32c9b428cc9f6b13db69eaf3c6015c663113b125860213dabbacf92c6dd0deff82ccf8957e05fc0df027c6eb1558fc4 5f07bc71a4ea6976aa3ed12e9d7772b617d69bc824c73477003290412899076803eedd35fcc70dd4b1dc7924e4f2739e739af833fe0ac967a7fed2f6bf0c7f66 ed36eede6f147c52f1669fa8ea564acad358681a74ff006cbcbc94a93b10985228db389656f2d4ee0d8fbcb4b3f77e8319ebf8ff00b5ebef9e9d2aa211dce874 dfbe3eb5bf687114bff5ccff00e826b034dfbe3eb5bb6dfea26ffae67f91ae9a66d0dcf1dff8253ffca32bf67dff00b279a1ff00e90435efd5e03ff04a7ff946 57ecfbff0064f343ff00d2086bdfab5350a28a2800a28a2800a28a2800a28cd05b14005148adb852d00145145001451450014514500145145001451450014514 500145145001451450014514500145145001487ef0a5a0d00230cd78e7fc1427e1d784fe2b7ec37f16f43f1c5f59693e15bcf09ea4fa86a975a59d5134448ed9 e55bf16c3e6964b67459d1530fbe152a430523d898f2bf5afc2dff00839b3fe0aa1e3df0d7c77d43f67bf0178bbfb1fc22be1b863f1adbd8d9986f6f6e6e9bce 36925cb8cf91f63fb29db6e55645bb9a395a452634e5c5558c29b7231af523085e47e3be907e65faf6e95d468ff7c572fa38dd22f39c71c76f6aea347fbe2be1 5fc4cf9b5ab6751a5755fa5751a2fdf5ae5f4aeabf4aea344fbeb4ac3b1d4e947760574ba50e42d735a5ae0a9ae97493d1a98cea349eab5d2e8ddbe95cd693d5 6ba5d1bb7d29c771c773a5d2faad74da48f901f4ae674beab5d3695f7056d0dcd23b9d1e96785ae9748e8b5cde94b9db5d2e923016b68ee6b1dce934afbcb5d1 e97f71ab9bd2faad74da52e6335b4373489d1e91f757e95d2699f76b9cd28602fd2ba2d37a56d12e3b9d1e9842c80e15b800e4641c727ea0f420f51915f3dfc6 ff00d92fc79f0a3e30df7c66fd9edf428bc6de227823f17787b5d9a54d37c61140aa2274955736f7a810ed950a2317cbe4e73f42e96bf32e2ba4d23f76ca7e51 b9be6238665c8f94918241c6307239aec84adb1ad37a9f9bfe32bdfd8d7c13e22bc8fe307ecb5e2cf87fe26b991a7bf8f57f08dcea10cd33b6f631de593cc936 73bb78db9ddc80722bacf831ff000a9b55d65bc41fb21fec9fa84bf10b4f12c3a6f8c35fd0a7f0f787f449278da369259ee2559a51e53483c9b78cbb82463e62 4fe8a698aa61553cae3057a0c67a01d07e1c5747a6b3385ddfc2368e4f033d060e31c0edebd8d76c6a5f7363c53f61bfd89b51f831e32d7be297c4ed6ecfc71f 1ebc6d6eb67ae7886dadbecf69616b1b2f93a758427fd4da22a20752a1e6752ce79db5f566961548dabb573f28cf415ce692bb36aafdd5e1738c81dba003fad7 45a4ff000fd6ae3b8e3b9d169bf7c7d6b76dbfd44dff005ccff23583a5f327e35bd6a736d2ff00b8dfc8d75533686e78effc129ffe5195fb3eff00d93cd0ff00 f4821af7eaf01ff8253ffca32bf67dff00b279a1ff00e90435efd5a9a851451400519c514d66c1e9400ea693b5a80f96a8ee67f254b31c2af5f6a00749388d7e 6c019039f7e2a23a946ac17700cc7681fed6338fafb552d7fc4169e1fd3e5bbbc9e1b5b7b55324b2cb20448d40c92493d8027db19ed83f897ff0573ff82f9eaf e2cf145c7807e06eb175a269ba1dfc916a1e2cb2b84326ac62ff009676c467fd1c4806e901ccdb0aa955dc5b8f198ea7878f35467d370bf09e619ee23eaf838f abe8bd4fdc48ee15db68eb807f03522383debf3e7fe08bdff0582d3ff6e8f082f82fc6135b69df15341b5df7312858e1d660181f68814138232be620c6d663b7 e5e17f402da5dc4fcac3a75fe9ff00d6e3f5ad30d88857a6aa537a33cfcf324c5e538c960b1b1719c7fabaf52c519cd37cca14f35d07923a8a28a0028a28a002 8a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028279a290fde14008c39afcb4ff00838b7fe0907ff0d71e0cd5be3f68be2ffec7f107c2cf 055c1bdd1afad7ccb1d5ec6c9e6bd3e5cabf3c33aa4b77f7964595bc94fdc80f21fd4c35f1e7fc15effe0aa7e03ff827b7c05f12697378b469df173c41e1bbc9 7c1ba5d9598bebc5ba6060b7bc91194c31c11cedbc99c85916de658d6664319e7c5460e9be7d8c6b462e0f9f63f969d1db0eb9cfa73daba8d27ef2fd6b95d153 e75f7f6aeab4a18db5f07f69d8f9b5bbb1d368e72d5d568bf792b95d1f865fad753a29f9d69586751a5fdd5ae97491955ae6b4a3b8a8ae9b49fbca298ce9f48f e1ae9746edf4ae6b47fe1ae9b48ea3e94e3b8e3b9d2697d56ba6d23f86b99d2faad74da47f0d6d0dcd23b9d2e8ddbe95d2e97d56b9ad1bb7d2ba5d2faad6d1dc d23b9d2693f7d6ba5d2b94ae6b4ae585749a59f92b686e691dce934a39dbf4ae8f4c19db5ce69230c3e95d1e967ee9f4ad51a4773a3d24fef05749a6718ae6f4 91875ae934c39c5754763489d069bdaba3d2beead739a6f6ae8f4afbab5d0691dcded2bef2d745a57f0fd6b9dd2bef2d747a4f45ae9a6691dce874be24fad6ed a0c5acbfee37f23585a6fdf1f5addb6ff5137fd733fc8d76533686e78eff00c129ff00e5195fb3effd93cd0fff004821af7eaf01ff008253ff00ca32bf67dffb 279a1ffe90435efd5a9a851451400535fad3aa3b8984439a0064b2ed0bf5ac5f1df8e748f87de13bed6b5ad52cb49d2b4c81eeaeaf6ee65821b58506e691dd88 5550a092cdc00327806b1be36fc71f0c7c09f86fac78a3c53ab5b693a2e8711b8bb9e7936840b821401f333138015796240009201fe793fe0ac9ff000582f13f edf7e2db8d0743b8bcd0fe15c12a496961811dcea8c84fefae19588209e563fbaa5413f3ae47959a66b4b090bcf7ec7de703f00e3f88f13c94636a6be29745ff 0004f45ff82c17fc170756fdafef352f877f0cee2e349f85c0882f6e9e131dd788b6c81f3f78347065400bf2b1f9848141d95f9d2f36f0bbb2197038e001e98e 981d0630303a73cc6d32c67e440bdffcff009c75c63a5465cb3927bd7e618fcc2a62aa39d47e87f7770a708e0320c1470b82859f57ddf76745f0e3e25ebdf08b c79a4f8a3c2ba95e687e20d0ee16eb4fbcb66c3c128ce0807861ce0a36558121b8273fd1a7fc123ffe0abde1ff00dbf3e1a1b0d49ed746f895a1c118d5f490db 63ba07216eed77125e190a9c80498db2adce1dff009ad859633f79ba1e7d3fcf3deba6f83ff17fc41f023e2868be34f096a52e8de24f0fdc0bab1bc8405f2dc8 21c15fbac1d328548daca581560c6bbf26ce25859f2bf84f93f133c39a1c4784f68928d78ad25fa3f23fafa82e96662155b039eb56239379f4af8eff00e0935f f0541f0d7fc1437e1141bae21b4f881e1cb1b64f12e94903c6b6f34a1944b0162c0c32189d80deec8a143e0f27ebeb4ba495f08188c70707047f9ef5fa7e1f11 0ad05386c7f08e6995e232ec54f098b8f2ce2ecd1628a33456c79e14514500145145001451450014514500145145001451450014514500145145001477a28a00 681c57f39dff00075a7c3df15f87bfe0a29a3788359bcbed4bc37e23f09daaf87e47d2c5b5b69896f2ccb716093af172eb339ba6663bd06a11a1011632dfd191 7c1af1cff82857c3bf09fc57fd867e2de87e38bdb2d27c2b77e13d49f50d52eb4b3a9a68891db3cab7e2d87cd2c96cc8b3a2a61f7c2a5486008e5c5d1f694f96 e6388a7cf068fe423476db22fd6ba8d21b2c2b96d23ef2fd7b74aea347fbe2be15fc4cf99d9d8ea3491822ba8d13efad72fa5755fa5751a27df5a561a3a8d23e f0ae9f49ff0058b5cd69636915d268c7322d32cea349386fc6ba6d2b84cfe15cce93d47d6ba6d2795c7bd38ee38ee749a67de5fa574da49c6dae674b3f32d74d a4f45ada1b9a4773a4d25b1b6ba5d24e76d735a5d749a4745ada3b9a4773a6d27efad74ba57295cce95f78574ba59fddd6d0dcd23b9d269473b7e95d1e99f76b 9cd28608fa5747a67ddad96e691dce8f4beab5d26995cde97d56ba2d31b91f5ae98ec691dce8b4ded5d1e95f756b9cd37b5747a57dd5ae84691dcded2bef2d74 7a4f45ae734afbcb5d1e93d16ba699a4773a1d37ef8fad6edb7fa89bfeb99fe46b0b4dfbe3eb5bb6dfea26ff00ae67f91aeca66d0dcf1dff008253ff00ca32bf 67dffb279a1ffe90435efd5e03ff0004a7ff0094657ecfbff64f343ffd2086bdfab5350a28a2800aaf7ffeaff9e7b0ab150dc02e3f1e68d7a05eda9f81bff072 35a7c69d2fe3fe9cfe32bc177f0b6f83af8552c3ce8ad6370a0ba5da16606e81380ec4874194d87785fcd19b0615e57a02bb463f0e07418c01db9eb9c9febb3e 367c12f0dfed01f0c759f0978bb4bb3d6343d72dcdb5d5b5c2e55d4e30413cab03cab290cac01041c11fcd97fc150bfe0995e2aff8278fc5b96d66fb66b5e03d 4a4c691e216b5f2e395b69636f36dca4732e1fe50555f6964400944f81e24caaac65ede1aaea7f5f7827e20606b50864b5e0a9d48fc36d39bfe09f2c3a9dd49b 78a918305cb7cac381f967fafeb4d55dd16efd6be2ddcfe958f2cb5430735245bba296c91d54e3a60ff9fc29628777e781ef52e9d6135f5cc30c314934d3cbe5 c51a2ee676c818c7e3d0609cd3841ca5cab732af5214e9f3cdd95aefd0edbe037ed0be2efd96be26e97e32f056b579a4eafa4c8b2ab4333ac37318746682540c 03c2ec8a1949c371d0e31fd457ec23f1db59fda63f663f0878e7c41e1abff09eade22b23713e9b79f7e3c3b289173cf97200244c80763ae403c0fcdaff00822c ff00c10a5b403a37c58f8d9a4ab6ab8fb6685e17bd8b70d3f207973dda3000cca32c9130fdd17e4798a027ebfd969e96b31645dbdb8ef5fa5f0de06bd0a57aaf 47b23f88fc6ae2ccab36c7c68e5f04dd3d1cfbf979a2e0e94500628afa63f0d0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800 a33451400d6eb5f85bff000735ff00c153fc79e19f8efa87ecf9e02f177f63f8457c370c7e35b7b2b330dededcdd9f38da4972e33e47d8fecadb6dcaabaddcd1 cad202634fdd12306bf2dbfe0e2cff0082411fdae7c19ac7c7ed17c61fd8fe20f857e09b837ba35f5b79965abd8d94935e9f2e543be19d525bbfbcb224ade4a7 ee40790f1e36339536a073e2633706a07f3dfa49cc8bc83838e3b5753a38f996b96d2492eb9cfa0cf6aeab48fe1af87fb4cf9cb33a6d24e48aea345fbeb5cae8 fd05755a27df5a561f29d4e947762ba5d246cc1ae6748fbeb5d3e97ce299474fa4f55ae9746edf4ae6b48fe1ae9746edf4a71dc71dce974beab5d3693d16b99d 2faad74da4f45ada1b9a4773a4d2eba4d23a2d737a5d749a4745ada3b9a4773a5d2fef2d74ba5ffaafc6b9ad2fef2d74ba5ffaafc6b686e6913a4d2fef2fd2ba 3d30640ae774afbcbf4ae874b6fbb5b2dcd23b9d26967256ba3d3179ae734a18db5d26975b437348ee741a6f45ae8f4afbab5ce69bdaba3d2beead75a348ee6f 695f796ba3d27a2d739a57de5ae8f49e8b5d34cd23b9d0e9bf7c7d6b76dbfd44dff5ccff0023585a6fdf1f5addb6ff005137fd733fc8d76533686e78effc129f fe5195fb3eff00d93cd0ff00f4821af7eaf01ff8253ffca32bf67dff00b279a1ff00e90435efd5a9a85145140053241834fa461b850055960f336ab1ef9af3cf da6ff667f0a7ed61f07f57f03f8d34f8f54d1f5a84c322edc4b1b60959237fe091580656ec47bd7a5f97f97d2a2b98374642e17d0fa1fa54d48c66b966b436c3 e22742b2af45b8c934d34f667f2cff00f051dff827278bbfe09e1f1b8e83ac28bef0d6af24afe1dd654a84d46052995603ee4abe62ab2918cfcca4ae48f9e521 471c3aedc75edd33d7db918ebedd2bfabefdb5ff0063cf087edabf02b56f0578cac23b8b4bd898db5d2a21b8d2ee30425cc0cc0ed91371c67820b290cacca7f9 cefdaa3fe0977f163f66bfdabac3e1647e1bd6bc55a878967923f0dea76166de4eb88bb199d4b9223319910c81e40b16d766764f9cfe779d6432a7579f0eb47d 0feccf0cbc5ec3e3f04b0d9a4d46ac16efed2efebdcf9fbc3fe19d4bc61add9e97a5e9d79a96a3a84e9696b676d03cb2dd4ce4048915012ce49501002d923b92 07eee7fc11cffe086567fb2f43a6fc4af8a16b6fa8fc49920596cb4e3b6683c33b94f008cab5c05241906541c85273babb2ff82427fc116341fd87b43b4f1978 c2df4bf107c52b8573f6d8f749068d14830d05b96032c4121a528198315e149cfe805b59b472311b4291c8fc49cfe393fe735ee64990c68c7da56d59f96f8a5e 2f56cce72cb72a972d1da525bcbcbd06d8d82d9fdd50b9c64f52d8000c9ea4e00ea4f18156e2e294478a15715f55a25647f3f5b5b8ea28a28185145140051451 400514514005145140051451400514514005145140051451400504e28a3bd0019af8f3fe0af7ff000553f01ffc13dbe0278934b9bc5dfd9ff173c41e1bbc97c1 da5d9598bebc5ba6060b7bc91194c31c11cedbc99c85916de758d6574319fb071c57f39dff00075a7c3cf157873fe0a29a3788358bcbed4bc37e23f095aaf87e 47d2c5b5b698904b32dc5824ebc5cbaccc6e5998ef41a846840458cb71e36aca14af139f1151c61789f9aba40c3afd6babd23f86b95d27fd62d753a4b636d7c3 fda91f3bd59d2e8fc62babd1171b0fb572ba49cedae9f469305452b0ceaf49e0835d2e947214d731a43676d74fa49f9298cea348e36d74ba3718fa5735a4b7dd ae974839db4e3b8e3b9d2e97d56ba6d27f86b97d28fccb5d36924fcb5b437345b9d3697d2ba4d23a2d735a57dd5ae9748e8b5b4772e3a9d2e95f796ba5d287ee bf1ae6f49fbeb5d26947e4ad69ee694d6ba9d2697f797e95d1e98320573ba57de5fa5747a5f55add1b44e8b4b392b5d26975cde93fc35d26975d30b58d22741a 6f6ae8f4afbab5ce69bdaba3d2ce156ba344691dcded2bef2d747a4f45ae734afbcb5d1e93fc3f5ae98151dce874dfbe3eb5bb6dfea26ffae67f91ac2d37ef8f ad6edb9fdc4dff005ccff235db4cde9ebb1e3bff0004a7ff0094657ecfbff64f343ffd2086bdfb38af01ff0082541c7fc132bf67eebff24f343ffd2086bdf739 ed5a1a8bba8ce69a0fae29d8c50014519a2800271519396a929a53268020b94f317a1af9a3e23ffc1293e0efc53fda0ec3c75ad782f45beb85b5d5fedcae660d 7b777d2da3f9e487c29096f2ab1182de71e838afa78a0c7ad26d57a561c6528be68bb3296996034fb58e3555548d446a07a0e0761d80e9c7a715713e538a08da 69d1f4a7e84d9215fa50bf76968a061451450014514500145145001451450014514500145145001451450014514500145145001487ef0a5a0d00230cd78e7fc1 427e1df84fe2b7ec35f16f43f1c5f59693e15bcf09ea4fa86a975a61d4d34448ed9e517e2d87cd2c96ce8b3a2a61f7c2a5486008f6263cafd6bf0b7fe0e6bff8 2a7f8f3c35f1df50fd9efc05e2efec7f08af86e18bc6b6f656661bdbdb9bb3e71b592e5c67c8fb1fd94edb72ab22ddcd1cad202634e5c5558c29b7231c454508 5e47e3be91f797ebdba5753a43e36d72da49cc8bc83838e3b5751a4a676d7c2bf899f37d5d8ea348390b5d368a70cb5cc68fd16ba9d163c15a560e53a7d1e50a cbf2d753a53e53a572ba447f74d751a57dc14ca3aad21800b5d2695281b78ae6749fe1ae93494ceda71dc71dce9b4a60db6ba6d20f0b5cc6923016ba7d27a2d6 d0dcb3a4d33b5749a4b72b5cde975d269030cb5b477348e8ce9349392b5d3693ca6381b8f1935cde93f797eb8ae2bf6d3f14ea5e04fd903e24eada2dfdd693aa 69fa0dccb6b77692186681c46c432b29c82081cd6f455e563aa8d37566a9c7767be696fb994f1d315d2694795af813c37f0cf5bbff000fd8dd49f153e3179b71 6f1cac478aa7eaca09ad25f86baea74f8adf18bff0ab9ebc3ff5970d06d3bdee7f4051fa3be7d569c6ac2a47de57fbcfd0ad2a74565dcca0fb9ae8b4a9d36afc ebf9d7e6dc7e07f1242bf2fc5af8d0bfeef8bee97f40454d1f85fc5510f97e2ffc6c5fa78c6eff00f8aaa8f15e153d99b47e8e7c40bedc7ef3f5074c60d8e457 49a572a2bf2863d1bc5f0fddf8c3f1bb8ffa9d2eff00f8aa996dfc6b1f4f8c9f1b97fee74bcffe2ab5ff005bf0bfcacd17d1d73feb387de7ebae98c015e56319 c02cd800f4e4fe3c0ef5d1e92f96c03f32fde5cfcc9ecc3aa9f63cd7e352cbe3a5276fc68f8dea1b19ff008ad6ef18c10411bbd0f6e47620d57d31be2469ba8c 9337ed01fb415d42c0f956b378d26f2ad893c6c2a15b20700b337be4d6f478c307cbef266753e8f7c431928c2516bbdf63f6fb4f6db20ce074ef5b90dc46b0c8 377ccd1b600e73f29afc381e21f8880ffc96ff008e5f51e35bcf98fafdefe82964f14fc468ede4ff008bddf1c4ee5cf3e35bc3d39c7dec73c83f5ada1c6f835a 599d0be8efc42acd4e1f79fac5ff0004a59564ff0082647ecfacac195be1de84c08ee3ec10e0d7bf19148e4d7f3fff00017c57e3ef0efc17f0ae9fa5fc5df8b9 a6e9b63a6c505b5adb78aae561b58d461634524e1540000cf00015d61f883f12a4ff009ad5f198ff00dcd971cd69febc60fb31afa3df117f343ef3f741aee3dc deaa33d29d0dd2cd18656e0f4e2bf0aee3c75f132692364f8ddf1aa1f2db242f8b27fde2f7539ec78e461876239a907c41f8958e7e357c66cf53ff001565cff8 d1febc60bb317fc4bef10dedcd0fbcfdd3f307f7bf4a42dcd7e169f881f127fe8b57c66ffc2b2e7fc69c3e217c4a51c7c6af8cbff8565cff008d1febbe0bb32b fe25ef883f9e1f7b3f74032d29907ad7e169f889f12ffe8b57c66fc3c5b73fe349ff000b0fe257fd16af8cdff856dcff008d1febc60bb30ff897be20fe787dec fdd2f3031fa7bf4a4372a9edee7bd7e182fc42f8943a7c6af8cbcfa78b6e7fc6be9dff008216fc64f1d78eff006a0fda03c35e2af1df8bfc65a4786f4cf0c5d6 971ebba8bdeb593dc7f6999f6337237f951e7fdc15e8e57c49431d57d9524cf94e2ef0a735e1ec1fd771928b8deda6f73f4cc9de9fe78a74636ad3633b4773f5 143cca9df1d87bd7d19f979251519b955619fe2ce3df1d685b9570bca9dc3230739a06499a2a3170ad8e4609c03db3d314e8db7ae79fc6801d45145001451450 01451450014514500145145001451450014514500145145001413cd1487ef0a00461cd7e5a7fc1c5bff0483ff86b8f066adf1fb45f187f63f883e15f82ae0dee 8d7d6de6596af6364f35e9f2e553be19d525bbfbcb224ade4a7ee40790fea61af8f3fe0af5ff000554f01ffc13d7e0378934b9bc5bfd9df173c41e1cbc97c1da 5d9598bebc5ba6060b7bc91194c31c11cedbc99c85916de658d6664319e7c5460e9be7d8cab462e0f9f63f967d2492eb9cfa0cf6aea7483f32d72ba40c3afd6b aad1c7ccb5f07f69d8f9aeaec74fa48c0aea74439db5cb692738aea74518d9f4a561d8e9f4939c0ae9b491caad733a48e41ae9b483c86a633a9d20f4ae9748ea 2b99d2782b5d3691c91f4a71dc71dce934beab5d3693d16b99d2faad74da4f45ada1b9a4773a4d2eba7d263e56b98d2ba8fad751a4f55ada3b9674560e2085e4 ff009e6a5bf215e77fb7e8c7ec35f153d7fe11dbaffd16f5e8b61179f0bc7ff3d14afe86bceff6fd3ff1837f14f3ff0042edd7fe8b7ae9c3fc68f432d8ff00b5 53f5460783493e10d27febce1ffd0056a85e3fc2b2fc1df2f843493ff4e70ffe802b4fcccf4afc8ab3fde3f53fd54cb7fdd295bf957e485dbee68c7bd2027d29 c0d64772b8d20fad1b4e3ad3b38a6b49b4d1ea02793ee697cba0c98ffebd561addab6a2d662eadcdda7de84483cc5e33caf5e9cfd29a8b64f36b6659f2f351dc 2ed439c7208cfa7f9fc7e9e8f32656997258c4d838e33fcc7f9edc5241aec739f05c6ef851e1ef94ff00c78447fdde3a7be0f19191c7048e4f4fb2b98f834c13 e16787ced51fe81181cf418ff3fe35d30909edc7033d69846e85d9414aaf3ead6f6b246b24d1a34c71186600bf4e9ebd47e7560be06ee3148ad56e0011e94bb7 775a42d83cd3b7516685ccef61bb28f2e94b628ddec6843bb13657d0ff00f040e19fdb6bf6991dff00b13c21ff00b98af9e77f15f43ffc1030ff00c66d7ed37f f603f081ff00d3c57d9f045bebadf97f91f83f8ffa70fa7fdf5f933f540ca231cf4e4d7997ed5ffb54783ff640f837aa78dbc677ad0e9960a2082d2dd44d7dab dcca42c367690e419ee257da8910e58b75039af499f71978fe13c727dbfc4fe55f07fece363a1ffc1483fe0a47e3bf8bdad4324fa0feca7e24bef869e02b4f39 95135a10a1d6f5498000484892dade2524aaac0f215de6364fd74fe25ea6d69ff13ff6bdfdb27c216fad780fc37e07fd99fc27ab4625b37f1ed8cdae78ba584f 09249a6c4f15bd91c306f2a69a59010032ae4aad8f0cfc2bfdb9fe025b35e9f8abf06ff6808519e59b48d77c2d2f83af6650b9096f776925c428e791fbd85972 79602b4bfe0b15ff000542d1ff00e0971fb2fc3e228f4c9bc4de3ef185d1d17c1da0db00d25e5f3a3b0964556121b743b4398f2e59e34054c81d7f317fe0825f 127f693f0dff00c1747c6bf0bfe3f7c43f1bf88359d2fc1b77a9eada25e78824bed32d6eeebfb3eec05855becf1b22dd11b6350a872abc0e403f5abf628ff828 b687fb5d6bbe26f0aea7e13f14fc29f8a1e0f7ff0089c7837c591c56fa879430bf6db66562b7562d2078d6e13e5240fba1973f495980b6eaabc2af0063181d87 e02be3bff82b9fc0256f8351fed0be1ab48e3f8c1fb35595e78bfc2d7f972b796d1461f51d32644c178aeed239621de37977290032bfd21fb33fc6ed37f697fd 9dfc0bf1174686e2db49f1e787ec7c416704f8f36de1bab749d237c71b9438538ee3bd00771451450014514138a0028a4ddec68cfb5002d14993e9464fa51701 68a01a2800a28a2800a28a2800a28a2800a3bd14500340e2bf9cff00f83ad3e1ef8afc3dff000514d1fc41acde5f6a5e1bf11f84ed57c3f23e962dadb4c4b796 65b8b049d78b97599cdd3331de83508d0808b196fe8c4be0d78e7fc1427e1e784fe2b7ec35f16f43f1c5ed9693e15bbf09ea4fa86a975a59d4d34448ed9e55bf 16c3e6964b66459d1530fbe152a4300472e2e8fb4a7cb731c453e78347f20fa4f122d755a47f0d72ba47de5faf6e95d5691fc35f0afe267cda5ab4749a3f415d 668dd16b93d1fa0aeb346e8b4ac33a6d19b3b6ba6d2d70ab5cce900295ae9b496dccb8e698cea3483f76ba5d1bb7d2b9ad23f86ba5d1bb7d29c771c773a5d2fa ad74da4f45ae674beab5d3693d16b686e691dce934bae9f497e56b98d2eba4d23a2d6d1dcd16e751a4bfccb5e73fb7f73fb0efc52ffb172ebff45bd7a2693f79 6bceff006feff931cf8a5ff62edd7fe8b7ae9a1f1a3bf2dbfd669ff897e661f835b3e10d2beeff00c79c3ffa00ad2efdab2fc1a31e10d2bfebce1ffd0056962b f22aebdf7eacff0055b2bff74a5fe15f921e5703a9a4ce7ffae69b9e283cd6476b0638ff00f5d230efec4e7dbbd2492ac4a4bb050b8e4fb9c71ee7381eb9af88 ff00e0a09ff0532b5f01aea5e0bf02ca973aa286b7bfd51491f61914e0ac247591791bb202b06001e0d7a596e575b1b539292d3bf43e5b8a38b30391615e2317 2f45d59dd7eddfff00050ad2ff0067286e3c3fa14f6da878aa5803322162b65bb25599971f36d0085c9277a918e09fcfff00825fb67f8a3e177c62ff0084926b ebabd8ae6757bc89a407ed0838fe204020118e38e98c715e37ae7882e3c41a84d7579349757170c5de4762ce49392727ae73ce79aaab212fc8ebd2bf5acbf867 0986a1eca6b99cb767f18712f8b99c663994719425ece14dde2976f3ef73f75bf67cf8f1a3fed01f0bf4ff001168f73f6a5b8455b88c95135bcc321d1d474208 24762b83d4e0770eff00ba662bd88c377e09edf87e9ef5f8adfb1c7ed6bae7ecabf10e3d4ac645bad36e310ea165280c9770e79039e187553d8e0f3d2bf5f7e0 bfc61d0fe3d7c36b4f127872e1ee34dba461875db244e3e56575fef0391c7de0030001afcef88387ea60aa73c35833fa7fc37f12b0fc438554eb3e5ac96a9f5f 345bf831b87c2df0ff00de6ff408ce491cf18e7dce3271819270074abbe3af1d693f0e7c297dad6b5796f63a6e9d1f9b3caee06d190a00e464962001f5ed9238 bb6f8b7e1ff825fb35e9be23f125cc767a669f6516f2cb9791cfdd8d5720b3b72028f72700161f977fb70fede7aefed59e2a16aaf269fe14d32666d3f4f53b72 4f1e6cb8fbd211c752141c29e599f3c8787eae6152ef48f56747881e2560786a8b8fc759ed1fd59d77ed37ff00051bd73c75f12527f0cdcdc69fa5d8ce258f2d 86ba604fccc3b2107010923183d7a7dbdfb007ed8161fb4dfc38fb2c92c31f883458a24bbb71846903160195724b28da3381f296518c57e37cb3f9cfbb927eb5 d67c17f8c1ad7c0ef1f699e24d06e9ad752d32612c4c390c7a1523ba904823b82457e859870a61678554a92b38edff0004fe70e19f1ab36c3e6f2c563e5cf4aa 3f7a3dbd3b58fde6fbf1e7e652c37107a8fafbd0878af1dfd8e3f6bfd0ff006aef875f6cb554b4d7f4b8a31aae9b1a37ee1d98aa98f3d51f69c004953c37504f b18c6e6fe2da482718e475fe5d7bd7e498cc1d5c2d574ab687f6564b9ce1b32c347118597345ebf7f417346fc77a011fddfd68c2e7a572a3d7f500772e2bdabf e088bf14fc31f0c7f6d8fda48f893c45a1f87d6f342f09790751bf8ad7cd0bfdadbb6f98c376372e71d370f515e2db87a533fe0953e3b9bc0bff00059cf89d3a cd22c737c31b78cc5bc8476fb75b6d6201fbcb96c1ed93eb5f5dc1b51431329be8bf547e03f487ad1a7c38a4ff009d7ea7ed01fda6fe1bdccde5c7f107c12d21 20ec1adda923381fdfeb5f107fc1133f684f04784b42fda8b45d5bc4de1bd2754d3fe3ff008bef25b7bad4a08a4b9b7b89e39e1b9552d9689d18057009263651 f76be948ff0068af3029fb4b10c37708195cf1963f7482c0919cf6c9ea4d7c77fb4e7c4bf187ec6dfb5cdcfed13f0f6c61d63c0de2ad3e0b3f8c1a1db2b4d7d7 4966852c754b646fbd2c11bbaca03ee78a201559b98ff528e614de88fe1459a52be87e7b7c2bff00829dfc39fda53fe0af3e24fda33f698f0c7c54bcd13c0734 43e12786f4ff000fb5d5be91e44eef04f3aab2fef63f2c4a7e670f34c79db0c429bf00bfe0b0bf0a7c09ff0007197c5cfda1afb4df8812780fc55e1f6d32ca18 744dfa9aba5969b16f9203202885ad1f0739c3479c64e3f68fe07ffc1403c2bfb487c38b0f16781bc496fe22f0fdf44248ae21662f1677288e643f34720230cb 2053b89381d07c8df097f623d4be0eff00c1653e20fed6575e38d11b42f1369f7114ba5b40eb35821b7b784b4b33308c2a9809c920638eb551c6c5ee5c73183d cfb93f6a6fdb67e15f85bf637f889e2b9fc69e15bdd3ecfc25a85f35aaeab034f7005a33883cbde4991b7a27960162cea00c9515c5ff00c121be32f83fc09ff0 4b8fd9fb49d63c69e19b5d4acfc03a389e0bbd520827b726d236f2dd19c156504290403c738af92fe33fed6b73ff00057df1a69ff0cfc0b3477dfb3a69ba9a0f 89dafdcef85fc4cd6b22cd069162d20dec8f2c49e74a8a0147c239f983fdd561fb4026996105bdbb25bdbc11ac71c512ed48d40c001738503fba0003a741512c 741132cd29a763d5bfe1a4fe1eff00d0f5e0dffc1d5b7ff1747fc348fc3eff00a1ebc1dff839b6ff00e2ebccd7f68a2cbff1f0dfe7f1a0fed16c3fe5bb1ff3f5 a8fafc3b8bfb529f73d33fe1a4be1eff00d0f5e0dffc1cdb7ff1740fda4fe1ef7f1d783bff000736dffc5d79aafed0ccc322e1bfcfe341fda19c7fcbd11f53ff 00d7a71c7c3b87f6a53ee7a841fb42f80ae8feefc6de1393fddd5edcff00ecf5607c6ef06b0e3c59e1b607fea270ff00f155e4e7f688283fe3e0b7a8c11faee1 4b1fed16557fe3ea45f6ddff00ebfe757fda14fa8d6694bab3d5ff00e176f8347fccd9e19ffc19c1ff00c551ff000bbbc1bff4367867ff0006907ff155e563f6 8b90f4ba6fc5a8ff00868b907fcbcffe3d4bfb4a915fda947b9ea87e3778347fccd9e19ffc1a41ff00c5528f8d9e0d3ff3377863ff0006907ff155e5e9fb4439 1ff1f2df9d29fda1dcff00cbc37e742cca90bfb568f73d6346f8a5e19f116a31d9e9fe22d06faee6cf9705bdfc52c8f8049c2ab1270013c7606b781cd788e93f b47c76ba8c525c48d35b838740df330f6cf1c75e7d31c66bd73c25e24b5f1768506a166c5edee012a48c104120823d41047e15d147130a9a459d387c653ada41 ea69514515d075051451400519a28a006b75afc2dff839affe0a9fe3cf0cfc77bffd9efc03e2efec7f088f0dc3178d6decaccc37b7b75767ce36925cb8cf91f6 316adb6dcaac8b773472b48098d3f7448c1afcb6ff00838b3fe09047f6b8f066b1f1f745f17ff63f883e167826e7edba35edaf9967abd8d93cd7a4c52a7cf04e a92ddf5591656f253f7203c878f1d1a92a6d40e7c4c66e0f90fe7bf493975e41fa76e2baad1ff86bcfb4ff001ee8f14996d4acc37f16251807bf3deb7f4ef8b1 e1d80286d62c57eaf5f1ff0055abccda8bdfb1e23c2d6bdb95fdc7a468e30a2ba9d14e42d796699f1b3c2b16dddae69ebf57ff00eb5741a5fed09e0d80aeef10 e9fc7fb67fc2a7eab5bf9589612bff002bfb8f5cd29461735d268e3001af1fd3bf69af01c406ff0012e9abff00023fe15bfa77ed57f0f6251bbc57a58fab1ff0 a3eab5bf9594b0b5bf95fdc7b56903eed74ba57ddcd787e9dfb60fc35802eef186923fe06dfe15bba7fedadf0ae35f9bc69a3afe2fff00c4d5470b5aff000b2f ea95bf95fdc7bbe987e65fa574da4f45af9ff4ff00dbb3e12215dfe3ad1d7ebe67ff00135d0699fb7d7c1d895777c40d0d7fefe7ff00135b430f57f959a470b5 7f95fdc7d09a5d749a3f216be73b0ff82877c15876eef885a18ffbfbff00c4d6ee9dff000523f81d0aaeef88fa0afd7ccffe22b58e1ea5fe166ab0b596bcafee 3e95d2c6196bceff006fcff931af8a3ff62edcff00e8b7ae2b4dff00829c7c0580aeef895a02ff00c065ff00e22b8cfdb1ff00e0a27f057e22fec91f10341d13 e2068ba96b1ab6893db59da4425dd3c8c8ca1465473923ad6f468cd4d368eccbe855589a6dc5fc4ba799e99e0e3ff148697ff5e917fe802b44b0c77af36f0bfe d15e0bb6f0c69b14baf5ac52476b12b232bee42107078ea2b407ed23e07c7fc8c567ff007cc9fe15f8ed592e77eacff5432b8b784a76fe55f923b8aafa95e47a 758c9713710c2bbdcf6503a9fc3fc6b8f1fb497823fe864b1e39e8ff00e15e67fb53f8bfc3df1b7e1a6a1a0e9be3a6d0e4ba8088e7b794c692c9ff003ca5c8cb 46de808e4024e060d616319568c24ec9b0cd6b57c3e12a56a10729453697767cdfff000505ff00829a36a4b7de11f87fa866de4411dd6ad04a724f3b922e063a f320393bb0000bb8fc09a85e3dd5c3349234859892739ddef5b3f10bc19a8780fc4b75a7ea51b47716ee55b2383ee0f7046083ef5cfb26724ff2afddb29cb70f 85c3a8d0dbb9fe77f1c713e699be6339e62da71d3976b087a7b529f95475a02ab27dea42003d7f4af5b5bdd1f17aa26497628fba57ad7b6fec71fb6aeb5fb28f 8cfed50c2fab68b78ac97ba64b70c91caa7187538212518e1f69fa57873282bd69fb15a35efc679f4ae7af87a55e2e151687a59666989cbabac560e7cb247a77 ed0bfb51788be3eea5a7a6a774d1e9da1db0b4d3ac90958add3b923f89dfab31e58e33c000796ce407fc33cd4924782d8cb0ec4541336f3bb9aaa387a5461ece 92b24679966789c7d7789c549ca6f76203b7ff00ad5224b85fc2a1a96023f8ba569b6a79fcd6d51ddfc06f8e5af7c01f1ed8f88bc3b7d2d95f59be58066f2ee1 38dd148a0fcc8dd0a9eb9edd6bf62bf650fda8fc3ffb52fc2e8f5ad20258ea167b60d434932832d849ce1474cc671f2371d082176b11f87eb2a842bdbbfbf3ff 00eaaf4efd963e3e789ff67bf8a363aef86e4dd70330cf6d2a9922bb8988dd148bfc4a481ee0804104035f37c419152c6d173da4ba9faf785fe2162b23c5c70a ef2a337aadda77dd1fb868723ee95e48e7db8a5cd79cf84ff69ff0aebbe15d32f2ff0052b4d26faead6396e6ca57dcf6923282d1938eaa723b74ad05fda27c13 8ff918b4ff00fbe8ff00857e2728fb394a1d8fef2c34dd6a71aa97c491dc2ae4578f7ecede316f027fc1547c7b7cafe5f99e05b38739c75b98dbff0064aeaffe 1a2fc1257fe462d3cf6fbc7fc2be67f127c6bd26c7f6e1f176b9a6ea504f6d3787ec2d9665242960cec573d3b0af7b23abc8aaca3ba8fea8fe71fa5254950e0f 95549e9247e951fda315b186f97036e4f41da9cdfb47ee4c798dbb04264e40cf507d8f43eabb87522be0293f6a2b584e0ea10a2afcabbe4dbc0fad27fc355588 ff0098a59e7febb2e3f9d6b1cdaba5eedcff002cbfb7310d5e29ee7d21f167f67bf84bf16bc4675c6d167f0b7880f2fabf86af24d1ef25ff007cc1b5643c0f99 c1618c01deb0bc3bfb217c2bb4bf82e3c4775e34f889f6393cd8edbc5de229b56b5ddebe49db13e3b0753d79c9e6bc2cfed57a78ff0098a5a67febb0c7f3a72f ed55a7e3fe4296bff7ff00ff00af5aacf31095b536ff0058b1895b53ef7f0ffc70d3fc29a3dbe9fa6dbd9d8e9f66a16ded6d6158614006c5011400001cf0011d 07001ab83f68d541813310bc7dee9f4f6fad7e7eff00c35769ea3fe4296bff007fc5387ed61a781ff216b5ff00bfe2a3fb5abbe8c8fedbc4b77699fa063f6925 03fd61fce97fe1a47fbb28fc5abf3eff00e1ac74ff00fa0b5aff00dfe1fe34e1fb5869d8ff0090b5a7e338a5fda95bb31ff6d57eccfd041fb4771ccdcffbd47f c346affcf61f99afcfd1fb58e9c07fc85acffeff008a3fe1acf4effa0bd9fe130a3fb52bf661fdb55fb33f4117f68f5c7facfd69c3f68fe3effeb5f9f27f6b3d 37fe82f69ff7f85397f6b3d376ff00c85acffeff00ff00f5e8fed4c47663fedaaffcacfd061fb47e47facffc7a97fe1a378ff59ff8f57e7d0fdad34dc7fc85ec bfeff8ff001a72fed6da57fd062cbfeff0a3fb4ebf663fed9add99fa0cbfb47617ef8ffbea8ff868f18e6403fe055f9f7ff0d71a5af4d5ecbfeff0a3fe1ae74b c7fc862cff00eff0a3fb52bad6cc5fdb55fa267e8569df1f6e359d4adececd26bcbcbc9160820815a4926763b5515464b31240007249c739c1fd12fd8e7c33ab 7867e03e9435c8750b3d4af9a4bb92ceece1ad15d8ec409d630502b943f32bbbe707207e45ff00c1183f688f0cf8f7fe0a0be12d2af752b8b8d42ead7503a4c7 672a18dae96d2566f3c31cf95f675b82367cde608bf87757ee1404f3f2915f77c27175693c54deb7b5bee7a9fa4f044655a8cb1937addc6df73b92514515f627 de851451400505b6d14d7a007679af0dfdb5ff006bbd07f674f00ea162358fb3f8cb51d3a66d1ed60884d32484148e67520a2a2b9dd9938611b850e415af6e6e 0d7e64ff00c15b7c33ab695fb4dc3a85f4d3dc69baa6970ff67335b7971dbaa332c902c83fd630726424f2a2e1474db9f0788f30ab84c0caad1577b7a5fa9fa1 7861c3983cef882960b1f3e586b2b7f372ebcbf3ebe57b6a7c1773fb1a7c2785032fc3af08bf45c7f66c7d3b76fe740fd8cbe12afdef873e1156ee3fb393fc2b d32e017036b6d19f4eb5232f9873df15f8f7f6b6376f6afef3fba9707e4aad058587fe028f303fb1a7c25c71f0efc23ff82e4ff0a43fb1a7c272bff24efc23ff 0082d4af4e2bb4d2f95b852fed4c67fcfd7f795fea6e4bff0040d0fb91e603f634f84d8ff9277e11ff00c17251ff000c6bf09f1ff24efc23ff0082d8ff00c2bd 3fc914a22c51fda98cff009fafef0ff53b25ff00a0687dc8f2f1fb19fc27ff00a27be12ffc16c7fe14bff0c67f09b1ff0024efc23f8e9b1ff857a691834e0991 47f6a62ffe7ebfbc3fd4fc9bfe81a1f723cbdbf634f84e47fc93bf08ff00e0b52953f636f84ea3fe49e7843f1d363af4ff002e9a530d42cd316bfe5e3fbc6b83 f265ff0030d0fb91e67ff0c75f09f1ff0024efc1ff00f82d8ffc29bff0c71f097bfc3cf08fe1a6c7fe15e9d8a314ff00b5f15ff3f25f78ff00d50c9bfe81a1f7 23ccd7f63af84bff0044efc23ff82c8bfc2b81fda97f654f869e1efd9e7c5d7fa6f81fc33a7df5969f24b0dc416289244c3a329c0c107bfd6be8ac715e6bfb60 4647ecc9e393ff0050b7aebc0e698996223195476b9e4e77c279453c0d4a90c3c534bb23cc74cf02e90ba5dba8d36cf0b1201b63c6781ce3d7dfa9a9c781f47c 7fc836d3fef8abba58274eb73dbca5fe42ac57c3d6a93e76ae7ef196e068ac2d3f756cbf2324781b470dff0020db5ffbe286f04e8eec47f66daa8c73f20f9bdb a1e3bfe15ad48ea1d79cfb62b1756a3d99d9f53a36b729e3dfb4bfec8ba2fc6df08489a6d9d969be218006b69d14a89700e636249eb9e3d315f9c7e34f056a1e 05d7ae74dbfb7961b9b5731ba329e08ff3fad7ebe40be50cb33b37d7f5af1bfdadbf652b6fda03c3325d58c70dbf892ce322070028bc4193e5374e73921bdf15 fa4706f184b0ed61314eeb64cfe67f1bfc15a59b53966f94c546b416a97daff827e66bc988b6f079eb43ee765e1456bf8bbc1f7fe0ed6ee74fd46de6b7bab538 78e442a53ea2b29519e5f97ef7403d2bf688ca325cd17a1fc055f0d52855742ac5a927669ef7ec3a28da46e3ef2fa0af73fd963f632d53e3f5e7daafa49b49f0 fc2733deb2677b76541dc9ce3d07e55d3fec6bfb115cfc4e921d7fc42ad63a1c6dba28d8625d439fba9e8b91cb76ed5f78e8da3daf8774b86c74fb5b7b1b5b65 091430a0548507f02ffb3d7dce49eb5f9ff1571a47049e1b0afdfefd8fe9df087c05a99c28e679d45c68ef18bd1bff00807e5b7ed11f00755f80fe347d36fa37 f2641bede70331ce9d883d38e847622bcd6e576c98077638fc6bf5bbe33fc18d1fe37f826e347d5a387e7e2da765df25939e8ea783e808ce080075afccff008f df02354f825e3abcd26fa3768e16fdccfb088e74201054fd0f40783c57a5c2bc514f32a2a9d4d2a2dfcfcd1f27e32784389e18c64b17835cd869bd2df67c99e7 b8a9553294e3061579fae45747f0dbe19ea9f12fc4b6fa4e8f6d35dde5d36c5451d3b927d800492780064f15f5d3ad1a517525b23f11c1606b62eb470f878b94 a4ec92ddb29785fc2979e2bd5ad6c6c6096e6e6e982471c2a5dd98f00003924e7b57dfdfb267ec43a7fc20d21750f11416f7fe219006084ac90d8f7c0c70ef8c 7cd9dbce067ef1e9bf666fd94b47fd9e741f3a78edaebc42d193777ad864887f7109c6d51c649e58e73c703675ff00da5f45d1f559ac745b1d5bc5b7cabbe41a 45b99e38b3cfcd20e0f5ea0100e466bf29e22e26c4e3a4f0d97af77acb63fb6bc2ff0008b2de1ba71cdb89649d76af18daf6bf975675cfe0ad1e341ff12cb3e7 9388b1fe7f33c63d29c3c0da3e3fe41b6bff007e8579f9fda72e34e469b59f0278cb4db551f35cfd9bcc8e31eadc0c0fc6bbef0878f349f1f69eb79a2dedbea5 6ec42bf944878091d1908041fc2bf39c46578ca6b9e5af9ee7f4c6559f6518c92a141fbdd9ab3f95c77fc20da31ff986dafbfee8578df847e1f69de23fdb33c6 961fd9da7cd1db68b67324525babaa8c0e46738259947e35ef454c6db5baff003ae27f652f0fff00c24bff000514f1f5be376df0a5b4a7d809201fd457a5c3b3 9b55d7f73ff6e47f397d3030b07c116a6b792fd4da6f813a6cee24fec5d236b00462c907e4703f950ff0174c019bfb1349db18dcff00e848db46719638e07b9a fa923f8527cb50236e80602f4e07f9fcabcdbf685f1b5afc19fec5d26c74b93c47e32f154e6db43d1227f29a765c169a57e3cbb75c82cec412d9ec091a61a388 ab25085cff0023e9e455e4d2d7fa67911f805a68da7fb0f47f9f9406c132e3d546391ee2947c00d340cff61e93c0dc4fd823f947a9e3815bb75fb3ecda56ae66 f8c5f1a2cf45bbd497ed29a1699ad43e1fb34dcd8fbee44970a08c6e2179e848c3557d5be0c7c39bdb6853c19f1de3f0f6a7bc7d9957c636fa9dac9210082f6d 2cc4499dc00008e4fa839f6965b2b72ba8efdeda1e97faaf52d7e7665afecfda7cbbb6e87a3b6deac34f8caa77c938c018f5a69f80ba693ff205d170791fe831 9e3f2aeebe1df8a75cf027c54d2be1c7c4eb4d2d75ed62379b41d774f463a76be5786818360c370b90fb31b7241e8ea4fb73fc26dc7e65676eec07def723d7d7 81cd7938cc3e270f53926f4efd0e1ad905783d1b3e571f00b4d3ff00305d1bff000063ff000a3fe14269bff405d1ff000b08ff00c2beab8fe132e3fd4c9f9535 fe12027fd4bfe55c7ed2b7730593e23ccf9617e01e97ff00405d1fff000023ff000a3fe141e963fe60ba3ffe0047fe15f54a7c2650bfea9a97fe15428ff962de fc53f6b57f98a793d7ee7ca6df01b4c07fe407a3ff00e0be3ff0a07c07d2ff00e807a3ff00e0be3ff0afaa5be12063fea4d27fc2a3e3fd49a3dad6fe623fb1f1 1e67cb6bf0174b03fe407a47fe0be3ff000a0fc03d2dbfe607a4ff00e0be3ff0afa987c2650398dbf0a5ff00854c83fe58b1a5ed6b7f307f63e27ccf9657e016 958e745d27ff0005f1ff008529f805a48ff982691ff82f8ffc2bea5ff855083fe5dcfe228ff8550a7fe587e954ab56be921c727c4dfa9f337877e1347e0ef105 8eafa459dae97aae95711de595e5a5bac17169346c1d258e45c323a300c19790464106bf75ff00e0945f18bc45f19bf631f0f5e78aa4d72fb5cd2e6b8d366d4f 53842b6aa91c87ca951c1265558d922691be66961977166058fc03fb307ec7f0fc7bf8d9a3f86ee96f2d74eb8679afae6da1def6f0c68598e4f09b8858c31c80 d229c37dd3fac7f043e0fe8df013e17693e12f0fc7347a4e8f13245e749e648ecceceeec7fbcceccc4001416c000600fd138170d8b72962272fddeaaddde87de 7056538ac3d59569cbdcb5ade7a7f573aca28a2bf4a3f460a28a2800a43c9a5a6b9c5000dc1ae03f69ff000b68fe2ff801e2eb3d7a682d74c7d26e5a6bb92d8d c8b20b1b309c4639631901c01ce5060838aef5cd7e7dff00c1533f6b1f10c1f122f3e1ce85ab1b2d160b048f5a8a0876cd3cb2fef3ca690f3b04262388c8044a eac5b955f273ac7d2c2612556aaba7a5bbb67d8701f0e6333bce6960f032e5927cce5fcaa2d5dfaf6f3b1f13caa467a7af03bf7f7fce9e9d291feefe9fe7f4a6 a3f1fa57e0bcdef3b1fe8fd3bad1b15fef501b02909c9a28352407229a5f06857c0a6939340013934f4fbb4ca50d81400fa63fdea5df4d2726800a28a29dc03b 579c7ed83ff26c3e38ff00b05bd7a3f6af38fdb04e3f660f1c7fd82debaf2fff007887a9e37107fc8beafa1c1695ff0020bb6ffae4bfc8558aafa611fd956bcf fcb24fe42ac657fbd5f295fe367ecb977fbad3f45f9051de8f97fbd467358d8ec109a497ee76c77e334ea3a9e7a1e2abd08a8b4b5ae7857ed8ff00b245afc7dd 0e4d5b4a8553c516718019a40ab7712ff0918e5fe6e0fa2815e43fb22fec0735fea7fdbbe35b6ba86c6d24c4365226d6ba6538c303d1011d31cf1ebcfda3f777 7cfc630011c743ec7d453832b32b6ef9b18e4938fd6beaf07c638da183fa9c5fcfa9f8f66de0a6418fcf219e54a6b996ae3d1beed7723b7b75b0b78ede048a1b 78d046238d76a2a8e8b8eca07614f1c8f4e318a3037923f13eb4a06057c9d694aa4fda4dddb3f5ea387a74a0a9c15925b21106c2c7246ec06e7b0e6b86fda17e 04697f1ffc0f2697a847b2f2057974fb95c2b43211c2e7ba1fee9efdc715dd719e4e2801416fbadb8630c335d583c656c35455a8bb35a9e6e799261336c24f07 8d829424acd347e62b7ec87e301f183fe10e8f4f91ef55b2c7fe5922601de5ba0500f5f5e3ad7dddfb377ecd9a2fecf1e18686d91a6d52f517edf7ae0167619c aa7a27d793d4e3a0f48f2b6dcac8aca0aa9008500e0f6cf5c7b679fa6686558e1dabbb6a8032076cfa7f41c0ec2bea33ae32c56634e387578aebe67e47c07e07 e51c338ba98f49549b77837f61791e5fe3fbd9fe327c491e0db1bbbab1d1f47816eb5c7809569c381e55a83d033296241e31ea57158bf1a3f68bb3f80777a7f8 4bc1fa15bea5aedc2acd058dbc4cd6f6fe6292a4aa9deee41c85cedc307ea6b7fe02411cde32f89178d81a84be22962948ebe5a11e581ea39381f4af9a7c677b e34f107edffabc3e15b88ad35c6b89a0b69ae046c90c0b095c9dca4710af5033e95ece5583a55b10f0f2d214e09db64ddb767c8f1b71062b0597471746eeb622 ab82b2bb8c536928a7b3b23d874cf187c77d1278eeb55d0749beb2638785122335ba8c64811386c8ee4927239ef5da7c60f0549e17693c71e18b66b6d734d225 d46d903245aa5b70648da3232580c92dd827a8535e43f133c63f16bf656fecbd6b58f11d9f89345baba481d0a9913711bb61caa901821c6d232141ec31f4df86 7c416de2cf0ed8ea36a19ad2fed96e23122f2d1b26403c9c70e7df8e9c9039b36ab3a32a55e928ba7276d2f67e4cf5b836384c753c5606acea47134ed2b4edcd 1d2f74d7464fe18d720f15f87ec75483fd55fdb25c47df6871900fb8efee6b1ff623f1ee81e02ff829878faebc412ea10d9cde0a8a246b4d2aeafdcbf9f6a7ee 5bc52381c139200e2b9bfd942ea47f811a4c7f3488b2dc244c7a9413be3fc2bd5bfe0942597fe0aaff001217b2f810038ee3ed566bfc89ae3c8f0f1a58bc4d37 f0a4feee647c6fd222b4b1fc0542ad5de5257fb99f6027ed0df0eee25923fb578a1999bcbf97c15ad955dc194f1f64e477e33d462be7bfd8bfe357857e2afc77 f8bbf127c416faf497916bf2784fc30cbe10d56f96d74bb35e123782d9bcaf3e692569236224ce01502bf428c2c65e0333e42164eb8e879fef609e7a71eb5f26 ff00c1336cae3e1c78abf680f875aaaac3a9683f102fb5eb61b02f9fa76a611ede73b86f6ce1c6e19dacacbc1183eae0fd9fd52aaa7f17e973fcf98e169276b1 f9ebff0005a3f895e09d43f6e3f841a85fdaeb9a9f8474fb2b53ae4573a25ee9771776697eed2a2a5cc70b3168f7fccbf282fb41e2bd2fe00fc51ff827dfc57f 10db416be16bcf0aeb0b2afd92db57b7d499a7977298d63fb3cb3ab485ced0bd5fa007a57e91eb57df06fc45fb415e4d7f37806fbe247876d62b09a2be92de4d 574fb773e7246a8c37aa90e242543677f18c915f9d9ff071be85f077fe15d785b52d37fe11eff85b526a8b6e3fb39e38ee65d34452195ae228cffabde63d85c6 ecb9d985122afd1e5f89a789a74b06e128e9bad97a9afb1a6e3cb63e8dfdb8fc51e0bf8abfb2ef8aa3d39bc591f88749b56d5fc3b72fe0dd760fb1ea36c3cf86 58e56b41e53abc7b49240547c1e09dbd1fecd9fb59f83fe2b7ecf9e0bf116a8be245d5759d1ad6e6f859f83b58b9b7170d12f9bb1e2b468d97ccdf8d8c547404 819aeafe327c54bef835ff0004bfbff14788c3c9af59fc3e822b85b8f966b9d4e7b18a0f2cee2c4c8d3b0560092777048071d87ec33f0b6f7e0cfec73f0cbc2f ab40f06a9a37872ca1bc8df04c73794acebcae7862473e95e0d7a74a9e0ad2d7de767dd7532961693e87383e3778048e5bc623fee45d77ff0090e90fc6ff0000 9ffa1c7ff084d77ff90ebde0a2ff0077f45ff0a0c6a7f807e217fc2bc5e6a3d8cfea74fb1e0e7e377807fea70ffc2135dffe43a07c70f007af8bbff084d77ff9 0ebde3c98cff0008fc87f850b0a67ee47f8a8ff0a39a8f60fa8d2ec7839f8ddf0ffd7c5fff008426bbff00c8740f8dff000fff00ea6eff00c2135dff00e43af7 836f19fe15fc147f851f668c7f0afe43fc28e6a3d8afa9d3ec783ffc2f1f000ede2e3ff7226bbffc8747fc2f3f00b76f177fe107aeff00f21d7bc7929fdd1f82 aff85288531f77f303fc28e6a3d83ea74fb1e103e39780f1f7bc5e3e9e05d787fed9d387c74f01a1ceef181e7fe845d78ffed9d7ba344bfdc5fc40ff000a0c2a 547eed3ef1ec3dbda97ee5e9662fa9d35d0f3df807fb667817e0a7c54b1d780f1e4d6f0ee86e61b6f04eba8d3c4ea411cd980db4ed70a782517a7047e907c0ff 008c5a2fc7ef861a5f8bbc3dfda7fd91ac23b40ba869d3e9f74851da37578274491087461cae0800a92a413f12d9e9ed79771c36f0b4b3cee238e38d37348c78 0001c924f181cff2afb1bf664f085e7837e12d8dbea0b7d0dd5c3c970d6f72f9fb30663b5557f8015018a9e433b6707207ddf05e2aa73ca8457b9bdfcf45fd23 bf071e48f2c763d028a28afd10ec0a28a2800a4619a5a4638a00475cfb7f4af907fe0a5ffb181f8ada45f7c46d3b56fb26a1e19d1a4373653c5ba2bb8612f37c 8e394701a53c860c760f93e663f5f31f9abc37f6dafdadf41fd9dfe1e6a7a7b6ac21f18ea5a6ccda45a43109e659187971ccca414545739cc980c237003952b5 e5e71470d570938e2b48febd0face07c766b85cea854c99375ae92495ee9ee9e8f4b6efa2d4fc9590617f1fcff00cfe3422e45127273bb772793447d2bf03b24 dd8ff48a9dfed08c30695572291fef501b0283617651b28df46fa0069e0d3957229a4e4d286c0a005d94d3c1a76fa69393400e54c8a69e0d395f029a4e4d001d abce3f6c1e7f660f1c7fd82debd1ebce3f6bf5dffb3178e07ae97201f5aeccbffde21ea78f9fc5bcbeaa5d8e0b4a1ff12ab6effba4fe42ac617fbb5cde8df13b c3736956e7fe122d0d5bca5c87bf89594e304105bdaac37c50f0ca9ff918b41ffc1843ff00c557ced6c1d7737683dfb1faa60334c1c70d4ef516cba9b985feed 1f8560ff00c2d2f0c7fd0c7a17fe07c5ff00c5528f8a5e173ff331e87ff81d17ff001558fd4711fc8fee3aff00b5f05ff3f63f79bb47e1587ff0b47c33ff0043 1687ff0081f17ff154d3f14bc323fe662d0fff0003e2ff00e2a8fa8e23f91fdc3fed6c17fcfd5f79bdc1fe1a30b9fbb583ff000b4bc31ff431685ff81f17ff00 1547fc2d2f0c9ff998b42ffc0f8bff008aaafa8e236e47f713fdad82e9563f79bd4560ff00c2d2f0cffd0c5a17fe07c5ff00c55397e277865bfe663f0ffe3a8c 23ff0066a3ea388fe47f70ff00b6305ff3f63f79b9f85076e7eed611f8a3e1907fe463d07ff06117ff0015487e29f8647fccc5a17fe07c5ffc551f51c47f23fb 83fb6305ff003f63f79bd95dd8db49b9965565c7cbce3d6b107c4ef0cb8ff918bc3ff8ea508c7fe3d48df14fc30ac17fe122d0b81d46a117ff001547d4f1095f 95bf932279b60b96caaafbce0b579edbe037c66bed66f99d3c33e3410db5c3ec0c2d2e63fb81f9188dd4b1ddd721bb29ae27e3a7c20f16783be3b43f12bc2167 0eb532c3b6ead9499240de5185f28b866057ab0ce4f5af64d63c73e0ef11e9d3586a9ac7876f2c6e936cb1497f16081d38dc3e61d8f6ebd715c06876d0fc3412 c7e16f88da0cda781ba2d2f58b88ee218db39c248b2065c7fb23b9e49afb6caf193695469a928f2bbad1a3f15e29c928cdba14e5cd4b9d548b8b5cd09deeed7e ecf35f8b6bf11bf6bf1a7e83ff00084dc785f49b09c5ddc4b7ae63566e137069029655dc708bb88ddc57b4fc45f103fc2cf02693e0df0df9979e26bab65d3b4c b7009923445daf3bab60855c3b2b1036b2b7653598fe36f10ead6f24375e3af873a4249f7ae34f7fb44ea08e40495d50fd4f39c735a3f0dacfc13f0f5ae2f3fe 127d2f59d6ae8aacda85fea30bdc328006d0777ca84000ae4e40c678ae8c5626f08a9c572c358c6377af7679d92e4d3a789ab55556eb56b29d59d97bbd925d6c 769e02f08c7e08f0568fa4c015574fb68e36d9f75dfabbff00c098939f7aea3fe094e9b7fe0aadf11cff00d48a3aff00d7dd9572707c58f0d3236ef11683bb8c e2fa3238e78f9ba71f8574ff00f0495d52db5aff0082a47c42b8b4b882eade4f018649619564471f6cb31c32e41e723ea0d79bc3fed5d5af52ac5ddc5fe68f9e fa47d4c2c783e9e1f0f24d46492b7a33f535d5776d6fef6460e39af9f7f6b9fd9a3c51e20f887e1ff8bdf0a6fadec7e2c7836d4e9f05a5f4de569fe26d3a5932 fa7dcbe41539691e17e555c9dc07c8e3e8061f3b738ee0d2fcac3eeaf5c12ea1b72ff748feee79ff001aac2e2a587973c753fcf08caef53f2fbe3cf857f641fd b0be36ea575f1b3fe12af83bf176e20821d62c358d4a4d3e38648a34882a5cb2cb65244b1a26d68c2f9830db41622a6f007c1aff00827ffec4be37d2fc5d6fe3 3b5f1a6b9a7dcacba75bff0069ff00c2492f99906231dadb4423670e320cca429dac0ab2a91fa51e27f06e8fe38b78e1d734cb1d6a28c6025fc0b7008ee3f781 860fa63006060d50f0c7c21f09f81eeda6d0fc2fe1ad1646eb258e9705bb107f8331a29c1efc9fe407beb3e838abb9a5dafa7e457323e72f08fc33f1dfedbbf1 97c3fe3af88da26a1e03f867e09bb8b59f08f852e268e6d435cbe0a5a3d4f51db91188fe46860c139e5c776fab9befb70a32c4f049cfbe4f393eff0090a00c0e ff008fff00afff00d59a2bc4c563655a492568ad90730514515c7762e661451453e661cc1451451ccc39828a28a3998b99875a07ddfc4d1de81f73f1345df411 e8dfb289b51f1bb4cfb47da3cef2e6fb3796405f33cb6cefcf3b766fe9ceedbdb35f6047c67fa57e7eda5e4da7dd473dbcb2433c2e248e48d8ab230390410739 1d7f5e2bec4fd997c6179e33f84d633ea0d7935d5bbc96ed7170bff1f215be5656fe3014852c792c8d9c9049fd0f82b30872bc1db5d657efb1d78796963d028a 28afd00e90a28a2800a6b9c53a91ba50031b9afcc9ff0082b6f86758d2ff0069a8750be96e2e34dd534b87fb399ad7cb8add519964815c71230726424f2bf685 1d36e7f4e1c6d5af3ffda87c2da478bff67ef1859ebd35bdae98da4dcb4d772db1b9165b63661388c72cd1901c0183941820e2bc5cfb2dfaee0e546f66b5fb8f baf0e78abfd5fcf6963f939d7c2d75b4ac9b5a3d57e3b753f18d8648f738a55e33f5a5909ddcfaf3c7f93f9fe94c0f835f84d95ddba1fe8ad3b4ad2f2ff207fb d49413934506a3957228d9481b02977d0034f069cab914d2726943605002eca69e0d3b7d349c9a0028a28a0072ae4543a8e976faada4d6d750c3716f3aec9239 503a3a9ea08a991b8a7138146bd09946eaccc14f861e1a41ff0022de86a3ae05845807f23487e15f8649ff009173416ffb708bfc2b74927ffd5402c2afda327d 8c12b58c13f0abc2e7fe65bd03ff0005f17f85237c26f0bb7fccb5e1ff00fc1745ff00c4d6fee6f4a32d473beefef27d8c3b239fff00854be161ff0032d787ff 000d3a2ffe269cbf09fc2e07fc8b7a0ffe0be2ff000adecb5196a39df77f787b0876304fc28f0b9ff997341ffc1745fe147fc2a7f0bffd0b7e1fff00c17c5fe1 5bdb9bd28dcde947b49777f787b1876460ff00c2a6f0bffd0b7a07fe0be2ff000a72fc2cf0ca74f0ee83ff0082f8bff89adcdcde946e6cd1ed25ddfde1ec61d9 180ff0afc324ff00c8b7a07fe0045ffc4d0bf0a3c2ec3fe45bf0ff00fe0be2ff00e26b74f5a504d3f692ee3f634fb1883e16f865471e1dd0ff00f0022ffe2693 fe15678649e7c39a0b7d74f8bff89addcb51b9bd297b49f717d5e9f6305fe13f85cffccb7e1ffc74f8bff89a41f0a3c2e063fe119f0ffd469f0fff00135bfb9b d28258d1ed25dc161e9f548c1ff8553e176ebe19f0ff00fe0be2e3ff001da6c9f0b3c3083e5f0de83ff82f8bfc2ba00581a69e4d1ed25d183a10ec8e7dfe1778 671ff22df87fa67fe41f136383db15e67ff04b6b68ec3fe0b03f18eda08e382dedfc24e91451aed4897ed967c003803e9eb5ed58c9fc3fa3578cff00c13146df f82c87c681ff0052a37fe96d9d7bb9236e15937f67f547e03f4848463c3f0e556f7d7e4cfd406fbcdf5a3fcf1d686fbcdf53457928fe1be970ff003ef4514550 0514514005145140051451400514514005145140077a07dcfc4d1de81f73f13469d40ea3e0efc3cff85a1f106c74866b88ed65dd25ccb0a6e68a35049f65c901 431e0161c1e87ecaf03783ecfc01e15b3d1f4f5905ad929553236e6624966627d4b1278c0e78006057c6bf073e219f85ff00106c75665b89ada3dd15cc30bed6 9636520f1d1b070c01e0951d3a8fb27c0de31b3f1ff862d758d3da46b5bd5dca1d76b2904ab291ea18107191c7048c1afd23827eafece56fe27e3cba7e173af0 fcb6f335e8a28afbc3a428a28a0029afc8a752350c088b67f0afcfdff82a6fed63e20b6f89179f0e743d59acf45834f48f5a8a18764b3cb2fef3ca690f3b3c93 11fdd900895d58b72abfa08c981fa7d2be43ff0082987ec5edf15f49bdf88da7eac2d6ff00c33a3486e6ca68b315dc30b3cdf2b8e51c0694f21831d83e4e58f8 1c494b133c04e3857af5b6f6ea7e8be15e3329c2f1151ab9c24e9ea95d5d293f85b567a5fee767d0fce1238fc7fcff004a157341e9cfe1effe7f1a13a66bf0eb 3526a5fd33fd0b8dae230c1a555c8a47fbd4e4fbb41a09b28d94ea280233c1a72ae4523fdea727dda004d94d3c1a9298ff007a80128a72ae451b2801b5203915 19e0d390f1400e27146ea6c94da00928a6a1c8a750014514500145145001451450031b86a541c523fdea727dda005a28a2800a28cd1400546dc35494c71f3d00 230db8fa63f435e2ff00f04c6ff94c97c6affb15187fe4ed957b4f5dbf8ff235e2dff04c539ff82c87c6affb155bff004b6cabe8323f82b7f87f547f3efd21bf e49f87f8d7e4cfd406fbcdf53450df79bea68af256e7f0d47a051451543d028a28aab8b40a28a2a441451450014514500145145001de81f73f13477a07ddfc4d 00496b692dfdcc70411c934f3388e38d14b348c780001d4938031ce715f627eccbe0ebdf05fc25b187505bc86eee1e4b87b7b86c9b60cc76aa8fe0054062a790 ced9e4915f3f7eca1f65ff0085dda67da3ed1e779737d9bcb236f99e53677e7f8766fe9ceedbdb35f5fc63ad7e89c1597c395e31bd758a5db6675e1e36571d45 1457e8074851451400535fa53a9af40037cc2bc33f6dafdacf40fd9e3e1e6a5a7b6afe4f8c352d3666d22d21884d32c87f771ccc0828a8ae77664c0611b8018a 95af716e0d7e64ff00c15b7c33ac697fb4d43a85ecb7171a6ea9a5c3fd9ccd6be5c76ea8ccb240ae3fd630726424f2a2e1474db9f078871d570982955a2aef6f 4bf53f42f0bf873079df1052c163a7cb0d65fe2e5d7957af5f2bdb53e5a718ef9e0f27bd2c7f70504efe3f87a66915f076f615f86a77d4ff0043211e5692feb6 15fad2a7dda613934a1b028361f45377d381c8a0063fdea727dda6bfdea727dda005a63fdea7d31fef50001b02977d368a0009c9a72ae4536943605003b667d6 9365381c8a7019a008f653b18a476da6937d000cf834d2726827268a00728c8a69eb4f4fbb4d7fbd400e4e943362915f029a4e4d003c8dc2940c0a44fbb48cf8 3400ea2807229ca33401137dea7a9cad31fef501b02801f48c3349be857e6801b237947f0cff0033fd2bc57fe0987ff298ff008d1ff62a37fe96d957b54abbff 00ef9fe8d5e2dff04c54d9ff000591f8d03fea546ffd2db3afa1c8fe0adfe17f9a3f9f7e90dff24fc3fc7fa33f505bef37d4d1437de6fa9a2bc85b9fc32b60a2 8a2a8028a28a0028a28a0028a28a0028a28a0028a28a003bd03ee7e268ef40fb9f89a0092d2f26d3eea39ede59209e171247246c559181c820839c8ebfaf15f6 27eccbe31bcf1a7c26b29f506bc9aeadde4b76b8b85ff8f90adf2b2b7f180a42963c9646ce4824fcbff077e1effc2d0f88363a43b5c456b36e92e6585373451a 824fb2e480a18f00b0e0f43f65781bc1d67e00f0b5a68fa7893ecb66a550c8db9989259989f52c49e3039e001815f7dc1385aea52af7f73556eef43ab0f17b9a d451457e8c75051451400521e4d2d35ce28006e0d79ffed41e16d1fc5ffb3ff8becf5e9a0b5d31f49b969aee4b63722c82c6cc27118e58c654380307283041c5 77ce6bf3effe0a99fb58f8820f89177f0e742d57ec5a2c16091eb51430ed9a7965fde794d21e7679262388c8044aeac5b955f2739c7d2c2612556aabadadddbd 8fb1e03e1cc66779cd2c1e065cb24f99cbf9546cdbf5ede763e2998b06e7d7fcff0093488944832c07bff9ff0022957ab7d6bf05d1c9b3fd1da69a767d83651b 2866c5381c8a0d8694a70e051450031fef5393eed35fef5393eed002d214cd2d359f06800d946ca70391450037650529d4500038148c334b450034251b29d450 037650529d450003814c7fbd4fa63fdea00555c8a0a52a7dda5a0007029acb9a7514000e0504668a2802323069cab9148ff7a9c9f768013651b714ea28018e36 81f97e86bc5bfe098dff002992f8d5ff0062a30ffc9db2af6a93ee7e3fd0d78aff00c1317fe5323f1abfec556ffd2db2afa1c8fe0adfe17f9a3f9f3e90dff24f c3fc7fa33f501bef37d4d1437de6fa9a2bc85b9fc34b60a28a2a8028a28a0028a28a0028a28a0028a28a0028a28a003bd03ee7e268ef40fb9f89a00ea3e0efc4 2ff8561f106c75664b89ada3dd1dcc30bed69636520f1d1b070c14f04a8e9d47d93e06f18d97c40f0c5aeb1a7b486d6f577289176b2904ab291ea18107a8e382 460d7c256b692dfdcc70411c934f3388e38e352cd231e00007524e00c739c57d89fb32f83af3c17f096c61d416f21bbb8792e1edee1b26d8331daaa3f8015018 a9e433be79240fbee09c557739504af0d5dfcf4feac7561dbd8f40a28a2bf463a828a28a0029186696918e28011d73edfd2be42ff8297fec607e2ae917bf11b4 ed5bec9a878674690dcd94f10315dc30979be471ca380d29e43063b07c9cb1faf58fcd5e19fb6d7ed6da07ecf3f0ef54d3db5610f8c353d3666d22d21884d32c 8c3cb8e66520a2a2b9ce64c0611b801ca95af2b39a386a9849c715f0febd0face07c766b85cea854c9d375af6492bdd3dd3d1e96ddf45a9f92cc3e61f5fcff00 cfe34abd4fd68739c9ddbb9eff00d6910e6bf03d14da47fa470bdf5dec1252a7dda4929036053351f4500e4534be0d0023fdea727dda613934f4fbb400b4c7fb d4fa63fdea00727dda467c1a15f029a4e4d003b7d381c8a8e943605003e8a01c8a2800a29acf8346fa007514ddf46fa007531fef53c1c8a63fdea00727dda5a4 4fbb48cf83400ea2807229acf83400ea2807228a0063fdea727dda6bfdea727dda005a29acf8346fa0024fbbf8ff00435e2bff0004c5ff0094c8fc6aff00b155 bff4b6cabda98ee1fafe86bc57fe098e31ff000592f8d5ff0062ab1ffc9db2afa1c8fe0adfe17f9a3f9f7e90dff24fc3fc7fa33f501bef37d4d1437de6fa9a2b c85b9fc32b60a28a2a8028a28a0028a28a0028a28a0028a28a0028a28a003bd03ee7e268ef40fb9f89a00f47fd940da8f8dda67da3ed1e779730b6f2c8dbe679 4d9df9fe1d9bfa73bb6f6cd7d7e9d49f5afcfdb4bc9b4fba8e7b796486785c491c91b156460720820e723afebc57d89fb32f8c2f3c67f09ac67d41af26bab779 2ddae2e17fe3e42b7cacadfc60290a58f2591b392093fa27056610e5783b6bac93fb8ebc3cb4b1e81451457e8074851451400535ce29d48dd28018dcd7e64ffc 15b3c33ac695fb4d43a8df4b7171a6ea7a5c5fd9ccd6be5c56eb1b32c902c838918393212795170a3a6dcfe9c38dab5e7ffb50785b49f17fecff00e2fb4d766b 7b5d35b49b879aee5b6fb48b2db1b309c4639668ca8700739418e706bc5cfb2dfaee0e546f6ebf71f75e1cf157fabf9e52c77273a7eeb5d6d2b26d68f55f8edd 4fc619063fe054e4fbb536a89047a84cb6b24f35b2c8c229268c4723a03f29640cc1588eaa19803c64e2a188e56bf0974f966efe9f71fe89d2a8a694d755714a eea42943360d1be8371c381485726937d1be800294e1c0a6efa37d003a90ae4d26fa37d001e5d1b293cdc1e94be6645001b28d946fa37d003b1b4514d67dd4e0 7228010ae4d26ca19f068df4006ca0a51be8df400e1c0a63fdea5df4d2726801e9f7691973481b02977d003870290a6e349be93cdc76a0078181462856dc29ad 2ed3d28011fef5393eed3376eed8a049b7b5003ca66936e28f33228df40038daa3fcf66af15ff82637fca647e357fd8a8c3ff276cabda1db23fcfa3578bffc13 1bfe5323f1a7fec556ff00d2db2afa1c8fe0adfe17f9a3f9f7e90dff0024fc3fc4bf267ea037de6fa9a286fbcdf5345790b73f8656c145145500514514005145 140051451400514514005145140077a07dcfc4d1de81f73f13469d40ea3e0efc3cff0085a1f102c74866b88ed65dd25ccb0a6e68a35049f65c901431e0161c1e 87ecaf03783ecfc03e15b3d1f4f127d96c94aa976dccc492ccc4fa9624f181cf000c0af953f663f89fff000af3e21c705d5cdbdae91ab7eeaf1e65f950a86f2d b7755c31c127e501c93d011f5d69d7b0ea3691dc5bcb1cf04c8248e48d832c8a464104704118391d6bf4ee0ba34161dd45fc4bb4fba5a5be5fa9d9878a5127a2 8a2bed8e80a28a2800a6bf229d48d430222d9fc2bf3f3fe0a9bfb58f882dbe245e7c39d0f566b3d160d3d23d6a2861d92cf2cbfbcf29a43cecf24c47f7640225 7562dcaafe82b2607e9f4af90ffe0a61fb1837c56d26fbe2369fab0b5bff000ce8d21b9b39a2cc5770c25e6f95c728e034a790c18ec1f27ccc7c1e24a589a981 9c70cf5ebdedd4fd17c2bc6e5385e22a3573849d3bb4aeae949fc2dab3d13fb9d9f43f385bef2fd71fe7f4a40db49fad2c8481db8fd7fcfe34d0571ee6bf0db5 9b4cff0042a36be804e4d1400c3b7d294264ff004aae57d1335d13b09466808d939c0a705e4fb54cb4dc9e64f61b451d3ef7cb4e501875cd03bf41b453b651b2 8188a71487ad3b6534f06800a29cab9146ca006d395f028d946ca0069393453b651b2801b453b651b2801b453b651b2801b453b651b2801b4aa714bb28d94006 fa3764f4a3651b2801a7ad2a9c521e0d395722801a7ad1fe34ed94bb31400c619fcbfa3578bffc131c63fe0b23f1a7fec546ff00d2cb2af6a7181f8ff435e2bf f04c639ff82c8fc68ffb151bff004b2cabe8323f82b7f85fe68fe7dfa437fc93f0ff001fe8cfd406fbcdf53450df79bea68af256e7f0cad828a28aa00a28a280 0a28a2800a28a3140051477a3ffd5400514514ed700ef40fb9f89a3bd03ee7e268e5601d78f5afaf3f647fb58f827a7fda05b883ce9fecbe583bbcbf35b3bf3f c5e66fc638dbb7be6be7ff00d9bbc1f67e35f8b5a7daea0b6735a42af70f6f70d8fb49553b5157f8c8243153c1546ce4020fd8d61650e9d6b1dbdbc31c16f0a0 48e38d42aa28180001d001dabf40e0bcbe7cd2c637a6b1b7dcceac3c5ee4d451457e8675051451400535fa53a9af40037cc2bc33f6dafdad740fd9dfe1dea9a7 b6ade4f8c752d3663a45a43109a65908f2e39994828a8ae77664c0611b8018a95af716e0d7e64ffc15b7c33ac695fb4d43a85f4d7171a6ea9a5c3fd9ccd6be5c 76ea8ccb240b20ff0058c1c99093ca8b851d36e7c0e22c755c26065568abbdbd2fd4fd0bc2fe1dc1e77c414b058e9f2c3595bf9b975e5f9f5f2bdb53e5b946e6 ea4f2464f7a6c71fce7db8a76ecbfe3c7bd203f3b7d6bf0e52d5b5d8ff00432dcaaddbfe00c33f96fb391efcfe431ce6b81f8bbfb4c7857e0deab6fa6ea135d6 a1af5f0cdbe8fa643f6bbd9fd846385070705880483e869dfb48fc4cbef865f0f246d15d7fe127d72ee1d1b438b700d25e5c36c4201e3e51bce7dbb66bcebc4b e02d7bf654f81efa8f82f4387c59f13b57bab786fefaf2192e67d4a4933e612cad95891800a03a2e002c1882c7dacbf034a5153ab2b736dad8f91cfb3aab4dca 9e157c0af2d2efd12ee75737c70f88d2dd6fb4f837ae9d3fef092e75bb1b7b855ef984b7cadfec939f4eb56bc07fb5a7867c6be388bc2d7d6dadf847c512b048 f4bd72ccdacd719ff9e4c0b2383838cb02dd81ede19aa49fb5f68fa449ab37fc22ed2da234efa3db416ad3ba8049c055cf18c611c1c91d49e7abfd9afe2c683f f0511f815a85bf8ab43861d534775b5bb7b7c96b591b7347716ccd931bb6d7ce777fab23a1af52a65b4a34dd4b45c5754efa9f2781e28c455c5c70d4e52551ab a5356baeb63e94fb4294556dbc8e467e61ed8ec47423b106a4895557e5e95e39fb2e7c41d43fb4bc4ff0e7c493cda8788be1e5cc702de498637f64e375bcac40 fbde5ec07393c024926bd8e3fbbe9c9e3f1e6be6f1787950a8e1d19fa6657984319455586faa7eab46875359f069d4c7fbd5ca7a82efa693934e55c8a3650020 6c0a5df4d3c1a704c8a0070391450381450014d67c1a7535973400e07229acf834e1c0a63fdea00783914d67c1a54fbb4d7fbd400f07229acf834a9f76919734 00e07228a07028a0028a28a0063fdea727dda6bfdea727dda005a28a2801b27ddfcff91af15ff8262ffca643e34ffd8aadff00a5b655ed6fd3f3fe46bc53fe09 8bff002990f8d3ff0062ab7fe96d957d0e47f056ff000bfcd1fcf9f486ff0091043fc7fa33f501bef37d4d1437de6fa9a2bc85b9fc34b60a28a2a8028a28a002 8ce28a3fc7fcfe99a0009e3fcff9f5a1860370dfbbfbcb8f9940fbdc7b5737f16fe2f7877e04fc39d5fc5be2ad520d1fc3fa1c2d2de5d4a490801002803ef331 c2851c96603dc7cede1df19fed0ffb5f6a76bac78724d27e087c2bba8cc9a6ddea3a7a6ade27d52dcf2b3fd9dc35adaab819c49b9d71d18735dd83c0cb111f68 b48f99491f5730c479fbc09fee91bfdc06fbcb9eeb4986088c41f99739c1febfd79af9e6f3f652f88564b752689fb4a7c44fede65dec355d3344beb6f30ff7ed 7ecd1b2aff00b0acbc7739ae77c27fb5b7c44fd997c55a7f87ff0068fd37c3f65a6eb9a8258e91e3ed019868f7170dbb6c17f0c83ccb6998282256cc441cee0a 371eaa993dd3f672bdbe5f994f63ea8ff268a18f0f85f9633f301db9c103dc0e0e380c71f533c579324e2f95ee8cc294fdc1f5a4a53f707d6a5eba3034fc19e2 fbcf01789ecf58d3da35bbb27dc9e62ee5604156523d0a9238c1e7820e0d7d93f05be22ffc2d2f87d67ab48b6f1ddc9ba3b98a17dc229149078eab91860a7901 c727a9f8dbc17e10bcf1ef8a2cf48d3d636bcbe72885db6aa800b3313e8141240e481c02702bec8f82bf0eff00e157fc3fb3d2a46b792e9374b732c29b564919 893cf56c0c2863c90a381d07de704fd679e5ff003ebff6ed3f43ab0fcdf23aca28a2bf483a828a28a00290f26969ae714003706bcfff006a0f0b68fe2ffd9fbc 6167af4d05ae98fa4dcb4d7725a9b9164163661388c72c6320380307283041c577ce6bf3effe0a99fb58f8820f89179f0e742d57ec5a2c16091eb51410ed9ae2 597f79e534879d9e4988e2320112bab16e557c9ceb1d4b0984955aaae9e96eedec7d8701f0e6333bce69613052e5927cce57f8545a6df5d7b79d8f8a67620f3d 739e3d7f9fe7489ebc64d2b0cf1e9fe7fc3a5351327f957e0b75ed1c8ff477e156eb63c1ff006a1795ff0069df81b0373a73ea7a94926e1d265b78fcb3f87257 df35eeedb9e573feaf92582642fb7ddec3079e6bce3f6a4f8677ff00113e1ea4fa0c7e678afc377d16b9a16543192e61391081df7aee1b4900e41ed83c0fc45f da27c51f16ff00669babaf863630c9e3c9248f4ed5b4b6902dd682ee19642119970c2456556236ed23d307e829e1beb3468f2595b4bf6d4f84c463e9e5189c4c eaae6e7b4a2ad76ec92b2337f6d3fdb487c2e964f87fe07827d67e22eaca208a2b78c3a698254237657e637041560a060028cc72315bdff04f9fd942eff657f8 53343ac5c4736bde229d2eafa388131da6c47090823872be6312dc0cb103217737cbdfb32fc2ff008e9fb346a97facc1f08ac75ef11ea4c436afa95d996e628c ed3b23db380b92a4b381b98315c85e2beabf851fb4278bb4bf03788bc41f19740d33c0fa6e96d09b796d5d9fed218b17450247dcc70aaaa3a96c1c05cd7b3986 0fd961beab8469a6d37aabb7e9d8f84e1dce238ecdbfb4f378ca9cd26a3169a515fe6cb5a4c115bfedf5a8187f76b3f81636bada40567fb66d8b7119f9b66ec6 7b62bda234f2976fcdf2f1f375cf7af17fd96bc1baa6a3aff89be256bf0dcd86ade3a922306972aed7d36c61dc91230ea0b284638c75e99c93ec96ee44432431 1c6477f7af9acd24bda28a77b24bf03f57e198cdd0954947979a4ddbd5e8fe689a98ff007a977d349c9af2cfa61e9f7690be0d0af814d272680027269e9f7699 4a1b02801f45377d1be801d45377d1be801d4d65cd1be8df400e1c0a63fdea5df4d2726801e9f7696913eed233e0d003a8a6efa7039140051451400c7fbd4e4f bb4d7fbd4e4fbb400b45359f0680f400add3f3fe46bc53fe098bff002990f8d3ff0062ab7fe96d957b4efebf9fe86bc5bfe098bff2991f8d3ff62ab7fe96d957 d0e47f056ff0bfcd1fcf9f486ff927e1fe3fd19fa80df79bea68a1bef37d4d15e42dcfe1a5b05145154014514500141e9fe1d7fcf4a283d3f9d038ee7ca7f1ea f97f69dff8288f83be0fea560b79e09f87fa17fc2c0d7219bf78babde898db58c1303f7e3590f9a47473b781b727d33f6d7fd926d7f6ccf8376fe0dbaf126b9e 13b28f538350b9b9d19c473dc24492279393c0525c36486fbbefc797f87efd7c17ff000599f13585e42238bc79f0d2d2f74fb89788de4b2bb649214e4e5b6b6f c761827a8afaa2ef51b48750b7b19aeade3bcba0cd0c2f22ac93e0ae362310cc086e4e0283dfd3e8b195a74254953d15934ff31f53f267f6c3ff008238fc01fd 963f67ef11f8db4df8c5e28d07c4fe1fb49ee34a377ae5948d7b7888cd15b08a28a29773b8db98c80b9ce5ba57d19ff049a6bdfdb9bfe09669a1fc5c1378aac7 54b9bdd185ddfc825bad42d236f92e3cc20b978a59244121cb6eb746072bb8f9bfed47ff0006f97c18d2fe1278c3c49a4f89bc6da16a9a169b79aaadc5e6a10c d688c8b2ba0910c2ac1032804064233c67181e8dff0006fc7c76f117c68fd82e3d3bc44d25c7fc20faccda169d73202649e0448274e09c1784c813fddf2f3927 27e831988f6b97f3d39734935bab1b6963d63fe099bf1a355f897f01f53f0cf881a4bcf127c23f10def80f51bc933bb503645638e6ee4bb43e5963939705b3f3 607d183fa735f257fc1291e5f1545f1e3c60b015d1fc59f15b5bb8d22556cc7776abe5c1e720c74668c80d9392ac39db93f5a8fba3d863e95f219c454716d47b 2b9ce14a7ee0fad2529fb83eb5e601dcfecdfe2fb3f05fc5ad3ee7506b386d6657b77b8b85245b1653b5d4ff00092c02963c0576ce01247d9161790ea16b1dc5 bcb1cf6f32092292360c9229190411d411d0fa57e7ef5e3d6bebcfd91fed63e09e9e2e3ecfe479d3fd97cb077797e6b677e7f8bccf3318e36edef9afd0382b30 9dde0dad3e24fb6c8eac3caeac7a6514515fa21d414514500148c334b48c714008eb9f6fe95f20ff00c14bff006303f15748bdf88da76abf64d43c33a3486e6c a788345770c25e6f91c728e034bd43063b07c9f331faf98fcd5e19fb6d7ed6be1ffd9ebe1dea9a7b6ade4f8c752d3666d1ed20884d2ac846c8e67520a2a2b9dd 99301846e0062a56bcbce28e1aa61271c57c36fc7a1f5bc0f8dcd70b9d50a993a6eb5ec9257ba7ba6acf4b6efa2d4fc972b96ff3cff9fc6980e1bda9ec773f07 27279239a8e460cd5f8272ae6d363fd218ddefbdb511a2cb8dbf2f209da719fc7fc2bce7e217ecd3a4f8c7c4ade20d2754d6bc1be29652b2eaba1cff00659aed 3680239d705654e07dee480067039f460c29ca72d5bd1c455a3f04ac72e3b2da38ba7c95a37ecfafde791c3f07fe2bdb59b431fc608646c6d49dfc236de720ff 0079640b91d3257f0a9340fd9574fbaf11d9eb9e33d7356f1f6b1a6957b26d4c2456766fddd2de301327fdadd82a0f5c1af56f2d9a4fbc7152345c5753cd2bbe aafe48f329f0c60a0d4a69c9aeeee4219bcb5556d8dd32075152c71e17ae690c195e0e0d3946d4e4e6bcf949c9dd9eec29f2e91d106ca69e0d383e4d295c9a93 619453b650c98a006d1453b65000ab9146ca7741467340119e0d14f2b93485280054c8a69e0d38b6c14d693355601ca9914d3c1a547e290b6e3472b15c50d814 a1775349c5025da28e5631db282db78a4f38523499a3958b98901c8a298b200297cd5cf5a39585c47fbd406c0a42e09eb46ea3958b98705dd418e9a25da297ce 1472b0e610a6d1eb9ff06af17ff82637fca647e34ffd8a8dff00a5b655ed25f233e99fe46bc5bfe098bff2990f8d3ff62ab7fe965957bf91fc15bfc3faa3f9ff 00e90dff0024fc3fc7fa33f501bef37d4d141fbc7ea68af2ba9fc32b60a28a2800a28a2800a09ff114500d008f1dfdafbf671d53e37f87b45d73c19ab43e17f8 9de06bb7d43c2dadcd0abac64c7b26b49b246eb6b98cb2393c06dac3eeed3f32fc71f14781bf6f3d2fc23e1cf8b5e28f157eccff0018bc0f7525cda59497f1e9 acf3cc8a8d359dcca025d42e572be4481b9e702befbc65bef1dc001bff008880c1803db6e38c5725f16fe01f827e3e6930d8f8dbc25e1df15dadbe7c95d56c52 e9adc1ebe5b3e5909fe2da4038e00e33ed65f9a2a7151add367d7fe18be647c2bf133fe0975a6f89bc15e47c4afdb33e226b1e07455927b6bfd6e18ecdd41c11 ba49e58d8e338dc8719e435749f0e2fb4dd6be1cd9fc07fd9161bed1fc14d239f127c4f8636b8b2d2496532ac134817ed57d200aa191d522128d8c31fb9f76d3 7fe0965fb3ae93a9fdae1f83fe0b79b76fdb3d99b88f3ff5cdd8c647fc07f118af70f0d78634df056816ba4e8da7d9695a5d8a7976d676902c36f6e39e1221fb b5ea7f871cb7f78e7beb673154f963272ec9a492fb86e5756327e117c29d17e087c2fd07c23e1db55b1d17c3d66967691af52a060bb1fe26639727a96627be2b a4edfce8ea7f9fd68af99a952537796be66560a53f707d692973f2fe35033bbfd9bbc1f67e35f8b5a7daea0b6735a42af70f6f70d8fb49553b5157f8c8243153 c1546ce4020fd8d61650e9d6d1dbdbc51c16f0aac71c71a855450300003a01e95f08f837c5d79e03f13d9eafa7b46b7764fb93cc5dc8c082aca47a15247183cf 041c1afb27e0afc45ff85a3f0f6cb56916de3bb7dd15cc50bee1148a48e9d57230c14e480e393d4fe8fc138aa1ecdd0fb7abf55a7f563b30ed5ac757451457de 9d01451450014d7e053a8a00630c91c66bf323fe0adbe1ad634bfda6a1d42fa5b8b8d3753d2e1fece66b5f2e3b758d9964815c7fac60e4c849e545c28e9b49fd 3aae17f68bf86bff000b8fe0d7897c351dbd8cd75aae9b3c16c6ec6618a7287ca76c0246d7dac085241504720578b9f659f5ec1ca85ecf75f2e9f33ee3c3be2b 5c3d9dd3cc250528eb195fa2959369f46b7f3dba9f8b0ccae72acd9ff74d246a225c02dd7b83cd769f18be00f8bfe036ad6b6be2ed12e7479f508da5819e4499 2e154e0e248d994b024657391b9490030ce2f82fc15ab7c46f14d8e87a1d8dc6a5aaea527956f6f08f9a46efcf4550324b1c0500924004d7e1f530b5a153d8cd 3e6edb7a2f53fd07c2e6d83af84fafd2ab1952b37cc9ae5b2dddf6d2cefd8c70d93fc5ff007c9a09c1c77fe75ef1e24ff826e7c5ef0c783edf5793c3b1de7991 cd2dc59da5e472ddd9ac678dc80e1d9c728b09738183b5885af09ce3aedce7d3fcff009f6c56b8ac0e270ed2af0716f6ba30c9f88f2ccda32965b5e3579747ca ef6f5f5b3b3ebd0686e6977e6bd73e02fec43f113f68bd3edf50d0f498e1d12e249231aa5fcc21b70c809381f348c377c9b9108df9191b491ca7c60f807e2ef8 0baa5a59f8bb43b8d1a5bf88cb6e5dd258e600e1b122332965c8c8ce46e52400cb972cb7171a3f589424a0fadbd0c287146535b1ef2ca58984ab2de09abe97ba b7756775baea71bbf07f4a0c99ad6f05f82b54f88be28b2d0f43b19f52d535293cab7b7847cd21efcf40a064963c28049c0048f63f11ff00c137be2e7863c1f6 fac3f86e3bb59239a5b8b3b4bb8e6bcb358cff00120387671caac25c90307693b68c3e5f8baf173a31724b7b2d879a71465396d6861f1d898d39cf6526937e7e 4b47abd2fa6e783ae7b52e5876a08c7f77dfdffcf5fad7ad7c07fd887e227ed13636da8687a4c70e877123c4baa5fce21b70c8093c7cd238ddf26e4461bf2323 69233c2e16be22a7b3a2b99f91d59b67581cb287d6b30ad1a74f6bc9db5dede6edb247929761da82c40fd2bb0f8bdf00bc5ff00f54b3b3f1768771a3cd7f1996 dcb3a4b1cc01c36248d990b038c8ce46e52400cb9c4f05f82b56f88de2ab1d0f43b19f52d535293cab7b7847cd21efcf455001258f0a01248009a5530d5a157d 8cd352dacf7be86987cdb075f09f5ea55a32a566f9935cb65bbbeda59dfb58c7cf3d697ccff6abde3c4bff0004daf8bbe19f07dbeb12786e3bcdf14d2dc59da5 e452ddd9ac678dc80e1d9c728b097240c1dac76d7848386e7686cf5c0ff3ef578ac06270ed2af1716f5575fd7739727e22cb73552965b5e35545d9f2bbdbd7d6 cecfaf40dffed51bf8eb9af5bf80bfb117c43fda2ec6daff0041d263b7d0ee249221a9dfcc21b7564073c73238ddf26e4461bf2323692394f8bff013c61f0135 3b4b3f1768973a3cda84665b72ee92c7328386c491b32965e323391b9490032e6a596e2e345621c5f23eb6febb99e1f8a328af8e79651c4c1d75bc1497369bab 7756775baea71de673da83256af827c0daafc45f1558e89a1d8dc6a5ab6a5288a0b78465e43c93ce400000496240500924004d7b478b3fe09b7f153c2be07d3f 594d05afe49ade69afec6de785ae74e31bb00a155c8977c615d7ca25892ca541037186cb7158883a9462da5be9e9fe64e6bc5594e5b5e186c762634e73d949d9 f5d7c968d26f4be9b9e05cb52152074a7118feefbfbff9ebf5af5af80ffb10fc44fda26c6db50d0f498e1d0ee24789754bf9c436e1901278f9a471bbe4dc88c3 7e4646d246585c1d7c454f6745733ec8eccdb3ac165943eb598568d3a7b5e4edaef6f376d92d4f242cde948723afd2bb2f8bdf00bc5ff00f54b3b3f1768771a3 cd7f1996dcb3a4b1cc01c36248d990b038c8ce46e52400cb9c4f05f82b56f88de2ab1d0f43b19f52d535293cab7b7847cd21efcf455001258f0a01248009a553 0b56157d8cd352dacf7be86987cdb095f09f5ea55a32a566f9935cb65bbbeda59dfb191ba82578f9857bc7897fe09b5f177c33e0fb7d624f0dc779be29a5b8b3 b4bc8a5bbb358cf1b901c3b38e51612e48183b58edaf09070dced0d9eb81fe7deb4c565f89c3b4abc5c5bd55fe472e4fc459766aa52cb6bc6aa8e8f95dedebeb 6767d7a09f2ff7ba75a4ce7a73f8d7aefc06fd88be217ed17636d7fa169315be877124910d52fe610dbab20c9c0e6471bbe4dc88c37e4646d24729f17be02f8c 3e026a76767e2ed16e7479afa3696dcbba4b1cc01c36d9236652cbc64672372920065cd4b2dc5c68ac4383e47d6de86787e28ca6be39e59471309578ef04d5f4 bdd5bbab3badd7538f0db47ff5e80e7774fa735abe09f056abf117c5363a1e876371a9ea9a949e4dbdbc232d21e49e73855001258f0a012700135ec3e25ff826 efc5cf0cf83edf5893c371dd878e696e2ced2f239af2cd63e9b901c3b38e51612e48183b49db46172dc56222e7460e496f65e819a71465596d6861b1f898539c f6526936bbf92d377a5f43c1f9634703a9c5380e7e52aad9e491d7fcf5af5cf80bfb117c43fda26c2df50d07498edf43b891e21a9df4e21b70c83278e6471bbe 4dc88c37e4646d246586c1d6c454f6541393ec8eacd73ac165987fad6615a34e1b5e4ecafbdbcdefa23c84107bd1f29fe2aecbe2ff00c03f177c04d4ececfc5d a1dc68f35f4665b72ee934730070d8911994b2f1919c8dca480197389e0bf04eabf117c5363a1e87633ea5aaea527956f6f08f9a43df9e8140c92c7850093800 90aa612b42a7b19c5a96d67bdcd30f9b60ebe13ebf4ab4654acdf3269c6cb777dacacee641ff0057f7b3cff435e2ff00f04c4e3fe0b21f1a7fec546fcbed9675 f70789ff00e09b7f173c39e0eb6d5a4f0dc777e64734b716769771cd7766b1e47cc80e1d9d7255612e4818386216be1fff0082618c7fc1647e3493d7fe114624 e3a7fa659735f4996e0311868d58e220e378e97f547f3bf8ddc459666bc3ca597578d4519d9f2bbdb47bfad9dbbf43f50318fc781ef45769f0f3e01f89be265b 4777a7d8a43a7ccec9f6bb890471023938eaec33f2e5548dd91c60918fe38f871ad7c38bb861d6ac24b192e50bc44b23a4801c1c32123238c8ce4647a8af3258 0c4469fb7941f2bebd0fe35e5695dec618193466ae683e1fbdf146b36fa7e9f6f25d5edcbec8a24192c7af7e0607249e00e490335dc6abfb2d78d749d163bd3a 62cfb924792082e15e68029e8467e62c39508589e8707aaa181c4568b9d283696fa046127aa479dd1d87fb5d3de8e9cfa719ee78ff0023ff00d75d9fc3cf805e 26f8956b1dd69f651c7a7ceee9f6cb89047112a39f576191b72148dd91c6091187c2d5af3e4a4b99f64118b7a238ca0726b73c71f0e35af86f770c3ad584962f 7085e32591d2400e0e1909191c64672323d4567e83e1fbdf146b36fa7e9f6f25d5edcbec8a24192c7af7e0607249e00e4e06694f0f56153d9495a5d8395dec53 cd15e89aafecb5e35d2b448efbfb316e32923cb04170af34017b119f98b0e5421627a1c1ebe77d39f4e33dcf1fe47ffaeb4c4612bd169568b57dafd425171dc3 b0ff006ba7bd15d9fc3bf803e26f8976d1dd69f671c7613bba7db2e2411c595ebeaec3236e4291bb3d3048c8f1c7c38d6be1bddc10eb561258bdca1788964749 00383864246471919c8c8f514e581c44697b7707cafad81c1a57661f6a2ae683e1ebcf14eb36fa7e9f6f25d5e5d3848e241f313d7e800ea49e001924004d771a 9fecb1e35d33458ef9b4b8e72c923cb6f14e924d005f500fcccdd4042c4f4c03814b0f82c4578b9d183925bdba046326ae8f3bef477a0f200ea33d3b7e5e9cf4 fcb835da7c3bf801e26f89d6715d69f671c7a7ccec9f6bb893cb8b2a39e3966e46ddcaa46ec8c8c1c4e1f0b56bcfd9d18b93f25708c5b76473fe0cf08de78f3c 4f67a4e9eb1b5ddf3ec43236d5500166627d02827039207009c0afb23e0b7c3a3f0bbe1f59e95235bc9749ba5b99614da249189279ead81850c79214703a0f33 fd987f67dd5fc0be24bad6b5eb6b7b59638cdbdadb9293382db4b4a194908300a80393b9b381f7bdda318afd2b85326fab41e22b46d37a6bdbd3be875d1a7caa ec7514515f646e145145001451450006a364224dd9f4e31d2a4a280383f8e5fb38f83ff689d32cad7c59a3c7aa269f234b6cfe6c90cb0161860af1b2b60f195c e0955246546391f805fb07fc3dfd9cb55b5d5b45d32e2f35eb58e489352bf9ccd380fd4850046876fc9b9101db9193b9b3ed54572cb034255556941732eb6d4f 5a967d9952c1bcbe9d79aa2f78293e5ebd36eaefdfa90942db815e1b835f3ef893fe097ff08fc47e2c8754fec3bab08c4934b716167792456976641c0650731a a1e55612801e082a001f44514f1183a35ededa2a56ee89cb33acc32e94a780ad2a6e4acf95b575b6b6fe97430fe1f7c3fd27e177842c741d074f874dd274c8bc ab7b7887ca83a9249e598924966259989249249ae7fe37fece5e0ffda234db1b4f1768b0ea91e9d23496cfe6c90cb016186daf1b2b6d3c6573b4ed52412a31de 51572c3d3943d9c9271edd0e5a38ec4d2c47d6a95471a97bf326d4afd5df7bbee78b7c00fd83fe1e7ece7aadaeada2e97717baf5ac72451ea77f399a701c9c90 a311a36df9372203b723277367d8da32c08c70dc1a9a8a587c2d2c3c3d9d18a8aec8d331cd3198facf138da92a937d64db7f8f4f23e76f11ff00c1303e11f88b c5706a9fd8775608259a5b8b0b3bc922b4bb320e0326731aa1e55612807420a8007b6fc3df00693f0b3c1d63a0683610e9ba4e9b188adede31f2a0ea49279662 4925892cc49249249adca2a28e070f464e74a0937bd91d18fcfb32c752850c6579d4843e15293697a27ebf768705f1c7f672f07fed11a6d95af8b7478f545d3a 4696d9fcd9219202c30db5e3656c1e32b9c12aa48ca8c725f007f60ef87bfb396ad6bab68da6dc5e6bd6b1c9126a77f399a701fa90a311a1dbf26e44076e464e e6cfb55144b034255556941392eb6570a39f6654b08f014ebcd5196f0527caf7e9b7577efd484a17dc36f0dc1af9f7c49ff04bff00847e23f1643aa7f61dd584 625965b8b0b3bc922b4bb320e0328398d50e4aac25003c1054003e88a2ab1183a15ecab454addd5c9cb33acc32e94a780ad2a6e4acf95b575b59dbd7e5d0c3f8 7df0fb49f85de10b1d0741b0874dd274c8c456f6f17441d4924f2cc4924b12598924924935cffc6ffd9cbc1ffb44697636be2ed1a3d523d3a4696d9fcd921960 2c30db5e3656c1e32b9c12aa4825463bca2aa587a7287b294538f6e87351c7e269623eb54aa4a352f7e64da95deeefbdcf15f801fb077c3dfd9d758b5d5b45d3 6e2f35db48e48a3d4efe6334e03f5c28c468db7e4dc88a76e464ee6cfb214691795c06e3a76a9a8a30f87a5420a9d18a8aec8bcc734c663ebbc4e36a4aa4df59 36dfe3d3c8f9dbc47ff04c0f847e22f15c1aa7f61dd582096696e2c2cef248ad2ecc8380c99cc6a8795584a01d082a001edbf0f7c01a4fc2cf0758e81a0d843a 6e93a6c622b7b78c7ca83a9249e5989249624b3124924926b728ace8e070f464e74a0937bd91d18fcfb32c752850c6579d4843e15293697a27ebf768705f1c7f 672f07fed11a6d95af8b7478f545d3a4696d9fcd9219202c30db5e3656c1e32b9c12aa48ca8c725f007f60ef87bfb396ad6bab68da6dc5e6bd6b1c9126a77f39 9a701fa90a311a1dbf26e44076e464ee6cfb55144b034255556941392eb6570a39f6654b08f014ebcd5196f0527caf7e9b7577efd484a17dc36f0dc1af9f7c49 ff0004bff847e23f1643aa7f61dd584625965b8b0b3bc922b4bb320e0328398d50e4aac25003c1054003e88a2ab1183a15ecab454addd5c9cb33acc32e94a780 ad2a6e4acf95b575b59dbd7e5d0c3f87df0fb49f85de10b1d0741b0874dd274c8c456f6f17441d4924f2cc4924b12598924924935cff00c6ff00d9cbc1ff00b4 4e97636be2dd161d523d3e4696d9fcd9219602c30db5e3656c1e32b9da4aa92095047794554b0f4e50f6528a71edd0e5a38ec4d2c47d6a95471a97bf326d4aef 777dee78b7c02fd83fe1e7ece3aadb6aba3697717daf5ac72451ea77f319a701fa90a311a36df9372229db9193b9b3ec663de08c7dee3a76a9a8a587c352a10f 67462a2bb2d0d331cd3178faef138da92a937bb936dfe3f96c7cede23ff82607c23f1178b20d53fb0eeac23124d2dc58d9de4915a5d990701941cc6a8795584a 01d082a001edbf0f7e1f691f0b3c1d63a0685610e9ba4e9b188adede21c20ea492796624925892cc49249249adca2a28e0e851939d2824deed23a31f9f6638ea 50a18caf3a9186ca526d2f44fd7eed0e07e397ece7e0ff00da234eb3b5f1668f1ea8ba748d2db3f992432405861b6bc6cad83c657382554904a8c727f003f60e f87bfb39eaf6bab68da6dc5e6bd6b1c9147a95fce669c07ea428c46876fc9b9101db9193b9b3ed54512c15095455a504e4badb5fbc28e7d9952c24b014ebcd51 96f0526a2f7e9f377efd484c65ba83cd7cc7e0dff823f7c09f875fb4f6a9f16bc39e15bcd07c51afd95d58eb31da6a771f61d55269619559a176610989a01b05 bf94a048e195c04d9f51515a56a14eaab5449afebfc8f363526a2e09e8f75dedb5fd0cff000e7876cfc29a2dbe9da7dbc76b676abb238d070a3fa9272493c924 939249acff001d7c34d17e24dadbc3acd8ade2dab9789b7b46d193d70ca41c1e3233838191c0ae828a2587a7387b3924e3dba19db4b1c2fc3afd9f3c33f0c6ee 0bbd3ece49f51855905ddcc8649006ce7038507076e5541c679e5b3db327ff00afdaa4a2950c352a30f674a2a2bc8564b63cd754fd94bc17a9eb50de7f66cd6e a1e4796de1b8748662fea33950a790232a3ea38aef3c37e1cb2f09e8b6fa7e9d6d1da59daa6c8a24e8bdcfd4924924f24924e49abd45451c0d0a3273a5049bde c0a296c73fe3cf867a2fc49b4b78759b15bc5b572f136f68de3247386520e0f1919c1c0cf4158bf0eff67cf0d7c32ba82ef4fb3926d46146417773219240189c e070a0e0edcaa838cfab67baa294b0342557dbb8ae7ef6d43951194cf6fc7dabce752fd94bc17a9eb515e7f66cd6eaaf23cb6f0dc3a43317f519ca853c811941 f51c57a5515588c1d1af655a2a56ee164f7287873c3967e12d1adf4fd3ad62b4b3b54d91449f754753f52492493c92493926a878f3e1a68bf126d6de1d66c52f 16d5cbc4dbda378c91ce1948383c6467070323815bd455cf0f4e70f6524b97b741dba1c2fc3afd9f3c35f0c2ea1bbd3ece49f50855905ddcc8649006ce703850 7076e5541c679e5b3db3a640ce7fc6a4a2950c352a30f674a292ec812b6c79aea7fb2a782b52d6a3bcfecd92dc2bc8f25bc170f1c3396f500e5429e4042a3d41 1803baf0d7872c7c27a25be9ba7dbc76b67689b22893a28ebf52493924f24924f26b428ace8e070f4a4e54a0a2df65625452d508464528a28aeb2828a28a0028 a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a00ffd9} }{\nonshppict{\pict\picscalex66\picscaley66\piccropl0\piccropr0\piccropt0\piccropb0\picw12488\pich13097\picwgoal7080\pichgoal7425\wmetafile8\bliptag2030137996\blipupi96{\*\blipuid 7901728ce400a2aaef118bc3e2f5eaf5} 0100090000034659050000001d59050000000400000003010800050000000b0200000000050000000c02f001d901030000001e00040000000701040004000000 070104001d590500410b2000cc00ef01d80100000000ef01d8010000000028000000d8010000ef0100000100180000000000f8b10a0000000000000000000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffff fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7fffffffff7fffffffffffffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffff7ffffffffffffffffffffff fffffffffffffffffffffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7fffffffffffffffffffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffff7ffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7fffff7ffffeff7ffeff7fff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7ffffffffffeff7fff7f7ffefeffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fffff7fffff7ffffeff7ffe7effff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7fffff7ffffe7effff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff7ffffefefffefeffff7fffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 f7fff7effff7effffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffeff7 ffe7effff7fffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffe7efff f7fffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefefffefeffff7fffff7 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fff7effff7effffff7ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7fffff7f7ffefeffff7fffff7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff7f7ffe7effff7fffff7ffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7f7fff7effff7effff7fffff7ffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffffffffffeffffff7fffff7ffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffeffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffeffffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffefffffffffffeffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7fffff7fffff7fffff7fffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fffffffffff7fffff7ffffeffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7fffffffffff7fffff7fffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7f7ffeff7ffe7efffdee7ff6b73bd737bced6deffdeefffe7effff7fffff7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffeff7ffeff7ffdedeffdee7ff6b73bd7373c6dee7ffe7efffeff7fff7f7fff7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffeff7ffefffffe7efffdee7ff6b73bd7384c6d6e7ffdeefffe7f7fff7fffff7ffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7ffefefffdee7ffe7efff6b73bd737bbdd6deffe7efffe7efffeff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7f7ffeff7ffe7efffdee7ff7373bd7b7bced6deffe7efffefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7 ffeff7ffdedeffe7e7ff7373c67373c6dee7ffe7efffefefffeff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffeff7ff e7f7ffd6e7ff6b73bd7384c6d6deffe7efffe7effff7fffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffefefffdee7ffe7 efff6b73bd737bbdd6deffe7efffe7efffeff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffeff7ffe7efffdee7ff7373 bd7b7bced6deffe7efffefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffeff7ffdedeffe7e7ff7373c67373c6 dee7ffe7efffefefffeff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffefffffe7f7ffd6e7ff6b73bd7b84c6d6e7ffe7 efffe7f7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffefefffdee7ffe7efff6b73b5737bbdd6e7ffe7efffefef ffeff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7effff7f7ffefefffdee7ff7373c67b7bced6deffdeefffe7effff7ffff f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fff7f7fff7f7fff7ffff102121b5cec6e7ffffefffffeffff7f7ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffefffffe7ffffa5c6bda5cebde7ffffe7ffffeffffff7ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffefffffe7ffffa5c6bd9cc6bde7ffffefffffe7fffff7ffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7ffffefffffe7ffffe7ffffa5c6bdadcec6efffffe7fffff7fffff7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffefffffefffffefffffe7ffffa5c6bda5c6bde7ffffefffffeffffff7fffff7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffefffffefffffe7ffffe7ffffa5c6bda5cebde7ffffe7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7fffff7ffffeffff7f7ffffa5bdb5adcec6efffffefffffeffff7f7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7e7ff6b6bc66b73d65a63d6636bef5a63ef636bde6b7bce737bc6e7e7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffefffffe7efff737bc66b73de6363de636bef5a63de6373de6373ce7373bde7effffffffff7fffffffffffffff7 ffffffffffffffffffffffffffffffefffffe7efff6b73bd6b73d6636bde5a6be7526be7636bde6373d6737bc6e7effff7ffffffffffffffffffffffffffffff fffffffffffffffffffffff7ffffe7efff6b73bd6b73d65a63d6636bef5a63e7636be76b73d67373c6e7efffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7ffe7e7ff6b73bd737bd65a6bd65a63ef5a63ef636bde6b73d6737bc6e7e7fff7ffffffffffffffffffffffffffffffffffffffffffffff ffffffefffffe7efff737bc66b73d65a63de636bef5a63e76373de6373ce7373c6e7effff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffef f7ffe7efff6b73bd6b73d65a6bde5a6bef5a6be75a6bde6b73d6737bbde7effffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7ef ff6b73bd6b73d65a63d6636bef5a63e7636be76b73d67373c6e7effffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7e7ff6b73bd 737bd65a6bd65a63ef5a63ef636bde6b73d6737bc6e7e7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffe7efff737bc66b73d65a 63de636bef5a63e76373de6373c67373c6e7effff7fffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6373bd6b73d65a6bde5a6b ef5a6be75a6bde6b73ce737bbde7effffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefefff7373c67373d6636bde636be75a63e7 636bde636bce7373c6e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffe7efff6b73bd737bd6636bd66363ef5a63ef636bde6b 73d67373c6e7e7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff52527b181842000018102929a5cebdadcec6a5c6bdadce c6efffffefffffffffffffffffffffffffffffffffffffffffffffffffffffefffffefffffa5cec69cc6bd9cd6c694cebd94cebd9ccebda5cec6a5cebde7ffff fffffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffa5c6bd9ccebd9ccec694cebd94cebd9ccec69cc6bdadcec6efffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7ffffefffffa5cec694c6bd94cec694cec694cebd9ccec6a5cec6adc6c6f7ffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7ffffefffffa5c6bd9cc6bd9ccec69ccebd9ccec69ccec69cc6bdadcec6effffff7fffff7ffffffffffffffff fffffffffffffffffffffffffffffff7ffffefffffadcec69cc6bd9ccec694cebd94cebd94cebda5cec6a5cec6efffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7ffffe7ffff9ccebd9cd6c694cebd9cd6c68cc6b594cebd9ccebdadcec6effffff7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7f7ff6b73ce6b6be7525aef5a63ff4a52ff5263ff4a5ae75a6be76363d67373c6 e7efffffffffffffffffffffffffffffffffffffffffffffefffffe7f7ff636bbd636bde525ae75a63ff525af75a63ff525aef5a63e7636bde7373c6deeffff7 fffffffffffffffffffffffffffffffffffffffff7ffffeff7ff6b73c6636bde5a63e75a5af74a5af74a63ff4a5aef5a6bef5a6bd66b73c6e7effff7ffffffff ffffffffffffffffffffffffffffffffffffffeff7ff636bbd5a73de525ae75a63ff4a5aff5263ff525af75a5aef6363de737bc6deeffff7fffff7ffffffffff fffffffffffffffffffffffff7ffffeff7ff6b73c6636bde5263e75a63f74a52ff5263ff4a5aef5a6be75a63d67373cee7f7fff7ffffffffffffffffffffffff fffffffffffffffff7ffffe7f7ff636bbd636bde525ae75a63ff525aff5263ff4a5aef5263e7636bde737bcedeefffeffffff7ffffffffffffffffffffffffff fffffffff7ffffeff7ff6b73c6636bde5a5ae75a63ff4a52f75263ff525aef636bef5a63d67373c6e7efffffffffffffffffffffffffffffffffffffffffffff ffffffeff7ff636bbd636bde525ae75a63ff4a5aff5263ff525af75a5aef6363de737bc6deeffff7fffffffffffffffffffffffffffffffffffffffff7ffffef f7ff6b73c6636bde5263e75a63f74a52ff5263ff4a5aef5a6be75a63d66b73c6e7f7fff7ffffffffffffffffffffffffffffffffffffffffefffffe7f7ff636b bd636bde525ae75a63ff525aff5263ff4a5aef5263e7636bde737bcedeefffeffffff7fffffffffffffffffffffffffffffffffff7ffffe7f7ff6b73c6636bde 5a5ae75a63f74a5aff5263ff4a5aef5a6bef5a6bd66b73c6e7effff7fffffffffffffffffffffffffffffffffffffffffffffff7f7ff636bbd636be7525ae75a 63f74a5af75263ff525af75a63ef6363de737bc6deeffff7fffffffffffffffffffffffffffffffffffffffff7ffffeff7ff7373c6636bde5263e75a63f74a52 ff5263ff4a5aef5a6bef5a63de7373cee7effffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff7b7bb54a528c000839000021082929a5cec6 94c6b5a5cebd9cc6bda5c6bdeffffff7fffff7fffffffffffffffffffffffffffffffffff7ffffefffffa5c6bd9ccebd94cebd94cebd8ccebd8ccebd8ccebd94 cebd9ccebda5c6bde7fffff7fffff7fffffffffffffffffffffffffffffffffff7fffff7ffffa5cebd94cebd94cebd94d6c684ceb58ccebd8ccebd94cec69cc6 bd9cc6bdeffffff7fffffffffffffffffffffffffffffffffffffffff7ffffefffff9cc6bd94cebd8ccebd8ccec684cebd84cebd94cec694c6bd9cc6bdadc6bd effffff7fffffffffffffffffffffffffffffffffffffffff7ffffefffffa5c6bd94c6bd94cebd94d6c684c6b58ccebd8ccebd94cec69cc6bd9cc6bde7ffffef fffff7fffffffffffffffffffffffffffffffffff7fffff7ffffa5c6bd9ccebd9ccec694cec684cebd8ccebd8ccebd94cebd9ccebda5c6bdeffffff7ffffffff fffffffffffffffffffffffffffffffff7ffffefffff94cebd8ccebd84cebd8cd6bd84c6b594d6bd8ccebd9cd6c69cc6bda5c6bdeffffff7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffff7ffffefffffdee7ff636bde5a63f7525aff525aff5263ff4a5aff5263ff52 63f75263f7636be7d6e7ffeff7fffffffffffffffffffffffffffffffff7ffffeff7ffdee7ff6b6bde5a63f7525aff4a5aff525aff4a5aff525aff525af76363 f7636bdedee7ffe7f7ffffffffffffffffffffffffffffffffffffffeff7ffdee7ff636bde5a63f75a5aff4a52ff525aff4a52ff5263ff5263f75263f75a6be7 d6e7ffe7f7fff7fffffffffffffffffffffffffffff7f7fff7ffffdee7ff5a73de4a63f74a63ff425aff4a63ff4a5aff4a5aff525aff5a63f7636bd6deefffe7 f7fff7ffffffffffffffffffffffffffffffffffefffffd6e7ff6373de5a63f7525af7525aff4a63ff425aff526bff4a63f75263f7636be7d6e7ffe7f7fff7ff fffffffffffffffffffffffffff7ffffeff7ffd6e7ff636be75263f7525aff525aff525aff4a5aff5263ff525af7636bff5a6bded6efffe7f7ffefffffffffff fffffffffffffffffff7ffffeff7ffdee7ff636bde5a63f75a63ff4a5aff525aff4a52ff5a63ff525af75a63f7636bdedee7ffeff7ffeffffff7ffffffffffff ffffffffffeff7fff7ffffd6e7ff636be75263f75263ff4a5aff4a63ff4a5aff4a5aff4a5aff5a63f7636bd6d6efffe7f7fff7ffffffffffffffffffffffffff ffffffffefffffd6e7ff6373de5a63f7525aff525aff4a63ff425af7526bff4a63f75263f76373e7d6e7ffe7f7fff7fffffffffffffffffffffffffffff7ffff eff7ffd6e7ff636bde5263f7525aff4a5aff525aff4a52ff5263ff4a5af75a63ff636bded6efffe7fffff7fffffffffffffffffffffffffffff7ffffeff7ffde e7ff6b6be75a5af75a63ff525aff525aff4a52ff5263ff525af75a63f75a6bdedee7ffe7f7fff7fffffffffffffffffffffffffffff7f7fff7f7ffdee7ff636b de5263f75263f74a63f74a63ff425aff4a5aff4a5aff5a63f7636bded6e7ffe7f7fff7ffffffffffffffffffffffffffffffffffeff7ffdee7ff636bde5a63ef 5a63ff4a5af75263ff4a5aff5263ff4a63f75a63f7636be7dee7ffeff7fffffffffffffffffffffffffffffffff7fffff7ffffe7e7ff7373ce424aa508104a00 00180829319ccec69ccebd94c6b59cd6bd94cebde7ffffe7fffffffffffffffffffffffffffffffffff7fffff7ffffdefff79ccebd94cebd8cd6bd84ceb594d6 c694d6bd8ccebd94d6c694cebd9ccebde7ffffeffffff7fffffffffffffffffffffffffffff7ffffefffffe7ffff9ccec68ccebd8cd6bd84cebd84d6bd84d6bd 84cebd8ccebd9cd6c694c6b5e7ffffefffffffffffffffffffffffffffffffffffeffffff7ffffdefff79ccebd94cebd8ccebd84cebd8cd6c684d6bd84cebd94 d6c694cebd9ccebde7ffffe7fffff7fffff7ffffffffffffffffffffffffffffefffffe7ffff9ccec68ccebd8cd6bd84d6bd8cd6bd8cd6bd8ccebd94cebd9cd6 c694c6bde7ffffe7fffff7fffffffffffffffffffffffffffff7fffff7ffffe7ffff9ccebd94cebd94cebd8cceb58cd6bd8cd6bd84cebd8ccebd8ccebd94cebd e7ffffe7ffffffffffffffffffffffffffffffffffffffffefffffe7ffff94cebd8cd6bd84cebd84d6bd8cd6bd8cd6bd8ccebd94cebd9cd6bd9cc6b5effffff7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7efffe7efffd6e7ff6b73ce5263e7525aff4a5aff4a5aff4a5a ff4a5aff4a5aff5263ff4a52ff5a63f75a6bced6e7ffdee7ffeff7ffeff7fff7f7ffefefffe7e7ffcedeff6b73ce5a63ef4a5af74a5aff425aff4a5aff4a5aff 4a52ff525aff4a52ff5a63ef6373ced6e7ffdee7ffefeffffff7fffff7ffe7e7ffdee7ffd6deff636bce5a63ef525aff4a5aff525aff4a5aff525aff4252ff4a 5aff4252f75a6bf75a6bcecedeffd6e7ffefeffff7f7ffffffffe7efffe7efffced6ff6373ce4a63ef4a63ff425aff4a63ff425af74a5aff4a5aff4a5aff525a ff5a6bef6373ced6e7ffdee7ffe7effff7f7fff7f7ffefefffe7e7ffd6e7ff6373c65263ef4a52f74a5aff5263ff4a5aff4a5aff425aff4a63ff4a52ff5263f7 636bced6e7ffdee7ffeff7fff7f7ffffffffefefffe7efffd6deff6373ce5263ef4a5aff4a5aff525aff4a5aff4a5aff4a52ff525aff4a5aff5263e75a73cece e7ffd6e7ffe7f7fff7f7ffffffffe7efffdeefffd6e7ff636bce5a63ef4a52ff4a52ff525aff4a5aff525aff4a5aff525aff4a5aff5263ef6373ced6e7ffd6e7 ffe7f7fff7f7ffffffffe7efffdeefffd6deff6b73ce5263ef4a5aff4252ff4a63ff425aff4a5aff425aff4a5aff4a5aff5a6bef5a73ced6e7ffdee7ffefefff f7f7fff7f7ffefefffe7e7ffd6e7ff636bc65263ef4a52f74a52ff5263ff4a5aff425aff425aff4a5aff4a52ff5263f7636bced6e7ffdee7ffeff7fff7f7ffff ffffefefffe7efffd6deff6373ce5263ef4a5aff4a5aff525aff4a52ff4a5aff4a5aff525aff4a5aff5263ef5a6bc6cee7ffd6e7ffeff7fff7ffffffffffe7ef ffdee7ffd6deff636bce6363f75252ff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ef6373cecedeffd6e7ffe7effff7f7ffffffffefe7ffe7e7ff d6deff6b73ce525aef4a5aff425af74a63ff425aff4a5aff425aff4a5aff4a5aff5a63ef5a73c6d6e7ffdee7ffeff7fff7f7ffffffffefe7ffe7e7ffd6deff63 73c65a6bef4a5af74a5aff525aff4a5aff4a63ff425aff4a5aff4a52f75a6bf7636bced6deffdee7ffefeffff7f7fff7f7ffefefffdee7ffd6deff6b73c6636b d64242ad0008420000210021299ccec694c6bd94cebd8cceb594d6bd94c6b5deffffe7fffff7fffff7fffff7ffffefffffefffffdefff7a5cebd94ceb58cceb5 8cd6bd84cebd84ceb58ccebd84cebd8ccebd8ccebd94cebd94c6b5e7ffffe7ffffeffffff7fffff7ffffe7ffffe7ffffdeffff9ccebd8cceb584cebd84ceb584 d6bd84d6bd84ceb584cebd84cebd8cceb594cebd9ccebde7ffffe7ffffeffffff7fffff7ffffefffffefffffdefff7a5cec694cebd8ccebd84cebd84cebd7bce b584d6bd84cebd84ceb58ccebd94cec694c6bddeffffdeffffefffffeffffff7ffffeffff7efffffe7ffff9ccebd8cceb58ccebd84ceb584d6bd84d6bd84ceb5 8ccebd8ccebd8ccebd8ccebd9ccec6deffffdefff7efffffefffffffffffefffffefffffdefff7a5d6c694ceb58cceb58cd6bd84cebd84ceb584d6bd7bceb584 d6bd84ceb58cd6c68cbdb5e7ffffe7fffff7fffff7ffffffffffeffff7efffffe7ffff9cc6bd8ccebd84ceb58cd6bd84d6bd7bceb584d6bd84cebd8ccebd8cce bd94cebd94c6b5e7ffffeffffff7fffffffffffffffff7fffff7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffffffe7efff737bce636bce636bde636bef5a5af74a5aff 526bff425aff4a63ff425aff4a5aff525aff525aff5a5aff636bf7636bde6b73de636bc6deefffdee7ff6373c66b73d66b73e75263e75263f74a63ff425aff4a 63ff4a5aff4a52ff525aff4a5aff4a5af7526bff5263e75a6be76b73de6b73cee7efffdee7ff6b73ce6b73d6636bde5a63ef4a5af74a5aff4a63ff4a5aff5263 ff4252ff4a5aff4a5aff5263ff4a5aef636bf7636be76b6bde6b73c6deefffd6e7ff6b73ce636bd66b73e75263e75263ff4a5aff525aff4a5aff4a63ff4a5aff 4a5aff4a5aff4a52ff5a6bff5a63e7636bde6b73d66b6bc6dee7ffdee7ff6b73ce6b6bd6636bde5a6bef525af74a5aff5a63ff4a5aff4a5aff425aff4a63ff4a 5aff4a5aff4a5af7636bf7636be76b73de5a6bc6e7efffdee7ff6b73c66b73d66373e75263e74a63ff425af74a63ff4a5aff4a5aff4a5aff4a5aff4a5aff425a f7526bff5a63ef636be7636bde6b6bcee7e7ffdee7ff6b73ce636bd6636bde5a63ef525aff4a5aff5263ff4a5aff425aff425aff4a63ff4a5aff4a63ff4a5aef 636bef5a63d66373d66373bde7efffdeefff737bce6b73d6636bde5a63e75a63ff4a5aff525aff4a5aff4a63ff4a5aff4a5aff4a5aff4a52ff5a6bff5a63e763 6be76b6bde6b6bcee7e7ffdee7ff6b73ce6b6bd6636bde5a6bef4a5aff4a5aff5a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5af7636bf7636be76b73 de636bc6e7efffdedeff6b73c66b73d66b73e75263e75263f7425af75263ff4a5aff4a5aff4a5aff525aff525aff425af75a6bff5263e7636be7636bde6b73ce e7e7ffdee7ff6b73ce636bd6636bde5a63ef525aff4a5aff5263ff4a5aff4a5aff4252ff4a5aff4a5aff4a63ff4252ef636bf7636be76b73d6636bbde7efffde e7ff6b73ce636bd66b73ef5a5ae75a63ff4a52ff5263ff4a5aff4a63ff4a63ff4a5aff4a5aff4a52ff5a6bff5a63e7636be76b6bd66b73cedee7ffdedeff7373 d66b6bde636bde5a6be7525af74a5aff5263ff525aff5263ff4a52ff4a63ff4a5aff525aff4a52f7636bf76373de6b73d66b6bc6e7efffd6deff6b73ce7373de 6b6bde636bde636be73942a508104a0000210829399cc6c69ccebd94d6bd8cceb594d6bd94cebd9ccebda5cec69cc6b5e7ffffe7ffffa5cebd9cc6bd9ccec68c c6b594d6bd8cd6bd8cd6bd8cd6bd84d6bd84cebd8cdec67bceb58cd6bd8ccebd9cd6c694c6bda5d6c6a5c6bde7ffffe7ffff9cc6bd9ccebda5d6ce8cc6b594d6 bd8cd6bd84cebd8cd6bd8cd6bd84ceb58cd6c684ceb594d6bd94d6bd94cebd9ccebda5cec69cc6bdefffffe7ffffa5cebd9cc6bda5cec694c6b594d6bd8ccebd 8cd6bd84d6bd8cd6bd84ceb58cd6c68ccebd94d6c68ccebd9cd6c694cebda5d6c69cc6bde7ffffe7ffff9cc6bd9cc6bda5d6c68cc6b594d6bd8cd6bd84cebd84 d6bd8cd6bd84ceb594d6bd8cceb58cd6bd8cd6c68ccebd94cebd9ccec69cc6bdefffffe7ffffa5cebd9ccebd9ccec68cc6b594d6bd8cd6bd84d6bd84d6bd84ce b584d6bd8cd6bd84d6bd8cd6bd84ceb59cd6ce94cebd9ccebda5c6bde7ffffe7ffffadcec69ccebd9ccebd94cebd8ccebd8cd6bd84ceb584d6bd8cd6bd7bceb5 84d6bd84d6bd84cebd8cd6c694d6c694cebd9ccec69ccebde7ffffdeffffa5cec6a5c6bda5c6bdeffffff7fffff7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7ff737bbd5a6bde5a63f7525aef5a 63ff525aff4a5aff425af7425aff425aff4a5aff4a5aff525aff5252ff5a5aff4a52f7525aef5263ef5a6bef4a63ce6373de5a6be7525ae74a52ef5263ff4a5a ff425aff425aff425aff425aff4a5aff4a52ff4a5aff425aff425aff5263ff4a5af7525af75a63ef5a6bd66373d65263de5a6bf75263f74a5af74a5aff4a63ff 4252ff425aff425aff4a63ff4a5aff4a5aff4252f75a6bff4a52f7525af7525aef636bef5263c66373d65a6bde5263ef4a52ef5a63ff525aff525aff525aff4a 5aff4a52ff4a5aff4252ff4a5aff4a5aff525aff5263ff525aef5a5af76363ef5a63d6636bde5263de5a6bf7525af7525aff4a5aff4a5aff4a5aff525aff4a5a ff4a5aff4a5aff4a5aff4a5aff5263ff4a52f7525aef525aef636bef5263ce6373de5a6be75263e74a52ef5263ff425aff425aff425af74a63ff4a5aff4a5aff 4a52ff4a63ff4a63ff4a5af7525aff5252f75a5af76363ef636bde6b6bde5263e75a6bf7525af7525aff525aff4a5aff4252ff4a5aff425aff425aff4a63ff4a 5aff425aff4a63ff525af76363ff525aef6373e7c6d6ff6373c65a63de5a63ef525aef5a63ff525aff4a5aff4a5aff4a5aff4a52ff525aff4252ff525aff525a ff525aff5a5aff5252ef5a5af76363ef5a63d6636bde5263e75a6bf7525af74a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff 4a52f7525aef525aef636bef5263ce6373de636be75a5aef4a52ef5a63ff4a5aff4a5aff4a5af7525aff4a52ff525aff4a52ff4a5aff425aff4a5aff5263ff52 5af7525aef636bef636bd66b73de5263de5a6bf75263f7525aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff5263ff525aff5252f7525a ef636bef5263c66373d65a6be7525aef4a52ef5a63ff525aff525aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff525aff525aef5a63ef636bef 5a63de636be7525ae75a63ff525af74a5af75263ff525aff4a52ff525aff4a52ff525aff4a5aff4a5aff4252ff5a63ff4a5af7525aef5a63ef5a6be75263ce63 73de5a63e75a5ae7525aef636bf75a63e7394aa50010420000210021399cc6ce94c6bd94d6bd84ceb58ccebd94d6bd8ccebd94cebd9cd6c68cbdb59ccebd94ce c68ccebd8ccebd94d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd73c6b584d6bd84d6bd84d6bd84ceb58ccebd94cebd94cebd9ccec68cc6b594cebd94d6c6 84c6b594d6c68ccebd94d6bd84c6b58cd6bd84ceb58cd6bd84ceb58ccebd84ceb58ccebd94d6c68ccebd94c6bd9cd6c68cc6b594cebd9ccebd94cebd94cebd94 d6bd8cceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd8ccebd94d6c68ccebd94cebd8cc6bd94cebd9ccec68cc6b594cec694cebd84c6b594d6bd84ce bd8cd6c67bc6b584d6bd84ceb58cd6bd84ceb58cd6bd7bceb584d6bd8cd6bd8ccebd94cebd9ccec694c6b594cebd94cebd8ccebd8ccebd8cd6bd84ceb584d6bd 7bceb584d6bd84d6bd8cd6bd84ceb584cebd84cebd8ccebd84c6b594cebd94c6bd94cebd94cebd94cebd94cebd94cebd8ccebd8ccebd8ccebd8ccebd84ceb58c d6bd7bceb584d6bd7bceb584d6bd84cebd84d6bd84cebd8ccebd8ccebd94cebd8cc6b594cec68cc6bd94cebd94c6b5a5cebdeffffffffffff7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efff6373c65a6b f74a5af75a63ff525aff525aff525aff4a5aff425aff425aff4a5aff4a5aff4a5aff525aff5263ff4a63ff4a63ff4a63ff4a5af75263f7425aef5a63ff525aff 5263ff4a5aff4a5aff425aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a63ff3952ff4a5aff4a5aff4a5aff5263ff5a6bf75263ef5a6bff4252f75263ff4a 5aff4a5aff4a5aff425aff4a5aff4a63ff4a5aff4a5aff4a5aff5263ff4a5aff525aff5a63ff5a63ff4a5af7526bf74a5aef5263f74a5aff5263ff4a5aff525a ff525aff525aff4a52ff4a5aff4a52ff4a5aff4a5aff4a63ff4252ff4a5aff4a5aff525aff525aff5a63ff5263f75263ff425af74a5aff4252ff4a5aff4a5aff 4a5aff525aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff5263ff5263ff4a5aff5263f74a5aef5a63ff525aff5a63ff4a52ff4a5aff425aff4a63ff4a 5aff5263ff4a5aff525aff4a5aff5263ff4a5aff525aff525aff525aff525aff5a63ff525aef5a63ff4252f7525aff4a52ff4a5aff4a5aff4a5aff4a5aff4a63 ff4a5aff4a5aff4a5aff4a63ff425aff4a52ff525aff5263ff525af75a6bef5a63ef5a63ff525aff525aff525aff525aff525aff525aff4a52ff525aff4a52ff 525aff4a5aff525aff4a52ff525aff4a5aff525aff525aff5a63ff5263f75263ff425af74a5aff4252ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff525aff4a 5aff4a5aff4a5aff525aff5263ff5263ff4a5af75a63ff4a5aef5a63ff525aff5a63ff4a5aff4a5aff425aff4a5aff4a5aff5263ff4a5aff525aff4a5aff5263 ff425aff525aff525aff4a5aff525af75a63f7525aef5a63ff4252f75263ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff 525aff5a63ff5a63ff525aff5a63f74a5aef5263ff4a5aff5263ff4a5aff5263ff525aff525aff4a52ff525aff4252ff4a5aff4252ff5263ff4a5aff4a5aff4a 5aff4a5aff525aff5263ff4a5af7526bff4252f74a63ff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff525aff5263ff5263 ff4a5af7526bf74a5aef5a6bff525aff5263ff525af75a63ef3142ad08104a0000210829399cc6ce9ccec694cebd94d6c684ceb58cd6bd8ccebd8cd6bd8ccebd 94d6c68ccebd8cd6bd84cebd94dec684cebd8cd6c684cebd8cd6bd84ceb584d6bd7bceb584debd84d6bd84ceb584d6bd8cd6bd8ccebd8ccebd94d6bd8ccebd8c cebd8cd6bd8cd6bd8cd6bd84cebd8cd6bd8ccebd94d6bd84ceb594d6bd84ceb58cd6bd8ccebd8cd6bd84ceb58ccebd8ccebd8ccebd84cebd94d6c68ccebd8cce bd8ccebd94d6c68ccebd8cd6c684cebd8cd6bd84ceb58cd6c684ceb58cd6bd8cd6bd8ccebd8ccebd8ccebd8ccebd8ccebd94d6c684cebd8cd6bd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6c67bc6b58cd6bd8ccebd8ccebd8ccebd94d6c68ccebd8ccebd8ccebd94dec684 cebd8cd6bd84cebd84d6bd7bceb584d6bd84d6bd84d6bd8cd6bd84ceb584ceb594d6c68ccebd94d6c684cebd8ccebd8cd6bd8cd6bd7bceb58cd6c684ceb58cce bd8cceb594dec684ceb58cd6bd84d6bd8cd6bd7bceb584d6c67bceb584d6bd84cebd8cd6c68ccebd8cd6c68ccebd8ccebd94d6c694cebd94c6bda5cec6efffff f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff dee7ff6373d64a5aef5263ff4a5aff525aff525aff4a52ff4a5aff425aff4252ff425aff4a5aff5263ff525aff4a5aff395aff4263ff3952f7425aff4a5aff4a 5aff4252ff4a5aff4252ff4a5aff4252ff5263ff4252ff5263ff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4252f75263ff425a ff5263ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff525aff525aff525aff4a52ff525aff4252ff4a5aff4a5aff4a5aff4a5aff425aff 4a5aff525aff4a52f75263ff4a52ff525aff4a52ff4252ff4a5aff4a5aff425aff4a63ff425aff4a5aff4a5aff4a5aff4252f7525aff3952ff4a63ff4252ff4a 5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4252ff4a5aff4252ff4252ff5263ff4a5aff4252ff4a5aff4a52ff4a5aff4252 ff4a5aff4a52ff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a52ff525aff525aff525aff4a52ff525aff4252ff4a5aff4252ff4a5aff4252ff4a5aff 525aff4a5aff4252ff425aff4a5aff4a5aff4a5aff4a5aff4a52ff5a63ff4a52ff4a5aff4a52ff5a63ff4a52ff4a52ff4a5aff525aff4a52ff5263ff4a52ff52 5aff4a52ff4a52ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff3952ff4a63ff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52 ff4a5aff4a52ff525aff4a5aff4a5aff4252ff4a5aff4252ff425aff5263ff4a5aff4252ff4a5aff4a52ff4a5aff425aff4a63ff4a52ff525aff4a5aff4a5aff 4a5aff4a5aff425aff4a5aff4a52ff525aff4a5aff525aff4a52f7525aff4252ff4a5aff4252ff4a5aff4252ff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff525aff4252ff4a5aff525aff5263ff4a5aff4252ff4a5aff4a5aff4a5af75263ff4a52ff525aff4a52ff4a52ff4a52ff4a5aff4a5a ff4a63ff4252ff4a5aff425aff4a5aff4252ff4a63ff425aff4a63ff425aff4a63ff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a63ff 4252ff4a5aff4252ff4a5aff4a63ff4a63ff425aff4a5aff4252ff5263ff5263ef3142ad00084a000021002131a5cece94c6bd94cebd8ccebd8cd6bd84cebd84 cebd84ceb58cd6bd7bc6b58cd6bd7bceb584d6bd7bceb584d6bd7bceb584d6bd84ceb58cd6bd84ceb584d6b584ceb584d6bd84d6bd84ceb584cebd84ceb58cd6 bd84ceb58cd6bd8cd6bd84ceb584cebd84cebd8cd6bd84ceb58ccebd8ccebd8cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584cebd84ceb58cd6c6 7bceb584d6bd84cebd84cebd84ceb584cebd84ceb58cd6bd84ceb58cd6c684ceb58cd6bd8cd6bd84cebd84cebd84cebd84cebd84c6b58cd6c684ceb584cebd84 d6bd7bceb57bceb584cebd84d6bd84ceb584cebd8cd6bd8cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb594d6c684c6b58ccebd84ce bd84cebd7bceb584d6bd7bceb584d6bd84ceb58cd6bd84ceb57bceb584ceb584ceb58cd6bd8ccebd84ceb584cebd7bceb58cdec67bceb57bcebd7bceb584d6bd 84d6bd8cd6bd84ceb594d6c684ceb584cebd8cd6bd84ceb584ceb58cd6bd7bceb58cdec684ceb58cd6c684cebd8ccebd84c6b58cd6c684cebd8ccebd8ccebd94 cec69cc6bddeffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffdee7ffd6deff5a63de525af74a5aff4a63ff4a5aff525aff4a52ff5252ff4a52ff5263ff425aff4a5aff4a5aff4a5aff4a5aff4a63ff3952f75263 ff4252f74a5aff4a5aff4a5aff4a5aff5263ff4252ff5263ff4a52ff5a63ff4a52ff5263ff4a5aff4a5aff4a5aff4a5aff4252ff525aff4252ff5263ff4a5aff 5a63ff4a52ff425aff425aff5263ff4a5aff5263ff4a5aff5a5aff4a52ff525aff4252ff525aff525aff525aff4a52ff5263ff4a52ff5263ff4252ff4a5aff42 52ff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff425aff425aff425aff5263ff425aff4a63ff4252ff5263ff4a5aff4a5a ff4a5aff5263ff4a5aff4a5aff4252ff4a5aff4a5aff4a63ff4a5aff525aff525aff4a5aff4a5aff5263ff4252ff5263ff4a5aff4a5aff4a5aff4a5aff5263ff 525aff4a5aff5263ff4a5aff525aff525aff5263ff4a5aff5263ff4a5aff4a5aff4a5aff5a63ff4a5aff525aff4252ff5a63ff4a5aff4a5aff425aff4a63ff4a 5aff4a5aff4a5aff525aff4a52ff4a5aff4a52ff525aff4a5aff4a52ff4a5aff525aff4a52f75263ff5263ff4a5aff4a52ff5263ff5263ff525aff4a52ff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff425af7425aff5263ff425aff4a63ff4252ff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4252ff 525aff4a5aff4a63ff4a5aff525aff525aff4a5aff4a5aff5263ff4252ff5263ff425aff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a63ff4a5aff5263ff52 5aff5263ff4a5aff4a63ff4a5aff4a5aff4a52ff5263ff4a5aff525aff4252ff5263ff4252ff425aff425aff4a63ff4a5aff4a5aff4a5aff5263ff4a52ff4a5a ff4252ff4a5aff4a5aff4a5aff4a5aff5263ff4a52ff5263ff4252ff525aff4a5aff4a5aff5263ff4a5aff4a5aff5263ff4a5aff525aff4a5aff525aff4a5aff 525aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff425aff5263ff425aff425aff425aff5263ff4a5aff525aff4a5aff4a63ff4a5aff4a5aff4252ff525aff4a 5aff4a5aff4252ff4a63ff4252ff4a63ff4a5aff4a5aff4252ff5263ff425aff4a63ff4a5af75a6bf73142ad0810520000210829399cc6c694cec68ccec68cd6 c67bceb58cd6bd8cd6bd8cd6bd84d6bd8cd6bd84ceb58cd6bd84d6bd8cd6c684d6bd8cd6bd84cebd8cd6c684ceb584d6bd84d6bd8cd6bd84ceb584ceb58cd6bd 8cd6bd8cd6bd84ceb584ceb58cd6bd84d6bd84d6bd84d6bd8cd6bd84ceb584d6bd84d6bd8cd6bd8cd6bd84cebd8cd6bd8cd6bd84cebd84cebd84ceb58cd6bd8c d6c68cd6bd84ceb58cd6bd84d6bd84d6bd84d6bd8cd6c684d6bd84d6bd84cebd8cd6c684ceb58cd6bd84ceb58cd6bd84cebd84ceb584d6bd84d6bd8cd6c684ce b58ccebd8cd6bd84d6bd84d6bd84d6bd84d6bd84ceb584d6bd8cd6bd8cd6bd8cd6bd84cebd84d6bd84d6bd84cebd84cebd84ceb584cebd94dec68cd6bd84ceb5 8cd6c684cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6c684ceb584d6bd84d6bd8cd6bd84ceb58cd6bd8ccebd8cd6bd8cd6bd84d6bd7bceb584dec67b ceb584d6bd84d6bd8cd6bd84ceb594dec684c6b58cd6bd8cd6bd84cebd84ceb584d6bd8cd6bd8cd6bd8cd6bd8cd6bd84ceb584ceb58ccebd94d6c68ccebd94d6 c68ccebd84ceb594cebd9ccec6deffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7ffffe7f7ffd6e7ff636bd65263e75a63ff4a5aff425aff3952f7425aff525aff4a52ff5252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 425aff4a63ff425aff5263ff4252ff4a5aff4a5aff4a5aff4252ff525aff4a5aff525aff4a52ff525aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff4a 5aff4a5aff4a5aff4252f74a5aff4a5aff4a5aff4a52ff4a5aff4a5aff525aff4a52ff5252ff4252ff4a5aff4252ff4a52ff4a5aff525aff4a52ff4a5aff425a ff4a5aff4252ff4a5aff425aff4a5aff525aff4a5aff4a5aff425aff425aff425aff4252ff4a63ff425af74a63ff4a63ff4a5aff4a5aff4a5aff4a5aff4a63ff 4252ff4a5aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4252ff4a5aff395aff4a63ff4a52ff525aff4a5aff4a5aff425aff4a5aff4252ff525aff4252ff4a 5aff4a5aff425aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a63ff4252ff4a5aff4a5aff5263ff4a52ff525aff4a5aff4a5aff4a52ff4a52ff4a52ff4a5aff4a52ff5263ff4252ff425aff4a5aff4a5aff425aff4a5aff 4a5aff4a5aff4a5aff425aff425aff425aff4252ff4a63ff425af74a63f74a63ff4a63ff4a5aff4a5aff4a5aff4a63ff3952f74a5aff4a5aff4a5aff4a52ff52 5aff4a5aff525aff4252ff4a5aff425aff4a63ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff4252ff4a5aff425aff425aff425aff4a5aff4a5a ff4a5aff4a52ff4a52ff4252ff4a63ff4252ff4a63ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4252ff4a5aff425aff425aff425aff4a63ff4a5aff4a5aff 4a5aff525aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a63ff4252ff4a5aff4a5aff4a5af74a5aff525aff4a5aff4a5aff4a52ff4a 5aff4a5aff4a63ff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4252f74a63ff4a5aff4a63ff4a52ff525aff4a5aff4a5aff4252ff4a5aff425a ff4a63ff4a52ff4a52ff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a63ff425aff3952f74a63ff4a5af75a63ef3942ad00004a0000210821319cc6c6 8cc6bd94cec684cebd84cebd84cebd84ceb584ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58c d6bd8cd6bd8ccebd84ceb58cd6bd84d6bd84d6bd84d6bd84d6bd84ceb58cd6bd8cd6bd8cd6bd84ceb584d6bd7bceb584ceb584cebd84ceb584d6bd84d6bd84d6 bd8cd6bd7bc6b584ceb584ceb58cd6bd84ceb584ceb57bceb584d6bd7bceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd84d6bd84cebd84cebd 7bceb584cebd8ccebd8cd6bd84cebd8cd6bd84ceb584d6bd84d6bd84d6bd84ceb58cd6bd84ceb584ceb584cebd84ceb584d6bd84d6bd8cd6bd84cebd84ceb584 ceb584ceb58cd6c684ceb584cebd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd7bc6b58cd6bd8cd6 bd84cebd7bceb584d6bd7bceb584d6bd84ceb584cebd84ceb58cd6bd8cd6bd84cebd8cd6bd84cebd84ceb584ceb584cebd8cd6bd84c6b58cd6bd8ccebd8ccebd 84c6b58ccebd84ceb58ccebd8cd6bd8ccebd8cc6b5a5cec6e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7f7ff6b7bbd6373d65a6bef5263f75263ff425aff4263ff395aff4263ff4a5aff525aff525aff5263ff4a5aff4a5aff4a 5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a52ff4a5aff425aff425aff425aff4a63 ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff4a5aff4a52ff4a5aff425aff425aff4252ff4a5aff425aff 4a5aff425aff4a63ff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a63ff425aff4a63ff4263f74a63ff4a5aff4a5aff4a 5aff4a63ff4a5aff525aff4a5aff5263ff4a5aff525aff525aff5263ff4a5aff4a5aff425aff4263ff425aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5a ff4a5aff4a5aff425aff4a63ff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a63ff425aff425aff425aff4a63ff425aff4a5aff4252ff4a5aff425aff 425aff425aff425aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a63ff42 5aff4a63ff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a63ff425aff4a63ff4263f74a63ff4a5aff4a5aff4a5aff4a63ff4a5aff525aff4a5aff5263 ff525aff525aff525aff5263ff4a5aff4a5aff425aff4263ff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff425aff 4a5aff4a5aff4a5aff4a5aff525aff4a52ff4a5aff425aff425aff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a5aff4252ff425aff425aff4a5aff42 5aff4a63ff425aff4a5aff4a5aff4a5aff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a63ff4a5aff4a63ff4a5aff525aff525aff525a ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5af7525aff4a5aff525aff4a52ff525aff4a5aff 4a5aff425aff4a63ff425aff4a5aff4a52ff525aff4a5aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a63ff425af75263ff4a5af75a6bef3942ad10105200 00211029399cc6c694cec68ccebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd8cd6bd8cd6bd8ccebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84d6bd7bcebd84d6bd84cebd8cd6bd84cebd8cd6bd84d6bd84d6bd84cebd84d6bd84d6bd 84d6bd84cebd84d6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84 cebd8cd6bd84cebd84d6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84d6bd8cd6bd84d6bd8cd6bd84ceb584d6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8ccebd8cd6bd8cceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84cebd8cd6bd84d6bd8ccebd9cd6c69cc6bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7ffeff7ff7384b5636bd65263ef4a5aef525aff4252f7425aff3952ff395aff395af7425aff4252ff4a5aff4252 f74a5aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff425aff4252f7425aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff425aff425aff 425aff425aff425af74a5aff4a5aff4a5aff425aff425aff425aff4a5aff425aff425aff425aff4a5aff425aff4a5aff4252ff4a5aff425aff425aff4252ff42 5aff425aff425aff4252ff425aff425aff425aff425aff4a5aff4252ff4a5aff4252ff4a5aff4252ff425aff425aff425aff425aff4a5aff425aff4a63ff425a ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff425aff395aff425aff4a5aff525aff4a52ff4a5aff 425aff4a5aff4252ff4a5aff425aff425aff425af74263ff425aff4a5aff4252ff4a5aff425aff4a5aff425aff425aff395aff425aff425aff425aff4252ff42 5aff425aff4a5aff425aff425aff425aff425aff425aff425aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425a ff425aff425aff425aff425aff425aff425aff4a5aff4252ff4a5aff425aff425aff425aff425aff425af74263ff425af7425aff425aff4a5aff4252ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff425aff395aff425aff4a5aff525aff4a52ff4a5aff425aff4a5aff4a52ff4a5aff4a52ff4a 5aff425af74a63ff4a5aff4a5aff425aff4a5aff4a52ff4a5aff425aff425aff425aff425aff425af74a63ff425aff4a5aff425aff425aff425aff4a5aff425a ff425aff425aff4a5aff425af74a5aff425aff4a5aff425aff4263ff425aff4a5aff425aff4a5aff4a52ff4a5aff425aff4263ff425aff4a63ff425aff4a5aff 4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff4252ff4a5aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a52ff52 5aff4a52ff4a5aff425aff425aff425af74a63ff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff425aff4a5aff525af75a63 e73942ad0808520000290821319ccec68cc6bd8ccebd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58ccebd 84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd7bceb584d6bd7bceb584d6bd7bceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584 d6bd7bceb584d6bd84ceb584d6bd7bceb584d6bd84cebd8cd6bd84ceb58ccebd8cceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ce b584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd8cceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584ceb584cebd8cd6bd84c6b59ccebde7fffff7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7ff636bc65263ef5263ff5263ff4a5aff4a63ff425aff4a63ff425aff4263ff425aff 4a63ff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a 5aff4a5aff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a63ff425aff4a63ff425aff4a63ff425aff4a63ff4a5aff4a63ff425aff425aff425aff4a63 ff425aff4a5aff425aff4263ff425aff425aff425aff4a63ff425aff4a5aff4a5aff4a5aff425aff4a63ff425aff4a63ff425aff4a63ff425aff4a5aff425aff 4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff525aff4a5aff4a5aff425aff4a5aff425aff4263ff425aff525aff4a 5aff525aff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a63ff425aff4a5aff4a5aff4a5aff425aff4a63ff425aff4a5aff425aff4a5a ff425aff4a63ff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff425aff 4a63ff425aff4263ff425aff425aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4263ff425aff4a63ff425aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff4a63ff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4263ff425aff4a5aff4a5aff4a5aff425aff4a63ff425aff4a5a ff425aff4a5aff425aff4263ff425aff4a5aff4a5aff4a63ff4a5aff5263ff4a5aff4a63ff425aff4a63ff425aff4a63ff425aff4a63ff4a5aff4a63ff425aff 4a5aff4a5aff4a5aff425aff4a63ff4a5aff4a63ff425aff4a5aff425aff4a63ff425aff4a5aff4a5aff4a63ff425aff4a5aff4a5aff425aff425aff4a5aff42 5aff4a5aff425aff525aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff425aff4a63ff425aff4a63ff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5a ff425aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a63ff4a5aff5263ff4a5aff525aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff 5263ff4a5af75a6bef3942ad1010520000211029319cc6bd94cebd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd84d6bd84cebd84d6bd84d6bd84d6bd84cebd8cd6bd8ccebd8cd6 bd84cebd8cd6bd84cebd84d6bd84cebd84d6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd8ccebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd84d6bd84d6bd84d6bd7bceb58cd6bd8cd6bd94d6c694cebd9cc6bde7ffffefffffeffff7ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffd6d6ff6b73e74a5af74a5aff4a5aff4a5aff4a5aff4a63ff425aff4a 5aff425aff4a63ff425aff4a5aff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a5aff4a5a ff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff425aff425aff4a5aff425aff4a5aff425aff4a5aff425aff425aff 395aff425aff4a5aff4a63ff425aff4a5aff425aff4263ff425aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a 5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff425aff425aff425aff4a5aff4252ff4a5aff425aff425aff425a ff425aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4252ff425aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff 4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff425aff4a5aff425af74a 5aff425aff4a5aff425aff4a5aff425aff425aff4252ff4a5aff425aff4a5aff425af74a5aff4a5aff4a5aff4a5af74a5aff4252ff4a5aff4252ff425aff425a ff4a5aff425aff4a5aff425aff4a5aff4a52ff4a5aff425aff425aff4252ff4a5aff425aff4a5aff425aff425aff425aff425aff4252ff4a5aff4a5aff4a5aff 425aff4a5aff425aff4a5aff4252ff425aff395aff425aff425aff4a5aff425aff4a63ff425aff4a5aff425aff425aff425aff4a5aff425aff4a5aff425aff4a 5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5af74a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4a52ff4a5aff425a ff425aff4252ff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff425aff425aff425aff425aff4263ff425aff425aff425aff4a5aff 4252ff4a5aff425aff425aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff4252ff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a0000210829319ccec68cc6bd8ccebd8ccebd8cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ce b584d6bd84ceb58cd6bd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84cebd8cd6bd 84ceb58ccebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd7bceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84ceb58cd6bd84ceb58c d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b584d6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd7bceb58cd6bd84ceb58ccebd8ccebd8cceb594cebd9cd6c69cc6 bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff7373ce5a63e75263ff425aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff425aff4a5aff425aff425aff425aff4a63ff4a5aff4a5aff4a52ff4a5aff4a5aff 4a5aff4a5aff4a63ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff425aff4a5aff425aff525aff4a5aff525aff4a5aff4a63ff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff4a5aff4a5aff4a5aff 4a5aff425aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff42 5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff425aff525aff4a5aff4a5aff425aff525aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff425aff4a5a ff4a5aff4a63ff425aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff425aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff4a 5aff4a5aff4a5aff4a5aff425aff4a63ff4a5aff4a5aff425aff425aff425aff4a5aff4a5aff4a63ff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5a ff4a5aff525aff4a52ff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4a5aff525aff4a5aff4a5aff4a5aff 525aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff425aff4a63ff425aff4a5aff42 5aff4a63ff425aff4a5aff425aff425aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5a ff425aff4a5aff425aff4a63ff425aff525aff4a5af75a6bef3142a50810520000211029399cc6c694cebd8ccebd8cd6bd8ccebd8cd6bd84cebd84d6bd84d6bd 84d6bd7bcebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd84d6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd8c cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6 bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6c68cd6bd 8ccebd8cc6b594cec6a5cebdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b73c6636be74a5af75263ff 4252f74a63ff4252ff4a5aff4a52ff525aff4a52ff4a5aff4252ff4a5aff4252f7425aff425aff4a5aff4252ff425aff425aff4a5aff4a5aff4a5aff4a52ff4a 5aff4a52ff4a5aff4a5aff4a5aff425af74a5aff4a5aff4a5aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a52ff525aff4a5aff4a5aff425aff4a5aff4a52ff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4a5aff525aff4a52ff4a5aff 4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a52ff4a 5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5a ff4a5aff425aff425aff4252ff4a5aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff4252ff4a5aff4a52ff4a5aff425a ff4a5aff4a52ff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a52ff525aff425af74a5aff425aff4a5aff4252ff425aff 4a5aff525aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff525aff4252ff4a5aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a 5aff425aff4a5aff4a52ff525aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425a ff4a5aff425aff4a5aff425aff4a5aff425aff425aff4252ff425aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff 4252ff425aff425aff425aff425aff4a5aff4a5aff4a5aff4a5aff525af75263e73942ad00084a0000290021319cc6c694c6bd94cebd8cceb58cd6bd84ceb58c d6bd7bceb584d6bd7bcebd84d6bd7bceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b58cd6bd84ceb58cd6bd84ceb58ccebd84cebd8cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd 84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b58ccebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd8cd6bd8c d6bd7bceb58cd6bd7bceb58cd6c68ccebd9ccec6e7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffd6e7ff63 73d65263f74a5aff4a63ff425aff4a63ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5a ff4a5aff525aff4a5aff525aff4a52ff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff425aff 5263ff4a5aff4a5aff4a52ff525aff525aff525aff4a5aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a 5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525a ff4a5aff525aff525aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff 4a5aff4a5aff525aff4a5aff425aff425aff4a5aff4a5aff525aff525aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff525aff525aff4a5aff4a 5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff525aff4a5aff425aff4a5aff42 5aff4a5aff425aff525aff525aff4a5aff4a5aff525aff4a5aff4a5aff425aff525aff4a5aff4a5aff425aff525aff4a5aff4a5aff425aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a5aff4a63ff4a5aff525aff4a52ff4a5aff425aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff 525aff4a5aff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a 5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff525aff4a52ff525aff525af75a6bef3142ad0810520000210829399cc6c694cec68ccebd8cd6 bd8cceb58cd6bd84cebd84d6bd84cebd84d6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84d6bd84d6bd84ceb5 8cd6bd84d6bd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84d6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd84d6bd84cebd84d6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6 bd8ccebd8cd6bd8ccebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd84d6bd84cebd 84d6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6c684cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84ceb58cd6bd84ceb58cdec67bceb584d6bd84cebd8ccebd94cebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7ffffd6e7ff6b73c65a6bef525aff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff4a52ff5252ff4a52ff4a5aff4a5aff4a5aff 4a5aff525aff4a5aff4a5aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff525aff4a5aff525aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 4a5aff525aff4a5aff525aff4a52ff525aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4a5aff525aff4a52ff525aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff425aff4a5aff4a5a ff525aff4a52ff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff525aff4a52ff52 5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a52ff525aff4a52 ff4a5aff4252ff4a5aff4252ff4a5aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 425aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a63ff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a 5aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525af75263ef3942ad00084a0000210021319ccece 94c6bd8ccebd8cceb58cd6bd84ceb584cebd84cebd84d6bd84cebd84cebd84cebd8cd6bd84ceb58ccebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84ce bd8cd6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84cebd8cd6bd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd84ceb58cd6bd8cceb58ccebd8cceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ceb58cd6bd84ceb584 d6bd84cebd84d6bd7bceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ce bd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84cebd84d6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd7bceb584d6bd84cebd84cebd8ccebd94cebda5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffeff7ff6b7bb5636bde5a5af76363ff4a52ff5263ff425aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff525aff4a5aff525aff4a 52ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff 525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff 525aff4a52ff525aff4a5aff4a5aff4a52ff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff 525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff525aff525af75a6bf73942ad08105200 00210829399cc6c694cebd8ccebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84d6bd8cd6bd8ccebd8cceb58cd6bd8cd6bd8cd6bd84ceb584d6bd84d6bd84d6bd84cebd84d6bd84cebd84d6bd84cebd8cd6 bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd84d6bd84cebd84d6bd84cebd8cd6bd84cebd 8cd6bd8ccebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd84cebd8cd6bd84d6bd84cebd8ccebd8cd6c694cebda5cec6efffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7ffeff7ff6b73c6636bde5a5ae75a63ff4a52ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a63ff4a5a ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a52ff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff 4252ff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff 4a52ff4a5aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a52ff52 5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff 4a5aff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a52ff4a 5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af75a63 ef3942ad00084a0000210821319cc6c68cc6bd8cd6bd8ccebd84d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ceb58cd6bd84ceb584cebd84cebd8cd6bd7bceb584ceb584d6bd84cebd84d6bd84cebd 84d6bd84cebd84cebd8cd6bd7bc6b58cd6bd84ceb58cd6bd84c6b58cd6bd84ceb584ceb584cebd8cd6bd84cebd84ceb584cebd8cd6c684ceb584d6bd84ceb584 d6bd84ceb58cd6bd84ceb58cd6bd84ceb58ccebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb57bcebd84cebd8cd6bd84cebd84ceb58cd6bd8ccebd84c6b594cec6e7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdef7ffd6e7ff6b73d65a63e75263ff4a5aff525aff4a5aff4a5aff4a5aff 5263ff4a5aff4a5aff4a5aff525aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a52ff525aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a 5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5a ff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a 5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5a ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 5263ff4a5af75a6bf73142ad0810520000210829399cc6c694cebd8ccebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb584d6bd8cd6bd8cd6bd84ceb58cd6bd8ccebd84ceb58cd6c684ceb584 d6bd84ceb58cd6bd84ceb58cd6bd8cd6bd84ceb594d6c68ccebd8ccebd8ccebd8cd6bd84ceb584cebd8cd6bd8cd6bd84cebd84cebd8cd6bd8cd6bd84ceb58cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd8ccebd8cd6bd8cd6bd8cd6c694cebd94cec694cebdf7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffe7f7ffced6ff5a6bd65263f7525aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5a ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff525aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff 425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a 5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a0000210821319ccec68cc6b58ccebd8ccebd84d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ce bd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84d6bd84d6bd7bceb57bcebd7bceb58cd6bd84ceb58cd6bd8cce bd8ccebd8ccebd84cebd84cebd84ceb58ccebd8cd6bd84ceb58cd6bd8ccebd8ccebd94d6bd8ccebd8cceb594d6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd 84ceb58ccebd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84ceb584d6bd84ceb584d6bd8cd6bd84ceb58ccebd8ccebd84bdb594cebd94ce bda5cebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6373ce5a6b ef4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff 4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a52ff525aff4a52ff525aff4a5aff525aff4a5aff525aff4a 5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff 4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a 5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525a ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff 525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a 5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5af75a6bf73942ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cdec67bceb57bceb58cdec6 84cebd8ccebd9cdec67bbdad8cceb594d6c68cceb584c6b594d6bd8cceb594d6c694d6bd94cebd8cceb58cc6b594cebd9cd6c68cc6b58ccebd84ceb58cd6bd84 ceb58cd6bd84ceb58cd6bd8cd6bd8cd6bd8ccebd8cd6bd84ceb58cd6bd84cebd84d6bd7bcebd84d6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd8cd6bd84cebd8cd6bd8ccebd 9cd6c69cc6bda5c6bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff e7f7ff6b73bd5263e7525aff4a5aff525aff4a52ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a52ff4a52ff525aff4a52 ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a 5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a 5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52 ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff5a63ef3942ad00084a0000210821319cc6c68cc6bd8cd6bd8ccebd84d6bd84ceb58c d6bd84ceb584d6bd84cebd8cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd7bc6b57bc6b584d6bd8c d6c684cebd84d6bd73bdad8cd6bd84c6b5a5e7ce94d6bd84c6ad9cd6bd9cd6c694c6b59cd6c694ceb594cebd94ceb5a5d6c6a5d6c69ccebd94c6b5a5d6c694c6 b594cebd94d6c694d6bd94d6c68cd6c684cebd7bbdad8cceb58cd6bd8ccebd8cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd8c d6bd8ccebd94cebd9cc6bdefffffefffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffefffffd6e7ff5a6be74a5af75263ff4a5aff525aff4a5aff4a63ff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a52ff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a52ff 525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff5263ff525af75a6bf73142ad0810520000210829399cc6c694cebd8ccebd8cd6 bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84ceb58cd6bd84cebd84d6bd84cebd7bc6b58cd6c68ccebd84bdad94ceb59ccebdadd6c694bdad7ba5945a8c7b5a84734a6b5a42635a395a4a4a6b5a527b6b 84a59494b5ad9cc6b59ccebd94c6b594cebd7bbdad8cd6bd8cd6bd94e7ce8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84d6bd7bcebd84d6bd84 d6bd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd84cebd84cebd8ccebd94cebdeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffeff7ffd6e7ff5a6be75263ff4a5aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff4a52ff4a5aff 4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff425aff4a 5aff425aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff5a63ef3942ad00084a0000210821319ccec6 8cc6b58ccebd8ccebd84d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb594dec684cebd7bc6ad7bc6b594dec684cebd8ccebd8ccebd9cd6c6a5d6c68cb5a529524200291800181000100000100800100800080000 180800100800180800080000100810312152736ba5cebd9ccebda5dece7bc6ad84d6bd7bceb584cebd8cd6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84ce b584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd 84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd8ccebd9ccebdeffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b7bbd5a6be7525aff5263ff4a5aff525aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff42 5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4252ff4a5aff4a5aff4a63ff425aff4a63 ff395af74a63ff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff5263ff4a5aff525aff525af75a6bf73142ad08105200 00210829399cc6c694cebd8ccebd8cd6bd84ceb58cd6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84cebd84d6bd94dec684ceb58ccebd8cd6bd8ccebd84c6b594cebda5dece7ba594214a3900181000100000312139635a5a84 736b8c847ba5947ba594739c94527b7329524a002921001810001808214a3984ada5a5d6c6a5dece84ceb584ceb584ceb58cd6bd8cd6bd84cebd8cd6bd84cebd 84cebd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd8cceb59ccec69cc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7e7ff6b73ce5a63e7525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425a ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff425aff425aff4a5aff4a5aff4a5aff425aff4252ff4252ff4a5aff4252f74a5aff 4a5af74a63ff425af74a63ff4a5af74a63ff4252f74a5aff4a5aff5263ff4a52f74a5aff4a5aff4252f74a5aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a 5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff5a63 ef3942ad08084a0000210821319ccec68cc6bd8cd6bd8ccebd84d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84cebd8cd6bd84ceb584d6bd84ceb584d6bd84cebd7bceb57bc6ad94dece8ccebd84c6ad9cd6c6addece7bad9c215242001000002110527b6b9cc6b5 9cc6b5a5cebda5cebda5d6c6a5d6c694c6b58cc6b59cd6c68cc6b584b5a56b9c8c42635a00180808312121524284b5a594ceb59cdec684ceb584cebd84cebd84 ceb584ceb58cd6bd8cd6bd84cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84cebd8cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ceb594d6bd94cebde7fffff7fffffffffff7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efffdee7ff5a63ce5a63ef4a5aff5263ff4a5aff4a5aff4a5aff 4a63ff4a5aff4a63ff425aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff52 63ff5263ff4a63f7526bf74a63ef526bef5263ef5263ef5263ef5a6bf7525aef5a63f7525af75263f75263f7525af75263ff4a5af74a5aff525aff525aff525a ff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a63ff4a5aff4a63ff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff5263ff4a52ff 5263ff525af75a6bf73142ad0810520000210829319cc6c694cebd8ccebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd7bceb584ceb58cd6bd8cc6b594cebda5d6c6739c8c002110001000395a5294 bdada5cec694bdada5d6c69cc6b59ccebd8cc6b594cebd84c6b58ccebd94d6c69cd6c69cd6c69ccebda5cebd9cc6b50018100021101842319ccebd8cc6ad8cd6 bd7bc6b58cd6bd84d6bd8cd6bd8ccebd84ceb58cd6bd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd84ceb59ccec6e7fffff7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efffd6deff636bd65a63e75263f74a5aff4252ff4a 5aff4a5aff5263ff425aff425aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff425af74a63ff425aff4a5aff425aff4a5aff4252ff4a52ff4a5a ff525aff525aff4a5af74a5aef5263ef5263e75263e75a63de6373e75a63de5a63e75a63e76363e75a63e7525ae75a63ef5a63ef525aef5a63f7525aef5a63ff 4a52f7525af74a52ff4a5aff4a52ff525aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad08084a0000210821319ccece8cc6b58ccebd8ccebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ce bd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd84d6bd84cebd94d6c68cc6b59cd6c68cb5a51842310010 005273638cb5a5a5cebda5cebda5cebd9cc6b5a5cec6a5cebda5d6c6a5decea5dece8ccebd94d6c68cc6b594cebd9ccebd9cc6bd9cc6b59cbdad103121001808 396352addec68cceb58cd6bd84ceb58ccebd8ccebd8cd6bd84ceb58cd6bd8cceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8ccebd94cebda5cebdeffffffffffff7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff7373ce6363de636bf7525af7525a ff4a5aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a5aff4a52ff 525aff525aff4a52ff525aff4a52ef636bff5a63ef5263de4a5ad62939ad18218c00007300007300007300007b00007300007b00087b1018942931b54a4ace4a 52d66b6bf76363f75a5aef5a5af7525aff4a5af7525aff525aff5263ff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff5263ff4a5aff525aff4a5af75a6bf73142ad0810520000210829399cc6c694cebd8ccebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd 8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb594dece7bc6b58ccebd94cebd94cebd8cbdad 0018080018086384739cc6b5a5cebd9ccebd9cc6b58cb5ad739c8c426b5a31524a395a52294a4221423942635a4a6b63527b7394bdadadd6c6a5c6bdadd6c69c c6b5add6c63963520018080839218cc6b58cceb594d6bd84c6b594d6bd94d6bd8cd6bd84ceb58cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb584d6bd84ceb58cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb584d6bd8ccebd8ccebd9ccebd effffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefefff737bbd636bde525aef 4a5af74a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a63ff425aff4a63ff4a5aff4a 5aff4252ff4a52ff4a52ff525aff5a5aff525aef525ae75a6bef3942bd00007300006b00006b0000630000731010842121942121942929a510188c0000730000 6b00006b00007300087b3139b56363e76363e76363ef525aef525af7525aff5263ff4a5af74a5aff4252f74a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff5a63ef3942ad08084a0000210821319ccec68cc6bd94cebd8ccebd84d6bd84ceb58c d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd7bc6ad94dec67bbdad94 cebdaddece295242001000426b5a94c6b5addece94c6b59ccebd316352001000001000001008001808000800000800001808000000001008001008000800395a 4a9cbdb59cbdb5add6c68cb5a59cc6b50029180021104273639cdec68cc6b59cd6c68cceb584c6ad8cd6bd84ceb584ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84ceb584cebd84 cebd8ccebd94c6bde7ffffeffffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdee7ff73 7bce5a63ef5263ff5263ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff4a5aff4a63 ff4252ff4a5aff4a5aff525aff4a5aff525aff525aef5a63ef5a63e7525ade21219c0000730000731010843131a55a5ad66363de6b6bef6363e7636be7636be7 636bde5263d6525ac64a52bd29319c08107b00087300006b4a4ace6363e75a63f7525af75a63ff525aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff5263ff4a52ff5263ff4a5af75a6bf73142ad0810520000210829319cc6c694cebd8ccebd8cd6 bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd8cd6bd84ce b58ccebd9cd6c6a5d6c66b94840018085284739cc6b5a5d6c68cc6b59ccebd9ccebd315a4a001000001008001808002118083121103129102921102118000800 00080808181000181000180884a59cadd6c6a5cebdadd6c694c6b51042310031187bad949cd6bd9cd6bd8cceb58cceb594d6c684ceb584d6bd84ceb58cd6bd84 d6bd84d6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd84d6bd8cd6c684ceb594d6c694cebda5cec6efffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7ffd6deff636bce5263ef4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff 425aff4a5aff4252ff425aff4252ff4a52ff4a5aff525aff525aef6363ef5a63de4a52c600006b00006b1010846363d68484ef6b6be75a5ade6b6be75a5ade5a 63de5a63de5a63de5a6bde6373de5a6bd65a6bd65a6bce4a5ac608107b00006b00006b3939b5525ae75a63f7525af7525af74a5af75263ff4a5aff4a5aff4a52 ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a0000210821319ccece 8cc6b58ccebd8ccebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd8ccebd94cebd9ccebd84b5a5002110103121a5cebd9cd6c68cceb58cc6b59cd6c69cd6c6214a390021104a6b5a8cb5a584b5ad9ccebda5cec6ad d6c6adc6bd73847b29393100080000080000100821423194bdada5d6c69ccebd8cbdad9cceb50021082952429cc6b59ccebd94ceb58cd6bd84ceb584d6bd84ce b584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd 84ceb584d6bd84ceb58cd6bd84ceb58cd6bd8ccebd94cebd94c6bd9cc6bda5cec6e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7ff6b73c65a6bde5263ff425aff5263ff525aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a63ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a63ff4a5aff4a63ff4a63ff425aff4a5aff5a63ff4a4aef6363f7737bf75252bd00086b00006b0008735263c6636bd65a5ace6b6bde6363 de6b6be76b6be76363de6b6bde5a6bce6373d65a6bce526bc6526bc66373d66373d66b7bde3942ad00006b00006b424ac65a63e75a63f74a52ef4a5af74a63ff 4a63ff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff4a5aff5263ff525af75a6bf73142ad08105200 00211029319cc6c694cebd8ccebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8ccebd94cebd9ccebd4a6b63001808526b63a5cebd94c6b594d6bd94dec694d6c673b5a54a8c7b63a58c84c6ad9cd6c6a5de ce8cc6b59cd6c68cbdadadd6c6b5d6ce94b5ad102921081810000800002118add6c68cbdad94cebd9ccebd9ccebd2952420018087ba59494c6b59cd6c68cd6bd 84cebd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd8ccebd94d6bd8ccebd94cebd94cebd9ccec6a5cebdffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff636bbd6373ef4a5af74a5aff525aff525aff4a5aff4a5aff4252ff4a5aff425aff4a63ff425aff4a5aff425a f74a5aff4a5aff4a5aff4252ff4a5aff425aff4a63ff425aff425aff4a63ff4a5aff4a52ef635af76363e74242bd08107b00006329399c5a63ce6b7bde4252b5 31399c5252b54a4aad4a4aad4a4aad4a52ad4a4aad424aa5394a9c394aa54252a54a5ab53942a54252b55a63ce636bd631319c00006b0000732931b55a63ef63 63ff4a5aef4a63f74a5af74a5aff4a52ff4a52ff4252ff4a5aff425aff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263 ef3942ad00084a000021082131a5cec68cc6b594d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584cebd84cebd8ccebd8ccebd94cebd9cc6bd08211800180884a594a5cebd94cebd84c6b584cebd73c6ad9ce7ce8cd6bd8cd6bd 84c6b59cdece7bbdad94cebd94cebd94cebd94c6b5a5d6c6a5c6bd4a635a0008000008000018107ba594a5d6c694cebd94cebd9ccebd638c7b001000294a39ad d6c68cc6b58ccebd84cebd7bcebd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84cebd8cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd84ceb58cd6bd8cceb58ccebd84cebd8cd6bd8ccebd94c6bdefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefffdee7ff5a63ce5263f74a5aff525aff4a5aff525aff4a5aff5263ff4a5aff4a5aff425aff 4a63ff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a63ff4252ff4a5aff4a52f75a5af77373ff5252d600007300006b29319c636bde63 6bde5a63c618217b00085200004200004200003900084200004200004a00004200004a00004a08005200005200005a1818845a63d65a5ad6847bf74242b50000 730000735a5ade6363ef5a6bf74a5aef4a5af7525aff525aff4a52ff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff 5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd94cebd8cc6b58cb5a50010000018089cc6b5addece8ccebd94dec68cd6bd8cd6bd7b c6b57bc6b594d6c69cdec67bbdad9cdec68ccebd94d6c684bdadadded69ccebdadcec65a736b000800001000001008739c8ca5dece94cebd94cebd94c6b58cb5 a50010000021109cc6b59cd6bd8cceb584d6bd84d6bd84d6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd8ccebd8cd6bd8ccebd8cd6bd84cebd8cd6c694cebdeffffff7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffdee7ff6b7bce5263e75263ff4a5aff5263ff4a5aff4a5aff4a5aff42 5aff4a5aff4a5aff425aff425aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a52ff525aff6363f75a52de3129ad0000730000 735a63d65a5ade6b73ef636bd600106b00004a00003900002100002900002900002900003100004200003900004a00004a0000520000630000736363e76363ef 5252d67b7bf721299c00006b3139ad4a52ce5a6bef5263f74a5af74a5aff4a52ff4a52ff4252ff4a5aff425aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd84cebd84ceb58ccebd94cebda5d6c6739c8c0018101839299cc6b594ceb58ccebd84ce b57bc6ad8cd6bd9ce7ce73bdad94d6c68ccebd9cd6c68ccebd84c6b594cebd9cd6c694bdb594bdb5adcec639524a0010080010080008008cada59ccebd94cebd 94cebda5d6c69cc6b5001000001808739c8c9ccebd8ccebd84ceb584d6bd7bceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ce bd94cec6a5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b7bb56373de5263ef5263ff4a5aff5263 ff4a5aff4a5aff425aff4a63ff425aff4a63ff425aff4a63ff425aff4a5aff4a52ff525aff4a5aff4a63ff4a5aff5263ff4a5aff525aff6363ff6363ef6363e7 00007b0000734242c6636bef5252e7636bf75a63de29319400005200003900082900001000082129315a18185210105a21217310106b18107310107b08108418 21a54a5ae75a63ff525aef636bf75a63d61018840000633139a56373ef525aef525aff525aff4a52ff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff425aff5263ff4a5aff5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cceb59ccebd63847b0010004a73639ccebd 8cceb584cebd8cd6c67bceb58cd6c684ceb58cd6bd94d6bd8ccebd8cc6b5a5d6ce8cbdb5add6c69cc6bda5c6bd94b5ad6b847b0008000008000008002139319c c6b594c6bd8ccebd94cebd8cc6b59cc6b51839290010088cb5a5addec68cceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd84ceb58cd6bd84cebd 84d6bd84cebd8ccec694cebda5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6b73bd636bd6 5263e75263ff4a5af7525aff4a5aff4a5aff4252ff425aff425aff4a63ff425aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a52f752 5af76363ef3129ad0000732931ad5a63e75a63ef5a63f7525af75a63ef6b73e74242a500004a00002108103100002163638c7b84bd737bc6636bc66b73de6b6b d6636bde5a63e75a63f75263ff5a63ff4252ef5a63f75a63e73939a500006300006b4a52ce525aef4a52f75a63ff4252f74a5aff4a5aff4a5aff425aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff525aff5263ff5263ef3942ad00084a000021082131a5cec68cc6b594d6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd8ccebd9cd6bda5cebd52736300 21104a7b6ba5d6c68ccebd84cebd7bc6b58cd6c684ceb58cd6bd84ceb58ccebd84c6b59ccebd295a4a2142392142312942390821100010080008080008000008 000008008ca59ca5d6c684bdad9cdece8cd6c684c6b5a5d6c61839290010007ba59494bdad94cebd8cd6bd7bceb57bceb584d6bd84cebd84d6bd84ceb584d6bd 84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84cebd8ccebd8ccebd94cebde7fffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 ffffeff7ffd6deff6373de5263e75263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff525aff4a5aff4a5aff4a5aff5263ff4a5aff5263 ff4252ff4a5af75a63f7636be700007b00007b5a63e76b73ff4a52e75a63ff4252ef525aef636bf75a63d631319400004a000029080831000029313173848cde 5a63c65a63d66b73e74a5ade636bf74a5aef5263ff4a52f74252f7525af7636bef6363d600005a000063424ac65a63ef5263ff4a5aff525aff4a5aff5263ff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd94ce bd9ccebd5273630010085a847394ceb58cd6bd84d6bd8cd6bd84ceb58cd6bd84cebd8cd6c684c6b594cebd94cebd184231000800001808000800001008000000 0008080000000008004a5a52a5c6b59ccebd8ccebd8cd6c67bceb594d6c69ccebd214a390018087b9c8c94c6b594cebd94dec67bceb584d6bd84d6bd84d6bd84 d6bd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd84ceb58cd6bd84cebd84d6bd84cebd8cd6c68ccebd94cec694c6bdf7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7ffffe7f7ffced6ff5a6bde525aef5263ff4a5aff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff4a52ff4a5aff4a52ff4a5aff 4a5aff4a5aff4a5aff525aff4a5af75263ef3942b500006b0810845a6be74a5ae75263ff4a52f7525aff5263f7525aef636bef5a63d631318c10105a00003900 003900004229317b636bce6373de5263de5a6bef4a5ae75263f74a52f7525aff4a5aff4a52f7525ae7636be71821840000632931ad5a63f7525af7525aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec6 8cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd84cebd8cd6bd 84ceb58ccebd94c6b5a5cebd527b6b0018084a736394cebd7bbdad84ceb58ccebd8ccebd8ccebd8cd6bd84ceb58ccebd8cc6b594c6b500292100211800181000 10080008000010080000000810101821218c9c94adcebdaddece8ccebd8cd6c66bb5a594dec69cc6b51842310010008cb5a594bdad94ceb58cd6bd84ceb57bce b584d6bd84cebd84d6bd7bceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd8ccebd94cebd9cc6bda5cebdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffe7efff636bce636bf7525aff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a 5aff525aff4a5aff525aff4a5aff5263ff525aff5263ff5263e71821940000633942ad5a63de5a63ef525af75a63ff4a5af75263ff5263f75a6bff5263e7636b de5a5abd08005208004a0000420000422931845a63c6636bde5a63e75a63ef5263f75263ff4a52ff5263ff525aff525aef636bef4a4abd00006b2129a55263ef 4a5aef4a5af75a6bff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff5263ff525af75a6bf73142ad08105200 00211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd84d6bd84 cebd8cd6bd84cebd8cd6bd8ccebd94d6bd9ccebd739484001000295242a5dec68cceb594d6bd94d6bd8ccebd8cd6bd84ceb58cd6bd8cd6bd94d6bd8cc6b584b5 ad6b9c8c739c94739484637b732139310010080008000008000008008cada594c6b584c6b584cebd8cd6c68ccebd9ccebd0021100018088cb5a5a5cebd94ceb5 8cd6bd8cd6bd84d6bd84d6bd84d6bd84ceb584d6bd84d6bd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb584d6bd84cebd94cebd9cc6bdadcec6efffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7fffffffffffffffffffffffffffff7f7ffe7e7ff737bce5a63e7525aff525aff5263ff4252ff425aff4252ff4a5aff4252 ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff525aff4a5aff4a5af74a5aef636bef00087300005a424ab55a63de5a6bf7525af74a52f74a5aff4a63ff425af7 425af75263ef5263e76b73e74242a500005200004a00004a0000421821736363c66363de525ae75a6bff4252ef425aff4252f7525aff525af7636bef6363de00 007300088c525aef525af75263ff4a5af74a5aff4252ff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263 ef3942ad00084a000021082131a5cec68cc6b594d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58ccebd94d6bd8cbdad739c8c001808083121a5d6bd94ceb58cceb594cebd8cc6b58cceb58cd6bd84ceb58cd6bd 84c6b594cebd94cebd8cc6b59ccebdb5decebdded69cb5ad5a6b630010080010080008004a6b63add6ce8ccebd94d6c684c6b594cebd94bdad0010000010008c ad9c9ccebd94cebd84ceb57bceb57bceb584d6bd84ceb584d6bd7bceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584ceb584cebd8ccebd94c6b5efffffe7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdedeff636bef525aff525aff4252ff4a5aff425aff 4a5aff425aff4a5aff425aff4a5aff4a5aff525aff4a5aff5263ff4a5aff5263ff4a5af75a63f7636be700006300005a4a52bd6363e75a5af75252ff5a5aff52 5aff5263ff425aff5263ff5263ff5a63f7525ae7737bf721299c00086300004200084a00004218186b636bce5a6be75263ef5263ff4a5aff5263ff525aff525a f7525ae76363e700007b0000845a63f75a6bff5263f75263ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff4a52ff 5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd94d6bd94c6b58cb5a500181000211084ad9ca5d6c694c6b59cd6bd94ceb59cdec68c ceb584cebd8ccebd94cebd94cebd94c6bda5d6c6add6ce94bdb5a5c6b5b5d6c6adc6bd102118001008082118083121a5cebda5d6c68cc6b594cebda5d6c6739c 8c0010001842318cb5a59ccebd94cebd8cd6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6c684ceb58cd6bd84cebd8cd6c68cc6b5efffffefffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffdee7ff5a63de525aff4a5aff4a 5aff425aff4a5aff425aff425aff425aff4a5aff4252ff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff5a63ef525ad600005a00005a4242b56363ef5252 f7525aff5252ff5252ff4252ff5263ff4a5aff4a52ff4a52ff525af74a52e7737bff5a6bd60010630000390000390000390810636373de4a63de4a5aef4252ef 525aff5a63ff525af75a63f75a5ade10108c0000845a63ef4a5aef4a5af74a5aff5263ff4a5aff4a5aff4a5aff525aff4a52ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff525aff525af75a63ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84cebd84cebd8cd6bd8cceb59cd6bd9ccebd1039290010006b9484a5d6c694ceb594c6 b59cd6bd84c6b58ccebd8ccebd94cebd8cc6b594cebd94cebd94bdb594bdadb5d6cea5c6b5adc6bdb5c6bd1021180008000010081839299ccebd94cebd94cebd 94c6b59ccebd4a7b6b002108426b5aa5d6c68cc6b58cceb57bc6ad84d6bd7bceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84c6b594cebde7fff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff6b73bd5a63 e7525aff525aff4a5aff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff5263ff5263f75a63f7525ad600006300005a 4a4abd5a5ae75a5aff4a52ff525aff525aff4a52ff4252ff525aff5252ff5a5aff5a63ff4a5af75263ef6373ef4a5ab510186300003900003900004200086352 63d6526bf74a5aef5263ff525af75263ff5263ef5a5ade1008840000845a63ef5a6bff5263ff4a5aff525aff4a5aff4a5aff525aff525aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff5263ff4a5aff5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd9cdece94d6bd94c6b573a594001808315242 addece94c6b594ceb594cebd9cdec68cceb59cd6c6316b5a5a8473739c8c9cc6b5a5c6b5a5c6bda5bdb5adc6bd8c9c9442524a0008000010080010084a6b5aad d6c694c6b59ccec6addece9ccebd103929002910a5cebd9ccebd9cd6bd8ccebd84ceb584d6bd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd8ccebd94d6c694cebd f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff dee7ff6b73ce5a63ef525aff4a52ff4a5aff425aff425aff425aff425aff425aff4a5aff425aff4a5aff4a52ff525aff4a5aff4a5aff425af74a63f74a5ae76b 6bef00006300005a4a52c6525ae75a63ff4a52ff4252ff525aff4252f74a5aff525aff5a5aff4a52f74a52ff4a5aff4252ef4a5ae75a6bde5a63b51010520000 3100003100004a2939a55a6bef4a5aef5a63ff5a63f7525af75a63ef5a5ad60800730000735a63e75a63f74a5af74252f74a5aff4a5aff4a5aff4a5aff525aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263ef3942ad00084a000021082131a5cec68cc6b594d6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84cebd84cebd84ceb584cebd7bbdad9cdec6a5dec694 c6b5396352002110739c8cb5dece94cebd9cd6bd84c6ad9cd6c694cebd0839290010000018080008000010080821181829210010080008000008000018080008 000008007ba5948cb5ada5d6c694cebd94c6b55a847300180863948494c6b5a5d6c694ceb584ceb584d6bd84d6bd7bceb584d6bd8ccebd8cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb584d6bd7bceb58cd6bd84cebd8c cebd8ccebddefffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7ffffe7f7ffd6deff5a63d65a63f7525aff5263ff4a5aff4a63ff425aff425aff425aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63 ff425af7525aef6b73f718218400005a3942b54a63de526bff4a63ff4a63ff425aff425af74252f7525af75252f7525aff5263ff4a63ff425af75a73ff525ade 737be739398408004200003100084a10187b5a6bef425ae75263ff5263f7525af75a63ef5a5ace00006b18188c5a5ade5a6bff4a52ff4a52ff4252ff4a5aff4a 5aff525aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff4a52ff5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd7bc6 ad8ccebd94d6bda5d6c68cbdad0021102952429cc6b594cebd9cd6c694d6bd94cebd94c6b5184231001008001000082110001000001008000800001008000800 0008000008000010004a6b5aadd6ce94c6b5ade7d68cbdad8cbdad002110002918a5d6bd9ccebda5d6c68ccebd84ceb58cdec67bceb584d6bd84cebd8cd6bd8c cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6 bd84cebd8cd6bd94cebd94cebddefffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffe7efffd6e7ff6373d65a63e75263ff525aff4252ff4a5aff425aff425aff425aff4a63ff425aff4a5aff4252ff4a5aff4a52ff4a5aff 4a5aff4a5aff425aff4a63ff4a5aef5a63ef29319c00006b102194526be74263ef4263f7395aef4263f74a63f75a6bff525aef5a63f74a5aef4252e74252ef5a 6bff3952e75263e7636bd67373c600003100003100004200086b6373ef4a5aef4a5af75263f7525ae7636be729319c00006329299c636be75a5af7525aff4a52 ff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75a63ef3942ad00084a000021082131a5cec6 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd94dec68cd6bd8cc6b594cebd94c6b54a7363001000315a4a8cbdad94cebd8cc6b594c6b5a5d6c6638c7b314a4229423900180800180800180800 10000010000018101831294a6b5a8ca59c9cbdad9cc6b594c6b594cebd84bdad0029180018085a8c7b9ccebd94ceb59cd6bd84c6ad8cd6bd7bceb584d6bd84ce b58cd6bd84ceb58ccebd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd 84ceb584d6bd84d6bd84cebd8ccebd8ccebd94cebd9ccebdf7fffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7efff6b73ce636bde5a63ef5263f74a63ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a 52ff525aff4a5aff4a5aff425aff4a63ff425aff5263ff525ae7525ace00006b0008736b73ef5a6bef4a63ef526bff425aef526bf73952de4a52de5a6bef637b f7526bef526bef4a5ae74a5ade6373e77b7bde6b73b500083900003100004a00086b737bf74a5aef5263f7525aef636bf76363de00006300005a3942b5636bef 5a63ff4a52ff5263ff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff5263ff525af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 ceb58cd6c684ceb58cd6bd84ceb58cdec67bc6ad8ccebd94cebd9cd6c684b5a5083929001000426b5a94bdb5addece9ccebdadd6c69ccebdadd6ce94bdb5add6 c69cc6b584ad9c84ad9c94bdad94c6b59ccebd9cc6bdadd6c6b5d6c694bdada5d6c69ccebd104231002110104231a5dec684bdad9cd6c694d6bd84ceb58cdec6 84d6bd7bceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84cebd8cd6bd94d6c694c6bdf7fffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffeff7ff737bbd636bde525aef4a5af74a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425a ff4a5aff4a52ff525aff4a52ff4a5aff425aff4a63ff425aff425aff4a5af75263ef6b6bef182194000073525ad6636bef5263ef5263ef5263f74252de1829a5 0000733142ad5263ce5a73de5a6bde5a6bde6b73e7636bce6b6bbd29316b00003100003100004a1821845a63e75263ef4a5aef525aef6b6bef5252ce00005a00 0063424abd525aef5252f7525aff4a5aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263 ef3942ad00084a000021082131a5cec68cc6bd94d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584cebd84cebd84d6bd7bd6bd84d6bd7bceb58ccebd8cc6b594cebd6b9c8c0831290021105a7b73a5cebda5cebd8cbdad94c6b5 94c6b59ccebd8cbdad9cc6b5a5d6c69cd6c69cd6bd9cd6c69ccebd9ccebda5cebd8cada5b5dece94bdad42635a0018080031219ccebd94cebd9cd6c684bdad84 ceb594dec684cebd84cebd7bceb584ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ce b584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd84cebd7bc6b594cebde7fffff7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efff636bc65a63ef5263ff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff 4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff4a63ff425aff525af75a63f76b6bf7424ac600007b10188c5252d65a5ae75252e75a 63ef7b7bff2931a500006300005210106321217b393994424aa55252ad31318418216300003900003900004200005a4a4ab55a5ae75a63f75a63f7525aef6b6b ef21219400006318218c5a63de5a63f7525aff525aff4a5aff425af74a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff4a52ff 5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84d6bd84d6bd73ceb584d6bd84d6bd94d6c684c6b5addece6b9c8c18423100181010392973 9c8cadd6c6a5cebda5cec6a5cebd9ccebd9ccebd9cd6bd8cc6b594ceb594ceb594c6b594c6b59cc6b59cc6b56b8c7b002918001808395a4aa5cebd9ccebd94c6 b59cdec694d6bd84ceb58cd6bd84cebd84d6bd7bceb584d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd84d6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6c68ccebd9cc6bdeffffff7ffffefffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffd6d6ff6b73de5263f74a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff425aff425aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4263ff425af7526bff4252ef525aef5a5aef6363ef10108c00007b2929 ad6b6bf76363ef5a52e76b63e729299400005200004200004200004a00004a00005200005200004a00004200003900004200004a29218c6b63de5a5ade636bf7 525aef5a63f74a52d600007b00006b4a52c6636bef5a63f7525af74a52ff4a5af74a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff525aff525af75a63ef3942ad00084a000021082131a5cece8cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd7bd6bd73ceb57bd6bd84d6bd7bc6ad94d6c68cc6b5a5d6c6a5d6 c629524200180800100000211063847b94bdb5a5cebda5d6c6a5d6c694c6b5a5d6c69ccebd9cd6c69ccebd94c6b5396352002110001000001808638c7b9cc6b5 9cceb59ccebd9cd6bd84c6ad94d6c684ceb584ceb58cd6bd7bc6ad84d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8ccebd9ccebda5cec6a5c6 bdf7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff7373c65a63de5263f74a5aff425aff4a5aff4a63 ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff5263ff4a5aff4a63ff425aff4a63ff425af7525aff525aff5a5af76363ef 3942bd00007300007b5252d65a52de6b63ef7b73f74239ad08086300004a00005200005200005200004a00005200005200004a00004a0008632931946b6bde6b 6be76363e75252de636bf75a63e718219c00007b3942bd525ade636bff525aff525aff5263ff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff5263ff4a5aff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd84cebd84d6bd84d6bd7bd6bd84d6bd7bceb58cd6bd8ccebd 94cebd8cc6b59cd6c69ccebd63948410392900180800100018393152736b73948c94b5a59cbdb584ad9c84b5a56b9c8c396b5a002118001810001808214a3984 ad9caddece9ccebd8cceb594cebd94d6c68cceb58cd6bd8cd6bd84cebd8cd6bd7bceb58cd6c68cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84ceb58cd6bd8cd6bd 94d6bd8cc6b59ccec6a5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6373c65a6be74a5af74a63ff 4252ff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a52ff525aff4a5aff4a5aff425aff4a63ff425af74a5aff4a5aff52 5aff5252f76363f74a52d610189400007300007b6b6bef7373f75a52d6635ad66b6bce6363bd31318c21217b21218c10187b0000630008631829843142a54a52 bd6b73de636bde5252d67373ef737bf74a52ce08108c00007b00007b4a52d65a63ef525af7525aff4a52ff4a63ff425aff4a5aff425aff4a5aff4252ff4a5aff 4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263ef3942ad00084a000021082131a5cec68cc6bd94d6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd7bceb584d6bd7bceb58c dec684ceb58cd6bd84c6b594d6c68cc6b594cebd94cebd94c6b5739c8c396b5a0839290018080010000010000021100021100010000018080029181039314a7b 6b73a5948cbdad94c6b58cceb58cceb584c6b58ccebd84ceb594d6c68ccebd84cebd84ceb584cebd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd8cd6bd8c d6bd84ceb58cd6bd84ceb594d6c694cebd9ccebde7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefffd6e7ff63 73de525af74a5aff4a63ff4252ff4a63ff4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff5263 ff4a5aff4a5aff4a52ff4a52f75a5af76b73ff4a52ce1821940000730000734a4abd7b7bf76b6bde6363de6363d6737bef6b73e75a63de6b6be76b73e7636bde 5a73de5263d65263d65263d66b73e7525ace5a63d65a63d618219400007b000084525ade636bf75a63f7525aff4a52ff4a5aff4a63ff4a63ff425aff4a5aff4a 5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff4a52ff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd84d6 bd84d6bd8cd6bd84ceb58cd6bd84ceb58cd6bd8ccebd8ccebd8ccebd9cd6c68cc6b58cc6b59cd6bda5d6c69ccebd94bdad6b94845a84736394847ba59484b5a5 94c6b5a5d6c68cc6b59cd6bda5dece94cebd8cceb58cceb58cd6bd8cd6c68cd6c684ceb584ceb58cd6bd8cd6bd84d6bd8cd6bd84ceb58cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd84ceb58cd6bd84ceb594dec684ceb584d6bd84cebd84cebd94cebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7ffffd6e7ff6b73ce5a63ef525aff4a5aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 425aff4a5aff4a5aff4a5aff4a52ff4a52ff5263ff4a52f75a63ff6b73ff525ad62931a500006b00006b2121946b6bde6363de636be7525ad6525ade5a63e75a 63e75a63de5a63de5263de6373ef5263de5263de5a6bde636bde3139a500087300007308188c3942c6636bf7525aef5a5aff4a52ff4a5aff394af74a5aff425a ff425aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75a63ef3942ad00084a000021082131a5cece 8cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84d6bd84cebd 84cebd84cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6c68cd6bd84cebd84c6b58ccebd8cd6bd9cdec684c6b594cebd8cc6b58cc6b59cd6c69ccebd94c6b594 cebd94cebd94cebd94cebd8cc6b5a5dece8cceb57bb5a594d6bd94d6bd8ccebd84c6b58cd6bd7bceb58cd6bd84cebd8cd6bd84cebd84ceb584cebd84cebd84ce b58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd 84ceb584d6bd84cebd84d6bd84ceb58cd6bd7bc6ad84d6bd7bd6bd7bd6bd84cebd94cebdadc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7ffffeff7ff737bb56b6bd65a63e7526bff4a5af75263ff4a5aff525aff525aff5263ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a 5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a52ff525aff5a63f7636bef5a5ad64a4abd00006b00006b00006b3131a55252ce737b f7636be76363e76363ef6b6bef636be75a6be75a63de6373ef5a6bde3942b500007300007300006b2131a56373ef6b73f74a52de5a63ff4a52ff4a52ff4252ff 4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff5263ff525af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84ceb58cd6bd84ceb58cd6bd84ceb594e7ce84ceb584cebd8ccebd8ccebd94d6bd9cdece8cc6b58cce b594d6c6a5dece94cebd8cceb58ccebd94cebd94cebd94d6bd94cebd94d6c694d6bd94d6c68ccebd8cd6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd8cd6bd 8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd7bceb57bd6bd8cd6c694cebdadcebdf7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7ffeff7ff737bbd6b73d6525ae75263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff425a ff4a5aff4a52ff525aff4a5aff4a5aff425aff4a5aff4252ff4a5aff4252ff4252ff4252ff4a5aff4a52f74a52f75a63ef636bef5a63d65a5ace10188400006b 0000730008842129a5424ac66363e76363de525ad66363e7636be74a5ace1829a500007b00006b0000730000732931a55a63de636bef4252de636bff525aff4a 5aff4a52ff4a5aff4252ff425aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263 ef3942ad00084a000021082131a5cec68cc6bd94d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd8cceb58ccebd8ccebd8ccebd84ceb584cebd84ceb584d6bd84ceb584ceb584ceb58cd6bd8ccebd8cd6bd 8ccebd84c6b58ccebd7bc6ad73bdad8ccebd94d6c694d6c684ceb584cebd7bbdad8ccebd8cd6bd8ccebd84c6b584cebd84cebd84d6bd84ceb584d6bd84ceb58c d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584ceb584cebd8cd6bd84d6bd84ceb584d6bd84ceb57bc6b59ccebdefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffffeff7ffdee7ff6373de525aef5263ff4a5aff525aff4a5aff4a5aff425aff 4a5aff425aff4a5aff4a5aff525aff525aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4252ff4a5aff5263ff525aff525af7525aef5a6bef5a 6be75263de394ac62131ad00007300007b00007b00007300007300007b00007300007300007300007b00007308108c3139b56b6bef636bef5a63ef5a63f74a52 ef5a63ff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff4a52ff 5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84d6bd8cd6bd84cebd84d6bd84d6bd84cebd84cebd8cd6bd84 cebd94d6c68ccebd8ccebd8ccebd94dec68cd6bd94d6c694d6c68cd6c67bc6b584cebd84cebd8cd6c684cebd8cd6bd84d6bd84d6bd84cebd84d6bd84cebd84d6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd84d6bd84cebd84d6bd84cebd8cd6bd8cd6bd8cd6bd8cd6bd8cd6bd8ccebd94d6bd9ccebdefffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efffc6d6ff5a6be75263f74a5aff4a5aff4a 5aff4a5aff4a5aff4252ff425aff425aff4a5aff4a52ff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252ff425aff4252ff4a5aff4a52 f75263ff525af74a5ae7525aef5a6bf74a5ae75263e74a52d63139b510189410109400088408108c1018942931ad4a4ace636bef636bef636bef5252e75a5aef 5252ef5a63ff525aff4a52f74a52ff4a5aff4252ff425aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cece8cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd7bceb584d6bd84ce b58cd6c684ceb584cebd8ccebd8ccebd84c6b594d6c684ceb58cd6c684cebd84cebd84ceb58cd6bd8ccebd84cebd7bceb584d6bd84cebd84cebd7bceb584d6bd 7bcebd84d6bd7bceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84d6bd84ceb58cd6bd8cd6bd84c6ad9ccec694ce bda5cec6efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7efff636bce5a6b f74a5aff5263ff4a5aff525aff425aff4a5aff425aff4a5aff4a5aff525aff4a52ff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff 4a5aff425aff4a5aff4a5aff5263ff5263ff5263ff4a63ff4a5af7526bf75a6bf75a63ef5a6bef5263e75a6bef525ae75a63ef5a63e76363ef5a63ef5a63f752 5aef5a63ff525af75a5aff525aff525aff4a52ff5263ff425aff4a5aff425aff4a5aff4a5aff525aff525aff525aff525aff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff5263ff4a5aff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd84d6bd84d6bd84d6bd84d6bd 84d6bd84cebd8cd6bd8cd6bd8cd6bd84ceb58cd6bd84cebd84cebd8cd6bd84cebd84cebd84ceb584ceb58cd6c68cd6bd8cd6c67bceb584cebd84cebd84d6bd84 cebd84d6bd84cebd84d6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd8ccebd 9cd6c6a5c6bda5cebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff eff7ff6373bd5263e74a5aff4a5aff4a5aff4a52ff4a5aff425aff425aff4252ff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff425aff4a5aff4a5aff4a63ff425aff4a5aff4252ff4a5aff4a5aff4a5af74a5af74a5af74a5aef5263f74a5aef4a63ef5263f75263f7525aef5263ef5a63 f75a63f74a5aef5a63ff4a52f7525aff4a52f7525aff4a52ff4a5aff4a5aff4a5aff425aff4a63ff425aff4a5aff4a52ff525aff4a5aff525aff4a52ff4a5aff 425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263ef3942ad00084a000021082131a5cec68cc6bd94d6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584 d6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84d6bd8cd6c684ceb584ceb584ceb58cd6c684d6 bd84d6bd7bceb584d6bd84cebd84d6bd7bceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd 84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd7bceb584d6bd84ceb584cebd84cebd8c d6c684cebd8ccebd9cc6bdefffffeffffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7ffffdee7ff5a6be74a5aff5263ff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5a ff425aff4a63ff4a5aff4a63ff4a5aff4a5aff4252ff5263ff525aff4a52ff4a5aff525aff525aff5a63ff5263ff5a63ff4a5aff5263ff5263ff4a5af74a5aff 5a63ff525af75263f75263f75263ff4a5aff4a63ff4252ff4a5aff525aff525aff4a5aff4a5aff4a5aff4a63ff425aff4a63ff4a5aff525aff4a52ff525aff52 5aff525aff4a52ff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff4a52ff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd84d6bd84cebd8cd6bd84ceb584cebd84cebd8cd6bd8cd6bd 8cd6c68cd6bd84ceb584cebd8cd6c684cebd84cebd84cebd8cd6c684d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd84d6bd84d6bd8cd6 bd84cebd84cebd84cebd8ccebd94cebdeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffeff7ffdee7ff5a6be75263ff4a5aff4a5aff4a5aff4a5aff4252ff425aff4252ff4a5aff4a52ff4a5aff4a52ff525aff 4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff525aff525aff525aff4a52f75a63ff5252f75252f74a52ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff5263ff4a5aff4a63ff425aff4a5aff3952ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4252ff4a5aff4a52 ff4a5aff4a52ff525aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cece 8cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84cebd84d6bd84cebd84cebd84cebd8cd6bd84ceb58cd6bd84ceb58cd6bd84cebd84d6bd84ceb584d6bd7bceb584cebd84cebd84d6bd84cebd8c d6bd84cebd8cd6bd84c6b584ceb58cd6bd84d6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84cebd8cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584cebd84ce b584d6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84cebd84d6bd 84ceb584d6bd84ceb58cd6bd84cebd8ccebd84cebd94cebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b73bd5a6bef525aff5263ff4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff525aff525aff525aff525aff525aff525aff525aff525aff525aff525aff525aff5263 ff4a5aff525aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff5263ff4a5aff4a5aff425aff4a5aff4a5aff 4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff525aff525af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84ceb594d6c694c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffdee7ff6b73ce5263ef525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4a52ff4a5aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff 5252ff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a63ff4a5aff4a5aff4a5aff525aff5263 ef3142ad00084a0000210821319cc6c694c6bd8cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb594d6bd8ccebddefffff7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f7ffd6e7ff5a6bd65a63f7525aff5263ff4a5aff4a5aff425aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a 5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff5263ff4a5aff 525aff525af75a6bf73142ad0810520000210829319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd8cd6bd84ceb594d6c6defffff7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdeefffd6e7ff636bce5263e7525af7525aff4252ff4a 5aff4a5aff4a63ff425aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff 425aff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525aff5263ef3942ad00084a000021082131a5cec68cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58c d6bd84ceb58cd6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8ccebd8ccebd9ccebdefffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7efff737bc65a6bd6636bf7525aff525a ff4a5aff5263ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff 4a5aff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff425aff5263ff4a5aff525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd8ccebd9ccebd efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffe7efff7384bd6373d6525ae7 525aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a 5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff5263ef3942ad00084a0000210821319cc6c68cc6bd8cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84cebd84ceb584cebd84 cebd8ccebd94ceb5effffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdee7ff6b 7bce5a63e7525af75a63ff525aff525aff4a5aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a5aff525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd84d6bd8cd6c684ceb58cd6c68ccebda5cebdefffffe7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffeff7ffd6e7ff5a6bce5263ef5263ff4a52ff525aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 4252ff4a5aff4a52ff525aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff5263ef3942b500084a000021082131a5cec6 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd7bceb584d6bd84cebd8ccebd94cebd9cc6bda5cebde7fff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffeff7ff6b73bd5a6bde5263ff4a5aff5263ff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff525aff4a5aff4a5aff4a5aff525aff525aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff5263ff4a5aff5263ff525af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd94cebd94cebd9ccec69ccebdf7fffff7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7ffff636bb56b73e7525af74a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff425aff425aff4a5aff4a5a ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff 4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff425aff4a5aff4a5aff525aff525aff5263 ef3942ad00084a0000210821319cc6c68cc6bd8cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd7bceb584d6bd84cebd94d6bd8ccebd94c6bdefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefffdee7ff5a6bc65a63f74a5aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff5263ff4a52ff 5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd84d6bd84cebd8cd6bd8ccebd8cd6c694c6bdeffffff7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdee7ff737bc65a63e75a63ff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff425aff425aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425a ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff425aff42 5aff4a5aff4a5aff4a5aff525af75263ef3942b500084a000021082131a5cec68cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ce bd94cec6a5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff737bb57373e75a5af7525aff4a5aff4a63 ff4a5aff4a63ff425aff4a63ff425aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff 4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a63ff425aff5263ff4a5aff525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd 84d6bd84cebd8cd6c694cebdadc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7ff736bc66b6bde 5263ef5263ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a 5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff525af75263ef3142ad00084a0000210821319cc6c68cc6bd8cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58c d6bd84ceb58cd6bd84cebd84cebd8ccebd94cebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 f7ffefefffd6e7ff637bd64a63de5263ff4a5aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a52ff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd8ccebd8cd6c694c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffe7f7ffcedeff5a6bd65263ef5263ff425aff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52 ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff425aff4a5aff4a5aff4a5aff525af75263ef3942ad00084a000021082131a5cec6 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb58ccebd8ccebd8cd6bd8cceb58ccebd8cc6bd9ccebdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6b73c66b73ef4a5aef5263ff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff42 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4252ff5263ff4a52ff5263ff525af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb584d6bd84 d6bd8cd6bd84cebd84d6bd84cebd94d6c68cceb58cd6bd8cd6bd8ccebd8ccebd9cd6c694c6b5a5cec6efffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefff737bc65a63d6636bff4252ef4a63ff4a5aff4a5aff525aff4a5aff4a5a f74a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263 ef3942ad00084a000021082131a5cec68cc6b594d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd8cceb58cceb58ccebd8ccebd8ccebd8ccebd9cc6bde7ffffefffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdee7ff636bde525aef5263ff4a5aff425aff4252ff 5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff5263ff4a52ff 5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd8cd6bd84c6b58ccebd94cebde7fffff7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffd6deffbdc6ff5263f74252f74a 63ff4252ff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff42 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84cebd84ceb584cebd8cd6bd8ccebd9ccebdefffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffeff7ff6b7bc6636b e7525af75263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263 ff4a5aff4a5aff4252ff5263ff4a52ff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd8ccebd94cebda5cec6 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff dee7ff636bce5263e75263ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff525af75263ef3942ad00084a000021082131a5cec68cc6b594d6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84cebd8cd6bd84ceb58c d6bd94c6bdeffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7ffffe7efffd6deff636bde5a63f74a5af75263ff4252ff5263ff4252ff4a5aff4a63ff4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff5263ff4a52ff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6 bd84ceb584d6bd8ccebddeffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fffff7ffffe7efffd6e7ff636bd66363ef525af75263ff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec6 8cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd84cebd8cd6bd84ceb58ccebdd6fff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7ffffe7efff737bc66b6bde6363ef525af75263ff4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a 5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a63ff4252ff5263ff4a52ff5263ff525af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8c d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84ceb5a5d6c6e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7ffe7efff737bbd6363d65a5aef525aff525aff4a52ff4a5aff4a5aff4a5aff4252ff425aff425aff425aff425a ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff5263f75a63 ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584ceb584d6bd8cd6bd94cebda5cebdf7fffffffffffffffff7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6373c65a63e75a63ff5263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff 425aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff5263ff4a52ff 5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd94cebd9ccebdf7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffd6d6ff6b73de5a63ef4a5aff4a5aff425aff425aff4a5aff4a52ff4a 5aff425aff425aff395aff425aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec68cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84d6bd84ceb584ceb59ccebde7fffff7fffff7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff7373c66363de5263f74a5aff425aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff425aff425aff395aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4252ff5263ff4a52ff5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6b584d6bd8cd6bd8cd6c68ccebd a5cebdefffffefffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff736bbd636be7525af74a63ff 4252ff4a5aff425aff4a5aff4a52ff525aff425aff425aff395aff425aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff5263f75263ef3942ad000852000021082131a5cec68cc6bd8cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6b584cebd8c d6bd84ceb58ccebd94cebd9ccebd9cc6bdeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffdee7ff63 73d6525aef4a5aff4a63ff425aff4a5aff425aff525aff4a5aff4a5aff425aff4263ff395aff4a5aff425aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff5263ff4a52ff5263ff525af75a6bf73142ad0810520000210829319cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84d6bd84d6bd84cebd8cd6bd84d6bd8cde bd84ceb58cd6bd8cd6bd8ccebd8cd6bd8ccebd8cc6bd9cd6c69cc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffdee7ff6b73c65a63ef4a5aff4a5aff4a5aff425aff4a5aff4a52ff4a5aff425aff4a5aff395aff425aff425aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cece 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb584d6bd84ceb584d6bd 84ceb584d6bd7bceb584d6bd84ceb58cd6bd8ccebd8cd6bd84ceb58ccebd8ccebd9ccec6efffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7ff6b73b5636bde5a63f75a5aff525aff525aff4a5aff4a5aff4a5aff4a63ff425aff4263ff425aff4a63ff425aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff5263ff4a5aff5263ff525af75a6bf73942ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84ceb58cd6bd8cd6bd84ceb594d6c684cebd8cd6bd94cebde7fffff7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffeff7ffe7f7ff6b73c6636bde5a5ae75a63ff525aff4a5aff4a5aff4a5aff425aff425aff425aff4a63ff425a ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff525aff5a63 ef3942ad00084a000021082131a5cec68cc6bd8cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584d6bd8cd6bd8ccebd84ceb58cd6bd7bc6b58ccebd84cebd94d6c69cc6bdf7fffff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffe7ffffd6e7ff6b73d65a63e75a63ff4a5aff525aff4a5aff4a5aff425aff 4a63ff425aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a5aff 5263ff525af75a6bf73142ad0810520000210829319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6bd7bceb58cd6bd84ceb584cebd84cebd8cd6c684cebd8cd6c694cebdadcec6f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7ffffdef7ffcedeff636bd65263f7525aff4a52ff4a 5aff4a5aff4a5aff425aff425aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cece8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd8cd6bd84cebd84c6b58ccebd84ce bd94cebde7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffdeefff6b73ce5a6b f74a5aff4a5aff4a5aff4a63ff4a5aff4a63ff425aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff425aff5263ff4a5aff525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd7bc6ad8cd6bd84cebd84cebd84cebd 8cd6bd8ccebd94d6c69ccebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff eff7ff6b73bd5263e7525aff4a5aff4a5aff4252ff4a5aff425aff4a63ff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff5a63ef3942ad00084a0000210821319cc6c68cc6b594d6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584 cebd84cebd8cd6bd8ccebd94cebd94cebd9cc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7ffffdee7ff5a6be7525aff5263ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff5263ff4a52ff525aff525af75a6bf73139ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd8cceb58cd6bd8cd6bd8cd6bd84c6b594cebda5cec69cc6bde7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffefffffd6e7ff5a6be75263ff4a5aff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff5a63ef3942ad00084a000021082131a5cec6 8cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd8cd6bd84ceb584cebd84ceb58ccebd94d6bda5cebde7ffffe7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b73bd5a6bef525aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff4a5aff4a 5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff525aff525af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd94d6bd94cebde7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7efff6b73ce5263ef4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425a ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff5a63 ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd8ccebd9ccebdeffffffffffff7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffeff7ffd6deff5a6bd65a63f74a5aff5263ff4a5aff4a5aff425aff 4a63ff4a63ff4a63ff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff5263ff4a52ff 525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd84d6bd8cd6bd9cd6c69cc6bdf7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efffd6deff636bce5a63e75263f74a5aff4252ff4a 5aff425aff4a63ff425aff425aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cece8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584cebd8ccebddefffff7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6b73ce5a63d6636bf7525af7525a ff4a5aff5263ff4a5aff4a5aff4252ff4a5aff4a63ff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff5263ff4a5aff525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd94cec6deffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7ff737bc6636bde5263ef 4a5af74a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff5a63ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd7bceb58c d6bd94cebd9cc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7e7ff6b 7bce5a6bef4a5aff5263ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a63ff4a5aff4a63ff425aff525aff4a5aff525aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff5263ff4a52ff525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6 bd84cebd84d6bd84cebd94cebd9ccebdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7ffdedeff636bce4a63ef4a63ff4252f74a63ff4a5aff4a5aff4252ff4a5aff425aff425aff425aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff 4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cece 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd84cebd84d6bd84cebd84d6bd8ccebd9ccebdeffffff7fffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7ff6b73c65a6bde5263ff425aff5263ff4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a5aff525aff525af75a6bf73142ad08105200 00211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd84d6bd7bcebd8cd6bd94cebda5cebde7fffff7ffffefffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fffffffffffffffffffffffffff7ff636bbd6373ef4a5af74a5aff4a5aff525aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5a ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63 ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84cebd84d6bd7bceb57bcebd84ceb58ccebd94cebda5cebd9cc6b5effffff7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefffdee7ff5a63ce5263f74a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4252ff 4a5aff4a63ff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff5263ff4a52ff 5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd7bceb584d6bd8cd6bd8cd6c684c6b59cd6c694c6b59ccec69cc6bdffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdee7ff6b7bce5263e7525aff4a5aff5263ff4a5aff4a5aff4252ff4a 5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec68cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd8cd6bd8ccebd8ccebd94ce bd94cebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff737bb56373de5263ef5263f74a5af75263 ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff5263ff4a5aff525aff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84ceb58cd6bd84d6bd 84cebd84ceb58cd6bd94cebdefffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6b73c6636bde 5263e75263ff4a5af74a5aff4a5aff4a5aff4252ff425aff425aff4a63ff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58ccebd84cebd8c d6bd84d6bd7bceb584cebd8cd6bd84cebd8ccebda5c6bdf7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 ffffeff7ffd6deff6373de5263e75263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff5263ff4a52ff5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd8cd6bd8cd6bd7bceb57bcebd7bceb58cdec684c6b58ccebd94cebda5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7ffffe7efffced6ff636bde525aef525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec6 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd84ceb58cd6bd7bceb58cd6bd7bceb584d6bd84c6b58cd6bd8ccebd94cebde7fffff7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7ffffefefff636bce636bf7525aff525aff4a5aff4a63ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a 5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff4a52ff525aff525af75a6bf73142ad08105200 00211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd84ceb58cd6c684cebd94d6c694d6c694d6c69ccebdefffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffefefff737bc65a63e7525aff4a5aff4a5aff4252ff425aff425aff4a63ff425a ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63 ef3942ad00084a000021082131a5cec68cc6b594d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584ceb584cebd8cd6bd84ceb58cd6bd94cebd94c6bd94c6bda5cebdf7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedeff636bef4a5aff525aff4a5aff4a5aff4a5aff 4a63ff425aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff4a52ff 5263ff525af75a6bf73142ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6bd7bceb58cd6bd84d6bd94d6c68cc6b5a5cec6a5cebda5cec6efffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7e7ff5a63e7525aff4a5aff4a 5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cec68cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd7bceb584d6bd84cebd94cebd9cc6bdefffffefff ffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff6b73bd5a6b ef4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff425aff5263ff4a5aff525aff525af75a6bf73942ad0810520000211029319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd84d6bd84cebd8cd6bd94cebd effffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff dee7ff7373ce5a63ef4a5aff4a52ff4a5aff425aff4a5aff425aff425aff425aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff525aff525af75263ef3942ad00084a000021082129a5cec68cc6bd8cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84cebd84 cebd84c6b59cd6c6effffff7fffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7ffffe7f7ffd6deff6363d65a63f74a5aff5263ff4a5aff4a5aff425aff4a5aff4a63ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a52ff5263ff525af75a6bf73142ad0810520000210829319cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd94d6 c68cceb58cd6bd8cd6bd94cebd9cc6bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffe7efffd6e7ff6b6bd65a63e75263f7525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a52ff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a000021082131a5cece 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd8cceb58cd6bd84ceb58ccebd94cebddeffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7efff6b73c6636bde5a63ef5263f74a5aff425aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff5263ff4a5aff5263ff525af75a6bf73942ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6c684ceb594d6c6defff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7ffffeff7ff737bbd636bde525aef4a5af7525aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff525af75a63 ef3942ad08084a0000210821319cc6c68cc6bd8cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd8cd6bd8ccebd9ccebdefffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efff636bc65a63ef5a63ff5263ff4a5aff4a63ff425aff4a5aff425aff4a5aff425aff 4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a52ff 5263ff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd94cebd9ccebdefffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffced6ff6b73de5263f74a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff42 5aff4a5aff4a5aff525aff525af75a63ef3942ad00084a0000210821319cc6c68cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84d6bd84ceb584c6b59ccebde7fffff7fffff7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff737bce5a63de5263ff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a63ff425aff5263ff4a52ff525aff4a5af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd84cebd84d6bd8cd6c68ccebd a5cebdeffffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b73c65a6be74a5af74a5aff 4252ff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff4a5aff4a5aff425aff4a5aff4a5aff525aff525af75263ef3142ad00084a0000210821319cc6c68cc6bd8cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd84 d6bd84cebd8ccebd9ccebda5cebda5c6bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffd6e7ff63 73de525af74a5aff525aff4252ff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff4a5aff4a52ff5263ff525af75a63ef3139ad0810520000211029399cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cde c684ceb584d6bd84d6bd84cebd8cd6bd94cebd94c6bda5cec6a5c6bdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7ffffd6e7ff6b73c65a63ef525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff425aff4a5aff4a5aff4a5aff525af75263ef3142ad00084a0000210821319cc6c6 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84cebd94cebd94cebda5cec6efffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7ffffefffff737bb56b73d65a63ef5263ff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a 5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff5263ff4a52ff525aff4a5af75a6bf73142ad08105200 00211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84cebd84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84ceb584d6bd84d6bd7bceb594d6c684cebd8ccebd94cebdeffffff7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7ffeff7ff7373b56b73d6525ade5a6bff4a5af74a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff425aff4a5aff4a52ff525aff525af75263 ef3142ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84d6bd84cebd84ceb58cd6bd7bc6b584cebd84cebd94cec69cc6b5f7fffff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffeff7ffdeefff6373de5263ef5263ff4a5aff4a63ff4a5aff4a5aff4a5aff 5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff4a5aff4a52ff 525aff525af75a63ef3139ad0810520000210829319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84ceb584cebd84d6bd8cd6bd8ccebd8cd6c68ccebda5cec6ef ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffff7ffffe7f7ffc6d6ff5a6bde5263f74a63ff4a5aff4a 5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff42 5aff4a5aff4a5aff4a5aff525af75263ef3942ad00084a000021082131a5cec68cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84d6bd84d6bd84c6b58ccebd8cce bd94cebde7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7efff6b73ce5a6b ef4a5aff5263ff4a5aff4a63ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff4a63ff425aff4a5aff4a5aff525aff525af75a6bf73142ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84ceb58cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6c67bc6ad8cd6bd84cebd84cebd8cd6bd 94d6bd8cc6b59cd6c69ccebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffff eff7ff6b73bd5263e74a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff4252ff525aff4a5aff5263ff5263ef3142ad00084a000021082131a5cec68cc6b58cd6bd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84cebd8cd6bd84ceb584 cebd84cebd8cd6bd94cebd9ccebd9ccebd9cc6b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7f7ffdee7ff5a6be74a5af75263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a5aff4a5aff525aff525aff5a63ef3139ad0810520000210829319cc6c694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6 bd84cebd84d6bd84d6bd8cd6bd84c6b59ccebda5cebda5c6bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffeff7ffdee7ff5a63e75263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff525aff4a52ff5263ff5263ef3942ad00084a000021082131a5cec6 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd84d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd84d6bd84ceb584cebd84ceb584cebd94d6bda5cebde7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b73c65a63ef525aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff42 5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff5263ff525af75a6bf73142ad08105200 00211029319ccec694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6c694cebdeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffdee7ff6b73ce5a63ef525aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a52 ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff5263 ef3142ad08084a0000210821319ccec68cc6bd8ccebd8ccebd84d6bd84ceb584d6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd 84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84ceb58cd6bd84ceb58ccebd84c6bd9ccebdefffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7f7ffcee7ff5a6bd65a63f7525aff5263ff4a5aff4a5aff425aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff 5263ff525af75a6bf73142ad0810520000210829319ccec694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd8ccebd94d6c69cc6bdf7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffdeefffd6e7ff5a6bce5263e7525aff525aff4252f74a 5aff4a5aff4a63ff425aff425aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a0000210821319ccec68cc6bd8ccebd8ccebd84d6bd84ceb584d6bd84cebd84d6bd84ceb584cebd84ce b584d6bd84ceb584d6bd84cebd8cd6bd84cebd84cebd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd7bceb584d6bd84ceb58ccebd8ccebddefffff7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdeefff6b7bc65a6bd65a6bf7525aff525a ff4a5aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a63ff425aff5263ff525af75a6bf73142ad0810520000211029319ccec694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd8ccebd94cec6deffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efff7384bd5a6bde5263ef 525aff525aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff4a5aff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff5a63ef3942ad08084a0000210821319ccec68cc6bd8ccebd8ccebd84d6bd84ceb584 d6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd8ccebd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ce b584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84cebd84d6bd7bceb584d6bd84ceb58c d6bd94cebd9cc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdeefff6b 7bce5a6bef4a5af75a63ff525aff4a5aff4a5aff5263ff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff525aff525aff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff5263ff525af75a6bf73142ad0810520000210829319ccec694cebd8ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6 bd84cebd8cd6bd84cebd94cebd9cc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffeff7ffd6e7ff5a6bce525aef5263ff4a52f7525aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff425aff425aff4a5aff4a52ff525aff4a52ff525aff 4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a0000210821319ccec6 8cc6bd8ccebd8ccebd84d6bd84ceb584d6bd84cebd84d6bd84cebd84cebd84ceb584d6bd84ceb584d6bd84cebd8cd6bd84cebd84cebd84cebd8cd6bd84ceb584 cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ce bd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd84cebd8cd6bd84ceb58cd6bd8ccebd9ccebde7fffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefffff6b73c65a63de5263ff4a5aff5263ff4a52ff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff425aff4a5aff4a5aff525aff52 5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff5263ff425aff525aff4a5af75a6bf73142ad08105200 00211029319ccec694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd94cebd9ccebde7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7ffff636bb56b73e7525af74a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425a ff4a5aff4a52ff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af75a63 ef3942ad08084a0000210821319ccec68cc6bd94d6bd8ccebd84d6bd84ceb584d6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd 84cebd8ccebd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb58ccebd84cebd8c d6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd8ccebd8cd6bd84ceb584cebd84ceb58ccebd94cebd9ccec69cc6bdefffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefffdee7ff5a6bce5a63f74a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a63ff425aff 4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff 5263ff525af75a6bf73142ad0810520000210829319ccec694cebd8ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6c67bc6b594d6c68ccebd9ccec69cc6bdffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7e7ff737bce5a63e75263ff4a5aff4a5aff425aff4a5aff4a5aff4a 5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad00084a0000210821319ccec68cc6bd8ccebd8ccebd84d6bd84ceb584d6bd84cebd84d6bd84ceb584cebd84ce b584d6bd84ceb584d6bd84cebd8cd6bd84cebd84cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd 84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584cebd84cebd8cd6bd84cebd8ccebd8cce bd9cc6bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff737bbd7373e75a5af7525aff425aff525a ff4a5aff4a63ff425aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a63ff4a5aff5263ff4a5af75a6bf73942ad0810520000210829319ccec694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd8cd6bd84d6bd84ceb58cd6bd8cd6bd 84cebd84cebd8ccebd9ccec6effffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffefe7ff736bc66b6bde 5263ef5263ff4a5aff4a5aff4a5aff4a5aff425aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af75263ef3942ad08084a0000210821299ccec68cc6bd8ccebd8ccebd84d6bd84ceb584 d6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584ceb584d6bd8c d6bd8ccebd84ceb58ccebd8cd6bd84cebd8ccebdadcec6f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7ffefefffdedeff6b7bd65263de5263ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff5263ff525af75a6bf73142ad0810520000210829319ccec694cec68ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6 bd84d6bd8cd6bd84ceb58ccebd8cceb594d6c684ceb584cebd94cec6a5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7ffffffffffffffffffffffffeff7ffcedeff636bd65263ef525aff4252ff4a63ff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af75a63ef3942b500084a000021002131a5cec6 8cc6b58ccebd84cebd84d6bd84ceb584d6bd84cebd84d6bd84cebd84cebd84ceb584d6bd84ceb584d6bd84cebd8cd6bd84ceb584cebd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ce b58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb584d6bd7bceb584d6bd7bceb594d6bd8cceb594d6bd84c6b58cd6bd84cebd8ccebde7fffff7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffe7efff6373c6636bf7525aff4a5aff425aff4a63ff425aff4a5aff425aff525aff4a5aff525aff4a 52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63 ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a63ff425aff5263ff4a5af75a6bf73142ad08105200 00210829319cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb584d6bd84 d6bd8cd6bd84cebd84d6bd84cebd84d6bd84d6bd8cd6bd8cceb594d6bd8cceb58cd6bd8cd6bd8cd6bd94cebdf7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffe7efff737bc65263de4a63ff4a5aff4a63ff425aff425aff4252ff4a5aff425a ff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a 5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a 5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af75a63 ef3942b508084a0000210021299ccec68cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84cebd84d6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84d6bd84ceb584ceb594d6bd8cceb58ccebd8cceb58ccebd94cebda5cebdf7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffd6deff6373ef4a5af74a5aff4a5aff4a5aff425aff 4a63ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a 5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5a ff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4252ff4a5aff425aff 5263ff4a5af75a6bf73142ad0810520000210829319cc6c694cec68ccebd8cd6bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd8cd6bd94d6c68cc6b59cd6c69ccebda5cebdefffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7f7ffd6e7ff5263de5263ff4a5aff4a 5aff4a5aff425aff4252ff4a63ff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a 5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff 4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff 4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff525af75a63ef3942ad08084a0000210821319ccec68cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584cebd84ce bd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6c684ceb584cebd8cceb594cebd9cc6bde7ffffefff ffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffeff7ff6373bd5a6b ef4a5af75263ff4a5aff4a5aff425aff4a5aff425aff4a63ff4a5aff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff 4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff42 5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a 52ff525aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff525aff4a52ff5263ff425aff5263ff4a5af75a6bf73939ad0810520000211029399cc6c694cebd8ccebd8cd6bd84ceb584d6bd84cebd8cd6bd84cebd 84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd94d6c694c6bd e7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff dee7ff6b73ce5a63ef5263ff4252ff4a5aff425aff4a5aff4252ff4a63ff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a 5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425a ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff 425aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52 ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af75263ef3942ad08084a0000210821319cc6c694c6bd94cebd84cebd84d6bd84ceb584 d6bd84ceb584d6bd84cebd84d6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd7bceb58cd6bd84ceb58c cebd8cc6b59ccec6effffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 fffff7ffffe7f7ffd6deff5a63d65a63f74a5aff5263ff5263ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff425aff5263ff4a5af75a63f73139ad1010520000211029319cc6c694cec68ccebd8cd6 bd84ceb584d6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd94d6bd8ccebd8ccebd9ccebdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fffff7ffffe7f7ffd6deff636bd65a63ef5263ff5263ff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 425aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5af75263ef3942ad00084a0000210821319ccec6 8cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84cebd84cebd84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd 84ceb58cd6bd84ceb58cd6bd8ccebd8ccebd94cebddeffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7efff6b7bc66b73de5a63ef5a63ff5263ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a63ff4a5aff4a5aff425aff5263ff4a5aff525aff4a5aff5263ff4a5aff 525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a 5aff5263ff525aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525a ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff 525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63 ff4a5aff4a63ff4a5aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff 4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff5263ff4a5af75a63f73142ad08105200 00210829319ccec694cec68ccebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8c d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb594d6bd8cc6b594d6c6d6fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7ffffe7efff737bbd636bde525aef525aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a 5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a52 ff4a5aff4a5aff525aff4a52ff4a5aff4a5aff525aff4a52ff525aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a52ff525aff4a5aff525aff4a52ff525aff 4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff52 5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff 425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5af75263 f73142ad00084a0000210021299cc6c68cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd 84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584ceb58ccebd94d6bd8ccebd9ccebdefffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6373c65a6be75a63ff5263ff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a63ff4a5aff4a5a ff4a52ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5a ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4252ff 5263ff4a5af75263ef3139ad10105200002108313994c6bd94cec68ccebd8cd6bd84cebd84d6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8ccebd94cebd9ccebdeffffff7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffd6deff6b73de5263ef4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a 5aff4a5aff4a5aff4252ff4a5aff425aff4a63ff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a63ff 425aff4a63ff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5a ff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff 425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4252ff4a5aff4a52ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff 4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4252ff4a5aff4252ff42 5aff4a5aff4a5aff4a5aff5263ff5a63ef3942ad00084a0000210029319ccec68cc6bd8ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ce b58cd6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd8cd6bd84ceb584ceb59ccebde7fffff7fffff7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff737bc65a63de5263f74a5aff4252ff4a5aff4a63 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a 5aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff525aff5263ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5a ff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a63ff425aff4a5aff425aff4a63ff425aff 4a63ff425aff4a63ff425aff4a5aff425aff4a63ff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff42 5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff5263 ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff5263ff4a5aff 525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a 5aff5263ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a52ff4a5a ff4a5aff4a5aff425aff525aff4252f74a5aff4a52ef5a63f73139ad08084a0000210829319ccec694cec68ccebd8cd6c684cebd84d6bd84cebd8cd6bd84cebd 84d6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd84cebd8cd6bd94d6c694cebd 9ccebde7fffff7ffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff6b73bd636be75263f74a5aff 4a52ff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425af74a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252 ff4a5aff4252ff4a5aff425aff4a5aff4a5aff5263ff5263ff5263ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff 4a5aff5263ff4a5aff4a63ff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a63ff4a5aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff525aff4a5aff5263ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff525aff4a5af7525aff4a5aff52 5aff4a5af7525aff4a5aff525aff4a5af7525aff4a5aff525aff4a5aff525aff525aff5263ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5a ff4a5aff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff5263ff525aff525aff4a5aff525aff525aff5263ff4a5aff525aff 4a5aff5263ff4a5aff5263ff4a5aff4a63ff4a5aff4a5aff525aff5263f75a63ef3942ad08084a0008290021319ccec68cc6bd8cd6c684cebd84d6bd84ceb584 d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84cebd8cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb584d6bd7bceb584cebd84cebd8c d6bd8ccebd94cebd94cebd9ccebd9cc6bdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffd6e7ff63 73d64a5aef4a5aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a63ff425aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff525aff5263ff3952ef525aff4a5af7525aff525aff5263ff4a5aff5263ff525aff525aff4a5aff525aff4a 5aff525aff4a5aff525aff4a5aff5263ff525aff5263ff525aff525aff4a5af75263ff525aff5263ff525aff5263ff525aff5263ff525aff5263ff525aff5263 ff525aff5263ff525aff525aff525aff5263ff525aff525aff4a5af7525aff525aff525aff4a5af7525aff525aff525aff525aff5263ff525aff525aff525af7 525aff525aff525aff525af7525aff525aff525aff525af7525aff525aff525aff525af7525aff525aff525aff525af7525aff525aff525aff525aff5263ff52 5aff5263ff525aff5a63ff525aff5263ff525aff5263ff525aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff525aff525aff4a5aff5263ff525aff525a ff4a5af75263ff525aff5263ff525aff5263ff525aff5263ff525aff5263ff525aff5263ff525aff5263ff525aff5263ff4a5af75263ff525af75263ff4a5af7 5263ff525af75263ff525af75263ff5263ff5263ff525af75263ff525af75263ff525aff5263ff525aff5263ff4a5af75263ff525af7525aff4a5af75263ff52 5af7525aff4a5af75263ff525af75263ff4a5af75263ff4a5af75263ff4a5af75a63ff5263f75a63ef3942ad1010520000210829319cc6c694cec68ccebd8cd6 bd84cebd84d6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6 c684ceb58cd6bd8cd6bd8ccebd8cd6bd8cd6bd8cceb59cd6c69cc6bdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7ffffdee7ff6b73c65a63ef525aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff525af73142de1021b51021b51821bd1021bd1821c61821c61821c61018c61821c61018 c61821c61018bd1821c61018bd1821c61018bd1821c61018bd1821bd1018bd1821bd1018bd1821bd1018bd1821bd1018bd1821bd1018bd1821bd1018bd1821bd 1018b51018bd1018b51018bd1018bd1018bd1018bd1818bd1018bd1818bd1018bd1821bd1018bd1821bd1018bd1821c61018bd1821bd1818bd1821bd1818bd18 21bd1818bd1821bd1018bd1821bd1818bd1821bd1018bd1821bd1818bd1821bd1018bd1821bd1818bd1821bd1018b51821bd1818bd1821bd1018b51821bd1818 bd1821bd1818bd1821bd1821bd2121c61821bd1821bd1818bd1821c61018bd1821bd1018bd1821bd1018bd1821bd1018bd1821bd1018bd1021bd1018bd1821bd 1018bd1018bd1021bd1821c61018bd1821c61821bd1821c61821bd1821c61821bd1821c61818bd1821c61818bd1821bd1018bd1021bd1018bd1021bd1018b510 21bd1018b51021bd1018b51021bd1018b51821bd1018b51021b51018b51021b51018b51021bd1018b51021bd1018bd1021bd1018b51021bd1018b51021bd1018 bd1021bd1018b51821bd1821bd1821bd1018bd1821bd1021b51021bd1021bd1021bd1021bd1021bd1018bd1021b52129b529299c10185a0008290821319cc6c6 94cec68ccebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84ceb584 cebd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb584d6bd84ceb584d6bd 84ceb584d6bd7bceb58cd6bd84ceb58ccebd8ccebd8cd6bd84ceb58cd6bd8cceb59ccec6efffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffeff7ff6b73b5636bde5a63f75a5aff525aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5a63ff525aef3139c60000840008940000940000a500009c0000ad0000a5 0000ad0000a50000ad0000a50000a50000a50000a50000a50000a50000a50000a500009c0000a500009c0000a500009c0000a500009c0000a500009c0000a500 009c0000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000a50000 a500009c0000a500009c0000a500009c0000a500009c0000a500009c0000a500009c0000a50000a50000a50000a50000a50000a50000a500009c0000a50000a5 0000a500009c0000a500009c0000a500009c0000a500009c0000a500009c0000a50000a50000a500009c0000a500009c0000a500009c0000a50000a50000a500 009c0000a500009c0000a500009c0000a50000a50000a500009c0000a50000a50000a500009c0000a50000a50000a500009c0000a500009c0000a500009c0008 ad0000a50000a500009c00009c00009c00009c00009c0000a500009c0000a500009c00009400009400009c00009c0008a500009c0000a500009c00009c00089c 00009c00009c0000a500009c00009c0000940008a500009c0000a500009c00009c00009c0000a500009c0000a50000a50008ad00009c00009c00088418216b00 0021102939a5c6c694c6bd94cebd8cd6bd84d6bd84d6bd84ceb584d6bd84d6bd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6 bd84d6bd8cd6bd8cd6bd8ccebd8ccebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84cebd84d6bd8cd6bd84cebd8cd6bd8cd6bd8cd6bd8cd6bd 8cd6bd84ceb58cd6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84 d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84ceb58cd6bd8cd6bd84ceb594d6c684cebd8cd6bd94cebdefffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7ffeff7ff6b73c6636bde5a5ae75a63ff525aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff525aff525af75a63ef3939b500007b2129ad2931ce3139de31 39e73139ef3139ef3139ef3939ef3131e73139ef3139e73139e73139e73139e73131e73139e72931de3139e72931de3139e72931de3139e72931de3139e72931 de3139e72931de3139e72931de3139e72931de3139e72931e73139e73131e73139e72931e73139e73131e73139e72931e73139e72931e73139e72931e73139e7 2931e73139e73131de3139e73131de3139e72931de3139e72931de3139e72931de3139e72931de3139e73131de3139e73131e73139e73131de3139e73131de31 39e73131de3139e73131de3139e73139de3139e73139e73939e73139e73942e73139e73942ef3139de3139e73139e73139e73131de3139e73139de3139e73131 de3139e73131de3139e73131de3139e73131de3139e72939e73139e73139e73142ef3139e73939ef3139e73942ef3139e73139e73131e73139e72931de3139e7 2939de3139e72131de2931e72939e72939de3139de3139de3139de3139de3939de3939de3129ce4239de3939ce3942ce3939d63139d63139ce3942d63131d639 39de3942d63939ce3139d63139d62931d63139de2931d63942e73131d63139de3139e73139e72931de3139de2131d62931de2939e72931e72931e73139e73139 d63942c618186b000831001831a5c6ce94c6bd8ccebd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584ceb584cebd8cd6c684ceb584cebd 84ceb584d6bd7bceb584d6bd84ceb584ceb584ceb58ccebd8ccebd8cd6bd84ceb58cd6bd84ceb584ceb584d6bd84cebd7bceb584d6bd84ceb58cd6bd84ceb584 cebd8cd6bd8cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd7bceb584d6bd8cd6bd84cebd84ceb58cd6bd7bc6b584cebd84cebd94d6c6a5c6bdf7fffff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffe7f7ffd6e7ff6b73d65a63e75a63ff4a5aff4a63ff4a5aff4a5aff425aff 4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff5a63ff5a63ef4242bd00007b2129 bd2939de3142f72131ef2939f72131f72939f72931f72931f72131ef2939f72131ef2939ef2131ef2939f72931ef2939f72131ef2939f72931ef2939f72131ef 2939f72931ef2939f72131ef2939f72931ef2939f72131ef2939f72931f72931f72131ef2939f72931f72931f72131ef2939f72931f72931f72131ef2931f721 31ef2931f72131ef2931f72131ef2939f72931ef2939f72931ef2939f72131ef2939f72131ef2931f72131ef2931f72931f72931f72131ef2939f72931f72939 f72131ef2939f72931ef2939f72131ef2939f72931ef2931f72131ef2939f72931ef2939f72931ef2939f72931f72939f72931ef2939f72931ef2939f72131ef 2939f72931ef2939f72131ef2939f72131ef2931f72131ef2939f72131ef2131f72131ef2939f72131ef2939f72131ef2939f72131f72939f72131f72939f721 31ef2139ef2131ef2139f72131ef2139ef2131ef2939f72131ef1829e72139ef2939ef2131e72931de3939e74242e72931ce3939d64242d63139ce3139ce3942 d64242d64242de4239d64a4ade3939ce3942d62931c63139d62931d63139e72939e73139ef2131ef2131e72131ef2939ef2131e72139ef2139ef2939f72131ef 3139f72939e72939de3142c608106b0008310821399cc6ce9cd6ce8ccebd8cd6bd84d6bd8cd6bd84ceb58cd6bd84d6bd8cd6bd84d6bd8cd6bd84ceb58cd6bd84 ceb58cd6bd84cebd84d6bd84d6c684d6bd7bceb584d6c684ceb584d6bd84d6bd84d6bd84d6bd84d6bd84d6bd8cdec684cebd84d6bd84d6bd8cd6bd8cd6bd84d6 bd7bceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84ceb584cebd84cebd8cd6c684cebd8cd6c694cebdadcec6f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffe7ffffdef7ffd6deff636bd65263f7525aff4a5aff4a 5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff525af75a63ef 3939b500007b2129c62939ef2131ef1829f71829f72131ff1829f72131ff2131ff2131ff1831f72131f71831f72131ff1829f72131ff2131ff2131ff1829ff21 31ff2131ff2131ff1829ff2131ff2131ff2131ff2131ff2131ff2131ff2131ff2131ff2131ff2131ff2131ff1829f72131ff2131ff2131ff1829f72131ff2131 ff2131ff1829f72131ff1829f72131ff1829f72131ff2129f72131ff1829f72131ff1829ff2131ff1829f72131ff1829ff2131ff1829f72131ff1829ff2131ff 1829f72131ff1829f72131ff1829f72131ff1829f72131ff1829f72131ff2131ff2131ff1829f72131ff1829f72131ff1829f72131ff1829f72131ff1829f721 31ff1829f72131ff1829f72131ff1829f72131ff1829f72131ff1829f72131ff1829f72131ff1831f72131ff1829f72131ff1829f72131f71829f72131f71831 f72131ff1829f71831f71831f71831ff1831f71831f71029ef1831f71029ef1831f71829ef1829ef2939ef2942ef2939de3139de3939d63942d63939ce2931bd 1018a500089400008c00009400009408009c10089c2921b53139bd5252de4242de3139d62931de2931e72939ef2131ef1829ef2131f71829ef1831f71831f721 31f71831f72131f72131f72931ef2131de2939c608186b00003900213194c6c68cc6bd8ccebd84cebd8cd6bd84ceb584ceb584ceb58cd6bd84ceb584d6bd8cd6 bd84d6bd84ceb584d6bd7bceb584d6bd84d6bd84cebd7bd6bd7bcebd84d6bd8cdec67bceb584d6bd84cebd7bceb584cebd84d6bd7bc6ad84cebd7bc6b58cd6bd 8cd6bd84ceb584d6bd84d6bd84cebd8cd6bd84cebd84d6bd84d6bd84d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84d6bd84d6bd7bc6b58ccebd84ce bd94cebde7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6b73ce5a6b f74a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5af75a63f75a63ef3942b500007b2131ce2131ef2131f71829f72131ff1831ff1831ff1829ff2131ff1831ff1831ff1831ff1831ff1831ff2131ff1829ff2131 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff2131ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff2129ff2131ff2129ff2131ff2129ff 2131ff2129ff2131ff2131ff2131ff1829ff1831ff1831ff1831ff1831ff2131ff1029ff1831ff1829ff2139ff1831ef2139e73142e73142d62939c61821ad00 008c00008400008400088c00008400009400009400009400009400009400008c0000840000841018a52931c63942de3139e72931e72131ef2939ff1821f71829 f71831ff1831ff1029f72131ff1831ff1831f72131ef3142ef2939c610187b00003108294294c6ce94cec68cd6bd8cd6bd84cebd8cd6bd84ceb58cd6bd8cd6bd 8cd6bd84ceb58cd6bd8cd6c684d6bd84d6bd8cdec67bceb57bcebd7bceb57bcebd8cdec67bc6b57bceb594dec684ceb58cd6bd94dece94d6c684ceb594dece8c cebd8cd6c684c6b58cceb584ceb584d6bd84d6bd84d6bd7bceb584d6bd84d6bd84ceb584cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd8cd6bd7bc6ad8cd6bd84cebd84cebd84d6bd 8cd6bd84cebd94d6c69ccebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff eff7ff6b73bd5263e74a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff5263ef5a63ef3939ad00007b1829ce2139ef1831f72131ff1829ff1829ff1029ff1829ff1829ff1829ff1029ff1831ff1029ff1831ff 1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff18 31ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829 ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1029ff1829ff1829ff1831ff1829ff1831ff 1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2129ff1829ff21 29ff1829ff2129ff2129ff2129ff1829ff2131ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1029ff1829ff2131ff1829ef3942ff3142e73142d61018 a500008400008400008c0000842129ad3131bd424ad63139ce2931ce2931c6424ade3942d61821ad00089400008400007b00008c08089c2929c64242ef3942f7 1821ef3139ff1829ff1831ff1029ff1831ff1831ff2131ff1829f72939ff2131e72939ce08107300003900213994c6c68cc6bd8ccebd84ceb58cd6bd84ceb58c d6bd84ceb58cd6bd84ceb584d6bd84ceb584ceb57bceb58cdec684d6bd7bc6b584cebd8cd6c67bc6b584d6bd8cd6c68cd6bd8ccebd8ccebd8cc6b58cceb58cce bd94cebd7bb5a594cebd8ccebd94cebd8cc6b59cd6c684ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd 84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd8cceb58cd6bd84ceb584 cebd84cebd8cd6bd8ccebd94cebd94cebd9cc6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7ffffdeefff5a6be74a5aff5263ff4a5aff4a63ff4a5aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff4a63ff4a5aff5a63f75a63e73942b500007b2131ce2131ef2131f72131ff1829ff1829ff2131ff1829ff2131ff1829ff1831ff18 29ff1831ff1831ff2131ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131 ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff1829ff1829ff2131ff1829ff1829ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff 2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff18 29ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131 ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2129ff1829ff2131ff1829ff1831ff1029ff1831ff1829ff1831ff2131ff2131ff2129f73131ef2931d6 3942d608109c00008400008400008c1818a53939ce4a4ade4242de3139d63139de3142e73942de2939d62939d62939d6394ade2131c600009400008c00008c10 109c3939ce3939de2929e73139ff2939ff1829ff1831ff1831ff1831ff2131ff2131ff2131f72939ef3139ce10187b00003908214294bdc694cec68ccebd8cd6 bd84ceb58cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84d6bd8cd6c684cebd8cd6c694dec68ccebd73bda594cebd94cebd94cebd8cc6b5 94c6b5a5d6c6a5d6c69ccebda5dece9ccebda5dece94cebd94cebd94cebd94cebd84c6b58cd6bd8ccebd84cebd84cebd8cd6c684cebd84d6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd84d6bd84cebd8cd6bd84cebd8cd6 bd84ceb58cd6bd8cd6bd8cd6bd84c6b594cebda5cec69cc6bde7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7ffd6e7ff5a6be75263ff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff5263ef5a63e73139ad00007b2131ce2939ef1829ef2131ff1829ff1829ff1829ff1829ff1829 ff1831ff1829ff1831ff1029ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff 1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff18 31ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829 ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff 1829ff1831ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1831ff1829f72931ff2129f729 29f74242ef3939d600008c00008400008410109c3939c64242d64242de3939d62929ce3942de3939d62939ce2939c63142d62139d62942e72139d62939d62931 ce3939d600008400008400007b2129b53942e72129e72131ef2139ff1831ff1831ff1831ff2139ff1829f72939f72931e73139ce10107b0000390821429cc6ce 94c6bd8ccebd8ccebd8cd6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd8cd6bd7bc6b57bc6b594d6c684ceb584c6b59cd6c6ade7d69cd6c694 c6b56b9c8c638c7b527b6b315a4a29524229524a295a4a426b5a4a7b6b7bad9c94c6b594c6b594cebd94cebd8ccebd8ccebd8ccebd84d6bd7bceb584d6bd84ce bd84d6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd84ceb584d6bd 84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584 d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ce b58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb584d6bd84ceb584d6bd 84ceb584d6bd84d6bd84ceb584cebd84ceb58ccebd9cd6bda5cebde7ffffe7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6b73c65a6bef4a5aff5263ff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5af75a6bf75a63e73942b500007b2131ce2131ef2131ff1829ff1831ff1829ff 1831ff1829ff2131ff1829ff1831ff1029ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1831ff1029ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1831ff1831ff1831ff1831 ff2131ff2931ff2129de4242e700008c00007b0000843942d62931c63939d63131ce3939ce424ad6424ade3139ce3942c63942b5394abd314ac62939c6314ade 2131d62931de4a52f73131d64a4ade00008400007b00007b424ade3142de2131e72139ff2131ff1829f72131ff2131ff2131ff2131f73139ef3139ce18107b00 0039102142a5c6ce9ccec68cceb594d6c684d6bd8cd6bd84cebd84d6bd84ceb584d6bd84cebd84cebd8cd6bd8cd6bd84c6b59cd6c68ccebd84bdad9cd6c6a5ce bd8cb5a5295242082918001808001000001008001000002110002110002110001008001808001008002110294a397ba594b5dece9ccebd94cebd94d6c684cebd 8cd6bd84cebd8cd6c684cebd84d6bd84cebd8cd6bd84cebd8ccebd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb584d6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8cceb594cebd9ccebdefffffeffffff7fffff7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdee7ff6b73ce5263ef4a5aff4a5aff4a63ff425aff4a63ff425aff4a5aff4252 ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff5263ef5a6be73939ad00007b1829ce2139ef1831f718 31ff1829ff1831ff1829ff1831ff1829ff1829ff1029ff1831ff1029ff1831ff1829ff1829ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029 ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff 1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1831ff1029ff1831ff1029ff1831ff1029ff1831ff1029ff1829ff1029ff18 31ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029 ff1829ff1029ff1829ff1029ff1829ff1029ff1831ff1029ff1031ff1029ff1029ff1029ff1829ff1029ff1831ff1029ff1829ff1829ff1831ff1829ff1831ff 1829ff1831ff1029f72131f72129e74a4af71010a500008400007b2129b53942de3139de3139d6424ade424ace2931ad08108c00007b00006b00006300005a00 006b10188c4252d63942de3139de2129d62931d63131ce4a4ad608108c00007b00088c3139ce2939e72131ef1831f72131ff1829ff1829ff1829f72939ff2931 e73139ce101073000039081839a5c6ce94c6bd94cebd84cebd84d6bd84ceb584d6bd84ceb584d6bd84ceb58cd6bd84ceb584ceb594d6bd84c6b59cd6c69ccec6 94cebdaddece84ad9c21423100100000100000211842635a7b9c8c8cada584ad9c94b5ad8cada573948c527b6b183931000800001808184231739c8ca5cebd9c cebd8cceb58ccebd84cebd7bc6b57bceb584d6bd84d6bd84d6bd84ceb58ccebd8ccebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd 84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584d6bd84ceb58c d6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ce b584cebd84ceb584d6bd84ceb584d6bd84cebd84d6bd7bceb584d6bd84ceb58cd6bd94cebda5cebdeffffffffffff7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffe7f7ffd6e7ff5a6bd65263f74a5aff5263ff4a5aff4a5aff425aff 4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5af75a63f75a63e73942b500007b2131 ce2131ef2131ff1831ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff1831ff1029ff1831ff1029ff1831ff1029ff1831ff1829ff1831ff1829ff2131ff18 29ff2131ff1829ff2131ff1829ff2131ff1831ef3139e72931ce00008c0000841829ad3139ce2939de3142e7424ae72931b518218400086300086300005a0000 5200004a00004a00004a00005a0000630008842931c64a52ef3939e73139de424ae72931bd00008c0000840008942939de2131ef2139ff1831ff1831ff1829ff 2131ff2131f72939ef2939ce10107b0000391021429cc6c69ccec68ccebd8cd6bd84d6bd84d6bd84d6bd84d6bd84cebd8cd6bd84d6bd8cd6bd8ccebd8ccebda5 dece7bb5a59cd6c68cb5ad29524a0018080029185a847373a5949ccebd9ccebd94c6b5a5decea5dec694cebd9cd6c694cebda5d6c6a5cebd8cb5a55a84731839 310010001042317bad9c94cebd8cc6b594d6c68cd6bd94dece7bceb584d6bd8cd6bd8ccebd84cebd94d6c684ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84ceb58cd6bd84d6bd8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd84d6bd8cceb59cd6c6a5c6bdf7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdeefffd6e7ff5a6bce5263e75263f74a5aff4252f74a 5aff4a5aff4a63ff425aff425aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff5263f75a6be7 3139ad00007b2129c62939ef1831f72131ff1829ff1831ff1829ff1829ff1829ff1831ff1029ff1831ff1029ff1831ff1829ff1829ff1829ff1831ff1829ff18 29ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829 ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff 1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff18 29ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1029ff1831ff1029ff1831ff1829ff1831ff1829 ff1831ff1829ff1831ff1829ff1831ff1829f72131ff2131f72939ef3139d600009400007b3139bd394ade3142de1829d63142e72931bd00087b000052000852 00004a00005200005a00005a00004a00004a00004200004a00005a0810842931c63139de3139e73139de3939de3131c600007b0000841018b53139ef2131ef21 31ff1829ff1831ff1829ff2131f72131e73139ce0810730000390818399cc6ce8cc6bd8ccebd84cebd84d6bd7bceb584d6bd84cebd84d6bd84ceb58cd6bd8cce b58ccebd94d6bd8cc6b5addece9ccebd002118001808103929a5cebda5d6c69cc6b59ccebda5d6c684bda584bdad8cc6b58cceb584bdad9cd6c694ceb58cbdad a5d6c6b5dece7ba594315a4a0010000018108cbdada5dece8cc6b58ccebd84c6b584cebd84ceb584cebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb584 cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ce bd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd 84ceb584cebd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb584d6bd84ceb58cd6bd84ceb58c d6bd84ceb58cd6bd84ceb584d6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84ceb584d6bd84ceb584d6bd84cebd8ccebd94c6bde7fffff7fff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6b73c65a63d65a6bf7525af7525a ff4a5aff5263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5af75a6bf75a63e73942b500007b2131ce2939ef2131f72131ff2131ff1829ff2131ff1829ff2131ff2129ff1831ff1831ff2131ff1831ff2131ff1829ff2131 ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1831ff2131ff1829ff2131ff1831ff 2131ff1829ff2131ff1831ff2131ff1829ff2131ff1831ff2131ff1829ff2131ff1831ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff18 29ff2131ff1831ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131 ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff1831ff1831ff1831ff1831ff1831ff1831ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829f72131ff2131f73142f73139e71821ad00007308088c3939ce2939d62939e72939ef2939de2121ad00 006b00004a0000420008630808732931ad4242bd3939ad21188400005200004a00004a00005a2931ad394ade2131de2131de394aef3942de0808940000840008 a53142e72939f71829f72131ff1829ff1829ff2131f72939ef2939ce1010730000390821429cc6c694cebd8cceb58cd6bd84cebd84d6bd84cebd8cd6c684d6bd 8cd6bd8cd6bd94d6c694d6c68cc6b59cd6bd94c6b5103929001808396352add6c694bdada5cebd8cbdad94c6b5addeceaddece9cd6c6addece9cd6c69cd6c6ad e7d694c6b594bdada5d6c6a5cebdadd6c6addece4a7b6b001000103929739c8ca5d6c694cebd94d6c684ceb584cebd8cd6bd8cd6bd84ceb58cd6bd8cd6bd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd84d6bd84ceb58cd6bd84cebd94cec6e7ffff f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efff737bbd636bde525aef 525aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff425aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a52ff4a5aff4252 ff4a5aff4a5aff4a5aff5263ef5a63e73939ad00007b1829c62939ef2131ef2131ff1829ff1831ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff1831ff 1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff18 31ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff2131ff1829 ff1831ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff 1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff18 31ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1029f71829ff1829ff2139ff2131ef2931d60000730000732929b53131ce2931de3142f72131 de2939d600007b00005200004200004a31319c3939c64242de4242de3939c64242bd18187300004200003100004a00087b3942ce2131d63142f72131ef2131de 3939ce00008c00008c3139d63139ef2129ef1829f71829ff1021f72131ff2131e72939c608106b0000390018399cc6ce94c6bd8ccebd84cebd84cebd84cebd8c d6bd84cebd84cebd84ceb58cd6bd8ccebd8ccebd94ceb594c6b50021100029184a736394bdad9cc6b59ccebd8cb5a5739c8c527b6b395a522142311031291839 31184231104231396b5a5a8c7b9cc6b58cb5a59ccebd8cc6b58cc6b5a5d6c65284730008000029188cb5a584b5a594cebd9cdec684cebd84ceb584ceb58cd6c6 84cebd8ccebd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8c d6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ce b58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84cebd8cd6bd84ceb58ccebd 84cebd8cd6bd84ceb584d6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb58cd6bd84cebd8cd6bd84ceb58cd6bd84ceb584 cebd8ccebd9ccebdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdee7ff6b 7bce5a63e75263ff5263ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff4a5aff4a5aff5a63f75a63e73942b500007b2131ce2131ef2131ff1831ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131 ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff2131ff2131ff2131e72129c600087b00006b4239c64a42e7 3131ef2131ef2131d6394ace08086b0000390000420000524242bd3939d63139ef1821d63939de525ade3139940000390800390000390008632131ad314ae721 39ef1829e72931e74a4aef1818ad0000841821b53942ef2131ef2129ff1829ff2131ff2131f72939e72939c61018730000310821399cc6c69ccec68ccebd8cd6 c684cebd8cd6c68ccebd8cd6bd84ceb584cebd84cebd8ccebd8cc6b59cd6c6396b5a002110083121a5cebda5cebdadcec6a5c6bd001810001008001000001000 00100000100800100800100008181000080000100800180894b5a5b5dece8cc6b594cebd94cebda5d6c64a7363001000295242add6c694cebd84c6b58cd6bd8c d6bd8cd6bd84ceb58cd6bd8ccebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6c684cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb58cd6bd8ccebd8cd6bd8ccebd8cd6bd8ccebd8cce bd8ccebd8cd6bd84cebd8ccebd9ccebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7ffdedeff5a6bce5263ef525aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff425aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff5263f75a63e73139ad00007b1829ce2139ef1831f71831ff1829ff1831ff1029ff1829ff1829 ff1829ff1029ff1829ff1029ff1829ff1029ff1829ff1029ff1829ff1029ff1829ff1029ff1829ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff 1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1029ff18 29ff1029ff1831ff1029ff1831ff1029ff1831ff1029ff1829ff1029ff1829ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1831ff1029 ff1831ff1029ff1829ff1029ff1831ff1829ff1829ff1029ff1831ff1829ff1829ff1829ff1831ff1029ff1829ff1029ff1829ff1029ff1829ff1829ff1829ff 1029ff1829ff1829ff2131ff1829ff1829ff1829ff2129ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff2131ff1829ff2931ff2129de1818b500007300 007b3939ce4242ef2129e71829de394ae72931ad00004a00004200003108085a4a4ace3131d62129e73139f72931de3139c6424aa500084a0000290000390000 5a3139bd3142e71831e72139ff2939f72129d64239d600008400008c2939d62939ef2131f72129ff1829f72131f72139e72939c608106b0000390818399cc6ce 8cc6bd8ccebd8ccebd84cebd84cebd8cd6bd84cebd84cebd84ceb58cd6bd8ccebd9cd6c694ceb500210800211884ad9cadd6c6add6ce94bdada5d6c610312100 1000000800001008000800000800000800001000000800001000000800102918000800739c8c9cd6c68ccebd8cc6ada5d6c694bdad294a3900100094bdada5d6 c68ccebd84c6b58cd6bd84cebd84cebd84ceb58ccebd84cebd8ccebd84cebd84cebd84cebd8ccebd84cebd84cebd84cebd8ccebd84cebd84cebd84cebd8ccebd 84cebd84cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584 cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ce bd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb58cd6bd84cebd8cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd84ceb58cd6bd 84ceb58ccebd8ccebd84cebd84ceb584d6bd84ceb59ccec6e7fffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefff6b6bc65a6be75263f74a5aff5263ff525aff525aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff425aff4a5aff425aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5af75a6bf75a63e73942b500007b2131ce2139ef2131ff1829ff2131ff1829ff 1829ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff1831ff1029ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff1829ff1829ff2131 ff1829ff1829ff1831ff1831ff1831ff1831ff1029ff1831ff1029ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1029ff1831ff1829ff1831ff1029ff1831ff1829ff2131ff1829ff1831ff1829ff2129ff1829ff2131ff1829ff1831ff1029ff1831ff1829ff2129ff18 29ff2131ff1829ff1831ff1831ff1831ff2131ff2131ff1829ff2131ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff2131ff2131ff2131ff2131f73139 ef0008a500007b2121a53939de3139e72131e72939ef3142d618299c00004a0000290000390800525252ce3139d62131de2942ef2939de3142ce525ab5000039 0000290000390000633139bd2939de1831ef1831ff2131f73139ef3139d600008c0000843139d62939e72131f72131ff2131ff2131f72939ef2939c610187300 00310821429cc6ce94cec68ccebd8cd6c684cebd84d6bd84cebd8cd6c68cd6bd8cd6c68cd6bd94d6bd8cbdad426b5a0018087bad9caddece94c6b594c6bd9cd6 c694c6b5002918002110295242527b6b739c8c84a59c8cad9c84a59c637b6b1831210010080008000010080010087bad9c8ccebd94cebd9cd6c6add6c68cb5a5 10292110392994c6b59cd6c68cd6bd84cebd8cd6bd84cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 c684cebd8cd6bd84cebd8cd6c684cebd8cd6c684cebd8cd6c684cebd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6c684cebd 8cd6bd84cebd8cd6c684cebd8cd6c684cebd8cd6c684cebd8cd6bd84cebd8cd6c68ccebd8cd6c684cebd8cd6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd8c d6bd8cd6bd8ccebd8cd6bd8ccebd8cd6bd7bceb584d6bd84cebd8cd6bd8cc6b5a5cec6e7ffffeffffff7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7ffff636bbd6373ef4a5af74a63ff525aff525aff4a5aff4a5aff425aff4a5aff425aff425aff425aff4a5aff4252 ff4a5aff425aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff5263ef5a63e73939ad00007b1829c62139ef2131f721 31ff1829ff1829ff1029ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff1029ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829 ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff2131ff1829ff1829ff 1829ff2131ff1829ff1831ff1029ff1829ff1029ff1029ff1029ff1029ff1029ff1831ff1829ff1831ff1829ff1829ff1829ff2131ff1029ff1829ff1829ff18 29ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1829ff1029ff1829ff1829ff1829ff1029ff1829ff1829ff2131ff1829ff1831ff1029ff1831ff1029 ff1829ff1829ff2129ff1829ff1829ff1029ff1831ff1829ff1829ff1829ff2129ff1021ff2131ff1029ff1831ff1029ff1829ff1029ff1829ff1829ff2131ff 1829f72129ef3139e700009400007b2929b52939de2939ef2139ef2139de3142d610188c0000390000290000290808524a4ab5424ace3142d62139d63142de39 4ac62131840008420000290000420000633942ce2139de2139f70821ef2131ff2939ef3131de0000840000842131c62939e72131ef2131f71829f72131f72131 ef3139ce1010730000310021399cc6ce8cc6bd8ccebd8cd6c68cd6c67bc6b584d6bd84ceb584ceb584ceb58cd6bd84bda573ad94001000315242a5cebd9cd6c6 8cc6b58ccebd8ccebd8ccebd5a94847bb5a59ccebda5d6c68cc6b58cbdad8cc6b594c6b59cc6b5bddece294239081810000800001008396b5a8ccebd8cceb594 d6bd94c6b5bdded64263520018084a7b6b94cebd8ccebd8cd6bd84ceb584cebd7bceb584d6bd84ceb584d6bd84cebd84d6bd84ceb584d6bd84cebd84d6bd84ce b584d6bd84cebd84d6bd84cebd84d6bd84cebd84d6bd84ceb584cebd84ceb584d6bd84ceb584d6bd84cebd84d6bd84ceb584cebd84ceb584d6bd84ceb584d6bd 84cebd84d6bd84cebd84cebd84cebd84d6bd84cebd84cebd84cebd84cebd84cebd84cebd84cebd84d6bd84cebd84cebd84cebd84d6bd84cebd84d6bd84cebd84 d6bd84cebd84cebd84cebd84d6bd84cebd84cebd84cebd84d6bd84cebd84cebd84cebd84d6bd84cebd84cebd84cebd84d6bd84cebd84cebd84cebd84d6bd84ce bd84cebd84ceb58cd6bd84ceb58ccebd84ceb58cd6bd84ceb58cd6bd84ceb584cebd84cebd94d6bd94cebd9ccebd9cbdb5effffff7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefffdee7ff5a63ce5a6bf74a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff4a63ff425aff 4a63ff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff5a63f75a63e73942b500007b2131 ce2139ef2931ff2131ff2131ff1829ff1831ff1829ff1831ff1829ff2131ff1831ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff 2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff2131ff1831ff1831ff1831ff1831ff1829ff2131ff1829ff2131ff1831ff1829ff1829ff2131ff1829ff1831ff1829ff2131ff1831ff1831 ff1829ff1831ff1829ff2129ff1829ff2131ff1831ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1831ff1831ff1829ff1831ff1831ff2131ff1829ff 2131ff1831ff1831ff1829ff2131ff2129ff2131ff1829ff1831ff1831ff1831ff1831ff1831ff1029ff2131ff1021ff1831ff1029ff1831ff1831ff1831ff10 29ff2131ff1829ff1829ff2939f73942e70000840000843139bd3139e72131ef2139f72139de3142d608108400004200002100002900002921216b39429c424a c63942c6424ac63139a518216300003900004200005218219c2129c62139e71831f71831ff1829f72931ef3939de08089400007b2131c62939e72131f71829f7 2131ff1829f72939ef2931c61018730000310821399cc6ce94cec68ccebd8cd6bd8cd6bd8cdec684ceb584ceb594d6c684ceb58cceb5a5d6c631634a00180863 8c7b8cbdad94cebd8cc6b594d6c68ccebd84cebda5e7d68cc6b5a5dec694cebd8cc6b59cdece9cdece7bbdad9cd6c694c6b5a5c6bd0008000010080010080839 29a5dece9cd6c67bbda5addece9cc6b5739484001000214a398cc6b58ccebd8ccebd8cd6bd8cd6bd8cd6c684cebd84d6bd84cebd8cd6bd84cebd8cd6bd84cebd 8cd6bd84cebd84cebd84ceb58cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84 cebd8cd6bd84cebd8cd6c68cd6bd8cd6bd84cebd8cd6c684cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6 bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84d6bd84d6bd84cebd8cd6bd84cebd84d6bd84cebd 8cd6bd84cebd8cd6bd84cebd84d6bd84d6bd8cd6bd84cebd8cd6bd84d6bd8cd6bd84ceb58cd6bd8cd6bd8cd6bd84ceb594cebd94cebd9ccec69cbdb5ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffdee7ff6b7bce5263e75263ff4a5aff5263ff4a5aff4a5aff4a5aff4a 5aff425aff4a5aff425aff425aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff5263f75a63e7 3139ad00007b1829c62139ef2131f72131ff1829ff2131ff1029ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff1831ff1829ff18 31ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1831ff1829 ff1831ff1029ff1831ff1829ff1831ff1829ff1831ff1831ff1831ff1029ff1029ff1829ff1029ff1029ff1021ff1829ff1831ff1829ff1831ff1829ff1831ff 1829ff1831ff1829ff1831ff1829ff1829ff1829ff2129ff1829ff1829ff1829ff1831ff1029ff1829ff1029ff1831ff1829ff1831ff1029ff1831ff1829ff18 31ff1829ff2131ff1829ff1831ff1829ff2131ff1829ff2129ff2129ff2131ff1029ff1829ff1831ff1831ff1029ff1029ff1029ff1831ff1029ff1831ff1831 ff1029ff1029ff1831ff1029ff1831ff2129ff2131f72939d600008c00007b3142c62939de2139ef1829e72939ef3142d600087b000042000021000018000029 00003100085200086b18218400006300085a0000420000390000520000732931c6394af71029e72139ff1021ef2939ff2931ef3131d608088c0000841829bd21 39e71831ef1831f71829f72131f72131e72939c608106b0000310018319cc6ce8cc6bd94cec68ccebd8ccebd7bc6b58cd6bd84cebd8cd6bd84c6ad9cd6c694c6 b50021100018087ba594a5d6c69cd6c68ccebd84c6b584d6bd84d6bd8cceb58cc6b594c6b59cd6c684c6b584ceb584cebd94e7ce84c6b59cd6c69cc6bd213931 000800000800214a39a5d6c68cc6b59cd6c694c6b59ccebd8cb5a500181000180884b5a58cceb58ccebd84ceb584cebd84ceb584cebd84cebd8cd6bd84ceb584 cebd84cebd84cebd84ceb584cebd84cebd8cd6bd84ceb584cebd84ceb584cebd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ce b584cebd84ceb584cebd84ceb584cebd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd84cebd 84ceb584cebd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84cebd8cd6bd84cebd8cd6bd84ceb584cebd84cebd8cd6bd84ceb584cebd84ceb584d6bd84ceb584 cebd84ceb584cebd7bceb584cebd7bceb584cebd7bceb584d6bd7bceb584cebd84ceb584cebd84ceb58cd6bd7bc6b58cd6c68ccebd84ceb58cd6c68ccebd94ce bd9ccec6efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff737bb56373de5263e75263ff4a5aff525a ff4a5aff4a5aff425aff4a63ff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5af75a6bf75a63e73942b500007b2131ce2139ef2931ff2129ff2131ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff1831ff1831ff1831ff1829ff1831ff1831ff1831ff1831ff1831ff1029ff1831ff1021ff2131ff1829ff2131ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1029ff1831ff1831ff2131ff1829ff2129ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1831ff1831 ff1831ff1831ff1829ff2131ff1829ff1831ff1829ff2131ff1829ff2129ff1829ff2131ff1829ff1831ff1029ff1829ff1029ff1831ff1029ff1029ff1031ff 1831ff0829ff1831ff1029ff1831ff1831ff2139ff1829ff1829ff2131f73139e700009400007b2931bd3139e72939f72131ef2131e74a5aef08108400004a00 002900002100002900003100003900085200005200004a00004200004a00005200006b0808943939e72129e72139f71829f72131ff1829ef2931ef3939e70808 9400007b2131ce2139e72139f71831ff1831ff2131f72939ef2939c61018730000310821399cc6c69ccec694cebd94d6c684cebd84ceb584cebd94dec68cceb5 8cceb59cd6c684b5a50010000021109cc6b5a5d6ce94d6c68ccebd84cebd94e7ce7bceb59cdece9cdec694c6b58cc6b594d6c68cd6bd7bceb573c6ad94dece9c cec69cc6b5294239000800000800102921a5cebd94cebd94cebd8cc6b5a5d6c6a5d6c62142310018087ba594a5d6c694d6bd94d6c68cd6bd8cd6c68cd6bd8cd6 c68cd6bd8cd6bd8cd6bd8cd6bd8cd6bd8cd6bd8cd6bd8cd6c68cd6bd8cd6bd8cd6bd8cd6bd8cd6bd8cd6bd8cd6bd8cd6c68cd6bd8cd6bd8ccebd8cd6c68cd6bd 8cd6bd8ccebd8cd6bd8ccebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6bd8ccebd8cd6bd84cebd8cd6c68cd6bd8cd6bd8ccebd8cd6c68cd6bd8cd6bd8c cebd8cd6c68cd6bd8cd6bd8ccebd8cd6bd8ccebd8cd6bd8ccebd8cd6c68cd6bd8cd6bd8ccebd8cd6c68cd6bd8cd6c68cd6bd8cd6c68cd6bd8cd6bd84cebd8cd6 c684d6bd8cd6bd84d6bd8cd6bd84d6bd8cd6bd84cebd8cd6bd84d6bd8cd6bd8cd6bd8cd6bd84d6bd8cd6bd8cd6bd8cd6bd8ccebd8cd6bd84ceb58cd6bd8cd6bd 84cebd84ceb594d6c69ccebdefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6373bd636bd6 5263ef5263ff4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff5263ef5a63e73939ad00007b1829c62139ef2131f72131ff1829ff1829ff1029ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff 1029ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff18 29ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1831ff1831ff1029ff1831ff1029ff1029ff1029ff1029ff1829ff1829ff1831 ff2131ff1831ff2131ff1829ff2131ff1831ff1831ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1029ff1829ff1029ff1829ff1029ff1831ff 1029ff1831ff1029ff1831ff1029ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1831ff1831ff1831ff1829ff1829f718 29f71029ef1021ef1831ff1831ff0821ef2139ff1831ff1029f71829f72131ff1821f72131f73939ef00009400007b2129ad3139de2931ef1831ef2131e73139 d618219c00004a00003100002100002900083900084a00004a00005200005200005a00005208107b10109c4a4aef2931ef2931ff2131ff2131ff2131ff1821ef 2939ef3942de00008400007b2131ce2142ef1831f72139ff1029f72131ff2131e73139ce08106b0000310021399cc6c69cc6c69ccebd8cc6b58ccebd8cd6c684 ceb584ceb594d6bd94c6b59cc6b5739c8c0021101031299cc6b58cc6b584c6b58ccebd84c6b57bceb58cdec67bbdad8cbdada5d6c69ccebd94cebd94d6c67bbd ad9cdece84bdad9ccebd84ad9c001008000800081008294239b5dece94c6b59cd6c68cc6b594cebd94c6b5426b5a001000638c7b94c6b58cc6b584c6b58ccebd 84c6b584cebd84ceb584ceb584ceb58ccebd84ceb584ceb584ceb58ccebd84ceb584ceb584ceb58ccebd84ceb584ceb584ceb58ccebd84ceb58ccebd84ceb58c cebd84ceb58ccebd84ceb58ccebd84ceb58ccebd84ceb58ccebd84ceb58ccebd84cebd8cd6bd84ceb58ccebd84ceb58ccebd84ceb584cebd84ceb58ccebd84ce b58ccebd84ceb58ccebd84ceb58ccebd84ceb58ccebd84ceb584cebd84ceb58ccebd84ceb584ceb584ceb584cebd84ceb584cebd84ceb58ccebd84ceb58ccebd 84ceb58ccebd84ceb584cebd84ceb584cebd84ceb584cebd84ceb58cd6bd84ceb584cebd84ceb58cd6bd84ceb584cebd84ceb58ccebd8cceb594d6bd84ceb58c cebd84ceb57bceb584cebd8cd6c68ccebd9ccebda5c6bdf7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 ffffe7f7ffd6deff6b73de525ae75263ff4a5aff5263ff4a5aff4a5aff4a5aff4a63ff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff4a63ff4a5aff5a63f75a63e73942b500007b2131ce2139ef2931ff2129ff2131ff1829ff1829ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131 ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff1831ff1831ff1831ff1829ff1831ff1831ff1831ff1831ff1831ff1029ff1831ff1829ff2131ff1831ff 2139ff2131ff1831f71831f72131f71829f71831f71829f72131ff1831ff1831ff1831ff1831ff1829ff1829ff1829ff2131ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff2129ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff1831ff1831ff2139ff1831ff2131 ff2131ef3139f73139ef2939ef2939ef2131ef2131f72939ff0821ef1831ff1839ff1831ff1829f72131ff2131f74242f708089c0000731018943139de2931e7 2131ef2939ef3942e73139bd0800630000420000312118525a63ad39429c29319418188c21219418219c3942bd2931bd3939e73139f72129f71829ff2131ff10 29ff2131ff2131f72942ef2939d60000840000842942d62139e72139ff1831ff1831ff2131f72139e73139c610187300003108294294bdbdadd6ce9cc6bd94ce bd94d6c68cd6bd84ceb594d6bd8cc6b5a5d6c694bdb56b9484001000395a52b5dece94c6bd8ccebd9ce7d67bc6ad8cd6c68cd6c68ccebd6b9c8c739c94adcec6 a5cec6a5d6c6added69cc6b5adcec66b8c840010080000000810080008004a635aa5cebd9ccec68ccebd94cebd9cd6c6a5cec652736b001000638473a5d6c69c cebd94d6c68cd6bd94d6bd94d6c694d6bd8ccebd94d6bd8cd6bd94d6bd8ccebd94d6bd8cd6bd94d6bd8ccebd94d6bd8cd6bd94d6bd8cd6bd94d6c68cd6bd8cd6 bd8ccebd94d6bd8ccebd8cd6bd8ccebd94d6bd8ccebd94d6bd8ccebd94d6c68ccebd94d6bd8ccebd94d6c68cd6bd94d6bd8ccebd94d6c68ccebd8cd6bd8ccebd 94d6bd8ccebd8cd6bd8ccebd94d6bd8ccebd8cd6bd8ccebd94d6bd8ccebd94d6c68ccebd94d6c68cd6bd94d6bd8ccebd94d6c68ccebd8cd6bd8ccebd94d6bd8c cebd8cd6bd8ccebd94d6bd8ccebd94d6bd8ccebd94d6bd8ccebd94d6bd8ccebd94d6bd8cd6bd94d6bd8ccebd94d6bd94d6bd94d6bd8ccebd94d6bd8cd6bd94ce bd8ccebd94d6bd84ceb584d6bd84d6bd8cd6bd84cebd94cebd94cebdadcec6efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7fffff7ffffe7f7ffced6ff636be7525af7525aff4a5aff4a5aff425aff4a5aff425aff425aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff5263f75a6bef3139ad00007b1829c62139ef2131f72131ff1829ff1831ff1029ff1829ff1829 ff1829ff1829ff1831ff1829ff1829ff1029ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff 1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1029ff1831ff1829ff18 31ff1831ff2131f72131ef2131ef2139ef2939ef2139ef2131ef1831ef2131f72129ff2131ff1831ff1831ff1029ff1029ff1829ff1831ff1829ff1831ff1829 ff1829ff1029ff1829ff1029ff1829ff1029ff1829ff1029ff1831ff1829ff1829ff1829ff1829ff1829ff1831ff1029ff1831ff1029ff1029ff1029ff1831ff 1029f71829ef2131e73139e73139d62931ce2129bd3139d63942ef2939ef1021e72131ff1831ff1029f71831f72139ff1829f72131f73139e71821b500006b00 00732931c63942ef1829e72939f72931de4a4ad600006300004a00003910084a4a52a54a52b54242b54a4ace3939c64a52de2931c6424ae72931de2931ef2129 f72131ff1831ff1029f72131ff1831e72939e72131ce0000840810942139d62139ef1831f71831ff1829ff2131f72131de3142ce08106b0000310829399cc6c6 add6c69cc6b594cebd94cebd84c6b584ceb58cceb594ceb5a5cebdadcebd7b948c0010081839319cc6bd94cebd84c6b584c6bd84c6b58ccebd8ccebd94c6b508 3121001810425a526b847b84a59c84a59c849c944a635a00100800080000080000100800080094b5ada5d6c67bbdad9cdece84bdad8cc6b5adcec652736b0010 0863847394c6b594cebd84c6b58ccebd84c6b58ccebd8cceb58cceb584c6b58cceb584ceb58cceb584c6b58cceb58cceb58cceb584c6b58cceb584c6b58cceb5 84c6b58cceb584c6b58ccebd84c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58c ceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6b58cceb584c6 b58ccebd84c6b58cceb584c6b58ccebd84c6b58cceb58cc6b58ccebd84c6b58cceb584c6b58cceb584c6b58cceb58cc6b58cceb584c6b58ccebd84c6b58cceb5 84c6b58cceb584ceb58cceb584c6ad8cceb584ceb584ceb584cebd8ccebd8ccebd9ccebdefffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7ffffe7efff6b6bce636bf74a5aff4a5aff4a5aff4a63ff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5af75a6bf75a63e73942b500007b2131ce2131ef2131ff2129ff2131ff1829ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1831ff1831ff1029ff1831 ff1831ff1831ff1829ff2131f72931f73139ef2939de2939d61829c63142de3142ef2939ef2939f72131f72131ff2131ff1831ff1829ff1829ff1831ff1029ff 1831ff1029ff1831ff1829ff1831ff1029ff1829ff1829ff1829ff1829ff1831ff1831ff1829ff1829ff1831ff1829ff2131ff1029f71831ff1831ff1831ff18 31ff1831ff1831ff1831f72939ef394aef3139ce18219c00007300087b2931ad4242d63139de3139f72129f72131ff1831ff1831ff1829ff2131ff1829ef2939 ef2931ce00007300006b3942ce2939de2131ef2931f71829d64a52e708087b000052080042000042212973424aa55252ce3931bd4242d63942d63139ce3142d6 3942e72129de3139ff2131ff1831ff1831ff2131ef2131e7394ae700089c00008c2129bd2942e71839ef1839ff1831ff1831ff2131f72939ef3142ce10187300 0029082939638c8c739c8c6394846ba59463a58c5aa58c5a9c8c6bad946ba59473a59484ad9c5a7b6b001008294a4284ad9c84bdad6bad9c6bad9c7bbdad73b5 a57bb5a58cb5ad1839310010080010080010080008000010080008000008080000000818100010080008006384738cb5a56ba5947bb5a584c6b57bb5a573a594 8cb5a5425a4a0010004a6b5a8cb5a573ad9c7bbda573b5a573b5a573b5a57bbda573b5a57bb5a573b59c7bbda573b59c73b5a573b59c7bbda573b5a57bb5a573 b59c7bbda573b5a57bb5a573b59c7bbda573b5a57bb5a573b59c7bbda573b5a57bb5a573b59c73b5a573b59c73b5a573b59c7bb5a573b59c73b5a573b59c7bb5 a573b59c73b5a573b59c7bb5a573b59c73b5a573b59c7bb5a573b59c73b5a573b59c7bb5a573b59c73b5a573b59c7bb5a573b59c73b5a573b59c7bb5a573b59c 73b5a573b59c7bb5a573b59c73b5a573b59c7bb5a573b5a57bb5a573b59c7bbda573b5a57bb5a573b59c7bbda573b5a57bb5a573b59c7bbda573b59c7bb5a573 b5a57bbda573b5a57bb5a573b5a573b5a573bda573b59c73b5a573bda56bb59c7bbda57bb5a584b5ad84b5a5f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffefefff737bc6525ae7525aff525aff5263ff425aff425aff425aff4a5aff425a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff5263ef5a63e73939ad00007b1829c62139ef2131f721 31ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff1029ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829 ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff 1029ff1029ff1029ff1029ff1029f72131ff2131ef3942f73942de2929bd00088400007b1829ad2939ce3142e72931e72131f72129f71829f71831ff1029ff18 29ff1029ff1829ff1029ff1831ff1029ff1831ff1029ff1831ff1029ff1829ff1029ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1831ff1831ff1029 f71839ff1831ff1029ff1831f71831f72939f73139e73139c63131ad00005a00005a00004200005a2931a54242ce2931de2931f71829ff1831ff1029ff1831ff 1029f72131f71821de3142e70008840000730808943139de2939e72131ef2131e73139de2931b500006300004a0000420000420008633131a54a4ace4239c642 4ad63139bd2931bd0818ad0810b51021de1829ef1021ef1829ef3142ef3142e71818ad00008c00008c3139d62142e71831ef1831ff1831ff1829ff2131ff1831 de2939c608186b00003100001021524a083929084229105239003929004229004229084a31084231104231184231103129001000001808103929003929004231 004a39004231003929083929103129001810000800000000000800000808000808000800000800001008000000183929315a4a104231003121084a3900423100 4229084231104231183929082110000800103121083929084231003929004231003929084231004229004231004229084a31004229004231004229084a310042 29004231004229004231004229004231004229004231004229004231004229004231004229004231004229004231004229004231004229004231004229004231 004229084a3100422900423100422900423100422900423100422900423100422900423100422900423100422900423100422900423100422900423100422900 4231004229004231004229004231004229004229004229004231004229004231004229004231004229004231004229004231004229004231004229084a310042 29004231004229084a31004229004229004229004231004229004229004229004229004229084231084231084231083129184231efffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdee7ff636bef525aff525aff425aff4a63ff4a5aff 4a63ff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5af75a63f75a63e73942b500007b2131 ce2131e72931ff2131ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff18 29ff1831ff1829ff1831ff1829ff1831ff1029ff2131ff2931f73131e74242de2929ad08107b00005a00005200087318219c3139ce3139e72931ef2131f72131 ff2131ff2131ff1829ff1829ff1029ff1031ff1831ff1031ff1029ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff 2131ff1831ff2131ff1029ff1829ff2131ff1829ef2939f73142f72129c618219c08106b00004200003100002900003108085a2121943942d61821d62131ff18 29ff1831ff1029ff2139ff1829f72131f72931e73931c600007b000084424ad63142e71831d62139e72942e7424ade08108c00006300004a00084a00004a0000 5a08006b10107310107b08107300006b0000840000943131e73142ff2131ef2139ef2939d6424ade1008940000840810a53139de2942f71031ef2139ff1029ff 2131ff2131f72942ef3142ce08186b0000291031429cc6bd9cd6bd9cd6b594d6bd8cd6bd94dec684ceb59cdec68cc6ad94ceb5addece94bdad00100800100894 bdada5dece8ccebd9ce7ce94d6bd9cdec6a5d6c6add6c62942390010080008000008002131290818101831292142395273637ba5949cc6b5add6c69cd6c69cde c68cd6bd94dec67bc6adade7d69ccebdadcebd2142310018088cad9c9cd6bd94d6bd94dec68ccebd9cdec694d6bd94d6c694d6bd94dec694d6bd94d6c694d6bd 9cdec694d6bd94d6c694d6bd94d6c694d6bd94d6c694d6bd94d6c694d6bd94debd94d6bd94dec694d6bd94d6bd94d6bd94debd94d6bd94debd94d6bd94dec694 d6bd94debd94d6bd94dec694d6bd94dec694d6bd94dec694d6bd94d6c694d6bd94dec694d6bd94d6c694d6bd94dec694d6bd94d6c694d6bd94dec694d6bd94d6 c694d6bd94dec694d6bd94d6c694d6bd94d6c694d6bd94d6c694d6bd94d6c694d6bd94d6c694d6bd94dec694d6bd94dec694d6bd94dec694d6bd94dec694d6bd 94dec694d6bd94dec694d6bd94dec694d6bd94dec694d6bd94dec68cd6bd94e7c694debd9cdec694d6bd9cdec694cebd9ccebda5cebdadc6bdefffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffdee7ff5263de5263ff4a5aff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff425aff4a5aff5263f75a63e7 3139ad00007b1829c62139ef2129f72131ff1829ff2131ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff1029ff1829ff1829ff1831ff1829ff18 29ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1829 ff1829ff1829ff1829ff1829ff1831ff1029ff1831ff1031ff1831ff1829ef3139f73131d62929ad00006300004200003100003900004208086b2129a53942de 3139e73139ef2131f72131ff1829ff1829ff1029ff1831ff0829ff1031ff1029ff1031ff1029ff1831ff1029ff1831ff1029ff1829ff1829ff1829ff1029ff18 29ff1829ff1829ff1029ff2131ff1829ff1829ff1831ff2131ff2931f73142ef2931ce1821a500005a00004200002900001800001000082100002900005a0810 8c424ae72939e72131ef1831f71831ff1831ff2139ff2131ff2931ef3129ce2921ad00007b08109c3142d62942de1831de2942ef1829ce394ade2931a5000063 00005200005200005200005a00005200005a00004a0000630000730810a52931de2931ef2131e72942e72939ce1821ad00007b0000842129c62131e71839ef18 31f71031ff1831ff1831ff2131f72131e7394ad608186b00002900212994c6b58cc6a58ccead84c6ad7bc6ad73c6a573c6ad84cead8cceb58cc6ad94c6ad8cb5 a51031210010007ba59484bda594d6bd84ceb573bda594d6bd84b5a59cc6b5294a3900000000100000100894a59c9cb5ada5c6bd8cb5a5a5cebd94c6ad8cbdad 8cc6ad84bda57bc6ad84ceb56bb59c94dec684c6ad9cceb57ba58c0018000021107ba58c8cc6ad8cceb57bc6a584ceb57bc6a58cceb584c6ad84ceb584c6ad84 ceb584cead8cceb584cead84ceb584cead84ceb584c6ad84ceb584cead84ceb584c6ad84ceb584cead84cead84cead84cead84cead84cead84c6ad84cead84ce ad84cead84c6ad84cead84cead84cead84cead84cead84cead84ceb584c6ad84ceb584cead84ceb584c6ad84ceb584c6ad84ceb584c6ad84ceb584cead84ceb5 84c6ad84ceb584c6ad84ceb584c6ad84cead84c6ad84ceb584c6ad84cead84c6ad84ceb584c6ad84cead84c6ad84ceb584c6ad84cead7bc6ad84cead7bc6ad84 cead7bcead84ceb57bc6ad84cead7bcead84cead7bc6ad84cead7bcead84ceb57bc6ad84ceb57bc6a584cead7bc6a584cead84ceb594cebd9cc6b5efffffefff fff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7f7ff6b7bbd5a63 e74a5aff4a5aff425aff4a63ff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff 4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5af75a6bf75a63e73942b500007b2131ce2131ef2131ff2129ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff 1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff2139ff2139f72939e7424ae7424ac610107300004200002900002100001800002900 003900006321219c4242d63942e73131ef2129ef2931ff1829f71829ff1831ff1831ff1029ff1831ff1031ff1831ff1029ff1831ff1831ff1831ff1829ff2131 ff1829ff1829ff1829ff1831ff1829ff1829ff2131ff2131ff2129ff2939ff2129ef3139e7424ade3139b5000063000042000029000018000010000008000010 00002100003100086310188c424ade2939d62939e72131f72131ff2131ff2131ff2931f73931e73939ce00008c00007b0818a5314ade2939de1829de2939e729 39de3942de2931bd08108400006b00006b00005a00006300005a00006300006b0000840810a53131de2939e72939de4252ef394ad600008400007b2121ad3942 e72131e71839f71831ff1831ff1831ff2131ff1831ef2939ef3142ce1018730000290831398cbdad8ccead7bc69c7bc6a573c6a573c6a573c6a584cead7bc6a5 84c6ad7bbd9c94c6ad42735a00180852846b84bda57bbda584c6ad6bb59c84c6ad8cc6ad84b59c3152420010080008000010009cb5ada5c6b58cb5a594bdad94 ceb58cbda58cc6a594cead84c6a57bc6a57bcead73c6a57bc6a58cceb584b59c6b94730018001039219cceb584c6a584c6ad8ccead84cead7bcead73c6a584ce ad7bc6a57bcead7bc6a584cead7bc6a57bcead7bc6a584cead7bc6a57bcead7bc6a584cead7bc6a57bcead7bc6a584cead7bc6a57bcea57bc6a57bcea57bc6a5 7bcea57bc6a57bcea57bc6a57bcea57bc6a57bcea57bc6a57bcea57bc6a584cead7bc6a57bcead7bc6a584cead7bc6a57bcead7bc6a57bcead7bc6a57bcead7b c6a584cead7bc6a57bcead7bc6a57bcead7bc6a57bc6a57bc6a584cead7bc6a57bcead7bc6a57bcead7bc6a57bc6a57bc6a57bcead7bc6a57bc6a57bc6a57bc6 a573c6a57bc6a573c6a57bcead7bc6a57bcead7bc6a57bcead7bc6a57bc6a57bc6a57bcead73c6a57bc6ad73c6a584cead7bc6a584cead7bc6a584ceb584bdad effffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff dee7ff6b73ce5a63ef525aff4252ff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a 5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff5263ef5a63e73939ad00007b1829c62139ef2131f72131ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff 1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1829ff1831ff1829ff18 31ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ef2931e73942de2129a510187b0000420000290000180000 0800000800001000002100003900005221188c3939c63939e73131ef2931f72931ff1829f71029ff1029ff1831ff1029ff1031ff1029ff1831ff1029ff1831ff 1029ff1831ff1829ff1829ff1829ff1029ff1029ff1829ff1829ff2131ff2131ff2131f71821e73942f73942d62129a500086300004200002100001000000800 08080000000000080000100000210000310000520810733139b53142de2939ef1829ef2131ff1831f72139f73131ef4239e71018ad0000840000841018a53942 e73942ef3142ef2129de2129ce424ae7424ad63942c618219c10108c00087b10188421299c3139b54242ce3942d63942e73942e73142de2131bd00088c000084 00008c4242de2931e72139f71031f71831ff1029ff1831ff2131ff2131f72131de394ad608106b00002900212984b5a57bc69c73c69473c69c7bcea563bd946b c69c7bc6a573bd9c7bc6a57bbd9c84bd9c73a58c00180018422994c6ad84c6a57bbd9c8cd6b55aa5848ccead84b59c294a390010000010000010008ca5949cbd ad94bdad94c6ad8cc6ad84b59c94c6ad84bda584c6a57bc6a57bc6a573c6a573c6a56bad8c9cceb539634a002908427b5a8ccead7bbd9c7bc6a573bd9c73c69c 73c69c73c69c73c69c73c69c73c69c73c6a573c69c73c69c73c69c73c69c73c69c73c69c73c69c73c6a573c69c73c69c73c69c73c6a573c69c73c69c73c69c73 c69c73c69c73c69c73c69c73c69c73c69c73c69c73c69c7bc6a573c69c73c69c73c69c7bc6a573c69c73c69c73c69c73c6a573bd9c73c69c73c69c73c6a573c6 9c73c6a573c69c7bc6a573c69c73c6a573c69c7bc6a573c69c73c6a573c69c7bc6a573c69c7bc6a573c6a57bc6a573c69c7bc6a573c6a57bc6a573c69c73c6a5 73c69c7bc6a573c69c73c6a573c69c73c6a573c69c73c6a573c69c73c6a573c69c73c6a573c69c73c6a573c69c73c6a573c6a57bcea573c69c7bc6a573c69c7b c6a573bd9c8cc6adeffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffe7efffd6deff5a6bd65263f74a5aff5263ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff4a5aff4a5af75a63f75a63e73942b500007b2131ce2131e72931ff2131ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831 ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1831ff2131ff1831ff2131ff2131f72939ef3139d6394ac6000863000039000029 0000210000100808100800080000080000100000210000310800522921944242ce3939de3139ef2931ef2939ff1831ff1831ff1031ff1031ff1031ff1831ff10 29ff1831ff1029ff1831ff1831ff1831ff1829ff1831ff1029ff1831ff1831ff2131ff2131f72939ff2131ef3142f7424ae72931ad0000520000390000210000 1008000808000808000808080800000810081000001000001800002900004208106b3942c63139de2939f72131f71839f71831f72939ff2929e73139e700089c 0000940000942921bd2929c62931ce4252ef3942e71021c6424aef3942de3139ce4a52e74a52d63942c6424ace424ad63942ce2931ce3942de3139ce2931bd00 008c00008c0000943139de3139e72931f72131ff1831ff1031ff1831ff1829ff2139ff2131f72939ef3142ce1018730000310831397bbda57bc6946bbd8c7bce 9c63bd946bc69c6bbd9c73bd9c63b58c84cead73b59484bda584b59c4a735a002108639c7b84c6a573bd9c7bc6a573c69c6bb59494cead184229001000001000 001000293929214231183921214a31083118184229184a3110422139735284c6a563ad8c73c6a56bbd9c73bd9c6ba58c002908184a298cc6a56bb58c7bc69c73 bd9c7bc69c73bd9473c69c6bc69c6bc69c6bbd9473c69c6bbd9c73c69c6bbd9473c69c6bbd9473c69c6bbd9473c69c6bbd9c73c69c6bbd9473c69c6bc69473c6 9c6bbd9473c69c6bc69473c69c6bbd9473c69c6bc69473c69c6bc69473c69c6bc69473c69c6bc69473c69c6bc69473c69c6bbd9473c69c6bbd9c73c69c6bbd94 73c69c6bbd9c73c69c6bbd9473c69c6bc69c73c69c6bbd9c73c69c6bc69c73c69c6bbd9c73c69c6bc69c73c69c6bbd9c73c69c6bc69c73c69c6bc69c73c69c73 c69c73c69c6bc69c73c69c73c69c73c69c6bbd9c73c69c6bc69c73c69c6bbd9473c69c6bbd9473c69c6bbd9473c69c6bbd9c73c69c6bbd9c73c69c6bc69c73ce 9c6bbd947bc6a573bd9c7bc6a584bda5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffe7efffd6e7ff6373d65a63ef525aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff 4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff5263f75a63e73139ad00007b1829c62139ef2129f72131ff1829ff1831ff1829ff1829ff1829 ff1829ff1829ff1831ff1829ff1831ff1829ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff1029ff1829ff1029ff1831ff 1829ff1829ff1829ff1831ff1029ff1831ff1029ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1831f72131f71829ef2931ef3939de424ace10187b00 004200002100001800000800000800000010101008080000000000000808082100002900004a1010843939ce3939de2931e72931f72939ff1831ff1029ff1029 ff1831ff1029ff1831ff1029ff1831ff1029ff1031ff1029ff1831ff1029ff1029ff1831ff2139ff1829f72131f72131ef3139ef3942de2939b508106b000042 00002100001000000008080808000008080808080808080800000008000808081000001000001800004218187b3942c63139e72131ef1029e72139f72131f729 31ff2931ef3139e72129c600009400008c0000942929c63139ce3942de3139d62939d63142de3139d63139d63139ce3942ce3139c63142ce3139c64242d63139 c61821ad00008400008c00009c3939de2931e72129ef2131ff1831ff1831ff1029ff1029ff1831ff1829f72131f72139e73142ce10186b0000290021297bbda5 6bb5846bbd8c63bd8c6bbd9463bd8c6bbd946bbd8c6bbd9473bd9463ad846bb58c7bbd9484bd94002908002908528c6384c6a573b5946bb59473bd9c7bb59408 39180018000018000010000018080018000018080018000021080021000021000021001852297bb59484c6a573b5947bc6a573ad8c0842210021007bb58c6bad 8473bd946bbd8c6bbd8c6bbd946bbd945ab58c63bd8c63bd8c6bbd9463bd8c6bbd9463bd8c6bbd9463bd8c63bd9463bd8c6bbd9463bd8c63bd8c63bd8c63bd94 63b58c63bd8c63bd8c63bd8c63b58c63bd8c63bd8c63bd8c63b58c63bd8c63bd8c63bd8c63b58c63bd8c63bd8c63bd8c63b58c63bd8c63bd8c63bd9463b58c63 bd8c63b58c63bd8c63b58c63bd8c63b58c63bd8c63b58c63bd8c63b58c63bd8c63b58c63bd8c63b58c63bd9463b58c63bd8c63b58c63bd8c63b58c63bd8c63b5 8c63bd9463b58c63bd8c63b58c63bd9463b58c63bd8c63bd8c6bbd9463bd8c6bbd946bbd8c6bbd946bbd8c6bbd946bbd946bc69463bd8c6bbd9463bd946bbd94 63bd946bbd9463bd8c73c69463b58c6bbd946bb594d6fff7effff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7efff6b73c6636bde5263ef5263f74a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63 ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a5aff425aff 4a5aff425aff4a5aff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff42 5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5af75a6bf75a63e73942b500007b2131ce2139ef2131f72131ff2131ff1831ff 1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 29ff1831ff1829ff2131ff1829ff1831ff1831ff1831ff1029ff1831ff1831ff1831ff1829ff1831ff1829ff1831ff1831f72139f72131ef3939ef4242de4239 c621188c08084a00002100081800081008081000000808080800000000080000000000080800000800002100002908005218107b4239c63939d62931ef2129ef 2131ff1831ff1831ff1831ff1831ff1029ff1831ff1029ff1831ff1031ff1831ff1831ff1831ff1829f72131ff2131ff1829ef2931ef3139e73139d62931a510 18730808420000290000180000100808100000080808080000000808080000080800080000080808100800080000100000210000420000634a42ce3131d63942 ef2131ef2931f72129f72931ff3139f73139e71821c600009c00008c00008c00008410189c3139c63942ce3139c63942d63942ce3942ce3942c6424ace3939bd 2129a50000840000840000840000941818b53939de3131ef3131ff2931ff2939ff2131ff2131ff1829ff2129ff1829ff2131ff2131f72939ef3142ce10187300 002908313173b5946bbd8c63b57b63bd8463bd8c5ab58463bd8463bd8c63bd8c6bbd8c6bb58c6bb58c6bb5847bb58c427b520029080839185a947373a58473b5 8c7bb59473ad8c295a39083918083118002910083118002910083118003110003110003918003918003918316b4a7bad8c7bad8c6ba58473ad8c003918002900 39734a7bb58c7bbd9463ad846bbd8c63b58463bd845abd8c5abd8c5abd8463bd8c63bd8463bd8c63bd8463bd8c63bd8c63bd8c63bd8463bd8c63bd8463bd8c63 bd8463bd8c63bd8c63bd8c63bd8463bd845abd8463bd845abd8463bd8c5abd8463bd845abd8463bd8c5abd8463bd845abd8463bd8c5abd8463bd845abd8463bd 8c5abd8463bd8c5ab58463bd8c5abd8463bd8c5abd8463bd8c5abd8463bd8c5abd8463bd8c63bd8463bd8c5ab58463bd8c5abd8463bd8c5abd8463bd8c5abd84 63bd8c5ab58463bd8c5abd8463bd8c5abd8463bd8c5abd8463bd8c5ab58463bd8c63bd8c63bd8c5ab58463bd8c5abd8463bd8c5ab58463bd8c5abd8463bd8c63 b58463bd8c63b58c63bd8c63b58c6bbd8c63bd8c63bd8c63b58c73b58cd6ffe7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffeff7ff737bbd636bde5263ef4a5af75263ff4a52ff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff425a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a 5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff 425aff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff5263ef5a6be73139ad00007b1829c62139ef2131f721 31ff1829ff1831ff1029ff1831ff1029ff1829ff1829ff1831ff1829ff1829ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1831ff1829ff1831ff1829 ff1831ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1029ff1831ff1029ff1831ff1829ff1831ff1829ff1029ff1029ff2139ff2139ef3139e7 4242e73939c610087310085200002900001800000800080800000000000800000008000800000008080000000000000800001000002100003100004a18107b31 31b54242e73139ef2129ef2139ff1831ff1831ff1029ff1831ff1029ff1831ff1831ff1031ff1029ff1831ff1029f72131ff2131ff1829ef2131ef3139ef3139 d63942bd00005a00003900002100001808001000000800000000000000000000080000000000000000000808000808000800000000000800001000002900004a 00006b3939bd3939d63142ef2929ef2931ff1821ef2931f72931ef3942e73139d63131c600008c00008400007b00007300007b00008400088c00088c00088c00 088c00007b00007b0000730000840000841018a52129c63939e73139ef2931f72121f72129ff2131ff2131ff1829ff1829ff1829ff1829ff1829ff2131f72131 e73942ce10106b00002900292973ad8c63b58463b57b52ad735ab57b5ab57b5ab57b5ab57b5ab57b5ab57b63b57b52ad7363b57b63ad7b7bbd94104a21002100 1042187bad8c7bb58c639c7b7bb58c6bad8473ad8c7bb59473ad8c84bd9c73a58484bd9c639c7b84bd9c73ad8c7bb58c73b58c7bad8c7ba5847bad848cbd9410 4221002100084a215a946b73bd8c5aa57b6bbd8463b57b5ab5845ab57b52b57b52b57b52b57b52b57b5ab57b5ab57b5ab57b5ab57b5ab57b5ab57b5ab57b5ab5 7b5ab57b5ab57b5ab57b5ab57b5ab57b5ab57b5ab57b52b57b5ab57b52b57b5abd7b52b57b5abd7b52b57b5abd7b52b57b5ab57b52b57b5ab57b52b57b5ab57b 52b57b5ab57b52b57b5ab57b5ab57b5ab57b52b57b5ab57b5ab57b5abd8452b57b5ab57b5ab57b5abd845ab57b5ab57b5ab57b5ab57b52b57b5abd7b52b57b5a bd7b52b57b5ab57b52b57b5ab57b52b57b5ab57b52b57b5abd7b52b57b5ab57b52b57b5ab58452b57b5ab57b52b57b5ab57b52b57b5ab57b52b57b5abd7b52b5 7b5ab57b5ab57b5ab5845ab57b5ab5845ab57b5ab5845ab57b5ab57b5ab57b63b58463ad7b7bad8cf7fff7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efff636bc65a63ef5263ff4a63ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff 525aff4a5aff4a5aff4a5aff5263ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a 5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525a ff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff 525aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a 5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff5a63f75a63e73942b500007b2131 ce2131ef2131ff2129ff2131ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff1831ff1831ff1831ff1829ff 1831ff1831ff1831ff1829ff1831ff1831ff2131ff1829ff2131ff1829ff2131ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff2131ff1829ff2139ff18 29ef2939ef3942de3139bd10107b00004a0000310000210000100008080000000808080800080800080000000808080000000808000000000000080000100000 180000290000420810733942bd424ade3142ef2131ef2139ff1829f71831ff1831ff1831ff1829ff1029ff1831ff1831ff1829ff2139ff1831ff2139ff2131f7 2931e73942e73139bd18218400004200002900001800001008081000000808000800000008080800080000080800000008001008000808000808000808080800 000800001800002900004a08086b3139bd3139d63139e72929ef2931ff2129ef2939f72131e72939e7394aef3939de1818b50000940000840000840000730000 7b00007300007b00007b00007b00007b00089408109c3139ce3942e7424af73139ef2931f71821ef2129ff2131ff2131ff1831ff1831ff1829ff2129ff1829ff 1831ff1831f72939e73142ce18187300002908313163a58463b57b5ab57352b57352b57352bd7352b5735ab57b52ad7352b57352b57363bd7b5ab57352a56b73 bd8c6bb584084a180031000842185a946b84bd946ba57b6ba57b73b58c63a57b6bad8c63a58463a58463a57b6ba5846bad846ba57b639c7373ad846ba57b84b5 8c7bad84316339002900003108529c6373bd8c5aad7363bd845ab57b52b57352ad735ab57b52ad735ab57b52b5735ab57352b5735ab57352b5735ab57352b573 5ab57352b5735ab57b52b5735ab57b52b57352b57352b5735ab57b52b57352b57352b5735ab57b52b5735ab57b52b5735ab57b52b5735ab57b52b5735ab57b52 b5735ab57b52b5735ab57b52b5735ab57352b5735ab57352b57352b57352b5735ab57352b57352b57352b5735ab57352b57352b57352b5735ab57352b5735ab5 7352b5735ab57b52b5735ab57b52b5735ab57b52b5735ab57b52b5735ab57b52b5735ab57b52b5735ab57b52b57352b57352b5735ab57b52b57352b57352b573 5ab57352b5735ab57352b5735ab57b52b5735ab57b52b5735ab57b52b5735ab57b5ab57b5ab57b5aad736bb584639c73effff7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffced6ff6b73de5263f74a5aff4a5aff4a5aff4a5aff525aff4a52ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a52ff4a5aff4a52ff525aff4a52ff4a5aff4a52ff525aff4a52ff4a5aff4a52 ff525aff4a52ff525aff4a52ff525aff4a52ff4a5aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff 4a52ff525aff4a52ff525aff4a52ff4a5aff4a52ff525aff4a52ff4a5aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff4a5aff4a52ff4a 5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252 ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff5263f75a63e7 3139ad00007b2129ce2939ef2129f72129ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff18 31ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1829ff1829ff1829ff1829ff1029ff1831ff1829ff1831ff1029ff1831ff1829 ff1829ff1829f72131ef3139de3942c6101884000052000031000021000008000008000000000800000000000000000000080008000000080000000000000800 00000000000800000800001000002900004208086b2931ad3942de2931de1829e72939ff1831ff1831ff1831ff1829ff1829ff1829ff1829ff1829ff1021f718 31ff1831f72131ef2939de3942ce21218c0000520000290000180000080808100000000800080000000808080000000008000000000000000000000800080000 000808080000000808100000080000210000210000420000632129ad3139d63131e72931ef3139ff2131ef2131ef2131ef2129e73139ef3139ef3139de3139ce 2121ad1821a510189c1018a508109c1018a51821b52931c62931ce3139de2931de3139ef2129e72129ef1829f71829f71829ff2131ff1829ff1831ff1029ff18 29ff1829ff1829ff1829ff1831f72139e73142ce08106b00002908312963a57b5aa5735ab5734aad6352b56b4aad6352b56b4aad6b52b5734aad6b52b56b4aad 6352ad6b5ab57b52a56b5aa56b63ad73185a21003100003108215a3163a5736bad7b5a9c7363a57b52946b5aa57b5aa57b63a57b63a57b63a57b6bad846ba573 6ba57b6ba57331633900310000290018522152946373c68c4aa56b52ad6b4aad6b4aad6b4ab56b52b57352ad6b52b56b52ad6b5ab56b52ad6b52b56b4aad6b52 b56b52b56b52b56b52b56b52b56b52ad6b52b56b4aad6b52b56b4aad6b52b56b4aad6b52b56b4aad6b52b5734aad6b52b57352ad6b52b5734aad6b52b5734aad 6b52b57352ad6b52b57352ad6b52b5734aad6b52b56b4aad6b52b56b4aad6352b56b4aad6b52b56b4aad6352b56b4aad6b52b56b4aad6352b56b4aad6b52b56b 4aad6352b56b4aad6b52b56b4aad6b52b56b52ad6b52b56b4aad6b52b56b52ad6b52b56b4aad6b52b56b52ad6b52b56b4aad6b52b56b52ad6b52b56b4aad6b52 b56b4aad6b52b56b4aad6b52b56b4aad6b52b56b52ad6b52b56b52ad6b52b56b52ad6b52b56b52ad7352b5734aa56b52ad735aad736bad7be7ffeff7fffff7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ff737bce5a63de5263f74a5aff425aff4a5aff525a ff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a63ff4a5aff4a63ff4a5aff525aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4a5aff525aff4a5aff 4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a 5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525a ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff 4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff525aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5af75a63f75a63e73942b500007b2131ce2139ef2131ff1829ff2131ff1829ff1829ff1829ff1831ff1829ff2131ff1829ff2131ff1829ff2131ff1829ff1831 ff1831ff1831ff1829ff1831ff1831ff1831ff1829ff1831ff1831ff1831ff1829ff2131ff1831ff1831ff1829ff2129ff1829ff1831ff1029ff1831ff1831ff 1831ff1831ff2131ff2131f72129e73942ef3942ce08107b00005200002900001800000800000800000008080808080008080800000008080800000008000800 00000808080000000808080000000808080000080000180000290000420008632129a53942d63142e72131ef2131ff1831ff1831ff1831ff1831ff1829ff2931 ff2131ff1831ff1831ff2139f72939de3139c608087b000052000031000018000008000808000000000000000000080008000000080808000000000800000000 00000800000008080800000008080800000000080800081000001000002100004a0000634242bd3939d63139e72129e72931f71829ef2139ff2131f72131f718 29ef3139f73139ef3942e73139de3939de3139de3942e73942e73942ef3142ef3139ef2131e73139f72931f72131f72129f72131ff2129ff2131ff2131ff1831 ff1831ff1831ff1829ff2131ff1829ff1831ff1831f72939ef3142ce10186b0000291039315a9c7352ad6b4aad634aad634aad6342ad6342ad6342ad6342ad63 4aad6342ad634ab56b42ad5a52b5734aa56352ad6363b5735aa56b297339084210002900002900084a184a845a6bad7b73bd8c63a57b63a57363ad7b639c7363 a5736ba57363946b215a29002900002900003100316b3952945a63b57b429c5a4aa56342ad634ab56b39a55a42ad634aad6352ad6b52ad6b52ad6b52ad6352b5 6b4aad634ab5634aad6352b56b4ab5634ab5634aad634ab56b4aad634ab5634aad634ab5634aad634ab5634aad6352b56b4aad6b52ad6b4aad6b52b56b4aad6b 52b56b4aad6352b56b4aad6352b56b4aad6352b56b4aad6352b56b4aad6352b56b4aad6352b5634aad6352b5634aad634ab5634aad6352b5634aad634ab5634a ad6352b5634aad634ab5634aad6352b5634aad634ab5634aad6352b56b4ab56352b56b4aad6352b56b4ab56352b56b4aad6352b56b4ab56352b56b4aad6352b5 6b52ad6352b56b4aad6352b56b4ab56352b5634aad6352b5634aad6352b5634aad6352b56b4aad6352b56b4aad6352ad634aad6352b5734aad6b52ad6b63ad73 6b9c73e7ffe7efffeff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ff6373c65a6be74a5af74a63ff 4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4252ff4252f74a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a 5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52 ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff425aff4a 5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a52ff4a5af7525aef5a63e73939ad00007b1829c62139ef1831f72131ff1829ff1831ff1829ff1829ff1829ff1829ff1829ff1831ff1829ff1829ff 1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1029ff1829ff1021ff1829ff1029ff10 29ff1029ff1831ff1831ff2131ff2129ef2931ef3131de3939ce18188c0000520000310008210000080000000000000000000000000808080000000808080000 0008000000000000000000000008000000000008000000000008080800000800001800002900004200005a2129a5424ade2939de2129e72939ff2131f72131ff 0821ef2139ff2131ff1829f72131ff1029de2939de394ad618218c00005200002900002100000800000000000000000008000008080800000000000000000000 000000000000000000000000000800000000000000000000000000000000080800080800001000002900004200005a3939b53939ce3131de3139ef2131ef1029 f71831ff1029f72131ff2131ff2939ff2931ef2931ef2931e72931ef2931e72931ef2129ef2131f72129f72131ff1829f72131ff1829f72131ff2129ff2131ff 2131ff1831ff1029ff1831ff1029ff1831ff1829ff1829ff1029ff1839f72139e73142ce08106b000829083129529c734a9c634aad6339a55242ad5a39a55242 ad5a42a55a42ad5a42a55a42ad5a42ad5a42ad5a31944a4aad634aa55a4aa55a52ad6b6bb573428452185221002900003100002900084a18105a213173423984 4a428452428452296331104a18003908002900003100104a184a8c525a9c636bb57b4a9c5a399c5252b57342ad6329944a42ad6342ad634aad6342a55a42a55a 4aa55a4aa55a42a55a42ad5a42ad5242ad5a42ad5242ad5a42ad5a42ad5a42a55a42ad5a42a55a42ad5a42a55a42ad5a42a55a42ad5a42a55a42ad5a42a55a4a ad6342a55a4aad6342a55a4aad6342a55a4aad6342a55a4aad6342a55a4aad6342a55a4aad6342ad5a42ad5a42ad5a42ad5a42a55242ad5a42a55242ad5a42a5 5242ad5a42a55242ad5a42a55242ad5a42a55242ad5a42a55242ad5a42ad5a42ad5a42a55242ad5a42a55242ad5a42a55242ad5a42ad5a42ad5a42ad5a42ad5a 42ad5a4aad5a42ad5a4aad5a42ad5a4aad5a42ad5a4aad5a42ad5a4aad5a42ad5a42ad5a42ad5a4aad5a42ad5a4aad5a42ad5a4aad5a42ad5a4aad6342a56342 ad6342a5634aa5635a9c6b6ba5736b9c73e7ffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefffd6e7ff63 73de525af74a5aff4a63ff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a63ff4a5aff4a63ff425aff4a5aff425aff4a5aff425aff4a5a ff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff 4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff 525aff4a5aff4a5aff4a5aff525aff4a5af75a63f75a63e74242b500007b2131ce2139e72131f71831ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff18 31ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1829 ff1029ff1831ff1029ff1831ff1031f72139ff2131ef3139ef3942de4a4ad618188c00005a000039000029000010080808080008080808000008080008000000 08000800000008080800000008080800000008000800000008080808000008080800000808001008001800001800003108084a00005a2931a53942ce3139de31 39ef3139ff2131f72939ff1831f71831ff1829ef2939ef3142de424ace21298c0000520000310808210000080000080008000008000000000808000800000800 0800000008000800000000080000000000080800000008000000000008080800000000000800000000000800081000001008002908004200005a3129a53942ce 2939d62939ef2139f71029f72131ff1831ff1829ff2131ff2931ff2131ff2931ff2131f72131ff2131ff2131ff2129ff2131ff1829ff2131ff2131ff1831ff18 29ff1829ff1829ff2131ff1829ff1831ff1829ff1831ff1829ff1829ff1829ff1831ff1831f72139e73142ce10186b00002908393152946b4aa56342a55239a5 5239a55242ad5239a55242ad5a39a55242ad5a39a55239a5524ab56342ad5a42a5524aad5a429c52429c524a9c5a63a56b52945a4a8c52296b31084a10003100 004208003900003908003900003900003900003900003900316b314a8c52529c5a4a9c5a42945252ad6b4aa563399c524aad6342ad5a39ad5a42ad5a39a55231 9c5239a55239a5524aad5a42a55242a55239a55242ad5239a55242ad5239a55242ad5a39a55242ad5239a55242ad5a39a55242a55239a55242ad5239a55242a5 5239a55242a55a39a55242a55a39a55242ad5a39a55242ad5a39a55242ad5a42a55242ad5a39a55242ad5a42a55242ad5239a55242ad5239a55242a55239a552 42ad5239a55242a55239a55242ad5239a55242a55239a55242ad5239a55242ad5239a55242ad5239a55242a55239a55242ad5239a55242a55239a55242ad5239 a55242ad5239a55242ad5239a55242ad5239a55242ad5242a55242ad5239a55242ad5a42ad5242ad5239a55242ad5a39a55242ad5a39a55242ad5a42a55242ad 5239a55239a55242a55a42ad6342a55a4aa55a529c5a5aa56363946bf7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7ffffd6e7ff6b73c65a63ef525aff4a5aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4252ff4a5aff 4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a 5aff425aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff 4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff525aff4a52ff4a 5aff4a52ff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5af7525aef6363e73939ad00007b1831c62139ef1831f72131ff1829ff1831ff1029ff1831ff1029 ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1831ff1029ff1831ff1029ff1831ff1029ff1829ff 1029ff1029ff1829ff1831ff1029ff1831ff1831ff1831f72131ef3139ef3139d63939c629299c00005200003900082900001000000800000808000808000808 00080000080000080000000000000000000808000000000000000000000800080000000800080000080800080000080000100000080000210000210000420000 4a2121944242ce2931d62131e72939f72131f72131f71831ef2942f72939d6394ace10187b00004a000029000018000008080810000000000000000000000000 00000008000000000008000800000000000000000000000000000000000000000000000000000008000800000008081000000800000800000800001000002100 003100004a21218c3139bd2939d62939ef1829ef1029f71029ff1831ff1831ff1829ff2131ff1831ff2131ff1829ff1829ff1829ff1829ff1829ff1829ff1029 ff1831ff1029ff1831ff1829ff1829ff1029ff1829ff1829ff1831ff1029ff1829ff1829ff1831ff1029ff1831f72139e7394ad6081063000829003129529c6b 42945242a552319c4239a552319c4a42ad52399c4a42a552399c4a39a54a39a552319c4a39a55239a552319c424aa55239944a42a5524aa55a428c4a39844252 9c5a5a9c635aa563428442397b42317331317331397b424a9452529c5a52945a428c4a4a9452429c523994524aa55a39944a399c4a39a55229944239a55242ad 5a31a54a319c4a39a55231a54a39a552319c4a39a54a31a54a39a54a31a54a39a54a31a54a39a55231a54a39a54a31a54a39a54a31a54a39a54a31a54a39a54a 319c4a39a54a319c4a39a54a399c4a39a54a39a54a39a55239a54a39a54a39a54a39a54a319c4a39a54a39a54a39a55239a54a39a54a39a54a39a54a31a54a39 a54a31a54a39a54a319c4a31a54a31a54a39a54a319c4a39a54a31a54a39a54a319c4a39a54a39a54a39a54a31a54a39a54a39a54a39a54a39a54a39a54a39a5 4a39a54a31a54a39a54a39a54a39a54a319c4a39a54a31a54a39a54a319c4a39a54a31a54a39a54a319c4a39a54a31a54a39a54a319c4a39a54a319c4a39a54a 319c4a39a54a31a54239a54a319c4a39a552319c4a31a54a399c4a42a55242944a5a9c63e7ffefffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffeff7ff737bb56b73d65a63e75263ff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff42 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a52ff4a5aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525aff4a52ff525a ff4a52ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff5263ff4a5af75a63f75a63e74242b50000732131ce2139ef2131f71829ff2131ff1831ff 1831ff1831ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1831ff1831ff10 29ff1831ff1029ff1831ff1029ff1831ff1029ff1031ff1829ff2131ff1829ef3139ef3942de3939c61818840000520000390000290000180808100000080800 08080008080008000008080008000008000008000000000808000000000808000000080808000000080008000008080010080008080008000008080810000010 00081800002100003900005218188c3131bd3942e73142ef1831e71831ef2939ef2139de3942ce18218400004200002908001800000808081000000800000800 00000808080000000800000800000800080000000000080000000000080000000000000000000808000000000800080800080800080000080800080000080000 080008080008100000180000310000420810733942bd3139d63139ef2129ef2131ff2131ff2131ff1831ff1831f71831ff1831ff1831ff1829ff1831ff1829ff 1831ff1029ff1831ff1831ff1831ff1831ff1831ff1029ff1031ff1029ff1831ff1829ff1831ff1829ff2131ff1829ff1831ff1831f72139e73142ce08106b00 00210839314a946b399452399c4a319c42319c4239a54a399c4239a54a319c4a319c4a319c4239a54a319c42319c4a29943939a54a4ab55a42a552298c393194 4a42a55252ad63399c4a39944242944a529c52529c52529c52529c524a9c5242944a4a9c524aa55a42a552319442399c4a399c4a31944a319c4a42ad5a42ad52 42ad5a299442319c4a319c4231a54a319c4231a542319c4231a54a319c4231a54a319c4231a54a319c4231a54a319c4231a54a319c4231a54a319c4231a54a31 9c4231a54a319c4231a54a319c4231a54a319c4239a54a319c4239a54a319c4239a542319c4239a54a31a54239a542319c4239a54a31a54239a542319c4239a5 4a319c4231a54a319c4231a54a319c4231a54a299c4231a54a319c4231a54a299c4231a54a319c4231a54a319c4239a54a31a54231a54a319c4239a54a31a542 31a54a319c4239a54a31a54231a54a31a54239a54a31a54a39a54a31a54239a54a31a54239a54a319c4239a54a31a54231a54a31a54239a54a31a54231a54a31 9c4239a54a319c4a31a54a319c4239a54a31a54239a54a31a54a31a54231a53939ad4a319c4242a552429452e7ffefeffff7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7fffff7f7ff7373bd636bce5a63ef5263ff425af74a5aff4a5aff4a5aff4252ff4252ff4252f74a5aff4252 ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff 4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a 5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff 4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4252ff4252f7525af7525aef5a63e73139ad0000841829c62139e72131f721 31ff1829f71831ff1829ff1029ff1029ff1829ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1829ff1829ff1831ff1029ff1829ff1029ff1831ff1829 ff1829ff1029ff1831ff1029ff1031ff1029ff1031ff0829ff1031ff1029ff1829ff1829ef3139ef3942e74242ce18188408085a000031000021000010000008 00000000000800000008000800000000000800000000000800000000000800000000080000000000080000000000000800000808001000000800000800000000 00080000000008080000080000180000210000390000521018842931b53142d62139de2939e72939de3942d618188c00004a0000210800100800081008080000 08000008000000000000000000000000000000080000000000000000000000000008000000000000000000000000000000000000000000080008000000080008 00000808000800000000080000000000081000001800003100004200086b4a4ace3939d62931de3139f72131f71829f72139ff1831f71031f71031ff1029ff10 29ff1021ff1831ff1021ff1829ff1029ff1831ff1029ff1831ff1029ff1029ff0829ff1029ff1029ff1829ff1029ff1829ff1829ff1829ff1829ff1831f72131 e7394ad608106b000829003129428c5a39944a319c42218c31319c39299c39319c39319442319c42319c42319c42299c39319c39319c42319c42299439299439 298c39319c42299c42299439298c39319c42399c42399c42399439399442398c39429442399442399c42319439319442299439319c42319c42319c4229943931 9c42299439299439319c4239a54a299439319c42299c39319c42299c39299c39299c39299c39299c39299c39299c39319c42299c39319c42299c39319c42299c 39299c39299c39319c42299439299c39299439299c42299c39299c39299c39319c42299c39299c39299c39319c42299c39299c39299c39319c42299c39299c39 299c39319c42299c39299c39299c39299c39299439299c39299c39299c39299439299c39299c39299c39299439299c39299c39299c39299c39299c39299c3929 9c39299c39299c39299c39299c39299c39299c39299c39299c39299c39299c39299c39319c42299439319c39299c39319c42299c39299c39299c39299c39299c 39299c39299c39319c42299c39299c42299c39319c42299c39319c4229943931a542299c3931a539319c39319c39299439429c5252845af7fff7f7fff7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffeff7ffd6e7ff636bde5a6bf75263ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff425aff4a5aff4a 5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5a ff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a63ff5263f75a6bf75a63e73942b500007b2939 d62139e72131f72131ff2131ff1829ff1829ff1831ff1831ff1829ff2131ff1831ff1831ff1829ff1831ff1829ff1831ff1829ff2131ff1831ff1831ff1829ff 1831ff1831ff1831ff1029ff1831ff1029ff1831ff1831ff1831ff1831ff1031ff1029ff2131ff2131ff2931f73939ef4242d629299408085a00003108002100 00100800100000000808080000000808080000000808080000000808080000000000080000000000080000000008080000000000000000000000080000080800 0800000808080800080008080000000008080800000808001800002100003100004a08106b2939ad4252de394ad62931bd21299c00005a000031080021000008 08080808000008080800000008080800000000000000000000000800000000000000000000000800000000000800000000000800000000080000000008080008 00000800080800000800080800000008000008000810100808080000100000180800310000420808633939b54242d62931de2931ef2131f72939ff1031ef1831 ff1029ff2139ff1831ff1831ff1029ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1029ff1831ff1029ff1831ff1829ff1831ff1829ff2129ff1829ff 2131ff1831f72939e73142ce10106b000829104239317b4a429c52298c39319c42299c39319c39299431299c39299439299c39299431319c39219431319c3929 9c39299c39299431299439299439299c39219431299c39299c39319c39319431319c39319439319439319431319c39319c39319c39219431299c39299c39319c 39299431299c39299c39319c39299431299c39299c39299c39299431299c39299c31299c39299431299c39299c31299c39299431319c39299c31299c39299431 319c39299c39299c39299431319c39299431299c39299431319c39299431299c39299431319c39299c39299c39299431319c39299c39299c39299431319c3929 9c39299c39299431319c39299c31299c39299431299c39299431299c39219431299c39299431299c39219431299c39299431299c39219431299c39299c31299c 39299431299c39299c31299c39299431299c39299c31299c39299431299c39299c31299c39299431299c39299c31299c39299431319c39299c31319c39299c31 319c39299c39319c39299c31319c39299c39319c39299c39319c39299c39299c39299c39319c42299431299c31299c31299431319c39299439318c424a845ae7 ffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffeff7ffced6ff5a63de5263ef4a63ff4a5af752 63ff4a5af74a5af74252f74a5aff4a52f74a5aff4a5af74a5aff4a5af7525aff4a5af74a5aff4a5af74a63ff4a5af74a5aff4a5af74a5aff4a5af74a5af74a5a f74a63ff4a5af74a63ff4a5af74a63ff4a5af74a5aff4a5af74a63ff4a5af74a63ff4a5aff4a63ff4a5af74a5aff4a5af74a5aff4a5af74a5aff4a5af74a5aff 4a5af74a5aff4a5af74a63ff4a5af74a5aff4a5af74a63ff4a5af74a5aff4a5af74a63ff4a5af74a5aff4a5af74a63ff4a5af74a5aff4a5af75263ff4a5af752 63ff4a5af75263ff4a5af74a5aff4a5aff5263ff4a5af7525aff4a5aff525aff4a5aff525aff4a5af74a5aff4a5af74a5aff4a5af74a5aff4a5af74a5aff4a5a f74a5aff4a5af74a5aff4a5af75263ff4a5af7525aff525af75263ff4a5af7525aff4a5af75263ff4a5af75263ff4a5af74a5af74a5aef5263ef5263e75a63de 3942b500007b1831c62942ef1831ef1829f71829ff2131ff1029f71831ff1829ff1829ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1831ff1829f718 31ff1829ff1831ff1829ff1831ff1829ff1831ff1829ff1829ff1029f71831ff1029f71029f71031f71831ff1829f73131f73939ef3939d621189400085a0000 31000021000010080008080008080008000000000000000000000800000000000800000000000000000000000008000000000008000000000000000000000000 00000000000800000000000800000000080000080008080008000008000808001008001000001800002900003908186b3139a54252bd18218c08086300003900 00290000100808080800000808000800000808080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000008000000000008000008000008000000000008000000000008080800000008001000001808003100003900005a3939b53131ce3131de2931ef 1829ef2139ff1831ff1831ff1029f71029f71829ff1829ff1829ff1829ff1829ff2131ff1829ff1831ff1829ff1831ff1831ff1831ff1831ff2131ff1831ff21 31ff2129ff2131ff1831f72139f72939e73942ce081063000829184a39317342318c42218c31188c29219431219429299431299431299431218c292994312194 29299431219429219431219429299c31218c31219431219429299431219429219429218c29299431298c29299431299431299431218c29299431299429299431 219429219431219429299431219429299431219431299c31218c29219431219429219431218c29219429219429299431218c29299431219429299431218c2929 9431219429299431218c29299431219429299431218c292994312194292994312194292994312194312994312194312994312194312994312194312994312194 31299431219431299431219431299431219431299431219431299431219429299431219429299431219429299431219429299431219429299431219429299431 219429299431219431299431219431299431219431299431219431299431299431299c31219431299431219431299431219431299431299431299c3129943129 9431299431299c31299431299c31299431299c31299431299431299431299431299431299431299431299c39218c29299439319c39319c31298c292994313994 42398c4ad6ffe7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffe7efff6b73ce5a6b e75263ef5a63f75263ef5a63f7525aef5a63f7525af75a63f75263f75a63f75263ef5a63f75263ef5a63f75263ef5a63f75263ef5a63f75263ef5a63f75263ef 5a63ef5263ef5263ef525aef5263ef525aef5263ef525aef5263ef525aef5263ef5263ef5263ef525aef5263ef5263ef5263ef525aef5a63ef5263ef5263ef52 63ef5a63f75263ef5263ef5263ef5a63f75263ef5263f75263ef5a63f75263ef5263f75263ef5a63f75263ef5a63f75263ef5a63f75263ef5263f75263ef5263 ef5263ef5263ef5263ef5263ef5263ef5263ef525aef5263ef525aef5263f7525aef5a63f7525aef5a63f7525aef5a63f75263ef5263f75263ef5263f75263ef 5263f7525aef5263f75263ef5263f75263ef5263f75263ef5263f75263ef5a63f75a63ef5a63ef5263ef5a63f75a63ef5a63ef5a63ef636bf75263ef5a6bef5a 6bef636be75a63d64242ad0000732131c62131de2131ef2131f72131ff1831ff2131ff1829ff2131ff1831ff2131ff1831ff2131ff1831ff2131ff1831ff2131 ff1831f72131ff1831f72131ff1831ff2131ff1831ff2131ff2131ff2131ff1831ff2139ff1831f72139ff2131ff1031ef2131f72931ef2931de4a4ade29219c 08086300003900002100001008001008000808000808000808000800000008080000000000080000080008080000000000000800000000080800000800080800 00000000000000000000000000000000080000000008000000000808000000000800080800080800080800080808100000100008290000310810522129731010 5a000039080831000010000008000000080800000000080808080000080008000000000800000000000008000000000800000000000000000000000000000000 00000000000000000800000008000000000008080008000008080008000010080808000008000808000010081008000808001000001808002900003900005a31 31ad4a52e73139e72931ef1829ef1031ef1831f71831f72139ff1831ff1831ff1831ff1829ff2131ff1829ff2131ff1829ff2131ff2131ff2131ff2131ff2131 ff1831f72131ff1831ff2131ff2129ff2131f72131ef2939e73142c610186b000021184239297339318439218c31299431219429218c29188421218429218429 298c29298c29299431218c29219429218c29218c29218c21298c29298c29298c29218c29218c29218c29298c29218c29218c29218421298c29218c29298c2921 8c29298c29218c29298c29218c29298c29218c29299431218421218c29218c29218c29188c21299429218c29218c29218c21298c29218c29218c29218c29218c 29218c29218c29218c29218c29218c29218c29218c29218c29218c29218c29218c29218c29218c29218c29218c29298c31218c29218c31218c29298c31218c29 218c31218c29298c31218c29218c31218c29298c31218c29218c31218c29298c29218c29298c29218c29298c29218c29298c29218c29298c29218c29298c2921 8c29298c29218c29298c29218c29298c29218c29298c29218c29298c31218c29298c29218c29298c31218c29298c29218c29298c31218c29298c29218c29298c 29218c29298c29218c29299429218c29299429218c29299431298c29298c31218c29298c31298c29298c31218c29299431218c29298c31218c31218429218429 399439318431318439397b39effff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff eff7ff6b7bb5636bce636bde5a63d65a6bde5a63de636be76363de636be76363de636be7636bde636be76363de636be75a6bde636be75a6bde636bde5a6bde63 6bde5a6bde636bde5a6bde636bde5a6bde636bde636bde636bde5a6bde636bde5a6bde636bde5a6bde636bde636bde636bde5a6bde636bde636bde636bde5a63 d6636bde5a6bde636bde5a6bde636bde5a6bde636bde5a63d65a6bde5a63de636bde5a63d6636bde5a63de636bde5a63de636bde5a6bde636bde5a63de636bde 5a6bde636bde5a6bde636bde5a6bde636bde5a6bde636bde5a6bde636bde5a63de636bde5a63de636be75a6bde636be7636bde636be75a63de636be75a6bde63 6be75a63de636be75a6bde636be75a63de636bde5a63de636be75a63de636bde5a63de636bde5a63d6636bde6363de636bde5a63de636bde636bde6b6bde636b d6636bde636bde6b73de636bd66b73ce42429c0000632131bd2942e72939ef2939f72131f72131f71831f72131ff1831f72131ff2131f72131f71831f72131ff 2131f72131ff1831f72131f72131f72131f71829f72131ff2131f72131ff2131f72131ff1831f72131f71831f71029ef1829ef1831ef2939f73142f73942ef42 42d63931ad10086b0000390000210000080008080000000808080000000800080800080800080000000000000000000808000000000008000000000000000000 00000008000008080008000000000000000000000000000000000000000000080800000000000000000000080008000000080008000800000808000008000821 00002108003100002900002100001800001000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000080000000000000000000800000000000800000000000800000800001000080800000800000800000000080000080800100000 0800001800003900005a18219c424ad63139de2931e72939ef2131ef2131ef1831f71831f72131ff1831f72131ff1829f71831ff1829ff2131ff1829f72131ff 1829f72131ff1829f72131f71831f72131ff2129f72131f71831f72139ef2939de394ace10186b000021104231317b4a297b31298c31218c29218c29218c2129 8c29298c29298c31298c29298c29298c29298c29218c29298c29218c29298c29298c29298c31298429298c29298c29298c31298c29298c29298c29298c312184 21298c29218429298c29298429298c29298429298c29298c29218c29218429298c29298c29298c31218421218c29298c29298c29218429298c29218429298c29 218429298c29218429298c29218429298c29218429298c29218429298c29218429298c29218429298c29218429298c29218429298c29218429298c2921842929 8c31218429298c29218429298c31218429298c29218429298c31218429298c29218429298c31218429298c29298c29298c29218429298c29298c29298c292184 29298c29298c29298c29218429298c29298c29298c29218429298c29298c29298c31218429298c31298c29298c31218429298c31298c29298c31218429298c29 218429298c31218429298c29298c29298c29218429298c29218c29298c29298c29298c29298c29298c31298429298c31298429298c31218c21298c2921842929 8c31298c31318c31317b31428439397b42427342efffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7ffffeff7ff525a94525a9c525aa54a529c5252a55252a55252ad5252a55252a54a52a55252a54a52a55252a54a52a55252a54a52a55252 a54a52a55252a54a52a55252a54a52a55252a54a52a55252a54a52a55252a54a52a55252a54a52a55252a54a52a54a52a54a529c5252a54a52a55252a54a52a5 5252a54a52a55252a54a52a5525aa54a52a55252a54a52a5525aa54a52a54a52a54a52a55252a54a52a55252a54a52a5525aad4a52a54a52a54a52a5525aad4a 52a55252a54a52a5525aad4a52a54a52a54a52a54a5aa54a52a54a52a54a52a54a52a54a52a54a52a54a52a55252ad4a52a55252ad4a52a5525aad5252a5525a ad5252a5525aad5252ad5252ad5252a5525aad5252ad5252ad4a52a55252ad5252a55252ad4a52a55252ad4a52a5525aad4a52a5525aad4a52ad525aad5252a5 525aad5252a55252ad5252ad525aad4a52a55252a552529c3931730000521829a52939d62939e71021de1829e71829e71829ef1021e71829ef1029e71829ef10 29e71829ef1029e71829ef1029e71829e71029e71829ef1029e71829ef1029e71829ef1029ef1829ef1029e71829ef1829ef1831ef1029e71831ef1829e71831 de1829ce3131c629219c181873000039080829000010000008000000080808080000080008080008080010080008080008000000080808000808080808000000 08080800000008080800000808080800000008000800000008080800000000080800000008080800000008000808000808000808000810080800000008080000 08001008100000080800180800100808180000100000080000080008080000000808080808080800080000080800080000080000080000000800080000000000 08000000000000000000080000000000080000000000000008000000080008000000080000000000080008080000080008080008080808000000080808000000 0808080000000000080000100008210000420808632121943131bd3939d62931de1821de2931ef1829e72131f71021e71029ef1029ef1029ef1029ef1031ef10 29ef1829ef1029ef1829ef1829ef1829ef1029e71829ef1029ef1829ef1829ef1829ef1829de2131d62939bd18186b000829184239317b423184392984313194 39298c31298c31218429298c31298429298429298429298421298429318c31298c29298c29298429318c31318431318c31298431298c31298429298c31298c31 318c31298431318c31298429318c31298431318c31298431318c31298431318c31298429318c31298c31298c31298429318c31318c31318c31298429318c3129 8431318c31298c31298c31298c31298c31298429298c31298c29298c31298429298c31298c31298c31298c31298c31298c31298c31298431298c31298c31298c 31298431318c31298c29318c31298c29318c31298c31298c31298429318c31298c29318c31298c29318c31298c31318c31298c29318c31298c31318c31298c29 318c31298c31318c31298c29318c31298c31318c31298c29318c31298c31318c31298431318c31298c31318c31298c31318c31298c31318c31298c31318c3129 8c31318c31298431318c31298c31318c31298431318c31298c31318c31298431318c31298c31318c31298431318c31318c31318c31318431318c31318c31318c 29298c29298c31298c31298431318431428442427b424a734aefffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7fffff7ffff000021000831000029000029000029000031000029000029000029000031000029000029000029000031 00002900003100003100003100002900003100003100003100002900003100003100003100003100003100003100003100002900003100003100003100003100 00310000310000310000310000310000310000310000290000310000310000310000290000310000310000310000310000310000310000310000310000310000 31000031000031000031000031000031000029000031000031000031000031000031000031000031000031000031000031000031000031000031000031000031 00003100003100003100003100003100003100003100003100003100003100003100003100003100003100003100003100003100003100003100003100003100 003100003100003900003100003100003100003100003100003100083100003100002900004208188c0818ad0010bd1021ce0818ce0018ce0010c60818d60010 ce0018ce0010ce0018ce0010ce0818ce0010ce0018ce0010ce0818ce0010ce0010ce0010ce0810d60010ce0810d60010ce0018d60010ce0010ce0010c61021d6 0010c60810bd1018b51821ad10108400005a00003900002100001000080800000000080000000008000008000808000800000800000800000800000800000000 00080000000000000000000000000000000800080000000800000000000000000000000000000000000008000000000000000000000800080000080808080800 00080808000000080800080808080008080008080008000000100810000000000000000000080808000000080000000000080008000008000008000000000008 00000000000000000000000000000000000000000000000000000000000000000000000800000000000000000008000000000008000008000808000800000000 080000000000000000000800080800000000000800000800002100003900005a10107b2129a51018b51018c60008bd0818ce0010ce0018d60010ce0010d60010 ce0018ce0010ce0018ce0010ce0010d60010ce0010d60010ce0010d60010ce0010ce0010ce0010d60010ce0018c60818b51821a508085a000021002910084a10 004a00005a00005a00006300005a00005a00005a00005a00005200085a00005a00005a00005200005a00005a00005a00005200005a00005200005a0000520000 5a00005200005200005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a000052 00005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00 005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a0000520000 5a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a000052 00005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00 005200005a00005a00005a00005a00005200005a00085208104a10efffe7efffeff7fff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff21292900081000001000001000001000081800001000081800001000001800001000001000 00100000100000100000100000100000180000100000180000100000180000100000180000100000180000100000180000100000180000100000180000100000 18000010000018000010000018000010000010000010000018000010000018000010000018000010000018000010000018000010000018000010000018000010 00001800001000001800001000001800001000001800001000001800001000001800001000001800001000001800001000001000001000001800001000001800 00100000180000100000180000180000180000180000180000180000180000180000180000180000180000180000180000180000180000180000180000100000 180000180000180000100000180000180000180000180000210000100008180000180000180000210000290000391829941021ad0018b50010bd0018c60010bd 0818c60010bd0018c60010c60010c60010c60010ce0010c60010c60010c60010c60010c60010c60010c60010ce0010c60010ce0008c60010ce0010c60018ce00 10c60818ce0008b50810ad1010a52929ad29299408085a0000390000210000100000080000000808080800000800080000080808080000000008080000000000 08000000000008000000080008000000080008000000080808000000080008000000080008000000080000000000080808000000000808000000080808000000 00000800000008000008000008080800000008080000080008080800000008000800000808080800000008080800080008080800000008000800000808000800 00080800080000000000000000000000000000000000000000000800000000000800000000000800080000000000000000000808080000000000000000000800 0800000000000000000000000000000800000000000010080808000008081000001800002900003900004a08086b2931ad1018ad1018b50010bd0818ce0010c6 0010c60010c60010c60010c60010c60010c60010c60010c60010ce0008c60010ce0010c60010ce0010c60010ce0010c60010c60010bd0818b510219c10106300 0829184231105218086310006308086b10006b08086b08086300006300005a00005a00005200005a00005a00005a00005a00005a00005a00005a00005200005a 00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00 005a00005200005a00005200005a00005200005a00005a00005a00005200005a00005a00005a00005a00005a00005a00005a00005a00005a00005a00005a0000 5a00005a00005a00005a00005200005a00005a00005a00005200005a00005a00005a00005200005a00005a00005a00005200005a00005a00005a00005200005a 00005200005a00005200005a00005200005a00005200005a00005200005a00005200005a00005a00005a00005200005a00005200005a00005200005a00005a00 005a00005200005a00005200005a00005200005a00005200005a00005200005a00005a00005a00005200005a00005a00005a00005200005a00005200005a0000 5200005a00005a00005a00005200005a00005a00005a00005200005a08085208e7ffe7f7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffff1821211821211021210818180821180818181021211021211829211021 18102118102118102121102118102121102121182921102118102121102121182921102121182921182921182929102121182929182921182929102921182929 18292918292918292118292918292921312918292921312918292921312918292921313121312921313121312921313121313121393121313121393121313129 39312131312939312131312939392131312139312131312939392931312939392931312939392131312939312131312939392131312939392939393139392939 3931393931393931424231393931424231394239424231393931424231394231424231394231424231394239424a31394239424a314242394a4a39424239424a 394242394a4a31424239424a314242394a4a31424239424a39424a394a4a314242394a4a394a4a424a4a394a4a424a5229294a00003918218c2939bd1831ce18 31d61829d61831d61829d62131de1829d61829de1829de1829de1829d62129de1829d61831de1829de2131de1829de2131de1829de2131e71829de2129de1831 de1829de1029de1831de1829d62931d62931c64242c631299410105a000031000029000010000008000000080000000000080008000000080008000000000000 00000000000000000000000800000000000800000008000000000008000800000000000000000008000000000000000000000008000000000000000000000000 00000000000000000000000000080000000800080000000800000000000808000000000008000000000800080000000808080000000000000000000000000000 00000000000000080008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000080000000008000800000008000800000008000008000808001000001000002100003100005208087b3139c63139d629 39de2131de2131e71831e72139e72131de2131e72131de2931e72131de2131e72131e72131ef2131e72131e72131e72939e72131e72131e72131de2939de2939 ce3942bd18216b000821103929186329186b21187b18107310107308107308187b10107310187b18187318187b18187318187b18187318187b18187310187b18 187318217b21107318187b18107318187318107310187318107310187b18107310187b18107310187b18107310187b18107310187b1818731818731818731818 73181873181873181873181873181873181873181873181873181873181873181873181873181873181873181873181873181873181873181873181873181873 18187318187318187b18187318187318187318187b18187318187318187318217b18187318187318187318217b18187318187318187318217b18187318187318 187318187318187318187318187318187318187318187318187318187318187318187318187318217b18187318217b18187318217b18187318217b1818731821 7b21187318217b18187318217b21187318187318187318217b18187318217b18187318217b18187318217b18187318217b18187318217b18187318217b181873 18187318187318187b18187318187318187318187b18187318107318187b18217b21187318296b29effff7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff182921182921103121183129083121103121083118 183921183121213929183921214229183929214231183929214231214231294231214231294a39294231294a39294231314a39314a39314a42314a3931524231 4a42395242314a42395242395242395a4a395242425a4a395a4a425a4a395a4a426352425a4a426352425a4a4a63524263524a63524a63524a6b5a4a6352526b 5a4a6b5a526b63526b5a526b63526b5a527363526b635a736b5a73635a7b6b5a736b637b6b5a736b637b73637b6b637b73637b6b638473637b736b8473638473 6b847b6b84736b847b6b847b738c84738c7b738c84738c7b7b8c84738c847b94847b8c847b948c7b948c7b948c7b948c7b948c7b948c84948c7b948c849c9484 9c8c8c9c94849c948ca5948c9c948ca5948c9c9494a59c8ca59494a59c8ca59c94a5a594a59c94ada594ada59cada594a59c9cb5a594a5a56b6b840000393942 a54a63e75263ff425aff4a5aff425aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff 525aff4a5aff4a5aff425aff425aff4252f73142de4252de636be7424aad18186b00003100082900001000000800000008080808000008000808000008000800 00080800080000000008080000000800080000000808080000000808080000000808080800000800080000000808080000000808080000000808080000000800 08000000080808000000000808000000000808000008000008000008080808080008080008000000080808000000080808080008080808000000000800000000 00080000000008000000000008000808000008000000000000000000000000000000000000080000000008000000000008000000000000000000000000080000 000000080000000008080800000008080800000008080000000000080800000808080800000808000008000808080808081000001000001800083100004a0000 6b4a52de525af74a52ff4a5aff425aff425aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff4252ff 4a5aff4a5aff5263ef5a63d639428c000829214a31297331318431217b18298c21188418218c18188418218c2118841821842121842121842121842121842121 8418218421188418218421218421218421218421218421218421218421188421218421218421218421218418218c21218421218c21218421218c21218421218c 21218421218c21218421218c21218421218c21218421218c29218421298c29218421218c21218421298c29218421218421218421218421218421218421218421 218421218421218c21218421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c2921 8421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c29218421298c 29218421298c29218421298c29218421298c29218421298c29218c29298c29298c29298c29218c29298c29298c29298c29218c21298c29298c29298c29298421 298c29298429298c29218c29298c29298c29298c29218c29298c29218c29298c29218421318c29318429318431397339f7fff7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7f7ffff10211810291808211010311808311808 3918083118083918083118103921103921184221103921184229103921184229184229214229184229214a29214229214a31214a29294a31214a31294a31294a 31295239294a31295239295239315239295239315a42315239395a42315a42395a42395a4239634a395a4239634a39634a42634a39634a426b5242634a426b52 42634a4a6b52426b524a735a4a6b524a735a4a6b5a52735a4a735a5273634a735a527b6352735a527b63527b635a7b6b5a7b635a7b6b5a7b635a846b5a7b6b63 846b5a846b63847363846b6b8c736384736b8c736b84736b8c7b6b8c7b73947b6b8c7b73947b738c7b739484738c7b7394847394847b9c847394847b9c8c7b94 847b9c8c7b9c8c849c8c7b9c8c84a58c849c8c84a594849c8c8ca59484a58c8ca5948ca59494ad9c8ca59494ad9c8ca59494ad9c94ad9c94ad9ca5b5a59cadad 6b7384000031394aad5263ef4a5af74a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff425aff4a 5aff4a5aff4a5aff4a52ff4a5aff4252ff4a63ff4252ff394aef4252e74a5ade4a52bd29317b0000310000210008180000080000000808080000000800000000 00080008000000080000000000080808000000080000000000000008000000000008000000080008000000080000000000080008000000080000000000080000 00000008000000000000000800000000000800000000000800000000000800000808000800000808000800000808000800000008000008000808080800000000 00000000000008000000000000000000000808000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000800000000000808000000000000000000000000000000000008000000000008000000080000000000000008000010000018 00002900004a081084525ae7525af7525aff4252ff425aff3952ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff425aff4252ff4a5aff4252ff4a 5aff425aff4a5aff4252ff4a5aff5263ef6373de313984000821184a29317b39298429218421298c29218c21188c18218c21218c18218c21218421218c21218c 21298c29218c21298c21218c21298c21218c21218c21218c21298c29218c21298c29218c21298c29218c21218c21218c21298c29218c21218c21218c21298c29 218c21218c21218c21218c21218c21218c21218c21218c21218c21218c21218c21298c29218c21218c29218c21298c29218c21218c29298c21299429218c2129 8c29298c21299429218c21298c29218c21298c29218c21298c29218c21298c29218c21218c29218c21298c29218c21298c29218c21298c29218c21298c29218c 21298c29218c21298c29218c21298c29218c21298c29298c21299429218c21298c29298c21299429218c21298c29298c21299429218c21299429298c29299429 298c21299429298c29299429298c29298c29298c29299429298c29298c29298c29299429298c29299429298c29299429298c29299429298c29299429298c2929 9429298c29299429298c21298c29298c29299429298c29299429298c29299429218c29299429218c29299431298c29318c29318429deffdeefffefffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829211829182139211029181031 18083118083918003118083921083921103921103918184221103921184221104221184229104221184229184229214a31184a29214a31214a29215231214a31 215231215231295239295239295239295239315a42295a39315a42315a42316342315a4231634231634239634a39634a39634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b5242735a426b524a735a42735a4a735a4a735a4a7b5a4a735a527b634a7b63527b63527b635a846b527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c735a846b638c73638c736b8c7b638c736b947b6b8c7b6b947b6b8c7b7394846b947b73948473947b739c84739484 739c84739c847b9c8c7b9c8c7ba58c7b9c8c84a59484a58c84a59484a58c8ca59484a5948cad948ca58c94ad9c8cad9494ad9c8cad9494ad9c94ad9c94b59c94 ad9ca5bda594a59c737b840000314252b55263e74a5af7425aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff394ae74252de636bde212984000042000029000018000010000000080808000000 00000000000008000800000000000800000008080000000008000000000008080800000008000800000008080800000008080800000008080800000000000000 00000808080000000000000000000808080000000000080000000008080000080000080000080800100000080808080800080808080800080800080800000808 08000000080008000000080808000800000808000000080800000000080800000000080800000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000080800000008080800000008080800000008080800000008080800000808080800000008080808080808080800 000800001000002108084210106b525ace5a63f75263ff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff525af75a63f75a6bd6394284000018215231398442398c39299431319c31299429299429299421319c29299429 299429299429299431299429299429299429319c29299429299429299429299429299429299431299429299c3129942929942929942929942929942929942929 9429299c29299429299429299429319c31299429319c31299429319c31299429319c31299429319c31299429319c31299429319c31299431319c31299429319c 31299429319431299429319c31299429319431299429319c31299431319c31299429319c31299431319c31299429319c31299431319c31299429319c31299c31 319c31299429319c31299429319c31299429319c31299431319c31299429319c31299429319c31299429319c31299429319c31299429319c31299429319c3129 9429319c31299429319c31299429319c31299431319c31299431319c31299431319c31299431319c31319c31319c31299431319c31319c31319c31319c31319c 39319c31319c31319c31319c39319c31319c31319431319c39319c31319c31319c31319c39319c31319c31299c31299431299431319c31399431429439deffde f7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffff213121102918102918 102918103118083118103118083118083118003118083918083918103921103918104221104221184229104221184229184229214a29184229184a29184a2921 4a29184a29215231184a31215231214a31215231215231295a39215239295a39295a39315a42295a39316342315a42316342315a4231634231634239634a3163 4239634a39634a396b5239634a396b52396b4a426b52396b524273524273524a735a4273524a735a4a735a4a7b5a4a735a4a7b634a7b63527b63527b63528463 527b63528463527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a8473638c73638c736b8c7b638c736b947b6b8c7b6b947b6b947b7394846b948473 9c846b9484739c847394847b9c8c739484739c84739c847ba58c7b9c847ba58c7b9c8c84a58c84a58c84a59484a58c8cad9484a5948cad948cad948cad9c8cad 9c94b59c8cad9494ad9c9cb5a594ada56b7b8c000031394aad5263e74a5af74a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5af73942ce00087b00005a00003900002100001000000800 00080000000000000000000000080000000000000000000000000000000000000000000800000000000000000000000800000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000008000000000008000008000008000000000008080008080008000000080000 00000008000800000008000000000000000800000000000800000000000000000008000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000808000000000000000008000008000000000800080000000808080000 0000000000000800001800002100003918186b6b6bd65a63de5263f7525aff4a5aff3952ff4252ff425aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff 4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff525aff5263ef5a6bd631397b000821184a31428c4a398c39399c39319431399c39319c3131 9c31319c31319c31319431399c39319431399c31319c31319c31319c29319c31319c31399c39319c31319c31319c31399c39319c31319c31319c31399c39319c 31399c39319c31399c39319c31399c39319c31399c39319c31319c31319c31399c39319c31319c31319c31399c39319c31319c31319c31399c39319c31319c39 319c31399c39319c31399c39319c31399c39319c31399c39319c31399c39319c31319c39319c31399c39319c31399c39319c31399c39319c31399c39319c3139 9c39319c31399c39319c31399c39319c31399c39319c31399c39319c31399c39319c31399c39319c31399c39319c31399c39319c31399c39319c31399c39319c 3939a539399c3939a539399c3939a539399c3939a539319c3939a539399c3939a539319c3939a539399c3939a539319c39399c39319c3939a539319c39399c39 399c3939a539319c3939a539399c3939a539319c3939a539399c3939a539319c3939a539399c3939a539319c3939a539319c3939a539319c3939a542399c394a a5424a9c4a528c4af7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 2918183121183921103118083110103118103118103921103918083921083118103921103921183921103921184229184229184229184229214a31184229214a 31184a29214a31214a31215231214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a4239634a31634239634a316342 39634a39634a396b4a39634a426b52396b52426b52426b5242735a426b52427352426b524a735a4a735a4a735a42735a4a7b634a735a527b634a7b5a527b6b52 7b635a7b6b527b635a846b527b6b5a846b5a846b6384735a846b6384735a846b638c73638473638c73638c736b8c7b638c7b6b947b6b8c7b7394846b947b7394 846b947b7394847394847394846b94847b9c8c739c847b9c8c7b9c847ba5947b9c8c84a5947b9c8c84a59484a59484a59484a5948cad9484ad948cad9c8cad94 8cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594a5a56b7b8c000031394aad5263e75263ff4a5aff4a5aff4a5aff525aff4a52ff4a5aff425aff4a5aff42 5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4252ff525aff4a5aff4a5ae718219c0010630000420000 29000018080018080010000008000000080808000000080808000000080808000000080000000000080800080000080000000000080808000000000000000000 00000000000008080800000000080800000000000000000008080800000008000800000008080800000800000800000000000800000000000800000008080808 00000800080800000808080800000808000800000808080000000800080000000800080000000808080000000808000000000800000000000800080000000000 00000000000008000000000000000000000000000000000000000000080800000000080800000000080808000000080808000000080808000008080010080008 08000800000000000000000008081800002100003118186b7b73de736bef5a63ef4a5aef5263ff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a5aff525aff4a 5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff525aff5a63f75a6bde394284000021184a314a8c524a9c5242a54a399c 42429c4242a542399c3942a54242a53942a542429c4242a542429c4242a54239a53942a53939a53942a54242a54242a542399c3942a542399c3942a542399c39 42a54242a53942a542399c3942a542399c3942a542399c3942a542399c3942a542399c3942a54242a54242a54239a53942a54242a54242a54239a53942a54242 a54242a54242a54242a54242a54242a542429c4242a54242a54242a542429c4242a54242a54242a542429c4242a54242a54242a54242a5424aa54a42a54242a5 4242a54242a54a42a54242a54242a54242a54a42a54242a54a42a54242a54a42a54242a54a42a54242a54a42a54242a54a42a54242a54a42a54242a54242a542 42a54a42a54242a54239a54242a54242a54242a54242a54242a54242a54242a54242a54242a54a42a54242a54a42a54242a54a42a54242a54a42a5424aa54a42 a54a42a54a42a54a4aad4a42a54a4aa54a42a54a4aad4a42a54a4aad4a42a5424aad4a42a54a4aad4a42a5424aad4a42a5424aad4a42a5424aad4a42a54242ad 4a42a54242a54242a5424a9c4a529452effff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7fffff7fff7183121103118082910083110103118103118103118082910083118083118103921103921103921103921184221103921184229104221184229 184229214229184229184a29184a29214a31184a29215231214a31215231215231295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a315a4239634a39634a396b4a39634a426b5239634a426b52396b4a426b52426b524a735a426b524a735a4a735a4a7b5a4a735a4a7b634a73 5a527b634a735a527b63527b63527b63527b63527b635a846b5a846b5a846b5a84735a846b6384735a846b638c73638473638c73638c736b8c7b6b8c736b947b 6b8c7b6b947b6b8c7b73948473947b739484739484739c847394847b9c847394847b9c8c7b9c8c7b9c8c7b9c8c84a58c7b9c8c84a5947b9c8c84a5947ba58c84 ad9484a5948cad9c84a5948cad9c84ad9c94ada58cad9c94ad9c9cb5a594adad6b7384000031394aad5a6bef4a5af74a5aff4a5aff4a5aff4252ff525aff4a5a ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252e7636bef 3942ad10186300003100002100001800001000000800000800000008000000000000000000000000000000000000000000000000000000000008000000000008 00000000000000000000000000000000000000000000000000000000000000000000000000000000000800080000000000080000000000080000000000000000 00080808080000080000000000080000000000080000080000080000000000080000000000080008000000080008000008080008000000000000000000000000 00000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008 00080000080808100000000000000808080008100000180000310008526b6bce6363de5a5ae7525aef5263ff4a5aff4a5aff4252ff425aff4252ff4a5aff4252 ff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff425aff4252ff4a5aff4a52ff4a5aff4a52ff525aff4a52ff525aff5263ef636bde313984000821104231529463 4a9c5252a552429c4252ad524aa54a4aa54a4aa5424aa54a4aa54a4aa54a4aa54a4aa54a4aa5424aad4a42a5424aad4a42a5424aad4a4aa5424aa54a4aa5424a a54a4aa5424aad4a4aa5424aa54a4aa5424aad4a4aa5424aad4a4aa54a52ad4a4aa5424aad4a4aa5424aad4a4aa5424aad4a4aa54a4aad4a4aa5424aad4a4aa5 4a4aad4a4aa54a4aad4a4aa54a52ad524aa54a4aad524aa54a52ad524aa54a52ad524aa54a52ad524aa54a52ad524aa54a52ad524aa54a52ad524aa54a52ad52 4aa54a52a54a4aa54a4aad524aa54a4aad524aa54a52ad524aa54a4aad524aa54a52ad524aa54a4aad524aa54a52ad524aa54a52ad524aa54a52ad524aa54a4a ad524aa54a52ad524aa54a4aad524aa54a52ad524aa54a52ad524aa55252ad524aa54a52ad524aa55252ad524aa54a52ad524aa55252ad524aa54a52ad524aa5 5252ad524aa54a52ad524aa55252ad524aa54a52ad524aa55252ad524aa54a52ad524aa55252ad524aad4a52ad524aad4a52ad524aad4a52ad524aad5252ad52 4aa54a52ad524aad4a52ad524aad4a52ad5252a55263a563deffdef7fff7f7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff21312118291818312108311810311808311010311808311808311808311808392108391810422110391818422110392110422910 4221184a29104229214a29184229214a29214a29214a29214a29295231214a31295231215231295239295231295239295239315a39295a39315a42315a393963 42315a42396342315a4239634a39634239634a396342426b4a39634a426b52426b4a426b52426b52427352426b524a735a4a73524a735a4a735a4a7b5a4a735a 4a7b5a4a735a527b63527b5a527b63527b635a846b527b635a846b527b635a846b5a846b63846b5a846b638c6b63846b638c736384736b8c73638c736b8c7b6b 8c7373947b6b8c7b73947b6b947b73948473947b7b948473947b7b9c847394847b9c84739c847b9c8c7b9c84849c8c7b9c8c84a58c849c8c8ca59484a58c8cad 9484a5948cad9484ad948cad9c8cad948cad9c8cad948cad9c8cad9c94b5a58cad9c9cb5ad94a5a573738c0000314252b55263e75263ff4a5aff4a63ff4a5aff 525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a 5aff5263ff5a63ef5a63de4242a508084a0000310000210000180000100000080808080800000808000000000808080000000000080000080800080000000800 08000000080808000000080808000000000000000000000808000000000808000000080808000000000000000000080008080000080008000000080808000008 08000800000008080008080008080000000008080808000008080800000010080810080808000000000010080808000808000808000808080808000808080800 00000000080000000000080000000000080000000000000000000000000000000000000000000000000000000000000000000808080000000000000000000808 08000008000008080008080010080010080008080008101021000018000039080852636bce5a63d65a63ef525aef5a63ff4a5af75263ff4a5aff4a5aff425aff 4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5aff525aff525aff5a63f7636bde39428c00 0021184a395a9c735aa56b52a55a52a55a5aad5a5ab55a52ad525ab55a52ad5252ad5a52ad525aad5a52ad525ab55a52ad525ab55252ad5252ad5252ad525ab5 5a52ad525ab55a52ad525ab55a52ad525aad5252ad525aad5a52ad525aad525aad525aad5a5aad525aad5252ad525aad5a5aad525aad5a52ad525aad5a52ad52 5aad5a5aad5a5ab55a52ad525aad5a52ad525ab55a5aad5a5aad5a52ad525aad5a5aad5a5aad5a5aad5a5aad5a5aad5a5aad5a5aad5a5aad5a5aad5a5aad5a5a ad5a5aad5a5aad5a5aad5a5aad5a5ab55a5aad5a5aad5a52ad5a5ab55a5aad5a5aad5a52ad5a5ab55a5aad5a5aad5a52ad5a5ab55a5aad5a5aad5a52ad5a5ab5 5a5aad5a5aad5a5aad5a5ab5635aad5a5aad635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a 5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a5ab5635aad5a63b5635aad5a5ab5635aad5a5ab5635aad5a5ab5635a ad5a5ab55a5aad5a5ab55a5aad5a5ab55a52ad525ab55a5ab55a5aad6363ad6b6b9c73e7ffe7f7fff7fffff7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7ffff2131211831211029180831181031181031180831101039180831180839180031180839180839181039211039 18104221104221104221104221184221184229214a29184221184a29184a29215229214a29215231214a29215231214a31295231295231295a39295231295a39 295a39315a39315a39316342315a39396342315a42396342396342396b4a396342396b4a39634a426b52396b4a426b52426b4a427352426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b5a527b5a527b63527b5a5a8463527b635a8463527b635a846b5a846b5a846b5a846b63846b63846b638c736384 6b638c73638c736b8c736b8c736b8c7b6b8c7b73947b6b947b73947b73947b739c8473947b739c847394847b9c847394847b9c847b9c8484a58c7b9c8484a58c 849c8c84a59484a58c84ad9484a58c8cad9484a5948cad948cad948cad9c8cad948cad9c94ad9c94ad9c9cb5a594ada56b7384000031394aad5263e74a5af74a 5aff4a5aff4a5aff4a5aff525aff4a52ff4a5aff425aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a5aff425a ff4a5aff4252ff4a5aff4a52f75263f74a5ade4a52c6394294182163000039000029000010080810000000080800080800080800000000080008000000000008 00000000000800000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000008000808000808 00080000000000080000000008000000000000000000000808080000000000080000080000100000000808080000000800080000000800080800080800080000 00080008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000080800080800100000080800100000080000100000180808310808525a63bd5a63de6373f74a52e75a63ff4a5af74252f74252ff4a 5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff525aff4a5aff5263ff525a ef636bde3139840008211842316ba57b63ad6b63b56b52a55a5ab5635aad5a5ab55a5aad5a5ab55a5aad5a63b5635aad5a5ab5635aad5a63b55a5aad5252ad52 5ab55a5ab56352ad5263b5635aad5a5aad5a5aad5263b55a63b5635aad5a63b5636bb56363ad5a63ad5a5aad5a63b56363b55a5aad5a5aad5a5aad5a63b56363 b55a5aad5a63b5635aad5a63b55a63ad5a63b55a5aad5a63b56363ad635aad635aad5a63b5635aad5a63b5635aad6363b5635aad5a63b5635aad6363b5635aad 6363b56363ad6363b56363ad6363b56363b56363b56363ad6363b56363b56363b56363ad6363b56363b56363b5635aad6363b56363ad6363b5635aad6363b563 63ad6363b56363ad6363b56363ad6363b56b63ad6363b56363ad6363b56b63ad6363b56363ad6363b56b63ad6363b56b63ad6363b56b63ad6363b56363b56363 b56b63ad6363b56363b56363b56b63ad6363b56363b56363b56b63b56363b56363b56363b56b63b56363b56b63b56363b56b63b56363b56b63b56363b56b63b5 6363b56b63b5636bb56b63b56363b56363b56363bd6363b56363bd6363b56363b56363ad6363ad6b73ad7373a573739c73efffeff7fff7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffff182921183121103118103118083110103118083118103918083918083918003918 104221103918104221103921184221104221104a29104221184a29184a29184a29184a29215229184a29215231214a29295231215231295231215231295a3929 5a39295a39295a39315a42295a39316342315a39396342316342396342316342396b4a396342396b4a39634a426b52396b4a426b52396b4a427352426b524273 524273524a735a4273524a7b5a42735a4a7b5a4a7b5a4a7b634a7b5a528463527b63528463527b635a846b5284635a846b5a846b638c6b5a846b5a8c6b5a846b 638c73638c6b638c73638c736b947b638c736b947b6b8c7373947b6b947b73947b6b947b739c8473947b739c84739c7b7b9c84739c847b9c84739c8484a58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484ad948cad9484ad948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a594a5a5737b8c0000314252 b55263e75263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff 4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aef525ae75a63d6525ab521297300004208083100001008081000000010100800000008080000 00000008080000000008080000000000000000000808080000000000000000000008080000000000000000000808080000000000080000000800080000000800 08080008080808080008080008000000080808000000080800000000080808000008000010000010000821000821080821000008080810080008080008080008 10081008000008000800000008080800000000000000000000080800000000000800000008080800000000000000000000000000000000000000000008080800 00000800080000000808080000000008080000000000000808080808100000081010210000180000310000425252b57373ef6b73f74252e75a73ff314ae74a5a ff4252f74a5aff4a5aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff525aff4a5aff525aff4a5aff 5263ff525aff5a63ef5a6bd639428400002118423973a57b73b57b6bb5736bb57363b56b6bbd6b63b5636bbd6b63b5636bbd6b6bb56b6bb56b63b5636bbd6b6b bd6b63b55a6bc66b5ab5636bbd6b6bbd6b63b56363b5636bbd6b7bc67b6bb56b6bb56b6bbd6b73bd7363ad636bb56b6bb56b73bd736bbd6b6bbd6b63ad6373bd 7373bd736bb56b6bb56b73bd736bb56b6bb5636bbd6b73c6736bb5636bb56b6bb56b73bd736bbd6b6bbd6b6bb56b6bbd6b6bb56b6bbd736bb56b6bbd6b6bb56b 6bbd736bb56b6bbd736bb56b73bd736bb56b6bbd736bb56b73bd736bb56b6bbd736bb56b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736b bd6b73bd736bbd6b73bd736bbd736bbd736bb56b73bd736bb56b73bd736bb56b73bd736bb56b73bd736bb56b73bd736bb56b73bd736bb56b73bd736bb56b73bd 736bb56b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736bbd6b73bd736bbd7373bd736bbd6b 73bd736bbd7373bd736bbd6b73bd736bbd7373bd736bbd6b73bd7373bd6b73bd736bbd6b73c6736bbd7373bd7373bd737bb57b7bb57b84b58484ad84f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff18292118312110312108291010391808311010391800311008 3918003918083918083918103921103921104221103921104221104221184a29184221184a29184221184a29184a29214a29184a29215231184a292152312152 31215231215231295a39295239295a39295a39295a42295a39316342295a4231634231634239634a31634239634a316342396b4a39634a396b4a396b4a426b52 396b4a427352426b52427352426b5242735a4273524a7b5a42735a4a7b5a4a735a4a7b634a7b5a527b63527b63528463527b635a84635284635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c73638c736b947b6b8c7b6b947b6b947b73947b6b947b73947b6b947b739c84739484739c84739c 847b9c8c739c847b9c8c7b9c8c84a58c7b9c8c84a59484a59484a59484a58c84ad9484a5948cad9484a5948cad9c8cad948cad9c8cad9c94ad9c9cb5a59cada5 6b7384000039394aad5263e74a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff425aff4a5aff4252ff4a5aff4252ff4a5aff425aff425aff4a5aff4a5aff4a52f7525af74a5ade525ad6525ac60000520000390008310000100000080008 08000800000000000000000000000000000000000800000000080000000000000000000000000000000000000000000000000000000000000000000000000000 00000008000000000008000800000008000000000008000000000000080000000000000000000800001000001800002100002908103900083100082900001800 00100000080800100000000800000800000808080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000800080000000000000000000808080000000008000000080000180000180000310000424a4aad6b73ef5252e7525aef5a6bff 3952ef4a63ff425aff425aff4252ff4a5aff4252ff4a5aff425aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff425aff4a5aff4a52ff4a 5aff4a5aff525aff4a5aff5263ff5263ef636bde31397b0000211839317bb58c73ad7b73bd7b73bd7b73bd736bbd7373bd736bbd6b73bd736bb57373bd736bb5 737bc67b6bb56b73bd7373c67373bd7373c67b6bb56b73bd7373bd737bc6846bb56b63ad637bc67b7bbd7b7bbd7b73b5737bbd737bbd7b7bbd7b7bbd737bbd73 73b56b7bc67b7bbd7b6bad6b84ce8473bd736bb56b84ce8473bd7373bd7373bd737bc67b73bd7373bd7373bd7373bd7373bd7373bd7b73bd7373c67b73bd7373 c67b73bd737bc67b73bd7373bd7373bd737bc67b73bd7373bd7373bd7373bd7373bd7373bd7373bd7373c67b73bd7373c67b73bd737bc67b73bd7373bd7373bd 737bc67b73bd7373c67b73bd737bc67b73bd7373bd7b73bd737bbd7b73bd737bbd7b73bd7b7bc67b73bd7b7bbd7b73bd7b7bbd7b73bd7373bd7b73bd7b7bbd7b 73bd7373bd7b73bd737bc67b73bd737bc67b73bd737bc67b73bd737bc67b73bd737bc67b73bd737bc67b73bd737bc67b73bd737bc67b73bd737bc67b73bd737b c67b73bd737bc67b73bd737bc67b73bd737bc67b73bd737bc67b7bbd7b7bc67b73bd737bc67b7bc67b7bc67b7bc67b73bd7b7bbd7b7bbd7b7bbd7b84bd848cbd 8484b58ceffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829211829211029181831210829181031 18083118083118083118083921083918104221103921184221103921184229104221184229184229214a29184229214a29184a29214a31184a29215231214a31 215231215231295239215231295a39295239295a42295a39315a42295a39316342315a42316342315a4239634a31634239634a31634a396b4a39634a396b5239 6b4a426b52396b52427352426b5242735a4273524a735a4273524a7b5a4a735a4a7b634a735a527b634a7b5a527b634a7b6352846b527b635a846b527b635a84 6b5a846b5a84735a846b5a8c735a846b638c73638473638c73638c736b8c7b638c736b947b6b8c7b6b947b6b947b7394846b947b7394846b947b739c84739c84 739c84739c847b9c8c739c847ba58c7b9c8c84a5947b9c8c84a5947ba59484a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c8cad9c8cad9c94b5a58c ad9ca5b5ad94a5a573738c0000314252b55263e75263ff4a5aff4a63ff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff525a ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a5aff525aff525aff5263ff5263ef4252d65a63d629298c00004a 00002900001000081000000808080800000000080800000000080000000008080800000008000000000008080800000000000800000008000800000008000800 0000080808000000080008080000080808000000080008000000080808000000080808000000101010000008000010080829000029000042393984737bc62929 73000842000031000021000018080818000008000000080808080800080808000000000808000000000800000000000000000000000000000000000808000000 00000000000000000000000008000800000008000800000808000800000000080000000000080000080800001000001800003900004a5a5abd636be75a63ef52 63f75a6bff4a5af74a63ff425aff4a63ff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff5263ff4a5aff525aff525af75a6bef5a6bde3942840000211839398cb59484bd8c84bd8484ce8c7bc6847bc6847bc67b84ce847bc684 84c6847bbd848cc68c84c68484c6847bc67b94d68c7bbd7394d69473b5738cce8c84c68484bd848cc68c94d6947bb57b8cc68c8cbd8c8cc68c9cd69c8cc68c84 c68494c68c84bd848cc68484c68484c68c84c6847bbd7b84c68484c68c84c68494d6947bbd7b84c68484c6848cce8c84c68484c68484c68484c68c84c68484ce 8484c68484ce8484c68484ce8c84c68484ce8484c6848cce8c84c68484ce8484c68484ce8484c68484c68484c68484c68484c68484c68484c68484ce8c84c684 84ce8484c68484ce8484c68484c68484c68484ce8484c68484c68484c68484ce8c84c68484ce8c84c6848cce8c84c68484ce8c84c68484ce8c84c68484ce8c84 c6848cce8c84c68484ce8c84c6848cce8c84c6848cce8c84c6848cce8c84c6848cce8c84c6848cce8c84c6848cce8c84c6848cce8c84c6848cce8c84c6848cce 8c84c6848cce8c84c6848cce8c84ce8484ce8c84c6848cce8c84c6848cce8c84c6848cce8c8cc68c8cce8c84c68c8cc68c84c68484ce8484c68494ce8c8cce8c 8cc68c8cc68c84c68494bd94f7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff182921183121 103121102918082910103118083118083918003118083921083921103921103921104221103921184229104221184229184229214a29184229184a29184a2921 4a31184a29214a31214a31215231214a31215239295239295a39295239295a39295239315a42295a39315a42315a42316342315a4231634a31634239634a3163 4a39634a39634a396b5239634a396b52426b52427352426b52427352426b524a735a4273524a735a4a735a4a7b634a735a4a7b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b6384735a846b638c73638473638c73638c736b8c7b638c736b947b6b8c7b6b947b6b8c7b6b94846b947b73 94846b947b739c84739484739c84739484739c8c739c8c7b9c8c7b9c8c7b9c947b9c8c84a594849c9484a59484a5948cad9484a5948cad9c8cad948cad9c84a5 9c8cad9c8cad9c94ad9c94ada594a5a56b738c000039394aad5263e74a5af74a5aff4a5aff4a5aff4a5aff525aff4a52ff4a5aff425aff4a5aff4a52ff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a5aff4a52ff4a5aff4a52ff4a5aff425aff4a5aff4252ff4a5aff4a52ff525aff4252f75263ff4a52e74a 52de4a52c631318c0000420000290000180000100000080000080000000000000000000008000000000000000000000800000000000000000000000000000000 00000000000000000008000000000000000000080000000000000000000000080808000000080800000000080808000000000010000021000031000042424294 6b6bce636bce21298c424aa508105a00003900001800001000001008000800000008000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000800000008000800000008000800000008080800000000081000001800002900004a424aad6b6b e75a5aef525af7525aff4a5af74a5aff425aff4a5aff425aff425aff4252ff4a5aff425aff425aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff 4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff5263ef636bde31398400002910313194bda58cbd948cc6948cc68c8cce8c84c68c8c ce8c84c68c8cce8c8cc68c8cce8c8cc68c8cc68c8cc68c94ce8c84c6849cd69c7bb57b94ce948cbd8c8cc69494c69494c6948cbd8c6b9c6b426b42396339184a 18083908295a294a7b4a52845284b58494c69494c69484bd8494ce9c84bd849cd69c8cc68c84bd848cc68c9cd69c8cc68c8cc68c84c6848cce8c8cc68c94ce94 8cc68c8cc68c8cc68c8cce8c8cce8c94ce948cce8c94ce948cce8c94ce948cc68c8cce8c8cce8c94ce948cce8c94ce948cce8c94ce948cc68c8cce8c8cce8c94 ce948cce8c8cce8c8cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce 8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce948cce8c94ce94 8cce8c94ce948cce8c94ce9494ce9494d6948cce8c94ce948cce9494d6948cce8c94ce9494ce9494ce9494ce9494ce9494ce9494ce9494ce9494ce9494ce8c9c d69494ce948cc68c9cd69c94ce9494ce949cce9ca5bda5fffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fff7182921103118103118083118083918083918083921003918104221103921104221103921184229104221184229184221214a29214229214a 29184a29214a31214a31215231214a31295231215231295239215231315a39295239315a39295a39315a42315a42315a42315a4239634231634239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a4a7352426b524a7352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b635a8463527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c736b8c73638c736b947b6b8c736b947b6b8c7373947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a5947b9c8c84a59484a59484a59484a5948cad9484a5948cad9c84a594 8cad9c8cad9c8cad9c8cad9c94b5a58cad9c9cb5ad94a5a5737b8c0000314252b55263e75263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff425aff4a5aff425aff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a52ff4a5a ff4252ff5a63ff424ade5a63e75a5ace39398c000039000031000018000018000010000008000000080808000000080000000000080808000000080008000000 08000800000000000000000008080800000008000800000008000808000008080800000008080800080008080800000008080800000800001000001800002900 003918186b5a63c67b7bef525ad61821945a63d6636bce0008520008390000180000100808100808080000000808080000000000080000000800080000000000 08000000080808000000000000000000000808000000000000000000080808000000080008000008080808000008080008000008000008000810000029000039 29318c636bde6363ef4a52ef5263ff4a5aff4a5af74a5aff4a5aff4252ff425aff425aff425aff425aff4a5aff425aff4a63ff4a5aff4a5aff4a5aff525aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff525aff4a5aff4a5aff4a5aff525aff4a5af75263f75a6bde39398c0000291839399cc6ad9cc6a59cce9c94ce 9c94ce9c9cd69c94ce949cd69c94ce949cce9c9cce9c9cce9c9cce94a5d69c9cce949cce94a5ce9c9cc694a5cea5a5cea59cce9c94bd94527b52083108002100 002900002100002100002900002100002100002900083108527b528cb58c9ccea59cce9caddead9cce9c9cce9c94c694addead9cce949cce949cce949cd69c9c ce9c9cd69c94ce949cce9c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cd69c9cd6 9c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9c9cd69c9cce9ca5d69c9cd69ca5d69c9cce9c a5d69c9cd69ca5d69c9cce9ca5d69c9cd69ca5d69c9cce9ca5d69c9cd69c9cd69c9cce9ca5d69c9cd69c9cd69c9cce9ca5d69c9cd69c9cd69c9cce9ca5d69c9c d69c9cd69c9cce9ca5d69c9cd69c9cd69c9cd69ca5d6a59cd69c9cd6a59cd69ca5d6a59cd69c9cd69c9cd69ca5d6a59cd69ca5d6a59cce9ca5d6a59cd69c9cce 9c9cd69c9cd69c94d69494d694a5dea59cd69c9cd69ca5d6a5a5cea5b5c6b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffffffffff7ffff102918083118103918083118083918003118083918083918103921103921104221103921104221104221184229 184221214a29184229214a29184229214a31214a29215231214a31295231214a31295239295231295239295239315a39295239315a42315a39315a42315a4239 6342315a42396342315a4239634a39634a396b4a39634a426b4a396b4a426b52426b4a426b52426b524a7352426b524a735a4a73524a735a4a735a527b5a4a7b 5a527b634a7b5a527b63527b635a8463527b635a84635a7b635a846b5a84635a846b5a846b638c6b5a846b638c7363846b6b8c73638c736b8c736b8c736b947b 6b8c7373947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c7b9c847b9c8c7b9c8c84a594849c8c84a59484a59484a59484a58c84 ad9484a5948cad9c84a5948cad9c84ad9c8cad9c8cad9c8cad9c9cb5a594ada56b7384000031394aad5263e74a5af74a5aff425aff4a5aff4a52ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a52ff4a52ff4a52ff525aff4a5aff4a5aff4a5aff4a52ff 4252ff4a5aff425aff425aff4a5aff525aff5a5af7525ade5252c642429c08084200003100001800001800001000001000000800000800000000000000000000 00000000000000000000000000000000000000000000000800080000000800080000000800000000000000000000000008080000080000080000000000100000 1800002900003931398c525abd6363de4a52d65a5aef2129bd3942ce636be75a63c6000852000839000829000010000008000008000000000008000000000008 00000000000800000000000000000000000000000000000000000000000000000000000000000000000000000008000800000000000800000800001000001800 0021000842424a9c7373e75a63e73942d65a63ff4a5aff425aff4a5af74a63ff4252ff4a5aff4252ff4a5aff4252ff425aff425aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff5263ef636bde313184000029183131adceb5 9cc6a5add6ad94c69ca5d6a59cce9c9cce9c9cce9ca5ce9c9cc69ca5cea5a5cea5a5cea5a5d6a5b5d6ada5c69c9cc69cbddeb59cc69c6b946b426b4200210000 21001839184263425a7b5a7b9c7b84a584849c847b9c7b738c73527352214221001800002100294a297ba57b8cb58cadd6adb5deada5cea59cc69ca5d6a59cce 9cadd6a5a5d6a5a5d6a5a5cea5a5d6a5a5d6a5a5d6a5a5cea5a5d6a5a5cea5a5d6a5a5d6a5a5d6a5a5cea5a5d6a5a5d6a5a5d6a5a5cea5a5d6a5a5d6a5a5d6a5 a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5d6a5a5cea5a5d6a5a5d6a5a5d6a5a5cea5a5d6a5a5cea5add6a5a5cea5a5 d6a5a5cea5add6a5a5cea5a5d6a5a5d6a5add6a5a5cea5add6a5a5d6a5add6a5a5d6a5a5d6a5a5d6a5add6a5a5d6a5a5d6a5a5d6a5add6a5a5d6a5a5d6a5a5d6 a5add6a5a5d6a5a5d6a5a5d6a5add6a5a5d6a5a5d6a5a5d6a5add6a5a5d6a5add6a5a5d6a5addeada5d6a5a5d6a5a5d6a5a5d6ada5d6a5add6ada5d6a5add6ad a5d6a5add6a5add6a5addeada5d6a5a5d6a5a5dea5a5d6a5add6ada5d6a5a5cea5adceadfffff7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7ffffffffff18291810312108311808391808311810392108391808392108392110422110422118422910 4221184229184229214a29184229214a31184a29214a31184a29215231214a31215231214a31295239295239295a39295239315a42295a39315a42295a393163 42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b94736b 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9c94ada58cad9c94b5a58cad9c9cb5ad94a5a573738c000031424aad5263e75263ff4a5aff4a5aff4a5aff 525aff4a52ff525aff4a5aff4a5aff425aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff425aff425aff4a63ff4a5aff4252ff5a63ff5a63f74a4ad66363d65252b50000420008390000210000210000180000100000080008 00000000000008000008000008000000080800000000080808000008080008000008080008000000080800000000000800000000000008000008080010000010 0000100000180000290000392931845a63ce636bef5a63ef5a63f7525af72129ce394ae7525aef5263de6b7bde21297b00003900002100001800001000000800 00000800080800000000000000000800080000000800000000000008000000000008080000000808080000000808080000080800080000080000080000100808 210000180000310000424a52a56b73de525ade636bf75a63ff4252ff4a5aff425aff4a63ff425aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5af75a6bf75a6bd639428400 0021183939b5d6bdb5d6bdb5deb5a5d6adaddeb5addeb5add6adb5deb5addeadb5deb5add6adb5deb5add6adb5d6b5adcea5c6efc6b5d6b5adc6a5395a390021 000021005a7b5a94ad94c6e7c6cee7c6b5d6b5b5d6b5bddebdadc6adbdd6bdadceadc6debdceefceb5d6b5637b63183918001800294a2994b594bddebdadd6ad adceadbddebdbddebdadd6adb5deb5b5d6adb5deb5b5d6b5b5deb5add6adb5deb5b5deadb5deb5b5deadb5deb5b5deb5b5deb5b5deadb5deb5b5deb5b5deb5b5 deadb5deb5b5deb5b5deb5b5deadb5deb5addeb5b5deb5b5deb5b5debdb5deb5b5deb5b5deb5b5debdb5deb5b5deb5b5deb5b5deb5b5deb5b5deb5b5d6adbdde bdb5deb5b5deb5b5deb5bddeb5b5deb5b5deb5b5d6adb5deb5b5deb5b5deb5b5deadb5deb5b5deb5b5deb5b5deadb5deb5b5deb5b5deb5addeb5b5deb5b5deb5 b5deb5b5deb5b5deb5b5deb5b5deb5addeb5b5deb5b5deb5b5deb5addeb5b5deb5b5deb5b5deb5b5deb5b5e7bdb5deb5b5e7b5b5deb5b5e7bdb5deb5bde7b5b5 deb5bde7bdb5deb5bde7b5b5deb5bde7bdb5deb5b5e7b5b5deb5b5deb5b5deb5bde7bdb5d6b5c6e7c6bdd6bdffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7fffffffffffffffffffffff7fffffffffff7fff72131211029180831180831180839180831180839180839181042211039 18104221103921184229103921184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239295239295a39295239295a39 295a39315a42295a39315a42315a42316342315a4231634231634239634a31634239634a39634a396b4a39634a426b52426b52427352426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9c8cad948cad9c8cad9c8cad9c94ad9c94ad9c94ada594a5a56b7384000039394aa55a63e74a5af74a 5aff4a5aff4a5aff4a52ff525aff4a52ff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff425aff425aff4a5aff4252f75a63ff5a5aef5a5ae76363d639399400004a000031000021000018 00001800000800000008080800000000000800000008000800000008000000000000000800000800000800000000000000000008080000080000000008000808 0010000010080018000021000029000039000052525ac65a63de4a5ae7636bff4a5af74252f70818bd3942ef4a5af75263ef5263de6b73de10186b0000420000 29000010000008000008000000000000000000080000000000080008000000080800000000000000000000000008000000080000000000080808000008000008 00000800001000001800003100004a0808636b6bd6636be74a5ade4252ef5263ff4252f74252ff4a63ff4252ff425aff4a5aff425aff4252ff4a5aff4a52ff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff4a5aff5263ff525a ef636bde393984000021183939b5d6c6add6b5bddec6add6adb5deb5b5debdbddebdadd6adbddebdadd6adc6e7c6b5d6b5bddebdb5ceadc6e7c6adceadb5d6b5 637b5a0018000018007b9c7bc6e7c6bddebdb5d6b5b5d6b5b5ceb5bddebdbdd6bdbdd6bdbddebdc6dec6b5ceb5b5ceb5c6dec6cee7ce738c730821080010005a 735aadceadc6e7c6c6e7c6bddebdadceadc6e7bdbddebdbddebdb5deb5bddebdb5d6b5bddebdb5deb5bddebdbddebdbddebdbddebdbddebdbddebdbddebdbdde bdbddebdbddebdbddebdbddeb5bddebdbddebdbddebdb5deb5bddebdbddebdbde7bdbddebdbddebdbddebdbde7bdbddebdbddebdbddebdc6e7bdbddebdbde7bd bddebdc6e7bdbddebdbddebdbddeb5bddebdbddeb5bddebdbddebdc6e7bdbddebdbddebdbddebdbddebdbddeb5bddebdbddeb5bde7bdb5debdbddebdbddebdbd e7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdbdde bdbde7bdbddebdbde7bdbddebdbde7bdbddebdbde7bdb5deb5c6e7c6bddebdbde7bdc6e7bdbddebdc6dec6cee7c6bdd6bdd6e7d6f7fff7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7fff7103121083118103918083918083918083918 104221083918104221103921184229104229184229184229184a29184229184a29184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a4239634a31634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948ca5948cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594a5a5737b8c000031424a ad5263e75263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4a5aff4a5aff4a5aff5a63ff525aef5a63e76b73de31319410 18630000390008290000210000100808100000080800080800081008080000000800000000000000080000000000080000080000080000000808000008000808 0000000008080800000808081800002100002900003918216b424aad5a63de5a63f75a63ff4a52f7525aff4a5aff1021c63942ef5263ff5263ff5263ef4a5ad6 6373d621297b00003908083100081800000808080800000008080808000008000000000008080000000008000000000008000800000008000800000000080800 00000008080000100000100000180000310000423939947373de6363de5a63e75a6bf74252e75263ff4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 525aff525af75263ef636bde393984000021213139c6e7d6c6e7cec6e7c6ceefcec6e7c6c6e7c6ceefcebddebdbddebdceefceb5deb5c6e7c6c6e7c6d6f7d6c6 dec6bdd6bd526b4a0010005a735aadc6adc6dec6ceefcebdd6bdd6efd6c6dec6d6efd6bddebdc6dec6c6dec6d6efd6cee7cec6dec6d6e7cec6dec6c6dec6cede ceb5ceb5738c7300180039523994b594ceefcec6e7c6c6e7c6c6e7c6c6e7c6bddebdc6e7c6bddebdc6e7c6bddec6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6 c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6c6e7c6cee7cec6e7c6c6e7c6c6e7c6cee7cec6 e7c6c6e7c6c6e7c6cee7cec6e7c6cee7cec6e7c6ceefcec6e7c6cee7c6c6dec6c6e7c6bddebdc6dec6bddebdcee7cec6e7c6ceefcec6e7c6ceefcec6e7c6c6e7 cec6e7c6cee7cec6e7c6cee7cec6e7c6ceefcec6e7c6cee7cec6e7c6ceefcec6e7c6cee7cec6e7c6ceefcec6e7c6ceefcec6e7c6ceefcec6e7c6ceefcec6e7c6 ceefcec6e7c6ceefcec6e7c6ceefcec6e7c6ceefcec6e7c6ceefcec6e7c6ceefcec6e7c6ceefceceefceceefced6efcecee7cecee7cedeefdeefffefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff08291808311808311808 3918083918083918083918084221103921104221103921184229104221184229184229184a29184229184a29184229214a31184a29215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84ad9484a5948cad9c84a5948cad9c8cad9c8cad9c8cad9c94ad9c94b5a594ada5 6b7384000031394aa55a6be74a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff5263ff4a52ff4a5aff4a5aff4a5aff4252f75263ff5263 f75263e76b7be739429c00004a000039000021080021000008000008080008080808000000080000080000080808000000000000000000000008000000000808 0000000808000008000808080000000808100000180000210000392121734a52b5737bf74a52de525af74a5af7525aff4a52ff4a5aff1021c63942ef4a5aff52 5aff5263f7636bf7525ad66b73de4a52a50000420000210000100000080000000000000808000000000008000000000800000000000800080000000800080000 0000000800000000000000000800001000001000002900004221217b6b6bd66363e7525ae7636bff4a5aef5263ff4a5aff5263ff4a5aff4252ff4a5aff525aff 4a52ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff425aff4a 5aff425aff4a5aff4a5aff525aff5a63ef636bde31317b000829183139ceefdec6decec6e7cec6e7c6ceefcebddebdd6efd6c6e7c6deffdeceefced6f7d6cee7 c6d6efd6c6dec6c6dec600100008180063735ac6d6bdd6efd6def7decee7cecee7cecee7cec6dec6d6e7d6cee7cecee7cebdd6bd6b7b6b6b846b6b7b6badbdad d6e7d6def7ded6e7d6cedec6cee7ce738c73001000001800c6d6bdc6dec6d6efcecee7c6d6efced6efceceefd6ceefd6cee7ced6efd6ceefced6efd6ceefced6 efd6ceefced6efd6ceefced6efd6ceefced6efd6ceefced6efd6ceefced6efd6cee7ced6efd6ceefced6efd6ceefced6efd6ceefd6d6efd6ceefced6efd6d6ef ced6efd6ceefced6efd6d6efced6efd6cee7ced6efd6ceefced6efd6d6efd6d6f7d6d6efd6d6f7d6d6efd6d6efd6d6efd6d6efd6cee7ced6efd6cee7ced6efd6 cee7ced6efd6cee7ced6efd6cee7ced6efd6cee7ced6efd6cee7ceceefd6cee7ced6efd6cee7ceceefd6cee7ced6efd6cee7ceceefd6ceefd6d6efd6ceefcece efd6ceefd6d6efd6ceefced6efd6ceefd6d6efd6ceefced6efd6ceefced6efd6ceefced6efd6ceefced6f7d6d6efced6efd6cee7cedef7ded6e7d6f7fff7efff f7fffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1831211031 18083118103918083918103921083918084221083918104221104221184229104221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239295239295a39295239315a42295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a58c8cad9c8cad948cad9c8cad9c94b59c8cad9c94b59c8c ad9c9cb5ad94a5a573738c000031424aad5263e75263ff4a5aff4a5aff4a5aff525aff4a52ff525aff4a5aff4a5aff425aff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff425aff 425aff4a5aff5263ff4a5af75a6bef5a63d65a5abd21216b00004200002908002100001008080800000008000808080808080800000000080800000000080000 000000080800000808080800000000080000000008081000000800002100003108085a5252bd7373ef4a52de5263ff525aff4a5aff4a5aff4a5aff4252f71021 ce394aef4a5aff4a5aff5263ff5263f7525aef5263de5263ce424aa5000842000831000010080810100808080000080808000800080808000008080808080000 0800080800000800080800080000080000080000100000100808310000391818735a63ce6b6bef525ae75a63ff525aff4a5af74a5aff4a63ff4252ff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a63ff4a5aff525aff525af75a63f75a63de393984000021293942cee7ded6efded6efd6d6efd6def7dedef7e7d6efd6def7ded6efd6 c6dec6cee7cedeefd6cee7cee7ffe7849c84001800001800cedececedeceefffefbdd6bddef7ded6efd6d6efd6d6efd6deefded6e7d6e7ffe79cb59c00100000 1000081808738473deefded6e7d6deefdedef7dedeefdecee7ce2131210010007b8c73e7ffe7d6efd6def7ded6efd6d6efd6d6efd6d6efd6def7ded6efd6deef ded6efdedeefded6efdedef7dedeefdedeefded6efd6deefded6efdedeefded6efd6deefded6efdedeefded6efd6deefded6efdedeefded6efd6deefded6efde deefded6efd6def7dedeefdedeefded6efd6deefded6efd6deefded6efd6def7ded6efd6deefded6e7d6d6efded6e7d6d6efded6efd6deefded6efdedef7dede efdee7f7e7def7dedef7e7deefdedef7e7deefdedef7ded6efdedef7e7d6efdedef7ded6efdedef7e7deefdedef7ded6efdedef7e7deefdedef7ded6efdedef7 dedeefdedef7dedeefdedef7e7deefdedef7dedeefdee7f7e7def7dedef7e7deefdedef7e7deefdedef7dedeefdee7f7e7deefdee7f7e7deefdedeefded6e7de ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff f7ffff182918102918083118083118083918083110083918083918104221103918104221103921184229103921184229184229184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31295239295239295a39295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3963 4a396b4a39634a426b5239634a426b52426b52427352426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad948cad948cad9c8cad 9c8cad9c94ad9c94ad9c94b5a594ada56b7384000031394aa55a63e74a5af74a5aff4a5aff4a5aff4a52ff525aff4a52ff4a5aff425aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a52ff4a5aff4a 5aff4252ff4a63ff425aff425aff4252f75263ff525af75a63ef525ace636bce3131840000420000290000180000080800081008081008080000000000000000 00000800000000000800000000000008000008080008000000000008000010000821000031101863525abd636be74a52de5263ff5263ff4252ff4252ff4a5aff 4a5aff4a5aff0818c63142ef5263ff525aff4252f75a6bff4a5af7636bff5a63e7525ace4a52ad00004200083100001800000810081000000008080800000008 0008000000080000000000080008000000080008000000000810000010000029000039313984636bd66363e75a5aef5a63ff4a52f74a5aff4a5aff4a63ff4252 ff4a5aff4a52ff4a5aff4a52ff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff 4a5aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a5aff4a5aff5263ff525aef636bde393984000029102129def7efeffff7e7f7e7d6efdedeefdee7f7e7ce e7d6d6e7d6def7e7def7deefffefefffeff7ffefcedece293929213121adbdadd6e7d6f7ffefd6e7d6efffefd6efd6e7f7e7deefdee7f7e7e7efe7e7f7e7efff efa5ada50010000008000008008c948ceff7efefffefdee7dee7f7efefffefe7f7e7cedec6394a39081808c6d6c6deefd6efffefe7f7e7efffefdef7dedeefde e7f7e7def7e7def7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7efe7f7e7e7f7e7e7f7e7e7 f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7efe7e7f7e7e7f7e7e7f7e7e7efe7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7e7e7f7efe7f7e7efffefeff7efefffefe7f7 e7e7f7e7e7f7e7e7f7e7deefdee7efe7e7efe7e7f7e7deefe7e7f7e7def7e7e7f7e7deefe7e7f7e7e7f7e7e7f7efdef7e7e7f7e7e7f7e7e7f7efdef7e7e7f7e7 e7f7e7e7f7efdef7e7e7f7e7e7f7e7e7f7efe7f7e7e7f7e7e7f7e7e7f7efe7f7e7e7f7e7e7f7e7e7f7efe7f7e7e7f7e7e7f7e7e7f7efe7f7e7eff7e7e7f7e7ef f7efeff7efeff7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fff7ffffff182918103121083118103918083918083918083918104221083918104221103921184229104229184229184229184a29184229184a 29184229214a31214a31214a31214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a42316342315a4239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484ad948cad948ca594 8cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594a5a5737b8c000031424aad5263e75263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff525aff4252ff4a63ff425aff4a63ff425aff4a63ff4252ff525aff5a63f7636bef636be74a5ac610187300084a000029080821000008080808080000 0800080800000808000000000008000000000008080000080800100800080000100000100000290000391821734a4ab5737bf75a63ef525af74a5aff4a5aff4a 5aff4a5aff4252ff5263ff4252ff1021ce3142f74a5aff4a5aff5263ff4252f74a5aff525aff5263f75a63ef6373e7636bc600004a0000310000210000100808 1008000808080800000000000000000008080008000008000800000008001000001000002900004221297b636bd6636bef5a63f7525af7525aff525aff4a5aff 425aff425aff4a5aff4a63ff525aff4a52ff525aff525aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff525aff525aff5a63f7636bde39398c000021212939def7eff7ffffe7f7e7eff7 efffffffefffeff7fff7f7fff7efffeff7fff7eff7e7e7efe7eff7ef6b7b6b001000c6cec6f7fff7fffff7f7fff7deefdeefffefefffefefffefefffefdeefde f7fff7efffeff7fff7adb5a5081000000800081008949c94f7fff7f7fff7deefdeeff7efe7efe7eff7eff7fff7eff7ef182918424a42f7fff7deefe7efffefe7 f7e7f7fff7efffefefffefeffff7effff7efffeff7fff7efffeff7fff7efffeff7fff7efffeff7fff7efffeff7fff7efffeff7fff7efffeff7fff7efffeff7ff f7efffeff7fff7efffeff7fff7efffeff7fff7efffefefffefeff7eff7fff7efffeff7fff7efffeff7fff7efffeff7fff7efffeff7fff7efffeff7fff7eff7ef efffefeff7efeff7efeff7eff7fff7efffeff7fff7f7fff7f7fff7f7fff7f7fff7effff7f7fff7effff7f7fff7effff7f7fff7effff7f7fff7effff7f7fff7ef fff7f7fff7effff7f7fff7f7fff7f7fff7effff7f7fff7f7fff7f7fff7effff7f7fff7f7fff7f7fff7effff7f7fff7f7fff7f7fff7effff7f7fff7f7fff7f7ff f7eff7eff7fff7f7fff7eff7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffff7ffff102918183121082918083118083110083918083918083918083918084221103921104221103921184229104221184229 184229184a29184229184a29184229214a31184a29215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 ad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94ad9c94b5a594ada56b7384000031394aa55a63e74a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5a ff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4252f74a5aff4a5aff4252ff5263ff4a52ff4a52f75a63ff525ae7424ad65a63d629318c08084a00003100 002100000800000008000000000000000008080800000000080000000008000800000808001000001000002900003900085a3139a56b6bef4a52e74a5af74a52 f7425aff4252f74a63ff4a5aff4a5aff4a5aff4252ff0818c63142ef4a5aff4252ff4a5aff4a5aff4252ff4a52ff4a5aff525af75263e76b73e7525ab5000052 00003900002900001808001000000800000800000000000000000008000000000008000800001000002100003908085a5a5ace6b6bef4a52e7525af7525aff4a 5aff4252ff425aff425aff425aff4a5aff425aff4252ff525aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252 ff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff4a52ff525aff5263f7636be739398c0000295a6373efffff eff7efffffffffffffeff7efeff7effffffff7fff7eff7eff7fff7f7fff7ffffffeff7ef081008314231f7fff7ffffffeff7eff7fff7f7fff7f7fff7fffffff7 fff7f7fff7fffffff7fff7f7fff7ffffffbdc6bd0008000008000008089ca59cfffffffffffffffffffffffff7fff7eff7effffffff7fff74a524a081008adb5 adf7fff7fffffff7fffff7fff7f7fffff7fff7f7fff7f7fff7fffffff7fff7f7fffff7fff7fffffff7fff7f7fff7f7fff7fffffff7fff7f7fffff7fff7ffffff f7fff7f7fffff7fff7fffffff7fff7f7fffff7fff7fffffff7fff7fffffff7fff7fffffff7fff7fffffff7fff7fffffff7fff7fffffff7fff7fffffff7fff7ff fffffffff7fffffff7fff7fffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff18312118292118312110291810311808311810391808311808391808391808422108391810422110392118422910 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239295239295a39295239315a42295a39315a42295a39315a 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a58c8cad948cad948cad9c8cad9c94b59c8cad9c94b5a58cad9c9cb5a594a5a5737b8c000031424aad5263e75263ff4a5aff4a5aff4a5aff 525aff4a52ff525aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff525aff525aff5263ff4a5ae7525a d6525abd00085200003100082100001000000808080810080808000808080808080800000008080808001000001800002900003910186b424ab56363e7525aef 5a63ff4a5aff4a63ff4a5aff425aff4a5aff4a5aff4252ff4a5aff4252ff1021ce3142ef5263ff4252ff5263ff4a5aff4a5aff4a5aff525aff4a52f7525aff4a 52e7636be7525ac610187300004200002910082100001000000800080800080800000000000008080800000800002100003929297b5a5ace5a63e75a63ff5a63 ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff425aff4a5aff425aff4a5aff4a5aff525aff525aff5a63f7636be739398c00 0029737b8c849494848c8c7b847b949c948c948c8c948c848c848c948c949494949c949ca59cb5b5ad394239080808424a42949c949ca59c9ca59c8c94944a52 4a3942394a524a3942394a4a4a424a424a524a424a42424a42313131080808080800000800313131424a423139317b7b7b8c948c848484adb5ad8c948ca5ada5 5a5a520810082931299ca59c9ca59c9ca59c9ca59c949c949ca59c949c949ca59c949c9c9ca59c949c949ca59c949c9c9ca59c949c949ca59c9ca59c9ca59c94 9c9c9ca59c9ca59c9ca59c949c9c9ca59c949c9c9ca59c949c949ca59c949c9c9ca59c949c949ca59c9c9c9c9ca59c949c949ca59c9c9c9c9ca59c949c949ca5 9c9ca59c9ca59c9ca59cadada5a5ada5adb5adadadadb5bdb5b5b5b5b5bdb5b5b5b5bdbdbdb5bdb5bdbdbdb5bdb5bdbdbdb5b5b5b5bdb5b5b5b5b5bdbdb5b5b5 b5bdb5b5b5b5b5bdbdb5b5b5b5bdb5b5b5b5b5bdbdb5b5b5b5bdb5b5b5b5b5bdbdb5b5b5b5bdb5b5b5b5b5bdbdb5b5b5b5bdb5b5b5b5b5bdb5b5b5b5b5bdb5b5 b5b5b5bdbdb5b5b5b5bdb5b5b5b5b5bdb5b5b5b5b5bdb5adb5b5bdbdbdb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7ffff2129211029181829211029181031180829100831180831180839180831100839180839181042211039 21104221103921184229104221184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239295239295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239634a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad948cad948cad9c8cad9c8cad9c94ad9c94ad9c94ad9c94ada56b7384000031394aa55a63e74a5af74a 5aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252 ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5af75a63f7525ad6424ab500005200003100002108082100001000000810081000000008080800000008081000001800002900003900085a4a52b563 63e75a63f74a5af74a52f7425aff425af7425aff4252ff4a5aff4252ff4a5aff4a52ff4252ff0818c6394af74a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff525aff5a63ff4a52e7737bff3139ad212984000042000029000021000818000008000008000008080810000008000821000031101063636bd66b6bef 5252ef5252ff424af74a5aff4a5aff4a5aff4252ff4a5aff425aff425aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4a5aff5263ff525a ef636bde39398c000031dee7fff7fffffffffffffffff7fffffffffffffffffffffff7fff7fffffffffff7ffffffefefe7293129000000eff7efffffffffffff ffffffe7e7e7101810000800000800000800080808000000081008000800080808000800000000080808000000000800101010101010b5b5b5ffffffffffffff fffffffffffffffff7ffff000800000000e7efe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffff7ff fffffffffffffffffffff7fffffffffffffffffffffff7fffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff213129102918102918183921083118103118083118103918083918083918083918 104221083921104221103921184229104229184229184229184a29184a29184a29184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c7b9c847ba58c7b 9c8c84a58c7b9c8c84a59484a59484a59484a58c8cad9484ad948cad948cad948cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594a5a5737b8c000031424a ad5263e75263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff5263ff5263f7636bef3942b52129840000420000390000211008210000080000080000080008100000100000290000390008 5a2131946b73ef4a52de525af75263ff4252f7425aff425aff3952f74a5aff4252ff5263ff4252ff5a63ff4252f71021c63142e75263ff4252ff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff525aff525aff525aef5a6bf73942bd21218c00004a00083900002108081800001000001800001800002900003918217321 299c6b73f74a52e75a5aff5a5aff4a52ff4a5aff5263ff4a5aff4a5aff425aff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff 525aff525aff5263f7636be739398c000029e7effff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef000000101010ff fffffffffff7f7f7ffffffffffff1821180808080008000808085252525a635a636b636363637b7b7b3939390808080000000808082929297373735a5a5adede defffffffffffffffffffffffffffffff7f7f74a4a4a080808dededefffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff10291818312110311808291810311808311008311808311008 3918083918083918083918083921103921104221103921184229104221184229184221184a29184229184a29184229214a31184a29215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9c8cad948cad9c8cad9c8cad9c8cad9c94ad9c94ada594ada5 6b7384000031394aa55a6be74a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff525aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5af7525af7424ad6424abd18218400004a000039000029000018000008000008000010000029 00003910186b2929946b73ef4252d6525af74a5aff4a5aff4252f74a5aff425aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4252f71021c6314aef4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff525aff4a52ff525aff4a5af75a63f74242c629319c0000420000390000210000210000210000310000 4208106b424abd4252d64a52ef5a63ff4a52ff4a52ff4a52ff4a5aff425af74a63ff425aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff 4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a 5aff4a5aff4a5aff4a52ff525aff5263f75a63de39398c000031dee7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffe7e7 e70000004a4a4af7f7f7fffffffffffffffffff7f7f7bdc6c6000800080808000000ced6ceffffffffffffffffffffffffe7e7e7000000101010101010c6c6c6 ffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829211831211831211031181031180831101031 18083118103918083118083918083918083921083921104221103921184229104221184229184229184a29184229184a31184a29214a31184a29215231214a31 215231214a31295239215239295a39295239295a42295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847ba58c7b9c847ba58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad948cad9c8cad9c8cad9c8cad9c94b59c8cad9c94b5a58c ad9c9cb5a594a5a5737b8c0000314252ad5263e75263ff4a5aff4a5aff4a5aff525aff4a52ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff 4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff5263ff5263ff3942d6424ac621299400005208084200002900002100 00180008310000421018734a4abd424ace525aef5a63f74a5af75a6bff425aff4a63ff4a5aff4a63ff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff2131 d62939de4a5aff4a5aff5263ff4a5aff4a63ff4a5aff4a63ff4a5aff4a5aff4252ff5263ff4252f7525aff4a5aff3942de3942ce3939a5000852000042000031 00003900004a00086b21299c394ad64a52ef525aff525aff525aff525aff5263ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5af75a63f75a63de39398c000029eff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefe70808005a5252ffffffffffffffffffffffffffffffffffff4a4a4a080808181818636363fffffffffffff7f7f7ffffffe7e7e700000000 0000080808bdbdbdfffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffadadad081010b5b5b5ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff102118183121183121103118 103118103118083110083118083118083918083110083918083918104221103921104221103921184229104221184229184229184a29104229184a29184a2921 4a31184a29214a31214a31215231214a31215239215239295a39215239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 4239634a39634a426b5239634a426b52396b4a426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c84a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad 9c8cad9c94ad9c94ad9c94ada594ada56b7384000031394aa5526be74a5af74a5aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff425aff4a5aff4a52ff4a5aff 425aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4252f74a5af75a6bff424ace3139a50000 4a00084200002900003100004200005a2929a53939c63942d64a52ef4a5aff4a5aff4252f74a5aff4a5aff4a5aff4252ff4252ff4a5aff4252ff4a5aff4252ff 4a63ff4a5aff0000ad5263ff4252ff425aff4252ff425aff425aff4a63ff425aff4a5aff4a52ff525aff4a5aff525aff4a5aff4a5aff4252f73942de3942c618 188c00005a08085a00005210107b18189c424ade4a52f7525aff4a5aff4252ff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a52ff4a52 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a52ff4a5aff 4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff525aef636be7313984000031dee7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffe7e7e7000000525252ffffffffffffffffffffffffffffffffffffd6d6d6000000080808000000949494f7f7f7ffffffffff ffdedede000000080808000000b5b5b5fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7bdbdbd000000adadadffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff18 2921183121103118103118083118083118083118103918083918083918083918104221103921104221103921184229104229184229184229184a29184a29184a 29184229214a31184a31214a31214a31215239215231215239215231295a39295239295a39295239315a42295a42315a42315a4239634a31634239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c7b9c847ba58c7ba58c84a58c7b9c8c84a59484a59484a59484a5948cad9484ad948cad9c8ca594 8cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594a5a5737b8c0000314252ad5263e75263ff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff425aff4a63ff4a5aff525aff4a5aff5263ff4a63ff4a63ff4252ef 5263ef3942bd21298c00005200005200004a0810732931a5424ad6525af7525aff525aff525aff4a5aff5263ff4252ff4a5aff4a5aff525aff4a5aff525aff4a 5aff4a5aff4a5aff4a5aff425aff1821d63942ef4a52ff5263ff4a63ff425aff4a63ff4a5aff4a63ff4a5aff525aff5263ff4a5aff4a5aff4252ff425aff4a5a ff2942e73142d63942c63939ad00006b18188c3131b54242de4242e75a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a52ff 4a5aff4a52ff525aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff525aff4a5af75263f75a63de39398c000029e7effff7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefef000000636363fff7f7ffffffffffffffffffffffffffffffffffffc6bdbd000000181818080000 7b7b7bffffffffffffdedede080808000000080808c6c6bdfffffffffffffffffff7fffffffffff7fffffffffff7f7f7ffffffadadad000808c6c6c6ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fff7182921102918183121082910103118083110083118083110083918083918083918083918103921103921104221103921184229104221184229 184221184a29184229184a29184229184a31184a29215231184a31215231214a31295239215231295239295239295a39295239295a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847ba58c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8c ad948ca5948cad9c8cad948cad9c8cad9c8cad9c8cad9c94ad9c94ada59ca5ad6b7384000031394aad526be74a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5a ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4252f742 5aff425aff5263ff4a52ef5a6bf73139b53139ad00006b08087b2931b53939ce424ae74a5af7525aff525aff4a52ff4a52ff4a5aff4a5aff4a52ff4a5aff4a5a ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4252ff1821ce3942f7525aff4a5aff425aff4a63ff425aff4a5aff4252ff4a5aff4a52ff4a5aff4a5aff4a5aff 425aff4a5aff4252ff4252ff3142e73942de3942ce3139c63131c63942d63139d6525aff4a52ff4a5aff4a5aff5263ff4252ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525af7525aef636be7313984000031dee7ffffffff fffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffefe7e7080000313131fffffffffffffffffff7f7fffffffffffffffffffff7eff76b 6b6b000000000000000000ffffffffffffefefef000000080808000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c0008 08d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff21292118312118312110311808311810311808311810391808311808391808391808422108392110422110392118422918 4221184229184229214a29184229214a31184a29214a31184a29215231214a31215231214a31295239295239295a39295239295a39295a39315a42295a393163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b7394846b947b73948473947b739c84739c847b9c84739c847ba58c7b9c847ba58c7b9c8c84a58c84a58c84a59484a58c84ad 9484a5948cad9c84a5948cad9c84a59494b59c8cad9c94b5a58cad9c94b59c8cad9c9cb5ad94a5ad73738c0000314252ad5263e75263ff4a5aff4a63ff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5af75a6bff525aef3139ce2939ce3942de3142de5a63ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff5263ff4252ff4a5aff4a5aff4a5aff4252ff1021ce394af7525aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a 5aff5263ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff3942e73942e73942e74a52f7525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4252ff525a ff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff525aff5a63f75a6bde39398c00 0029e7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7080808101010fffffffffffffffffffffffff7f7f7ffff ffffffffffffffefefef4a4a4a080808080808737373ffffffd6d6d6080808080808101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff ffffff393939080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7ffff1829211029181031181031180831100831180831180839180831100839180839181042211039 21104221103921184229103921184229184229214a29184229184a29184a29214a31184a29214a31214a31215231214a31295239295239295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a31634239634a39634a426b52396b4a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c 84a58c84a5947ba58c84a59484a5948cad9c84a5948cad948cad9c8cad9c8cad9c8cad9c8cad9c94ad9c94ada594a5ad6b7384000031394aa55263e7525af74a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff 4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff0818c6394af74a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252 ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff424aff4a52ff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a52ff525aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff525aff525a f7636bde313984000029dee7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000e7e7e7ffffffffffff f7f7f7ffffffffffffffffffffffffffffffdedede080808000000080808cececee7e7e7000000080808000000bdbdbdffffffffffffffffffffffffffffffff ffffffffffffffffefefef101010000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7102918183121103118083118083918083918083918083918 104221083918104221103921184229184221184229184229184a29184a29214a31184a29214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a4231634231634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 524273524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c7b9c847ba58c7b a58c84a58c7ba58c84a59484a58c84ad9484a5948cad9c84a5948cad9c84a59494b59c8cad948cad9c8cad9c94b5a594ad9c9cb5ad94a5ad737b8c000031424a ad5263e75263ff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff5a63ff4a5aff525aff4a5aff4a5aff525aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4252ff1021c6394aef5263ff4a5aff4a5aff4a5aff 5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff 525aff525aff5a63f75a63de39428c000029e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000d6 d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffff393939101010000000292929848484000000000000080808c6c6c6ffffffffffffffff ffffffffffffffffffffffffffffffffefefef000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7fff710291808291808311808311808 3918083918083918083918084221103921104221103921184229104221184229184221184a29184229214a31184229214a31214a31215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b524a735a426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b73947b6b947b73948473947b739c847394847b9c84739c 847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84a59484a59484a59484a5948cad948cad948cad948cad9c8cad9c8cad9c94ad9c94ada59cadad 6b7384000031394aa5526be74a5af74a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff 4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4252ff1021c63142ef4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a 5aff425aff4a5aff4a5aff525aff525aef636bde313984000029e7e7fffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7ffffffffff ffdedede1010105a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363101010000000101010000000080808000000c6c6c6 fffffffffffffffffff7f7f7fffffff7f7f7ffffffffffff949494000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1029181031 21083118103918083118083918083918084221083918104221103921184229104221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239295239295a39295239295a39295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b7394846b947b73948473947b739c84739c84 7b9c84739c847ba58c7b9c847ba58c7b9c8c84a58c84a58c84a59484a58c84ad9484a5948cad9c84a5948cad9c8cad948cb59c84a59494b59c8cad9c94b59c8c ad9c9cb5ad94a5ad737b8c0000314252ad5263e75263ff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff5263ff4a5aff525aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4252ff5263ff4252ff4a5aff4252ff1021 ce394af75263ff4252ff4a5aff4a5aff5263ff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff525aff4a5aff4a63ff4a5aff5263ff525af75a63f75a6bde39398c000029e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffa5a5a5000000efefeffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffff39393908080810101008080808 0808080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff213121082918083118083118083918083118083918083918104221083918104221103921184229103921184229184229184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31295239295239295239295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3963 4a396b4a39634a396b4a39634a426b52426b52427352426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c84a58c84a5947ba58c84a59484a5948cad9484a5948cad9c8cad9484a5948cad 948cad9c8cad9c94ad9c94ada59ca5ad6b7384000031394aa55263ef4a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4252ff4a5aff4a5aff 4a5aff4252ff1021ce394aef4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a 5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff5263ff525aef636bde313984000031e7e7ffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7ffffffffffff424242212121f7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffefefeff7f7f70000 00000000000000000000000000b5b5b5fffffffffffff7f7f7fffffff7f7f7ffffffefefef636363292929efefeffffffff7f7f7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7ffff103121083118103918083118083918083918104221103921104221103921184229104221184229184221184a29184a29214a 31184a29214a31214a31215231214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a42316342315a4239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a52846352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c7b9c847ba58c7ba58c84a58c7ba58c84a59484a58c84ad9484a5948cad9c84a5948cad9c8cad94 8cb59c84a58c94b59c8cad9c94b5a594ad9c9cb5ad94a5ad737b8c000031424aad5263e75263ff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a 5aff4a5aff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff 5263ff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff5263ff4a5aff4a5aff4a 5aff5263ff4252ff4a5aff4a5aff1021c6394aef5263ff425aff4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff5263ff525aff5a63f75a63de39428c000029efefffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd101010080808f7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffefefefbdbdbd101010101010101010101010bdbdbdffffffffffffffffffffffffffffffffffff3939390808089c9c9cffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7ffff102918083118083118083918083118083918083918103921083921104221103921104221104221184229 104221184a29184229214a31184a29214a31214a31215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52396b4a427352426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b73947b6b947b73948473947b739c847394847b9c84739c847ba58c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad9484a59484 a5948cad948cad9c8cad9484a58c8cad9c8cad9c8cad9c94ad9c94ada59cadad6b7384000031394aa55263ef4a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5a ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5a ff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff0818bd394aef4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff5263f7636bde313984000031e7e7ffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffff080808101010b5b5b5fffffffffffff7f7f7ffffffff fffff7f7f7fffffffffffffffffff7f7f7d6d6d6e7e7e7e7e7e7d6d6d6ffffffffffffffffffffffffffffffffffffadadad080808080808efefeffffffff7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff18292118312108311810392108311810392108391810392108392110422110422118422910 4221184229184229184a29184a29214a31184a29214a31214a31215231214a31215231214a31295239215231295239295239315a42295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239634a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847ba58c7b9c8c7ba58c7b9c8c84a58c84a58c84a59484a58c84ad 9484a5948cad9484a5948cad9c8cad9c8cb59c7b9c8c94b59c8cad9c94b59c8cad9c9cb5ad94a5ad737b8c000031424aad5263e75263ff4a5aff4a5aff4a5aff 4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a63ff4a5aff5263ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff5263ff4a5aff4a5aff4a5aff4a63ff425aff4a5aff4252ff1021c6394aef5263ff4252ff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63 ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff5263ff525af75a63f75a6bde39398c00 0029efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef7373730000009c9c9cf7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefadadad1010104a4a4af7f7f7 fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1831210829180831180831180839180831180839180839181042210839 18104221103921184229104221184229104221184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239215231295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52426b52427352426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c 84a58c84a5947ba58c84a59484a5948cad9c84a5948cad9c8cad9484a58c8cad948cad9c8cad9c94ad9c94ada59ca5ad6b7384000031394aa55263ef525af74a 5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff425aff1829ce2939de4252ff4a5aff4a5aff5263ff4252ff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff5263ff525a ef636bde313984000031e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 7b7b7b080808000000c6c6c6fffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd10101000000063 6363f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7fffff7ffff102918103118083118103918083118083918083918 104221103921104221103921184229104221184229184221184a29184a29214a31184a29214a31214a31215231214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c7b9c847ba58c7b a58c84a58c7ba58c84a59484a58c84ad9484a5948cad948cad948cad9c8cad9494b59c84a58c8cad9c8cad9c94b59c94ad9c9cb5ad94a5a5737b8c000031424a ad5263e75263ff4a5aff4a5aff425aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff5263ff4a5aff4a5aff4252f74a5aff4a5aff0008b55263ff4a5aff425aff4a5aff4252ff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff4a5aff 5263ff525aff5a63f75a63de39428c000029e7effff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffefefef424242101010000000848484dededefffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffff8c8c8c1818 18080808292929e7e7e7fffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff10211818312108291808311808311808 3918083918083918083918084221103921104221103921104221104221184229184221184a29184229214a31184229214a31214a31215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad9484a58c8cad9484a5948cad9c8cad9484a5948cad948cad9c8cad9c94ad9c9cb5a59cadad 6b7384000031394aa55263e74a5af74a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252ff5263ff4a5aff4252ff1021c63142ef4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff425aff4a5aff425aff4a5aff4252ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff425aff4a63ff4a5aff5263ff525aef636bde313984000031e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7f7f7f7f7f7ffffffdedede8484841010101818183939399c9c9cadadaddededef7f7f7e7e7e7d6d6d6d6d6d69494944a4a4a 1010100808086b6b6bdededeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2131211029181831210829181031 18083118083918083118083918083918084221083918104221103921184229184221184229184229184a29184229184a31184a29214a31184a29215231214a31 215231215231295239215231295a39295239295a39295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847ba58c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad9484ad948cad9484a5948cad9c8cad948cb59c84ad9494b59c8cad9c94b59c94 ad9c9cb5ad94a5ad737b8c000031424aad5263e75263ff4a5aff4a5aff425aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff525a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff5263ff4a5aff5263ff4252ff4a5aff4a5aff1021 c6394af74a5aff4a5aff4a63ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a63ff4a5aff4a63ff4a5af75a63f75a6bde39428c000029e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffff94949442424200000008080800000008080800000010101008 0808000000313131949494e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212921102918102918 103118103118083110083118083110083918083110083918083918084221103921104221103921184229103921184229184229184a29184229184a29184a2921 4a31184a29215231214a31215231214a31215239215231295a39215239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 4239634a39634a426b5239634a426b52396b4a426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8484a58c7ba58c84a5947ba58c84ad9484a5948cad9484a5948cad948cad948cad948cad 948cad9c8cad9c94ad9c94ada59ca5ad6b7384000031394aa55263e7525af74a5aff425aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff 4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4252ff5263ff 4a5aff4252ff1021c63142ef4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a 5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff 4a5aff4a5aff4252ff4a5aff4a5aff4a5aff425aff4a5aff4a5aff5263ff525aef5a6bde313984000031e7e7ffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffcececeadadad6363633939 394242424a4a4a9c9c9cd6d6d6fffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 2921183121102918083110103921083118083118103918083918083918083918104221083918104221103921184229184229184229184229214a29184229184a 29184a29214a31184a29215231214a31215231215231215239215231295a39295239295a39295a39315a42295a39315a42315a4239634a31634239634a316342 39634a39634a39634a39634a426b52396b4a426b52396b4a427352426b524a735a4273524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84ad9484a5948cad9484a5948cad9484ad94 8cb59c8cad948cad9c8cad9c94b59c94ad9c9cb5ad94a5a5737b8c000031424aad5263e75263ff4a5aff4a5aff425aff525aff4a5aff525aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525a ff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff5263ff4a 5aff4a5aff4252ff4a5aff4a5aff1021c63142ef5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a63ff425aff4a63ff4a5af75263f75a63de39428c000029e7effff7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7ffff182921183121103118083110083110083110103918083918083918083110083918083918084221103921104221103921184229184221184229 184229184a29184229184a29184a29184a31184a29215231184a31215231215231295239215231295a39295239295a39295a39295a42295a39315a42315a4231 6342315a4239634a31634239634a316342396b4a39634a426b52396b4a426b52396b4a426b52426b524a735a426b524a735a4a735a4a7b5a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c7ba58c84ad9484a58c84 a59484a5948cad948cad948cb59c8cad948cad9c8cad9c94ad9c94ada59cadad6b7384000031394aa55a6be7525af74a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff425aff4a5aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a 5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4252ff4a5aff4252ff4252ff0818c63952f74252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff 4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff425aff4a5aff4252ff4a 5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4a5aff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4a5a ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a5aff4252ff4a5aff4a52ff4a5aff425aff4a5aff4a5aff525aff5263ef636bde313984000031e7e7ffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7f7f7f7f7f7fffffff7f7f7ff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffefef efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff21312110291810311810311808311808311010311808311008311808311810391808391808422108391810422110392118422910 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239295239295a39295239315a42295a39315a42315a42315a 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b5a84635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7373947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847ba58c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c8cad 9484a5948cad9484a5948cad9c84ad948cad948cad9494b59c8cad9c94b59c8cad9c9cadad94a5ad737b8c0000314252ad5a63e75263ff4a5aff525aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a5aff4a52ff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff525aff4a5aff4a5aff4a5aff4a5a ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4a5aff525aff4a52ff525aff4a5aff425aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff425aff 4a5aff4a5aff4a5aff4252ff4a63ff4a5aff4a5aff4a5aff4a5aff4252ff1021ce3142e74a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5a ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff425aff4a5aff4a5aff4a63ff4a5aff525aff525aff5a63f7636bde31398c00 0031e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff1831211831211029101031181039180831180831180831180831180839180839180839180839181042211039 21104221103921184229104221184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239295239295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a31634239634a39634a426b52396b4a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7373947b6b947b7394846b947b739c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8484a58c 7ba58c84a59484a58c84a59484a5948cad9484a59484ad9484ad948cb59c8cad948cb59c94ad9c94ada59cadad94a5ad6b7384000031394aa55a6be7525af74a 5aff4a52ff4a5aff425aff4a5aff4a5aff4a5aff425aff4a5aff4252ff4a5aff4a52ff525aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4252ff4a5aff4252 ff4a5aff4a5aff4a5aff4252ff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff 4a5aff4a5aff4252ff4a63ff425aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff525aff4252f74a5aff4a5aff4a5aff4a5aff5263ff4a52ff4a5aff4a5aff4a 5aff4a52ff425aff4252ff4a5aff4252ff4a5aff4a5aff4a5aff4252ff4a52ff4a5aff4a52ff0818c6394af74a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52 ff4a5aff4a52ff4a5aff4a52ff4a5aff4a52ff4a5aff4252ff4a5aff4252ff4a63ff4252ff5263ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff 4a5aff4a5aff4a52ff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a52ff4a5aff4a5aff4a63ff4a5aff4a5aff4a5aff5a5aff5a5a ef6b6bde313184000031dee7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffff183121183121103118103118083110103918083118103918083918083918083918 084221084221104221103921184229104221184229184229184a29184a29184a29184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a4231634231634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7373947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c7b9c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84ad9484a58c8cad9484a5948cad9c84ad948cb59c8cad948cb59c8cad9c94ad9c8ca59c9cb5b594a5ad737b8c000029424a a55263e75a63f74a5af7525aff4a5aff4a5aff4a5aff5263ff4a5aff4a63ff4a5aff4a63ff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff4a5aff4a5aff 4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff525aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a5aff4a 5aff4a5aff4a5aff525aff4a5aff4a5aff425aff5263ff4252ff4a5aff4a5aff4a5aff5263ff4a5aff4a5af75a63ff4a5af74a5af74a5aff4a5aff4252f75a63 ff4a5aff4a5aff4a52ff4a5aff4a5aff525aff4a5aff4a52ff4a5aff525aff4a5aff5263ff4a52ff5263ff4252f71821ce3142ef5263ff4a5aff525aff4a5aff 525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff4252ff525aff4a5aff5263ff4252f7525aff4a5aff525aff4a5aff5263ff4a 5aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff525aff4a5aff5263ff4a5aff525a ff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff525aff4a5aff5263ff4a5aff5263ff4a5aff 525aff5a5aff6363f7636bde31398c000031e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff721312118312110311808291010392108311808311808311808 3918083918083918083918104221103921104221103921184229104221184229104221184a29184229184a29184229214a31184a29214a31214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a84635a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c736b947b6b947b7394846b947b73948473947b739c8473947b739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9c84ad948cad9c8cad9c94b5a594ad9c94ad9c9cadad94a5ad 6b7b8400002142529c5a6bde5263e75263f75263f75263ff4a5af75263f75263ef5263f74a5af75263f74a63f75263f74a5af75263f7525af75263f74a5aef52 63f74a5af75263f75263f75263f75263f75263f74a5af75263f75263f75263f7525af75263f7525af75263ff4a5af75263ff4a5af75263ff4a5af75263f74a5a f75263f74a5af75263ff4a5af75263ff4a5af75263ff5263f75263f74a5aef4a5af75263f75263f74a5aef5263ef5263ef5a63ef5263e75263ef5263ef5a6bf7 5263f75263f74a5aef5263f7525af75263ff525af75263ff4a5af75263ff525af7525af74a5af75263ff4a5aef5263ff5263ff4a5af71821bd4252e7525af74a 5af74a52ef525af74a5af75263ff525af75263f74a5af7525af7525af75263f74a5af7525af7525af75263f7525af75263f7525af75263f75263f75263f7525a ef5263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7 525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f7525af75263f74a5aef52 63f75263ef5263f7525af75a63f75a63e76b73de313984000031dee7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829181829181831181831211029181031 18083118083918083118083918083918084221083918104221103921184229104221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7373947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad9484a5948cad9484a5948cad9c84ad948cad9c8cad9494b59c8cad9494ad9c8c ad9c9cb5ad94a5a57384840008214a5aa55a6bce5a6bde5263de5a6bef5a6be75a6be75a6be7636be75a6be75a6be75263e75a6be7526be75a6be75263e75a6b e75a6be75a6be75a6be75a6be7526be7526be75263de5a6be7526bde5a6be75263de5a6be75263de5a6be75263de5a6be7526be75a6be75263e75a6be7526be7 5a6bef5263e75a6bef526be75a6bef5263e75a6bef5263e75a6be75263e75a6bef526be75a6bef5263e75a6bef5a6be75a6be75263d66373de5a6bd66373de5a 6bd6636bde5a6bde5a63de636be7636be75a63e75a63e7525ade5a63e75a6bef636bef5263e7636bef5a63e75a6be75a63e75a63e7636bef5a63e75a63de2129 a54a52ce5a6be75a63e7636bef5a63e7636be75263de636be75a63e7636be75a63e7636be75a63e7636be75a63e7636bef5a6be75a6be75263de636be75a63de 5a63e75263de5a6be75a63de5a6be75a63e7636be75a63e75a6be75a63e7636bef5a63e75a6bef5a63e7636bef5a63e75a6bef5a63e7636bef5a63e75a6bef5a 63e7636bef5a63e75a63e75a63e7636bef5a63e75a6bef5a63e7636bef5a63e75a6bef5a63e7636bef5a63e75a6bef5a63e7636bef5a63e75a6bef5a63e7636b ef5a63e75a6be75a63e75a6be75a63e7636be75a63de6b73de6b73ce31397b000021e7f7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff182918213121 102918102918083118083118083118083918083118083918083918104221083918104221103921184229103921184229184221184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4231634231634239634a3163 4239634a39634a426b52396b4a426b52396b4a426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7373947b6b947b73947b6b947b73 9c8473947b739c8473947b7b9c84739c847b9c847b9c847ba58c7b9c8484a58c7b9c8c84a59484a58c84a59484a5948cad9484a59484ad9c84ad948cad9c8cad 9c8cad9c94ad9c94ada594ada59cadad6b7b7b00081810215221317b18298418318c18298c18299418298c21298c21298421298c18298c18318c18298418318c 18298c21318c18298421318c18318c21318c18318c21399421318c21399421318c21399421318c21399421318c21319421318c21319421318c21399421319421 399421319421399421319429399421319429399421319429399c21319429399421319429399c21319421399c21319421319431399c21318c18297b394a9c2939 8400004a00004200004a00085231429439429c29318c21318c29399c31399c31399c29319429399c29319429399c29319431399c29399431399431399c3942a5 21298c31399c21298421318c39429c31429c31399431399431399431399c31399431399c31399431399c31399431399431399431399c31399c31429c31399431 429c39429c101873101873424aa531399431429c31399431429c31399431429c31399431429c31399c31399c31399c3139a531399c31399c31399c3139a53139 9c3139a531399c3142a531399c3139a531399c3142a531399c3139a531399c3142a531399c31399c31399c3139a531399c3139a531399c3142a531399c3139a5 31399c3942a531399c3139a531399c31429c31399c31429c31399c39429c31398c394284182152000021e7eff7f7fffff7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fff7182921103121103121083118103921083918083918083918104221083921104221103921184229104221184229104221184a29184229184a 29184229214a31214a31214a31214a31295239215231295239215231295239295239295a39295239315a42315a42315a42315a42316342315a42316342315a42 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b527b635a846b5a84635a846b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7373947b6b947b7394 846b947b739c84739484739c8473947b7b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9c84a594 8cad9c8cad9c8cad9c8cad9c9cb5a594ad9c94ada594ada573847b18293118314a18295218296310296310296b10216b18296b18296321296318296318316b18 296318316b18296318316b18316321316b18316318316310296318296310295a18296310295a18296310295a18316318296318316318296318316b1829631829 6318296321316318296321316318296321316b18316321316b18316321316b21316b21316b21316b21316b18316b21397321317321317321317321316b212963 424a8418295a21315a29396331426329395a29396329316339427329396b31427329397331397329397331397329397331397b29397331397331397331397329 316b39427b314273313973314273000039212963525a8c4252844a52844a528c4a528c4a528c4a528c4252844a528c4252844a528c4252844a528c4252844a52 8c425284525a8c4a528c3942734a5284525a94394a7b4a5284424a844a52844252844a528c424a844a528c4252844a528c424a844a528c424a844a528c424a84 4a528c424a844a528c424a844a528c42528c4a528c424a8c4a528c42528c4a528c424a8c4a528c424a8c4a528c424a844a528c424a844a528c424a844a528c42 4a844a528c424a844a528c424a844a528c424a8c4a528c424a8c4a528c424a8c4a528c4252844a5a84525a7b5a637b5a5a73f7f7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffff7fffff7ffff102918082918083118083118083918083118083918083918104221103918104221103921104221104221184229 104221184a29184229184a29184229214a31184a29215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42295a3931 5a42315a42316342315a4239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b63527b63527b635a8463527b635a846b5a84635a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c736b947b6b947b7394846b947b73948473947b739c8473947b739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a59484 a59484a5948cad9c84a5948cad9c84a5948cad9c8ca59494ad9c94ad9ca5bdada5b5ad9cadada5b5bd9cb5c694adc69cb5d694adce9cb5d69cadcea5b5d6a5b5 ceadb5d6a5b5cea5b5d6a5b5d6a5bdd6a5b5cea5bdd6a5bdd6adc6d6adbdd6b5c6deb5c6deb5cee7b5c6e7b5cee7b5cee7bdcee7b5cee7bdceefbdcee7c6d6ef bdceefc6d6efbdd6efc6d6efc6d6efc6d6efc6d6efc6def7c6d6efcedef7c6def7cedef7c6def7cedef7cedef7cee7ffcedef7cedeffcedeffd6e7ffcedeffce deffdeefffd6e7ffdee7ffd6e7f7dee7f7e7f7ffe7f7ffefffffe7f7ffdee7ffdee7ffeff7ffe7f7ffe7f7ffdeefffe7f7ffe7f7ffe7f7ffe7efffeff7ffeff7 ffe7f7ffeff7ffeff7ffeff7ffeff7ffeff7ffe7efff29314ad6def7eff7ffeff7ffefefffeff7ffe7efffeff7ffeff7ffeff7ffefefffeff7ffefefffeff7ff e7efffeff7ffefefffeff7ffe7efffeff7ffe7efffeff7ffeff7ffeff7ffeff7ffeff7ffe7efffeff7ffeff7ffeff7ffefefffeff7ffeff7ffeff7ffefefffef f7ffeff7ffeff7ffefefffeff7ffeff7ffeff7ffefefffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7 ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffefefffeff7ffefefffeff7ffeff7ffeff7ffeff7ffeff7ffeff7ffeff7fff7f7fff7f7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7fffff7ffff10291810312108311810391808311810392108391808392108392110422110422118422910 4221184229184221184a29184221214a29184a29214a31214a29215231214a31215231215231295239215231295239295239295a39295a39315a42295a39315a 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7373947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c84a59c8cad9c8cad9c8cad9c8cad9c94b59c94ad9c9cb5a594ad9c9cb5a59cb5a59cb5ad94b5ad94b5b594b5b59cb5bd9cb5bd a5b5bda5b5bdadbdbda5bdbda5bdbda5bdbdadbdc6a5bdbdadc6c6adbdbdadc6c6adbdc6adc6c6adbdc6adc6c6adbdc6adc6ceadc6c6b5c6ceb5c6ceb5c6ceb5 c6cebdced6b5c6cebdced6bdced6c6d6d6c6ced6c6d6dec6ced6ced6dec6d6deced6dec6d6decedee7ced6decedee7cedee7d6deefcedee7d6deefcedeefd6e7 efcedeefcedeefd6e7efdeeff7d6e7efced6e7d6e7eff7ffffdee7e7d6dededee7e7eff7f7efeff7eff7f7e7eff7eff7ffeff7ffeff7ffe7eff7eff7ffeff7ff eff7ffeff7fff7fffff7f7fff7ffffeff7fff7f7fff7f7fffffffff7f7ff081018e7e7effffffff7ffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffff7f7fff7fffff7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffff7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7fff71831210829180831180831180839180831180839180839181042210839 18104221103921184229104221184229184221184a29184229184a29184a29214a31184a29215231214a31215231214a31295231215231295a39215231295a39 295a39315a42295a39315a42315a42316342315a4231634231634239634a31634239634a39634a426b52396b4a426b52426b52426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a7b5a527b63527b5a527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7373947b6b947b73947b6b947b739c8473947b739c8473947b7b9c84739c847b9c847b9c847ba58c7b9c8484a58c 7b9c8c84a5947b9c8c84a59484a5948cad9484a59484ad9c8ca59c8cad9c8cad9494ad9c94ad9c94b5a594ad9c9cb5a59cb59c9cbdad94b5a59cb5a594b5a59c bdad94b5ad9cbdad9cb5ada5bdb5a5bdadadbdb5a5bdada5c6b5a5bdb5adc6b5adc6b5adc6bdadbdb5adc6bdadc6bdb5c6bdadc6bdb5cec6b5c6bdb5cec6b5c6 c6b5cec6bdcec6bdcecebdcec6bdcecebdcecec6d6cec6cecec6d6cec6d6ceced6d6c6d6ceceded6ced6d6ceded6ced6d6cededecededed6dedecededed6e7de d6deded6e7e7d6dee7cededed6e7e7deefefceded6deefe7e7efefe7efefd6d6d6efefeff7f7f7eff7efe7e7e7eff7efeff7efeff7efeff7efeff7f7eff7f7ef f7f7eff7f7f7f7f7eff7f7f7fffff7f7f7f7fffff7fff7fffffff7f7f7f7fffffffffff7f7f7101010e7efefffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffffeffff7103121083118103918083118083918083918 104221083921104221103921184229104221184229104221184a29184229184a29184a29214a31214a31215231214a31295231215231295239215231295a3929 5239295a39295239315a42315a39315a42315a42316342315a42316342315a4239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524273 524273524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7373947b6b947b73947b6b947b739c8473947b739c8473947b7b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a59484a59484a58c8cad9c84a5948cad9c84a5948cad9c8cad9c94ad9c8cad9c94b5a594ad9c9cb5a594b59c9cb5a59cb5a59cb5 a594b5a59cbdad94bda59cbdad9cbdada5bdb5a5bdadadc6ada5bdadadc6b5a5c6b5adc6b5a5c6b5adceb5adc6b5b5c6bdadc6b5b5cebdb5cebdb5cebdb5cebd bdd6c6b5cec6bdcec6b5cec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6ceceded6ced6ceceded6ced6d6d6ded6ceded6d6ded6ceded6d6e7ded6 deded6e7ded6dededee7e7d6e7ded6e7decedededeefe7deefe7d6e7dedee7dee7f7efe7f7efe7efefe7efe7efefefefefefeff7efe7efe7eff7efeff7efeff7 efeff7eff7fff7eff7f7f7fff7f7f7f7f7fffff7fff7fffffffffff7fffffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffff08291808311808311808 3918083918083918083918084221103921104221103921184229104221184229104221184a29184229214a29184a29214a31214a29215231214a312152312152 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b524a735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a 846b5a846b638c735a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c736b947b6b947b73947b6b947b73947b73947b739c8473947b739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a59484a59484a5948cad9c84a5948cad9c8cad9c94ad9c8cad9c94ad9c94ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a594b5a594bda594b5a59cbdad9cbdada5bdada5bdadadc6ada5bdada5c6ada5bdadadc6b5a5c6adadceb5adc6adb5ceb5adc6b5b5 cebdb5c6bdb5cebdb5cebdb5cebdb5cebdbdd6c6bdcebdbdd6c6bdcec6c6d6c6bdd6c6c6d6cec6d6c6c6d6cec6d6ceced6ceced6ceceded6ced6ceceded6cede d6ceded6ceded6d6deded6ded6d6e7ded6deded6e7decee7d6d6efdecee7d6d6e7dedeefdedeefe7d6ded6e7efe7e7efefe7efefdee7e7e7efefe7efefeff7ef e7efe7eff7efeff7e7eff7efeff7efeff7efeff7f7f7f7f7f7f7eff7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff212121efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff1831211031 21083118103918083918103918083918084221083918104221103921184229104221184229184229184a29184229184a29184a29214a31184a29215231214a31 215231215231295239215231295239215239295a39295a39295a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a84635a84 6b5a846b5a846b5a846b638c735a846b638c73638c73638c73638c736b9473638c736b947b6b8c7373947b6b947b73947b73947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b5a58cad9c94ad9c94 ad9c9cb5a594b5a59cb5a594b59c9cb5ad9cb5ad9cbdad94bda59cbdad9cbdada5bdada5bdada5c6ada5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adce b5adceb5b5cebdadceb5b5cebdb5cebdb5d6bdb5cebdbdd6c6b5cebdbdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6c6c6decec6d6cecedecec6d6ceceded6cedece ceded6cedeced6ded6ceded6d6e7deceded6d6e7ded6e7ded6e7ded6e7ded6efded6efdedeefded6e7d6deefe7deefe7e7efe7dee7dee7efe7e7efe7eff7efe7 efefeff7efe7f7efeff7efe7f7efeffff7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f72121 21e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff f7ffff182918082918083118083118083918083110083918083918104221103921104221103921184229104221184229184229184a29104229184a29184a2921 4a31184a29215231214a31215231214a31215231215231295a39215231295a39295a39315a42295a39315a42315a42316342315a4239634a39634a396b4a3963 4a396b4a39634a426b52396b4a426b52426b52427352426b524273524273524a735a4273524a735a4a735a527b634a735a527b63527b63528463527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7373947b6b947b73947b6b947b73 9c8473947b739c8473947b7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a5947b9c8c84a59484a5948cad9484a5948cad948cad948cad9c8cad 9c8cad9c8cad9c94b5a594b59c9cb5a594b59c9cb5a59cada59cb5ad9cb5a59cbda594b5a59cbdad9cbdada5bdada5bdada5bdada5bdada5c6b5a5bdb5adc6b5 adc6b5adc6b5adc6b5adceb5adc6b5b5cebdadc6b5b5cebdb5cebdb5d6c6b5cebdbdcec6b5cec6bdd6c6bdcec6c6d6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedecec6dececeded6ceded6ceded6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7d6d6e7ded6e7dedeefe7d6e7dedee7e7e7efe7e7efe7e7ef e7e7efe7deefe7e7f7efe7efe7e7f7efe7efefeff7f7e7f7efeffff7eff7efeff7f7eff7f7f7f7f7f7f7f7fffff7f7fff7fffffffffff7ffffffffffffffffff fffffffff7ff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fffff7ffff102918103121083118103918083918083918083918104221103918104221103921184229104229184229184229184a29184229184a 29184a29215231184a31215231214a31215231215231215239215231295a39295239295a39295239315a42295a39315a42315a4231634231634239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52426b52427352426b524273524273524a735a4a735a4a7b5a4a735a527b634a7b5a527b634a7b5a52846352 7b635a8463527b635a846b5a846b5a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7373947b6b947b7394 7b6b947b739c8473947b739c8473947b7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9c84a5948cad9484a594 8cad9c8cad9c94ad9c8cad9c94b5a594ad9c9cb5a594b59c9cb5a59cb5a5a5b5ad9cb5ada5bdad9cbda59cbda59cbda5a5bdb5a5bdadadc6ada5bdadadc6b5a5 bdb5adc6bdadbdb5b5c6bdb5c6b5b5c6bdadc6b5b5cebdb5cebdb5cebdb5cebdbdd6c6b5cec6bdcec6bdcec6bdd6c6bdcec6c6d6cebdcec6c6d6cec6d6cec6d6 cec6d6cecedecec6d6ceceded6cedececeded6ceded6ceded6ceded6d6e7ded6e7d6d6e7ded6e7d6d6e7ded6e7ded6e7ded6e7d6deefe7dee7e7e7efefd6dede e7efe7e7efe7e7efe7e7efe7eff7efe7efe7eff7efe7f7efeff7f7e7efefeff7f7eff7eff7fff7eff7eff7fff7f7f7f7fffff7fffff7fffffffffff7ffffffff fff7fffffffffffffffffffff7ff212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffff7ffff102918183121082918083118083110083918083918083918083918104221103921104221103921184229104221184229 184229184a29184229184a29184a29214a31184a29215231184a31215231215231215239215231295239215239295a39295a39295a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a426b52426b524a735a426b524a735a4a735a4a7b5a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c736b947b6b947b73947b6b947b73947b73947b739c8473947b739c84739c847b9c8c739c847b9c8c7b9c8c84a58c7b9c8c84a59484a59484a59484a59484 a59484a5948cad9484a5948cad9c8cad9c94ad9c8cad9c94b5a594ad9c9cb5a594ad9c9cb5a59cada5a5b5ad9cb5a59cbda59cb5a59cbdad9cbdada5bdada5bd adadc6ada5bdadadbdb5a5bdb5adc6b5adbdb5b5c6b5adc6b5b5cebdadc6b5b5cebdadc6bdb5cebdb5c6bdb5cec6b5cebdbdcec6bdcec6bdd6c6bdcec6c6d6ce bdcec6c6d6cec6d6c6c6d6cec6d6cecedecec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7d6ceded6d6e7ded6e7d6d6e7ded6e7d6deefded6e7dede e7e7dee7e7dee7e7e7efe7e7efe7e7efe7e7efe7e7efe7e7f7e7e7efe7eff7efe7efefeff7f7eff7efefffefeff7efeff7eff7f7eff7fff7f7f7f7fffff7f7ff f7fffffffff7f7fffffffffffffffffffffffffff7ff211818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7fff721312118312118312108291810311808311810391808311808391808391808422108391810422110392118422918 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a 42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b6b947b6b947b73947b6b947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5ad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bd cec6c6d6cebdd6c6c6d6cec6d6c6cedecec6d6cecedecec6d6ceceded6cedececeded6cedececee7d6ceded6d6e7d6ceded6d6e7decee7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efefefefeff7f7eff7eff7fff7eff7eff7ffefeff7eff7fff7f7fff7 f7fff7f7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7ffff1829211029181031181029181031180829100831180831180839180831100839180839181042211039 21104221103921184229103921184229184221184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239215231295239215231295239 295239315a42295a39315a42315a42316342315a4231634231634239634a31634239634a39634a426b52396b4a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b8c7b6b8c7b6b947b6b8c7373947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b5a594ad9c94b5a594ada59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdb5a5bdadadc6b5a5bdadadc6b5adc6b5adc6bda5c6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5ce bdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedecec6dececeded6cedececeded6ceded6d6e7deceded6cee7de cee7ded6e7ded6e7dedee7ded6e7dedeefe7d6e7dedeefdedeefdee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7efeff7eff7 ffefeff7eff7fff7f7f7f7fffff7f7f7f7ffffffffffffffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff213121182921102918183921082918103118083118103918083918083918083918 104221083918104221103921184229184221184229104221184a29184229184a29184229214a31214a31214a31214a3129523921523129523921523129523929 5239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524273 52426b524a735a4a735a4a735a4a735a4a7b5a4a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b5a846b5a846b5a846b5a846b 638c73638c73638c73638c736b9473638c736b947b6b8c7373947b6b947b73947b6b947b739c8473947b739c8473947b7b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484ad948cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5bdb5a5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadcebdb5cebdb5cebd bdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6cedececeded6ceded6ceded6ceded6d6e7dece e7d6d6e7decee7d6d6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7deefdee7efe7e7efe7e7efe7e7efe7e7f7efe7f7efeff7efe7efefeff7efeff7eff7f7 f7eff7eff7fff7eff7eff7fff7f7f7f7fffff7f7fff7fffffff7fffffffffffffffffffffffffffffffffff7f7ff212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff10291818312110311810291810311808311808311808311808 3918083918083918083918084221103921104221103921184229184221184229104221184a29184229214a31184229214a31184a29214a31214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a84635a 846b5a846b638c6b5a846b638c735a846b638c73638c73638c73638c736b947b6b8c736b947b6b947b73947b6b947b73947b73947b739c84739484739c84739c 847b9c8c739c847b9c8c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a5 94ada59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5bdb5a5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5 cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7deceded6d6e7decededed6e7ded6e7dedee7ded6e7dedee7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7ef e7efefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffff7f7f7fffffffffffffffffffffffffff7ff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2131211831211831211031181031180829101031 18083118103918083118083918083918084221083918104221103921184229184221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b8c73638c736b947b6b8c7b6b947b6b947b73947b6b947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84ad9484a5948cad9484a5948cad948cad948cad9c8cad9494b59c8cad9c94b5a594 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5adce bdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6cedecec6d6cecedecec6d6ceceded6cedece ceded6cedeced6e7d6ceded6d6e7deceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefdee7efe7deefe7e7efe7e7efe7e7f7efe7 efe7eff7efefefefeff7efeff7eff7fff7eff7eff7fff7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff182918183121102918103118 103118103118082910083118083118083918003110083918083918104221103921104221103921184229104221184229184229184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4231634231634239634a3163 4239634a39634a426b52396b4a426b52426b52426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b8c7b6b8c7b6b947b6b8c7373947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b5a594ad9c94b5a594ada59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdb5a5bdadadc6b5a5bdadadc6b5 adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedececedececeded6cedececeded6ceded6d6e7deceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7d6e7dedeefdedeefdee7efe7deef e7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7efeff7eff7fff7eff7eff7fff7f7f7f7fffff7f7f7f7ffffffffffffffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffff18 3121102918103118103118083118103118083118103918083918083918083918104221083918104221103921184229184221184229184229184a29184a29214a 31184a29214a31214a31214a31214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a4239634a31634239634a316342 39634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524273524273524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b5a846b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 7b6b947b739c8473947b739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad94 8cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594ada59cb5ad94b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5bdb5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdb5cebdb5cebdb5cebdbdcec6bdcebdbdcec6bdcec6c6d6c6bdcec6c6d6cebdd6c6c6d6cec6d6cec6d6 cec6d6cecedecec6d6ceceded6cedececeded6ceded6ceded6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefde e7efe7e7efe7e7efe7e7efe7e7f7efe7f7efeff7efe7efefeff7efeff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffffff7fff7fffffff7ffffffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffeffff7183121102918183121082918103118083118083118083118083918003918083918083918084221103921104221103921184229184221184229 184221184a29184229214a31184a29214a31184a29214a31214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b524a735a426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a84635a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b73947b6b947b73947b73947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c84a58c84ad9484a58c84 ad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a594ada59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5bdb5a5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6bdcebdbdcec6bdcec6bdd6c6bdcec6c6d6ce bdcec6c6d6cec6d6c6c6d6cec6d6cecedecec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7deceded6d6e7ded6deded6e7ded6e7dedee7ded6e7dede e7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7ff f7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7fff7ffffff18292118312118312110312110311810311808311810391808311808391808391808422108391810422110392118422918 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239295239295a39295239315a42295a39315a42295a393163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad 9484a58c8cad9484a58c8cad9484ad948cad9c8cad9494b59c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdb5c6bdbdcebdb5cebdbdcec6b5cebdbdd6c6bdcec6c6d6c6bd cec6c6d6cec6d6c6c6d6cec6d6c6cedecec6d6cecedecec6d6ceceded6cedececeded6cedeced6e7d6ceded6d6e7deceded6d6e7ded6e7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefdee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fffff7fff7fffffffffffffffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7fff7f7fff71829211029181031211029180829180831180831180839180031100839180839181042211039 21104221103921184229104221184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239295239295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a31634239634a39634a426b5239634a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8484a58c 7b9c8c84a59484a58c84a58c84a58c8cad9484a59484ad948cad948cad9c8cad948cad9c8cad9c94b5a594ad9c94b5a594ada59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdb5a5bdadadc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6bdce bdbdcec6bdcec6c6d6c6bdcec6c6d6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedececedececeded6cedececeded6ceded6d6e7deceded6d6e7de d6deded6e7ded6e7dedee7ded6e7dedeefe7d6e7dedeefdedeefdee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7fffffff7f7f7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7fffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff102118183121103118083118103918083918083918083918 104221083918104221103921184229184221184229184229184a29184a29184a29184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a4239634a31634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c84739c847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b5a594b5a59cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5bdb5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdb5cebdb5cebdb5cebd bdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6 ded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefdee7efe7e7efe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7f7eff7eff7f7 f7eff7eff7fff7eff7f7f7fff7f7f7f7fffffff7fff7fffffff7fffffffffffffffffffffffffffffffffff7fff7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fff7f7fff710291810291808311808311808 3918083918083918083918084221103921104221103921184229184221184229184221184a29184229184a29184229214a31184a29214a31214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b73947b6b947b73948473947b739c84739484739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c84a58c84a59484a58c84ad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a5 94ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5bdb5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdb5c6bdb5cebdb5c6bdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7deceded6d6e7ded6deded6e7ded6e7dedee7ded6e7dedee7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffff7fff7fffffffffffffffffffffffffffff7181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7c6c6c6fffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff1021181031 21083118103918083118083918083918084221083918104221103921184229184221184229184229184a29184229184a31184a29184a31184a29215231214a31 215231214a31215239215239295a39215239295a39295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b7394846b947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad9484a5948cad9484a5948cad948cad948cad9c8cad9494b59c8cad9c94b59c94 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5adc6b5adc6b5adc6b5b5ce bdadc6bdb5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedece ceded6cedececee7d6ceded6d6e7deceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefdee7efe7deefe7e7efe7e7efe7e7f7efe7 efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffffffffffffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffff73737bffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7fff7213129082918083118083118083918083110083918083918104221103921104221103921184229104221184229184229184a29104229184a2918422921 4a31184a29214a31214a31215231214a31215239215239295239215239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3963 4a396b4a39634a426b5239634a426b52396b4a427352426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8484a58c7ba58c84a59484a58c84a59484a58c8cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b59c94ad9c94b5a594ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdb5a5bdada5c6b5a5bdadadc6b5 a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedecec6dececeded6cedececeded6ceded6d6e7deceded6d6e7ded6deded6e7ded6e7dedee7ded6e7dedeefe7d6e7dedeefdedeefdee7efe7deef e7e7efe7e7efe7e7f7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7fffffff7f7f7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7f7f7ffffff63636befe7f7f7f7ffffffffe7e7efffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7ffff103121083118103918083918083918083918104221083918104221103921184229184221184229184229184a29184a29184a 29184229214a31184a31214a31214a31215239215231215239215231295a39295239295a39295239315a42295a42315a42315a42316342315a4239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c84739c847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad94 8cad9c8cad948cb59c8cad9494b59c94b59c9cb5a594b59c9cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5bdb5a5bdadadc6b5a5 bdb5adc6b5a5c6b5adc6bdadc6b5adcebdadc6b5b5cebdadcebdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6de cec6d6cec6decec6dececeded6c6dececeded6ceded6ceded6ceded6d6e7decee7d6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefde e7efe7e7efe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffffff7fff7fffffff7ffffffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadb5b59c9ca59c9ca52929319494a59c9cad94949cf7f7 f7f7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7ffff102918083118083110083918083118083918083918083921103921104221103921184229184221184229 184221184a29184229184a29184229184a31184a29215231184a31215231214a31295239215231295239215239295a39295239315a42315a42315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c84a58c84a59484a58c84 ad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b59c94b59c9cb5a594ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5bdb5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5cebdb5c6bdb5cebdb5cebdb5cec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6ce bdd6c6c6d6cebdd6c6c6decec6d6cec6decec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7deceded6d6e7ded6deded6e7ded6e7dedee7ded6e7dede e7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7ff f7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b737b5252637b7b8c08002129294a 6b6b8c52526bd6d6e7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff18292118312108311810391808311810392108391808392108392110422110392118422918 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239215231295239295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5b5cebdadc6bdb5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6bdcec6bdd6c6bd d6c6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedececeded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffeff7f7f7ffffeff7ffeff7ffd6 d6ff39316b42427bd6ceffe7deffefeffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff1829210829180831180831180839180831180839180839181042211039 21104221103921184229104221184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239215231295239295239295a39 295a39315a42295a39315a42315a42316342315a4231634231634239634a39634a396b4a39634a426b5239634a426b52426b52427352426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b5a594ad9c94b5a594ad9c9cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5ce bdb5d6c6b5cec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7de d6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffffffffeff7ffe7f7 ffdee7ff949cce4a4a8c00004a18186b181063c6c6ffdedeffeff7fff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffff182918103118083118103918083118083921083918 104221083921104221103921184229184221184229184229184a29184229184a29184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b5a594b5a59cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5bdada5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5adcebdadc6b5b5cebdadcebdb5cebdb5cebd b5cec6b5cebdbdd6c6b5cec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6 e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff eff7ffefefffdee7ffc6c6ff29297b18187308087318107b18187b101063b5adefdedeffeff7fff7f7fffffffff7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff10211818312108311808311808311808 3918083118083921083918083921103921104221103921184229184221184229184229184a29184229184a29184229214a31184a29215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a5 94ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdadc6bdb5cebdadcebdb5cec6b5cebdbdd6c6b5cebdbdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffff fffff7f7fff7f7ffefefffe7efffc6c6ff39398c18107b18188c08088408088418189421219410086b736bb5d6d6ffefeffff7f7ffffffffefeff7ffffffffff fffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff2131211829181831211029181039 18083118083918083118083921083918083921083918104221104221184229184221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239215231295239295239295a39295a39315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5adc6b5adc6b5adc6b5adce bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedece ceded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7 efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffff fffffffffffffff7fffffffffff7ffffe7e7ffadadef21187321188c21189c0800942121b51010a51010a508088c29219421187b6b63b5d6d6ffefefffefefff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff212921182918183121 103118103118083110083118083110083918083118083921083918083921103918104221103921184229104221184229184229184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4231634231634239634a3963 4a396b4a39634a426b5239634a426b52426b52426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b5a594ad9c94b5a594ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5 adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdb5d6c6b5cec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7ffffefefffe7efffcec6ff18106b2118941008941008a51010ad00009c00009c1010ad00009c10109410088421188484 84d6d6d6ffefefffeff7fffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 2918183118102918102910103918103118083118103918083918083918083918104221083921104221103921184229184221184229184221184a29184a29184a 29184229214a31214a31214a31214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a42316342315a4239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b5a594b5a59cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadcebdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6 cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7de e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7ffffffffffffffe7efffd6d6ff42429c21188c08088c08009c0808a51010ad0808ad1010b50008ad0808a51008 9c10089421189c1810844a4a9cceceffe7effff7fffffffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fff7182921183121103118082910083110083110103918083118083918083118083918083918083921103921104221103921184221184221184229 184221184a29184229184a29184229214a31184a29215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a594ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cebdbdd6c6bdcec6c6d6ce bdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dede e7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7efffceceff31317b18108408088c2118ad0808a50810ad0000a50000a50808b5 0000a50810b50808a500009c08089410108c080873313184d6deffe7e7fff7ffffeff7f7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff21312118292110311810311810311808291010391808311008311808311810392108391808392108392110422110422118422918 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231215231295239295231295a39295239295a39295a39315a42315a393163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdada5c6b5a5c6b5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cec6bdd6c6bd d6c6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedececeded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7f7ffd6ceff42428c18107b1010941010a50808a500009c0008ad08 08ad0810b50000ad0808ad0000a51010b50800a50808a52121ad21219c181884313184d6d6ffeff7fff7fffffffffff7fff7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff2131211829211029181031181031181031180831100831180831180839180831180839180839181042211039 18104221103921184229103921184229184229184a29184229184a29184a29214a31184a29215231214a31215231214a31295239215231295a39295231295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239634a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b5a594ad9c94b5a594ad9c9cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5ce bdb5d6c6b5cec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7de d6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7efffded6ff948cde08006b21219c0000941818b50000 a50810b50008ad0000a50000ad0808ad1010b50000ad0000a51018bd0000a500009c080094181094181084212173c6c6ffefefffeff7fffffffffffffff7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffff182921183121103118103118083110103918083118103918083918083918083918 083921083921104221103921184229184221184229184221184a29184a29214a29184a29214a31214a29215231214a31295231215231295239215231295a3929 5239295a39295a39315a42315a42315a42315a4231634231634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b5a594b5a59cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdadcebdb5cebdb5cebd b5cec6b5cebdbdd6c6b5cec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6 e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7fff7f7ffe7deff635aa518107b181094080094 1818b50000a50808b50808b50000ad0808b50808b50000ad0808b50808b50808ad0000a51010b50000a51010b508089c2118a521188c21187bbdbdfff7f7ffef f7fffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff21312118312118312108291010391808311008311808311008 3918083118083918083918104221103921104221103921184221104221184229184221184a29184229214a29184a29214a31184a29215231214a312152312152 31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a5 94ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdadc6bdb5cebdadcebdb5cec6b5cebdbdd6c6b5cebdbdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fff7f7ffdedeff6b63a510086b21 189c08009c0808ad0000a50000ad0000a50808b50000ad0000b50000b50808b50800b50800ad0000ad0808b50000a51010b50800ad0808ad08009c1000941008 84393194a5a5e7e7e7ffeff7ffffffffeff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1821181831211029181031181031181031 18083118083918083118083921083918083921083921104221104221184221104221184229184229184a29184229184a31184a29214a31184a29215231214a31 215231215231295239215231295a39215239295a39295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5ce bdadc6bdb5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedece ceded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7 efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffff7fff7ffffffe7eff7f7f7ffdee7ff7b7b bd21187b2118941000940800a50808b50000ad0808b50808b50000ad0808b50000b50000b50800b50800b50000b50808b50000ad1010bd0000a50800ad0800ad 1008ad1008a518109c100884393194948cd6e7e7ffe7effff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff182921182921 103118103118083110083118083118083918083118083918083918104221103918104221103921184221103921184229184229184a29184229184a29184a2921 4a31184a29215231214a31215231214a31215239215231295a39215231295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 4239634a39634a426b5239634a426b52426b52427352426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b5a594ad9c94b5a594ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5 a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdb5cec6b5cebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7fffffff7f7f7fffffff7fff7ffffffefffffeff7ff dedeff7b73bd18187b10108c0808940800a50808ad0800b50000ad0000ad0000ad0000ad0000ad0808b50000a50808bd0000ad0800b50000b50000ad0000ad08 08b50000ad0000ad0808ad1008ad10089c10089c10088429218c847bcededeffefefffe7f7fff7fffffffffff7fffff7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffeffff7183121103118103118083118103918083918083918083918104221083921104221103921184229184221184229184221184a29184a29184a 29184a29214a31184a29215231214a31215231215231215239215231295a39295239295a39295a39315a42295a42316342315a4239634a31634239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b5a594b5a59cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5adcebdadc6b5b5cebdadcebdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cebdbdd6c6bdd6c6bdd6c6bdd6c6c6d6cebdd6c6c6d6 cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7de e7efe7e7efe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffff ffffeff7ffdedeff948cd618107b18189408089c1010a50808ad0000ad0000ad0808bd0000b50808b50000ad0808b50000ad0808bd0000ad0808b50000ad0808 b50808b50800b50808b50000a50000a50808ad0800a50808a51810ad1008a508008c29218c7b7bcedee7ffe7efffe7eff7f7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffff7fffff7ffff102918083118083918083118083918083118083918083918104221103921104221103921184221104221184229 184221184a29184229184a29184a29214a31184a29215231184a31215231215231295239215231295239215239295a39295a39315a42315a42316342315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a427352426b524a735a426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b5a594ad9c9cb5a594ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5cebdadc6bdb5cebdadcebdb5cec6b5cebdbdd6c6b5cebdbdd6c6bdcec6c6d6ce bdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dede e7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7efefe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7ffffeff7ffdedeff9c9ce721188410088c0800940808a50008a50000a50000a50008b50000ad0000b50000ad0808b50000ad0000ad0000ad0000b5 0000ad0000ad0000a50808b50000b50000b50000ad0808b500009c0008a50000a51008ad1000ad1000a510088c1010737b84c6dee7ffefefffffffffd6dee7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff18291810311808311810391808311810392108391808422108391810422110422118422110 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231215231295239215231295a39295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a846b527b635a846b5a84635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5cebdadc6bdb5cebdb5c6bdb5cebdb5cebdb5cec6b5cebdbdd6c6bdcec6bdd6c6bd cec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedececeded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7f7f7ffffffffffffefefffeff7ffdee7ffbdbdff21218c10089408009c0808ad0808ad0008a50808ad0808ad0000ad0000ad0000ad0000ad0000ad0808b500 00ad0808b50000b50800b50000ad0808ad0000ad0800b50000b50808bd0000ad0008ad0008ad0810ad0000a50800ad1010b51008a510109421218c5252a5d6de ffe7effff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7fffffffffffffffffffffff7fffffffffff7fff72131211029180831180831180839180831180839180839181042211039 18104221103921184221104221184229184229184a29184229184a29184a29214a31184a29215231214a31215231214a31295231215231295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a31634239634a39634a396b4a39634a426b52426b52427352426b52427352426b524a 735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b59c94ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5ce bdbdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7de d6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7ffffefefffdedeff9494d61010730808841810ad0800a50000a50808ad0000a50808ad0000ad0000ad0000ad0000ad0000 ad0000ad0000ad0800b50000ad0000b50000ad0000ad0000ad0000ad0000ad0800bd0000b50000b50000ad0008ad0000a50000a50808b51008b500009c10089c 10109421218c212173ced6ffdee7fff7fffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7fff7103121083118103918083118083918083918 104221083918104221103921184221104221184229184221184a29184a29214a29184a29215231214a29215231214a31295231215231295239215231295a3929 5239295a39295239315a42315a42316342315a4239634a31634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524a73 5a426b524a735a4a735a4a735a4a735a4a7b5a4a7b5a527b634a7b5a527b63527b635a8463527b635a846b5a84635a846b5a846b5a846b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdb5cebdb5cebdb5cebd bdcec6bdcebdbdd6c6bdcebdbdd6c6bdd6c6bdd6c6bdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6 e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7f7fff7f7ffe7e7ff9494d621217b21219410089c1008a50808ad0800ad0000ad0008ad0000ad0808b50000ad 0808b50000ad0000b50000ad0800b50000b50808b50000b50808b50000ad0808ad0000ad0800b50000b50800bd0000b50008b50008ad0808ad0000a50000b508 08b51008b508009c08089410108c181884313184ceceffe7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff08291808311808311808 3918083918083921083918084221103918104221103918104221104221184229184221184a29184229214a29184a29214a31184a29215231214a312152312152 31295239215231295239295239295a39295239315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52 396b4a427352426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdb5c6bdb5cebdb5c6bdbdcec6b5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7fffffff7f7f7ffffffeff7fff7f7ffe7e7ffceceff29218418188c0000841010a50800a50800ad0000a50000ad0000a500 00ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000b50000ad0000b50000ad0000ad0000ad0000ad0000ad0000b50000b50000b50000ad0008ad0000 ad0008ad0000ad0800ad0800ad1008ad08009c18109c08088408007339398cadb5efe7e7fff7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829211031 18083118103918083118103921083918084221083918104221104221184221104221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231215231295239215231295a39295239295a39295a39315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 634a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a846b527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b59c94 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5ce bdadc6bdb5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedece ceded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7 efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe7e7ffa5a5e71818732118940808941010ad0808a50008a50000ad0000 ad0000ad0000ad0000ad0808b50000ad0000b50000ad0000b50000ad0000b50000b50808b50000b50000b50000ad0808ad0000ad0000b50000b50800bd0000b5 0000b50000ad0808b50000ad0000ad0000ad0800ad1008b51010ad00009c1810a518109c08087b31318ca5a5e7e7e7fff7f7fff7f7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff f7ffff182918103118083118083118083918083118083918083918104221103918104221103921184221104221184229184229184a29184229184a29184a2921 4a31184a29215231214a31215231214a31295231215231295a39295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 4239634a39634a426b5239634a426b52426b52427352426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b59c94ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdb5adc6b5 a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fff7f7ffdee7ffceceff00085a3131a51010940808a50000a50000ad 0008ad0000ad0000ad0000ad0000ad0808b50000ad0000ad0000ad0000ad0000ad0000b50000ad0000b50000ad0000b50000ad0000ad0000a50000ad0000ad00 00b50000ad0000b50000ad0000b50000ad0000ad0000ad1008b50000a50000a50000a51010b50000a50808a500008c21299c101873adadefe7e7ffeff7fff7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fff7ffffff102918103118083118103918083918083918083918104221083918104221103921184229104221184229184221184a29184a29214a 29184a29215231214a29215231214a31295231215231295239215231295a39295239295a39295239315a42315a42315a42315a4231634231634239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524a735a426b524a735a4a735a4a735a4a735a4a7b5a4a7b5a527b634a7b5a527b6352 7b635a846b527b635a846b527b635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdb5cebdb5cebdb5cebdbdcec6bdcebdbdd6c6bdcebdbdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6 cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7de e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7f7ffdedeff39398c3131a500008c00009c08 10ad1010b50000ad0000ad0008ad0808b50000ad0808b50000ad0000b50000ad0808b50000b50000b50000ad0808b50000b50000b50000ad0000b50000ad0000 ad0000ad0808b50000ad0000b50000b50800b50000b50808b50000ad0000ad0000ad0808b50800b50808b50808b51008b500009c1010ad1818a510108408106b b5bdffdee7fff7f7fff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffff7fff7102918183118082910083118083110083918083918083921083918084221103918104221103921104221104221184229 184221184a29184229214a31184a29214a31184a29215231214a31215231215231295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52396b4a427352426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a8463527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5cebdb5c6bdb5cebdb5c6bdbdcec6b5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6 bdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dede e7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffeff7ffefefffceceff4242941818840808 8c1010a50810ad0000a50000ad0008b50000ad0000ad0000ad0000b50000b50000ad0000ad0000b50000ad0000b50000ad0000b50000ad0000b50000ad0000b5 0000ad0000ad0000ad0000ad0000ad0000b50000ad0000b50000ad0000b50000ad0000ad0000ad0000ad0000ad0000ad0000ad0000b50000ad1010bd0808ad00 009c1018a510108410106b8c94cee7effff7f7ffefeffff7f7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff18312118292118312110291810391808311810391808311808392108391808392108392110422110422118422110 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231215231295239215231295a39295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a846b527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b6b947b6b947b7394846b947b739c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5cebdadc6bdb5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bd cec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedececeded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7fffff7ffffe7deff9c94d6292173 18107b1010940808a50000a50808b50000ad0008b50000b50800b50000b50808b50000b50000b50000ad0808b50000b50000b50000ad0000b50000b50000b500 00ad0808b50000b50000b50000ad0008b50000ad0000b50000ad0000b50000b50000b50000ad0000b50000ad0000ad0808ad0000ad0000ad0808bd0000b50000 b50000b51010bd0008ad0808a51818a508107b10186b6b6ba5dedeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7ffff2129211029181829211029181031180831100831180831180839180831180839180839181042211039 18104221103921184221104221184229184229184a29184229184a29184a29214a31184a29215231214a31215231214a31295231215231295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239634a426b52426b52427352426b52427352426b524a 735a4273524a735a4a735a4a7b5a4a735a4a7b5a4a7b5a528463527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b8c7b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5ce bdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7de d6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffeff7ffe7e7ffc6 c6ff21186b10087b10088c1008a50800a50008ad0808b50000ad0000b50000b50000b50000b50000ad0000b50000ad0000b50000ad0000b50000ad0000b50000 ad0000b50000ad0000b50000ad0000b50000ad0000ad0000ad0000ad0000ad0000ad0000ad0000b50000ad0000b50000ad0000ad0000a50008ad0000a50000ad 0008b50000b50800b50800b50000b50808b50808ad08089c10109418187b21216b6b6b9ce7e7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff213129102918102918183921083118103118083118103918083918083918083918 104221083921104221103921184229104221184229184221184a29184229214a29184a29214a31214a29215231214a31295231215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524a73 5a426b524a735a4a735a4a735a4a735a4a7b5a4a7b5a527b634a7b5a527b63527b635a846b527b635a846b527b635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b73947b6b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a59cb5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdb5cebdb5cebdb5cebd bdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6 e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7 ffe7efffcec6ff42399421188c1808942110ad0800a50808ad1010bd0000ad0808b50808b50000b50808b50800b50800b50000ad0800b50000ad0000b50000ad 0000b50000ad0000b50000ad0808b50000ad0000b50000ad0000b50000ad0000b50000ad0000b50000ad0000b50000ad0000b50000ad0808b50000ad0808ad00 00ad0008ad0000a50808b50000ad0808b50000ad0808bd0000ad0808ad0808a510109c08087b29298410104ae7e7fff7f7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff10291818312110311808291810311808311008311808311008 3918083118083918083918104221103921104221103921104221104221184229184229184a29184229214a29184a29214a31184a29215231214a312152312152 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52 396b4a427352426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a8463527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b73947b6b947b73948473947b739c847394847b9c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdb5c6bdb5cebdb5c6bdbdcec6b5cebdbdd6c6bdcebdbdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffeff7ffdedeff29216b1810732110941808a508009c0800a50800ad0000ad0008ad0000ad0000ad0800ad0000ad0000ad0000ad0000b50000ad00 00ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000 ad0008b50000a50008ad0000a50808ad0000a50000ad0000ad1010bd0000ad0000ad0000a51008a510089418188c212173948cc6e7e7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829211831211831211031181031180831101039 18083110103918083918083921083918104221083921104221104221184221104221184a29184229184a29184229184a31184a29214a31184a29215231214a31 215231215231295239215231295a39215239295a39295a39315a42295a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a846b527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b7394846b947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b59c94 ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5ce bdadc6bdb5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedece ceded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7 efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7ff6b6b9429216b29188421109410009c2118bd0000a50800ad1010b50808ad0000a51010b50808ad0808ad0800ad0808 b50000ad0000b50000ad0800b50000ad0000ad0000ad0808b50000ad0000ad0000ad0008b50000ad0000b50000ad0000b50000ad0000b50000ad0000b50000ad 0000b50000ad0000ad0000ad0000ad0000ad0008ad0808ad0008ad0008a50008ad0000a50808b50808ad1008ad10089c181094181073948cd6dedefff7fffff7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff102118183121103121103118 103118103118083110083118083110083918083118083918083918104221103921104221103921184229104221184229184229184a29184229184a29184a2921 4a31184a29215231214a31215231214a31215231215231295a39215239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3963 4a396b4a39634a426b5239634a426b52426b52427352426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b8c7b73947b6b947b73 9c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b59c94ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdb5adc6b5 a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7ffdedeff9c94d629298421188c2118a508009c1010ad0808ad00009c0808a50810ad0000a50808ad 0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad00 00ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0008ad0000a50008a50008a50810ad0000a51010ad10089c18109418107b9494ded6d6 ffeff7fff7f7fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff18 2921183121103118103118083118083918083110103918083918083921083918104221104221104221104221184229104221184229184229184a29184229184a 29184a29214a31184a29215231214a31215231215231215239215231295a39295239295a39295239315a42295a42315a42315a42316342315a4239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524a735a426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b527b635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 7b6b947b739c84739484739c847394847b9c8c739c847b9c8c7b9c847ba58c7ba58c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdb5cebdb5cebdb5cebdbdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6 cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7ded6e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7de e7efe7e7efe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefeff7eff7ffe7efff8c8cce1010730808841818a508089c1010b51008ad0808a518 18bd0000ad0000ad0000ad0000b50800b50000ad0808b50000ad0000ad0000ad0808ad0000ad0000ad0000ad0808ad0000ad0000ad0000ad0808b50000ad0000 ad0000ad0000b50000ad0000ad0000ad0008ad0000ad0000b50000ad0808b50000ad0800b50000ad0000ad0000a50808ad0008a50800a508009c100894181884 5a5aa5dedefff7f7ffe7eff7fffffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7ffff182921102918183121082910103118083110083918083110083918083918083921083918104221103921104221103921184229104221184229 184229184a29184229184a29184a29184a31184a29215231184a31215231215231215239215231295239215239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a846b527b635a8463527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5cebdb5c6bdb5cebdb5c6bdbdcec6b5cebdbdd6c6bdcebdbdd6c6bdcec6c6d6ce bdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dede e7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7efefe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efffdee7ff949cde39399c1010840808940000 941010ad0808a50000a50808ad0000ad0000ad0000b50000ad0000b50000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad 0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000ad0000b50000ad0000b50000ad1010b50000a50810ad0000a50808a51010a529 21a5181084adadffd6d6fff7f7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff21292118292118312110311810311810311808311810391808391810391808391810422110392118422110422118422918 4221184229184229184a29184229214a31184a29214a31214a31215231214a31215231215231295239295239295239295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c8c739c847ba58c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5cebdadc6bdb5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bd cec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedececeded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffefeff7eff7ffe7efffc6ceff 5252a521218c10088c0800942118bd0000a50808b50000ad0008ad0000ad0008b50000b50808b50000ad0800b50000ad0800b50000ad0000b50000ad0008b500 00ad0008b50000ad0000b50000ad0000b50000ad0808b50000ad0808b50000ad0808b50000ad0000ad0800b50000b50000ad1010bd0000a50008a50808a50808 a510109c08087b08086badadefdedefff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7ffff1829211829181031181031180829100831180831180839180831100839180839181042211039 21104221103921184229103921184229184229214a29184229184a29184a29214a31184a29214a31214a31295239214a31295239215231295239295239295a39 295a39315a42295a39315a42315a42316342315a4231634231634239634a39634a396b4a39634a426b5239634a426b52426b52427352426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b8c7b73947b6b947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b59c94ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6b5b5cebdb5cebdbdcec6b5ce bdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedececedececeded6cedececeded6ceded6d6e7d6ceded6d6e7de d6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff fffff7ffffefefffced6ff4242941010842121a508009c1010ad0000a50000a50000a50008ad0000ad0000ad0000ad0808b50000ad0000ad0000ad0000b50000 ad0000ad0000ad0000ad0000ad0000ad0000ad0000b50000ad0000b50000ad0000b50000ad0000ad0000ad0000b50000ad0000ad0000b50000b50000a50808ad 0810ad0808a508009421189c18187b29296bdedefff7ffffe7eff7fffffffff7fffffffff7fff7fffffffffff7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff102918183121103118083118103918083918083918083918 104221084221104221103921184229184229184229184229184a29184229214a31184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a316342396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b73947b6b947b739c84739484739c84739c847b9c8c739c847b9c8c7b9c847ba58c7b a58c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5adcebdadc6b5b5cebdb5cebdb5cebdb5cebd bdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6cedececeded6ceded6ceded6ceded6d6e7ded6 e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffff7ffffe7e7ffceceff5a5aad10107b18189408089c0800a50808ad0810ad0000a50000ad0000ad0808b50000ad0000ad0808b5 0000b50000ad0000b50000ad0008ad0000ad0008ad0000ad0000b50000b50000b50000ad0808b50000b50000b50000b50008b50000b50000b50808b50000ad00 00ad1008b50000a51010ad08089c10109410087b9494e7d6deffeff7fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7f7fffff7fff710291808311808311808311808 3918083918083918083918104221103921104221103921184229184221184229104221184a29184229184a29184229214a31184a29214a31214a312152312152 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a427352426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739c847b9c84739c 847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9c84a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7fff7f7ffe7efffd6d6ff8484ce21218410108c10109c0808a500009c0808ad0000ad0808b50000ad00 00ad0000ad0000ad0000ad0000ad0000ad0000ad0000a50000ad0000a50000ad0000ad0000b50000b50808b50000ad0000b50000ad0000b50000b50808b50000 ad0808b50800ad0808ad0000a51008ad08089c10109418107b8484d6ced6ffe7efffe7efffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff1021181031 18083118083918083118083918083918084221083918104221103921184229104221184229184229184a29184229214a31184a29214a31214a31215231214a31 215231215231295239295239295239295239295a39295a39315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c8c739c847ba58c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b59c94 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5a5c6b5adc6bdadc6b5adce bdadc6bdb5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6cedecec6d6cecedecec6d6ceceded6cedece ceded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7 efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff7ffeff7ffdedeff6b6bad08086b10108408089408089c1008ad1010 b50000a51008b50808ad0008b50000ad0008b50000ad0808b50000ad0800ad0000a50808ad0000ad0000b50000ad0000ad0000ad0808b50808b50808b50008b5 0008b50000ad0808b50000ad0808ad00009c2121bd10089c08008c18188c181863d6d6ffe7efffeff7ffeff7fff7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff183121082918083118083118083918083110083918083918104221083921104221103921184229104221184229184221184a29184229184a29184a2921 4a31184a29214a31214a31295239214a31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 42396b4a39634a426b5239634a426b52426b52427352426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b8c7b73947b6b947b73 9c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b59c94ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5 a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6b5b5cebdb5cebdbdcec6b5cebdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedececedececeded6cedececeded6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7eff7efe7efe7eff7efefefefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffefefffefefffd6deff737bbd29318c18188c 00008410089c00009c1810b50000a50000ad0000ad0008b50000ad0808b50000ad0800ad0000ad0800ad0000a50000ad0000ad0000ad0000a50000ad0000ad00 00b50000ad0000b50000ad0008ad0000a50000a51810b50808a508009421189c18188c423994ceceffe7efffeff7ffeff7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7ffff103121083118103918083918083918083918104221103918104221103921184229104221184229184229184a29184a29214a 31184229214a31214a31215231214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a4239634a31634239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 7b6b947b739c84739484739c84739c847b9c8c739c847b9c8c7b9c847ba58c7ba58c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6 cec6d6cecedecec6d6ceceded6c6dececeded6ceded6ceded6ceded6d6e7decee7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7de e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffff7ffffefefffde deffadadef18187321218c0808841810a500009c0808ad0808b50000ad0000b50008bd0000b50808b50000b50800b50800ad0800ad0000ad0808ad0000ad0008 a50000a50808ad0000ad0008b50000ad0808b50000a51818bd1010ad0800a51810a510088410107b424294d6d6ffe7e7fff7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7ffff102918083118083110083918083118083918083918103918083921104221103921184229104221184229 104221184a29184229184a29184229214a31214a31214a31214a31295239215231295239215231295239295239295a39295239315a42295a39316342315a4231 6342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6ce bdd6c6c6d6cec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7d6ceded6d6e7decee7d6d6e7ded6e7ded6e7ded6e7dede e7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffff fffffffff7f7ffefefffd6d6ffadadef29217321188408088c10089c00009c0000a50000ad0000b50000b50000b50000b50800b50000ad0800b50000ad0000ad 0000a50008ad0000a50808a50000ad0000ad0000ad0000ad0008ad0808ad0000a508009c08009421189c10087318186bceceffe7efffefeffffffffff7ffffff ffffeff7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff18292118312108311810391808391810392108391810422108391810422910392118422910 4221184229184229184a29184a29214a31184a29214a31184a29215231214a31295239215231295239295239295a39295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c8c739c847ba58c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5b5cebdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bd cec6c6d6cebdd6c6c6d6cebdd6c6c6decec6d6cecedecec6d6ceceded6cedececeded6cedececee7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7 ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffeff7fff7f7ffe7e7ffceceff18186321218c0808841818a50808a50000ad0000b50808bd0000b50808b50800b50800b500 00b50800b50000ad0008ad0000a50808ad0808ad0808b50808b50808b50000ad0808ad0808ad0808a51010a52929ad08006b5252a5bdbdf7e7effff7ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffff1829210829180831180831180839180831100839180839181042210839 21104221103921184229104221184229104221184a29184229184a29184229214a31184a29214a31214a31295239214a31295239295239295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a31634239634a39634a426b5239634a426b52426b52427352426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b8c7b73947b6b947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdadadc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6b5b5cebdb5cebdbdcec6b5ce bdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6cecedecec6dececeded6cedececeded6ceded6d6e7d6ceded6d6e7de d6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7eff7efe7efe7efefefe7efefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7f7fff7ffffffffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7fffffffffffffffffffffff7f7ffffffffdedeffe7deff2929732929940808840800941010b50000ad0000ad0808bd0800 b50000ad0800b50000b50000b50000ad0000ad0008ad0000a50808ad0000ad0000ad0800b50808b50000a51008ad1008a52121a5080073313184d6d6ffefefff eff7fff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff182921103118083118103918083918083918083918 104221104221104221103921184229104221184229104221184a29184a29214a31184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a4239634a31634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b73947b6b947b739c84739484739c84739c847b9c8c739c847b9c8c7b9c847ba58c7b a58c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a59cb5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5adcebdadc6b5b5cebdb5c6bdb5cebdb5cebd bdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6cecedecec6d6ceceded6cedececeded6ceded6ceded6ceded6d6e7ded6 e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7efeff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fffff7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffffffffefefffced6ff39398c10107321189c0800940800a5 1010b50000a50000ad0800b50800ad0808b50000b50000b50000ad0008ad0008ad0000ad0808b50800b50800b50800ad1808b50000942118a510087b423994ce ceffe7efffeff7fffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff10211810311808291808391808311808 3918083918083918083918104221103921104221103921184229104221184229104221184a29184229214a31184229214a31184a29215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739c847b9c84739c 847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6ceceded6c6d6ceceded6cede ceceded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7dedee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7efefe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7efeff7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffff7f7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffefefffdedeff6363b518 107b18109410109c0800a51010b500009c1010b50000ad0000ad0000ad0000ad0000ad0008b50000ad0000b50000ad0000ad1008b50800ad08009c2110a51810 8c31318cceceffe7e7fff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2131211829181831210829181031 18083118103918083918103918083918104221083918184229103921184229184221184229184229184a29184229184a31184a29214a31184a29215231214a31 215239214a31295239215239295a39295239295a39295a39315a42295a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c8c739c847ba58c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b59c94 ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5a5c6b5adc6b5adc6b5b5ce bdadc6bdb5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6cedecec6d6cecedecec6d6ceceded6cedece ceded6cedeced6e7d6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7e7efefe7 efe7eff7efe7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7fff7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffff ffe7efffd6d6ff52529c21187b1008840000840800941010ad0000a50000a50808ad1010bd0000b50000b50000b50000b50808b51008bd0800b50800ad1008a5 18189c080073292184c6bdffdee7fff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7212921102918102918 082910103118083110083118083118083918083918083918083918104221103921104221103921184229104221184229184229184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31215239215239295a39215239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 4239634a39634a426b5239634a426b52396b4a426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b8c7b73947b6b947b73 9c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b59c94ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5 a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdbdcec6b5cebdbdcec6bdcec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cece decec6d6cecedececedececeded6cedececeded6ceded6d6e7d6ceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7eff7efe7efe7efefefe7efefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7f7f7f7fff7fffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff7f7f7f7f7fff7ffffeff7ffdedeff6b6bad31298418188c18189c08089c00009c1818bd0808ad0000a50000ad0000b50000b50808bd0000b50808b508 00ad0800a510089418188c181873bdbdf7e7effff7ffffefeffff7fffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 2918183118103118103118103921083118083118103918083918083918083918104221084221104221103921184229184229184229184229214a29184a29184a 31184a29214a31184a31215231214a31215239215231215239215231295a39295239295a39295239315a42295a42315a42315a4239634a31634239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 7b6b947b739c84739484739c84739c847b9c8c739c847b9c8c7b9c847ba58c7ba58c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5adcebdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6bdcebdbdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6 cec6d6cecedecec6d6ceceded6cedececeded6ceded6ceded6ceded6d6e7ded6e7d6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7dee7dedeefe7dee7de e7efe7e7efe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7fffffff7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7ffffffffeff7ffdedeffb5b5f710187310108c2121ad0808a50000a50808ad0000ad0000ad0000ad0808b50000 b50000b50800b51008ad1008a508088421217bb5b5efe7e7fff7ffffefeff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fff7183121183121103118082910083110083118103918083118083918083918083918083918104221103921104221103921184229184221184229 184221184a29184229184a31184229184a31184a31215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdcec6c6d6ce bdd6c6c6d6cec6d6c6c6d6cec6d6cecedecec6d6ceceded6c6d6ceceded6cedececeded6ceded6d6e7d6ceded6d6e7ded6ded6d6e7ded6e7dedee7ded6e7dede e7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7efefe7efe7eff7efe7efefeff7efeff7efeff7f7eff7efeff7f7eff7eff7fff7f7f7f7f7fff7f7ff f7fffff7f7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffe7efff7b7bc621218408007b2121ad1008a50808a50808ad0808ad 0800ad0800ad0000ad0000ad0808ad1008a51810942118849c9cd6e7efffeff7ffeff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff21312118291810311810311810391808311010391808311008311808311810422108391810422108422110422110392118422910 3921184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239215231295239295239295a39295a39315a42315a423163 42315a4239634a31634239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b6b947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847ba58c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5cebdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6c6d6cebd cec6bdd6cec6d6cebdcec6c6d6cec6d6cec6d6ceceded6c6d6ceceded6ceded6ceded6ceded6ceded6ceded6d6e7ded6ded6d6e7ded6e7dedee7ded6e7dedee7 dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7ffffffffffe7e7ffdee7ff9494d639318c0808732921a508 00941008a50800a51008ad0000a50808b50800a51008a508008418107b9494d6efeffff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7fff72131291831210829101031181031180831180831100831180831180839180831100839180839181042211039 21104221103921184229103921184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239215231295239295239295a39 295a39315a42295a39315a42315a4239634a315a4239634a31634239634a31634239634a39634a426b52396b4a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b94736b8c736b947b6b8c7b6b947b6b8c7b73947b6b947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c8c7ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdadadc6b5a5c6b5adc6b5adc6b5b5c6bdadc6b5b5cebdadc6b5b5cebdb5cebdbdcec6b5ce bdbdcebdbdcec6c6d6cebdd6c6bdd6cebdcec6c6d6cec6d6cec6d6cec6d6ceceded6c6d6ceceded6c6d6ceceded6d6ded6ceded6d6e7ded6ded6d6ded6d6e7de ceded6dee7ded6ded6deefe7dee7dedee7ded6e7dee7efe7deefe7e7efe7deefe7e7efe7e7efe7e7f7efe7efe7efefefe7efefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7f7fff7fffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffe7e7ffcece ff31318408006b3129ad08008c10089c1010a508009c0808a51818ad08008429218c6b6bb5e7e7fff7effffffffffffffffffffff7f7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff183121183121082910103918002910083118083118103921083918083918083918 104221083918104221103921184229104221184229184229184a29184229214a31184a29214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a4239634a31634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b73947b6b947b739c84739484739c847394847b9c8c739c847b9c8c7b9c847ba58c7b 9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5b5cebdadc6b5b5cebdb5cebdb5cebdb5cebd bdcec6bdcebdbdd6c6bdcec6c6d6cebdd6c6bdd6c6bdcec6ceded6bdd6cec6d6cec6d6ced6e7dec6dececeded6ceded6ceded6ced6ceceded6ceded6ceded6d6 ded6d6e7ded6ded6deefe7d6e7dedeefe7d6e7dedeefe7e7efe7e7efe7dee7dee7efe7e7efe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7 f7eff7eff7f7f7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff f7f7fff7f7ffe7e7ff9c9cd621217318107b21188c08088c1010a510089c08089410108c18107b5a5aade7defff7effffffffffffffffffffffffffffffffff7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff718312118312118312108291010392108311008311808311808 3918083110083918083918104221103921104221103921104229103921184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c736b947b6b947b7394846b947b73948473947b739c847394847b9c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5b5cebdadc6b5b5 cebdadc6b5b5cebdb5cebdbdcebdb5cebdb5cebdb5c6bdc6d6cebdd6c6bdd6cebdd6c6c6d6cec6d6cec6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6ced6 ceceded6d6e7ded6ded6d6ded6dee7ded6ded6d6e7dedee7dedee7ded6ded6dee7ded6e7dedeefe7deefe7e7efe7deefe7e7efe7deefe7e7f7efe7efe7eff7ef e7efefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffff7f7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7fffffffff7f7ffeff7ffe7e7ffa5a5e742398c21187b18108c10088c21189c18108c10107b7373c6d6deffe7effff7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829181829211831211031181031181031 18083118083918083118083918083918104221083918104221103921184229103921184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239215231295239295239295a39295a39315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b6b947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594 ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5ce bdadc6b5b5cebdb5c6bdb5cebdb5cebdbdcec6b5cebdbdd6c6bdcec6bdd6c6bdd6c6bdcec6bdcec6bdcec6c6ded6c6d6cec6d6ceceded6ceded6ceded6c6d6ce ceded6d6ded6d6e7deced6cedee7dec6d6ced6e7ded6ded6dee7dedee7dee7f7efdeefe7e7efe7dee7dedeefe7deefe7e7efe7dee7dee7efe7e7efe7e7f7efe7 efe7eff7efe7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7ffffffffffffffe7efffefefffdedeff52529c10106b4239a508006b181873525294d6deffefefffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212921182921 102918102918083118083118083110083918083110083918083918104221103921104221103921184229103921184229184229184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4231634231634239634a3963 4a396b4a39634a426b5239634a426b52426b52427352426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b94736b8c736b947b6b8c7b6b947b6b8c7b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad 9c8cad9c8cad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdadadc6b5 a5c6b5adc6b5adc6b5b5c6bdb5c6b5b5cebdb5c6b5b5cebdb5cebdbdcec6b5cebdb5cebdb5c6bdbdd6c6bdcec6ceded6bdcec6ceded6bdcec6c6d6ceceded6ce ded6c6d6ceceded6ced6ceceded6ced6ced6ded6ceded6deefe7dee7dedee7ded6e7dedee7deceded6ceded6d6ded6deefe7dee7dedeefe7dee7dee7efe7deef e7e7efe7e7efe7e7f7efe7efe7efefefe7efefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7f7fff7ffffffffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7f7ffefefffd6d6ff39317b18106331297b5a5a9cdedeffdee7ffff fffff7fffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7ffff102118183121103118083118103918083918083918083918104221083918104221103921184229104221184229184229184a29184229214a 31184a29214a31214a31214a31214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a42316342315a4239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 7b6b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5b5c6bdadc6b5b5cebdb5cebdb5cebdb5cebdbdcec6bdcebdbdcec6b5cebdc6d6cecee7d6c6d6ceb5cec6b5cebdc6dececee7 d6c6d6cec6d6cec6d6ceceded6ceded6ceded6ced6cedee7ded6ded6d6ded6d6ded6ced6cedee7ded6ded6dee7dedee7dedeefe7e7f7efdee7dedeefe7deefe7 e7f7efdeefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff7fffffffffffffffff7f7ffe7e7ffd6d6ff6b639c7b7bade7e7 ffe7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7fffff7ffff102918082918103918083118083918003110083918083918084221103921104221103921104229104221184229 184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52396b4a427352426b524a735a426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c736b947b6b947b73947b6b947b73948473947b739c84739484739c84739c847b9c8c739c847b9c8c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94ad9c94ad9c9cb5a594ad9c94b5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5b5c6bdadc6b5b5cebdb5c6b5b5cebdb5c6bdbdcec6b5cebdbdd6c6b5c6bdb5c6bdb5c6bdcee7d6 ceded6bdd6c6b5c6bdc6d6ceceded6ceded6c6d6ceceded6c6d6cec6d6ceced6cedee7dedee7ded6e7ded6ded6dee7dedee7dedee7deced6cedee7dedee7dede efe7dee7dedeefe7dee7dee7efe7deefe7e7efe7deefe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7ff f7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7f7ffffffffefeffff7ffff efefffefe7ffe7e7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff7ffff18292110311808311810391808391810391808391808422108391810422110392118422910 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239295239295239295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a426b5239634a426b5239634a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b947b73947b6b8c7b7394846b947b739c8473947b739c847394847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94ad9c94ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5c6bdadc6b5b5cebdb5c6bdbdcec6b5c6bdbdcec6b5cebdbdcebdbdcec6c6d6cece dececeded6bdcec6c6d6cec6d6ced6e7ded6e7deadbdb58c9c946b736b4a524a42524a394239525a5263736b848c84bdc6bdf7ffffd6ded6d6ded6dee7deeff7 efd6ded6deefe7dee7dedeefe7deefe7deefe7e7efe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ffff ffffffffffefeff7f7f7fffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff71831210829180831180831180839180831100839180839181042211039 21104221103921184229103921184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239215231295239295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52426b52427352426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b947b6b8c736b947b6b8c7b6b947b6b8c7b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad9c8cad9c8cad9c94b5a594ad9c94b5a594ad9c9cb5a594ad9c9cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5b5cebdadc6b5bdcebdadc6b5b5c6bdbdcebdb5cebdbdce bdb5cebdb5c6bdbdcec6bdcec6b5c6bdbdcec6c6d6cea5b5ad73847b1821180810080008000008000008000010080008000008000008001018105a635ab5bdb5 e7efe7ced6ceceded6deefe7dee7dee7efe7dee7dedee7dedeefe7deefe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffeffff7103121083118103918083918083918083918 104221083918104221103921184229104221184229184229184a29184a29214a31184a29214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a316342396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b6b8c736b947b6b8c7b73947b6b947b73947b6b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5c6b5b5c6bdbdcebdb5cebd bdcebdbdcebdc6d6c6bdcebdceded6bdcec6ceded6c6d6cea5b5ad42524a0818100008003942394a524a7b847b9ca59ca5ada5a5ada594a59c7b8c84636b6b42 4a4a182118000800394239a5adaddee7ded6e7ded6ded6dee7dedeefe7deefe7e7efe7e7efe7e7efe7deefe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffff08291808311808311808 3918083918083918083918084221103921104221103921104221104221184229184221184a29184229214a31184a29214a31184a29215231214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c736b947b6b947b73947b6b947b73948473947b739c84739484739c84739c 847b9c8c739c847b9c8c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94ad9c94ad9c9cb5a5 94ad9c94b5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5b5cebdb5c6bdb5 cebdb5c6bdb5c6bdb5c6bdbdcec6b5c6b5bdcebdb5c6bdc6d6ceadb5ad394a42000000001008636b63b5bdb5dee7ded6ded6ceded6ced6cec6cec6ced6cecede d6d6e7dedee7dedee7dec6cec6949c941821180008003139319cada5dee7dee7efe7deefe7deefe7dee7dee7efe7e7efe7e7efe7deefe7e7f7efe7efefeff7ef e7efe7eff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829211031 21083118103918083918103921083918084221083918104221103921184229104221184229184229184a29184229184a31184a29214a31184a29215231214a31 215231215231295239215231295a39215239295a39295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b6b947b6b947b7394846b947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94ad9c94 ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5adc6 b5b5cebdb5cebdadc6b5b5cebdb5c6bdbdd6c6b5c6b5cedecebdcec6bdcebdbdcec652635a0010080008086b7b73deefe7ced6ceced6ceced6ceced6ced6ded6 d6ded6d6ded6dee7ded6ded6ced6d6d6ded6dee7dedee7e79ca59c101810000800000800bdcec6d6e7deced6ceeffff7effff7d6e7deeff7efe7efe7e7f7efe7 efe7eff7efeff7efeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffff f7ffff182918082918083118083118083918083118083918083918104221103921104221103921184229103921184229184229184a29184229184a29184a2921 4a31184a29215231214a31215231214a31215239215231295a39215231295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 4239634a39634a426b5239634a426b52396b4a426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b8c7b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 9c8cad9c8cad9c94b5a594ad9c94b5a594ad9c9cb5a594ad9c9cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdb5adc6b5 a5c6b5adc6b5adc6b5b5cebdadc6b5adc6b5b5c6bdc6d6c6adbdb5c6d6cea5b5adbdd6c6adbdb55a6b6300000042524aadbdb5d6ded6ced6ceced6ceced6ced6 ded6ced6ced6ded6d6ded6dee7dedee7ded6ded6e7efefe7efe7d6ded6dee7dedeefe7c6cec67b847b182118182921adbdb5e7f7efdee7ded6e7dedee7dee7ef e7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7ffffffffff102918103121083118103918083918083918083918104221103921104221103921184229104221184229184229184a29184a29184a 29184a29215231184a29215231214a31215231215231215239215231295a39295239295a39295a39315a42295a42315a42315a4239634a31634239634a316342 39634a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 7b6b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a59484a59484a5948cad9484a5948cad9484a594 8cad9c8cad9c8cad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5adc6b5adc6bdadc6b5adc6b5adc6b5bdd6c6adc6b5bdcebdbdcec6adc6b5cedeceadc6b5bdcec61829180008006b736bced6cec6d6cebdc6bd8c94 8c737373737373737b73737b73737b736b736b636b63737b736b736b636b637b847b737b73848c84c6cec6d6ded6e7f7efced6ce081810081810a5b5adeff7ef ced6cef7fff7e7efe7deefe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fff7f7ffff102118183121082918083118083118083918083918083918083918103921103921104221103921104221104221184229 184229184a29184229184a31184a29184a31184a29215231184a31215231215231295239215231295239215239295a39295a39315a42315a42316342315a4231 6342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a426b52426b524a735a426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c736b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847b9c8c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c84 a59484a5948cad9484a5948cad9c8cad9c8cad9c8cad9c94ad9c94ad9c9cb5a594ad9c94b5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5b5cebdadc6b5b5c6bdadc6b5b5cebdbdd6c6adbdb5c6d6c6738c7b0008001021109cada5ced6ce adbdb5deefe76b736b000800000800000800000800000800000000000800000800000800000800000800000800001008d6ded6ceded6dee7dee7f7ef73847b00 0800081008ced6ceeffff7dee7dedee7dee7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7fff721312118311818312108291010311808311810391808311808392108391808392108392110422110422118422910 4221184229184229184229184229214a31184a29214a31184a29215231214a31215231214a31295239215231295239295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad 9484a5948cad9484a5948cad948cad948cad9c8cad9494b59c8cad9c94ad9c94ad9c9cb5a594b5a59cb5a594ada59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5cebdadc6b5b5cebdadc6b5b5cebdb5cebdbdd6c6bdcebdadbdb521312129392994 a59cbdcec6c6d6c6cedecebdc6bd737b73000800081008000800081008000800081008081008000808081010081008000800081008000800deefe7ceded6d6e7 ded6ded6e7efe73139310008007b847bd6e7deeff7efeff7efdee7deeff7efe7efe7eff7efe7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7ffff1829211029181031181031101031180831100831180831180839180831180839180839181042211039 18104221103921184229103921184229184229184a29184229184a29184a29214a31184a29214a31214a31215231214a31295239215231295239295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a31634239634a39634a426b52396b4a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8484a58c 7ba58c84a59484a58c84a59484a58c8cad9484a5948cad9484ad948cad9c8cad948cad9c8cad9494b59c94ad9c94b5a594ada59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdadadc6b5a5c6b5adc6b5a5bdb5adcebdb5cebdadc6b5b5cebdbdd6c6b5c6b5c6d6ce5263 5a0010008c9c94cedeceb5c6bdc6d6ced6e7d6cedece8c948c4a5a52636b63636b63636b63182121000000000800000000636b636b736b6b736b636b63737b73 c6cec6deefe7e7f7efe7efe7c6cec6eff7ef313931000800e7efe7e7efe7d6ded6f7fff7e7efe7e7efe7e7efe7eff7efe7efefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff213121183118102910183921083110103118083118103918083918083918083918 104221083921104221103921184229184221184229184229184a31184229214a31184a29214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42316342315a4239634a31634239634a316342396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5c6b5adc6b5a5c6b5adcebdadc6b5adc6bdadc6bdbdcec6adc6b5bdd6c6bdcec6 b5c6b58c9c94102118293931d6e7d6bdcec6c6d6cecedeceb5c6b5d6e7deced6cedee7deceded6ceded6e7efe74a524a000800081008181818c6cec6dee7ded6 ded6e7efe7e7efe7dee7deceded6ced6ceceded6eff7efe7efe7b5bdb50010087b8c84e7efe7e7efe7e7efe7eff7efe7efe7e7efefeff7efeff7f7eff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7fffffffffffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff10291818312110311810311010311808311008311808311008 3918083118083918083918083921103921104221103921184221103921184229184229184a29184229214a31184229214a31184a29215231214a31215231214a 31295239215231295239295239295a39295239315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c84a58c84a59484a58c84ad9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c94ad9c9cb5a5 94ad9c94b5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5b5cebda5bdadb5 cebdb5cebdb5c6bdb5c6bd314a3900080084948cb5c6bdcedeceadbdb5c6d6cecedecebdcec6bdcec6ceded6c6d6ceced6cedee7de4a524a0000000810080810 08d6ded6dee7ded6ded6d6ded6d6ded6dee7dedee7dedeefe7deefe7dee7ded6e7dee7efe74a524a081008d6e7dee7efe7e7efe7dee7e7e7efe7eff7efefefef e7efe7eff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2131291831211831211031181031180831101039 18083118103918083118083921083918083921083921104221104221184229184221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239215231295239295239295a39295a39315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad9484a5948cad9484a5948cad948cad948cad9c8cad9494b59c8cad9c94b59c94 ad9c9cb5a594b5a59cb5a594ada59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5ce bdadc6bdadc6b5b5cebdb5cebdadc6b5bdcebd0818100010089cada5bdcec6c6d6c6c6d6cebdcec6c6d6cec6d6ceceded6c6d6ceced6ceced6ced6e7de42524a 081008000000101810c6ceced6ded6d6ded6deefe7d6ded6d6e7ded6e7dee7efe7d6e7dedee7dedeefe7e7efe7636b6308100894a59cf7fff7dee7deeff7efe7 efe7eff7efeff7efeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7fffffffffff7fffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff182118183121102918103118 103118103118083110083118083118083918003118083918083918104221103918104221103921184229103921184229184229184a29184229184a29184a2921 4a31184a29214a31214a31215231214a31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 42396b4a39634a426b5239634a426b52396b4a426b52426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8484a58c7ba58c84a59484a58c84a59484a58c8cad9484a5948cad9484ad948cad9c8cad 948cad9c8cad9c94b59c94ad9c94b5a594ada59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5bdadadc6b5 adc6b5adcebda5c6b5adcebdadc6b5b5c6bdb5c6bdb5cebd9cad9c001008001008b5c6bdbdcec6bdcec6bdcec6c6d6cebdcebdc6d6cec6cec6ceded6c6cec6ce ded6d6ded64a524a000000000000101818ced6ced6ded6d6e7ded6ded6d6ded6d6e7dedee7ded6e7dedee7dedeefe7dee7dedeefe78c948c0000006b736bd6de d6f7fff7e7efe7e7efe7e7efefeff7efefefefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff18 3121102918103118103118083118103118083118103918083918083918083918104221083921104221103921184229184221184229184229184a29184229214a 31184a29214a31214a31214a31214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a42316342315a4239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a52846352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad94 8cad9c8cad948cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adcebdadc6b5adc6bdadc6b5b5cec6adc6b5bdcec6b5cebd8c9c94000800293931b5c6bdc6d6c6bdcec6c6d6c6bdcec6ceded6c6d6c6cede d6bdcec6ceded6c6d6ced6e7de4a524a000800000808101810c6cec6dee7ded6ded6dee7ded6e7dedeefe7d6e7dedee7dedee7dee7efe7dee7dee7efe7b5bdb5 000800313931dee7e7eff7efeff7efe7efe7e7efefeff7efeff7f7eff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffff7fff7ffffffff fffffffffffffffffffffff7f7f7212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffeffff7183121102918183121082918103118083110083118083110083918003118083918083918083921103921104221103921184229184221184229 184229184a29184229214a31184229214a31184a29215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c84a58c84a59484a58c84 ad9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c94ad9c9cb5a594ada59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6bdadc6bdadc6b5bdcec68c9c94000800394a39bdcec6bdcec6bdcec6bdcec6c6d6ce bdcec6c6d6cec6d6cec6d6cec6cec6d6ded6d6ded64a5a52000000000800081010ced6ced6ded6d6ded6ceded6deefe7c6d6cedeefe7dee7dedee7ded6e7ded6 e7ded6e7deb5c6bd000800213129e7efe7e7efe7e7efe7e7efefe7efefefefefe7efe7eff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7ffffffffff18292118312118312110311810311810311808311810391808311808392108391808392108392110422110422118422918 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239215231295239295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 527b634a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b947363 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad 9484a5948cad9484a5948cad948cad948cad9c8cad9494b59c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6b5adc6b5b5cebdadc6bdadc6b5adc6b5bdcec6bdcec684948c000800394a42bdcec6c6d6cebd cebdc6d6cec6d6cec6d6cec6d6ceceded6c6d6ceced6cec6d6cedee7de42524a000808000000181818ced6ced6e7ded6ded6dee7ded6ded6dee7ded6e7dedeef e7d6e7dee7f7efd6e7ded6e7dec6d6ce000800182921eff7efe7efe7e7efe7e7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fff7f7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7fff7f7ffff1829211029181031181029180829100831180831180839180031180839180839181042211039 18104221103921184229104221184229184229184a29184229184a29184229214a31184a29214a31214a31215231214a31295239215231295239295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8484a58c 7ba58c84a59484a58c84a59484a58c8cad9484a5948cad948cad948cad9c8cad948cad9c8cad9c94b59c94ad9c94b5a594ada59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5bdadadc6b5adc6b5adcebda5bdb5adc6bdb5cec6b5cebdadbdb5b5cebd84948c0010002131 29bdcec6b5c6bdc6d6cebdcec6bdcec6bdcec6c6d6cec6d6cec6d6cec6d6ceced6ceceded64a5a52000800000800101810ced6ced6ded6dee7deceded6d6e7de ceded6d6e7ded6ded6deefe7d6e7dedee7ded6e7debdcec6000800182921dee7dee7efe7e7efe7eff7efe7efe7eff7efe7efefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff102118183121103118083118103918083118083918083918 104221083921104221103921184229184221184229184229184a29184229184a29184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a316342396b4a39634a396b4a39634a426b52396b4a426b52426b52427352426b524273 524273524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5a5c6b5adcebdadc6b5b5cebdadc6b5b5cec6adc6bdbdcec6adc6b5 9cada5000800182918bdcec6bdcec6c6d6cec6d6c6c6d6c6cedecec6d6c6c6d6cec6d6ceceded6c6d6cedee7de525a52000800000800101810c6cec6dee7dece ded6d6e7ded6ded6deefe7d6e7dee7efe7d6e7dee7efe7dee7dee7efe7a5b5ad001008424a42e7efe7eff7efeff7efe7efe7eff7efe7efe7eff7f7eff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fff7f7fff710291810311808311808311808 3918083118083918083918083921103921104221103921184221184221184229184229184a29184229184a29184229214a31184a29214a31214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a846b527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c84a58c84a59484a58c84ad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a5 94ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5ad c6bdb5cec6b5cebd9cada5001000000800bdcec6c6d6c6bdcec6bdcec6c6deceb5c6bdc6d6c6c6d6cec6d6cec6d6cec6d6ced6e7de4a524a0000000808081010 10ced6d6d6ded6d6e7deceded6d6e7ded6ded6d6e7ded6e7dedee7dedee7dee7efe7deefe78c9c9400000063736bdee7dee7efefdee7dee7efe7efefefeff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7fff7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff1021181031 21083118103918083118083921083918083921083921104221104221184229184221184229184229184a29184229184a29184a29184a31184a29215231214a31 215231215231295239215231295a39215239295a39295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7ba58c84a59484a58c84ad9484a5948cad9484a5948cad948cad948cad9c8cad9494b59c8cad9c94b59c94 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6b5adc6b5adc6 bdadc6bdb5cebdadc6bdb5cebdc6d6ceadbdb510211008181094a594bdcec6bdcebdc6d6cec6d6c6c6d6c6cedecec6d6cec6d6ced6ded6c6cec6d6e7de4a5252 101010000000182118ced6ced6ded6ceded6d6e7dedeefe7dee7deceded6deefe7dee7dedeefe7dee7dee7f7ef5a6b63001008bdc6bdeff7efe7efe7e7efe7e7 efe7eff7f7e7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7fff7213121082918083118083118083918083118083918083918104221103918104221103921184229104221184229184229184a29104229184a29184a2921 4a31184a29215231214a31215231214a31215231215231295a39215231295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3963 4a396b4a39634a426b52396b4a426b52396b4a426b52426b524a735a4273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b635a8463 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a846b638c73638c736b9473638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8484a58c7ba58c84a59484a58c84a59484a58c8cad9484a5948cad948cad948cad9c8cad 948cad9c8cad9c94b59c94ad9c94b5a594ada59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5bdadadc6b5 adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6b5b5cebdbdcec64a5a520008007b8c84c6d6c6bdcec6cedecebdcec6b5c6bdc6d6c6ceded6ceded6ced6cec6 d6ced6ded64a524a000800000800101818cececee7efe7d6ded6ceded6d6ded6ceded6d6e7ded6e7dedee7ded6ded6e7f7efdee7de293931213129c6cec6e7ef e7eff7efe7efefeff7efe7efe7efefefefefefeff7f7eff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7fff7fffffffffff7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7fff7103118083118103918083118083921083918104221083921104221103921184229184221184229184221184a29184229184a 29184a29214a31184a29215231214a31215231215231215239215231295a39295239295a39295a39315a42295a42315a42315a42316342315a4239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a735a4a735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9484ad94 8cad9c8cad948cad9c8cad9c94b59c94b59c9cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adcebdadc6b5adcebdadc6bdb5cebdadc6bdb5cebda5bdadcedece94a59c081808394a39c6d6c6c6d6c6c6d6c6c6d6c6ceded6b5c6bd525a 524a5a526b7b7394a59cadb5b5394239000800081008182118bdc6c6ced6cedee7dee7efe7deefe7d6e7dedeefe7d6e7ded6ded6eff7efdee7debdcec6081008 7b847bf7fff7e7efe7dee7deeff7efeff7efeff7efeff7efeff7efeff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffff7f7fff7fffffffffff7ffffffff ffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7ffff102918083118083110083918083118083921083918083921103921104221103921184221184221184229 184229184a29184229184a29184a29184a31184a29215231184a31215231215231215239215231295239215239295a39295a39315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a73 5a527b634a7b5a527b63527b635a846b527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c736b8c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c739c847ba58c7b9c8c84a58c7b9c8c84a58c84a58c84a59484a58c84 ad9484a5948cad9484ad948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdadadc6b5a5bdadadc6b5a5c6b5adc6bdadc6b5adcebdadc6bdadc6b5adc6bdc6d6ceadbdb5bdcec66b7b730010008c9c8ccedecebdcebdbdcec6 c6decebdd6c6000800000800000800000800000800081008000800000000081008d6ded6d6ded6d6ded6d6ded6ceded6d6e7deceded6e7efe7e7efe7d6ded6ce ded6213129213129d6e7dedeefe7f7fff7e7efe7e7efe7eff7efe7efe7eff7efe7efe7eff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fff7f7ff f7fffffff7fff7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff18292118392108311810391808391810392108391808392108392110422110392118422910 4221184229184229184a29184229214a31184a29214a31184a29215231214a31215231214a31295239215231295239295239295a39295a39315a42315a423163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52427352426b5242735a4273524a735a4273524a7b5a4a735a 4a7b5a4a735a527b634a7b63527b63527b63528463527b635a846b527b635a846b5a846b5a846b5a846b5a8c735a846b638c73638c6b638c73638c736b8c7b63 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5adcebdadcebdadcebda5bdb5bdd6c6b5cebdb5c6bdc6decebdcebd18292121312994 a594cedececedecebdcec6bdcebd213129000800000800000800081008000800000800000000182118ced6cee7efe7d6ded6d6ded6d6ded6d6e7ded6e7ded6de d6d6ded6e7efe7525a52081008737b73e7f7efe7f7efdee7dee7efe7eff7efe7efe7eff7efefefefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fffff7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff1829210829100831180831180839180831180839180839181042211039 21104221103921184229104221184229184229184a29184229184a29184229214a31184a29214a31214a31215231214a31295239215231295239295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239634a426b52426b52427352396b524273524273524a 735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b634a7b63527b63527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a84 73638c73638c736b8c7b638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 849c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad9494ad9c94ad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5bdadadc6b5a5c6b5adc6b5a5bdb5adc6bda5c6b5adc6b5bdcec6adc6b5adc6b5bdcec6bdce c68494840008002131219cada5c6d6ceb5c6b5c6d6c6c6cec6bdcec68c9c94525a52212921081810000800000808182118bdc6bdd6ded6ced6ced6ded6deefe7 d6e7ded6e7ded6e7deeff7ef7b8c84000800101810d6e7dedeefe7dee7dedeefe7e7efe7e7efe7eff7efe7efe7eff7efeff7efeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7fffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffff182918103118083110103918083918083918083918 104221083921104221103921184229104221184229184229184a29184229184a29184229214a31214a31214a31214a31295239215231295239215231295a3929 5239295a39295239315a42315a42315a42315a42316342315a4239634a316342396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a42735a4a735a4a735a527b634a7b5a527b634a7b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c8484a58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a59494ad9c8cad9c94ad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6bdb5cebdadc6b5b5cec6adc6b5 bdcec6bdcec6b5cebdb5c6b5213121000800637363bdcec6deefdebdcec6c6cec6ceded6d6ded6ceded6d6e7deb5bdb5adb5ada5ada5b5bdbddee7ded6e7dee7 efe7d6ded6ceded6deefe7d6e7dedee7ded6ded61829210008008c948ce7f7efd6ded6effff7e7efe7e7efe7eff7efe7efefeff7efe7efe7eff7efeff7f7eff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff10211818312108311808311808311008 3918083118083918083918083921103921104221103921184229104221184229184229184a29184229184a29184229214a31184a29214a31214a31215231214a 31295239215231295239295239295a39295239315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 396b4a426b52426b52427352426b5242735a4273524a735a4a735a4a7b5a4a735a527b634a735a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638473638c73638c736b8c7b6b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c7b9c847b9c8c7b9c8c84a58c849c8c84a59484a58c84a59484a58c84a59484a5948cad948ca5948cad9c8cad9494ad9c8cad9c94b5a594ad9c9cb5a5 94ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6bdb5 cebdadc6b5bdd6c6b5cebdc6d6ceadc6b5c6d6c6adbdad4a5a5200080052635aa5b5add6e7d6b5c6bdceded6ceded6c6d6cedee7dec6cec6d6ded6dee7e7ced6 ced6ded6ced6ced6ded6d6e7ded6ded6d6e7dec6d6ce7b847b213129182118adb5ade7f7efd6e7dee7f7efdee7dedeefe7e7efefdee7e7e7efe7efefefeff7ef e7efe7eff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff2131211829181831211029181039 18083118083918083118083921083918083921083918104221104221184229104221184229184229184a29184229214a31184a29214a31184a29215231214a31 215231214a31295239215231295239295239295a39295a39315a42315a42316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52427352426b524a735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b63527b63527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b8c7b638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594 ad9c9cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5b5ce bdadc6b5adcebdb5cebdadc6bdbdd6c6bdcec6b5cebdbdd6c6bdcec6c6d6c6bdcec66b7b6b00080000100873847bceded6ceded6c6d6cec6cec6ced6ced6ded6 d6ded6ced6ced6ded6dee7dedee7deceded6deefe7deefe7949c94081810000800000800c6cec6ced6cee7f7efe7f7efdeefe7deefe7e7f7efdeefe7e7f7efe7 efefeff7efeff7eff7f7f7e7efeff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff212921182918183121 103118103118083110083118083110083918083118083921083918083921103918104221103921184229104221184229184229184a29184229184a2918422921 4a31184a29214a31214a31215231214a31295239215231295239295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3963 4a396b4a39634a426b5239634a426b52426b52427352426b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b63527b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c73638473638c73638c736b8c7b638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c849c8c84a59484a58c84a59484a5948cad9484a5948cad948cad948cad9c8cad 9494ad9c94ad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5bdadadc6b5 a5c6b5adc6b5a5c6b5adc6bdadc6b5b5cebdadc6b5b5cebdb5cec6b5cebdb5c6bdbdcec6bdcec6bdcec694a59c42524a0008000010084a5a52a5b5adced6cede e7ded6ded6ced6cec6cec6d6ded6d6ded6d6ded6ceded6dee7deb5bdb57b847b001008000800313931848c84d6ded6dee7dedeefe7dee7dedeefe7e7f7efdee7 dee7efe7e7efe7eff7efe7efe7e7efefeff7efeff7f7eff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7fffffff7f7f7fffffff7f7f7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 2921183121102918102910103918103118083118103918083918083918083918104221083921104221103921184229104221184229184221184a29184a29184a 29184229214a31214a31214a31214a31295239215231295239215231295a39295239295a39295239315a42315a42315a42315a42316342315a4239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a4a735a4a735a4a735a527b634a7b5a527b63527b5a527b6352 7b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b638c73638c73638c73638c736b947b6b8c736b947b6b8c7b73947b73947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c8484a58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 94ad9c8cad9c94ad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6bdb5cebdadcebdb5cebdadc6b5bdd6c6bdcec6bdd6c6bdd6c6bdcec6bdcec6ceded6c6d6ce94ad9c4a5a521021 18000000394a4242524a73847b8c9c94adb5adadb5ad8c948c73847b6b7b73394a420818100008003142399cada5ceded6deefe7deefe7deefe7e7f7efd6e7de e7f7efe7f7efe7efefdeefe7e7efe7e7efe7eff7efe7f7efeff7efeff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffff ffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7fff7182921183121103118082910083118083110103918083118083918083118083918083918083921103921104221103921184221104221184229 184221184a29184229184a29184229214a31184a29215231214a31215231214a31295239215231295239295239295a39295239315a42295a39315a42315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b524a735a4273524a735a4a735a527b5a4a73 5a527b634a735a527b63527b635a8463527b635a846b5a7b635a846b5a846b5a846b5a846b638c6b5a846b638c73638473638c73638c736b8c7b6b8c736b947b 6b8c7b73947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c7b9c847b9c8c7b9c8c84a58c849c8c84a59484a58c84a59484a58c84 a59484a5948cad948ca5948cad9c8cad9494ad9c94ad9c94b5a594ad9c9cb5a594ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5d6c6adc6b5b5cec6b5cebdbdd6c6bdcec6b5cebdadc6b5bdcec6 c6d6ceceded6a5b5ad84948c1021180010080000000810080008000008000008000010080008001821185a6b63bdcec6deefe7d6e7deceded6e7f7efd6e7dede efe7d6ded6deefe7e7efe7deefe7e7efefe7efe7e7efe7eff7efe7efe7e7efefefefefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7ff f7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff21312118292110311810311810311808291010391808311008311808311810392108391808392108392110422110422118422910 4221184a29184229184a29184229214a29184a29214a31184a29215231214a31215231215231295239215231295a39295239315a39295a39315a42295a393163 42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52426b52426b52426b524a735a4273524a735a4273524a7b5a4a735a 527b5a4a735a527b63527b63527b63527b635a8463527b635a846b527b635a846b5a846b63846b5a846b638c735a846b638c73638c6b638c73638c736b8c7b6b 8c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a5 9484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdad a5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5adcebdadc6bdb5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdcec6bdcec6c6d6cec6 d6ceceded6c6d6cebdd6c6b5cebdceded6ceded6bdcec68c9c9463736b42524a3142392939314a524a6b736b8c948cc6cec6e7efe7deefe7d6e7ded6ded6e7f7 efceded6d6e7dedeefe7deefe7dee7dee7efe7dee7dee7efe7e7efe7e7f7efe7efe7eff7efe7f7efeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fffff7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff2131211829211029181031181031181031180831100831180831180839180831180839180839181042211039 18104221104221184229104221184229184229184a29184229184a29184a29214a31184a29215231214a31215231214a31295231215231295a39295239295a39 295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239634a426b52396b4a426b52426b524273524273524a 735a4273524a735a4a735a527b5a4a735a527b63527b5a527b63527b63527b63527b635a846b527b635a846b5a846b63846b5a846b5a846b5a846b638c736384 73638c73638c736b8c7b638c736b947b6b8c7b73947b6b947b73947b6b947b739c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c 849c8c84a59484a58c84a59484a5948cad9484a5948cad948cad9494ad9c8cad9494ad9c94ad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59c bdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5bdadadc6b5a5c6b5adc6bda5c6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5c6 bdb5cec6b5cebdb5cec6b5cebdbdd6c6bdd6c6c6d6cebdcec6c6dececeded6d6e7deceded6ceded6ced6ceceded6ced6ced6ded6ceded6d6e7ded6ded6d6e7de d6e7ded6e7ded6e7dedee7ded6e7dedeefe7dee7dee7efe7e7efe7deefe7dee7e7e7efefe7efe7e7efefe7efe7e7f7efe7efefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7fff7ffffff182921183121103118103118083110103918083118103918083918083918083918 083921083921104221103921184221104221184229184221184a29184a29184a29184a29214a31214a29215231214a31295231215231295239215231295a3929 5239295a39295a39315a42315a39315a42315a4231634231634239634a316342396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b524273 52426b524a735a4a735a4a735a4a735a527b634a7b5a527b63527b5a527b63527b63527b63527b635a846b5a84635a846b5a846b638c6b5a846b638c6b5a846b 638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847b9c8c739c8484a58c7b 9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a59494ad9c8cad9c94ad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a59cb5a59cb5 a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadcebdb5cebdb5cebd b5cec6b5cec6bdd6c6b5cec6bdd6c6bdd6c6bdd6c6b5cebdc6d6ceceded6cee7d6bdcec6bdcec6c6d6ceceded6c6d6ceced6ced6ded6d6e7deceded6d6ded6ce d6cedee7ded6ded6d6e7ded6e7ded6e7dedee7dee7efe7dee7dedeefe7e7efe7e7f7efdeefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7 f7eff7eff7fff7eff7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff21312118312118312108291010392108311008311808311008 3918083118083918083918104221103921104221103921184221104221184229184221184a29184229184a29184a29214a31214a29215231214a312152312152 31295239215231295a39295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a39634a396b4a39634a426b52396b4a426b52 396b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a735a527b63527b635a8463527b635a846b527b635a846b5a846b5a 846b5a846b638c6b5a846b638c73638473638c73638c736b8c7b6b8c736b947b6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c 847b9c8c7b9c847b9c8c7b9c8c84a58c849c8c84a59484a58c84a59484a58c84a59484a5948cad948ca5948cad9c8cad9494ad9c8cad9c94b5a594ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5b5 cebdadc6bdb5cebdb5cebdb5cec6b5cec6bdd6c6b5cebdbdcec6bdd6c6ceded6bdd6c6bdcec6b5c6bdceded6cee7d6ceded6c6d6ceceded6ceded6ceded6ced6 ced6e7ded6ded6c6d6ced6ded6d6e7ded6ded6dee7ded6e7dedee7ded6e7dedee7ded6e7dedeefe7deefe7e7efe7deefe7e7efefe7efe7e7efefe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1821181831211029181031181031181031 18083118083918083118083921083918083921083921104221104221184221104221184a29184221184a29184229214a29184a29214a31184a29215231214a31 215231215231295239295231295a39295239315a39295a39315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a426b5239 6b4a426b52426b52426b52426b5242735a4273524a735a4273524a7b5a4a735a4a7b5a4a735a527b634a7b63527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b8c7b638c736b947b6b8c7b73947b6b947b73948473947b739c8473947b739c84739c84 7b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b5a594 ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6bdadc6b5adce bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cebdbdd6c6bdd6c6c6decebdcec6c6d6c6c6d6c6ceded6c6d6cec6d6cec6d6ceceded6c6dece ceded6ceded6d6ded6ceded6dee7ded6e7ded6e7ded6e7dedee7ded6e7dedeefe7d6e7dedeefe7dee7dedeefe7dee7dee7efe7e7efe7e7efefe7efe7e7f7efe7 efe7eff7efe7f7efeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff182921182921 182921102918083110083118083118083918083118083918083918104221103918104221104221184221104221184221184221184a29184229184a29184a2921 4a31184a29215231214a31215231214a31295239295231295a39295239295a39295a39315a42295a39315a42315a42316342315a4239634a31634239634a3163 4239634a39634a426b5239634a426b52396b4a426b52396b524273524273524a735a4273524a735a4a735a4a7b5a4a735a527b634a7b5a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b5a846b5a846b638c735a8473638c73638c736b8c7b638c736b947b6b8c7b73947b6b947b73947b6b947b73 9c8473947b739c847394847b9c84739c847b9c847b9c847ba58c7b9c8c84a58c849c8c84a59484a58c84a59484a5948cad9484a5948cad948cad9494ad9c8cad 9494ad9c94ad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5bdadadc6b5 adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cec6bdcec6bdcec6c6decec6d6cec6d6c6bdcec6c6d6cec6d6cece ded6c6d6cec6dececed6ced6e7ded6ded6ceded6ceded6d6e7ded6ded6d6e7deceded6deefe7d6e7ded6e7dedee7dedeefe7d6e7dedeefe7e7efe7e7efe7dee7 e7e7efefe7efe7e7efefe7efe7e7f7efe7efefeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7fffffff7f7f7ffffffffffffffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffeffff7183121103118103118083118103918083918083918083918104221103918104221103921184221104221184229184221184a29184a29184a 29184a29214a31214a29215231214a31295231215231295239215231295a39295239295a39295a39315a42315a39316342315a4239634a31634239634a316342 396b4a39634a396b4a39634a426b52396b4a426b52396b4a427352426b52427352426b524a735a42735a4a735a42735a527b634a7b5a527b634a7b5a527b6352 7b63527b63527b635a846b5284635a846b5a846b638c6b5a846b5a8c6b5a846b638c73638c73638c73638c736b947b638c736b947b6b8c7b73947b6b947b7394 846b947b739c84739484739c847394847b9c84739c847b9c8c739c8484a58c7b9c8c84a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a594 94ad9c8cad9c94ad9c8cad9c94b5a594ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a5a5bdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5 c6b5adc6b5a5c6b5adc6bdadc6b5b5c6bdadc6b5b5cebdadcebdb5cebdb5cebdb5cec6b5cec6bdcec6b5cebdbdd6c6bdd6c6bdd6c6bdcec6c6d6cec6d6cec6de d6c6d6ceceded6c6d6ceceded6c6dececeded6ceded6ceded6d6ded6dee7ded6e7ded6e7ded6e7ded6e7dedee7ded6e7ded6e7dedeefe7dee7dedeefe7deefe7 e7efe7deefe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7fff7eff7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffff ffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7fffffffffff7ffff102918083118083918083118083918083118083918083918104221103918104221103921184221104221184229 184221184a29184229184a29184a29214a31214a29215231214a31215231215231295239215231295a39295239295a39295239315a42315a42316342315a4231 6342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52396b4a426b52426b52427352426b5242735a4273524a735a4a735a4a7b5a4a73 5a527b634a735a527b63527b63528463527b635a846b527b635a846b5a846b5a846b5a846b5a8c6b5a846b638c73638473638c73638c736b8c7b638c736b947b 6b8c7b6b947b6b947b7394846b947b73948473947b739c84739484739c84739c847b9c8c7b9c847b9c8c7b9c8c84a58c849c8c84a59484a58c84a59484a58c84 a59484a5948cad948ca5948cad9c8cad9494ad9c8cad9c94b5a594ad9c9cb5a594ad9c9cb5a594b5a59cbdad9cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bd ada5c6b5a5bdadadc6b5a5bdb5adc6b5a5c6b5adc6b5adc6b5b5c6bdadc6b5b5cebdadc6bdb5cebdadc6bdb5cec6b5cec6bdd6c6b5cec6bdd6c6bdcec6c6d6ce c6d6c6c6d6cebdcec6c6d6cec6d6cec6dececeded6c6d6cec6d6ceceded6ceded6ceded6ceded6d6e7ded6ded6d6e7ded6e7ded6e7ded6ded6deefe7d6e7dede e7dedeefe7deefe7dee7dee7efe7deefe7e7efefe7efe7e7efefe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7ff f7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff18292110312108311808311808311810392108391810422110391818422110422118422918 4221184a29184229184a29184229214a31214a29214a31214a31295231214a31295231214a31295239295239315a39295239315a42295a39315a42315a423163 42315a42396342315a4239634a31634239634a39634a396b4a39634a396b4a39634a426b52426b52427352426b524a735a4273524a735a4a73524a7b5a4a735a 527b5a4a7b5a527b63527b5a527b63527b635a8463527b635a846b5284635a846b5a846b5a846b5a846b638c735a846b638c73638c73638c73638c736b8c7b6b 8c736b947b6b8c7b6b947b6b947b73948473947b73948473947b7b9c847394847b9c847b9c847b9c8c7b9c847b9c8c7b9c8c84a58c7b9c8c84a59484a58c8ca5 9484a59484a59484a5948cad9c8cad948cad9c8cad9c94b59c8cad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cb5a59cbdad9cbdad a5bdad9cbdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cec6bdd6c6bd cec6c6d6cebdd6c6c6d6cebdd6c6cedecec6d6cecedecec6d6ceceded6cedececeded6cedececeded6ceded6d6e7deceded6dee7ded6e7dedee7ded6e7dedeef e7d6e7dedeefe7d6e7dedeefe7deefe7e7efe7e7efe7e7f7efe7efe7e7f7efe7efe7eff7efe7efefeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7 f7fffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffff212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1829210829180831180831180839180831180839180839181042211039 18104221104221184229104221184229184229184a29184229214a29184a29214a31214a29214a31214a31295231214a31295239295239295a39295239315a42 295239315a42295a39315a42315a42396342315a4231634231634239634a31634239634a39634a396b4a39634a426b52426b4a426b52426b524273524273524a 735a4273524a735a4a735a527b5a4a735a527b5a52735a527b63527b5a527b63527b635a846b527b635a846b5a846b5a846b5a846b638c6b5a846b638c736384 6b638c73638c736b8c7b638c736b8c7b6b8c7b73947b6b8c7b73947b73947b73948473947b739c847394847b9c847394847b9c847b9c847b9c8c7b9c8484a58c 7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9484a5948cad9c8cad948cad9c8cad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cbda59cb5a59c bdad9cb5a59cbdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdadadc6b5adc6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5ce bdb5cec6b5cec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cecedecec6d6cecedececedececeded6ced6ceceded6ceded6d6e7ded6ded6d6e7de d6e7dedee7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7e7f7efe7efe7e7f7efe7efefeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7fffffff7f7f7ffffffffffffffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff103118083118083918083918083918083918 104221103918104221104221184229184221184a29184229214a31184229214a29184a29214a31214a31215231214a3129523121523129523921523129523929 5239315a39295239315a42315a39315a42315a4239634a31634239634a31634239634a39634a39634a39634a426b52396b4a426b52426b4a427352426b524273 524273524a735a4a735a4a735a4a735a4a7b5a4a7b5a527b63527b5a527b63527b635a8463527b635a846b5a846b5a846b5a846b5a846b5a846b638c6b5a846b 638c73638c6b638c73638c736b947b6b8c736b947b6b8c7b7394846b947b73948473947b73948473947b739c847394847b9c847b9c847b9c8c7b9c8484a58c7b 9c8c84a58c84a58c84a59484a59484a59484a5948cad9484a5948cad9c8cad948cad9c8cad9c8cad9c8cad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cb5 a59cb5a59cbdad9cbdad9cbdad9cbdada5c6b5a5bdada5bdada5bdadadc6b5a5c6b5adc6b5a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadcebdb5cebdb5cebd b5cec6b5cebdbdd6c6b5cec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6d6cec6d6ceceded6c6dececedecec6d6ceceded6ceded6ceded6ceded6d6e7dece ded6d6e7ded6ded6dee7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7dee7dee7efe7e7efe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7 f7eff7eff7f7f7eff7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7f7ffff08291808311808311808 3918083118103921083918104221103918104221103921184229104221184a29184229184a29184229214a31184a29214a31214a29214a31214a292952312952 31295239295231295239295239315a42295a39315a42315a39315a42315a42396342315a4239634a31634239634a39634a396b4a39634a396b4a396b4a426b52 426b4a426b52426b52427352426b524a735a4273524a735a4a735a4a7b5a4a735a527b634a735a527b63527b635a8463527b635a846b527b635a846b5a84635a 846b5a846b638c6b5a846b638c73638c6b638c73638c736b8c7b6b8c736b947b6b8c7b6b947b6b8c7b73948473947b73948473947b7b9c847394847b9c847394 847b9c847b9c847b9c8c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad9484a5948cad9c8cad948cad9c8cad948cad9c8cad9c94b5a594ad9c94b5a5 94ada59cb5a594b5a59cbdad94b5a59cbdad9cb5a59cbdad9cbdada5bdad9cbdada5c6b5a5bdada5c6b5a5bdb5adc6b5a5bdb5adc6b5adc6b5adcebdadc6b5b5 cebdadc6bdb5cebdadcebdb5cec6b5cebdbdd6c6b5cec6bdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6cec6decec6d6cecedecec6d6cecedecec6d6ceceded6cede d6ceded6ceded6ceded6d6ded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dedee7dedee7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffff1029181031 18083118083918083118083921083918104221083918184221104221184229184221184a29184229184a29184229214a31184a29214a29184a29214a31214a29 215231215231295231215231295a39295231295a39295239315a42295a39316342315a42316342315a4239634a31634239634a39634a396b4a39634a396b4a39 634a426b52396b4a426b52426b524a735a4273524a735a42735a4a735a4a735a4a7b5a4a735a527b634a735a527b63527b635a8463527b635a846b527b635a84 6b5a846b5a846b5a846b638c735a846b638c73638c6b638c73638c736b8c736b8c736b947b6b8c7b73947b6b947b73948473947b739c847394847b9c84739c84 7b9c8c7b9c847b9c8c7b9c847b9c8c7b9c8484a58c7b9c8c84a59484a58c84a59484a5948cad9484a5948cad9c8cad948cad9c8cad9494b59c8cad9c94b5a594 ad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdadadc6b5adc6b5adc6b5adc6b5adce bdadc6b5b5cebdadc6bdb5cebdb5cebdb5cec6b5cebdbdd6c6b5cec6bdd6c6bdcec6c6d6cebdd6c6c6d6cebdd6c6c6d6cec6d6cec6decec6d6ceceded6cedece ceded6cedececeded6ceded6d6e7deceded6d6e7ded6e7dedee7ded6e7dedee7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7f7efe7efe7e7f7efe7 efe7eff7efe7f7efeff7efeff7eff7f7f7eff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7ffff102918082910083118083118083918083118083921083918104221103918104221104221184229104221184229184229184a29184229184a29184a2921 4a29184a29214a29214a29215231214a29215231215231295231215231295239295239315a39295a39315a42315a42316342315a4239634a39634a396b4a3963 4a39634a39634a396b4a39634a426b52396b4a427352426b5242735a4273524a735a4273524a735a4a735a4a7b634a735a527b634a735a527b63527b63527b63 527b635a846b527b635a846b5a846b5a846b5a846b638c6b63846b638c73638c6b638c73638c736b947b6b8c736b947b6b947b73947b6b8c7b73948473947b7b 9c847394847b9c84739c847b9c8c7b9c847b9c8c7b9c8c84a58c7b9c8c84a58c84a58c84a59484a59484a59484a5948cad9484a5948cad9c8cad948cad9c8cad 948cad9c8cad9c94b5a594ad9c94b5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cbdada5bdad9cbdada5bdada5bdadadc6b5a5bdadadc6b5 a5c6b5adc6bdadc6b5adc6bdadc6b5b5cebdadc6b5b5cebdadcebdb5cec6b5cebdb5cec6b5cec6bdd6c6bdcec6bdd6c6bdd6c6c6d6cec6d6c6c6d6cec6d6cec6 decec6d6cecedececedececeded6ceded6ceded6ceded6d6e7ded6ded6d6e7ded6e7dedee7ded6ded6d6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7e7f7efe7efe7e7f7efe7f7efeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7fffffff7f7f7fffffff7f7f7ffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7ffff102918103118083118083918083918103921083918104221104221104221104221184229184229184a29184229214a31184229214a 29184a29215231214a31215231214a29295231215231295a39295231295a39295a39315a39295a39316342315a42316342315a4239634a31634239634a39634a 396b4a39634a396b4a39634a426b52396b4a426b52426b52427352426b5242735a4273524a735a42735a4a7b5a4a735a527b634a7b5a527b634a7b5a527b6352 7b635a846b527b635a846b5a846b5a846b5a846b6384735a846b638c735a846b638c73638c736b8c73638c736b947b6b8c736b947b6b8c7b7394846b947b7394 8473947b739c84739484739c84739c847b9c8c7b9c847b9c8c7b9c847ba58c7ba58c84a58c7ba58c84a59484a59484ad9484a5948cad9c84a5948cad9c84ad94 8cad9c8cad9c8cad9c8cad9c94b59c94ad9c9cb5a594b5a59cb5a594b5a59cb5a594b5a59cbdad9cb5a59cbdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5 c6b5adc6b5a5bdb5adc6bdadc6b5adc6bdadc6b5b5cebdadc6bdb5cebdadc6bdb5cec6b5cebdb5cec6b5cec6bdd6c6bdd6c6c6d6cebdd6c6c6d6cec6d6cec6de cec6d6ceceded6c6dececeded6c6dececeded6ceded6ceded6ceded6d6e7deceded6d6e7ded6ded6deefe7d6e7ded6e7ded6e7dedeefe7d6e7dedeefe7dee7de e7efe7e7efe7e7efe7e7efe7eff7efe7efe7e7f7efe7efefeff7f7eff7efeff7f7eff7eff7f7f7eff7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffff ffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7ffff213929183121083118083118083110083918083918083921083918104221103921184221104221184229184221184a29 184229184a29184229214a31184a29215231214a31215231214a29215231215231295a39295231295a39295239315a42295a39315a42295a39316342315a4239 634a31634239634a31634239634a39634a396b4a39634a426b52396b4a426b52396b4a426b52426b5242735a4273524a735a42735a4a7b5a4a735a4a7b634a73 5a527b63527b5a527b63527b635a846b527b635a846b5a7b6b5a846b5a846b5a84735a846b638c7363846b638c73638c736b8c73638c736b8c736b8c736b947b 6b8c7b73947b6b947b7394846b947b739c84739484739c847394847b9c84739c847ba58c7b9c847ba58c7b9c8c84a5947ba58c84a59484a59484a59484a59484 a59484a5948cad9c8cad948cad9c8cad948cad9c8cad9c94b59c94ad9c9cb5a594ad9c9cb5a594b5a59cb5a59cb5a59cb5a59cb5a5a5bdad9cbdada5bdada5bd ada5bdada5bdada5c6b5a5bdadadc6b5adbdb5adc6b5adc6b5adc6bdadc6b5adcebdadc6b5b5cebdadc6bdb5cebdb5cebdbdd6c6b5cec6bdd6c6bdcec6c6d6ce bdd6c6c6d6cebdd6c6c6d6cec6d6cec6decec6d6cecedecec6d6ceceded6ceded6ceded6ceded6ceded6d6ded6d6e7ded6e7ded6e7ded6e7dedee7ded6e7dede e7ded6e7dedeefe7deefe7e7efe7deefe7e7f7efe7efe7e7f7efe7efe7eff7efe7efefeff7efeff7efeff7f7eff7eff7f7f7eff7f7f7fff7f7f7f7f7fffff7f7 f7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff21312118291818312110311818422108311810391808391810392110392110422110392118422918422918422918 4221184a29184229184a29184229214a31184229215231215231215231215231215231215231295a39295239295a39295239315a42295a39315a42315a42315a 4239634a316342316342396b4a39634a39634a39634a396b4a39634a426b52396b4a427352426b52427352426b524a735a4273524a735a42735a4a7b5a4a735a 527b634a735a527b63527b63527b63527b635a846b527b635a846b5a84635a846b5a846b5a846b5a846b638c73638c6b638c73638c736b8c736b94736b8c736b 947b6b947b6b947b73947b6b947b739484739484739c847394847b9c84739c847b9c84739c847ba58c7b9c8c7ba58c7b9c8c84a5947ba58c84a59484a58c8cad 9c84a5948cad9c84a5948cad9c8cad9c8cad9c8cad9c94b59c8cad9c94b59c8cad9c9cb5a594b5a59cb5a594b5a59cb5a59cb5a59cbdad9cb5a5a5bdad9cb5a5 a5bdad9cbdada5c6b5a5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adcebdadc6b5adcebdadc6bdb5cebdadcebdb5cebdb5cebdbdd6c6b5cec6bdd6cebd cec6bdd6c6bdd6c6c6d6cec6d6cecedececedececeded6c6d6cecedececedececeded6cedececeded6ceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7ded6e7 ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7f7efe7efe7e7f7efe7efe7eff7efe7f7efeff7efeff7eff7f7f7eff7eff7fff7eff7f7f7fff7f7f7f7 f7fffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffff212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff2129211829211029181831211031180829100831100839181039210031180839180839181042210839 18104221103921184221104221184a29184229184a29184229214a31184229214a31214a31214a31295231215231215231295239295239295a39295239315a42 295a39315a42315a4231634231634239634a31634239634a39634a39634a39634a39634a39634a426b52396b4a426b52426b52427352426b524273524273524a 735a42735a4a7b5a4a735a4a7b5a4a735a527b63527b5a5a8463527b63527b635a84635a8463527b635a846b5a846b5a846b5a846b638c7363846b638c73638c 73638c73638c736b947b6b8c7373947b6b947b6b947b6b947b73948473947b739c8473947b739c84739c847b9c84739c847b9c8c7b9c847ba58c7b9c8c84a58c 7ba58c84a5947b9c8c84a59484a5948cad9c84ad948cad9c8cad9c8cad9c8cad948cad9c8cad9c94b59c94ad9c94b5a594b5a59cb5a594ad9c94b5a59cb5a5a5 bdad94b5a59cbdad9cb5a5a5bdad9cbdada5bdada5bdadadc6b5a5bdadadc6b5adbdb5adc6b5adc6b5adc6b5adc6b5b5cebdadc6b5b5cebdadcebdb5cebdb5ce c6bdd6c6b5cebdbdd6c6bdcec6c6d6cec6d6cec6d6cec6d6c6c6d6c6c6d6c6ceded6c6decec6d6cec6d6ced6e7d6ceded6ceded6d6ded6d6ded6d6ded6d6e7de d6ded6d6e7ded6ded6d6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7e7f7efe7efe7e7f7efe7f7efeff7efeff7efeff7efeff7eff7 f7f7eff7eff7fff7f7f7f7f7fffff7f7f7ffffffffffffffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212921182921183118103118083118103918003110103918083118103921083918 104221083918104221103921184229184221184229184229214a31184a29184a29184a29214a31184a29215231214a31215231215231295239295239295a3929 5239315a42295a39315a42315a42315a4231634231634239634a39634a315a42426b5239634a426b4a39634a426b52426b52426b52396b4a427352426b524273 5a4273524a7b5a42735a4a7b5a4a735a527b634a7b5a527b634a735a528463527b5a5a84635a846b5a846b5a846b5a846b5a846b638c6b5a846b638c735a846b 638c73638c73638c736b8c736b8c7b6b8c7b6b947b6b8c7b73947b73948473948473947b7b9c847394847b9c847394847b9c8c7b9c847b9c8c7b9c8484a58c7b 9c8c84a58c84a58c84a59484a5948cad9c84a5948cad9484a5948cad9c84a59494b59c8cad9c8cad9c8cad9c94b59c94ad9c94b5a594b59c9cb5a594b5a59cb5 a594b5a59cbdad9cbdad9cbdad9cbdada5bdada5bdada5bdada5bdadadc6b5a5c6b5adc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdadcebd b5cec6b5cebdb5cebdb5cec6bdd6c6bdcec6c6d6cebdd6c6c6d6cec6d6cec6d6c6c6d6ceceded6c6d6cecedecec6dececeded6cedececeded6ced6ced6e7dece ded6dee7ded6e7dedee7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7f7eff7efeff7 f7eff7eff7f7f7eff7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffffffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18292118292118311818311810391808311808311808311808 3918083918083918083918104221103921104221103921184221104221184a29184229184a29184a29214a31184229215231184a29215231214a312152312152 31295239295239295a39295239315a42295239315a42315a42316342315a42316342315a42396b4a315a4239634a39634a426b4a39634a426b52396b4a426b52 396b4a4273524273524a735242735242735a4273524a7b5a4a735a4a7b5a4a735a528463527b5a528463527b63528463527b635a84635a84635a846b5a846b5a 846b5a846b638c735a846b638c73638c736b8c736b8c736b8c7b6b8c73739484638c737394846b8c7b73948473947b7394847394847b9c847394847b9c847b9c 847ba58c7b9c847ba58c7b9c8c84a59484a58c84a59484a58c84a59484a5948cad9c84a5948cad9c8cad948cad9c8cad948cad9c8cad9494ad9c94ad9c9cb5a5 94ad9c9cb5a594b5a59cb5a594b5a59cbdad9cbdad9cbdada5bdada5bdad9cbdada5bdada5bdada5c6b5a5bdadadc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5ad cebdadc6bdb5cebdadc6bdb5cebdb5cec6b5cec6bdcec6bdcec6bdcec6c6d6cebdcec6c6d6cec6d6c6c6decec6d6cec6decec6d6cecedecec6d6ceceded6cede d6d6ded6ceded6ceded6d6e7ded6e7ded6ded6d6e7ded6e7ded6e7ded6e7dedee7dedee7dedeefe7dee7dee7efe7deefe7e7efe7e7efe7e7f7efe7efe7eff7ef e7efefeff7efeff7efeff7f7eff7eff7f7f7eff7eff7f7f7f7f7f7f7fffff7fff7ffffffffffffffffffffffffffffffffffffffffff181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2129291829212139291031181031180831181039 21083118083918083118103921083118103921103921104221103921184221184221184a29184229214a29184a29214a31184a29214a31214a29295231295231 295231295231295239295239315a39295239315a42315a39315a42315a42316342315a4239634a39634239634a396342426b4a39634a426b4a39634a426b5242 6b4a427352426b524273524273524a735a4a73524a735a4273524a7b5a4a735a527b634a735a527b63527b63527b63527b635a846b5a84635a846b5a846b5a84 6b5a846b5a8c6b5a846b638c73638c6b638c73638c736b9473638c736b947b6b8c7b7394846b8c7b739c846b8c7b73948473947b739c847394847b9c84739c84 7b9c8c7b9c847b9c8c7b9c8c84a58c7b9c8c84a59484a58c84a59484a58c8cad948cad9c8cad9484a59494b5a58cad9c8cad9c8cad9c94b59c8cad9c94b59c8c ad9c94b5a594b59c9cb5a594b59c9cb5a59cb5a59cbdad94b5a59cbdad9cb5a5a5bdada5bdada5c6b5a5bdada5c6b5a5bdadadc6b5a5c6b5adc6b5adc6b5adce bdadc6b5adcebdadc6bdb5cebdb5cebdb5cebdb5cebdbdd6c6b5cebdbdd6c6bdd6c6bdd6c6bdd6c6c6d6cebdd6c6cedecec6dececeded6c6d6cecedececedece ceded6ceded6d6ded6ceded6d6e7deceded6d6e7ded6e7dedee7ded6e7dedee7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7e7efe7e7f7efe7efe7e7f7efe7 efe7eff7efe7f7efeff7efeff7eff7fff7eff7eff7fff7eff7f7f7fff7f7f7f7f7fffff7fff7fffffffffffffffffffffffffffffffffffffffffff7f7f72121 21efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff182118212921102918103118 103118083118083118103918083118103921083918083918083918083921083918104221103921184229104221184a29184229214a29214a29214a31214a2921 4a29214a31214a31214a31295231215231295239295231315a39295239315a39315a39315a42295239316342295239316342316342426b4a315a4242634a3963 4a42634a39634a426b52396b4a426b52426b52427352426b524a73524273524a735a4273524a7b5a4a735a527b634a7b5a527b63527b63527b63527b635a7b6b 527b635a7b6b527b635a846b5a846b5a8c6b5a846b638c6b63846b638c7363846b6b94736384736b8c736b8c7b6b947b6b947b73948473947b73948473947b7b 9c847394847b9c847394847b9c847394847b9c8c7b9c847b9c8c7b9c8c84a59484a58c84a5947b9c8c84a59484a5948cad9c7b9c8c84a5948cad9c8cad948cad 948cad9c8cad9c94b59c8cad9c94b5a594b59c94b5a594ad9c94b5a594b5a59cbdad94b5a5a5c6b59cb5a5a5c6b59cbdada5bdada5bdada5c6b5a5bdadadc6b5 a5bdb5adc6b5adc6b5adc6b5adc6b5b5cebdadc6bdb5cebdadcebdb5cec6adc6bdbdd6c6b5cebdbdd6c6bdd6c6bdd6c6c6d6cec6decebdcec6c6decec6d6cec6 decec6d6ceceded6cedececeded6c6d6ceceded6ceded6d6e7deceded6d6e7ded6e7ded6e7ded6e7ded6e7ded6e7dedeefe7d6e7dedeefe7deefe7e7efe7deef e7e7efe7e7efe7e7f7efe7efe7e7f7efe7f7efeff7efeff7efeff7efeff7eff7f7f7eff7eff7fff7f7f7f7f7fffff7f7f7ffffffffffffffffffffffffffffff ffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21 3121183121103118103918083118002910184221184a29184229083921083918103921103921104221104221184229184221184a29184229184a29184a29214a 31184229214a29214a29214a29214a29295231215231295239295231315a39295a39315a39295a39315a42315a39396342315a4239634231634239634a39634a 426b52426b4a426b5239634a426b52426b4a426b52426b4a4a7352426b524a73524273524a7b5a4a735a4a7b5a4a735a527b634a735a527b63527b63527b6352 7b635a846b527b6b5a846b5a7b6b5a846b5a846b638c6b5a846b638c735a8c6b638c73638c736b947b638c737394846b8c7b6b8c7b6b8c7b6b94847394847394 8473947b7b9c847394847b9c847394847b9c8c7b9c847b9c8c7b9c8484a58c7b9c8c84a58c84a58c8cad9484a58c94ad9c84a5948cad9c84a5948cad9c94b59c 8cad9c8cad9c8cad9c8cad9c94b59c94ad9c94b5a594b59c9cb5a594b5a59cb5a594b5a5a5bdad9cbdad9cb5a594b5a5a5c6b59cbdada5bdada5bdada5c6b5a5 c6b5adc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5b5cebdadc6bdb5cebdadcebdb5cec6b5cebdb5cec6b5cec6bdd6cebdd6c6bdd6c6bdd6c6c6d6cebdd6c6c6de cec6d6c6c6dececedececeded6c6d6ceceded6ceded6d6e7deceded6d6e7ded6e7ded6e7ded6ded6deefe7d6e7dedee7ded6e7dedeefe7d6e7dedeefe7deefe7 e7efe7e7efe7e7efe7e7efe7eff7efe7efe7eff7efe7efefeff7f7eff7efeff7f7eff7eff7fff7f7f7f7f7fff7f7f7f7fffffff7fff7ffffffffffffffffffff ffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff182918183121103118103118002108214a31214a29214a29083118103921083918103921083918104221103921104221104221184229 184229184229214229214229e7ffefeffff7214229214a31214229214a31295231295239295231295a39295239315a39295239315a42315a39315a42315a4239 634a395a4242634ae7fff7effff7426352426b5242634a426b5242634a426b52396b4a427352426b524a735a4273524a735a4a735a4a735a4a6b5a4a735a4a6b 524a6b5aeffff7e7fff75a7b6b5a7b6b5a7b6b5a7b6b5a84635a846b5a84635a846b5a846b638c735a846b638c73638c73638c736384736b8c7b6b84736b8c7b effff7effff7738c7b739484738c7b7b94847394847b9c84739c847b9c84739c847ba58c7b9c847b9c8c7b9c8c84a59484a59484a594849c8c84a594efffffef fff78ca59484a5948cad9c8cad9c8cad9c94ad9c8cad9494ad9c94ad9c94b5a594b59c94b5a594b59c9cb5a59cb5a59cb5ada5bdada5bdade7fff7efffffa5bd ada5bdb5a5bdada5c6b5a5bdadadc6b5a5bdb5adc6b5adc6b5adc6bdadc6b5adcebdadc6bdb5cebdadc6bdb5cec6b5cec6b5cec6effffff7ffffbdcec6c6d6ce bdd6c6c6d6cebdcec6cedecec6d6cec6d6cec6d6ceceded6cedececedececeded6ceded6ceded6d6ded6ceded6dee7def7fff7f7ffffd6e7ded6e7ded6e7dede efe7dee7dedeefe7dee7dedeefe7deefe7e7efe7e7efe7e7f7efe7efe7eff7efe7efefeff7efefefeff7fff7f7fff7fffffff7fff7f7fff7f7f7f7fffffff7ff f7fffffff7ffffffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff212921212921182921102118e7fff7efffff214231214a3108391810392108422110422110422110422910 4221184229183929184231e7fff7f7ffffeffff7f7ffffeffff7f7ffffefffffeffff7214231315a42295239295231295a39316339295a39315a39315a39315a 42315a42395a4aeffffff7fffff7fffffffffff7fffff7fffff7ffffefffff4263524a6b52426b52426b524273524a735a42735a4a735a4a735a4a73634a7363 527363effff7f7fffff7fffffffffff7fffff7ffffefffffefffff5a7b6b5a846b5a846b5a8c6b5a846b5a8c6b5a846b63947b5a84736b8c7b638c736b8c7be7 fff7f7fffff7fffffffffff7fffff7fffff7fffff7ffff738c847b9484739c84739c84739c847b9c84739c847ba58c7b9c8c84a59484a5948ca59ceffffff7ff fff7fffff7fffff7fffff7ffffefffffefffff8ca59c94ad9c8cad9c94b5a594ad9c94b59c94b59c9cbda594b59c94b5a59cb5a5a5bdadeffff7f7fffff7ffff f7fffff7fffffffffff7fffff7ffffa5bdadadc6b5a5c6b5adc6b5a5c6b5adcebda5c6b5adcebdadc6bdb5cebdb5cebdb5cec6effffffffffff7fffff7fffff7 fffff7fffff7fffff7ffffc6d6cecedecec6d6c6c6decec6dececeded6c6dececeded6ceded6ceded6d6e7deceded6f7fffffffffffffffffffffff7ffffffff fff7ffffffffffdee7dedeefe7d6e7dedeefe7deefe7e7f7efdeefe7e7f7efe7efe7e7f7efe7f7efeff7f7f7ffffffffffffffffffffffffffffffffffffffff fffffff7fffff7fffff7fffff7fffffffffffffffffffffffffffff7f7f7212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffefffffefffff1031211039210839180839210839 18104221083921184a31315a42315a42effff7f7fffff7fffff7fffff7fffffffffff7fffff7fffff7fffff7ffff294a31294a31295a39295a39215231316339 295a39315a42315a42395a4aeffff7f7fffff7fffffffffffffffffffffffffffff7fffff7ffffefffff426352426b52396b5242735242735242735242735a42 735a4a6b5a527363e7fff7fffffffffffffffffffffffffffffff7fffff7fffff7ffffefffff5a7b6b5a846b5a8463638c735a846b5a8c735a8473638c736384 736b8c7be7fff7f7fffff7fffffffffffffffffffffff7fffffffffff7fffff7ffff7394847b9c8c7b9c8c739c8c739c847b9c847b9c8c7ba58c7b9c8c84a594 effffff7fffff7fffffffffff7fffffffffff7fffff7fffff7fffff7ffff94ada58ca59c94ad9c9cb5a58cad9c94b5a594ad9c9cb5a594ad9c9cb5a5effff7ff fffff7fffffffffffffffffffffffffffffffffff7fffff7ffffadbdb5a5c6b5a5bdadadcebda5c6b5adcebda5c6b5adc6b5adc6bdb5c6bdeffffff7fffff7ff fffffffff7fffffffffff7fffff7fffffffffff7ffffbdcec6c6decec6d6c6c6d6cec6d6cec6decec6d6ceceded6c6d6ceceded6f7fffffffffff7ffffffffff fffffffffffff7fffff7fffff7ffffffffffd6e7dedeefe7deefe7deefe7deefe7deefe7dee7e7e7f7efe7efefe7f7eff7ffffffffffffffffffffffffffffff fffffffffffffffff7fffffffffff7f7f7fffffff7f7f7ffffffffffffffffffffffffffffff181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff294231103118 184229103921104229104221184a31184229213929213929fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff39524229523929523929 5231295231295239315a42315a42395a4a315242f7fffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffff4a635a4a6b5a4a6b5a426b5a4273 5a42735a4a73634a735a5273634a6b5af7fffff7fffffffffffffffffffffffffffffffffffffffff7fffff7ffff637b6b63846b6384736384736384735a8473 6b8c7b638c736b8c7b6b8c7bf7fffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffff849c8c7b94847b9c8c739c84739c84739c8484a59484 a5948ca5948ca59cf7fffff7fffffffffff7fffffffffffffffffffffffffffff7fffff7ffff94ada594ad9c94ad9c8cad9c94b5a594b5a594b5a594b5a59cb5 a5a5b5adfffffff7fffffffffffffffffffffffffffffffffffffffffffffff7ffffadbdb5a5bdb5adc6bda5c6b5adc6bdadc6b5adc6bdb5cebdb5cec6b5c6bd f7fffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffced6cec6d6ceceded6c6d6ceced6ceceded6ceded6ceded6d6dedeceded6ffffffff fffffffffffffffffffffffffffffffffffffffffffffff7ffffe7efe7dee7dee7efefe7efefe7efe7deefe7e7f7efe7f7efeff7efeff7effffffff7ffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffff212121e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 ffffeffff7214231103121184229103921183929103929213929213929fffffff7fff7fffffffffffffffffffffffffffffffffffffffffffffffff7ffffefff f7395242184229294a31184229214a31214a31214231395242f7fffff7fffffffffffffffffffffffffffffffffffffffffffffff7fff7f7fffff7ffff4a6352 4a6b5a4a6b5a4263524a6b5a4263524a6b5a526b63efffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffff637b6b637b6b63 84735a7b6b6b84735a7b6b6384736b8473f7fffff7fffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffff7b94846b8c7b739484738c 847b9c8c6b847b738c7b7b8c84fffffff7fffffffffffffffffffffffffffffffffff7f7f7fffffffffffffffffff7ffff9cb5a59cb5ad9cada59cb5a59cb5a5 94ad9c9cb5a59cada5effff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7ffffb5c6bdadc6bdb5c6bdadc6b5adc6b5adbdb5b5 c6bdb5bdbdf7fffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffc6d6cec6d6ceceded6c6cec6ceded6c6d6ced6ded6ced6 d6fffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffe7efe7dee7dedeefe7deefe7deefe7e7efe7e7f7efe7efeff7ffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7fff7ffffffffffffffffffffffffffffff212121efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7fff7ffffffeffff7293931213931efffffeffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffeffff7f7ffffeffff7294a39294239efffffeffffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7fffff7ffffefffff5a7363526b5af7ffffeffffff7fffff7fffffffffff7fff7fffffffffffffffffffffffffffffffffffffffffffffffff7ff fff7fffff7ffffefffff6b8473637b73efffffeffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff f7ffffefffff849c9484948cf7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff7f7fffff7 ffff9cada59cada5effffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7ffffb5c6 bdb5c6bdfffffff7fffffffffff7fffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff7d6dedeced6d6 fffffff7fffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7ffffefefefe7efefffffffff fffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff7fffff7fffffffffff7ffffffffffffffffffffffffffffffffffffffffff fffffff7fffffffffffffffffffff7fffffffffff7fffff7ffffeffff7f7ffffeffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7fffff7fffff7fffff7fff7f7fffff7fffff7fffff7fffff7fffff7fffffffffffffffffffffffffffffffffffff7f7ffffff fffffffffffffffffffffffff7fffffffffff7fffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7ffffffffffeffffff7fffff7fffff7fffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffff fffffffffffffffffffff7fffffffffff7fffff7fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11100088 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 The various regions behave as follows: \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid11100088 \hich\af0\dbch\af0\loch\f0 Region 1.\tab}}\pard \ltrpar \s24\ql \fi-1080\li1440\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls40\adjustright\rin0\lin1440\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 Do not position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8202353 the target}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 to the upper left of the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15155620 neighboring glyph (the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 double }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4476740 nuqat}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15155620 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 . The further left you go the worse the result. The right side of Region 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16726483 , relative to the position of the neighboring glyph,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 is indicated by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid11100088\charrsid16074968 sequence.above.xoffset}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16333881 , a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 nd the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 cost is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 ed}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid11100088\charrsid16074968 sequence.above.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 . \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid11100088 \hich\af0\dbch\af0\loch\f0 Region 2.\tab}Do not position }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8202353 the target }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 to the lower left of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15155620 neighboring glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7214265 This is such a bad place to be }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 that it is treated as a full exclusion}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7214265 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 ju}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8591179 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 t as if the area were covered in ink from another }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6520694 glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 . \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid11100088 \hich\af0\dbch\af0\loch\f0 Region 3.\tab}Try not to position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8202353 the target}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 to the bottom right of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15155620 neighboring glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 . This isn\rquote t such a bad place to be, so the cost is flat in that it merely }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11144291 be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 comes more expensive the further the glyph is from its original position but with a weight multiplier.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 The left side of Region 3 (right side of Region 2) is indicated by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid16074968\charrsid16074968 sequence.below.xlimit}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11672145 , relative to the position of the double nuqta, a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 nd the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8463743 cost is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8463743 ed}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid16074968\charrsid16074968 sequence.below.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid11100088 \hich\af0\dbch\af0\loch\f0 Region 4.\tab}We do not want nuqtas to form a straight line since that can cause visual confusion. In Region 4, the result is worse th e closer the glyph is to being aligned with the double nuqta.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16074968 The height of Region 4 is indicated by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid16074968\charrsid11672145 sequen}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8463743\charrsid11672145 ce.valign.height }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8463743 and the cost is weighted by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8463743\charrsid15155620 sequence.valign.weight}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8463743 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15155620 It is always relative to the center of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8943451 neighboring glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15155620 .}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11100088 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid8128800 \hich\af0\dbch\af0\loch\f0 Region 5.\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8128800 Thi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8463743 s }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8128800 area is also}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8463743 controlled by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8463743\charrsid8463743 sequence.valign.height/weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8463743 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8128800 Notice that at the lower edge of Region 5, the cost associated with Region 3 comes into play, because the target glyph is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6959983 drifting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8202353 from one undesirable position to another}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8128800 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6959983 Which is considered worse can be controlled by the respective}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6959983\charrsid6959983 weight }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6959983 attributes.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11624960 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid11624960 \hich\af0\dbch\af0\loch\f0 Region 6.\tab}Th}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14493504 is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13124075 is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14493504 where collisions occur between the single nuqta and the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8943451 neighboring}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14493504 nuqta and is governed by th}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11144291 e standard collision algorithm. T}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14493504 he size of the rectangle is indicated by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14493504\charrsid14493504 collision.marg}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14493504\charrsid8943451 in}{\pard\plain \ltrpar\s24\ql \fi-1080\li1440\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls40\adjustright\rin0\lin1440\itap0\pararsid2776810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid10239652 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10239652 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid10239652 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid2245366 i}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid10239652 on.margin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10239652 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8943451\charrsid8943451 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8943451 on the neighboring glyph.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3047227 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7473035 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3047227\charrsid3047227 The wavy edges of the diagram indicate that the regions extend horizontally to the edges of the cluster indicated by the start- and end-f}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3047227 lags, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7473035 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3047227 vertically to infinity. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3047227 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3047227 Here are some examples of the effects of sequencing. \par }\pard \ltrpar\s24\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4476740 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4476740 {\*\shppict {\pict{\*\picprop\shplid1030{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}} \picscalex69\picscaley69\piccropl0\piccropr0\piccropt0\piccropb0\picw23768\pich8179\picwgoal13475\pichgoal4637\pngblip\bliptag1089223212{\*\blipuid 40ec3a2c435ee2a65112aef5ab8f73fa} 89504e470d0a1a0a0000000d4948445200000382000001350806000000b2595e85000000017352474200aece1ce90000000467414d410000b18f0bfc61050000 00097048597300000ec200000ec20115284a8000007a4e49444154785eeddd079813451f06f0a1882288802220285d0595a628dfd15440e94545040ba070a060 41a508282a4544149426604314111041bad2bb02a234c53b408a05a52ad265bf7de766729bdc26b7c925779be4fd3dcfde65279b4db29b6ce63f359b61124444 444444441437b2abff44444444444414271808121111111111c5190682444444444444718681201111111111519c612048444444444414671808121111111111 c5190682444444444444718681201111111111519c612048444444444414671808121111111111c5190682444444444444718681201111111111519c61204844 4444444414671808121111111111c5190682444444444444718681201111111111519c612048444444444414671808121111111111c519068244444444444471 8681201111111111519c612048444444444414671808121111111111c5190682444444444444718681201111111111519c612048444444444414671808121111 111111c519068244316ec58a15a257af5e6a8d88888888888120514c3b75ea94e8d0a183fc1faa3ffef84374ebd64dfcfbefbf2a8588888888a21d0341a21836 76ec58b16bd72ed1a2450b95129cbd7bf78a9a356b8ad1a3478bc4c444611886ba2738df7efbad3873e68c5a23222222a2acc640902846fdf7df7f62f8f0e1f2 76e5ca95e5ff601c3d7a54dc79e79d62e7ce9d727df2e4c9e2f1c71f17e7cf9f97ebbe4e9e3c299e7ffe79b17fff7e959262e8d0a1a27af5eaa24f9f3e2a8588 888888b21a0341a218b564c912b16fdf3e912d5b36913f7f7e959ac24973cf76edda891d3b76a8b514efbcf38e68debcb93874e8904a4971fcf871d1a8512331 64c810d1b66d5b71faf46999fefaebafcbfe89a8497ce38d37c4a851a3643a11111111652d068244316ae1c285f27ff6ecd96530a8396deef9f3cf3fab5bdee6 cc9923d6ad5ba7d6526a1e5bb56a25962d5b26d757ae5c29eebbef3e3175ead43483d43cf1c41362e0c08121373125222222a2f060204814a3b66edd2aff5b83 ae609a7b7ef2c927224f9e3c6a2d55e7ce9d45e3c68dd59a10fdfbf7170b162c506b29befcf24bd1ba756bdb80ef85175e1083060d526b444444449415180812 c5a85f7ffd55feb70679c134f7ac5ab5aa98316386b8f8e28b558a104d9b364dd3bc73f3e6cdea9633850a1512eddbb7576b444444449415180812c5a8b367cf aa5ba9b5824e9b7b6aa83d5cba74a92857ae9c0c223ffffc739133674e756f0a0486458b16556ba96ad7ae2d468e1ce9d52c3577eedce28b2fbe10c58b175729 444444449415b299194476d6218a4108de929393e56d048508e0befbee3b19a0f90e1283e69ea8190c156a0511341e387040ae57aa54490e5653b060413169d2 24d1a95327912b572e317bf66c51a74e1db90d11111111651d06824431aa74e9d262f7eeddf23646f14420065f7df59568d9b2a53871e2845c47734f3401f5ad e90bd69e3d7bc4fdf7df2ffb154e9f3edd6ba45204a43972e410a54a955229444444449495180812c5a812254ac8114241d7086a98e0fdc1071f1409090962c2 8409e2820b2e50f710111111513c60204814a3aebaea2a39b93b02406b7f4122222222220e164314a37419cf45175d24ff1311111111690c0489625c66078267 ce9c51b788888888c8ad180812c5b8cc0e043b76ec288e1c39a2d6c84d56ac58211e78e00171e59557ca693df492376f5e39ca2c467e7dedb5d73c0309111111 51ec62204814e330775fb87df3cd37a256ad5aa27af5ea62dfbe7d2a5588c18307cb114a0b1428a052c80d305d489b366de4d41d93274f16bffffebbba2705ee c7c8ae5f7ffdb5e8ddbbb79c2f92888888621b0341a218a5fb085e71c515f27fb86cd8b041d4ab574fac5ab54a06842fbcf0823878f0a018326488bc8d4082dc 038179c3860dc5942953544afa2ebffc72758b8888886215470d258a51975e7aa9f8fbefbfe5dc7e9f7efaa94a1562eddab572fd871f7e10fffcf38f6c26f8e8 a38fcab905d373f8f06151b56a553967a01d4c498109e4c93dba75eb26468f1e2d8a162d2a6ad7ae2d8a172f2ee77ac4bc8e68027afcf87159ab8bcfc55f7ffd 251f83dac13265cac8db444444149b180812c5207cad316dc4f9f3e7458f1e3dc4d0a14365bfbd471e7944cc9c39536de50d13cdd7af5f5fadd9bbfbeebbc517 5f7ca1d6bc21c0d8b469136b935c0435b6982bf2c5175f14cf3fffbcc8952b97ba27ad53a74ec97357be7c79b17efd7a954a444444b18a4d43896210823e0481 50a95225f1e38f3f8a5b6eb9c56f10086fbdf596ba656fe4c8919e20b064c992a269d3a6f23614295244cc9d3b9741a0cba0a9ee73cf3d27faf7ef1f300844ed 7083060d640de1c08103552a111111c5320682443168f7eeddea9610f9f3e717b7df7ebb6cee17c84f3ffda46ea5859a250414800070cb962de2934f3e91234c 8e1933463eb662c58af27e728f162d5a88010306a8356f282840f08e00b04a952a62f9f2e5e2a5975e1277dd7597da8288888862199b8612c5a0e9d3a78b56ad 5a89ecd9b38babaeba4af6e9c36d340deddcb9b3b8fefaebe5002f7dfaf4111f7ffcb17c0c6af9ac01a4b677ef5e71ebadb78a3ffef84306095f7ef965c0da25 7237f4f37cf7dd77c53befbce339dfe833f8e69b6f8ac4c444b94e444444b18f3582443148f7f142ad0f8240f4df5bb3668d98306182b8f9e69be59412081087 0f1f2eb703a4fbc2e0218d1a359241e04d37dd24034c0681d109817ff7eeddc5d5575f2d7af5ea2583400c18837905b76fdfce2090888828ce3010248a4198da 4143ed1fa67c40ad9e2f6b83804e9d3aa95b290e1c38209b946edbb64d5c77dd7562c1820572e2718a3e1f7ef8a1285bb6ac183162849c33f0a28b2e92811ffa 8ea24618c121111111c51706824431064dff10f80132ff8b172f16850b1796ebbef4540f4d9a341177de79a7bc0de80358a3460d1904de78e38d62e9d2a51c08 260a9d3c7952dc77df7da243870ee2d8b163f21ca21f209afb8e1b374e942b574e6d49444444f1868120518c410dcf99336764bf2f8cf2e92f08fcf6db6fe5a8 92985feefdf7df57a9424c9e3c5954af5e5decdcb953dc71c71d7210118c0a4aee8340be42850ab2860fd33ea0e64f435350d4e84e9b364d5c72c92562d0a041 b2392846102d54a890da8a888888e215078b218a21f83a63f4cead5bb78a0f3ef840b46fdf5edde30d357ccd9b3797b7172d5a24a796405fc2a79e7a4acc9a35 4b64cb964dce3bf7ca2bafc87e64e43e18adb56bd7ae6a2d15a6f978e8a1876410ffdd77dfc9f38c09e58b152ba6b6a06880ef32be8744444491c2409028868c 1f3f5e8e0a8a015e3035802fd41422b87bf5d557e58031f3e6cd935307600e41a4611e3934051d3b76ac6c1a4aee8440bf6ad5aae2ecd9b32a25156aff30b0cf 8a152be4e7a0408102e2ca2baf146ddbb6e5141f51e4d1471f15ad5bb7f66ab24d4444144e0c048962049a02625017f40bdbb163871c2954c3e8a153a74e157d fbf615bb76ed928101a60f58bd7ab51c4914fd0af158d4023ef8e08372aa0972af66cd9ac973376cd830190c0e1d3a5436e5b542d3600c0ca321f05fb972a50c 12c9ddbefaea2b39550bce714242824a2522220a2f06824451087dbdd0941373ff61414d5eddba75c5ba75eb648d1ffafe01b69932658a0cfa7ef9e5179956a2 440971d96597894d9b36c9a9201a376e2c3a76ec282716675334f7c3792c5dbab4ecd7a99bfeeedfbf5f06f2d6c0cf0ea68ad0f346923b61209f6ad5aac9c219 14ee5c7ae9a5ea1e2222a2f062b13f5194387af4a8183870a02855aa940c043010086ea39fd8bdf7de2b83400c1a72f1c5178bc71e7b4cdc70c30d3248ecddbb b7270804047f6856f8d9679f893ffffc537cfef9e7a261c3860c02a30406f341208fa69e1a6a7ffff7bfffa9b594da3f342bc468b0d6da5d4c17118c7dfbf6c9 f9272973fcf6db6fa27efdfaf27b79db6db7310824228a5228d4c3c8edc85ba110d6adf56eac112472397c45d167efc5175f14870e1d52a9c141c08849c45bb5 6a250a162ca852291a615e48d418594708854a952a89cd9b37cb02809933678a3265cac8748c2cfaf0c30fcbdb781c468bb51a3e7cb8983d7bb658b870a1b8e0 820b546a4a3fc47af5ea89d3a74f8b8d1b37cac2078a9c9f7efa4916c8e8429b254b96c8c21e2222722ffca656ae5c5916b26b28b8c7e8ebe8a6a375e9d2450e dce6b6ae37ac112472314cea8e269ba8f50b2508c444e1efbdf79e484e4e9683c830088c6e98df71fbf6ed3240b37af3cd37651088400f83c4e82010f4e8b080 20d2eae5975f16cf3cf38c1c45f689279e50a9427e5e1084e0f3871f347c06515b459181419b9069d041209a6a3308242272078cbd803114d00dc30afdf371ed eed3a78f4a49d1ae5d3baf2010d04507bfc7a116e8470c6a0489c87db66edd6a98811c6aece5923f7f7ea366cd9a469d3a758c6bafbdd6c89933a7e73edfc5cc f01be645c7387dfab4da1bc58261c386c9f36b066a2ac5303efbec33235bb66cc675d75d671c3c7850a5a6fae0830f3c9f8bafbffe5aa51ac6f8f1e33de97ae9 dab5ab71ecd831e39a6bae49735fc992258d8d1b37aa475338fcf7df7f86198c1bd9b367f71c6733c8374e9d3aa5b62022a2acf4cf3fff18b7dd769bbc3ed7aa 55cb737d368340cf751bcbc89123653ae0f7d87a9f759933678edaca1d180812b9d0a64d9b8c02050ac88bc665975d667cf8e187c6993367d4bd294e9c3861b4 6ad5cab8f0c20b8d5cb972c9e0efa9a79e3256ac58a1b62037e9debdbbb16ddb36b5169a468d1a19850a15526b86b17cf97279fe2fbffc7263f7eedd2a35d58c 19338c8b2eba487e8edab66dab520de3975f7e919f19eb8f935e8a162d6a9b8e255fbe7cc6d9b367d55ec8ceb871e38c2d5bb6a835ff0e1c3860d4af5fdfebf8 366edcd83879f2a4da8288c2c1e97792c8d7b973e78c060d1a785da79b356be62980b5a6631930608071fefc7959689a274f9e34f777eedc59edd93d180812b9 0c6a7b90b1d7178e5ebd7aa97bfc43cd02b9d7fefdfb8d22458ac8f3396bd62c951a1c0460975c7289d1b46953b98e1a63d4125f70c1053220b4dab56b97f1d0 430f793e432d5bb6f42a48387cf8b0d767ccba942e5d5ad64ad9dd3766cc18b507b2b377ef5e1998af59b346a5d85bbc78719a80fbe9a79f96990e723714e824 26261a3ffef8a34a213773fa9d24b2d3b76f5fafebb49305c1202c5cb8d0b8f8e28b3de9f8ed7663412a03412217416d40e5ca95bd2e2aa88559bd7ab5da82a2 d1c081038d72e5cac90cc9df7fffad528383cf003e0f83060d92357ac58a1593eb68020c870e1d323efdf453a34993269e66c3083e519b6c0735c7bab6502ff8 aca136fac8912346952a55bceeebd1a3877a24f9f3dc73cfc900cf1f94142393606d0a8a8cc2c48913d516e46628d0b9e28a2be479fbfefbef552ab9597adf49 728fd6ad5b1b3b77ee546be1156aad3082377dad76b2a0c5cebe7dfbd4a30de39b6fbe91bffdeddab54bd3aa2b58383e91c04090c8455e7bed35db8b0b328eaf bffebada8aa209fa69162f5edcb8f4d24b8dba75ebaad4e0f5efdf5f7e163efef863a34c9932f2366aef1e7ffc71e3e69b6ff60417b973e7964d48a74c9992ee 0fcfdcb9733d259679f3e63556ae5ca9ee318ca3478fcafde03e64a628309c67d4b2de7befbd2ac51bfa99a049118ea75ed0d7974dd6a2070a74f0ddbbeaaaab 540a45d2f0e1c38dd9b367879c814eef3b49ee317ffe7c23478e1cc65f7ffda552c22723b5c27bf6ecb1ed2e51bb766dd927d0da3c14bfbdab56ad528f0c2f7d 7c22818120918b142e5cd8eb62e3bb6060098a2e63c78ef59c3f0473a142e773fce8e826a658b08e415c9a376f2e6b9a30184cb0038d2060c4be7c9b97a2761a fb45ede2ba75eb542af9b36cd932791c5f7ae92595920a999b6ad5aa79ce1b1634dd4570180cd42806fb180a0f6b814e9b366d542a450a9aafe358e3bb622da0 0a46a0ef24b94b8d1a358c848404b5165e19ad15fee1871fbcf266952a55922d70e0a38f3e924126ba6de0f31629913c3e9c3e82c845cc0ca3ba650fd30450f4 387efcb8183c78b0c89b37af5c2f5fbebcfcefc4ead5abc56bafbd26e7f3c3e4ff9867cebc668b3ffef8439841a1d8b06183dcffeeddbbe5bc81fdfaf593d34a 983f4a6a0fe9c33e30b711e0b3f5df7fffc9dbf88f392767cd9a25ce9d3b279a366d9a6628ec7885636dc7ccaccaffc58a1593ff354c0e5fab562db17efd7ab9 9e274f1e3907a49981f07c2e9cc0fe311d4cbe7cf9c4a04183542a6596f7df7f5f0e1d7fecd8b1a0bec7141accb7963b776e9123470e51b56a55951a1c7fdf49 72174c8984dfbb8a152baa94f03973e68cbcde9a81944a091e5ed737df7c23a789a85bb7ae30033ecf545c0f3df490fc8d36834551a74e1d99166e913c3ec040 90c8455ab66ca96ed9b34ef84deed7b3674fb16fdf3e19c041810205e4fff4bcf5d65b3278e8ddbbb7b8f1c61bc5fdf7dfafee11e28a2bae90f3cedd74d34de2 e28b2f56a9c1dbb3678f68d2a4899c271010f475e8d0410681985b70ce9c39321d5040811f39dfc9e8e30d26799f3a75aa5af386401dace7f8df7fff158d1b37 f6dc87791c117c638ea960605e47ec0781083e4bc3870f57f75066f02dd0b9f4d24be57f2b9c975dbb7679beeb14bac3870f8b37de78435e9bca962d1bf275ce ee3b49ee337dfa74f9bf50a142f27f38ad5dbb561c3c7850dc70c30d2a2534254a9490fb5ab46891c89f3fbf4a4d81cf68a952a5d45af845f2f8000341a22c84 da9ceeddbbcb1a1ed4e4cc9f3f5f64cb964ddd9b56a3468dd42d72bbcf3fff5c4e200b08080019caf44c9830413cfdf4d3b6194afc002d58b0202c3f3aad5bb7 9613c65b4d9a344924242488b7df7e5ba5a4c2b62855c5c4f5f1eac5175f14850b17566bdef444c33a48c0f943008fc00f1e7ef8611948e3bb1eac1e3d7a8821 43868813274e88850b177a6a6e2973e8021dedf7df7f57b752e1fc942953464e3a4d19f3c4134fc820f0d4a953a25cb9722a3578bedf4972a7a54b97caffb972 e592ffc329166a8523797c8081205116193a74a86c623462c408d9ec0e4d1890d1f357a28cda40d41091fba176ad4d9b36f25c162d5a54a50a4ff3407f4e9e3c 29ba76edaad6bca129ca575f7d25aa54a9a25232069f353b788dfe9ab8a09632a325abd16acb962db2798ebfe69c68b20bfa7ed4eaa2563567ce9c32b09e3871 6248351b7ffffdb7983d7bb66c9284a672d75e7bad285dbab4ba9722cd5aa0a30b727470afe17b3e7efc78791b8529141a1c4734719f3c79b2b8fcf2cb655a91 2245e4ff407ccf87e6fb9d2477d235b791100bb5c2913c3ec040902893e1c7ae63c78ea257af5ee2f4e9d32a357dc3860d63df141741731334d5405f16945ee3 5c6edab449242626ca26be67cf9e95db5d74d145f23fbcf7de7b7efb8122c38f5a3a3c0e9f8de5cb978b7beeb947060f0d1a3490b549d5aa55535b671cfa1dfa 367181010306c85ac7db6fbf5da5a4406dc7b469d344f6ecf1f9b381f70efe4a650f1d3a24ffe37ca14f076a862eb9e412190ca2862354a889450d206a6af1b9 78e0810764ff4d8a3c6b818eb54661f1e2c562cd9a356a4dc8e6c2bffcf28bbc8d3ea1e4df3ffffc93e6ba899a3b5c8f5000a5fbbfa26014d2ebf38cc7fa2b20 b57e27c9bd7c5ba684931b6a85cf9f3f2f7ff7759e2058913c3e92798123a24cf4c20b2fc891a7b0142c58508e688639a930771be69833bff472b2f0254b9618 d3a74f97a33a629ddc65e3c68d9ef3e86fa955ab9661060e5e6998f2e1f3cf3f37cc40529e6f9cdbc183077b86a8befefaebd533441e86ba2e50a080e7b5f5ec d953dd63c8d14731ec3ad231cd81f983aaee894f389738167ab2605f18da1bf7efd8b1c3308368392d47388612c779b08e148bd1ebf48875947118d115530c8c 1a354a5e8371bcbffbee3ba353a74e5e43c3d7ac59d3731b0b4609c4d42deddbb7f7fa8e635fe41f4660b41e47bb0543f3ebdb0f3ef8a07aa43d5c3b9f7cf249 b5e6cdfa9d24f7d2e7dadfb53523f0db857daf5dbb56a5840fa63709e4df7fff35ba75eb26a795c06bc075a2418306724a148c00ed54248f0f301024ca44df7e fbad67be37641611f46514262cc5d0e694b93051bbbe40db2dc8282627277b26a076babcfbeebbea1932c78f3ffe283f8b43860c5129de307fd1b163c7d45afc d2c198dd8ff18913273ce7ef934f3e91ff31ac78386cd8b0c1a85ebdbadc270a8ef07da7f0715aa0f3e8a38fdadee7bbdc71c71d6acf6427bdeb26a6c941e1a8 5eaf50a1827a645a7ffcf187fc4e4c9c3851a5a4b27e2731171cb9973e4f9108745030837da300229c7efffd77e3ce3bef546b699d3d7b56deafdf9bef52b66c 595980f1ca2bafc809e7972e5daa1e99967e4ca40241360d25ca447dfaf491cd046ad7ae2d0786c108904ea0ef18062cd8bb77af4a49817e8618d218fba5cc85 810cfcc1803fe85784e69418f2dfa95b6fbd550e2a929930780946c344b3433b68968a290be29d6e6666470f060418edf0e69b6f96c38a87cafc6d960304b468 d142ee6bddba7572d4d0efbefb4edc72cb2d6a2b0a07f4fd0c04cd7b3ff8e003c7df630ee81558a0eb268e1d9adcea66b68066d618aedf179a95366fde5c8e30 6a373580f53b19cc943a145b8e1c3922ff5bbb6884c3bbefbe1b702023e4cdd0a7df1f8c048dbee318800c9f618c029e55180812659255ab56c9a187d1561d7d 4a9cfe38618002fc40befefaeba26ddbb69e7e855847e61d9946643e478d1a25d3297354a85041ddf286417d306004ce15f8f6b5f307c1d6a79f7eca29425c2a 50ff0e6be616c11afa95013af977ead449142f5e5cf653fadffffe27078d090483476130983beeb8430e578e3ea718c0077d0d3184398597d3021d4cb5921e0c e6f3e0830faa35b2a3af9b38b69823109fe9f6eddbcb828fb973e7ca413d701cadeebefb6ed9bf1a7da5d0971afd099171c6dc6ec88ce3fcf8b29e570682f109 05e87a84e57007829857d45f41feafbffe2afbda43e7ce9de5e714031a218f86e9a07cbdf0c20bb2c029cbc87a412272c4fca1329e7bee39b5169cc71e7b2ce8 eafd73e7ce1977dd7597a7690096a64d9b1a93274ff64ad30b9a1904d3f69c4287fe44bec7bf52a54ac6ca952bd51629d0ffd3dad7c86e417361f40725f7d2e7 caeefbbb7bf76eaff3b968d122e3f5d75f4fd33f542fe87fe6cf575f7d658c1f3f5e3665e27739f256ac58617b8e2eb8e002e3e38f3f565ba5b8edb6db6cb7d5 0bfa7f5360faba893ed1fe3edffdfbf74f736cfd2dbd7bf7568ff266fd4efef3cf3f2a95007d97d11cf1975f7e512929e6cc9963942a55cad8be7dbb4ac91cfa 3c85bbe923faffea7da31971b8fcfcf3cf729ffdfaf55329de745e6fc488112ac5dbc2850b8d8e1d3b1ac58b1737ca972f6f9c397346dd634fbf8748350d7514 088e484879115e4be23cc3481a6124f8a6cb25d130ef95924624a4a6278c309290382f31e5717add22c93c70fab1d82e759f09c608df8d3381d7eb21ff029cd3 5881a00c17cf50be8ce8c3a7fb8aeddcb953a5a60f3f72a9df0167cbc08103d5a329d23018811e68027db9fc69dbb6adedb9c28220f09d77de515b925be9f365 f7fdc777da7a4e03f50dd1cb8c1933d4a3292b392dd001649c31d893eff6585060877e41943e5c37f15bea0f0212bb63ecbbe0da897ed876acdf49f417a41428 f8c893278f3c2e75ebd695f91a9830618267709d1b6fbc3153fb85ebf314ee4067dfbe7d9e7de37b1e2e63c68c91fb6cd1a2854a49f5e79f7f1a175d7491d1a1 430795624f9f8765cb96a914ff22757c34873582495ec1600282408f24330648bd4f0688be10305ad293fc050d32f04b0d22213590cc8240d0e6f5903dbfe734 8660f0879c39731abffefaab4a710e197d7c8e110c0653ca8fda3fcf77cbc182012d7efbed37f568dab46993f1fcf3cfabb5f0c3c89055aa54516bfe1d3f7edc 4848b0148aa9e5ca2baf34162c58a0b62237d3e7cceec778d7ae5d5ee7d5c972d34d37a9475356735aa00318b1b5478f1e72b00764f8ca9429233f13b1346057 565f3731daa21e6931d0d2a64d1bf588b4acdfc993274faad4f89694942407d7b11e438c7c8b9a6fdf562b356ad4c8b460503f6746021d14d2f89ee748d50ab7 6edd5aee1303c2f97eefd12a0bf9bc4081270a3af2e6cd1bb0658855388e4f20ce9b867ad5fef90647f38c44cf7d690336047309e944719e40c22581a0bfd743 f10b3f5ccd9b37576bc14113027c8e8b152b16542088d1cef4b402d6a54e9d3ab254ca7af1c68f6b2486488e6608a47bf5eaa5d602c328605dbb7695419b53c8 0862444127fefbef3f5998806623c8486274498ef61a5e5f7ef9a5e3e67918bd10a371a6d72c47d3dfb3a14387aa9454287cd1f707b36446a10da62a89f6a671 6e29d089176eb86e3efbecb3b6df19bda036c5b769a395f53bc94030c52db7dce2750cf5a24732f75d30822b46958e34fd7c19097430ed926f2d7ea46a85d162 40eff7adb7de52a9292385228f87df163ba87d1d3468903cde575d7595e3405b3f57d60782266bcd9f6f60e7ff3e048996604ad6b2e96d53d253833debe27b9f 1908ce33f7a56a2613126d6a9e9252ef974b82b90faf97e2fbdcde359dba3633d0ebb16506c95eaf0beb69a2e179e673a5ee1735a4695f7fea7ef07e13cd172f 03525d9beaf0f57b047a4eaf7de1d8fabc07b59907f695683d2e29af4fb239a7c1ed3fc99887c202cff6de4b7a8508990101165ecbac59b3544a70dab56be779 3fc14e0f80be42983b4c3f1e17213d8f18028b0b2fbcd0c8972f9f6c6a40a9366fde2c8fd7962d5b548a7f08b851b28fedd18cd369b08e9a04ccb547590fe70c fd2df0439b9e69d3a679323fcf3cf38c4a0d4c7fffec9af11e3e7cd873bfef82ef67c58a1565a6cab7d43dd2b5c1f80edc70c30d41153eb951308149288229d0 79e38d37e43c83b1ca2dd74d7ca74a962ce9f57db12e93264d525bdab37e2751c3488651ad5a35af63e864419fe58cc23459ba09aa1dfd5ca1063a7bf7ee958f f79d8e2b52b5c2a809d4fbbdf4d24b3d53534c9d3a55e6cfecbe07983a4c1f7ffcf62c5fbe5cdd933efd5cae0804bd32f75e4d0011905833f296a0098ff10950 5283c6d4edecd2c01a94c980c05233e9b55b4fbaf978f9c27450e85d9398e6792cfbb3be4e7faf272d158ce9e006c1a8f938afe0453f070253af75cb31d4c756 a521004c797eec3bc0ebf2f3fa9d3c67a0639b369847bab92f247b5e5beab1b53b5e4ef7ef79ac7e6d36fbcf6ae8d88bcc42a8a54a985b4a1f0b6406efb9e71e 596a840b95931f4f947ca2f6026dfa7d9b1ca0d48bf324a59598982833c1e9c1f1d493ceeaa54b972eb2062f109c376ceb6fb002ca5c08aa703ed0913f106474 5103643ddfc3860d53f7faa7b7c5404dbe90c9b0ee0f0b061bc1a017d6ef2b9a66e13bacb7f157721c2cbb4c16067c406b82a79f7e5aa544a760029350392dd0 c1801338a6b11c58b8e9ba89da280ca8617d0efc0e3b294cb57e270335d38b273ffdf493913f7f7eafe389058554a851f34defdebdbb7a64c6a02f1d06cff247 3fdfabafbeaa528283c1b55058ee2b12b5c2e803a8f7a917342b9f32658a6ca93573e64cb5654a97902fbef8c268d8b0a1d7f698273318fa71a11e9ff4041708 9ad9f4d41a284b26ddccb8a376283518480dd290e615b099ec8206bb34f0aa11c4f3d9061396d7657932cf632dc14f9ae7b1ec2fa440d0f378cbf1409acdbed2 be5efd98d4d79fba8d0ebecc25d0eb4ae7f5fb7f4e3cd4c9b1b53ca7debfa7e635755f76c7cbd1fe6d9fd3febd671534dfc3c5135fe650e909a1ed16942ed5ae 5d9b134587d1df7fff2d9b0e39c904376bd6ccf6bc3469d2c43878f0a0da2a2d34ebc076993d013cd96bd5aa952c8d4d0f9a00fa9e6b2ce9657af4761871cf8e 755f58fcd558a0292afadf609bb163c7aad4e0a0b6039989aa55ab7a067e40708bda99fbefbf5f5eab501389f4356bd6a8474527a78149a882094cd03cb57dfb f66a2df6b8f1ba79f4e85163f8f0e1c6238f3c220b56023507f5a56be03168482c414ba0975f7e59ad050735516841a4cf175a5160dc031c236bd08d6e30e118 fc68dbb66df23cbcfffefb2a252dfd9c6fbffdb64a094ea3468d6cf36791a815d62386da2d789f77df7db7d1b87163796dd6d760eb82df292785ff56fab1a11e 9ff404398f6059d1f83e33db2ead114fbf3e5fde9a3f5388160dcb8a862dccecbb327e26ee9b2f666e1d217a344c490bb735db93526e24cf1553d7a4dc4ca860 33c1e39aa9626eb2ba1d6e651b8b9443621e8f72d9448dcef34572d9a7c4ea71fa4d9bc7607ccaad354f979373e764cb564e3c2d5fef1a31152fccf2fa6fb8a6 6cca8d0c71f09ce9f01c5bcbbe3cc7b66c43316e350a11568ba7427cb9a9fb77bf850b17cac96b333251f0e5975fae6ea5f5cf3fff88152b56886eddbaa914ca a82fbffc524e287cdb6db7a914ffcc0bbbbae50df3b661226f7f30a715942d1b8eef6c5a98b70e9f3b3be3c68d1333679a175e928e1f3f2ecf57bd7af5544af0 029d6b2b7f9308e33aabdd7aebad7ee793c33c9103070e94b72f0a616eabc99327cb79d3cc4050ce5988cf399c387142ecdcb9534c993245cc9f3f5fce378ad7 81b90ba315ae8d9f7cf24986ce6b7af01c90def718dfc7f1e3c7cb49fe63951baf9b9877d70c4ce53c82f8cc073397668e1c39e4ff43870ec9ffb1e2f3cf3f97 139287a276eddac20c06c5b5d75e2b5ab66c29e72abdf2ca2be55ca798cbb152a54ae2a1871e12d3a64d133973e6548f0a8d196388c71e7b4cfeaf59b3a64af5 2f4f9e3cea9673985712f3332724e8d82495753e4abcb770c06f8d3f789f3366cc90f361e2da8c6bb0d52db7dc22e791b5fe56042394e3e344d013ca976d7c9f f01ceef133c5fc643350a8d043c8b0a7610be10905c70f149d3b0f145bef6b6c868fb1acac786a759218a10eca9af18d44b96c35c45bfa3b9afcb3d8aa6e8ac4 79f283625d5623924ada6e866761e4e4399db2ec2b22c19b1934f7531f9a3553e70a1cb6e4f933454aec99204644aa142108f3e6cd93ffed2e344ed5a85143dd f26ffbf6edea1665147ec4a056ad5af27f20c868da5d6031116ce3c68dd55a5a7ffef9a7fc1f6c20f8edb7df8a3367cea8357b070f1e949fb7faf5eba799c8bc 6fdfbea24b972e7212e61d3b76a8d4f8b660c1023979b093f3fde1871fcac9ddadf2e6cd2b3ef8e003b596d6b973e7e47f644afd4d226c55bd7a7575cb5eb56a d5e4fffcf9f3cbff4e8d1c39520698478e1c512981e1b312cd82094c42e53430f9eaabaf6440818c74ac72f3753314c8efc04f3ffd24ff078280221ae0b763f1 e2c572e2fd5055ae5c591e13042db8a6693827df7fffbdf8e8a38f648155460d1b364c1672a3e0ca5f019a55be7cf9d42de7f01e704cec024d14b4e9a06bcf9e 3df27f46050a0403b9faeaabc5ac59b3bc82d36085727c9c083a10b466dccd684f0c6c37535468acbfd00d450f1d1199a1cd7833377f9fe7be588660d01049f3 1255908cdac1ce42d69796bd46dc20d34c5b7f96814ec485f33933e1f5371c9724e68d308fdd9aa7cd203a9b28d768bc48481c21e625855ee3184eb8e8a264b1 42850a2a257828614befc28a127dfdc345a143a61de70c19f682050baa54ffaa56ad2a7f4cacc141d3a64dc5a851a3d49abdfdfbf78bc2850b8b62c58aa99454 084a7af6ec29f6eeddab52520c1d3a5406097dfaf45129691d3e7c58d4a953476cd8b0412e1d3b76f47c2e860c1922060f1e2c6f1f3b764cdc79e79d21970cc7 12d442809302978a152b8a4f3ffd54e4ca954bae67cf9e5d96d2a284dc1f9c13c067c589f4027d7c3e2098401025f7cf3efbace36b04327b4d9a34516bd12998 c024544e0393254b96c86b0432e0b856fff6db6fea9ed8e086eb66b8e1bb0d3ffcf083fc1f08be5bd160e3c68d32184161a19ba1e542efdebde5edbbefbe5bfe 4f4fc99225d52de7de7df75d99b742eb073bba56d3f7b7383db846bffcf2cba24d9b3662ead4a99eebeee8d1a33d35cd4ee1b38e9665458a145129a109e5f838 117c2068b236015d73430bafccba578d6162bfccc9c87b9a677a4bdaaedb8bde2722168f26bf253a774e69225bb6e138b1dad0b5835bc5cf327f564e54f0c4c6 7e9aa896abe039665b531e94410e9ed3b170eecb8fe4b962e6d40a62a2f945c3970dcbea714f89862e0802f1a395949424aeb9e69a909a7169b8100c183040ad d9c34522d42603946afdfaf5f287d24909a486800a4d47f09876eddac9a637e9358b59b972a56d29249e1bcd885f7ffd75d1b66d5b4ff310acf7ead54b7ebedf 78e30ddb0c133263f8d1b4d60ea37416fb41cdb46f00891f37d41cea5aeb78854c7aa142850236c1b66ad6ac996c5a8befe5fbefbf9f6e4605b5b810a899a5f5 f382003e90356b527e9b9c660cf099c267c0b776d81fbc166490a2f97a126c60122aa781096a5010006edbb64d3cfae8a37e9bfe46abacbe6e06e2a415851d5d 63b97af56af9df1fd4b0fff2cb2f6acdddf4b505c7dde9f520b38d1831427e1ece9f3f2fd73b74e820ffa7073587c140808f737bd34d37f9ad69d341dbd6ad9e 7672e9c2f7bc61c386b229329adab76edd5a5c75d555e2baebae139f7df69978f5d55765e1be13c83bae5ab54a3e36a3823d3e8e99999210a40e6e92762c8f40 f7a5487f609179c60835708877ba4cb01d1c2535dddca7dc4e0f3882690e523601dffda5ae7befcfdfeb492be57952a7665083e6d88d088ac5938e29134678de bfe798a8fb53e7313417bfafcbbaeebd9d93e7f4dd979990ceb14dd957caa8acd8170609925b3838a732c166ffa99f97344b8279eefc1ef7cc8151fdf05a307c 79386070088c3095e6bd9a0b0690a08cc3c002389e0f3cf0804a898cabafbedabc2e8c506b29ccccab71d75d77799d577c7630d2a4354d2f987cd6da711c238f d96d87454f7760b7dc7efbed6a0ff107031de01898419a4a093fcc9386e7983d7bb64a49cb3aa4389640530c98196839a1707a232c6afaf9ad8b19e4a549d3e9 810666881618e406ef27d2d7451c5b8ce29c9e7af5ea791d678cb2184bb2f2ba0966e65bceafea3b02f66bafbd263fd39857305866265cbe2733205429f63038 4ee7ce9dd59abb994195e73318c9b9354381817c3042a87e7d58ead7afafeef50fdb5d76d9656acdb9962d5bcac7061a85b350a142721b0c84e3047ec31b3468 e079fdbe0b06fec336f8bc62e017bb6df4d2a64d1b39005346615fa11c1fa7420c045526df1aec58a40400a90181176b8082c512a4e880c033cf5c9a6dcdc0c3 2768b0c62b0834bcee37b74f1b4798cfe3990f0f818625383197d4fdd9bc1e5b6620683e28c9324f9e9cb2c1e701b83fc1f2da123c019566795df275fb1b39d3 e9eb4fe73933786c13acefd1ee9c3ade7fea71f6b778bd8e4c8611ebf01a1e7ae82195927167ce9c31962d5b668c1e3d5afe00e9b965f0234819f7f0c30fa77c 6ecc7317293a93ba71e346959202230f223d9865e0c081ead129c3d3eb1f2edfa55bb76e9e1f3eeb82ed310d49bc9a3e7dba3c0e0f3ef8a04a092f046bc58a15 93d3416004437f7c87d2c7a871769980091326c8fb31d4b813984cdd1af4e1791064a2000141304610c43ca5482f55aa94b170e142f5c8e896d581892fcc37a9 cf0116cc9b174bb2f2baf9cf3fff18b7dd769bbc0f81ffa953a764fad0a1433dc71bcbc8912365ba53d68c3a024a3b987a00dfaff7de7b4fa5b81b46c8b41e93 488d24190c048008d431b587f5b56159b76e9ddaca1eae63d80e05a8c1c0e4f1fabab861c306959a16a6c6d0af65ebd6ad2ad51e023cdf40d6ba60ea18cc59a8 e1b57ff9e59772a4508cd89c3b776e39af20460d0dc7fc8b10eaf10946c88120459abba65088286bd06bb764e1fbc724c3780d28358e143d9cf6fcf9f3550a65 849eaae389279e5029e187a1cc71c1c70f87156aff3c9f5b074b912245e45c4756984604530158b743a92a0a10500a89da249d8ed710efd38e3cf7dc73f25820 508e04fca063ff980b34101416e9f3a297ca952b1b5f7ffdb50c0877efde2d2745d735bb4e4bf391a9d0fb43c191d35ac468979581891d14d2e8601f852f1816 3f9664d57513b733d28a22908913277a1e87efdd902143e4340998120a9380ebcf1896e4e464f5287743a0ac5fb35e505b1d28188a04cca787e019d7277fad55 9c4cb582df346cdbb76f5f95923e3c46d7f622380bf479b0cee117a8e61f850f987a07738a22a045a089dfe63e7dfa18575d75952cb0dfb16387da3af384727c 82c540d0b5e225104c799fd6790b3d5480687b5f26414d00ce014a8323e5b3cf3e93cdcaf085a78cc30f03ced9934f3ea952c20b3f8028f9b3fb9143b326fdfc d605b53f63c68cf1aad941b0b776ed5af5486f48d74d881104e2b3811f26cc1d8580f0b1c71e334a972eed28031beb74339e484dec8fcc03f69f5ead116a16f4 b975b2ac5fbf5e3dd2bfd5ab577bb67ffcf1c7556a7cc8ca021d7fb01d26e58ec56b75565d3733da8a2210d4e05bafb9fe9672e5caa947b89f35b0f15d2a56ac 289b49a2f00905cce180da5a4cec8f66f16fbef9a66c7d805ab6f48e2b6ac89c348bd44dfbe7cd739ecf6dddbab5e7793a76eca852edf9d62aa366d83770c46f 2b5a70e07e5c0fd06ac32d42393ec16220e856688aa93fbcb11c08ea7e83e67bf40ef79264f3d2047f4d8c3309fa16e01c84b369a8154af7516b808b2b85079a f0e19cdd7befbd2a25bcfaf5eb27f7efaf091e4a9a0b172e9cf2dd35174c727ee8d021791f9af16192594ce8bb62c50a99e6cffefdfb657081c06fce9c399e66 37e8b74aa9742d0d269b0e3734b9450931323de94d64fdd75f7fc96df5790fb4e03bef846e2e57b3664df93988275959a0138fb2eaba198e56148154a850c176 3fd6e585175e505bbb1f9a60dabd07bb05858937df7cb3ac7145f34534b3f65dd0c4f9befbee93f7e35ca0d01241110a1a75fe27d805e7c8690debe2c58b8d5c b97219c78f1f572981f9befff49a60e21a6edd1e0b9ad0a380af499326f27d5aefebd4a9937aa43b047b7c42c140d08dac83aae825c683c1c484049ff76cae23 38ccbaca404967ecd01c2f12747fa1458b16a914ca0834efd09fa15b6fbd55a5860f9a8761908f2baeb822602d028206d468d4ad5bd73872e4884a4db173e7ce 3403220482e66b081ef5fb42860dfde22845810205e4718944f36dd41861df687ae544a0fe25d665c68c19ea11fee926a9787f28158e37595da0e3049a65a399 61b4cbcaeb66465a51e0d8a3903650412d0adfacfbf55d72e6cc19d4f538abe1f36af73edcb2a076359826942fbef862bacdee0185e66809637d2e7c6e9cd4e6 fb0ee4e56fc1803281fa816705a7c7272318081205809a1b5c205082146ee8748c660837de78a34aa18c3a79f2a4e7a28e637bf6ec59754f783cfae8a372df91 ec336a75f8f061afda45bda04f067e20e2a5bf5820910a18b66fdfee2908faf4d34f556a6008f291e1b59e2bdfa579f3e66aebc09021c7f693264d5229f1c32d 053a8066a0e11ecdd26db2faba194a2b0ad4905b074e79ebadb7d43dde102c2283afb7f35ddc5603941e346bd42d05dcb6a08611bf59c1c0e8bb184d3d908307 0fca2e12becf87fe7b4ea0d6d3f7b1be0bbecbe11ae0259c9c1c9f8c6220481480ee2388e5e79f7f56a919871f2734f7c27ed1a19dc2438fb0a597e5cb97ab7b 32ce5a12bb79f366951a59494949b2c4dafa9ef4820c5bb03fbab148076b183c205cf039aa5dbbb6dc2f0606d1a3183a3175ea544f70eabb60c0012725ce73e7 ce95dba3a9563c724b814ea446b3741b375c37836d45619d46010b32f2fe46d09c366d9ad7b67a41134634e98e36070e1c30ca972f6ffb9eb26241614d284114 f24165cb960dd89f114d2331b2afef73a2ab84d326c20824034dbf84c5695099999c1c9f7060204814004a26f585c2c910e34ee98c086a1ae3adef4fa461be1d 7dce30a26438a006e1ca2baf94fb444625332173a3df8f5ef0a38661abc9f0aa8143e01c0ea85dd0fb7cf5d55755aa7318c407fd6e50cb81a010df73d4e03a1d 6404fd7ad0243498be50b1c40d81096a0a23359aa51b45d37573e6cc999ed7eabb6024503bc8e85bb7c37733d05c9f6e870225345db7369dcdcc05fd07d12477 e9d2a5ea1585c65fab1614c260a028bbf78734341b0e46cf9e3dd3ec472f9887d74913d3ac9019ad7e1808120580cc9cbe5860a4ac707c293104bcde276a0f28 bc30729a3ebe050b16943f281981c7eb11c5b02c59b244dd937930108a7efe507e046359c992253dc766c080012a357498e3139df3b13f0463e1981038186886 8ae78ec726a156591d984472344b378aa6eb2602387f2d25023511c7a05b680a8af3148d358176d01f0fcd93add7c1482ce89f9990902047505fb06081acb58f 1404fa98b2c1f735e0bb8b7e82684a1c2cbcde5b6eb925cd3ed1322bd2356e6ec7409028006b061c0b26390e15aaf931d4b1ded7fffef73f750f85936f7f808c cc2f87a69718b440ef2bd29db60379f7dd776553268e1aeacdda5f068302646460952d5bb6c84cb0de5f3802cb60a0e9216a0f9df6238c65591d98447a344bb7 89b6eba61e68cdba6084d078ced463844cd458a3f613532c20c8419379d47ea2060fad135090880581349a57e29a89cf2e0679c1f7030363a1af1f824bb482c2 b411983225b36accc68d1b27cf259a84238fd4a54b17e3fdf7df97535864143e971825387ffefc32d0c4541bc897c53b06824401e8be3a7a414d01e6e80916fa 38a0b997753fa1946a51faf0e3653d67581044050b3f7ea805d6fb405f349e33f741f321ebb96ed6ac59487dcad0c4091904bd1f0c2b1ec9526f3b083c511386 9aab7897d581494646b38c46d178dd1c356a94a7ef1702190cc046d10dd75c5eff32170341a2007051c28fbcfe51c382206ef4e8d18e9a89a2d33b469cb30eff 8f65f0e0c16a0b0ab76ddbb6791d6b2cc8b461b87827837e60be9ee79f7fded33c502fddbb77575b909bd8f5d9c2fc504efbe3e13b8ecf86ef002f2809cf4ce8 af86cfdc942953544a7c73436082ed821dcd325a45eb75138394a0cf3d8307a2d03010244a47cb962dbd7ed8f4826628183d6eddba753273805a08643e31912a e67943476ebba1e46bd5aae5da8ec9b1025372f81e772ce84781411d56ad5a254712c33943208011eb30f80a4611d4f3d2591764249d061694b950db63374a27 269a4790e8efbce1fc63586edf0985b1a06f7066c280516896e5e4796365eebaf4b8253009e79ca06ec7eb2651fcc9863fe6179688fc58ba74a9b8e38e3bd45a c6942a554a98193951a850219542916066f0c5e38f3faed632e6e28b2f166bd6ac11952a555229e436cd9b3717668654ad79bbe8a28bc40d37dc208a152b2672 e7ce2dcc0041ecdab54bfcf4d34fe2fcf9f36aab5465cb96151b376e14f9f2e5532991f7e8a38f8ab56bd7ca6bc325975c22cc4cb6e8dfbfbfe8d6ad9bb8faea abd556420c1d3a54f4eedd5b3cf3cc3362d8b0612a3585993917fffefbafc89f3fbf4a49356edc3851b87061d1a2450b95121d2a56ac28b66cd9a2d652998189 78e49147e475d90c36c4a5975e2ace9d3b270e1c3820366fde2c162e5c28264f9e2cccc04d3d2205b6fdeebbefe4e780d28aa7ebe6b7df7e2b2a57ae2c72e5ca a55288e2940c078928208c9685af4b4616f43f422937451e6a4c4a9428617b1e8259d0ff04735091bba1699eddf90b76c1e0099b366d527bcd1c98981cd7068c fe0718d424d8b9eb300222fa2063f19d8e460f9b8fc117d04c329aa02f9ef53d67644113ffefbfff5eed99ecc4da7513b591e89ae15b6b8bef1c6a9731200a91 55bcb4b8b0622048e4c0860d1bd2f4f30b66413f93ccce60c63beb7c61a12cc82884d22789b2c63df7dc637b1e9d2ef87ecf9f3f5fed2d7360343c0468685e0e a1cc5d87a67a68a6aed3308f9a9ecf0e73205ab7c7c4cce19a6b3133b04027f3c5ca75339402158a0f2c20f0c64090c8218c5066fd0171ba94295326aa325fb1 04a330da9d93f496dcb973cb7e9e143dfefcf3cf9083060481f3e6cd537bca1cc3860d93fdaaac038d8432771da69bf04dbbfffefbe588c7c8d4f8de57a85021 795fb460814ee68bf6eb6628052abaf084621b0b08d262204814048c64e76f225bdf051910cc8193d1f9af28633042ab5d86d8df52b9726563ebd6adead1144d d0f4ba78f1e2b6e7d5df8279b6d6af5faff61079478f1e35dab46963942f5fded31c540b76ee3aeb7417be8b1e56df6eb9fdf6dbd533460716e864be68be6e86 52a08249e629b6b180c01e0341a2202d5bb6ccefe86a7ac15c53d88edc61e5ca9546b56ad56ccf955e30c21d2629e688aed10d13ca3b09a830d228463bc4e892 990553526094523cefdf7fffad5253053b771d6af650c367dd562f9877cf6ec4636c8f89a7a30d0b74325fb45e37832d50c184eabffdf69b7a34c52a1610d8e3 a8a144215abf7ebd30833d39022146f9c3687d152a5410f5ead51366664f6d456ef2c30f3fc85160939393e5088b181912a344d6ac595354a952456d45b10023 704e9c3851ac5ab54a9801963871e284e73b5abf7e7df1f0c30f7b8dc81969ab57af16663027faf4e923aebffe7a959a1646bdbcf3ce3be50898805117972c59 220a162c28264d9a243a75ea242ebcf0423167ce1c51ab562d39fae1edb7df2edf9f86f767068972244d8c14fad5575fc9748cae89dbb7dc728b5c8f36389718 3115d75e7f3032e8b3cf3e2b3a74e82072e4c8a1522923a2edbab977ef5e51bd7a75f1fbefbfab941475ead411ad5bb7165dbb764525884cc3e8a68b172f96db 536c6bd6ac99983d7bb65a4b5f912245e428c3458b165529b18981201111918b2070bdfffefb459e3c79c4f4e9d3bda68440c153ce9c39bd82d875ebd689a64d 9b8a83070fca2070d6ac59720a0c0490cf3fffbc78eaa9a7e4940ad3a64d1355ab56558f8a5e2cd0a1f4045ba042b18f0504f6180812111145b95f7ffd55cc9b 374fb46fdf5ed6fadd7befbde2d4a953e2c30f3f14eddab5535b11c58f600b5428f6b180202d0682444444310213d3a3a9e8e9d3a7e5fa05175c203efdf45371 cf3df7c87522a278c602026f0c0489888862c091234744f9f2e53da5dd5af6ecd945bf7efd44fffefde56d22222260204844441403d0670e81200689f1858162 76efde2d0a1428a052888828deb168908888280660c09437df7c53ada5422d20fabf30082422222b068244444431e289279e904d40b56cd9b28951a346c95145 898888acd83494888888888828ceb04690888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30 102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c034122222222 22a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04 898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c340908888888888 28ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c034122 22222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a 330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c340908888 88888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c 03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce301024222222 22228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c340 90888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c048988888888 88e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce301024 22222222228a330c04898888888888e20c034122cab093274f8ae79f7f5eecdfbf5fa5a4183a74a8c89e3dbb78eeb9e7540a11111111b94136c3a46e131105ed f8f1e3a269d3a662d9b265a256ad5ae2ebafbf16175e78a178fdf5d745cf9e3dd556428c1c395274ebd64dad111111115156caf19249dd26a218b462c50a3166 cc1851bf7e7d95123efffdf79f68d9b2a558b468915cdfbb77afd8bc79b3c8912387e8d2a58b4cd3e6cf9f2f72e6cc2983c56cd9b2a95422222222ca0a6c1a4a 14c34e9d3a253a74e820ff87ea8f3ffe903579fffefbaf4a49d5bf7f7fb160c102b596e2cb2fbf14ad5bb716768d0d5e78e1053168d020b54644444444598581 20510c1b3b76acd8b56b9768d1a2854a090e6af86ad6ac29468f1e2d121313d30477a8fd0b46a1428544fbf6edd51a111111116515068244310acd36870f1f2e 6f57ae5c59fe0fc6d1a347c59d77de2976eedc29d7274f9e2c1e7ffc7171fefc79b90ea3468d12458b16556ba96ad7ae2dfb045a9b80e6ce9d5b7cf1c517a278 f1e22a8588888888b20a0341a218b564c912b16fdf3e198ce5cf9f5fa5a608d4dc536bd7ae9dd8b163875a4bf1ce3bef88e6cd9b8b43870ec9f5abafbe5a360d 2d5cb8b05c874a952ac9800ffb9f3871a21c38e6924b2e917d046bd4a8a1b622222222a2acc45143896214a66c78e38d37e4c02de7ce9d53a929cd3defb8e30e 59d3d7b66d5bf1f1c71fdb0ede52be7c79f1d34f3fa9356f73e6cc118d1b37566b42ecd9b347dc7ffffd224f9e3c62faf4e95e81677272b27c0da54a95522944 44444494d5180812c5a8060d1a88850b17ca79fcd04c14d0dcb37af5ea5e357d18dd137d00b19dd577df7d279b78fad61a76eedc59d60c1211111151f462d350 a218f5ebafbfcaffd63e7d4e9a7b6a55ab56153366cc10175f7cb14a1172be40f40b24222222a2e8c6409028469d3d7b56dd129ed13e7ffef967f9df179a7aae 5bb74eada5c260314b972e15e5ca959341e4e79f7f2ee70224222222a2e8c6a6a144310ac11bfae701824204706cee4944444444c01a41a218a5fb05826e1eca e69e44444444040c048962943510b40e04c3e69e44444444c4a6a14431eaaaabae12fbf7ef97419eb5bf2011111111116b048962942ee3b9e8a28be47f222222 22228d8120518ccbec40f0cc9933ea1611111111b9150341a21897d98160c78e1dc5912347d41a11111111b9110341a218973b776e752b7cbef9e61b51ab562d 51bd7a75b16fdf3e952ac4e0c183c5e9d3a745810205540ab9d18a152bc4030f3c20aebcf24a912d5b36cf92376f5e39881006147aedb5d7c4891327d4238888 8828d670b018a21855ac5831f1db6fbf891a356a8855ab56a9d48cdbb06183b8fdf6dbc5f1e3c7e53a461e1d366c9878f7dd7745dfbe7de5fd55aa5491f791bb 60fe48d4d84e993245a504f6d1471f89871e7a48ad111111512c618d20518cd2811a460fb55abb76ad78f2c927459d3a75e4bc824d9a34115f7cf185ba37b0c3 870f8b7befbdd7b36f983871a22854a89078fef9e745dbb66d1904ba146a6a1b366ce8380884cb2fbf5cdd222222a258c31a41a21884af35a68dc044f23d7af4 1043870e95fdf61e79e4113173e64cb595b7afbefa4ad4af5f5fadd9bbfbeebbfd068dc58b17179b366d62f0e052ddba7513a3478f16458b1615b56bd796e72b 4f9e3c22478e1cb20928827b34f34541c15f7ffd251f939c9c2cca9429236f131111516c6120481483507377d96597c9db1f7ffcb1acf96bd6ac99ccd8fbd3b8 71633167ce1cb596d6c89123654d22942c5952dc78e38d62f6ecd972bd48912262e1c285a262c58a729ddc057d3a131212c48b2fbe286b6e73e5caa5ee49ebd4 a95332982f5fbebc58bf7ebd4a252222a258c3409028066ddcb851dc7cf3cdf23682bb471f7d541c387040aefb839a1f7f81220209d422616a88a64d9b8ac993 27cb5ac7b163c78a4b2eb9443609bdf4d24bd5d6e43618fc054d7631004c203ffcf08378eaa9a7e46032f3e7cf1777dd7597ba87888888620dfb0812c5a0ddbb 77cbffd9b367175dbb769541206e63a010d4f2a029e0debd7bc5830f3e28b783fffefb4fddf286ed5ab4682183400406d3a74f97a34b2200ecd9b3a778ecb1c7 1804ba1ccedf800103d49a37341f9e3b77ae68d0a0810c16972f5f2e5e7ae9250681444444318e35824431a857af5eb25fa086fe6008e06ebdf5569592e2e0c1 8372a017c02030d3a64d93b735f415c308a1dbb66d1337dd749358b66c990c0229faa1f930467a7de79d773c0507e833f8e69b6f8ac4c444b94e444444b18b35 824431c83a5dc4f5d75f2fa774f00d02c15a0ed4a95327752b056a11751078dd75d789050b1630088c0108febb77ef2eaebefa6a596080201003c6605ec1eddb b733082422228a130c0489620c6a7a10f841d9b265c5e2c58b45e1c285e5baaf499326c9ff984202fdc8b42d5bb6c8f9071104625098a54b977234d018f0e187 1fcacfc4881123e49c82175d74910cfc7efcf14739a81082432222228a0f6c1a4a1463de7efb6d39e0079af9ad5bb74edc70c30dea1e6fdf7efbadacf143ff3e 0c12a29b88622018d40ea21fe11d77dc219b9416285040de47d1e9e4c99372e27fddf417413da69378fcf1c73de79d888888e20b6b04896208ca75264c98206f 8f1a35ca6f10881abe7af5eac92681985710c1c09e3d7be4a022682288c0a14f9f3e726e410681ee879add0a152ac81a3e4cfb809a3f0d4d4111f02308c4003f 83060d92cd41fbf7efcf20908888288e3110248a210802b76edd2a1a356a24dab76faf525361e4cf7efdfac92010a345626a09040e03070e9481c4ac59b36453 d0952b57ca80018122b9db983163c4c30f3f2c9b779e3e7d5afcf4d34fa243870eb220e0d8b16372f44f4cffd1bc7973b90d027cf6f5743f36d621228a7e7ffc f1876c8183ee186ec4a6a1443102353f18d405b5793b76ec9023856a08faa64e9d2afaf6ed2b76edda25aebcf24a395ae4ead5ab65f0887e85782c261bc79412 986a82dc0f417fd5aa55c5d9b367554a2ad4fe61a457cc09888201d4ece2bc63ce474efcef7e98fbb375ebd65e7d778988287a60fa2d74b1d9b973a7fced455f fc6cd9b2a97bdd818120511442d33e34e52c59b2a45cd09faf6eddbab24fe02bafbc225e78e105b91db69932658a0cfa7ef9e5179956a2440971d96597894d9b 36895cb97289c68d1bcbf905318f9cdb2e501458b366cd64303f6cd830190c62ca10fce058a1afa8b5243277eedcb2c6174122b9139a64a32617e736212141a5 121151b4387af4a8a85ebdba2c98d7ba74e922468f1eedaac2760682445102171534f77befbdf73c411d60c00f0486f3e7cf977dc4d0cc3339395966f631eaa7 af72e5ca893a75eac89a066436f3e5cba7eea16882cf40e9d2a5c5fbefbfef6906bc7fff7e59b39b5e1314f40345c924b90f4a90ab55ab266be951cb8fc19c88 8828baa03bc6975f7ea9d652619476f4e34781bc1b30102472397c45c78e1d2b5e7cf14571e8d021951a9c52a54ac939e35ab56a250a162ca852299a0d1e3c58 0c1f3e5cfcfaebafb26657ab5fbfbe58b46891bc8dda3fd41a22309c376f9e6c220c684eba71e34679db897dfbf6c985b55391f5db6fbfc9817d7efef967d98f f7ebafbf56f71011915b6114f6ca952b7bfd1663fc05f4d9b783f119d01acb0dd81188c8c530a93b9a6c76edda35a42010f3c2a1061135849d3b77661018433e f9e413f94362fde1813ffffc53fec788b1980f124d8367cf9eed3592a8dd2040082ad197c1b7bf21fa21a2860acf85fea51419c83060ee4e048180417d8888c8 1d30fe02c65140cb1b2b74c9401350df6b367ea3d135c317f2626e090225d4081291fb981970c30ce450632f97fcf9f31b356bd634ead4a9635c7bedb546ce9c 393df7f92ed75f7fbdf1ce3bef18a74f9f567ba358b279f366799e274d9aa45252bcf1c61b32dd0cdc8cc3870fabd414c78e1df37c3edab76faf5253bcf4d24b 9efbcc1f29956a18494949c6e5975feeb9af5cb972c6afbffeaaeea570993b77ae71e9a5977a8e73c78e1dd53d444494d5fef9e71fe3b6db6e93d7e75ab56a19 a74e9d92e96610e8b96e63193972a44cd7162e5c685c7cf1c59efb9b366d6a9c3d7b56ddeb0e0c04895c68d3a64d46810205e485e3b2cb2e333efcf043e3cc99 33eade14274e9c305ab56a655c78e18546ae5cb964f0f7d4534f192b56ac505b50ac1a366c98fc6c242727ab14c3f8ecb3cf8c6cd9b219d75d779d71f0e04195 9aea830f3ef0fc187dfdf5d72ad530c68f1fef49d74bd7ae5d65e078cd35d7a4b9af64c992c6c68d1bd5a32923fefbef3fe3e5975f36b267cfee39bef5ead5f3 6432c87dba77ef6e2426261a3ffef8a34aa168356edc3863cb962d6a8dc8deb973e78c060d1a78fd0e366bd6ccf39b6b4dc73260c000e3fcf9f3ead186f1cd37 dfc842d476eddaa5c9c7b9010341229741e6de5a0bd3ab572f758f7fc8505274404672dbb66d6a2d348d1a35320a152aa4d60c63f9f2e5b240009f9bddbb77ab d4543366cc302ebae822f9796adbb6ad4a358c5f7ef9451622e8cf9a75295ab4a86d3a967cf9f2b9ae54d32d9c662e0f1c3860d4af5fdfebb8366edcd83879f2 a4da82dc66fffefdc615575c21cfd5f7df7faf52291aedddbb575e33d7ac59a35288ecf5eddbd7eb3aed644130182dd84790c8454e9d3a25eebdf75e395aa086 8162cc1f2bb5668ff3fe45070cecf2e9a79f8aebafbfde76343127ce9d3b274784459f04c0c8b0189d0c03c17cfef9e7723a110da3c962b2f9bbefbe5b7eb65a b66ce9d5571023c6fa1b351603cd60c0123b43860c113973e6546ba461409d279f7c52fcf3cf3f2ac5de92254be4c002d6c1609e7efa69316bd62c39f22fb913 be3b989ff3aaabae12952a5552a9148dde7efb6dd967fe7ffffb9f4a2137b8fffefb23d6177dfcf8f1b2cf7bb0366fdeac6e3953a85021cf48dee186e313762a 2024221778edb5d76c4b97d074ecf5d75f575b51b41a3870a06c228292e8bffffe5ba50667f5ead5f2333168d02059a357ac5831b98e3ea170e8d021c30c368d 264d9a78fa9116295244362fb683a6c4bab6502fa8f143f3e423478e1855aa54f1baaf478f1eea91e4ebb9e79e9335a9fea0b9104a8aad4d41d17f64e2c4896a 0b722bf4b72e5ebcb8eccbd9a64d1b954a91347cf87063f6ecd9616f4e877389d613f7de7baf4a2137983f7fbe9123470ee3afbffe5229e193911ae03d7bf6d8 b690a95dbbb6ec13686d1e9a3b776e63d5aa55ea91e1a58f4fb83110247291c2850b7b5d687c17f427a2e864cd48d6ad5b57a506af7ffffef2b3f0f1c71f1b65 ca9491b74b972e6d3cfef8e3c6cd37dfec0932f0838426a453a64c49372385c14a7487f6bc79f31a2b57ae54f718c6d1a347e57e701f021db2975ee612830da0 5f098ea35e30e813fb284587b163c77acedb2bafbca252295230d8951e40c97a3d0a8765cb96c9fd62902c728f1a356a180909096a2dbcd22ba44bcf0f3ffce0 953fab54a9922c74858f3efa480699975c7289fc6c454aa48e0fdb9311b9c85f7ffda56ed97bf3cd37d52d8a3698f81dc34e1f3b764cd4ac5953a506efb3cf3e 13d9b26513e60f9bd8b973a74c431350cc1358ac5831f1f2cb2fcb2687478e1c116680275ab76e2d2eb8e002b99d3f66a0275f1fe031d6d767fec0c9c7a32928 9a2d93bdb56bd7ca26dd98b6c317d2313587b539f0430f3d24366cd860bbbd3fe66fb6387efcb85aa3cc82638e793bf3e6cd2bd7ed26f9c7b9419336fca78c1b 3d7ab46c9e8ea96e30ef6938a1693de07a49eeb07dfb76b17af56a51b1624595123e67ce9c91cdba313d4fa8f0babef9e61bd925a36eddbac20cf83cd371e15a 8e26a766b028ead4a923d3c22d92c7878120918ba00f5720e965e8c99d7c33929868d6295cfc5f7bed35f943832010f3cd21b3f9c71f7f88ebaebb4e0613d83f 82c19933678a7efdfac9be7d08e09cc23eba74e9226fa3b0e1bffffe93b7f1bf55ab56b2ef1afa26366dda54ecd8b143de17af708cedf8cb5c625ec75ab56a89 f5ebd7cb75cc2b854cc9471f7de4f93c3881fd635e50f4e91c3468904aa5ccd0b3674fd9ff53fbfdf7dfd5ad54e8375ba64c1939cf1865cce1c387c51b6fbc21 8e1e3d2aca962d2b2ebef862754f78e849be0b142820ff53d69b3e7dbafc8ffe75e116a8902e18254a9490fb5ab46891c89f3fbf4a4d81cf69a952a5d45af845 f2f8301024ca42c8bc77efde5d66e891719f3f7fbeacedf1073537147d744652d71638cd80bcf5d65b3288e8ddbbb7b8f1c61bbd3a8a5f71c515b216f0a69b6e ca504669cf9e3da249932632d30508fa3a74e82083c0679e7946cc993347a6036aac51e2f9edb7dfaa94f882415ea64e9daad6bcd9652efffdf75f3971b0be0f 830421e86ed7ae9d5c772a393959ee0735caf80c61f27fca1c1880e99d77de91b7756d2ccea115ce0906a280499326c9ff14ba279e78425e8f30c055b972e554 6af8e809c1ed6a76296b2c5dba54fecf952b97fc1f4eb150031cc9e3c34090288b0c1d3a54d60c8d183142d6b2a0f9c2891327fc362d426d2002028a2ed68c24 020370d2bc6fc28409722449bbcf034a23172c5810961248341d3d70e0805a4b81cc6c4242821c59cf17b645139b6047528b052fbef8a2285cb8b05af3e69bb9 c47943e0ae83068cde8a001a853ec1ead1a387ac71c2f561e1c2859e1a5b8a2c148ab469d3469e4b6b2672f1e2c55e2339a370e0975f7e91b751034ca1c17146 8b86c993278bcb2fbf5ca615295244fe0fc437304f0f5a53403035f21459bab02c1262a1063892c78781205126c38f5dc78e1d45af5ebdc4e9d3a7556afa860d 1b16549342ca7ad68c64d1a24555aaf03413f4e7e4c993a26bd7ae6acd1bfa257cf5d557a24a952a2a2563105cd8c16bf4d7df01b594196d66136db66cd9229b e9facb3cfa662e519b8bda54f4ad44403d71e2c4906a6efffefb6f317bf66cd92f057da6aebdf65a51ba7469752f65149a8ca1b915faa4a1160ad7e44d9b3689 c4c444d954ffecd9b3723b6ba10bbecf0d1a3490df51d49e23c8d77c9b8c91374cade27bbc51888266efb8dee866cf281885f49ab8e3b1c116901e3a7448fe0f 7793530a9d6f616438b9a10618d33ba1458dbe9e042b92c78781205126ebdfbfbf78efbdf7e46d64ea5f7ae925f1fdf7dfcbc13d90e9c3171efdc1d00c0dedc2 a74c9922d7313f19b98fd38ca4757e389c7f7f0303e133805a3a3c0e8505cb972f17f7dc738fccb420f3895aa56ad5aaa9ad330e1930bbcceb80010364ade3ed b7dfae5252a01fd4b469d3e26eee4abc67f0d734c79ab944c77ef415c39c730806d1d42d54b81ea0061035b4f83c3cf0c003b2df2685c7debd7be577b85bb76e b2c600df530c4e821a79047c80820f04e0560868c68c1923fb7beaa005223198432c417708dfe38d7919517bae9bf0d5ae5d5b5e0701836b0582d60b68721d0c fcd602e7ec740ffd5d8b8448d600a34557202868c5f51fcf8dee1cf8dfb06143f9bb10cc7b8ee4f1c1ce892893989978cff0fe6606db303379ea9ed07df3cd37 72e87aca1a1b376e94e733d06266240d3380f04ac3940f9f7ffeb961668ae49c8266b06f0c1e3cd8335f9199b951cf107998f7c8cc94795e5bcf9e3dd53d8671 ead429392502d231ddc1fefdfbd53df105e710c700f300dac1fc4eb87fc78e1df2bb6d068461994f0ac71ff340ea738321ccf5b0e59471985f531f5bbb0543c2 272727cba97beceef75d860d1ba6f64c76d23bded75d779d9cd641af57a850413d322d33836f142c5830a87938cd8cb967df981f8edc419f137fd7d78cc0b43e d837a68008a7df7fffddb8f3ce3bd55a5a67cf9e95f7ebf7e6bb942d5bd678f2c927e57434985f78e9d2a5ea9169e9c744e2f8b046902813f5e9d34736114089 27068641099113682a880147507a6d857e8618ce18fba5ac81268381a056e8830f3e4853eb86a1e651d387be301809124d2d711ef58884184428b3a0cf1ffa3c a1f60f7dd1304aa986a659a80dc3e715b591f13ae47a525292ba9516be9fbadf1efa2ba1633ffa856664b8720dad014a962c296fa30501a6a0d0c39653c66140 127f307017ce236ac131a0527ad074f7c1071f546b6427d0f1c66068b80ee9fe9680da750cd5ef0bad2f9a376f2e47180de67ba6fb694330232b53f48a540df0 bbefbe1b703023e4cfd08dc31f0c02866e03e87b8ecf31067ecb122a2024a2085bb972a52cd1c124b928c9740a1351df76db6df2b1e60f9eac2100f322e32925 c23272e448994e99cbcc287a9d07eb6266248d4f3ef9446e87c9deedb6b15b6ebdf5d6742781a7cc75c10517c873635722fbd75f7f79ce5dd5aa55e5b9ce88f3 e7cf1b4b962c31cc8cae67bf8d1b3736cc0cb2da82c265c58a159e636c5d70be3ffef863b5550a7d1df6b7bcf0c20b6a4bf2471f6f5c1b518b5ea24409a37dfb f65eb5218f3df698d771456b0533d32d7f378f1d3b664c993245b6a8c07da84909c6be7dfb3cfb350304954a594d9f9370d77845b206b854a952b2a5801db49c 31034ff9bc9d3b77962db7366cd8608c1a35cab8f1c61b3daf492f23468c508fb4a7b78b448d200341a220cc9d3bd778eeb9e7d45a70f48f5b305fe473e7ce19 77dd7597e72280a569d3a6c6e4c993bdd2f4822606c84452e6719a91ecd1a387ed76be4bbe7cf98c5dbb76a947915be8f363f7fdb5662eb1bcf1c61b32fdc71f 7f343a76ec68142b56ccc89d3bb751bd7a75d9342e90e1c3871b254b9694fbb9e28a2b8cc4c44463fdfaf5ea5e0a370403d67387a552a54ab2e0ce1702711d80 f82eb84ea3291805a68f379ac0fbfbadeadfbf7f9ae3eb6fe9ddbbb77a9433bb77eff63c1685acf10acdd61144fb162ecd9933470638dbb76f572999439f9370 073ad642ba600ae0d3f3f3cf3fcb7df6ebd74fa578d3f93d7f01dec2850be56f43f1e2c58df2e5cba75bf0abdf430c078249c688849437e9b524ce33ef1a6124 f8a6cb25d130ef4d79f48884d4f48411e6de4cf312531ea7d72d92cc13a31f8bed52f799608cf0dd98d217e058c7120465b87086f245441f3e64eaf039dbb973 a74a4d1f7ee4523f9fce96810307aa475366709a91fcfefbef6529b8efb6d605fd47a74f9fae1e416ea2cf91ddf7df9ab9c4b268d122e3f5d75f4fd32f542f9d 3a75528f4cebabafbe32c68f1f2ffbb3b0502773a0660afd88505a8f52fb40d03f13853ae8df8312ff3265cac8cf04fb693b87e31da8260fc188ddf7c677c1f5 12fd378381df5ffd78d416c523145ee6c993471e83ba75ebcabc0d4c9830c1d3d719b556a87dcd2cfa9c843bd089540df0983163e43e5bb468a15252fdf9e79f f2dad0a1430795624f9f8765cb96a914ff22757cc0453582dec1600282408f2433d648bd4f0688be10305ad293fc052732f04b0d222135906420180abfc73ac6 7cf4d14746ce9c398d5f7ffd55a538a79b0f22180c267387da3fcfe7dec18241257efbed37f568ca2c4e33926ddbb6b53d6f5890a9c1e784dc499f27bb1f626b e6124ba00102f43263c60cf5684acfa64d9b8ce79f7f5ead851f06f6a952a58a5aa3ac3edefffefbafac41b7fbde5897366ddaa8473887d616faf1274f9e54a9 f1232929490eb0633d8e8f3ffeb86cbde25b5089ae2899150ceae7cc48a083da4ddf731aa91ae0d6ad5bcb7d623029df4220b4cc425e2f50e089c28ebc79f306 2c14b40ac7f1f1c74583c594154f4d1c21cc80425a337ea698af6ee3be86e3e68944b526c60f146f25abdb4af2dca9425448edb459b6e138b11a81eeeaa7cc47 a7489edf59d468345ead51b8d81deb58347cf870d1b8716371e59557aa14e7f43c3698143e186660e135ff9c86f9963074390633d0306cfd175f7c61bb7dbcc3 f41c911c5007830e600874cc2b16a8c3f7f8f1e3e53400bef0999a376f9ee8dcb9b34aa16862fd1e42a00102343d5f1aa50f83299c3f7f5ead851ff61d89a1e5 a35530c71b43f3632a08eb202ce949ef78e3b7cc0c4ed49abd3c79f288575f7d55ad3917ef534660fa190c4c6285bc04e6c2346302959202f3a6de7aebad119d cc3c9c903fdbb061835a4b61fd1ce7c89143ddca387d4c308d0c0694d2ce9d3b27c68d1b27078ab19b9609838a0d1e3c58346bd64c4e9f82f9a1b35c4a3ce81e d69abf049fea39fff7cd3312adb57c5ecd3d53d2bd9a8ffabd2fc11831cfdc97aa994c487450c39534c27b7bacfb562b26cd334624a43e3f6a2ed3ecd7b21fbc 8ec4794929356dba9633cd7bf2694eeb5b4b1ae839bdf685f7ecf31ed4661ed857a2f5f8a5bc3ec9e65807b7ff24639e79fc658da2cde2fb19c82a6bd7ae95af 67d6ac592a2538eddab5f3bc27747a0f069a8861c878fd78343bd4c3c7a396d20c4264bf323433207ba859edd5ab975a0b0c43429b019d71fcf87195923e3403 c1f4024e983f04f2bca10f019a98613019362b0b8f2fbffcd2f1801de8ab873e7b4e07e5d1df3f0cd2e40bb5f0fafe6096ccaabdc73425d1da1f6af3e6cdf258 6dd9b245a5841f6af431454aa8d027f4bbefbe536bd12d98e38dc137d03416dba3b58399e956f704e6e4789bc18aa7afacdd3269d224b56570b05fbd0fd43cc6 9b6ad5aa791d47270b9aab6714a6cad24d50ede8e70ab5c66befdebdf2f1be537245aa061835817abf1800504f4d3175ea549947b3fb2e60fa307dfcd10268f9 f2e5ea9ef4e9e78af1a6a18a3588f06a6a88c0c71a30f8047e3e81506ad098ba9d5d1a588344197858fa25fac657de5430a6831b33604ad4fbd0f4be12d4737a d62def4dbf6795860050bf1eebfb4af3fa2dafd3ebfd3b78ce40ef396d908d74735f48f6bcb6d466b476c7d5e9fe3d8fd5afcd66ff6e804ebdc8ec87daa7e08e 3bee50ef2b65b4b47beeb9476644719172f2e389260fc8b4a23dbf6f7303344be37c48feb9256343918573854ef783060d5229fe4d9b36cd339fe733cf3ca352 03d3df5fbbe6bbd6cca5ef82829a8a152bcaf9d17c9b5e2d58b040ed2172f0f9bfe1861b1c7f96dd0683e5e0f5470a8e0bce45b0838e68188002039fc44a50e1 f478e37708f38a5a3fcf5dba7491055d810473bc31d81206d3b03e077e87832d4cb54230a0f715ce3e63d1e2a79f7e32f2e7cfef754cb1e0fa84b96b7dd3bb77 efae1e9931e84b877ed3fee8e77bf5d557554a70d0af1a05e6beac8574e10a04d10750ef532fe81a82d16cebd4a963cc9c39536d69c802e52fbef8c268d8b0a1 d7f6982b3318fa71a11e9f40dc17089ae1406a4d972518300304d442a5061da9411ad27c0336bbe0c42e0dbc6a04f17c7e83221f9eed2caf136936c15bea7ef4 fbd38f497dbfa9dbe8e0cb5c420804d37f4e3cd4d97bf63ca7de3f825d9f7dd91d5747fbb77d4efbf79e95505b830b27bec8a1421097723cd22e2859aa5dbbb6 1c5e98c2cf4d191ba7504be52f938240043f2ce40d4115ce0346730b048111fa2859cfb39349c0f5b618b1d7973573a9178c1a8bd10fade711fd735098a3b749 6f04d160d895b663e43f04294f3ffdb44a892e7ffffdb71c4c2192af1f7da0702e420d2ed0970ed31fc482608e77b366cd3c9f63ebd2a44913e3e0c1836aabb4 823dde478f1e9523e93ef2c823f2fb148e295474810c061289566855e26fea82f4a0260aad88f43943011ac63ec0f1b006de98be261c23e16edbb64d1ef3f7df 7f5fa5a4a59ff3edb7df5629c169d4a8916d1e2d1235c07ac450bb05eff3eebbef96d3fd602a211404fa6ed3aa55aba00be6f463433d3e81b87042f9b2a2f17d 667820ad114fbf9ed25370fe4c215a342c2b1ab6f0f41414e367e2bef962e6d611a247c394b4705bb3ddff24c2a26c6391f252cdd7592e9ba8d179be482efb94 583d4ebf18f3b5a92e896b9e2e27fb9164cb564e3cbd46a688a97393d1b9514c95eb42dc704d387ad83978ce74a4bee7d47d25e8fe97651b8a71ab5180b05a3c 15e2cb0d784c5d68e1c28572f25a4c761b2a4c1aee0fda98af58b142f6b3a0f0c2b1fde4934f44bd7af5548a7feddab5133b76ec506b29d0f61f93161f3a7448 a5a485e780b265c3d343d6cc44c97e84f5ebd717e68fb04a4dd1b76f5f6106a7c2cc78a679adf1eebdf7de13952a550a38c12fe03c9f387142ada578eeb9e7c4 33cf3ca3d602bbfaeaabd5ad5476fd8ecc4c8f78e9a597bcfa89e0338289f9f504d8660029ff87c20c30859911947d52d1df2a67ce9cb2df149ea34d9b36f27a 55a54a15f1fbefbf8bfbeebb4f3d2aba60f27cf43dbbedb6db544af81d387040fe0fe5fb8bef27fafdb668d142a544b7608eb7991956b7bccd993347ac5bb74e ada515ecf1bef4d24b851998caef37be4f254a9450f7a475e6cc19d9d70d4b20baaf58a0ebbadb7dfef9e77242f250d4ae5d5b98c1a0b8f6da6b45cb962dc5da b56b653f753308144b972e95d7d1871e7a484c9b364d5e5732c28c33c4638f3d26ffd7ac5953a5fa876b58b0fefefb6fb168d122dbfef7b973e756b7847c6fe1 70fcf871752b2dbccf19336688b973e78aefbefb4e9c3e7d5add93e2965b6e1113274e9479f35084727cd2e3c240d0bc4034becf33688c19ed89f9c9664052a1 8790e155c3165e83c674ee3c506cbdaf71160d5252563cb53a498c502f76cdf846a25cb61aa903d924ff2cb6aa9b22719efc805897d588a492b69be159183979 4ea72cfb8a48f06606cdfdd4c95c3375aec0614b3623fe94d833418c8854741f240ce201761719a774c62f90eddbb7ab5b142e6eccd804824efc180868c3860d 72e9d8b1a3fcdec29021436427733876ec98b8f3ce3b43ce08c41afc30e33c3909f8fd09748eadfc059ad61f760cb0f0e0830faa356f18306ae0c081f2762803 57fcfaebafb270aa4c993232638ccc063ee3800077e7ce9d62ca942932e0442604afe57ffffb9fbc3fda20230ab56ad592ff23e1cf3fff94ff43f9fe62502004 13c858c782608e370ad8ec32a518f00a8376f89391e31d088272043593264d92cbdb6fbfadee494b5f539d0c828220c36d10f02e5ebc580e3612aaca952bcbf7 8fa005c1b686f382c1d53efae8a3a007b7b383c15050d08deb557a8574902f5f3e75cb39bc071c13bb4013d7587d6ddeb3678ffc9f518102c1405088386bd62c afe03458a11c9ff4b83210b4060866b42706b69b292a34d6178d86a2878ebccc106abc1935dce7b92f2b20183444d2bc4415bca276b073ca88a765af1137c834 d3d69f65a01371e17cce4c78fd0dc725897923cc63b7e6693388ce26ca351a2f121247887949a1d738861b2eb82841ac50a1824a091e4ad7d2bba82213a77fa0 283ca2296383d1c6eebefb6eaf0201fc18b76ddb561646f88e7aba77ef5e5938a10b2ae2d982050b64ed9a93f3fce1871fca5109ad50a3f6c1071fa8b5b4706e 0019a62baeb842de0ea47af5eaea96bd6ad5aac9ff76a3ca05327dfa74d1b46953d1a449135923e8046a91a3118e39aebd38de050b1654a9e187119d0b172e2c 8a152ba6529c5bb26489fc2c21438eebf76fbffda6ee893ec11eefaa55abca0cb8f5bb84cf2646ba0e2423c73b105ca7add742d4228e1c3952ad79cb9e3d25eb fbc30f3fc8ff813cfbecb3ea967b6cdcb8510623683de26693274f16bd7bf796b7f1dbe644c99225d52de7de7df75d99bf42a1971d5dab89dfcc60e03705ad2e d0c262ead4a99efcd9e8d1a3831e81149f7714e015295244a5842694e3931e770682266b13d03537b4f00a0abc6a0c13fb655dc090fc9679f14969ba9a328582 ae1ddc2a7e9651533951c113b34e15b6ad32cb55f0bc97ad290fca2007cfe95838f7e547f25c31736a0531d1fc82e14b8665f5b8a74443970481f8d14a4a4a12 d75c734d86869dc64560c080016acd1e2e10a13617a0b4a22d6383a63e68aee30bb53b781d7685047ffdf5973b869fce62a80d042735ef152b56149f7efaa9c8 952b975c47a6104d75d04cca1fd4d4023e234ea0743a10dd2434984010cdb750a084604307a6e941a93f82c668b47efd7a99d975528b90112b57ae74d464cd0e 6a5410006edbb64d3cfae8a37e6b81a34128c71bad12d0dc0e8f41936b5cc3d26b4a9891e3ed0f6a597c0b7270bd7cf2c927e5ebf2a50bfc303d4220286cf9e5 975fd49a7ba0b508e0d8fb761f708b112346c8637f5e4ddfd0a14307f93f3da8390c0682799c473491f757d3a683b6ad5b3dede5d285ef75c3860d65ab0bfc06 b76edd5a4e1175dd75d789cf3efb4c4e5d82ebb113c83fae5ab54a3e36a3823d3e4eb83610140d7b789a5c26b6f06922e8e99b67735f00e53c510d02b5f9e22d dfc9088355f61a21c6374ae91ba892ae41155ac27d22a592b2ac78ca53b5b9463cddee2db55db298ffd65baad6d0be79a4ddc7d5fbf523869a6ad3acd4c1733a 669ddb31655ff3e5ceb0afce42c5c019902cde6af7b418af6a0353fa33aac5ccd075cee8f909030412108e662cbd7af51263c78ef5db5fb074e9d2ea168543b4 656cd07cb550a1426acd1be6d442b3275fd81e7d67e21d6a66702c02f5c5b5c21c4e3367ce94c13bfaf2a5575afdedb7dfcaff819a585a3f273aa3e6cf9a3529 576ea7a5c3f81ca366f8d4a9539eda8cf4e0f5a0a43c5a0b97bef9e61bf93f1225e056b367cf0eb9e9a90ef86fb8e1069959d4ad03a251a8c71b7d9ed0ac1e35 ed4e9a128672bcf1fd0b54b8822677feaed3c8d0fbd2b5faa8590be495575e8948c63ba3366dda24ffa3ff6ffffefde56db740f34bfc5675efdedd536085feee e5cb9797b703b9ecb2cb826eee8a1a3b68d0a081fc6fe7924b2e91ff9dd40003e6fabbe79e7bd214cca2593efae6a3c507fa9463bec056ad5aa97beda13611bf 07e1b88e85727c1c315c2c09234f7a4d21914adee733faa78775fa052c9e7d5846e8d4533ea4d936d1329f5fcae27ff0ca7946a2796792659e3c396583cf0bc6 fd09967d2698afc77b1bf375e979faccc78f50d350c875af27b76c27128cc411965143cdc5ba69c0e70cf63d2759e738c4be2cefd1ee583bde7feaf9f0b778bd 8e2c801127f13a1e7ae821959271e60f9ab16cd93263f4e8d17274363daf0ce694a3f0c1487338ae0f3cf0804a890c3313628c30bf8be18091637d47b4347f44 e567c6ccd01866a0ea49c7dc451c69d690a3dde17898419a4a093fcc2b89e73033b12a252debbc525802cd2b87f398376fde7447a4d5f4f3632951a284e7b619 e4796e5b17a4071aa12f1a3cfcf0c3f2bde01a1c2966402e9fc30c08544a7030f588f5b863ca996895d5c71bd737fc06fa4e85f4da6bafc9cff3b3cf3eab52ec 4d9830c1eb5c60a950a1821ca5d417466dd4db60ff76301d019ef7bdf7de5329ee811132adef33122349060ba3b9e21c617a0feb6bc3b26edd3ab5953d3df2f6 5d77dda5529c59b972a5e71a68065b2a352d4c8da15fcbd6ad5b55aa3d337895535de8ed7d178cc28c390b35bc76cc5f8b9142cb942963e4ce9d5bfe3663d4d0 70ccbf08a11e1fa75c1d08c62ff74da11031d6a0d76ec9e2f75fab562df93a90118b143d9cf6fcf9f3550a8543346424edac5dbb56ce4984fd22084406093f78 182a1c012126a22f5dba74589f339a4d9f3e5d1eab071f7c50a5841782b562c58ac9e9203094bd3fbe538f60e8700cc7ef4b675831df94139b366df20af81a34 6820e72545a0890c0202610c25dfae5d3bf91a4a952a652c5cb8503d3a7ae929779e78e20995127e989200993664fe42813904f5792f54a8901c263f5a65e5f1 fee79f7f8cdb6ebb4d3e7f8d1a358c53a74ec9f4a14387ca34bd8c1c3952a6fb336ad428cffca0e5ca95f3cab05b4d9c38d1b34f6c3f64c810397502a68ac2c4 e0fab7034b7272b27a947be018e9d7a7977af5ea050c862201f3e9215046d0a38fbbefe2646a15fcc661dbbe7dfbaa94f4e131d75c738d7c1c82335c0bfdb1ce e187399cfdc1e7eefefbef97f30223a0c5ef2ee621ecd3a78f71d55557c942fb1d3b76a8ad334f28c727180c045d295e02c194f7699db7d0c36e72fe2c800c20 ce83d349a743f1d9679fc9da047cd9297cdc9e91446d1e321e76f6efdf2f4ba411f8cd9933c753ca1ace79e762c573cf3d278f4db76edd544a78a15417fb47f0 15085a0d603beb52b97265e3ebafbf9601e1eeddbb8d5ebd7a79324c987fce0964b2f4fef078141c39ad498c66c8dce13d3ff9e4932a25bc908945e97d46e700 c4771f937447fbf53bab8e378e1f6a3af4671c4bd3a64de57c9dd634bdbcf2ca2b0133fdf8be3efae8a33248f707053ad6c2157f0b824937f29d9cdcba54ac58 514e568eeb8e5d6d682810a863727fb48878f3cd3765a1136ad9d23b86a821b32b0cf3a55b75cc9be73cbfdbba756bcff374ecd851a5daf32d50402db0ef6708 411f0aef703f7ed35160e716a11c9f603010742334c5d41fda580e04f584f2e67bf40ef79264f3d2047f4d7f33519e3c79e4790867d3502b64e89059c48595c2 cb0d1949640e33d2dc09358ed60969512b851a304a851a321c9b704ee86f851264ec3fbde6bf08dcf57972b2ac5fbf5e3dd2bfd5ab577bb67ffcf1c7556a7cc0 671deffbde7bef5529e1d5af5f3fb9ff8cd49e062acc89365975bcf1bd457a30cbc08103d5a3438766a376fbb62e2fbcf082dada5df0bb61f77aed16b42eb9f9 e69b65b08de68be82ae1bba049f37df7dd27ef47108ed60a088ad0f244e781825d8a1429e2b83675f1e2c546ae5cb98ce3c78fab94c07cdf7f7a4d3077eddae5 b53d16b49cc0b5bd499326f27d5aefebd4a9937aa43b047b7c82c540d06d7470645d623c184c4c48f079cfe63a82c3acad0c94d04400af097d7a224137135bb4 68914aa170c9ea8c64469b3b1d3e7cd8285cb8b0d7b65850a3f4e28b2fc645ad9013ba695efffefd554af82003816b008276f48109e4afbffef25c2fd25b50f8 e384fefcd4ac5953d60ea707db1c397244ad797be79d778c2fbef842adb91bbe2bfa58dd7aebad2a357c505b843e9a575c7145bab5f9192dcc89065979bc1178 e8e776b220c04073bd8c42736abbfdeb2567ce9c69ceb95be037c7ee35bb65414d6a304d28f17b965e8b0bc06f1eba46589f0b05be4e5ae4f8f6e1f6b7142f5e 3c601780ace0f4f8848a81205100f9f2e5931707941e851bfa2fa009c28d37dea852285cb23a23198ee64e494949323362b73d3e370814c9300a1428208f4924 faf1a2e92ff68dfe374e041a64c0bacc9831433dc23fdd2415ef0f4d83d283401425ff587c8346f471c1bef0b9413346b73b79f2a4e758e1359f3d7b56dd131e 683a887da7f7990957df35b7cbcae38d604bb7deb02ea8951a33668c57f3430ca4853ed4e1809a5c64faadcf695ddc562b6485df0afdb974db821ac6607f9bae bffe7a63ecd8b16acddec18307659f79dfe7c3b5cd09d47afa3ed677c1672d5c03bc849393e393110c048902d07d04b1fcfcf3cf2a35e3f02384527eec171dd7 29bcb23a2319aee64e180dce773bd4086294324a11a99adfeddbb77b6af83efdf453951ad8ce9d3b650181f57cf92ecd9b37575b0786020c6c3f69d22495e2df a14387bc9aba61b00b5db0f0eaabaf7ad2b160945b1432b8195ebbf5352f5fbe5cdd9371d6da94cd9b37abd4b4c25198132db2fa786380166beb874a952ac9cf 34a0e60ecde35128bb62c50a99162ed3a64df33ca77541ad230a56dcecc0810346f9f2e56d5f7f562cb85e851244212f54b66cd980fd19d13412d72ddfe744df 79a7b5c30824fd0d68a317a741656672727c328a81205100f841d21789704d11003a90404da393265f149cacced884b3b9139a3ceaed50628952724aa583358c 20172ef8fcd4ae5d5bee17a341ea9a2027a64e9dea094e7d178c3ae7a4d9d1dcb973e5f6f81ca507851ca83df17d2e8c7e87fd586b54f482f7e476975d7699e7 f56240a070404dfe95575e29f759b76e5d956a2fabfaae6595ac3ede687a8d01beb09d6ff36614b044aa99a6ae2dd70b02d24053bfb809ae2568b560f71dcf8c 05fd07317ec2d2a54bd52b0a8dbf6e0ea891c7606f76ef2f94dfc29e3d7ba6d98f5e6ebffd76474d4cb342a4bb813010240a001da8f58502a36485e30b89b903 f53e9169a4c8c8ca8c4db89b3bbdfbeebb3258e4a8a169596be0c255d3f5d65b6f79f6891ab560616a0f5c3b90a9445088021ff4f3703ab2249a77a249a893d2 ee2953a6785eabef12a804dced30faa17ead050b169499c28cc0e3f5a88058962c59a2eeb197557dd7b24a561fefac849199d1141481bcdb6b02eda03f1efaaa 962c59d273bc23b1e0b72a2121418ea2be60c102d9f2265266ce9c29a76cf07d0df8fd453f41d422070baff7965b6e49b34fb4ce8a648d9bdb3110240ac05a1b 83059394870a55fc18e658ef2b92136053d6676cb2aab953bcb1667e060c18a05243b76cd93239421bf68760ccc9f0e7e18466a8786e274d42018513a8e1d3c7 c0ba604a8d962d5ba6498f861a41df3e3d19991e047d96acb5a64e065ec8aabe6b5925ab8f37850706b842f365d474628a050439682d81df22d4e0a1600a9f5d 2ce8838ee695184805051918e405bf71e8138dbe7e082ed1120ad346a06f7166d5988d1b374e7e6ed0ad03f9a42e5dba18efbfffbe9cc222a3f0d9c448dff9f3 e7978126a6da40de2c9e3110240a4037d1d20b3288989f275868da82527eeb7e4229d122e7dc90b1c9aae64ef1c43a680232344e0656f167cb962db2d040ef2f 1c816530d00415b5874efb116a98c600c1887edd5830b0029a9da31612a31eeb7464aeb0bddb21036a7d3f5850331e2c6460d19a43ef034d899d5e7be3a930c7 0dc79b08507387022eca1c0c048902c005c9378385206ef4e8d18e9a8922f38fa1c7ad73c161193c78b0da822285199bf8803e24d673dcac59b3900607423f17 9412ebfd606ea948367db283c0134d9a43c904a1460a7386e1b5230844008849925f7ef9651910a23915de139aad46836ddbb679ce855e508b81695b9cf4d9c4 9c5b98b45fd7eeeaa57bf7ee6a0b67e2a530c72dc79b8832170341a274d835adc28251fa308cf8ba75eb642931329fc87c6112554cfa8d4edc762308d6aa55cb b59d9263093336f1c16e14474c12ecb43f1e823d7c267c07784173a8cc848187f059439fbf50eddfbf5f4e6c8fc00ffd9ed0ec0bef255afb96626a1deb39d10b 9a036394ce55ab56c9d10071edc57944d0861175319aaf9e56c4baa040c7e9e7221ef17813c51f068244e9405f30df1fb8501734fbfaf3cf3fd59e29d298b189 7d68b66b374a27269a4790e8ef7ce1bc636e26d492f93e1603bd6426046ee89b13aee75db3668d572b041c1f144e451bf4c5b39e978c2c68d9f1fdf7dfab3d93 1d1eef9466d6f1de678ce20b03412207305296dd8f5d300b9a9da1968a320f3336f101cd41edce1916d48aa17f2efadd614a05d416a236dfdf889a919eb3c90e 5a0f604eb0700c4c83c0d8daaf4d2f78bf18b934d24391871332e4254a9448f35e825df0de31671c05162fc71b8543e8b2e1dbacf7b5d75e93ad4630480ac5af 782b0c602048e4c0860d1bd2f4f30b6641c66cd3a64d6a6f945998918c0f18acc3eebc05bb2068ccecef29329f2824c210f0e1802934301aa0ddfbc340310814 a38975dece501664ec43e91b1caf62fd7863f4673dc0548d1a353cdd04d0cdc3fa3e468e1c29d32936b130201503412287468d1ae5f543e1742953a64cd8e637 a3e03123191feeb9e71edbf3e7744141cffcf9f3d5de320786444770867ec6e1f4f6db6fa7797f28cc40b3e7688441747cdf8f932577eedc51d92436abc5eaf1 46dffcbbeebacbeb3563be48bb7ec658d07de0fcf9f3ead1142b5818e08d812051103012a5bfd276df050104e6bfc9e8fc759471cc48c63ef4bd0db5f61741e0 bc79f3d49e32c7b061c3643fd460a71e70da6cc93a072aae4568261dcd30d232de87f5bc055a2a57ae6c6cddba553d9a82158bc7bb77efdeb6af3dd08249e629 76b030202d06824441c284d3fe0621d10be69cc376e41ecc48c63ef4c12d5ebcb8edf9f4b760b2e5f5ebd7ab3d44ded1a3478d366ddac83e81fe9a8386abd912 6ab2315174b48e1aea0bd36154ab56cdf63cea05033a4d98308123338741ac1d6f64f8edde83bf05df9ddf7efb4d3d9a62010b03d2ca863fe61b25a220999947 61067b62d7ae5de2e4c993227ffefca242850aa25ebd7aa274e9d26a2b729355ab5689679e79469e3b7fcc8c8d3033daa243870e22478e1c2a95a2859971135d ba7411b367cf5629f62eb8e00291989828cce04ae4c99347a546d69c3973c4534f3d251a366c285e7df55571c92597a87b521d3f7e5c981956796da951a38658 bc78b1b8f0c20bc5ebafbf2e7af6eca9b61262e4c891a25bb76e6a2dbefcf0c30f62e9d2a522393959fcfbefbf225fbe7ca26cd9b2a266cd9aa24a952a6a2b0a 975839de7bf7ee15d5ab5717bffffebb4a4951a74e1dd1ba756bd1b56b57548ec8b48b2fbe587ef7b03dc58e66cd9aa5fbdb6055a44811f1dd77df89a2458baa 94d8c3409088e20e3392b1ef9b6fbe1113274e94c1ff9e3d7bc48913273c8535f5ebd7170f3ffcb0b8faeaabd5d691b77af56a3166cc18d1a74f1f71fdf5d7ab 546ffffdf79f68dcb8b158b870a14a1132286cd3a68d68dbb6ad4a49f5ca2baf887efdfa896cd9b2a914220a64f3e6cde2ce3bef14070e1c90eb952a55124b96 2c11050b161493264d129d3a7592052f28b4a955ab96dc8662070b03d26220484444e402cf3fffbc183264885a7366e0c081a26fdfbe6a8d88d28382a1fbefbf 5fb604983e7dba2c20d2d0c22767ce9c995a4844998b8501de1808121111b9009b2d1111451e0b035231102422227201365b2222a2cc945dfd272222a22c8412 e8050b1688c2850bab9494664b3366cc108f3df698ecf388264be8d38aed180412115146b04690888888888828ceb04690888888888828ce3010242222222222 8a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c3409088 8888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e2 0c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ce30102422222222228a330c04898888888888e20c03412222222222a238c34090888888888828ae08f17f8d1e9cc88b02c4f90000000049454e44ae426082} }{\nonshppict{\pict\picscalex69\picscaley69\piccropl0\piccropr0\piccropt0\piccropb0\picw23768\pich8179\picwgoal13475\pichgoal4637\wmetafile8\bliptag1089223212\blipupi95{\*\blipuid 40ec3a2c435ee2a65112aef5ab8f73fa} 0100090000035e5b06000000355b060000000400000003010800050000000b0200000000050000000c0236018303030000001e00040000000701040004000000 07010400355b0600410b2000cc0035018203000000003501820300000000280000008203000035010000010018000000000028b60c0000000000000000000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd6d6d6101010000000000000313131efefefffffffa5a5a5080808080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffefefef1818180000000000000000000000004242429c9c9c080808000000000000080808cececeffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000000000000000000000000000000000000000181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffdededee7e7e7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000000000000000000000000000 00848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffffffffffffffdedede efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000313131f7f7f7ffffffa5a5a5 080808101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d69494946b6b6b6363636b6b6b94 9494cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece6b6b6b313131080808080808101010424242848484e7e7e7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffcecece5a5a5adededeffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252a5a5a5000000000000000000 000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000000000313131efefefff ffffa5a5a5080808080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e718181800000000000000000000000042 4242949494000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece9494946b6b6b636363737373a5a5a5e7e7e7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece3939390000000000000000 00000000000000000000000000292929a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef5252520000000000000000000000000000000000000000000000000000007373 73f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffbdbdbd212121737373f7f7f7fffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c 8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd6d6d6949494737373636363737373949494d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6949494737373636363737373949494d6d6d6ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef1818180000000000000000 000000004242429c9c9c080808000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000 00000000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c629292900000000000000000000000000 0000000000000000424242c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000 000000000000000000000000000000000000000000000000000000313131d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6212121000000000000000000000000000000000000000000000000 000000000000000000292929cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f75a5a5a292929dededefffffffffffffffffffffffffffffff7f7f77b7b7be7e7 e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c181818a5a5a5ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc6c6c63939390000000000000000000000000000000000000000002929299c9c9cffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c63939390000000000000000000000000000000000000000002929299c9c9cff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000 000000000000000000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b 000000000000000000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000000000000000 000000000000000000000000000000000000000000006b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c00 0000000000000000000000000000000000000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef21212100000000000000000000000000000000000000 0000000000000000000000000000000000000000080808bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c101010c6c6c6ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000000000000808089c 9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000313131dededeffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c0000000000000000000000000000000000000000000000000000 00000000000000313131dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff7b7b7b000000000000000000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000 000000000000000000000000000000000000000000000000000000000000000000292929dededeffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffbdbdbd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c9c9cffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000080808bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c101010cececeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000 00000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff8484840000000000000000000000000000000000000000000000000000000000000000000000000000000808 08b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000000000000000000000000000000000 000000000000000000000000000000000000080808b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff4a4a4a000000000000000000525252a5a5a5000000000000000000000000000000848484ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d608 0808000000000000000000000000000000000000000000000000000000000000000000000000000000000000181818d6d6d6ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff212121000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808ad adadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff8c8c8c101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede 080808000000000000000000000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff393939000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010d6d6d6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff9494940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a00 00000000000000000000000000000000000808083131315252525a5a5a525252292929000000000000000000000000000000000000292929f7f7f7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff636363292929f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f71818180000000000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc6c6c600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff313131000000000000000000000000000000212121848484cececeefefefffffffffffffe7e7e7b5b5b5 737373101010000000000000000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7080808000000000000000000000000292929adadadffffffffffffffffffffffffffffffffffffefefef9c9c9c212121000000000000000000000000 5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff3131315a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffcecece080808000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff5252520000000000000000000000000000002929298c8c8ccececeefefeffffffff7f7f7e7e7e7adadad6363630808 08000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000000000000000000000000000848484ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff7b7b7b080808000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffadadad0000000000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b08 0808000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000adadadffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffe7e7e79c9c9cffffffbdbdbd080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000 212121848484c6c6c6f7f7f7ffffffffffffe7e7e7b5b5b56b6b6b101010000000000000000000000000292929ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff292929000000000000000000000000000000212121848484c6c6c6f7f7f7ffffffffffffe7e7e7b5b5b56b6b6b1010100000000000000000000000002929 29ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0808080000000000000000000808089c9c9cffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f77b7b7b0808080000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000000000a5a5a5ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffdedede292929000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff737373000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc6c6c6101010000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c101010efefefffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffcecece1818180000004a4a4affffffcecece848484ffffff6b6b6b292929d6d6d6ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d600000000000000000000 00000808087b7b7bfffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7848484080808000000000000000000737373ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd6d6d60000000000000000000000000808087b7b7bfffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7848484080808 000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000000000000000000000bdbdbdffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffdedede393939000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000000000737373ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef424242000000000000424242ffffffffffffffffffffffffff ffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000080808efefefffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd6d6d6101010000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121525252ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0808080000000000000000004a4a4affffffffffff424242000000000000101010 cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000 000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede292929000000000000000000 d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818000000000000292929f7f7f7ffffffa5a5a5000000101010c6c6c6ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff9494940000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffdedede292929000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000000000949494ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000000000393939ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000181818f7 f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7393939000000000000c6c6c6ffff ffffffffffffffffffffffffffffffffffffffd6d6d6181818000000000000313131f7f7f7ffffffadadad080808101010c6c6c6ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000008c8c8cffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad 000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef18181800000000000000000000000000000073737352525200000000 0000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff5a5a5a0000000000000000006b6b6bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f742 42420000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffe7e7e71818180000000000000000000000004242429c9c9c0000000000 00000000101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f74242420000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7adadad7b7b7b5a5a5a39393929292918 18181010100000000808080000000808080808081010101818182929293131314a4a4a5a5a5a7b7b7b949494bdbdbddededeffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff a5a5a50000001010103939396b6b6ba5a5a5dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f7636363101010212121848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000292929ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000adadadffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000 00000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818 000000424242ffffffffffffffffffffffffffffffffffffe7e7e71818180000000000000000000000004242429c9c9c000000000000000000080808c6c6c6ff ffffffffffffffffffffffffffffffffffffffff9c9c9c181818a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000000000dededeffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000008c8c8cffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffcecece5a5a5a181818080808212121848484f7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffff313131101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffadadad0000000000000000000000000000000000000000 00000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff313131000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7f7313131000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000 000000000000000000000000000000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7313131000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b56b6b6b848484f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede7373732121210000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808393939 737373bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffb5b5b51818180000000000000000000000001818186b6b6bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff393939000000000000000000000000393939f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff31313100000000000094 9494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000002929 29ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffbdbdbd000000000000dededeffffffffffffffffffffffffffffff5252520000000000000000000000000000000000000000000000000000000000 00000000181818efefefffffffffffffffffffffffffffffff8484840000000000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000292929ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000181818ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad080808000000000000000000000000000000393939f7f7f7ffffffffffffffff ffffffffffffffffffffffffffffffffbdbdbd000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000000000 0000005a5a5abdbdbd000000000000000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff1010100000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffefefef181818000000424242ffffffffffffffffffffffffffffffffffffffffff7b7b7b00000000000000000000 00000000000000000000000000000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000000000007b7b7bffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818000000424242ffffffffffffffffffffffffffff ffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000000000181818d6d6d6ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7636363000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000101010636363c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff7b7b7b000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818 18000000000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff424242000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff6363630000006b6b6bffffffffffffffffffffffffffffff7b7b7b000000000000000000000000000000000000000000 0000000000000000000000000000008c8c8cffffffffffffffffffffffff949494000000000000000000000000000000b5b5b5ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000005a 5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000 00000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede101010000000000000000000000000000000000000000000525252 ffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffefefef29 29290000000000005a5a5affffffffffff8c8c8c000000000000000000212121dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffff4242 420000000000000000004a4a4aadadad000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000c6c6c6ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000d6d6d6ffffff ffffffffffffffffffffffffd6d6d6181818000000000000313131f7f7f7ffffffa5a5a5080808101010c6c6c6ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000000000000000000000000000181818f7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef29292900000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000393939bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff212121f7f7f7ffffffffffffffffffffffffffffffffffffbdbdbd212121000000000000000000000000080808efefefffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7f70000000000000000000000000000000000000000000000007b7b7bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff101010000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffe7e7e7101010292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffefefef080808181818ffffffffffffffffffffffffffffffffffff4a4a4a00000000000000000052 5252adadad0000000000000000000000000000008c8c8cffffffffffffffffffffffffdedede080808000000000000000000000000000000101010f7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff1010100000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff6b6b6b0000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffff52525200000000000000000000000000000000000000 0000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000101010efefefffffffffffffffffffffffffffffffffff ffffffffffffffefefef393939313131ffffffffffffffffffffffff848484000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000101010ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000737373ffffffffffffffffffffffffffffff ffffffffffffffffff424242000000393939ffffffffffff9494940000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000101010 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b00 0000737373ffffffffffffffffffffffffe7e7e72121210000000000000000000000004242429c9c9c000000000000000000101010cececeffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000000000000000000000 0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005a5a5af7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff3131319c9c9cffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a0000000000000000000000 007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000000000000000000000000000000000000000000000bdbdbd ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131319c9c9cffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000039000000000000000000bd6b00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff94deff39396b000039000000000000390000b56339ffdedeffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000bdbdbdfffffffffffffffffffffffffffffff7f7f74242 42000000393939ffffffffffff8c8c8c0000000000000000009c9c9cfffffffffffffffffffffffffffffff7f7f7181818000000000000000000000000000000 7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff292929000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffdedede080808000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffefefef0000000000000000000000000000 00000000000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000393939ffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000393939ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010101010ffffffffffffff ffffffffffffffffffffffffffffffffffffffff737373e7e7e7ffffffffffffffffff8c8c8c0000007b7b7bffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffefefef101010101010ffffffffffffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000181818 e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a500000000000000000000 0000000000000000000000080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff bdbdbd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212121dededeffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b424242ffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b 000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffff10101000000000000000000000000000000000000000000000 0000000000212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b424242ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff00006b000000bd6b00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000042bd6b00ffffe7ffffffffffffdeffff6bbde76b0039ffffbdffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff101010000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131636363ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000737373ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010636363ffffffffffffffffffffffff ffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c0000007b7b7bffffffffffffffffffffffffffffffffffffffffffcecece08080800000000 0000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff4a4a4a0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff525252000000949494ffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000 000000000000000000000000000000000000000000000000000000cececeffffffffffffffffffffffffffffffffffffffffffffffffcecece0000000000006b 6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000525252ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000 00bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff7b7b7b000000bdbdbdffffffffffffffffff7b7b7b00000000000000000000000000000000000000000000000000000000 00000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929290000 00000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000000000000000001010103939394a4a4a5a5a5a5a5a5a6363635a5a5a6363 635a5a5a6363635a5a5a5a5a5a525252424242313131292929080808000000000000000000000000000000000000000000000000000000000000000000000000 000000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff7b7b7b000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffe7e7e70000000000000000000000002121215a5a 5a4a4a4a2929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c608 0808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff000063000000b563 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff000063de9439ffffffffffffffffffffffffb5deff00006bde94 39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000737373ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad080808ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000737373ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363101010ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffe7e7e79c9c9cffff ffbdbdbd080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000424242ffffffffffffffffffffffffffffffffffffffffff63 6363000000000000000000000000313131bdbdbdf7f7f7e7e7e77373730000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffff ff4a4a4a000000000000737373f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000 00737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffefefef080808636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff181818000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffefefef080808636363ffffffffffffffffffffffff4a4a4a0000000000000000004a4a4aadadad0000 00000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffbdbdbd636363efefefffffffffffffffffffffffffffffffffffff f7f7f7000000000000000000000000000000000000000000000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000000000313131848484c6c6c6f7f7f7ffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7dededeb5b5b594949463636329292900000000000000000000 0000000000000000000000000000212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000b5b5b5ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff5a5a5a000000000000636363ffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000 8c8c8cffffffffffffffffffffffffcecece313131000000101010a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffe7e7e7000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff 00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbde7ff00006b000000000000000000000000 000000000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000737373ffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000bdbdbdffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000006b6b6bffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcece ce000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece 1818180000004a4a4affffffcecece848484ffffff6b6b6b292929d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad0000005a5a5affffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121080808f7f7f7ffffffffffffffffffffff ffffffffffffff292929000000000000000000313131ffffffffffffffffffffffffffffff9c9c9c000000424242ffffffffffffffffffffffffffffffffffff ffffffffffffffffffd6d6d60808080000000000004a4a4a4a4a4ad6d6d6ffffffe7e7e7adadad636363292929212121c6c6c6ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff3939390000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff6b6b6b101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef ef292929000000181818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff3939390000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b101010ffffffffffffffffffffffffffffff424242000000393939 ffffffffffff9494940000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000292929efefefffffffffffffff ffffffffffffffffadadad0000000000000000008c8c8ce7e7e7ffffffd6d6d6636363000000000000dededeffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000000000000000424242d6d6d6ffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f79c9c9c525252000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000848484ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000212121ffffffffffffffffffffffffffffffffffffffffff52525200 0000000000525252ffffffffffffffffffffffffffffffffffffffffff5a5a5a080808080808cececeefefef848484212121393939dededeffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff3994de943900ffffe7ffffffffffffffffffffffff3994de6b0000ffffb5ffffffffffffffffffffffff6bbdff0000000000000000 00943900ffffdedeffff003994000000946339ffffde63b5ff00000000000000000063390000396b000000000000000000ffbd6bffffffffffffffffffffffff ffffffbdffffb5636394bde7003963000000633900ffe7bdffffffffffffffffff94bde7003939000000000000943939ffdeb5ffffffffffffe7ffff39639400 0000633900bde794000063000000b56300ffffffffffffdeffff39639400000039000094946b000039000000000000ffbd6bffffffffffff94b5de0039390000 00000000943939ffdebdffffff6bbdff0000000000000000006b3900003963000000000000000000ffb563ffffffffffff94e7ff0039630000000000006b3939 ffdeb5ffffff63b5ff0000000000000000009439006bbde70000000000000000006b3900003963000000000000000000ffb563deffff00399400000000000000 0000000000000000000000000000ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000005a5a5affffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c69c9c9c7373733939390000007b 7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000 00636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff212121949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffcecece0808080000000000000000004a4a4affffffffffff424242000000000000101010cececeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000393939ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000b5b5b5ffffff ffffffffffffffffffffffffffffff101010000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffff424242101010ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff6b6b6b000000000000212121000000000000000000000000000000000000000000000000000000a5a5a5ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff6363630000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff7373730000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000cececeffffffffffffffffffffffffff ffff737373e7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000002929 29f7f7f7ffffffffffffffffffffffff5252520000000000008c8c8cffffffffffffffffffffffffffffff9c9c9c000000a5a5a5ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000949494ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7e7e7737373080808000000000000000000000000cececeffffffffffffffffffffffffffffffffffffffffffffffff00 00004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000d6d6d6ffffffffffffffffffffffffffff ffffffff292929000000000000dededeffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000181818 e7e7e7ffffffffffffffffffb5b5b55252522121210808080808084a4a4abdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffe7ffff003994000000ffbd6bffffffffffffffffffdeffff004294000000ffbd6bffffffffffffffffffffffffffffff 006bbd0000006b0000ffffbdffffff3994de000000390000bde794de9494ffffff3994de000000390000ffe79494deff000042000000bd6b00ffffffffffffff ffffffffffffffffffffffbdffff00006bbd6b39ffffe7deffff006bbd943900ffffe7ffffff6bbdff000000000000943900ffffe7deffff9494bdffffbdffff ff006bbd000000943900ffffe76bbdde000042000000bd6b00ffffffffffff3994de000000390000ffe7943994de000000000000bd6b00ffffffffffff6bbdff 000000000000944200ffffdee7ffff9494bdffffbdffffff4294e7000000420000ffde9494e7ff000039000000bd6b00ffffffffffff94e7ff00003900000094 3900ffe7bddeffff6b94bdffbd6bffffff006bbd0000006b0000ffffbdffffff4294e7000000420000ffde9494e7ff000039000000bd6b00ffffffdeffff0042 94000000000000000000000000000000424200de946bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000525252ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c1010100000000000000000 00000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffcecece000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece292929636363ffffffffffffffffffff ffffffffffffffffffffffffffffffffff6b6b6b5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffefefef181818000000000000000000000000000000737373525252000000000000000000000000181818e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121101010ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd212121a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd00 0000848484ffffffffffffffffffffffffffffffffffff000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffb5b5b5000000dede deffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000181818000000000000000000000000000000000000000000000000 000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff9494940000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121949494ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff4a4a4a000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000005a5a5affffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121949494ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000000000 000000000000000000525252ffffffffffffffffffffffff292929000000101010ffffffffffffffffffffffffffffffffffffffffff7373736b6b6bffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000007b7b7bffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e75252520000000000000000004a4a4affffffffffffffffffffffffffffffffff ffffffffffffff000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000848484ffffffffffff ffffffffffffffffffffffff181818000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a00000000000000000000 0000000000000000393939ffffffffffff5a5a5a0000000000000000000000000000000000000000005a5a5affffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff63b5ff000000000000bd6b00ffffffffffffffffff94deff000039000000b56300ffffffffffffff ffffffffffffffff0063b5000000630000ffffbdffffff006bbd0000006b0000ffffb5ffffffffffff3994de000000390000ffde9494deff000039000000b563 00ffffffffffffffffffffffffffffffffffff94e7ffb56363ffffffffffffe7ffff003994390000ffde94e7ffff003994000000390000ffe794ffffffffffff ffffffffffff94deff000039000000e79439ffffffbdffff000063000000b56300ffffffffffff006bbd0000006b0000ffffb594e7ff000039000000b56300ff ffffdeffff003994000000390000ffde94ffffffffffffffffffffffffffffff3994de000000390000ffde9494deff000039000000bd6b00ffffffe7ffff0039 94000000390000ffe794ffffffffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff3994de000000390000ffde9494deff000039000000bd6b00 ffffffffffff94deff94396bffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7 e7000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000 000000000000000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff080808181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0808080000000000004a4a 4affffffffffffffffffffffffffffffffffffffffffffffffadadad181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffadadad000000000000000000000000000000000000000000000000000000000000000000000000000000424242ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63636300 0000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5080808000000000000adadadffffffffffffffffffffffffffffffffff ffffffffefefef000000424242ffffffffffffffffffffffffffffffffffff0000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffff efefef000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece08080818181800000000000000000000000000000000 0000000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b525252ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000d6d6d65a5a5a424242ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000393939ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffcecece212121636363ffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b 525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b500 0000000000000000000000000000000000636363ffffffffffffffffffffffff101010000000393939ffffffffffffffffffffffffffffffffffffffffffefef ef4a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000181818ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000dededeffffffffffff ffffffffffffffffffffffffffffff000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d600000039 3939ffffffffffffffffffffffffffffffffffff0808080000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939 390000000000000000001818182929290000008c8c8c5a5a5a000000000000000000000000000000000000000000000000000000212121e7e7e7ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000f7f7f7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000000000006b3939ffe794ffffffffffff3994de0000000000004200 00ffde94ffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd0000006b0000ffffbdffffffffffff3994de000000390000ffe79494deff 000042000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbde70000390000006b0000ffffbdbdffff00006b000000944200ff ffdeffffffffffffffffffffffff6bbdff000000000000ffbd6bffffffbdffff00006b000000bd6b00ffffffffffff006bbd0000006b0000ffffbd94deff0000 42000000bd6b00ffffffbdffff00006b000000943900ffffe7ffffffffffffffffffffffffffffff4294e7000000420000ffde9494e7ff000039000000bd6b00 ffffffbdffff00006b000000944200ffffdeffffffffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff4294e7000000420000ffde9494e7ff00 0039000000bd6b00ffffffffffffe7ffff6b94bd000042000000000000946b39ffe7bdffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff212121080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef08 0808000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff525252000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000 0000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffc6c6c6000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000000000000000000000005a5a5abdbdbd0000000000000000000000000000001818 18b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffb5b5b5000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000000000000000101010dededeffffffffffff ffffffffffffffffffffffffffffff000000101010ffffffffffffffffffffffffffffffffffff000000000000000000737373ffffffffffffffffffffffffff ffffffffffffffffffffff000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b53131310808080000000000 00000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010181818ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad181818ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b080808ffffffffffffefefefffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010181818 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808000000000000525252ffffffffffffffffffffffffffffffffffffff ffffffffffadadad181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff6363630000000000000000000000009c9c9cffffffffffffffffffffffffffffff0808080000007b7b7bffffffffffffffffffffffffffffff ffffffffffffffffff636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0000006363 63ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad0000000000007b 7b7bffffffffffffffffffffffffffffffffffffffffff000000000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff424242080808ffffffffffffffffffffffffffffffffffff0808080000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff8484845a5a5aadadadffffffffffff5a5a5a00000000000000000000000000000000000000000000000000000000000000000000000018 1818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000cececeffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039000000630000bde7bdde9463ffffffb5ffff00006b 000000390000396363e79439ffffffffffffffffffffffff0063b5000000630000ffffbdffffff006bbd0000006b0000ffffb5ffffffffffff3994e700000039 0000ffde9494e7ff000039000000b56300ffffffffffffffffffffffffffffffffffffffffffdeffff003994000000000000390000ffe794ffffff94deff0000 39000000b56300ffffffffffffffffffffffffffffff63b5ff000000000000ffbd6bffffffbdffff000063000000b56300ffffffffffff006bbd0000006b0000 ffffb594deff000039000000b56300ffffff94deff000039000000bd6b00ffffffffffffffffffffffffffffffffffff3994de000000390000ffe79494deff00 0039000000bd6b00ffffff94deff000039000000b56300ffffffffffffffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff3994de0000003900 00ffe79494deff000039000000bd6b00ffffffffffff0063b5000000943900ffffde63b5de000000390000ffde94ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff6b6b6b000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff848484000000000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffff29 2929000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffdedede000000c6c6c6ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef2929290000000000005a5a5affffffffffff8c8c8c000000000000 000000212121dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f7080808737373ffffffffffffffffffffffffffffffffffffffffffffffff31313100000000000000000000000000000039 3939ffffffffffffffffffffffffffffffffffffffffff000000000000efefefffffffffffffffffffffffffffffff000000000000000000313131ffffffffff ffffffffffffffffffffffffffffffffbdbdbd000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef bdbdbd101010000000000000000000000000000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000efefefffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000ef efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000efefefffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff525252000000efefefffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000000000000000006b6b6bffffffffffffffff ffffffffffffffffffffffffffcecece000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff4a4a4a000000000000949494ffffffffffffffffffffffffffffffffffff000000000000adadadffffffffffffff fffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff1010106b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff8c8c8c000000212121ffffffffffffffffffffffffffffffffffffffffff000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff9c9c9c000000c6c6c6ffffffffffffffffffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60000000000000000000000000000000000000000000000000000000000 00000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000b5b5b5 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994de000000000000bd6b00ffffff6b6bbdff ffbd6bbdff000000000000bd6b00bdffff94396bffffe7ffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd0000006b0000ffffbdffffffffff ff3994de000000390000ffe79494deff000042000000bd6b00ffffffffffffffffffffffffffffffffffffdeffff004294000000000000bd6b39ffffe7ffffff ffffffbdffff00006b000000000000000000000000000000000000de943994e7ff000039000000ffbd6bffffffbdffff00006b000000bd6b00ffffffffffff00 6bbd0000006b0000ffffbd94deff000042000000bd6b00ffffffbdffff00006b000000000000000000000000000000000000e79442ffffff4294e70000004200 00ffde9494e7ff000039000000bd6b00ffffffbdffff00006b000000e79442ffffffffffffffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff 4294e7000000420000ffde9494e7ff000039000000bd6b00ffffff94deff000042000000e79442ffffffbdffff00006b000000bd6b00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff525252000000000000000000000000000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808737373ffffffffffffffffffffffffffffffffff ffffffffffffff5252520000000000000000000000000000004a4a4af7f7f7fffffffffffffffffffffffffffffffffffff7f7f70000009c9c9cffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef393939313131ffffffffffffffffffff ffff848484000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff525252313131ffffffffffffffffffffffffffffffffffffffffffffffff3131310000000000000000 00000000000000737373ffffffffffffffffffffffffffffffffffffffffff000000000000c6c6c6ffffffffffffffffffffffffffffff000000000000000000 000000a5a5a5ffffffffffffffffffffffffffffffffffff4242420000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f78484843131311010100000001010102121215a5a5a4a4a4a080808000000cececeffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffdedede000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010b5b5b5ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffadadad000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000 bdbdbdffffffffffffffffffffffffffffffffffffdedede000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363636363ffffffffffffffffffffffffffffffffffffffffff080808000000d6d6 d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff525252636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d62929 29525252f7f7f7ffffffffffffdedede3131315a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff424242000000e7e7e7ffffffffffffffffffffffffffffffffffff000000000000a5a5a5ffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7f70808088c8c8cffffffffffffffffffffffffffffff000000000000bdbdbdffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000000000000000000000000000000000 000000000000000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff003994000000390000ffde 94ffffff63b5ffe7bd6b0063b5000000000000ffbd6bffffff006bbdffb563ffffffffffffffffff0063b5000000630000ffffbdffffff006bbd0000006b0000 ffffb5ffffffffffff3994de000000390000ffde9494deff000039000000de9439ffffffffffffffffffffffffffffffffffff94e7ff000039390000ffde94ff ffff94deffbd6b39ffffffffffff0063b5000000de9439ffffffdeffff003994390000ffe794deffff003994000000e79439ffffffbdffff000063000000b563 00ffffffffffff006bbd0000006b0000ffffb594e7ff000039000000b56300ffffffffffff006bbd000000e79439ffffffdeffff003994390000ffde94ffffff 3994de000000390000ffde9494deff000039000000de9439ffffffffffff0063b5000000b56300ffffffb5deff00396b390000ffe794ffffff006bbd0000006b 0000ffffb5ffffff3994de000000390000ffde9494deff000039000000de9439ffffff94e7ff000039000000de9439ffffffb5ffff00006b000000bd6b00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010104a4a4affffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff393939000000000000000000000000000000000000101010393939cececeffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929ffffffffffffffffff fffffffffffffffffffffffffffffff7f7f72121210000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff0000007b 7b7bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffff ffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000dededeffffffffffffffffffffffffffffffffffffffffffd6d6d6 0808080000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffff000000000000adadadffffffffffffffffffffffffffffff00 00000000000000000000000808087b7b7bf7f7f7ffffffffffffdedede424242000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818737373ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f7080808737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b636363ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7f7f7080808737373ffffffffffffffffffffffffffffffffffffffffffffffff52525200000000000000000000 0000000000525252efefeffffffffffffffffffffffffffffffffffffff7f7f7000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f79494946363637b7b7be7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffa5a5a5848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c6c6c6101010000000000000292929efefefe7e7e72121210000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd6d6d60000009c9c9cffffffffffffffffffffffffffffffffffff000000000000949494ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a4a4a4afffffffffffffffffffffffff7f7f7000000000000f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede00000000000000000000000000 0000000000000000525252525252313131080808000000000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000 000000943900ffffe7ffffffe7ffff3939940000420000006b0000ffffbdffffff6bbdffbd6b00ffffffffffffffffff006bbd0000006b0000ffffbdffffff00 6bbd0000006b0000ffffbdffffffffffff3994de000000000000e7944294deff000042000000ffbd6bffffffffffffffffffffffffffffffffffffdeffff0042 94946b00ffffe7bddeff00006bde9439ffffffffffff94e7ff0000396b4200ffffbd94e7ff000039944200ffffdeffffff6bbdff000000943900ffffe76bbdde 000000000000bd6b00ffffffffffff006bbd0000006b0000ffffbd94deff000042000000bd6b00ffffffffffff94deff0000426b3900ffffbd94deff00004294 3900ffffe7ffffff4294e7000000000000de943994e7ff000039000000de9439ffffffffffffbdffff00006b6b0000ffdebd6bbdff000000420000ffde94ffff ff006bbd0000006b0000ffffbdffffff4294e7000000000000de943994e7ff000039000000de9439ffffffffffff006bbd000000944200ffffde6bbdff000000 420000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b080808ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000000000005a5a5aa5a5a5e7e7e7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffffffffffffffdededeefefefffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000d6 d6d6ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff080808525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929848484ffffffffffffffffffffffffffffffff ffffffffffffffffb5b5b5000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000009c9c9cffffffffffffffff fffffffff7f7f7000000000000000000000000000000000000080808313131292929000000000000000000000000bdbdbdffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6313131ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff6b6b6b313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b313131fffffffffffffffffffffffffffffffffffffffffffffffff7f7f72929 290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff0000007b7b7bffffffffffffffffffffffffffffffffffff ffffffffffffdedede181818000000000000000000080808a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffdedede101010000000000000000000000000292929313131000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252949494ffffffffffffffffffffffffffffffffffff0000000000008c8c8c ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c181818ffffffffffffffffffffffffefefef00000000 0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f70000000000 00000000000000101010adadad424242b5b5b5fffffffffffff7f7f7b5b5b54a4a4a000000000000000000848484ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0063b5000000000000de9439ffffffffffffffffff006bbd000000000000de9439ffffffffffffbdffff630063ffffbdffffff6bbdff0000000000006300 00ffffbd3994de0000000000000000000000006b0000ffffb53994e7000000390000b5b59400396b000000946b39ffffdeffffffffffffffffffffffffffffff ffffffffffff94deff00396b000000946b3994dedee7946bffffffffffffffffffbde7ff393994000000000000bd6b39ffffdeffffffffffffffffff94deff00 396b000000390000deb5636bbddeb56339ffffff63b5ff0000000000006b0000deffb5003994000000000000b56300ffffffffffffffffffb5deff3939940000 00000000b56339ffffdeffffff6bbdff00000000000039000094bd94003963000000946339ffffe7ffffffffffffffffffbde7ff396394000000000000390000 deb563ffffff63b5ff0000000000006b0000ffffb56bbdff00000000000039000094bd94003963000000946339ffffe7ffffffffffffdeffff3994bd00003900 0000000000000000000000000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000b5b5b5ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000a5a5a5ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd6d6d6101010000000000000313131efefefffffffa5a5a5080808080808c6c6c6ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff4a4a4a7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff080808424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a56b6b6b737373adadadffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5848484ffffffffffffffff ffffffffffffffffffffffffffffffffffffffa5a5a5393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8c ffffffffffffffffffffffffe7e7e7000000000000000000000000000000000000000000000000000000000000000000000000000000e7e7e7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffadadadf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd6d6d6000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff8c8c8cd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000d6d6d6ffffffffffffffffffffffffffffffffffff ffffffffffffe7e7e72929290000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000005a5a5affffffffffffffffffff fffffffffffffffffffffff7f7f7212121000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7f7f7000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff393939000000000000000000000000000000000000000000000000000000000000000000000000bdbdbdffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffff00 00000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000efefefffffffffffffffff ffe7e7e7000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff101010000000000000080808d6d6d6ffffffadadad292929ffffffffffffffffffffffffffffffcecece393939000000000000c6c6c6ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff94deff0000420000006b0000ffffbdffffffffffffbdffff00006b000000390000ffe794ffffffffffffffffff4294e7de9439ffffffffffff ffffffffffffffffffffffffffffff6bbdde0000426b0000ffffbdffffffffffff3994de000000390000ffe794ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff31 3131525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000212121ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefef1818180000000000000000000000004242429c9c9c080808000000000000080808cececeffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd6d6d67b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff101010313131ffffffffffffffffffffffffffffffffffffffffffffffffffffff3939390000000000000000 00000000212121bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000848484ffffffffffffffffffffffffe7e7e7000000000000000000000000000000000000000000000000000000000000000000000000313131ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252527b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808393939ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252527b7b7bffffffffffffffffffff ffffffffffffffffffffffffffffffffffefefef737373f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808393939ffff ffffffffffffffffffffffffffffffffffffff737373000000000000000000000000000000000000000000080808e7e7e7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffefefef000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff393939000000000000000000000000000000000000000000000000000000000000000000292929dededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131c6c6c6 ffffffffffffffffffe7e7e7000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff313131000000000000949494ffffffffffffffffff212121a5a5a5ffffffffffffffffffffffffffffffffffff8c8c8c0000002121 21f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffdeffff003994000000000000b56339ffffffffffffdeffff0063b5000000000000bd6b00ffffffffffffffffffffffff94deffbd 6b39ffffffffffff63b5de000039943900ffffdeffffffffffff63b5ff6b0000ffffb5ffffffffffff3994de000000390000ffde94ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff6bbdde000039943900ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffa5a5a5000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000101010ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a00000000000000000000000000000000000000000000000000000000000000 0000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000181818949494d6d6d6ffffffffffffffffffffffffffffffffffff5a5a5a000000 0000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000848484ffffffffffffffffffffffffdedede000000000000000000424242000000000000000000000000000000000000000000 000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d67b7b7bffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808313131ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d67b7b7bffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 080808313131fffffffffffffffffffffffffffffffffffff7f7f70808080000000000000000000000000000000000000000000000005a5a5affffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede1010100000000000000000006b6b6badadad0000000000000000000000003939 39f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffe7e7e7ffffffffffffffffffffffffe7e7e7000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff5a5a5a000000101010ffffffffffffffffffffffff848484181818efefefffffffffffffffffffffffffffffff ffffffbdbdbd0808086b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffdeffff004294000000000000000000000000bd6b0094e7ff0000390000000000000000000000006b0000ffffbdffff ff3994de000000000000944200ffffde6bbdff000039944200ffffdeffffffffffffffffff9494deffffbdffffff6bbdff000000000000390000ffe794ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000042943900ffffe7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff292929848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 1818000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000 00000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000000000000000313131c6c6c6ffffffffffffffffffd6 d6d6000000000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffe7e7e7000000000000000000c6c6c68c8c8c08080800000000000000 00000000000000006b6b6bffffffffffffffffffffffffffffffffffffbdbdbda5a5a5d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808081010109c9c9ccecece ffffffffffffffffffffffffffffffffffffffffffefefef7b7b7b2121210808082121218c8c8cffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff080808292929ffffffffffffffffffffffffffffffffffffbdbdbd0000000000000000000000000000000000000000000000000000000808 08dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808000000424242ffffffffffffa5a5a5000000 000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000525252fffffffffffffffffffffffff7f7f7080808636363ffffffffffffff ffffffffffffffffffffffffffffcecece080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b57b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff6b6b6b0000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252 a5a5a5000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000000000000000000000080808a5a5 a5ffffffffffff7b7b7b000000000000000000000000000000000000000000000000000000101010dededeffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffe7e7e70000000000000000008c8c8cffffffdede de6b6b6b181818080808393939a5a5a5ffffffffffffffffffffffffffffffffffffffffff9494942121210000001010106b6b6bcececeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f700000000 0000000000000000292929c6c6c6ffffffffffffffffffffffffe7e7e72121210000000000000000000000000000004a4a4affffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7f7f7000000181818ffffffffffffffffffffffffffffffffffff7b7b7b000000000000000000000000000000000000000000 0000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000f7f7f7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece212121e7e7e7ffffffff ffffffffffbdbdbd212121dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000efefefffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000848484ffffffffffffffffffffffffffffff6b6b6b0000 00949494ffffffffffffffffffffffffffffffbdbdbd636363212121292929ffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8c ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc6c6c6000000101010efefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f742424200 0000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000 000000000000080808adadadffffff313131000000000000000000000000000000000000000000000000000000000000393939ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484fffffffffffffffffffffffff7f7f7000000000000313131 393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c65252520000000000004a 4a4ae7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc6c6c6000000000000000000000000000000000000adadadffffffffffffffffff424242000000000000000000000000000000000000000000848484ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000080808212121636363c6c6c6ffffffffffff6b6b6b0000000000000000001010109c 9c9cefefeff7f7f7adadad212121000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000f7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000efefefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929848484ffffffffffffffffffffffff ffffffe7e7e70808080000006b6b6bcececed6d6d6949494313131000000000000000000000000949494ffffffffffffffffffffffffffffffffffffffffff00 0000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a500000000 0000000000000000000000000000000000101010dedede181818000000000000000000000000000000000000000000000000000000000000000000a5a5a5ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffdedede4242428c8c8cffffffffffffffffffffffffffffffbdbdbdf7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000848484fffffffffffffffffffffffff7f7f700 0000000000adadad000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd6d6d6393939000000101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff9c9c9c000000000000000000000000000000000000000000adadadffffffd6d6d600000000000000000000000000000000000000000000 0000080808efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000004a4a4af7f7f76363630000000000 00000000c6c6c6fffffffffffffffffffffffff7f7f7313131000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef 000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000dededeffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484846b6b6bffffffff ffffffffffffffffffffffffffff848484000000000000000000000000000000000000000000000000000000000000181818f7f7f7ffffffffffffffffffffff ffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000424242efefefffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffcecece000000000000000000000000000000000000000000000000424242080808000000000000000000212121b5b5b5efefefffffffd6d6d68c8c8c181818 000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffcecece1010100000000000007b7b7bffffffffffffffffff5a5a5a000000292929e7e7e7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000848484ffffffffffffffff ffffffffffffff000000000000dedede4a4a4a080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff181818000000000000181818f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffa5a5a5000000000000000000000000000000000000000000080808e7e7e78484840000000000000000000000000000 000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000000000000000000000000000000000000000292929 848484000000000000292929ffffffffffffffffffffffffffffffffffffefefef101010adadadffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18181800 0000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef ef4a4a4affffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000000000000000000000000000002929297373738c8c8c292929c6c6c6ffffff ffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000101010848484d6d6d6f7 f7f7f7f7f7efefefd6d6d6c6c6c6adadadadadadd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f71010109c9c9cf7f7f7ffffffcecece6b6b6b000000000000000000212121000000000000101010efefefffffffffffffffffffff fffffffffff7f7f74a4a4a0000007b7b7bc6c6c65252520808084a4a4ae7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffdedede1010100000000000000000000000008c8c8cffffff424242000000000000000000292929 efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000848484 ffffffffffffffffffffffffffffff181818000000d6d6d6d6d6d6080808080808bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffdedede000000101010737373424242848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000000000000000000000000000000000000000393939636363000000000000 000000000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d600000000000000000000000000000000 0000000000000000393939000000000000636363ffffffffffffffffffffffffffffffffffffffffff8c8c8c6b6b6bffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff212121000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff949494ffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0808080000000808084a4a4ab5b5b5ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000000000 00000000000000000000000000000000000000000000000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b50808080000001818180000000000007b7b7bffffffffff ffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff31313100000000000000000000000000000000000042424200000000000000 0000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6 d6d60000007b7b7bffffffffffffffffffffffffffffff292929000000cececeffffff9494940000000000009c9c9cffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7080808dededeffffffe7e7e7393939ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818949494f7f7f7ffffffd6d6d663636308080800000000000039 3939000000000000000000080808737373636363080808000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7181818949494f7f7 f7ffffffefefefadadad4242420000000000001010100000006b6b6bffffffffffffffffffffffffffffffffffffffffffe7e7e74a4a4affffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff181818000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff424242000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000000000000000000000 adadadffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000000000101010d6d6d6ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939390000000000000000000000000000003939390000 00000000000000000000000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff393939737373ffffffffffffffffffffffffffffff424242000000bdbdbdffffffffffff4a4a4a000000000000636363f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252529c9c9cf7f7f7bdbdbd101010ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5 b5080808000000212121000000000000000000cececeffffffffffffadadad000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff7b7b7b0000001818180000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffcececeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff181818000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff5a5a5a000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000848484ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffe7e7e7737373292929080808101010000000000000000000000000000000000000000000636363ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73737300 0000101010000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000000000000000000000181818e7e7 e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7181818000000000000000000 636363ffffff737373000000000000000000000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc6c6c65a5a5affffffffffffffffffffffffffffff5a5a5a000000adadadffffffffffffffffff31313100000000 0000313131dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7101010000000000000181818ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffadadad0808080000000000000000004a4a4affffffffffffffffffffffff212121000000181818ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000004a4a4affffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000c6c6c6ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff424242000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000848484ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000000000101010ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f7212121080808000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece8c8c8cd6d6d6adadad000000 000000000000292929d6d6d6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece10 1010000000525252ffffffffffffffffff525252000000000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5ffffffffffffffffffffffffffffff848484000000a5a5a5ffffffffffffffff ffefefef292929000000000000101010a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6181818000000 848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff6b6b6b0000000808080000007b7b7bffffffffffffffffffffffff8c8c8c0000007b7b7bffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010080808292929ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000adadadffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000848484ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000848484ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000848484 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000000000000000000000000000000000 0000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff9c9c9c000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff292929000000181818000000000000000000212121525252848484c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffadadad000000c6c6c6ffffffffffffffffffffffff525252000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000848484 fffffffffffffffffffffffff7f7f73131310000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818101010000000949494ffffffffffffffffffffffffffffffe7e7e7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484181818000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000a5a5 a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000006b6b6bffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010105a5a5affffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffffffffffffffdededee7e7e7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6 d6d60000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000000000000000000000 00000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff181818101010424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff848484000000adadad2121210000002121216b6b6b3131310000000000000808084a4a4aadadadffffffffffffffffffffffff ffffffffffffffffffffffffb5b5b5080808000000101010c6c6c6fffffffffffff7f7f74a4a4a000000737373ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff1010105a5a5affffffffffffffffffffffffffffffffffff4a4a4a000000000000000000212121d6d6d6ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000848484ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f70808 08000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c6c6c6000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939393939ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b181818ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000000000313131efefefffffffa5a5a508 0808080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff393939393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000 0000000000000000000000000808088c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c212121080808f7f7f7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc6c6c60000008c8c8ce7e7e71818180000009c9c9cffffffefefefadadad4a4a4a080808000000181818a5 a5a5ffffffffffffffffffffffffffffffc6c6c6080808000000000000000000101010d6d6d6f7f7f7313131000000000000000000737373ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff7b7b7b181818ffffffffffffffffffffffffffffffffffffffffff848484080808000000000000080808adadadffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121101010636363ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff949494b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff1010105a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000 f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7 e7e7080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef1818180000000000000000000000004242 42949494080808000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffbdbdbd000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff313131000000000000000000101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7181818000000b5b5b5ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808525252ffffffdedede101010080808c6c6c6ffffffffffffffffffdede de636363000000000000525252ffffffffffffffffffefefef181818000000000000000000000000000000212121424242000000000000000000000000000000 949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffe7e7e7080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffbdbdbd18181800000000000000000073 7373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484292929 181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff7b7b7b181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff5a5a5adededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff9c9c9cdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000 000000000000000000000000000000000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffdedede1818180000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373dededeffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252101010ffffffffffffc6c6c6080808181818e7e7e7 ffffffffffffffffffffffffb5b5b50808080000005a5a5affffffffffffe7e7e708080800000000000000000000000000000018181800000000000000000000 0000000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9cdededeffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a 4a000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffefefef181818000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84848400 0000000000000000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000101010a5a5a5ffffffffffffffffffffffffffffff52525208080800000031 31316b6b6bc6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000dededeffffffffffffad adad000000292929efefefffffffffffffffffffffffffa5a5a5000000000000bdbdbdffffffffffff9c9c9c0000000000000000000000006b6b6bf7f7f72121 21000000000000000000000000212121cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff8484840000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff737373636363dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffcecece2929295a5a5affffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d62121210000000000001010104242424242422929290000000000 000000000000000000000000000000003131319c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000adad adffffffffffffffffff949494000000393939f7f7f7fffffffffffffffffff7f7f7000000000000636363ffffffffffffffffff8484840000000000006b6b6b ffffffffffffe7e7e7101010000000000000292929e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffbdbdbd1010100000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffbdbdbd10101000 00000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a000000000000000000000000 000000000000000000000000000000000000000000000000000000000000181818a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff292929636363ffffffffffffffffffffffff313131000000313131dededeffffffffffffa5a5a5000000000000313131ffffffffffffffffffffffff94 9494424242ffffffffffffffffffffffffdedede101010101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede212121000000000000c6c6c6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffcece ce101010000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c10 10100000000000000000000000000000000000000000000000000000000000000000000000000000000000002121219c9c9cf7f7f7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff848484181818ffffffffffffffffffffffff4242420000000000001010105a5a5a525252000000000000000000393939ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefc6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef292929000000424242ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffff ffffffffffff292929000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7f78484842121210000000000000000006b6b6b4a4a4a0000000808089494946b6b6b313131000000000000000000000000000000292929 636363adadadf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffe7e7e7000000a5a5a5ffffffffffffe7e7e7080808000000000000000000000000000000000000000000000000 5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7101010080808f7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff4a4a4a0000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7c6c6c6e7e7e7ffffffffffff393939000000848484ffffffffffffe7e7e78c8c8c21212100 0000000000212121393939000000080808525252bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252101010a5a5a59c9c9c29292900000000000000000000000008080800000000 0000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c6c6c6000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010080808e7e7e7ffffffffff ffffffffffffffadadad212121000000181818b5b5b57b7b7b101010000000292929a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000000000000000000000001010104242 420000004a4a4a6363637b7b7bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff636363bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000 525252ffffffffffffffffffffffffffffffffffff7b7b7b080808080808cececef7f7f78c8c8c080808000000313131cececeffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000 000000949494f7f7f7313131000000525252efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff313131000000a5a5a5ffffffffffffffffffffffffffffffffffffbdbdbd101010080808cececeffffffe7e7e74a4a4a0000000000007b7b7bffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a529 2929000000292929a5a5a5ffffffffffffefefef3939390000000808088c8c8cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff949494000000080808dededeffffffffffffffffffffffffffffffffffffcecece101010181818f7f7f7ffffffffffffa5a5a5 1010100000004a4a4af7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000181818848484f7f7f7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000212121efefefffffffffffffffffffffffffffffffffffff8c8c8c0000004a4a4aff ffffffffffffffffd6d6d6212121000000313131e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a51010100000000000000808086b6b6bdededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000292929efefeffffffffffffffffffffffffffffffff7f7 f7000000000000bdbdbdffffffffffffffffffefefef313131000000292929efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef7373730808080000 000000000808085a5a5aefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000181818cececeffffffffffff ffffffffffffefefef0000000000005a5a5affffffffffffffffffffffffefefef292929000000393939f7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffff7f7f78c8c8c2121210000000000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b500000008080821212100000000 00006b6b6bcececeffffffe7e7e7636363000000000000212121ffffffffffffffffffffffffffffffe7e7e71818180000004a4a4affffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9cff ffffffffffffffffffffffffffffffffffffffffbdbdbd4a4a4a0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0000000000 00bdbdbd101010000000000000000000000000000000000000000000000000212121ffffffffffffffffffffffffffffffffffffcecece080808000000525252 f7f7f7f7f7f78c8c8c9c9c9cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff4242427b7b7bffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6424242000000bdbdbdffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7f7f7000000000000a5a5a5dedede2121210000000000000000000000000000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffff94 94940000000000002121214a4a4a000000000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffcecece000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff101010313131ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000007b7b7bfffffff7f7f7525252000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffff ffffffffffffffffffff525252000000000000000000000000000000000000212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff7373730000001818185a5a5a7b7b7b7b7b7b8484847b7b7b7373734a4a4a181818000000000000dede deffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff1010100000005a5a5affffffffffffffffffcecece7373734242423131314a4a4ab5b5b5ffffffffffffffffff fffffffffffffffffffffffffffffffffffff7f7f7212121000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000000000000000000000000000000000000000000000 000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808000000000000636363efefef8c8c8c000000d6d6d6ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f75a5a5a00000000000000000000000000000000 0000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000292929ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece393939393939e7e7e7ffffffffffff8c8c8c5a5a5a ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c65a5a5a2121 210000000000000000001010102121214a4a4a8c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000212121ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff636363efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000101010ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000 00101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff181818000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff212121000000000000ffffffffffffffffffffffffcecece2929295a5a5affffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff212121000000000000ffffffffffffffffffbdbdbd1010100000000000004a4a4affffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000ffffffffffffcecece101010000000000000000000000000636363ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000ffffffffffff2929290000000000000000000000 00000000000000b5b5b5ffffffffffffffffffffffffffffffcecece292929636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000ffffffffffff4a4a4a000000 0000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffffbdbdbd0808080000000000004a4a4affffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000ffffffff fffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffd6d6d61010100000000000000000000000006b6b6bffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000 00080808ffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000 b5b5b5ffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffe7e7e7dededeffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffbdbdbd000000000000ffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffffffffffff52525200000000000000000000 00000000004a4a4af7f7f7ffffffffffffd6d6d6181818000000000000313131f7f7f7ffffffadadad080808101010c6c6c6ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff181818000000efefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f72121 210000000000000000006b6b6bffffffffffffffffffe7e7e71818180000000000000000000000003939399c9c9c000000000000000000080808c6c6c6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff949494000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffff52525200000000000000000000000000000000000000000000000000000000000000 0000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121216b6b6bffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000 000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c67b7b7bffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252 adadad0000000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f742424200 0000393939ffffffffffff8c8c8c0000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff7b7b7befefefffffffffffffffffff8c8c8c0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000 00000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494 000000000000000000000000080808b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffdedede080808000000000000000000000000000000101010efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7f7f7181818000000000000000000000000080808848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffcecece000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffff ffffffffffe7e7e7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffe7e7e7a5a5a5ffffffbdbdbd080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffffffffffffffdededeefef efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d61818180000000000 00313131f7f7f7ffffffadadad080808101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394242 42f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffcecece1818180000004a4a4af7f7f7cecece848484ffffff6b6b6b212121cececeffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd6d6d69494946b6b6b6363636b6b6b949494cececeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000000000313131efefefffffff a5a5a5080808080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7181818 0000000000000000000000004242429c9c9c000000000000000000080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece9494 946b6b6b6363637373739c9c9cdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd6d6d6949494737373636363737373949494d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece6b6b6b29292910101000 00001818184242428c8c8ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6636363d6d6d6ffffffffffffffffffffffffffffffffffffffffffd6d6d6 181818000000000000313131f7f7f7ffffffadadad080808101010c6c6c6ffffffcecece1010100000000000000000004a4a4affffffffffff4a4a4a00000000 0000101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffcecece313131000000000000000000000000000000000000000000292929a5a5a5ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6949494737373636363737373949494d6d6 d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef18181800000000000000000000 00004242429c9c9c080808000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff525252000000000000000000000000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6 292929000000000000000000000000000000000000000000393939c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc6c6c63939390000000000000000000000000000000000000000002929299c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a0000000000 000000000000000000000000000000000000000808086b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b52121216b6b6bf7f7f7ffffffffffffffffffff ffffe7e7e71818180000000000000000000000003939399c9c9c000000000000000000080808b5b5b51818180000000000000000000000000000007373735252 52000000000000000000000000181818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000313131d6d6 d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6393939000000000000000000000000 0000000000000000002929299c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000 00000000000000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000000000000000000000000000008c8c8cffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff9494940000000000000000000000000000000000000000000000000000000000000000006b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000313131dededeffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818 000000000000000000000000000000000000000000000000000000000000000000292929d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f75a5a5a292929e7e7 e7ffffffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000 000000000000000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000 000000000000101010adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c08080800000000000000 0000000000000000000000000000000000000000000000313131dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 7b7b7b000000000000000000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252adadad0000000000000000000000000000008c8c8cffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff9c9c9c000000000000000000000000000000000000000000000000000000000000000000000000000000212121dededeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff848484000000000000000000000000000000000000000000000000000000000000000000000000000000080808b5b5b5ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef efef181818000000000000000000000000000000000000000000000000000000000000000000000000000000080808bdbdbdffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff949494101010c6c6c6ffffffffffff7b7b7b00000000000000000000000000000000000000000000000000000000000000000000000021212100000000 00000000000000005a5a5abdbdbd000000000000000000000000000000181818b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000000000 00000000000000000000000000000000000000000000000000000000000000000000080808b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff4a4a4a000000000000000000525252a5a5a5000000000000000000000000000000848484ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000393939ffffffffffff8c8c8c0000000000000000009c9c9cffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd6d6d6080808000000000000000000000000000000000000000000000000000000000000000000000000000000000000181818d6 d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffbdbdbd000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808bdbdbdffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffa5a5a5101010cececeffffffffffff4a4a4a0000000000000000004a4a4aadadad0000000000000000000000000000008c8c 8cefefef313131000000000000636363ffffffffffff8c8c8c000000000000000000212121dededeffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c000000 7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff3939390000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc6c6c600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c101010dededeffffffffffff424242000000393939ffffffffffff8c8c8c000000000000 000000949494ffffffffffffefefef393939313131ffffffffffffffffffffffff7b7b7b000000101010dededeffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff212121000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adadadffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000292929efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000000000000000000808083939395252525a5a5a4a4a4a3131310000000000 00000000000000000000000000212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929ffffffffffffffffff737373efefefffffffffffffff ffff9494940000007b7b7bfffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff31313100000000000000 0000000000000000212121848484cececeefefefffffffffffffe7e7e7b5b5b5737373101010000000000000000000000000292929ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff9c9c9c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000000000002929298c8c8ccececeefefefff fffff7f7f7e7e7e7adadad636363080808000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000212121848484 c6c6c6f7f7f7ffffffffffffe7e7e7b5b5b56b6b6b101010000000000000000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000000000000000000000292929a5a5a5ffffffffffffffffffffffffffffff fffffff7f7f7949494212121000000000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131525252ffffffffffffffffffffff ffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000 00000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b080808000000000000000000737373 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4aefefefffffffffffffffffffdededee7e7e7ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000212121848484c6c6c6f7f7f7ffffffffffffe7e7e7b5b5b56b6b6b10 1010000000000000000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000000000000000000808089c9c9cffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f77373730808080000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000000000000000000000000808087b 7b7bfffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7848484080808000000000000000000737373ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000000000000000000000525252ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff848484080808000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808adadad ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff949494000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede29292900 0000000000000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818000000000000313131efefefffffffa5a5a50808 08101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffdedede0000000000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7f77b7b7b080808000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd6b6b6befefefffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000000000000000000000c6c6c6 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede393939000000000000000000d6d6d6ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000000000 000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede292929000000000000000000d6d6d6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000525252ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010000000000000212121ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff848484181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff5a5a5a000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffefefef424242000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7181818000000000000000000000000424242 949494000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000000000000000009c9c9cffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffdedede292929000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000292929e7e7e7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84848400000000000000 0000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000000000393939ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a 0000000000000000006b6b6bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f742424200000000 00004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c181818a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000101010efefef ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede1010100000000000008c8c8cffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff212121525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff313131000000000000181818f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7f7f7393939000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffff4a4a4a00000000000000000000 0000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000000000000000006b6b6bffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f74242420000000000004a4a4affffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000313131f7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7adadad 8484845a5a5a424242292929181818080808080808000000000000000000080808101010181818212121393939424242636363737373949494b5b5b5dededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff9c9c9c0000001010104242426b6b6ba5a5a5dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7f7f7636363101010181818848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252 52000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373 000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff313131000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7313131000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000000000949494ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100000000 0000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60000000000001010 10f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffadadad000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffefefef1818180000004a4a4affffffffffffffffffffffffffffffffffffffffff7b7b7b0000 00000000000000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000101010ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000c6c6c6ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece08080800000000000000000000 00000000005a5a5affffffffffffffffffffffffffffffffffffb5b5b56b6b6b848484f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede73737321 21210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000080808393939737373bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffb5b5b52121210000000000000000000000001818186b6b6bd6d6d6ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000000000000000424242f7f7f7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff313131000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff6b6b6b000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff1010100000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefef181818000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000000000080808b5b5b5ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 9c9c9c0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d65a5a5a18181800000029292984 8484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939101010efefefffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000cececeffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000dededeffffffffffffffffffffffffffffff ffffffffffff4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000000000 7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef18181800000042 4242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b50000000000 00000000000000000000000000636363ffffffffffffffffffffffffffffff7b7b7b000000000000000000181818d6d6d6ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f76b6b 6b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000080808636363c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f77373730000000000000000000000000000000808089c9c9cffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000004a4a4affffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff181818000000000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff424242000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede080808000000000000000000000000 000000101010efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff080808000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff424242000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad0000000000000000 00000000000000000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffb5b5b50000004a4a4affffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000101010ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000006b6b6bffffffffffffff fffffffffffffffffffffffffffff7f7f7424242000000393939ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffbdbdbd000000000000d6d6d6ffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4aefefefffffffffffffffffffdededee7e7e7ffffffffffff ffffff636363000000000000000000000000949494ffffffffffffffffffffffffffffffadadad000000000000000000000000000000181818f7f7f7ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff efefef29292900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000313131bdbdbdffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff292929f7f7f7ffffffffffffffffffffffffffffffffffffc6c6c6181818000000000000000000 000000080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0000000000000000000000000000000000000000000000007b 7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929f7f7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff101010000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7101010313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000737373ffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f718181800000000 0000000000000000080808848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff080808000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffdedede080808000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7080808 000000000000000000000000000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000a5a5a5ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000393939ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0808081818 18ffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c080808737373ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff6b6b6b000000737373ffffffffffffffffffffffffffffffd6d6d6181818000000000000313131efefefffffffa5a5a508080810 1010cececeffffffffffffffffff525252000000000000949494ffffffffffffffffffffffffffffffffffff2121210000000000000000000000000000000000 006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff4242420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000636363f7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929299c9c9cfffffffffffffffffffffffffffffffffffffffffff7f7f742 4242000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000000000000000000000000000 00000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929299c9c9cff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff0000390000000000 00000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff393963000039000000000000390000bd6b39ffde deffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000bdbdbdffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000393939ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010101010ffffffffffffffffffffffffff ffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffcecece080808000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff101010000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000424242ffffffffffffffffffffffffffffffffffffffffffffffffff ffff525252000000000000000000000000000000000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0000 00101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000 005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff848484000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffefefef101010101010ffffffffffffffffffffffffe7e7e71818180000000000000000000000004242429494 94000000000000000000080808cececeffffffffffffffffff6363635a5a5affffffffffffffffffffffffffffffffffffa5a5a5000000000000000000000000 000000000000000000080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffbdbdbd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000292929dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484424242ffffffffffffffffffffffffffffffffff ffffffffffffffffffff6b6b6b000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000000000 000000000000000000000000000000000000181818f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff848484424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 94e7ff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039bd6b00ffffdeffffffffffff e7ffff6bbdde6b0042ffffbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000636363ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131636363ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000525252ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000bdbdbdffff ffffffffffffffffffffffffffd6d6d6181818000000000000313131f7f7f7ffffffadadad080808101010c6c6c6ffffffffffffffffffffffffffffffffffff ffffffe7e7e7a5a5a5ffffffbdbdbd080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000848484ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000080808e7e7e7ffffffffffffffffffffffffffff ffffffffffffffefefef080808000000000000000000000000000000000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffff ffffffffffff424242000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff181818000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffefefef080808636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff080808000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000bdbdbdffffffffffffffffff4a4a4a000000000000000000000000 000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff29292900000000 0000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff7373730000000000000000000000000000000000000000000000000000000000001818183131314a4a4a52 52526363635a5a5a6363635a5a5a6363635a5a5a5a5a5a5252525252524242423939392121211010100000000000000000000000000000000000000000000000 00000000000000000000000000000000181818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808f7f7f7ffffffffffff ffffffffffffffffffffffffffffffffffffffffff737373000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffe7e7e700000000 0000000000000000292929525252525252212121000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffbdbdbd080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffb5ffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5ffff00006bde9439ff ffffffffffffffffffffffbddeff000063e79439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000737373ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad080808ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000737373ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef 080808636363ffffffffffffffffffffffffe7e7e71818180000000000000000000000003939399c9c9c000000000000000000080808cececeffffffffffffff ffffffffffffffffc6c6c61818180000004a4a4af7f7f7c6c6c6848484ffffff6b6b6b212121cececeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000007b7b7bffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000949494ffffffffffff ffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000000000000000000000000000000000000000cececeffffffffffffffffffff ffffffffffffffffffffffffffffc6c6c60000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff393939000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff636363101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000737373ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808636363ffffffffffffffffff7b7b7b00000000 0000000000000000000000000000000000000000000000000000000000000000848484fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f7000000000000000000000000000000000000000000000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000000000292929848484bdbdbdf7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6b5b5b58c8c8c636363 292929000000000000000000000000000000000000000000000000212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffefefef000000bd bdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000006b6b6bffffffffffffffffffffffffffffffffffffffff ff8c8c8c0000000000000000008c8c8cffffffffffffffffffffffffc6c6c63131310000001010109c9c9cffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffefefef000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffbdffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffbddeff00006b000000000000000000000000000000000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000737373ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939 0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff6b6b6b101010ffffffffffffffffffffffff5252520000000000000000000000000000000000000000000000000000000000000000001818 18efefefffffffffffffffffffcecece1010100000000000000000004a4a4affffffffffff4a4a4a000000000000101010cececeffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000006b6b6bffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd00000042 4242ffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000000000000000313131bdbdbdffffffe7e7e77b7b7b0000000000007b7b7bffff ffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff6363630000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffef efef292929000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000737373ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b101010ffffffffffffffff ffffffff4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffadadad0000000000000000008c8c8ce7e7e7ffffffd6d6d6636363000000000000dededeffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939390000000000000000000000004a4a4acececeffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffefefefa5a5a54a4a4a080808000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000181818ffffffffffffffffffffffff ffffffffffffffffff4a4a4a0000000000005a5a5affffffffffffffffffffffffffffffffffffffffff5a5a5a000000080808c6c6c6efefef7b7b7b21212131 3131e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff3994de943900ffffdeffffffffffffffffffffffff3994de630000ffffbdffffffffffffffffffffffff63b5ff000000 000000000000943900ffffdedeffff003994000000946b39ffffde6bbdff0000000000000000006b3900003963000000000000000000ffb563ffffffffffff94 e7ff0039630000000000006b3900ffde94ffffffffffffffffffdeffff396b94000000390000949463000039000000000000ffb563ffffffdeffff0039940000 00946b39ffffdeffffffffffffffffffffffffffffffb5ffffbd6b6b94b5de00396b0000006b3900ffdeb5ffffffffffffffffff94b5de003939000000000000 943939ffe7bdffffffffffffdeffff396b940000006b3900b5de9400006b000000bd6b00ffffffffffffdeffff396b9400000039000094946300003900000000 0000ffb563ffffffffffff94bde7003939000000000000943939ffdeb5ffffff63b5ff00000000000000000063390000396b000000000000000000ffbd6bffff ffffffff94deff00396b000000000000633939ffe7bdffffff6bbdff00000000000000000094390063b5de00000000000000000063390000396b000000000000 000000ffbd6bdeffff003994000000000000000000000000000000000000000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363 630000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c6c6c69c9c9c7373733939390000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff6363630000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc6c6c6000000cececeffffffffffffffffff7b7b7b000000000000000000000000000000000000000000000000000000 0000000000000000008c8c8cffffffffffffefefef181818000000000000000000000000000000737373525252000000000000000000000000181818dededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b500000063 6363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff181818080808f7f7f7ffffffffffffffffffffffffffffffffffff292929000000000000000000313131f7f7f7ffffffffffffffffffffffff9c9c9c 000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000000000292929cececeffffffe7e7e7a5a5a563636329 2929212121bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121949494ffffffffffffffffffffffffffffffffff ffffffffffffff7373730000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000006b6b6bffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000 cececefffffffffffffffffff7f7f7424242000000393939ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff5252520000000000008c8c8cffffffffffffffffffffffffffffff9c9c9c000000a5a5a5ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000949494ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e77b7b7b080808000000000000000000000000cececeffffffffffffffffffffffff ffffffffffffffffffffffff0000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000000000cececeff ffffffffffffffffffffffffffffffffff292929000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000 00000000000000000000181818e7e7e7ffffffffffffffffffb5b5b55252522929290808081010104a4a4abdbdbdffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000004a4a4affffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffdeffff004294000000ffbd6bffffffffffffffffffe7ffff003994000000ffbd6bffffffffffffffffffff ffffffffff006bbd0000006b0000ffffbdffffff4294e7000000420000bdde94e79494ffffff4294e7000000420000ffde9494e7ff000039000000bd6b00ffff ffffffff94e7ff0000396b0000ffdebdbde7ff00006b420000ffbd6bffffffffffff4294e7000000420000ffde944294e7000000000000bd6b00ffffffffffff 4294e7000000420000bdde94e79494ffffffffffffffffffffffffffffffbdffff00006bbd6b42ffffdee7ffff006bbd944200ffffdeffffff6bbdff00000000 0000944200ffffdee7ffff9494bdffffbdffffff006bbd000000944200ffffde6bbde7000039000000bd6b00ffffffffffff4294e7000000420000ffde944294 e7000000000000bd6b00ffffffffffff6bbdff000000000000943900ffffe7deffff9494bdffffbdffffff3994de000000390000ffe79494deff000042000000 bd6b00ffffffffffff94deff000042000000944200ffdebde7ffff6b94bdffbd6bffffff006bbd0000006b0000ffffbdffffff3994de000000390000ffe79494 deff000042000000bd6b00ffffffe7ffff003994000000000000000000000000000000393900e7946bffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffa5a5a5000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff9c9c9c101010000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff9494940000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff212121949494ffffffffffffffffffffffff4a4a4a0000000000000000004a4a4aadadad00 00000000000000000000000000008c8c8cffffffffffffffffffadadad0000000000000000000000000000000000000000000000000000000000000000000000 000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffe7e7e7000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff737373000000bdbdbdffffffffffffffffffffffffffffffffffff101010000000000000000000d6d6d6ffffffffffffffffffff ffffffffffffffff4a4a4a080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000000000000000000000 00000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000393939ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b5a5a5affffffffffffffffff ffffffffffffffffffffffffffffff424242000000000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000005a5a5a ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff212121949494ffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c080808737373ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff292929000000101010ffffffffffffffffffffffffffffffffffffffffff7373736b6b6bffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000007b7b 7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7525252000000000000000000424242ffffffff ffffffffffffffffffffffffffffffffffffffff000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252 52000000848484ffffffffffffffffffffffffffffffffffff101010000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 4a4a4a000000000000000000000000000000000000393939ffffffffffff5a5a5a0000000000000000000000000000000000000000005a5a5af7f7f7ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000101010ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000b56300ffffffffffffffffff94deff000039000000bd6b00ffff ffffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff0063b5000000630000ffffbdffffffffffff3994de000000390000ffde9494deff000039 000000bd6b00ffffffe7ffff003994000000de9439ffffffffffff006bbd000000943900ffffdeffffff0063b5000000630000ffffbd94deff000039000000bd 6b00ffffffffffff0063b5000000630000ffffbdffffffffffffffffffffffffffffffffffff94deffbd6b6bffffffffffffdeffff003994390000ffde94deff ff003994000000390000ffde94ffffffffffffffffffffffff94e7ff000039000000de9439ffffffb5ffff00006b000000bd6b00ffffffffffff0063b5000000 630000ffffbd94deff000039000000bd6b00ffffffe7ffff003994000000390000ffe794ffffffffffffffffffffffffffffff3994de000000390000ffde9494 deff000039000000b56300ffffffdeffff003994000000390000ffde94ffffffffffffffffffffffffffffff0063b5000000630000ffffbdffffff3994de0000 00390000ffde9494deff000039000000b56300ffffffffffff94e7ff943963ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffe7e7e7000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff8c8c8c000000000000000000000000000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffcecece000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce cece212121636363ffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b525252ffffffffffffffffffffffffffffff4242420000003939 39ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffff4242420000000000000000000000005a5a5abdbdbd000000000000 000000000000000000181818b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff181818181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd181818a5a5a5ffffffff ffffffffffffffffffffffffffffffffffffffffb5b5b50000007b7b7bffffffffffffffffffffffffffffffffffff080808000000000000313131ffffffffff ffffffffffffffffffffffffffffffffb5b5b5000000dededefffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121000000000000 000000000000000000000000000000000000000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808181818ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad101010ff ffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000dedede5a5a5a424242ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce cece000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece212121636363ffffffffffffffffffffffffffff ffffffffffffffffffffffffff737373525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000393939ffffffffffffffffffffffffffffffffffffffffffefefef4a 4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494 000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c0808080000 00000000d6d6d6ffffffffffffffffffffffffffffffffffffffffff000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd6d6d6000000393939ffffffffffffffffffffffffffffffffffff0808080000004a4a4affffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7f7f74242420000000000000000001818182929290000008c8c8c6363630000000000000000000000000000000000000000000000000000 00292929dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000efefefffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000000000006b4242ffde94ffffffffffff4294e7000000 000000390000ffe794ffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd0000006b0000ffffbdffffffffffff4294e7000000420000ff de9494e7ff000039000000bd6b00ffffff94deff000042000000e79442ffffffffffff3994de000000390000ffe794ffffff006bbd0000006b0000ffffbd94e7 ff000039000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdde000042000000 6b0000ffffbdbdffff00006b000000943900ffffe7ffffffffffffffffffffffff6bbdff000000000000ffbd6bffffffbdffff00006b000000bd6b00ffffffff ffff006bbd0000006b0000ffffbd94e7ff000039000000bd6b00ffffffbdffff00006b000000944200ffffdeffffffffffffffffffffffffffffff3994de0000 00390000ffe79494deff000042000000bd6b00ffffffbdffff00006b000000943900ffffe7ffffffffffffffffffffffffffffff006bbd0000006b0000ffffbd ffffff3994de000000390000ffe79494deff000042000000bd6b00ffffffffffffdeffff6b94bd000039000000000000946b42ffdebdffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff292929080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefef000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010181818ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffbdbdbd080808000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffadadad181818ffffffffffffffffffffffffffffff ffffff737373efefefffffffffffffffffff9494940000007b7b7bfffffffffffffffffffffffffffffffffffff7f7f7313131000000000000636363ffffffff ffff8c8c8c000000000000000000212121dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff636363000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b50808080000 00000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffefefef0000004a4a4affffffffffffffffffffffffffffffffffff000000000000000000 6b6b6bfffffffffffffffffffffffffffffffffffffffffff7f7f7000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce cece080808000000000000000000000000000000000000000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000f7f7f7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc6c6c6000000e7e7e7ffffffffffffffffffffffffffffffffffffffffff737373101010ffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff101010181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808000000000000525252ffffff ffffffffffffffffffffffffffffffffffffffffffadadad181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000007b7b7bffffffffffffffffffffffffffffffffff ffffffffffffff636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffcecece0000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffa5a5a50808080000007b7b7bffffffffffffffffffffffffffffffffffffffffff000000000000d6d6d6ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff393939080808ffffffffffffffffffffffffffffffffffff0808080000007b7b7bffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff8484845a5a5aadadadffffffffffff5a5a5a080808000000000000000000000000000000000000000000 000000000000000000000000212121dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff0000390000006b0000b5deb5de946bffffffbd ffff000063000000390000396b6bde9439ffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff0063b5000000630000ffffbdffffffffffff3994 de000000390000ffe79494deff000039000000bd6b00ffffff94deff000039000000de9439ffffffffffff3994e7000000390000ffde94ffffff0063b5000000 630000ffffbd94deff000039000000bd6b00ffffffffffff0063b5000000630000ffffbdffffffffffffffffffffffffffffffffffffffffffdeffff00399400 0000000000390000ffde94ffffff94deff000039000000bd6b00ffffffffffffffffffffffffffffff6bbdff000000000000ffb563ffffffb5ffff00006b0000 00bd6b00ffffffffffff0063b5000000630000ffffbd94deff000039000000bd6b00ffffff94deff000039000000b56300ffffffffffffffffffffffffffffff ffffff3994e7000000390000ffde9494e7ff000039000000b56300ffffff94deff000039000000bd6b00ffffffffffffffffffffffffffffffffffff0063b500 0000630000ffffbdffffff3994e7000000390000ffde9494e7ff000039000000b56300ffffffffffff006bbd000000943900ffffde6bbdde000000390000ffde 94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000101010ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000efefefffffffffffffffffffffffffffffff ffffffffffffffffffd6d6d60808080000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffcecece000000efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffefefef3939393131 31ffffffffffffffffffffffff7b7b7b000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6 080808000000000000000000080808dededeffffffffffffffffffffffffffffffffffffffffff000000080808ffffffffffffffffffffffffffffffffffff00 0000000000000000737373fffffffffffffffffffffffffffffffffffffffffff7f7f7000000adadadffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff949494000000000000000000000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5 a5000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffdedede000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffbdbdbd000000f7f7f7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff4a4a4a000000efefefffffffffffffffffffffffffffffffffffffffffffffffffd6d6d608080800000000000000 00000000006b6b6bffffffffffffffffffffffffffffffffffffffffffcecece000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000adadadffffffffffffffffff fffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff080808737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff8c8c8c000000212121ffffffffffffffffffffffffffffffffffffffffff000000000000adadadffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000c6c6c6ffffffffffffffffffffffffffffff0000000000009c9c9cffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c600000000000000000000000000000000 0000000000000000000000000000000000000000000000212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4294e7000000000000bd6b00ffff ff6b6bbdffffbd6bbdff000000000000bd6b00bdffff94426bffffdeffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd0000006b0000ffffbd ffffffffffff4294e7000000420000ffde9494e7ff000039000000bd6b00ffffff94deff000042000000e79442ffffffffffff3994de000000390000ffe794ff ffff006bbd0000006b0000ffffbd94e7ff000039000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffffffffffffffffffffffffffffffffffe7ff ff003994000000000000bd6b42ffffdeffffffffffffbdffff00006b000000000000000000000000000000000000e7944294deff000042000000ffbd6bffffff bdffff00006b000000bd6b00ffffffffffff006bbd0000006b0000ffffbd94e7ff000039000000bd6b00ffffffbdffff00006b00000000000000000000000000 0000000000de9439ffffff3994de000000390000ffe79494deff000042000000bd6b00ffffffbdffff00006b000000de9439ffffffffffffffffffffffffffff ffffffff006bbd0000006b0000ffffbdffffff3994de000000390000ffe79494deff000042000000bd6b00ffffff94e7ff000039000000de9439ffffffbdffff 00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000949494ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000000000000000393939ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ffffffffffffff ffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffdedede0000 00c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7ffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808087b7b7bffffffffffffffffffffffffffffffffffffff ffffffffff313131000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffff000000000000efefefffffffffffffffff ffffffffffffff000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffc6c6c6000000a5a5a5ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffa5a5a5181818000000000000000000000000000000000000000000000000000000393939ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff080808737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f70000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffff181818b5b5b5ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffff2929290000 00000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffdedede000000c6c6c6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000d6d6d6ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff525252636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd6d6d6292929525252f7f7f7ffffffffffffe7e7e7313131636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff424242000000dededeffffffffffffffffffffffffffffffffffff000000000000a5a5a5ffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7080808848484ffffffffffffffffffffffffffffff000000000000b5 b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000000000000000 00000000000000000000000000000000000000000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff003994000000 390000ffde94ffffff6bbdffdeb563006bbd000000000000ffb563ffffff0063b5ffbd6bffffffffffffffffff006bbd0000006b0000ffffb5ffffff0063b500 0000630000ffffbdffffffffffff3994de000000390000ffde9494deff000039000000de9439ffffffe7ffff003994000000b56300ffffffffffff3994de0000 00943900ffffdeffffff0063b5000000630000ffffbd94deff000039000000bd6b00ffffffffffff0063b5000000630000ffffbdffffffffffffffffffffffff ffffffffffff94deff000039390000ffde94ffffff94e7ffb56339ffffffffffff006bbd000000de9439ffffffe7ffff003994390000ffde94e7ffff00399400 0000de9439ffffffb5ffff00006b000000bd6b00ffffffffffff0063b5000000630000ffffbd94deff000039000000bd6b00ffffffffffff0063b5000000de94 39ffffffdeffff003994390000ffe794ffffff3994de000000390000ffde9494deff000039000000de9439ffffffffffff006bbd000000bd6b00ffffffbde7ff 003963390000ffde94ffffff0063b5000000630000ffffbdffffff3994de000000390000ffde9494deff000039000000de9439ffffff94deff000039000000de 9439ffffffbdffff000063000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010104a4a4affffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000000000000000000000000000000000101010393939ce ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f70808087373 73ffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000525252efefefffffffffffffffffffffffffffffff fffffff7f7f7000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a313131ffffffffffffffffffffff ffffffffffffffffffffffffff313131000000000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffffff000000000000cecece ffffffffffffffffffffffffffffff000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffff3939390000009c9c9cffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef8484843131311010100000000808082121215a5a5a4a4a4a0808080000 00cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff6b6b6b292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b636363 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7101010737373ffffffffffffffffffffffffffffffffffffffffff ffffff525252000000000000000000000000000000525252efefeffffffffffffffffffffffffffffffffffffff7f7f7000000a5a5a5ffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f78c8c8c636363848484e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5848484ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc6c6c6080808000000000000292929e7e7e7e7e7e7181818000000000000525252ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000a5a5a5ffffffffffffffffffffffffffffffffffff00000000 0000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a4a4a4affffffffffffffffffffffffefef ef000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede 0000000000000000000000000000000000000000005252524a4a4a3131310808080000000000000000000000005a5a5affffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b bdff000000000000944200ffffdeffffffdeffff4242940000390000006b0000ffffbdffffff6bbdffbd6b00ffffffffffffffffff006bbd0000006b0000ffff bdffffff006bbd0000006b0000ffffbdffffffffffff4294e7000000000000de943994e7ff000039000000ffbd6bffffffffffff94e7ff0000396b0000ffdebd bdffff00396b420000ffde94ffffffffffff006bbd0000006b0000ffffbd94e7ff000039000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffffff ffffffffffffffffffffffffffffe7ffff003994946b00ffffdebde7ff00006be79442ffffffffffff94deff0000426b3900ffffbd94deff000042943900ffff e7ffffff6bbdff000000944200ffffde6bbde7000000000000bd6b00ffffffffffff006bbd0000006b0000ffffbd94e7ff000039000000bd6b00ffffffffffff 94e7ff0000396b4200ffffbd94e7ff000039944200ffffdeffffff3994de000000000000e7944294deff000042000000e79442ffffffffffffbdffff00006b6b 0000ffe7bd6bbdff000000390000ffe794ffffff006bbd0000006b0000ffffbdffffff3994de000000000000e7944294deff000042000000e79442ffffffffff ff006bbd000000943900ffffe76bbdff000000390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b08 0808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000000000005a5a5aa5a5a5e7e7 e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff6b6b6b313131fffffffffffffffffffffffffffffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000dedede ffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000adadadffffffffffffffffffffffffffffff000000000000000000000000000000848484f7f7f7ffffffffffffe7e7e7424242000000000000a5a5 a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffdedede212121737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808525252ffffffffffffffffffffffffffffffffffffffffffff ffffefefef181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b313131ffffffffffffffffffffffffff fffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff0000007b7b7bffff ffffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000000000080808a5a5a5ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffdedede1010100000000000000000000000002929292929290000000000000000000000007b7b7bffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252528c8c8cffffffffffffffffffffffffffff ffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818ffffffffffff ffffffffffffefefef000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffefefef000000000000000000000000181818adadad424242b5b5b5ffffffffffffffffffb5b5b54a4a4a000000000000000000848484ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff006bbd000000000000de9439ffffffffffffffffff0063b5000000000000de9439ffffffffffffb5ffff6b006bffffb5ffffff63b5ff000000 0000006b0000ffffb53994de000000000000000000000000630000ffffbd3994de000000390000bdbd94003963000000946339ffffe7ffffffffffffffffffbd e7ff0039630000000000006b3900ffdeb5ffffffffffff6bbdff000000000000630000e7ffbd003994000000000000bd6b00ffffff3994de0000000000000000 00000000630000ffffbdffffffffffffffffffffffffffffff94deff00396300000094633994dedede9463ffffffffffffffffffb5deff393994000000000000 b56339ffffe7ffffffffffffffffff94e7ff003963000000390000e7bd6b63b5debd6b39ffffff6bbdff000000000000630000e7ffbd003994000000000000bd 6b00ffffffffffffffffffbde7ff393994000000000000bd6b39ffffdeffffff63b5ff00000000000039000094b59400396b000000946b39ffffdeffffffffff ffffffffb5deff396b94000000000000390000e7bd6bffffff6bbdff000000000000630000ffffbd63b5ff00000000000039000094b59400396b000000946b39 ffffdeffffffffffffdeffff3994b5000039000000000000000000000000000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffcecece000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000000000a5a5a5 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818000000000000313131efefefffffffa5a5a5080808080808c6 c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd6d6d6000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72929290000005a5a5affffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff2929298c8c8cffffffffffffffffffffffffffffffffffffffffffffffffadadad000000000000737373ffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000009c9c9cffffffffffffffffffffffffefefef000000000000000000000000000000000000080808292929292929000000000000 000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd6d6d6313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a7b7b7bffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808424242ffffffffffffffffffffffffffff ffffffffffffffffffffffffff949494cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000dededeffff ffffffffffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000005a5a5afffffffffffffffffffffffffffffffffffffffffff7f7f7212121000000000000000000000000000000000000adadadffffffffffffffffffff fffffffffffffffffffffff7f7f7000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000000000000000000000000000000000000000000000000000000000000000000000 00bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffff ffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e700 0000efefefffffffffffffffffffdedede000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff080808000000000000101010d6d6d6ffffffadadad313131ffffffffffffffffffffffffffffffcecece313131000000 000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff94e7ff0000390000006b0000ffffbdffffffffffffbdffff00006b000000420000ffde94ffffffffffffffffff3994dee79442ff ffffffffffffffffffffffffffffffffffffffff6bbde70000396b0000ffffbdffffffffffff4294e7000000420000ffde94ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 6bbde70000396b0000ffffbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff313131525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84848400 0000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e71818180000000000000000000000004242429c9c9c0000 00000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff5252527b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef737373f7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffadadad6b6b6b7b7b7badadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffbdbdbd7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5393939ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffefefef00000000000000000000000000000000000000000000000000 0000000000000000000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffadadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d67b7b7bffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010313131ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5252527b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef737373f7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff080808424242ffffffffffffffffffffffffffffffffffffffffff737373000000000000000000000000000000000000000000080808e7e7 e7ffffffffffffffffffffffffffffffffffffefefef000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000000000000000000000000000080808000000000000000000 000000000000292929dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff292929cececeffffffffffffffffffe7e7e7000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000949494ffffffffffffffffff181818a5a5a5ffffffffffffffffffffffffff ffffffffff848484080808212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffe7ffff003994000000000000bd6b39ffffffffffffdeffff006bbd000000000000b56300ffffffffffffffffffffff ff94e7ffb56339ffffffffffff6bbde7000039943900ffffdeffffffffffff6bbdff630000ffffbdffffffffffff3994de000000390000ffde94ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff6bbdff630000ffffbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63b5de000039943900ffffe7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff9c9c9c000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000 000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d67b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808313131ffffffffffffffffffffffffffffffffffffffff fffffffff7f7f7393939000000000000000000000000181818bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffdedede0000000000000000000000000000000000 00000000000000000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000018 1818949494d6d6d6fffffffffffffffffffffffffffffffffffffffffff7f7f7737373292929080808292929848484ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffcecece7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff080808313131fffffffffffffffffffffffffffffffffffff7f7f7080808000000000000000000000000000000000000 0000000000005a5a5affffffffffffffffffffffffffffffffffffe7e7e7000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede1010100000000000000000006b6b6ba5a5a500 0000000000000000000000393939f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffe7e7e7000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000080808ffffffffffffffffffffffff848484101010f7f7f7ffff ffffffffffffffffffffffffffffffffb5b5b5101010636363ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff003994000000000000000000000000bd6b0094deff0000420000000000000000000000006b0000 ffffbdffffff4294e7000000000000943900ffffe76bbdff000042943900ffffe7ffffffffffffffffff9494e7ffffbdffffff6bbdff000000000000420000ff de94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff9494e7ffffbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000039944200ffffde ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929848484ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff181818000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b00000000000000 0000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808081010109c9c9ccececeffffffffffff ffffffffffffffffffffffff6363630000000000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffe7e7e7000000000000000000 4a4a4a000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7000000000000000000000000313131c6c6c6ffffffffffffffffffffffffe7e7e72121210000000000000000000000000000004a4a4affffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff080808212121ffffffffffffffffffffffffffffffffffffbdbdbd00000000000000000000000000 0000000000000000000000000000080808dededeffffffffffffffffffffffffffffffdedede000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c61010100000004a4a 4affffffffffff9c9c9c080808000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000000000f7f7f7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000525252ffffffffffffffffffffffffefefef 080808636363ffffffffffffffffffffffffffffffffffffffffffc6c6c6101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff00000000 00008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b57b7b7bffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff4a4a4a000000000000000000525252a5a5a5000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f700000000000000000000 0000292929c6c6c6ffffffffffffffffffd6d6d6000000000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffe7e7e700 0000000000000000bdbdbd949494000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffbdbdbd9c9c9cd6d6d6ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc6c6c6000000000000000000000000000000080808a5a5a5ffffffffffffffffff42424200000000000000000000000000000000000000 00007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000181818ffffffffffffffffffffffffffffffffffff8484840000000000 000000000000000000000000000000000000000000000000007b7b7bffffffffffffffffffffffffffffffe7e7e7000000000000f7f7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c6c6c6292929e7e7e7ffffffffffffffffffb5b5b5212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000000000efefefffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000007b7b7bffffffffffffff ffffffffffffffff6b6b6b000000949494ffffffffffffffffffffffffffffffbdbdbd6b6b6b181818292929ffffffffffffffffffffffffffffffffffffffff ffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000101010efefefffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60000 00000000000000000000000000000000adadadffffffffffff737373000000000000000000000000000000000000000000000000000000101010e7e7e7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffff ffffffffefefef000000000000000000949494ffffffdedede636363212121080808393939a5a5a5ffffffffffffffffffffffffffffffffffffffffff949494 2121210000001818186b6b6bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000000000000000a5a5a5ffffffd6d6d60000000000000000000000000000 00000000000000000000080808efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000080808212121636363c6c6c6ffffffffffff 7373730000000000000000001818189c9c9cefefeff7f7f7adadad212121000000212121ffffffffffffffffffffffffffffffe7e7e7000000000000f7f7f7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000e7 e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121218484 84ffffffffffffffffffffffffffffffefefef0808080000006b6b6bd6d6d6cecece9c9c9c292929000000000000000000000000949494ffffffffffffffffff ffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000393939ffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff9c9c9c000000000000000000000000000000000000000000adadadffffff39393900000000000000000000000000000000000000000000000000000000 0000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000008c8c8c ffffffffffffffffffffffffefefef000000000000313131313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc6c6c65252520000000000004a4a4ae7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000000000000000000000000000000000000000101010dedede848484000000000000 000000000000000000000000000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c00000000000000000000000000000000 00004a4a4af7f7f7636363000000000000000000bdbdbdfffffffffffffffffffffffff7f7f7393939000000dededeffffffffffffffffffffffffefefef0000 00000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff080808000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff8484846b6b6bffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000101010f7 f7f7ffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000424242f7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffa5a5a5000000000000000000000000000000000000000000080808e7e7e71818180000000000000000000000000000000000000000 000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede4242428c8c8cffffffffffffffffffffffffffffffbdbdbdf7f7f7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 1818000000848484ffffffffffffffffffffffffffffff000000000000adadad000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffcecece393939000000181818cececeffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d600000000000000000000000000000000000000000000000042424263 6363000000000000000000000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a50000000000000000 00000000000000000000000000292929848484000000000000292929ffffffffffffffffffffffffffffffffffffefefef101010a5a5a5ffffffffffffffffff ffffffffffff000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff101010000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffefefef4a4a4affffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000000000000000000000000000002121217373 73848484292929c6c6c6ffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484 000000000000101010848484d6d6d6f7f7f7f7f7f7efefefd6d6d6c6c6c6adadadadadadd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd6d6d6000000000000000000000000000000000000000000000000393939080808000000000000000000212121 adadadf7f7f7f7f7f7dedede848484181818000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010000000000000737373ffffffffffffffffff5252 52000000292929efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff424242000000848484ffffffffffffffffffffffffffffff080808000000dedede424242080808c6c6c6ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000000000181818efefefffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef1010109c9c9cefefefffffffcecece6b6b6b0000 000000000000004242420000000000000000001010106b6b6b636363000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6 000000000000000000000000000000000000000000000000393939000000000000636363ffffffffffffffffffffffffffffffffffffffffff8c8c8c6b6b6bff ffffffffffffffffffffffffffff000000000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff292929000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff8c8c8cfffffffffffffffffffffffffffffffffffffffffff7f7f77373730808080000000000004a4a4a b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff6b6b6b000000000000000000000000000000000000000000000000000000000000000000000000949494ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818949494f7f7f7ffffffd6d6d663636308080800000000000021212100000000 0000181818efefeffffffffffffffffffffffffffffffff7f7f75252520000007b7b7bc6c6c65a5a5a0808084a4a4adededeffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede101010000000000000000000000000848484 ffffff424242000000000000000000212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff848484000000848484ffffffffffffffffffffffffffffff101010000000d6d6d6dedede080808101010bdbdbdffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000001010107b7b7b3939398c8c8cffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffb5b5b5000000000000181818000000000000080808cececeffffffffffffadadad000000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f7181818949494f7f7f7ffffffefefefadadad4242420000000000001010100000006b6b6bffffffffffffffffffffffffffffffffffffffff ffe7e7e74a4a4affffffffffffffffffffffffffffff181818000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0808080000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff424242000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000008c8c8cffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff8c8c8c080808000000000000000000000000000000000000000000000000000000000000080808d6d6d6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b50808080000 001818180000000000007b7b7bfffffffffffffffffffffffffffffffffffffffffff7f7f7080808000000000000000000000000000000101010cececeffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff31313100000000000000000000 0000000000000000393939000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000848484ffffffffffffffffffffffffffffff292929000000cececeffffff9494940000 00080808949494fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000dededeffffffe7e7e7 313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffb5b5b5000000000000000000000000424242ffffffffffffffffffffffff212121000000181818ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000001818180000006b6b6bffffffffffffffffffffffff ffffffffffffffffffffffffcececeffffffffffffffffffffffffffffff292929000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000848484ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e773737329292908080810101000000000000000000000000000000000000000 0000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffadadad080808000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c00000000000000000000000000000000 0000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939390000 00000000000000000000000000393939000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242737373ffffffffffffffffffffffffffffff424242000000bdbdbd ffffffffffff525252000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52525294 9494ffffffbdbdbd101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000001010100000007b7b7bffffffffffffffffffffffff8c8c8c0000007b7b7b ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000004a4a4affffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000c6c6c6ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000008c8c8cffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000009c9c9cffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff42424200 00008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000 00000000000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff6b6b6b000000080808000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000 00000000000000000000000000181818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffe7e7e71010100000000000000000005a5a5affffff6b6b6b000000000000000000000000181818cececeffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd5a5a5affffffffffffffffffffffffffffff63 6363000000b5b5b5fffffffffffff7f7f7393939000000000000292929dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffdedede101010000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121080808000000949494ffffffffffffffffffffffffff ffffdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef1010100808 08292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000adadadffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000007b7b7bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000848484ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff8484840000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000 000000000000000000000000000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff181818101010000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc6c6c68c8c8cd6d6d6adadad000000000000000000292929cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd6d6d6101010000000525252ffffffffffffffffff4a4a4a000000000000181818dededeffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5ffffffffffffffff ffffffffffffff8484840000009c9c9cffffffffffffffffffefefef292929000000000000080808a5a5a5ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc6c6c62121210000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000008c8c8cffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff848484181818000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000a5a5a5ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000006b6b6bffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18181852 5252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffff ffffffffe7e7e7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffdedede0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff181818000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000848484ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff2929290000001818180000000000000000002121214a4a4a848484bdbdbdffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000c6c6c6ffffffffffffffffffffffff525252080808cececeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc6c6c6000000848484ffffffffffffffffffffffffefefef393939000000000000000000636363f7f7f7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818101010 5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f7101010000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6 c6000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff39 3939393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff737373181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818000000000000 292929f7f7f7ffffffa5a5a5000000101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff393939393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff9494940000000000000000000000000000000808088c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121211010104a4a4affffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000a5a5a52929290000002929296b6b6b393939000000000000080808 525252adadadffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808000000080808cececefffffffffffff7f7f75252520000007b7b7bff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff181818525252fffffffffffffffffffffffffffffff7f7f75252520000000000000000002929 29d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff8c8c8c212121212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff949494b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff1010105a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffbdbdbd080808efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefef080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e718181800 00000000000000000000004242429c9c9c000000000000000000101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7f7f7313131000000000000000000101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484292929000000f7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0000008c8c8ce7e7e72121210000009c9c9cfffffff7 f7f7a5a5a5525252000000000000181818a5a5a5ffffffffffffffffffffffffffffffc6c6c6080808000000000000000000080808d6d6d6f7f7f73131310000 000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373181818ffffffffffffffffffffffffffffffffffffffffff848484 000000000000000000080808a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffe7e7e7181818000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff7b7b7b181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff525252e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff9c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff525252000000000000000000000000000000000000000000000000000000000000000000181818e7e7e7ffffffffffffcecece212121636363ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede1818180000000000007b7b7bffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef18 1818000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010104a4a4affffffd6d6d61010 10000000cececeffffffffffffffffffe7e7e76363630000000000005a5a5afffffffffffffffffff7f7f7101010000000000000000000000000000000212121 4a4a4a0000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808cececeffffffffffffffffffffffffff ffffffffffffffffc6c6c6181818000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff7373736b6b6bdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000000000000000000000000000008c8c8cffffffbdbdbd08080800000000 0000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece101010000000181818a5a5a5ffffffffffffffffff ffffffffffff525252080808000000292929737373c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff737373d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a181818 ffffffffffffc6c6c6080808101010e7e7e7ffffffffffffffffffffffffadadad0808080000005a5a5affffffffffffe7e7e708080800000000000000000000 0000000000181818000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9cd6d6d6ffffffffff ffffffffffffffffffffffffffffffffffffffefefef4242420000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000000000004a4a4aadadad0000000000000000000000000000008c8c8cffffffd6d6d60808 080000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d621212100000000000010 10104242424242422929290000000000000000000000000000000000000000003131319c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff949494000000e7e7e7ffffffffffffadadad000000292929f7f7f7ffffffffffffffffffffffffa5a5a5000000000000c6c6c6ffffffffffff9c9c9c0000 00000000000000000000737373f7f7f7292929000000000000000000000000212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484080808000000000000424242ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000424242ffffffffffff9494940000000000000000009c9c9cffffff ffffff292929000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef ef4a4a4a000000000000000000000000000000000000000000000000000000000000000000000000000000000000181818a5a5a5ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd6d6d6000000a5a5a5ffffffffffffffffff8c8c8c000000313131f7f7f7fffffffffffffffffff7f7f7000000000000636363ffffff ffffffffffff8484840000000000006b6b6bffffffffffffdedede181818000000000000212121efefefffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5101010000000000000636363ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c0000007b 7b7bffffffffffffffffff525252000000000000000000000000000000525252efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff9c9c9c1010100000000000000000000000000000000000000000000000000000000000000000000000000000000000002929299c 9c9cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff292929636363ffffffffffffffffffffffff313131000000292929e7e7e7ffffffffffffa5a5a500000000 0000393939ffffffffffffffffffffffff9494944a4a4affffffffffffffffffffffffd6d6d6181818101010e7e7e7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede212121000000 000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd6d6d6fffffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7f78484842121210000000000000000006b6b6b4a4a4a0000000808089494946b6b6b2929290000 00000000000000000000000000292929636363adadadf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c101010ffffffffffffffffffffffff4a4a4a0000000000000808085a5a5a4a4a 4a000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7cececeffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffe7e7e72929290000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72929290000005a5a5affffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7c6c6c6e7e7e7ffffffffffff393939000000848484 ffffffffffffe7e7e78c8c8c212121000000000000212121393939000000080808525252bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000a5a5a5ffffffffffffefefef080808000000000000 000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffe7e7e7181818000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 f7f7101010080808e7e7e7ffffffffffffffffffffffffadadad212121000000181818b5b5b5737373101010000000292929a5a5a5ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a1010109c9c9c9c9c9c21212100 0000000000000000000000101010000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff9c9c9c000000525252ffffffffffffffffffffffffffffffffffff7b7b7b080808080808c6c6c6f7f7f78c8c8c080808000000292929 cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0808080000 000000000000000000000000000808084242420000005252525a5a5a7b7b7bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363bdbdbdffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff313131000000a5a5a5ffffffffffffffffffffffffffffffffffffbdbdbd101010080808cececeffffffe7 e7e75252520000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff9c9c9c0000000000000000000000000000009c9c9cf7f7f7313131000000525252e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000080808dededeffffffffffffffffffffffffffffffffffffcecece1010 10181818f7f7f7ffffffffffffadadad1010100000004a4a4af7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffadadad292929080808292929a5a5a5ffffffffffffefefef393939000000101010848484ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000212121efefefffffffffffffffffffffffff ffffffffffff8c8c8c0000004a4a4affffffffffffffffffd6d6d6292929000000313131efefefffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f75a5a5a000000000000101010848484 efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000292929efefefff fffffffffffffffffffffffffffff7f7f7000000000000bdbdbdffffffffffffffffffefefef313131000000292929efefefffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a510 10100000000000000808086b6b6be7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000 00000000181818cececeffffffffffffffffffffffffefefef0000000000005a5a5affffffffffffffffffffffffefefef313131000000313131f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffefefef737373101010000000000000000000636363e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff b5b5b50000000808082121210000000000006b6b6bcececeffffffe7e7e7636363000000000000212121ffffffffffffffffffffffffffffffe7e7e718181800 00004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7f78c8c8c2121210000000000001010109c9c9cffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffcecece000000000000bdbdbd181818000000000000000000000000000000000000000000000000292929ffffffffffffffffffffffffffff ffffffffcecece080808000000525252f7f7f7f7f7f78c8c8c9c9c9cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff949494ffffffffffffffffffffffffffffffffffffffffffb5b5b54a4a4a000000000000848484ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f7000000000000a5a5a5dedede2121210000000000000000000000000000000000000000004a4a4affffffffffff ffffffffffffffffffffffffffffff949494000000000000212121525252000000000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff4a4a4a7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6424242000000bdbdbd ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000007b7b7bfffffff7f7f7525252000000000000000000000000000000000000bd bdbdffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000212121efefefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000848484ffffffffffffffffffffffffffffffffffffffffffffffffff ffff080808393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000005a5a5affffffffffffffffffcecece7373734242423939 394a4a4ab5b5b5fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121000000000000000000000000000000000000636363ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000001818185a5a5a7373738484848484847b7b 7b6b6b6b525252101010000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000393939ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808000000000000636363efefef8c 8c8c000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000000000000000 000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000212121ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece3939393939 39e7e7e7ffffffffffff8c8c8c5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a 5a5a000000000000000000000000000000000000000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000 00212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff636363efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc6c6c65a5a5a1818180000000000000000000808082929294242428c8c8cf7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff181818000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff212121000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff181818000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000ffffffffffffffffffffffffcecece292929636363ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000ffffffffffffffffffbdbdbd1010100000000000 00525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242 f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000ffffffffffffcecece080808 0000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d618 1818000000000000313131f7f7f7ffffffa5a5a5080808101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000ffffffff ffff292929000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffcecece292929636363ffffffffffffffffffffffffffff ffe7e7e72121210000000000000000000000004242429c9c9c000000000000000000080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000 00000000ffffffffffff4a4a4a0000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffffbdbdbd0808080000000000004a4a4affffff ffffffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000181818e7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff4a4a4a000000000000fffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffcecece10101000000000000000 00000000006b6b6bffffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000000000000000000000000000008c8c8cffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff7b7b7b000000000000ffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffff2929290000 00000000000000000000000000000000b5b5b5ffffffffffffffffff4a4a4a0000000000000000004a4a4aadadad000000000000000000000000000000848484 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffbdbdbd000000000000ffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffffff ffffff5252520000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffff424242000000393939ffffffffffff94949400000000000000 00009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000efefefffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffff7b7b7befefefffffffffffffffff ff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000c6c6c6ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefef2121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f72121216b6b6bffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c67b7b7bff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000040000002701ffff030000000000}}}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid866332 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1384200 \hich\af143\dbch\af0\loch\f143 6.8.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid7553735 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1384200 Kerning}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid7553735 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086\charrsid6310410 collision avoidance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 , automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086\charrsid6310410 \:kerning}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7553735 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7493554 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177 Setting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3437177\charrsid7157300 AutoKern = true }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7493554 in a pass\rquote s directives c}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177 auses the automatic kerning algorithm to be ru}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7275025 n. }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid7275025\charrsid7275025 As well, }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs30\i\f2\fs20\insrsid7275025\charrsid7275025 C }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs30\i\f2\fs20\insrsid3437177\charrsid7275025 ollisionFix}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7493554 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4728086\charrsid14491932 CollisionFix}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs30\i\f2\fs20\insrsid3437177\charrsid7275025 }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid3437177\charrsid7275025 must be }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid7275025\charrsid7275025 set to something greater than zero}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid5534672 }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid3437177\charrsid7275025 for kerning to be achieved}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid3437177 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177\charrsid3437177 even if no shifting is needed.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3437177 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12014603 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8727424 The kerning mechanism}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7556628 applies}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6504638 \'93positive kerning,\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8727424 add}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6504638 ing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8727424 space }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9385658 after}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 a base glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6504638 ,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 to avoid a collision with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9385658 following}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 glyph. It will automatically take into account any glyphs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 such as nuqtas or diacritics}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 that are attached to the base glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 . To indicate that a glyph should be kerned, set the KERN flag in the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid9652667\charrsid9652667 collision.flags }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 attribute.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7275025 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7275025\charrsid7275025 collision.margin}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12014603 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5451268 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5451268 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid5451268 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid5451268 on.margin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5451268 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7275025\charrsid7275025 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7275025 attribute indicates how much space should be left.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12014603 Note that the START and END flags do not affect kerning, since it is assumed that kerning may very well need to take place over an intervening space.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12780249 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14812606 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7275025 The kerning algorithm is also smart }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5794 about intervening space characters}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15149892 , and will ensure that the kerning includes both what is necessary to fix the collision as well as the width of the space}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11742721 itself}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15149892 (even if there is no }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 actual }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15149892 collision }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15026686 when}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15149892 the space}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15026686 is}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15149892 present). The IS-SPACE flag c}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11742721 an be used to mark }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14812606 any}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11742721 glyph that should be treated this way}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14812606 (such as a visible representation of a space character).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12066819 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6507790 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12066819 The figure below shows examples. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 In e}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7161910 xample}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 (a)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7161910 , kerning space is added to avoid the collision between the noon ghunna and the triple }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4476740 nuqat }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7161910 of the peh}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6507790 (which completely fills the space between the two words and more)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7161910 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 I}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 n }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12066819 example}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 (b)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12066819 , although there is no collision between the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 two }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12066819 words}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12066819 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 he triple nuqat }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11106424 would }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6507790 still }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 obsc}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11106424 ure}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7161910 the presence of the space, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9593153 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7161910 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 he }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9593153 kerning }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 algorithm adds }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9593153 horizontal}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4025037 space }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11106424 reflect it.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7275025 \par }\pard \ltrpar\s24\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4270419 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4270419 {\*\shppict {\pict{\*\picprop\shplid1031{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}} \picscalex80\picscaley80\piccropl0\piccropr0\piccropt0\piccropb0\picw17117\pich6615\picwgoal9704\pichgoal3750\pngblip\bliptag-9130654{\*\blipuid ff74ad62b370f0ff9ce1c39b29569486} 89504e470d0a1a0a0000000d4948445200000287000000fa0806000000d337edd4000000017352474200aece1ce90000000467414d410000b18f0bfc61050000 00097048597300000ec400000ec401952b0e1b0000481a49444154785eeddd099c4d75ff07f09f50124f495424db50066da49ab13c3c654b598a47597b3013f1 685359ca53a44569a61092648d64ab1949b28452da24c94c94ed9f3d8a16e5fccfe77b7fe7ccbd77ee3a77997be77edeafd771cff9dd73ef3df78efbbbdfdf5e cc30292222222222d319fa968888888888c12111111111e561704844444444360687444444446463704844444444360687444444446463704844444444360687 44444444646370484414a34e9e3ca9f78888a287c12111518c7af8e187f51e1151f470f93c22a218f4c1071fa81b6fbc519d3e7d5aa710114507834322a21893 9393a3525353d5c1830715b368228a36362b1311c5906ddbb6a9162d5a4860989494a4538988a287c12111518c58b56a95d418eed9b3478ec78c1923b74444d1 c4e090882806646666aa962d5baa23478ec871bf7efd54e7ce9d659f88289ad8e79088a8101d3b764cf5eddb572d58b040a728d5a54b17357bf66c55a244099d 4244143dac3924222a249f7efaa9bae69a6b5c02c3fefdfbab3973e6303024a242c3e0908828cad0603376ec58e95fb863c70e492b59b2a49a3469929a3871a2 2a5ebcb8a411111506362b131145d1f1e3c755cf9e3dd592254b748a52d5aa5553f3e6cd538d1a35d22944448587c121115194ecdcb953b56edd5a6ddfbe5da7 28d5a14307356dda3455ae5c399d424454b8d8ac4c4414055bb76e558d1b37b603c352a54aa9091326a8458b16313024a298c29a4322a208434088fe85870e1d 92e3e4e4646946ae57af9e1c1311c512d61c121145d0810307a429d90a0cfbf4e923a39419181251ac62cd211151849c3a754a3569d2446ddcb851952e5d5a46 23f7e8d143df4b44149b58734844142123478e94c0b06ad5aaeaa38f3e6260484471813587444411b06edd3ad5ac593355bf7e7df5eebbefaa8b2eba48df4344 14db181c12118519b255ac7cf2ebafbfaaf5ebd7ab8a152bea7b8888621f9b958988c20ceb226fdebc59cd9a358b812111c51dd61c121185d1e9d3a755ad5ab5 54ddba75d5d2a54b752a1151fc60cd21115118ad58b142d64beed4a9934e21228a2f0c0e8988c2084be1c1d5575f2db74444f186cdca44446172e2c40955be7c 79f5c71f7fa883070faa0b2eb840df4344143f58734844142658f90481219c7beeb9724b4491b376ed5ad5ad5b3755a9522555ac58317b2b53a68cf4fd6dd9b2 a57ae69967d4c99327f5232810ac3924220a93a79e7a4a0d1b364c9d79e69976904844e1875afabe7dfbaa37de7843a7f83663c60c4e421f04d61c121185c927 9f7c22b7e79c738edc86aa6bd7ae7a8f882c2878b569d326e0c010d8c52338ac3924a288f9e9a79fd4debd7b5583060d744ad1d6a85123695abef8e28bd5be7d fb746ac160559576eddaa9bffefa4ba710110c1c38504d983041be674d9b3655975c728914c88a172f2ecdc7987c7ef7eeddb26425fafe426e6eaeaa59b3a6ec 937f0c0e892862d017085bdbb66d754ad1863e4ef811aa52a58adab56b974e2d98c68d1bcb4a2b586185881cb056794a4a8a7aecb1c7d4d0a143a50b8737bfff febbd418d6a953470a6d1438362b1351447cf7dd77d2ec93482b841c3d7a546e5183118aad5bb74a5078c51557e8142282471f7d543df8e0836ae4c8913e03c3 afbefa4ab56edd5a6a12478f1ead5329500c0e892822264f9e2cab85942d5b56a7147d68ce82509b82172c5820b7152a54905b2272e8d0a1831a356a943e7285 fc262b2b4b8242cc33ba66cd1af5bffffd4fb56ad54a9f4181627048446187e6d0b973e7cabeafd27d61397cf8b0de0b2fab974ea8fd0d57ad5a25b7b1f8d911 15a6010306e4fb5e1c3972443dfbecb32a292949fae92e5fbe5c952e5d5a0aa8687ea6e03138240a939f7ffe59efd1e6cd9b65300a9c71466c6533e8a08e66a9 48420d06fa3b15d4b66ddbf41e117973e8d02175df7df7a94b2fbd543dfcf0c36ae7ce9dd2a503fd9cd135232d2d4d9f49c16270481406fff77fff27a3e6c8e1 b3cf3ed37b4a95285142efc586279f7c52952a554a1f45ce9e3d7bf49e77c78f1fd77baef6efdfaff788c893e9d3a74b4d61464686cc7988ef3482c16fbffd56 cd9a354b02462a38068744613062c408f5db6fbfe9a3f813eed503befffe7bbda7d459679da5f70a1f82b1575e79459d77de793a25bc506368d9be7dbbdef3ee 81071ed07bae3889049167c867bb74e9a2eebaeb2e75ecd831198d8c7e85981d00cdc89831205c7ef9e517f5e28b2faa162d5a48ffdf92254bcaca47988da05e bd7a2a353555e65bc47ca4084cfbf5eba7eebfff7ef5f7df7feb67885f0c0e89c2e09d77de91259be21556f6c07b0817d4a45a626919390cf440201ca99a43e7 a0eee38f3fd67b9e6164f30f3ffca08f88c8e2ad4b069a919b376faede7cf34d19e8865600342563e472b8076f213f44a03978f060e9038cd7c640331430d12a f0cd37dfa80d1b36c87ca4f3e6cd9342e7d4a953d5c2850bed590be2198343a2304066106b7deb82f1de7befa9e4e4647d143a6bc0076ae850da8e15789f10ea 54339e203074ae3158bc78b1def3ec89279ee0a4bc441a0242f4052e5fbebc3afbecb355e5ca95d5f8f1e3f5bd4a6a0931ea18f31cb66fdf5e9a8fb15425d650 0eb73973e6a85b6fbd35a8ee1db86604a9b8aea2b01a0b8343a23040736224028e6840668652718d1a35744ae8ac5509aa55ab26b7b162d3a64d7a2ffcacda0e ab06f9ebafbf56f3e7cf977d77a865c8cccc94155588121d6ae4108c3dfffcf332f21830e27fd0a0416adcb87192bfde76db6deacb2fbf94560e14bc103c46c2 962d5ba4c91a30d936f6d15c8cd76fd2a4893427634516672d5bb694013068de469058143038240a03d418c5c3b423e843e3debf10355818dd174e56891b2b13 c492480ef4b07ed49c3bc2f7ead54b8d1d3b569aa1fefcf34f19c58d34f44f424d63b366cdf49944890b7db657ac58a18f5ca1360ed3d4ac5cb9526a0e711ef2 abf7df7f5f9f115ef86ea23919412226a29f366d9a9a32658a744959bb76ad2cc9872011d032828131983a27d60ac221333328220a811918a2a39961fed0eb94 d8640685c6e5975f6e98a561e3d75f7f95b4a953a71ac58a153376ecd821c7e16096f20db3f42c9f8959ead7a9b101d7846dd4a8513a257c366edc28cffdc003 0f18254a94b05fcbdb66fe00e947e6679d1389eb248a25b9b9b98659b036ead6ad6b6465651973e7ce359293935dbe2b9d3a75324a952ae59276c6196718ab56 add2cf92c72c8419478f1ed547ae264d9a642c5ab4481fe587d7bff0c20b8d7dfbf6e914575f7ffdb5e4a178fda64d9b1a3ffef8a3bea7e861cd2151884e9d3a 25b72839625a858b2eba4855ad5a553a2cc71294c0317f1e3a51a376cbcce454dfbe7d65d2d8ead5abebb3fc432d183a5da3d9d4130c46b1466e17859509fcbd 5fcbe79f7f2eb768860aa44610231c8912dd73cf3d27b5e866d0266bb0e37b819a38e7590ef0fd731fa482a6e6975e7a491f39a07b0c9a826fbae9263b5fb60c 1f3e5cdd7df7ddaa77efdeb2b4a72768129e316386baf8e28b754a9ed5ab57abebaebb4ef2d0471e794406a914e9e9721c31221115144a8ff82a9941a151b264 49c3cc58e478d0a041fa8cc2b764c912a921c475396fa54b9736cccc4e9fe5df8a152b5c4af043870ed5f7e459b66c99dc57a54a159d123baceb0eb4462e90f7 6b418d6cc3860d657fe6cc99f6633c6da859f455eb609dc79a432acacc42a471de79e71966814aa7e4310331fb7b50b97265e389279e90ef1fceb7d2afbcf24a 7db6611c3e7cd8a5c6b167cf9ed28a014f3df5949d8ecd0cea8c9c9c1cb92f109f7efaa951b66c59691159b060814e8dae6fbef9c6c8c8c830de78e30de3afbf fed2a991c3e0902844082090e1a4a6a64a730432a41a356a18a3478fd667846ecf9e3d7acfbfeddbb71bddba7533d2d2d28c091326180f3df490ddcceb1c2006 9bd1992577c9a4adc75b1b024f678f3efaa8a4e375638d75cd81045d81be5fb082c137df7c538efff8e30f098edd1f6b6dfdfaf593f3bcb1ce63704845d9ac59 b3e4fff9871f7ea8531cf0fda954a992dcd7a44913e3c89123fa1ec358b3668dfdfd409e0ba74e9d926e3d56bab575edda559a8a3d158c2b54a820f7f9b375eb 56a37cf9f21294ba5f67b4ac5ebd5a2a1eac6bc77b45fe14490c0e292121f309978103071a494949c6b163c7e478cb962dd26fe5a79f7e92e35021d8ac53a78e b174e9529de2dd575f7d659c7ffef92e99a0b5e19a505a46291841e1ae5dbbf4a3028312aba7e76dd0a0813ec3a15ebd7a46f1e2c58d1f7ef841a70407ef1301 662458d73c66cc189de25da0ef179f25fa4ca12f12fa9f5a10287a7a3c6a980f1e3ca8cff2cc3a17351e44f1ce5be1f65ffffa970469560d1fa036b15dbb76f2 ff1f41d0891327f43d0ea821b4be1ff7dd779fa479fbae6243df444fe9d89a376f2e8ff70601186a23516bb869d3269d1a5df86c6ad7ae9defda1f79e4117d46 643038a4848426dfd75e7b4d1f15dcdebd7ba554f9d1471f199f7df69971efbdf74a09f3edb7dfd667840ec1073203bc862fa831ac58b162be4c041b02460485 a1e8dcb9b3c7e7c6f6dd77dfc939ebd7af97e33befbc538e836505c24f3ef9a44e092feb7a5f7ae9259de29dbff78bda8a871f7ed8ae954073babb61c386b93c 0e01fae79f7faeeff5ce3affc5175fd4294479c259b88d346f85db03070e4821b2478f1e3ac5307ef9e517a3458b16f27fbf7efdfac6cf3fffacefc9833c16f7 a36b066af50005710499d6f7c67943e1bd63c78ef9d271bebf817843860c91d741eb506179fffdf7f35d3b36b4fc781b78130e31151ca6b9bdf9948c1c233bcd 354da914c34c1679f7a519d9468e9191e27abfbb9c8c147dbe32d2b2756294395f838afa45f8ff8c1245cd9a3543aa9541e9f6e38f3f361a376e6c9c73ce39f2 a38fbf69f5ead5a509205c8e1f3f6e54ad5a5532028cc2f30699a4d50c839a3b942aafbffe7ae95388ccd60ade0a0a193c8260fbffaedb3679f26439ef9ffffc a7bc66b0b5929677df7d579e0f816e2458d7fbfaebafeb14cffcbddfa79f7edab8e1861bec638ca6f4e69d77de9166647433f0576368b19ef7d5575fd5294479 c255b88d066f85db2953a6483a4627039a8e9167210d79d9eeddbb25dd821a447495b1be1b999999fa1e07cc1680bcc7ba1fdb4d37dd24f926666a68d9b2a59d 7eeeb9e7caf9bee07a51eb18482b4324dd73cf3d2eefc9798b64fe105b35873919468af5c69d02a79c6ceb3f847b5063063b6919e6bf7adf53e0633e6786fd54 d639110e0e5d5e333f3ba8657058281028e1f39f3871a24e090e4abc284d22e340508820213d3d5d9a11c3dd0fa457af5e72adb7dc728b4ec90fb5945627ed56 ad5a49e01a6e18b422ff67bd6c28cd8f1f3f5ef64399be06b575ce9dccc3cdba5e04a1bef87bbffff8c73fec7dd440a006399cace7b6fa3012390bb5701b2dbe 0ab76ddab4919a4334136fdebc59de13fecfa3b08d56180b6a0f51836e157ef15cde6afe11d05d70c105721e02430485e827f8f8e38fcbebf7efdf5ffa833b3f bf3728f8639099735711cbbc79f3a47b897b7e8fbcb77bf7ee46efdebd754ae8aca9733c6de85b1e2931d7ac9c57b3e61ac0780ca8cc202ccd6794e30886f21e 128de0d0fd35f32bbce090c02ab186d2af0df3047aca34c269f8f0e18eff27e6366dda349d9a074d2918e567356b5e73cd35f6fc85e1b678f162fb5a3c6da89d 3cebacb37c06b1fea04909193fe6098c14eb7afd3527f97bbfd686cfde5fa05910d6f387da15808a9e500bb7d1e4ad708b5a42f4d3c55c81e82f888010e7a1c0 bd70e142299c614ec20e1d3ad8b305e07c0c30f9fefbeff5b37886fe8dc8e3110ca2d6de7afcf4e9d3f519fea1f507df6d4fb58b9827d19ac774f0e0c13ad591 7f61800cd2b185a3560f81b1a7c134d686a6f74889bd3e874eb5876856b6d841638a555388b4349f3560561016cde030ff6be6c7e0b070a1960f9f7f246ba842 814c0dfd64e4ff88b9a1960a198f05cdd97dfbf6b533546c1819eb6de2d670404667bd96a70d99e5b5d75eeb729dc1b2067020308b044cff80e74710eb2fb0f7 f77ead0dd36b4482f5fccea33489201c85db68f055b8c52c0a48472d9e750e36140e9d6be5cb9429238353d02a81169b606cd8b041beebd67361b46fa0b333a0 091a055e77186ce89cef62c3b5a1ff316a2a9dd3912722f00d050a87cecfe9bea1793c526270404a5e009717089a696620e8e89368d5289a697693320245d7fe 84d9694e7dfb6473ee97689e93916da4c97e8a5bed239e37efb1295e5fc3e93ae5b9bdbd667eeec1a1b77e88087eed66f614f3b9ac0bb19bd9711dd6fb300365 e7ebcbc8d0e97941b6fb67e472ece17cc8c9368375fb7d3a6d4e417abc719e3f2b9cd3cd84c3a64d9b8c468d1ab97cd6285d635a98f6eddbdb7d1b9d37641068 96892494e6dd5fd779c3351c3a74489f5d30562d43a0fdf2828552389e1f35acfef87bbf28cda3ff53a4e035d0e791c85dbc176ed1148bbed9d6fdd676c92597 18e816832e2ae84f893cada0f3f9a150e529af44cde4638f3de6b370889a499c6bf5a37686bcc3fd399117588368dc37bc5e2841bcb7c128d68666f94889c1e0 d03968d181a0f4e1cb0bc62478c9d7a46c0649fa0373c4574e81a01d6f39057448b4822ce72054eed7359239fa39edfbdd5ec30ed2ac20d0d36be697afe610b5 a566f087f768b13e0347a0a607e678b80e3c87a34fa66bf09b978e63ebfabc7f461ecfb76b711dc70856ad73e39973c6842ff6d8b16323de44ec0f46b0a2ff88 7b1302befccec7ee1b26dc0e64f46ba8304d8fd597c7d386c02e54a8fd44ffbd4859bb76ad5c2b3a78fbe3effd620a8e82fc70a199cadf48530c86c16be08792 c85dbc156eada657046ca891bffaeaab5deec78609abc3990763ca2eabe9d77d4341d6578dfc73cf3d27e779ca573d0587d85090c3f37aba0ffd160b0a135f7b 7a4e6b2b57ae9c3e33fc6272f9bca49bbb283328316d50f3b372556e9652b5db24a99bbbe8d4f95966da56957c73921c17445a87367acfb461abcac1edb2b1ea de0de66d4ab292a74eaaa592f1921bee556397e184085896ae527b29f5fafac96ab0f91e75a21a2b1792a6460c960b51b57021f675e8eb32a524d752496d269b 41fe64e5f48ee4fd05f3e9783a3f376bbef91730999f472df326a9360e4c53169b5718bf8e1f3faef7cc6f9759401a326488bafefaebd5e2c58bf32db9144966 09553dfffcf3ea861b6e5066a6a366cf9e2dd7e3ece9a79f9685defbf7ef2f4bdc992551492f5bb6ac2c056596ae9599d94a5a2499a57fb566cd1ab98ece9d3b 2bb3742f0bd163317c68dcb8b1dc16d4be7dfbd4eeddbb55525230ff6b838325b9c0ccace5d6177fef174b7c9981bbecbbfbedb7dfd4430f3da476eddaa5531c 9e7df659f97f366cd8309de2d9ef7a99b0860d1bca2d91b303070ee83da51e7df451597ece2c50e894c2f1c5175fa8eeddbbab6bafbd567df2c9273a55a933cf 3c5399052df9ce55ac5851f5e9d347ce75d6b76f5ff5da6bafd9795b38201f19376e9c3eca83d7983973a632832a9d921f7e07a0562dfceab9c2759e73ce39fa c8c12cd0abc99327aba953a7ea943c66d0a866cd9aa58ff23b78f0a0def32c3939593569d2441fe52953a68cdc6299d68891103106d9b56b2969d2042cec9aac 1497e65e87e06a0e25cdada6ccaeb1cc579368d5e085b9e6d0deacc76bf6fbccbf5935899e5fc7f7fbcb77fdfecef7567318c74dcae0decfc579436d11e6e843 3f12d4f204dbcfc51d6a81d04c8a522846b8a1a48f694f3cadbce1bea176cabd348ddaaa58ea8786e59c50420f75b4ae35dd0546fa450ae65ac36bb84f91110c 7fef17cd6798ce07af83cee9d668463330b4ffaed87ccdb388e7c639d9d98e6f2d91334f532ca1bf2f064ab88f088ea4dcdc5ca965b3a69ff1b4a1a6cd5beb07 d2233de27ae4c891f6eba155c6df201e743d415330fa277a83f91a3138c67a5ee40916cccf6aa5a36f225a2bbc41de8096127f2d1098c2074ddc23468c907c03 fd10f11b80d7183060803e2bfc623638cc0b549c0320f760cd59e8c1a17dec2138743c4798834304b8f95e13acd7f136e58cb7d7f1f3fedcafdfeff9263340b4 fa22624b314f8ce7c010acd9f703ddf025475334323afcf0b76edd5a46d1dd7efbed46972e5d6443c077ebadb71a680ac4d43675ebd69500d079c9a36036f427 f234016c2c59b76e9dcc2b86cf22540f3ef8a0bc6ff4558a844f3ef9449e1f4d5a05e5effd2293c7dfdff9ef88519a73e6cc7149b3360c6641e1c1ddca952be5 c7275223cf29bec55be1162b2521a8c14863f49fc67710d718c87432e13075ea5459952890d1ca98f606d78e812cbe608602f491b402c319336648908ce01c05 417491f11518c25b6fbd25417d412058c47586734e5d77b11b1cda818c53a0627204569e82265f814fb6f94744a2bf60c8badf3cc6f32330c2fd5e82c5bcbe91 ee8f777ecdfcf282437dbf1d20ead795247d8ef9da8eb41c23db1e9dedfe5e2dfede5fb0c1a1797f5a8adb6bc43f6b3ebe58ddb06454a8833b226dfefcf9f6a8 3d6f53b920a3f436833fa6a9404d870501379e2b524b426174379e1f35090511c8fbc5b5e3fe60364f7dc6d061ded348492260e136725e7ef965fb3d04daa718 41336a1bf11814720375e38d3716283ffae0830fa4908af90f23298683431d20b9472612c058c14b9ebc40cddc7430875a39691645d0e57e0e9aa67560842daf 26d20cea52f2ce43f3b5d33811f339ac11c466d0e4345bbbf578f7d774e77a0d8ea0ccfdba1c4f854128ceefc969da1e3b88437a5e8da3bff7e7fe1965fbfb3c bc356f3b5f4b1cc2c4a8580b39dffb2ae40dcd9543870e8d6ad350b010b4628257eb9aafbaea2a8fb55fa86d68d8b0a16ceeefc75a520e1db8319f195c76d965 9256d0e0cd97fdfbf7db739d7df9e5973a353081be5f402da1755e201b6a333c4d3f841f66fc481179c2c26de460e519eb7d04b2ca13d6b2c7f43bceef1f7f1f 7f30250ece0d761e53d4825ad3f3bcf0c20b3a3532623a38a4c2e616a03a6f715e9d88e5e6f0e3ecf1bd15c286c002194dac4240846619f711bc68027587150f b058bd750e46225a0115fa18393ffed24b2f959185187587e340461207cb6ab20ea6493998f76bf9f1c71f65f4b8f3f9d8f06389be4ece23d151f2f7b4563646 32a3e082d1d2449eb0701b3977dc7187fd7e962f5fae53bdf334f21a9bbf1610d4daa2363750c85b9c6b8cb1867e2873ca0682c12179a76b695d6b09d1d46cfe 072d026dcd98493fd8da9e706e083c50528de5a010d0fc8b99f8ddafff3ffff98f3e230f26834530e47e2efa1b656565e59baa071b3a655bd34e20d30c2764aa 56493bd015258279bfeef0b7749e5f0dcd6b089601fd92702d98f7cd577fa4c29e5689621f0bb791d1b16347fb3d0532c13dbedfce9f83b5a1c5c49b4d9b3649 3e8840da1f2cc7873e8c5697166b8be49aca160687e483a3cfa14bd3720a260d8fff4129ce50b58f2e02288d397f01c3bd61fd63f425c3a4a818dc509079f2a2 05d786be34dee6f542e76b4f0326b02280a7f3b159fd723c6d56d058bb766dfd4ce16105ffc85c7df5812ae8fbf5041df0713e3ae4bbf7b9c404bb08588942c5 c26df861bd67ebfd61b6017f3050c7bd5919ad026836f604053f6b1ec8afbffe5aa7e6871604ac22e369e00ffa8c464331fc63be2051c2c357c12c912b335894 db1d3b76a8bd7bf7ca5c54981bf1c48913eacf3fff54e6175cce2f51a2846c98cbcb0c3e64ee416c66a6a92ebcf0426596ecd5a5975e2a736e99418fcc496506 41f2d858d7a0410365667c32975f952a55548d1a35d465975da6aeb8e20a99abefaaabaed267badabf7fbfaa5fbfbec7f9bb060e1c289fe7a2458b748a43850a 15e4b33d79f2a41ce7e4e48465bec3d75f7f5df5eedd5bf61f7cf0413576ec58d9f7a4a0ef97a8b06ddab449bdf2ca2b323f9ff31c88e166166e653e56336852 ad5ab592ef85b7b93ee355a74e9decfc097322e237c0df5c8298fff48e3bee506601533e0fb390a96ebbed367dafab175e7841dd7ffffd32efe3faf5eb756a1e cc0989bf656666a632837f9d9a079f3dfecef88d8934068744940f823804b2087283fd01c024b8cd9b37b7833db8e9a69b5456569664a01d3a7450efbdf79ea4 9f7beeb9b2ffef7fff5bfdf0c30f92366ad4283562c408d92f28fc60366bd64caec12cd9ab9d3b77ca7bf12694f74b140b58b80ddd7ffffb5ff5d24b2fe92325 0b2460f27a7f962c59a2060c182005d03befbc53a7ba42be8809adf137c0c4d8ddba75d3f7e4b9f9e69bd5aa55abe4f3c7e78d422a26e3ae57af9e4c308ebf49 d4203824220a270cb640b313b2182c488f4ef49843ecf1c71f970eebfdfbf797f9daacb9ceac89a3b1993f50214daabd7dfb7697fe5866495ddf4344e4dd33cf 3c63e71bd8ca942913d0a8657ff01c98fb10cf59a95225bf4b68c682985c3e8f88e21b9a9cbefcf24b3565ca14a931fce0830fa4f670e4c8916ace9c396ae2c4 89b27c209aa9004dd1965f7ef94596ad432d63b0b0d4209a6c7efae927394609fcb1c71e937d22225fead4a9a3f71c7efdf55775cf3df748ad6c416169d0162d 5ac8f2a080e533515b1beb181c12514454ae5c59f5ebd74f9a78d107c75a3318696fbdf596ec5bb0beb4b3a54b97aa8e1d3bca3ac581304be2d21c8de6ec4387 0ee95425ebcea2e99a88c81fe41f254b96d4470e6fbffdb6f4592e083425236fcbcdcd9563f46746fe170f181c1251c41c3d7a54823c046f9653a74ea92e5dba 482de2e9d3a725ad75ebd6f932e577de79475d7df5d56aeedcb95e83443c3f3a70a3e6113584ceafd3b2654bd5bd7b777d4444e45b993265a4e5c1ddb871e354 7a7abaf4db0c04f2ab3163c6481fc35dbb76e9544761351e6a0d810352882862506246538da72662d4e861a048b972e5e4b87dfbf65263e849a952a5a453366a 2331c00499343adc6fdbb6cdee60ef0ce77df1c51732129a882850286ca6a5a5e92357356bd6945a440ca0b3f22d67c8ef162e5c28a38dd19cecac5dbb76520b 192f181c12514461f41f46013ac334119892e1965b6ed1294a7df8e187aa69d3a6faa8e05003b97af56a8f35004444be603431460963a4b737a8fdc3086e1442 31c21b5308a14f210abb9e942f5f5e0aab68568e17c5ff67d2fb44446177dd75d7c9ed9a356be416d3614c983021df540e98ba61cb962deadb6fbfd529c1c3d4 1c6fbcf186ccc346449ea16b07067ea146dedde4c993658ebdcb2fbf5ca724164c6585e06fd9b2653a253fb4562020c4a03a4c1bf4e38f3faa9f7ffe59dfeb0a 79125a44e26dae54d61c125154bcfaeaab327fe1d34f3fad7af5eaa5535d614e36cce785cc3658a831c404b4e8e348449e61c0569b366d647fc3860d2e7d7d87 0f1f2e7de5d0e563e3c68d32117c22425f68cc39f8eebbefea9482c3cc0c987d21de303824a2988292386afe3cad10e00d9a8166ce9cc9a664221f8e1c392283 24f01d839e3d7baae9d3a74b6d3e0a6d43870e9574c004d82b57ae0ccb6a45f1089f55c3860dbd3615fb831ac8499326a9be7dfbea94f8c2e09088620e3a73df 7df7dd7e3b70a3c9a64f9f3eb23201fafe109167181476e38d37dadd3b2c5dbb76553d7af4900113eee100067421786cdbb6ad4e492cc8876ebffd76993f3518 152b565453a74e75e9531d6f181c1251cc42d316d6485eb76e9d343563393c3479252727cb0f1d6a3eaa55aba6cf26226fd0e50281a0271820664d2be50e73ff 6112fb4485fe99a851c5c03a0c56f105b58558cf1d85554fa399e30983432222a2226efffefd321f28faf5ba1b3870a08cce5db468914e7140cd210a68d5ab57 d729890b9fcfecd9b3a5a91d03e70e1f3e2c01f5f9e79f2f8555ac828279558b4a6195c12111115102c08a1da809440dbc05cb5a62894b343b77e8d041bdf7de 7b928e1a7aec376ad4488e29b17085142222a20480400f355f175c70811c23305cb26489d40ea22914ab1261642d0678a129998161e262cd2111115102411369 7676b6f48f43ed20065d60ed730c3ef136cd14251606874444440908a370d1cc6cad498e390fb196f96db7dd26c794b8d8ac4c444494608e1e3d2a13c65b8121 60646e972e5dd4c89123bd8e5ea6c4c09a432222a204939b9babead4a9230351dc61300a267f8ef7e958a8e058734844449460b0f2c9b871e3f4511ecc7988d5 861818263606874444440968d0a041d2846cc1327ae3c78f8feb953d283cd8ac4c4444444436d61c12111111918dc12111111111d9181c12111111918dc12111 111111d9181c12111111918dc12111111111d9181c12111111918dc12111111111d9181c12111111918dc12111111111d9181c12111111918dc12111111111d9 181c12111111918dc12111111111d9181c12111111918dc12111111111d9181c12111111918dc12111111111d9181c12111111918dc12111111111d9181c1211 1111918dc12111111111d9181c1211c5a893274faaeddbb7eb2322a2e8286698f43e1111c590418306a9bffefa4bbdfcf2cb3a858828f25873484414833ef8e0 033561c20455a3460d9d4244141d0c0e8988624c4e4e8eeadab5ab42c34ed3a64d752a115174b059998828866cdbb64ddd74d34d6acf9e3d2a292949fa1c162b 564cdf4b441479ac3924228a11ab56ad52a9a9a91218c298316318181251d4313824228a01999999aa65cb96eac8912372dcaf5f3fd5b97367d927228a26362b 131115a263c78ea9be7dfbaa050b16e814a5ba74e9a266cf9ead4a9428a1538888a2873587444485e4d34f3f55d75c738d4b60d8bf7f7f3567ce1c0686445468 181c121145191a6cc68e1d2bfd0b77ecd82169254b965493264d5213274e54c58b17973422a2c2c0666522a2283a7efcb8ead9b3a75ab264894e51aa5ab56a6a debc79aa51a3463a8588a8f0303824228a929d3b77aad6ad5bbb2c89d7a14307356dda3455ae5c399d424454b8d8ac4c4414055bb76e558d1b37b603c352a54a c90a288b162d6260484431853587444411868010fd0b0f1d3a24c7c9c9c9d28c5caf5e3d3926228a25ac3924228aa003070e4853b21518f6e9d3474629333024 a258c59a4322a2083975ea946ad2a489dab871a32a5dbab48c46eed1a387be97882836b1e690882842468e1c298161d5aa55d5471f7dc4c09088e2026b0e8988 2260ddba75aa59b366aa7efdfaeadd77df55175d7491be878828b6313824220a3364ab58f9e4d75f7f55ebd7af57152b56d4f71011c53e362b13118519d645de bc79b39a356b160343228a3bac3924220aa3d3a74fab5ab56aa9ba75ebaaa54b97ea5422a2f8c19a4322a2305ab16285ac97dca953279d4244145f181c121185 1196c283abafbe5a6e8988e20d834322a2303971e2845ab26489ec57ae5c596e8928fcd6ae5dabba75eba62a55aaa48a152b666f65ca94916e1d2d5bb654cf3c f38c3a79f2a47e0405837d0e8988c264f5ead5aa79f3e6b2ffe79f7faa92254bca3e1185070a607dfbf6556fbcf1864ef16dc68c199c5fb40058734844142698 e81ace3cf34c06864461f6c71f7fa8366dda041c18c205175ca0f72818ac3924220a938e1d3baac58b17ab72e5caa923478ee8d4d075edda35a81f44a2a268e0 c0816ac28409eae28b2f564d9b3655975c72893ae79c7354f1e2c5a5f918f38aeedebd5b0a69070f1e94c7e4e6e6aa9a356bca3e058ec1211105e5a79f7e527b f7ee550d1a34d0296469d4a891faf4d34fe5c76bdfbe7d3a3534585da55dbb76eaafbffed229448907cb50a6a4a4a8c71e7b4c0d1d3a546ae7bdf9fdf7dfa5c6 b04e9d3af27da4e0b159998882f2c0030fa8fdfbf7eb237276f4e851b92d51a284dc86c3e8d1a3d575d75da78f8812d3a38f3eaa1e7cf04159afdc5760f8d557 5fa9d6ad5b4b4d22be3b54300c0e892860df7df79d346f72d50fcface010cd5ce1b075eb56597eef8a2baed0294489a943870e6ad4a851fac815269ecfcaca92 a0105348ad59b346fdef7fff53ad5ab5d26750b0181c1251c0264f9e2c1971d9b265750a39439f27085713f082050be4b642850a724b94a8060c1890afc610fd 7a9f7df659959494245d2f962f5fae4a972e2df9149a9fa9e0181c125140d03d79eedcb9b2efab59279e1c3e7c58ef8587d5853b5cfd0d57ad5a25b745e5f326 0a8743870ea9fbeebb4f5d7ae9a5eae1871f563b77ee94da7acc7b88daf6b4b4347d2615148343a220fdfcf3cf7a2fb16cdebc5906a3c01967c47fd681d18ce8 c31409a85d45a7f8506ddbb64def11114c9f3e5d6a0a33323264cec352a54a4930f8edb7dfaa59b36649c048a16370481484fffbbfff93291412d1679f7da6f7 c23be0a2b03cf9e493f2c312297bf6ecd17bde1d3f7e5cef79c6813f440ebffdf69bead2a58bbaebaebbd4b163c7643432fa15eedab54b9a91b12a4aa4fdf2cb 2feac5175f542d5ab490ae1e98cbf4dc73cf5555aa5451f5ead553a9a9a9320f23a69e42c0daaf5f3f75fffdf7abbffffe5b3f43fc6070481484112346482615 af42594aeafbefbfd77b4a9d75d6597a2f3e21287be59557d479e79da753c203358696eddbb7eb3def30f2db17ce344689c45b6d3b9a91b1f2d09b6fbe29fd9d 51b0435332462e47ab3fee3befbc2301e8e0c183a5bb07ae097d8b9197a020f8cd37dfa80d1b36c8d453f3e6cd93fc65ead4a96ae1c285f640b578c2e0902808 c820b07e67bc7aeaa9a7e43d14046a4d2d282dc7330cf440a01cee9a43e760eee38f3fd67b9ee107e3871f7ed0474489090121ba77942f5f5e9d7df6d9b226f9 f8f1e3f5bd4a6a0931ea18f31cb66fdf5e9a8f870d1b266b2847cb9c3973d4adb7de1a544d3ede0b82575c6f3caed2522483c374a745b8b1a566e6aa65e9ae69 c58aa52a3359e4dd97ae96a95c9599ea7abfbbdccc547d7e3195be4c27fae07c7eb1401e1056fedf0f050e3fe8f1dcdfeebdf7de53c9c9c9fa2838d6e00dd4b6 c5fbd270f81c205c53ce000243e7e623ac94e2cb134f3cc1951b28a1a1e60d41d7f3cf3f6faf2884c15c83060d52e3c68d939af8db6ebb4d7df9e59752b0c577 0ac163346dd9b2459ab2019370631fcdc5b8ae264d9a487332566a71d6b2654b191883666f0489f1a8480687937332548ade5769d96afde024d566b2a172b2ad 114c292a2367bd3293459bc9392a232d43e51893551b47527eb9992a53c77549835f5719f60bf8973478bdb25f9ae21a32ab700614d184122c9a426ad4a8a153 82632d4755ad5a35b98d679b366dd27be1633589a110085f7ffdb59a3f7fbeecbb4393536666a6aca84294a8d04d67c58a15fac8156add304dcdca952ba5e610 e76134f2fbefbfafcf880ef41d4473328244cc393a6dda343565ca14697d58bb76ad2cd58720115070c680194ca913f7f9a459da2d92723252d0be636e294646 8e4e3499419a233d2d5ba79872328c34e793f2c931cc60d0c87b88e318cfe3fc34be787c5d8a3bf81b5e75d555fa28761d3f7edc3871e2843e72e8dab5abf1e8 a38feaa3e09941a5bcff3beeb843a7c4af3265cac87b19356a944e09dd9e3d7be439ab56adeaf8ae9b5ba952a50cf307ced8bd7bb7f1c71f7f185f7df595d1b3 674ffbfedcdc5cfd68cfacf3c2799d44b100fff7cf3cf34ca36eddba465656963177ee5c233939d9fe3f8fad53a74ef21d724e3be38c338c55ab56e967892c5c d785175e68ecdbb74fa7b8320b80c6e5975f2ed7d5b46953e3c71f7fd4f7c4bf22dbe730e9e62ebaf670839a9f95d79e5a2b5957f96dd9aeacd4dcacad2af966 5d8de8c1b2f45aeade0dfa80129635d820d6fbdb61c00c6aa46ebae92699ea015e7df555e9246d358f04cbcc2bec3e87d75e7baddcc6336bb2ea70c27ad370fb edb7dba3b9519bf8d0430fc968460ce2b9f2ca2bd58c1933e43ed446b0599912d573cf3d27f9caa2458b54dbb66d65842f6adc9c07bb613087fb2015e4c32fbd f4923e7275ead429af538d6144b3bfae1eeed0248cef2bd64a77b77af56a59d612d34d3df2c8233248a5284da3537407a424ddacbae83870c3fc2c1d08e6aa2c 554f490bef86f9ca11339a695b9395151bbaf7275c969eaada4e71dc37a52dd2d12fd1c9f6652a5df7e94b0fa2539fb77e88b999e92ad54a4f355fcb7aca65e9 f6f9e9cbacd74c5799ced79b99a9d31dfd2cc1fdfdb81c7b381f729765aa549deeb2a566da01752242c603682ec01c5b175d7491aa5ab5aa8c528b25688e4186 859173c8accc92adeadbb7afac2050bd7a757d962b8cb643468ca6504f10185aa3b41371492a7f9f0f7cfef9e7728b00bc59b366b2ef0b7e0c891211023e2cc3 d9bd7b77972968d077efaaabaed2474afa17a26feed0a1435d6616709e39c1822e33e8138842b195575b860f1faeeebefb6ed5bb776f5902345018218dfe83ee d02d057d2511dca27919fd21a3d5171d7d19d1250585fd884e9183eac3a22a5fd3724e8691919dd7249c82c47c4dcad986193ccafd8e16604f4dc87969d24c9c 9de6d84fc930eff12c5fb3b2f9ba292969723d16eb7ae5bacc6792c7d8cf99775d788e1c79cd3433d5f55a1ce938c67dae8f73bcb49ff3715d4ec73919fa7eeb ba13189a0cf0599841a151b26449c32c4dcaf1a04183f419856fc992258619c83bfe664e5be9d2a50d3360d467b95ab162854bd38d9911eb7bf22c5bb64ceeab 52a58a4e896fd67b0da4b93690cf07cc1f26a361c386b23f73e64cfb7c4f5b891225026a82b2ce67b3321525b366cd92ffd71f7ef8a14e7140d78b4a952ac97d 4d9a34318e1c39a2ef318c356bd6d8df87d4d4549dea70f8f06197266974dd387dfab4dc67066e763a36b3c06ce4e478fba5f6cf0cce8cf2e5cb1b66b09aeffa 236df5ead5f2db63bd17b3106a9881b6be37bc8a6ecda1c9bd6939374ba9da6d92d4cdba4a516a14fd3429fb93d6c16908cb86ad2a47effab42c5da5f652eaf5 f593d560f37a74a21a2b6dd7696a848c94497234816fb8578d958ac55aca6a114f49aea592da4c36037bd70134b89660de89a7f373b3e69b9f962925d97c45f3 2a6ae3c03465b16b8d6902b2e6ad4353a0f9c32ecd8818dc71e185174a7a38584d93813033382979a7a7a7ab891327ca3252a88d32bfd752d36bb19a462ebbec 329d92c7cc8ca534eddc748352f0d2a54bf591036a21e18e3bee90db4411e8e7839519f019e16f0098ac174dc9dea076912b395051e72d3f7bedb5d7647e424c 1a6dc1770c2380315a1935ef982fb05cb972fa5e25a3822dce03b930e2b953a74e52a366417e77e79d77aaecec6c99f6c61926cd460d23ee0b16f203741bf9f3 cf3f65604ce3c68df53d91877c1d83639c6b45cd805946444784848845985d63979266a465e8da2fbb762cc5484973afed0baee650d2f2d5d6e5675f87bdb99d 6b5f53fecdaa49cc7f1de0ef5afcbc9f406b0e7dd48ac6329444c365e0c0814652529271ecd83139deb2658b7456fee9a79fe4385428e9d6a953c730030f9de2 1d06369c7ffef9fa6fe7bae19a5032fef4d34f8d050b16186666a81f95df1b6fbce1f1391a3468a0cf70303366a378f1e2c60f3ffca053220f9f432803687cb1 dee7983163748a67817c3ef88cd1b11e1dd3fffefb6f9d6a186fbef9a6c7c7a2e6f9e0c183fa2cdfacc7a0f683289cf959a479cbcf0e1c382079498f1e3d748a 61fcf2cb2f468b162de4ff7afdfaf58d9f7ffe59df93e7de7bef95fb51eb8eda3b8bb7ef28360c5ef1948ead79f3e6fa19023764c810797db426449b198c7a7c 1f66e1df387af4a83e2b7c8a74cd21b4e9608646b0610aaa0d1dfb767fc40d4a25df1c546d5bc830658e19292a3545b575eec397545b39ca459866c7905282b5 612a9ea8491aacd6e764a8b414f3fa8a1553b5ee9d62c6d5d92a67fde0e87e4e6182c95531b540a8509a9d3b77ae9a3973a6cacdcd9545df516ac40cf8e1aa39 449f364c37e36fc67fd418a25f8d352f983333609449aeb1f668c3860da524eeab06ebadb7ded27baeb0549e55538a1a314ce3f0ef7fff5bfa584603fedfa316 2edc9354bbc36a0bbef8fa7cf0b74247f4ce9d3b4b4dc20b2fbce0d2ef08350ceeb516f8bf821a8b6027c53de79c73f41e25b270e567d1e02d3fc3a010f495c3 2014c0dcb1c8cf3ef8e00355a95225f97e380ffac364f5681d413f6fc09c8866d029fbf0cf7ffed36b9e3960c000d5b163477d9407e763905e3030a93d5e1b7d 206fbcf1469d1a3d18b8e309fa82e3b30e3b33132ee2ac9a33d79a3a474d9eeb34370ebe6adab28d0ca97d0ca1e6d0f1a4798f49311fa3af21af963343a7e518 d91969fa1addafcb12e69a43dc9f96e2f61af1ab66cd9a21d5ba985f3cc3cc140c331034cc1f68a995c3e755bd7a75e9ff112e987a0653a0a01468061a3a353f 9498ad3e39a8cd338313e3faebaf973e8528797ff7dd77fa4cff50b247df19c7df3fff3679f26439cfcc7ce5f97dd54086dbbbefbe2bd76006a83a25bcacf7f8 faebafeb94fcfc7d3ed6d43ed830e5863766b06ef4ebd7cf183d7a74c0358616ebf9cd1f329d42892cd4fc2c5a7ce5676ddab4919a43f413dcbc79b3bc27fc1f 47fe6a16baf45986d41ebef8e28b767e87e77ae9a597f4bdae366edc287994f57dc166069cf2da667069b46cd9d24e37034f393f58f80d40bf62e7d601cbbc79 f3a435c1bdff1f7e3fba77ef6ef4eedd5ba7149c35658ea7ad5bb76efaacf04980e050075deed18e0445f983b9bc412ce6a69b523168439a5a11c8b99f83a669 1d6c61733401bb723ddf1194b93f87e3611884e2fcfa566068b28338a4e735f1fabb16f7f793edefdabd356f3b5f4b9c40a0846b9f3871a24e090e9a3fd08480 a609048537dc7083619660a5b930dc9d807bf5ea25d77acb2db7e894fcde7efb6de9048df35ab56a25194f283040c5fefb7ad8d08c337efc78d91f376e9c7e54 7474eedcd9b8f2ca2bf551f859ef1141a837fe3e1f6bab50a182b177ef5efda8f0b25e03ffe728b1859a9f4593b7fc0c034cd005037302a239180121ce431ebb 70e142f9ce4d9a34c9e8d0a1833d080ce7638ed6efbfff5e3f8b671f7df49171c10517c86310182228c48091c71f7f5c82c4fefdfb4b81ce39000d142a0230d0 cf5350b968d122f99dc0eb0e1e3c58a73a9aca317006e9d84229e02150f634d0d0dad0141f6e09111c5230dc0254e72dceaa13a74c9922d71d4abfb55f7ffdd5 6349319c860f1f6e7fc6d3a64dd3a979d0a7f1aebbeeb233876baeb946ae2b548b172fb65fd7d3869ac8b3ce3acb67c01a09c854514bf0c0030fe894f0b3dee3 8e1d3b744a7efe3e1f6cf89bf80a304365bd0efa8f52620b477e160dbef2b309132648ba73ad3b367cdffff18f7fd8c798a4be5dbb76523845213d5098881e9f 138241d4d85b01e6f4e9d3f51905839a47e487eed0efdc0a70ad0dd77cead42909509dd3114022202e087cff9d9fcb7d436d68b831382457ba46d5b596104dcd e67fc2380b0e51cb872f4e246ba042810c0c835cac2f3832470446163467f7eddbd725f3c15432de66eb0f164ab2d6f37ada90995d7bedb52ed7140dd6400e04 6791f0d75f7fc9f323f0f515f8fbfb7cb03df1c413faecc8b05ec7794a0f4a4cf19e9fa1b505dd71acfbaded924b2e919610b454bcf6da6bd2d48cef6828366c d820df6feb3530fd0b068e15046a2cf11c56371b6728a85baf616d28305a836bdc37d4901624b8f73618c5dad04c1f6e0c0ec98da3cfa14bd3724a8a8cf48eb3 5665e3baebaeb3df03fa7bc5924d9b36198d1a35cafb8ccd0d4d2d0f3df490d1be7d7bbb6fa3f386d22132ce7041338efb6b386f78bd43870ee9b3a3c76a920a b67f5ea0d04483e747c6ee8bbfcf07f3a5451a5e07fd1e89e22d3fb39a5851b04141ebeaabaf76b91f1be6230c77cb0c5ecf53fe89c0ecb1c71e0bfaf59e7bee 3979fce79f7fae53f2780a0eb1e13b8bfcd3d37de8b718ac6fbef9c6e373595bb972e5f499e1c3e0908a2ce7522a4a7363c78e8d7813b13fc860d079d8bdff08 4a7ecec7ee1b26dcf69439850253f2587d743c6d08d20a036a47d18f2f52d6ae5d2befef9e7beed1299ef9fb7cfaf4e9a3cf0c1cfa2c053a1d0906c4e07550ab 42144ff919fa09621006fa695bfdf1dc37b48a44e2fa318d97b7d744c0166c2d3c06a2e0b19e5a5030a5987bb3323e0bd4527a9aca0a41a3afae2cbe9ad03129 b8fbf3596bc44762bd7f06875464791a698a66527420461348b4608179943e31aad8fd7aac0d193d3a54a3d3347e0450ca457ad9b2658dbbefbe3b62b5682891 e235310004cd3ac8d456ae5c29affdca2bafe8b3a207033bf0daf8518914ab4fd4ecd9b3758a7705f97cd0111ef3a1b9af80f2cc33cfc80f47a07d29f13c781d 5c2f513ce567a851f356e0457aa4475c6394b3fbeb224f0d640e59676865c0e3d02ced0d9e13c1b0f53a191919fa1ec378f2c927ed74049128987a836677148a bd35a99f3871429ab6478c1821a3b6d10f11812e9e7bc08001faacf061704845967ba767e70d354277de79a7741e466d4e309d9e3d412d0f023894a431ad019a 7d30bd49e5ca953dbebef3f6af7ffd2b5f091a194461f53343e6869277a446e0fa82e00b9f09a67f88144ccc8bd7d8bd7bb74e098eafcf07b50b98fa07cf8f91 8ad6a8f6679f7dd6fe7b63f3362587332b50cece8eafbebe1419f1969f61c27cfc3fc74863749941b332aeb120a3850b62e4c891f635a150569051de18ed8cc7 a3ffa22f189486be9356603863c60c099e11b4e3bb8fd6105f8121bcf5d65b12ec0703c122ae2f9cd3aa598ae11ff3c9898a9c5b6eb94526840e9459b253152b 5694259bfef18f7fc804ccd8cc40c09edc184b3561c3324ac78f1f97cd2c5d2a3333ceb7d87b20aebcf24a5902e95ca7495f0bd3faf5eb65a1796cde265d8da4 214386a8e79e7b4e0d1c3850993f2c3a357cccd2b62cbd65fe5029f3874fa706ced7e763fe20aa9b6fbe592d5fbe5ca738fe0f62c9412ce5e50e93e98e1831c2 65a943679814b84d9b3632d939fe6f5262637e16bc575f7d55be634f3ffdb4ead5ab974e0ddca4499354fffefd651f9f53f1e2c565df97f9f3e7cb77de0cb065 d2f2b163c7ea7b7cc344e0584e30d0e5f056ad5aa5dab56b27cb7062b2f1b0931091a808b2e6e88bd50d8ba617c6800f6fcc4ccdee3fe36b7a169486bd2dd784 39cad0cc5550ad5bb796d7c7e4de91807e4e787ed42a04cbdfe7836bc67dc16cbe0616a0f3bca7e9332831313f8bbe418306d9ef2f904500d00711d3f2387f2e f8bbf9832971706ea053564d9d3ad51e8dfdc20b2fe8d4f06270484516fa6c612d64e72f6a2c6c68921c3a746854fb09f9820c1d9dc7adeb43e766342b7982a6 a6860d1bcae67efdc3860d93c7a3d33726b32d88cb2ebb4c9ea320c19b3ffbf7efb7e73dfbf2cb2f75aa7f817e3e980fd23a27900d6b2cfb9a96a86eddbac6cb 2fbfac8f28d1313f8bbe3beeb8c37e9fcb972fd7a9de791a918dcd5f61f7f6db6f97bee6fea01f33e67fb49eb762c58a119b6a8cc1211569586e0e3fc2ce5fd4 c2dc1040a074190b10e0607258f711b91870e10996bb4a4e4eb6cfc334145690840ee6cecf81695e306a30589892018ff73792b8201e7cf041796e64e08108f6 f341c68d51e5cee762438d0afa3b398fe8c4525f1880e40d46342310c08869220bf3b3e8ead8b1a3fd5e0399d31473503a7f3ed686c2b4379806087903026c6f b01a16fa2e5a2d17d616caaa2bfe3038a4220fb3e6075bab13ce0dc1059a2762291345d32f965c72bfd6fffce73ffa0c5798f11f418efbf9e86c9e9595e512f8 581b46dee1be606054201e8b9274382170b39a6102e9981eece763c1dfd8798e35fc5820a8067452c7356072607f9dd3a1b0a729a1d8c4fc2c7ab00eb4f5be31 c0cc1f0ce0716f56464110cdc69ee03b6ecd0ff9f5d75febd43c28246255194f0381d0052792181c52c2407f8eb4b434a98a77ffa28573c3fac7e82b8699f0d7 ad5b17f26cffe182ebc0c8436f13b762749db765f9b0ec93a7c760b3a6ddf1b4356fde5c3f4360ace92f6ad7aead53c2c3fa3145c91bd3537812cae7e30ca334 712e466dbaf7cdc46a0bee53dc101544a2e767d1e05c73887c0edf6d7f30bf219adaf118e467be5666c19af538cf7d626ce45198de0c23a0add777de10a8466a 7a330b472b53c2c17ff9ad5bb7cac855dceed8b143edddbb57995f3619ad77e2c409f5e79f7fcae853c0e83e6c679e79a68c002c5bb6ac6c66095a5d78e185ea a28b2e921163494949ca0c6a54d5aa55bd8e402d4c0d1a349011ba187157a54a1555a3460d75d96597a92baeb84299c18cbaeaaaabf499f9eddfbf5fd5af5f5f 3e237718598ccfcf7df46e850a15d4c68d1b55f5ead5758a7ff85ccd004cf6737272e4330dd5ebafbfae7af7ee2dfbbe460f86f2f910159644cdcfa2e1bffffd afcbac09984de1d9679fd547de2d59b2440d183040f21a4f3315c0279f7ca29a3469227f9b59b366a96eddbae97b94cc7a80d1c8f87be0f3475e54ab562d55af 5e3d75edb5d7cadf28d2181c122508fc602093478613c8940cee9099356fde5c9d3c7952a738a65fc8caca92691e3a74e8a0de7bef3d49c75416d8c7b431c140 206996ce657fd4a851320d4528366ddaa49a356b26d77cf6d967ab9d3b77cafbf724d4cf87888a1604820f3ffcb03e52aa4c99321280a3f0188addbb77cbb435 b8ad54a992e44b08d6638963b223222af22a57ae2c195141031f047a2b57ae941a0640608812326a075142c61c6c98130ca55cccd1176c6008d5aa55d37b8e8c 79dfbe7dfa2878a879bce5965bec6016d7e62d3084503f1f222a5aead4a9a3f71cd0aa71cf3df7486d6d41214f6bd1a2850486306cd8b0980b0c813587441414 d4b06567674b532d6a076fbffd76f5fbefbfabe9d3a71768a25967eecd38b7de7aab7aebadb7a4192c181f7df4913cf6d0a143728ca0f0bbefbe8b99c9798928 f621183cfffcf3f34d087efffdf7abe79f7f5e1f050ead2f9d3b7756bb76ed9263d440e6e6e6c66470c89a43220a0a6ad8faf5eb274db6b7dd769b0486803404 72a1b8e1861bf49ec3d2a54b55c78e1dd56fbffda6537cc34a0f688e46f3b7151802565d61604844c14033724a4a8a3eca336edc38959e9e2efd390381fc6bcc 9831d2c7d00a0c01f9522c06860235874444c1c0bacf173a4dd9626d18d187953d0a3a0d0b9ed79acec679c3e4d873e6cc9189803dc1e3a64c9962d4aa552bdf 635bb66ca9cf22220a0ef215f73cc5da6ad6ac2913d57b5b071f73bd3ef3cc3346a54a95f23d169359c732362b1351d0d01482fe381888e20e3574e8608d355d 0ba27dfbf65263e809d686c5883dd45e6280094aee189db96ddb367b34a6339cf7c5175fc8c86922a260613431fa51a33b8d37a8fdc3c86ee43718f98db5a9d1 a710f9a027e5cb97977c29d4812d91c4e090880a047d03d147d01916f45fbc78b10c0429a80f3ffc50356dda541f155cc99225d5ead5ab3d360b112522f49d43 81eabcf3ced32979264f9e2c7d7331eb00b91a3f7ebc1a3468903e0a0dfa4f2f5fbe5c06a5c432f63924a20241663972e4487d6496348b15934c3494c010d02f 077d1943810c78eedcb90c0c8934f4c1c5f701b30cb80fb0183e7cb8bafbeebb659019066e912bcc59d8ba756b7d149a175f7c31e60343819a4322a2829a3a75 aaacf78a7588c3e5c0810346d5aa555dfae804baa1cfe2c2850bf533115134d6452feaf01956af5edde5b30a662b5ebcb8f1ca2bafe8678b7d6c5626a29884c9 665bb56aa5f6ecd9a353fc43dfa0993367b2c6904843bfe01b6fbc51ad59b346a73874edda55f5e8d143b56bd72edfbc7de8a38ba9a9dab66dab5308304721a6 eec25459c1a858b1a2320bd121b7aa44138343228a59c88cd1dcf5f6db6feb14cfd08cdca74f1f998c1b1dc289c861debc7912087a823ec2a74f9fd647ae301d 1426b3275768921f3a74a8f4b9c660155f30a13e9aea912f1574805e6161704844310fabb0608de475ebd6a91f7ffc51563dc1a8e8e4e464a915e9d9b3a7cbea 2a44e410ad75d1130d3eb7d9b367cbaa515bb66c51870f1f96401b9366235f42bfc2eeddbbc76dbec4e0908888a8088bc6bae854b470b43211115111168d75d1 a96861cd211111510288e4bae854b430382422224a20186d8b6666ac450e98301ef382863abf28151d6c562622224a10478f1e551d3b76b40343c008dc2e5dba c8a4f6de462f536261cd211111518288e4bae85474b0e69088882841242525a971e3c6e9a33c98f31013c83330246070484444944022b52e3a151d6c56262222 22221b6b0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c 0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e898888 88c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e89888888c8c6e090888888886c0c0e89888888c8c6e0 90888888886c0c0e892868b9cb32557a7aa6cad5c79ee5aaccf47495b9ccf759444405e1c88752556ab162aa986ce96a99be2f0ff3a1826070484441c9cd4c55 b5dace57c94306ab249de659921a3c2459cd6f5b4ba5336326a230cacb87d6abf539192a45a7e7c77ca820181c1251e0723355af7b37a8b4ecf56ab0efc8d021 69b05a9f9da6a6b4eda532992f135138301f8a3806874414a05c95d9eb5e6566c9aa431b9d1488361dcc476c50f78ecddfe04344141ce643d1c0e0908802939b a5e66f306fd33a28e73c397759ba4a4db5fafc985baa7bbf9f36aa439a793365344bed44141a2ff990657ba6991f495e94ead68ccc7c28180c0e892830395bcd 72b7bb652a6bf41429c5671b86ca46e6bb618a6a9beea974be416dcdd1bb444405e1311fb26c51eae6c96abd912db5849e9b91990f0582c12111052477bb99f1 9a52926bc9ad431b3578bda18cf593a5145f2bd97bb770d8b29d4576222a38cff990a59eaa2d7d10752da11908cecfca9fe7301ff28fc12111852e77994c1731 76ab3e2622a2b8c5e09088029254bb9edc6e706b9359969eaa8ad51aadd490c96a48b24ef4a29ea3584f445420def22157b94a57307acc73980ff9c7e0908802 532b39ff5c62b9996af414f400aaa76a9b197296f414f72645796c0922220a94a77cc8b645498b716e8eda8aac2825430dc9376a85f95020181c1251609206ab 1132da6f71de68e4a4daaa9ee4d453d4e8b139ea66f30439dcb2d8a923f832b5788a79933622b039c98888bcf1940f99eaa565ab9c9c2e6a6baf62aa58adb66a 4a4a9aca7edd79a27ee643c1286698f43e11916fb9992ab5d6bdaa5eb6a126073ac7d8b27455aced16959113e084b54444be301f8a38068744141459b6ea5e15 5826ab3371f364b59e3932118509f3a1c862b33211052569f07a9593dd456d1d9ba97c4f0891ab32c76e555db29921135178311f8a2cd61c12111111918d3587 44444444646370484444444436068744444444646370484444444436068744444444646370484444444436068744444444646370484444444436068744444444 646370484444444436068744444444646370484444444436068744444444646370484444444436068744444444a429f5ffa79022522c12f47c0000000049454e44ae426082}}{\nonshppict{\pict\picscalex80\picscaley80\piccropl0\piccropr0\piccropt0\piccropb0 \picw17117\pich6615\picwgoal9704\pichgoal3750\wmetafile8\bliptag-9130654\blipupi96{\*\blipuid ff74ad62b370f0ff9ce1c39b29569486}01000900000382b50300000059b5030000000400000003010800050000000b0200000000050000000c02fb008802030000001e00040000000701040004000000 0701040059b50300410b2000cc00fa00870200000000fa008702000000002800000087020000fa0000000100180000000000706a070000000000000000000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94b5de946b6bffffdeffffffffffffff ffffffffffffffffffffffe7ffff636394debd94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff94b5de946b6bffffdeffffffffffffffffffffffffffffffffffffdeffff636394e7bd94ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff3994de420000ffde94ffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039e79442ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994de420000ffde94ffffffffffffffffffffffff ffffffffffffffffffffffff94e7ff000039e79442ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000039ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff6bbdff390000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 94deff000039ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff390000ffe794ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd6b0000ffffbdffffffbdff ff00396b000000bd6b396bbde70000396b4200ffde94ffffffbdffff00006bbd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff006bbd6b0000ffffbdffffff94e7ffbd6b6b94e7e700396b0000006b3900ffe7bdffffffffffffbd ffff00006bbd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff94e7ff000039bd6b00ffffffffffff94deff000039630000e7e7bd003994000000b56300ffffffffffffffffff0063b5390000ffde94ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000039bd6b00ffffffffffff94deff00 0039390000ffde94b5deff00006b943900ffffdeffffffffffff0063b5390000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000bd6b00ffffffffffffffffff396bbd420000ffde944294e7000000 bd6b00ffffffffffffffffff006bbd000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff6bbdff000000bd6b00ffffffffffff94e7ff0000396b0000ffffbde7ffff003994000000ffbd6bffffffffffff006bbd000000ffbd6bffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994de000000e79439 ffffffffffffffffffffffffb5deff6b6b94396363000000b56300ffffffffffffffffff0063b5000000de9439ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994e7000000de9439ffffffffffff94deff000039630000ffffbdffffff006bbd0000 00e79439ffffffffffff0063b5000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff3994de000000de9439ffffffffffffffffffffffffffffffffffff4294e7000000bd6b00ffffffffffffffffff006bbd00 0000e79442ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994de000000de9439ffff ffffffff94e7ff0000396b0000ffffbdffffff006bbd000000de9439ffffffffffff006bbd000000e79442ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000bd6b00ffffffffffffb5ffff003994633900ff ffbd0063b5000000b56300ffffffffffffffffff0063b5000000ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff6bbdff000000bd6b00ffffffffffff94deff000039390000ffde94b5ffff00006b390000ffde94ffffffffffff0063b5000000 ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94 deff000042bd6b00ffffffffffffffffff6bbdde0042420000000000006b3900ffffbdffffffffffffffffff006bbd390000ffe794ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000042bd6b00ffffffffffff94e7ff0000396b00006b9494 000042390000e7bd6bffffffffffffffffff006bbd390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffdeffff0039946b0000ffffb5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffbdffff000063bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff 0039946b0000ffffb5ffffff94deff000039630000ffffbdffffffffffffffffffffffffffffffbdffff000063bd6b00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039ffbd6bffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff420000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039ffbd6bffffff94e7ff0000396b0000ffffbdffffffffffffffffffffffffffffff6b bdff420000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff3994de390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffff94deff000039deb563ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994e7390000ffde9494deff00 0039630000ffffbdffffffffffffffffffffffff94deff000039deb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94bde7946b6bffffe7ffffffffffffffffffffffffffffff ffffffdeffff6b6b94debd94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff94bde7396b6b0000420000006b0000ffffbdffffffffffffffffffdeffff6b6b94debd94ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000000000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94949400000000000000000000000000 0000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffdedede080808000000000000000000000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f71818180000000000000000000000000000007b7b7bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0808080000 00000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffe7e7e79c9c9cffffffbdbdbd080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece1818180000004a4a4affffffcecece848484ffffff6b6b6b292929d6d6d6 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808000000000000 0000004a4a4affffffffffff424242000000000000101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece6b6b6b313131101010080808101010424242848484e7e7e7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefef181818000000000000000000000000000000737373525252000000000000000000000000181818e7e7e7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffe7e7e78c8c8c4a4a4a2121210808080808081818184a4a4a848484e7e7e7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7525252000000000000000000000000 0000000000000000000000000000006b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad00000000000000000000000000000000000000000000000000000000 0000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730808080000000000000000000000000000000000000000000000000000 006b6b6befefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd6d6d6212121000000000000000000000000000000000000000000000000000000000000000000292929cececeffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff42424200 00000000000000000000005a5a5abdbdbd000000000000000000000000000000181818b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef3939390000000000000000 00000000000000000000000000000000000000000000000000000000181818b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffefefef21212100000000000000000000000000000000000000000000000000000000000000000000 0000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffefefef2929290000000000005a5a5affffffffffff8c8c8c000000000000000000212121dededeffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7f72121210000000000000000000000000000000000000000000000000000000000000000000000000000000000000808089c9c9cffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000000000000000009c9c9cffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a00000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef393939313131ffffffffffffffff ffffffff848484000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff949494000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc6c6c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808c6c6 c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808bdbdbdffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000000000000000000000000000101010f7f7f7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000000000000000000808083131315252525a5a5a5252 52292929080808000000000000000000000000000000212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff2121210000000000000000000000000000000000000000000808082929294a4a4a52525242424221212100000000000000000000 0000000000000000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef18181800000000000000000000 0000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0808080000000000000000 00000000292929adadadf7f7f7ffffffffffffffffffffffffffffffefefef9c9c9c2121210000000000000000000000004a4a4affffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000002121219c9c9cefefefff ffffffffffffffffffffffffffffdedede8c8c8c181818000000000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffcecece080808000000000000080808b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffadadad0000000000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484 080808000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff42424200000000 00000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c080808000000000000000000adad adffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9c9c9cffffffb5b5b5080808000000a5a5a5ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000000000000000004a4a4affffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6181818000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7080808000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffcecece212121000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece101010000000424242ffff ffc6c6c6848484ffffff737373212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000 000000080808efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede18181800000000000073 7373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000000000000000525252ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef292929000000000000949494ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffefefefe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffcecece080808000000000000000000424242fffffff7f7f74a4a4a000000000000101010cececeffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff2121210000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffcecece080808000000080808efefefffffffffffffffffffffffffffffffffffffefefefe7e7e7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c 8c000000000000000000080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff e7e7e7212121000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdededea5a5a57b7b 7b5252523939392121211818180808080808080000000000000000001010101010102121212929293939394a4a4a6363637b7b7b9c9c9cbdbdbde7e7e7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000000000002121214242426b6b 6b9c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffffffffefefef1818180000000000000000000000000000006b6b6b5a5a5a000000000000000000 000000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000000000dededeffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a50000000000007b7b7bffffffffffffffffffffff ffffffffffffff3131310000000000002121214242426b6b6b9c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffdededea5a5a57b7b7b5252523939392121211818180808080808080000000000000000001010101010102121 212929293939394a4a4a6363637b7b7b9c9c9cbdbdbde7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffff b5b5b5181818adadadffffffffffffffffffffffffffffffffffffcecece080808000000adadadffffffffffffffffff5252520808082121214242426b6b6b8c 8c8cbdbdbdefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffcecece636363181818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000101010424242848484c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffadadad313131000000000000000000000000000000393939f7f7f7ffffffffffffffffffffffffffffffadadad000000000000000000 000000000000000000000000000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff4a4a4a000000080808f7f7f7ffffffffffffffffffffffffffffffffffffadadad313131000000000000000000000000000000393939f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffdededee7e7e7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece6363631818180000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010424242848484c6c6c6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000e7e7e7ffffff ffffffffffffffffffffffffffffffffffffffffffb5b5b5000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffff8c8c8c000000393939ff fffffffffffffffff7f7f78c8c8c181818000000000000000000000000000000393939efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7525252000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010737373d6 d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b52929290000000000000000000000006b6b6bffffff ffffffffffffffffffffffffffffff4242420000000000000000000000005a5a5abdbdbd000000000000000000000000000000101010bdbdbdffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70808080000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffff b5b5b52929290000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000313131f7f7f7ffffffa5 a5a5080808101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e75252520000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000101010737373d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff525252000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808000000000000000000080808dededeff ffffffffffffffffffffffffffffffffff393939000000d6d6d6ffffffffffffffffffffffffffffff9c9c9c2121210000000000000000000000004a4a4affff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000004a4a4ad6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffa5a5a5181818000000000000000000c6c6c6fffffffffffffffffffffffffffffff7f7f7292929000000000000636363ffffffffffff8c8c8c00 0000000000000000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000006b6b6bffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000313131 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818000000000000000000c6c6c6ffffffffffffffffffffffffffffffe7 e7e7181818000000000000000000000000424242949494000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffff292929f7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd6d6d6181818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a4a4ad6d6d6ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000848484ffffffffffffffffffffffffffffffffffffffffffff ffff292929000000000000000000000000000000313131ffffffffffffffffffffffffffffffffffffd6d6d60000007b7b7bffffffffffffffffffffffffffff ffffffffffffff8c8c8c0808080000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff29292900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000848484ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef636363000000000000313131ffffffffffffffffffffffffffffffff fffff7f7f7313131393939ffffffffffffffffffffffff7b7b7b000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff292929000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffefefef080808000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef63636300 0000000000313131ffffffffffffffffffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000181818efef efffffffffffffffffffffffffffffffffffff2929299c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000bd bdbdffffffffffffffffffffffffffffffffffffffffffffffff3131310000000000000000000000000000007b7b7bffffffffffffffffffffffffffffffffff ffffffff5a5a5a212121ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e74a4a4a000000000000181818f7f7f7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c00000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000424242efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad adad080808000000bdbdbdffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000007b7b7bffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000007b7b7bffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffadadad080808000000bdbdbdffffffffffffffffffffffff7b7b7b0000000000000000000000000000 00000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffff848484424242ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000424242efefefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff6b6b6b000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000000000 009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffff 9c9c9c080808000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a00000000000000000000 00000000000000000000000000000000000000000000000808082929293131314242424a4a4a5252525252525a5a5a5a5a5a5a5a5a5252524a4a4a3939393131 31181818080808000000000000000000000000000000000000000000000000000000000000000000000000000000313131f7f7f7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000 737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd6d6d6000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808525252ffffffffff ffffffffffffffffffff4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffff ffffffbdbdbd080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff4a4a4a0000000000000000000000000000000000000000000000000000000000000000000808082929293131314242424a 4a4a5252525252525a5a5a5a5a5a5a5a5a5252524a4a4a3939393131311818180808080000000000000000000000000000000000000000000000000000000000 00000000000000000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818a5a5a5ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffadadad0808080000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242848484ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff2121210000000000000000000000000000000000001010105a5a5a949494cececeefefefffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7cececeadadad848484525252181818000000000000000000000000000000 000000000000000000424242fffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000efefefffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffadadad0000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff949494000000efefeffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000 949494ffffffffffffffffffffffffffffffffffffffffffffffffefefef000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000000000000000000000001010105a 5a5a949494cececeefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7cece ceadadad848484525252181818000000000000000000000000000000000000000000000000424242ffffffe7e7e79494945a5a5a3939393131315a5a5ad6d6d6 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff8484840000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6 c6000000080808ffffffffffffffffffffffffffffffffffffffffffbdbdbd212121949494ffffffa5a5a5393939ffffff8c8c8c181818c6c6c6ffffffffffff ffffffffffffffffffffffffffffffb5b5b5313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000c6c6c6ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000000000000000000000393939b5b5b5ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffdedede949494393939000000000000000000000000000000000000949494cecece6b6b6b2121210808080000001010106b6b6bf7f7f7ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdede de6b6b6b5a5a5a737373b5b5b5bdbdbd0000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000424242ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000adadadffff ffffffffffffffffffffffffffffffffffffffffffffdedede6b6b6b5a5a5a737373b5b5b5bdbdbd0000009c9c9cffffffffffffffffffffffffffffffffffff 7b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000007b7b7bffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10 1010000000000000000000000000393939b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede949494393939000000000000000000000000000000000000 3939390000000000000000000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000bdbdbdffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7000000080808ffffffffffffffffffffffffffffffffffffb5b5b5080808000000000000949494 ffffffffffff8c8c8c000000000000080808cececeffffffffffffffffffffffffffffffffffffffffff181818ffffffffffffffffffffffffffffffffffffff ffff9c9c9c7b7b7b9c9c9ccececef7f7f7000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000 000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece63636300000000000000000000000000000000 0000000000000000000000000000000000000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7f7f7101010000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff212121101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc6c6c60000006b6b6bfffffffffffffffffffffffffffffffffffffffffff7f7f7101010000000000000000000000000000000 000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffcecece6363630000000000000000000000000000006363633939390808080000000000000000000000000000006b6b6bffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70000000000000000 00000000000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000f7f7f7ffffffffffff ffffffffffffd6d6d6101010000000000000000000000000adadadadadad000000000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffff ffffefefefffffffffffffffffffffffffffffffffffff424242000000000000000000000000080808000000313131ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff396b94 000042000000000000393900bd946bffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff3939390000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd6d6d63939390000000000000000004242427b7b7b525252181818000000000000000000000000101010dededeffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000000000000000000000000000000000 000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000313131ffffffffffffffffffffffffffffffffffff ffffffb5b5b5000000000000000000000000000000000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000101010ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939390000000000008c8c8cffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6393939000000000000000000737373fffffff7f7f7a5a5a531 3131000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7f7f7181818000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff8c8c8c000000d6d6d6ffffffffffffffffffffffff39393900000000000000000000000000000018181810101000000000000000000000 0000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000000000000000000000000000000000 00000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff63b5ff6b0000ffde94ffffffffffffdeffff006394bd6b00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000313131ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000000000101010f7f7f7ffffffffffffcecece6363 63080808000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffa5a5a5000000000000000000000000000000000000000000080808313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000080808ffffffffffffffffffffffffffffffffffffffffffa5a5a5000000000000000000000000000000000000000000000000848484ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff6b6b6b000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff6b6b6b000000000000101010f7f7f7ffffffffffffffffff2121210000000000000000000000002121214a4a4a7373739c9c9cd6d6d6ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808000000000000000000b5b5b5ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70000009c9c9cffffffffffffffffffffffff31313100000000000000 0000000000000000424242000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffbdbdbd000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff396bbd000000000000000000000000000000bd 6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff9c9c9c0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff7b7b7b000000000000a5a5a5ffffffffffffffffffffffffefefef6b6b6b000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b50000000000000000000000000000000000000000004242420808084a4a4affffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7f7f7101010737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000e7e7e7ffffffffffffffffffffffffffffffffffffb5b5b500000000000000000000 0000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000a5a5a5ffffffffffffffffff9c9c9c0000002929290000000000 000000001010101010100000000000001010104a4a4a9c9c9cefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9c9c9c ffffffb5b5b5080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a42 4242ffffffffffffffffffffffffdedede080808000000000000000000949494ffffff4a4a4a000000000000000000000000adadadffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000000000000000000000000000000000101010ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbdb56300ffffffffffffffffff63b5ff6b0000ffffb5ffffffffffffff ffff3994de000000000000943900ffffde6bbde70000396b3900ffffb53994e7000000000000390000003939000000000000de9439ffffffffffffffffffffff ff3994e7000000000000000000ffbd6b3994de000000000000390000ffde94deffff3963b50000000000006b3900ffde94ffffff63b5ff000000000000943900 ffffdeffffff3994de000000000000390000003939000000000000de94393994de0000000000009439003994b5000000000000390000003939000000000000de 943994deff000039000000000000000000000000633900ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffefefef0000000000001010103939396b6b6bb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000004a4a4affffffffffffffffffffffffffffffffffffb5b5b5101010000000 424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede00000000000000000000 00000000000000000000007373739494940000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252313131ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000bdbdbdffffffffffffff ffffffffffffffffffffffdedede000000000000000000000000000000000000000000000000000000181818e7e7e7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000adadadffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000009c9c9c ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000004a4a 4affffffffffffffffffefefef080808393939adadad080808000000000000b5b5b5dedede9c9c9c5252520808080000000808085a5a5ae7e7e7ffffffffffff ffffffffffffffffffffffffffffffcecece101010000000424242ffffffc6c6c6848484ffffff6b6b6b212121d6d6d6ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc6c6c6000000cececeffffffffffffffffffffffffb5b5b5000000000000737373fffffffffffff7f7f73939 39000000000000a5a5a5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000000000 000000000000000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b6b0000ff ffbdffffffffffff006bbd390000ffe794ffffffffffffffffffbdffff00006b000000ffbd6be7ffff003994000000bdbd6bbd9494deffff004294000000ffbd 6b6bbdff0000006b0000ffffbdffffffffffffffffffffffffffffff006bbd000000bd6b00ffffff6bbdff0000006b4200ffdebdffffff006bbd000000943900 ffe7bddeffff6b94bdffde94bdffff00006b000000ffbd6bffffffffffffe7ffff003994000000ffbd6b6bbdff0000006b0000ffffbdbdffff00006b000000ff bd6be7ffff003994000000ffbd6b6bbdff0000006b0000ffffbde7ffff396b94ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929298c8c8cffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece424242080808181818000000212121c6c6c6ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121101010ffffff ffffffffffffffffffffffffffffffffffffdedede1818180000002929297b7b7b393939101010424242e7e7e7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff1818180000000000000000000000000000000000009c9c9cffffff424242101010e7e7e7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff bdbdbd000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000adadadffffffffffffffffffffffffffffffffffffffffff1818180000000000000000000000000000000000002121210000 000000005a5a5affffffffffffffffffffffffffffffffffffb5b5b56b6b6b848484f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff2929298c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff212121101010ffffffffffffffffffffffff4a4a4a080808efefefdedede212121000000080808d6d6d6ffffff fffffff7f7f79c9c9c1818180000000808089c9c9cffffffffffffffffffffffffffffffcecece080808000000000000000000424242ffffffffffff4a4a4a00 0000000000101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939424242ffffffffffffffffffffff ffffffffadadad313131ffffffffffffffffffffffffffffff5a5a5a636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff292929000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff63b5ff000000000000ffbd6bffffffdeffff003994000000de9439ffffffffffffffffffb5ffff00006b000000ffbd6bdeff ff003994000000ffbd6bffffffdeffff003994000000ffb5636bbdff0000006b0000ffffb5ffffffffffffffffffffffffffffff0063b50000009463006bbdde 000000943900ffffdeffffffb5ffff00006b390000ffde94ffffffffffffffffffffffffdeffff003994000000ffbd6bffffffffffffdeffff003994000000ff bd6b63b5ff000000630000ffffbdb5ffff00006b000000ffbd6bdeffff003994000000ffbd6b63b5ff000000630000ffffbdffffff94deff0039630000000000 00bd6b39ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff6b6b6ba5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffe7e7e7181818c6c6c6d6d6d6737373101010b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffb5b5b5000000cececeffffffffffffffffffffffffffffffffffffffffffdedede10101000000000000000000000000000 0000101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000dededeffff ffcecece0000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff292929848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffffffff5252 52000000000000000000000000000000000000dedede737373000000000000bdbdbdffffffffffffffffffffffff7b7b7b000000000000000000101010d6d6d6 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6ba5a5a5ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000cececeffffffffffffffffff9c9c9c 000000adadadfffffff7f7f7393939000000181818e7e7e7ffffffffffffffffffffffff636363000000000000949494ffffffffffffffffffefefef10101000 00000000000000000000000000006b6b6b525252000000000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffcecece0000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000000000000000000000009c9c9cff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000006b4200bd946bffffff94deff000042390000946b 42ffffdeffffffffffffbdffff00006b000000ffbd6be7ffff003994000000ffbd6bffffffdeffff004294000000ffbd6b6bbdff0000006b0000ffffbdffffff ffffffffffffffffffffffff006bbd0000000000000000006b0000ffffbdffffffffffff94e7ff000039000000000000000000000000000000de9439e7ffff00 3994000000ffbd6bffffffffffffe7ffff003994000000ffbd6b6bbdff0000006b0000ffffbdbdffff00006b000000ffbd6be7ffff003994000000ffbd6b6bbd ff0000006b0000ffffbd94e7ff0000396b0000ffffbd6b94e7000000944200ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929f7f7f7ffffffd6d6d6181818efefefffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929b5b5b5ffffffffffffffffffffffffffffffff ffffffffffffffffdedede101010000000000000000000000000000000181818e7e7e7cececeb5b5b5e7e7e7ffffffffffffffffffffffffffffffffffffadad ad000000000000000000000000000000393939ffffffffffffffffff313131000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5848484ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c 8cffffffffffffffffffffffffffffffffffffffffffadadad000000000000000000000000000000393939ffffffffffffadadad080808292929ffffffffffff ffffffadadad000000000000000000000000000000181818f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff292929b5b5b5ffffffffffffffffffefefef080808636363ffffffffffffffffff424242000000292929f7f7f7ffffffffffffffffffffffff73 7373000000000000dededeffffffffffffadadad000000000000000000000000000000000000080808000000000000000000000000000000000000424242ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000c6c6c6ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd bdbd000000000000000000000000000000080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff0000 39000000de94399494deffffb53994e70000009439006394deffe794ffffffffffffb5ffff00006b000000ffbd6bdeffff003994000000ffbd6bffffffe7ffff 003994000000ffb5636bbdff0000006b0000ffffb5ffffffffffffffffffffffffffffff0063b5000000b563006bbdff943939ffffdeffffffffffffb5ffff00 006b630000ffffbdffffff3994de000000ffbd6bdeffff003994000000e79439ffffffffffffdeffff003994000000ffbd6b63b5ff000000630000ffffbdb5ff ff00006b000000ffbd6bdeffff003994000000ffbd6b63b5ff000000630000ffffbd3994de000000943900ffffde63b5ff000000630000ffffbdffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000424242 e7e7e7ffffff2121218c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede5a5a5a6b6b6b9494947b7b7b0808080000000000000000000000 00080808adadadffffffffffffffffffffffffffffffffffff212121000000000000000000000000b5b5b5ffffffffffffffffff7b7b7b000000737373ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000000000000000 b5b5b5ffffffffffffffffffa5a5a5000000adadadffffffffffff212121000000000000000000000000000000000000636363ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffff424242181818ffffffffffffffffffff ffff4a4a4a000000393939fffffffffffffffffffffffff7f7f7000000000000737373ffffffffffffffffff3939390000000000000000000000005a5a5ab5b5 b5000000000000000000000000000000101010bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929 080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff3994de000000390000ffe79494deffe7bd94003994000000de943994e7ffde946bffffffffffffbdffff00006b 000000ffbd6be7ffff003994000000ffbd6bffffffdeffff004294000000bd6b006bbdff000000943900ffffe7ffffffffffffffffffffffffffffff006bbd00 0000bd6b00ffffff94e7ff6b3939e7bd94ffffffffffff3994de000000de9439e7ffff006bbd944200ffffdebdffff00006b000000bd6b006bbde76b0000e7ff bd003994000000bd6b006bbde70000006b0000ffffbdbdffff00006b000000ffbd6be7ffff003994000000bd6b006bbde70000006b0000ffffbd94e7ff000039 6b0000ffffbd6b94e7000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7e7e7000000181818080808181818000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffbdbdbd000000000000000000000000000000101010dededeffffffffffffffffffffffffffffffbdbdbd0808080000000000007b7b7b ffffffffffffffffffffffffbdbdbd000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffff ffffffffffffffffffbdbdbd0808080000000000007b7b7bffffffffffffffffffffffffffffff393939393939ffffffadadad00000000000000000000000000 0000000000000000080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffadadad000000cececeffffffffffffffffffffffff181818000000393939f7f7f7ffffffffffffc6c6c6000000000000424242ffffffffff fffffffff7f7f7292929000000000000636363ffffffffffff8c8c8c000000000000000000212121e7e7e7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffdedede181818101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60808080000000000004242 42ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff003994000000943900ffffdee7ffff63949400006b 390000ffe794deffff946b94ffffdeffffff3994de000000000000ffbd6b3963b5000000000000000000630000deffbd003994000000b5946300396b390000e7 946bffffffffffffffffffffffffffffffffffff0063b5000000b56300ffffff3994de000000000000bd6b00ffffffffffff6394de0000390000006b3900ffde b5ffffff63b5ff000000000000bdbd6b0039636b000039949400000000000094946b003963000000de9439ffffff3994de000000000000ffbd6b3994de000000 00000094946b003963000000de9439ffffffffffff94bdde003939000000000000000000000000943900ffffdeffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000636363949494181818181818dededeffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000101010292929000000525252ffffffffffff ffffffffffffffffffffffffe7e7e7b5b5b5d6d6d6ffffffffffffffffffffffffffffffe7e7e7000000000000dededeffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7b5b5b5d6d6d6ffffffffffffffffffffffffffffffffffff9c 9c9c000000dedede424242000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010636363ffffffffffffffffffffffff3939390000000000001818 188484847b7b7b101010000000000000313131fffffffffffffffffffffffff7f7f7313131393939ffffffffffffffffffffffff7b7b7b000000080808dedede ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece101010080808b5b5b5ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffdedede949494adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 94e7ff000039000000de9439ffffffffffff4294e7000000944200ffffdeffffff6b94deffe794ffffffffffffffffffffffffffffffffffff006bbd000000ff bd6bffffffdeffff004294000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd000000bd6b00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 292929393939ffffffffffffa5a5a5000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08 0808000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffcecece000000737373080808000000000000000000000000000000000000000000000000292929ffff ffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0808 08dededeffffffffffffefefef0808080000000000000000000000000000000000000000000000005a5a5afffffffffffffffffffffffffffffffffffff7f7f7 ffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6bdbdbdffffffff ffffffffffffffffffffffc6c6c61010100000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff3994de000000390000ffe794ffffffffffff0063b5000000b56300ffffffffffff94e7ffde9463ff ffffffffffffffffffffffffffffffffffe7ffff003994ffbd6bffffffe7ffff003994000000ffb563ffffffffffffffffffffffffffffffffffffffffffffff ffffffff0063b5000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff5a5a5a7b7b7bffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff2121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000848484ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0000002121210000000000000808 088c8c8ce7e7e7ffffffd6d6d6636363000000000000dededeffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffe7e7e7000000313131b5b5b5adadad292929000000000000000000525252080808000000000000000000000000 bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffb5b5b5181818e7e7e7ffffffffffffffffffffffffffffffd6d6d6292929000000424242e7e7e7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000042000000bd6b00ffffffffffff6b bdde000000390000ffe794ffffffffffffdeffff946b94ffffdee7ffff003994420000ffde94ffffffffffff94e7ffffbd94ffffffdeffff004294000000ffbd 6bffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff003994420000ff de94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808292929ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde dede292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000313131ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff2929290000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffa5a5a5000000a5a5a5ffffffffffffffffffffffffffffff ffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000000000000000000000 0000000808088c8c8c0000004a4a4a424242636363bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939313131d6d6d6ffffffffffffffffffffffffffff fff7f7f75a5a5a000000101010a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00006b000000000000000000de94390063b5000000000000000000390000ffe794ffffff006bbd0000006b0000deffb5003994390000ffe794ffff ffffffffffffffffffffffffff3994de000000000000ffb563ffffffffffffffffffffffffffffffffffffffffffffffff3994de000000000000b56300ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffdeffff003994390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff313131e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff525252000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000848484ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000313131ffffffffffffffffffffffffffffffffffff ffffff737373636363ffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff4a4a4a000000000000000000000000000000949494ffffff4242420000008c8c8cffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd6d6d60000000000003939396363636363635a5a5a393939313131181818000000000000000000424242e7e7e7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818212121ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484b5b5b5ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a50000008484 84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000 000000848484fffffffffffffffffffffffffffffffffffffffffff7f7f74a4a4affffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b1010100000001818189c9c9cfffffffffffff7f7f739393900 0000525252e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000000000000000000000000000000000000000000000000000000000000000 000000080808848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363292929 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000 efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f70808087b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffff636363ffffffffffffff ffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffefefef393939000000101010848484f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5181818000000 000000000000000000000000000000000000000000000000000000000000000000212121efefefffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffefefef313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff9c9c9c000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373736b6b6bffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000dededeffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000008c8c8cffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000000000001010108484 84efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff9494944242421010100808081010102121212929294242424a4a4a5a5a5a6363636b6b6b737373ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000e7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffefefef636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818 18000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffa5a5a5101010000000000000080808636363dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff181818000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff4242420000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7737373101010000000000000000000636363e7e7e7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000181818ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000007b7b7bffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefef8c8c8c2121210000000000001010109c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000d6d6d6ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff181818000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffdedede0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff949494ffffffffffffffffffffffffffffffffffffffffffb5b5b54a4a4a000000000000848484ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff5a5a5ab5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000181818ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939393939ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a737373ffffffffffffffffffffffffffffffffffffff ffffffffffd6d6d6424242000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefd6d6d6ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000 212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce cece080808848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff080808393939ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff525252000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000001818185a5a5a7373738484848484847b7b7b6b6b6b5252521010100000000000 00e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000080808ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000000000000000 00000000000000000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffbdbdbd000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff5a5a5a000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6636363181818000000000000000000080808 2929294a4a4a8c8c8cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000d6d6d6ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffbdbdbd000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121525252ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff adadad000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff313131212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808313131efefefff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff7b7b7b000000212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000080808adadadffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef2121210000000000006b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede101010000000000000313131d6d6d6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000 000000080808949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffe7e7e7292929000000000000000000525252f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f74a4a4a000000000000000000212121ce ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff8c8c8c0808080000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece2121210000000000000000006b6b6bffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f75a5a5a0000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000000000006b6b6bffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010 000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffdedede181818000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7181818000000cececeffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc6c6c60000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373736b6b6bffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f7dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff8484840000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000bdbdbdffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede00000000000000000000 0000000000000000080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f7181818000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808000000000000000000b5b5b5ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9c9c9cffff ffb5b5b5080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffcecece101010000000424242ffffffc6c6c6848484ffffff6b6b6b212121d6d6d6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000000000004a4a4affffffffffff4a4a4a000000 000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010000000 0000000000000000000000006b6b6b525252000000000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef8c8c8c4a4a4a1818180808080000001818184242428c 8c8cdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffcecece6b6b6b313131101010080808101010424242848484e7e7e7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffadadad000000000000000000000000000000000000080808000000000000000000000000000000000000424242ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b08 0808000000000000000000000000000000000000000000000000080808636363f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7525252000000000000000000000000000000000000 0000000000000000006b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000000000000000000000005a5a5ab5b5b500 0000000000000000000000000000101010bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffe7e7e7393939000000000000000000000000000000000000000000000000000000000000000000000000101010b5b5b5ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede 212121000000000000000000000000000000000000000000000000000000000000000000292929c6c6c6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7f7f7292929000000000000636363ffffffffffff8c8c8c000000000000000000212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef2929290000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818a5a5a5 ffffffffffffffffffffffffffffffffffffefefef21212100000000000000000000000000000000000000000000000000000000000000000000000000000008 0808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef313131393939ffffffffffffffffffffffff7b7b7b000000101010dededeffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c9c9cffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff8484840000000000000000009c9c9cffffffffffffffffffffffffffffff5a5a5a00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffff ffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000000000000000b5b5b5ffffffffffffffffffc6 c6c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808c6c6c6ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000000000000000000000000000000000000000 0000003131314a4a4a5a5a5a393939212121000000000000000000000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e700000000000000 0000000000000000000000101010f7f7f7ffffffffffff5252520000000000000000000000000000000000000808083131315252525a5a5a5252522929290808 08000000000000000000000000000000212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c 0000000000000000000000000000000000002929299c9c9cf7f7f7ffffffffffffffffffffffffffffffe7e7e78c8c8c2121210000000000000000000000004a 4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffefefef181818000000000000000000000000000000848484ffffffffffffefefef0808080000000000000000000000002121 21adadadf7f7f7ffffffffffffffffffffffffffffffefefef9c9c9c2121210000000000000000000000004a4a4affffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff4242420000000000000000000000000000006b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffff fffffffffffffffff7f7f78c8c8c000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808000000000000000000b5b5b5ffffffffff ffffffffadadad0000000000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484080808000000 000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000007b7b7bff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece212121000000000000212121ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef9c9c 9cffffffb5b5b5080808000000a5a5a5ffffffffffffffffffffffff6b6b6b0000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc6c6c6181818000000000000181818f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffb5b5b5000000000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef2121210000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffcecece1010100000004a4a4affffffc6c6c68c8c8cffffff6b6b6b212121d6d6d6ffffff424242000000000000101010 efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000737373ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818000000181818ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7efefefffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808000000000000000000424242fffffff7f7f74a4a4a 000000000000080808cecece212121000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffcecece080808000000080808efefefffffffffffffffffffffffffffffffffffffffffffe7e7e7efefefffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd6d6d6a5a5a57373735a5a5a3939392121211010100808080000000000000000000808080808081010101818182929293131314a4a4a6363637b7b7b9494 94bdbdbde7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000000000000000007373 73ffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5181818a5a5a5ffffffffffffffffffffffffffffffffffffcecece000000000000 a5a5a5ffffffffffffffffffffffffffffff4a4a4a0808082121214242426363638c8c8cb5b5b5efefefffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffdededea5a5a57b7b7b5252523939392121211818180808080808080000000808080808080808081010102121212929293939394a4a4a 6363637b7b7b9c9c9cbdbdbde7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff3939390000000808082121214a4a4a6b6b6b9c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffefefef101010 0000000000000000000000000000006b6b6b525252000000000000000000000000101010101010000000000000dededeffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a50000000000007b7b7bffffffffffffffffffffffffffffffffff ffffffff3939390000000808082121214a4a4a6b6b6b9c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffcecece6b6b6b1818180000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000001010104a4a4a7b7b7bcececeffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff525252000000000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffadadad080808000000080808adadad ffffffffffffffffffffffffffffffffffff949494000000424242fffffffffffffffffffffffffffffff7f7f78c8c8c21212100000000000000000000000000 0000424242efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff396394000039000000000000393900bd946b ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6636363181818000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000101010424242848484c6c6c6ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad313131000000000000000000000000000000 393939ffffffffffffffffffffffffffffffadadad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a 4a000000080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffadadad313131000000000000000000000000000000393939ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffdededee7e7e7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a0000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000001818186b6b6bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000393939ffffffffffffffffffffffffffffffffffff ffffffffffffcecece080808000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffff393939000000d6d6d6ffffffffffffffffffff ffffffffffffffffffffff9c9c9c1818180000000000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff6bbdff6b0000ffde94ffffffffffffe7ffff006b94bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7525252000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000101010737373d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffb5b5b5313131000000000000000000000000636363ffffffffffffffffffffffffffffff4242420000000000000000000000005a5a5ab5 b5b50808080000000000000000000000001818180808080000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefef0808080000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5 313131000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000313131f7f7f7ffffffa5 a5a5080808101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede1818180000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000525252d6d6d6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000 000000848484ffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000000000000000000000393939ffffffffffffffffffffffffff ffffffffffcecece0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c101010000000000000000000a5a5a5ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff3963b5000000000000000000000000000000b56300ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d6d6d618181800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a4a4ad6d6d6ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5101010000000000000000000bdbdbdffffffffffffff fffffffffff7f7f7292929000000000000636363ffffffffffff848484000000000000000000181818dedede1010100000006b6b6bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000313131ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5101010000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffe7 e7e7181818000000000000000000000000424242949494000000000000000000080808cececeffffffffffffffffffffffffffffff292929f7f7f7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff212121000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008 08087b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff5a5a5a000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffff31313100000000000000 00000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffff525252212121ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffe7e7e7525252000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff006bbdbd6b00ffffffffffffffffff6bbdff6b0000ffffbdffffffffffffffffff4294e7000000000000943900 ffffe76bbdde0000426b3900ffffbd3994de000000000000420000003939000000000000e79442ffffffbdffff393994000000000000946b42ffdebdffffffff ffff6b94e70000394200006b6b6b000000000000e79442ffffff6bbde70000396b4200ffffbdffffffffffffffffffffffff4294e7000000000000000000ffbd 6b3994de000000000000420000ffde94e7ffff396bbd0000000000006b4200ffde94ffffff6bbdff000000000000944200ffffdeffffff3994de000000000000 420000003939000000000000e794423994de0000000000009442003994bd000000000000420000003939000000000000e7944294deff00004200000000000000 00000000006b3900ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff29292900000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7f7f7636363000000000000313131fffffffffffffffffffffffffffffff7f7f7313131393939ffffffffffffffffffffffff7b7b7b000000101010dede deffffff292929000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefef080808000000d6d6d6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f763636300000000 0000313131ffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000181818efef efffffffffffffffffffffffff2929299c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000424242f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000e7e7e7ffffffffffffffffffff ffffffffffffffffffffffffffffd6d6d6080808000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffdedede000000d6d6 d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5080808000000949494ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5ffff00006b630000ffffbdffffffffffff0063b5390000 ffde94ffffffffffffffffffb5ffff00006b000000ffbd6bdeffff003994000000bdbd6bb59494deffff003994000000ffb5636bbdff0000006b0000ffffb5de ffff0039946b0000ffdeb594deff000063943900ffffdedeffff003994000000ffb5633994de0000006b0000ffffb5deffff003994000000b5b563bd9494ffff ffffffffffffffffffffffffff006bbd000000bd6b00ffffff6bbdff0000006b3900ffdeb5ffffff0063b5000000943900ffe7bddeffff6b94bdffde94bdffff 000063000000ffb563ffffffffffffdeffff003994000000ffb5636bbdff0000006b0000ffffb5bdffff000063000000ffb563deffff003994000000ffb5636b bdff0000006b0000ffffb5deffff396394ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c00000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000424242efefefffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad080808000000bdbdbdfffffffffffffffffffffffffffffffffffff7f7 f7ffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffff4a4a4a0000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000848484ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffadadad080808000000bdbdbdffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000 00000000000000000000000000000000000000000000848484ffffffffffffffffffffffff848484424242ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252 0000000000000000000000000000000000000000000000000000000000000000001010102121213131314242424a4a4a5252525a5a5a5252525a5a5a52525252 52524a4a4a393939292929181818000000000000000000000000000000000000000000000000000000000000000000000000000000000000292929f7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff9c9c9c000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000000000737373ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff4a4a4a848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6 080808292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 6bbdff000000000000ffbd6bffffffdeffff004294000000e79442ffffffffffffffffffbdffff00006b000000ffbd6be7ffff003994000000ffbd6bffffffde ffff004294000000ffbd6b6bbdff0000006b0000ffffbd6bbdff000000943900ffffe7deffff004294000000ffbd6bbdffff00006b000000ffbd6b6bbdff0000 006b0000ffffbddeffff004294000000ffbd6bffffffffffffffffffffffffffffffffffff006bbd000000946b006bbde7000000944200ffffdeffffffbdffff 00006b390000ffe794ffffffffffffffffffffffffdeffff004294000000ffbd6bffffffffffffdeffff004294000000ffbd6b6bbdff0000006b0000ffffbdbd ffff00006b000000ffbd6bdeffff004294000000ffbd6b6bbdff0000006b0000ffffbdffffff94e7ff00396b000000000000bd6b42ffffdeffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff4a4a4a0000000000000000000000000000000000000000000000000000000000000000000808082121213131314242424a4a4a5252525252525a5a 5a5a5a5a5a5a5a5252524a4a4a393939313131181818080808000000000000000000000000000000000000000000000000000000000000000000000000000000 313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c61010 10525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000737373ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d600 0000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010525252ffffffffffffffff ffffffffffffffffffff4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffffffffffffffc6c6c6 080808f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff2121210000000000000000000000000000000000001818185a5a5a9c9c9ccececef7f7f7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefd6d6d6adadad8c8c8c5252522121210000000000 00000000000000000000000000000000000000424242ffffffe7e7e79c9c9c5a5a5a424242313131636363cececeffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c181818a5 a5a5ffffffffffffffffffffffffffffffffffffffffffffffffcecece000000080808ffffffffffffffffffffffffffffffffffffffffffbdbdbd1818189494 94ffffffadadad393939ffffff8c8c8c212121c6c6c6ffffffffffffffffffffffffffffffffffffffffffadadad393939ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0063b5000000633900bd946bffffff94e7ff000039390000946339ffffe7ffffffffffffb5ffff00 006b000000ffbd6bdeffff003994000000ffbd6bffffffe7ffff003994000000ffb5636bbdff0000006b0000ffffb53994e7000000943900ffffdee7ffff0039 94000000de9439bdffff000063000000ffb5636bbdff0000006b0000ffffb5e7ffff003994000000ffb563ffffffffffffffffffffffffffffffffffff006bbd 0000000000000000006b0000ffffb5ffffffffffff94deff000039000000000000000000000000000000de9439deffff003994000000ffb563ffffffffffffe7 ffff003994000000ffb5636bbdff0000006b0000ffffb5bdffff000063000000ffb563e7ffff003994000000ffb5636bbdff0000006b0000ffffb594e7ff0000 396b0000ffffb56b94e7000000943900ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000000000000000000000001010105a5a5a949494cececeefef efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefcececeadadad848484525252 1818180000000000000000000000000000000000000000000000004a4a4afffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff949494080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffadadad0000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff292929000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff949494080808e7e7e7fffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000 949494ffffffffffffffffffffffffffffffffffffefefef000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000000000000000000000313131b5 b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffe7e7e78c8c8c393939000000000000000000000000000000000000313131000000000000000000000000000000 000000080808848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff7b7b7b000000000000000000949494fffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000ffffffffff ffffffffffffffffffffffffffb5b5b5000000000000000000949494ffffffffffff848484000000000000101010c6c6c6ffffffffffffffffffffffffffffff ffffffffffff101010ffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c848484949494cececeefefef0000006b6b6bffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000042000000e794429494deffffbd39 94de0000009439006b94e7ffde94ffffffffffffbdffff00006b000000ffbd6be7ffff003994000000ffbd6bffffffdeffff004294000000ffbd6b6bbdff0000 006b0000ffffbd6bbdff000000943900ffffe7deffff004294000000ffbd6bbdffff00006b000000ffbd6b6bbdff0000006b0000ffffbddeffff004294000000 ffbd6bffffffffffffffffffffffffffffffffffff006bbd000000bd6b006bbdff943939ffffe7ffffffffffffbdffff00006b6b0000ffffbdffffff4294e700 0000ffbd6bdeffff004294000000e79442ffffffffffffdeffff004294000000ffbd6b6bbdff0000006b0000ffffbdbdffff00006b000000ffbd6bdeffff0042 94000000ffbd6b6bbdff0000006b0000ffffbd3994de000000943900ffffe76bbdff0000006b0000ffffbdffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000000000000000 00000000393939b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede949494393939000000000000000000000000000000000000949494cecece73737321 21210808080000001010106b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede6b6b6b525252737373adadadc6c6c6000000a5a5a5ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000393939ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000a5a5a5ffffffffffffffff ffffffffffffffffffffffffffffffffffffffdedede6b6b6b525252737373adadadc6c6c6000000a5a5a5ffffffffffffffffffffffffffffffffffffffffff 7b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffff0000007b7b7bffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff2121210000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d65a5a5a000000000000 000000000000080808636363424242000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000000000080808b5b5b5ffffffffffffffff ffffffffffffffffffffffffff393939000000f7f7f7ffffffffffffffffffffffffd6d6d6080808000000000000000000000000b5b5b5adadad000000000000 000000000000181818e7e7e7fffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff39393900000000 0000000000000000101010000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff3994e7000000390000ffde9494e7ffdeb594003994000000e7943994deffde946bffffffffffffb5ffff00006b000000ffbd6bdeffff0039940000 00ffbd6bffffffdeffff003994000000b563006bbdff000000943900ffffdedeffff0039946b0000ffde94bddeff000063943900ffffdebdffff000063000000 ffb5636bbdff0000006b0000ffffb5deffff003994000000ffb563ffffffffffffffffffffffffffffffffffff006bbd000000bd6b00ffffff94e7ff633939de bd94ffffffffffff3994de000000de9439e7ffff0063b5943900ffffdebdffff000063000000b563006bbde7630000deffbd003994000000b563006bbdde0000 006b0000ffffb5bdffff000063000000ffb563deffff003994000000b563006bbdde0000006b0000ffffb594deff0000396b0000ffffb56b94de000000bd6b00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff212121000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece5a 5a5a000000000000000000000000000000000000000000000000000000000000000000000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7181818000000000000 0000000000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21 2121101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc6c6c6000000737373fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7181818000000000000000000000000000000000000 424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000000000848484ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffcecece393939000000000000000000737373fffffff7f7f79c9c9c3131310000000000000000000000005a5a5aff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0808080000 00000000000000000000000000101010efefefffffffffffffffffffffffffffffffffffff949494000000d6d6d6ffffffffffffffffffffffff313131000000 000000000000000000000000101010101010000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd6d6d6000000000000000000000000000000000000000000101010ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff003994000000943900ffffe7deffff6b949400006b420000ffde94e7ffff946b94ffff e7ffffff4294e7000000000000ffbd6b426bbd0000000000000000006b0000deffbd004294000000bd946b00396b420000de946bffffffffffffe7ffff396b94 000000000000946b42ffffdeffffff3994de000000000000e7bd6b0039940000006b0000ffffbd396bbd0000000000000000006b0000ffffbdffffffffffffff ffffffffff006bbd000000bd6b00ffffff3994de000000000000bd6b00ffffffffffff6b94de0000420000006b4200ffdebdffffff6bbdff000000000000bdbd 6b00396b6b000039949400000000000094946b00396b000000de9439ffffff3994de000000000000ffbd6b3994de00000000000094946b00396b000000de9439 ffffffffffff94bde7003939000000000000000000000000944200ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939390000000000008c8c8cffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d63939390000000000000000004242427b7b7b5252521818180000000000000000000000 00101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffb5b5b5000000000000000000000000000000000000000000101010efefefffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff636363000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000313131ffffffffffffffffffffffffffffffffffffffffffffffff b5b5b50000000000000000000000000000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000313131ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000101010ffffffff ffffffffffffffff2121210000000000000000000000001818184a4a4a737373a5a5a5d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f7181818000000000000000000000000080808848484ffffffffffffffffffffffffffffffffffffffffffe7e7e7 0000009c9c9cffffffffffffffffffffffff3939390000000000000000000000000000004a4a4a000000000000000000000000000000080808848484ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60000000000000000000000000000000000000000000808 08ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000039000000e79439ffff ffffffff3994de000000943900ffffdeffffff6b94e7ffde94ffffffffffffffffffffffffffffffffffff006bbd000000ffbd6bffffffe7ffff003994000000 ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0063b5000000ffb563ffffffffffffffffffffffffffffffffffff006bbd000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b 000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000000000 00101010f7f7f7ffffffffffffcecece636363101010000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c00000000000000000000000000000000000000000000000039 3939f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000b5b5b5ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000080808 ffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000000000000000000000000000848484ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000efef efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff9c9c9c000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff8484840000000000009c9c9cffffffffffffffffff9494940000002121210000000000000000000808081010100000000000000808 08525252949494efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000000000000000080808adadadffffff ffffffffffffffffffffffffffffffffffffffffffffffff424242424242ffffffffffffffffffffffffd6d6d60808080000000000000000009c9c9cffffff4a 4a4a000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcece ce000000000000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff4294e7000000420000ffde94ffffffffffff006bbd000000bd6b00ffffffffffff94deffe7946bffffffffffffffffffffffffffffff ffffffdeffff004294ffbd6bffffffdeffff004294000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff003994ffbd6bffffffffffffffffffffffffffffffffffff006bbd000000bd6b00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff9c9c9c000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff7b7b7b000000000000a5a5a5ffffffffffffffffffffffffefefef636363000000000000313131ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b500 00000000000000000000000000000000000000004a4a4a080808525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7f7080808737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffb5b5b500000000000000000000000000 0000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000009c9c9cffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000525252fffffffffffffffffff7f7f70808084242 42adadad101010000000080808b5b5b5dedede9c9c9c5252520808080000000808085a5a5adededeffffffffffffffffffffffffffffffffffffffffffe7e7e7 a5a5a5ffffffbdbdbd080808000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000cececeffffffffffffff ffffffffffb5b5b5080808000000737373fffffffffffff7f7f7424242000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000000000000000000000000000000000313131ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000039000000b56300ffffffffffff6bbde7000000390000ffde94ffffff ffffffdeffff946394ffffe7deffff003994390000ffe794ffffffffffff94deffffbd94ffffffdeffff003994000000ffb563ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ffffb594ffffffffff ffffffffffffffffffffffffff006bbd000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff003994390000ffde94ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000009c9c9cffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000000000181818393939636363adadadffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000004a4a4affffffffffffffffff ffffffffffffffffffbdbdbd1010100000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffdedede0000000000000000000000000000000000000000007373739c9c9c000000949494ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252313131ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000bdbdbdffffffffffffffffffffffffff ffffffffffffffffdedede000000000000000000000000000000000000000000080808000000000000181818e7e7e7ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000adadadffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 2121218c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f7212121080808ffffffffffffffffffffffff4a4a4a000000f7f7f7d6d6d6212121000000101010cececefffffffffffff7f7f7949494181818000000080808 949494ffffffffffffffffffffffffffffffcecece1818180000004a4a4af7f7f7cecece848484ffffff6b6b6b212121cececeffffffffffffffffffffffffff ffffffffffffffffffffff424242393939ffffffffffffffffffffffffffffffadadad313131ffffffffffffffffffffffffffffff636363636363ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000 0000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00006b000000000000 000000de9439006bbd000000000000000000420000ffde94ffffff006bbd0000006b0000e7ffbd003994420000ffde94ffffffffffffffffffffffffffffff39 94de000000000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4294e7000000000000bd6b00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde ffff004294390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff2929298c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece4242 42080808181818000000292929c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff212121080808ffffffffffffffffffffffffffffffffffffffffffdedede1818180000002929297b7b7b393939101010424242dededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000000000000000000000000000 000000009c9c9cffffff424242080808efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000 e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffff1010100000000000000000000000000000000000008c8c8c3939390000 000000005a5a5affffffffffffffffffffffffffffffffffffb5b5b56b6b6b848484f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff737373a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000cececeffffffffffffffffff9c9c9c000000adadadfffffff7f7f7393939000000 212121e7e7e7fffffffffffffffffff7f7f76b6b6b000000000000949494ffffffffffffffffffcecece1010100000000000000000004a4a4affffffffffff4a 4a4a000000000000101010cececeffffffffffffffffffffffffffffffffffffffffffcecece0808088c8c8cffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff6b6b6b000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6ba5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffe7e7e7101010cececed6d6d6737373101010b5b5b5ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000cececeffffffffffffffffffffffffffffffffffffffffffde dede101010000000000000000000000000000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff5a5a5a000000000000000000000000000000000000dededeffffffc6c6c60000005a5a5affffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff292929848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000 00000000000000000000000000000000dededeffffff737373000000000000bdbdbdffffffffffffffffffffffff7b7b7b000000000000000000101010d6d6d6 ffffffffffffffffffffffffffffffffffffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929b5b5b5ffffffffffff ffffffefefef000000636363fffffffffffff7f7f7424242000000313131f7f7f7ffffffffffffffffffffffff737373000000080808d6d6d6ffffffefefef18 1818000000000000000000000000000000737373525252000000000000000000000000181818dededeffffffffffffffffffffffffffffffffffffffffff7373 73080808bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000000000000000000000080808efefefffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929f7f7f7ffffffd6d6d6 181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131b5 b5b5ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000000000000000000000000000181818e7e7e7cececeb5b5b5e7e7e7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000000000000000000000000000313131ffffffffffffffffff292929 080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5848484ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffff ffffffffffffffffffffffffffffffffffffffadadad000000000000000000000000000000313131ffffffffffffffffffadadad080808292929ffffffffffff ffffffadadad000000000000000000000000000000181818f7f7f7ffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefefffffffffffffffffffffffffffffff4a4a4a101010ffffffffffffffffffffffff525252000000424242f7f7f7ffffffff ffffffffffefefef000000000000737373ffffffadadad0000000000000000000000000000000000000000000000000000000000000000000000000000004242 42ffffffffffffffffffffffffffffffffffffffffffffffff292929101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff29292900 00000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc6c6c6000000393939e7e7e7ffffff2121218c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede5a5a5a6b6b6b9494 947b7b7b080808000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000 000000000000000000b5b5b5ffffffffffffffffff8484840000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000000000000000000000b5b5b5 ffffffffffffffffffffffffa5a5a5000000adadadffffffffffff212121000000000000000000000000000000000000636363ffffffffffffffffffffffffff ffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000c6c6c6ff ffffffffffffffffffffff181818000000424242efefefffffffffffffc6c6c6000000000000393939ffffffffffff4242420000000000000000000000005a5a 5abdbdbd000000000000000000000000000000181818b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffdedede101010101010c6c6c6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc6c6c6080808000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70000001818180808081818180000006b6b6bffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000000000000000000000000000101010dededeffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc6c6c6080808000000000000848484ffffffffffffffffffffffffbdbdbd000000181818ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffff ffffffffffffc6c6c6080808000000000000848484ffffffffffffffffffffffffffffffffffff393939393939ffffffadadad00000000000000000000000000 0000000000000000080808e7e7e7ffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff101010636363ffffffffffffffffffffffff3939390000000000002121218484848484841010100000000000003131 31ffffffffffffefefef313131000000000000636363ffffffffffff8c8c8c000000000000000000212121dededeffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd6d6d6080808101010adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6949494adadadffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000063 63638c8c8c181818181818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000 101010292929000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7adadadd6d6d6ffffffffffffffffffff ffffffffffefefef000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7adadadd6d6d6ffffffffffffffffffffffffffffffffffffffffff9c 9c9c000000dedede424242000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffff0000000000008484 84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000dededeffffffffffffe7e7e70808080000 00000000000000000000000000000000000000000000525252ffffffffffffffffffefefef393939313131ffffffffffffffffffffffff7b7b7b000000101010 dededeffffffffffffffffffffffffffffffbdbdbdbdbdbdffffffffffffffffffffffffffffffc6c6c60808080000007b7b7bffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff292929393939ffffffffffffa5a5a5000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000949494ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffcecece000000737373080808000000000000000000000000000000000000000000000000292929ffff ffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffdedede080808292929bdbdbdadadad3131310000000000000000005a5a5a080808000000000000000000000000c6c6c6ffffffffffffffffffffffffffffff f7f7f7ffffffffffffffffffffffffffffff9c9c9cb5b5b5ffffffffffffffffffffffffffffffffffffbdbdbd181818efefefffffffffffffffffffffffffff ffffdedede292929000000424242e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000313131ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff5a5a5a7b7b7bff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000005a5a 5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000848484ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0000002121210000000000000808 088c8c8ce7e7e7ffffffd6d6d6636363000000000000dededeffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000000000000000000000001010108484840000004a4a4a424242 5a5a5abdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff393939292929dededeffffffffffffffffffffffffffffffffffff5a5a5a000000101010a5a5a5ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff080808292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffdedede292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff393939000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff2929290000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffa5a5a5000000a5a5a5ffffffffffffffffffffffffffffff 0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000 000000000000000000949494ffffff4242420808088c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000004242426363636b6b6b5252524242422929292121210000000000 000000004a4a4ae7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131e7e7e7ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000101010ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000313131ffffffffffffffffffffffffffffffffffff ffffff737373636363ffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff737373101010000000181818949494fffffffffffff7f7f7313131000000525252efefefffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a50000000000 000000000000000000000000000000000000000000000000000000000000000808087b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818292929ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff848484b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 6b6b6b000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000848484ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000 000000848484fffffffffffffffffffffffffffffffffffffffffff7f7f74a4a4affffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7f7f73939390000001010108c8c8cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffb5b5b5181818000000000000000000000000000000000000000000000000000000000000000000000000212121 f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff636363292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7f7f70808087b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffff636363ffffffffffffff ffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000181818848484efefefffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7949494424242181818000000101010 1818182929293939394a4a4a5252526b6b6b636363737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef292929ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000000000e7e7e7ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373736b6b6bffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000dededeffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a51010 100000000000000808086b6b6bdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd6d6d6000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef 636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000008484 84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefef7373730808080000000000000000005a5a5ae7e7e7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000e7e7e7ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff4242420000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f78c8c8c212121000000 0000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000 00dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000181818ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000007b7b7bffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c ffffffffffffffffffffffffffffffffffffffffffbdbdbd424242000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffdedede080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff181818000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff dedede0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff4a4a4a7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6424242000000bdbdbdff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5abdbdbdffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000181818ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff424242393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000848484ffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7080808313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefefcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000 212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff7373730000001818185a5a5a7b7b7b8484848484847b7b7b737373525252181818000000000000dededeffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff525252000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000000000000000000000000000000000000000000000000000 00000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000080808ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f75a5a 5a000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffbdbdbd000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c65a5a5a1818180000000000000000001010102121214a4a4a8c8c8cffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000d6d6d6ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffbdbdbd000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121525252ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff adadad000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff313131212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808313131efefefff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff7b7b7b000000212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000080808adadadffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef2121210000000000006b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede101010000000000000313131d6d6d6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000 000000080808949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffe7e7e7292929000000000000000000525252f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f74a4a4a000000000000000000212121ce ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff8c8c8c0808080000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece2121210000000000000000006b6b6bffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f75a5a5a0000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000000000006b6b6bffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010 000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffdedede181818000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7181818000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6761345 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2056815 In addition to avoiding collisions, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11750692 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 he kerning algorithm }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4132949 can}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1276637 be }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 used to create the desired amount of space between finals and initi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4132949 als, which }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6761345 maybe involve both negative and positive kerning. This }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4132949 can be seen most clearly}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11750692 example (a) in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4132949 spacing between}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2056815 the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4132949 final waw and initial}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2056815 seen.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11563208 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2056815 More dramatically,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6761345 negative}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6504638 or inward }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 kerning can be used to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6761345 create overlaps between diagonal sequences}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 }{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11563208 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid11150640 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640\charrsid6310410 collision avoidance}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 , automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640\charrsid6310410 \:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11150640 diagonal overlap}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 as is characteristic of the Nastaliq}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11563208 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid13111606 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13111606 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13111606\charrsid11172004 Nastaliq}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13111606 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 style. This can be achieved with both intra-word sequences and separate words. Again, the presence of any spaces}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6504638 marked IS-SPACE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12479678 are detected and factored into the kerning. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16471979 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid16471979\charrsid16471979 collision.min.x}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11563208 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid11563208 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11563208 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid11563208 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid11563208 on.min.x/y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11563208 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11563208 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16471979 attribute controls the amount of} {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6504638 negative}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2969362 kerning }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12066819 permitted to achieve the overlap.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9652667 \par }\pard \ltrpar\s24\qc \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11563208 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13111606 {\*\shppict {\pict{\*\picprop\shplid1032{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}} \picscalex74\picscaley74\piccropl0\piccropr0\piccropt0\piccropb0\picw21745\pich8121\picwgoal12328\pichgoal4604\pngblip\bliptag-91315815{\*\blipuid fa8ea19947b55e396e2be56f59157575} 89504e470d0a1a0a0000000d4948445200000336000001330806000000e31d96db000000017352474200aece1ce90000000467414d410000b18f0bfc61050000 00097048597300000ec400000ec401952b0e1b000079dd49444154785eeddd09bc4ce5ff07f0a73d2d682729d9935f09bfd2454a9b4b8a94764b7195148a22a4 85d2a2ae2d51923f51a8fc2c178944442a91907b8b2492948ab4a8f99fcf779e67e6ccdc337766ee9dedcc7cdebd4e77ce3367c62c67ce39df67f93e07792c8a 8888888888c8c50ed67f8988888888885c8b810d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31 b0212222222222d76360434444444444aec7c08688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e47a0c6c888888888832ccb6 6ddb54f5ead5d541071da46ebdf5565dea6e0c6c888888888832c89e3d7bd4e5975faef2f3f365fdb5d75e533d7af4501e8f47d6dd8a810d1111115106e8ddbb b7be4599ae7dfbf66ae3c68d7acd6bd8b061aa4d9b36eaa79f7ed225eec3c08688c845f6efdfaffaf6ed2b5d08ec9e7efa6975f0c107ab5ebd7ae9122222bf65 cb96a9e79e7b4eaf51a6dbb46993be15e8edb7df562b56acd06beec3c08688c825f6eeddab9a376fae860c19a26ebef966f5e79f7f4af933cf3ca31e7cf041e9 423074e8503572e44829272282cd9b37abebaebb4efdfbefbfba84321dba9e1d7df4d17acdaf5bb76e729e71ab83ac13a1bb3bd3111165807ffef9475d75d555 6adebc79ba44a9abafbe5add72cb2deac61b6f2cd42ffaf1c71f57fdfaf59341a14494b90a0a0a642cc5962d5bd469a79da6befdf65b7d0f65ba77de79475d7b edb56adfbe7db28e6e686fbcf186dab56b972a57ae9c94b90d5b6c88885c60e0c08101410dcc9c3953dd70c30d8e833d070c18a0060f1eacd78828137df0c107 2a2b2b4b821a78ecb1c7e42f65b6eddbb7abeeddbbab468d1aa9c58b17abb3ce3a4be5e4e4a8d75f7f5d3df0c003eacc33cf54ebd6add35bbb0b5b6c88885c00 ad33b366cdd26be19d74d249ead34f3f951a5a22ca3c2fbef8a2baf7de7bd5df7fff2deb37dd74939a3c79b2dca6cc8520b769d3a6d23db143870e6afcf8f1fa 1e25c1cef0e1c3e576e5ca9525302e5fbebcacbb055b6c88885c00e3669c4e30175d74911a3162444097b352a54ac900500635449907dd8a6ebbed3675d75d77 f9829a962d5b065cc05266faf9e79fd515575c21410dbcfaeaabbe8433a3468df20535f0f5d75fab264d9aa8afbefa4a97b8035b6c88885c62eddab57252dab9 73a7ac9f7beeb96ad1a245eaf8e38f5713274e549d3b7756871f7eb8b4ece08444449965cd9a35d23df5cb2fbfd4254a6ae5c78e1dab0e3bec305d42990a01ee ecd9b3f59a5fab56add4dcb9737d0969ec8e3df65869b939e79c7374496a63604344e422df7cf38d240b40369be9d3a7abb265cbea7bbc83840f39e410e91f4d 449905adbaa87d3717a73816206362cf9e3d659da86ad5aa215b6030ce66c3860d7acdaf468d1ad2adf9a8a38ed225a98d810d111111914b210d7ca74e9d249b 9551a142053565ca14d5b871635d42a4647e9a4b2eb944fdf1c71fbac40b5d17478f1e2dfbcbead5ab75a952c71d779c5ab972a5aa56ad9a2e497d1c63434444 44e44248dddca0418380a0a659b3667271caa08682615f41e6b3238f3c529728d5ba756b356edc38e905b070e142c99406484083aece6e0a6a802d3644446960 ebd6ad72623ae18413740911a5b3fcfc7c75d96597c96f1f30beee89279e50f7dd771fe7afa2222d5bb64cb56bd74e5d7cf1c5923dcf3efeeaafbffe92441357 5e79a5aa54a9922e750f0636444469e0d24b2f95ae04d5ab57d7254494ae90b10af3d3984422a855474d7cddba75659d2853b12b1a1191cb61f668741938f4d0 43750925c3f7df7fafba75ebe69bc59b281e76efdeadb2b3b37d41cd2db7dca23ef9e4130635546c480b8eb15a070e1cd025eec5c086280da16b02b29fa03b02 4e7a6c988d2ff467471fe56479fef9e7e5ef11471c217f29f1f09b43df74cc058119bcf99ba378f8e79f7f549b366dd4a64d9be4f78e34ce93264d9294bc44d1 58b264895c1f9c7aeaa9d28d11fb10baa41d73cc31d20288a9059e7aea29f5fbefbfeb47b803031ba234b367cf1e392099948e9869ba6bd7aeeadf7fff95758a 2dd47421a30cfabb27c30f3ffca0162c5820b7dd928e33dd24f337c799e4330bc6d0bcfffefb32f9eef2e5cb65ee2aa268a045f9a69b6e92b9ce70fcd8b16387 bec70bf763ea009c57faf4e9a3de7cf34d7d8f3b30b0214a33eddbb70f989c0d3038f09a6bae912e0c145b2fbdf492fae28b2fa46b4832a00b1a6a7181814d72 24f337f7c20b2fe85b94ea4ada5571d5aa55eab1c71e53b56bd796b4bdec7a46d1c21c473857613c56a44e3cf1447dcb1d983c8028cd6092ad8d1b37eab54098 71b8458b167a8d4a0a35f2952b579649337ffbed3769c24fb4871e7a483df9e49332195f3af48f76a364fde6befbee3b55ab562df5cb2fbfe8124a55e8aad8b4 695369d5bbf9e69ba5fb58b499cb90aa172db468a92957ae9c2e258a1c026b74972d5fbebcbae8a28ba4e50fd93471fe4097338cb3410af10f3ffc50eddab54b 1e83d69b2a55aac86d5740604344e9e3934f3ef158072a5458042c5dba74d15b50ace4e5e5c9675bba74695d92789d3b7796d7600555ba84122d59bfb93e7dfa 78ac8b64bd46a9eae79f7ff6d4a8512360dfb8f3ce3b3dfffcf38fde22bce9d3a7cbe3962e5daa4b88a2b362c50acfc1071fec79e491473c7ffef9a72e75b67f ff7e39a6d5af5f5f97b807bba251ca6286a1e241f784b7de7a2ba05b52cb962dd5c89123f51ac5cafffef73ff95bb66c59f99b0c98730092d15a445e89f8cd99 9639035ddf860d1ba66ebffd765d42a9c0a9eb612cba2a0e18304052ba9bc91389a2857da857af5e6ae0c081922c2094356bd6c824af68c1193468902e750f06 3694929861a8643090f9bdf7de93cc2638a962f01f5301c7deca952be56f2a8c6d4177024a9e78fee6d09d0d410d821b0432b8d8b8e4924b249b11ba37516a98 3973a66adbb6ad5ef343063327f85e3156269ca54b97aa0d1b36a8abafbe5a971045af55ab56eaf1c71fd76b81d0ad7ace9c3912d09c77de7992a0e291471e91 493a5dc7db7043145b1b376ef40c1f3e5caf452716cdf6448950a64c19d93febd4a9a34b12cfbad095d750ab562d5d42e964fbf6ed9e72e5ca051c0fcdf2faeb afebad28d9f6eddbe7a950a182e7eebbefd6257e25edaa687ee30b172ed42544b1b17bf76ecf534f3de539f3cc337dfb25f6d53163c6e82ddc872d361473d67e a5dab56ba73efef8635de21569d73266f52237c07efeebafbfcaed238f3c52fe268319805caa5429f94bee8441e5a8f19f3871a2d4e2231905b2eda1961ec7ce 6048317ec30d37e8354ab611234648320774170b5692ae8a48273f6dda34b97dca29a7c85fa292faf1c71f55cf9e3dd5e9a79fae1e7cf041b579f36649208079 6dd6af5f2f3d65dc8a810dc51cd2087ef4d147d2ec6944d3b5aca4cdf680f4b7d75e7bad74d5b8ebaebba4cf28512c214037fb7132031bc36d2939c99b7a1593 abd6a8514326d445e50d2a852ebcf04255ba746949eb8b0a2204af48f3dba3470f39aee6e6e6aa575f7d553f0b251bb21122b0017c974e8adb5511e72e04b9c0 7174140b3876e07883e308ce63387fe1ba0cdd1d91ad0fc18eab592766a2983af7dc73a539f3bbefbe93f568bb96c522c3d0e0c1830b3dfebaebaef36cdbb64d 6f4154323b77eef4ed5b975d76992e4d3cecd7780df84d917b20a35e952a557cfb50a8c50a6a3cd645b37e14a5a2f9f3e7fbbeaf1f7ef84197c606ba749be7c6 3187a8b87efffd77cff5d75fefdb9f4e3cf144c99016eb7d36d9d862433185da45d33a72d24927c9df68bb969534c31072af5b818d5ef39b3e7dbaaa57af9e5a b76e9d2e212a3ed4b61b68c24f16b48642fdfaf5e52fa53eb4be606e1b743f03d4e2b76edd5a1203a08b99397656ac585132efa10b2fa5ae77de7947df52ead8 638fd5b76203bd1f0cb6d8503898c475c284096adebc799210c040d733241c41b746eca3b84642f733644833c79bb4a1031ca29878f4d1477db50146cd9a357d 65c1cbecd9b3f55685ad5cb9d2639df03d5660e4f9ebafbf7469787dfbf675fcb7cc72c10517e82d53dff7df7f2f83517ffbed375d42a9c2ba28f5ed53d645aa 2e4d2cb440625e02d4eab335d21dd0f28c7d06add203060c70fcde70bcc36fdfba30d12594caf0fb37c782587f67d6c5a83cef21871cc2fd8142dab56b97a769 d3a6befd10cb15575ce13970e08067cf9e3d9eba75eb4ad935d75c93f6e70ab6d8504cad5ebd5adff27bedb5d71c53d15a27f82267e43efffcf365bc0dfa831e 76d861ba34bc707dcfd18fd40dac838f6adcb8b18c4bbaf3ce3b7529a50a8ce34a36d4b6a1560ee3c92a54a8a04b29552165f3983163549d3a75d4dab56ba5e5 c6e97bc3f10e03c5a39d999e9263c78e1df217631562fd9dfdfcf3cff2f7e4934fe6fe408ef6efdf2f492b162d5aa44bbcd0928831cf6ddab4519f7df699b4d2 bcf0c20bb22fa53306361453df7efbadbee597e80923113015750240b78f54b767cf1e75f9e597abfcfc7c5947708881c31ecee793713070f88d37ded06b7eaf bcf28a1a376e9ceceb98df84521b129ff4efdf5fe688c020f2ca952beb7bc8edcce0fe238e3842fec692096c98118d42e9d7af9f5494a08b59f064d1484eb270 e142b99e183a74a854a4a0a2b963c78eea8f3ffed05ba51706361453f61f8afd223c11134622330d320a6152a9a20200fca0531d3ea38d1b37ea352fcc328e9a 979f7efa49974467f8f0e1fa16c542a26a4fefb9e71e75e38d37aa975f7e59d631b6072d359d3a759275a4ea44e501a52eb4eea1d51599eb90d239f8e283dccd 4c6150d46ceec56582a672e5cac95f22bb2d5bb648257193264dd4f6eddb2510b6f75ad9b973a78ca1993f7fbeefda0129c4b14dbc2a9793ed20f447d3b7894a ac66cd9abe4401e82293c8a6735ce03dfdf4d3721b356748bb890b0abc1e043d80e401a8394df559f8cf3aebac42818d81d9819b376faed722837930909f1e35 37141b5f7ffdb5aa52a58adc46974aa4238f3524e340974c7398c63e8db932f6eedd2bebd9d9d96ad6ac59494d5e40e1e1377bd55557c9c529ba99e1b878f0c1 074bd725b464630ea2e38f3f5ed2ace2fb46058653f75d4a4dc71d779cb4b2972f5f5e2e2ec341c51eba08e142b3418306ea81071e5065ca94d1f70642da6f04 371d3a7450e3c78fd7a5445ef7de7baf742fc39c57f654e30d1b3654cb972fd76bce2ebef862a9704e3b086c2295a30724052c39791e4f7eae27cbe9beac5c4f be7e6c7e6e56e1f2bc1c795c96f51c66bb90ac6dfdcf9de5c90dfb004a067bfad244b27ec03280daba68f03cf6d8631eeb84a1eff1787efcf14749978a240426 0575aa0b95f2ba5bb76e7a8be80c1a34c8d3bd7b77bd46b1b079f366dff782419a258559c5edfbedfefdfb3d679f7d76c0f76f5fac8b5fcf9f7ffea9b7a654d6 bc7973cfa1871eeaf83d3a2d4cdded2e56602adf5bc58a15758933fca65bb56a55e8fb46429b500972ace057b6193870a02e21f242fa662b20968400c12ebffc 72d96f705dd4bb776f4976f3f9e79f07241838e79c73f4d6e925baabcffcbcc0e006418d4fbe157b84ba4f4320632bf76fef10a858c1524e506191db2782c36b a240679c7186fe8e121bd8346bd64cfecd2953a6e812f7c3dc08f6e00617b2c870b263c70ebd45e42a57aeec193972a45ea358d8b2658befbb69d0a0812e2d9e f7df7f5fb29b356edcd8f3edb7dfca776ce61b38eeb8e33c5959fe8a215c2077edda9519925ce498638ef17d7f912cb81021f730412bce7fa1e0d86d2e369d96 499326e92d0399e74ea7731bc5c65b6fbd25fbc6d4a9537589172a46b1df20a879e5955774a9d7f6eddb7dfb5c7676b62e4d2fd18db1a99aadc658d185cfd819 6aaebe69dda9b2c7e429dfbd01f779156c5aa76ab7cad66b4a65b7ca5159d6dfac9cfeaa45556f9957811ad6be874aadd94652f135a59e64648a42de76e46cc7 f81a8c45703b7465e8debdbb6ad4a8915abc78b1744bc3acc0e8ba802e0b679e79665473f1200101ba4dc57a7e854c67ef661949f79350d03fbf73e7ced27573 e9d2a5327709bab460be01745b4257b365cb96a96fbef9467df0c10792a00399f2ecff3ea536240a405733745942d722743d4357b450ce39e71c7d8bdc00bfdd 70903862c182057aad30fcce8359d768be6ed4679f7db6fc2532cc58658c6136d6af5faf9a356b26fb0d1207048f29c6981b030905d29237be8946be2737cb5f cb9015b2554579021b6dd0da9363fd3f1c6b3bfdfca19f3bd12d36a15f13053af5d453e57342d37cacad58b1c273fef9e7cb6cb973e6cc91b25f7ef9c553af5e 3dcfc9279fecd9bd7bb794b919ba3759818b7c861d3a74d0a55ef7de7bafdeff95b4c0a0e625122fbef8a23ce6b5d75ed3257e5620eae9d9b3a767ecd8b1729b 22b775eb56dff7819a31cc3b122d7ce6f699a0ed0b5a705e7ae925bd25a5232ba8f5141414789e79e619dff78e7d29dd66024f77f8ade2bbc3b9c9c9dab56b65 1e1a7459b5821bcfafbffe2adf315a69ac80571e8b794682a16b2aee438b1f5a7c880c74434637b4468d1ae9128f67d3a64d9ef2e5cbcb3ef3c0030fe8523fec 73e79e7baedc8f6b35cc6f938e8ad55fc871bc8c660f6c02baa3618c8c6d3de0394cc01362ac8e092602029b3c7fb011fc1a04ba8dd902309565fd1b812fd47f 9f044a81019befb586794d14c80436279d74922e898d55ab5615eace811ff0b1c71e2bb7a74d9ba6b7742f9cc43021a9fd3dde7ffffd721fba91d9cbb1605b5c 148573e38d37caf643860cd1257ecf3efbaceff98a3b7e27537df3cd37becf0e0bba871565e7ce9d9eb66ddbcac50ffad42370ad5dbbb6eff1d5ab57f7753b29 57ae5c5aecd314994f3ffdd4b71fc462bc162596f9dd22287582093c31d1b2135438e1b1f5ebd7d7257eb850c57d98a493c80e95bbd837307e16f2ad6bd8d34e 3b4dca300970b0193366782a54a820f7a322f8b3cf3ed3f7a49fe20d8408b8d8b7b79e20d8c8b10514fe161a0425812d38f640c2d692630b388a6a0d92fb6caf 23605b5fb90e667c6383b2025e43a11620fbfb0a0eca7439039aa299da824a952ae99292434b8c7dec4ef072dd75d7e92dddedaaabae727c7f186c7ac4114738 de87c06ecd9a35fa199c991a9a9b6eba499778a1d610353ee6b9429d94c9d9faf5eb7d9f1d96a38e3a2a64ab17c6cdd4a85123607bfb72d96597c963d1028959 a1d97a96da9090e4c9279f945af6d2a54bcb71af4f9f3ec5fede508161f685bcbc801325b980fdf88ce3aa1d8213f460c0406f27a65506c7f960b366cd92fb9e 7efa695d42e4d5a95327d9375029828a5f542663fdaebbeef21d87d022336edc38099a711f16240fc03e99ce8a378f4dd5eeaabf6f30cd72d5e319ef689a8261 83d4bab6bd55efb6567820c6aa1972d75c35636c8eb20dafb15455d56beb9b51cb526d0307e5a8e5ebbd13199ab13092e42ea795cac66655b3552b79bdcbd5d8 41c3ac2d285eac7d4afedae769c0c451b7de7aab3af5d45365cc00c6103cfcf0c311f54b06ccd781f1054ed0177decd8b17acddd366cd8a06f059a316346c8c9 fcf09956ad1af85b0886f1358094b3d6c9556e032678b42ea4f59affbba3c8580188bee575da69a7f9fac3db61c6e7acac2c5f1af460184385095831e602e32f 30815a51e32f28b9a64f9f2e6955fbf6edabac8b0a655dc8caccf343860c91ef315a48c56e8e6148478ffef1e42ef6f16e5bb76ed5b7bca64c99e21b57e5c4cc fd863195c1d6ac59237fafb9e61af94b047ffdf5978cafc1785b4c0980396c76eddaa5eeb8e30e9902e0d1471f558d1b3796f96b50867310a688c0382e4cf9e0 8649ca4ba2d8674f0cfcf7914401056ace54250147d5166d252980f72eeb9eb933d4580419ba2cae0ae6a8a90ea9bbabd5d2af68f9543587914ddc988be34a95 2ac95f5c3ce3648d133e4efeb8f0c305e1e38f3f2ef7853362c408f5f6db6fcb6d3c2766dfc7853c2624c46cbbc8d38e01b9e960d2a44932af45b0db6ebb4d12 2460c6723bbc6f1ca8300f462838d89909de70018601ac867d122f72b679f36649e0b069d326f96b0fc6b16e876d309f0dbeabfdfbf7cb7efedc73cfc9050b06 fc63f2be418306a9175f7c51e62a4182801b6eb8412d59b2449d7cf2c9fa5928956162d4ebafbf5eeddebd5b97047af7dd77f5adc8212188f98d62125dfb4532 b983bd222278fe31ec1318b08d00d689997817c78e6098ccf5820b2e50d5ab57d725444a4d9d3a5526e2c43e85c442a6c272dcb871eaeaabaf5683070f966314 e63e9a3871a224b7317369650434db144f5012811c7b2a67fb7d599e2ceb766037342f7f57b068bba215d1752c44f734ff981e7fd73976458b3d33101203d29d c685d897860d1bea473943b200eb6250b66dd9b2a5c73af9eb7bd217fac19a790bb0b46eddda37bf01ba2c60a020cad1ecbc7af56a292fca860d1b7ccf65160c 56c7c04233e0d5be90c7639d303c56e02ddd29833f1f8c83c17c12bd7af592ee27180b73fae9a717dace6961ba56777bf0c1077ddf25e62b69d7ae9d8cabbaf0 c20b7de54e7ddb8bf2e69b6ffa1edbb163475d4a6e631fff89242f76a67b368e29c1e6cd9b27e738a77321c640e0714e495f2873612e247bb766241bc2b1e8d1 471f956414e89a866d325989ae6402130004062f452518301219d8147aac5319039b1241bf4e73b17cedb5d7fa065462c160355c049a752c4834100a06669bed afbcf2ca8c9a88f0830f3e90ac67b7df7e7ba149dbf03920cb19b2a745e2e38f3f0ef8ccc32d990cf3c28c1a35ca73c20927387e364ecbf4e9d3258877bacfbe 844b2c40a90d7341e07bc49c42afbefa6aa1b134a61267c08001ba243c24fec0f3e171b850c9848a9b74857156e6b78e731d8e2586f98e11fcd88fdb2fbcf082 ef1cf9faebafeb52afbffffe5b829db3ce3a2be4c49d9479309606936a629fc1b516ce3d991ec43829e1958c19946f2dc1c14b8800c32e2e818dbdb5c8169cf8 1e6b7b9d0c6c620b036acde764969a356bcae483c6f3cf3fefbb2f548201a4243433ae2395334ff8c587cfde7cdee196fffce73ffa519907a99a918dcae97309 b520f004241140e205a76db0d4a953c7f3c71f7fc8b6e43e4b962c915a755c646252d6505051133c195e2838569a0c8818589ece198a3201be43fb6f1e418b71 de79e7f9caab56ad2ac921ec1375e2b86b0f9431e0bb79f3e672dfc2850b7529653204baa83441ca70ec17b56ad5f22c5fbe5cdf4bc14a5c456b8283c217fc26 c0f0b790040aecaee6db2638b8b0d6cd6cffd10722c159d142b52a799f2fa0952970c390af89fc825b07704187ee53767bf7eef5dd8fd4b7c1708169821a0445 bb76edd2f75071dc77df7d455e74db97091326e847659675ebd60574272b5bb6ac74f96bd2a489d4a41f76d861526eff1c91aa19271be3b6db6ef3dd675fd0fa 93ee1968d219b2d9213d378e49451d8bc68f1f2fdf37e6360a0717ae48f78ded51633f7bf66c7d0fb9158e0d66ea012cb8007df8e1873d5f7ffdb5a4e335e54e 0b2e58e7ce9deb993c79b264b432dddafaf6edab9f9d32d977df7de7ebee8afdaa7ffffe19d583a5384adef7448208e7e045028510ddd00282082cb6edf27373 7c8104c6ed48b9add5c4bbbd3dadb477b1c722127cd8efb7b62ffc1a6dc115eecfb30530d61218db38bc260af07ffff77fbecf0e1774e84e16ecc30f3ff46df3 eebbefea522f4c6256a54a15b90fb5583b76ecd0f75051508b8c3133c1dd63500b8c9a44a47936299f432d175f7c7140f7894c81714aa6ab08f65974330aeefa 8134ade81e88f14aefbdf79ee3dc4108e051a36fff4c31a7c0279f7ca2b720b7c1ef09c12dc6d3849a0c17bf19cc0f850b5b7cffe120753d5aa1b17fe031e813 4fee66d235639e1a53a35ed225272727238fc714085dcfcc182d54be2d5bb64cdf4345c9ec4ef51453bd7bf7f61d98a74e9daa4bfd3028dbb4c6dc70c30dbad4 0b0324310f08ee439ef5e0961e0acd746bc08915ddf6d0423066cc18a941c4c51302c62fbef842fa7e9befc7bea0593b135bc610a0a036de7c0eb7de7aabbea7 7850138f019c18048e2e97989386dc035d3b305f88e96e86ef12c7a450f344212846e063f69f61c386e97b9ce17769825f2408613289f46006f9a3c5fba28b2e f2ed0fc55950b93271e244fdcc94c9d08ddcb402e238832efa1419063614336865c18fd069c24c34a762323bdc7ffef9e77bf6eddb27e5b888b8e69a6ba41c17 e10f3df490e7c08103721f85872c6af8ec82177c96f87bcf3df7e82dbd175648c460b641562f747d089e502e1360c025ba4a9acfc22cc842c71348ecac5cb9d2 15dd26d01dd16423c4781a1cc350fb8ee006c72ab4dea0b205db61fc042a5fecfb0db214869a801130ae025d1ccdb6ec1f9f3ec68e1d2bc75bf43078e9a59702 f68b500bf62d9c0fd1928e6e89a85479e38d37d8c58804ced5a62701ce491ca3191d06361413e876861f21b2c32088b1c3c54d850a15e47e1ccc71e1888b69a4 bf34ad34088ad0dd87427bf6d967a5e5c5c0e778ca29a7c8e7e7b4a0f6d029630abac360c07b511762e9eea9a79e72fcccb0207de6c68d1bf596140ef623ccba 8ff12876f88c71c18759f553192a5250d9e2b42f44ba844a1a803185684935150de8f259540202721fb4989b74cd38de9aae43a1168cab429a6f2227e88268ae 9750f988a424e88686a9069011ad4183069e56ad5ac931d7edc925d073e7abafbed26bb1c3c02603e1c45a548a405ca0e0c08b2e4c91c24049fc109f7bee395d e2bd6040f062525ab669d3466a3c311f8499ef060902d0841f3c3ec44de2f179069b3f7fbe7c5e38c0bdf5d65b32e0d8b4802135349204982007633b90550717 55e4aca880100b4e1e141eba3ee2621d9f59e3c68d7d358be8d265ff3c478c1821e5a9a87bf7ee01af35da05f34239f9dffffe274132b6c18070a484e6b889f4 628ecbf6c42be86268df3fec0b5a059dba691319914c1f605fdc9a51110933d072198f6ef00c6c3210c6b92c5dba54af055ab06081af4b06964832b3602c01ba 5920483103af314994a905c5f3a18601178ba8b9442d04e6b941f78c7438d1c7faf30c8600d19e32d4bee0c0f0d1471fe92d3d7261c9ae7ce199895f432df8ce a868d8cf9a356b16f0b95d7df5d5d2a5c6b450d817547224f3f78e8b5074f931bf171cab1e7bec31796d3826211833152e912e68150deeca89a42838d6e17e64 d4ebd4a9936322157297e1c387078c7fc1c06eec2fa86c0aee2ad4af5fbf42fb0a6adc91399428148c43365938235970cde5d6f33d5a39b3b2b2f45a6c31b0c9 3048478a1fc4ce9d3b75891f0ecea609d4bea0e6b128485789ed66cd9a2503a851036ab2c3988b7a1cd47182476d553a0daa8ec7e719aca874a1180340d17bf9 e597e562d6e933c5824c585434a78bb7708bd3ecebd1dab66d9bbe15391c77ec150ce82e64fffe4d8d3b5a558327120eb5b46cd9d237561059d3d0f50e171ab8 0fd908efbcf34e063469020924302122f6211cbfd105c8548e844a938f0c8ad80790e10c01913d3d3c911374813efae8a3a58b7e993265247940a8f3142a8fec 7304ba09bad4e33de0f7110f0c6c320c063aa21b8e13cc7e1cfce3c182f4a4a160fc0c6a1890671d5981ccacedb830c4c0749c0030a6235dc5faf34430847ea7 2d5ab4908bacdcdcdc9035389d3b77d68fa248e1c4818369b8ae68eddbb7d78f487fc51db08c0b7ba7cf2ed48241f3c1e370a285161f64169b3973a62e090f19 177151eaf49ab00c1e3c586fe985c0293b3bdb715b2c689d46775acc5d83df60eddab5e5f97101824428f8f738a970fac03e67cf7e675fd0e59728de4cf212b4 f89956725420bb152a64f11e50291e0f0c6c320c0ec438693b415f71fb41dbbe7cf9e5977a2b3fa4cb35b59be6e21b172fa8b9343599e92e969f270e5cc1d996 cc82cf191773a8f1461f5c0e3e8d0e267e4537a4a22e70cd826d90ca375320731e2ed2a385d608a781d2e89e853135f6ee6868c188457290e9d3a7cbf3613eac 48bcfdf6dbbe317ec10b6adced33c4079b366d9a74a145e08260cadee28305adb1975d7699a4b9472d3ed37bbb1fe6aac2f1d53e9715c68ddabf77b360ff6606 454a245442d5af5f5f268e7673f21f332e33162df84e18d864109c78713277da99502b655a5b9c16cc8b62873134c8d661eec71c29e8a39e4903d663f979628c ce19679ce1b82de65ac1e74dc583b15ca1e6f0095e70f11afcdda43b4c8afbe4934feab5e8a08b8ebdf50be96b4d0b2d26ec452b06ba532c5ebc58ca4a026359 f01b4190143c89aa130435c1ad9d58c7f817642a8b26f3dda2458ba4db07c655205948f0980a723f7ca7669e35b498a3f208dd2dcd3e841af21b6fbc51124160 9f1e3870a07e2451fca1d506bd39704c75fbf580a91067604325865a59ec4ce8fb1b0c2779dc176ae9d1a3876c87b124e8ba818b0b949b8026535a68ec62f179 222308ba46999684aa55ab4a53332ee0d0cf16ad419b376f966d297aa3478f761cc81ebc208d26f6ebe054e5e90e2d8778ff45b55c84830b7d040b975e7aa90c 7eb5cbcfcff77cfdf5d77aad64d03d10af155de0c2c17c22a6a506dd64b18e169850493e88ba74e9e23b1e042fc83a49942c4810608e7fa3468dd2a5ee65cec9 a91bd8e4e5041c00b272f3f51d29c27a7d59785d39799e147b6509872c14a87d726ac20c35d1a359304954dbb66d7db557b800c7c55026cf855292cf13357f48 0a8001825847d633a470a6d80917d4a07561c8902172f19da930460c9f45bcfa3ac78a3d5141a8396300152ca828c076486082316ac9ccc446a9ab6bd7ae922a 171547085cccfe15bca06b9a9ba723207743cf10649bc4be182ab5bcdb98df566ab7d8d8829b540b6cf272cc012acb936a315722e1008ecf21d4fc1ce3c68df3 7d874e0b26d0c45fd47ea2893ed30ff425fd3c1114e12f1e8f2e33bcf88a2d741b721a4f835630d4cc7efef9e77acbc8b86506fd68995a6a0479a9085dceba75 ebe6fbfe3001b0d3c07cfc7e90f90cddeab01d2a1cf0bb22728260c6ec53f605ade56889efd0a18324bfc15c1b44898254f9a8ececdfbfbfb4a6230111e6a9c3 be196ac26d3732bf370636c5c5161b8116177c3f8f3cf2882e0984491fcd77e8b4e047158bc1bfe9a2a49fe795575ee959b16285de9a6209dda130b784fdf346 bfe45ebd7a153919185ade30103c3845af5b66d02f8e0b2eb8c0f719a1053195200390990bcb2cc1998076ecd82183bb31c0df6c83961a4e82484571ca588941 d9cc6647c974efbdf716da2fb1d4a95347a6d24817e67d31b0a16243bf72d32527d4046168eec42075f33d062f988386bcf879a6360c0cb77fd698042c5c7733 fb0cfa684d3383c3dd34837e719899f1b1609f7ee6996792de1a8b81b1b7dc724ba16e8448ecd0a74f1f0950d195d3d464da17b4d24d9a34493f1391338cb932 fb0cd277a3e53213c789526ab9eebaeb028e6758ead6adeb384f9e9b99f7e6bec0c6561650aee5eb9614effd599e9c3cdbfdf9b9b6fbbc8ff56d9f952bb7cd7d d2c52c2fd79393a5d771bfef69b26cdbe578f25018e163bdf2adcdb3025e4bc09223cf98d2500b8dc931f17a919ab5a82e4f983409cdefe8c789c1ed48ad8a79 68f0589c08889f67aa435a677b5adedb6fbf3decccccb81f2d68e6315830407df2e4c9016566c16cf5e9d275d02973df7ffffb5fe9c61549e6b15841eaf8679f 7d56ba6606bf1eb360ee03a713bf5990a11073c81085b364c912d967d03595285598040158504983f182e9388ed9bc4777b6d848301214b458102cc8f6ba7b98 0940ec71823d28c9b1eec8cbcff3e4c8ba3740f18f9dd1ffa62d18f2bf867c4fae095a4c606389fab13ae0f10754784fdead521dd2039af75a9c56020cbe4576 a14ccb16150a3fcfd4868913cdf783a026920004ad00e631912ea9d66dabb89c5a3dcc8216c79b6fbed93372e448196354d2393bf05da02b205a64d0971c9fe1 b5d75e2bf3c138fdfbf60519d74c4b121e8fc1dee87e863137e87a8680885d3b295298330cfb15e65d234a15989a00fb252ae7a24947ef36e6b8eec2c0c61b88 140a006cc1813f86d08145a8d616fd241290e86d0a2505b0b7f2d8fe51ff764e814d118f8db42c85614c80f77d7a9777de7947df13198ca9418d1626a9237e9e a90e17be263f3e264e0cd75263443b833efe8deddbb7eb47bbdb55575de5f81e432d471f7db4745f43f70874ddc3606beccf684941d6442c085690c507ad6048 3682b94110bc988c8ad12e486c5054ff7266aca2e240408c7d992855607c288e799823d04dd03b0595b618bb16c979d71cdbe315d81c6c3d79ec150c530d0f1a a494157c8ec9d6655ac1a675fa566d55bdaabe692c9faae614e8db3659b5aac9dfec315620b6acbb0a7e58bc997f5f55ad6ebdead4f7efbfffaaae5dbbaaa143 87ea12a5ca972faf9a366daad7c29b366d9ab22e4cd4efbfffaeeebcf34e5d9a99f879bac3c71f7facbefffe7bb9ddbb776f655db8c8ed70468e1c29df67b026 4d9aa8175e78411d74d041ba44292b30556fbffdb6e3f66e640526fa5664f6eddba7366fdeac3efdf453b578f162356fde3c3563c60c357dfa743575ea5459de 7aeb2d3573e64c357ffe7cf5e1871f2aeba4a7befbee3bf5f7df7feb67891cbe83850b17aa3265cae892c20e3e383ea7314aaecf3efb4cdd7ffffd7a2df68e38 e2086505ea7a8d28f9ca962d2be7ad50fbe55f7ffda5dab56b274baa78fffdf7559d3a75548f1e3dd48d37dea82ebdf452f5e79f7fea7b9323e66784e553dbab 83aaf550cbadffc60e1aa682e394fcf5cbf5adb1aab975c1808b06eff6b05cadcf971b016a178a8012a06a0bd536cb7b73f9d439f23e0ae6ceb05e3564a9dcde 41115b8ad8bd7bb75cac8c1e3d5a977875ecd831a20b3d3c1edbb66ddb562e62b0c35e71c515fadeccc3cfd33d70110d38a6346cd8506e47e2f4d34f970bf453 4e3945972875eeb9e7ca05fa5d77dda5264c98201741a54b9796ed1a3468a0b772bfdb6fbf5d55ad9a84e36b18871e7aa8eadbb7af5ab060813ae18413742965 92810307465c39511ca8b03ae69863f41ac5c281030754f7eeddd58a152b7449fa41c0fdd0430fe9b5d8c3b9c669bf44c550ebd6add5c4891365193e7cb8be27 793c1e8fcac9c909a8b442a0f3c8238fe8b5e48879609355bbbfcacf3511410fd57e9843138cb082837ce90a17b004b7f0244f55d57d59becacbcd5159d6fba8 665d2c556b3e566565e5a8bcfc65aa7bea5d0ba8458b16a9ba75ebcac580dd91471ea9ba75eba6d79ce1b3c7055ccd9a35d5abafbeaa4b95b452d86bac33093f 4f77d9b06183fc456b4ab435b1e79c738e5ab972a5042da871426bc4f1c71f2ff7dd76db6d6afdfaf5eaf3cf3f578d1b3796b27451aa5429695d2957ae9c2e49 be962d5baa4f3ef9443df1c413eab0c30ed3a525f3d1471f496d27b9037e6bd82fe359338d8bb1934f3e59af51a47ef9e517f97da2451601cc6fbffda6ef5172 cec305f7f8f1e37549fa79f8e18725288e047a10e05a01959a910a157077e9d245e5e5e5e935252d2423468cd06bc9816ba44d9b36e935bf61c386a93d7bf6e8 b5d050811517d60558c9398cb1b10fd00f188ee2381ec72b3f37d7370e26207980c37096b88fb101ab3ca750a6b4d48354b5f7dc734fa1f4a85850f6c20b2fe8 2d9d2103929980d3be60f07526e2e7e94ed9d9d9f239d7aa554b9750a4b66ddb16f558a3582e485480dfdc9a356bf42b8a1eb20765da3c44e92a2727478ea1f1 625d3cca7e872414141964f4c43116c96fecbf5d8c9d6bdab4a9a767cf9e3236046548c79e8ed6ae5d2bef2f92099e711c32130623090bf6b9481c72c8213266 d16ec68c19becf3b78b1827fbd55e2054fad605f30497928661b2b08d625b115b7c0c68a0a6c19c9ec99d142945b41446e404c118bc026f0df322f2dfac7062f d6ebf6bdcfe4c20e5fb162c542af110718a41a0e75a180015ec84c8441c0c18fc5822c437bf7eed55b670e7e9eee85f967f059d7ab574f9750b456ad5a251795 279f7c72a17d38960be60ec1c5d080010324a946a4891e42c9d47988d2d1afbffe2a492ae21974607fc1fe10ae928a3c72deb267038d644105433ac2b111d918 c34112801a356a047c2648dd1c2ed18909b891a9d30e992083034ab30407418954b3664dc7d7840573918562b6292af82989920736b6a0c62c121b842a17def9 617cf76505a584b6071a7a09086e829f3b2bc73f178d5eb07d4066352c687d89f0b1d63fa2d34b875e825b9c126dcc9831f23aca942923d987f0c379e595573c 1b366cd05b84662ec0513b50a95225b9c8c085fbe8d1a33dab57afd65b65167e9eee8699c3f11de0bba392c10976ddba759ef1e3c7cb454a9b366d2438470d24 52e422bb1f4eb46809c1825adb52a54ac96f07950038a9e3fb40d634cccd8034dca3468df2cc9f3fdfb379f3e6886b2f2381a02853e7214a4713274e94ef69e6 cc99ba24f6befaea2bf937162c58a04bc809b211e242defefb8964993a75aa7e86f461026ecc49170eb2423a7d2ec842f9e38f3feaad0ac3c4ded8eee5975fd6 257ef64965cd82de09784c3260df70ead56296a25a5ccd36d3a64dd325b1159b169b7485ae68b62faad012106d25defefdfb6542c2e240d713cca552d29ad274 c2cfd3dd4c7089394f287364f23c44e9c85c1462ae9978c19c47f83710645368e85266ffdd44baa44b3a7cbb499326c97b43af8e708a6ac9983d7bb6deaab04d 9b36c9368b172fd6258130a71826eec436d5aa55f36cddba55df937868ddb7bfafe005955ca1986df01cf1c03c9921cd555daaf550eb72f3652078c0929fabb2 ac2d7c69a0930483d8ed999ca251a1420575eaa9a7c635eb8cdbf0f37437fc3681998e320bd24947038912900d8e520f06f46340f249279da48e3bee385d1a7b d685b73cff19679ca14b2818b24c4e9d3a55af45eefcf3cf4f9b74f87698b201224920f3da6baf3926b0410280162d5ae8b5c27ef8e107f91b2a53e5dd77df2d 9939efb8e30eb574e95255b162457d4fe221894451f6eeddab6f8556a54a157d2bb618d88452b04961c69de5ebbda99efd0a54c19cf56ab9ca51fd5331351a51 86435a66ca1c993c0f51ba59b56a955c10c53b0539b21e366ad488192a43c07770f3cd3717cafe8539a330a7142a0143e9dfbfbfbe953e0e1c3820f369218b9e c9965994ba75ebca740138de18c8f688635551b66ddb2695aba8280de5f2cb2f572fbffc72b12b616325dc3134dc791869fce35579c1c02694aaddd584bc5c95 b36eaa6a6f1dfc7000f42eed55fbf5b5545efe18959a33d91065267312c62467943932791ea2748394eb50a95225f91b2f48259d6ea9db63a94f9f3e6acb962d 721bc14caf5ebd6402e4fdfbf74b1a5ffcddb16387b44c608e365ca4e2a21fd319e0023edd9880bb5ab5c87be960bebaf7de7b4f1ed3be7d7bf5e69b6f864d6f 8c561804dc6e50ab562dc7df90e93111aa35d4f4aca85fbfbefc8d07063645a89add5d8d59b64c2db37743f358eb63baab6c36d610a51413d84452a346e92553 e7214a37ab57af96bff69aee58c3dc2bb86877cb0564a261024ab4741a988cf299679e51f5ead553871f7eb82ef576e944abce1b6fbca17efcf147b573e74e75 df7df7e97bd34b71036e74cbc33c2f98cb2e9239b966cd9ae5aa63142a8ac68c1923ad7498530701e0d6ad5be5beac2c0cd828ec8f3ffe90bf0c6c8888c23035 410c6c32136a08312ee0dd77df2dd46a57b9726569d9a1d46626fb430b5bbc8c1b374ec63fe0429d0ac345aa39963ef8e083eaf1c71f97db99cc04dcd14efc1c 0d1cbb1014b829b04105444e4e8eec23988814c18a198b84963c273ffffcb3fc6dd8b0a1fc8d070636449416d00f1a4e3cf144f94b44ee626a7be365f7eedd6a f2e4c9eaeaabaf0e687d20afe5cb97ab3973e6c8edae5dbbaa214386c8ed4c9788801be366307e09dd68dd0a5def7af6eca96ad6ac29631c9d6cdcb8517e7b17 5d74912e893d0636449416fef9e71ff9cbc086c89dd0a50990b52c1e3078fbf7df7f5737dd74932e21bb7efdfac95f74d3cbcdcd95db4e9e7bee395f2b4626f8 e69b6fe46fbc924decdab54b4d993245b56edddab59955d1129a9d9d2dbf2f647f0be5fdf7df97fd2b9ead5f0c6c88282d98169b64678b21a2e8fdf9e79f92ee 19901d2ad670f1880b726462baf2ca2b7529190b162c90b169f87c306e26d498108ca579f6d967558d1a357449fa8b77c03d7cf87049c8e0c6801badac4818d1 a95327f90d2389046e8782240ad75f7fbd5e8b0f06364494164c8b0d06b51291bb98711df0e5975ffa829c5819306080faf5d75f559b366dd80dcd013e1fc045 36e6640b65d8b0611218c633c1432ab107dcdf7efbadfc8d25048a681d434080c4276e812400482a81ec68b367cfd6a54a3df9e49321e792fbebafbfe4f344d2 8978626043446901075ad43262723f2272178c5f305d7d7efbed37497d1b2b988364ecd8b172bba86e32992a2f2f4f327fa1e6fdd65b6fd5a585e1021f9f63ab 56ad7449fab307dc181f627a06c40abaff2195345a31dcd00d0dc109b2e661aea9071e7840eddbb74fdfa354b366cd8a9cfc18150aa8b488f75c730c6c88282d a0291f139b61de052272170435980fc540eadb58c06cee1d3a74900b54649c8a679a59b71a3870a0744143eadea2bcf3ce3b9280219e03bf538d3d610066db47 828558c1e789b12990ea0137de3bba2056a95245dd7df7ddeabbefbed3f77821cbd9c48913f55a6889383ff30a8088d202021ba6f42572af8a152bea5b4ae6fe 40d7b192406df255575de51bb3938eb3e297d4ebafbf2e936fa20b5ab8d9e4172d5a245dd01004619078bcc69ca4927805dce882d6b16347b98d2e68fff9cf7f e476aa42f7b1871f7e58261945c633bcf6279e784226bbc564ad1f7cf041ca24ee39c8636f67232272218cafc101f7965b6e5193264dd2a544e426eddab50ba8 f5bdf3ce3bd5e8d1a3f55a7430433ec6d3e0621cd05ab364c912b94d5e18ef70d65967c904b73366ccd0a5a1b568d142baadad5bb74e0d1a34482ececde79bce 908279eddab5721bf3a4214b5aa871249140d73304079f7efaa9ace333bce4924be436951c5b6c88c8f5d04c0e6cb121722fccd46ef7e28b2ffac6c64403f38e 60e67373d18dee2f45a52fce5418fc8d56b1705dd00c8caf80dab56b4b4b0fbaf96502bc5fe3a79f7e527dfbf6d56bd1c30495684534414dd3a64d19d4c41803 1b22723d13d860f679227227a734cc68b579e8a187a475211c748fc2606cb4406cd8b041972a75d75d77a9ba75ebea3582cf3fff5c668c1f356a54c429f2f1b9 dab97932c9680407dc980fc98c8d890606ce23e0c65c2e806401cf3fffbcdca6d86157342272bdcf3efb4c9d77de79eadd77df7555ca4c220a54af5e3d5f6db6 1d2a2dd0af1fbf6fcc6c5eb66c59c95085ee50b8489f3f7fbe9a3c79b2d4a8db61b0f39a356be23a21a0db20bb5983060d24b315e6ac89143e6b74a1c2053ab2 4f62de1ba4fb4d77ebd7af57679f7db65ef3c2d81b04d118b7654f30e00463bd060f1eac860e1dea6bf502ccd28fb99528b618d81091ebe1048be6fc2d5bb6b0 d586c8c550135ed4047fd138f2c8236550338225f2bbe38e3bd4871f7e28299e8f3df6585d1a198c672c2828906ebfa54a95d2a5e90fad5508a08355aa544952 1ca34b1902ee3265caf8026e8ccb310137baa0d9615b04f099f419260a031b22723d9c383a77ee2cf35f30dd33917ba1350103dabffaea2b5d523ca851472291 784f06e8364f3ffdb44ca288a0a67af5eaba94c241128bae5dbbeab592416639a48dce94ae7c89c62b0022723da41d455701063544ee8649769130c04cd6591c 782c261164501368fcf8f192a277debc790c6aa28456ae58f406c0396ac284090c6ae288570144e47a086c2ebcf042bd46446e866e3d1893501c18ef80165c24 1d203f8cefb8fffefb651e960b2eb8409752a4306b7e7132f4d921e0c6735c77dd75ba84e2e190472cfa3611912ba10b5afbf6eda5899f88dc0ff3ce608c4c34 f3a4601cc4dcb9739940c40619233106049f0b92ab303b5cf1211105e64b7befbdf77449e4309666ca942932d71ac5175b6c88c8f55003962ab31e13516cf4e9 d34726d5fcef7fffab4b9cd5a851436ac23ff9e49342298933d9ecd9b32590c1a4921c53131bc88286ee7cd17495ac53a78e5ab56a954c184bf1c7e401444444 94d290610a35e5f9f9f9923e17d9bcaa55aba61a356a24a9de29d0b265cb649c11e6000a4e554c25876c7bf7dd779f042ca120f319baff214d39e6aca1c46060 43444444441425cc9184801b29b01170972e5d5ae60762c09d3c0c6c8888888888c8f538c68688888888885c8f810d1111111111b91e031b2222222222723d06 364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0212222222222d76360434444444444aec7c08688888888885c8f810d1111111111b91e03 1b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0212222222222d76360434444444444aec7c08688888888885c8f81 0d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0212222222222d76360434444444444aec7c0 8688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0212222222222d76360 434444444444aec7c08688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888282adbb66d53d5ab5757071d74 90baf5d65b75697231b02122222222a288edd9b3475d7ef9e52a3f3f5fd65f7bed35d5a3470fe5f178643d5918d8101111115152f5eedd5bdf223768dfbebdda b871a35ef31a366c986ad3a68dfae9a79f7449e231b02122ca50fbf7ef577dfbf695ee04764f3ffdb43af8e08355af5ebd74091151fc2c5bb64c3df7dc737a8d dc60d3a64dfa56a0b7df7e5bad58b142af251e031b22a20cb477ef5ed5bc79733564c81075f3cd37ab3ffffc53ca9f79e619f5e0830f4a7782a14387aa912347 4a3911513c6cdebc595d77dd75eadf7fffd525e406e87a76f4d147eb35bf6eddbac9b925590eb24e5ec9ed0c47444409f5cf3fffa8abaeba4acd9b374f972875 f5d557ab5b6eb945dd78e38d85fa483ffef8e3aa5fbf7e3240948828560a0a0a649cc6962d5bd469a79da6befdf65b7d0fb9c13befbca3aebdf65ab56fdf3e59 4737b437de7843eddab54b952b574eca128d2d3644441966e0c08101410dcc9c3953dd70c30d8e033f070c18a0060f1eacd788884aee830f3e5059595912d4c0 638f3d267f29f56ddfbe5d75efde5d356ad4482d5ebc589d75d6592a272747bdfefaebea81071e50679e79a65ab76e9dde3ab1d86243449461d03a336bd62cbd 16de49279da43efdf453a95125222aa9175f7c51dd7befbdeaefbfff96f59b6eba494d9e3c596e536a4320dab46953e942d8a14307357efc787d8f926067f8f0 e172bb72e5ca12bc962f5f5ed613852d3644441906e3669c4e36175d74911a3162444097b352a54ac960500635445452e8b274db6db7a9bbeebacb17d4b46cd9 32e0e29852d7cf3fffacaeb8e20a096ae0d5575ff5259919356a942fa881afbffe5a3569d2447df5d557ba2431d86243449481d6ae5d2b27a89d3b77cafab9e7 9eab162d5aa48e3ffe783571e244d5b9736775f8e1874bcb0e4e4e444425b166cd1ae9eefae5975fea122535fe63c78e55871d76982ea154862074f6ecd97acd af55ab566aeedcb9be243476c71e7bacb4dc9c73ce39ba24be18d8101165a86fbef946920520b3cdf4e9d355d9b265f53dde41bd871c7288f49526222a09b412 a366df5cf8e2d8820c8c3d7bf694757287aa55ab866c81c1389b0d1b36e835bf1a356a4857e6a38e3a4a97c417031b222222228a39a495efd4a99364ca322a54 a8a0a64c99a21a376eac4bc82d303fcd25975ca2fef8e30f5de285ee85a3478f96ef74f5ead5ba54a9e38e3b4ead5cb95255ab564d97c41fc7d810111111514c 21757383060d02829a66cd9ac9852f831a77c2f789cc67471e79a42e51aa75ebd66adcb871d2f2bf70e142c99406483a83eecd890c6a802d3644441460ebd6ad 72923ae1841374091151e4f2f3f3d565975d26c712c078bd279e7842dd77df7d9c0f2b0d2c5bb64cb56bd74e5d7cf1c592e1ce3e46eaafbffe926410575e79a5 aa54a9922e4d1c0636444414e0d24b2f956e05d5ab57d72544449141362ccc4f631293a0c61eb5fc75ebd69575a2786257342222f2c14cd2e83e70e8a187ea12 b2fbfefbef55b76edd7c336d1391dfeeddbb557676b62fa8b9e5965bd4279f7cc2a026cd217537c6531d38704097240f031b229742133f3294a0591f270f36be a607f43f477fe56479fef9e7e5ef11471c217fc90fbf39f41fc77c0d98659bbf3922bf7ffef947b569d3466ddab4498e1f48e33c69d22449f74be967c9922572 ed71eaa9a74a57437ccfe89276cc31c7482b1da61378eaa9a7d4efbfffae1f91180c6c885c68cf9e3d72d0306917316373d7ae5dd5bffffe2bebe44ea8f54276 19f44f4f861f7ef8412d58b0406e272a35a75b24f337c719d9c90d3086e6fdf7df97c97c972f5f2e736151fa416bf54d37dd24f39be1d8b463c70e7d8f17eec7 74013897f4e9d347bdf9e69bfa9ec4606043e442eddbb70f98e40c3080ef9a6bae91ae00e44e2fbdf492fae28b2fa42b4732a00b1a6a5d81814da064fee65e78 e1057d8b283e4adac572d5aa55eab1c71e53b56bd79694c0ec7a969e300f11ce4f183315a9134f3c51df4a0c260f2072214c84b571e346bd1608b302b768d142 af915ba0e6bf72e5ca3269e66fbffd26cdf989f6d0430fa9279f7c5226cf4b85bed2a92459bfb9efbefb4ed5aa554bfdf2cb2fba8428b6d0c5b269d3a6d21a79 f3cd374bf7b1683397210d305a7cd15253ae5c395d4ae906c12fbae2962f5f5e5d74d145d23a870c9a3867a0cb19c6d920cdf7871f7ea876edda258f41eb4d95 2a55e4764220b0212277f9e4934f3cd6c1049512014b972e5df416e436797979f21d962e5d5a97245ee7ce9de5355841952e212359bfb93e7dfa78ac8b4dbd46 145b3ffffcb3a7468d1a01fbf49d77dee9f9e79f7ff416e14d9f3e5d1eb774e9525d42e968c58a159e830f3ed8f3c8238f78fefcf34f5dea6cfffefd72bcac5f bfbe2e491c7645a3b49309598bd0ccffd65b6f0574176ad9b2a51a3972a45e23b7f9dffffe277fcb962d2b7f9301f30f40325a8b525d227e73a6c5cc40d7b761 c386a9db6fbf5d9710159f5397c95874b11c306080a488371333527ac2f7dcab572f3570e040491610ca9a356b642256b4e00c1a344897260e031b4a2b9994b5 080399df7bef3dc93e82931306e83145af7bad5cb952fea6c2d816742da0c2e2f99b4377360435086e10c8e082e0924b2e918c43e8264454123367ce546ddbb6 d56b7ec860e604fb23c6ca84b374e952b561c30675f5d557eb124a57ad5ab5528f3ffeb85e0b84aed473e6cc9180e6bcf3ce9324128f3cf2884cd29970de861b a2d4b071e346cff0e1c3f55a7462d1a44e942c65ca94917db64e9d3aba24f1ac0b6a790db56ad5d2259408dbb76ff7942b572ee0d86596d75f7f5d6f45543cfb f6edf354a850c173f7dd77eb12bf9276b134c78c850b17ea12ca24bb77eff63cf5d4539e33cf3cd3b7ef607f1a33668cde22f1d8624329c3da1f55bb76edd4c7 1f7fac4bbc22ed5ac64c61e456d8f77ffdf557b97de49147cadf643003864b952a257f29b630381b35e713274e94da70248940163cd476e338170ca9bf6fb8e1 06bd46543c23468c902414e82e16ac245d2c919e7edab46972fb94534e91bf94197efcf147d5b3674f75fae9a7ab071f7c506ddebc591208605e9bf5ebd74b8f 99646160432903e9033ffae82369ee34a2e95a56d2267540aadb6bafbd56ba7fdc75d75dd2579428de10b49b7d3b99818d91e8f49ce90ce95131e9698d1a3564 425d54b4a002e7c20b2f54a54b9796f4b8a8cc41508974b93d7af49063606e6eae7af5d557f5b310150fb21b22b001ec834e8adbc512e74704e7c071799903c7 251ccb708cc2b90be72c5c9fa14b2232ea21d8492aeb644a9412ce3df75c69c6fceebbef643ddaae65b1c85a3478f0e0428fbfeebaeb3cdbb66dd35b10c5dece 9d3b7dfbdb65975da64b130ffb3a5e037e675472c87457a54a15df771b6ab1821a8f75f1a91f45143bf3e7cff7ed673ffcf0832e8d0d741b37cf8d6318a5b7df 7fffdd73fdf5d7fbbef3134f3c5132a4c57abf2a29b6d8504a408da5691d39e9a493e46fb45dcb4a9ab50839d7adc046aff94d9f3e5dd5ab574fad5bb74e9710 c5166af50d34e7270b5a48a17efdfaf2978a0fad2f98db06ddcf00b5e1ad5bb796c400e862668e73152b56948c78e86e4b146befbcf38ebea5d4b1c71eab6fc5 067a58186cb1490f986875c284096adebc799210c040d733243341d743ec47b85642f733644833c7b294a1031ca2a47af4d1477db50046cd9a357d65c1cbecd9 b3f55685ad5cb9d2635d4478acc0c8f3d75f7fe9d2f0faf6edebf86f99e5820b2ed05bc6d6f7df7f2f833a7ffbed375d4299c6baf8f5ed67d6c5b02e4d2cb44a 628e02b41eb085b264d04a8cef122dc803060c70fc3c716cc26fdfba78d02544b187e38939b6c47a5fb32e74e5790f39e410eec72eb76bd72e4fd3a64d7dfb0a 962baeb8c273e0c001cf9e3d7b3c75ebd695b26baeb926e5cf0f6cb1a194b07af56a7dcbefb5d75e734c3b6b5d341439cbf7f9e79f2fe36dd00ff4b0c30ed3a5 e185ebcf8efea3b1661d2054e3c68d650cd19d77dea94b29d3606c57b2a1e60d3574186356a142055d4ad142cae63163c6a83a75eaa8b56bd74acb8dd3e78963 13065c473bc33b513476ecd8217f310e22d6fbdacf3fff2c7f4f3ef964eec72eb67fff7e492cb168d1225de285d63e8c7d6ed3a68dfaecb3cfa495e685175e90 ef3b9531b0a194f0edb7dfea5b7e899e84120153510767742589a53d7bf6a8cb2fbf5ce5e7e7cb3a02390c1cf6a4f1dc3b945c18e8fbc61b6fe835bf575e7945 8d1b374ef67fcca342c5832425fdfbf797791c3018bb72e5cafa1ea2e43083fb8f38e208f91b4b26b061463477ebd7af9f54c2a08b59f004d1487cb270e142b9 56193a74a854d2a0c2b963c78eea8f3ffed05ba596140c6ce6aa2ed6c91527d880a5cb5ca50a86a9864ef7351ca60af4a30b86352c5c3eb78b3caea1f51c66bb 90ac6dfdcfdd500d0bfb008a05fb0fc47e619f884928913506598a3099545141057ec8b184f7b371e346bde68559c6513bf2d34f3fe992e80c1f3e5cdf2237c1 f12611eeb9e71e75e38d37aa975f7e59d631b6072d359d3a759275a4ed448502450fad6e6875454639a4740ebe40204a06334d425133c51797099aca952b277f c97db66cd92295c54d9a3451dbb76f9760d5de7b65e7ce9d328666fefcf9beeb12a4f9c636f1aa642e31f4474b39f9799e1cddc74f969c3c7d07e47bf27242dd a7e5e578b26ce5feedb33cb9f9bad0c8cff5e4041516b93dc5853dfb59a2fbea3ef0c003be7ffb88238ef09c73ce399eb3cf3edb630550bef27af5ea79ac1fb3 7e446c14358668ce9c397aabc8edd8b143fac892fb24628ccdaa55ab64fc8cf977f09b3be698637cebd9d9d9d29f9a8a07e3fef03962a2cd8a152b7a4e3ffd74 4fa54a95e4778efee90d1b36f4b46cd952c6d34d9830c1b377ef5efd48a2f8b1026cd92fcb972faf4b8a367dfa74c98e8873c9430f3d24e32b4239f6d863e5b9 3b74e8a04bc86deeb9e71e192385c9d1edb2b2b27ce78650cbc5175facb74e2da919d880159cf83fc01c4f60f8620f7c82ef43ac92e509887710e858db22d809 8c53f23db9595639039ba4b3a7444da4e5cb97cbc5de61871de679ecb1c73c3ffdf493bec7e3f9f1c71f25052b92109814d4b1142a3d75b76eddf416d1193468 90a77bf7ee7a8ddc64f3e6cdbeef1f03364b0ab380dbf7e5fdfbf74bb06edfcfec4b9b366d3c7ffef9a7de9a8aa379f3e6019521e116a6d4a6442855aa94ec6f 08b68b826344ab56ad0aeda7489a132a09cf91471e29db0c1c385097909b207d73993265242140b0cb2fbf5cbe5b5c1ff5eedd5b2adf3efffcf3800403a8044e 45a91bd8e8a0c37c80a1830f1518c448d05338d829ccda4e3f3f039be43be38c337cdf6722356bd64cfecd2953a6e892c4c21c03f6e0061798a83547eb4bb42a 57aeec193972a45e2337d9b2658b6f1f68d0a0812e2d9ef7df7f5fb29b356edcd8f3edb7dfcabe64e61e38eeb8e3026ae27021deb56b5766348a017beb57240b 2e1688e2cd04db38c78682738eb990755a264d9aa4b70c649e3b59e74f2a99b7de7a4bbebfa953a7ea122f54bae2bb4550f3ca2bafe852afeddbb7fbf60bb4f2 a7a2144e1e5055b5689ba56f2bb57cea9c90e363c6ce98ab6f59e6ce5063735aa96cbd1a30e6e6a02e4ab694b13acdd5d8e5b2895adea39adcdfd069404dfe5c d5a5a17ebc6d2c0fc55632b242215f3b72b5637c0dc61d2412fab276efde5d356ad4482d5ebc589d75d65932732f32903cf0c003eacc33cf8c6ade1c2420f8fa ebaf633e4f0125068e2f06f68de2427fface9d3b4b76b3a54b97ca1c29e5cb9797b90790856bd6ac596ad9b265ea9b6fbe511f7cf08124ed40463efbbf4fc583 4401c71f7fbcb2824755ba746955aa5429650598fadec2ce39e71c7d8b287e702c0807092f162c58a0d70ac371239875fd28e353e1ecb3cf96bfe42e66cc32c6 321bebd7af57cd9a3593ef16890382c71663cc8d81840229c91bdfa4a8fc5ce942869719d87a82d6961c5f8b8bbd3b1a5a5b025b70ec2d3fb6961c5b57b7a25a 83e43edbeb08de9662e3d4534f95cf17cde6b1b662c50acff9e79f2fb3e49ab12bbffcf28b8c9b39f9e4933dbb77ef96b24441b7232b7091f71bdc37f9de7bef f5ed7b688141ed48245e7cf14579cc6bafbda64bfcaca0d1d3b3674fcfd8b163e536a59ead5bb7fabe772bc890f94da285efd63e2bb47d410bce4b2fbda4b7a4 44b2824d4f414181e799679ef17d1ff88e536db66e4a4ff8ed639fc3f9cfc9dab56b658c05bac05ac18de7d75f7f957d13ad3456a02e8fc518b160e8ea8afbd0 52c9b179ee83aec7e886d6a851235de2f16cdab449c662e17bc5d8e360d82fce3df75cb91fd76c458dbf4aa6d40e6c2cf620c3240ac0181a0418f86beef3dee5 dc0dcdff1cd106363a98b20758815113c588096c4e3ae9245d121b18301ddc45043f5c33e871dab4697acbc4c0c9009387da5fcffdf7df2ff7a11b99bd1c0bb6 c545513837de78a36c3f64c8105de2f7ecb3cffa9eafb8e37728bebef9e61bdf778405ddc38ab273e74e4fdbb66de562057de01120d7ae5ddbf7f8ead5abfbba 8960307ba2f7732aecd34f3ff57d3fb11847451409731c4030ed04c94a90d0c2092acaf0d8faf5ebeb123f5c04e33e4cd249ee834a5e7c7f189b0bf9f9f99ed3 4e3b4dca30c170b0193366782a54a820f7a342f8b3cf3ed3f7a49e940f6cec01883730410b8c73c0918f6d1d020f0636a9cfd412208b50aca025c63e76277841 e69744bbeaaaab1c5f0b066d22239bd37d08c2d6ac59a39fc199a945b9e9a69b7489176adf502b639e2bd4c98d926bfdfaf5beef08cb51471d15b2750de366ec 59048397cb2ebb4c1e8b5649cc10cd56bae241f290279f7c526aab4b972e2dc7a83e7dfa14fbf3440586f98ef2f2781ea1c4b09f57703eb04370825e121844ee c4b4cae0fc146cd6ac5972dfd34f3fad4bc84d3a75ea24df1f2a5c50018c4a65acdf75d75dbe631c5a64c68d1b27812deec382e401d86f5259ea4fd099dd5be5 5a5185d75835a8cb336a6aedfeaa7b556bb56a0be51b863376906a3f68acca696546d7909b58fba2fcb5cffd8009a36ebdf55675eaa9a7caf8008c1778f8e187 23ea330c989b0363099ca07ffbd8b163f55ae26cd8b041df0a3463c68c9093f9e1fd57ad8a1d3e348caf813973e628eb2425b701132f5a17b87acdff39536ab1 02107dcbebb4d34ef3f55fb7c3eccf595959eacb2fbfd4258130560b13bd626c07c6796032b5a2c67990b3e9d3a72b2b78547dfbf655d6895f5917843283fb90 2143e4f38dd6f7df7fef3bded4ab574ffab01325827dfcdcd6ad5bf52daf2953a6f8c6833931f3cb612c68b0356bd6c8df6baeb946fe927bfcf5d75f32be0663 793ffef86399c366d7ae5dea8e3bee50d9d9d9ead1471f558d1b3796f96b5086f34ef3e6cd65ac1526eb8cf564e53127e14d8ab37739c3626f3409b82f2b3728 9db3175b6c52df29a79c229fafa919422d8169420f5e22192b307cf870dff66805ead1a387c70a0ea4f6b55fbf7e499b43e2c30f3ff4a5c8b42fb7dd769bbca6 f3ce3b2fa01c59acc2d58ea0dfabfd31184f63d4a95327e03e2c941c56f0e979efbdf73c5650227fed35ff982f22f87b42cbcb471f7d24b5a968a5193a74a82f 83dee1871f2e5d0830b60ae3c7d09a70c30d3778ac93937e462aae871f7eb8d077615fdab56ba7b78c1c7edfe6f1cb962dd3a544f187d65fb3ef618e1a3b644e 4479a82c9c980201f76fd8b04197f8e1b8836eb0e43e13274e94efd5a4020f5e30e6eaacb3cef274eedc59b675db7840975ce5d8e6ad090e5e2218d8cfc026f5 99418ab828771a6b625f30d15d51902c00177ed81613e2fdf6db6ffa9ed480beaaf6e0a675ebd6be7902d0f48fc17c2847d3f0ead5aba5bc2838e998e7320b06 9163f09f19386a5f28717efef967cfe38f3f2ec175f0f780713098ffa157af5ed25d04636130a963f0764e0bd3abc6c7830f3ee8fb8c31ef0782188c77baf0c2 0b7de54efdcf8bf2e69b6ffa1edbb163475d4a9418f631a6484e6367ba80e318156cdebc79721e753adf627c051ee794ac86521be62bb277654622231ce71e7d f451491881ae69d8c6cd5c739563828dc2c18bc97aa6839042ec59d16cdb04072bd67a8ebe93814d62a1e6da5c805f7bedb5012d3518a4860b3eb38e05890642 c1206cb3fd95575e99b2930e7ef0c10792f5ecf6db6f2f34f9195e336ae2913d2d121f7ffc71c0e7136ea1f8c3bc30a3468df29c70c2098edf81d382da5404f6 4ef7d997708905a878305f033e5fb492befaeaab85c6d2980a97010306e892f090f803cf87c7e16222d52a5928fd617c983976e07c6a9fb3caec9b087eece79b 175e78c1771e7efdf5d775a9d7df7fff2dc10e6af4434ddc49a909636930a926be575c73e17ce3f620c6897bae72a485c5397891ee6821baa1057763b36f979f 9be36fedb1021629b7b5e478b7b7a795f62e8c6d620b8374ed9f2f969a356bca4483c6f3cf3fefbb2f54820134979ad9d591ca39532e22f03999cf26dcf29fff fc473f8ae205a99a91f5cae9f30fb520c0052411408207a76db0a06be11f7ffc21db52ec2c59b2446aa771b186c9524341a54af08475a1e0b8663220a2cb472a 6711a2f415dcdd08418b61effa8caeda486a619fa813e70b7b808fc1e4cd9b3797fb162e5ca84b29d5211845850cba98e1bbab55ab9667f9f2e5fadef4c3ea5b 4abae016075cbca14b961dc69f98fb91e636182e264d5083a02893c61adc77df7d455e0cdb97091326e847513cac5bb72ea03b59d9b265a56b6193264da4c6fe b0c30e9372fbf78554cd38f118f6f118f605ad3fa99e8dc68d307e0969b371fc28eab8317efc78f91e30e75038b800c4f8036c8f9aefd9b367eb7b88120bc71a 33bd01165cdc621c19c6fc619c9e29775a70313c77ee5ccfe4c993255b96e9d6d6b76f5ffdec94eabefbee3b5f575a7cf7fdfbf74fd99e2cb1c2c08692eefffe efff7c07525cbca13b59300cba37dbbcfbeebbbad40b138c55a95245ee430d53a881906e865a648c9909ee1e835a60d4c821cdb349f91c6ab9f8e28b03ba2150 6c613c94e9da81fd18dd9982bb6a201100ba21625c14120838cd5184a01e2d07f6ef0ef30b7cf2c9277a0b8a15fc9e1074623c4da8c970f19bc1fc50b840c4f7 120ed2cca3c518df1b1e837eeb44c960d235639e1a535b5fd225272787e7119740d733338e0a156e9992b884810d255defdebd7d07cda953a7ea523f0cc036ad 31c8fc6487c18b26eb0bf2ab07b7f4a40bd33d00272874b143cdfd983163a4260e174f08eebef8e20be9436d3e4bfb82a66766cc8a1f0428a8f5379ff7adb7de aaef291ed4f8633027069ba31b26e6a4a19243f70bccbb61ba9be133c6f123d43c51085611f898ef75d8b061fa1e67f85d9aa014094298e48192c90cf2474bfd 45175de4db8f8bb3a0b20619b2c81dd045ddb4d4e118e6b6cc6625c1c086920ead2cf8f1394d98896654a468c6fd482fb96fdf3e29c785c935d75c23e5b8b047 badc03070ec87de90659d4f03e8317bc6ffcbde79e7bf496de0b2b244d30db20db16ba10044fcc46b183c1974e69b591ed2e134e262b57ae7445d706741334d9 08319e06c71bd46223b8c17105ad37a818c1761887808a12fbf7892c85a12632048c4f40d743b36d3af7612777183b76ac9c27d08b01d324d8f7e7500b7e1338 e7a20700ba53a292e68d37de48fbee4be904d701a6f700ce4399362e93810d2515ba9de1c787cc2d0862ec70c154a14205b91f075a5c24e2021da9294d2b0d82 2274ed4917cf3efbacb4bc1878cf668e1fa705b5704e594dd01d0603d18bba10a3d878eaa9a71cbf1b2c48a5b971e346bda57b613fc2acfb188f6287f78e0b27 ccaa9fca50e9818a11a7ef28d22554d2008cff434baaa9684097cfa2121010250a5afa4dba669c274cb7a4500bc683213d39b917ba099aeb26546c22e109baa1 617a0164446bd0a081cc1788e3792a2480402f9cafbefa4aafc506031b8a184ed645a506c4450f0e8ae81615293319de73cf3da74bbc1721085e4cbac9366dda 482d2ae69830f3dd2041009ad783c79cc44b3cde7bb0f9f3e7cb7bc341e8adb7de9201c7a6b50aa9a19124c00439187381ec34c99a6894fc8a0a3cb1e044e266 e8fa888b75bc174ce8676affd0a5cbfe3e478c1821e5a9a87bf7ee01af35da05f34239f9dffffe27c12bb6c1c06aa484e6f8034a05e67c624f1883ae91f6fdda bea035d3a92b38b94b245306d89764666b44620ab410c6ba9b3c031b8a18c6b92c5dba54af055ab06081af9b079648b2a660dc00ba6e20483183ac313994a959 c5f3a166011786a80d45ed03e6b941978f445f3cc4fabd074330674fbd695ff0c3c70cf4062e2cd3b5db9d1b99c960432dd837dc0afb59b366cd02decfd5575f 2d5d534c0b857d418544322fec713187ae33e6f782e38a993d1dc70f0463a67224d205ada2c15d3991c004c725dc8f4c779d3a75724c7a429408c3870f0f18ff 8241e3d8cf514916dc0da95fbf7e85f671d4e6233b29b91bc6239bcc9b912cb8f64ae6b5045a13b3b2b2f45aec30b0a18820c5297e083b77eed4257e38709aa6 4ffb82dacca2209524b69b356b960c9646adaac9dc6202051c7071d1809aa4640da08ec77b0f5654da4d8c01a0d4f5f2cb2fcb45b3d377870519b7dccae92228 dce2348b79b4b66ddba66f450ec7087b0503baddd8bf1753738d56d5e0497f432d2d5bb6f48deb43d63474bdc3c500ee4336c23befbc93010d2515125f60b245 ecfb38efa07b91a96c0995de1f1919b1ef22c31902227bba79722f747b3efae8a3a5ab7e993265247940a873132aa6ec7305261abadce375603f8c3506361411 0c4244971b27989938f8478305294f43c1f819d42c20bf3a320d9919da711188c1ee3838639c482a88f57b4730847ea52d5ab4908bacdcdcdc90b52c9d3b77d6 8fa2548393080ecae1baa2b56fdf5e3f22798a3bf01717f64eef29d48241f3c1e370a285161f64169b3973a62e090fd9117171e7f49ab00c1e3c586fe985c029 3b3bdb715b2c684946d757cc5d83df60eddab5e5f9719180a425f8f7326502604a5df8add8b3f6d91774552602931805ad72a6051e15c9c9840a5bbc0e5470c7 1a031b8a080e92b8107082fee7f603aa7df9f2cb2ff5567e488d6b6a4ccd053d2e88501b6a6a4753492cdf3b0e2ec1d996cc82cf041773a8f1463f590ee24c4d 980c16dd9d8aba90360bb641cae06443e63c5ca4470bad114e038ed13d0b636aecddd1d082118b441ed3a74f97e7c3dc559178fbedb77de3f18217d45cdb675a 0f366dda34e9ee8ac005c194bdc5070b5a632fbbec3249498fda70a6dda664c1dc57382fd8e7c6c2d854fbfe6a16fc2e3329bd2f4506155cf5ebd797c9a2939d 58c88cdb8c450b7fb09205367939013fa6acdc7c7d478ab05e5f165e574e9e27c55e99abe0648e0b04a71d103546a6b5c569c15c2b761843832c1de67eccbb82 7eefa93a083e96ef1d6374ce38e30cc76d31070a3e1b4a6d18df156aaea0e00517c9c1fb40b26002db279f7c52af45075d5decad5248036b5a5331b92e5a31d0 e561f1e2c552561218cb82df0882a4e0c94d9d20a8096eedc43ac6bf2053593419e9162d5a245d33303e01c94282c72610250bf64533971b5afa51e9856ea266 df47edfb8d37de28092cf05b1c3870a07e2491175a6dd05304c7eb54b8d63095dba917d8802db849b5c0262fc79cecb23ca91673b9096a7af139a25f6e305c38 98efdf69e9d1a3876c87f129e80e820b16949b8026155b68ec62f1de91f1035d964c0d7fd5aa55a539181770e80b8bd6a0cd9b37cbb694ba468f1eed38603e78 414a4decebc1e9cb93052d87785d45b55c84830b7d040b975e7aa90c50b5cbcfcff77cfdf5d77aad64d06d0faf155de0c2c1bc1ca6a5065d5ab18e169850493e 88dcaa4b972ebee34bf0826c994445418200736c1d356a942e4d2e732e6560132db6d8c4043257a066c8a9e932d4e49166c1e4506ddbb6f5d52ce1a21e17586e 995fa524ef1d3568480a80417c5847d633a47026f70917d4a01563c8902172919f6a30460caf311e7d9963c99ea820d49c3180ca105414603b241bc118b56466 62238ab5ae5dbb4a1a5e5478217031bf8be0055dd31235e501b9137a9d209325f6975069eb93c1ecc30c6c28e17070c5771b6a2e8e71e3c6f9be7fa7051368e2 2f6a54d17ceea6837049df3b8222fcc5e3d16586175fee84ee494ee369d0da869ad4cf3fff5c6f199944cfd46f6a7b117ca5227439ebd6ad9bef73c564bd4e03 f3f1fb41e63374abc376a870c0ef8a289d209831bf05fb82567ef420e8d0a18324d8c11c20447648c38f8ad4fefdfb4b4b3d921b610e3cec3fa126f34e16b35f bb27b0b19505946bf9ba25c57b7f962727cf767f7eaeed3eef637ddb67e5ca6d739f7431cbcbf5e464e975dcef7b9a2cdb76399e3c1446f858af7c6bf3ac80d7 12b0e4c833a63db4b8e0fd3ef2c823ba241026922cf4d9d816fc986231a038194afadeafbcf24acf8a152bf4d6e446e87685b920ecdf2bfa28f7ead5abc849c5 d0c28701e7c1a980933153ff05175ce07bed68414c25c8d263e6ad324b70b69e1d3b76c820690cf037dba0a5869309523a72cab48901dfccc247e1dc7befbd85 f61d2c75ead49129355289796dee6ab19160242868b1205890ed75f7301380d8e3047b509263dd91979fe7c991756f80e21f3ba3ff4d5b30e47f0df99e5c13b4 98c0c612f56375c0e30fa8f09ebc5ba53bf45537dd6f7001e204cd9c18f8eefd6c0a2f9883c68d32f9bd931f06a0dbbf534c2616aebb997da67eb4da9941e8c9 9aa9dfcc8c8f05fbf433cf3c93f496530c5ebde5965b0a75ef43c2853e7dfa48e088ae9ca6b6d1bea0f56cd2a449fa9988d20bc68a997d1d69c7d1e29aea6351 29355c77dd7501c74a2c75ebd6759c832fd9cceb735160e30d440a0500b6e0c01f43e8c022546b8b7e120948f436859202d85b796cffa87f3ba7c0a688c7465a 96c650e38cc931f17e91eeb5a86e549868094de3e8bf8901f348d78a7968f0581ca4dd2693df3bf921adb33dfdefedb7df1e769666dc8f963af3182c18083f79 f2e48032b36056fc78775174cadcf7dffffe57ba714592792c5690e6fdd9679f95ae99c1afc72c98dbc0e9e46c166428c41c3244e96ac99225b2afa3ab2b5134 4c82002ca800c258c4541dcf6c5ea73b021b09009c5b35fc018b3fd0f0070cfe60c71ed8f88325bf440636c1c15af0bf91ae9016d0fb3915afe501037a91b128 553243452393df3bf9618246b31f20a8892400416b83794ca44bbcbb8739b57a98052d8e37df7cb367e4c89132f6a7a4735fe03342173db4c8a0bf37dedbb5d7 5e2bf3c138fdfbf60519d74c4b121e8f41d3e87e863137e87a8680885d3b29dd61ae33fc1e30b71b5134301d01f61d54c84593ea3e19cc713fe5031b95656b69 293466c51e54382ffeb8c2d615cd2186887b6013a62b9a2fd64953e8ffef7dafdee59d77ded1f74406636a50db8489efdc2693df3bf9e102dbe4d9c7048de15a 6a8c6867eac7bfb17dfb76fde8f8b8eaaaab1cffed50cbd1471f2dddd7d085015dea306819fb335a5290e1100b821564da41eb141283608e0d042f26fb61b40b 121b14d5079c999f28932090c76f90281a18138ae329e60a4c34f45e41a52ec6884572be34c7fed46fb1b10283a25a5b0a051521243fb0817c4f5eae3dc981f5 7eb2ace749e3a006170fe85665de2f1674c58af4a20e30a017174678ecbc79f37469eacbe4f74e85a1f5c2ec07f3e7cfd7a5e1859aa9bf49932692e6dc3ea604 0170a4b3eb97045a63ecaf25d5167c363ffef8a37eb544a96ff5ead5719d3f06c706b45612450b4171b56ad5f45a2064e3bcedb6db6489254cce6cafd4c2313d dc04c766db780436075b4f1c3bb5aaa9aadd97292b7810cb7b54535de67a6f43762b7d875aaea6ce29d0b7bd0a860d53b64d93af608e9a31b5969ae00dfe6459 b66c8ccaaeaaef4f33bb77ef56cd9a3553a3478fd6255e1d3b7654d60f45af8586c763dbb66ddbaa7dfbf6a93a75eaa82baeb842df9bda32f9bd93332be090bf 5620a21a366c28b72371fae9a72b2ba855a79c728a2e51eadc73cf556fbdf596b202673561c20475c41147a8d2a54bcb760d1a34d05bc5cfedb7dfaeaa564dbd 03d7a1871eaafaf6edab162c58a04e38e1045d4a94fa060e1c18d1b9a1b8fefdf75f75cc31c7e835f73870e080eadebdbb5ab162852ea1609f7df6997ae8a187 f45aece1fce2b4effcfdf7dfaa75ebd66ae2c489b20c1f3e5cdf5332b836cec9c991e737de7fff7df5c8238fe8b52440745322c1636c843d23993d335a88f2fc 5c4faeadb124362d3681ff967969d13f3678b15eb7ef7da6070c760f4e698b05fd34c37593419ffa575f7db55076303ca71b64f27ba7d0ccdc2fc56dd22f6aa6 feafbefaaa501ae8785bbf7ebdaf6b5d2a2ce8b2b766cd1afdea6223d1f30351665abb76adecc3d1ce5f150dd4baa3ab672a4297d18f3ffe587a25a0c5f9d75f 7fd5f7783c2fbffcb27c36d685ae2ea16038f661fc662490ea1e9939f7eeddab4bc2c3b54be3c68df59a5fc78e1d038ec1e83d600537fadee27bf7dd77039ed7 2ca54a952a74eeb333db3df9e493ba24764a16d8d8c7d7e845628350e5c23b3f8cefbe2c7be063b1071a7a09086e829f3b2bc73f178d5eb0bd3d389205636522 7cacf58ff8130584589c921ab80dd2d2de73cf3d8552ae624119bace14055995cc049cf60503ad535d26bf770a2f3b3b5bbecf5ab56ae912f7dbb66d5bd46380 62b9a00200bfb9920434a9343f1065265cb4e3d81f2fa830c3ef259e5ddd8a031576382e22318efd778d2e484d9b36f5f4ecd9532a82508654ed54583441318e 716632622478c17e110904c5180f693763c60cdff715bcb46bd74e6f553cc15322d8174c621e8ad92616c155b092b7d8a42b2bc02a32b80988b6dc073b7ac58a 150bbd2f1c9830d624d4c507c69c20db110616073f160b6aa9a3a95d48864c7eef1419cc3f83efb45ebd7aba247dac5ab54a2ece4e3ef9e442fb702c17ccc181 0b9e01030648528d68c6ab3949b5f98128f3a07502e328e31974603fc77e1cae722d51704eb3670a8d6441e5031586e36e2463a7d0d251a3468d80cf14a99bc3 2551314131b273da21cb6470406a96e020285a356bd6747c5e2c98ab2c14b34d51c14f7131b071e46db1716c95d12d4a6e6eb11933668cec5065ca94918c46f8 c1bcf2ca2b9e0d1b36e82d423317f5a815a854a9925cb82018183d7ab40ca84c7599fcde297298e91bdf35f691748593e0ba75eb3ce3c78f970b91366dda4870 8e5a42a49ac500669c0cd112820535b3e85e80df0e2a0170e2c5e784ac69983f01dd2b468d1a25c916366fde1c710d63241014a5dafc409479264e9c28fbd7cc 99337549eca1ab2afe8d050b16e892e441b7335c88db7f5b912c48a443814c508cf9eec2413744a7cf15192e8b4ab48249c3b11dba0406b34ffc6a16f448c063 8a0bfb8753af17b314d5b269b699366d9a2e891d06364e4c77b89ce094d5f9d65de8ce669b87c785f6efdf2f930f1607bab3607e9692d6be264b26bf778a9c09 62314686922f15e707a2cc632e3831d74cbc60ae26fc1ba81c48367429b3ffa6225de29dc2de8d264d9a249f0d7a8c8453542bc8ecd9b3f556856ddab449b641 963227c89089893bb10d32a76dddba55df533c68fdb7bfb6e0059560a1986df01cb116dbac68e9a26a7735212f57e5ac9baada1f74906446f22eed55fbf5b554 5efe1895ad3775a3238f3c32206b53342a54a8a04e3df5d4b8668489a74c7eef1439ebd8287fdd9899281d7df1c517fa5664ca952b27d9e0886205599f162d5a a44e3ae92475dc71c7e9d2d8b3820279fe33ce384397240732434e9d3a55af45eefcf3cf57e5cb97d76b644c9b364dfe366edc58fe16e5b5d75e53471f7db45e f3ebd2a58b6ad1a2855e2bec871f7e90bfa1b260de7df7dd928df38e3bee504b972e55152b56d4f714cf2fbffca26f39dbbb77afbe155a952a55f4add8616013 42d5ecee6accb2656a99b7554b2fd6fa98ee699bf2998802212d3325dfc891231d2f969a3469a25e78e105a978328e3aea28f5f6db6ff3e28a626ad5aa5572a1 16efd4e98b172f568d1a350ad8a7130deff3e69b6f96b4d376071f7cb02a53a68c541086d2bf7f7f7d8b8c03070ea8850b17aa934f3e591d7ffcf1ba34b4ba75 ebca14013896192d5bb694e36051b66ddb2615b7a8840de5f2cb2f572fbffc72b12b78edc21d63c39d3f91e63f1e95040c6c88888298137ad9b265e52f25572a ce0f449965e5ca95f2b752a54af2375e66ce9c1951ad7e3cf5e9d3476dd9b2456e2398e9d5ab97faf8e38fd5fefdfbd59e3d7be4ef8e1d3ba46501f3b7e10215 17ed43870e950b700a6482e26ad5aae992f03017de7befbd278f69dfbebd7af3cd3765eeafa2a015064171a2d4aa55cb715f353d1d42b53a9a1e11f5ebd797bf b1c6c086882888096c22a95da3c438e79c73e4e21241cba5975e2a35dbe6fbb9edb6dbd4faf5ebd5e79f7f9ef48b424a4fab57af96bff65af458c3c496082812 79711a0c1348a215d4c06492cf3cf38caa57af9e3afcf0c375a9b7bb275a75de78e30df5e38f3faa9d3b77aafbeebb4fdf4b76c50d8ad1ad6fd3a64dead5575f 55871d76982e0d6dd6ac59093ffea12269cc9831d2523762c40809e2b66edd2af7656565c9df607ffcf187fc656043449420a64689814d6a410d20fafebffbee bb855ad32a57ae2c2d3b44f1800b4c40cb60bc8c1b374ec656208848165ca09ae3df830f3ea81e7ffc71b94dc5678262a77133b182e322028a44073608f47372 72643fe9d6ad9b042b663c115af39cfcfcf3cff2b761c386f237d618d8101105419f6838f1c413e52f116536530b1d2fbb77ef5693274f56575f7d7540cb4822 2d5fbe5ccd9933476e77edda550d1932446e53c9242228c6b8198c7f4217dd6442f7b99e3d7baa9a356bca1848271b376e947dfca28b2ed225b1c5c0868828c8 3ffffc237f19d81011a0bb15206b593c6060f8efbfffae6ebae9265d9278fdfaf593bfe80a979b9b2bb79d3cf7dc73be56080aef9b6fbe91bff14a08b16bd72e 3565ca14d5ba75eba4666d458b637676b6ecc7c8e016cafbefbf2ffb58bc5ab018d8101105312d36b1c81c4344eef6e79f7f4aba6740e6a958c3852982056488 baf2ca2b7569622d58b040c6ade13560dc4ca8311d184bf3ecb3cfaa1a356ae8120a27de41f1f0e1c325a143b28262b466226944a74e9de4b7824412b81d0a12 215c7ffdf57a2df618d8101105312d3618204b4499cd8c39812fbffcd217e4c4ca800103d4afbffeaadab46993b46e68780d808b64ccd716cab061c324f88a67 128574620f8abffdf65bf91b4b0834d1ba866002495512094900905802d9d166cf9ead4b957af2c92743ce01f7d75f7fc96782c413f1c2c0868828080ed8a8b1 c4647c4494d93036c27423faedb7df24ad6eac607e93b163c7caeda2baefc4535e5e9e64ee42adfbadb7deaa4b0bc3053a5e6bab56ad740985630f8a31b6c4f4 068815741f442a69b48024aa1b1a821364cec39c4e0f3cf080dab76f9fbe47a966cd9a153939320277540ec4738e380636444441d0ac8f49ce30870311653604 3598abc5405add58c04cf11d3a74908b5f64b38a57fadb70060e1c285dd090b6b728efbcf38e243988d7a0ef74644f188099fa91a02156f07d605c0b242228c6 eb4737c42a55aaa8bbefbe5b7df7dd77fa1e2f64399b3871a25e0b2ddee7559eb589888220b061ea6022322a56aca86f299957045dc74a02b5dc575d75956fcc 4eb266ec7ffdf5d765f24d74410b3793fca2458ba40b1a82200c108fd798917412afa0185dd03a76ec28b7d105ed3ffff98fdc8e27741f7bf8e18765a250643c c3bfffc4134fc8a4b298b0f5830f3e4889843b0779eced644444190ee36b70e0bee5965bd4a4499374291165b276edda05d446df79e79d6af4e8d17a2d3a98bd 1fe3691028005a6b962c5922b71309631dce3aeb2c99fc76c68c19ba34b4162d5a48b7b575ebd6a9418306c9c5b5790f141a5230af5dbb566e636e3464490b35 062512e87a86c0e2d34f3f95757c07975c7289dc26b6d810110540733bb0c586880ccc026ff7e28b2ffac6c64403739a6046761310a05b4e51a995e30903bfd1 f214ae0b9a81b11550bb766d69e941573a0a0f9f97f1d34f3fa9be7dfbeab5e861724bb4f499a0a669d3a60c6a8230b02122b231810d66b9272202a734cc68b5 79e8a187a4e5231c74ddc2406fb48e6cd8b041972a75d75d77a9ba75ebeab5c4f9fcf3cf65b6f851a346459cd61eafdd2ed99341ba4570508c398bccd8986860 d03d8262cc03034816f0fcf3cfcb6df263573422229bcf3efb4c9d77de79eadd77df4d78fa4c224a5df5ead5f3d594dba11204e30d70bcc08ceb65cb9695ec57 e8aa850062fefcf96af2e4c9525b6f8741d86bd6ac89db4485a120bb5983060d24ab15e6ac8914de0fba40e1021b192331ef0d52fd52d1d6af5fafce3efb6cbd e685b137087431b6ca9e60c009c6630d1e3c580d1d3ad4d76a0698e11ff31f512006364444363859a3697fcb962d6cb521221fd4b21735f160348e3cf248196c 8d6029d1eeb8e30ef5e1871f4a8ae7638f3d5697460663100b0a0aa4ab6ea952a574298583d62e04b9c12a55aa24e991d1a50c41719932657c4131c6e598a018 5dd0ecb02d826c7e078531b02122b2c149a473e7ce325f05d33d139181960e0cb6ffeaabaf7449f1a0b61e8949e2394961284f3ffdb44ca088a0a67af5eaba94 e20d8926ba76edaad74a0699e990369a5d019df1ac4d44648314a6e836c0a08688ec30692f120698c93a8b038fc5e486c9086ac68f1f2fe979e7cd9bc7a026c1 d04a168b1e00382f4d983081414d1178e62622b2416073e18517ea3522223f7419c27887e2c0580ab40823e940a2617cc6fdf7df2ff3a85c70c105ba94120533 ee17278b9e1d82623cc775d75da74bc8c9218f58f46d22a28c872e68eddbb797e67e22a2609877066364a299c305632ce6ce9d9bf08424c8f288311cf8b79110 251919d8c80bc9223047da7befbda74b2287b13453a64c91f9d5a8686cb12122b2416d582acc9e4c44a9ab4f9f3e32a9e67ffffb5f5de2ac468d1a52cbfec927 9f144a971c6fb367cf9640069342724c4d6a40163474078ca63b639d3a75d4aa55ab6452570a8fc903888888888a09d9ab500b9f9f9f2fa9799169ac5ab56aaa 51a346923a3e19962d5b26637930cf4e70aa614a3e64c4bbefbefb2460090599cfd07d10a9c431670d4586810d111111115182611e2304c548a18da0b874e9d2 32bf50328362b76360434444444444aec731364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0212222222222d76360434444444444aec7c0 8688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0212222222222d76360 434444444444aec7c08688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0 212222222222d76360434444444444aec7c08688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8 101111111191eb31b0212222222222d76360434444444444aec7c08688888888885c8f810d1111111111b91e031ba26073bba886071da41a7699ab0a74111543 c130f91c0f328bf579121165149e4f6283e7138a10031ba22073678c55cbadbfcbc70e52738a7b26b20ec25d8665f869ac6a77b52c3f5765e95522a24cc3f349 8cf07c42116260431424bb558e1c3cb372faab1655bd65d12950c3daf750ebf45a46ab5a5dd5d6378988320dcf2731c4f3094580810d51b0ec316a99c7a3968d c956d19f87e6aa2e0daba91ea8a22322a2ccc6f309514231b021b22918d6d0df87f7a02ed669c532b78badaca11a36779875b2d1eb0d87f9fb4d4b1fe0e66aac 3e092def514db66918d485a040f7b936cfd765aeedfea07ec478ac6f7bfbbf55887502b43d4e962e73ad971e5426cf61db36e8f5fbde97dc67bd7ffb3f18e16b 2b18e67f7f0d876dd2a591c0495c3fbffcdbd6ba433fea223f3f23e0bd78b791c799e7b36e7beff3de3faca0400db3bff768ffdde0e70bb58ff858ff5e17dbbe d6108f71d82aec7b8dec3323a2c48bdbf924d2f3048e07d6b1c56ce73dcee8fb8a643dce3cc62c3c9f046c238fe3f924357988c826df939ba53cf8692895e3c9 d3a57939a64c79b272f3adcd723d59f675232f2770bb20793959defb73f2ac7f094fe35db7567d4c99945b77e4e5e7797264ddff7a1cf9b60bdcd6ff7c591edf 4bb25e7f4e56aebc06e17b3fd6e3e48599e7ca8aeab5f9efd7ebb6cf03efb928decf58bf6eeb79e57b087a4c249f5fa1f712e235f8bf53fdb9d8bed3e2fcbb11 ef23d63bccd1fb983cdef7fa6cdf8f25f27fb3e8cf8c8892257ee79370c762f358f3b842c7bb707ccf677b4e14fbfe5d9e4feccf57e8f3b57da7c5f97723de47 ac77c8f3492006364441fc0714fd030f280b73d02ae244e4bf2ff08420cf633b29d80ff6e6b9e5dfb79f3842b1fdfbe665d99fcfbca6fcdc1cdb41cf76f2b5bd 17df7b8ef8b5d94e84bee7712a73e2df2e47ce1ebaccfe98883e3f87f712e2bb8afe3b2dfa7b8bf4f9fc9fa1d9bfcc89499f38a528927f3382cf8c8892ca7f5c 88edf924dc79c2f76fe875fbf6111f22783ee1f9c4feda5d825dd18812a4609319fe595b550fee6cbd7caa63c69cac5ad5e46ff6188ff22ceb1ebe8f76762b65 1d9cc4d81968422e5073547f651d24c5f2a973ac12ab6c7d2dff40d682396aaa431fee6ab5acc31e44fada0a36f906b89afb2297ad5ae9d738b67935dd0c9ead c68cc9f6165a22fafc9cde4b09079c16e77b0bcdfaeccd0bccaaa5f427a8c62c4325d31895ad9f3fb27f33fc674644e9cfe93c51ad9637694189f07cc2f3890b cf270c6c8812247fbd39428e55cd4d3fd76a3d2415a8757451ebf3e54680da4147a1c03edbfe45fa5d0bffc1c93a13a9b973e728553d5b32f3081cc4acb2f5b5 5a380649d19c40825f5b49658fc957b9e64cbcdcfa8caa05f6018ef6f38bfe64e8ac38df5b68f9caf7744588f4df0cf7991151fa733a1657edee4d5a903fa1ba 7aa66143d57eaabec386e713e0f924ddce270c6c88122e4be5e6a346257089a462a46af765851e87655977ff49c177d2b10e628306c9790885bae66db9ead17c aaaa1541de51ffc1307acba33b3a6b5555f765d68938cfd4342e57639bb757be73ac4ff13fbf9289c5bf5b4d998a4beb43b24e4be184fb3723fdcc8828b37807 9457abd65ca9fecbd484b6bad886e713e0f924ddce270c6c8812c47f8258aea606b537170c1be6cd98130bb6ee03cb6b5757de6396ade62dab6de07c0a555ba8 b6fae0e8780209de3e941235d1e324eccdf65215e951f3f37c274e5f6d52249f9fed3514ef6458586cbfb7aaaabaef431aaba4778783c8fecdf09f1911652264 e5aaa67a20a55a56aeea5d928b749e4f04cf27eec1c086284081f2754755ebd4a6c0634078d56ae99a0e7d20449a4853dd91dddbd7ccbbbc477b7f13afb5cd9c eaddf5092316fc279d9c56fe673507b7acb6c1dd06aaaaeefdf503d0dd002fab60ae9a31d65b94d33f82b13d225bf5366f10cf63fd29983bc33adc6a639bdbba 383858d7435533a92c7dff608ef2bd85883ebfa0ae13d61fbc06df576ae3ebf3ad15cc996a1dc21dc4f87bcb1e634e18f848d08f19b70ad4dc2e5dfc356391fe 9be13e33224aa2389e4f8a64eba2849afc023ca6b86102cf2782e713f7f010914f4096162cc81862cb0ce32dcbf1a557348b3d710832c458c71029cfb2ee30f9 45bcf23dbeb48b58b290fed2b6853df3895e8a9594445eb33f0b8f17b29ed8b2a204b3feed80f765bdcf806d237a6df6f7877fcbfb6fe6e4e47af2f243fdc390 efc9b5b6c9c7f6e63504fffb22cce727f05c7a1b790e7fb697c04c3ab68c37d82e2ff0fd05beb730ff6e94fb88a43fb5dd9f656d5fe86d847daf917e6644940c 713b9f44702cf6fddbbe638bff789785e3866c15219e4f6ccf81d7a0b70f3ca8f37c92220ec2ffac37404494a630815c736f4d5f4e9ef2c4bff3341111a5259e 4f521dbba2111111111191eb31b021a2f4669b0f41addbe4ed3f4c4444142d9e4f521ebba21151fa2a18a61afaf2f56bec3e404444d1e2f9c41518d810111111 1191ebb12b1a1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31b0212222222222d7636043444444 4444aec7c08688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e47a0c6c8888888888c8f518d8101111111191eb31b021222222 2222d76360434444444444aec7c08688888888885c8f810d1111111111b91e031b2222222222723d06364444444444e4724afd3f1b07c9599492e8480000000049454e44ae426082}}{\nonshppict{\pict\picscalex74\picscaley74\piccropl0\piccropr0\piccropt0\piccropb0 \picw21745\pich8121\picwgoal12328\pichgoal4604\wmetafile8\bliptag-91315815\blipupi96{\*\blipuid fa8ea19947b55e396e2be56f59157575} 01000900000320c805000000f7c7050000000400000003010800050000000b0200000000050000000c0234013703030000001e00040000000701040004000000 07010400f7c70500410b2000cc00330136030000000033013603000000002800000036030000330100000100180000000000ac8f0b0000000000000000000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94de ff000039000000000000000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000039 000000000000000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000042000000944200ffffdeffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000042000000944200ffffdeffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffbdffff000063000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffbdffff000063000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b000000bd6b00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b000000bd6b00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994de0000000000000000009439 006bbdde0000000000000000006b3900003963000000000000000000ffb563ffffffffffff6b94de000039000000b56339ffffdeffffffffffffdeffff396bbd 000000000000393900debd6bffffffffffff94deff000039000000000000000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff63b5ff6b0000ffffb5ffffffffffffbdffff390063ffde94ffffffffffffffffffffffffffffff94e7ff0039630000000000006b3900ffde 94ffffffffffff94e7ff000039000000000000000000ffb563ffffffffffffffffffdeffff396bbd000000390000b5de9439006b946363e7e7bdffffffffffff ffffffffffffffffffffffffdeffff946b94b5dede00396b0000006b3900ffde94ffffffffffffffffffdeffff396bbd000000000000393900debd6bffffffff ffffffffffdeffff396394000000633900bdde94000063000000b56300ffffffffffffe7ffff00399400000063390094bd94000039000000000000ffbd6bffff ffffffffdeffff396bbd000000000000393900e7bd6bffffffffffff63b5ff00000000000000000063390000396b000000000000000000ffbd6bffffffffffff b5deff00396b000000000000633939ffe7bdffffffffffffffffffe7ffff3963b5000000000000393900deb563ffffffffffffe7ffff946394bddede00396300 0000633900ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994de0000000000000000009439006bbdde 0000000000000000006b3900003963000000000000000000ffb563ffffffffffff6b94de000039000000b56339ffffde94deff000039000000000000000000ff bd6bffffffffffffffffff3994e70000006b3900ffdeb5e7ffff003994000000946339ffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff63b5ff6b0000ffffb5ffffffffffffbdffff390063ffde94ffffffffffffffffffffffffffffff94e7ff0039630000000000006b3900ffde94ffffff ffffff94e7ff000039000000000000000000ffb563ffffffffffffffffffdeffff396bbd000000390000b5de9439006b946363e7e7bdffffffffffffffffffff ffffffffffffffffdeffff946b94b5dede00396b0000006b3900ffde94ffffffffffffffffffdeffff396bbd000000000000393900debd6bffffffffffffffff ffdeffff396394000000633900bdde94000063000000b56300ffffffffffffe7ffff00399400000063390094bd94000039000000000000ffbd6bffffffffffff deffff396bbd000000000000393900e7bd6bffffffffffff63b5ff00000000000000000063390000396b000000000000000000ffbd6bffffffffffffb5deff00 396b000000000000633939ffe7bdffffffffffffffffffe7ffff3963b5000000000000393900deb563ffffffffffffe7ffff946394bddede0039630000006339 00ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffe7ffff003994000000390000ffe794ffffff006bbd000000420000ffde9494e7ff000039000000bd6b00 ffffffffffff94e7ff000039000000bd6b0094e7ffde946bffffffdeffff004294000000420000debd6bffffff94deffffbd94ffffffffffff3994de00000000 0000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd000000ffbd6bffffffffffff6bbdff0000 00de9439ffffffffffffffffffffffff6bbdff0000006b0000ffdebdbde7ff00006b000000ffbd6bffffffffffff4294e7000000000000ffbd6bffffffffffff ffffffffffff4294e70000006b0000ffffbd6bbde7000000000000000000e79442ffffffffffffffffffffffffffffffe7ffff003994944200ffffdebdffff00 006b6b0000ffffbdffffffdeffff004294000000420000debd6bffffff94deffffbd94ffffffffffff006bbd0000006b0000ffffbd6bbdde000042000000bd6b 00ffffffffffff3994de000000390000ffe7943994de000000000000bd6b00ffffffffffffdeffff004294000000420000debd6bffffff94deffffbd94ffffff ffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffffbdffff00006b0000006b0000ffdebde7ffff6b6bbdffe794ffffffe7ffff00 3994000000390000e7bd6bffffff94e7ffffbd94ffffffdeffff004294943900ffffe7bdffff00006b6b0000ffffbdffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffe7ffff003994000000390000ffe794ffffff006bbd000000420000ffde9494e7ff000039000000bd6b00ffffffff ffff94e7ff000039000000bd6b0094e7ffde946bffffff3994de000000000000ffbd6bffffffffffffffffffbdffff00006b0000006b0000e7e7bd6b94de0000 00000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd000000ffbd6bffffffffffff6bbdff000000de9439 ffffffffffffffffffffffff6bbdff0000006b0000ffdebdbde7ff00006b000000ffbd6bffffffffffff4294e7000000000000ffbd6bffffffffffffffffffff ffff4294e70000006b0000ffffbd6bbde7000000000000000000e79442ffffffffffffffffffffffffffffffe7ffff003994944200ffffdebdffff00006b6b00 00ffffbdffffffdeffff004294000000420000debd6bffffff94deffffbd94ffffffffffff006bbd0000006b0000ffffbd6bbdde000042000000bd6b00ffffff ffffff3994de000000390000ffe7943994de000000000000bd6b00ffffffffffffdeffff004294000000420000debd6bffffff94deffffbd94ffffffffffff00 6bbd000000390000ffe79494deff000042000000bd6b00ffffffffffffbdffff00006b0000006b0000ffdebde7ffff6b6bbdffe794ffffffe7ffff0039940000 00390000e7bd6bffffff94e7ffffbd94ffffffdeffff004294943900ffffe7bdffff00006b6b0000ffffbdffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd 0000006b0000ffffb5ffffff0063b5000000390000ffe79494deff000039000000bd6b00ffffffffffff63b5ff000000000000de9439ffffffffffffffffff6b bdff000000000000de9439ffffffffffffffffff9494deffffbdffffff3994e7000000000000ffb563ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffbdffff000063000000b56300ffffffffffff006bbd000000943900ffffdeffffffffffffe7ffff003994000000b56300ffffff ffffff006bbd000000943900ffffdeffffff3994de000000000000ffbd6bffffffffffffffffffbdffff000063000000b56300ffffffb5ffff00006b000000bd 6b00ffffffffffffffffffffffffffffffffffffdeffff946b94ffffdeffffffb5deff00006b000000ffbd6bffffff6bbdff000000000000de9439ffffffffff ffffffff9494deffffbdb5ffff00006b000000bd6b00ffffffbdffff000063000000b56300ffffffffffff006bbd000000390000ffde9494deff000039000000 b56300ffffffffffff6bbdff000000000000de9439ffffffffffffffffff9494deffffbdffffff006bbd000000390000ffde9494deff000039000000b56300ff ffffffffff006bbd000000000000ffb563ffffffffffffffffffffffffffffff63b5ff000000000000e79439ffffffffffffffffff9494e7ffffb5deffff9463 94ffffe7ffffffbddeff000063000000ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000006b 0000ffffb5ffffff0063b5000000390000ffe79494deff000039000000bd6b00ffffffffffff63b5ff000000000000de9439ffffffffffffffffff3994de0000 00000000ffb563ffffffffffffffffffdeffff003994000000943900ffffde3994de000000000000ffb563ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffbdffff000063000000b56300ffffffffffff006bbd000000943900ffffdeffffffffffffe7ffff003994000000b56300ffffffffffff00 6bbd000000943900ffffdeffffff3994de000000000000ffbd6bffffffffffffffffffbdffff000063000000b56300ffffffb5ffff00006b000000bd6b00ffff ffffffffffffffffffffffffffffffffdeffff946b94ffffdeffffffb5deff00006b000000ffbd6bffffff6bbdff000000000000de9439ffffffffffffffffff 9494deffffbdb5ffff00006b000000bd6b00ffffffbdffff000063000000b56300ffffffffffff006bbd000000390000ffde9494deff000039000000b56300ff ffffffffff6bbdff000000000000de9439ffffffffffffffffff9494deffffbdffffff006bbd000000390000ffde9494deff000039000000b56300ffffffffff ff006bbd000000000000ffb563ffffffffffffffffffffffffffffff63b5ff000000000000e79439ffffffffffffffffff9494e7ffffb5deffff946394ffffe7 ffffffbddeff000063000000ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd000000420000ffde9494e7ff00 0039000000bd6b00ffffffffffff6bbdff000000000000de9439ffffffffffffffffff006bbd000000390000ffe794ffffffffffffffffffffffffffffffffff ff3994de000000000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000944242ffffbd bdffff00006b000000390000ffe794ffffffffffff94deff000042000000e79442ffffffffffff006bbd000000390000ffe794ffffff4294e7000000000000ff bd6bffffffffffffffffff94deff000042000000bd6b00ffffffbdffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffff ff6bbdde000042000000420000ffde94ffffff006bbd000000390000ffe794ffffffffffffffffffffffffffffff94e7ff000039000000de9439ffffffbdffff 00006b000000bd6b00ffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff006bbd000000390000ffe794ffffffffffffff ffffffffffffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffe7ffff0039940000006b0000ffffbdffffffffffffffffffffff ffffffff006bbd000000420000ffde94ffffffffffffffffffffffffffffffffffffffffffffffff6bbde7000039000000390000ffe794ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd000000420000ffde9494e7ff0000390000 00bd6b00ffffffffffff6bbdff000000000000de9439ffffffffffffffffff3994de000000000000ffbd6bffffffffffffffffffffffffdeffff426b94000000 ffbd6b3994de000000000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000944242ffffbdbdffff00 006b000000390000ffe794ffffffffffff94deff000042000000e79442ffffffffffff006bbd000000390000ffe794ffffff4294e7000000000000ffbd6bffff ffffffffffffff94deff000042000000bd6b00ffffffbdffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdde 000042000000420000ffde94ffffff006bbd000000390000ffe794ffffffffffffffffffffffffffffff94e7ff000039000000de9439ffffffbdffff00006b00 0000bd6b00ffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff006bbd000000390000ffe794ffffffffffffffffffffff ffffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffe7ffff0039940000006b0000ffffbdffffffffffffffffffffffffffffff 006bbd000000420000ffde94ffffffffffffffffffffffffffffffffffffffffffffffff6bbde7000039000000390000ffe794ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff006bbd0000006b0000ffffb5ffffff0063b5000000390000ffde9494deff000039000000bd6b00ffffffffffff63b5ff000000000000e79439ffff ffffffffffffff006bbd000000000000000000000000000000000000000000ffbd6bffffff3994de000000000000ffb563ffffffffffffffffff3994de000000 000000000000000000000000de9439ffffffffffff006bbd0000006b000094b5b5ffbd9463b5ff00000039000094bd94de9463ffffffffffff94deff00003900 0000de9439ffffffffffff3994e7000000390000ffde94ffffff3994de000000000000ffbd6bffffffffffffffffff94e7ff000039000000de9439ffffffb5ff ff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffe7ffff003994000000000000390000deb563ffffffffffff006bbd000000000000 000000000000000000000000000000ffbd6b94deff000039000000e79439ffffffbdffff000063000000b56300ffffffffffff006bbd000000390000ffde9494 e7ff000039000000b56300ffffffffffff006bbd000000000000000000000000000000000000000000ffbd6bffffff006bbd000000390000ffde9494e7ff0000 39000000b56300ffffffb5ffff00006b000000943900ffffdeffffffffffffffffffffffffffffff0063b5000000000000000000000000000000000000000000 ffb563ffffffdeffff003994000000000000390000debd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff006bbd0000006b0000ffffb5ffffff0063b5000000390000ffde9494deff000039000000bd6b00ffffffffffff63b5ff000000000000e79439ffffffffffff ffffff3994e7000000000000ffb563ffffffffffffffffffffffffffffffffffffbddede393963393939000000000000ffb563ffffff3994de00000000000000 0000000000000000de9439ffffffffffff006bbd0000006b000094b5b5ffbd9463b5ff00000039000094bd94de9463ffffffffffff94deff000039000000de94 39ffffffffffff3994e7000000390000ffde94ffffff3994de000000000000ffbd6bffffffffffffffffff94e7ff000039000000de9439ffffffb5ffff00006b 000000bd6b00ffffffffffffffffffffffffffffffffffffffffffe7ffff003994000000000000390000deb563ffffffffffff006bbd00000000000000000000 0000000000000000000000ffbd6b94deff000039000000e79439ffffffbdffff000063000000b56300ffffffffffff006bbd000000390000ffde9494e7ff0000 39000000b56300ffffffffffff006bbd000000000000000000000000000000000000000000ffbd6bffffff006bbd000000390000ffde9494e7ff000039000000 b56300ffffffb5ffff00006b000000943900ffffdeffffffffffffffffffffffffffffff0063b5000000000000000000000000000000000000000000ffb563ff ffffdeffff003994000000000000390000debd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd0000004200 00ffde9494e7ff000039000000bd6b00ffffffffffff6bbdff000000000000de9439ffffffffffffffffff3994de0000006b0000ffffbdffffff94e7ff000039 420000ffde94ffffff3994de000000000000e79442ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b000000bd 6b00e7ffffbd9494006bbd000000944200deffde946b94ffffdeffffff94deff000042000000bd6b00ffffffffffff3994de000000390000ffe794ffffff4294 e7000000000000de9439ffffffffffffffffff94deff000042000000e79442ffffffbdffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffff ffffff006bbd0000000000006b4200ffdebdffffffffffffffffff3994de0000006b0000ffffbdffffff94e7ff000039420000ffde9494e7ff000039000000bd 6b00ffffffbdffff00006b000000bd6b00ffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff3994de0000006b0000ffff bdffffff94e7ff000039420000ffde94ffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffe7ffff003994000000943900ffffe7ffffff ffffffffffffffffffffffff4294e70000006b0000ffffbdffffff94deff000042390000ffe794ffffff006bbd0000000000006b3900ffe7bdffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff006bbd000000420000ffde94 94e7ff000039000000bd6b00ffffffffffff6bbdff000000000000de9439ffffffffffffffffff3994de000000000000e79442ffffffffffffffffffffffff6b 94de000042943900ffffe73994de000000000000ffbd6bffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b000000bd6b00e7ff ffbd9494006bbd000000944200deffde946b94ffffdeffffff94deff000042000000bd6b00ffffffffffff3994de000000390000ffe794ffffff4294e7000000 000000de9439ffffffffffffffffff94deff000042000000e79442ffffffbdffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffff00 6bbd0000000000006b4200ffdebdffffffffffffffffff3994de0000006b0000ffffbdffffff94e7ff000039420000ffde9494e7ff000039000000bd6b00ffff ffbdffff00006b000000bd6b00ffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff3994de0000006b0000ffffbdffffff 94e7ff000039420000ffde94ffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffe7ffff003994000000943900ffffe7ffffffffffffff ffffffffffffffff4294e70000006b0000ffffbdffffff94deff000042390000ffe794ffffff006bbd0000000000006b3900ffe7bdffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff0063b5000000390000ffe79494deff000039000000bd6b00ffffffffffff63b5ff000000 000000de9439ffffffffffffffffff6bbdff000000390000ffde94ffffff94deff000039943900ffffdeffffff3994e7000000000000b56300ffffff0063b594 3900ffffdeffffffffffffffffffffffffffffffffffffffffff63b5ff000000000000ffbd6bffffff3994e7000000000000de9439ffffff6394deffde94ffff ffe7ffff003994000000b56300ffffffffffff006bbd000000943900ffffdeffffff3994de000000000000bd6b00ffffff006bbd943900bdffde000063000000 b56300ffffffb5ffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffb5ffff00006b000000e7bd6bffffffbdffffb56363ffffffffffff6b bdff000000390000ffde94ffffff94deff000039943900ffffdedeffff003994000000bd6b00ffffff94e7ff000039000000b56300ffffffffffff006bbd0000 00390000ffde9494deff000039000000b56300ffffffffffff6bbdff000000390000ffde94ffffff94deff000039943900ffffe7ffffff006bbd000000390000 ffde9494deff000039000000b56300ffffffffffff3994e70000006b0000ffffb5bdffff0039636b0000ffdeb5ffffff63b5ff000000390000ffe794ffffff94 deff000039943900ffffdebdffff000063000000deb563ffffffb5ffffbd6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff006bbd0000006b0000ffffb5ffffff0063b5000000390000ffe79494deff000039000000bd6b00ffffffffffff63b5ff000000000000de 9439ffffffffffffffffff3994de000000000000b56300ffffff0063b5943900ffffde006bbd000000943900ffffde3994de000000000000ffb563ffffffffff ffffffffffffffffffffffffffffffffffffffffffff63b5ff000000000000ffbd6bffffff3994e7000000000000de9439ffffff6394deffde94ffffffe7ffff 003994000000b56300ffffffffffff006bbd000000943900ffffdeffffff3994de000000000000bd6b00ffffff006bbd943900bdffde000063000000b56300ff ffffb5ffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffb5ffff00006b000000e7bd6bffffffbdffffb56363ffffffffffff6bbdff0000 00390000ffde94ffffff94deff000039943900ffffdedeffff003994000000bd6b00ffffff94e7ff000039000000b56300ffffffffffff006bbd000000390000 ffde9494deff000039000000b56300ffffffffffff6bbdff000000390000ffde94ffffff94deff000039943900ffffe7ffffff006bbd000000390000ffde9494 deff000039000000b56300ffffffffffff3994e70000006b0000ffffb5bdffff0039636b0000ffdeb5ffffff63b5ff000000390000ffe794ffffff94deff0000 39943900ffffdebdffff000063000000deb563ffffffb5ffffbd6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff0039940000006b0000ffffbdffffff 006bbd000000000000de943994e7ff000039000000de9439ffffffffffff6bbdff000000000000de9439ffffffffffffffffffffffff426bbd000000bd6b00ff ffde4294e7000000ffbd6bffffffffffff3994de000000000000bd6b6bbddebd00006b6b0000ffffbdffffffffffffffffffffffffffffffffffffbddeff0000 6b0000006b0000ffffbdffffff3994de000000390000ffe794ffffff94e7ff94396bffffe7ffffff94e7ff0000396b0000ffdebdbde7ff00006b420000ffbd6b ffffffffffff4294e7000000000000bd6b6bbde7bd00006b6b0000ffffbd4294e70000006b0000ffffbd6bbde7000000000000bd6b00ffffffffffffffffffff ffffffffffffffffffffff006bbd6b0000ffffbdbde7ff003994bd6b00ffffffffffffffffff426bbd000000bd6b00ffffde4294e7000000ffbd6bffffffffff ff94deff0000426b0000ffe7bd6bbdff000000000000bd6b00ffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffffffffff 426bbd000000bd6b00ffffde4294e7000000ffbd6bffffffffffff006bbd000000000000e7944294deff000042000000e79442ffffffffffffbdffff00426b00 0000ffbd6b6bbdff000000390000ffe794ffffffffffff396bbd000000bd6b00ffffe73994de000000ffbd6bffffffffffff006bbd6b0000ffffbdbddeff0042 94bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffff0039940000006b0000ffffbdffffff006bbd00 0000000000de943994e7ff000039000000de9439ffffffffffff6bbdff000000000000de9439ffffffffffffffffff3994de000000000000bd6b6bbddebd0000 6b6b0000ffffbd6bbdff000000de9439ffffff006bbd000000390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffbddeff00006b000000 6b0000ffffbdffffff3994de000000390000ffe794ffffff94e7ff94396bffffe7ffffff94e7ff0000396b0000ffdebdbde7ff00006b420000ffbd6bffffffff ffff4294e7000000000000bd6b6bbde7bd00006b6b0000ffffbd4294e70000006b0000ffffbd6bbde7000000000000bd6b00ffffffffffffffffffffffffffff ffffffffffffff006bbd6b0000ffffbdbde7ff003994bd6b00ffffffffffffffffff426bbd000000bd6b00ffffde4294e7000000ffbd6bffffffffffff94deff 0000426b0000ffe7bd6bbdff000000000000bd6b00ffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffffffffff426bbd00 0000bd6b00ffffde4294e7000000ffbd6bffffffffffff006bbd000000000000e7944294deff000042000000e79442ffffffffffffbdffff00426b000000ffbd 6b6bbdff000000390000ffe794ffffffffffff396bbd000000bd6b00ffffe73994de000000ffbd6bffffffffffff006bbd6b0000ffffbdbddeff004294bd6b00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff3994de0000000000006b0000ffffb56bbdff00000000000039000094bd94003963000000943900ffffdeffffff94 e7ff000039000000000000000000000000de9439ffffffffffffffffff6bbdde000039000000390000debd6bffffffffffff94deff000039000000000000de94 396bbdde000039943900ffffdeffffffffffffffffffffffffffffffb5ffff00006b000000000000000000bd6b000063b5000000000000000000943900bdffde 000063000000943900ffffdeffffff94e7ff0039630000000000006b3900ffdeb5ffffffffffff94e7ff000039000000000000e7943963b5de000039943900ff ffe7ffffff6b94de00003900000094943900006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffbdffff003963000000633900bde7bdb563 63ffffffffffffffffffffffff6bbdde000039000000390000debd6bffffffffffffffffffffffff94deff00396b000000390000deb5636bbde7b56339ffffff 63b5ff000000000000390000dede94003994000000000000b56300ffffffffffffffffffffffff6bbde7000039000000390000e7bd6bffffffffffff63b5ff00 000000000039000094b59400396b000000943900ffffdeffffffffffffffffffdeffff396b94000000000000393900e7bd94ffffffffffffffffffffffff63b5 de000039000000390000deb563ffffffffffffffffffb5ffff00396b0000006b3900b5deb5bd6b6bffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff3994de0000000000006b0000ffffb56bbdff00000000000039000094bd94003963000000943900ffffdeffffff94e7ff0000 39000000000000000000000000de943994deff000039000000000000de94396bbde7000039943900ffffdeffffffb5deff39396b000000000000393900ffbd94 ffffffffffffffffffffffffffffffffffffffffffffffffb5ffff00006b000000000000000000bd6b000063b5000000000000000000943900bdffde00006300 0000943900ffffdeffffff94e7ff0039630000000000006b3900ffdeb5ffffffffffff94e7ff000039000000000000e7943963b5de000039943900ffffe7ffff ff6b94de00003900000094943900006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffbdffff003963000000633900bde7bdb56363ffffff ffffffffffffffffff6bbdde000039000000390000debd6bffffffffffffffffffffffff94deff00396b000000390000deb5636bbde7b56339ffffff63b5ff00 0000000000390000dede94003994000000000000b56300ffffffffffffffffffffffff6bbde7000039000000390000e7bd6bffffffffffff63b5ff0000000000 0039000094b59400396b000000943900ffffdeffffffffffffffffffdeffff396b94000000000000393900e7bd94ffffffffffffffffffffffff63b5de000039 000000390000deb563ffffffffffffffffffb5ffff00396b0000006b3900b5deb5bd6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00396b000000de9439ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b000000bd6b00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00396b000000de9439ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b000000bd6b00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000039bd6b39ffffdeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffe7ffff003994de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffb5ffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000039bd6b39ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffe7ffff003994de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffb5ffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff006bbd000000390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ffde946bffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039 000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd 000000390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ffde946bffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039000000bd 6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000039bd6b39ffffdeffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039000000000000bd6b00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000039bd6b39ffffdeffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff94e7ff000039000000000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d69494946b6b6b6363637373739c9c9cd6d6d6ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd6d6d69494946b6b6b6363636b6b6b949494cececeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffcecece5a5a5adededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c63131 31000000000000000000000000000000000000000000292929a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece3939390000000000000000 00000000000000000000000000292929a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd212121737373f7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000 313131d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadadefefefffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000313131d6d6d6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f75a5a5a292929dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484 000000000000000000000000000000000000000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff737373737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000 000000000000000000000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c1010 10c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd00000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494 313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc6c6c600000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c101010cececeffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff212121000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adadadffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad101010ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff8c8c8c101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc6c6c6000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363292929f7f7f7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff313131000000000000000000000000000000212121848484cececeefefefffffffffffffe7e7e7b5b5b56b6b6b101010000000000000000000 000000292929f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000bdbdbdffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939 39000000000000000000000000000000212121848484cececeefefefffffffffffffe7e7e7b5b5b5737373101010000000000000000000000000292929f7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff3131315a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef ef292929000000181818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000000000000000000000000000848484ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b080808000000000000000000737373ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffe7e7e70000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede0000000000000000000000000000007b7b7bffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff7b7b7b080808000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000 00adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000005a5a5affffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff949494000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffdedede292929000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f70000007b7b7bffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff949494000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede29292900 0000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c101010efefefffffffffffffffffffffffffffffffffffffffffff ffffffffffff4a4a4a000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000000000000000737373ff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000000000424242ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000000000006b6b6bffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000000000393939ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff212121525252ffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000d6d6d65a5a5a424242ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff292929000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f7313131000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080842 4242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff313131000000000000101010f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffff7f7f7393939000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000a5a5a5ffffffffffffffffffff ffffffffffffffffffffffffffff7b7b7b080808ffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000000000 00737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef212121000000 4a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff5252520808082121214242426363638c8c8cbdbdbdefefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808212121ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000000000737373ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef212121000000424242ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff313131101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffb5b5b5000000efefefffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f79494941818180000000000 00000000000000000000393939f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff181818000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0000005252 52ffffffffffffffffffffffffffffffffffffffffffffffff101010b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff6363630000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494942121210000000000000000000000004a4a4affffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000efefefffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000101010 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b00 0000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000a5a5a5ffffffffffffffffffffffffffffffffffffffffff7b7b7b 636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000313131ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808181818ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f78c8c8c0808080000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffff212121f7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff292929000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7101010101010ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffbdbdbd000000101010efefefffffffffffffffffffffffffffffffffffffefefef212121ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0808080000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff848484000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a000000000000181818f7 f7f7ffffffffffffffffffffffffffffffffffff3131319c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000bdbdbdffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08 0808000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff848484000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000393939ffffffffffffffffffffffffff ffffffffffffffff8c8c8cd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000006b6b6bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808636363ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c080808000000949494ffffffffffffffffffffffffffffffffffff7b7b7b424242ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff292929000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000006b6b6bffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef1010105a5a5affffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffcecece0000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff393939000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff636363101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc6c6c6101010292929ffffffffffffffffffffffffffffffffffffc6c6c6080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929290000009494 94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff3939390000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff636363080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000007373 73ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000636363ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce cece000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000c6c6c6ffffffffffffffffffffffffffffff e7e7e7000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000636363ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000cececeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff949494000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121949494ffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7 a5a5a57b7b7b9c9c9ccececef7f7f7000000737373ffffffffffffffffffffffffffffffffffff000000848484ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 2929290000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818000000000000313131efef efffffffa5a5a5080808080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff9494940000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121218c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 6b6b6b000000000000000000737373d6d6d6ffffffffffffffffffefefefa5a5a55a5a5a1010101818188c8c8cffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c600 0000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece2929295a5a5affffffffffffffffffffffffffffffffff ffffffffffffffffffff6b6b6b5a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000000000000000000000080808000000313131ffffffffffffff ffffffffffffffffffffff0000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000636363ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffe7e7e71818180000000000000000000000004242429c9c9c000000000000000000080808cececeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000393939ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff737373525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100000000000000000000000008080810101008080800 0000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808181818ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffbdbdbd1010100000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffadadad181818ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffdedede000000000000000000000000000000000000000000181818ffffffffffffffffffffffffffffffffffff000000181818ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff94b5de39396b000039000000000000390000946339ffdebdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff3131310000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000 000000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff080808181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5101010ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffcecece000000000000000000000000000000000000000000000000000000000000000000000000000000393939ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff525252000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffcecece101010000000000000000000000000636363ffffff ffffffffffffffffffffffffffffffffffffc6c6c6000000e7e7e7ffffffffffffffffffffffffffffffffffffbdbdbd636363efefefffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0000000000000000000000000000000000000000000000 00ffffffffffffffffffffffffffffffffffff000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000042946b00ffffe7ffffffffffffdeffff6b94 e76b0000ffffbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef efe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7efef efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939390000004a4a4affffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b00000000000000000000000000000000000000000000000000000000000000000000000084 8484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252 52000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffcecece000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000000000000000000000 00000000000000000000000000000000000000000000000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000b5b5b5ffffffffffffffffffffffff ffffffffffffffffffffffff292929000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffe7e7e7000000c6c6c6ff ffffffffffffffffffffffffffff9c9c9c000000000000292929efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd6d6d6000000000000000000000000000000000000000000101010ffffffffffffffffffffffffffffffffffff000000000000cecece ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffbdffff000063de9439ffffffffffffffffffffffff94deff000039de9439ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000001010103939 396b6b6b9c9c9cdededeffffffffffffffffffffffffffffffffffffffffffffffff3131310000000000002121214242426b6b6b949494d6d6d6ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000808083939396b6b 6ba5a5a5d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffff3131310000000808082121214242426b6b6b9c9c9ccececeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff313131000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6 d6a5a5a57373735252523939392929291010100808080000000000000000000808080808081010101818182929293131314a4a4a5a5a5a7b7b7b949494bdbdbd dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a 4a4a000000000000000000525252a5a5a5000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000b5b5b5ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000bdbdbdffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7313131000000000000000000000000000000000000000000000000000000000000000000000000 adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7f7f7080808737373ffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a00000000000000000000000000 00004a4a4af7f7f7fffffffffffffffffffffffffffffffffffff7f7f70000009c9c9cffffffffffffffffffffffff9c9c9c0000000000000000000000002929 29f7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000000000000000000000 000000000000292929ffffffffffffffffffffffffffffffffffff000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff00006b000000000000 000000000000000000000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b51818180000000000000000000000002121216b6b6bd6d6d6ffffffffffffffffff ffffffffffffffffffadadad393939000000000000000000000000000000393939f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5212121000000000000000000000000181818737373d6d6d6ffffffffffffffffffffffff ffffffffffffb5b5b5313131000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000393939ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffcecece6b6b6b181818000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000001010104a4a4a848484cececeffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c0000000000000000 00949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0808087b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f70000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7 5a5a5a0000000000000000000000000000000000000000000000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929ffffffff fffffffffffffffffffffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000007b7b7bffffffffffffffffffd6d6d6000000000000000000000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffff00 0000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff00000000000000000000 0000ffb5636bbdff000000000000000000000000ffb563ffffffdeffff396bbd000000000000393900debd6bffffffffffff94deff0000390000000000000000 00ffbd6bffffffffffff63b5ff00000000000000000063390000396b000000000000000000ffbd6b3994de0000000000000000009439006bbde7000000000000 0000006b3900003963000000000000000000ffb563bdffff000063000000000000000000000000000000000000000000de9439ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff6b6b6b0000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffb5b5b529292900000000000000 0000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f7f7f7737373000000000000000000000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffb5b5b531313100000000000000000000 0000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000001818186b6b6bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000737373ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c64a4a4a08080800000000000000000008080842424273 73731818180000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72121 210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000525252ffffffffffffffffffb5b5b5000000000000000000 000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b00000000 00000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffff000000000000949494ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000de9439ffffffdeffff004294000000420000debd6bffffffdeffff0042 94000000420000debd6bffffff94deffffbd94ffffffffffff3994de000000000000ffbd6bffffffffffffffffffffffff006bbd000000390000ffe79494deff 000042000000bd6b00ffffffe7ffff003994000000390000ffe794ffffff006bbd000000420000ffde9494e7ff000039000000bd6b00ffffffdeffff00429400 0000000000000000000000000000420000de946bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd21212100000000000000000000000008 0808efefefffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818000000000000000000c6c6c6ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6212121000000000000000000000000080808ef efefffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5101010000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b00 0000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffffffffffff ffdededeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffdedede18181800000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000525252d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd6d6d6000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f7d6d6d6bdbdbdcececef7f7f7ffffffffffffa5a5a50000006b6b6bffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff4a4a4a7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff080808424242ffffffffffffffffffffffff6363630000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000000000000000000000080808f7f7f7ffffffffffffffffffffff ffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63b5 ff000000000000de9439ffffff006bbd000000000000ffb563ffffffffffff6bbdff000000000000de9439ffffffffffffffffff9494deffffbdffffff3994e7 000000000000ffb563ffffffffffffffffffffffff006bbd000000390000ffde9494e7ff000039000000b56300ffffffffffff006bbd0000006b0000ffffb5ff ffff0063b5000000390000ffde9494deff000039000000bd6b00ffffffffffff94deff94396bffffdeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffefefef4a4a4a0000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffff ffffffffefefef636363000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f74242420000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f7636363000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd6d6d6101010000000000000313131efefefffffffa5a5a5080808080808c6c6c6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808087b7b7bffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a7b7b7bffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 080808393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff737373c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d67b7b7bffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808313131ffffffffffffffffffffffffff ffff4a4a4a000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff2121210000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000bd6b394294e7000000000000de9439ffffffffffff ffffff006bbd000000390000ffe794ffffffffffffffffffffffffffffffffffff3994de000000000000ffbd6bffffffffffffffffffffffff006bbd00000039 0000ffe79494deff000042000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffff006bbd000000420000ffde9494e7ff000039000000bd6b00ffff ffffffffe7ffff6b94bd0000420000000000006b3939ffe7bdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373 73000000000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5080808000000bdbdbdffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000 00000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad101010000000bdbdbdffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffcecece000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818000000000000000000000000 4242429c9c9c080808000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000424242f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010292929ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000292929ffffffffffffffffffffffffffffffffffff636363636363ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000000000424242ffffffffffffffffff ffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff63b5ff000000000000393900000000000000943900ffffe7ffffffffffffffffff006bbd000000000000000000000000000000000000000000ff bd6bffffff3994de000000000000ffb563ffffffffffffffffffffffff006bbd000000390000ffde9494deff000039000000b56300ffffffffffff006bbd0000 006b0000ffffb5ffffff0063b5000000390000ffe79494deff000039000000bd6b00ffffffdeffff003994000000943900ffffde63b5de000000390000ffde94 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000bdbdbdffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffcecece080808525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000bdbdbdffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc6c6c6080808525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000004a4a4affffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000000000000000000000000000000000000000181818efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff5252520000000000000000000000000000000000000000000000000000000000000000000808082121213131314242424a4a4a5252525a5a5a5252525a5a5a 525252525252424242393939292929212121000000000000000000000000000000000000000000000000000000000000000000000000000000000000313131f7 f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000181818ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffdedede949494adadadffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000de943994e7ff390039ffbd6bff ffffffffffffffffffffff3994de0000006b0000ffffbdffffff94e7ff000039420000ffde94ffffff3994de000000000000e79442ffffffffffffffffffffff ff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffff006bbd000000420000ffde9494e7ff000039 000000bd6b00ffffff94deff000042000000e79442ffffffbdffff00006b000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff5a5a5a000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94949400 0000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff5a5a5a0000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494080808ef efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff7b7b7b0000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b00000000000000 0000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000000000000000000000001818185a5a5a 9c9c9ccececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefd6d6d6ad adad8c8c8c525252212121000000000000000000000000000000000000000000000000424242ffffffffffffd6d6d6737373313131101010080808393939cece ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000181818ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000080808dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff63b5ff000000000000de9439ffffffbdffff000063ffbd6bffffffffffffffffff6bbdff000000390000ffde94ffffff94de ff000039943900ffffdeffffff3994e7000000000000b56300ffffff0063b5943900ffffde006bbd000000390000ffde9494e7ff000039000000b56300ffffff ffffff006bbd0000006b0000ffffb5ffffff0063b5000000390000ffde9494deff000039000000bd6b00ffffff94e7ff000039000000b56300ffffff94deff00 0039000000bd6b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7292929000000181818ffffffff ffffffffffffffffffffffffffffffffffdedede6b6b6b5a5a5a737373b5b5b5bdbdbd0000009c9c9cffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000181818ffffffffffffff ffffffffffffffffffffffffffffd6d6d66b6b6b525252737373adadadc6c6c60000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef08080800000000000063 6363ffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252a5a5a50000000000000000000000000000008484 84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff181818000000000000000000000000313131b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e78c8c8c3939390000000000000000 000000000000000000008484845a5a5a000000000000000000000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc6c6c6000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000 0000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000de9439ffff ffffffff6bbdff390039e7bd6bffffffffffffffffff426bbd000000bd6b00ffffde4294e7000000ffbd6bffffffffffff3994de000000000000bd6b6bbddebd 00006b6b0000ffffbd006bbd000000000000e7944294deff000042000000e79442ffffffe7ffff0039940000006b0000ffffbdffffff006bbd000000000000de 943994e7ff000039000000de9439ffffffdeffff004294000000944200ffffde6bbde7000000420000ffbd6bffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc6c6c6080808000000d6d6d6ffffffffffffffffffffffffffffffffffff1010100000000000000000 000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffcecece000000000000cececefffffffffffffffffffffffffffffff7f7f71818180000000000000000000000 00000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000424242dededeffffffffffffffffffffffffffffffffffffffff fff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000808088c8c8cffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d65a5a5a0808080000000000000000000808087b7b7b7b7b7b5a5a5a292929000000 000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000001010106b6b6b ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000000000000000313131efefefffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff63b5ff000000000000e79439ffffff6bbdff000000000000000000de9439ffffffffffffffffff6bbdde 000039000000390000debd6bffffffffffff94deff000039000000000000de94396bbdde00003994390063b5de00000000000039000094b59400396b00000094 3900ffffdeffffff3994de0000000000006b0000ffffb56bbdff00000000000039000094bd94003963000000943900ffffe7ffffffffffffdeffff396bbd0000 39000000000000000000000000000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252 52000000848484ffffffffffffffffffffffffffffffadadad000000000000000000000000000000000000000000393939cececeffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000 00848484ffffffffffffffffffffffffffffffb5b5b50000000000000000000000000000000000000000004a4a4acececeffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefef ef212121000000000000000000080808737373f7f7f7fffffffffffffffffffffffffffffffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c8c000000 737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff393939000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffcecece393939000000000000000000737373ffffffffffffffffffefefef8c8c8c313131000000000000000000adadadffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffadadad000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff6b6b6b000000000000000000000000000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000 000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000393939ffffffffffffffffffffffffffffffa5a5a5000000 000000000000000000000000000000000000313131000000424242b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000393939ffffffffffffffffffffffffffffffa5a5a5000000000000 000000000000000000000000000000393939000000393939b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60808080000000000000000000000000808086b6b6bd6d6d6 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000313131ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000101010ffffffff ffffffffffffffffffffffffffffb5b5b5212121000000080808b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e700000000 00000000000000000000004a4a4aa5a5a5636363737373bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad101010848484dededeadadad212121000000424242ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63b5ff000000000000de9439ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff6bbdff000039bd6b39ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff424242000000ffffffffffffffffffffffffffffffb5b5b50000000000000000000000000000000000000000005252525a5a5a00000000 00002121219c9c9cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff393939080808f7f7f7ffffffffffffffffffffffffb5b5b50000000000000000000000000000000000000000005a5a5a84848410101000000031 3131b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff9494940000000000000000000000000000000000000000002929298c8c8cdededeffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000009c9c9cffffffffffffffffffffffffffffffffffffffffff6b6b6b0000000000 00949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6bd6d6d6e7e7e77373730000000000000000000000000000000000007373 73ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f74a4a4a000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff6bbdff000000000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd000000390000 ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000c6c6c6ffffffffffffffffffff ffffdedede000000000000000000000000000000000000000000737373ffffffefefef8484841010100000001818188c8c8cffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000c6c6c6ffffffffffffffffffffffffde dede000000000000000000000000000000000000000000737373ffffffefefef6b6b6b0000000000002121214a4a4a2121211010104a4a4ae7e7e7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c08080800000000000000 00000000000000000000000000000000003131318c8c8ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede 0000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73939394a4a4af7f7f7ffffffff ffffffffffdededee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363 63000000525252ffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0808080000003939399c9c9cb5b5b5c6c6c6ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff6b6b6b000000000000000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff6363630000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000000000e79439ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000039bd6b39ffffdeffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f70000008c8c8cffffffffffffffffffffffffffffff1010100000000000000000000000000000000000009c9c 9cffffffffffffffffffcecece1818180000000000001010108c8c8cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7080808848484ffffffffffffffffffffffffffffff1010100000000000000000000000000000000000009c9c9cffff ffffffffffffffcecece181818000000000000000000000000000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b51818180000000000000000000000000000000000000000000000000000000808089c9c 9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121218c8c8cffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd6d6d6181818000000000000313131efefefffffffa5a5a5080808080808c6c6c6ffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121080808ffffffffffffffffffffffffffffffffffffffffff ffffffffffffadadad080808000000000000000000080808393939737373dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6 c6c6c6c6c6cececee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000004a4a4a adadad8484840000000000007373735a5a5a080808101010848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252080808cececeffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff181818000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252524a4a4affff ffffffffffffffffffffffffff525252000000000000000000000000000000000000dededeffffffffffffffffffffffffdedede181818000000080808000000 1818188c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a525252ffffffffff ffffffffffffffffffff5a5a5a000000000000000000000000000000000000dededefffffffffffffffffffffffff7f7f7424242000000000000000000000000 000000181818bdbdbd8484847b7b7bb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef636363000000000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff737373a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e71818180000000000000000 00000000424242949494000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffadadad000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b508080800000000000000000000000000 00000808089c9c9cffffffffffffffffffffffffffffffffffffb5b5b55252523131312929290808080000000000000000002121214242427b7b7bb5b5b5f7f7 f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede737373ffffffffffffffffff949494000000000000000000000000000000080808ef efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff313131292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000848484 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c181818ffffffffffffffffffffffffffffffadadad000000000000000000000000 000000313131ffffffffffffffffffffffffffffffffffffcecece0808083939399494941010100000001818186b6b6bbdbdbdf7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c101010ffffffffffffffffffffffffffffffadadad000000000000000000000000000000 313131ffffffffffffffffffffffffffffffffffffffffff5252524a4a4ad6d6d6949494000000000000000000000000000000000000636363ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede6b6b6b181818000000000000000000000000 000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000000000000000000000000000000000000000101010efefef ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929b5b5b5ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffa5a5a5000000000000000000000000000000000000000000848484ffffffffffffffffffe7e7e74a4a4a0000 000000000000000000000000000000001010107b7b7ba5a5a56b6b6b292929000000080808525252a5a5a5f7f7f7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff4242420000000000000000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7cecece4a4a4a000000737373ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff efefef000000f7f7f7ffffffffffffffffffffffffffffff212121000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffff7b 7b7b000000b5b5b5f7f7f7737373080808000000080808000000292929636363b5b5b5f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7 000000efefefffffffffffffffffffffffffffffff181818000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff8c8c8c000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff9c9c9c080808000000000000000000000000000000000000212121ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000 000000000000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad0808 08000000000000181818080808000000000000a5a5a5ffffffd6d6d6181818000000000000000000000000000000000000000000000000000000525252ffffff ffffffefefef9494942929290000000808086b6b6be7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808080808bdbd bdc6c6c6080808000000adadadffffffffffffffffffffffffffffffc6c6c66b6b6b6b6b6ba5a5a5ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdede de080808101010101010101010080808000000000000000000000000000000000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6 d6d60000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131c6c6c6ffffffffffffffffffffffffffffffbdbdbd08 08080000000000007b7b7bfffffffffffffffffffffffffffffffffffffffffffffffff7f7f7101010292929ffffffffffffcecece3939390000000808085252 52393939000000080808525252bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929cececeffffffffffffffffffffffffffffffbdbdbd08080800 00000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000000000000000000000000000 00000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08080800000000 0000000000000000000000000000000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252adadad00000000000000000000000000 0000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd636363cececeffffffffffff8484840000000808088c8c8c101010 000000000000000000000000000000000000000000000000000000000000000000424242f7f7f7ffffffffffffffffffbdbdbd393939000000080808636363e7 e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494adadadffffffffffffcecece101010181818ffffffffffffffffffffffff7b7b7b 000000000000000000000000212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808000000000000000000000000000000000000000000000000 000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939393939ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffe7e7e7b5b5b5d6d6d6ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff848484000000949494ffffffffffffffffff8c8c8c000000000000525252dedede7b7b7b181818000000292929a5a5a5ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffefefefb5b5b5dededeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffbdbdbd000000212121b5b5b5b5b5b53939390000002929297373731818180000002121214a4a4affffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000000000000000000000000000000000000000393939ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff73737300000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000005a5a5affffffffffffffffffffffffffffffb5b5b52121210000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffbdbdbd000000a5a5a5ffffffffffffadadad000000000000000000000000000000000000080808b5b5b5ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff737373000000000000000000000000000000000000000000000000000000000000000000d6d6d6ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffbdbdbd000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000080808efefefffffffffffff ffffffcecece181818000000313131efefeff7f7f78c8c8c080808000000292929cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8cdedede ffffffffffffefefef181818000000000000000000000000000000000000393939ffffffffffffffffffffffffffffffefefefdededef7f7f7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff8c8c8c000000000000000000000000000000000000212121dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f77b7b7be7e7e7ffffffffffffffffff8c8c 8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff39 3939000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffff ffffffff6b6b6b000000000000424242e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242424242ffffffff ffff181818000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18181800000008080818181818181829 29292929293939395252527b7b7bbdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5adededeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff313131000000525252ffffffffffffffffffffffffefefef313131000000393939ffffffffffffe7e7e752 5252000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b500000000000000000000000000000000 0000000000737373ffffffffffffe7e7e74a4a4a0000000000000808086b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000000000000000525252f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808000000080808525252080808848484fffffffffffff7f7 f7d6d6d69c9c9c424242000000000000000000101010ffffffffffffffffffffffffffffffffffffffffffbdbdbd101010000000181818cececeffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000efefef9c9c9c0000000000000000000000000000000000000000000000000000 000000003939393131313939395a5a5aadadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffe7e7e7101010000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b00000000 0000adadadfffffffffffffffffffffffff7f7f7292929000000525252ffffffffffffffffffa5a5a5080808000000424242efefefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff4242420000006b6b6bf7f7f7dedede9c9c9c080808000000d6d6d6dedede1010100000000000000000000000 00000000292929f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffdedede1818180000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7f7f7848484636363949494f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc6c6c68c8c8ce7e7e7ffffff848484080808d6d6d6ffffffffffffffffffffffffffffffcecece424242000000000000949494ffffff ffffffffffffffffffffffffffffffffffffdedede292929000000080808a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6 d6000000a5a5a5424242000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000181818a5a5a5ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60808 08000000424242efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000000000181818e7e7e7ffffffffffffffffffffffffcecece0000000000 00bdbdbdffffffffffffffffffd6d6d6292929000000313131efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e77b7b7bffff ffffffffffffffffffffd6d6d6080808636363313131000000000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6101010000000181818a5 a5a5ffffffffffffffffffffffffffffffc6c6c6dededec6c6c6e7e7e7fffffffffffffffffffffffff7f7f7313131000000000000000000212121d6d6d6ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242 212121efefefffffffffffffffffffffffffffffffffffff8c8c8c000000292929ffffffffffffffffffffffffffffffffffffffffffffffffefefef39393900 0000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000737373000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818000000212121cececeffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd6d6d6000000000000000000313131efefeffffffffffffffffffff7f7f70000000000005a5a5affffffffffffffffffffffffefefef292929000000292929 efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000000000 000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d62121210000000000001010104242423939392929290000000000000000000000000000 00636363ffffffffffffffffff636363000000000000000000000000000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010292929efefefffffffffffffffffffffffffffffffffffffa5 a5a5000000e7e7e7fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7393939000000080808b5b5b5ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000808080000000000000808087b7b7be7e7e78484840000000000000000000000000000000000000000007b7b7bbdbdbda5a5a56b 6b6b0808080000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffefefef393939000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 6bbdff390000ffe794ffffffffffffffffffffffff3994de944200ffffdeffffffffffffffffffffffff4294e7000000000000000000944200ffffdeffffff6b 94de000042000000bd6b42ffffde6bbdff0000000000000000006b420000396b000000000000000000ffbd6bffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000000000000000000000292929c6c6c6ffffffffffff 949494000000000000212121ffffffffffffffffffffffffffffffefefef313131000000393939f7f7f7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000000000000000000000000000000000000000000000000000313131ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef4a4a4a0000000000000000000000000000000000000000000000000000000000000000006b6b6bffffffdedede000000000000000000000000000000 000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffcecece080808313131e7e7e7ffffffffffffffffffffffffffffffffffff212121a5a5a5ffffffffffffffffffffffffffffffffffffffff ffffffffffffffefefef292929000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000000000000000009c9c9cffffffff ffff393939000000000000212121bdbdbd4a4a4a000000000000313131fffffffffffffffffff7f7f74a4a4a000000bdbdbdffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b080808000000313131ce ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0063b5000000de9439ffffffffffffffffffdeffff003994390000ff e794ffffffffffffffffffffffffdeffff003994000000390000ffde94ffffff94deff000039000000bd6b0094deffe7946bffffff006bbd000000390000ffde 9494deff000039000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000525252080808000000000000101010181818000000000000000000181818ffffffffffffffffffffffffffffffff ffffe7e7e71818180000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c6c6c6212121636363ffffffffffffffffffffffffffffff9c9c9ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d600000000 0000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c101010000000000000000000000000000000 000000000000000000000000000000b5b5b57373730000000000000000000000000000000000000000000000006b6b6bffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000101010a5a5a5ffffffffff ffffffffffffff9c9c9c000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede101010000000292929f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff101010000000000000101010ffffffffffffffffff101010000000080808e7e7e7ffffffffffff9494940808080000 00adadadffffffffffffffffffffffff393939292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffcecece313131000000000000737373ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffbdffff00006b000000944200ffffdeffffffffffff94e7ff000039000000de9439ffffffffffffffffffffffffffffff006bbd0000006b0000ffff bdffffff6bbdff000000000000de9439ffffffffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18181800000073737394949400000000 0000000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffcecece080808000000525252f7f7f7ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5080808000000000000525252fffffffffffff7f7f739393900000018 1818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffdedede0000000000000000000000005a5a5a7b7b7b0808080000000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7f7f784848421212100000000000000000000000029292984848473737308080818181821212100000000000000 0000000000000000000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000002121216363636b6b6b4242420000000000006b6b6bffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffadadad000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000000000007373 73ffffffffffffffffff1818180000008c8c8cffffffffffffffffffffffffbdbdbd080808393939ffffffffffffffffffffffffd6d6d6000000adadadffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff292929000000000000212121636363848484adadadd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994e7000000000000000000ffbd6bffffffffffff3994 de000000000000943900ffffdeffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff63b5ff000000000000e79439ffffffffffffffffff006bbd 000000390000ffde9494e7ff000039000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff101010000000525252ffffff9c9c9c080808000000000000000000000000000000a5a5a5ffffffffffffffff ffffffffffffffffffffffffffffffff949494000000000000212121737373292929313131848484f7f7f7ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffcecece0808080000000000000000000000005a5a5affffff313131000000000000000000101010dededeffffffffffffffffffffffffffffffffffffffff ffefefef000000000000000000737373ffffffffffff313131000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7 e7e7c6c6c6dededebdbdbdffffffffffffffffff7b7b7b0000000000000000000000004a4a4acececeffffffe7e7e79494940808080000000000008c8c8c9c9c 9c3939391818185a5a5aefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484 000000000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a00 0000000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000adadadffffffffffffffffff393939000000e7e7e7ffffffffffffffffff ffffffffffff848484000000d6d6d6ffffffffffffffffffffffff393939393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000080808000000000000000000000000000000 000000292929636363adadadefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffe7ffff0039940000000000006b6b42bd6b39ffffffdeffff004294000000420000003939ffbd6bffffffffffffffffffffffff006bbd 0000006b0000ffffbdffffff6bbdff000000000000de9439ffffffffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000003131 31ffffffffffffd6d6d6636363181818080808181818848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000 000000000000000000000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929290000000000000000000000000000000000002929290000 00000000000000000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffff101010000000101010ffffffffffffffffff949494000000 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60000000000 00000000292929ffffffffffffffffffffffffffffffd6d6d6212121000000000000000000000000000000000000313131efefefffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5101010000000000000000000000000000000a5a5a5ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808000000313131ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808 000000000000dededeffffffffffffffffff8c8c8c181818ffffffffffffffffffffffffffffffffffffefefef000000949494ffffffffffffffffffffffff84 8484000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff1010102929299c9c9c1010100000006b6b6bb5b5b58484843939390808080000000808084a4a4abdbdbdffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63b5ff0000000000006b0000deffb5393994 ffde9494e7ff000039000000b563006bbde7b56300ffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff63b5ff000000000000de9439ffffffff ffffffffff006bbd000000390000ffde9494deff000039000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f71818180000000000000000000000000000000000005a5a5affffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff4a4a4a000000000000000000000000000000525252080808000000000000000000000000000000101010d6d6d6ffffffffffffffffff ffffffffffffffffffffffff3131310000005a5a5afffffffffffffffffff7f7f7101010000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000000000080808ffffffffffffffffffffffffffffffffffffe7e7e7 2929290000000000000000000000000000000000004a4a4afffffff7f7f7e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f78484843131310808081818187b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff7b7b7b000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000f7f7f7ffffffffffffffffffdedede080808f7f7f7ff ffffffffffffffffffffffffffffefefef000000525252ffffffffffffffffffffffffbdbdbd0000008c8c8cffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000d6d6d6cecece18 18180000006b6b6bfffffffffffff7f7f7a5a5a5313131000000000000424242dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff006bbd000000000000bd6b00ffffff3994dee794423994de000000000000ffbd6bbdffff6b006bffffbdffffffff ffffffffff006bbd0000006b0000ffffbdffffff6bbdff000000000000de9439ffffffffffffffffff006bbd000000390000ffe79494deff000042000000bd6b 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 212121000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd6d6d6080808000000000000000000181818101010000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121000000000000000000737373 ffffff949494000000000000000000000000292929dededeffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000008c8c8cffffffffffffff ffffffffff8c8c8c000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff efefef000000000000000000737373fffffffffffffffffffffffffffffffffffffffffff7f7f75a5a5a18181839393963636329292900000000000029292900 0000000000181818b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000000000004a4a4affffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000000000ffffffffffffffffffffffffffffff4a4a4a737373ffffffffffffffffffffffffffffffadadad000000393939ffffffffff ffffffffffffffdedede000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000848484ffffffdedede2121210000006b6b6bffffffffffffffffffffffffb5b5b52121 21000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94deff000039000000390000ff de94ffffffbdffff63396300396b0000006b0000ffffb5ffffff0063b5ffbd6bffffffffffffdeffff0039940000006b0000ffffb5ffffff63b5ff0000000000 00e79439ffffffffffffffffff006bbd000000000000de943994e7ff000039000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000080808ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece313131181818b5b5b5fffffff7f7f73131311010 10f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffe7e7e7212121000000636363ffffffffffffffffff6b6b6b000000000000212121e7e7e7ffffffffffffff ffffffffffffffffffffffffffffffffffffffff9c9c9c000000a5a5a5ffffffffffffffffffffffffffffff7373739c9c9cffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000000000efefefffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffdedede8c8c8c000000000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000181818ffffffffffffffffffffffffffff ffd6d6d60000004a4a4abdbdbdf7f7f7efefefadadad101010000000313131fffffffffffffffffffffffff7f7f7000000101010ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010 10424242ffffffffffffdedede1818180000007b7b7bffffffffffffffffffffffffefefef313131000000181818f7f7f7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff3994de000000000000944200ffffdeffffffffffff006bbd000000000000bd6b00ffffffffffff6bbd ffbd6b00ffffffffffff4294e70000000000006b0000ffffbd94deff000042000000000000000000000000de9439ffffff006bbd000000390000bdbd9400396b 000000943900ffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff212121000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000636363ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef73 7373ffffffcecece2929296b6b6bffffff737373080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000adad adffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffe7e7e7000000000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff292929000000000000000000000000000000000000cececeffffffe7e7e7c6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff313131181818101010101010080808080808000000000000000000000000000000000000a5 a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000212121ffffffffffffffffffffffffffffffffffff7b7b7b000000000000000000000000000000000000000000 5a5a5affffffffffffffffffffffffffffff000000000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000f7f7f7ffffffffffffdedede181818000000949494ffffff ffffffffffffffffffd6d6d6000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff0039940000 00000000de9439ffffffffffffffffff0063b5000000000000ffbd6bffffffffffffb5ffff6b006bffffb5ffffffffffffffffffffffffffffffffffffffffff b5ffff00396b000000de9439ffffffffffffffffff006bbd000000390000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff4a4a4a000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808000000000000525252ffffffefefefffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121949494ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000393939ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000424242e7e7e7efefef525252000000101010393939 0000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10 10100000000000000000000000000000000000000000000000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000212121ffffffffffff ffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffff000000000000adadadff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffadadad000000adadadffffffffffffffffffcecece080808000000a5a5a5ffffffffffffffffffefefef0000000000004a4a4affffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff0000000000006b0000ffffbdffffffffffffbdffff00006b0000006b0000ffffbd ffffffffffffffffff3994deffbd6bffffffffffff6bbdff000042bd6b39ffffe7ffffffffffffdeffff004294de9439ffffffffffffffffff006bbd00000039 0000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff292929000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000080808848484f7f7f7ffffffffffffef efef9c9c9c636363efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd6d6d61010100000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff848484737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffe7e7e70000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc6c6c6f7f7f7ffffffffffffffffff2929290000000000000000000000000000000000005a5a5affffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0808080000000000000000000000000000000000000000000000 000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff080808000000212121ffffffffffffffffffffffffffffffffffffffffffffffff52525200000000000000 0000000000393939ffffffffffffffffffffffffffffffffffff080808000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010525252ffffffffffffffffffffffff4a 4a4a0000000000007b7b7be7e7e7dedede424242000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbde7ff 000063000000000000bd6b00ffffffffffffdeffff006bbd000000000000b56300ffffffffffffffffffffffff6bbdffb56339ffffffffffff006bbd00000039 0000ffde94ffffffffffffffffff94deffe7946bffffffffffffffffff006bbd000000390000ffde94ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff7b7b7b000000000000080808313131292929080808000000000000313131ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000 b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef424242ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000000000525252 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce cece0000000000000000002929290808080000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffbdbdbd0000001818181818182121212121212929293131313939394a4a4a737373a5a5a5ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10101000000018 1818ffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b55252524242427b7b7bf7f7f7ffffffffffffffffffffffffffffffffffff0808 08000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff737373000000dededeffffffffffffffffff3939390000000000000000000000000000000000000000000000004242 42ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006b000000000000000000000000bd6b0094deff00004200000000000000 0000000000943900ffffe7ffffff4294e7000000000000943900ffffe76bbdff000042bd6b39ffffe7ffffffffffffffffffffffffffffffffffffffffff6bbd ff000000000000390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff313131000000000000ffffffffffffffffffffffffcecece292929636363ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000 00000000000000000000000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff525252000000000000000000000000000000525252f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff9c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000a5a5a5ffffffffffff8484840000000000007b7b 7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131181818efefefffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000004a4a4affffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7080808424242ffff ffffffffa5a5a5000000000000181818181818000000000000000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff31313100 0000000000ffffffffffffffffffbdbdbd0808080000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000000000000000000000000000000000393939ffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f729292900000000000000 00006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede00 00000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7f7f7adadadffffffffffffffffffffffff9c9c9c000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc6c6c6000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff292929000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff181818000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000808081010100000000000000000003131310000004a4a4a101010000000 000000636363f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000ffffffffffffd6d6d61010100000000000000000000000 006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff181818000000000000000000000000000000000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffefefef2121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70000000000004a4a4affffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff636363000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c00000031 3131e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000080808ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000212121ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff313131000000000000000000000000000000a5a5a54a4a4a0000008c8c8ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff848484000000000000ffffffffffff292929000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffcecece 212121636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b00000000000000000000000000000000000000000039 3939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef6b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffdedede000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000000000e7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000080808848484e7e7e7ffffffffffffffffffffffffffffffefef efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff525252000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff424242000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef424242000000000000000000424242fffffff7f7f731 3131000000525252e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000000000ffffffffffff525252000000000000 0000000000000000004a4a4af7f7f7ffffffffffffffffffffffffffffffc6c6c6080808000000000000525252ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffefefef101010000000000000000000000000000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0000000000004a4a4affffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff393939000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff8484840808080000000000002121215a5a5a636363636363101010000000212121bdbdbdffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000000000f7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffcececea5a5a5bdbdbdffffffffffffffffffefefef393939000000101010848484ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff313131000000efefeffffffff7f7f72121210000000000000000006b6b6bffffffffffffffffffffffffffffffffffffd6 d6d60808080000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484840000000000000000000000 005a5a5ae7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefef0000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000006b6b6bffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5212121000000000000000000000000 0000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffbdbdbd000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff949494000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffff7f7f75a5a5a000000000000101010848484efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ffffffff ffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000bdbdbdffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff5252522121216b6b6bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000424242ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff6b6b6b0000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff9494942929290000000000000000000000000000000000000000000000008c8c8c73737352525294 9494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000dede deffffffffffffffffffffffffffffffffffffcecece292929636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000 000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5101010000000000000 0808086b6b6be7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff313131636363ffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffff ffffffffffffff525252000000000000000000000000000000525252efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000 313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffdededeb5b5b5a5a5a5cececef7f7f7dedede3131310000000000000000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000adadadffffffffffffffffffffffffffffffbdbdbd080808000000000000 4a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000dededeffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef737373101010000000000000000000636363e7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdede de949494fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000 00313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000313131ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef1818180000 00000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff181818737373ffffffffffffffffffffffffd6d6d61010100000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffff ffffffffff636363000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f78c8c8c2121210000000000001010109c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffcecece292929636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000292929ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff5a5a5a000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece212121636363ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0000000000006363638c8c8c181818212121ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5424242ffffffffffffffffffffffff29292900000000 0000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000949494ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff949494ffffffffffffffffffffffffffffffffffffffffffb5b5b54a4a4a0000000000008484 84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef737373f7 f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd101010000000000000525252ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff6b6b6b000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000181818ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbd bd080808000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff7b7b7b8c8c8cffffffffffffdedede080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffff5252520000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffff ffffffffffffffffffffffffffffffff313131424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a 4a7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6424242000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffcecece0808080000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000101010ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff636363000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000000000000000006b6b6bffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b5a5a5aff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f72121210000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000c6c6c6ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000848484ffffffffffffffffffffffffffffffffffffffffff ffffffffffff080808393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929290000000000000000000000000000000000 00b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff212121000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000080808ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff292929000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff393939292929efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff6b6b6b0000001818185a5a5a7373738484848484847b7b7b6b6b6b525252101010000000000000e7e7e7ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff4a4a4a0000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000c6c6c6ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffa5a5a5000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000525252efefefff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce cece000000313131e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff39393900000000000000000000000000 0000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7292929000000000000 0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff2929297b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000000000f7 f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadadffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000212121d6d6d6ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000000000000000000000000000000000000000000000000000000000adadadffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6 9c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72929290000005a5a5affff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff4242420000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6 c65a5a5a1818180000000000000000000808082929294242428c8c8cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffbdbdbd000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffefefef737373f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef2929290000000000005a5a5a ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242dededeffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffefefefefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde dede212121000000000000080808949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6292929636363ffffffffffffffffffffffffffffff9c 9c9ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73131310000000000000000004a4a4aefefefffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffb5b5b5080808000000000000525252fffffffffffff7f7f7393939000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffff7f7f75a5a5a000000000000000000212121c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0808080000000000000000000000005a5a5affff ff313131000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffe7e7e7dede deffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000 0000000808088c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff212121000000000000000000000000000000000000292929000000000000000000000000000000292929ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd6d6d6181818000000000000313131f7f7f7ffffffadadad080808101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6292929000000000000000000636363ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000 000000525252080808000000000000000000000000000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e71818180000000000000000000000003939399c9c9c 000000000000000000080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff5a5a5a0000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7f7212121000000000000000000737373ffffff949494000000000000000000000000292929dededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000181818e7e7e7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0808080000000000005a5a5affff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e721 2121000000636363ffffffffffffffffff737373000000000000292929efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b00000000000000000000000000 00000000000000000000000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc6c6c61818180000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef6b6b6bffffffcecece292929636363ffffff737373080808d6d6 d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252adadad0000000000000000000000000000008c8c8cffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede 212121000000212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffbdbdbd101010000000000000525252ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f74242 42000000393939ffffffffffff8c8c8c0000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece101010000000000000000000000000 6b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7befefefffffffffffffffffff8c8c8c0000007b7b7bffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc6c6c6080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a00000000000000 0000000000000000525252f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7292929000000000000000000737373ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffefefef2121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6949494737373636363737373949494d6d6d6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd6d6d69494946b6b6b6363637373739c9c9cd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6636363d6d6d6ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6393939000000 0000000000000000000000000000000000002929299c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece3131310000000000000000000000000000000000 000000002121219c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffb5b5b52121216b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000000000000000000000000000000000000000000000000000000000313131de dedeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5efefefffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff8c8c8c000000000000000000000000000000000000000000000000000000000000000000313131d6d6d6ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7 5a5a5a292929e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84848400000000 0000000000000000000000000000000000000000000000000000000000000000000000080808b5b5b5ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff737373737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000000000000000000000 000000000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494101010c6c6c6ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494393939ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc6c6c60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808089c 9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffa5a5a5101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121 21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffa5a5a5080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c101010dededeffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000e7e7 e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff2929290000000000000000000000000000002121218c8c8cc6c6c6f7f7f7ffffffffffffe7e7e7bdbdbd6b6b6b10101000000000000000000000000029 2929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000000000000000 00000000000000212121848484c6c6c6efefeffffffff7f7f7e7e7e7b5b5b5737373101010000000000000000000000000212121f7f7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff313131525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef292929000000181818d6d6d6ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000000000000000000000000000007b7b7bffffffffffffff fffffffffffffffffffffffffffffffffffffffff7f7f77b7b7b000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff e7e7e70000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff7b7b7b080808000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808adadadffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff7b7b7b000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff9494940000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdede de292929000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0000007b7b7bffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000 0000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede292929000000000000000000d6 d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff848484181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000000000000000002929 29ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000000000000000006b6b6bffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7393939000000000000424242ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000000000000000006b6b6bffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7f74a4a4a000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121525252ffffffffff ffffffffffffffffffffffffffffffffffffffffffff525252000000dedede5a5a5a4a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff313131000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff313131000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808393939ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff313131000000000000101010f7f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7 f7393939000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000adadadffffffffffffffffffffffffffffffffffffffffffffffff737373080808 ffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000000000007b7b7b ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef181818000000424242ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a080808212121 424242636363848484b5b5b5efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff101010212121ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000000000737373ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef212121000000424242ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 393939101010efefefffffffffffffffffffffffffffffffffffffffffffbdbdbd000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7949494181818000000000000000000000000000000393939f7f7f7ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffbdbdbd000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b50000004a4a4affffffffffffffffffffffffffffffffffffff ffffffffff181818b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff6b6b6b0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff9494941818180000000000000000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000101010ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000636363ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff393939000000a5a5a5ffffffffffffffffffffffffffffffffffffffffff7b7b7b636363ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000393939ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010181818ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494940808080000000000000000 00a5a5a5ffffffffffffffffffffffffffffffffffffffffff212121f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21 2121000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffefefef080808101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000101010e7e7e7ffffffffff ffffffffffffffffffffffffffefefef181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff7b7b7b000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e74a4a4a000000000000181818f7f7f7ffffffffffffffffffffffffffffffffffff292929 9c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000bdbdbdffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000525252ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484 84000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff424242000000424242ffffffffffffffffffffffffffffffffffffffffff949494d6d6d6ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000737373ffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7080808636363ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff9c9c9c080808000000949494ffffffffffffffffffffffffffffffffffff8484844a4a4affffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff292929000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0808085a5a5affffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000 0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff3939390000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff636363101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd080808292929ffffffffffffffffffffffffff ffffffffffc6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000949494ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939 39000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff636363101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a0000000000007b7b7bffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6363630000006b6b6bffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0000 00d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff9c9c9c000000c6c6c6ffffffffffffffffffffffffffffffefefef000000bdbdbdffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff313131000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffdededee7e7e7ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000636363ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000cececeffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd6d6d6000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff9494940000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818949494ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f79c9c9c7b7b7b9c9c9ccececef7f7f70000006b6b6bffff ffffffffffffffffffffffffffffffff000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94bdde42426b0000390000000000004200 00946b39ffe7bdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000006b6b6bffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000313131f7 f7f7ffffffa5a5a5080808101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff949494000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff2121218c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000007b7b7bcececeffff ffffffffffffffefefefadadad5a5a5a181818181818949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0000004242 42ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece212121636363ffffffffffffffffffffffffffffffffffffffffff ffffffffffff737373525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff424242000000000000000000000000080808000000313131ffffffffffffffffffffffffffffffffffff0000004a4a4affffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff94deff000039946300ffffe7ffffffffffffdeffff6b94e7630000ffffbdffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff313131000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffe7e7e7181818000000000000000000000000424242949494000000000000000000080808cececeffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000393939ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b525252ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f7212121000000000000000000000000000000101010080808000000000000000000000000000000000000b5b5b5 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010101010ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffbdbdbd080808000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffadadad181818ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000000000000000000000000000000000 000000101010ffffffffffffffffffffffffffffffffffff000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff00006be79442ffffff ffffffffffffffffff94deff000042de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3131310000 00525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000 00000000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff080808181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808000000 000000000000000000000000000000000000000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff525252000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000000000000000006b6b6bffffffffffffff ffffffffffffffffffffffffffffcecece000000efefefffffffffffffffffffffffffffffffffffffbdbdbd6b6b6befefefffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffbdbdbd000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff00000000 0000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff94e7ff000063000000000000000000000000000000000000bd6b00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff e7e7e7efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ef efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000424242ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000000000000000000000000000000000000000000000000000000000000000 848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000f7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff cecece000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a00000000000000000000000000000000000000000000000000000000000000 0000000000000000e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ffffffffffffffffffffffffffffffff ffffffffffffffff292929000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffdedede000000c6c6c6ffffffffff ffffffffffffffffffff949494000000000000292929e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d600000000000000000000 0000000000000000000000101010ffffffffffffffffffffffffffffffffffff000000000000cececeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000000000000000ffbd6b6bbdff000000000000000000000000ffbd6bffff ffdeffff426bbd000000000000393900e7bd6bffffffffffff94deff000042000000000000000000ffbd6bffffffffffff6bbdff0000000000000000006b3900 00426b000000000000000000ffbd6b3994de0000000000000000009439006bbde70000000000000000006b420000396b000000000000000000ffbd6bbdffff00 006b000000000000000000000000000000000000000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000101010 4242426b6b6ba5a5a5dededeffffffffffffffffffffffffffffffffffffffffffffffff3939390000000808082121214a4a4a6b6b6b9c9c9cd6d6d6ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000001010104242426b 6b6ba5a5a5dededeffffffffffffffffffffffffffffffffffffffffffffffff3939390000000808082121214a4a4a6b6b6b9c9c9cd6d6d6ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff313131000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6 d6d6a5a5a57373735a5a5a3939392929291010101010100000000000000000000808080808081010101818182929293131314a4a4a6363637b7b7b9c9c9cbdbd bde7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000c6c6c6ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffff7f7f7292929000000000000000000000000000000000000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffff7f7f7101010737373ffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000000000005252 52efefeffffffffffffffffffffffffffffffffffffff7f7f7000000a5a5a5ffffffffffffffffffffffff9c9c9c000000000000000000000000313131f7f7f7 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000000000000000000000000000000000313131ffffffffffffffffffffffffffff ffffffff000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff6bbdff000000000000de9439ffffffdeffff003994000000390000deb563ffffffdeffff003994000000390000deb563ffffff94deffffbd94ffffffffffff 3994de000000000000ffbd6bffffffffffffffffffffffff0063b5000000390000ffe79494deff000039000000bd6b00ffffffdeffff003994000000390000ff de94ffffff006bbd000000390000ffde9494e7ff000039000000b56300ffffffdeffff003994000000000000000000000000000000390000de9463ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b52121210000000000000000000000001818186b6b6bd6d6d6ffffffffffffff ffffffffffffffffffffffadadad313131000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b52121210000000000000000000000001818186b6b6bd6d6d6ffffffffffffffffffffff ffffffffffffffadadad313131000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939000000393939ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffcecece6b6b6b1010100000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000001010104242427b7b7bcececeffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c00000000000000 0000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7 080808737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff7f7f7000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000000000000000 00000000000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363313131ffffffffffffffff ffffffffffffffffffffffffffffffffefefef2929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 7b7b7bffffffffffffffffffcecece0808080000000000000000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929 290000000000000000000000000000000000005a5a5affffffffffffffffffffffffffffffffffff0000000000009c9c9cffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000e79442ffffff006bbd000000000000ffbd6b ffffffffffff6bbdff000000000000de9439ffffffffffffffffff9494deffffbdffffff4294e7000000000000ffbd6bffffffffffffffffffffffff006bbd00 0000420000ffde9494e7ff000039000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffff006bbd000000390000ffe79494deff000042000000bd6b 00ffffffffffff94deff94426bffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f77373730000000000000000000000000000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffb5b5b53131310000000000 00000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f77373730000000000000000000000000000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffb5b5b5313131000000000000000000 000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff4a4a4a000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a0000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000001818186b6b6bdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b292929ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000007b7b7bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffbdbdbd5252520000000000000000000000000808084a4a4a7373732121210000005a5a5affffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffdedede000000dededeffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7292929000000 636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000005a5a5affffffffffffffffffb5b5b500000000000000000000000000 0000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000000000000000000000000000000000009c9c9cffffffffffff ffffffffffffffffffffffff0000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff6bbdff000000000000b563393994de000000000000de9439ffffffffffffffffff0063b5000000390000ffe794ffffffffffffffffffff ffffffffffffffff3994de000000000000ffbd6bffffffffffffffffffffffff0063b5000000390000ffde9494deff000039000000bd6b00ffffffffffff0063 b5000000630000ffffbdffffff006bbd000000390000ffde9494deff000039000000b56300ffffffffffffe7ffff6394b5000039000000000000633939ffdebd ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c61818180000000000000000000000 00080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5101010000000000000000000bdbdbdffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6181818000000000000000000000000080808 e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5101010000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000181818ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffdededee7e7e7ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000525252d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd6d6d6000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0808084a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7 cececebdbdbdc6c6c6f7f7f7ffffffffffff9c9c9c000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252 7b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e76b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff080808393939ffffffffffffffffffffffff636363000000000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffbdbdbd000000000000000000000000000000080808f7f7f7ffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff00000000000042420000000000000094 3900ffffe7ffffffffffffffffff006bbd000000000000000000000000000000000000000000ffbd6bffffff4294e7000000000000ffbd6bffffffffffffffff ffffffff006bbd000000420000ffde9494e7ff000039000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffff006bbd000000390000ffe79494deff 000042000000bd6b00ffffffe7ffff003994000000943900ffffe76bbdde000000390000ffe794ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7636363000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffff7f7f7424242000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffff fffff7f7f7636363000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff949494000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff dedede181818000000000000313131f7f7f7ffffffa5a5a5080808101010cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808087b7b7bffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252527b7b7bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808393939ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373cececeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6848484ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808393939ffffffffffffffffffffffffffffff5252 52000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929290000000000000000000000007b7b7bff ffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff6bbdff000000000000de943994e7ff390039ffbd6bffffffffffffffffffffffff3994de000000630000ffffbdffff ff94e7ff000039390000ffde94ffffff3994de000000000000e79439ffffffffffffffffffffffff0063b5000000390000ffe79494deff000039000000bd6b00 ffffffffffff0063b5000000630000ffffbdffffff006bbd000000390000ffde9494e7ff000039000000b56300ffffff94deff000039000000e79439ffffffbd ffff000063000000b56300ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 6b6b6b000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad080808000000bdbdbdffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b00 0000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad080808000000bdbdbdffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000000000 bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e718181800000000000000000000000042424294949400000000000000 0000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94949400000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000424242f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd6d6d6737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff080808292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff080808212121ffffffffffffffffffffffffffffffffffff6363635a5a5affffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc6c6c6000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffff0000000000008484 84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000e794 42ffffffbdffff00006bffbd6bffffffffffffffffff6bbdff000000420000ffde94ffffff94deff000042943900ffffe7ffffff4294e7000000000000bd6b00 ffffff006bbd944200ffffde006bbd000000420000ffde9494e7ff000039000000bd6b00ffffffffffff006bbd0000006b0000ffffbdffffff006bbd00000039 0000ffe79494deff000042000000bd6b00ffffff94e7ff000039000000bd6b00ffffff94deff000042000000bd6b00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000bdbdbdffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000bdbdbdffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc6c6c6101010525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1818180000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff525252000000000000000000000000000000000000000000000000000000000000000000181818efefefffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff5252520000000000000000000000000000000000000000000000000000000000000000001010102121213939394242424a4a4a5252525a5a5a5a5a5a5a5a 5a5252525252524a4a4a424242292929212121000000000000000000000000000000000000000000000000000000000000000000000000000000000000313131 f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000212121ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede949494adad adffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000de9439ffffffffffff6bbdff390039debd6bffffffffffffffffff396bbd 000000bd6b00ffffde3994de000000ffbd6bffffffffffff3994de000000000000bd6b6bb5deb500006b630000ffffbd0063b5000000000000de943994deff00 0039000000de9439ffffffe7ffff003994000000630000ffffbdffffff006bbd000000000000de943994deff000039000000de9439ffffffdeffff0039940000 00943900ffffde6bbde7000000390000ffb563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff5252520000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9494 94080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff5252520000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494080808 e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff737373000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000 00000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000000000000000000000001818185a5a 5a9c9c9ccececeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefd6d6d6 adadad8c8c8c525252181818000000000000000000000000000000000000000000000000424242ffffffffffffd6d6d6737373313131080808000000393939ce ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000101010ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffb5b5b5000000080808dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff 000000000000e79442ffffff6bbdff000000000000000000e79442ffffffffffffffffff6bbde7000039000000390000e7bd6bffffffffffff94deff00004200 0000000000de94396bbde70000399442006bbdde00000000000042000094bd9400426b000000944200ffffdeffffff3994de0000000000006b0000ffffbd6bbd ff00000000000039000094bd9400396b000000943900ffffe7ffffffffffffdeffff426bbd000039000000000000000000000000000000bd6b00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000181818ffff ffffffffffffffffffffffffffffffffffffffdedede6b6b6b525252737373adadadc6c6c6000000a5a5a5ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000181818ffffffffffff ffffffffffffffffffffffffffffffdedede6b6b6b525252737373adadadc6c6c6000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef0808080000000000006b6b6bffffffffffffffffffffff ffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252adadad000000000000000000000000000000848484ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff181818000000000000000000000000313131b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e78c8c8c39393900000000000000 00000000000000000000008484845a5a5a000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffcecece000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63636300000000000000 00006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000de9439ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000000000cececefffffffffffffffffffffffffffffff7f7f7181818000000000000 000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffcecece000000000000cececefffffffffffffffffffffffffffffff7f7f718181800000000000000000000 0000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff737373000000000000000000393939dededefffffffffffffffffffffffffffffffffffffffffff7f7f7424242000000424242 ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000000000000008c8c8cffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d65a5a5a0000000000000000000000000808087b7b7b7b7b7b5a5a5a2121210000 00000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000000000101010636363ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000313131efefefffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff6bbdff000000000000e79442ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000039 bd6b42ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 525252000000848484ffffffffffffffffffffffffffffffb5b5b5000000000000000000000000000000000000000000424242c6c6c6ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52525200 0000848484ffffffffffffffffffffffffffffffb5b5b50000000000000000000000000000000000000000004a4a4acececeffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121000000000000000000 080808737373f7f7f7ffffffffffffffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c000000737373ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff393939000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffcecece393939000000000000000000737373ffffffffffffffffffefefef949494313131000000000000000000b5b5b5ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffadadad000000000000000000000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373 73000000000000000000000000000000313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bbdff000000000000de9439ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0063b5000000390000ffe794ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000393939ffffffffffffffffffffffffffffff9c9c9c00 0000000000000000000000000000000000000000292929000000393939b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000393939ffffffffffffffffffffffffffffff9c9c9c0000000000 00000000000000000000000000000000393939000000393939b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc6c6c60000000000000000000000000000000808086b6b6bd6d6d6ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000313131ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000080808f7f7f7 ffffffffffffffffffffffffffffffadadad212121000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e700000000000000000000000000 00004a4a4aa5a5a56363636b6b6bb5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad1010107b7b7bdededeadadad212121000000424242f7f7f7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff6bbdff000000000000000000e79442ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff6bbdff000039bd6b42ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff393939080808ffffffffffffffffffffffffffffffb5b5b50000000000000000000000000000000000000000005a5a5a5a5a5a0808 080000002929299c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff393939080808ffffffffffffffffffffffffffffffb5b5b50000000000000000000000000000000000000000005a5a5a848484101010000000 393939b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c 9c9c0000000000000000000000000000000000000000003131318c8c8cdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffff6b6b6b00000000 0000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff6b6b6bd6d6d6e7e7e77b7b7b000000000000000000000000000000000000737373ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffff7f7f75252520000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008c8c8cffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000c6c6c6ffffffffffffffff ffffffffdedede000000000000000000000000000000000000000000737373ffffffefefef8c8c8c0808080000001010108c8c8cf7f7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000c6c6c6ffffffffffffffffffffffff dedede000000000000000000000000000000000000000000737373ffffffefefef6b6b6b0000000000002121214a4a4a1818180808084a4a4ae7e7e7ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0000000000000000000000000000000000000000000000 000000002929298c8c8ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdede de000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffff ffffffffffffdededee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63 6363000000525252ffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0808080000003939399c9c9cadadadc6c6c6ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff6b6b6b000000000000000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63 63630000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff7f7f7080808848484ffffffffffffffffffffffffffffff101010000000000000000000000000000000000000 9c9c9cffffffffffffffffffd6d6d61818180000000000001818188c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff7f7f7080808848484ffffffffffffffffffffffffffffff1010100000000000000000000000000000000000009c9c9cff ffffffffffffffffcecece212121000000000000000000000000000000101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffbdbdbd1818180000000000000000000000000000000000000000000000000000000808089c9c9cffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121218c8c8cffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffdedede181818000000000000313131f7f7f7ffffffa5a5a5080808101010c6c6c6ffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121080808ffffffffffffffffffffffffffffffffffffffff ffffffffffffffb5b5b5080808000000000000000000080808393939737373dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c6c6c6c6c6c6d6d6d6e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000525252adadad848484080808 0000007373735a5a5a080808101010848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a080808d6d6d6ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18181800 00008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a4a4a4a ffffffffffffffffffffffffffffff5a5a5a000000000000000000000000000000000000dededeffffffffffffffffffffffffe7e7e718181800000000000000 00001010108c8c8cf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a4a4a4affffffff ffffffffffffffffffffff5a5a5a000000000000000000000000000000000000dededefffffffffffffffffffffffff7f7f74242420000000000000000000000 00000000181818b5b5b5848484737373adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef636363000000000000 000000000000000000000000000000000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff737373a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e718181800000000000000 0000000000424242949494000000000000000000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffadadad000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad080808000000000000000000000000 000000080808949494ffffffffffffffffffffffffffffffffffffb5b5b55252523131312929290808080000000000000000002121214242427b7b7bb5b5b5f7 f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd6d6d6737373ffffffffffffffffff949494000000000000000000000000000000000000efefefffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff393939292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000848484ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818ffffffffffffffffffffffffffffffadadad00000000000000000000 0000000000313131ffffffffffffffffffffffffffffffffffffcecece0000004242429494941818180000002121216b6b6bc6c6c6efefefffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5181818ffffffffffffffffffffffffffffffadadad0000000000000000000000000000 00313131ffffffffffffffffffffffffffffffffffffffffff5a5a5a525252d6d6d69494940000000000000000000000000000000000006b6b6bffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede6b6b6b181818000000000000000000000000000000000000000000636363ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000000000000000000000000000000000000000181818efef efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929bdbdbdffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffa5a5a5080808000000000000000000000000000000000000848484ffffffffffffffffffe7e7e752525200 00000000000000000000000000000000001010107b7b7ba5a5a56b6b6b292929080808080808525252a5a5a5ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff424242000000000000000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7d6d6d64a4a4a000000737373ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff8c8c8c000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffe7e7e7000000efefefffffffffffffffffffffffffffffff181818000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffff ff848484000000b5b5b5f7f7f77373730000000000000808080000002121216b6b6badadadf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7 e7000000efefefffffffffffffffffffffffffffffff181818000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff8c8c8c000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff9c9c9c080808000000000000000000000000000000000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000 00000000000000000000000000000000000000000000000000000000000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad08 0808000000000000181818080808000000000000a5a5a5ffffffd6d6d6181818000000000000000000000000000000000000000000000000000000525252f7f7 f7ffffffe7e7e78c8c8c2929290000000808086b6b6be7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000080808b5b5b5bdbdbd0808080000 00a5a5a5ffffffffffffffffffffffffffffffc6c6c66b6b6b6b6b6ba5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede101010 080808101010080808080808000000000000000000000000000000000000c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000006b6b6bffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929cececeffffffffffffffffffffffffffffffc6c6 c6080808000000000000848484fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7101010292929ffffffffffffd6d6d6393939000000080808 5252523939390808080808085a5a5abdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929cececeffffffffffffffffffffffffffffffc6c6c6080808 000000000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff31313100000000000000000000000000 0000080808cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0808080000000000000000000000000000000000 00000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a000000000000000000525252adadad000000000000000000000000 000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd636363cececeffffffffffff8c8c8c0000000808088c8c8c1818 18000000000000000000000000000000000000000000000000000000000000000000424242f7f7f7ffffffffffffffffffbdbdbd393939000000080808636363 e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff949494adadadffffffffffffcecece181818212121ffffffffffffffffffffffff848484000000000000000000 000000292929d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f708080800000000000000000000000000000000000000000000000000000000 0000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff393939424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffe7e7e7adadadd6d6d6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff7b7b7b0000008c8c8cffffffffffffffffff8484840808080000005a5a5ad6d6d67b7b7b101010000000292929a5a5a5ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffe7e7e7adadadd6d6d6ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffbdbdbd000000181818b5b5b5b5b5b53131310000002121217373731818180000002121214a4a4affffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff181818000000000000000000000000000000000000000000393939ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffff7f7f7424242000000424242ffffffffffff8c8c8c000000000000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000005a5a5affffffffffffffffffffffffffffffb5b5b52121210000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffbdbdbd000000a5a5a5ffffffffffffadadad000000000000000000000000000000000000080808adadadffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff737373000000000000000000000000000000000000000000000000000000000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000efefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000101010e7e7e7ffffffff ffffffffffcecece212121000000393939efefefffffff848484101010000000313131c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8cdede deffffffffffffefefef181818000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffefefefdededeffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949494000000000000000000 000000000000000000212121dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c 8c8c000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 393939000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffff ffffffffff6b6b6b080808000000424242e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242424242ffffffffffff18181800000000 0000000000000000000000000000000000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2121210000000808081818182121212929293131 313939395252527b7b7bc6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5adededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff3131310000005a5a5affffffffffffffffffffffffe7e7e7313131000000393939f7f7f7ffffffe7e7 e75252520000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5000000000000000000000000000000 0000000000006b6b6bffffffffffffdedede4a4a4a0000000000000808086b6b6bf7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff7f7f7313131000000000000000000000000525252efefefffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcececeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808000000080808525252000000848484fffffffffffff7 f7f7d6d6d69c9c9c424242000000000000000000101010ffffffffffffffffffffffffffffffffffffffffffb5b5b5101010000000181818c6c6c6ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff9c9c9c000000efefef9c9c9c0000000000000000000000000000000000000000000000000000000000003131313131 313939395a5a5aadadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffdedede101010000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7373730000 00000000b5b5b5fffffffffffffffffffffffff7f7f73131310000005a5a5affffffffffffffffffadadad080808000000424242f7f7f7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff4a4a4a0000006b6b6bffffffdedede9c9c9c080808080808d6d6d6dedede18181800000000000000000000 0000000000292929f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde dede1818180000000000005a5a5afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f78c8c 8c636363949494f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffcecece949494e7e7e7ffffff848484101010d6d6d6ffffffffffffffffffffffffffffffd6d6d6424242000000000000949494ffff ffffffffffffffffffffffffffffffffffffffdedede313131000000080808adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000a5a5a54242 42000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000181818a5a5a5ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6101010000000 424242efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff63b5ff390000ffde94ffffffffffffffffffffffff3994e7943900ffffdeffffffffffffffffffffffff 3994de000000000000000000943900ffffe7ffffff6b94de000039000000b56339ffffde63b5ff00000000000000000063390000396b000000000000000000ff bd6bffffffffffff94deff00396b000000000000633900ffe794ffffffffffffffffffe7ffff00399400000063390094bd94000039000000000000ffbd6bffff ffffffff6394de000039000000bd6b39ffffdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000000000101010e7e7e7ffffffffffffffffffffffffc6c6c6000000 000000c6c6c6ffffffffffffffffffd6d6d6212121000000292929efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7737373ff ffffffffffffffffffffffd6d6d60808085a5a5a313131000000000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece101010000000181818a5a5a5ffffffffffffffffffffff ffffffffc6c6c6dededebdbdbde7e7e7ffffffffffffffffffffffffefefef292929000000000000000000212121cececeffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939 39212121e7e7e7ffffffffffffffffffffffffffffffffffff8c8c8c000000292929ffffffffffffffffffffffffffffffffffffffffffffffffefefef313131 000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000737373000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece181818000000212121c6c6c6ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006bbd000000 e79442ffffffffffffffffffe7ffff003994420000ffde94ffffffffffffffffffffffffe7ffff003994000000390000ffe794ffffff94e7ff000039000000bd 6b0094e7ffde946bffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff6bbdff0000006b0000ffe7bdbddeff00006b000000ffbd 6bffffffffffff3994de000000390000ffe7943994de000000000000bd6b00ffffffffffff94deff000042000000bd6b0094deffe7946bffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffcecece000000000000000000313131f7f7f7ffffffffffffffffffffffff0000000000005a5a5affffffffffffffffffffffffefefef29292900000029 2929f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000 00000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd6d6d6212121000000000000101010424242424242292929000000000000000000000000000000636363ffffffffffffffffff 636363000000000000000000000000000000181818dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef101010313131efefefffffffffffffffffffffffffffffffffffff a5a5a5000000efefeffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7393939000000080808b5b5b5ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 080808101010000000000000080808848484e7e7e78484840000000000000000000000000000000000000000007b7b7bbdbdbdadadad6b6b6b0808080000007b 7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffe7e7e74242420000000808087b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffbdffff000063000000943900ffffdeffffffffffff94deff000039000000e79439ffffffff ffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff63b5ff000000000000de9439ffffffffffffffffff006bbd000000390000ffde9494deff0000 39000000b56300ffffffdeffff003994000000bd6b00ffffffffffff0063b5000000943900ffffe7ffffff006bbd000000390000ffde9494deff000039000000 b56300ffffffffffff6bbdff000000000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7000000000000000000000000292929c6c6c6ffffffff ffff949494000000000000212121ffffffffffffffffffffffffffffffefefef292929000000313131ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000000000000000000000000000000000000000000000000000313131ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a000000000000 000000000000000000000000000000000000000000000000000000636363ffffffdedede000000000000000000000000000000000000000000313131ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc6c6c6000000292929e7e7e7ffffffffffffffffffffffffffffffffffff1818189c9c9cffffffffffffffffffffffffffffffffffffff ffffffffffffffffefefef292929000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000000000949494ffffffffffff31313100000000 0000212121bdbdbd424242000000000000313131fffffffffffffffffff7f7f74a4a4a000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000292929cececeffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff39 94de000000000000000000ffbd6bffffffffffff4294e7000000000000943900ffffe7ffffffffffffffffffffffff006bbd0000006b0000ffffbdffffff6bbd ff000000000000de9439ffffffffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffff94e7ff000039000000de9439ffffffffffff 006bbd000000420000ffde94ffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff6bbdff000000000000e79442ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0808080000005a5a5a000000000000000000181818181818000000000000000000181818ffffffffffffffffffffffffffff ffffffffe7e7e71818180000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc6c6c6292929636363ffffffffffffffffffffffffffffff9c9c9ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000 000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c10101000000000000000000000000000000000000000000000000000000000 0000b5b5b5737373000000000000000000000000000000000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5000000181818a5a5a5ffffffff ffffffffffffffff9c9c9c000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede181818000000292929f7f7f7ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff101010000000000000181818ffffffffffffffffff101010000000080808e7e7e7ffffffffffff9c9c9c080808000000adadadffffffffff ffffffffffffff393939313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd6d6d63131310000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff003994000000000000636339bd6b39ffffffdeffff0039940000003900 00003939ffb563ffffffffffffffffffffffff006bbd0000006b0000ffffb5ffffff63b5ff000000000000e79439ffffffffffffffffff006bbd000000390000 ffde9494e7ff000039000000b56300ffffff94deff000039000000e79439ffffffffffff3994de000000390000ffde94ffffff006bbd000000390000ffde9494 e7ff000039000000b56300ffffffffffff6bbdff000000000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1010100000007373739c9c9c0000 00000000000000000000000000000000000000424242ffffffffffffffffffffffffffffffffffffffffffcecece0000000000004a4a4affffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5080808000000000000525252fffffffffffff7f7f7393939000000 101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000000000000000000000005a5a5a73737300000000000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f78484842121210000000000000000000000002121218484847373730808081818182121210000000000000000000000000000000000000000 00000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000001818186363636b6b6b393939000000000000636363ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffadadad000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000737373ffffffffffffffff ff1818180000008c8c8cffffffffffffffffffffffffbdbdbd080808393939ffffffffffffffffffffffffd6d6d6000000adadadffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 2929290000000000002121215a5a5a848484a5a5a5d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff6bbdff0000000000006b0000e7ffbd393994ffe79494deff000042000000bd6b006bbddebd6b00ffffffffffffffffffffffff006bbd0000006b0000 ffffbdffffff6bbdff000000000000de9439ffffffffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffff94e7ff000039000000bd 6b00ffffffffffff4294e7000000420000ffde94ffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff6bbdff000000000000e794 42ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff181818000000525252ffffffa5a5a50000000000000000000000000000000000009c9c9cffffffffffff ffffffffffffffffffffffffffffffffffff9c9c9c0000000000002121217373732121213939397b7b7bffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffcecece0808080000000000000000000000005a5a5affffff313131000000000000000000101010e7e7e7ffffffffffffffffffffffffffffffffffffff fffff7f7f7000000000000000000737373ffffffffffff313131000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7c6c6c6e7e7e7c6c6c6ffff ffffffffffffff7b7b7b0000000000000000000000004a4a4acececeffffffe7e7e79494940808080000000808088c8c8c9c9c9c3939391818185a5a5aefefef ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484 84000000000000000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a 000000000000cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff101010000000000000adadadffffffffffffffffff393939000000efefefffffffffffffffffffffffffffffff848484 000000dededeffffffffffffffffffffffff393939393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad00000008080800000000000000000000000000000008080829 29296b6b6ba5a5a5f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0063b5000000000000bd6b00ffffff3994dede94393994e7 000000000000ffb563bdffff630063ffffbdffffffffffffffffff006bbd0000006b0000ffffb5ffffff63b5ff000000000000de9439ffffffffffffffffff00 6bbd000000390000ffde9494deff000039000000b56300ffffffdeffff003994000000bd6b00ffffffffffff0063b5000000943900ffffe7ffffff006bbd0000 00390000ffde9494deff000039000000b56300ffffffffffff6bbdff000000000000de9439ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818000000 313131ffffffffffffd6d6d65a5a5a1818180000002121217b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52525200000000 0000000000000000000000000000292929f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21212100000000000000000000000000000000000029292900 0000000000000000000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffff101010000000101010f7f7f7ffffffffffff9494940000 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000000000000000292929ffffffffffff ffffffffffffffffffd6d6d6181818000000000000000000000000000000000000292929efefefffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5b5b5101010000000000000000000000000000000a5a5a5ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef080808000000313131ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000dedede ffffffffffffffffff848484101010ffffffffffffffffffffffffffffffffffffefefef000000949494ffffffffffffffffffffffff848484000000dededeff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff1010102121219c9c9c080808000000636363b5b5b57b7b7b4242420000000000000000004a4a4ab5b5b5ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff94deff000042000000420000ffde94ffffffbdffff6b426b00396b0000006b0000ffffbdffffff006bbdffbd6bffffffffffffe7ffff00 39940000006b0000ffffbdffffff6bbdff000000000000de9439ffffffffffffffffff006bbd000000000000e7944294deff000042000000e79442ffffffffff ff94deff0000426b0000ffe7bdbddeff00006b390000ffbd6bffffffffffff006bbd000000390000ffe79494deff000042000000bd6b00ffffffffffff6bbdff 000000000000e79442ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000212121ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7212121000000000000000000000000000000000000525252ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff4a4a4a000000000000000000000000000000525252080808000000000000000000000000000000101010d6d6d6ffffffffffffffff ffffffffffffffffffffffffff3131310000005a5a5afffffffffffffffffff7f7f7101010000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffdedede000000000000000000080808ffffffffffffffffffffffffffffffffffffefefef29292900000000000000000000 00000000000000004a4a4affffffffffffe7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f78c8c8c3939391010101818187b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff7b7b7b000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff080808000000000000f7f7f7ffffffffffffffffffdedede080808ffffffffffffffffffffffffff fffffffffff7f7f7000000525252ffffffffffffffffffffffffbdbdbd000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000d6d6d6d6d6d61010100000 006b6b6bfffffffffffff7f7f7a5a5a5393939000000000000424242e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3994de000000000000943900ffffdeffffffff ffff0063b5000000000000bd6b00ffffffffffff63b5ffbd6b00ffffffffffff3994de0000000000006b0000ffffb594e7ff0000390000000000000000000000 00de9439ffffff006bbd000000390000b5b59400396b000000943900ffffdeffffffffffffffffff94deff00396b000000000000633900ffe7bdffffffffffff 63b5ff000000000000390000dede94003994000000000000b56300ffffff94deff000039000000000000000000000000de9439ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff181818000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffcecece101010000000000000000000181818080808000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f72121210000000000000000007373 73ffffff949494000000000000000000000000292929dededeffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a0000008c8c8cffffffffffff ffffffffffff8c8c8c000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70000000000000000006b 6b6bffffffffffffffffffffffffffffffffffffffffffefefef525252181818393939636363292929000000000000292929000000000000181818b5b5b5ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece0000000000004a4a4affffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000000000ffffffffffffffffffffffffffffff4a4a4a737373ffffffffffffffffffffffffffffffadadad000000393939ffffffffffffffffffffffffdede de000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffbdbdbd0000008c8c8cffffffe7e7e71818180000006b6b6bffffffffffffffffffffffffb5b5b5181818000000 101010d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffe7ffff003994000000000000e79442ffffffffffffffffff006bbd000000000000ffbd6bffffffffffffbdffff6b006bffff bdffffffffffffffffffffffffffffffffffffffffffbdffff00396b000000de9439ffffffffffffffffff006bbd000000390000ffe794ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffbdffff00426b000000e79442ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000101010ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece393939101010bdbdbdfffffff7f7f7313131 181818f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffe7e7e7212121000000636363ffffffffffffffffff737373000000000000292929efefefffffffffffff ffffffffffffffffffffffffffffffffffffffffff9c9c9c000000adadadffffffffffffffffffffffffffffff737373a5a5a5ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000080808efefefffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff525252000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffdedede949494000000000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000181818ffffffffffffffffffffffffffffffdedede0000004a4a 4abdbdbdffffffefefefadadad101010000000313131fffffffffffffffffffffffff7f7f7000000101010ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010393939 ffffffffffffe7e7e71818180000007b7b7bfffffffffffffffffffffffff7f7f7313131000000181818f7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63b5ff0000000000006b0000ffff b5ffffffffffffbdffff000063000000630000ffffbdffffffffffffffffff3994deffb563ffffffffffff6bbdff000039bd6b39ffffdeffffffffffffe7ffff 003994de9439ffffffffffffffffff006bbd000000390000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeffff003994de9439ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff181818000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000636363ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef 6b6b6bffffffcecece292929636363ffffff737373080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000a5 a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e70000 00000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000000000 000000000000000000cececeffffffe7e7e7c6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929101010101010101010080808000000000000000000000000000000000000000000 a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000212121ffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000005a5a5affffffffffff ffffffffffffffffff000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a080808f7f7f7ffffffffffffdedede101010000000949494ffffffffffffff ffffffffffd6d6d60000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffbddeff00006b000000000000bd6b00ffffffffffffe7ffff006bbd000000000000bd6b00ffffffffffffffffff ffffff6bbdffbd6b42ffffffffffff006bbd000000390000ffe794ffffffffffffffffff94e7ffde946bffffffffffffffffff006bbd000000390000ffe794ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff94deffe7946bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff4a4a4a000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd101010000000000000525252ffffffefefefffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929949494ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000393939ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000424242e7e7e7efefef525252000000101010424242000000000000000000737373ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1010100000000000000000000000000000000000000000000000000000000000000000007b7b7bffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff080808000000212121ffffffffffffffffffffffffffffff ffffffffffff4a4a4a000000000000000000000000000000000000a5a5a5ffffffffffffffffffffffffffffff000000000000adadadffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffb5b5b5000000b5b5b5ffffffffffffffffffd6d6d6000000080808a5a5a5ffffffffffffffffffefefef000000000000525252ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00006b000000000000 000000000000b5630094deff000039000000000000000000000000943900ffffdeffffff3994de000000000000943900ffffde6bbdff000039bd6b39ffffdeff ffffffffffffffffffffffffffffffffffffffff63b5ff000000000000390000ffde94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff212121000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c6000000000000848484efefefffffffffff fff7f7f7949494636363e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffcecece1010100000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff848484737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffe7e7e7000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6 c6c6efefefffffffffffffffffff2929290000000000000000000000000000000000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a4a4a08080800000000000000000000000000000000000000000000 00000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff080808000000181818fffffffffffffffffffffffffffffffffffffffffff7f7f7525252000000000000000000000000393939ff ffffffffffffffffffffffffffffffffff080808000000848484ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7101010525252ffffffffffffffffffffffff4a4a4a0000 00000000737373e7e7e7d6d6d6424242000000000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff7b7b7b000000000000080808313131313131000000000000000000393939ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929290000000000000000000000000000000000 00b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef424242ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000525252ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60000000000000000002929 290808080000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffbdbdbd000000181818181818212121212121292929313131424242525252737373a5a5a5ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000181818ffffffffffffff ffffffffffffffffffffffffffffffffffffffffb5b5b55252524a4a4a7b7b7bf7f7f7ffffffffffffffffffffffffffffffffffff080808000000636363ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff6b6b6b080808dededeffffffffffffffffff393939000000000000000000000000000000000000000000000000424242ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff292929000000000000ffffffffffffffffffffffffcecece212121636363ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a5a5a000000 0000000000000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff4a4a4a000000000000000000000000000000525252f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffdedede0000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff6363630000009c9c9cffffffffffff7b7b7b0000000000007b7b7bffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131101010efefefffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff181818000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff1010100000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000424242f7f7f7ffffff a5a5a50000000000002121211010100000000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3939 39000000000000ffffffffffffffffffbdbdbd080808000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000000000000000000000000000000000000000313131ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7292929000000000000 000000737373ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede000000000000525252ffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7 adadadffffffffffffffffffffffff9c9c9c000000000000d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffcecece080808313131f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2929290000001010 10ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121 000000313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff7373730000001010101010100000000000000000003131310000004a4a4a18181800000008080863 6363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000ffffffffffffd6d6d6080808000000000000000000 0000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff181818000000000000000000000000000000000000000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef2121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffdedede0000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000525252ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000 313131e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff313131000000181818ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f731 3131000000000000000000000000000000adadad424242000000848484efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff848484000000000000ffffffffffff292929000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffce cece292929636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000 00393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffefefef6b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000 525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000080808e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b6b6b000000080808848484e7e7e7ffffffffffffffffffffffffffffffef efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 525252000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff424242000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef4a4a4a0000000000000000004a4a4afffffff7f7f73131310000 00525252efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000000000ffffffffffff52525200000000 0000000000000000000000525252efefefffffffffffffffffffffffffffffffbdbdbd0808080000000000004a4a4affffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffefefef080808000000000000000000000000000000181818dededeffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7000000000000424242ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff393939000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff848484000000000000000000212121525252636363636363101010000000181818b5b5b5ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000000000f7f7f7ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffcececea5a5a5bdbdbdffffffffffffffffffefefef3939390000000808088c8c8cf7f7f7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff313131000000e7e7e7fffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffff ffd6d6d61010100000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8c8c000000000000000000 000000525252efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef efef0000000000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000006b6b6bffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd2929290000000000000000000000 000000000000000000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffbdbdbd000000000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff949494000000000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff5a5a5a000000000000181818848484f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000b5b5b5ffff ffffffffe7e7e72929290000005a5a5affffffffffffffffffffffffffffffffffffffffff292929000000000000000000000000000000000000b5b5b5ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff5252521818186b6b6bd6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000424242ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff6363630000004a4a4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff949494212121000000000000000000000000000000000000000000000000848484737373525252 949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff212121000000dededeffffffffffffffff ffffffffffffffffffffcecece292929636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000000000e7e7e7ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5a5a51010100000000000000808086b 6b6bdededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff393939636363ffffffffffffffffffefefef737373f7f7f7ffffffffffffffffffffffff ffffffffffffffffff5252520000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000313131ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffdededeb5b5b5a5a5a5cececef7f7f7dedede313131000000000000000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff8c8c8c000000b5b5b5ffffffffffffffffffffffffffffffbdbdbd101010000000000000525252ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff101010000000dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffefefef7373730808080000000000000808085a5a5aefefefffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff dedede949494fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f72121210000000000000000006b6b6bff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101010000000313131ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff636363000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef18181800 0000000000000000000000000000adadadffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff181818737373 ffffffffffffffffffffffffcecece0808080000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffff63636300 0000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fff7f7f78c8c8c2121210000000000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffcecece292929636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff313131000000292929ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000212121ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6292929636363ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0000000000006363638c8c8c181818292929ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd424242ffffffffffffffffffffffff29292900000000000000000000000000 0000000000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffcecece0000009c9c9cffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff9c9c9cffffffffffffffffffffffffffffffffffffffffffbdbdbd4a4a4a0000000000008c8c8cffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef6b6b 6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd0808080000000000004a4a4affffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363000000181818ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff636363000000181818ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd bdbd080808000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff7b7b7b848484ffffffffffffdedede080808c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff7f7f7ffffffffffffffffffffffff4a4a4a0000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffffffffffffffffffff ffffffffffffff292929424242ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4242427b7b7b ffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6424242000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffcecece1010100000000000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff636363 000000080808ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d60808080000000000000000000000006b6b6bffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b5a5a5a ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f72929290000 000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadad000000c6c6c6ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece000000848484ffffffffffffffffffffffffffffffffffffffffffffffffff ffff101010313131ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff29292900000000000000000000000000000000 0000b5b5b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff212121000000f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff292929000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7101010ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e72121210000005a5a5affffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff393939212121e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff7373730000001818185a5a5a7b7b7b7b7b7b8484847b7b7b7373734a4a4a181818000000000000dededeffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff5252520000000000000000000000000000004a4a4af7f7f7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c000000c6c6c6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffadadad000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff525252000000000000000000000000000000525252efefef ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff393939ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffefefef6b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6000000313131e7 e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4242420000000000000000000000000000000000 00000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f72929290000000000 000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff2929297b7b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef000000000000efefefffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff7f7f72929290000000000000000006b6b6bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadadadffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848484000000212121cececeffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffff7f7f75a5a5a000000000000000000000000000000000000000000000000000000000000a5a5a5ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef2121210000005a5a5affffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d69c9c9cffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff4a4a4a000000efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7292929000000636363ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff4242420000000808089c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6c6c65a5a5a 2121210000000000000000001010102121214a4a4a8c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdbdbd000000dededeffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffefefef737373f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef2929290000000000005a5a5af7f7f7ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff424242e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffdedede181818000000000000212121d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7 e7e7efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede21212100000000 0000000000949494ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece212121636363ffffffffffffffffffffffffffffff9c9c9cdede deffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e73131310000000000000000004a4a4aefefefffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffb5b5b50808080000000000005a5a5afffffffffffff7f7f7424242000000181818d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffff7f7f75a5a5a000000000000000000181818c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcecece080808000000000000000000000000636363f7f7f7313131 000000000000000000101010dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7393939424242f7f7f7ffffffffffffffffffe7e7e7e7e7e7ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c080808000000000000080808949494 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff212121000000000000000000000000000000000000313131000000000000000000000000000000292929f7f7f7ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6181818 000000000000292929f7f7f7ffffffa5a5a5000000101010c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd6d6d6292929000000000000000000636363ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52525200000000000000000000000000000052 5252000000000000000000000000000000000000080808d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e71818180000000000000000000000004242429c9c9c000000000000000000101010c6 c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5a 5a5a000000000000000000525252ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff7f7f72929290000000000000000007b7b7bffffff9c9c9c000000000000000000000000212121e7e7e7ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52 5252000000000000000000000000000000000000000000000000000000000000000000181818e7e7e7ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c9c9c0808080000000000005a5a5affffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede2121210000 00636363ffffffffffffffffff737373000000000000212121efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b7b7b0000000000000000000000000000000000000000000000000000 000000000000000000008c8c8cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc6c6c6181818000000000000a5a5a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7737373ffffffd6d6d62929296b6b6bffffff7b7b7b080808dededeffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff4a4a4a0000000000000000004a4a4aadadad0000000000000000000000000000008c8c8cffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedede212121000000212121 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffbdbdbd080808000000000000525252ffffffefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff424242000000424242ffffffffffff 9494940000000000000000009c9c9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7181818000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6d6d6080808000000000000000000000000737373ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff7b7b7be7e7e7ffffffffffffffffff8c8c8c0000007b7b7bffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff292929000000000000000000000000000000000000bdbdbdffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff737373ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5252520000000000000000000000 00000000525252efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffefefef292929000000000000000000737373ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7 292929000000636363ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4069738 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid606012 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7343642\charrsid7343642 collision.max.y}{\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid606012 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid606012 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid606012 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid606012\charrsid8391927 collision.max.}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid606012 x/}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid606012\charrsid8391927 y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid606012 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid606012 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid7343642\charrsid7343642 collision.min.y }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7343642 attributes are ignored for kerning.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16471979 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid2893403 \hich\af143\dbch\af0\loch\f143 6.8.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid5131842 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 Example}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid5131842 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2893403 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403\charrsid13065243 collision avoidance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 , automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403\charrsid13065243 \:shifting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid5131842 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5131842 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5131842 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5131842\charrsid13065243 collision avoidance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5131842 , automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5131842\charrsid13065243 \:}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5131842 example}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2893403 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 The following is a simplified example of how to use the automatic collision avoidance mechanism to handle }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9113792 collisions and kerning in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 Nastaliq}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2893403 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid3736929 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3736929 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3736929\charrsid1859294 Nastaliq}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3736929 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 -style Arabic. \par }\pard\plain \ltrpar\s61\ql \li360\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid7021698 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2893403 // }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 GDL-d}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2893403 efined constants:\line #define }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 COLL_FIX }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5927348 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 1\line #define COLL_IGNORE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5927348 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2893403 \line #define }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 COLL_START }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5927348 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 4\line #define COLL_END }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5927348 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 8\line #define COLL_KERN }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5927348 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 16}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid7558531 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5927348 #define }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5262926 COLL_ISSPACE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid7558531 128}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid7021698 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2893403 #define ORDER_LEFTDOWN 1\line #define ORDER_NOABOVE 4\line #define ORDER_NOBELOW 8 \par }\pard \ltrpar\s61\ql \li360\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid12464051 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5249367 // Macros for setting flags:\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5137802\charrsid5137802 #define setbits(f,m,v) (f & (~m)) | v }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5137802 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5249367 #define }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5249367 SET_FIX(f) }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7558531 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5249367 setbits}{\pard\plain \ltrpar\s61\ql \li360\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid12464051 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid12464051 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12464051 setbits}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624217 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5249367 (f, COLL_FIX, COLL_FIX)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5249367 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5249367 #define SET_START(f)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7558531 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5249367 setbits(f, COLL_START, COLL_START)\line #define SET_END(f) }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7558531 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5249367 setbits(f, COLL_END, COLL_END)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7503572 \line #define SET_KERN(f)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7558531 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7503572 setbits(f, COLL_KERN, COLL_KERN)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7558531 \line #define SET_ISSPACE(f) setbits(f, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs58\insrsid7558531\charrsid5262926 COLL}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs58\insrsid5262926\charrsid5262926 _}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs58\insrsid7558531\charrsid5262926 ISSPACE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7558531 , COLL_ISSPACE)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7503572\charrsid7503572 \par }\pard\plain \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid11746460 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 // My }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid5249367 sequence }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 classes:\line #define SEQ_UNUQTA 1\line #define SEQ_LNUQTA 2\line #define SEQ_UDIAC 3\line #define SEQ_LDIAC 4}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403\charrsid2893403 \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid2893403 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2893403 table(glyph) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3365126 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3365126\charrsid3950677 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3365126 // Shifting \par }\pard\plain \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid12925916 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3736929 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 clsUpp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 erNuqta = (gUpN1, gUpN2, gUpN3)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12925916 \line \tab \tab \tab // Upper nuqtas can be shifted up more than down:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 \line \tab \tab \tab \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 collision \{min.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12925916 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 -300m; max.x=300m; min.y=-200m; max.y=500m\};\line \tab \tab \tab }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 sequence.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 class = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11746460 SEQ_UNUQTA}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12925916 \par \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 clsLowerNuqta = (gLowN1,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 gLowN2,gLow}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 N3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12925916 \tab \tab \tab // Lower nuqtas can be shifted down more than up:\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 \tab \tab \tab \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 collision \{min.x=-300m; max.x=300m; min.y=-500m; max.y=200m\};\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 sequence.class = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid4217979 SEQ_LNUQTA}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid3278163 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12925916 // The sequencing is the same for upper and lower nuqtas}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3278163 \emdash they should\line \tab // flow in a top-right-to-bottom-left sequence}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12925916 :\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 clsNuqta = (clsUpperNuqta, clsLowerNuqta)\line \tab \tab \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 collision \{ma}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 rgin = 150m; marginweight = 200\};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 \line \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 sequence \{\line \tab \tab \tab \tab order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 = ORDER_LEFT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 DOWN;\line \tab \tab \tab \tab above \{xoffset = 100m; weight = 300\};\line \tab \tab \tab \tab below \{ xlimit = -50m; weight = 100\};\line \tab \tab \tab \tab valign \{height}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4217979 = 15}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 0m; weight = 500\} }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 \}}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746460 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid8530879 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 clsUpperDiac = (gFatha, gDamma)\line \tab \tab \{collision \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 \line \tab \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 margin = 20}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 0m; marginweight = 200;\line \tab \tab \tab \tab min.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 -300m; max.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 300m; min.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 -300m; max.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 800m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3950677 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 \};\line \tab \tab \{sequence \{\line \tab \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 // Keep upper diacritics above upper nuqtas:\line \tab \tab \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 class = SEQ_UDIAC; order = ORDER_}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 NOBELOW}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10624980 ; \line \tab \tab \tab \tab proxClass = SEQ_UNUQTA\}\};\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 \line \tab c }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 lsLowerDiac = (gKasra)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407\charrsid13456407 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 \line \tab \tab \{collision \{\line \tab \tab \tab \tab margin = 200m; marginweight = 200;\line \tab \tab \tab \tab min.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 -300m; max.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 300m; min.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10960879 8}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 00m; max.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10960879 3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 00m\}\};\line \tab \tab \{sequence \{}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 \line \tab \tab \tab \tab // Keep lower diacritics below lower nuqtas:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 \line \tab \tab \tab \tab class = SEQ_LDIAC; order = ORDER_NO}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8530879 ABOVE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13456407 ; \line \tab \tab \tab \tab proxClass = SEQ_LNUQTA\}\};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3950677 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3950677 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8263065 // Kerning \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8263065 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8263065\charrsid3950677 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677 clsFinalIsolate}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 = (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677 clsFinal, clsIsolate}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 )\line \tab \tab \{collision \{margin = 200m; min.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8263065 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8263065 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8263065 10}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 00m; max.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8263065 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 =}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8263065 50}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 00m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3950677\charrsid3950677 \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3950677\charrsid3950677 \par }\pard\plain \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid2893403 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2893403 endtable; \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid14891486 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid2893403 table(pos)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid14891486 \par pass(1) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14891486 \tab // rules to attach nuqtas \par endpass;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14891486\charrsid14891486 \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid11162178 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11162178 pass(2)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid14891486 \{CollisionFix = 3\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid11162178 \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid18190 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid288338 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid18190 // Spaces serve as boundaries of ranges to check for collisions:\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16021297 g}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid288338 Space \{ coll ision.flags = SET_START(collision.flags);\line \tab \tab \tab collision.flags = SET_END(collision.flags) \}; \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid339115 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11162178 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9917108 // Fix nuqtas on this pass:\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 cls}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14891486 Nuqta}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5249367 \{ collision.flags = SET_FIX(collision.flags) \};}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid288338 \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid288338 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 e}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11162178 ndpass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid267767 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2893403 \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid14891486 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid14891486 pass(3) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14891486 \tab // rules to attach diacritics \par endpass;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14891486\charrsid14891486 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid14891486 pass(4) \{CollisionFix = 3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid4653268 ; AutoKern = 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid14891486 \} \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid9917108 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14891486 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9917108 // Fix diacritics on this pass:\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14891486 clsUpperDiac \{ collision.flags = SET_FIX(collision.flags) \};\line \tab clsLowerDiac \{ collision.flags = SET_FIX(collision.flags) \}; \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid16606012 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4653268 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16606012 // Also do kerning on this pass:\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4653268 clsFinalIsolate \{ }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8263065 \line \tab \tab collision.flags = SET_FIX(collision.flags)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16672065 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8263065 \line \tab \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4653268 collision.flags = SET_KERN(collision.flags) \}; \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid2498852 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2498852 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7018752 // Not necessary, since an actual space is already treated\line \tab // as whitespace:\line \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2498852 gSpace \{ collision.flags = SET_ISSPACE(collision.flags)\}; \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid4653268 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4653268 endpass; \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid10188639 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11162178 endtable;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11162178\charrsid11162178 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid10188639\charrsid4260629 \hich\af143\dbch\af0\loch\f143 6.8.3.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4260629 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639\charrsid4260629 Discussion}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid339115 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 The general approach we take is to first attach nuqtas and fix their collisions, then attach diacritics and fix their collisions. Kerning is left }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 as }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 the last step; it can be treated as a last resort since it is always possible to kern in order to avoid a collision between se}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 quences, and it should never create any new collisions. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1591042 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10645618 We set most of the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10645618\charrsid10645618 collision }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10645618 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10645618\charrsid10645618 sequence }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10645618 attributes as glyph attributes, from which the slot attributes are initialized. It would be possible to adjust their values within rules, as needed.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1591042 Although}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1591042\charrsid1591042 collision.flags }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1591042 exists as a glyph attribute, it seems to make more intuitive sense to set it within a rule, at the place in the process where we want the fix to happen.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10645618 \par Clusters for testing collisions}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 are }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12014603 delineated}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12014603 by spaces.}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1591042 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 Note that the first group of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10188639\charrsid10188639 #defin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10188639 e}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10188639\charrsid10188639 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 statements are constants that are defined within the Graphite system. }{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1591042 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid10188639 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639\charrsid13065243 collision avoidance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 , automatic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639\charrsid13065243 \:shifting}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 The set that star}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6367110 t with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10188639\charrsid10188639 SEQ}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1591042 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 are defined by the GDL programmer. \par {\listtext\pard\plain\ltrpar \s5 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\fs22\insrsid15749808 \hich\af0\dbch\af0\loch\f0 6.8.3.1.1\tab}}\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0\pararsid15749808 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15749808 Possible enhancements}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid339115 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 If desired, collision avoidance can be turned off for nuqtas on the final pass, using: \par }\pard \ltrpar\s24\ql \fi432\li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12464051 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid339115\charrsid339115 #define CLEAR_FIX(f) setbits}{\pard\plain \ltrpar \s24\ql \fi432\li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12464051 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid12464051 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12464051 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid12464051 setbits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12464051 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10624217\charrsid339115 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid339115\charrsid339115 (f, COLL_FIX, 0)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid339115 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid339115 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid339115 and in pass(4): \par }\pard \ltrpar\s24\ql \fi432\li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid339115 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid339115\charrsid339115 clsNuqta \{ collision.flags = CLEAR_FIX(collision.flags) \}; \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid607147 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15749808 It may be }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid607147 convenient}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15749808 for the pur}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12090931 poses of debugging (for instance,}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15749808 when using the Graide development tool) to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5668165 separate the rules setting the collision parameters from the running of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12090931 the collision algorithm itself\emdash especially if the rules are quite complex. This can be done easily, e.g.:}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10188639 \par }\pard\plain \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid12090931 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid12090931 pass(4) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12090931 \tab // Fix diacritics on this pass:\line \tab clsUpperDiac \{ collision.flags = SET_FIX(collision.flags) \};\line \tab clsLowerDiac \{ collision.flags = SET_FIX(collision.flags) \}; \par \tab // Also do kerning on this pass:\line \tab clsFinalIsolate \{ \line \tab \tab collision.flags = SET_FIX(collision.flags)\line \tab \tab collision.flags = SET_KERN(collision.flags) \}; \par endpass; \par }\pard \ltrpar\s31\ql \li360\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid9987386 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid12090931 pass(5) \{CollisionFix = 3; AutoKern = 1\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid267767 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9987386 \tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12090931 // No rules, just run the collision avoidance algorithm}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid267767 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12090931 endpass; \par {\*\bkmkstart _Toc40864630}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid6816429 \hich\af143\dbch\af0\loch\f143 6.9\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid7633337 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6816429 Backward-}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 compatible feature IDs{\*\bkmkend _Toc40864630} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7633337 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 In the past, Graphite font features were}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 geneally}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 given mnemonic IDs such as \lquote litr\rquote , \lquote viet\rquote , and \lquote dig4\rquote . Now that OpenType supports character variants and stylistic sets, you may want Graphite font tables to use IDs that are compatible with OpenType\rquote s, such as \lquote ss01\rquote and \lquote cv24 \rquote . However, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 it might not be adequate to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 simply remove the old IDs from the font since that would break backward compatibility.}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16587884 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 The solution is to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 assign multiple IDs to a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 GDL featur}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587884 e definition}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 . This in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 effect creates multiple features }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 with identical behavior in the font. The new ID }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16587884 will be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 offered to the user in UI mechanisms; the old ID is not offered but is still effective for existing data that might use it.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7633337 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 Implementing this solution in a Graphite font has }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 two main}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 aspects}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid7633337 \hich\af143\dbch\af0\loch\f143 6.9.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid7633337 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 GDL feature definition \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2505103 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 A feature definition can be extended to include multiple IDs. All but the first ID must be marked \'93hidden}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2505103 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2505103 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2505103 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2505103\charrsid3366966 feature}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2505103 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2505103\charrsid3366966 \:hidden}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2505103 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337\charrsid7633337 \'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7633337 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3354481 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid3354481 featureGdlName \{}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid3354481\charrsid3354481 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12287227 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12287227 \tab }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid3354481 id = \'93cvXX\'94; \tab // ie, an ID t}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 hat is compatible with OpenType\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12287227 \tab }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid3354481 id.hidden = \'93prev\'94;\tab // a mnemonic ID}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12287227 \tab }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid3354481 default = default_value;}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12287227 \tab }{\rtlch\fcs1 \ai\af2 \ltrch\fcs0 \i\f2\fs20\insrsid4260629\charrsid3354481 etc.}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid3354481 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4260629 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid3354481 \}; \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2505103 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 Note that using a \'93hidden\'94 ID can be used to simply}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2505103 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 create a feature with a single ID that is not shown in the user interface but may still be accessed by those who know the \'93secret code.\'94}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid4260629 \hich\af143\dbch\af0\loch\f143 6.9.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid4260629 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 Feature testing \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4260629 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 As indicated above, including a hidden ID actually causes the resulting Graphite font to have an extra feature with that ID. This means that the GDL code that tests a feature must explicitly test all the features that result from the single GDL definition }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 \emdash }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 the public feature as well as any hidden features.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 A special syntax is available to test hidden features, consisting of the GDL name followed by \lquote __\rquote and then the hidden ID.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 So if your original GDL looked like}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 \par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid6495192 if (featureGdlName == 2) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 the new code would be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 \par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid6495192 if (featureGdlName == 2 || featureGdlName__prev == 2) \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 The ID can also be included for public features, so the following is also valid:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 \par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid4260629\charrsid6495192 if (featureGdlName__cvXX == 2 || featureGdlName__prev == 2) \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid4260629 \hich\af143\dbch\af0\loch\f143 6.9.2.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4260629 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 Testing default values \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4260629 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 Special care must be taken when testing default values}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629\charrsid4260629 For a non-default value, if either the public feature or the hidden feature is set to that value, the feature will be considered activated. But notice that the other feature will (most likely) still h ave the default value. This means that only if both the public feature and the hidden feature have the default value can the feature be considered to use the default setting. For this reason, default features should generally be tested using a logical AND operation rather than OR}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4260629 : \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6495192 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid6495192\charrsid12287227 if (featureGdlName == 0 && featureGdlName_prev == 0)\line // rules to run in the default case \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid6495192 \hich\af143\dbch\af0\loch\f143 6.9.2.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid6495192 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192 Incompatible values \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1735558 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192\charrsid6495192 This raises the question of how to handle incompatible values. For instance, what if}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid6495192\charrsid3169197 cvXX = 2 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192\charrsid6495192 and}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid6495192\charrsid3169197 prev = 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192\charrsid6495192 ? This could happen if the user has some existing data marked with}{ \rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid6495192\charrsid3169197 prev = 1 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192\charrsid6495192 and then uses the UI mechanisms to set}{\rtlch\fcs1 \af2 \ltrch\fcs0 \cs82\f2\fs20\insrsid6495192\charrsid3169197 cvXX }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192\charrsid3169197 to 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3169197 In this situation you most likely want to ig}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1735558 n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3169197 ore the previous value and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1735558 apply}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3169197 the current value}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3169197\charrsid1735558 , 2.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6495192 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192\charrsid6495192 Here is a GDL test that takes this possibility into account}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192 : \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1735558 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1735558 if (featureGdlName}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227\charrsid12287227 == }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid3169197 2}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227\charrsid12287227 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12287227 \tab }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid3169197 ||}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227\charrsid12287227 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 (}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227\charrsid12287227 featureGdlName == 0}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 && featureGdlName}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1735558 _prev}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 == }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid3169197 2}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227 )}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid3169197 )\line // rules to handle value = 2}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid12287227\charrsid12287227 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6495192 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15879987\charrsid15879987 In other words, the hidden feature is only taken into account when the public feature is set to the default.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6495192 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid607729 \hich\af143\dbch\af0\loch\f143 6.9.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid607729 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid607729 Example \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid607729 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid607729 A}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid607729\charrsid607729 n older Graphite font has a feature controlling which form of the uppercase eng is used}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid607729 . Here is how the updated code would look like to handle an ID that matches an OpenType feature. \par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 table(feature) \par eng \{\line \tab id = \'93cv43\'94;\line \tab id.hidden = "Engs";\line \tab name.1033 = string("Uppercase Eng alternates");\line \tab default = descender;\line \tab settings \{\line \tab \tab descender \{\line \tab \tab \tab value = 0;\line \tab \tab \tab name.1033 = string("Large eng with descender");\line \tab \tab \}\line \tab \tab base \{\line \tab \tab \tab value = 1;\line \tab \tab \tab name.1033 = string("Large eng on baseline");\line \tab \tab \}\line \tab \tab capital \{\line \tab \tab \tab value = 2;\line \tab \tab \tab name.1033 = string("Capital N with tail");\line \tab \tab \}\line \tab \tab short \{\line \tab \tab \tab value = 3;\line \tab \tab \tab name.1033 = string("Large eng with short stem");\line \tab \tab \}\line \tab \}\line \} \par endtable; \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid607729 \par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 table(substitution) \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10248196 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 if (eng == descender && eng__Engs == descender)}{ \rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 // rules to produce large eng with descender}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 endif; \par if (eng == base || (eng__Engs == base && eng__cv43 == descender))}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 // rules to produce large end on baseline}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 endif; \par if (eng == capital || (eng__Engs == capital && eng__cv43}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 ==}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 descender))}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 // rules to produce capital N with tail}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 endif; \par if (eng == short || (eng__Engs == short && eng__cv43 == descender))}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 // rules to produce large eng with short stem}{ \rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid10248196 \line }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 endif; \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid607729 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid607729\charrsid607729 endtable; \par {\*\bkmkstart _Toc40864631}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Reference{\*\bkmkend _Toc40864631} \par {\*\bkmkstart _Toc40864632}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Attributes{\*\bkmkend _Toc40864632}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This section provides a reference summary of each of the different types of attributes that are currently available in Graphite (excluding glyph metrics). Attributes only have meaning in certain contexts. These contexts are within a particular table type or as a glyph attribute which is passed to a slot. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Named numerical glyph attributes \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The user can define arbitrary glyph attributes in the glyph table. They consist of a name assigned a numeric value. The name can then be read later in any table for any purpose the author desires. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 advance}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9377239 attribute }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (adv}{\pard\plain \ltrpar \s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 adv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5983729 attribute }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is only applicable in the positioning table. It specifies the distance between the origins of two glyphs. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Advance.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are set or read independently of each other. By default the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 advance }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 of a slot is equal to the advance of the glyph in the slot (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 advanceheight}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \cs30\v\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid6453180 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 advanceheight}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advancewidth}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph met rics). It controls the positioning of the glyph to the right of the glyph it is set on. Increasing the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 adv.x }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value will move the next glyph's position to the right. A typical GDL statement would use the += or -= operators to do this is, for instance: \par }\pard\plain \ltrpar\s61\ql \li720\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 glyphToAdjust \{adv.x += 100m\} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 All glyphs following on the same line will be moved relative to their screen position.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6453180 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6453180\charrsid6453180 a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 dv }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 shift }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6453180 ttributes a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 re used together for kerning. \par {\*\bkmkstart _Toc441048637}{\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.3\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attach{\*\bkmkend _Toc441048637}}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9377239 attribute }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (att}{\pard\plain \ltrpar \s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 att}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9377239 attribute }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 All the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136\charrsid6453180 attach }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attributes are slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s and are only applicable within a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 positioning}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table. There are four sub-attributes of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 attach}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and they are used to indicate how two glyphs (or glyph slots) are positionally attached to each other. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.3.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Several types of named glyph attributes have special support. For creating attachment points, three functions exist: }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 point}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 point}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpath}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpath}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpoint}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Setting a name equal to one of these functions creates a set of glyph attributes. (See the Advanced Concepts section.) The set of attributes so created will then be implicitly used with the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.at} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.at}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.with}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s. Attachment points are created in the glyph table. The name of a particular attachment point is private to a particular glyph, thus different glyphs may have the same names for their attachment points. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.3.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attach.to}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 attach.to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This is a slot reference to another slot in the form }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\i\f2\fs20\insrsid1006136 n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 where }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\i\f2\fs20\insrsid1006136 n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is the context reference indicating which slot this slot is to be attached to. The process of attaching two slots sets the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute to false by default. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.3.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attach.at}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 attach.at}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This slot attribute specifies the name of the attachment point on the glyph that this glyph is attaching to. This attribute works in conjunction with }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to provide relative positioning of the two glyphs. Notice that the point named in this attribute is on the glyph that doesn't move. The point name is a named glyph attribute defined in the glyph table. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.3.4\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attach.with}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 attach.with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This slot attribute specifies the name of the attachment point on this glyph which is positioned over the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach.at}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point on the other glyph. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.3.5\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attach.level}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid1006136 attach.level}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This slot attribute specifies the level number of the attachment for purposes of calculating composite metrics. The level number can be used as a dotted postfix w ith glyph metrics. When accessing composite metrics for a group of glyphs attached together all attachments at the specified level or lower are used. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.4\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 breakweight}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (break}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute of a glyph is set in the glyph table or by default. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute of a slot is determined from the glyph in that slot, but may also be set in the line-breaking table to provide contextual line-breaking information to the line-breaking algorithm. The lower the value of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , above 0, the higher the priority of the line-break. This attribute can also be read from the line-break pseudo-character to determine its actual break weight. \par {\*\bkmkstart _Toc441048638}{\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.5\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 collision \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9835975 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid7547338 collision}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9835975 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid661883 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid661883 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid661883\charrsid3947043 collision}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1379877 attributes}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid661883 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid7547338 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attributes are used to control the behavior of automatic collision avoidance mechanism. All of them are}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9835975 both glyph and slot attributes except}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid9835975\charrsid13253547 collision.complexFit }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid9835975 which }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 is only a glyph attribut}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9835975 e}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1014291 \hich\af143\dbch\af0\loch\f143 7.1.5.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1014291 collision.complexFit}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 on.complexFit}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1014291 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9192740 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1014291 This glyph attribute indicates that the shape of the glyph is such that the collision algorithm needs a finer-grained estimate of the glyph shape. This is useful for glyphs with concave edges.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9192740 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid9192740 \hich\af143\dbch\af0\loch\f143 7.1.5.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9192740 collision.exclude.glyph, collision.exclude.offset.x/y}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 on.exclude.X}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9192740 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10641448 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9192740 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid9192740\charrsid9192740 collision.exclude.glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9192740 attribute provides a way to expand the shape of the glyph that is used }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10641448 to avoid collisions. The value of the attribute is a glyph ID, and that glyph is added to the shape of the main glyph for use by the collision avoidance algorithm. The offset attributes allow the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid10641448\charrsid10641448 exclude.glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10641448 to be positioned appropriately relat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9835975 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10641448 ive to the main glyph.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9192740\charrsid1014291 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.5.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 collision.flags}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 on.flags}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 This attribute indicates how the glyph should be treated by the collision avoidance algorithm. The value is a bitmap containing the following values: \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar \s24\ql \fi-360\li720\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls36\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 FREEZE = 0: don\rquote t move this glyph. \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}FIX = 1: this glyph should be moved by the algorithm if necessary. \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IGNORE = 2: this glyph should be ignored by the algorithm. \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}START = 4: this glyph marks the beginning of a sequence whose glyphs may collide (generally the first glyph after a space). \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}END = 8: this glyphs marks the end of a sequences whose glyphs may collide (generally the last glyph before a space). \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab} KERN = 16: this glyph should be kerned if necessary to avoid colliding with a following glyph (generally the last glyph of a contextual sequence). \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IS}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15149892 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2256505 SPACE = 128: this glyph is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13387249 white space (or a visible glyph that should be treated as white space).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12464051 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid1769921 setbits}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12464051 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid12464051 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12464051 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid12464051 setbits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12464051 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid1769921 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 function is a good way to set and clear these bits; e.g.: \par }\pard\plain \ltrpar\s61\ql \li720\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5137802\charrsid5137802 #define setbits(f,m,v) (f & (~m)) | v}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5137802 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458\charrsid1456354 #define SET_IGNORE(f) }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 setbits(f, 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458\charrsid1456354 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458\charrsid1456354 )\line #define CLEAR_IGNORE(f) setbits(f, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458\charrsid1456354 , 0)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid13253547 \hich\af143\dbch\af0\loch\f143 7.1.5.4\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 collision.margin, collision.marginweight}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 on.margin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 on.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086\charrsid5660397 marginweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13253547 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13253547\charrsid1253877 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13253547 collision.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13253547\charrsid1253877 margin }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 attribute indicates how much margin should be kept between the glyph and surrounding glyphs. The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13253547\charrsid1253877 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13253547 collision.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13253547\charrsid1253877 marginweight }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13253547 attribute indicates how much the algorithm should penalize a violation of the margin, compared to other costs. These can be defined as either a glyph or slot attributes. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.5.5\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 collision.min.x, collision.min.y, collision.max.x, collision.max.y}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid12846458 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 on.min.x/y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 collis}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid14104185 i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid4728086 on.max.x/y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14352584 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 Glyphs that can be }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14352584 shifted}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 by the collision algorithm have limiting rectangle in which they can move. These attributes indicate the movement limits for the glyph. These can be defined as either a glyph or slot attributes. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4663923 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4663923 Unlike the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4663923\charrsid4663923 shift.x }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4663923 attribute, for}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4663923\charrsid4663923 collision.max.x }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4663923 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4663923\charrsid4663923 collision.min.x, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4663923 positive values always refer to right-ward movement and negati}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10758255 ve values to left-ward movement, regardless of the script direction.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4663923 \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12341454 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12341454 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12341454\charrsid525975 max.x }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12341454 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12341454\charrsid525975 min.x }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12341454 attributes also indicate how much kerning can be applied;}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12341454\charrsid14352584 max.y }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12341454 and}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12341454\charrsid14352584 min.y }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12341454 are not relevant for kerning. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.6\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 component{\*\bkmkend _Toc441048638}}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 component}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (comp}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 comp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12341454 }{\rtlch\fcs1 \ab\ai\af0 \ltrch\fcs0 \b0\i\insrsid12341454\charrsid12341454 [Not implemented]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Ligatures may be described as having components. A component-structured ligature}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 allows the cursor to be placed within the ligature and allows association between the components of the ligature and underlying codepoints. Each ligature component has a glyph attribute name which is private to the glyph in questio n and is arbitrary. In the following descriptions, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 will be used to mark where a component name would be placed. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10755847 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid10755847 Note: ligature components have not been implemented in the Graphite2 engine (as of version 1.3.12).}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid12341454\charrsid15085311 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.6.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 component..box}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\insrsid1006136 component}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This is a glyph attribute and should only be set in the glyph table. It is meaningless in all other table types. Each ligature component has a bounding box}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bounding box}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 which is a list of 4 values. \par For creating ligature components, the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 box}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 box}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function exists. It will create a set of glyph attributes when assigned to the }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 component.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute. These attributes will be implicitly associated with the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136\charrsid525975 component..reference }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.6.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 component..reference}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\insrsid1006136 component.X.ref}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (ref}{\pard\plain \ltrpar \s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\insrsid1006136 ref}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This is a slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 used in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 substitution}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 tables to associate an underlying codepoint with a surface glyph component. Thus ligature components must go through the sa me cursor tracking that any other slot would. In other words, ligature components are very much like individual slots for cursor tracking purposes.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5186698 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.7\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directionality}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 directionality}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (dir}{\pard\plain \ltrpar \s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 dir}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This attribute can be set for glyphs in the glyph table and slots in the substitution table. It can only be set on glyphs that either do not have associated Unicode }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s in the cmap (including pseudo glyphs) or which correspond to Unicode }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s in the PUA}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 PUA}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Glyphs associated with Unicode }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\insrsid1006136 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s use the standard directionality}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directionality}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 for that codepoint. It is used by the directionality algorithm to arrive at a glyph order for rendering.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5186698 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.8\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid16655118 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 insert}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid16655118 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16655118 attribute}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 used in either the substitution or positioning table indicates whether a glyph can have the cursor placed before it. By default this attribute is set to 0 (false) on attachment, but there are situations where this is not the required behavior. In such a situation, }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert = 1 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid1006136 (true)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is used to indicate that the cursor can be placed before the glyph. This is used for side attachment as in nastaliq}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 nastaliq}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1266258 \hich\af143\dbch\af0\loch\f143 7.1.9\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 justify}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5777649 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid5777649 justify}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16655118 attribute} {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1266258 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1266258\charrsid11366356 justify }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 attributes are used to accomplish justification\emdash stretching or shr inking a line of text to fit within a given amount of space.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11884926 In the c}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10755847 urrent version of Graphite}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11884926 , the level indicator is optional; for instance, either justify.0.stretch or justify.stret}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10755847 ch may be used (as of version 1.3.12 of the Graphite2 engine).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid7874519 \hich\af143\dbch\af0\loch\f143 7.1.9.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid7874519 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 justify.shrink}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid7874519 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5777649 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid5777649 justify.shrink}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7874519 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 This attribute indicates the maximum amount by which the glyph can be shrunk. It is both a glyph and slot attribute. The value is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4982180 in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 em-units. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1266258 \hich\af143\dbch\af0\loch\f143 7.1.9.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid1266258 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 justify.step}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid1266258 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5777649 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid5777649 justify.step}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1266258 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 This attribute indicates the step or \'93chunk\'94 by which the glyph can be stretched or shrunk. A positive value relates to stretching and a negative value relates to shrinking. It is both a glyph and slot attribute. The value is in em-units. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid7874519 \hich\af143\dbch\af0\loch\f143 7.1.9.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid7874519 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 justify.stretch}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid7874519 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5777649 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid5777649 justify.stretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7874519 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 This attribute indicates the maximum amount by which the glyph can be stretched. It is both a glyph and slot attribute. The value is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4982180 in }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7874519 em-units. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid13902579 \hich\af143\dbch\af0\loch\f143 7.1.9.4\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid13902579 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13902579 justify.weight}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid13902579 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5777649 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid5777649 justify.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13902579 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1266258 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13902579 This attribute indicates the preference that the justification algorithm should give to stretching this glyph. It is both a glyph and slot attribute. The default value is 1 and the maximum value is 255.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1266258 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid11366356 \hich\af143\dbch\af0\loch\f143 7.1.9.5\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid11366356 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11366356 justify.width}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid11366356 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5777649 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\insrsid5777649 justify.width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5777649 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13902579 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11366356 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11366356 This slot attribute indicates the amount of stretching (positive value) or shrinking (negative value) that has been assigned to this glyph by the justification algorithm.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4982180 The value is in em-units.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11366356\charrsid11366356 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.10\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 kern }{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16655118 attribute}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2706971 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Kerning is a slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2706971 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 used in the positioning table and is implemented by applying }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2706971 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2706971 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . It cannot be read.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2706971 \par Note that this attribute has nothing to do with the kerning that happens during the automatic collision avoidance algorithm.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.11\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 position}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute} }}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (pos}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 pos}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 allows one to determine the distance between two glyphs. It is only readable in the substitution or positioning table. Both }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 exist. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Pos.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 provides the distance of a glyph's upper left corner from the baseline. Note that the value of any single }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 value is not meaningful; only the difference between two }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pos.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 values is useful. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.12\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 sequence \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16655118 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid7547338 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 sequence}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16655118 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid4728086 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid4728086\charrsid7957769 sequence}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16655118 attributes}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4728086 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid7547338 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attributes }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3673855 can be}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 used to achieve the characteristic behavior of Nastaliq-style script. They constrain how the glyphs are moved relative to each other, and can be used to enforce a visual sequencing effect. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.12.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 sequence.class \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 Glyphs that are handled similarl y and positioned relative to each other should be put in the same class. The classes are indicated by arbitrary integers. For instance, you might put all the upper nuqtas in class 1, the lower nuqtas in class 2, etc. \par These attributes all exist as both glyph attributes and slot attributes. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.12.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 sequence.order \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11954014 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid7420570 order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute indicates how glyphs should be ordered relative to other glyphs in the same class, or the glyphs in the \'93proximate class\'94 (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 sequence.p}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid3689205 roxClass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 ). The value is a bitmap with the following flags: \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar \s24\ql \fi-360\li720\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls37\adjustright\rin0\lin720\itap0\pararsid2776810 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 NONE = 0: don\rquote t enforce any order relative to other glyphs. \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid7147797 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7147797 LEFT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 DOWN = 1: keep subsequent glyphs in the same class positioned to the left and down from this glyph. \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid7147797 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7147797 RIGHT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 UP = 2: keep subsequent glyphs positioned to the right and up from this glyph. (Note: this value is included for completeness; it has no known real-life application.) \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar \s24\ql \fi-360\li720\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls37\adjustright\rin0\lin720\itap0\pararsid7147797 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 NOABOVE = 4: prevent this glyph from being positioned above glyphs in the}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid2256891 proxClass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 . For instance, the following code might be used to set the attribute on a lower diacritic to keep it below lower nuqtas: \line \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 #define LNUQTA 1 // arbitrary\line #define LDIAC 2 // arbitrary\line #define NOABOVE 4\line c_lowerDiac \{sequence \{class = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid12063036 LDI}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 AC; proxClass = LNUQTAS; }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid12846458 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 \tab order = NOABOVE;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid12063036 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 \par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12846458 \loch\af3\dbch\af0\hich\f3 \'b7\tab}NOBELOW = 8: prevent this glyph from being positioned below glyphs in the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid2256891 proxClass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 . For instance, it can used to force upper diacritics to be kept above upper nuqtas. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.12.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 sequence.proxClass \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7147797 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 Sometimes glyphs of one class need to be positioned relative to the glyphs of a different class. The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid9574336 proxClass }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute indicates which \'93proximate class\'94 should be considered. For instance, you could set the}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid2256891 sequence.proxClass }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute of an upper diacritic to the class containing the upper nuqtas, as well as setting}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 sequence.order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 to 8 (NOBELOW). \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.12.4\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 sequence.above.xoffset/weight \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7147797 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 These attributes are used by glyphs that have}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 sequence.order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 set to LEFTDOWN. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12846458 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid15209531 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 sequence.above.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid15209531 xoffset }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute specifies how close a neighboring sequenced glyph positioned above can approach horizontally to the margin of the glyph in question, where the margin is specified by}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid12149987 collision.margin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 . (IS IT TO THE MARGIN OR TO THE BOUNDING BOX?) \par The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 weight }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute indicates how costly encroachment into thi s horizontal space should be considered, compared to other violations (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 collision.marginweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 sequence.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid15209531 below}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 / valign}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid15209531 .weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 , etc.) The further into this space the neighboring glyph would go, the higher the cost. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.12.5\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 sequence.below.xlimit/weight \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 These attributes are used by glyphs that have}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 sequence.order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7147797 set to LEFT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 DOWN. \par The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid5112622 sequence.below.xlimit }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute specifies how close a neighboring sequencing glyph that is vertically below the glyph in question can approach horizontally to the margin of that g lyph. (Note that a previous glyph that is positioned below is already in an infelicitous relationship to the glyph in question.) \par The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13304285 sequence.b}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 elow.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 weight }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute takes into account the amount the neighboring question is moved, relative to other costs (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 collision.marginweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 sequence.above/valign}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid15209531 .weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 , etc.) \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid12846458 \hich\af143\dbch\af0\loch\f143 7.1.12.6\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0\pararsid4728086 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 sequence.valign.height/weight \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12846458 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 These attributes are used by glyphs that have}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 sequence.order }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7147797 set to LEFT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 DOWN. \par The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid5112622 sequence.valign.height }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute indicates how far a neighboring sequenced glyph should be vertically offset from the glyph in question. This prevents a sequence of glyphs from aligning vertically and forming a straight horizontal line. \par The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 sequence.valign.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid13183894 weight }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 attribute indicates how costly alignment violations should be considered, compared to other violations (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458 collision.marginweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid12846458\charrsid15209531 sequence.above/below.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12846458 , etc.) \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.13\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 shift}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\f2\fs20\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is u sed in the positioning table. It displaces a glyph from its normal position without altering the screen position of any other glyph. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 Shift.x}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 shift.y}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 may be set and read independently of each other. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.14\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metrics}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 metrics}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glyph metrics are available in all tables as read only values. A previous section lists all available metrics. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.1.15\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 user }{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 user definable attributes}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8534141 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 There are sixteen user-definable slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8534141 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s with the names }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user1}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8534141 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 user3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , \'85, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 user16}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . See the description of these in the Advanced Concepts section.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8534141 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7156227 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \page }{\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7156227 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par {\*\bkmkstart _Toc40864633}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid7156227 \hich\af143\dbch\af0\loch\f143 7.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid7156227 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7156227 Attribute}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9383391 Table{\*\bkmkend _Toc40864633}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0\pararsid7156227 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid7156227 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7156227 attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7156227 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7156227 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Below is a table of all attributes along with the GDL table(s) they can be used in. Rules in subsequent tables can query attributes that are usable by previous tables. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\pard \ltrpar\s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0 \b\fs28\insrsid1006136\charrsid13636493 Glyph Attributes}{\pard\plain \ltrpar \s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glyph attribute}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid13636493 \line }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid1006136 Glyph Table\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh \brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid8788263 mirror \{glyph; isEncoded\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow1\irowband1\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \fi-432\li432\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid8534141 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 collision \{flags;\line min \{x; y\}; max \{x; y\};\line margin; marginweight;\cell }\pard \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid6038399 metrics}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\insrsid6038399 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\insrsid6038399 (read only)\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6038399 \trowd \irow2\irowband2\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 component. (box)\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6038399 named number}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow3\irowband3\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 directionality\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6038399 named points (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 gpoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6038399 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 point}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6038399 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 gpath}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6038399 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \fi-432\li432\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid14450529 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13636493 justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\f2\fs20\super\insrsid7228255 \chftn {\footnote \ltrpar \pard\plain \ltrpar \s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 In the current version of Graphite2 (1.3.12), the level indictor is optional; i.e.,}{\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \cs30\f2\fs16\insrsid10357361\charrsid16733953 justify.stretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 ,}{\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \cs30\f2\fs16\insrsid10357361\charrsid16733953 justify.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 , etc. are also valid syntax.}}}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13636493 \{stretch; shrink; step; weight\}\cell }\pard \ltrpar\s24\ql \fi-432\li432\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid6038399 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 sequence \{class; proxClass; order; above \{xoffset; weight\}; \line below \{xlimit; weight\}; \line valign \{height}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14567862 ; weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 \}\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13636493 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13636493 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb \brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324 \row \ltrrow}\trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\pard\plain \ltrpar\s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0 \b\fs28\insrsid1006136\charrsid13636493 Slot Attributes}{\pard\plain \ltrpar\s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs28\alang1025 \ltrch\fcs0 \v\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136\charrsid13636493 {\xe {\rtlch\fcs1 \af0\afs28 \ltrch\fcs0 \fs28\insrsid1006136\charrsid13636493 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0 \b\fs28\insrsid1006136\charrsid13636493 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow6\irowband6\ltrrow \ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar\s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid1006136 Linebreak Table\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\row \ltrrow}\trowd \irow8\irowband8\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh \brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 breakweight\cell }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid1006136 user1, user2, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 etc.\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow8\irowband8\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\trowd \irow9\irowband9\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\pard\plain \ltrpar \s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid1006136 Substitution Table\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow9\irowband9\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\row \ltrrow}\trowd \irow10\irowband10\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 component..reference\cell }\pard \ltrpar\s24\ql \fi-432\li432\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid14450529 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3754495 justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\super\insrsid7228255\charrsid7228255 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3754495 \{stretch; shrink; step; weight\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow10\irowband10\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 directionality\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3754495 position \{x; y\} }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3754495 (read only)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow11\irowband11\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 insert\cell }\pard \ltrpar\s24\ql \fi-720\li720\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid3754495 user1, user2, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3754495 etc.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow12\irowband12\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb \brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324 \row \ltrrow}\trowd \irow13\irowband13\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\pard\plain \ltrpar\s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid1006136 Justification Table\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow13\irowband13\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\row \ltrrow}\trowd \irow14\irowband14\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh \brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\pard\plain \ltrpar \s24\ql \fi-432\li432\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid14450529 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\super\insrsid16733953\charrsid7228255 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \{stretch; shrink; step; weight\} }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (read only)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \cell }\pard \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\super\insrsid7228255\charrsid7228255 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 .width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow14\irowband14\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\trowd \irow15\irowband15\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\pard\plain \ltrpar \s24\qc \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid1006136 Positioning Table\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow15\irowband15\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9432\clshdrawnil \cellx9324\row \ltrrow}\trowd \irow16\irowband16\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 advance \{x; y\}\cell justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\super\insrsid7228255\charrsid7228255 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 .width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow16\irowband16\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 attach \{to; at; with; level\}\cell position }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 (read-only)\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow17\irowband17\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \fi-432\li432\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid3758916 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 collision }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 \{flags;\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid15273263 min \{x; y\}; }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 max \{ x; y\};\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid15273263 margin; marginweight;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3758916 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid15273263 exclude \{glyph; offset \{x; y\}} {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14222000 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14450529 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \cell }\pard \ltrpar \s24\ql \fi-432\li432\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid14450529 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid15273263 sequence \{class; proxClass; order; above \{xoffset; weight\}; }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid15273263 below \{xlimit; weight\}; }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid6038399 \line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid9504423 valign \{height}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid14567862 ; weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid9504423 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid15273263 \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow18\irowband18\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 shift \{x; y\}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow19\irowband19\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \fi-720\li720\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\pararsid13571676 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 kern \{x; y\} }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13571676 (write only)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 \cell }\pard \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid14450529 {\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid13571676 user1, user2,}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\fs20\insrsid14450529 \'85,user16}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13571676 \trowd \irow20\irowband20\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row \ltrrow}\pard\plain \ltrpar \s24\ql \fi-432\li432\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\pararsid14450529 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 justify.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\super\insrsid13571676\charrsid7228255 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 \{stretch; shrink; step; weight\} }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13571676 (read only)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 \cell }\pard \ltrpar\s24\ql \fi-1440\li1440\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\pararsid13571676 { \rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid13571676 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13571676 \trowd \irow21\irowband21\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx4608\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4716\clshdrawnil \cellx9324\row {\*\bkmkstart _Toc40864634}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 7.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Abbreviations{\*\bkmkend _Toc40864634}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 abbreviations}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The following table lists all abbreviations available in GDL. These abbreviations are defined by #including the \'93stddef.gdh}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 stddef.gdh}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \'94 file. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\pard \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 advance\cell adv\cell \cell environment\cell env\cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 advanceheight\cell ah\cell \cell justification\cell just\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 advancewidth\cell aw\cell \cell linebreak\cell lb\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 attach\cell att\cell \cell leftsidebearing\cell lsb\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 boundingbox\cell bb\cell \cell positioning\cell pos\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 breakweight\cell break\cell \cell reference\cell ref\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 component\cell comp\cell \cell rightsidebearing\cell rsb\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr \brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 directionality\cell dir\cell \cell substitution\cell sub, subs\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb \brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl \brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row \ltrrow}\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 endenvironment\cell endenv\cell }\pard \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid3689205 \cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3689205 \trowd \irow8\irowband8\lastrow \ltrrow\ts11\trgaph108\trleft-108\trkeep\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid3689205\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1908\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrdb\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx5040\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrdb\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx7200\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth990\clshdrawnil \cellx8190\row {\*\bkmkstart _Toc40864635} {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 8\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Language Structure{\*\bkmkend _Toc441048648}{\*\bkmkend _Toc40864635} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 To help with implementation and a conceptual understanding of the description language, we examine here the description language as a general computer language. \par The first important concept is that the language is non-procedural}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 non-procedural}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Thus all procedural elements should be understood in this light. Functions}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 functions}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 should only be used as ways of getting at atomic values and should have no side effects. The selection mechanisms (}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 if()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 pass()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) should be understood as such, as ways of selecting rules. \par It is anticipated that a description file will be processed using a two stage compiler: parser}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 parser}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and compiler}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 compiler}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . For this reason the language has been designed to be as gen eric as possible at the surface syntax, and to have as much of the particularization passed down to the semantic level where the compiler can deal with it. Thus, all functions are resolved by the compiler rather than the parser. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 8.1.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Primitive Type}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 primitive type}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 At the lowest level there are a few basic types and these have been minimized and made as ubiquitous as possible. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 8.1.1.1\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Case Sensitivity}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 case sensitivity}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 User-defined names (classes, features, and glyph attributes) are case sensitive and must use only 7 bit ASCII characters. Keywords, such as }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , are case insensitive and should never be used as a user-defined name. Slot attribute}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 slot attribute}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s and glyph identification functions are case sensitive and must be in lower case. The global} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 global}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 settings and directives must be in mixed case as specified in this document. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 8.1.1.2\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Number}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 number}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 One primitive is the number. By default a number is a number however it is expressed. For positioning information, it is necessary to allow a number to be scaled based on the value of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 MUnits}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 MUnits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 directive. Scaled numbers are indicated by postfixing an \lquote m}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 m}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \rquote . \par {\listtext\pard\plain\ltrpar \s5 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\fs22\insrsid1006136 \hich\af0\dbch\af0\loch\f0 8.1.1.2.1\tab}}\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar \tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Reference}{\pard\plain \ltrpar\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar\tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 reference}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 This variant of number can be thought of as another type of units. References occur within the context of a rule and are used to indicate that the value to be used should be resolved to a location in the string or glyph stream rather than as simply a number. References are preceded by \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 .\'94 \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 8.1.1.3\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 String}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 string}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 In GDL, strings contain 8-bit}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 8-bit}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 characters, possibly with an associated codepage}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Internally strings are converted to Unicode. \par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 8.1.1.4\tab}}\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 List}{\pard\plain \ltrpar\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 list}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Lists can consist of any other primitive type. There has been nothing in the language which requires that lists should be able to nest. Apart from this, lists are untyped. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 8.1.2\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Implicit Glyph Attributes}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid3343437 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3343437 glyph attribute\:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 implicit}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3343437 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Using }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpath}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 gpath}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 gpoint}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 gpoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 point}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 point}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 function}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 box}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\insrsid1006136 box}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 to create attachment point}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 attachment point}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 s and ligature}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ligature}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 component boxes is really shorthand for specifying several attributes at once. The shorthand form is not required. Here is a table specifying the equivalences. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\pard\plain \ltrpar\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\fs24\insrsid1006136 The following shorthand \'85\cell }\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\fs24\insrsid1006136 \'85 is equivalent to:\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 = gpath()\cell .gpath = \line .xoffset = 0\line .yoffset = 0\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow1\irowband1\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row \ltrrow}\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 = gpath(, , )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 .gpath = \line .xoffset = \line .yoffset = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow2\irowband2\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row \ltrrow}\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 = gpoint()\cell .gpoint = \line .xoffset = 0\line .yoffset = 0\cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 = gpoint(, , )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 .gpoint = \line .xoffset = \line .yoffset = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row \ltrrow}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 = point(, )\cell .x = \line .y = \line .xoffset = 0\line .yoffset = 0\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow5\irowband5\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row \ltrrow}\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 = point(, , , )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 .x = \line .y = \line .xoffset = \line .yoffset = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow6\irowband6\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row \ltrrow}\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 comp. = box(, , , )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs30\f2\fs20\insrsid1006136 comp..left = \line comp..bottom = \line comp..right = \line comp..top = }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \trowd \irow7\irowband7\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6138\clshdrawnil \cellx6030\clvertalt\clbrdrt \brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3510\clshdrawnil \cellx9540\row }\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par For example, the following code: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid3673855 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table(glyph);\line \tab gA = unicode(0x0041) \{udap = gpath(3)\};\line \tab gB = unicode(0x0301) \{ lap = point(adv.width / 2, bb.bottom)\};\line endtable; \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is equivalent to: \par }\pard\plain \ltrpar\s31\ql \li720\ri0\sb120\keep\widctlpar\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 table (glyph);\line \tab gA = unicode(0x0041);\line \tab gA.udap.gpath = 3;\line \tab gA.udap.xoffset = 0;\line \tab gA.udap.yoffset = 0;\line \tab gB = unicode(0x0301);\line \tab gB.lap.x = adv.width / 2;\line \tab gB.lap.y = bb.bottom;\line \tab gB.lap.xoffset = 0;\line \tab gB.lap.yoffset = 0;\line endtable; \par {\*\bkmkstart _Toc441048649}{\*\bkmkstart _Toc40864636}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 9\tab}}\pard\plain \ltrpar \s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Glossary{\*\bkmkend _Toc40864636}}{\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 glossary}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 advance height}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 advance height}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the amount by which the current display position is adjusted vertically after rendering a given glyph. This number is generally only meaningful for vertical}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 vertical}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing sys tems, and is usually zero within fonts used for horizontal writing systems. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 advance width}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 advance width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the amount by which the current display position is adjusted horizontally after rendering a given glyph. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 ASCII}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 ASCII}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a standard that def ines the 7-bit numbers (codepoints) needed for the U.S. English}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 English}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing system. (American Standard Code for Information Interchange) \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 ascent}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 ascent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the distance between the top of the line of text and the baseline, as defined within a font. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 baseline}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 baseline}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the vertical point of origin for all the glyphs rendered on a single line. Roman scripts have a baseline on which the glyphs appear to \'93sit,\'94 with occasional descenders below. Many Indic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Indic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scripts have a \'93hanging\'94 baseline, in which the bulk of the letters are placed below the baseline, with occasional ascenders above the line. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 bidirectionality}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 bidirectionality}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the characteristic of some writing systems to contain ranges of text that are written left-to-right as well as right-to-left}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 right-to-left}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Specifically, in Arabic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Arabic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 and Hebrew}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Hebrew}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 scripts, most text is written right-to-left, but numbers are written left-to-right. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 bounding box}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 bounding box}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the rectangular area containing the entire visual portion of a glyph. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\f143\insrsid1006136 character}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 character}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash an abstract symbol used in writing, and the most fundamental unit of data representation. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 cmap}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 cmap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash character-glyph map: the table within a font containing a mapping of codepoints (characters) to glyph ID numbers. In a Unicode-based font the codepoints are Unicode values; in other fonts they may correspond to other encodings. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 codepage}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 codepage}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a mapping between a set of 8-bit}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 8-bit}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 or double-byte codepoints and corresponding Unicode codepoints. Each codepage has an identifying number used to access the mapping in system functions; for example, the default Roman codepage for Western European languages is codepage 1252} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 codepage 1252}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 codepoint}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 codepoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a number that represents a character. For instance, in Unicode and ASCII standards, the number 97 is used to represent the lowercase \lquote a\rquote . \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 descent}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 descent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the distance between the bottom of the line of text and the baseline, as defined within a font. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 diacritic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 diacritic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a mark attached to another character to modify it in some way. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 em square}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 em square}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the square grid which is the basis for the design of all glyphs within a given font; so called because it historically corresponded to the size of the letter M. When rendering, the requested point size specifies the size of the font\rquote s em square to which all glyphs are scaled. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 em unit}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 em unit}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the number of units defined in a font\rquote s em square. All coordinates for points in a glyph are defined using em units. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 font}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 font}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a file containing a collection of glyphs used together to render text. \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\sl-260\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 glyph}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\sl-260\slmult0 \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{ \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a shape that is the visual representation of a character. Different fonts will have slightly different shapes representing the same character. For instance, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f61\fs26\insrsid1006136 a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f71\fs20\insrsid1006136 a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , and }{\rtlch\fcs1 \ai\af2 \ltrch\fcs0 \i\f2\fs28\insrsid1006136 a}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 are all glyphs that correspond to the character \lquote a\rquote . \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 glyph ID}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 glyph ID}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the unique number within a font identifying a single glyph. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 kern}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash to adjust the display position while rendering in order to visually improve the spacing between two glyphs. For instance, kerning causes the word \'93WAVE\'94 to be rendered as \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \expnd-6\expndtw-30\insrsid1006136 WAV}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 E\'94, reducing the illusion of white space between the diagonal strokes of the W, A, and V. In terms of Graphite slot attributes, kern is an adjustment of both shift and advance: the origin of the glyph is changed, and the display position is adjusted by an equal amount after the glyph is rendered. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 left-side bearing}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 left-side bearing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the white space at the left edge of a glyph\rquote s visual representation, or more specifically, the distance between the current horizontal display position and the left edge of the glyph\rquote s bounding box}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bounding box}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . A positive left-side bearing in dicates white space between the glyph and the previous one; a negative left-side bearing indicates overlap or overhang between them. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 ligature}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 ligature}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a single shape or glyph that represents two or more underlying characters. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 Postscript}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 Postscript}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a name associated with a glyph by the font\rquote s designer; originally a name assigned by Adobe to certain standard glyphs. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\f143\insrsid1006136 Private Use Area (PUA}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\f143\insrsid1006136 PUA}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\f143\insrsid1006136 )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a range of Unicode codepoints (E000 \endash F8FF and planes 15 and 16) that are reserved for private definition and use within an organization or corporation. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 render}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 rendering}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash to display or draw text on an output device (computer screen, paper, etc.). \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 right-side bearing}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 right-side bearing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the white space at the right edge of a glyph\rquote s visual representation, or more specifically, the distance between the display position after a glyph is rendered and the right edge of the glyph\rquote s bounding box}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 bounding box}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . A positive right-side bearing indicates white space between the glyph and the following one; a negative right-side bearing indicates overlap or overhang between them. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 script}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 script}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a collection of characters and their basic behaviors that are mutually associated and identifiable, such as Roman}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Roman}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , Arabic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Arabic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , Cyrillic}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Cyrillic}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , Chinese}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Chinese}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , etc. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 side bearing}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 side bearing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the white space at the edge of a glyph; see}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 left-side bearing, right-side bearing.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\f143\insrsid1006136 Unicode}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\f143\insrsid1006136 Unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash a compreh ensive character-encoding standard intended to cover all the scripts of the world. In the Unicode standard, characters are typically encoded using 16-bit codepoints. \par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 writing system}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \cs62\b\f143\insrsid1006136 writing system}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 }}} \sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \endash the subset of a script that is used by a particular language in a particular location or situation, characterized by rendering behavior, sorting, hyphenation conventions, etc. For example, English}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 English}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 , German, and French all use Roman}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Roman}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 script, but have distinct writing systems. Mongolian} {\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Mongolian}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 can be written with two writing systems from two script families: Mongolian and Cyrillic}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Cyrillic}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 . Ancient and modern Greek}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Greek}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 use different writing systems that are varieties of the same basic Greek script. \par {\*\bkmkstart _Toc40864637}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs28\kerning28\insrsid1006136 \hich\af143\dbch\af0\loch\f143 10\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Appendix}{\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\pagebb\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls33\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs28\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 appendix}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 : The need for Graphite{\*\bkmkend _Toc40864637} \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The most immediate question that comes to mind when considering a new smart font description format is why the need for yet another description format? In answer to this question, we need to consid er those already in existence and whether they meet our needs. \par A general consideration to make when deciding whether to break with existing standards is to see what support exists for those standards and the difficulty of providing the support should it be lacking. \par {\*\bkmkstart _Toc40864638}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 10.1\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 OpenType{\*\bkmkend _Toc40864638}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 OpenType}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 The natural solution for the PC is to consider Microsoft\rquote s solution to the smart font rendering problem. This is OpenType, a set of tables which are added to a TrueType font to allow for glyph substitution, glyph positioning, multiple baselines and justification. \par One of the stated principles of OpenType}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid1006136 \chftn {\footnote \ltrpar \pard\plain \ltrpar\s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 \'93 As much as possible, the tables of the OpenType layout define only the information that is specific to the font layout. The tables do not try to encode information that remains constant within the conventions of a particular language or within the typography of a particular script. Such information that would be replicated across all fonts in a given language belongs in the text-processing app lication for that language, not in the fonts\'94 (from OpenType Specification v1.2, November 1998; see www.microsoft.com/typography/tt/tt.htm).}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is that writing system}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 writing system}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 behavior should be handled in the application rather than in the font or operating system (despite this being against }{\rtlch\fcs1 \af0 \ltrch\fcs0 \fs20\insrsid1006136 ISO}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 recommendations}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\super\insrsid1006136 \chftn {\footnote \ltrpar \pard\plain \ltrpar\s26\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs44\fs18\super\insrsid10357361 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10357361 ISO/IEC JTC1/SC18/WG8 "PDTR15285. An operational model for characters and glyphs"}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ). This results in OpenType lacking in some areas. The particular area of concern is that OpenType does n ot support glyph reordering, a basic required mechanism. OpenType\rquote s features are also weak in that they are only boolean and are not named, only consisting of a tag. \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\fs22\insrsid1006136 \hich\af143\dbch\af0\loch\f143 10.1.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Uniscribe}{\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Uniscribe}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Uniscribe is Microsoft's layout engine, which was first s hipped with Windows 2000. It will work in other 32 bit operating systems. It provides a programmer's API for smart script layout and rendering. It is built upon OpenType, and in addition to OpenType's capabilities, provides support for re-ordering and hit testing. Thus it removes some of the weaknesses inherent in OpenType. \par Unfortunately, Uniscribe has not been built in an extensible fashion, so no new behaviors can be added or changed. (See }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid1006136 Graphite: An Extensible Rendering Engine for Complex Writing Systems}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 for a discussion of the need for extensible rendering capabilities.) \par While Uniscribe is slated to support rendering of all of Unicode, it is not expected to provide any support for the Private Use Area. The PUA}{\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 PUA}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 is an essential part of the stra tegy of defining encodings for non-standardized scripts and those that are under development, so lack of PUA support is a critical problem. \par {\*\bkmkstart _Toc40864639}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 10.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 AAT{\*\bkmkend _Toc40864639}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 AAT}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 Apple Advanced Typography (formerly GX}{\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \v\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 GX}}}\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 ) is an existing format useable on the Mac by a few applications. Since it has been successfully used for a number of projects, it is difficult to say that it is severely lacking in any technical way. But, while the state machines are a powerful pattern m a tching mechanism, the actions available to any state machine are fairly weak, especially in the case of insertion. In addition, AAT has a number of implementation limitations especially regarding glyph insertion. This is not to say that any particular fon t could not be implemented in AAT, but that that implementation would be very different in design than for a rule based, higher level, linguistically motivated description. \par If AAT were chosen as a target technology, then we would have to implement a AAT eng ine for Windows. If we have to implement something, then we may as well take the opportunity of producing something more powerful and expressive. It is still intended to produce a AAT compiler, but this is a non-trivial activity, and may place some limita tions on any given description. \par Should either of these technologies, AAT or OpenType, become sufficiently ubiquitous and useable, then there is nothing to stop us changing direction to make use of them. But, at the time of writing, there is no foreseeable s olution for Windows, either available or even promised. Therefore it seems wise to develop our own technology, while monitoring the industry and being ready to adjust accordingly. \par {\*\bkmkstart _Toc40864640}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \b\f143\kerning20\insrsid1006136 \hich\af143\dbch\af0\loch\f143 10.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 SDF{\*\bkmkend _Toc40864640}}{\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb360\keep\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls33\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\v\f143\fs24\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033\insrsid1006136 {\xe {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 SDF}}}\sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8406997 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 An existing product within SIL ha s been developed to address the particular needs for context sensitive and cursive scripts. It provides good word positioning information and handles cursor tracking using Unicode codepoints. It only supports substitution without re-ordering and has no po sitioning support. As such it is a good start and is evidence of a pressing need for a sufficient solution for SIL applications.{\*\bkmkend _Toc441048649}\page Index \par }\pard \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 INDEX \\e " \'b7 " \\h "A" \\c "2" \\z "1033" }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \sect }\sectd \ltrsect\sbknone\linex0\headery706\footery706\cols2\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg \pard\plain \ltrpar \s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1734 \ltrch\fcs0 \f1734\lang1024\langfe1024\noproof\insrsid4675967 \zwnbo}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 - \'b7 19, 35 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 !}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 ! \'b7 26 \par != \'b7 26 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 #}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 # \'b7 34 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 #define}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 12, 13, 28, 46 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 #include}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 12, 13, 42 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 $}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 $ \'b7 31, 32, 34 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 &}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 && \'b7 26 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 *}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 * \'b7 7, 19, 35 \par *= \'b7 35 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 .}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 . \'b7 21 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 /}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 / \'b7 19, 35 \par /= \'b7 35 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 :}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 : \'b7 32, 34 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 ?}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 ? \'b7 7 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 @}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 @}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 10, 19, 32, 34, 74 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \\}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 \\n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 9, 22 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 \\t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 9, 22 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 ^}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 ^ \'b7 26 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 _}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 _ \'b7 4, 25, 29, 33 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 |}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 || \'b7 26 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 +}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 + \'b7 7, 19, 35 \par += \'b7 13, 35 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 <}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 < \'b7 26 \par <= \'b7 26 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 =}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 -= \'b7 35 \par == \'b7 26 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 >}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 > \'b7 26 \par >= \'b7 26 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 0}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 0xA000 \'b7 24 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 8}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 8-bit \'b7 8, 9, 31, 74, 76 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 A}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 AAT \'b7 78 \par abbreviations \'b7 73 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 adv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 adv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 66 \par advance \'b7 35, 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 advance}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 66 \par advance height \'b7 76 \par advance width \'b7 76 \par advanced concepts \'b7 43 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 advanceheight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35, 38, 66 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 advancewidth}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35, 38, 66 \par advancing \'b7 35 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 ah}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35, 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 ANY}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 6 \par appendix \'b7 78 \par Arabic \'b7 3, 12, 14, 36, 39, 56, 76, 77 \par arrow keys \'b7 44 \par ascent \'b7 14, 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 ascent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 metric \'b7 38 \par ASCII \'b7 76 \par associations \'b7 31, 33 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 att}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 att}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 66 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 attach}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 attach}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 66 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 attach.at}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35, 37, 66 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 attach.level}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 37, 67 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 attach.to}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35, 66 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 attach.with}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35, 37, 66, 67 \par attachment point \'b7 3, 18, 19, 35, 42, 66, 74 \par attribute \'b7 5, 6, 66, 72 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 AttributeOverride}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 17, 18 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 AutoPseudo}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 13 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 aw}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 35, 38 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 B}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 backing up \'b7 17, 46 \par backspace \'b7 44 \par base \'b7 25, 33, 35, 42 \par base character \'b7 18, 36 \par base point \'b7 19 \par baseline \'b7 37, 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 bb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 bb.bottom}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 bb.ht}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 bb.left}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 bb.right}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 bb.top}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 Bidi}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 13, 21, 35 \par bidi pass \'b7 27, 50, 54 \par bidirectionality \'b7 3, 13, 27, 76 \par bold \'b7 23 \par boolean \'b7 23 \par bounding box \'b7 20, 34, 68, 76, 77 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 boundingbox}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 boundingbox.width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 box}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 20, 68, 74 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 break}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 20, 30, 34, 67 \par break weight \'b7 18, 34 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 BREAK_}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 constants \'b7 20 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 breakweight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 20, 21, 30, 34, 67 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 C}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 C \'b7 9, 19, 22, 26 \par C pre-processor \'b7 12, 41, 42 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 c()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 macro \'b7 41 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 C()}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 macro \'b7 41 \par case sensitivity \'b7 74 \par character \'b7 76 \par Chinese \'b7 77 \par class \'b7 5, 30, 41 \par cmap \'b7 3, 8, 30, 45, 76 \par codepage \'b7 22, 74, 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 CodePage}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 9, 17 \par codepage 1252 \'b7 9, 13, 16, 17, 22, 41, 76 \par codepoint \'b7 9, 12, 45, 76 \par collision attributes \'b7 67 \par collision avoidance, automatic \'b7 55 \par }\pard\plain \ltrpar\s68\ql \fi-220\li440\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 diagonal overlap \'b7 60 \par example \'b7 60 \par kerning \'b7 59 \par sequencing \'b7 56 \par shifting \'b7 55, 60, 62 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 collision.complexFit}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 56, 67 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 collision.exclude.X}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 67 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 collision.flags}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 56, 67 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 collision.margin}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 56, 58, 59, 68 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 collision.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 marginweight \'b7 68 \par collision.max.x/y \'b7 56, 60, 68 \par collision.min.x/y \'b7 56, 60, 68 \par CollisionFix \'b7 55, 59 \par comment \'b7 5 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 comp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 20, 68 \par compiler \'b7 74 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 component}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 20, 68 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 component.X.ref}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 68 \par composite metrics \'b7 36 \par condition \'b7 19 \par constraint \'b7 7 \par }\pard\plain \ltrpar\s68\ql \fi-220\li440\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 for passes \'b7 54 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 context \'b7 4, 25, 29, 31, 32, 34 \par contextualization \'b7 27 \par contour \'b7 19 \par coordinates \'b7 19 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 CP_USSTD}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 12 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 cpt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 macro \'b7 12 \par cursive \'b7 36, 47 \par cursor hitting \'b7 43 \par cursor placement \'b7 37 \par Cyrillic \'b7 77 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 D}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 deletion \'b7 14, 30, 32, 33, 34, 44, 50 \par descent \'b7 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 descent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 metric \'b7 38 \par Devanagari \'b7 31 \par diacritic \'b7 3, 18, 19, 25, 33, 35, 36, 42, 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 dir}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 20, 34, 68 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 DIR_}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 constants \'b7 20 \par direction \'b7 27 \par directionality \'b7 13, 18, 20, 34, 68 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 directionality}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 20, 34, 68 \par directives \'b7 15, 16, 17 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 E}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 else}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 26 \par em square \'b7 14, 17, 38, 76 \par em unit \'b7 49, 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 endenv}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 15 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 endenvironment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 15 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 endif}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 26 \par end-of-line marker \'b7 34 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 endpass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 15 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 endtable}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 14 \par English \'b7 76, 77 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 env}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 15 \par environment \'b7 15 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 environment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 statement \'b7 15, 16, 17 \par escape codes \'b7 9, 22 \par example \'b7 39, 40, 47, 50 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\langnp1036\insrsid4675967\charrsid5657312 ExtraAscent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 14 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 ExtraDescent}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 14 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 F}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 false}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 23, 37 \par feature constraint \'b7 26 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 feature}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14 \par feature table \'b7 21 \par features \'b7 26 \par }\pard\plain \ltrpar\s68\ql \fi-220\li440\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 hidden \'b7 63 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 floating point \'b7 18, 38 \par font \'b7 76 \par font style \'b7 23, 26 \par Fontographer \'b7 19 \par fullstop \'b7 21 \par functions \'b7 74 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 G}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 GDL file \'b7 12 \par global \'b7 13, 74 \par global state variable \'b7 24, 48 \par glossary \'b7 76 \par glyph \'b7 8, 21, 76 \par glyph attribute \'b7 5, 7, 18, 21, 27, 34, 42, 72 \par }\pard\plain \ltrpar\s68\ql \fi-220\li440\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 implicit \'b7 74 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 glyph class identifiers \'b7 9 \par glyph classes \'b7 12 \par glyph ID \'b7 8, 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14, 30 \par glyph metrics \'b7 27 \par glyph number \'b7 8 \par glyph placement \'b7 39 \par glyph table \'b7 10, 12, 18, 20, 34, 41 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 glyphid}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 8, 12 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 gpath}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 19, 66, 74 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 gpoint}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 19, 66, 74 \par Greek \'b7 77 \par GX \'b7 78 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 H}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 hash mark \'b7 34 \par Hebrew \'b7 3, 14, 76 \par horizontal \'b7 36 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\cgrid0\noproof\insrsid4675967\charrsid5657312 hyphen}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 34 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 I}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 id \'b7 22 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 if}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 26, 27, 28 \par include \'b7 12, 42 \par index, within glyph class \'b7 31 \par Indic \'b7 3, 5, 76 \par infinite loops \'b7 17, 26 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 37 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 insert}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 37, 45, 69 \par insertion \'b7 14, 30, 32, 33, 44, 50 \par internal bidirectionality \'b7 27 \par IPA \'b7 40 \par italic \'b7 23 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 J}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 just}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14, 50 \par justification \'b7 24, 47 \par }\pard\plain \ltrpar\s68\ql \fi-220\li440\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 default \'b7 48 \par overview \'b7 48 \par trailing white space \'b7 50 \par using kashidas \'b7 51 \par using ligature expansion \'b7 52 \par white-space \'b7 48 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 justification}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14, 50 \par justification table \'b7 11, 48, 50 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 justify}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 justify.shrink}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 49, 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 justify.step}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 49, 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 justify.stretch}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 49, 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 justify.weight}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 49, 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 justify.width}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 JustifyLevel}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 49 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 JustifyMode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 48, 50 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 K}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 kashida \'b7 47, 48, 49, 51 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 36, 76 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 kern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 69 \par kerning \'b7 3, 35, 36, 47, 50 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 L}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 lb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14, 30 \par left hand side \'b7 4, 10, 25, 29, 30, 31 \par left-side bearing \'b7 77 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 leftsidebearing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par letter break \'b7 21 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 level}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 37 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 LG_USENG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 12, 22 \par lhs \'b7 4, 5, 18, 30, 35 \par ligature \'b7 3, 20, 21, 33, 68, 74, 77 \par ligature component metrics \'b7 18 \par line continuation \'b7 5 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 11, 15, 21, 30 \par line-break \'b7 12 \par line-break \'b7 20 \par line-break \'b7 34 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 linebreak}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14 \par linebreak table \'b7 27 \par list \'b7 5, 8, 74 \par logical adjacencies \'b7 27 \par logical operators \'b7 26 \par logical order \'b7 27 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 lsb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 M}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 m \'b7 14, 17, 38, 74 \par macros \'b7 41 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 max}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 19, 35 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 MaxBackup}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 17, 47 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 MaxRuleLoop}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 17, 26, 47, 51 \par metrics \'b7 21, 35, 36, 37, 38, 71 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 min}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 19, 35 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 mirror.glyph}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 21, 54 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 mirror.isEncoded}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 21, 54 \par mirroring \'b7 21, 53 \par Mongolian \'b7 77 \par multilingual \'b7 24 \par multi-pass tables \'b7 28 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 MUnits}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 14, 17, 38, 74 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 N}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 name \'b7 22 \par name }{\rtlch\fcs1 \af0 \ltrch\fcs0 \scaps\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 id}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 24 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14 \par name table \'b7 12, 24 \par nastaliq \'b7 69 \par Nastaliq \'b7 36, 39, 56, 57, 60 \par Nepali \'b7 43 \par nesting of tables \'b7 15 \par non-procedural \'b7 74 \par number \'b7 74 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 O}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 offset \'b7 19, 35 \par OpenType \'b7 78 \par optional \'b7 7, 29 \par order of rule items \'b7 27 \par ordering of rules \'b7 29, 34 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 P}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 parentheses \'b7 10, 26 \par parser \'b7 74 \par pass \'b7 4, 10, 15, 28 \par }\pard\plain \ltrpar\s68\ql \fi-220\li440\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 constraint \'b7 54 \par key slots \'b7 55 \par optimizations \'b7 54 \par pass zero \'b7 10, 11 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 pass}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 statement \'b7 15, 17, 28 \par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 passKeySlot}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 55 \par path \'b7 19 \par period \'b7 21 \par physical adjacencies \'b7 27 \par physical order \'b7 27 \par point \'b7 19 \par point function \'b7 66, 74 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 PointRadius}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 18, 20 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 pos}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 37, 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 pos}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 attribute \'b7 37, 69 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 position}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14 \par positioning \'b7 35 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 positioning}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14, 15, 35 \par positioning table \'b7 11, 42, 48 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 postscript}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 9, 12 \par Postscript \'b7 8, 77 \par pound sign \'b7 34 \par precedence of operators \'b7 26 \par precedence of rules \'b7 29, 33 \par primitive type \'b7 74 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 pseudo}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 42, 45 \par pseudo-glyph \'b7 30, 34, 45 \par PUA \'b7 20, 21, 34, 68, 77, 78 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 R}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 range \'b7 6 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 ref}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 34, 68 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 reference}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 34, 74 \par reference, to slot \'b7 10 \par rendering \'b7 26, 77 \par reordering \'b7 14, 27, 30, 31, 34 \par rhs \'b7 4, 25 \par right hand side \'b7 4, 10, 30 \par right-side bearing \'b7 77 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 rightsidebearing}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par right-to-left \'b7 27, 34, 35, 36, 53, 76 \par Roman \'b7 77 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 rsb}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 38 \par rule \'b7 4, 29 \par rule matching \'b7 25 \par rule order \'b7 29, 34 \par rule tables \'b7 30, 35, 50 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 S}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 scale \'b7 14, 17 \par scan position \'b7 25, 26, 29 \par scope \'b7 13 \par script \'b7 77 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 ScriptDirection}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 13 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 ScriptTag}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 13 \par SDF \'b7 79 \par semi-colon \'b7 5, 26 \par sequence attributes \'b7 69 \par setbits \'b7 60, 62, 68 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 shift}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 69, 71 \par shifting \'b7 35 \par shrink \'b7 47, 48, 49 \par side bearing \'b7 77 \par slot \'b7 10, 19, 26, 30, 31, 32 \par slot alias \'b7 31, 32 \par slot attribute \'b7 7, 18, 21, 27, 28, 34, 35, 36, 37, 45, 46, 49, 66, 68, 69, 71, 72, 74 \par slot constraint \'b7 27 \par slot position \'b7 17 \par slot reference \'b7 10 \par slots \'b7 10 \par split cursors \'b7 43 \par split glyphs \'b7 33 \par square brackets \'b7 7 \par stacking \'b7 14 \par standard glyph metrics \'b7 18 \par standard include file \'b7 13 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 stddef.gdh}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 13, 73 \par stream \'b7 10, 17 \par stretch \'b7 47, 48, 49, 50 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 string}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 12, 22, 74 \par styles \'b7 23 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 sub}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 subs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14 \par substitution \'b7 30, 50 \par }\pard\plain \ltrpar\s68\ql \fi-220\li440\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 within a position pass \'b7 38 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 substitution}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 keyword \'b7 14, 15, 30 \par substitution table \'b7 11, 14, 20, 27, 33, 34, 42 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 T}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 table \'b7 11, 12, 14, 28 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 statement \'b7 14, 17 \par Thai \'b7 33 \par tone \'b7 33 \par trailing white space \'b7 50 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 true}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 23, 37 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 U}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 underscore \'b7 25, 29, 33 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 8, 12, 45 \par Unicode \'b7 3, 8, 77 \par Unicode Standard Annex \'b7 20 \par Uniscribe \'b7 78 \par user definable attributes \'b7 46, 71 \par user preferences \'b7 26 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \f2\lang1024\langfe1024\noproof\insrsid4675967\charrsid5657312 user1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \'b7 46, 71 \par user-defined \'b7 18 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 V}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 variable \'b7 5, 48 \par vertical \'b7 13, 14, 36, 76 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 W}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 warning \'b7 28, 38 \par white space, trailing \'b7 50 \par white-space \'b7 21 \par word break \'b7 21 \par writing system \'b7 21, 27, 77, 78 \par }\pard\plain \ltrpar\s76\ql \li0\ri0\sb360\sa240\keepn\widctlpar\brdrt\brdrs\brdrw30 \tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs31\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 Z}{\rtlch\fcs1 \ab0\af31507 \ltrch\fcs0 \b0\lang1024\langfe1024\loch\af31506\hich\af31506\dbch\af31505\noproof\insrsid4675967 \par }\pard\plain \ltrpar\s67\ql \fi-220\li220\ri0\widctlpar\tqr\tldot\tx4238\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 ZWJ \'b7 5 \par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid4675967 \sect }\sectd \ltrsect\sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg \pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 }}\pard\plain \ltrpar \s24\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sectd \ltrsect \sbknone\linex0\headery706\footery706\endnhere\titlepg\sectdefaultcl\sectrsid4675967\sftnbj\saftnnar\sftnrstpg {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1006136 \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b 4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b 4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210030dd4329a8060000a41b0000160000007468656d652f7468656d652f 7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87 615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad 79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b 5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab 999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9 699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586 8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6 0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f 9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be 15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979 3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d 32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86 e877f0034e16bafb0e258ebb4faf06b769e888340b103d331115bebc4eb813bf83291b63624a0d1475a756c734f9bbc2cd28546ecbe1e20a3794ca175f3fae90 fb6d2dd99bb07b55e5ccf68942bd0877b23c77b908e8db5f9db7f024d9239010f35bd4bbe2fcae387bfff9e2bc289f2fbe24cfaa301468dd8bd846dbb4ddf1c2 ae7b4c191ba8292337a469bc25ec3d411f06f53a73e224c5292c8de0516732307070a1c0660d125c7d44553488700a4d7bddd3444299910e254ab984c3a219ae a4adf1d0f82b7bd46cea4388ad1c12ab5d1ed8e1153d9c9f350a3246aad01c6873462b9ac05999ad5cc988826eafc3acae853a33b7ba11cd1445875ba1b236b1 399483c90bd560b0b0263435085a21b0f22a9cf9356b38ec6046026d77eba3dc2dc60b17e92219e180643ed27acffba86e9c94c7ca9c225a0f1b0cfae0788ad5 4adc5a9aec1b703b8b93caec1a0bd8e5de7b132fe5113cf312503b998e2c2927274bd051db6b35979b1ef271daf6c6704e86c73805af4bdd476216c26593af84 0dfb5393d964f9cc9bad5c313709ea70f561ed3ea7b053075221d51696910d0d339585004b34272bff7213cc7a510a5454a3b349b1b206c1f0af490176745d4b c663e2abb2b34b23da76f6352ba57ca2881844c1111ab189d8c7e07e1daaa04f40255c77988aa05fe06e4e5bdb4cb9c5394bbaf28d98c1d971ccd20867e556a7 689ec9166e0a522183792b8907ba55ca6e943bbf2a26e52f48957218ffcf54d1fb09dc3eac04da033e5c0d0b8c74a6b43d2e54c4a10aa511f5fb021a07533b20 5ae07e17a621a8e082dafc17e450ffb739676998b48643a4daa7211214f623150942f6a02c99e83b85583ddbbb2c4996113211551257a656ec1139246ca86be0 aadedb3d1441a89b6a929501833b197fee7b9641a3503739e57c732a59b1f7da1cf8a73b1f9bcca0945b874d4393dbbf10b1680f66bbaa5d6f96e77b6f59113d 316bb31a795600b3d256d0cad2fe354538e7566b2bd69cc6cbcd5c38f0e2bcc63058344429dc2121fd07f63f2a7c66bf76e80d75c8f7a1b622f878a18941d840 545fb28d07d205d20e8ea071b283369834296bdaac75d256cb37eb0bee740bbe278cad253b8bbfcf69eca23973d939b97891c6ce2cecd8da8e2d343578f6648a c2d0383fc818c798cf64e52f597c740f1cbd05df0c264c49134cf09d4a60e8a107260f20f92d47b374e32f000000ffff0300504b030414000600080000002100 0dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f7 8277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89 d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd500 1996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0f bfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6 a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a 0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021 0030dd4329a8060000a41b00001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d001400060008 00000021000dd1909fb60000001b0100002700000000000000000000000000b20900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000ad0a00000000} {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} {\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6; \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title; \lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdpriority59 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdlocked0 Placeholder Text; \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; \lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; \lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; \lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; \lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; \lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; \lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; \lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; \lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; \lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; \lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; \lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; \lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; \lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; \lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; \lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000 4d73786d6c322e534158584d4c5265616465722e362e30000000000000000000000e0000 d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e5000000000000000000000000e0e0 5253bf2ed60103000000c0020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff020000000000000000000000000000000000000000000000e0e05253bf2ed601 e0e05253bf2ed601000000000000000000000000d8003000d3004d00c700d800d300cc004200c400d600d2004c005100dd00cc004100d700da004f004900c0003d003d000000000000000000000000000000000032000101ffffffffffffffff030000000000000000000000000000000000000000000000e0e05253bf2e d601e0e05253bf2ed6010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 00000000000000000000000000000000320100000000000001000000020000000300000004000000feffffff060000000700000008000000090000000a000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e3c623a536f757263657320786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e78 6d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222053656c 65637465645374796c653d225c415041536978746845646974696f6e4f66666963654f6e6c696e652e78736c22205374796c654e616d653d22415041222056657273696f6e3d2236223e3c2f623a536f75726365733e00000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f6469 6e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b39464343414345312d454338432d344430362d423232442d3046364330333745384532327d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70 656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 0000000000000000000000000000000000000000000000000000000000000500000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000746f6d586d6c223e3c64733a736368656d61526566733e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f7267 2f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f72654974656d3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}grcompiler-5.2.1/doc/GDL_BNF.pdf000066400000000000000000005060361411153030700162220ustar00rootroot00000000000000%PDF-1.4 %쏢 5 0 obj <> stream x[YoI\RHJM|d>^%K YyrR53US];FOu|utO+iRW?|8}?⿾#O+;V;W]I׫hp]6*ٰ>If;3' |~N)kdu^)L%_ؘΥ>sj'0)NJޒF/`GZaq}Ez}]|X=b.h79D*At'NK"M [I^f1~EQ?LE" pNQͲgrn-~e3*f?+˜{"U|M`3'=@.lzw!NμfLV640cˁ oVg<%0h8P|11jwBO7[չC3L(yD'-oBs Ȏ=|M<6]4g(/0?Xc'5.@|9a,7deWt'i9PkT|anسML w+˲جʮff$@ա̃1" ~jR-+o{Ο A`4Hq_>N7lL-ks6(E)%Rϙ +$9M`Yi׆ gUW!a\@W}ZH!ti=p~304#{9~(hDʶ`#gW/( WPY^ )=_}cĤ[ֻh( \ q Q0 IݳYX{E(-E:VaTSQ=c%~1*u内{gG]6@%->5N2L}@U7q2s*I\!UXh!U #0uoC`0n%./Lac&wl'h8EMl7,tRj 6~ d!d6ݺpv0+juoFMO_xq[[lٻDd"h3n%k+Ɓ X&]𡘯l*Ҍ*S ԓ4"{952 8u_dFΧ"4Q@ Lhqdɡ֯9d wkx@ 2 btz>khct/hs$)/6Cq3-̊{{%.whCvEǒ>H}UZ`ee [¢Et&A`ǿoa2r>Ăz[~P'`1s0y![6 3Jo|4͌X&7׵*4=b χ g@uTcY I m˘/{faP=*7"]'FSqLɚ?ox/X/oKD׹QNXvVv;Bjc \H600jTy $(v ޮ`X`Ё;֋Жb9D$a(ЪTĹŋ|˃(in& =&PZr鵘wh6 Dكu<ޘف9cԑL;U) k02o.nGސ;Z "w[ ȕ9ߦw%iJnjT,?/mT[!U1!d2*%0ZDqޕ$fV|Vmrfu@wQlbAeE#9ݓ|2,V,ai(pNmaĈŔ)3{-[g•!)dΔ#5ܬWmS{ƀIX;i+ |FTp?c@ `?1Z6pD/f& z&85,!Y5$XR^wcɶ! A _ft;u*_eUD1nTwo\ͤm C`5GڦQ`< /$>*ڐi(f'=ns/&x/WiSB*Q;8lk~^x}Žwbl>+*7RahK-ks]8Fn |&f~J8/6Q7 kˌr,5x>`S+@TAg_y)$zmoU>m3 ߉<;.},_7o=c% =HqnK,1׻!߈pivZ~+*HʼtX8{a*/C;3b9-E9KQM9WVfs#grWQ )W>r<._I2=oD5{1ι9W5ީBP>]bc jG0e17<@ì-s +&=ѵL z7EßP?ct$Шޞe,[1atrGq<;wkż3WL9<m}QC.$maQRtz9LHiKU^Qp8R,%Uct߶T~ :Ggn`_>)"5Q6x^`E#\cK4 5׳M DMkEV&yA#kZI&j$`KJu;q#mۡ:L.\YAc}6/3)uӆbR+)aAXAE]c5}f7eX-A`,F[HT[M7>FV)^ג;]\Jer< d*{lr$SMKy2[Z-s.gikv+bRG åzZ['Hv(Ӟ頳?|]gC}^s?"R7[}<ƺORG,kk=XtXwY[.T(}>#2hR%kX$iXT5q0I¸pA-I7_R@ZkZ_l{ze]S70hE熟 >??f\/CPi.hv%[iEˍ^L*80P+@ m# {jix=j>&Ÿνyce'{ǧbn/*̟endstream endobj 6 0 obj 3464 endobj 23 0 obj <> stream x[Io-K&)XmlI)վķ$A|+^sjgHL^ݵ_o+)^I/?9y'/'Da/?Y 1WY!'ReyZM+E\9{ԯsz}կP:uz%q*u_kN+1:ﳿklc,&N;cb¦>у6A @օIo>NtS| ;?$aS|%կ)XO58sl~Fxmh851&6…`H"Z#QyO@ahP-;3[~m[N }8Dc@>w:fJh J3pCX?r~E0?Gk9~|pr8t4-#* \D8#D 5&!6|wV3"8bmHa!&0)Jc  ]mkؚ۠8#Iv/2Ej(%H_a"2Il'6Ze<ZE(cBmqYr d`&R>hX^)ryW$%;ڈ,4H0VA^?}!H?-@d!PˁBJ ;(\`_@ Iky]Mݔ8 xh1QH@T#@gC}bTŒn:I賎JP05ggWŬu @@- H}˦3Ni,;nU+u>m0`-]eI-_7f&!„q0TK:KNMUIS7PKƐ!/Kr\FVS[S mm 1P$֬p<j >u;wy Fskf0spm14 pgŏ"H& 눧q[EH=ÆE3xwgf+rV72 .h>IHfݓĨ2Ҥ9S2s3^(ʶ7 Jڢ/d|BΏSE "Qʋ`T,^NmqtnmtSOv*:ՐTnl"LIM0-c{ł2ٲ3C_r d[i9-QZ5ǣl#SW j K!Fr.+Pǣ? ;~l>~g5%`IؤmH#8s)_02)RHS`  0p~.XYLbY@b6.Ti@Z,w+^>%Xx%,.<-&nڵ*6j fvY,#!P⾘Wuz; kYKMt 7PDFmҙˑŠXVdպp>-CpGE_B!"C~zғ][ 'Ӵ'(!;WwBoB*CۻzwkWsSWZyc_zgavJ`3f<`@0no3*Fꅺ,VY?YZMzLK;h9.:P:hS" ͊e;b|톚4s(yխڌLp;OOa q*dS\L/ a:nR-m54jBYǪEZ~ M͸L򌽋& (CTRYrTol'GDu ߙZm<|)}鿤5WI^!E-F:Rljƕv=zb5J0 JmS2ۢ/jTrH4 KڗwNS@xW`Vq {@&U"_;4&Y8}«n ۴Ή6?BpVj]K- fpmm!51 6|ӨA9a2" s'N- 3g$x%sx.'}J%! FIe-2׍ޓ3XᰄvAl_;ۅL 4crRzw؀g[1M\Y#YDͽ; 楂!H'[[nOOwH<'rqqt\ưw{DJg.+8!LhӀϧaw忘j7=Q KR `U}>+u"ڭ=42cr+R눑>-.L?&=&=hHGI?ˉ6|&na3+RaerF-!@rz$Imqڲ$K={< 4 [eO@># Z$)e@~n>ǁˏfMǯ4|=h:%e= Cueendstream endobj 24 0 obj 2861 endobj 28 0 obj <> stream x˒1S$xia!;f|:pfuWgL̲EwWV_Jڬ{\x_SoOy?[auǪ9z B*!NcIrk 뫝UFud[!=Ö&.(krUn}inzrL:xU맰r*z1)o׸)knemDs<>z>)Jޛ7Fzx8N:2WXc[\Oꃳ@S}IƓ7>B vZxc%)1H _yӱ0' RJaGH1ţO3Bz+,cT;AJD@3 꺳)7L\ 88&4~!C6W6HZ;Enzt$^AAd7gVY"0bP1jcU6b!ڦne%4HP\Q&:@@e"!` s_;ў݆Ee{%r ,[Xt }4s7XA ew~ZRt_I@DKIbjTC$C]R?CateVf٠רF=@E$n;m T{n"ب3pdzUWq <:LY0,(3Bi8vBI|o|U'*2{˶8HeseH^OaE%w0MN< P!2`%#g'|w?ŲGf OAVH=&LOP0>xsVyc>Ň&Cd Um`NQִEEim+ALu GW`Uv# ZT@ҙ$3dV  rG9KR&2=(M.aq Gu7VLdO?- %OR$1\ňAqaK%N0n}M_T:Ԏț[3@Qćh[d1n 4*g/M8F}ɠ-U28q_|À_:'grCFR,h٥ɉ;1_?p 1 N.3 Js/הg |h&Ft=_ %q*K33#apf n 9ӽ:1:=aW:JF)ӎIq6`cȂ~"@Z@?L7ad mzU7])><dQ`I1M?N213+fBy=[i֞;Goa8YG_N[1,VAY{Cl|.sLTlm&yPu5g@bج N{?RۜA9Tc a)DΘٟg~9ǐx!"oAS&O Rsga~9#jA*@ Z$Ļ!mؖ%0I/Ca,Pk)/B+K- gE*n{B(k~,ȱ7n6v/ r<6Q`J2t`l{Qi`TL`X;os~eVoMn}&V(PdO6Aqzǀ !:,˞ c2yCuhWJ q( Cbnu^ə)4Ҁ#!@,3gr/g7֕nޅ:y5p̏L#kwÅs;>]Qbh$,)~QnNdvsi4SRȭxljif>;56쌛 %E0EOƛ3v.fBǂ=xK JAZb:o 3/@4$ͤK\mm^g / pTpiJE#4]8ba9y֕ :vP㩮ZVւ{qVz }/gA n.,W쇘"ma#ܔe i?pXt> ?m! v[;{&Y(>"[,M-\<9D($ i2npicl_Ez1z7y*Q+ _q!ٝ^bRTќX7g4C>79OAv9Iu(O&h )^\RáʼTF3rft\X@zbY{<-{4g?CJfqiCb' LDQ@ۧNM4sd(lЂ׺'VfS-l|.U=͚!1KuуM"9'1f=*Orr7?ƕendstream endobj 29 0 obj 3158 endobj 33 0 obj <> stream x[I%K,YW9i( srr`=WӬdBTɷ~o!J$ߞ}?gן~9_~?]+RJH:L!VZyZ:$|\=U'mE6{\2:4v㗏[)bT&C&mk)5Vvkek>nw2愖7Q{Me-eM =%RԤ$'MA}zbfݮV?~`uizRR>&D#+=)$r6̉R?z&s/!Z;#4lm4}plC mn/)-6~Ahvnk/g & Fਜ'q> 'IkaZAwLMͿ1)iOR+ش{)IBė(I\~1r/g |+h! \@fah%X+Mݨۛw5tn1O.ؙĀ-6}N16AR9w@ aYAK!u'rrBł3>klƃ,&2)_B(?l*(QCT0i-М`Mw@TOBt!Ʉ顬Φ? y[pkhWy;3AUhUpf  Ýf n !Af@.Hr{S̀f[e5>.IJ0CfrKy~2r Kf*Kbӈ=fuOzB;Eĕ {z8j2cwsLF'[L&8aK{]O^)t#T㠀Ve$lf57]؋i”ć„{'sFοoiNbbd!7b&ӑM``6'SXb00fV0蓙6.cmVwgyn?β=0=2=t;qaq,֙T`bU/[\^ 墮銢(:E(3)Oj8[uR*#b&L(`+^Pzkmr]R>SYQkX=*kKX_k&1.}JMW5;5Ao0x ߗ,y3:/HDŽhnB|S`f֊(d3Sk~ {Xo{gڱ~zl/e9df);,(u;g1Ь?hy0=^z x*OڍvD}"hwcIs5l)iԢֆ Q6$2soZuz\Yp C0Ǒi8$F/(K{\ѩ{33/,݆X9;EuI,XkXVi&="?\|r3>ؼ ?99RTv-M)XSL+ʐ)˱&S,`>;>-hDP٨! k9@rVc3l*'8lhmvd\]kpz>(D59 /Di~0ȟ:L7[^Tn^ ܯLkRrV\-9zm2"%{|_QQQIUبq^<=`3if 8&0aDpI>`sAj!UJP'O3n/g\m_3G&Gc뻈}oX ۛm4{'D#f Gf|vqDw$V`aJIy}Z(ۜB/2WX$0ꃪ,>q:W㤇ؤ|;1D> yk1 9 CB}s L B3丹 O! D6bևZx>"d r|0PuN|IvԸt>%r8ZVimǣQ|ֳC+0.|#%6*+/gendstream endobj 34 0 obj 2762 endobj 38 0 obj <> stream x[YF]"P"bX#Cb /A^bO6b X@9,r\`ꪯ:B, ߿:{M\߳r{dz_Rk_кUnq3TF*!-_}Mrjsч廍jSV.6 ^ݸYe%I!Ӭlk }bxzk|K]}krAelr)-جҸp<@ntoÖߡE;sZ~9kGOqϩՆ [S4&!yeZsO ũyVMɇzbzEmr)"Ҙ:dr>.udyfMl =zS^UW $dGI)E)W:]Aeu>ШJ JtUIc :=L@[\(v  *C2oke'i8>nd)bcBEA~> 1 1(/ȷ~R' #&^B9>&hh%Z 7[NpV۷ƧI63#u+HS%Gz#ZC'>8 Ru%8=c|)3%%fH" D]: H5T)jdZx>[H`eYFS3-^w afZrLL<)~$?ߒneO]--H2\q8SY,9c2k Esy)RByYˇ|ZqjIn).WB& ^E/`& 'OntO2ͬK8LJv^ ٕGBFIw-tEfuɽޝKs,_2lL#rۜZ=%,àEiAԠ%v37ؤyrҊva8!v/({޾R/& 3`< o-<2Qκ8%\ErtLk O:K/-+&?UXhqBJ>QaZ9wUkfZSk~c-rk M;7jgp%M4nܧj jۚW!B&?梞9fҼY˅O-[] e!Nŗhq1O1z\€:-5'Pj CLmltB2;Zq J56 =n?F ^^0sHhx;AŀTA0J Eu\(󗟓iM퍌r;d@\V!S ,!aKٹe)4*P) .6 5h8 A޾s[6Ú[ŵSyܬUv)C\Xv +Q|8HHeq`o%—CQR ?scbko=%ցfYUB ;mR[I]0xXm7:QM<ꢺ0 a|Sh2g-fdkUڝK .8ROgʿ9C _C3BUY+6v!v{UnX^Qoxh!fRᨘtR|H2X* v xkkKC6 h~BJ&"r`Jc<3܍94G Ԯǃ[y=ly[}ī4p_尥Q*&Of1>>cr_E "e,Wmp&2#Q9 xdԑ[zxbrclްM^ŎZ^:^K, I:&i;"Cݎg Ie&}L{m97T,2ȣJ@z9%t' wh@?!)6$Y=+>s햲n{YyN|Ôc(>cK֤#gBe`[[͟GX_Jإdʼ+ XTIྍ[!AI~#{ L1k' 5i,)'ѠInz8~!T fӁ~YK{ލ c\S٘st>c<%"(ruEawӑ+:҉]AKT> 1ˍA` %4zIQEjac h52Ze\7gx [٧Aا8?7endstream endobj 39 0 obj 2926 endobj 43 0 obj <> stream x[IF$[-mĤz_nA\_bv?&U3^'C嫯fO|ax6_y} ~VN796\9܅ErQrBpFQ'߷&th>iU)70+ev6TmwS{%Rj~7 d3(Լoa+ {4b\s&wZ9kktNͽt?iw :˜L J)IP+֤iQ\gbZWm&8ӡ`U-U f ˪ٽ(3S W;4erI]KOTg!ؚd[0RERRrGR93 Ɛ^.u.i֚e$dbJ8?%Z9uX0VSԣ hGJ3z炒˾*39.) ;! 8P }`G|ja,N̛ܣh7:k`>[)b)~l\ *&.Zd1KL. Ji#QјS1 "qg}s($`@Od.[H{A)қS<00d%E@qD&AIU 6g"Oh,q/!f*'K,v8HJ } & LfOh1ki`>[Gnq7ZoʔB5ʍO&+dSDԑbj?c*;dDhRldקR EP9Z=ބOZCPvpB"63H?LVlhTY aU>)c|w2ɲLY :cJ>ĉ-YJ B|ڃhu}?ea&HP: hcc3/0_k ?$ c92F [ zr3t QY,zf~҂tI{-gU5RI3V8'uH(hPrSh&I*Ȳe.B~1xԨdq)P\v-5]Or 5s>3s)IADr83֬ BS/蓷BNr1w3Օ9LzSU=ֺDܽw9W}h *^h+x.g̀F+}ĉw^2*l"C>% += bL<YJr$n9 )0Sf0x5g){Ҏɜz_w1$'+u$X7}{Tn.g@Kv~U`hDǭn gXr_o6JFo% 磏s¤z)4iӳƇ%XҳVݗfq_3KVSdItt9\6}m#q0~~TWI$ ,U3k򠇆h;M n vz(vŊY2Ŧ\Hb+7 lO, [@ %Xx 8/6dKbڊgNINBA&6Y׌j T8lRwya{S6~=*S ĕÊQWzk7lh\IwDah -dٜ)dK̸pr_M./Ŧ8n؃&un 9:cDmsN )8I2(#Fdcl@C1( ODILO`deb|?l ,l-8RCvu [K~!a ~5^aށ"IZ6oѵߥ+, {AӅ Zob&Rz=\[ WL8kVK*jޥ#‚ԏɫOzՕc)wfN{Wtw/\qS?(1W),]4,5?踦,Aj)9t1{ךMSI2PtʫHf-{K _ 0C/F3qhtoD4%NI:v ]++vcYEZhX,u*i$0 *P+\᭮S-u h:xANx  6.0AmC O,bhozy>{`QQ{9>-8WH[Q:wA\ J'kA[H4lL/V8:Ѩ/689B /p'p˦w \p @}X00sX!=#p+֥ndx2rb#< b,c5'*m0xKjޥa/ PhOQ?E~ӟj>y=q^cd'{ŧUa_Cj/e]endstream endobj 44 0 obj 2740 endobj 48 0 obj <> stream xZKF;2Y-%Cۤ r r7+'1@l _5Ls/ rꫯj+/y&=M4K?_m^{#>@n 뷛vjdffAG<v iP:݃FN+vM;3ND'iMVq"X0]&Ms[",4:bu /w7-i5g+}ɞao礬lmnQs2+zq#qwQh&{nOc;=[gEmq^m `r/ࢷ*i-؝&2BDTJ?uA錊QPşi-MzRHES^6`u e9\%S|3njy՟Tkkt]Ɛn3af0^g%I!8(q{[E#h @8Rr sC19<-HWl'[}}Rf_9 5 vumr EJm(87i}`rWZ_W hE$bTnc^1θ7GAh?^u 8jqQ#g?HߖqQXf4>Uȣ,X.Fqm9 ªn_YvdKlcA8ʡl kF?~ E![dw*O|fJ:"W8.䊜X+e)Pz!(r&n t3Aj52KH +=l1x;n`b#]gu0:u8]nĺ=˨bH㭛e9YgZ)`P3Dz9j-Cv8N63$yH֧(-m?Hg'Ք3\g*K^a9I4irlpVj?gNL5v\[*^4O:%kR8W̅:i*Y,"Q@CGyɔ[Xu˒~ E}%)w2oāE ` j$H\В8%_>!:!'1{ZK˅h?ȴbaƓt7[}-GT|j;lmBA]}4q/OIoU#jŨy/nuLGJ>& B:yh[Bæ. KkY^WC[Řy!v{ʞIڥy{g N{ڇjMC`E$N)92_fu߇p|K5W?&I _0Bu=)-{?#<[% ~1BuepY"!hzo-:ec?@& A+"uc"4 Tp ցm`GFXy.(kwNj?1(OJQ*M< TE-oY1ՖUON#((}?LZPٹUfzarfo)]*e,u*ߙ\^s`h#Hߠp+iX>auv n$!kWFC$S7J q 6slOTo ՌŻjX, ] P;O XUԱUZU|~%*c:g鏄> stream x[K2,يe%ؤ&%%ޢl@W3Erfz$ rym6 //geyyϗi_y߿ ~s\!ry7Q!ۗ[?S)~BM͠W!ژ2n0Iv1ܽߚXrW&Н[5XiUp݋Wv6Zʑ)N1C^Hv;UF=n )FN"qdOY)~7Hn Xwa`0$+L%TLLso>As%a_BN%G \DlNo Ak߅>=Hr~ 58KW,}bY9AH8cTr2!%VߙI)DM"IXΦmZںegk] }E[0}[ϾhpMN {h8S#-E 8I Sk6&3@@~F9 LO|E :/:0V|M <[s"\ .6Η]X)XKb8bߓϯbFA ĻdHB.dͷÙZ9%"%gl:sflcMMgQ $&jX!r`BjCoNAX0`70 |n} FDDpUw5z/̶:u/9 ^Tnh+Ml>ςa2 &BڱOQhys':Ia1&`PPk^Ȉ PA Ruuٻ>e;G"D\ jo W "I9tt;6Fʇ,Ιi'F)h8)vJإirYG3D:+İwL5!h$@YX.PE#)FxdAxc;!;g; m%1i70Of+FdwJ*|4)o@ $]sJ­ 6PZ2fyV'!)q>`uWz'%1|[{IK/ w>hπMrEinv24T~-л?d[ewn:'1GgM1m`s[nP]):2"~xk !D!ZP맘@nĉvQ;>Y5T~kl S1)d9ͻ~y[ɴ#S;,՘y0z8Gڿ9u DRg$J!&}اqAl{ ,9Dс% x"d  Aaf;-CӛYXDʛf~0QV,eatܜzYְ N7|xRwIblK\3U!,҈ ^JʅQ$jNEJ:,N /} J51Mc&T =[eOZZ+@1ȝIi}Ƀ2 jǭZg6g)xV%5](&d e1vP`Y Ʀ23RO pz1HNg(f_mX'Np+{b!Ux/#E#Q:p2Ϭ"dxn6 /=DD/&cM]s2^8GocԢcƬE?zgD{ O[hukܔ2W~5?f) @L5>|a1d!6 2+{#ɜ` ^v{+ѱRJp7-äAҠzL߶;J Oz-Uqv8vQuxm:DH+^2ef$d8'[fJ=Q YcCg{H/bn,T)_JQ&tQuxȜV"9 &g/BW~,iCC > stream xZKF~g#EYi#CKKE>9O2`쪞LJI:l6YW_UO+]ik]6~u^OY9W'w?b+c]kUJ9f,tQ1n]cWU^o0ciUd;mju\]L&b)MdaTCLƠndKb7F+gM2nYt,~Q.%(lor1rqeSr+Ř+luT8jE:`1L*kwLEyyW99=h84bM_cKk z51Al~QBSOn뵃0߮od!?F[2l2@%~6XHX+Z7<9h+$dh;u>bT![m0ցWuw7Vz{7]ǏH~G ?aHĭ1RaԬūwy\Bέȹif 01DΗ4z6m />mq>K6; ,Ź. "|]hIγFl6q !+bH}NjPH* s86!w<&͢iG}IO |)Da*m7x甀>(^:ݪ yA=4yhb*&tXm(z0,GdcdcYސSvXURe b&KډG.")&MPs>'IvLt ^Kq F[f 0!#(T`SlK1)%ۉDNp W# =6mJYƓYYh̃QfRc4[ULOV.xOv"ѾT}z_hW%IEc`mM/zt}6>!p5vo$5aO<=R$SEOI|YX}5AT r%q8h\yko&x@;g?3֞A{%欎ț,/̽^Ub7$Cڜ4"hnK"iUmVUM_b#!O{00JSfla"ܙV;nR#IǏ(a5MN /ɆZ+{N(O̒{)]|k Ng5: T|FYy>%GK5ad|UGqٗC*AFC0+ڬo:-A&)&RIYx;-vmv(;5Omrsu{MܽbuNVphܣuoCݓG=E/-wfP}Ѷa\8.n336෕=LyԦǗ]%;ԆG"NdT}z~Q?r:k5/@7X+XtQӳg@]7s jEoz`}Ṯs]܇r-+t[N5?+|?Sj.PPFT;Pm#ك|G?ͬ~p`g3q9{)D'GVXr kޞ_ ڠ%ҜW.f㇠X=egݷ4ۂϦ9]tL# lIm,hR=W,s5*unIw 9nj,FlEݹ;dҗxҗlʱR'ayII=49 ) jJ۶z@,FmgK,FbsGTY"kӂ&-R"6VPyWdyVeJ3+owtF|@Ug ʺ> stream xZIo9Hb$Kl-K-kڵ/@ACK'|L5gHHK|oe-ւ৷'ͯI^䗓0hK|/{Y_D 1MZ ^^!/ߞmƩ~ݏ8X.Vu? ߨAlw`]h2 .t_RuwpRMқ@B}݊*~?O(nj ,|AFL `~bC{&u` -"] B9 2@!F۽F#B4#B1CDYK9~s dF@2wҫA@Q v^IGQD^u~'x(-b`{m=` >y9]"`I wH6ggZ\1e %r<+Wr.'_,lah?գrslfZ]V] H5x5nLYَ!Fe<3m:-8k>"VEDۚA CE'$.ڞ哲Q-xhxQ󒭸Ç@?0!h؄.[`}'02"a&D?mZ _/ 8Gq COt PХD9REЇ')ASޜRr 6>8~rɹ!XB;l$dIkl=7Y{**=; KKZw;Ź7C\yŝ^^m#O2R L kHڸoDĤ2zM.; #a3%fvRŷ,f)x.cT1}9NX!vJ:vd=.Gٹhz|Udmd*ʼnЉ1:p.l⣦ u"oy28F1:g8żRތ4hQ>A*sUÄm ܤaV`o*@*ǥ.Xn=?~/OY`""-Q'w(K棊{x51*@; L 5R1=NȶA^l8B|;} Lw_'G1PLP@_q:'[$}&7,Qk:sau[ER* N̸]ՠ17&U mcBnt̘*Jđ_?Q&]1bq*4X -g4(raiJ(k,ucT^GB.Sw$H]ŗ$6(oM +O nfQM;h/@ۛ=s7aET1MDCoit'Sra-#aI2Yo\#{O F&ޗQz*n~pWh(j@5w@5O`ҫ2UƼ>/2IJ.uoWoL !Z_tE;{aݫjpx`WXg}l;}ߜzy] 0o6;t kE o,nTrAC!Ξ{$1%Gǣv]n?o T+߆ZǭZxn;oN@;pjW}QEZ_fg-=0FVg9o,M>D޴3l n;sߵ!z;Y;4hDdMu$mcWa)m0].ugg^>vS$Q8gS]Yr"mdW5|Mk'US)vݳPb6V)iy Tzбr% !׺gn+Ӭ|Za{E^zOf^+k9~s1w\M9VoOִZ*|ZfXAHXWGŊN~M]QLe Z(خyVJ A(j<ҙ~ޕ{ =o䰃/"`T[yu-PZ7 ?*o9ךdLEtPU%ٳǽkq~7,Ż2U7h܈귪C ٬qeUZ:{BXYf` &/70㯞(QͣetRBi(ҏccK͠>> stream xZGVzwr|cq>#hHHF%{=S3=FJ]U{GhQ7 }q?WW?\ҿvB}yvuh(jrN*v*7!mn^\zM^նq'SݯIVPݮ Ez} [ۨ= cKi5JcW=n{6RAMH[~Q+ٿ,3q J)EeyzHC71J[nQZ@XDړagVc6cQ^vL,6J!M:E[h?dOJ.)nӌ}1>kؔ-MMJP\Hz tdl *@W~6.ly!4d>(dG5QGH" -tNL^=1I)řrtͭq>ȩ1a8oñX.GrHkqBrBrfAHjk3+~,_iu诨Tvp+P!0%$[+ue[-(qK+F6aB.K ݓK/Y10g)m WSu6nU^E)W'M#-}~RSKqݡ&9#Y.hmBGÙω&h.Ҙm/xƵ Fvח(Vrѫdb- ]M !)qNx^LaaE52,"Qx9)K |R3Cty>o^xTEŪEwS*ZQZQ3=F =FM{}>$g) ܆b޵ `(޽՚,jMR10RZ2dNlM!3FȽ ZC*vJ鲈l}(ʨ$^V- _b0<RsՈlH"*9F*f4$/&" ~ryrlݻ5}CUO+//j.w,ac4'X¹y~ ~EXt!.i忣n;QTWt_2R\F D |j㺣76 Ī䮂12{7xi rc/6m?W{ՏQ3mҤqڛ$qmLQyV@}a8:6vóۄHC&/<;i|Vc)N6'EtZzLߙVqrVwG / ~:7Ww3"endstream endobj 69 0 obj 2389 endobj 73 0 obj <> stream xZ^ Clalݍ=)J'9 (^Q5353 ?kwT9gB9O|~ٳًgč|/Kn3e23 Gsgv$TWCsO}" 4+ dXNWS .a(@jq$&q)`\FhxFphΗ(HArT=YOǓW9#jlO>(|q&(=G׹'щILo˩|MOK&<''d&^dK3B `K,B9iү6 T1bd- 6@^T/4 ޚܰSZȕ$ʈAfCV&q6:"AbJOF +R[Miz4Sq9hԆqg*@wʼn&8y`^䬄*Tv8 2]u\kδC/7}dVYCOvg,Xs!=y*ԓwڿr u/"HqiP,8kmd;(.gfQ{Q`f{}/r4 hr| dqDGOCmP©A[ ںij˨01mCڶh(%M['KIx:4Eȵ #nzP\I> 5840:MGߓ3,@ _ F$N@s!甮H$?v2F,w ^pNT4Rñ\%+<Ɏc'~Sɿۏ֞/; eaP>5\EMiw)r}cV"&#9GN: ˾4G#ũĬu ƥ-5Iʹ@ [%,bӒQ̒sKo8C)!<;IuQZNtp^y%՟Ee[wu n+yW=w{b`Į@V^Ihr88E:2)5̡胚Z{oULد^8nIYFc4S+bKyp$qo;q^#\U#݂AK BQR#9j|.uǥi=Ө޳o( ˡuRU{ɯ)J8BW@A+|Q\ ۢnyMAxéc'ܱP/b˕abpgiyN-, 6B(f:m`얇ih'wG?^Cu_Kw:بDNuZSi4zLedgw endstream endobj 74 0 obj 2297 endobj 78 0 obj <> stream xX]oE ( Avwfno4hHbR'>ݝv=ĶzwF0xyxKl^>7o_/,r}/OXo1Fi,Xhs)v L-uVwqAE1h/v0JD>bI;m VEOe.;Y 'qKjq)=dQ4uJ/[;q4V ^*[T!cq@FemA?gۙu=GFɘ sleuCu"lsf|MlS>l ;-_!H8φAa;0/4m/t65-/mAgے zE[n?˸y 4iB Fmor_I\Al{Dz3; t 4tiܱ^ڢ}{00 -BrS&<2Mzo\u0q;ʏj8Bk4ы؈l  9{(N#I{-J4"d6˒ ƥkQs9ZeUэߦ#BoaΓ~#Ej8qJ ȄÊCoPGh^Ir>{x G*հڎnQtطr Qk85Eэl(myڢMD_:L۰ Y?5iB1Lj b6k'7=Zؓ_ hg]a6x,tBH)+tߓx!~9xrއ46py]uwurHpOċ ?]Ywm]^_B3l\w^Q^|npHcG|kW8uҗRgVoM޲BD=7|ty|b}e w r&\bfçp͊RBq{;uHpp BeT:?S1wJ}3Â-t ZT>fA|YoWV6:S:1@܇ީ,[olۙ"rendstream endobj 79 0 obj 1535 endobj 83 0 obj <> stream xXYoE:rql 3 G !^@dD$ %zv{5 RU7R(H7羚iv~OZ7o8\9" OT5k2 yYVv)8g|i2Ufn7svH`E&nºm/,}>iJO4-}͔T+VzעnaT1f$ ]˴%}S3\+muFZ>Rl7+}q(=n),5k^k~k`T|9M*hӾ+~+-{BΟ߱:)Z8xtPAD*zGaBR &( µͤpx*dg»`FٔT'uGցqW< RFhOQУR~9U2ȁցhEXjd0y^EH`j[ !>-T_qIi6Ս*P6Ey"^-*Z'x7eih `u^7˽>Z=wChTŜ~_ N1MdC',b& a% ڗe4{njh8 E$W O!"A§XedLl%aꔳpK?oJhsc,y eߟ\wX>? xO:=tD9T(\v<,#[D y cV*ɕCDh& R=:x):f1(3`"}}'8)0O]\f<2VcDРIҠaiRf%^=.ēB:y73*hFŎ#vxq˦\9rpA307 H^EŨ~)Zb7-s=liϴ U_u=n3Al'L#ӱ2È@ ?UEDiw"t5y>W !6PIS[=>7v9K)Qa7QJsgWȲzۂ z3LGZ'a!: V 5QC CĴ޵ h*VL>QVR9n{LʁY6wR]3p:pJ EH@h+6E/j`*wΙ`]I~~>sY*r =@)0&8IN {+&$^rހA| U!OBFvS{>!ZYۀwꃧ9' MSs|Qf_wzg6j{9bm&%cdJ{Lf>B0R#Na֒sY?œ8w#Le{l33 +(S2E*ELeA(gNezVOm9)y?{9%\ɇqb(q<'bᎴ_Dn0a.́ %c@BY#q(x힬 T)].>iGd\LY`-&f.A)bo=v95;R{['.!kfU>c@?endstream endobj 84 0 obj 1689 endobj 4 0 obj <> /Contents 5 0 R >> endobj 22 0 obj <> /Contents 23 0 R >> endobj 27 0 obj <> /Contents 28 0 R >> endobj 32 0 obj <> /Contents 33 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 42 0 obj <> /Contents 43 0 R >> endobj 47 0 obj <> /Contents 48 0 R >> endobj 52 0 obj <> /Contents 53 0 R >> endobj 57 0 obj <> /Contents 58 0 R >> endobj 62 0 obj <> /Contents 63 0 R >> endobj 67 0 obj <> /Contents 68 0 R >> endobj 72 0 obj <> /Contents 73 0 R >> endobj 77 0 obj <> /Contents 78 0 R >> endobj 82 0 obj <> /Contents 83 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 22 0 R 27 0 R 32 0 R 37 0 R 42 0 R 47 0 R 52 0 R 57 0 R 62 0 R 67 0 R 72 0 R 77 0 R 82 0 R ] /Count 14 /Rotate 0>> endobj 1 0 obj <> endobj 7 0 obj <>endobj 20 0 obj <> endobj 21 0 obj <> endobj 25 0 obj <> endobj 26 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <> endobj 50 0 obj <> endobj 51 0 obj <> endobj 55 0 obj <> endobj 56 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 65 0 obj <> endobj 66 0 obj <> endobj 70 0 obj <> endobj 71 0 obj <> endobj 75 0 obj <> endobj 76 0 obj <> endobj 80 0 obj <> endobj 81 0 obj <> endobj 85 0 obj <> endobj 86 0 obj <> endobj 93 0 obj <>stream x]n0~ %)ـKzɡEd |,(Ρoߙٺ&ȘR<~y]o}?ۣ[nuo}nݥCzv8|_aB[9k}li}k1:.K=)+ZuLoʹBh F }O{0BکJνTW#\%^iMDTWȜAKP-h,h2"[EE. g(@VL:pGa2y#2e@)᠁-Xx{P%hjA;\hj˭ eH7Vs^XMQ0 V[ě5fw ;(JVs^v[,;$̦~FŖ0`Mskr^[d[2578 II`M}^$e1IB.f RK\,& \j 7 eqP V ʀp eqpl ~#h+BH t,~ Y+pE'ZB* , [`? < QQ*c 2 QJkgE|7.,~^LJ/A}oCϰY>{Utsb0 endstream endobj 16 0 obj <> endobj 94 0 obj <>stream x]Mn@ F`ϐDI7Y^ &b@,z颋x nN4nu哷z~X SDz&[T[eߺ7֞^@OR qKh3I @#9PcKdиdսLVH;r XoGB䨱bOA#5@[$+RU#94"&ӝQ["&l+TEqEAqEjm+qE7ZF=XW4ߝU7';*iȋ$ &utCTǺhHM2/U r( endstream endobj 18 0 obj <> endobj 95 0 obj <>stream x];n0 wB70釔tТh{G zQw,Q<_^.Ӹ}'oa~\3+Ʃ*c~~[-_ [w> endobj 96 0 obj <>stream x];n0 w70釜tТh{G zQwIΗKz_[> endobj 97 0 obj <>stream x]=n@^ 3 0q1$ȥA˅oD)R<%9-9o/W7uqܧ\u=7u;}~muu|ǟAX3SR*ORu[ڸ<.I J/ԞYI}eٖHZ]Y%P"ŧIC\",I^J$e=y*,IUK$ zR")4 %^62XMޖ Vӣ`rGgÉ%&o&`5yہ%ޙ%&kV 6 ےo UuX]N%.@~gmau39p.`;80Zxa <iCñ|>Ʊ>w y]9nj endstream endobj 12 0 obj <> endobj 98 0 obj <>stream x]An0нOS"m &dѢh{Y/" ;3b L$QQϯ/Wwuqܧ]u=wu5Nv8>ᄺ}|ǟb6׏m>oByZrߡueyj% }A҉5־Ci }fM%dgͥ%$c=utfKKRZB:#\ZBR%u)-!UT^0XjbM`5y35  fVL 7LLg +p&`NI80k L@8Q(8"tΙ@auy#Fn:V!3;.oϝtX]ޞ|博VoTVw}auyaRKq۱$(ǀCPPyI9F5GVXae<8E'Fyk7꾰ƪkP"p^{M^׻+p]vxU=3 endstream endobj 14 0 obj <> endobj 17 0 obj <> endobj %BeginResource: file (PDF FontFile obj_87) 87 0 obj <>stream xܼ |0~6wM.! !\!+$@$1A(*4* u-D`[@tZkjL~oyəs̙s9C(!C6N_T:NjZB?]uupA ^㪬xv7!K;7\nݟ ϭپrHP9*èW_{u~'/yE~ɂJIǔYמ#$FR 嗡 ?J _;Jo %w7l !V/[pS&z6N1m e1:> ++ ]LvqnVN[ Y>%xR}Iz| ^VWSpm5lb ;Gdr|8?|ϿF~Gr*8Ͻ g,XPfTC2ooCkK?yjR,P Gn`|Qr?_ZGKok֭KWbMg헭u-K/j\`ta3N{Dy(KcĉN xM:C5=wv״UC{{]ƬĬvc8pAڽB* f^F4լ\ݳ`asMuNAA#D[=ʬU_}&w{>\֖tN^yMwDuyO`=5=46qG.2|bskV5Jw666/ ]vutY"n&kkdA347ԝ9=wmtz=9=˚{XQms%DAeN΂! ppwepҳiau'Tiᕧ+%xeseLUOpV3-5mM4F?\1m|e{wښ=j(V`;_P\^SXJ̴n8NEЬҶ~n:m%6 eCoyL!-؏,15ͫ/oY y9'`oI4 $̞3b?c8rH !"@EUpL,348[;tN;zY9-ӥOrQ6-*d_vͺ;t^zDiT;hd Y\EA3 g14oN'ZC869s.mmw7`e`;}ٿ9s;Th۝hXݝX\#\07|G+lւ/ s3Ǐ5son]7E.Z|ͽYm3[kℤD-Zē8`Kps$JBDiN%UgZ/#^" H֕suUIԉ^OrJK)7󰜽z)uJwS O5>iʱwn]rK6?&8‹f0" Q_pSKgw[ R2? IK\Q=F}f+1g` ^zF(<~+`悄,iJ 2twKxr,(ȳl陟lI\L :Dj]mp{DDJ*@1`{S)D//lN-W"1DK#06 A"h8jQv%@cl&9b -n.h)= \4u=V~%Z԰د УC Q+A \[E %/m^"زC{1V|QiKw 1Y`FtYl)ꆞJUmq G˶t#Ǫi,iȱ/Kqy}4XvM@"--VxJ\j* 64&6NT)jX J j:!Vőv'n(ށJ9JZ?_ѳ,9~Z<_/3JV ?pyISwN0́p [ =b&:&DϬi8sE,%!DnA9=iIx7H(0  >˦U͡AhެZi~Sϗ4 Am!NϦxt!9@/'k< ]te7"7ޒӣ.n {X>J6DwZ׀M&Vu9Z_Z讀S*njK0ֶ$@O rC6R(bWZ!Fo{sUroZtF_nDг-.âpO6;o *g¬ǠFHѭ FJ=9rAusf!.Lʸ ka9DVLRJCCz,޻`L~wȾۈٮޅ]6َeI]!+ʾֻGq("v"r;_mVWҔ[wh;pwr#}4ϿȤ/A RҕR'HCj*HAZ HBj2HK!@jHK -R#@i.4lH !ATRZlj0+ )izlrM]NJ{;0{9f{1׻d*^y+1+mìwfcz/Ŭѽ1K.ìw)f-{1mlT%.,w1f90m,w!fE{c靇Yw.fދ1 ,;3offo=f:̼yzk0s 4Mot k'@?oR\Hwv.)MJ}w=tۏomMP;yۚketRn_Ђ/_-/|h5ϸiMlm7Gnm_mSncdmm bMemѶkjJJJ~-U=(թ;acB<ܐ\ H:$ I$C qH D   ^jhZ.ෆV]+J ~hVȵV %ZEaz)w%tw9[!y ͐/ʿO|tL^: n_ |xy~".τT_aJU]S`ĵ|fTjrIM"ZH hܚiIӈ6Ojӣ-Xּm-=9 |NIfYwț2g2 ɛ7B<`$Yh&,-[y\{ފ5qމdD6Zk?ο]Gݵdo.1wDIT M 8H@d@{o}_ւdo:Fi1P)!S WI"}(}KbWpwtvwq:rd2[&rJ%*ѤNi?(\ǣ񇨶+̘a$h]74![b5뮙41'jӔJ^DHlƌI-4e D)S} /Dog:~> T@%h}BW$hIPY@c/3^֫f*r,?JUh87OPuF$2>JV8ˎfz7stLNW* S鐞i61cy޴#4Rb*hnq.cu4xua`uOdZ& j+Z`nruXz U),^.Ė"ZlFr䦕& ZFL-00 E&OI*_XW7G|ܘyGmXB\EH><.l:~)hd+爋 8tQPw.SO=i&W(uJҡHvK'1cD`^&AZrRnEJ +M 08ܢ[ĚΠ&5W׈^MךNrJR'XӕR E4x)8C?EsEo~˧M^ M)x v+ .aA/'%An{)K\j”tMṚ(bOKb=[4X0jvyY{+z{e¨fҔ}Q5S±pI2,5Gïe3 /D:Ы$Uj--=N3Y^׺\o=dSLDhيr~]P7$Niviɥe:_VFU"-./ Qnڸ,y=K۾<ӤڇM,ʉ(Z?◯y`?-e&l0v;zBN7ajt(QreNRۯQdpŸC )`{m9=&"!54,`j' _V̷|.={wf7m6AOq&>2A=TcIU6EO46_I1[)(t,J.i}w75m=oNWI%%Z{^3 /GI}z?ch率[iW+xo6:lV@Z B6.fHy#2%gC扷m`Ս:Uxcy(e|>#D5ƀv LH~D Պo\\ .@y#,Hj}w.Kě MU5,^e[}tUa> H7^B)vAw(|yU#uNDvFV (ҿϘ?@1Ȏ" z©T_4EMhi(XGLD܈My ޖx[-}5ޔ7߻-#W ȥ|=g >ƚZBP@%hQP`fg˶8\}\05F_ P➐ڏu`ZV)r4;јMl$=LoF@kdaH/K=oY:$f QGܭŁ: 0j0.A#aunKOee2짝y7}󽦭7?7`xY b\x$19+m`7t#p;|ӍZPnr#Eb%& 8RU\h c"XOv8#U@4&XoHϕe9ģGRgL`j@ٿ&(B,ُ2ɢ&d"kniiβ&OB6)-lگg~i?3k3WPЭ@A4"`Tգ:*KhaB>BPB"S 5Ÿ"xŕ,mElI=K#>T_W!KJ9J4/~:+JZ@Z,bxO`Qq3C!~aJT,Kkylh+Zӎ 9nLePn, .KHIg*hT!eX&pP@zm͙{{23ްo/_\uՂOj4 533Guǝ_ d)@2GͤRcH6kuZ,'/d:^[y|D$S5ɲ,]r* V1^[.ڶ򿂵?8/sKә@m|CHQ<&Y|0_p|7N(Fl2D!K"Ry?iCvcɽh8R,<I$wĚ~(=.tI].PEWf79X%V/C`XHyr5s$xYfQvKp:5M0 |,(8r0 >ҀޓENmtEp%g>ߐ8{]2}thQ?p5!#ReeߣȶMX,f;ucT6 2#&剣"$?ω( [MS V* "¡Fҕ~}"]zmzUӡܚ^ռtro<#_ۋ6}qwd[U޳vv͵V QJ0)LKH%$.") M0HW#TEAr@H}P|z]GʖBm9 #`"E΅rc@bȤP߳eױG/X'?L kB[[@.7W(ryЉ֖a{uPLw+c$dx8M)4rTRa1 BkN閕Mt>n̖ݙ!ݲLj>07 ޒxe2&̟Y`F\1O/U|M>ɷ>f$S6ս9f!^eV ;-ޜ& $5De#y ߙ\@cS2:{":XPW0R l7hGgKK%V4|RIOow&=1INMNO.MJ|ϨQIrǘ!#Y=ezHDɤ)E7yl6wpV΂eGcM*.!1 ^ZVZ&Ze_V*f$ pt<"9(cP.Bɼ%:I&<9 JW|ZJyއ\wm:\0zT =w{vӋh-}4#ju{+W]y?ētJ̇gZx`0>A[t*;e*z462s,tH1J[ uPC&*7B!Pj%MSJa*r zZYE mTǵ 2T_]/IY'2O>|3O&Tg)I.fLTMdӦ(ͽ5Nm.bĕӣ$i)HujuӲJc怰.VVZ z@5˪YUVUX&> 1#pt/S_iSM 3}g^OIsoB>L|$F aAoWN#+T=r|TtCz.cg5^35>5 #\#l: FPRv Z(fcVgW’A܅GG7kB5豐az=袴= OE˨Q [󌣥`C2Re4MtRZ[۔˙aYj!+l*(\_(E + w)P! f|(38SMb0 &}fϺ}(tl-O٬@֧A֧Ƥh}ZbgYpGtQ,^>m->*3R`=y;3sF+|z~GOg=~9+L9w߿}+JC'ߒ0QL0%* P&adCQy_uG D]*5~{' */5 r0 ޶Gׇ(kbKM1r碌~zJOD'V4V± [ܜ_|Cn/w>-G(|ؐ力҅5 ^o! U $&lacoȥ t'h=xN_ސyC^V?&W ~_gK?|̓FS̾ә_7~Hh=EΌ\`H.VC)6 pcNupDjMulqe]5%q|@X**SjT$,(,'HPR },XM<0č_ꧼztd90 %WM1W,DtS7RwR̒ GC\*(?f}óV\3™weӄ Z|ߊɏ^ga zH\jZ t:mtdCYp-Aj -%)aH,Qi^5MgVXSeJNJkr}" l8Lj%z)=e<̯̚?'Gl t`T&+`+θg1n(cZ릖\Qǭ)lǭzUT 7_8cĈ}ֈnj&P<ʿj iԗfSc8=Wa y^\aK"TVJy O >: &8 BD KÇ4 i e~ণG٦l:-WN~e 2`T=2-)@MgSA@CRAêwY{ %7KI"BZ\XC_~i, Q+c$ BrXa h8*a8' ϧ8AȈv1NyX2uhL "u>=)dj5r_tS͖oC޲&Ep̑oYCP:ӭ4"ϏstPͳ<290N 3DZ-w\uOE_K5+22̦o )\hc`b%S8ui.GҦlg(%CC߂1Y t0jHq&MvTx+\B-ii:ٜ0:KVc7pZbbNJwI߭.JABjrm0j F-v׹r4\uFW 0e\YNrpP*t1u[]O?͔6K:JBMz i|B )cS-헎HJ'O$C<S ~K$uH1NZ2ݭ)u鄘[ϖPƨ& v `+ n+Z-:ۥf% EWTxT< 7MPRFyzrfci`m3ϜY$ei4;ޗnGMҶ д'La]aF-Vp X' ,d33k& ͥrtT㲥El#W+mbظCl:Su^Ly.U#́YZU c.N%ZD$4FkC35RFyH  I ~ жqyeU4)[⡼ӤlhY0Kl+M$@}QCay*s׈Ȟj*&[N(`R# D(D(D(DHc8! R!,W\m6¹0Q3 Mm Ia_@pYja=9AW5PCQ 9G'њS_9#OYԳ/B3;36?=Ʀf~8A/0M2FuUjO5.&DaDh©W*+f Q!q10q1A\!.L'shm4iՅfxƻ˹ 7f%`a{+ 3Q SbEMF=zE L;6XVDpx.Ҳ6'VD^zϥ J\[¦ % ZD݈He.ϦM ./kxB:u!g#0|E۩JhV h4(f5+A6dX c~7pVQVyVWzv~gc܄ 逜]FҤK8WË,) _po_Hn "U~#Os4A :P|'ii4̦"< tG>J|`[z/^Ej}܈ ԸKfۇ\ufT_X2 m.egpFLX3y"D gQΩ S$Hf]1Y`r×d5`-ge,_y|,*KvEȫaAY4)X6_zZX 0y4AHQ)t27Q-Ǻ<]_=G.cJ_fyKe93ڸӖ/oKp.(Ifޘ~ -TRQ0BTыC~"ѢhK Ez0~0@-PRKa7y6&%Ex{+.uQ^_uiPQ + ; ya6ɮ-^J%QF|pOwv_ ){ W(> mI! O%M?yt1[2Xl8dåV!xZW;Ғ"! G~$cs:e"Ѩr̮m~wo+/v]c\a OxnVyVʜڧ|?ʛzݲVN{~w j"URi\Ō D &i NJ*X) "3^?+&@{/kEZgz[L1[f?8 "˧?}|RzcncT66HnY!5N/cF]V[Xbc.}$;FZb rD/t"x@9N ۆWjBq*[!t_htǎfg>4|9#S'[ a,>#i)0x%FeIJ/؁S&)74LT@@Vi1Dk$VL)]uYanҳ/;ON E4W% AXa Q# N+ZY f_kl .л{t:.[!zo蕯~!U0Ww^i [5 װ7ʞTj0.!*..ːPzP> HlS`9owwW-($zh@rI]n4%.ƣLUwT7y@Sc .ݪ1wA[Qc;@腱횺 ,)Iw18Mnm50~@YmY/hGb[̀1gtSBm;IgfdyjFf:C3^ Cg8ę!?۷EԻ4Kc K< (h0ݥ\S\L@e:ZB2VZ$w<9T gVPuY Fgz^=ki v>){?ǸQ#1*`ЋLJ/N ɺ\8,4j4JjJ|R,$`K'ln6%M٠0ڄ6V7pFN`|Ax6ErҒ+[\@p(԰nE3"͔^E%gp-7((p쪽ƥV5,F wSaiKe[NrKj*OgRv36&"HJt1xv6Qeg30(% K]Bh(IiAx5~+[ٶ&6^qYξ!jUd15{ RO@r:LUǭDyŢA{?Yv?^ )]wM^\ީ:UV31YC jb/!?bRf|2<+d FTҤ 2B(+'J#<9iN1Z]Cݑo%3;Sdo}"Jz{Lf> i!EErhю8c%z#}G|N$ >"VkuǶvX\c0 iX-%Oa؏:`Xl* F-,d UʔbM[~Y da)Y ytNy`K;|:5-:"%bYm|1_{&>|>O&QKG1>h1Ihx4wY. ~?Ŗ;]>GZln^70p< {/wr<Ո,јf._ݘZ+0g#`Ԙ">TCpn9e+؉kzww{Ly_^^|ݵɥy{ql*=4nƱMwIz'c crMGX&eyuW]εbogˊG+h<*ֽ\EY1OLWv}l>0ɶNr& !_*. && Ө03=gv7zs BQ.KS9>"Z1ڷ ٫17ܘr`\ fC 7kH޻^c[ѳ{}7+Ӄ.̩L4>vp| E@OmGY#G@)ɪ̂91 U^=Aqv |7Re*%;ߩ9I@3PA;n@(7j ѻ%ݍڈ{ lB*K,6 5ˌF+:7゠'[΍:jDhhLC#Rc:ڢX".QH1l$|i޽u|lu7C-zeݑ7?^E|ˊ34*,k|s=Yu#J{:mBId?vdOXKLa vGElHpм-竒-4D$""fHq`Jvg9Gy"1ۈP"܏S*^S5\p/vUu`b"ynNIrDݠ|u"irDi]u[$?AF0;| n%bp[gg8MG{_hM:7d>5}'iq+)h'29VaOcS šd1[]M.*5;@NUvT{Ms&L++d48."0,oxQEc(V;H;cŜH(QlBQ8&j }*DGͣ|d؜)l̚bd 0[ԝn`jXm6[K>Lv\%"%`^l`ztrs6n PsH,O NOpaUi0YaC bYkEO.k9"9CQ!-7%ٍ:b CQbLYH8D UE-R̍*4.w\| sH=(O5݆O GDD17jB9܆Dp5̃Yxh, 0Q^&铛ɯ~^rUϬo+WQ:2TXYYY|KV$k]P$+dgrCrkRM"7š&Dq2k\/(@ ^{!IL.!B ߚ+kOV_4m]fՌ]1i$^U(Ɏ+Sߩk~ '%E.AH bшϥq¤I ^ͤ9xZR<6h} U&vx 0"?b,'56+ 1=,uB3;hQ;鬨ftf92a+,&>QX>ejj"ڧ ?A n;n]W<زk^^zYq|b;t/~͍?캺e_*{޼蚮KV|?&/u^;lYk{_.-DkG|XpxՌ`I(B\%t;QD DŇB ^&nB:(TP4\saby;:iu)KՅN¬+=tQ*"}AC7|1~J#4VDM |ݺೠ:olH(Q[9_Ysgcg#N=sB~g d3!"~amS~OȝQqTĠg?Rb {s)K/w~O;!#QjbwWwkzn ܤ>d ^:G  ܔV|>B`H&#tΤIk+ C5tR*`y`  Eɀ%0"Vh~O?7D"&$\Fh Qr0,!lJGHx<^Z.%ċ_Fa )3U@췬VZوp{@ztpXɶr\NA$ Hՙ;zoY}[yß~6K:Po}٩ب01ڍ.cN滴:~ޕqW#O}AdiTЗ%Af[(?\Z֬V3HB׸E pñ8UC24E&gE`vz6RLw}?sΙ&Qf`' 0qgi1lŐtjc* E:ƞWѓ5bKΖ,>foo [EBY>A4q;L))sTaW_UN;4rdRigk.Y'Jh=')Ժ (5RT4,8R 4_^\^>v;C}@|~ڀ~W;=y8|mnJUњ*XmTњ*ZS5l wWeR;p\O%,OX,uOY[Qa"ǯ٬Tj`RsRHKb/P"0VR^T"P7#f5,ן3ߕĎ9'`YP! %x1T,*OEYE5Ŗk?l\ٴ[r4KygyG˿$ge{RMl)n`Z Z/ct}~Ӟ+ bbgϊ21~KZu?GðgyX)`+XrMz@jA/0jj#}HK'AZSEE<ㆋ9xkեmu޴3'36!EQἎP}/SZyQڡHd{ÉC,Vy42`uNf' dq̉>@RJOtnQ|}”>6{:=IP Y4$p=YNhpxkT+ 0JTj-Ubg0۞c{':aW;; _a^"Pc̦`B&<'3dy# Zs`'2CoFU(Lrs:s"̋{r&{^i%z*o0詬3<.\2KC~^k5Z>Wq>DD0sPQ!^^!bHClDzO9pqi9( )})?d eNYQo)K]:ҭXs'1F+Ǥ'E4ͻn(`㍏^YNQR:}_ԯj=";/kOm_*;0(adB৖g7e%'ݴ<~牏90ajD_]}pE336dlB IH"_!,, A21ȝ%zz*(%CPT@Jlul>J&okMʭ ku3V ٱԋqğ@A2}7SAO, x*܃s~͚XOyc>ԍA5Kuerx<:f1,#(Q}hF,e^uq)6_||MÆˏ\ś1hlhNރ+v\:я/۴T 133YZ *X7&'q>0n`2 fK4W]If- & D w)M 0 uf?ic sF k$eM1(ja냀䃪lfJꅒp d6Q|=-ӂyY uIFosk'W%xd.[MRnB$|"f ^Z=R)W *FEEPQKzOg裣vG;_ T^ԮhT֘(wM㓝p4>|O"hcSn!l7[b2k~VwtU[,ve4@b8DK 8]d{<wy9]MWOn.Yrr׊H Il`HH*1[}HүcuE==mt/6%..3rvd!DPU]I%j9'L-+75dj[ЎD5a" c=Uw.8QܑpGs |$#qbFrt_>C^YumF;\3*&$z # cua:_QD95úYUDB"ث+;%0$54X`DXtx$7w͵_aY\!$"))iBdd%%&:Rc:Ȓn}c(K@K=y.<!5\籾PUQUyV'e OI7~hwX D3 kXmElTبyv?X٤I#&B#HB1)$P@@ hu+53dc$-7#0<DpG>\=KG$w#H+y(rB&rWY>P6=p:3/K}JfSŰmjlMڢufs9{뾳ׯ? )t?v~$BhfBqe(mlXa,C54A%:Qr [6ف18\{eshո Vnfwdm:[Y[V>aLuHئuUw<:vdd Ixcߢ wNyvL,7o3񾫤@%Rnp2 ̋DԫM#HdDhᔉD`,~&L|O],u_ өw4}ę' 0Q;=|.Tl^'[d5HfY14ÃtAsB]kk@њG$ Ç_RMU**>{(x2͊ vcVjf~MSlqRY!:k1(`(ğ}7ҊZ0}&p}1n 嶔Z\ۖU|}撏,!2H|Sg*Zv8|ŧlDoV,/ \"&w14`@"qe[d1ħ^SbuO3lf#L}wg.\JV5:#jӪ/4_bI<e58vrG0T`Ycp24) qҭrdF2J#?1ט1%+|\Ҽk*vȼ|Zql/k[mm W)3+"T<Ԍ9F 88^l`݋Q"* 'i-]'jzT}_ʠ.dJ:>dOˢݩJR:L;Oq0q(-UNӒl!ЕIsf_ȝ@rJ6+"JݏmKX+Pu]εN!QJ: e-u_@~l܂:MK :ӥ') J̑Hi}[ cJ1xJ}k܏f^cz7ys@7פpj,OSOS*/ =DS FCzS',J}ч6q-6CETεYc ?G07!czsvDcy]-i6}q߻ƶRC%MۅYBpFBNQn ia,OvK1`}e?lw~]u/}Y){ݷH~0YM\E޴$-3r:xMsƖ̫50;8zxf9fĨ Ѥ8RnD8"Ons0&A9L0fA ~8Z*BwĀ y ||O?L0r` a ̄jM(΅* 0*a$dP(lh n40 n1P/B<$@"ءk ep#<0~{Vk6ܶn_ ~&:e*]`$ (^ݠ\wGz8Tti R8f4=;癦p؄ ċx[%0M*nw`x;>>Arf: 6nMHw1~w1߉G{ $|ex"@aχ&Z藠f σ-fhb)&[b(AVkp?C&ƛaϨz`C=a@X]w]<`;VOq`˽xj֛.׾ endstream endobj 19 0 obj <> endobj %BeginResource: file (PDF FontFile obj_88) 88 0 obj <>stream x}y|<>{={}6{؄$$"5D(jrж^ՊG=l -T-Z|ԋ3kNf33\3!=F=k^Yb[!wn_:S+7(~v(x!ek/_='(Biڴ,UM|iOmmPX ̕EN?pt=P|uki dQP}t8֮ڐ:-Fϯ]tC}}XW&D.nq#ȉPo?ЊG< \'3xzFpt _#Gv$Pr3 A`WrBG%ztٱ31mހBO4Aɍ߈jttZMۓw&E?A_'!-rG HJ{N^tCztɯtG3Q|DK߰o&]I&/B-/jE} 'В<> zG )>77tnP=Tjs+t/A'T1ȊFn^'%#/џY8Ncn=RGBXV@wG>#ǸGżIH=~ oῒ d IuU;eh5 =x4/f߁Gqi J9[a(ln?jzqCJV$9-Û@! Z $  |A\E~@' '/9EQ\̭VmvAw$sppZԩF׾y\ЎF6C7A!txۃ:;7.tEWCOބ?am?{9YO#(2̂pYJ֑]N2@"_q*N9WMZnw^征%>O& Z&VSVQvT:_@{~'-\#N*y yZ TA$$\-%cLt@_D$gXnN22u7?Y:?բ_O>u#R %WGWX?K؁Oǹـ&Gruh/iDHZ}+x&~ |\#3E5_эh%:|ݍQ%ތ(E~{ ? oWC&'~N6c~ ?Ff𧅹x9puhZ܂6 Mr8 '@m*7Ti ȁn89 @B< h% ~d].0HW梅н;Q)ȃp'h'zoE>ta9&LJG25||؉>,hOޚ$h1N[~O;*f$n-hNKhyrC?Q ]1N}EKn 臝 1譍 n7_[y)(v ]׭]sU+;W,|ŭM̟5!V?cjG׌Y^6$Z\TX z.nZ&h봒F#4')H[/ۡ=-@ѤuJ ˾U3IJRJKƠ8:1 smbYIb Fb@.P'* ܦ4&&]m"ܮW+MNX*^I #;aFG^zhTؘp'$pc9M=@siIO.N1ʪ 1 qBBonQzK:(mQݒLas'&לt?'4m=z+zӳ]IӔ{6@f\K“z&oN6OM 7ozFZ֩$4=m04)v$O w3)H{V3wS+)-M5ӄNK,͞cNis=iS C4Fdh1U%0"+ m=ZNOa9>^Ҟ.?%)NP:&)DT`LҒ+I0VV CoۛǔAtopӔ:VbOE99c[@tgd/o 5m u$gc?^:?m^pڜMJcO[ov:?:{.M%,8ISñʖlezФKa ԀJVI T,ˋU,;Y1ckz6aO4@-) 7 83 #il$beh_(}8'M7ÏdIAeRO[O`{qP=m &ILj9SZgzz". yz1#j&Ҝm&G`Rx1H6(91c¦2x%;7L&o X)(M5}D{w bԙ2:ILN=(òcOejPNujkLDq;TG -ꃒPw,Fp==A;6947]jҲlV˹hC{Zz]<6P;D7S:P0 ũZNpWDd7螭5+m Cl Wlrcv}fg\y*gڗpMPz֡yM IPnI)4`Rj-ҔeCi  F[Lj7E'L=d鈷\Sde†G SQ3(UQzIKߚhݕٙ**ĺh8FIxB`h )н1@^ \4?6ROz2 J3 ;fJ–yK=бTs Dd՞ZHKLw-TpHp$H@w-WBGynz1Ts}b+8ǟ +p\^Xl mƆRNGTt =C"27@솸a!AJ*@| z}_n(\p ^99h@ .EVxO31wg%w ;WUaK+;쿤9Ϙ'NIU6*Ux 9oߐ_!QkF^b,r䯐|~Ԡ!!/EO6a;?e!΂N"9LpC5}c?VX?ThsP<<!]!M" M"7 M"l&UWEȒNhY(Df AͬXi0^ z*ēh@_m?+./-*w}Kq{ ݗ(nCx4tE7 ;9q+݅#;C[5ARɲF7Pq }$=@&$;A%%?Uy~q}xĘ5>//0އ0zni=E@b;Yj b=Eo9D5sI7qkmtY t5@<+G勹^lY d٤6 bi4vn+D7/r`w#õ(ÐF]xi^i+q)z>ޓȏWyu^vbie]p3F/M.ǺuZ5Єh,yC>(Zf/R5fUU@W<*ڬN-jQͫ(UVO)hД W V4%,42mx<-qM[$ b G!8vFONT%&jٗ6b|{3&p7 $-4Ʀyh^f_Y73NI[:9ywM7ꩧ7'*L=-}:snx͚p?rni8!-M!EKջ/U/ C͠F¬^XaxLv'BCA]NCɭJìbuX v#/nV%~JY*7'q|oDԉoKGlsG k 6.ؖNj+9H49tb#8Q[q~SoKlľgW {gUͦ7Ϛ\kY5Y5Ycٳ^5<%m_`]^;axly .O m9 O!S =eS<S2QtƮٸbb ~Pa#TO?8טO%URbLLmLI1iY-h}7 ɡ~ K' 'aEuEW3`=͎FQw T/6ԕpIWK?Ylm`emij0p\j۹RK!+#~5VW6GXAUޘ II*$F.($sd${g͔8Wꁖddy0!Q#5R# SEl@h$M*[MfK&fVwrepWʮ.Z9|o֧(*K`Uzt]W؋Zdӑ&P^ƪՔ5B$-`$"y#:G$pXTr󠼴iG~ֹbv7L<k۴"[CS\5g,~۹||K -_UF1ޔ|O(U}m}הm?V.Rߕ\vc5{S q=@춘qO޶.oW^!ѵvC=k'7z#%*/=%+YQ}NV8Ve8^RM&U.R'TZ+!Ic]QJVI*ɸ7z/kpeXA0uWpEc)*Yw δR 1UfJSp`~৺n !(0M0cʊjh{쁻J].޴zȷq) 1eo3ttܳ70?mPxdKwN6.貉ӊύ^)GR(A<;\!XuH" qj,A7 wkpI'|J>w ,Uή;ʎBoT TW;:Zxѣnp_ xp( V^ &?0J\z=P&%ȮAe $QHBOASzH^ψb.Vi u:Ҳ-36Ɨ FuFtT|K5׳RRaYe[jl"WWj1nQ%|%ѝmR"_$l뗲o!Lo !")@MU+Nr)5HW$ֻ'&X L~31z\ [1cq }nz/!&=VDUIzG-6ґA)$X#AuLB&QT֬$_41mW;!ī|f4&YXzP&#>id(UQFu >=OG7HA$C&B?oEe`zXAYd3 {`Lc4sNĴf Y2z>5Z-Yħ14yiac!xH+^]nan5ϙ?p9$E^7>LY&lν64ݥv쮏K]7@PSLJ L:io=YD֐O㝽I[Ϝ0NO5٨jLI44+>Yy4R!@fzZ:zJ'Ar`Y9FU}?RlH *g ?rO{,_?-gi8r,[{,3MO=xCH9ZBr:S%QgIR}E^H.̊LPQE(JhH sm}=S2^_2/F+h(v}~o4]b͵;K=֛=?KZ0<S %CnՃx'\dyLyz0\spaQE(NGJjET9"LwD0o}f?>9GAyڬfU2L:?ms')J)e'(p'#auzLs[ħw6(/C3MQRcڀJU%3S#Wް*[ڮm+n>yWV.[]C$y6?d1tW-Ytn?2Am`wy<"aO/vđGYLUdCp`#mX}K֗Б`˾JaV҅'bB|e%DDi^lPonUo~nR)t D Cml=yTReأa `(p0  ~]%ܧߗQ<õ1}cc7V5vz+1HBѬZ.N* HpGo@ً z5 VG`d))URCTQt #\C(r_;K7,XL|Uonw̺}Gy>{m_OÛxom}yx;a3&3$4D:,+CP!u_=SrZQ <P%Ai'܀Wd nw-V]k|w>Qw "l<LWX$RX+=xpSQD#4‘wD5VRZG۬v:ZiLi3Nd ,VjZ{b(:3U 5: }t\ %)o$`~2*+x:K 6ƒx>85=\k=BF~/xt}~ǡ{r Y jo`b}FB9^? 35QA7d%TN(j<9ӭ~k jI{dH_ 0v0f&Įmmqf ֺs֥[-lo¦X5QEռrDJ:I/qn[l6@T{.(Jmbm^$3Kq}0@?J $T`O/yCk8u񓑍3^5ׄ鋇ГTlU~jGa8/걑|ڂ\(f -̀n޿g>Qq 6 eGT)v@AuNl$xCkO! pA^y2e"a)<sI$Wa3CnM2D*3+ G@)PKMMˉ|u{]^NE-⏨|$vnբ(_W j5A(A&apٌ`GzsP(`U]A _%jX )RS~GM8P `5&n:Ys? =8ЏgA ,޷fWFoO#?N:/[k1Y;|ql¥Z@209 A^ iz0qRFWrk{in#V[ұs8L,1wФD^`ZdYX䌻/⸗.Ǚ}Zmm9e/n L@W.QzӬ'1TiGU+T7C'~C/п*}hgNOn`0k \]_^uK;IRKC X_2g _*OTq^A΍?/:tNǦ6LNUi[5W6J;w4?2()&d2:Cn$hyH&QK@|;i4ԾaX`͗޸/b_?F/.V%6B 89roLWL^Hcb-%S|›3Mͦ9Om HMץŇ-R!:)&cZ ݘv˅Q $A;%UЭ)KflfT*{Z!Gy8ʇ2RwN7vRfji<xMt>b>X,G)S5\cM|d/"\D@a,\d@F2G8Sv9#̔эLΧ52m~8*̉ӗ(]=LN@ drD3?{8޳{p^*0_l2>1k~ʊbˣyc:켃3xʡH~__y[G&4>dMl_ ]2kbAG{摥k~dk[ ܾY+ r㱮 S dj#ˏCg:D"}qqVS$+L?d/^v9T43^ZُhT3 rWXH\9ZS󦪬SOztf5qk RӦc_.C#2J4T䮋G|r\ٸMy olYX⚖+?ɻq2jлCaҋ92->uէzhnW.Qvqۥ.6c?آ2#fbAg FA'Vz{w1:{{}Uݪo2/swW_>mۮX>u|k R2c\7Ƅ2_:fE<^Q%נu779ߙ3t\emLۦ9-Y-MѦ/Ff,9k<-) %l"iR 7U"sq=2K8&Ͷ'iq=9~Ci&G 3tc6ݘj|1@يU&c'ҧborMɀ>5@E9?S-[xI$ll6֠EU1P\Z4(+.}|`}=bCs+IՂ;O6^S󕮡χzux-G_=眝;zM)ڞtjjoK5˜! ADzp"fVZlԴUU:ʴU돾3t[+hdk{'X&8Y9,mquzIVpFZ}1^>iNgmpE5E٨ F'iAFoζd`n7 jo=oêgj(1F!2iciuy?п|3nXGoou?SLyȳr o@RNI@RڙtFpBfv)RXYUۨ.} \Jy*Wֳn~ykbb=ЗVLp_+~{sʹS訪JOZn{žvb̀Ț5/kh244 I9Aw'I*Kj*ħ'J00smlg.]M/"uf8R_-N/D*luW=5-(J7yi%$qq+X%pO/Cx&f>p+6qǝnyhn!Z;p#RvM%f .64y<-|mbP+<-|2!T@4SC 94ukj:γ445 5k5ݚE'4I׀a C#;ǹ1DUX@n>O4OSYg3moPS3b2އDaTp6GUiV[j y mlG2100رm|뷁MnP-Ʒ0#͹뿍n6WJ#Sy~8Y4 2(~$/KK z'&lDx$WB|q^BH6l R1C1"YH<:zt*S.c48 jRFȬ<(4w"tCmV_Iǝ'I' Rv7 D!G7L;T2ye\Z/|V9gL;R?c. -?L'7NֹۙpqNTnHu{FH0ҋ)ҥotSHv$fN&懝)&'Z矗vѤԒJD9b liyOׁB9ܨ>i"=́2mxm͖w=GӸvFuȶ+V7ڹ_* ')^؞I e]J);aVI.dbu\lV_.P11QFyy"hʭV\jafڼھyiDA)7_/][-J`9uMjYT[CfzT *6:L)1"}-.Y(\U T%p{ө9~߃=:S@2 3deH; Hg+f6f1yIYSHdćbh?ݛ2 th:To rThkp|e׵"i 5w>~W_W>ȇǤ\*_$Oz%R U*Uv)11fGSRB^X9a} II %؃|TFcITyyCd'NSvA arʕ7 ,Ť6[+ALL~RpIqjӈD:RfR\bd;6`K%4gbΈ$sqa{23(L<&~{-`sj?Ɖ,}.npPؠ0% rȰgr6ٝ9t~ȡ9[hj&K7knzt^p;JrKuEjѶZNMԩu"F*-K"K 77CߗYxw=Rha{af?S~fP(LmIסD0C2D`WP]I[x<7twP]YE=c.ָw~Nq `dYVq aV{- *G#y^O-2'Ì#aB{GhnbgU-3RibzKWMѳ l$B? zkbhz>FSީPfn֖@AqU[ő R_]A*hFRRrOu=Lً6C5+mSKO)IkGl]7LM=~ff12]Gg(sSt;J}ZV"=Nw,ӑb`-dl91_xPB)$>+ Au"Ƀ 4=/Q/z[lA9p h%:q6Ldv򘆷rt*HA`G+n*7_Qtstw̻g M ]׊͝v{wWtݱ?⋼+/xQeM^2&ͳHʆ-  Bb^W]G l4ZC9Ti(B@t/%!% 8QGX ZJ&'UFMcj[K#0w#*mL<@Eu,H*aԜJL[)[ut"']-7}98:yN;}jT]*+syz9;%i iכ )oIdWTMjd)8TZ&hbj=n񪒛n߻-=Ak rfe#Zg!w3ֻ,oK_P&pIO. B. B. B. B. B. B. B. B. - z"fn(^0q޴\'͝S6:2b7ڬ\* ǣ,i$bbMD44].+@q4 EsPP5Y5" ##AB( i؝Cհ~E*?#]p_[NaXc:Z4,]h B5}W:OF suߢ+ 3QE^we"wd"^S!nb!nǿB;r4rv {F)>~t> endobj %BeginResource: file (PDF FontFile obj_89) 89 0 obj <>stream x}y|TEpUݥt;t'iBNB H!BHfBT Jt:e3>pCtc :cNJdeKނSq܍t0#&v'fV}Z_hi=L쬑R"(*ous ﷡Gx9z .\סףs <_@0t7;݈Z{հw}BaG_F_ ֍k4  z͠g@`AnO_ʏdנ +H(cgK㹠aeh/B44HqxO7+Vףh. CH|g%W@]@Q~i+o=Ϯ\ԃm8>qm>s==;f%`z}7v4a`Mb؁Z@gJd9rpo'qЍ `'n@?Gg0VX_gBݰN( V; ֭ O9;p;.k؅*}}0B PX* ,Q8?taP-r2!adsΘ8镂Ka:XG?2:T s3l 2/Y {"dU2v8jjX1ˆ  dg}tەLMqmVd4VV)rϱ hH&;6>{gA 7\&K׶i)&ZWZb]s{U^w> VyCH Iy = pWV#8쮎ԬZV:TCPRY"VoKRXw$"oUu30ճF'5UWxe ^w۷$%%|-Y*'WD @ CED68Rz.x[7 ` { Q"ڧtJT =H*a4$ʄ@>i <9]lFhB:I ;;jCPs?c֠f5 TQ`h*f #Vb(ut*tf(5uǙ ˡOYi.9HKiK-QI[%ǙT`eI]JR!?AعB+ ruި+9 hFR"KIx QW#4ue D>:ʄl܄LRe$FF]#G]ecJ(f:aBt&*W@'`,ǧ..(*]rƕh##tμ3p umC0!{ d}I4Z]g]]]\]͙Pu:FBtUUdF]c2)ָnw.} K[{r&F2> 6 (W.K9e&A.ȵr\)y9+'r$7u{1Lj,R^ NA rƣ%SFHT;4ۅrQ8bE "]Hi6"ԁF&pmH^:0`J7ؾP,*lp '.Ygd{픦>g(RH3qg6r7}1MtDS]MLٖ4;+5iB3G!7mdm{hrh)5')5R;vgUn&3R36 1@[InD[&[XԑMr]R ~ԑ KE~jlR|I4jJ1e 1eA5oTw\}VG6Zhv;֮LgYHyyU*wG Z]@oT74u!ΫYUΊkƺXMrYTW :V%U!VHcU/r_!GBoHNR SWE$pdhcTFı1)el #b9}H#؆lRyDbrTy2 =z>np"nȡG#p{a L!%PrC";`-]6OG 򋠯Gy)jg\#bmM=xlb y>d 9] -  \2RƗ(J48ZQ٣%Mͧ7G4zL%h-׸ty:Iq3u,f3*ץM(\Z:UR(ͨZ-zA{ӑ^(-2^/X,E%%z#߶uO~{Q+J xލ9ʆ[cp&V6܂ &UQTL@!,8u39uFj: HYpun6²]y( ta*/6fGˊK2J_/$,V}tb0'grt˾c;e;e?吏N:h}̶ݝ*nŗ:Ʋm [=X|l#ɶ3egN}N9Y\\<;XL栓jS}'TVD G9WbR@ey 7Sf%YJ Lfc[d+lI Rnț1 e^6ֵ춦qcb)qɻ|vGo,\;E7 ٰk[6<؆b΁>s*ibڭ)Szf|d4c534{45okg5qJFj *:0,CԬVdGs ,$|bY @*nA󄌑9td!Į=c%>T<t*vrBCCCFnhKxS n:{J-7V^=c/Cbb7~oc* qn -׺եj8g; i{  `F \0]]h5&VcPoDm`Òth]dq)DIQDOeݦ|hbL]%Ѥ׻< B@2tZV'8bъ {Df5>v aBcf YR)Cͥ Y (\kZ|E^%YFPF૬Y1ԫ&4}r죘]58·;g.ٺmƛ=_-8 8hE^t\qj||}Gv[{Hأ?iԘ}r| 2Ɏ@b hQRv4.Ox(<+XTR u1ƔY.6É:N;SjG7ń LT QRA0TbTPgu ʆѡ;E;#?ƾ?pMk'M\0PgGC~{W?f @J@JUnB$[*j8;L9kTS\Sң*F\<SUTXu#| 8̓a¢1qheR'PNO~$k3Oc0Nc^[}nmYzel|:'drJo3P>̗;]A_W{ȼ ])2Qtz1;G^yqm/:vb~pu>}~vT!P|&3.bhP2GY(XlTҞSSyC"4HˢƠHK':8xuF:pNuBfuOɽjo9kHl N$@K%}֛EƫD*:܇)f]_lxzỦ̺ŽաiVcC ?wWEwYp̆Vsתwmi%)ĦZ<廵Q7sPۥ?`| 1FUH3S?6vn &n'ӕ)&rxrzxl͍CmɄo8( M\QAs7bⱨUǀS;xvذwM=;ykco,ݷX'wrqR}8? 8/@@N,fc穹ku%dYhʬ%)Sණ8>#b4dݿ@p*hl`'Vop#/87w ~7/ )~DKq@H KG|~Q<+[:½g}~gؙLy;{=v>6ž~Xkh|k߾C ZώsB4qFV([%_ _`]|jHgٲYilb&vmmἠeRy7FDEm%ؒ+ 4Q4ۂ.%Xru ٱτbn8`%v%)]|%.vzL/Q J2J{1|6PArIa4Т8021ppHGY0P=.f*خ{+R<|t4Iksg;n-w]K؏G`OI*u^F#T䐜2¸1tu& ' =q^qwTYԡZnSijCrIw-V'tW%Z"T$MAJOJAE =;@ÿk1_Uo[x>߿k z,7߾wa#ݎwHQl?mWn 6>T ΌMӳfwd\ 5RsbV"u:"$B)}gET)l8*P'a0-DѤJ+ɳYKKM\jOKZjG]à][(㋲=3 +δ.2V{ѢʤAXҾfj4 IvA;s⥡ɀ*lȘA!zb`p'} ,f}?uJJ$) NeR2cT 2fo|ᷮ_Rۀo,cFiSEn蓏?z`vyMMtkS3ݩG>0# }+SA*@?IM%""];۶OӶ_2l!"lRjcVsutX , K)AHCKiA C9Y=4UHHvhPAV؃44i֑"쎦ʟ" }}j5N1Q·*xJTSu77cS{_-}#_Nixh3uG=Tw$R F[(q42 LzBa9V%`+lƇd94#;ʯp)W}kE_Et8-m$j񋔋 -mRS\ OVWE~b?VvL? g{ߐWf֦ n9#X(.~ ~vAVL( &ըʞP<.(*jr %ce]^!/ԧg˾hRuf,jA1KҐV!a0yPT봆zmXK6_ )A\d^S:A g'p 7mu`RS=`_*XFٝ!3'(/mfڒ]il#5 0{Awb<߲f˩gx|%8u n}mqr-zb2XZ Z#mRu*oI(."EG ]lnY{a2"hHRU5䂺ߪJQ5~jը֖A5ࠤkt Pof0HLOVK2lv>'[sبQ\&KT \LO?,D\4p"irQI|!J/}}W& !sܼT[EE BVb8y`+8&-᰼Rj\\iԬ9}lOՊe#[nw /زi{kiKƧ^>cŽW<ؑʻhɽ/>3/? z|u v2(Vc;{?g}?~6SnAt~\=GZÝ8qPdp3F3Avf;;3FkM(a,j3oQWQ_Z5Z8w+xW<75j*1 gL*"m:I{yްј<0z;NIX</yw;K]ABB wpX};E~Ϳ![ͭϯ3zI UV"+3ᔖk\r,b0E6SsAC r˼vOngcߵaŋ{l$̷ϱ7>woν{z7nawz35C)Ӕ)U88cU_S|_)rt˨-ZT*AzZ'jAYX }少ف&{Kϰ}o-`'KSUo|ѫ7ucݴزe{`lmocKOktwtv@nD)־WaOs+9&Ф]m1JNR긚TDEV27CxeR|EU8vL:~)k3 i`&Wfk.+Lb)XGMoP I}Hp"dzN%zUд1׍v\U}?AXcy]W vQL5&b8־9^s)LMc6[ ,SlhgXB`kKU~"tjKV*ff Y]:!9p# /ql>^ $O7gQf$PWs+_ B7ׇ4ejf2;Te(cЕo<(~?ßxoLgOUA_ca[K3MqggežlZNBM&OJsMڑO۲`(śfN?? W$qOÙF(uõ!nF6bFVфb6F!S6n[#V& X!슚15LǶBԪUa´˴ĄMmS &k;nkp&j#`'FH_\LaDv\(Em}ߠYѿ(5cLOi>`[\T'kzTTx;_SR}7vX=Ԕr&Uvi|9)גZy"y= )D>QH^B"t^B~= r,N}9 $]RBݼzlwM,wM}=f7nYnt_>6'`>gWscM2VJ$O'SGI2_4ڰCJu %«!1V7U4`Li0 4`Li0 4`Li0 4`Li0 M_JK&HGLԪ)Ok&Oߔ1nLIo,-6#%rhtg).x߿ -\U=MEUh Eףih,pϏQ &<45 4գ:4wȈِ =U wRHPEn2j-sx9iw]_Sy7@.GL) w  [`F?ø$L>>dGudN D.\`BEBPGdo=r;\?\|U Hn endstream endobj 11 0 obj <> endobj %BeginResource: file (PDF FontFile obj_90) 90 0 obj <>stream x}y|TEoU}{NN$B H  """ A KTqe~:gFfp懎 ~n'3{ZnUsNM@!E=Amcq$}A2k Kn@_k߅#=l[w@Hq=B՛ڻ4\b%޶VP+3.@HwW_{x"DJW]0 ?zh k^4W<$uk7\˯x֯f麾!-ۃl*!1;ߧ13%{AveVd'B{mC7&GWUhZ1 Xh EF /Dq {z@GѯbqQ%z .Gf݆ٛe86>AЛ3=:t%ڂn@w`;.ĕ9\GAyiP+uNa1)Cm#u8Og"fDh<.' A(jP=݋~K8Bvxh SهͅށCЫUcȞμth-pڍ~UJ|=I3d곫3pwӈDiɛ8_keeڲCzLA.woYfI)-c+gQv(Gaq_MtDOVIf9ې}*"! RR ;EGQ}'W0>A,+Mه@EB88 5\֠AR/š}ݸ ߈oǽxއğ}L?qvlmtnãx:3.]:qG`n@__~\g xދodYK1g|Ll3-ݙ`+[ި@j`ޝe0s ~ F# g5b/&3Ax^Wm1܇J A ^r/yY|d~dجL-Chu.)MqO*^)25ʴgnɜvfn>}2LPR|/BiAS\REx^H&mǧi  ~ S13 H&idYLud;6y''ȏ@ʿ&! hb&36Vٛٷea*~?Wsr.Mڸ'. +V%иṕY2Er߃Ja]x H1[:ފ#cnXwfua2 ~f*Nv~Z`o+޼mv(}ѷW+jiX =5'a/0w@oރ_EsImڏl  F0;A^Djpwf ]HeG`f0b_x!z مr(sc?F~0Zl,!ž"Ud6SΖ1nF]C@}3Epơͤ,Bqy(NٻLGc 'q-OA[M |Aj2Cg@on&aYg +6]6zhCnW3"{`-U7TқPo:qn\mMuUeE*Jp( sj1NQ N.cQQo? &O.yB(XxI~&~M@j&|-SK1RZT[\$464=lu ut}tkn+~@hx݊ަaװTU\p~oal7U&HI|MN_#A?hZmzgS*. }oB>*5A 0~NFXI#m@D5K|Kgv1Q߾,tnjZ7X)loB#;/Ҵ {I`މ0LN>JhɂUB7wpġ$vtn_Ƽ;cS_).:l0yXh/XzNӫى|͠bfJԻ ]K@ + z մ/ |B'% GK'^R帨_P?vR@0:)*..M[gP['U{T"Z靹vXu&xD]k"x7M+T/շZzk\}źѫ~sC'&WHs/6NM?\%iN(`aba\ڥzoJg?wIF_zkMO i۫ZD0;} ٞE> ߻iD肇XA[ p؇wN?,; wvtLL:쇺!!Q*%Ҍ@3=$"#ղR_H*Sa8Mre@Ai i6W#fL+ɵV@֜@}hTEUL5fЕ /T.9@jːä Bfa:du0?%32?*W<aCE@(˞fN654hD‘T {ƛh?C_2= ݞD9IЀ-ݕ0a2w1XXxF & ppIz(c# @ ts EF!c׏3Iqķ!avABdyj?w/0UA5vv v? ,>\OgO.u-y ylʞ&bHDO r;,}Rޅ<8q'忇$(}xn{Jp|t ! r@W]Ï7`LZfM,֏|2Yt$Ӥo?Ɛ{ϖANT*;g.47?Hx٠AB~'w_jt30O47#mA7K|r]u|Oʵ|LKHWif~Rr~bo()_WP~+|X%>B<$Ce}̊Kýb [ϭq-Ur\1Wy9¤0(t BP( VAHaIg"@)+]Nh 'ofZHKhK诌+txOn?,?m 7ZPK4';Jttqqa;ݔvzgW]W7&6~C`4~qDq ?N/]-څCd8DnsO$ۚfrv]M@j%md=A.5I69\R}mmRP?Y:kѴ}ni<@xKfXW' Ǽ{yU&zGPcrM8yq崹U*PgZnh/ h0qI;UM ie#|Gٸq n#?`]Qp7 @-pS=lڰ!*n]@?ʤ(b9nD14à'OڀF`41qؔ:?zAwIŞ,OFOU9T\,H~ ~S!}OT~ OkGj0mEpmIY5 y, 0/2%`WLaze{FSԣ'p7 T54uT s' rDaᑳa{esP0e0a(ؔ ;t mDfO}rO L!4~q%oT07e\0Y|/ӨmVGpܔJ‚MȾtf4 V42g2?μ>K>-d)1qW#m5EV/"8{p_Sl@HAE?Pc~h;gg՚cȉxÕ5;X &ffLrXN"j}zHZ9E6vLU1YinD+1Yڽa=ؾw%ݮ(ʶ^:fnԽc|fofy73=+Y2GdS/rC^fu&3rl]Bh kUש7yn3gUhO^24n ݊DH`ib>n\P"+ n@h' h'$DK<4tdRFvq9[_;,U\_V(蝜a]*=4 ַck2O>EPvUyMТmg>aǡ??Y,1z+v2hslTDz̴?`t3=&J&(M0盰$ʐot8ʢTLF WɇUJ9bFN#1F^+cʽJQ& DSOb0ע=QV|[1UJQo d1^+y  XvK[zطER4땢EM ]W/3BcrҞ=GÎ\#сPU&^٣w*զ1Z'QЋH-U߀YpYIaAޮ+@0쒴;G^`*d /raßG~pY3>bBivimopwhwqtss0-9V(- 'X.z NJpȇBE$T(l a&|<聒iQ(vE ̆gc9(({A&@{w2cl`9U);a~hsԲSvK+ `-JGL Y.sFDWLnc{;y\ )zjYi w~wgS1jgߑ;@HșTL+fCaq܌ڤW=@8?"|U͝bX0X >bl >UkDVSXJ0l2[m3:b+-bY/ZYz,XXK)TQ m6ѕb`8)|DE+Uofnk;dn,T6VxAQJ|lS*ZI…0&[ _]ȾYڗ$mZC?$Vh17w\Uf?bcmkZ6˷ע2[_~D0ѵh/9T[d{ *ý6M-NFV\|CSJOȏpDgU02VckԬ*_8]@~e=flx <[@8+qEJ0F.^"sjz)ða EwrvۙQ2Pnۿn| pfTa"Զ|""f7h'pC.J=)d6܃ em"`4&&1DāvV~fݝԞ)w˾RgZ#FiWiiz{J>{HoBmxwI kJv)n+;u%Bh_tlyNw0Xr,vc+nӴkwr2E3Y7pK\_-ap>Q^bz 9KBUPh$R&ABӣHGy^J$ y=^=hKRXH~6S !)tZ\~8 P?|>J0n T7d SVRq_znNbT2< hɚ6CT 3׭+yN>⼒_>QgTu¼WԎWv5!Wh.uѕ?[R6k+jy0L]m`[&nϼ?XeK{ ,E %:›·[ o)vı"7R2R^8E gJ+'u .̸R!![ &fAFk -%ifhF!AˆeykbcULu jky8h5h{5Y1ǃX)RA|$V. =)d*bvH(I&%D0=?\>ɏ[rUŜa t7M9I1'Qh9LD\"fj|®ÆO/"6pt̖DYl2V+UNYΜ ^CϖG'_EN$ITpY+x=%= d3j*L93i?Z5w3g[%S;={ (3Һd``=kluiM\*vCsW죧SհX+NDԛ Ӥh$\p.T GA]:e[B'M )ߌ)$1?|(L !Ә| Px6OU Ĩ˖uΐkikY =rOϗ=G723}Þ}!C0(H*ݒc]OWVL +ka`tqPX:ru$'gƽ߇^̋}LeO-:8%͙PWTbڪneZܬPerAp) bjWLW0PLɪ9+ 3co` !qPE`'RBiP[T|w͸jBjPVbuP3뀽p[N8vmlP:1*4eoÒTLmTQwKJMYF c|99=!s7Ξ|}oYl•O;so֭eqo׶Õ̪ix\eTAaQ,aRW{DRR/&%*Sqm/+TazA 8÷rEwܞ` vЄd[`k/K:ء*59fY ̣G%4zxGB]Grb[R# )˥HW^.؍j/|eA `sZ]n>UB L0/=U3i0EZw^+,gBQtf'%2R!)*RQ. viK#Nf].k"zx<^Sz ^^Ѥf>}#MѝꚜC H{ M lKzzY{ UnLQv#j!ٴE]/}0*mI֗ aLKtK]ص =zyT_eUg^|{,ʜ[:AbYhAZ}UhhYVV &lϗ,z12-L16<I^N[+qrfJy3g0*ڬlRt}.fw] 3}'qъ+U>TlǚV>69pUU 8c|g㷛U[7VomncU0T&fy 3-i'vg"m5kU$ˌe,N')D"jRSS&|s%n:Ua{T̜fά-e*T,݈n)8ů?:s56/+6 93xQ2rY#Ӏ|y>Îrssyb̩4_12ϪEҞzR{.i1$9H:$6I}[D9n܂:ιLPCJc^sD&fpmyo9ǂ;Ag'v/ycr}3La~\8n[f;5k5"ƭNs2S$z]8rcH Osa3᲻/ث=*--;bᑜ֎Gڍr$baK.3$DOsreCWPL}6f4 꾮35Zl'[{ 5u+\e̮zݹ*[^&3n㍁[Ynq{ЈyJ5^Y6'(+&iGx6 q:SS͈`8Rʂ[>cK8RZ1'bm ,sa x^Z+W0*EeQ "@eJ^%qIA,J bD炘DF~pN r;F{\BGPW&+'(Kc7$5[ah?4fp]NOxb%BmԻR =r!AoZ+nj &{x\Љ~FrƠ݁d9sK3݋>Ō?1z!_ ہ ătz8yؕqȜ,Vzs:Y=Y Λa@ ϐ,:{u'0F+&W%Oްy k\r6m%pRi+D.kώHHAKb9̳3<ߴ/!+6>t0ϠvF޹3**'W{6#qVܑҋ`# Ct8r9\aW@)ƒN  e=`.*I ~%:ozGVJQ`4 ;Ifjr Gjk;/ \NZ齖=jڛiU} Iы7 6-VݝמZ^ 8:%LKݔ߹BwO=nWcoJ$bSl~8cvAf"sp9)erFO#H8y}Krt3lYi,&ˏz\e.#KMs4VxdrNeΦz+_ r4уpZ(3jSRolSeN=~;#K7WW6*W0i'jw˨FQ.]e+czʈPVZ&1eTUc >d$tՏ|D/{.V! KZϞQ| 拢(!c#n[ziL0[ \ڢk*庚PnuwZ B J*uޛL~hm֙HYjfg}BRSTSՑ-7ԣoʾ#{Cv#G'<?|>ƎMsMM٪\fRTqoITT+ W:CPNi/iq1?PUJ iaQ(?9&<)K3fњW^Vf)/ϳ4iziō;~[2 `Sˮ:Jg=yH=y2<<+:yƪi|{W13t5.7kQz4}>7.03 l; 2drS.p!ſ ʥ*]ջ{{t h ?44<> endobj %BeginResource: file (PDF FontFile obj_91) 91 0 obj <>stream x|y|TսϽ3sgL2LH0 E a IB$a :n"*C]O[gA2`[mkܪ@U*lͫӪIk~yǹ9w9sv. IHEͿw]ֶֺKYvu=ӱ-BkW]}~ Nĕ+|B&W-p Y܎OG q1mL烍5ڬ.B:J83tye+R[q^fFzA=vӣo. CH:6/_D kb382G-ab#?GNfk;3!wr%g:gϑW9'M@w8'(c .y~A!9LO@ w,, _y<o~'tS]MO.EdL&F\$Hs~HyE{Xl4ON37}nl[?y}Iar?^fA3}HxE̳.ҷ('؞mܺquk\~YKVZbi뒋[775^ 6~uTWUV̚9#:}S5,2hܜ1YKwU"KsHae5mMᚚq:܆mgu&CUud:wdGȨ52:2T2u\a2JUC4?7WC~|yv'BPZCɪ+{*[+pmVx ۸Bצ⩊gڽ? _9e/%6T-OϏWV>2˜+)JJ\ f==myxyxkÇzʞ y~"yda2Yb#/C=>ѹ=m1G$X ;k"|3,l?㈙쇢hG -gB4i%m3jx&["P] %aWIGgܖr$rޡ}lTؚI]s!f]Tda=+.kD&AÌ#gCP)vjLW7*'IMxJR̵rً{b~tq'Fd/ e!Kb9-h@sWL$oT2'?vgfKȑ-ͫ|TܳHzj,׍d%p'96t*ˆUSs\Z+rjD7PPt- ŗFzX-Eԛ3%*D dW}1Ԋc$Dch%6-|̐9A?LJqp6z$3J|JwH'ܓ4 {k m+X+g\:l`ezvD¡5\vzXт-z=-PeZ{1'2Y+$B-jĉJh沂-RΙoM5X6gEbdSɺ$M<ĚƊckQ {:S1ef==[I)VZL5XGt=r|7JU?9z{D!uDytRDnDsDe___⨦ث|c( Z 'C[qIxg8< 0^a@3uPI68^QZlVWL̊ck\lVs\[[kz&p[7ݷMnziۛzv=,+kvݿ躃ۮWw]}ɫO\-[ܺw^uխWq+` |kdta'Ȫ(⾊+Dwh9{4;*Gkٶʐ\%V+ϣ2CiWv˺5&˲(2\+ ar'7Ҙt  ۇ\𵿙p̺dpA|wlKsBΛ7k,LfB]}c̙[4}HꐕawYD1@n8:| ?B.|7 PH\uFH$7&'?!/xIH`?-i W+'ەő.J SA* H BTZ/^O4zE%A?OR^0abcd4W }lu]j֮7\ }/~GlGmyn >f{aK&qx(r'DNP"*A'I4 $T)x9Gl2}z҂.iY7Z L`T mN`£K']R<٥Cu) }a|2D[;7\o|)PӌVƛ8Ds] <܈&EH&~]EuFϨ (MW9JDJ\8Yf mlFzͷ,KCܴLr)o859kq'x^Kd̈́$ / ۀ4yeYj@,Yb $(# -ӣS4 49Z*)w%0tRx7ْ }ly| !__(=3DzM<B:Φ\X/grQÁcS|@hXّ#sw&9 m5ddؚnEqr@,˲LlP!Џ#}kGYzZMiNl>5'n93/?aN Kl2`ãono<>+/?~}Շl=W>1e']kYʘu&]J#ZFIT&u-"[SVd*q& hE޷%S#fN"5)L--()vWؕ] %@6wl`p^؆bum.ǧoyh0 r5kLs* d 4a2e8ondv;oi>zٯ[nN#ov͉`)vƅA}.1zWݷܰ ?s?;|M_aܸ`|A֚@ZC $ߑ88͢iIJW}MbQ؞ghx&7'DT,;&](\ wI{(JEz1qM?_zm|C s-EЛnjO鵠ќeƧ[;6ߊԾeZFĻ@ meѕ8jA\%vq_TF LZ[L F9ȴrәvCviOm>7qamuߍD; <m τnѬϲ(}]x_[e؊! 4 6Qz1"( ynn49!(w㹜"W0 ,e%PKLcZ5 @=* Q(dg@ytؘ[:H4./}4;Z/?[cw?6-jfَ%˯FOСC7/`' sz2[.k܉8_u[NaC AF=͂GmlV]M2Gz5hxj!mDYN\/0Jh^ j40>d o{9 [ocpѫn&!&絑&6kjqtc)bxYT +MV.AAFe-kON@$_+HkjNPj(x N"93¬xt_P0r: AģQ.ƉЖ1q+&(@ψgE+nPK JmZܜV88* wQkF} DO!.6eޕI/lEuQwy̦YsXEF;pLy?z=؊%O?}h#S⦫3U?tHxФ6uڡrP07=p l Na2s|*a&mZ<$0Xͯi*C5XYB45jMݩ a2e?BƜOɂN0j֫:/g9QyWIʞa;hE,9tCs( B\mJ<̌I>/F"u6r~KrO m0g;_}&3}MxM.7?Y)I~Jg c7bn&i5@WYXt1Vc p ۔) cx)D! N}mnЫ79'F&7 =]f=6޳fcId'B$C*QkF:Xa-S,{ < ,$p,A`E3zfRtnUFItBYT$ُECwˇIYV1OD1XER#dQ}{dD\M(78h^0\ʀtNpS&tKgLϸ<4Q灔OW,@t¯[ߡIݦK*gpְ 2+*ej|mWR)A18J`t& E^!|m";(YF]lȇURw[vWΟo?fCkg/xGS,ˤ"֨TQ2WK\<>WDxM2]s ,W=1zI<940<334Mߝ 贁jƹ{qwȑ &nL.#G KZO&/fr } gr9LJ^ R3էZM1q lS ͒y_1t=:u*nON=8xc$h]" NSQqo#U\ڔ e)՜Xq6#dEo L0_>4dXA}٨L!tlxFxh1F) ӵok3NHf$ǘwG,tRR,~$UWn_7 4]TNhI؄;2Vp2&~.p՜PQ;Y6D [yQQ80E.;qTTj0H{DND5w"#U1k`~:YV~Ij+XF[Hta|j䀗F60ŬU=*UWx*W}Gh 0w_T*IY50Vr=Ͱ'HSrǝ]JyTZcLƳ؏3nxi!^؅[+|VCrƇx)z`,VTbX]]70L*$y4B!zJq+ZMdSKXLXGW^Ғmw' V[RlU,_¼42=L f >Vx}48>zh9@~Ød{Lm0&*gZe *^WHU"tQq8O-^-]R\2n\!s ڄ(3K -'VrbDօ!{ٸ[K&:Mv𱱴 FuG QcxkbQrˆ&޷wSl 0-Cd@\WkkKԅJ)ӟ2HZeD=j nu?v)j6NJ~ (zI`srYW\>adXq<f)bSf/`J=TLJ̰$O<~BF#i* ;"7&tYԊٵ0w}=w04猎y7lZ;0N~7uO,9tk\e>`TP"MHwT0XEnj"Q96|0QL,/yV*2N~99 h?d^{5 48:]H0. e6y|X*^RoQlC}tIt$xBkI1I,Yi*R!0{`+VsH`c51$0[%H^RƯ/5 8=78N/Gb/c(An~9AݒdS6gؔ54ϗ5<VD_]Tɨ9|i4=[1a GA<bz@=6Uc)Itw((11sUNuK$fZ"ihI-2.a7+Oe'OPMwKp8e*0GۘbU/)Ns~ |^-~ FP8/7/}(kɋ!w.-~_uW6~zW()0 nQ9#?v}s  h?vPIT#^&jW1j$dXd]%uh,1rH"H%p?`BjY7qhaH5ee7,2]#?8[WSWfKw ~XLO7~绍P1 1iXP;MUyCvoYBrrf~&%}co "R-vKv?Rasx&9 ǖON6x( ʇM;F$czgfbmyr+˺s cy@}?cV3F@abxtEW6lo( ^k%# qHa(mcasd@`j,Y&*WvJۤI؅ FwGw{[tw.̕4vh!&j?1X16V"](q JxI x䄗.&*r1EuJ#uޱNT˒uX: V֥ꌙbwD83KTheY4SbzsANM?nlx2NF:uK㳗b5K:F>@,2/J#-s=8\CHs9uazDSb#1fs2le+fINb%<4a+˜mKKت+^xc{ߗHc͍v^|oyLz2L\'ԓiiӸv鑹yЙ H\Ĺnp_Ohr5zxR~?+*˪Ɋgg Y ca!H-)1_C[(_` +tJ%"XYq fe\l85=#ïGsYرYyD^^V"G֤X"+_z K,Sd+ZsDLiaId}ǨcXjA;Z] {ha,*vL{ʬ'e[/duccآ\gl@@3y. Go߼dڥ&Xڍqr4W({qy<%ugLMcM9$uؤaY͡9@]rH6u؀/)L$Wʿ\-˧]4zYg5˃ fԷ1v&V)Wq.6 z1qy:"MY0d8_R1M$[G`,z0 23ˆP7u©*oSlҾ/_Iѯ駒\l8Syʉs9gJR |7/Z(Di5(E$+Hj$~0{$U2HE?'%^e`>`$'„BH(ϖ}S5+Fyf5xs`V8nx޿ָ~׸dpbo#:ɵ&ve?WhtË<HޡX*0ghF&O:1 S\GbwF0}0R2,6"PΖQ,d΢Y(7ϑ\~Wfѫ\']+$*{^Ҝ4.biY64m"~hRu"zӈ첹  |R%R_2\1tMJ->Cq K~^XX&}_OC,8%=8ji/x}O ^0ň,0u<_)%)ë2) }S5P`ve;"Wг7]3mhy}kR1FB|yքƇIHM۩q\őh~u* IeERz˳$&$S<1UM:rg.3 ,,!hy΃ tzguhc~g@'0W6dl$14DWa⠱ah5 c1jXwM7Y䝫4s>0'jON,jmyIԡb -QXs|^.Ohh~tݏ6jx`/gMIqs YI%GQCc8P2G+$IN3< Fc,J6-R1{%xCEKEӭ̸%,U=0 p]|+H* \d: hd@ӀU+1ʵSVjg}'lstq:9O9?wJNa.[ lQ,/=*#;}Gt/Al}f-˖vI洞4~c*q9ϻ9Itƕa2ogl%fj/c:+-Qp|rfr It$ U4PWƜ)i|CV6Ɵ_{p5ۯ_[?s+5_0tKUU3Z{׏ÌћUX6FuY-w;~Y)s:Zk";O=eJv"D%Fb%ݪM5lџчZUH!U֟Es5\ݲer7j6G~c_L`SMM@Va=>p`h_O'|9Udd BVꥦ0ReK.&@7<*3>SjB6kls?Ҿw{QF4Tfu"Sɖ둃[~]TA?$g5F{Gbg,$R2GccO*vS2NA'kp .6[2y_kV&h U(d^l]'3:!-]n0;B@:ٶu3>nqlيigvwW24qN;6S,|eb;=v wTW(ݼԗBD#V_?URa2Ęšp:ra* RL,%o7x덽{қ 7}0G/z/a &K.5zMЅ0_!},D{XѕV`vPjKr9u6>}k5^gf/]ۋ|OJ{ҿ0xs#eKn/Vf`uxl_y͢\W4ֻU7Ef\879S&'I'c,lb6a" cx3%xISȽ,?Մlz~^.6?^OfS[ùg>B ) <)!t^cbO> endobj %BeginResource: file (PDF FontFile obj_92) 92 0 obj <>stream x{|Tս8ye$̞dI2LHd&J&DI'%Z *(Uz$ZmZ+U*hJ[59w?~>tY^B&48ڲ ^.-/[]B8|ջV ܼoWv dFH߱U{5+{V|ګ#PY*l]+r? 5Wnf}qdO͏\sM3O>O@zUϕ+@ߺ{i{ʾъ滅;!?wr#yIM֢͜ p2 Fݨt EԊAů"P#ڇ؏X@R4>@'P5wiB}(d>ݖ9h&t(٤;2ǐE3eނw 3fCCdAh ++3hz߀?FԍPf-_fG o^x1l2e1Z #݄nc)A*%ZGoc.LafFA}O8 CsP= 5:>\ -[3ڈ.@ 帜؉eGEh!@{8n1WHLgr3y?e2 w;N7pAn77 WGq]蟸ɷȖ̾0Tt)Z֡Mj= EWAS4K#( a*Kex5ށi6~$@ɟ*;Z20R>{Ch1Z@.X>z.L#p?F^'rp;3­'&>*3$ѓp>̡_?w\p!kڸ6S;GxJꙸjLsfF"̫J4gPZ_t#Bw܅`ϣѯѧ0W݂A_/MpGI5'3,=85p˹- ܻ#T=[.4'߰ ,;pV/s/{!܋{2-x߄ow{m/> (ܿ1ယäI t&^MG&d!l\+z~A?7/y—q_įͿο%&aKxAtB xFVit ~ >.x_Cpp}V &6 T.ffr"<r~[nGy&pG:n&K_y]PK6c%ܷ3?B.TᡟvW _?xO'bM~ S>|&O>4Qi{F"&<k\Q#a/v~I|P>CRa7|׿_}ʇ7E`qgB86`{Lϭi`\V {f51|𼗂 Q+ [ p+oEw5Cl|B xwXF|ZV(xit=Џx? *b?C?{~ ٻ=N} ]ue+._ze Z._T7fdEy"^VZ+.F`@ڬŜc2:Y#4fuHwf.PT\PѝRjnMzO zo=lO\OuDm Cj/w4:g,o| M5j wMY 5u7p̕47@=71{S0A &rRP#A 7H^:JKRxв Hc ^g$r].96t{ZA˺c=KS\O}%mLٯ;8_3۷^憚84UM;:` /@ؼ@w[:SxJAה]PBMB3BkĸRk#.v$sԡP Uu4zse׎:5ҒaŒpy2c4]YyXwk\1QhCJ]LC4Z9 - TjnfR }>%:9>zMdV>G4KA|*KSfFaYdSB} l{:j@w{ZCˠ=[V2ⱎ-ζ--g[=:>i^J|[Ӛi^mo^jtI4= 涯SϵMp9! ˖ Y˻gS휛tdsͱ~ڍt,>,2_d `VY){v6JgNѧXr5jc_/OZk3q0a>Bۖ 6 Ь:k{'\Rkk>tvwj5$D[V #.֞ØeޑjuRb@}%dm3!GЌa ߶`I!~DEHcJZPi|"#Bg<aFl u` _x~ NG0> zQy x\drP` ,&XY:47Դz fPWt^!JNNTigKx V\q PeYzfH]NvuI .Sk)%ײ/CP1*e@ HU{1>rMb_I.'5تvw,v`T5%@] Қ]O+*HzNI V QNQfMsShA{ BC) S ς0|$%F~}PJjVʬ2M@t!aKP2-FNgw a5C@ٝ|dn``UQg =n(R ӎdHq"/sƠ4(WoNncG ( !s{BKC+cHmqy*~ĽOB䇊Fݬݑ3&3SҊܻ3{{EOF*N5sBf~RҸwF "~p/@{yd=ܡɖC9 ԰t N@8G'; #3~q-{{ 7C<@I_Kcnw ³svB{ w(!1mi H̦#Qbt3~3@n3@n3醳}n)n>7@ ޷ V 8z;OA| qV3;!%jcjwHDzF[ָUNoŎ%"9]ZWꌴv˛Mچn9A@疏GKЕ2r[n E V2C|=CeǒB>z[ rw1b?> sOs%<ϏA[-Ҡ# Մocq= /暞ku2$4C`T`(L$"',%Znew}la",6,h'~bi`»0`n477#ᑺ"?X,H&F.d|n$,3m)8oç>AOAz Ր>pH??L?ZsV)Yo}xZxCP{H6H)dHNbF]„dgȽ^}i>H_3GBY>C?bƒBlnfi6ɛPHFE<>G3tsl㳰EP3#\#K8|3 xшXIZKSЗ%? ֽ!hT+?Z0 %i+aŋd^SY4f^ TOM9O t* bxc$S9ZpQR$Q+6HˤEҥ4))J'0ه'rxw+-PJݩ8^a{54wFugҼ6Ƒ)1_{׶sl l&}Ks3m~qqfa蘹4آ|Jt#o!֑2fLhSiCim&M9twiQoIjKh!G~ׯ߰F7 ް*74f=T]SJnб] u]{uuuu{PK%ڲՇ{x(G{yG{ٮ)׽^GmQ@>|=H[;"mX~X,mJjjd)hqF0n]nP):UiV8?jhNCpp cqxJT1!jb-Nq)H0hjH4CAKC0ڸѭ)7iF?_Glclf{C--_lB@BKw<6wCx (J&1*I\hbjҞUtltI6kp@:R7T(į@xŸ! UplYX0, Aa6d0 c1DeW'_boD#.H]OHӳ4 Eƕ ߶Bt3>1d Kˮ^DN/X@~xw2':2imNiU:Kwb1 $àaj1k ee /,75HAM#= drY\(E쉜 B >$f.Q:?6ID3PAsR}nNEaC;-ː_t-ù97B˰[Ȫ-CN=DQ1 75-` #&!V[i[r 02E'+T[&TA޾aI#7<|/p/6Wo% jjfW]v4qӉ~L|4|o~\L@UH/1fyZĩNUUUZE)T()PQ]={ ܃]W ;_xsr:^ֻx _ n||cs85U)/eR"~B3'F5:jPktMY M-*+_Cp`Rفbr/ Q> 3nkmr=\e^v-KU~ԍ %P/v4OF|oܲzt=p A4kI3sqs:Aļ`BċFpGJr$2KQF~6=[πwk&:Ye7g@ :û35n'̜Y$,9s.::`P~P&VƔ:K1ֲYyff30܇LLbZk^Io2tZd$ YB@NB#@6^ws!j.Mˀ`7Q;X&dSl-al;m{lYt0;&Iˌ-PEα:>-pe%\8s&AJ!{ 4 GG#ҌWxo,'D=L՜BLmb[s68 ffd z=I^%|+Sc+f;?і "z]m x;Ď|lIw;{Lאd"4kyTۓGa_VpY:$'FA&Z ۅJz(J 3hʥNKYømF67ƿ嗲/zS\a 7\!ݙ jjD=8:^(  \6n VEYOr;s6=ˢXxցħJIt9wSzne/CRZA~Җ`صbxy8/9AeqfٓE>< Ʋ(Nq_>l sf1lS\qx Wd4^XKGj$[ez$%d65Y_KüXY¼ZYۤ [s[mV<;b>u忼~k~KK?/_Jtf7rn]Η,k|fEU|OТZ,I5 {"\ҌbeY'{_ ϐ9%M->KOUi9<btw9\TQ۞ħAmj9eVca*_>׫3A~i^ɞ1n7_'S?f؏YOY, 1 8Spg;b 48m…t~sǗDS_R8lv$~m 0_(&R0;D$TsK6to[Aw ~sƩkU<[d-[oE|miԼR'XISyʤ(髬BQƂ6$?K|*.Otr}ѼDYESŸݹ>bQR/)S+V)uyp>%y[Co'%Vm]NsB-u'6]}  ,շ#9XJ'*pvf[*~w~ ,@_b.X4$ɕUUݞOʢv,S[Œ4oљXB.YSKiTe@w idDSQPΧFI*, s;f `ra-$s]7_K^8uCczXz# ա[W=j_/uǮi@ͼ/Ao /$=f~z ``j^wMPw\g8w6 qY@7GQk>>$D=NYb)+in1W(XRo!S;cNxrc:خ`|c7ˌ\+B Y$/v"R POb| ?Gy7rĩg&:tb;eN$_?mٿ/о=*n{fv͝MMO}|: nV^WIٔUy`o*b8)ou#QYn~)hN8HԵX1*V՚jVμ{:'De* Q L*ؙT34*4* DV)h+3;*Y @ _s=.9O F|f"ʃk/nsYQ8=l e2k򧥿@bdi"9!= K~!UޚHb@? =`]?->??d}xJ`=׻E- M<ˉ{svč^bkcI^Zpg'E>O"o yNWw{ dTunY)@_tKMpl0o퍕RnG_+M?xn,E`V6֦%1iuW{͹VU⪐P0* J0\P]*  vU82ӝxstq@wX۹T> f7KwCOy O沲(ta3/z1Fzc 1ee!ۛEv}VIƵ(k&-![I?%e%yʠL9o(e '~D~~MbzCtW$1*hKy¼dEt@? m. K j|a-oEYۚg^dh7R| 4iS+uNsĎ~{eccWWz]'n@=)`4qD3nwAȅ n1Y>;JzȃCX{) EPT(paaXt?*¨(QE;E/ ?/ae(H#F#9AшUzxwqpyC_tdt# 6vl.Ϧ@t,֌EEAȲ=AX=%HwFH.gTw`4A HB\;/H]R¦jI|h-0@_M!W+>i^7Q27#ţ'RKu-VBuk[y[+(Hj}]k#a" m̩Z14y 1xF'OqڠRIr ?s2 ~"HQs!]X #EO{LǨ,skB%vЄۃ%\`o a^B_/@ *ujBm@ gc Lm N?i}eěĶU#:uSm67@۞K7^8vo$o[UD*WNL=~?/_( %~kB2Y`#Qh3cYQ-$t@w@Hw[!Dp}LΠOO\F U.|\dv_?g!3yQ.h tc;;@@Y)X?Ƅ>#q 8 a$|KfK T 6%_c@?s@? PT nTj2>@=q0Ԓ9+>P)nEA߭B_E s'E!d4yQoNgSj ]3-O *OvR `b)[[3S 0( UUX|k ZnR'k_-,A B!+h-U;z .$klHH` ~> @p(vqZ-̵ZiXavVG薌ѺbQ)Μ8hΜ>0VU<_0hJʟ("E\:D^ cAdx2LO :=;~s,T@Cѧmm  90]NkG54څXס+Y?CW3@1?$}>k=}G5Xdfag 4;5|k Q 8klP7bagʭ!0:{*X3ڈ[UWhɌ/u0rˊz**9ʲeSҺ@2ʍ<8~+vܑD4 EӼӄyg$.g8T7wbG1&Jpv |wmUlc{h_ٽZGuN,TʢpMhlI}ee y=q-W ޶Sv[O DFe0@R d!UKPK)<"KW¥\kN٤7ʰV*#ˎ/J0>f9'*&rvգjFUuΧ-nKd*B?.XzZEv##I\Ya7֜k5}4P3b{%yC:zr^qZHo^.#<":F. 0fvwCOn=π\u\=򁆪˼k}s[\?qriKs#=~ء09$}ٓ [;/]s[lmoit9R8j?Ի;Sj '?vЃۺ[.l޼{.}=P7NK*VsmwSޙ6E-1ީ]%%x-Y]@K~>qDחO XJ@Hr(f9&4xH[ [D5cRQIE]О͡O $3j*3̇G-ӝT42F Ut>M:H3TA8!u|.b?||wuOL6&G69 7y*ph5G 6ALuc]ʹRDMVP;go̱. a0Pg] xe}W+`֖社dPhQJdX#kU 85Kn.8̵EPs,>6W) ܗؓH%N$_eWUx5hnu6lcZіCl>fsO:bgvba55|Sd@To'h rTp+-c.EQC p݈sؙb 3۔enYy/Ed-k cI%ȽO$[cyjPV۱_\( g>tSĺp``|gs7zB<μ/m.;O-R&")$] xl}2~c8N:uI2z'ɚ!)ɺJ7R#Tsu| cr!jڢ"wqZqU&.flw.vc=V~B5qqMn7Mk w]F]-.Aݶp7~ObIÓ}x>FiO__xT箉L)ߦ㧺{}W+׬mK\*/1p|=bO\1&TxuZ;Kn,A)%ut%zMVxdp<}>؍l\-/rGFq֔Ouפ3}n^Mgi YRC .ǧ+@'`"HEI-D9mhAD z,KiĽ倳V8Q~\.H2pȅ4c3>Q;-M 1zũt(OKbʝ=ql 2dpEOtN^ԤV:7G#5a5gmpZ]%2 <"r;y":,J8$>hnPM8CUĭщW'^+Ԙ4 ᨚZ Gdd Hie#qQ `}v[Nܱ{ 8=.N\!/9 V7)nt0E")!PX$% DrU~P)=&!V,.GƎ#bkw?t-,&zRa {9+b`!Ua%a% k9"{&M!Ue5: 52sZ x5lb>g0IK"o|hbVNf@"nz'XQ²@ #cwV0O@]TQd}5KRԪ:x,||QIҨ`PMtMG;vZP>Gq;gkqJ$o^q(03رb/*oF7 :g(I U s֘u3ڜm7lZ~y &)8V9sp~aNU󔙵s.ZlXmEwf-_UO$++*|D3jQCU[#Tu9%A7_ 5-.:wlqǷ +NiuGV,ʎ0JJ0 Cvo̩Aax03kSa2av ?CfCkxsk%-FZAS$|J­fNyUͧ`$Q"xR0+_tŝ?٩׏ #,Gdzjo3b1ZSyBmDz$bFE̓64ƃʕ*4X=!<}D.ؤU\LnfW]#VLR# KLQat_HPP 5vJ.CP9%JS=zHu퇝:`C3V Ϣl:؛0uiY7&sSdO}ysuIO1+3X ru]+z ]2c͊1oUy-qy7_iqtkl[ ԖUT.YeoO˕LuSkw9Kkfw!D2_eNrG;Q>*_>J!׈l[aFJe0&htOt6jjZr5tC :;؞ʺu!8g} #zND\ ty!i O80fͽ6ײ֮U"ag?j5m瞒%\+lF݈xw>RLTt.9 p'|PFbj5vAR&jJ@I2x~y &ZXos 1PoװbuAO.Ã#CT4=+ɓԓ΍7˰`tSxc+lr xwvZv:'W{_Q'Z=3}sv٣o3F=-Kd)RSv!%"bC#+ >|Ė QaĻ !dl`!xL^ gde}}Tck~W>9gVembxX|T_*!D@`2_`g(<@X E6 O5qLeh2zHsG! PHMC`I0 ^7np SТϛ 0&}ɮYynvqU#s#gGe2 ګho\-@?xŸVJU`+Q:Q]"Gr5n`.97Yz1t`E|֘R4UKBc/@x|˂9Ys_>p-Ex߅W_Bu{(}]8YѼQxxRS& #M܄*1s`SC%Gw4݆!3T/@ 80"dPthpYHAPU$LPFrO ^eGgLTpjenBL:qm)GU 9C*PO 0#μ]SQRV' \g K=r0B YPf!EB5sv!r7aE2_5%Sgs_f;;7CGFW$71XM c@$SaژUk82vQN2s) )x ɚIH(]"1FJWa~X^{w!Xn_<>oju]oX}&W/EF~_.? C>^N/$Fւ}4W voS)7@J(0h`$ǚQ8j8>!4.H@8`6r y P8=}I I@<&ocEFe&0C ^vf`>mᨁ_ŠG`t9q=-B ^.ׄU3x%yI[k/9/u'}e wis T={}EVcѓke0\Y^oë%h`m>o6|'K[g*3!wn L#x,QҡQ RQ@ۅc(1>VGֹ @ q};)[\ي*X %G}'?'|l\%*eEV8a2 c 1K.0].Y8d1z,%XS)&O5Xv!c*zܹ}7n7K-?xݝ߄Ѷ5ڪ}[W6~dET!#0a#_6dm)ϵFmvB2t ?<Ƃ0}G&hvZgu79\fHTP9S@EWbS 04a̅D f&XL痉F`5 ޠ?}Z_jV|\}p,k,/`!/LܣdMHP~v<~2S4"A*(EcG }:eL,Ë1U"%z(LgY)h$ӂȏ I֦FH baML6%mUYl7j@;j^<;JZs9X\; g\ 2%':ŜӸ]~C oؕL ~^w5eDH iQ)&?b+Jѭܴ4uB?G}m.&m?=]`)|pË+"|~5/HXցzN#aw>p3 rv(6MW}\5TZn~pxVܻ>pߔOo?I,9CۍpnP:/Vs8;ߋiV3͕1:6}|kf P͊O9Eѱ< q^n ug1u;s c7 #a[p'윢4د)O]QWfBwz_h[ttyR}6٬QNWbڨP! %a[<}tLҐ#x-fDŽ&G^]~͹q;>o~n5\M,^T7s& "nr))pV~!EM(]_w9i' #'C[#Y13BF2, rgLhu̒*,{DRͨG#ta xC#a<ykwҶ*Z<24c M cF?/ R VŠ +~П2U%M-~yK͇-= *\]j֨N{ ~xEJ?ؐR<~bTb#r[jt3J5>/"-vl;^8:.`wXbB;͚,)S̫RnS;陘+LW<㚚ׇОZt 6 S$RU!Mp\q-,_T]@OsiӇz6cMFZ:ծ5P?僻oһܷ,Lwv{]4NmSǿT+R <0MMkN8e2Y[e9.\CG{b>Ҵ5V]om6 1X_HmZĹ&"/MrIfdl!%lè 1/xXJ``Pᜌxu&&\ Q&\/#Aj $ P. AB d *X(`MΡ߶ Q\yQ#z:jln=JgLuuiPeTPM˥:>#T0>E۴|w.&yJ$I+r$~_ <&G\n(73sdCӹ39Cnkdl#r5nkNJT.WAUEodM1_oTaL U#1DF/oL<" KҒHU!:`H`ABqx CPVǒe=4bE!7"netќȇ`aU#aa!ynB5Αq<|<^TB"B8ƒ䋰$qPB`o&EDѿ8Y_M$VV2ӗ\NU nP+N PD>ˏ-_14Q>e!vvݡG(l>b{~NxzC~og+REZJy0՘/[aȸM*qj[uq6,,Kb( V &$8^K@B &〸Q0)B  m U.4 EOc!0MJbA_]wc5'|#sӈ,I6$!*!oP#敨).cޕ4' `s(CjȩBJ !iRN)&䀆%(-x9GlME1 uX^PÖix&d({CeXFD $؟c<j-O;=`eG"y q'–K99pҩv?2 zv:@b9 JҷqI#a2Z P#@_!"q"99D? ^R4fHeAo8AG2!&5ØPT7 KxSIˤ$Z,"1`& ˿8>vL qS-wllċ1{†nxkʊθ/9k%;_qu%(|o']vT/>.h&xVF^9'E0ZhK}q_b>:-&T-Q@BmlU?oj1X fMtlj"+,Ζh̎5RqPslZ$&:`6*:E<1th,b/"+qϴ缇"n"l@ {=Ё%d`*hJDjNltK0jT/-,Öq!yrԽ`CJ.v K/|H)T^[H&%(|csk&Z{d g2Ӈ3yN3@Ҧ?5a&_>C4vk:q:u8POez2 9=Bb@ YۂcHz_Z'1[$r \C,5Yj.*U^t+Uk1Plܤc `ߦݛm7m6icY3Ӟ5%}Z5&?vHm3brpˣ#qfFnX#\TT3DʐLKA>uIm+xEZI-ek`O Pg`kT V_ Xjy++2R?DfEep|nj*(OQkIPG3kTЃL*X?E[G:RըlJvl nbS-Z9d[y abY ofL#fuC<(E*V'qRX҄T>mo--T snz{^ T/Nwwh }yY[rkgƉ*俗0Z<3X ka]"XcxCPg- bİUm\y 3#E.!DQiÿ%VY*3Yf M=wc{\7<~Hm囗Ϸ;=\\mzfc8\ڐS/4z3C);wܹ~{o߬6#R?p^+5g1Xȶ̻5Q߲MgD0Gk _пz"7Y$?EKYu6"~dHĂFܵO7n 'ȅ)]X$BE)ৢD ipDCQmA7G #B"#b#K暂ا 4,,/,5FɐCnw$vFdR#RRkBRr[IKPi4^2 P#1id,)Q%8KtunJ:6uG`D7 5$.?46'F"`=(3Il[f'XBTS SC8Xj<5AJLQd4Dj2}Ð]Vh!?4dz-vFF)kAr*ԉV:#>Ŧ0h-$j4_]fnX9̡5;n70:W7>~s=wm )$$;|`@f'յ^b gS3rpӏQ=>*`k׀ ́ 0'ƚ9k.@px?>΋Oa(FȐ" D]!h apD<\c.{LkV?1!d  !^J uln$}\.}x  Æqäd8~V4R|83'O_%HȰm[‘Շvn{877|>".4p]0`Tc$8U^9ԓsXEhq=*PhSk$A'SعUP{Lww#dœ_>T]عa֝[ DCRűKסك=N{տ@3p {tʉz߇oZC~t7Տ=^.q~b `17i`7;)ؒ_ %WbxU:l&z"Q͌Ġ|<`bBDЋh6 g ,wZ|el@ǀc%h< kU*&|S|DhTQI-bC7cwoD: \IfDͫk3[~@?-#[{mxwqĻ/8ޗ̗y\ G3_wM2Awr\LZ-yy9fֱTITm>Y7cEbaL6B6 c0!K,oDWz.El- ꉼ d0[keI'ꉫ @;„WbX]x}kg|n\8If)}t}a&j:j% :C ]"f{pXw?BwCҽCs۲k?e${osm$1|SM: 1 _^O&4H "N',k$!LHTC BD͞EZv+.8S[_bwb_N$B#bxkHr4;O#rqtnnGq )!=|`[ S \z}n TQWFKiTG #Ltޜ 2~JY@Mi;LP3AS>i EC q4ijTR_[X벣gGF)QFg\%3$RDe'-S-tRWA T\DioevўjY[F\úr|fuo(C}?&W9S̯I 3&zuu΋g"j0ܼM4,AR!7Be< 5&`fވ {2]Fh iF# `L!ﰗ" "9Z Pp FH6=OtnAa!=o ~žo1~Hci+w?1;|KbF/k#YŽDʵgv* V򬺖'e,e5s94ee[3Q#I>544dG$f3E^<7f{%;@no =?>y(jglwiGӝ;۾9u%6ST`$O姠WrPyPhN)7YgG#VAHB<+8<ԏqq-&¸@ SYS^%b!Hpb,AxGc!*}^K^vs%>ϳ əGgjvZZږ=oe[PY @ŸLTQ21!)쇦85;`F?1 Q2ooK& p$g٪)p'_ƽquL,H%{ BGd T2TP>=K||9reWl* 1Lã#zcɹl5kQ~-Ž^Ϊv|yMaB{5},/f70 6N1ߕfAY;kih4Uq{Cw\z>g㮰c ^j5{CͽMhЇ\k2_sW>p'/xT࣒QF6[1r@tE:jQMSgPO bfi;s0;S厯V^jG&$[ע`W(X$a34 > 9!: 0nZc$%#FnJ3;%Q:"YP;388-gk|@Jaai)7 3gaal4.9!nxi7N!HwKS4YJ/^%Nߏ{c*bB`2@1w1/tL;8^sCo)5sA:3P;WѮ1f@D=+y7 VVN m@>hXV.3"Z1/ؔ ZnyRgyܷV^״:ư/πuVU z_2jg5Q@xz5mԹ@B{њzmc&jMcA VՎsըW-0 ͪYEctUHT/%b'%;UIؗ"yp@ݞ/Hx3AH&%fJ05!5dP4Ե:v 6; ۥcv <cͼ&˿l`B 4@fWQ1fA9g}ˊ{iIbG| "bM/H~~@̛ED>%YNBJ#oXQaEE_UW$>2p%썧P6[ŽJmg~:Aw=;rcF=2C1WP1EE<`Y~8 vy?*E2U 3.dWF癝Ĵt$JvEFPIG92^9-Մgo+BR07|TWLJ%UEqe^KJ]uU:M؇~7QwW(_~qB><}7]Smm]onu$^lHLSzf&z$VQ෋ Q?bO:XǵE(}ϙ/y~n) :O ;/ܯe9ʊRN}^ocQeLFEÎ7`*fy ""'Ox#a`5S{1򽜲NjTC+؋\5ȝĊ4psR4R':8V: 'G1I"fG;' ܐ/xgq;*ςjS^źKzB=!HM2!(8OZ\I/jmͱ=>>qϽYfBmFA$!CR(SB/m5բYjAn/B>^ygr>VBB ַ>Gqb7[,MHa%^,J1AwAR nK`Blwd_MRDS?%X20RY*,Dlj__,DL12O[LɏjVnBI!$$Hr0  vCw>6mT*)kyŀ0WA` GK'@lzzA{,|̌^|n0Sc8'HD ڈZVMK٪l/-ijxϒ hD${ΡÊ6} nf5,%q$EM-֌QlYA.bs~b|bEƣn5V1b_35~IԦB9 Xx騀iF/ʊvXU\%4&pt,덤'>kYD eQYͅSc;y!r3*'brJPuqEߎ}Qs+l&d^ yJDz%!q!/_Fj& \B0&Y>x8asCa޳זsC\nQ_|\Ȝ#7u7x@DN}l~:u<풜Q3pvศDM3iܙl]8!.Nxz"] wIqdf3PN` 8%F؈N`܍Cp:(6-\ =P1)߸)P.^fx>Me>ż{gLz7ioFF&|7fdR~wg@y2O3_"H"d4F`5$XUC⬪xiމf2Dɤ)i/g,j$簑* y & r@(z<^*<|?y[EM d^T(*ܑl%KeC^qٹ 8;\5̰wlFE YErCEpI4#Xki ǑHL]A7$yko2La%>-\.ia20Kʜ2W.i|pMcVDOD j)sf+R/䰭{+nr +&c|"Zg>"!Nz8Im7oww:>h77!ϛy׍N o{ Ѩ̴öV U>Bs:UWKs]F0D[M> \@,nsd7t-" gC^k>ɫq^?喻؞[syh[oxڧKkR{֕_#}=˞;ҳw=go̯^%)2 waMqFzzzvjN 7fx f' M 45Ha:5cʥ7^YGa} F86R1=l&)/o5q~GkKO}Hý˞|)@'}x p sf=1_(YJVw#iPU 9#q&!]h mЩ n?x,q[5~`)+hJsk]Ih434N7-ZpZ]Qۯf9N-m]y[R"V<[ꃛv~+ozfe֎n[/f`48}1 SoyY p tFsVIO3W\1QA\'DB'&͗Bbi ~wCkv\Ju2/s߇u ܷ˿R S oLwx>fc@fDZ f17Tm9(B#qqW5]Ia1(|{G#WvE*'eMB//nOo›Ne?nK/[nk}3rl{~薛M_YYvE~s5\`; >/~fݴI2GqaMܠ{-W[KBxxd%t 'k=|H_)G6mO2}&V|$L=y-/ 4+54oo}M^mB嗝?aʵERY*Ke,TRY*Ke,TRY*Ke,TRY*Ke,TRY*?3Aįz^@tzS׆-ͫнl[+mDpRɬsc $_3+[c?xl x~W.^D[m[z@zjp@7 AXV`ہ`\ @ $AA3X4M@׀!8/8VVc8h#wNQgBWo+Cj G8o>wxـ'TZ__o*@~ W4ݨG5TUTEu+=Jd} 7:TQ?b%Hna_+ZERu\quڷcƕ$-Wz\ y\Ou}ѽvCZ=j@B} ytD3E`EzY'Agiq'v`پ}/ OװW\ ~T endstream endobj 99 0 obj <>stream 2020-05-07T18:16:43-05:00 2020-05-07T18:16:43-05:00 PScript5.dll Version 5.2.2 GDL_BNF.rtfwardak endstream endobj 2 0 obj <>endobj xref 0 100 0000000000 65535 f 0000040214 00000 n 0000164589 00000 n 0000040054 00000 n 0000037788 00000 n 0000000015 00000 n 0000003549 00000 n 0000040279 00000 n 0000044042 00000 n 0000088249 00000 n 0000044735 00000 n 0000102528 00000 n 0000045569 00000 n 0000117030 00000 n 0000046537 00000 n 0000130079 00000 n 0000042413 00000 n 0000046941 00000 n 0000043364 00000 n 0000070215 00000 n 0000040320 00000 n 0000040350 00000 n 0000037948 00000 n 0000003569 00000 n 0000006502 00000 n 0000040435 00000 n 0000040465 00000 n 0000038110 00000 n 0000006523 00000 n 0000009753 00000 n 0000040528 00000 n 0000040558 00000 n 0000038272 00000 n 0000009774 00000 n 0000012608 00000 n 0000040632 00000 n 0000040662 00000 n 0000038434 00000 n 0000012629 00000 n 0000015627 00000 n 0000040725 00000 n 0000040755 00000 n 0000038596 00000 n 0000015648 00000 n 0000018460 00000 n 0000040818 00000 n 0000040848 00000 n 0000038758 00000 n 0000018481 00000 n 0000021145 00000 n 0000040911 00000 n 0000040941 00000 n 0000038920 00000 n 0000021166 00000 n 0000024001 00000 n 0000041004 00000 n 0000041034 00000 n 0000039082 00000 n 0000024022 00000 n 0000026446 00000 n 0000041097 00000 n 0000041127 00000 n 0000039244 00000 n 0000026467 00000 n 0000029485 00000 n 0000041190 00000 n 0000041220 00000 n 0000039406 00000 n 0000029506 00000 n 0000031967 00000 n 0000041294 00000 n 0000041324 00000 n 0000039568 00000 n 0000031988 00000 n 0000034357 00000 n 0000041387 00000 n 0000041417 00000 n 0000039730 00000 n 0000034378 00000 n 0000035985 00000 n 0000041480 00000 n 0000041510 00000 n 0000039892 00000 n 0000036006 00000 n 0000037767 00000 n 0000041573 00000 n 0000041603 00000 n 0000047190 00000 n 0000070457 00000 n 0000088495 00000 n 0000102788 00000 n 0000117283 00000 n 0000130331 00000 n 0000041677 00000 n 0000042943 00000 n 0000043640 00000 n 0000044329 00000 n 0000045018 00000 n 0000045944 00000 n 0000163090 00000 n trailer << /Size 100 /Root 1 0 R /Info 2 0 R /ID [<7E72D54944897A81DE4681BE312E7FB0><7E72D54944897A81DE4681BE312E7FB0>] >> startxref 164785 %%EOF grcompiler-5.2.1/doc/GDL_BNF.rtf000066400000000000000000003013701411153030700162360ustar00rootroot00000000000000{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ??\'a8\'ac?};} {\f37\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Trebuchet MS;}{\f38\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f45\froman\fcharset238\fprq2 Times New Roman CE;}{\f46\froman\fcharset204\fprq2 Times New Roman Cyr;} {\f48\froman\fcharset161\fprq2 Times New Roman Greek;}{\f49\froman\fcharset162\fprq2 Times New Roman Tur;}{\f50\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f51\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\f52\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f53\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f55\fswiss\fcharset238\fprq2 Arial CE;}{\f56\fswiss\fcharset204\fprq2 Arial Cyr;}{\f58\fswiss\fcharset161\fprq2 Arial Greek;} {\f59\fswiss\fcharset162\fprq2 Arial Tur;}{\f60\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f61\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f62\fswiss\fcharset186\fprq2 Arial Baltic;}{\f63\fswiss\fcharset163\fprq2 Arial (Vietnamese);} {\f65\fmodern\fcharset238\fprq1 Courier New CE;}{\f66\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f68\fmodern\fcharset161\fprq1 Courier New Greek;}{\f69\fmodern\fcharset162\fprq1 Courier New Tur;} {\f70\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f71\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f72\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f73\fmodern\fcharset163\fprq1 Courier New (Vietnamese);} {\f177\fnil\fcharset0\fprq2 SimSun Western{\*\falt ??\'a8\'ac?};}{\f415\fswiss\fcharset238\fprq2 Trebuchet MS CE;}{\f416\fswiss\fcharset204\fprq2 Trebuchet MS Cyr;}{\f418\fswiss\fcharset161\fprq2 Trebuchet MS Greek;} {\f419\fswiss\fcharset162\fprq2 Trebuchet MS Tur;}{\f422\fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f427\fnil\fcharset0\fprq2 @SimSun Western;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128; \red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar\jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon31 \snext15 heading 1;}{\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon31 \snext15 heading 2;}{\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar\tx864\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \ab\af37\afs22\alang1025 \ltrch\fcs0 \b\fs22\lang1033\langfe1033\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 heading 3;}{\s4\ql \fi-864\li864\ri0\sb120\keepn\widctlpar \jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \ab\af37\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 heading 4;}{\s5\ql \fi-1008\li1008\ri0\sb180\widctlpar\tx1008\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl4\outlinelevel4\adjustright\rin0\lin1008\itap0 \rtlch\fcs1 \ai\af0\afs22\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 heading 5;}{\s6\ql \fi-1152\li1152\ri0\sb240\sa60\widctlpar\tx1152\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin1152\itap0 \rtlch\fcs1 \ai\af1\afs22\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 6;}{\s7\ql \fi-1296\li1296\ri0\sb240\sa60\widctlpar \tx1296\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin1296\itap0 \rtlch\fcs1 \af1\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 7;}{ \s8\ql \fi-1440\li1440\ri0\sb240\sa60\widctlpar\tx1440\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin1440\itap0 \rtlch\fcs1 \ai\af1\afs20\alang1025 \ltrch\fcs0 \i\fs20\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 8;}{\s9\ql \fi-1584\li1584\ri0\sb240\sa60\widctlpar\tx1584\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin1584\itap0 \rtlch\fcs1 \ai\af1\afs18\alang1025 \ltrch\fcs0 \i\fs18\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{ \s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Body Text,Body Text Bullet;}{\s16\ql \fi-144\li144\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 footnote text,ft;}{\s17\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 footer;}{\*\cs18 \additive \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20 \sbasedon10 code;}{ \s19\ql \li720\ri0\sb120\keep\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f2\hich\af2\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon15 \snext15 Display Code;}{\*\cs20 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s21\ql \li0\ri0\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \scaps\fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 2;}{\s22\ql \li0\ri0\sb120\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs22\alang1025 \ltrch\fcs0 \b\caps\fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 1;}{\s23\ql \li220\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \ai\af0\afs22\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 3;}{ \s24\ql \li440\ri0\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 4;}{\s25\ql \li660\ri0\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin660\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 5;}{\s26\ql \li880\ri0\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin880\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 6;}{\s27\ql \li1100\ri0\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1100\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 7;}{\s28\ql \li1320\ri0\widctlpar \tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1320\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 8;}{ \s29\ql \li1540\ri0\widctlpar\tqr\tldot\tx9216\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1540\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toc 9;}{\*\cs30 \additive \rtlch\fcs1 \ai\af0\afs22 \ltrch\fcs0 \i\fs22 \sbasedon10 emphasis;}{\s31\ql \li-720\ri0\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-720\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Heading Base;}{\*\cs32 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 footnote reference;}{ \s33\ql \li0\ri0\sb600\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 \b\fs34\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 Paper Title,pt;}{\s34\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs34\alang1025 \ltrch\fcs0 \fs34\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon33 \snext34 Paper Subtitle,ps;}{\s35\ql \li0\ri0\sb240\sa1200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af0\afs22\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 Author,au;}{\s36\ql \fi-360\li360\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 Biblio Entry,be;}{\s37\ql \li360\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af2\afs18\alang1025 \ltrch\fcs0 \fs18\cf1\lang1033\langfe1033\loch\f2\hich\af2\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext37 Source Code,sc;}{\s38\ql \li720\ri720\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin720\lin720\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext38 Abstract Text,at;}{\s39\ql \fi-864\li720\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \ab\af37\afs22\alang1025 \ltrch\fcs0 \b\fs22\lang1033\langfe1033\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon3 \snext39 Abstract Heading,ah;}{\s40\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\fs20\expnd-2\expndtw-10\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 Table Header,th;}{\*\cs41 \additive \rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\expnd-2\expndtw-10 \sbasedon10 Keyword,kw;}{ \s42\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs20\alang1025 \ltrch\fcs0 \fs20\expnd-2\expndtw-10\lang1033\langfe1033\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon40 \snext42 Table Entry,te;}{\s43\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Table Caption,tc;}{\*\cs44 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 Keystroke,ks;}{\s45\ql \li0\ri0\widctlpar \tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext45 header;}{\*\cs46 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs47 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf12 \sbasedon10 FollowedHyperlink;}{ \s48\ql \li720\ri0\sb80\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f2\hich\af2\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon15 \snext15 CodeSample;}{\*\cs49 \additive \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37 \sbasedon10 GlossItem;}{\s50\ql \li2160\ri2496\sb360\sa120\widctlpar\wrapdefault\faauto\rin2496\lin2160\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext50 Block Text;}{\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext51 \sautoupd List Bullet;}{ \s52\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs22\alang1025 \ltrch\fcs0 \b\fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 caption;}{\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext53 BNF;}{\*\cs54 \additive \rtlch\fcs1 \af37\afs22 \ltrch\fcs0 \f37\fs22 \sbasedon10 BNF Item;}{ \s55\ql \li360\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext55 Body Text 2;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid-1610033146\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s51\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}{\list\listtemplateid1833185630{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s1\fi-432\li432\jclisttab\tx432\lin432 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s2\fi-576\li576\jclisttab\tx576\lin576 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s3\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s4\fi-864\li864\jclisttab\tx864\lin864 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s5\fi-1008\li1008\jclisttab\tx1440\lin1008 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1152\li1152\jclisttab\tx1152\lin1152 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1296\li1296\jclisttab\tx1296\lin1296 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1584\li1584\jclisttab\tx1584\lin1584 }{\listname ;}\listid709720022}}{\*\listoverridetable{\listoverride\listid709720022\listoverridecount0\ls1}{\listoverride\listid-119\listoverridecount0\ls2}}{\*\rsidtbl \rsid480792\rsid1513325\rsid5335820 \rsid8211580}{\*\generator Microsoft Word 11.0.0000;}{\info{\title Graphite Description Language}{\subject A formal grammar description}{\author Sharon Correll}{\operator Sharon Correll}{\creatim\yr2005\mo12\dy8\hr14\min31} {\revtim\yr2011\mo10\dy3\hr12\min46}{\printim\yr2011\mo10\dy3\hr12\min42}{\version6}{\edmins74}{\nofpages14}{\nofwords2315}{\nofchars13201}{\*\company SIL International}{\nofcharsws15486}{\vern24611}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://sche mas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1380\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb \nospaceforul\hyphcaps0\formshade\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0\jexpand\viewkind4\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl\rsidroot8211580 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup2{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \chftnsep \par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \chftnsepc \par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \chftnsep \par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \chftnsepc \par }}\ltrpar \sectd \ltrsect\pgnrestart\linex0\endnhere\titlepg\sectdefaultcl\sftnbj {\footerr \ltrpar \pard\plain \ltrpar\s17\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \line }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 Title}}{\fldrslt {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 Graphite Description Language}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 }{\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 Page }{\field{\*\fldinst {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 PAGE }}{\fldrslt {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 14}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 of }{\field{\*\fldinst {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 NUMPAGES}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 14}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \par }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 Sharon\hich\af1\dbch\af13\loch\f1 \hich\af1\dbch\af13\loch\f1 Correll}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 PRINTDATE \\@ "MMMM DD, yyyy"}}{\fldrslt {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 October 03, 2011}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 Rev: }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 REVNUM} }{\fldrslt {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 5}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\insrsid480792 \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \par }}{\footerf \ltrpar \pard\plain \ltrpar\s17\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \line }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 Title }}{\fldrslt {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 Graphite Description Language}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 }{\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 Page }{\field{\*\fldinst {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 PAGE } }{\fldrslt {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 1}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 of }{\field{\*\fldinst {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\insrsid480792 \hich\af1\dbch\af13\loch\f1 NUMPAGES}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \cs20\b\fs16\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 14}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\insrsid480792 \par }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 Sharon\hich\af1\dbch\af13\loch\f1 \hich\af1\dbch\af13\loch\f1 Correll}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 PRINTDATE \\@ "MMMM DD, yyyy"}}{\fldrslt {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 October 03, 2011}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 Rev: }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\insrsid480792 \hich\af1\dbch\af13\loch\f1 REVNUM} }{\fldrslt {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \cs20\fs12\lang1024\langfe1024\noproof\insrsid480792 \hich\af1\dbch\af13\loch\f1 5}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs12 \ltrch\fcs0 \fs12\insrsid480792 \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s33\ql \li0\ri0\sb600\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 \b\fs34\lang1033\langfe1033\loch\af1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \hich\af1\dbch\af13\loch\f1 TITLE}}{\fldrslt { \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \hich\af1\dbch\af13\loch\f1 Graphite Description Language}}}\sectd \pgnrestart\linex0\endnhere\titlepg\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \par }\pard\plain \ltrpar\s34\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs34\alang1025 \ltrch\fcs0 \fs34\lang1033\langfe1033\loch\af1\hich\af1\dbch\af13\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \hich\af1\dbch\af13\loch\f1 SUBJECT}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \hich\af1\dbch\af13\loch\f1 A formal grammar description}}}\sectd \pgnrestart\linex0\endnhere\titlepg\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \par \hich\af1\dbch\af13\loch\f1 Version }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \hich\af1\dbch\af13\loch\f1 DOCPROPERTY "Version" \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \hich\af1\dbch\af13\loch\f1 1.0}}}\sectd \pgnrestart\linex0\endnhere\titlepg\sectdefaultcl\sftnbj {\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \hich\af1\dbch\af13\loch\f1 SUBJECT}}{\fldrslt }}\sectd \pgnrestart\linex0\endnhere\titlepg\sectdefaultcl\sftnbj { \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid480792 \par }\pard\plain \ltrpar\s35\ql \li0\ri0\sb240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af0\afs22\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Author }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid480792 \hich\af0\dbch\af13\loch\f0 Sharon Correll}}}\sectd \pgnrestart\linex0\endnhere\titlepg\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \line \hich\af0\dbch\af13\loch\f0 SIL Non-Roman Script Initiative (NRSI) \par }\pard \ltrpar\s35\ql \li0\ri0\sa1200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 \hich\f0 Copyright \'a9\hich\af0\dbch\af13\loch\f0 2004 by SIL International. \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\f37\fs28\lang1033\langfe1033\kerning28\langfenp1033 \hich\af37\dbch\af13\loch\f37 1\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Introduction \par }\pard\plain \ltrpar\s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 The Graphite Description Language (GDL) is the programming language used by the Graphite package to describe the behavior of complex fonts. A program written in GDL can be compiled against a TrueType font to creat\hich\af0\dbch\af13\loch\f0 e a Graphite-enabled font, which can then be used by the Graphite engine to perform smart complex rendering. \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\f37\fs28\lang1033\langfe1033\kerning28\langfenp1033 \hich\af37\dbch\af13\loch\f37 2\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Version \par }\pard\plain \ltrpar\s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 This file describes GDL version 2.003. \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\f37\fs28\lang1033\langfe1033\kerning28\langfenp1033 \hich\af37\dbch\af13\loch\f37 3\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Notes on BNF Syntax \par }\pard\plain \ltrpar\s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 The follow describes elements of the BNF syntax and Extended BNF used in thi\hich\af0\dbch\af13\loch\f0 s document. \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Identifiers are enclosed in angle brackets, i.e., }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs54\f37\insrsid480792 \hich\af37\dbch\af13\loch\f37 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 . \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 A vertical bar indicates logical alternatives. \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Terminal symbols are surrounded with double or single quotes, i.e., }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs54\f37\insrsid480792 \loch\af37\dbch\af13\hich\f37 \'93\loch\f37 \hich\f37 a\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 , }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs54\f37\insrsid480792 \loch\af37\dbch\af13\hich\f37 \lquote \'94\rquote }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 . \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Square brackets [ ] indicate an optional it\hich\af0\dbch\af13\loch\f0 em or sequence. \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Parentheses ( ) indicate grouping. \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Braces \{ \} indicate an optional repeated item or sequence. \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 A function syntax is used indicate primitives representing ASCII characters: }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs54\f37\insrsid480792 \hich\af37\dbch\af13\loch\f37 ASCII(end\_of-line)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 , }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs54\f37\insrsid480792 \hich\af37\dbch\af13\loch\f37 ASCII(32)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 , }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs54\f37\insrsid480792 \hich\af37\dbch\af13\loch\f37 ASCII(32..126)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 . \par {\pntext\pard\plain\ltrpar \s51 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s51\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Each rule terminates with a semicolon. \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\f37\fs28\lang1033\langfe1033\kerning28\langfenp1033 \hich\af37\dbch\af13\loch\f37 4\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Grammar \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.1\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Global and Environment Declarations \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ | \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab [ ]\line \{ topLevelDeclaration | globalDeclaration \}\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line [ \{ \} ]\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( )\line | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Table Declaration \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab :\hich\af37\dbch\af13\loch\f37 :=\tab \line ( | | | \line | | | | )\line ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Name Table \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{ | | \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{ | | \}\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( structuredNameSpec [ ] )\line | ( flatNameSpec [ ] \tab ) ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( \line \tab ( | \hich\af37\dbch\af13\loch\f37 ) )\line | ( ( | ) \line \tab ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line | \line | ( }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792\charrsid8211580 \hich\af37\dbch\af13\loch\f37 \{ \}\tab \hich\af37\dbch\af13\loch\f37 ) ; \par }\pard\plain \ltrpar\ql \li2880\ri0\widctlpar\tx3120\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792\charrsid8211580 \hich\af0\dbch\af13\loch\f0 The third option above is permitted by the implementatio\hich\af0\dbch\af13\loch\f0 n but doesn\hich\f0 \rquote \loch\f0 t make much sense: \par \tab \hich\af0\dbch\af13\loch\f0 stringName.LG_USENG = \{\hich\f0 \'93\loch\f0 \hich\f0 string1\'94\loch\f0 \hich\f0 , \'93\loch\f0 \hich\f0 string2\'94\loch\f0 \hich\f0 , string(\'93\loch\f0 \hich\f0 abc\'94\loch\f0 , 345) \}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.4\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Glyph Table \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{ glyphEnv | glyphEntry | tableDeclaration \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{\hich\af37\dbch\af13\loch\f37 glyphEntry | glyphEnv | tableDeclaration \}\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( glyphContents | glyphAttributes ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line ( )\line | ( ( flatAttrItem | structuredAttrItem ) ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line | | \line | | \line | | \line \hich\af37\dbch\af13\loch\f37 | ( [ ]\line \tab ) ; \par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af37\afs22 \ltrch\fcs0 \b\f37\fs22\lang1033\langfe1033\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.4.1\tab}}\pard\plain \ltrpar\s3\ql \fi-864\li864\ri0\sb240\keepn\widctlpar \tx864\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl2\outlinelevel2\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \ab\af37\afs22\alang1025 \ltrch\fcs0 \b\fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Glyph Functions and Lists \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line ( | \line | | \line | \line )\line \hich\af37\dbch\af13\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line [ ]\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( \line \tab \{ \} )\line | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::-\tab | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( )\line | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( <\hich\af37\dbch\af13\loch\f37 literalInteger> )\line | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( | ) [ ( | ) ] ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.5\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Feature Table \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{ f\hich\af37\dbch\af13\loch\f37 eatureEnv | featureEntry | tableDeclaration \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{ featureSpecList | featureEnv | tableDeclaration \}\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( structuredFeatureSpec [ ] )\line | ( flatFeatureSpec [ ] \tab ) ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab ( | | )\line \tab [ ] \line \tab ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( ( | | )\line \tab ( ( | ) )\line \tab | ( )\line )\line | ( ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | | ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.6\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Substitution and Justifica\hich\af37\dbch\af13\loch\f37 tion Tables \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ subEntry \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ subEntry \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | | | \line | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \}\line \{ \}\line [ \{ \} ]\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab \hich\af37\dbch\af13\loch\f37 ::=\tab [ ]\line [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line | ( subLhsItem [ ] ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( | ) \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( \line | ( [ ] )\line | ( [ ] )\line )\line \line \par \hich\af37\dbch\af13\loch\f37 ::=\tab ( [ ] ) \line \tab | ( [ ] ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ \{ \} ]\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ( [ ] ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.7\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Positioning and Line Break Tables \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ posEntry \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ posEntry \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | | | \line | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \}\line \{ \}\line [ \{ \} ]\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab <\hich\af37\dbch\af13\loch\f37 rightParen> \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line | ( posRhsItem [ ] ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.8\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Context \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | | ( [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\af37\dbch\af13\loch\f37 \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( | | )\line \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.9\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Attributes \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( | ) [ ]\line ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( )\line | ( | ) ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | | | \line | ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.10\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Expressions \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ::=\tab \line [ ] ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \line [ ] ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \line [ ] ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab | | | \line | | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \line \tab \{ \}; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab |

; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( )\line | | | \line | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ]\line [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ( ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.11\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Functions \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 ( \'93\loch\f37 \hich\f37 max\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 min\'94\loch\f37 ) [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 4.12\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Other \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\af37\dbch\af13\loch\f37 | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( | }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792\charrsid8211580 \loch\af37\dbch\af13\hich\f37 \'93\loch\f37 \hich\f37 position\'94}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 ) [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab [ ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab
; \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\f37\fs28\lang1033\langfe1033\kerning28\langfenp1033 \hich\af37\dbch\af13\loch\f37 5\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Lexical Toke\hich\af37\dbch\af13\loch\f37 ns \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.1\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Whitespace \par }\pard\plain \ltrpar\s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Whitespace may occur between any two lexical items. Whitespace may not be included in the middle of a token except where specified (e.g., }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs54\f37\insrsid480792 \hich\af37\dbch\af13\loch\f37 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 ). \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Comments \par }\pard\plain \ltrpar\s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 Comments may occur anywhere whitespace may \hich\af0\dbch\af13\loch\f0 occur, and are ignored with respect to the generation of the lexical tokens. \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 /*\'94\loch\f37 \{ | \}\hich\f37 \'93\loch\f37 \hich\f37 */\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 //\'94\loch\f37 \{ \} ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Keywords \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 codepoint\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 else\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 elseif\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 else\'94\loch\f37 \{ \}\hich\f37 if\'94\loch\f37 ; \par }\pard\plain \ltrpar\s55\ql \li360\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 \hich\f0 In other words, \'93\loch\f0 \hich\f0 else\'94\loch\f0 followed by any number of space characters (but not an intervening new-line) follow\hich\af0\dbch\af13\loch\f0 \hich\f0 ed by \'93\loch\f0 \hich\f0 if\'94\loch\f0 \hich\f0 is treated as equivalent to \'93\loch\f0 \hich\f0 elseif\'94\loch\f0 . \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 environment\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 env\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 endenvironment\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 endenv\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 endif\'94 \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 endpass\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 endtable\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 feature\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab \hich\af37\dbch\af13\loch\f37 ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 glyph\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 glyphid\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 if\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 justification\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 just\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 linebreak\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 lb\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 name\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 pass\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 position\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 pos\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 positioning\'94\hich\af37\dbch\af13\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 position\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 pos\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 postscript\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 pseudo\'94 \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 string\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 substitution\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 subs\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 sub\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 table\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 unicode\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 value\'94\loch\f37 ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.4\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Numbers and Identifie\hich\af37\dbch\af13\loch\f37 rs \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 true\'94\loch\f37 \hich\f37 | \'93 \loch\f37 \hich\f37 false\'94\loch\f37 | [ | ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \{ | | \}; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 @\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 ( \'93\loch\f37 \hich\f37 a\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 b\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 c\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 d\'94 \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 e\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 f\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 g\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 h\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 i\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 j\'94\loch\f37 |\hich\af37\dbch\af13\loch\f37 \hich\f37 \'93\loch\f37 \hich\f37 k\'94\line \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 l\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 m\'94 \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 n\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 o\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 p\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 q\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 r\'94\loch\f37 \hich\f37 |\'94\loch\f37 \hich\f37 s\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 t\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 u\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 v\'94\line \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 w\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 x\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 y\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 z\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 A\'94\loch\f37 \hich\f37 | \'93 \loch\f37 \hich\f37 B\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 C\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 D\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 E\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 F\'94\line \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 G\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 H\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 I\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 J\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 K\'94 \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 L\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 M\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 N\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 O\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 P\'94\line \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 Q\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 R\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 S\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 T\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 U\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 V\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 W\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 X\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 Y\'94\loch\f37 \hich\f37 | \'93 \loch\f37 \hich\f37 Z\'94\line \loch\f37 ) \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 ( \'93\loch\f37 \hich\f37 0\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 1\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 2\'94\loch\f37 \hich\f37 | \'93 \loch\f37 \hich\f37 3\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 4\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 5\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 6\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 7\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 8\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 9\'94\loch\f37 ); \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 ( \'93\loch\f37 \hich\f37 0\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 1\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 2\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 3\'94 \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 4\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 5\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 6\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 7\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 8\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 9\'94\line \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 a\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 b\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 c\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 d\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 e\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 f\'94\loch\f37 \line \hich\f37 | \'93\loch\f37 \hich\f37 A\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 B\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 C\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 D\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 E\'94\loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 F\'94\loch\f37 ) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ( \{\hich\af37\dbch\af13\loch\f37 \} )\line \hich\f37 | ( \'93\loch\f37 \hich\f37 0x\'94\loch\f37 \{ \} )\line \hich\f37 [ \'93\loch\f37 \hich\f37 m\'94 \loch\f37 \hich\f37 | \'93\loch\f37 \hich\f37 M\'94\loch\f37 ] ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line \{ | \}\line \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \line ( | )\line \par \hich\af37\dbch\af13\loch\f37 \tab \hich\af37\dbch\af13\loch\f37 ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 U+\'94\loch\f37 \{ \} ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \lquote \\\rquote \loch\f37 ( \hich\f37 \lquote \loch\f37 n\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 r\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 t \hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 b\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 f\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \'94\rquote \loch\f37 \hich\f37 | \'93\rquote \'94\loch\f37 | \hich\f37 \lquote \\ \rquote \loch\f37 ) ; \par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cf16\insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \lquote \loch\f37 !\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 #\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote }{ \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\cf16\insrsid480792 \hich\af1\dbch\af13\loch\f1 $}{\rtlch\fcs1 \af37 \ltrch\fcs0 \cf16\insrsid480792 \loch\af37\dbch\af13\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 %\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\cf16\insrsid480792 \hich\af1\dbch\af13\loch\f1 &}{\rtlch\fcs1 \af37 \ltrch\fcs0 \cf16\insrsid480792 \loch\af37\dbch\af13\hich\f37 \rquote \loch\f37 \hich\f37 | \'93\rquote \'94\loch\f37 | \hich\f37 \lquote \loch\f37 (\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 )\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 *\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 +\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 , \hich\f37 \rquote \line \loch\f37 | \hich\f37 \lquote \loch\f37 -\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 .\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 /\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 :\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 ;\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 <\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 =\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 >\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 ?\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 @\hich\f37 \rquote \loch\f37 | \loch\af37\dbch\af13\hich\f37 \lquote \loch\f37 [\hich\f37 \rquote \line \loch\f37 | \hich\f37 \lquote \\\rquote \loch\f37 | \hich\f37 \lquote \loch\f37 ]\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 ^\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 _\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \loch\f37 `\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \{\rquote \loch\f37 | \hich\f37 \lquote \loch\f37 |\hich\f37 \rquote \loch\f37 | \hich\f37 \lquote \}\rquote \loch\f37 | \hich\f37 \lquote \loch\f37 ~\hich\f37 \rquote \loch\f37 ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.5\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Assignment Operators \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab | ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 =\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 +=\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 -=\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 *=\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 /=\'94\loch\f37 ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.6\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Comparison\hich\af37\dbch\af13\loch\f37 Operators \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ==\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab :=\tab \hich\f37 \'93\loch\f37 \hich\f37 !=\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 <\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 <=\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 >\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 >=\'94\loch\f37 ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.7\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Logical and Arithmetic Operators \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ||\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid480792 \hich\af1\dbch\af13\loch\f1 &&}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \loch\af37\dbch\af13\hich\f37 \'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 !\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 +\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 -\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 *\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37
\tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 /\'94\loch\f37 ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.8\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 Other Symbols \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 .\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ..\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ;\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ,\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 :\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid480792 \hich\af1\dbch\af13\loch\f1 $}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \loch\af37\dbch\af13\hich\f37 \'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 _\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 #\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ^\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 @\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ?\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 (\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 )\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\{\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\}\'94\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 [\'93\loch\f37 ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab \hich\f37 \'93\loch\f37 \hich\f37 ]\'94\loch\f37 ; \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1033\kerning20\langfenp1033 \hich\af37\dbch\af13\loch\f37 5.9\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keep\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\kerning20\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 ASCII Primitives \par }\pard\plain \ltrpar\s53\ql \fi-2880\li2880\ri0\sb240\sa120\widctlpar\tx2160\tx2880\tx3240\tx3600\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480792 \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ASCII(32) ; \par \hich\af37\dbch\af13\loch\f37 \tab \hich\af37\dbch\af13\loch\f37 ::=\tab ASCII(end-of-line) ; \par \hich\af37\dbch\af13\loch\f37 \tab ::=\tab ASCII(32..126) ; \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af37\afs22 \ltrch\fcs0 \b\f37\fs22\lang1033\langfe1033\kerning28\langfenp1033 \hich\af37\dbch\af13\loch\f37 6\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37\afs22 \ltrch\fcs0 \fs22\insrsid480792 \hich\af37\dbch\af13\loch\f37 Revision History \par }\pard\plain \ltrpar\s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 1. 30 April 2004. File created by Sharon Correll. \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af37\afs22 \ltrch\fcs0 \b\f37\fs22\lang1033\langfe1033\kerning28\langfenp1033 \hich\af37\dbch\af13\loch\f37 7\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\sa120\keep\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls1\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\kerning28\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af37\afs22 \ltrch\fcs0 \fs22\insrsid480792 \hich\af37\dbch\af13\loch\f37 File Name \par }\pard\plain \ltrpar\s15\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \hich\af0\dbch\af13\loch\f0 FILENAME \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid480792 \hich\af0\dbch\af13\loch\f0 GDL_BNF_1_0.doc}}} \sectd \pgnrestart\linex0\endnhere\titlepg\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid480792 \par }}grcompiler-5.2.1/doc/GTF_3_0.rtf000066400000000000000000006763321411153030700162410ustar00rootroot00000000000000{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f27\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;} {\f28\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f29\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_215 LT 300 CN;}{\f30\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_700 BD 300 CN;} {\f31\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_565 SB 300 CN;}{\f32\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_400 RG 300 CN;}{\f33\froman\fcharset238\fprq2 Times New Roman CE;} {\f34\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f36\froman\fcharset161\fprq2 Times New Roman Greek;}{\f37\froman\fcharset162\fprq2 Times New Roman Tur;}{\f38\froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\f39\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f40\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f41\fswiss\fcharset238\fprq2 Arial CE;}{\f42\fswiss\fcharset204\fprq2 Arial Cyr;}{\f44\fswiss\fcharset161\fprq2 Arial Greek;} {\f45\fswiss\fcharset162\fprq2 Arial Tur;}{\f46\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f47\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f48\fswiss\fcharset186\fprq2 Arial Baltic;}{\f49\fmodern\fcharset238\fprq1 Courier New CE;} {\f50\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f52\fmodern\fcharset161\fprq1 Courier New Greek;}{\f53\fmodern\fcharset162\fprq1 Courier New Tur;}{\f54\fmodern\fcharset177\fprq1 Courier New (Hebrew);} {\f55\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f56\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f249\fswiss\fcharset238\fprq2 Tahoma CE;}{\f250\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f252\fswiss\fcharset161\fprq2 Tahoma Greek;} {\f253\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f254\fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f255\fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f256\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f257\fswiss\fcharset238\fprq2 Arial Narrow CE;} {\f258\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f260\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f261\fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f264\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}}{\colortbl;\red0\green0\blue0; \red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red255\green255\blue255;}{\stylesheet{\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal,n;}{\s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1,h1;}{\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon1 \snext0 heading 2,h2;}{ \s3\ql \li0\ri0\sb80\sa80\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3,h3;}{ \s4\ql \li0\ri0\sb60\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 4,h4;}{ \s5\ql \li0\ri0\sb60\sa60\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \i\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 5,h5;}{ \s6\ql \li0\ri0\sa60\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \i\f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 6,h6;}{ \s7\ql \li0\ri0\sb240\sa60\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 7;}{ \s8\ql \li0\ri0\sb240\sa60\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \i\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 8;}{ \s9\ql \li0\ri0\sb240\sa60\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\i\f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{ \s15\ql \li0\ri0\sa120\widctlpar\tqc\tx4320\tqr\tx8640\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 footer;}{\s16\ql \li0\ri0\sa120\widctlpar \tqc\tx4320\tqr\tx8640\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 header;}{\*\cs17 \additive \sbasedon10 page number;}{ \s18\ql \li0\ri0\sb600\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 Paper Title,pt;}{ \s19\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon18 \snext19 Paper Subtitle,ps;}{ \s20\ql \li0\ri0\sb240\sa1200\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 Author,au;}{ \s21\ql \fi-360\li360\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext21 Biblio Entry,be;}{ \s22\ql \li360\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \f2\fs18\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext22 Source Code,sc;}{ \s23\ql \li720\ri720\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin720\lin720\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext23 Abstract Text,at;}{ \s24\ql \li720\ri0\sb80\sa80\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon3 \snext24 Abstract Heading,ah;}{ \s25\ql \li0\ri0\sb40\sa40\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext25 Table Header,th;}{\*\cs26 \additive \b\f1\fs20\expnd-2\expndtw-10 \sbasedon10 Keyword,kw;}{\s27\ql \li0\ri0\sb40\sa40\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon25 \snext27 Table Entry,te;}{ \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Table Caption,tc;}{ \s29\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Body Text;}{ \s30\ql \fi-144\li144\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 footnote text,ft;}{\*\cs31 \additive \fs16 \sbasedon10 Keystroke,ks;}{\*\cs32 \additive \super \sbasedon10 footnote reference;}{\s33\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f29\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon28 \snext33 Figure Caption,fc;}{ \s34\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 tcTable 3:Gloc;}{\*\cs35 \additive \f2\fs20\lang1024\langfe1024\noproof \sbasedon10 Code;}{\* \cs36 \additive \f29\fs18 \sbasedon10 Comment Code,cc;}{\s37\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \f30\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 1,a1;}{\s38\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \f31\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon37 \snext0 Appendix 2,a2;}{ \s39\ql \li0\ri0\sb80\sa80\keep\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \f32\fs24\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 3,a3;}{ \s40\ql \li0\ri0\sb60\sa60\keep\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \f32\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 4,a4;}{ \s41\ql \li0\ri0\sb60\sa60\keep\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \i\f32\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 5,a5;}{\s42\ql \fi-360\li360\ri0\sa120\widctlpar \jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls11\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext42 \sautoupd List Bullet 3;}{ \s43\ql \li1440\ri1440\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin1440\lin1440\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext43 Block Text;}{\s44\ql \li0\ri0\sa120\sl480\slmult1 \widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext44 Body Text 2;}{\s45\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext45 Body Text 3;}{\s46\ql \fi210\li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon29 \snext46 Body Text First Indent;}{\s47\ql \li283\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext47 Body Text 2;}{ \s48\ql \fi210\li283\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon47 \snext48 Body Text First Indent 2;}{\s49\ql \li283\ri0\sa120\sl480\slmult1 \widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext49 Body Text Indent 2;}{\s50\ql \li283\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext50 Body Text Indent 3;}{\s51\ql \li0\ri0\sb120\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 caption;}{\s52\ql \li4252\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin4252\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext52 Closing;}{ \s53\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext53 annotation text;}{ \s54\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Date;}{\s55\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \f27\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext55 Document Map;}{\s56\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext56 endnote text;}{\s57\ql \li2880\ri0\sa120\widctlpar\phpg\posxc\posyb\absh-1980\absw7920\dxfrtext180\dfrmtxtx180\dfrmtxty0\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext57 envelope address;}{\s58\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext58 envelope return;}{ \s59\ql \fi-220\li220\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 1;}{ \s60\ql \fi-220\li440\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 2;}{ \s61\ql \fi-220\li660\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin660\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 3;}{ \s62\ql \fi-220\li880\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin880\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 4;}{ \s63\ql \fi-220\li1100\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1100\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 5;}{ \s64\ql \fi-220\li1320\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1320\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 6;}{ \s65\ql \fi-220\li1540\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1540\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 7;}{ \s66\ql \fi-220\li1760\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1760\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 8;}{ \s67\ql \fi-220\li1980\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1980\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd index 9;}{ \s68\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext59 index heading;}{ \s69\ql \fi-283\li283\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext69 List;}{ \s70\ql \fi-283\li566\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin566\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext70 List 2;}{ \s71\ql \fi-283\li849\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin849\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext71 List 3;}{ \s72\ql \fi-283\li1132\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1132\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext72 List 4;}{ \s73\ql \fi-283\li1415\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1415\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext73 List 5;}{\s74\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext74 \sautoupd List Bullet;}{\s75\ql \fi-360\li643\ri0\sa120\widctlpar \jclisttab\tx643{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin643\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext75 \sautoupd List Bullet 2;}{ \s76\ql \fi-360\li1209\ri0\sa120\widctlpar\jclisttab\tx1209{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1209\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext76 \sautoupd List Bullet 4;}{\s77\ql \fi-360\li1492\ri0\sa120\widctlpar\jclisttab\tx1492{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin1492\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext77 \sautoupd List Bullet 5;}{\s78\ql \li283\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext78 List Continue;}{ \s79\ql \li566\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin566\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext79 List Continue 2;}{ \s80\ql \li849\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin849\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext80 List Continue 3;}{ \s81\ql \li1132\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1132\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext81 List Continue 4;}{ \s82\ql \li1415\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1415\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext82 List Continue 5;}{\s83\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext83 List Number;}{\s84\ql \fi-360\li643\ri0\sa120\widctlpar\jclisttab\tx643{\*\pn \pnlvlbody\ilvl0\ls7\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin643\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext84 List Number 2;}{\s85\ql \fi-360\li926\ri0\sa120\widctlpar\jclisttab\tx926{\*\pn \pnlvlbody\ilvl0\ls8\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin926\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext85 List Number 3;}{\s86\ql \fi-360\li1209\ri0\sa120\widctlpar\jclisttab\tx1209{\*\pn \pnlvlbody\ilvl0\ls9\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin1209\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext86 List Number 4;}{\s87\ql \fi-360\li1492\ri0\sa120\widctlpar\jclisttab\tx1492{\*\pn \pnlvlbody\ilvl0\ls10\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls10\adjustright\rin0\lin1492\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext87 List Number 5;}{\s88\ql \li0\ri0\sa120\widctlpar \tx480\tx960\tx1440\tx1920\tx2400\tx2880\tx3360\tx3840\tx4320\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext88 macro;}{\s89\ql \fi-1134\li1134\ri0\sa120\widctlpar\brdrt \brdrs\brdrw15\brsp20 \brdrl\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \brdrr\brdrs\brdrw15\brsp20 \aspalpha\aspnum\faauto\adjustright\rin0\lin1134\itap0 \shading2000 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext89 Message Header;}{\s90\ql \li720\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext90 Normal Indent;}{ \s91\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Note Heading;}{ \s92\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext92 Plain Text;}{ \s93\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Salutation;}{ \s94\ql \li4252\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin4252\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext94 Signature;}{ \s95\qc \li0\ri0\sa60\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext95 Subtitle;}{ \s96\ql \fi-220\li220\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 table of authorities;}{ \s97\ql \fi-440\li440\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 table of figures;}{ \s98\qc \li0\ri0\sb240\sa60\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext98 Title;}{ \s99\ql \li0\ri0\sb120\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 toa heading;}{ \s100\ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 1;}{ \s101\ql \li220\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 2;}{ \s102\ql \li440\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 3;}{ \s103\ql \li660\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin660\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 4;}{ \s104\ql \li880\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin880\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 5;}{ \s105\ql \li1100\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1100\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 6;}{ \s106\ql \li1320\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1320\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 7;}{ \s107\ql \li1540\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1540\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 8;}{ \s108\ql \li1760\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1760\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 9;}{\*\cs109 \additive \b \sbasedon10 Strong;}{ \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls12\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext111 Bulleted;}} {\*\listtable{\list\listtemplateid-811067668\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s87\fi-360\li1492\jclisttab\tx1492 }{\listname ;}\listid-132}{\list\listtemplateid1170765034\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;} \chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s86\fi-360\li1209\jclisttab\tx1209 }{\listname ;}\listid-131}{\list\listtemplateid-1805609770\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s85\fi-360\li926\jclisttab\tx926 }{\listname ;}\listid-130}{\list\listtemplateid-1343214118\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s84\fi-360\li643\jclisttab\tx643 }{\listname ;}\listid-129}{\list\listtemplateid2006244112 \listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \s77\fi-360\li1492 \jclisttab\tx1492 }{\listname ;}\listid-128}{\list\listtemplateid-301538812\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr \brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \s76\fi-360\li1209\jclisttab\tx1209 }{\listname ;}\listid-127}{\list\listtemplateid717405742\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li926\jclisttab\tx926 }{\listname ;}\listid-126}{\list\listtemplateid-994795558\listsimple{\listlevel\levelnfc23\levelnfcn23 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \s75\fi-360\li643\jclisttab\tx643 }{\listname ;}\listid-125} {\list\listtemplateid-1785797310\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s83 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-120}{\list\listtemplateid-1445294268\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3 \chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \s74\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-119}{\list\listtemplateid1711320122\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \s42\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid610631568}{\list\listtemplateid134807553\listsimple{\listlevel\levelnfc23 \levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid888614569} {\list\listtemplateid1002710782{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-720\li720 \jclisttab\tx720 }{\listlevel\levelnfc22\levelnfcn22\leveljc0\leveljcn0\levelfollow0\levelstartat3\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-720\li720 \jclisttab\tx720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-720\li720 \jclisttab\tx720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-720\li720\jclisttab\tx720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-720\li720\jclisttab\tx720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;} \chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1080\li1080\jclisttab\tx1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1080\li1080\jclisttab\tx1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1440\li1440\jclisttab\tx1440 }{\listlevel \levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1440\li1440\jclisttab\tx1440 }{\listname ;}\listid1135489240}{\list\listtemplateid286416242\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0 {\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \s111\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1329862447}}{\*\listoverridetable{\listoverride\listid-119\listoverridecount0\ls1} {\listoverride\listid-125\listoverridecount0\ls2}{\listoverride\listid-126\listoverridecount0\ls3}{\listoverride\listid-127\listoverridecount0\ls4}{\listoverride\listid-128\listoverridecount0\ls5}{\listoverride\listid-120\listoverridecount0\ls6} {\listoverride\listid-129\listoverridecount0\ls7}{\listoverride\listid-130\listoverridecount0\ls8}{\listoverride\listid-131\listoverridecount0\ls9}{\listoverride\listid-132\listoverridecount0\ls10}{\listoverride\listid610631568\listoverridecount0\ls11} {\listoverride\listid1329862447\listoverridecount0\ls12}{\listoverride\listid1135489240\listoverridecount0\ls13}{\listoverride\listid888614569\listoverridecount0\ls14}}{\info{\title Graphite Table Format}{\subject Extending TrueType for Graphite} {\author Martin Hosken and Sharon Correll}{\operator Sharon Correll}{\creatim\yr2006\mo2\dy9\hr12\min13}{\revtim\yr2006\mo2\dy9\hr12\min13}{\printim\yr1999\mo7\dy9\hr14\min14}{\version2}{\edmins0}{\nofpages11}{\nofwords3508}{\nofchars19998} {\*\company SIL}{\nofcharsws24558}{\vern8247}}{\*\userprops {\propname Version}\proptype30{\staticval 1.1}}\deftab360\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\fracwidth\psover\dghspace180 \dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl \fet0{\*\template E:\\Program Files\\Microsoft Office\\Templates\\NRSI\\NRSI Standard Template (T).dot}\sectd \linex-32767\footery936\endnhere\sectdefaultcl {\footer \pard\plain \s15\ql \li0\ri0\sa120\widctlpar\tqc\tx4320\tqr\tx8640\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\line } {\field{\*\fldinst {Title}}{\fldrslt {Graphite Table Format}}}{ }{\cs17\b Page }{\field{\*\fldinst {\cs17\b PAGE }}{\fldrslt {\cs17\b\lang1024\langfe1024\noproof 10}}}{\cs17\b of }{\field{\*\fldinst {\cs17\b NUMPAGES}}{\fldrslt { \cs17\b\lang1024\langfe1024\noproof 11}}}{ \par }{\field{\*\fldinst {\fs12 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\fs12\lang1024\langfe1024\noproof Martin Hosken and Sharon Correll}}}{\fs12 }{\field{\*\fldinst {\cs17\fs12 PRINTDATE \\@ "MMMM DD, yyyy"}}{\fldrslt { \cs17\fs12\lang1024\langfe1024\noproof July 09, 1999}}}{\cs17\fs12 Rev: }{\field{\*\fldinst {\cs17\fs12 REVNUM}}{\fldrslt {\cs17\fs12\lang1024\langfe1024\noproof 244}}}{\fs12 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s18\ql \li0\ri0\sb600\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst { TITLE}}{\fldrslt {Graphite Table Format}}}{ \par }\pard\plain \s19\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {SUBJECT}}{\fldrslt {Extending TrueType for Graphite}}}{ \par }\pard \s19\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {Version 3 \par }\pard\plain \s20\ql \li0\ri0\sb240\sa1200\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst { Author }}{\fldrslt {\lang1024\langfe1024\noproof Martin Hosken and Sharon Correll}}}{,\line SIL Non-Roman Script Initiative (NRSI) \par }\pard\plain \s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Introduction \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The Graphite font table format is structured in order that a Graphite binar y description may be incorporated into a TrueType font. Thus the binary format uses the TrueType table structure, identically to how it is used in a TrueType font. The only difference between using an external file containing Graphite binary information i n tables, and inserting the binary information into tables in the font is that tables are considered local to their file and are considered to override those found in the font file. This allows there to be multiple, independent descriptions held in separat e files. Those independent descriptions would have to be merged, in a way described in this document, if they were to be held together in the same font file or binary file. \par The description consists of a set of table descriptions. The format of a file follows that of a TrueType font containing only those tables pertinent to the description (i.e. for a separate binary description, those tables listed here). \par As is standard for all TrueType tables, the data is in big-endian format (most significant byte first). \par }\pard\plain \s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Version \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { This file describes version 3.0 of the Graphite font table specification. See GTF_2_0.doc for a description of version 2.0. Modified fields are highlighted with }{\highlight4 green}{ in this version; newly added fields are highlighted with }{\highlight7 yellow}{. \par }\pard\plain \s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Tables \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {This document describes several additional TrueType table types. The \'93}{ \cs35\f2\fs20\lang1024\langfe1024\noproof Silf}{\'94 and \'93}{\cs35\f2\fs20\lang1024\langfe1024\noproof Sile}{\'94 tables are unique to the needs of Graphite, whilst \'93}{\cs35\f2\fs20\lang1024\langfe1024\noproof Gloc}{\'94 and \'93}{ \cs35\f2\fs20\lang1024\langfe1024\noproof Glat}{\'94 provide an extended glyph attribute mechanism. The \'93}{\cs35\f2\fs20\lang1024\langfe1024\noproof Feat}{\'94 table is based very closely on the GX \'93}{\cs35\f2\fs20\lang1024\langfe1024\noproof feat}{ \'94 table. (If necessary the tables could be restructured to be stored inside the single \'93}{\cs35\f2\fs20\lang1024\langfe1024\noproof Silf}{\'94 table.) In addition, use is made of the \'93}{\cs35\f2\fs20\lang1024\langfe1024\noproof name}{\'94 table type. \par \par }\pard\plain \s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Glat \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat}{ table type is used for storing glyph attributes. Each glyph may be considered to have a sparse array of, at the most, 256 16-bit signed attributes. The }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat}{ table is the mechanism by which they are stored. \par The }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat}{ table consists of a table header and an array of }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat_entry}{ items: \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2400\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2880 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2400\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2880 \cellx5280\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2400\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2880 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {FIXED\cell version\cell Table version: 00010000\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2400\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2880 \cellx5280\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2400\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2880 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Glat_entry[]\cell entries\cell Glyph attribute entries\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2400\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2880 \cellx5280\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 1: Glat \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { The glyph attributes associated with a particular glyph are identified by number and value. To conserve space, this storage is run-length encoded. Thus a glyph will have a series of }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat_entrys}{ correspond ing to each non-contiguous set of attributes. The structure of a }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat_entry}{ is: \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attNum\cell Attribute number of first attribue\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\clbrdrt \brdrnone \cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell num\cell Number of attributes in this run\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {SHORT\cell attributes[ ] \cell Array of }{\cs35\f2\fs20\lang1024\langfe1024\noproof num}{ attributes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2160\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3120 \cellx5280\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 2: Glat_entry \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Notice that all glyph attributes are 16-bit signed values. If a 32-bit value is required, then two attributes should be assigned and joined together by the application. \par Attribute numbers are application specific. \par }\pard\plain \s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Gloc \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The }{\cs35\f2\fs20\lang1024\langfe1024\noproof Gloc}{ table is used to index the }{ \cs35\f2\fs20\lang1024\langfe1024\noproof Glat}{ table. It is structured identically to the }{\cs35\f2\fs20\lang1024\langfe1024\noproof loca}{ table type, except that it has a header. \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Tyoe\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {FIXED\cell version\cell Table version: 00010000 \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell flags\cell bit 0 = 1 for Long format, = 0 for short format\line bit 1 = 1 for attribute names, = 0 for stripped\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numAttribs\cell Number of attributes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT/ULONG\cell locations[ ]\cell Offsets into }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat}{ table for each glyph; (number of glyph IDs + 1) of these\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880 \clvertalt\cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell attribIds[ ]\cell Debug id for each attribute\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx2880\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3960 \cellx6840\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 3: Gloc \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The }{\cs35\f2\fs20\lang1024\langfe1024\noproof flags}{ entry contains a bit to indic ate whether the locations array is of type }{\cs35\f2\fs20\lang1024\langfe1024\noproof USHORT}{ or }{\cs35\f2\fs20\lang1024\langfe1024\noproof ULONG}{. The locations array is identically structured to that of the }{ \cs35\f2\fs20\lang1024\langfe1024\noproof loca}{ table. There is one entry per glyph and an extra entry to identify the length of the final glyph\rquote s attribute entries. Offsets are given to a }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat_entry}{ in the }{\cs35\f2\fs20\lang1024\langfe1024\noproof Glat}{ table. The second bit indicates whether there is an }{\cs35\f2\fs20\lang1024\langfe1024\noproof attribIds}{ array at the end of this table. If there is, then it contains }{ \cs35\f2\fs20\lang1024\langfe1024\noproof name}{ IDs for each attribute. If this bit is not set, then there is no array and the table ends after the }{\cs35\f2\fs20\lang1024\langfe1024\noproof locations}{ array. \par NOTE: as of version 2 of the Silf table, the values of the breakweight attribute are interpreted as follows: \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BREAK_WHITESPACE = 10 \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {BREAK_WORD = 15 \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {BREAK_INTRA = 20 \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {BREAK_LETTER = 30 \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {BREAK_CLIP = 40 \par }\pard\plain \s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Feat \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Graphite stores features in a table whose format is very similar to the GX }{ \cs35\f2\fs20\lang1024\langfe1024\noproof feat}{ table. This makes reference to the }{\cs35\f2\fs20\lang1024\langfe1024\noproof name}{ table which is use for storing feature names and feature value names. \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight4 FIXED\cell version\cell Table version: 00020000\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numFeat\cell Number of features\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120 \clvertalt\cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {FeatureDefn\cell features[ ]\cell Array of numFeat features\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\row }\trowd \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Feature\-SettingDefn\cell featSettings[ ]\cell Array of feature setting values, indexed by offset\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1788 \cellx1680\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1440 \cellx3120\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4722 \cellx7842\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 4: Feat \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770 \pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight4 ULONG\cell id\cell Feature ID number\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numSettings\cell Number of settings\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell offset\cell Offset into featSettings list\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell flags\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\trowd \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell label\cell Index into name table for UI label\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 5: FeatureDefn \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770 \pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {SHORT\cell value\cell Feature setting value\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\trowd \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell label\cell Index into name table for UI label\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx2520\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5250 \cellx7770\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 6: FeatureSettingDefn \par }\pard\plain \s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\page Silf \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The \'93}{\cs35\f2\fs20\lang1024\langfe1024\noproof Silf}{\'94 table will be used for storing rules and actions for the various types of tables in a rendering description. The structure of the }{\cs35\f2\fs20\lang1024\langfe1024\noproof Silf}{ table is: \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {FIXED\cell version\cell Table versoin: 00030000 \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 FIXED\cell compilerVersion\cell Actual version of the compiler that generated this font\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numSub\cell Number of SIL subtables\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell reserved\cell }{\highlight7 \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell offset[ ]\cell Array of numSub offsets to the subtables relative to the start of this table \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\row }\trowd \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang1036\langfe1033\langnp1036 SIL_Sub\cell tables[ ]\cell }{Array of independent rendering description subtables\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2520\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth5040 \cellx7560\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 7: Silf \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Since one TrueType file may hold multiple independent rendering descriptions, each rendering description is described in a subtable. The subtable contains all that is necessary to describe the rendering of one set of writing systems. \par }\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 FIXED\cell ruleVersion\cell Version of stack-machine language used in rules\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \highlight7 USHORT\cell passOffset\cell offset of oPasses[0] relative to start of sub-table\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell pseudosOffset\cell offset of pMaps[0] relative to start of sub-table\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell maxGlyphID\cell Maximum valid glyph ID (including line-break & pseudo-glyphs)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {SHORT\cell extraAscent\cell Em-units to be added to the font\rquote s ascent\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {SHORT \cell extraDescent\cell Em-units to be added to the font\rquote s descent\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell numPasses\cell Number of rendering description passes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\trowd \trgaph108\trleft-120\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640 \clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell iSubst\cell Index of first substitution pass\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560 \row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell iPos\cell Index of first Positioning pass\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell iJust\cell Index of first Justification pass\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell iBidi\cell Index of first pass after the bidi pass(must be <= iPos); 0xFF implies no bidi pass \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight4 BYTE\cell flags\cell Bit 0: True (1) if there is any start-, end-, or cross-line contextualization; false (0) if line boundaries are irrelevant\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell maxPreContext\cell Max range for preceding cross-line-boundary contextualization\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell maxPostContext\cell Max range for following cross-line-boundary contextualization\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attrPsuedo\cell Glyph attribute number that is used for actual glyph ID for a pseudo glyph\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attrBreakWeight\cell Glyph attribute number of breakweight attribute\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attrDirectionality\cell Glyph attribute number for directionality attribute\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell }{\highlight4 \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell numJLevels\cell Number of justification levels; 0 if no justification\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Justification-Level\cell jLevels[ ]\cell Justification information for each level.\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numLigComp\cell Number of initial glyph attributes that represent ligature components\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang3079\langfe1033\langnp3079 BYTE\cell numUserDefn\cell }{Number of user-defined slot attributes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell maxCompPerLig\cell Maximum number of components per ligature\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell direction\cell Supported direction(s)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell numCritFeatures\cell Number of critical features\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell critFeatures[ ]\cell Array of critical features\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang3079\langfe1033\langnp3079 BYTE\cell numScriptTag\cell }{Number of scripts this subtable supports \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang3079\langfe1033\langnp3079 ULONG\cell }{scriptTag[ ]\cell Array of numScriptTag script tags\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell lbGID\cell Glyph ID for line-break psuedo-glyph\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell oPasses[ ]\cell Offets to passes relative to the start of this subtable; numPasses + 1 of these \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numPseudo\cell Number of Unicode -> pseudo-glyph mappings\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell searchPseudo\cell (max power of 2 <= numPseudo) * sizeof(PseudoMap)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell pseudoSelector\cell log}{\sub 2}{(max power of 2<= numPseudo)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell pseudoShift\cell numPseudo - searchPseudo\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PseudoMap\cell pMaps[ ]\cell Mappings between Unicode and pseudo-glyphs in order of Unicode\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ClassMap\cell classes\cell Classes object storing replacement classes used in actions\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\trowd \trgaph108\trleft-120 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\lang1036\langfe1033\langnp1036 SIL_Pass\cell passes[ ]\cell }{Array of passes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1200 \cellx1080\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1560 \cellx2640\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4920 \cellx7560\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 8: SIL_Sub \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Each justification level has several glyph attributes associated with it. \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attrStretch\cell Glyph attribute number for justify.X.stretch\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attrShrink\cell Glyph attribute number for justify.X.shrink\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attrStep\cell Glyph attribute number for justify.X.step\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell attrWeight\cell Glyph attribute number for justify.X.weight\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell runto\cell Which level starts the next stage\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\trowd \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth828 \cellx720\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx1800\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3480 \cellx5280\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 9: JustificationLevel \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { A pseudo-glyph is a glyph which contains no font metrics (it has a GID greater than the numGlyphs entry in the maxp table) but is used in the rendering process. Each pseudo-glyph has an attribute which is the glyph ID of a real glyph which will be used to actually render the glyph. The pseudo-glyph map contains a mapping between Unicode and pseudo-glyph number: \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1188 \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth960 \cellx2040\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2760 \cellx4800\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1188 \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth960 \cellx2040\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2760 \cellx4800\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1188 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth960 \cellx2040\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2760 \cellx4800\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell unicode\cell Unicode codepoint \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1188 \cellx1080\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth960 \cellx2040\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2760 \cellx4800\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1188 \cellx1080\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth960 \cellx2040\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2760 \cellx4800\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell nPseudo\cell Glyph ID of pseudo-glyph\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1188 \cellx1080\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth960 \cellx2040\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2760 \cellx4800\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { Table 10: PseudoMap \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The Clas sMap stores the replacement class information for the passes in this description. Replacement classes are used during substitution where a glyph id is looked up in one class and the glyph ID at the corresponding index in another class is substituted. The d ifficulty with the storage of such classes is in looking up a glyph ID in an arbitrarily ordered list. One approach is to use a linear search; this is very slow, but is stored very simply. Another approach is to order the glyphs in the class and to store the index against the glyph. Both approaches are supported in the ClassMap table structure: \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT \cell numClass\cell Number of replacement classes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numLinear\cell Number of linearly stored replacement classes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell oClass[ ]\cell Array of numCl ass + 1 offsets to class arrays from the beginning of the class map\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell glyphs[ ]\cell Glyphs for linear classes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {LookupClass\cell lookups[ ]\cell An array of numClass \endash numLinear lookups\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1308 \cellx1200\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2280\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6468 \cellx8748\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { Table 11: ClassMap \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The LookupClass stores a fast lookup association between gl yph ID and index. Each lookup consists of an ordered list of glyph IDs with the corresponding index for that glyph. The number of elements in the lookup is specified by numIds along with a search Range and shift to initialize a fast binary search engine: \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb \brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numIDs\cell Number of elements in the lookup\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt \brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell searchRange\cell (max power of 2<= numIDs) * 4\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell entrySelector\cell log}{\sub 2}{(max power of 2<= numIDs)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell rangeShift\cell numIds*4 \endash searchRange\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {LookupPair\cell lookups[ ]\cell lookups; there are numIDs of these\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1046 \cellx1019\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1462 \cellx2481\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth3856 \cellx6337\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { Table 12: LookupClass \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Each element in the lookup consists of a glyphId and the corresponding index in the original ordered list. \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1098 \cellx990\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2070\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4290 \cellx6360\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell }\pard \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\b Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1098 \cellx990\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2070\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4290 \cellx6360\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1098 \cellx990\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2070\clvertalt \clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4290 \cellx6360\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell glyphId\cell glyph id to be compared\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1098 \cellx990\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2070\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4290 \cellx6360\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1098 \cellx990\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2070\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4290 \cellx6360\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell index \cell index corresponding to this glyph id in ordered list\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1098 \cellx990\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1080 \cellx2070\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4290 \cellx6360\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 13:LookupPair \par }\pard\plain \s3\ql \li0\ri0\sb80\sa80\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Pass \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Each processing pass consists of a finite state machine description for rule finding, and the actions that are executed when a rule is matched. \par \par }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb \brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell flags\cell bit 0 \endash This pass makes no change to the slot stream\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell maxRuleLoop\cell MaxRuleLoop for this pass\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell maxRuleContext\cell Number of slots of input needed to run this pass\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell maxBackup\cell Number of slots by which the following pass needs to trail this pass (ie, the maximum this pass is allowed to back up)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numRules\cell Number of action code blocks\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight4 USHORT\cell fsmOffset\cell offset to numRows relative to the beginning of the SIL_Pass block\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell pcCode\cell Offset to start of pass constraint code from start of subtable (*passConstraints[0]*)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell rcCode\cell Offset to start of rule constraint code from start of subtable (*ruleConstraints[0]*)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell aCode\cell Offset to start of action code relative to start of subtable (*actions[0]*)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell oDebug\cell Offset to debug arrays (*dActions[0]*); equals 0 if debug stripped\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numRows\cell Number of FSM states\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numTransitional\cell Number of transitional states in the FSM (length of *states* matrix)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numSuccess\cell Number of success states in the FSM (size of *oRuleMap* array)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numColumns\cell Number of FSM columns\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell numRange\cell Number of contiguous glyph ID ranges which map to columns\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell searchRange\cell (maximum power of 2 <= numRange)*sizeof(Pass_Range)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell entrySelector\cell log }{\sub 2}{(maximum power of 2 <= numRange)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell rangeShift\cell numRange*sizeof(Pass_Range)-searchRange\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pass_Range\cell ranges[ ]\cell Ranges of glyph IDs for this FSM; *numColumns* of these\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell oRuleMap[ ]\cell Maps from success state to offset into ruleMap array from start of array. First item corresponds to state # (numRows \endash numSuccess); ie, non-success states are omitted. [0xFFFF implies rule number is equal to state number (i.e. no entry in ruleMap) \endash NOT IMPLEMENTED]\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell ruleMap[ ]\cell Array of rule numbers corresponding to an success state number\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell minRulePreContext\cell Minimum number of items in any rule\rquote s context before the first modified rule item\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell maxRulePreContext\cell Maximum number of items in any rule\rquote s context before the first modified rule item\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {SHORT\cell startStates[ ]\cell Array of size (maxRulePreContext \endash minRulePreContext + 1), indicating the start state in the state machine based on how many pre-context items a rule has \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell ruleSortKeys[ ]\cell Array of *numRules* sort keys, indicating precedence of rules\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell rulePreContext[ ]\cell Array of *numRules* items indicating the number of items in the context before the first modified item, one for each rule\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240 \clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell pConstraint\cell Length of passConstraint block\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell oConstraints[ ]\cell numRules + 1 offsets to constraint code blocks relative to *rcCode* and start of subtable\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell oActions[ ] \cell numRules + 1 offsets to action code blocks relative to *aCode* and start of subtable\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {SHORT\cell stateTrans[ ][ ]\cell Array of *numTransitional* rows of *numColumns* state transitions.\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell reserved\cell \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell passConstraints[ ]\cell Sequences of constraint code for pass-level constraints\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell ruleConstraints[ ]\cell Sequences of constraint code for rules\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {BYTE\cell actions[ ]\cell Sequences of action code\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell dActions[ ]\cell Name index for each action for documentation purposes. 0 = stripped}{ \cs32\super \chftn {\footnote \pard\plain \s30\ql \fi-144\li144\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs32\super \chftn }{ Should debug tables go at the end, and be marked via a flag as per Gloc?}}}{. numRules of these\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236 \clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell dStates[ ]\cell Name index for each intermediateFSM row/state for debugging. 0 = stripped. Corresponds to the last numRows \endash numRules\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell dCols[ ]\cell Name index for each state (numRows of these)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2004 \cellx3240\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6030 \cellx9270\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { Table 14: SIL_Pass \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Notice that the ranges array has fast lookup information on the fr ont to allow for the quick identification of which range a particular glyph id is in. Each range consists of the first and last glyph id in the range. \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth720 \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth720 \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth720 \cellx1680\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell firstId\cell First Glyph id in the range\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth720 \cellx1680\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960 \clvertalt\cltxlrtb\clftsWidth3\clwWidth720 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell lastId\cell Last Glyph id in the range\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\cltxlrtb\clftsWidth3\clwWidth720 \cellx1680\clvertalt\cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth720 \cellx1680\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell colId\cell Column index for this range\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1068 \cellx960\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth720 \cellx1680 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth2587 \cellx4267\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 15: Pass_Range \par }\pard\plain \s3\ql \li0\ri0\sb80\sa80\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Pass Contents \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { A pass contains a Finite State Machine (FSM) which is used to match input strings to rules. It also contains constraints for further testing whether a matched string should fire, and it contains the action code to execute against the matched string. \par The FSM consists of a set of states. A state consists of a row of transitions between that state and another state dependent upon the next glyph in the input stream. Each state may be an acceptance state, in which case it corresponds to a rule match, or a transition state, in which case the state is on the way to matching a rule, or both. A null state transition is one in which the occurrence of this particular class of the followi ng glyph, will result in no extension of a rule match anywhere, just fail on all further searching. A final state is one in which all its transitions are null transitions. \par Note that the }{\cs35\f2\fs20\lang1024\langfe1024\noproof stateTrans}{ array only needs to represent transitional states, not final states. Similarly, the }{\cs35\f2\fs20\lang1024\langfe1024\noproof oRuleMap}{ array only needs entries for acceptance states (whether final or transitional). For this reason the FSM is set up (conceptually) in the following order: transitional non-accepting states first, followed by transitional acce pting states, followed by final (accepting) states. \par Note also that because there may be more than one matched rule for a given state, }{\cs35\f2\fs20\lang1024\langfe1024\noproof oRuleMap}{ indicates a list of rule indices in the }{\cs35\f2\fs20\lang1024\langfe1024\noproof ruleMap}{ array; }{ \cs35\f2\fs20\lang1024\langfe1024\noproof oRuleMap[i+1] \endash oRuleMap[i]}{ indicates how many there are for state i. \par Normally the start state for an FSM is zero. But for each pass there is the idea of a \'93pre-context,\'94 that is, there are slots that need to be taken into consideration in the rule-matching process that are before the current position of the inpu t stream. If we are very near the beginning of the input, we may need to adjust by skipping some states, which corresponds to skipping the \'93pre-context\'94 slots that not present due to being prior to the beginning of the input. This is what the }{ \cs35\f2\fs20\lang1024\langfe1024\noproof maxRulePreContext}{, }{\cs35\f2\fs20\lang1024\langfe1024\noproof minRulePreContext}{, and }{\cs35\f2\fs20\lang1024\langfe1024\noproof startStates}{ items are used for. Specifically, we need to skip the number of transitions equal to the difference between the }{\cs35\f2\fs20\lang1024\langfe1024\noproof maxRulePreContext}{ and the current stream position, if greater than zero. The }{ \cs35\f2\fs20\lang1024\langfe1024\noproof startStates}{ array indicates what the adjusted start state should be. If the current input position is less than }{\cs35\f2\fs20\lang1024\langfe1024\noproof minRulePreContext}{, no rule will match at all. \par Rules are matched in order of length, so that longest rules are given precedence over shorter rules. However, the length of some rules may have been adjusted to allow for a consistent \'93pre-context\'94 for all rules, so the number of matched states in the FSM may not correspond to the actual number of matched items in the rule. For this reason, it is not adequate to simply order r ules based on the number of traversed states in the FSM. Rather, rules are given sort keys indicating their precedence, which is based primarily on the length of the rule and secondarily on its original position within the source code. \par The FSM engine keeps track of all the acceptance states it passes through on its path to a final state. This results in a list of rules matched by the string sorted by precedence. The engine takes the first rule index off the list and looks up the offset to some constraint c o de. This code is executed and if the constraint passes, then the action code associated with that offset is executed and the FSM restarts at the returned slot position. If the constraint fails, then the FSM considers the next-preferred rule, tests that co nstraint, and so forth. If no accepting state is found or all rules fail their constraints, then no rule applies, in which case a single glyph is put into the output stream and the current position advances by one slot. \par The action strings are simply byte strings of actions, much like hinting code, but using a completely different language. (See \'93Stack Machine Commands.doc\'94.) \par }\pard\plain \s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Sile \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { This table is used in Graphite table files that rely on an external font for rendering of the glyphs. When this table is present, the Graphite file is in effect a minimal font that contains information about the actual font to use in rendering. This information is stored in the Sile table. \par This table is new as of version 2. \par \par }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb \brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {FIXED\cell version \cell Table version: 00010000\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt \clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell checksum\cell master checksum (checkSumAdjustment) from the head table of the base font\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell createTime[2]\cell Create time of the base font (64-bits) from the head table\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ULONG\cell modifyTime[2]\cell Modify time of the base font (64-bits) from the head table\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell fontNameLength\cell Number of characters in fontName\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt \clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell fontName[ ]\cell Family name of base font\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell fontFileLength\cell Number of characters in baseFile\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {USHORT\cell baseFile[ ]\cell Original path and name of base font file\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1326 \cellx1236\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1824 \cellx3060\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6210 \cellx9270\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { Table 16: Sile \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {There are four possible si tuations with regard to the Sile table. The first two are considered normal and the second two pathological. \par {\pntext\pard\plain\s83 \fs22 \hich\af0\dbch\af0\loch\f0 1.\tab}}\pard\plain \s83\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { No Sile table is present. In this case, it is assumed that the Graphite table file is a normal font containing not only the Graphite tables but also the glyphs and metrics needed for rendering. \par {\pntext\pard\plain\s83 \fs22 \hich\af0\dbch\af0\loch\f0 2.\tab}}\pard \s83\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin360\itap0 { The base font named in the Sile table is present on the system, and its master checksum and dates match those in the Sile table. In this case, the Graphite tables are read from the Graphite table file, but the glyphs, metrics, and cmap from the base font are what are used for rendering (with the modification performed by the Graphite tables). \par {\pntext\pard\plain\s83 \fs22 \hich\af0\dbch\af0\loch\f0 3.\tab}}\pard \s83\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin360\itap0 {The base font named in the Sile table is present, but its master checksum and/or dates do not match those in the Sile ta ble. In this case the base font is used to perform the rendering, but with no Graphite behaviors. \par {\pntext\pard\plain\s83 \fs22 \hich\af0\dbch\af0\loch\f0 4.\tab}}\pard \s83\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} \aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin360\itap0 {The base font named in the Sile table is not present on the system. In this case the Graphite table file is used for the rendering, with no Graphite behaviors , resulting in square boxes in place of the expected glyphs. \par }\pard\plain \s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 Sill}{ \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { This table maps ISO-639-3 language codes onto feature values. Each language code can be a maxmum of 4 ASCII characters (although 2 or 3 characters is what is used by the ISO standard). \par This table is new as of version 3. \par }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\highlight7 Type\cell Name\cell Description \cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb \brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 FIXED \cell version\cell Table version: 00010000\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell numLangs\cell Number of languages supported\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell searchRange\cell (maximum power of 2 <= numLangs)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell entrySelector\cell log}{\sub\highlight7 2}{\highlight7 (maximum power of 2 <= numLangs)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90 \trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell rangeShift\cell numLangs - searchRange\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 LanguageEntry\cell entries[ ]\cell Languages and pointers to feature settings; there are numLang + 1 of these\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 LangFeatureSetting\cell settings[ ]\cell Feature ID / value pairs\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1890 \cellx1800\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1320 \cellx3120\clvertalt \clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth6150 \cellx9270\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { Table 17: Sill \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Each language entry contains a 4-character l anguage code and an offset to the list of features. There is one bogus entry at the end that facilitates finding the size of the last entry. The offsets are relative to the beginning of the Sill table. \par The language code is left-aligned with any unused characters padded with NULLs. For instance, the code \'93en\'94 is represented by the four bytes [101, 110, 0, 0]. \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\highlight7 Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb \brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt \brdrnone \cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 BYTE\cell langcode[4] \cell 4-char ISO-639-3 language code\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt \brdrnone \cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell numSettings\cell Number of feature settings for this language\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell offset\cell Offset to first feature setting for this language\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4080 \cellx6360\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 18: LanguageEntry \par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\highlight7 Type\cell Name\cell Description\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb \brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrb\brdrs\brdrw15\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt \brdrnone \cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 ULONG\cell featureId \cell Feature identifer number (matches ID in Feat table)\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt \brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrt\brdrnone \cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 SHORT\cell value\cell }\pard \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\highlight7 Default feature value for this language\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrb \brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\pard\plain \s27\ql \li0\ri0\sb40\sa40\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\highlight7 USHORT\cell reserved\cell }\pard \s27\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\highlight7 Pad bytes\cell }\pard\plain \ql \li0\ri0\sa120\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1000 \cellx892\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth1388 \cellx2280\clvertalt\clbrdrb\brdrs\brdrw30\brdrcf15 \cltxlrtb\clftsWidth3\clwWidth4560 \cellx6840\row }\pard\plain \s28\ql \li0\ri0\sa240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {Table 19: LangFeatureSetting \par }\pard\plain \s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Sild \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { This table holds the debug strings for debugging purposes. Since the strings are only used for debugging, they are held somewhat optimised for space over speed and are not considered to be multilingual. Thus strings are considered to be 7-bit ASCII, with a possible extension to UTF-8 at a later stage. The table consists of a sequence of strings each preceded by a length byte. The first string is id 0 and so on to the end of the table. \par NOTE: this table has not been implemented. \par }\pard\plain \s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Multiple Descriptions \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { In the case where multiple descriptions are to be stored in the same set of tables, the following unifications need to occur: \par {\pntext\pard\plain\s42 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s42\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls11\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The feature sets must be unified, thus limiting two features with the same name to having the same settings and corresponding values. \par {\pntext\pard\plain\s42 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s42\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls11\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin360\itap0 {The glyph attributes must be unified. This can be done by using different attribute number ranges, or by examining for identical attribute mappings or for non-intersecting attribute mappings. \par {\pntext\pard\plain\s42 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s42\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls11\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin360\itap0 {The use of the name table must be unified to ensure that two features or feature settings do not refer to the same entry in the name table. \par }\pard\plain \ql \li0\ri0\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Notice that the requirement that any tables declared in an external binary description override the corresponding font table in the font, means that a }{\cs35\f2\fs20\lang1024\langfe1024\noproof name}{ tab le in an external binary description must be complete, including all the strings from the original font. \par }\pard\plain \s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Changes \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {18 March 2003: Changed unicode field of PseudoMap class to ULONG. \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {22 July 2003: Added fields for critical features. \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {Sometime: Added pass constraints. \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {20 August 2003: Added Sile table; changed title to Graphite Table Format. \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {January 2004: Added justification levels. \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {10 February 2004: Added description of Feat table. \par {\pntext\pard\plain\s111 \f3\fs22 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s111\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls12\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} \aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin360\itap0 {31 January 2006: Added Sill table \par }}grcompiler-5.2.1/doc/GTF_4_0.pdf000066400000000000000000001431461411153030700162100ustar00rootroot00000000000000%PDF-1.5 % 67 0 obj <> endobj 72 0 obj <>/Filter/FlateDecode/ID[<269AB5B1040CF485AC82CEF371CBEC3D><595C7B7CB23DD54085163AE696049D7B>]/Index[67 19]/Info 66 0 R/Length 49/Prev 50388/Root 68 0 R/Size 86/Type/XRef/W[1 2 1]>>stream hbbd``b`$c`$~3012\I00Ag `F endstream endobj startxref 0 %%EOF 85 0 obj <>stream hb```f``eJ030pT(6`rh๣I*X^=Tin(рM-PFa#.va > endobj 69 0 obj <> endobj 70 0 obj <>stream hެmo0}>%/T!A[IkN!DBu~wv&Na|;;" "8#B(),@m +9H̽-򍍤⛫ ӻG .h7-?ϱXt c=_b5}Es$hNӨg֫6NL X5cEޥi$[ 5x˗骁 '=ɵǃ E'YtP-:`]rkgmAQNo8z@] )htZiDU%#:/iUGH޾?WgUF\qo]}rUup{jLtݵojQ msI7fͣ=ty5&ɎH, endstream endobj 71 0 obj <>stream hޜX[o#~#&sM&(BQXÑ؎*߱{!9lbEtxwmbn(+?TG*a盈v/7&tni6O`'}fN+ȨZ11JbTSMgoVYiwnZAnBqQzROK MWM&K.1鍢75oo2~X|WA'=}j_!&qgo- 'QLrkcb/,}2r@.JO:?pA\OHS0bheg[}۷`lN&<{:Ud?%5ڋwY[D8_S 1O-qpm~V+B@zF+{~PZ];S?fVoj|VANˣaw@>%7EG9Մ- F3Rl,!ee 9eNV f:5f%h4 ner q&Q3[9fV$FVA7TVphzֵ%vJn fhZpr0!N#`rn_\&=`Sa¹pF12(d|bc"l6iX}#ي]o&XeJv^$<t; L}޻*-ٻlY8E05Xg:Ű * sN Hx=4^˔0.|F1-EDo݁a*tC W{չUMx`:jXK aKA;:+@[ep< Չ6 J%9Z滏MekCnYKuһD,@hE}%,^ KEó2G`Ah 1I1P tD:#0SﵘHb6!cO@8Bz5XxQ,ֵ/'I&EY-x86h-b MoŅWuɏ$ sʢ.(;c9.Ɨ'9^p1md 1߀B:b̭jP6.FfyIͳc(1 yFt."\ 8%ХfDь85llt׈nR0ʕaGws{ޓuNcU+~5&2% תH;&*$\T`͗~{kY,ܮ$fcS~QgL5/PcZk3soiTȒұU'd$@d@cP=6==沃|zF!!-Bb7Nxw?l,LUCyQ$0?2vjJ}BoB?٫v8ٯuָN+k&ߌP,uEdmZPHQ-lhA1~鱚FF(˓O sk|J|!""&|n (mhMJDgY'gnJuӳ9+X_q4Y%bxʢ"WFo}Y@8ƿp՞֖k+Ts-=ftaV 3򽢊d< 'S Bd\y^œ=* sp¤^>7KuҴˏjt-t5N%*΍n輵ڷO6w5$NwHTgám>f []\,`9e$'I3Qm=O n_P%bHn{F.Uuݝ >OB.+v.wsp , 3NE-n%w+6w0dW-HJ6ͶQ 2=p2Ⱦ ZJx3YI:"|I|$yg%#2 ,rߘ3gDv{\A`<ⵈ E_ ݀qBV&qz7`>U endstream endobj 1 0 obj <> endobj 2 0 obj <>stream hYn}W#X\yހL!XLKȤCR3;?ͩn,  cI:_}A}V )W2\g(Wbp=owU Lؾ8iH]W>X m=+dRcW+F$oJBjD캵j)##$&9z g4&KDEPFYP ~,-U5aw>J+mğgC'GaC4l \PƁ%XYq70</VÊl9lL#hěc9f>$i^DlwDž MEb €Vv]֋>nt1p +QWwD?]݄ X0 dd CDuo QCWߞ"cN->A,@ ܀ĮmЊC5FI'tT~C6vz,p@hJ-"C_t,zY5Cx%L8q'b< sݑhCJc .8( 4QmnGci}~+ OW?uۄ I4ŊxDh҄V5BԻUs*Rm" cT󮺂)pR0 /2B(SvN('…46v`3#qSZsk3K38$=djs%dBZY=LA/i+$߱#:+9n.JNS_ϛoO|<,eXAy#(.FLヅ:1b3}uR(brkD]?-(@;Z(jF4~fu 6dXEITv꾠PR.׎g Cxf0r.e WAOSQOa!^FDF^F|F@A\x"e"b'FQ7v߬Y*29e9=Q2;h_&G_DVHkd穑G0"e8&)e_BRzz %ʯl[vg]?WY5 x9y[ѡUr(CH} _&++߷ \3gʃ^|nTvOwrWQ1 Q0A+XSzꮺ#Pp>͠wA{0ӭ?u@H\׶n(&/tgGM!LAޕ#G7(sf^C(9 "$g$h,X{wp<hq ?NV0xRw"nQtq61hP)\Xgadk_9"dž }R5[܆˶%j嵠vy(ѫ"bsW8O`%_CV(ka_2.Ƹւ6W-p}o1Hq[yT_ *|>>_ P Wa*Ae+AKKgL6ќӼ|-VUy:r=󎴦8j܊";k;;єi)PGEq ! LfjRky+SR0F~RLL *C\rH$f;O&:y~|2Hf>/PJuR: &Z#Ee"N<_r-7zݽ}r5e^PT`5ә߬qV1WP-Ap/'z[jiI=5>}+/J󥈧/篞(Y\v  {{W>W2 endstream endobj 3 0 obj <>stream h21S0Pw(q.I,I݃ MAvvny%@Cs H4Q02-,`SK\CR+Jb  endstream endobj 4 0 obj <> endobj 5 0 obj <>stream h޼Y[s۸~#ن q!HMgk6XLCKF\N6dxpp98|~qmsl&g O"g ]4Lxd.5EOطE5Ǝ_仐 }uO'H!u<1Ns>ɧ:SvgߑG%Ek zU~fWgW\,XɖkYuXv꠺eʰ~&7d &|[5vwiĤ kiS>t?kSlaL0ܰfbE#*O;ғ^7ڵ.7aySVѶޭ"=_VQy,z= ZRx.fg= U5,Z'S3Ok׻ f%B%I`I우$N5:Ӝ)EksFi%c\qg^HipIp~F쳩5qHB*`om,nAuj_$,Vq_@xbIvPTJ{fQdcRJ:~}~Ɩ!('ۤ[ynϋ0Ζ!"CjVc#nm #u;m[o"jqnM7Ļ;pܖB@T9]:  (m$wh/AVJz`K˛Uu^oo8`E͔ԒN-D}T\`Ȣl|HjxՏ#Bh%Vr٘.y#*yFE,mXsL^ڕm{A&jyڙC@Od;SL2F#Qb;@#mnP9)Mz@]5췝~ .Ɛ[>-y",傌]fJ8\+SE^IP𢄨󜥀e% 10CA d BAi4 l+wdB:8r@Na}@y(}2Bgd {s{ wGr˧@H5,]Ֆ몁JF(Ua_Vƅd(?&񞵂SP^_=#é&/oAy%9RDOjEnNZq?kiȰT@qĘDזFfUH[ja2͊QHꎈ{̂ٮQfG$(;SujŭmsKf&LQHtTgΡxpc@Qwa.=urnҎet~)k-:Luۮf.;GV}ʀz܀.)ܭA8'ke=1y ݑt:9qvT$VyX$E(O͟<$GtI9p|ܻ:Ɖ8uYFwD" irk|dg<'Bdp(P #Qmdp .A!Л¨Qi8yaA X>W¹)(cjBUL6OށAH# sJY2-"VekkFdbNVs G!p\OiI7)?}1PveH\Yどj"މnIќ~f9;M%CK8atbNهJQloޟO}}9;~svgr,jLRt̤cfޟF$ogd>D<K(71CWda9f7QPC}UT׭8cs]k(P\2x]h=\<}iw5bw (0ؚMH5eҟv-^YކmFCR]j <@ tiBFU+DٖL@\GRSmH?7r4wy F8%з:H1gB)H:`UI/{@t7ȧyl[þP ږt5zIw]!85l~QGW? bq:o~3 kւ<E2:*NDg^e< UR#Q}uh;ltT5Aq C)VD=I%Ch׫"(Nk+m toΦ]1ȇ&x㭋# >9g8{$40nQ>=..ؗ3llfg;}#X>stream h21W0Pw(q.I,I݃ MAvvny%@Cs3 m`fe)[@& 0Q  E%.n!%vv endstream endobj 7 0 obj <> endobj 8 0 obj <>stream hVKsF WHv;9Xt.h(E-Dv:=t<&wX⛫n]3y44,xWKh6Ko>Iu+. 0ι'9-DҹۧO!B>#ߴ@^u6P5dez4saa^|la Lx!2;RPTOfZRT]:٦fէkmߏ.d9yW || "y09&=g:褗yGIU>Sa曲8V0$sLY#%B9ͬ*AL#|pֺDxrq~4bh%{;| jmbCWf G`dƃq8mq1j–vV>F"߫y=-1Z䲞j*H;713KʁJ1B[$qhǴM81Kfw Ə3,YUGjYKL1C:BҾo8D]<L94&4/88c}9_,,OA8]PuRվlBU7la5* LXvLbl'P6g˥ l]k!Ӻ铺Gj,IMc{'Iuм1 ?gHvC]Cɋm7nc5ӫITgā-N(<8 $L'Kq0dJ׻%Kkg!/N΍:$ dV/(_ e3)B1)}Z=Owɷt4 3[-R& Ž^c$rG 06M endstream endobj 9 0 obj <>stream h2P0Pw(q.I,I݃ MAvvny%@#s DʴP (ON-pqI(0 endstream endobj 10 0 obj <> endobj 11 0 obj <>stream hY[s~ׯا 7}#ۑ'5It@$ѐYh;=]Dyҗ{ٳߞ˷G߾b]]|;)!lu!0D-DE$l?_.< e"(q|4M[7U_Y1ߖBn] AªƮ 2raU#QJpsSKf%_Z}03)wZBHp ev(]~0 ?ߖ{?L ^WS 5ϡ) ~.-Y g]sNr2 ,92/j%y30@ x;_~,&K d$m?0$|UMOZECL0F my:}SU&6``CIuu5>+?H-ʶ!4an60 Ax( /#hLҀѬ #8;u/K7(n4|~pb !.S0Hӧ:z/)!nc?!e6LO^X4}-b-! \JV,8UBc ,:籲@zK% ]p52-.u+ R[Y2Ci*i&fi|5tSj"ʜ/?O©D{P̛LD޻ag{# |Ba`|LH6Е!cz4bjŎATe@(`wo@UW0D|2ae"m T.6]s{S-[0tcDf0O*) v +nݕNZ-n Lif)lMFBeO"k-3=O)S:o\H2Hԯ)*1<*QV}ّp9p*>L07ѣ;xO)C $0Cb: 85'2՘jQeatAQ b#0IVtM$Nz)0? LT¦Sr[ #5v(gWŮ N8nR's#ܭ`,a#AoDY,6 37ڄ7ʞ$^-¦ШDT?"=Hu_T@ 0@|].:eݺ@?Eip(hZV=1Lt(dӻYap숬0x$Xu< 'D1eM 7O` W(+š:tGn&MastMSƁ%<0 mJz%L&dƐ-؁-Vvv)xuqVw#YLRc>r !^>ā`E.\[&оpIhe agXQ{mW85RS'c 9!X8Bu(?sf]9,eFpbo'6hneҔ8(ISo,MxJL 6xf+z$v ;qW\ X# sXS~#';"Е',٪T ]ׂ~şDZ#e`\6@4Rgq SBv/g1VYVP2&r.KTXKW`+&|z,%KGV ?!JREbW>^!O0 U&8?釙tm&NiS5یn QJS{&P'8'h>іֆ01SBd'4FJW@q6-=jڮG3y>HCJvѨꦙl SSBOY ='X.^t9 :RdtKd=P&zjU- #aR,:րc4 e0<F*-rS QwIײOub+S~t+?5N_Dc;o+C i.jңN87 !^T7Zmu;~˪%_Fgu~/!OHJZb)T:S2^/iŢm.BՑ,@^`?Xllgrϣ)nN6p%;hN7!{=Gφzj"I;W,mZ5&ڏTR+V +)=V8k|]U&6J,$g(|8bSsE[b¨A=#926r G32Z.Vt 0SjΞ1K:jk~2+KIbI/uU|nVƣ^*z]' v; n8) Z}{ $p yY͇ޱP/&ЎlŢ Ia37l)Ƌ訶&a8ɘ1 Y~4_Nvn endstream endobj 12 0 obj <>stream h2T0Pw(q.I,I݃ MAvvny%@Cs3 m`ne(X@ 0]E%.n!%vv endstream endobj 13 0 obj <> endobj 14 0 obj <>stream hYY۸~ׯ# iuxWvq8$C IyC{@Q쑇S>bϞgOs%f2 \DwE$(̕ogXf6Lb1Q87yѕ7⻦ۖ4VvUQVe22˵hVBv7 sSR#Eim*F~{'a~~yJoGCkv~R\6T2f'.&%zS(N^Rd+2eH $ M45+HP* 2E"dfbtmoK?Hkĺ4Tזlga.#n`! w yiY+pfG&3s?>\Aeq{0t:S ^9.Zf/RfHq=$ʒzǘRnv [?@w@ T[ #a?(rUIR(qeir.#R:iJ+E5|JC Y qiB)c\ӳd 2R(~ [gW}]=E^?U %$pLtA j%'Z)@~뚮ڭL fTN4̈́XW[JO[Z.\;vz;+k=;,QF@^C ܰVXwt׾RPJt+0,\=H+R4EN he6JG@<2PNl۪}_1fSL픓J`s;adVölEorn(o@56%ʧzKxLX Ho,jNJ;X %mcb =nʭ" ⶊ!WUQ' 7CGH4n~(V+F-@Ԛ^lt #`ڰ1n 5vRܷQ2qVn~Q"uX_]یh2ns!a]9 -]o †݇]-;@NF$GrHۺF -mhL@;-=[;v|ry9q?Ds)}o3f9ӤZIy9(!@:r?Efǵ}x3T_dյ~i{7e˅K|W<zԐ:YGs{uᗐ3EҬ]*.B(3HM=r3nj;li37 kvuN*OY"` Yirz~Z EM#ȍ3$KVRQt{sa VPL͛oZ\Rr>gV{^>j-"f'>`59>w8tyu34D`3pg5mkok>~?X7~gb kG?zA|Yg&@X&P 9uX񑟜 yT| `kLs #n=ra"uC~{B! ҇Mc5ab i?Q#COTb/Xh>stream h25P0Pw(q.I,I݃ MAvvny%@#s i`aeZ(XT'D釤V endstream endobj 16 0 obj <> endobj 17 0 obj <>stream hޜYٖF}GLaraӌd#Gu,G]EWaP(-!s#"ZIdq3KշW___핎"W1]寂gaAnp~ ,q{ՆU);EpRhtzxIZHórN~ i1^NB&ּC"<) 7*ǫQ>84۔o4 )dqA9,Ӹl@tOp:ʃcI0wPf}s`ݍ ^v4'IDtoCiiDﮯΚ(UV}uuKPFZ('gI!nTHjGX6ͭsq@ځhۃj7&ccP=(DI0j!99>k K&2! dNj4f ۺiM%܏*l<&h$^ъt.S^X< R"n(/]*`'&S›wBnty\H}oUUm;l'䕛~vy8F/n+q.ȦCsOe:Er\iG 0bKy4`Nȹt#CZEgs<,b,92v>zyOO(e)m~*%,9kY )zVK(VSC) ۽qnN_HѢbBpI>58DgՀ +A^̩@NY^q>R-qYJ\= *$ZD`5q`eH-+ <8KOBUY)bR'zU8,*; g-+ J^z,:~sלv|J!ؚ~RHu3m{ tJ 3Pf?ahѶacHC%ؔdg&N`a US"Eoo VAЁ\4,Mۭ gDp۫f ,X'DU/JiܑeS}+QLaH GBTkC"%\ ,7u[p&n7Uϻ{W H?;7UHؠL2wa&'G#@6>6`'eɅV'/D5١9@;dѠAqF6o!ɧ(xz9+#U$z{:ZGO9'&  H>YlN%bALE#yǗť > XjP&5עIV_n@G84FLoCdJO/-S-(%*u Tn"6ɩ.T+]+:$VD%UK /"e/fA_V!'ң_4k`dK䬕 ٣ S,ET{+zq6i)Dc蛹a[9#l*tva>ià,ֻLm(Gt#(Kgy.Y|GL|MnZRfupWSsk~K4i7+E^+H]Ƥ{aJRkV[8ҝ0˃9bghLYd]B%:H'H XNet*YQG,:v*#H%%s ewW4,0xk_m)VOs{vIQ s9%5#iGyG'ֺ(Q.<Ԥ8J0?y0ҁnhGYK3JL 6HP?,nLƚ2g0`c5) wfA/r=m endstream endobj 18 0 obj <>stream h25T0Pw(q.I,I݃ MAvvny%@#s i`aeZ(XT'D釤V endstream endobj 19 0 obj <> endobj 20 0 obj <>stream hޜYے6}#91$8쌲U[T#Q%R%!{ F3q\./ݧO7Ķxz"Ey&B<YdR,rE>\x_(b%/.0 3-wU_eq+xմ|U]2HaU$b[L4)72w%ƌLue$kOe>Oi;W m}W6jZ|gн/k?ǣ(׸ޝy*XFS糏%-͛{?x;>+_ ? =FfuLcqoHu<-_hكNN< ńyYD+e݋])vkz0Ū;U!d~I'_k?kIJHl۲;4P.? X$HU]]8Bsg[lBie[ZSH'y )fs`N%qH^$H+6n /ɡ?S͋ WMm0+M7Mh; ث|kڗˋ Fvf:HDdA KDxߖPݸ]h 0W{n[;ƃn6:&9Z'%(@aB1QC,tkݽ^ 0;;ETF"8̇d"D:1C)VN@g"HBE|C(QfB{O-U -[bʶiT[K~vF뀢f#D6̍hhnx58T7D5 _|!V +}l pÃO@,tE!)HԽQg互q򌲥v b::µe0L Jc*TJT5`#*Z0Wc-BDIRG̡jT2寧d07{ƶÁ%FI')I&e9MGn_34MGG ؛ꔝW1<} OuGHM>QaEvS^xT&~6ih-IO^9q p DD u)a.4R<ɴh %uX)N#%aI3ەH{/ sB.}k>;HF"Gޏ9{h,GMzHm&WG-צteQZdҏ>#N_Ea;rmTKhW܅h=RfٚXt'9 o~3l,RN"ipluY.OR㸑0t!iwoztm~h=T1/˛~VVϛuiֹ3C !|*@RkTQ~co"ً =.ʣo08%n evnKfyFnI9/i'n]9)$nlrT5g}J xse8cgjZyBű_g8&Gpe4r 1^jK++tXj"MWsxGCg;t/fLㆈIl2" yxO,HRhOx eAfGrU cM>CCc, [>BҺ#8={m#WM͏=c>݉/DKnRj`Ca8<;6`CǨϭo(7~ateѮ8c)z~m/WxPlf_7%? ƜS Kے>b&>*|>h׼V,V}#kfu;1UHj;ɑqYJd5ȀOZZyħ(*rZy4#Fw)HTzGhp{z}Wmz[E?iYyXI7Eg-*Z+M7SUĖE# BŦyӽ% 1&9/$o"*N\M'e`'!z.Dziwqx{I>stream h25R0Pw(q.I,I݃ MAvvny%@#s i`aeZ(XT'D釤VB endstream endobj 22 0 obj <> endobj 23 0 obj <>stream h޼Zrܸ}W*/ TjWfuYJQC #9Krd9o2ز] o@}tWRlgϗK%XϤe_|^rw \3GBz2 3㍤6/|-{-Miwy/QC3*dRFL4k!70~SIUBO(kU6Oҍt߻^p+^顡Vn"k!9[zYFSI'~ɿT_]a2z&\;ʗ4Bs 5cqw;g ^,"v@bb̋iDF0p5߈8$NC#88S_u{Qp*[Nyzx0̈*!y>o{P#M@eOxERNȽމUӶc.:ޚYi:|xZN}ؽDޕ8T(j(RZoݿ]DGgn@f0|ó@-}icʾׅ'{:!pwSQU 8C1r[Qv¼Õ{* tZ()T`VuJO{4[T8ᐋGAcIp(^t$//_vuK7A?V#ċрx)l*/BpJH9.v73 sidI`|G7QQ Ȏ}CEvZ"ʼn?N#zjw̵?g`xBή IV6.E^C)|NOsX>2VC0VpX!tf4` #hhqߋnɟ ?"=b]"횢\ c^Co1vA׭f$L(U wGPi @Ds?SD2hЎLa>b WfEj`452PtD)8veBfX+A, <Tbcxs!!>rM&1KV e~yĎS3f-H [/@ pgBTdzi-wj[Z@༅NKA)> |D0@NlTطM/V(1$IQ:N9f`L唄/lG )Yq1 ^&M[. [I逷q Ks zMn:=# ҅)bI(r) ,ߏ,F\Ű\_`(\0 Oz ֔a FXu5!P3G<#ĒbJ>"Dzo `25 )bF[S( Jz&d{@S_ v 4QkN +KЯJ8s' a?naym_Y; wP(nW湼37;\wmōYCwa(L{¬fh.K*UrT*_i^=I<GYwg<;E`," NL{4*dv` f΅a=+x?KS)l*kn{HiAmss…ZtŠ jVVDcܶƃf]'A Qi\T%V'Თu kь9ڬqMU n 7KhV쒷0Ie'0y`sEw5_ q7=no@K떁؀yМ#=R aDMþI7f xF #ksa50>^6j8Uߖf;[ژ;~촘$,7[5Mm:UmvI\NhѠ;s ݥ +^"q-Kwp_k*f<'o*1 ll!ɒFJT=i5 "gyW}r;l3Me>DwdyA5 U 'L EXi^5I6&ԕrQ\8w ԰@'#p܈(U?2#(=UsKA+ 10B)=[9Mx $M+Mh6$3>hV??=mxh vEH0W~o 0'B0 HR3A{PQ)Qpc)h<X/&s&s(Oq9/3  NJ'+N./)H,hc!us ,[|ucWz#f.9vfΗ _H{`&cf(. b裌g Ԟރ]2;gl<Z?9 2B@Hg[Mp CE`?Hz1 />@ξt@١" E: n2( ̀="2N\򛋥ʿPyӆez[&S!CWM_p i_ =jk^1IdlgfǀM=(( nͻj#3㫖q(W&ٱk,`^iFp1 ߖc ,-r(?ZPPZj'X-jKEY o i]O\f8MzK<%ފb +|~f%}!5T]A6k>stream h25V0Pw(q.I,I݃ MAvvny%@#s i`aeZ(XT'D釤V endstream endobj 25 0 obj <> endobj 26 0 obj <>stream hެZے}߯G !a/Γ-[T$Ir䐄 V{s{KJY zzrt~@oW7_V j{^+ɧWZjWkzyq $Z}w}o~hZ˦/{YU!"*bż.w f".4M350D̹Hy 0tȕ9ڽ.Nh^}g!.i%?,RY.ߨ#=%pNeU~K*#zWhptJD\wFwsdl^/WO/q]G6sj4yL mdqSu \:ڑao]T_< nG[I"Y)u.r' ֩[?hMXYLg=+cqY7My| cv~gO590%,)˛c|O} ţl`G}"#Xck|}Y=)f12׊w#).;-׶6Hoe ā0){11n<0HPSOJ`o])K\ߍC F!C-kɘPU 2 &̀J6wC*4 do؜r_ I*YDzPj} ms84V~'\ ۀN1EF D(#*&twc2f!ؐR#_b ˧YbWIf FNmY`&UB? .[v Ķ˃D(*VHpG 1EȅY/@/ `qRj"-g<@)Or]E9ّH:ա?bK-' #Lm'ƍ[v Zldk*|F4iumEu8AAPiIY؇rфI襱ӄX&l $_ ?3bP,Hnlȼi&+zϨ*I"a/]OK^CN!ڤx'pS(/8QWjh.;{T 0i'TOG,Qpj 98`#4F_рc,rRa /]ࠈ5*mJAq*A͗XX1c~JfA}>r(6v 3"Ƽ1v0d$8C w6ܶ%((r2|2Ho#6AYx; (K!yjW}C~.Ac$h7?N z&2XŊ`ϥ7՚cTIpz*[5&VHT~w/,e$ov"o`ϣ":ɋ!1W5UG5_ jy̫ Ϝ`KI8y؃ ?J/_6S/4d2> юqQ!f2 FF,-`yEԷ'QDuI.IpS+;H!na^D77gC:hD\FDm"6t Uy E_!ј6"4LYP 1\mMfeR Y:հza½:60 MSXAϾUz ggH,A ^,V諸X<]zBei]͇yQo1xdm̅޺wv Cb(a:o:v'gLrI?X\lla:mK$IK Ʊ(c o6CXhVD\ 9ve{f5#V_ dg,/2`O+Wу$UI9?u"욑rT MuT(/Kt{4̀uQb k 14n4T-yۣ^W[S"gL]]uyIR%ϋ$Tq)/;乁ҿ+uSq6vս0yie<٠"/_<{ }9fS' hPVp&G)/T'^^X70Kb"댐7\!$d13#,e|GcZtړi{f^b8:YQxp((@pL=Qh 3u湑4LYZ Ii~r2o!GI@7C)>zJg~uMӨ42]kq| 4ao)a@bhjF?`2fa(6LF/f!)5SM)aA|,悤1bxP6%4*"m6 "!S5YdR|:qfkBrF5C$>XKb~h31V43Dʍ~0*O%F>stream h25Q0Pw(q.I,I݃ AAvvny%@Cs3 m`ne(X@ 0]E%.n!%vv$ endstream endobj 28 0 obj <> endobj 29 0 obj <>stream hXے}߯G %B["Y]xJV~! hjJ*Jf=}9}}6P/Mg?y}^WߔQ7</H"ys>=|]WՠզZmw*[[A#"*d8hݫ 2S/Xf.eAR" #j'k:~w/w w?v*<N{~i7ǫ*wn;G~+Fۨ׳dQj^yWB+?AlATPn; |L}ïu99_7?ֲ'ͼs/K1N G޾W0q:E7]%^5zjYrohi?bLl~芪Ծ6# ]t׳WK_չ{u಻!JҐa"臾EY61ʁ(GYR9"9z$IӪ,]栠5Cի}{mfFz1޶fma:FxZµDPs]iAe9zT?VQEOT.;#1{ pK+v%u;o{{Mdue^5,NOK 7})> 0Ony2LtTir׫f['tu#8΃J|wClPrЬ'Pb]}hbcmYBJ'g^zĝSD}ʈ[bփdC$Lj\]4 ">9Z?n%굥w{oז>c!9RlHc)V O$` -W9_<\z% 9&W좝f4g:gR EkGo(QhAe$́Q`܁.̒82xK=Ża995`$!:$^EYarc~FTJN ->qa v EIڜBFB^;XE `qܡe'I5(^G*Km'H 3}\:Lt_w;ق̃qʄ`}O;LOs]xLn'/W(UHi$IlbV 7o'*FR_OWIYP67^-* `eCc(*u;cTaC,Oz|_sOJ]G:RH ىԉWj!,ϑR$6SX\XUM?oI2 ;>崕5ݚ75f<2ڭrnsP.IaM9f19Ve)qkS8VNI>U$k6 Kg$-)+e٘:{'v7aP낓ț?,Nee8C& X]ǤI1+1)`&`"aT$g> 4ҙHηhpD 2U#1 uƹR""285DN©P5V{eJc)GkdXk)nJIfc68h6iyܺJzL-+dIvY{|ĶYsC2-:$zL%3PuڡH'S-ܧ4xdΔ課W̺\cq=c3g3-"u3Y# % pAHfLh +.G9#șړ8`gjts:P6)^?q_y ?6В+hQ҅eZ"~lg嚜rDA/4wafK3EE.v=1|/]Qƈ,@k3bʞ #Qq`+CE BgQ 2Jedz*=;;4ʣY}2'~!?<}nfB~6,|L+E6Kn2vм@{`L)|׳9C9"^ܠ>~m6~\mh]Cb|‰u숇Qմ 0JX|MtVDOeP4 8ꚙ0Sk_cz~»L[ L:Q#7PMRdԨ/iW:(ǁzvC7`J= endstream endobj 30 0 obj <>stream h25U0Pw(q.I,I݃ MAvvny%@#s i`aeZ(XT'D釤V\ endstream endobj 31 0 obj <> endobj 32 0 obj <>stream hެYے}W#, `pSZrɒRI%$ Pt PZR0@O_Nw?Nmnx\*!rI\"?JDĥ"[\E ?pXfX>[INTw`IJ~!wC=bWvJՊ$%!6BSpDkr9eI$_U~fqa_a\ .ec#t|Ӵa[QۿkqUZ#~U J'HF2 T"y$~͊`_~J ٷE~XoKM.^k{QU'smRydֳ]Ӌxq:*J4»kNlXeYe#ěz8PϦmMeBdqU:"bg^oaT*8%70bh_]}W9]P]wOt'aNX Rq.bܘ=3ཏ; {0),İ[CnP~N̫*}fX^!0vl4z_Wz\<-c(A".)thī:0$xfpׯsj ɏpg%IWZ=!E¢,s*N"PJ)r]E)ʡăYlmJcUFwګp}FxATgPb=D/.uKaJvmX\k.yB|ّ;BVU197\qR;\.4o~|ڦTB`4%mF%HWÃ]5' R"?; fmQ`gJSȋ>OojGMP K&;p>c1(VO%A&w!43rR+%!'ϩi2i!ZwfOBI1z5Kw[컑 -[Ҥq)*> +_%],Pvk<`-:%sDŽ9xG|)YMzIǘ  nl0,(W N* z( BAAhuiQ`\nZ{5^䭹Ɛ{lFSPs>'{+O0-/FkVOx@Y+~r/MZk^]f 6 %Bހ{b^p}@{&f.sAGdQerU#5uLIʭ >PF jj\,*MefRE!լ%ӡT&7ўm:Y2,O]4K_j1sC`f4^7-)t4 'e=I I ľt?'B}vbyF^#YTr%2U^qXU<`uLH2X)s!:Aū ZG3]QcM/6}p%i}L2KCHN܊/ʲ_95~/W<˩_VA7Kʋ8;Kʖ*( SLps"`vܘ}|UɥX&4}0§=רutm[˙zqHڶνt<]OiWewy<$G;no2MY(m3pKog̶VFXCjG4t<Ф bV]7k"k"WN?&st1񑏻`M4L(14o,v^6h5*QB||h@"o~LGvOyT<5c1Lkq 4 7M_lC?Qq v+gCXzI7Abpn04⯨ki0&)̲ĉeawYY$G$W1 ,(rvts}kC_^>U`3޴! N3 endstream endobj 33 0 obj <>stream h25S0Pw(q.I,I݃ MAvvny%@#s i`aeZ(XT'D釤V endstream endobj 34 0 obj <> endobj 35 0 obj <>stream hXnF}W#YX wE4iuч5RK\wfg)Jh"D23g Fz8ayj@ru& , |TPAr{}y!^"pnoYum=4z3L,BnVM%9@FU_L8 @ٞs㐳!$iyy` ˣzzKJCI3"Tᰇ@LZ 2hm>}QYiC71[z>0'tٹ9BYWj)6! k:])?Ƽ^='t)u_A0ۀ4oF(1-Ձar z_<ʊc$ '';{`GC5j~u:W^StKIFSqWRM;|w;[N4? ?HmT?r~܆VKQHE63ɌOroD&$Pz5GELĶ]/cKwz&N0#'PG4∊.ǡ'pfeNDI={88ԚNb-3[ޝ`wl^fPtm8} ۩|<$&$\˾@8+QuHVԉ֝B0[_~}PޗF`%_oIB'QW#0/lҋ/x]טMiڏA1^b)>stream h25W0Pw(q.I,I݃ MAvvny%@Cs3 m`fe)[@& 0Q  E%.n!%vv endstream endobj 37 0 obj <>stream hj`@ 0@ endstream endobj 38 0 obj <>stream h8ktTE_U} sK΃$h!ivy` Y f`L;zYa|ngց茣zefU8*ݯnH\g9gn]W_Uݮ `ޟ%/" ʅj/IM*0Cۻ۶ˏH]CA>!:P|DӱK?@otuUUQMvoC3 uțW_Hwl 9t @V $ "H!w#FS(J*{]UxY %&'.YQލqx/(h|*rn(e2\3aD{ۡ?8(d k? (ӰHɐstf@;8xpԐNhl06ĝV]`l{>1<7خYD*I5YJȏ俨MbI,1/=$?4֨݇$Xx\I; v؉d b cN`Sg]+!9O VIdYM!d+9D^ QrB> BӕKTz^YV0'`/[)lTU0.`+⑱]C_6ƷF@?9ێo5pNԌ]Sʊw.\0Ғ"KaysrmgegefL6=5Ŕ4-1!>N2DQEN'y>US,)GOQT7F}<Ҋm߰NXZ'-I"٩Egjz#sPNJ9's\7tU`@ @QL)# IS | qKKkO(.zsFx%ޞpQ<~ WhUPo(%lT΍PQcaZi(_pAFhA",G؉oW!M\#Nއ,apab"4 +4l]A~!m>B"o1zԕPkX.@:2وx@h±ݘG?BN]*X-b;Q?a@i/Ni@_ 뱞6̵} ؿ98E< 0|ǭ"Zk  d.Kk>p 71[mvxմ06ja%\r 8wp|cm6Ovct8~+8xe*cP!" oF~ 90}K0 u_G:"؅%TO+AjUrĶ[;ڦ8"DvX!T04Hp 7 %-|Ba["ru8# =/`'"A u|&ZtSO0)yni\Ul+qnJWИ*Js/s1 )J-XYld8;0am ̷x-Gov1Y61_`oѬ8 )eXLתVU5W0UAMXysSr)vnlUgDp0#IqFȚfLkih5+>7\htFG;4JmxTuּf?pe .JFn7F>jAC. h[D bm@'c#(݋"޽{{(^wٺޭrSpkpK_XwY7twp7 nB~p :ÿzcV2ؑۂ4(-dt R]?dÑ7{aѶVdK#6A Ѕܺu;lCΏmv]BpSϤْ.ْ+9~\Դj鲔W<#[R endstream endobj 39 0 obj <>stream hTP=o0 +>stream h|k0<*CNکeP[ Mi#.-S`Oᄏ}0 32esd610Ct-j! wtDnteV+09#/mD)U7xN~wi0O}!6 J)1F##̖UbiiYF\g۵UoMQcXi1=B![te/0,섓F^g{ Cv1[B:='g7ei?%bMgq|J_L3w5x'^I4q `A endstream endobj 41 0 obj <>stream h23T0P03R0T+- bB.vv endstream endobj 42 0 obj <>stream application/pdf Microsoft Word - GTF_4_0.rtf correll 2015-07-15T11:00:03-05:00 PScript5.dll Version 5.2.2 2015-07-15T11:00:03-05:00 Acrobat Distiller 9.0.0 (Windows) uuid:f34961f1-e2df-4db6-9689-f805a769955c uuid:69083913-e72a-4db1-bb25-d4460c7b4bcc endstream endobj 43 0 obj <>stream h23V0P03Q01Q03U045Uw/+Q04L)(T~HeA~@bzjBT%X!3@(ce ԂĢTf`حb !;P endstream endobj 44 0 obj <>stream h|̱ 0WZMEXt.$@zؼA1tKgKP⢴emOK)%8I2.OLcm% Uu3^.QRP8# m~C2 0t@ endstream endobj 45 0 obj <>/Filter/FlateDecode/ID[<269AB5B1040CF485AC82CEF371CBEC3D><595C7B7CB23DD54085163AE696049D7B>]/Info 66 0 R/Length 146/Root 68 0 R/Size 67/Type/XRef/W[1 2 1]>>stream hbb&FW L @[$@\\k?L kɲAbm>Gt&X[`z܁0`Ye 7 HqXȼm>H<KFb&` endstream endobj startxref 116 %%EOF grcompiler-5.2.1/doc/GTF_4_0.rtf000066400000000000000000016735651411153030700162500ustar00rootroot00000000000000{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch40\stshfhich40\stshfbi40\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} {\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Arial Narrow;}{\f40\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times;} {\f41\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_215 LT 300 CN;}{\f42\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_700 BD 300 CN;} {\f43\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_565 SB 300 CN;}{\f44\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MyriaMM_400 RG 300 CN;} {\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f46\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\f47\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f49\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f50\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f51\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\f52\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f53\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f54\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f56\fbidi \fswiss\fcharset238\fprq2 Arial CE;} {\f57\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f59\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f60\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f61\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} {\f62\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f63\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f64\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f66\fbidi \fmodern\fcharset238\fprq1 Courier New CE;} {\f67\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f69\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f70\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f71\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);} {\f72\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f73\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f74\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f386\fbidi \froman\fcharset238\fprq2 Cambria Math CE;} {\f387\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f389\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f390\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f393\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;} {\f394\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f426\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f427\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f429\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;} {\f430\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f431\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f432\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f433\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;} {\f434\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f435\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f436\fbidi \fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f437\fbidi \fswiss\fcharset204\fprq2 Arial Narrow Cyr;} {\f439\fbidi \fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f440\fbidi \fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f443\fbidi \fswiss\fcharset186\fprq2 Arial Narrow Baltic;}{\f446\fbidi \froman\fcharset238\fprq2 Times CE;} {\f447\fbidi \froman\fcharset204\fprq2 Times Cyr;}{\f449\fbidi \froman\fcharset161\fprq2 Times Greek;}{\f450\fbidi \froman\fcharset162\fprq2 Times Tur;}{\f451\fbidi \froman\fcharset177\fprq2 Times (Hebrew);} {\f452\fbidi \froman\fcharset178\fprq2 Times (Arabic);}{\f453\fbidi \froman\fcharset186\fprq2 Times Baltic;}{\f454\fbidi \froman\fcharset163\fprq2 Times (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;} {\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} {\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} {\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; \red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192; \cbackgroundone\ctint255\cshade255\red255\green255\blue255;\red255\green255\blue255;}{\*\defchp \f40\fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{ \ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal,n;}{ \s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat heading 1,h1;}{\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon1 \snext0 \slink16 \sqformat heading 2,h2;}{\s3\ql \li0\ri0\sb80\sa80\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink17 \sqformat heading 3,h3;}{ \s4\ql \li0\ri0\sb60\sa60\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink18 \sqformat heading 4,h4;}{\s5\ql \li0\ri0\sb60\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink19 \sqformat heading 5,h5;}{\s6\ql \li0\ri0\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink20 \sqformat heading 6,h6;}{ \s7\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink21 \sqformat heading 7;}{\s8\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink22 \sqformat heading 8;}{\s9\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\i\f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink23 \sqformat heading 9;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af40\afs22\alang1025 \ltrch\fcs0 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\kerning32\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char,h1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af0\afs28 \ltrch\fcs0 \b\i\fs28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink2 \slocked \ssemihidden \spriority9 Heading 2 Char,h2 Char;}{\*\cs17 \additive \rtlch\fcs1 \ab\af0\afs26 \ltrch\fcs0 \b\fs26\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Heading 3 Char,h3 Char;}{\*\cs18 \additive \rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0 \b\fs28\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink4 \slocked \ssemihidden \spriority9 Heading 4 Char,h4 Char;}{\*\cs19 \additive \rtlch\fcs1 \ab\ai\af0\afs26 \ltrch\fcs0 \b\i\fs26\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink5 \slocked \ssemihidden \spriority9 Heading 5 Char,h5 Char;}{\*\cs20 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink6 \slocked \ssemihidden \spriority9 Heading 6 Char,h6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \fs24\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink7 \slocked \ssemihidden \spriority9 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \ai\af0\afs24 \ltrch\fcs0 \i\fs24\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink8 \slocked \ssemihidden \spriority9 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink9 \slocked \ssemihidden \spriority9 Heading 9 Char;}{\s24\ql \li0\ri0\sa120\widctlpar \tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 \slink25 footer;}{\*\cs25 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink24 \slocked \ssemihidden Footer Char;}{\s26\ql \li0\ri0\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 \slink27 header;}{\*\cs27 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink26 \slocked \ssemihidden Header Char;}{\*\cs28 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s29\ql \li0\ri0\sb600\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Paper Title,pt;}{\s30\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon29 \snext30 Paper Subtitle,ps;}{\s31\ql \li0\ri0\sb240\sa1200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext31 Author,au;}{\s32\ql \fi-360\li360\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 Biblio Entry,be;}{\s33\ql \li360\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 Source Code,sc;}{\s34\ql \li720\ri720\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin720\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 Abstract Text,at;}{\s35\ql \li720\ri0\sb80\sa80\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon3 \snext35 Abstract Heading,ah;}{\s36\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f39\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 Table Header,th;}{\*\cs37 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\f1\fs20\expnd-2\expndtw-10 \sbasedon10 Keyword,kw;}{\s38\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext38 Table Entry,te;}{\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Table Caption,tc;}{\s40\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 \slink41 Body Text;}{\*\cs41 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink40 \slocked \ssemihidden Body Text Char;}{ \s42\ql \fi-144\li144\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext42 \slink43 \ssemihidden footnote text,ft;}{\*\cs43 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink42 \slocked \ssemihidden Footnote Text Char,ft Char;}{\*\cs44 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \fs16 \sbasedon10 Keystroke,ks;}{\*\cs45 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{\s46\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f41\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon39 \snext46 Figure Caption,fc;}{\s47\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext47 tcTable 3:Gloc;}{\*\cs48 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20\lang1024\langfe1024\noproof \sbasedon10 Code;}{\*\cs49 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f41\fs18 \sbasedon10 Comment Code,cc;}{\s50\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f42\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 1,a1;}{\s51\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f43\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon50 \snext0 Appendix 2,a2;}{\s52\ql \li0\ri0\sb80\sa80\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f44\fs24\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 3,a3;}{ \s53\ql \li0\ri0\sb60\sa60\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f44\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 4,a4;}{\s54\ql \li0\ri0\sb60\sa60\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\f44\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Appendix 5,a5;}{\s55\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls31\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext55 \sautoupd List Bullet 3;}{ \s56\ql \li1440\ri1440\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin1440\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext56 Block Text;}{ \s57\ql \li0\ri0\sa120\sl480\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext57 \slink58 Body Text 2;} {\*\cs58 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink57 \slocked \ssemihidden Body Text 2 Char;}{\s59\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext59 \slink60 Body Text 3;}{\*\cs60 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \f0\fs16 \sbasedon10 \slink59 \slocked \ssemihidden Body Text 3 Char;}{ \s61\ql \fi210\li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon40 \snext61 \slink62 Body Text First Indent;}{\*\cs62 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon41 \slink61 \slocked \ssemihidden Body Text First Indent Char;}{ \s63\ql \li283\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext63 \slink64 Body Text Indent;}{\* \cs64 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink63 \slocked \ssemihidden Body Text Indent Char;}{\s65\ql \fi210\li283\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon63 \snext65 \slink66 Body Text First Indent 2;}{\*\cs66 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon64 \slink65 \slocked \ssemihidden Body Text First Indent 2 Char;}{\s67\ql \li283\ri0\sa120\sl480\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext67 \slink68 Body Text Indent 2;}{\*\cs68 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink67 \slocked \ssemihidden Body Text Indent 2 Char;}{ \s69\ql \li283\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext69 \slink70 Body Text Indent 3;}{\* \cs70 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \f0\fs16 \sbasedon10 \slink69 \slocked \ssemihidden Body Text Indent 3 Char;}{\s71\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sqformat caption;}{\s72\ql \li4252\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin4252\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext72 \slink73 Closing;}{\*\cs73 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink72 \slocked \ssemihidden Closing Char;}{ \s74\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext74 \slink75 \ssemihidden annotation text;}{\*\cs75 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink74 \slocked \ssemihidden Comment Text Char;}{\s76\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink77 Date;}{\*\cs77 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink76 \slocked \ssemihidden Date Char;}{ \s78\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f38\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext78 \slink79 \ssemihidden Document Map;}{\*\cs79 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink78 \slocked \ssemihidden Document Map Char;}{\s80\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext80 \slink81 \ssemihidden endnote text;}{\*\cs81 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink80 \slocked \ssemihidden Endnote Text Char;}{\s82\ql \li2880\ri0\sa120\widctlpar\phpg\posxc\posyb\absh-1980\absw7920\dxfrtext180\dfrmtxtx180\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext82 envelope address;}{\s83\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext83 envelope return;}{\s84\ql \fi-220\li220\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 1;}{\s85\ql \fi-220\li440\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 2;}{\s86\ql \fi-220\li660\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin660\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 3;}{\s87\ql \fi-220\li880\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin880\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 4;}{ \s88\ql \fi-220\li1100\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1100\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 5;}{\s89\ql \fi-220\li1320\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1320\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 6;}{\s90\ql \fi-220\li1540\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1540\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 7;}{\s91\ql \fi-220\li1760\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1760\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 8;}{\s92\ql \fi-220\li1980\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1980\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 9;}{\s93\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext84 \ssemihidden index heading;}{\s94\ql \fi-283\li283\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext94 List;}{\s95\ql \fi-283\li566\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin566\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext95 List 2;}{\s96\ql \fi-283\li849\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin849\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext96 List 3;}{\s97\ql \fi-283\li1132\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1132\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext97 List 4;}{\s98\ql \fi-283\li1415\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1415\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext98 List 5;}{\s99\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx926\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext99 \sautoupd List Bullet;}{\s100\ql \fi-360\li643\ri0\sa120\widctlpar \jclisttab\tx643\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin643\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext100 \sautoupd List Bullet 2;}{\s101\ql \fi-360\li1209\ri0\sa120\widctlpar\jclisttab\tx1209\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1209\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext101 \sautoupd List Bullet 4;}{\s102\ql \fi-360\li1492\ri0\sa120\widctlpar\jclisttab\tx1209\jclisttab\tx1492\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1492\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext102 \sautoupd List Bullet 5;}{ \s103\ql \li283\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin283\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext103 List Continue;}{ \s104\ql \li566\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin566\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext104 List Continue 2;}{ \s105\ql \li849\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin849\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext105 List Continue 3;}{ \s106\ql \li1132\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1132\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext106 List Continue 4;}{ \s107\ql \li1415\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1415\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext107 List Continue 5;}{ \s108\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\jclisttab\tx1492\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext108 List Number;}{\s109\ql \fi-360\li643\ri0\sa120\widctlpar\jclisttab\tx643\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin643\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext109 List Number 2;}{\s110\ql \fi-360\li926\ri0\sa120\widctlpar \jclisttab\tx643\jclisttab\tx926\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls7\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin926\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext110 List Number 3;}{\s111\ql \fi-360\li1209\ri0\sa120\widctlpar\jclisttab\tx926\jclisttab\tx1209\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls8\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin1209\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext111 List Number 4;}{\s112\ql \fi-360\li1492\ri0\sa120\widctlpar\jclisttab\tx1209\jclisttab\tx1492\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls9\pnrnot0 \pndec }\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin1492\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext112 List Number 5;}{\s113\ql \li0\ri0\sa120\widctlpar \tx480\tx960\tx1440\tx1920\tx2400\tx2880\tx3360\tx3840\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext113 \slink114 \ssemihidden macro;}{\*\cs114 \additive \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20 \sbasedon10 \slink113 \slocked \ssemihidden Macro Text Char;}{\s115\ql \fi-1134\li1134\ri0\sa120\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrl \brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \brdrr\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1134\itap0 \shading2000 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext115 \slink116 Message Header;}{\*\cs116 \additive \rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \fs24\loch\f31502\hich\af31502\dbch\af31501\chshdng2000\chcfpat0\chcbpat0 \sbasedon10 \slink115 \slocked \ssemihidden Message Header Char;}{\s117\ql \li720\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext117 Normal Indent;}{\s118\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink119 Note Heading;}{\*\cs119 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink118 \slocked \ssemihidden Note Heading Char;}{ \s120\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext120 \slink121 Plain Text;}{\*\cs121 \additive \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20 \sbasedon10 \slink120 \slocked \ssemihidden Plain Text Char;}{\s122\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink123 Salutation;}{\*\cs123 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink122 \slocked \ssemihidden Salutation Char;}{ \s124\ql \li4252\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin4252\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext124 \slink125 Signature;}{\* \cs125 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20 \sbasedon10 \slink124 \slocked \ssemihidden Signature Char;}{\s126\qc \li0\ri0\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext126 \slink127 \sqformat Subtitle;}{\*\cs127 \additive \rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \fs24\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink126 \slocked \spriority11 Subtitle Char;}{\s128\ql \fi-220\li220\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden table of authorities;}{\s129\ql \fi-440\li440\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden table of figures;}{\s130\qc \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext130 \slink131 \sqformat Title;}{\*\cs131 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\kerning28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink130 \slocked \spriority10 Title Char;}{\s132\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toa heading;}{\s133\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 1;}{\s134\ql \li220\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin220\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 2;}{\s135\ql \li440\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 3;}{\s136\ql \li660\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin660\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 4;}{\s137\ql \li880\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin880\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 5;}{\s138\ql \li1100\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1100\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 6;}{\s139\ql \li1320\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1320\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 7;}{\s140\ql \li1540\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1540\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 8;}{\s141\ql \li1760\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1760\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 9;}{\*\cs142 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 \sqformat Strong;}{\s143\ql \fi-360\li360\ri0\widctlpar \jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls32\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext143 Bulleted;}{\s144\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \f38\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext144 \slink145 \ssemihidden \sunhideused \styrsid2364889 Balloon Text;}{\*\cs145 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink144 \slocked \ssemihidden \styrsid2364889 Balloon Text Char;}}{\*\listtable {\list\listtemplateid-40190668\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listname ;}\listid-132}{\list\listtemplateid1170765034\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1209\jclisttab\tx1209\lin1209 }{\listname ;}\listid-131}{\list\listtemplateid-1805609770\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;} \rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li926\jclisttab\tx926\lin926 }{\listname ;}\listid-130}{\list\listtemplateid-1343214118\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li643\jclisttab\tx643\lin643 }{\listname ;}\listid-129}{\list\listtemplateid2006244112\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1492\jclisttab\tx1492\lin1492 }{\listname ;}\listid-128}{\list\listtemplateid-301538812\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1209\jclisttab\tx1209\lin1209 }{\listname ;}\listid-127}{\list\listtemplateid717405742\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li926\jclisttab\tx926\lin926 }{\listname ;}\listid-126}{\list\listtemplateid1585493990\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listname ;}\listid-125}{\list\listtemplateid-1785797310\listsimple{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-120}{\list\listtemplateid-1445294268\listsimple {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}{\list\listtemplateid1711320122 \listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s55\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid610631568} {\list\listtemplateid286416242\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s143\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid1329862447}}{\*\listoverridetable{\listoverride\listid-126\listoverridecount0\ls1}{\listoverride\listid-119\listoverridecount0\ls2}{\listoverride\listid-125\listoverridecount0\ls3}{\listoverride\listid-127\listoverridecount0\ls4} {\listoverride\listid-128\listoverridecount0\ls5}{\listoverride\listid-120\listoverridecount0\ls6}{\listoverride\listid-129\listoverridecount0\ls7}{\listoverride\listid-130\listoverridecount0\ls8}{\listoverride\listid-131\listoverridecount0\ls9} {\listoverride\listid-132\listoverridecount0\ls10}{\listoverride\listid-126\listoverridecount0\ls11}{\listoverride\listid-119\listoverridecount0\ls12}{\listoverride\listid-125\listoverridecount0\ls13}{\listoverride\listid-127\listoverridecount0\ls14} {\listoverride\listid-128\listoverridecount0\ls15}{\listoverride\listid-120\listoverridecount0\ls16}{\listoverride\listid-129\listoverridecount0\ls17}{\listoverride\listid-130\listoverridecount0\ls18}{\listoverride\listid-131\listoverridecount0\ls19} {\listoverride\listid-132\listoverridecount0\ls20}{\listoverride\listid-126\listoverridecount0\ls21}{\listoverride\listid-119\listoverridecount0\ls22}{\listoverride\listid-125\listoverridecount0\ls23}{\listoverride\listid-127\listoverridecount0\ls24} {\listoverride\listid-128\listoverridecount0\ls25}{\listoverride\listid-120\listoverridecount0\ls26}{\listoverride\listid-129\listoverridecount0\ls27}{\listoverride\listid-130\listoverridecount0\ls28}{\listoverride\listid-131\listoverridecount0\ls29} {\listoverride\listid-120\listoverridecount0\ls30}{\listoverride\listid610631568\listoverridecount0\ls31}{\listoverride\listid1329862447\listoverridecount0\ls32}}{\*\rsidtbl \rsid863979\rsid931261\rsid1058130\rsid1594230\rsid1655265\rsid1790771 \rsid1993036\rsid2254629\rsid2364889\rsid2713393\rsid3411248\rsid3605846\rsid3625743\rsid4407675\rsid4487515\rsid4786275\rsid4797137\rsid5136423\rsid5776889\rsid5976049\rsid6187003\rsid6432599\rsid6975368\rsid7085171\rsid7109090\rsid7157042\rsid7212815 \rsid7230240\rsid7280133\rsid7288591\rsid7405882\rsid7481612\rsid7890842\rsid7955135\rsid8406352\rsid8609422\rsid8659703\rsid8679648\rsid8914439\rsid9246579\rsid10431475\rsid11014532\rsid11014827\rsid11146318\rsid11273434\rsid11339172\rsid11352306 \rsid11355067\rsid11484265\rsid11746841\rsid12022155\rsid12064948\rsid12086518\rsid12399207\rsid13054952\rsid13123157\rsid13200532\rsid13260766\rsid13313217\rsid13506629\rsid13567547\rsid13794810\rsid14629061\rsid15104849\rsid15944935\rsid15953680 \rsid16194802\rsid16609537}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title Graphite Table Format}{\subject Extending TrueType for Graphite} {\author Martin Hosken and Sharon Correll}{\operator DNS O2K10 Lic.#1044 - Correll}{\creatim\yr2012\mo5\dy31\hr16\min13}{\revtim\yr2015\mo7\dy15\hr11}{\printim\yr2015\mo7\dy15\hr10\min59}{\version42}{\edmins1279}{\nofpages13}{\nofwords3930} {\nofchars22403}{\*\company SIL}{\nofcharsws26281}{\vern49167}}{\*\userprops {\propname Version}\proptype30{\staticval 1.1}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} \paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect \deftab360\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1 \noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\fracwidth\psover\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0 \jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl\nojkernpunct\rsidroot8679648 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup12{\*\template E:\\Program Files\\Microsoft Office\\Templates\\NRSI\\NRSI Standard Template (T).dot}{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11146318 \chftnsep \par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11146318 \chftnsepc \par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11146318 \chftnsep \par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11146318 \chftnsepc \par }}\ltrpar \sectd \ltrsect\linex0\footery936\endnhere\sectdefaultcl\sftnbj {\footerr \ltrpar \pard\plain \ltrpar\s24\ql \li0\ri0\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5136423 \line }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5136423 Title}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10431475 Graphite Table Format}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5136423 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\b\insrsid5136423 Page }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\b\insrsid5136423 PAGE }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\b\lang1024\langfe1024\noproof\insrsid10431475 9}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\b\insrsid5136423 of } {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\b\insrsid5136423 NUMPAGES}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\b\lang1024\langfe1024\noproof\insrsid10431475 13}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5136423 \par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid5136423 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\lang1024\langfe1024\noproof\insrsid10431475 Martin Hosken and Sharon Correll}}}\sectd \ltrsect \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid5136423 }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\fs12\insrsid5136423 PRINTDATE \\@ "MMMM DD, yyyy"}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\fs12\lang1024\langfe1024\noproof\insrsid10431475 July 15, 2015}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\fs12\insrsid5136423 Rev: }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\fs12\insrsid5136423 REVNUM}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\fs12\lang1024\langfe1024\noproof\insrsid10431475 41}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \fs12\insrsid5136423 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s29\ql \li0\ri0\sb600\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 TITLE}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Graphite Table Format}}}\sectd \ltrsect\linex0\footery936\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \par }\pard\plain \ltrpar\s30\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs34\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 SUBJECT}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Extending TrueType for Graphite}}}\sectd \ltrsect\linex0\footery936\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \par }\pard \ltrpar\s30\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1790771 Version 4}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \par }\pard\plain \ltrpar\s31\ql \li0\ri0\sb240\sa1200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Author }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid12086518 Martin Hosken and Sharon Correll}}}\sectd \ltrsect\linex0\footery936\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 ,\line SIL Non-Roman Script Initiative (NRSI) \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Introduction \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The Graphite font table format is structured in order that a Graphite binary description may be incorporated into a TrueType font. Thus the binary format uses the TrueType table structure, identically to how it is used in a TrueType font. The only differe n ce between using an external file containing Graphite binary information in tables, and inserting the binary information into tables in the font is that tables are considered local to their file and are considered to override those found in the font file. This allows there to be multiple, independent descriptions held in separate files. Those independent descriptions would have to be merged, in a way described in this document, if they were to be held together in the same font file or binary file. \par The description consists of a set of table descriptions. The format of a file follows that of a TrueType font containing only those tables pertinent to the description (i.e. for a separate binary description, those tables listed here). \par As is standard for all TrueType tables, the data is in big-endian format (most significant byte first). \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Version \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 This file describes version }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13567547 4}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 .0 of the Graphite font table specification. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2254629 Modifications from previous versions are indicated in the \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15944935 V}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2254629 ersion notes\'94 column of the various table}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 s}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2254629 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Tables \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 This document describes several additional TrueType table types. The \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Silf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 and \'93}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Sile}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 tables are unique to the needs of Graphite, whilst \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Gloc}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 and \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 provide an extended glyph attribute mechanism. The \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Feat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 table is based very closely on the GX \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 feat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 table. (If necessary the tables could be restructured to be stored inside the single \'93}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Silf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 table.) In addition, use is made of the \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 table type. \par \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Glat \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table type is used for storing glyph attributes. Each gly ph may be considered to have a sparse array of, at the most, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8914439 65536}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 16-bit signed attributes. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table is the mechanism by which they are stored. \par The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table consists of a table header and an array of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat_entry}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 items: \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid8609422\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx8736\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7280133 Type\cell Name\cell Description\cell }\pard \ltrpar \s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7280133 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7280133 ersion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7280133 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid8609422\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx8736\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid8609422\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth1308\clcbpatraw17 \cellx1200\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth1200\clcbpatraw17 \cellx2400\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth2880\clcbpatraw17 \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth3456\clcbpatraw17 \cellx8736\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133\charrsid7230240 FIXED\cell version\cell Table version: 00020000\cell 4.0 \endash changed from 0001000 to 00020000\cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7280133 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid8609422\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth1308\clcbpatraw17 \cellx1200\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth1200\clcbpatraw17 \cellx2400\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth2880\clcbpatraw17 \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \clcbpat17\cltxlrtb\clftsWidth3\clwWidth3456\clcbpatraw17 \cellx8736\row \ltrrow}\trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid8609422\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx8736\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133 Glat_entry[]\cell entries\cell Glyph attribute entries\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7280133 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid8609422\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx8736\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 1: Glat \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The glyph attributes associated with a particular glyph are identified by number and value. To conserve space, this storage is run-length encoded. Thus a glyph will have a series of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat_entrys}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 corresponding to each non-contiguous set of attributes. The structure of a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat_entry}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 is: \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7280133 Type\cell Name\cell Description\cell }\pard \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid15944935 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 Ve}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7280133 rsion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7280133 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133\charrsid7230240 SHORT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \highlight4\insrsid7280133\charrsid13567547 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133 attNum\cell Attribute number of first attribute\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7230240 4.0 \endash changed from BYTE to SHORT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7280133 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\row \ltrrow}\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133\charrsid7230240 SHORT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \highlight4\insrsid7280133\charrsid13567547 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133 num\cell Number of attributes in this run\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7230240 4.0 \endash changed from BYTE to SHORT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7280133 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\row \ltrrow }\trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133 SHORT\cell attributes[ ]\cell Array of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid7280133 num}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7280133 attributes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7280133 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11014827\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8914439 1a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 : Glat_entry \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Notice that all glyph attributes are 16-bit signed values. If a 32-bit value is required, then two attributes should be assigned and joined together by the application. \par Attribute numbers are application specific. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2713393 Note that i}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8914439 f the font does not require more than 256 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16194802 glyph }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8914439 attributes, version 1 of the Glat table will be generated, which }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4786275 is }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8914439 defined as follows. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7085171 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11273434 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11273434 ersion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11273434 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7085171 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434\charrsid8914439 FIXED\cell version\cell Table version: 00010000\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11273434 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\row \ltrrow }\trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7085171 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434 Glat_entry[]\cell entries\cell Glyph attribute entries\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11273434 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2400 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3168\clshdrawnil \cellx8448\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8914439 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8914439 Table 2: Glat version 1 \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7085171 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11273434 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11273434 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11273434 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl \brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400 \pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7085171 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434 BYTE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434\charrsid8914439 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434 attNum\cell Attribute number of first attribute\cell \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11273434 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400\row \ltrrow }\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7085171 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434 BYTE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434\charrsid8914439 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434 num\cell Number of attributes in this run\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11273434 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400\row \ltrrow }\trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7085171 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434 SHORT\cell attributes[ ]\cell Array of }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid11273434 num}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11273434 attributes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11273434 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid13260766\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2160 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx5280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3120\clshdrawnil \cellx8400\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8914439 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8914439 Table 2a: Glat_entry, version 1 \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Gloc \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Gloc}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table is used to index the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table. It is structured identically to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 loca}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table type, except that it has a header. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3411248 TODO: add a field indicating the number of glyphs in the table (the current dependence on the Silf table is not architecturally clean).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13200532 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3411248 \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7212815 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7212815 \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 FIXED\cell version\cell Table version: 00010000\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\row \ltrrow }\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell flags\cell bit 0 = 1 for Long format, = 0 for short format\line bit 1 = 1 for attribute names, = 0 for stripped\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell numAttribs\cell Number of attributes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT/ULONG\cell locations[ ]\cell Offsets into }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid7212815 Glat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 table for each glyph; (number of glyph IDs + 1) of these\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\row \ltrrow }\trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell attribIds[ ]\cell Debug id for each attribute\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8892\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx2880 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4050\clshdrawnil \cellx6930\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1854\clshdrawnil \cellx8784\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 3: Gloc \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 flags}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 entry contains a bit to indicate whether the locations array is of type }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 USHORT}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 ULONG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 . The locations array is identically structured to that of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 loca}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table. There is one entry per glyph and an extra entry to identify the length of the final glyph\rquote s attribute entries. Offsets are given to a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat_entry}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Glat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table. The second bit indicates whether there is an }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 attribIds}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 array at the end of this table. If there is, then it contains }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 IDs for each attribute. If this bit is not set, then there is no array and the table ends after the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 locations}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 array. \par NOTE: as of version 2 of the Silf table, the values of the breakweight attribute are interpreted as follows: \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 BREAK_WHITESPACE = 10 \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 BREAK_WORD = 15 \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 BREAK_INTRA = 20 \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 BREAK_LETTER = 30 \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 BREAK_CLIP = 40 \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Feat \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Graphite stores features in a table whose format is very similar to the GX }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 feat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table. This makes reference to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table which is use for storing feature names and feature value names. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7212815 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7212815 \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815\charrsid13567547 FIXED\cell version\cell Table version: 00020000\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 3.0 \endash changed from 00010000 to 00020000}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\row \ltrrow }\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell numFeat\cell Number of features\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell reserved\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 ULONG\cell reserved\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 FeatureDefn\cell features[ ]\cell Array of numFeat features\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\row \ltrrow }\trowd \irow6\irowband6\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 Feature\-SettingDefn\cell featSettings[ ]\cell Array of feature setting values, indexed by offset\cell \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow6\irowband6\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8844\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7212815\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1788\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx3120 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx6576\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8736\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 4: Feat \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13794810 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13794810 \par \par \par \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13794810\charrsid13794810 \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7212815 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7212815 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815\charrsid13567547 ULONG\cell id\cell Feature ID number\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 3.0 \endash added }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815\charrsid13567547 \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\row \ltrrow}\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell numSettings\cell Number of settings\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\row \ltrrow}\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815\charrsid13567547 USHORT\cell reserved\cell \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 3.0 \endash inserted}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\row \ltrrow}\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 ULONG \cell offset\cell Offset into featSettings list\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\row \ltrrow}\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell flags\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\row \ltrrow }\trowd \irow6\irowband6\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7212815 USHORT\cell label\cell Index into name table for UI label\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7212815 \trowd \irow6\irowband6\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3240\clshdrawnil \cellx5760\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8712\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 5: FeatureDefn \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11339172\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5832\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11339172 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11339172 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11339172 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11339172\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5832\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx8712\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11339172\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5832\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx8712\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11339172 SHORT\cell value\cell Feature setting value\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11339172 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11339172\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5832\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx8712\row \ltrrow }\trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11339172\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5832\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11339172 USHORT\cell label\cell Index into name table for UI label\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11339172 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11339172\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx2520 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5832\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2880\clshdrawnil \cellx8712\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 6: FeatureSettingDefn \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \page Silf \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The \'93}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Silf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \'94 table will be used for storing rules and actions for the various types of tables in a rendering description. The structure of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 Silf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table is: \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid8406352 Type\cell Name\cell Description\cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid16609537 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid8406352 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid8406352 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352 FIXED\cell version\cell Table version: 00030000\cell 2.0 \endash changed to 00020000;\line 3.0 \endash changed to 00030000\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid8406352 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\row \ltrrow }\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352\charrsid13567547 FIXED\cell compilerVersion\cell Actual version of the compiler that generated this font\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352 3.0 \endash added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid8406352 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352 USHORT\cell numSub\cell Number of SIL subtables\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid8406352 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352 USHORT\cell reserved\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \highlight7\insrsid8406352 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid8406352 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352 ULONG\cell offset[ ]\cell Array of numSub offsets to the subtables relative to the start of this table\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid8406352 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\row \ltrrow }\trowd \irow6\irowband6\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid8406352 SIL_Sub\cell tables[ ]\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8406352 Array of independent rendering description subtables\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid8406352 \trowd \irow6\irowband6\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid7157042\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2520 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3456\clshdrawnil \cellx5976\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2736\clshdrawnil \cellx8712\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 7: Silf \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Since one TrueType file may hold multiple independent rendering descriptions, each rendering description is described in a subtable. The subtable contains all that is necessary to describe the rendering of one set of writing systems. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7157042 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7157042 \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 FIXED\cell ruleVersion\cell Version of stack-machine language used in rules\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 3.0 \endash added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 USHORT\cell passOffset\cell offset of oPasses[0] relative to start of sub-table\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 3.0 \endash added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 USHORT\cell pseudosOffset\cell offset of pMaps[0] relative to start of sub-table\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 3.0 \endash added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell maxGlyphID\cell Maximum valid glyph ID (including line-break & pseudo-glyphs)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 SHORT\cell extraAscent\cell Em-units to be added to the font\rquote s ascent\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 SHORT\cell extraDescent\cell Em-units to be added to the font\rquote s descent\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell numPasses\cell Number of rendering description passes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\trowd \irow8\irowband8\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE \cell iSubst\cell Index of first substitution pass\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow8\irowband8\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell iPos\cell Index of first Positioning pass\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow9\irowband9\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell iJust\cell Index of first Justification pass\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow10\irowband10\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell iBidi\cell Index of first pass after the bidi pass(must be <= iPos); 0xFF implies no bidi pass\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow11\irowband11\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 BYTE\cell flags\cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid3625743 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 Bit 0: True (1) if there is any start-, end-, or cross-line contextualization}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3625743 \line Bit 1: True (1) if cross-line contextualization can be ignored for optimization}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3411248 Bits 2-4: space contextual flags \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1993036 Bit 5: collision pass present}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1993036\charrsid13567547 \cell }\pard \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3625743 4.0 \endash added Bit 1}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1993036 5.0 \endash added Bit 5}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow12\irowband12\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell maxPreContext\cell Max range for preceding cross-line-boundary contextualization\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow13\irowband13\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell maxPostContext\cell Max range for following cross-line-boundary contextualization\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow14\irowband14\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell attrPsuedo\cell Glyph attribute number that is used for actual glyph ID for a pseudo glyph\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow15\irowband15\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell attrBreakWeight\cell Glyph attribute number of breakweight attribute\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow16\irowband16\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell attrDirectionality\cell Glyph attribute number for directionality attribute\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow17\irowband17\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746841 attrMirroring}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746841 Glyph attribute number for mirror.glyph (mirror.isEncoded directly after)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid7157042 \cell 2.0 \endash added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746841 ;\line 4.0 \endash used}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042\charrsid7157042 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow18\irowband18\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15104849 attrSkipPasses}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 \cell }\pard \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid12399207 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12399207 Glyph attribute of b}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15104849 itmap indicating key glyphs for pass optimization}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 \cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 2.0 \endash added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11746841 ;\line 4.0 \endash used}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow19\irowband19\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell numJLevels\cell Number of justification levels; 0 if no justification\cell 2.0 \endash added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow20\irowband20\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 Justification-Level\cell jLevels[ ]\cell Justification information for each level.\cell 2.0 \endash added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow21\irowband21\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell numLigComp\cell Number of initial glyph attributes that represent ligature components\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow22\irowband22\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang3079\langfe1033\langnp3079\insrsid7157042 BYTE\cell numUserDefn\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 Number of user-defined slot attributes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow23\irowband23\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell maxCompPerLig\cell Maximum number of components per ligature\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow24\irowband24\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell direction\cell Supported direction(s)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow25\irowband25\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15104849 reserved}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 \cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow26\irowband26\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell reserved\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow27\irowband27\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell reserved\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow28\irowband28\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell reserved\cell \cell 2.0 \endash added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow29\irowband29\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell numCritFeatures\cell Number of critical features\cell 2.0 \endash added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow30\irowband30\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell critFeatures[ ]\cell Array of critical features\cell 2.0 \endash added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow31\irowband31\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 BYTE\cell reserved\cell \cell 2.0 \endash added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow32\irowband32\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang3079\langfe1033\langnp3079\insrsid7157042 BYTE\cell numScriptTag\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 Number of scripts this subtable supports\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow33\irowband33\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang3079\langfe1033\langnp3079\insrsid7157042 ULONG\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 scriptTag[ ]\cell Array of numScriptTag script tags\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow34\irowband34\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell lbGID\cell Glyph ID for line-break psuedo-glyph\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow35\irowband35\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 ULONG\cell oPasses[ ]\cell Offets to passes relative to the start of this subtable; numPasses + 1 of these\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow36\irowband36\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell numPseudo\cell Number of Unicode -> pseudo-glyph mappings\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow37\irowband37\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell searchPseudo\cell (max power of 2 <= numPseudo) * sizeof(PseudoMap)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow38\irowband38\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell pseudoSelector\cell log}{\rtlch\fcs1 \af0 \ltrch\fcs0 \sub\insrsid7157042 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 (max power of 2<= numPseudo)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow39\irowband39\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 USHORT\cell pseudoShift\cell numPseudo - searchPseudo\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow40\irowband40\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 PseudoMap\cell pMaps[ ]\cell Mappings between Unicode and pseudo-glyphs in order of Unicode\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow41\irowband41\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 ClassMap\cell classes\cell Classes object storing replacement classes used in actions\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow42\irowband42\ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688 \row \ltrrow}\trowd \irow43\irowband43\lastrow \ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid7157042 SIL_Pass\cell passes[ ]\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7157042 Array of passes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid7157042 \trowd \irow43\irowband43\lastrow \ltrrow\ts11\trgaph108\trleft-120\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8808\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid1058130\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind-12\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1200\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1560\clshdrawnil \cellx2640 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4464\clshdrawnil \cellx7104\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1584\clshdrawnil \cellx8688\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 8: SIL_Sub \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Each justification level has several glyph attributes associated with it. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1058130 This structure was new as of version 2.0. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE\cell attrStretch\cell Glyph attribute number for justify.X.stretch\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712 \row \ltrrow}\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE \cell attrShrink\cell Glyph attribute number for justify.X.shrink\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE\cell attrStep\cell Glyph attribute number for justify.X.step\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE\cell attrWeight\cell Glyph attribute number for justify.X.weight\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE\cell runto\cell Which level starts the next stage\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE\cell reserved\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE\cell reserved\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\row \ltrrow }\trowd \irow8\irowband8\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 BYTE\cell reserved\cell \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow8\irowband8\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth828\clshdrawnil \cellx720\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx1800 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx6408\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2304\clshdrawnil \cellx8712\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 9: JustificationLevel \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 A pseudo-glyph is a glyph which contains no font metrics (it has a GID greater than the numGlyphs entry in the maxp table) but is used in the rendering process. Each pseudo-glyph has an attribute which is the glyph ID of a real glyph which will be used to actually render the glyph. The pseudo-glyph map contains a mapping between Un icode and pseudo-glyph number: \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11352306\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1188\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth960\clshdrawnil \cellx2040\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3024\clshdrawnil \cellx5064\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3600\clshdrawnil \cellx8664\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11352306 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11352306 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11352306 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11352306\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1188\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth960\clshdrawnil \cellx2040\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3024\clshdrawnil \cellx5064\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3600\clshdrawnil \cellx8664\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11352306\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1188\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth960\clshdrawnil \cellx2040\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3024\clshdrawnil \cellx5064\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3600\clshdrawnil \cellx8664\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11352306 ULONG\cell unicode\cell Unicode codepoint\cell 2.0 \endash changed from USHORT to ULONG \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11352306 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11352306\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1188\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth960\clshdrawnil \cellx2040\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3024\clshdrawnil \cellx5064\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3600\clshdrawnil \cellx8664\row \ltrrow }\trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11352306\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1188\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth960\clshdrawnil \cellx2040\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3024\clshdrawnil \cellx5064\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3600\clshdrawnil \cellx8664\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11352306 USHORT\cell nPseudo\cell Glyph ID of pseudo-glyph\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11352306 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11352306\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1188\clshdrawnil \cellx1080\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth960\clshdrawnil \cellx2040\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3024\clshdrawnil \cellx5064\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3600\clshdrawnil \cellx8664\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 10: PseudoMap \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The ClassMap stores the replacement class information for the passes in this description. Replacement classes are used during substitution where a glyph id is looked up in one class and the glyph ID at the corresponding index in another class is substitut e d. The difficulty with the storage of such classes is in looking up a glyph ID in an arbitrarily ordered list. One approach is to use a linear search; this is very slow, but is stored very simply. Another approach is to order the glyphs in the class and t o store the index against the glyph. Both approaches are supported in the ClassMap table structure: \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell numClass\cell Number of replacement classes\cell \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt \clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\row \ltrrow}\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell numLinear\cell Number of linearly stored replacement classes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell oClass[ ]\cell Array of numClass + 1 offsets to class arrays from the beginning of the class map\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell glyphs[ ]\cell Glyphs for linear classes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\row \ltrrow }\trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 LookupClass\cell lookups[ ]\cell An array of numClass \endash numLinear lookups\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8868\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1308\clshdrawnil \cellx1200\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1080\clshdrawnil \cellx2280 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth5010\clshdrawnil \cellx7290\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1470\clshdrawnil \cellx8760\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 11: ClassMap \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The LookupClass stores a fast lookup association between glyph ID and index. Each lookup consists of an ordered list of glyph IDs with the corresponding index for that glyph. The number of elements in the lookup is specified by numIds along with a search Range and shift to initialize a fast binary search engine: \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell numIDs\cell Number of elements in the lookup\cell \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt \clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\row \ltrrow}\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell searchRange\cell (max power of 2<= numIDs) * 4\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell entrySelector\cell log}{\rtlch\fcs1 \af0 \ltrch\fcs0 \sub\insrsid16609537 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 (max power of 2<= numIDs)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell rangeShift\cell numIds*4 \endash searchRange\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\row \ltrrow }\trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 LookupPair\cell lookups[ ]\cell lookups; there are numIDs of these\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1127\clshdrawnil \cellx1019\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1422\clshdrawnil \cellx2441 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3312\clshdrawnil \cellx5753\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2016\clshdrawnil \cellx7769\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 12: LookupClass \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Each element in the lookup consists of a glyphId and the corresponding index in the original ordered list. \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7288591 \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1067\clshdrawnil \cellx959\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1007\clshdrawnil \cellx1966\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4604\clshdrawnil \cellx6570\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1732\clshdrawnil \cellx8302\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 Type\cell Name\cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1067\clshdrawnil \cellx959\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1007\clshdrawnil \cellx1966\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4604\clshdrawnil \cellx6570\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1732\clshdrawnil \cellx8302\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1067\clshdrawnil \cellx959\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1007\clshdrawnil \cellx1966\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4604\clshdrawnil \cellx6570\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1732\clshdrawnil \cellx8302\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell glyphId\cell glyph id to be compared\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1067\clshdrawnil \cellx959\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1007\clshdrawnil \cellx1966\clvertalt \clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4604\clshdrawnil \cellx6570\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1732\clshdrawnil \cellx8302\row \ltrrow}\trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1067\clshdrawnil \cellx959\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1007\clshdrawnil \cellx1966 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4604\clshdrawnil \cellx6570\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1732\clshdrawnil \cellx8302\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 USHORT\cell index\cell index corresponding to this glyph id in ordered list\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1067\clshdrawnil \cellx959\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1007\clshdrawnil \cellx1966 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4604\clshdrawnil \cellx6570\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1732\clshdrawnil \cellx8302\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 13:LookupPair \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb80\sa80\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Pass \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Each processing pass consists of a finite state machine description for rule finding, and the actions that are executed when a rule is matched. \par \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7955135 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7955135 ersion notes\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell flags\cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid1594230 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1594230 Bits 0-2 = collisionFix; bits 3-4 - autoKern}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1594230 5.0 - added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell maxRuleLoop\cell MaxRuleLoop for this pass\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell maxRuleContext\cell Number of slots of input needed to run this pass\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell maxBackup\cell Number of slots by which the following pass needs to trail this pass (ie, the maximum this pass is allowed to back up)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell numRules\cell Number of action code blocks\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1993036\charrsid13567547 \cell \cell \cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7955135 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1993036 5.0 \endash added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1993036 \trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135\charrsid13567547 USHORT\cell fsmOffset\cell offset to numRows relative to the beginning of the SIL_Pass block\cell }\pard \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid7955135 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 2.0 \endash inserted ; 3.0 \endash use for fsmOffset}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 ULONG\cell pcCode\cell Offset to start of pass constraint code from start of subtable (*passConstraints[0]*)\cell 2.0 - added\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow8\irowband8\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 ULONG\cell rcCode\cell Offset to start of rule constraint code from start of subtable (*ruleConstraints[0]*)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow9\irowband9\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 ULONG\cell aCode\cell Offset to start of action code relative to start of subtable (*actions[0]*)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow10\irowband10\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 ULONG\cell oDebug\cell Offset to debug arrays (*dActions[0]*); equals 0 if debug stripped\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow11\irowband11\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell numRows\cell Number of FSM states\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow12\irowband12\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell numTransitional\cell Number of transitional states in the FSM (length of *states* matrix)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow13\irowband13\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell numSuccess\cell Number of success states in the FSM (size of *oRuleMap* array)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow14\irowband14\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell numColumns\cell Number of FSM columns\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow15\irowband15\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell numRange\cell Number of contiguous glyph ID ranges which map to columns\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow16\irowband16\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell searchRange\cell (maximum power of 2 <= numRange)*sizeof(Pass_Range)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow17\irowband17\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell entrySelector\cell log}{\rtlch\fcs1 \af0 \ltrch\fcs0 \sub\insrsid7955135 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 (maximum power of 2 <= numRange)\cell \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow18\irowband18\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell rangeShift\cell numRange*sizeof(Pass_Range)-searchRange\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow19\irowband19\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 Pass_Range\cell ranges[ ]\cell Ranges of glyph IDs for this FSM; *numRange* of these\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow20\irowband20\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell oRuleMap[ ]\cell Maps from success state to offset into ruleMap array from start of array. First item corresponds to state # (numRows \endash numSuccess); ie, non-success states are omitted. [0xFFFF implies rule nu mber is equal to state number (i.e. no entry in ruleMap) \endash NOT IMPLEMENTED]\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow21\irowband21\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell ruleMap[ ]\cell Array of rule numbers corresponding to an success state number\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow22\irowband22\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\trowd \irow23\irowband23\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE \cell minRulePreContext\cell Minimum number of items in any rule\rquote s context before the first modified rule item\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow23\irowband23\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell maxRulePreContext\cell Maximum number of items in any rule\rquote s context before the first modified rule item\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow24\irowband24\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\trowd \irow25\irowband25\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 SHORT \cell startStates[ ]\cell Array of size (maxRulePreContext \endash minRulePreContext + 1), indicating the start state in the state machine based on how many pre-context items a rule has\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow25\irowband25\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell ruleSortKeys[ ]\cell Array of *numRules* sort keys, indicating precedence of rules\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow26\irowband26\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell rulePreContext[ ]\cell Array of *numRules* items indicating the number of items in the context before the first modified item, one for each rule\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow27\irowband27\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6432599 collisionThreshold}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6432599 Minimum movement perceived as such by the collision fixing algorithm}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11355067 2.0 \endash inserted}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6432599 , 5.0 \endash used }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow28\irowband28\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell pConstraint\cell Length of passConstraint block\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11355067 2.0 \endash added }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow29\irowband29\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell oConstraints[ ]\cell numRules + 1 offsets to constraint code blocks relative to *rcCode* and start of subtable\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow30\irowband30\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell oActions[ ]\cell numRules + 1 offsets to action code blocks relative to *aCode* and start of subtable\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow31\irowband31\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell stateTrans[ ][ ]\cell Array of *numTransitional* rows of *numColumns* state transitions.\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow32\irowband32\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell reserved\cell \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11355067 2.0 \endash inserted}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow33\irowband33\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell passConstraints[ ]\cell Sequences of constraint code for pass-level constraints\cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11355067 2.0 \endash added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow34\irowband34\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell ruleConstraints[ ]\cell Sequences of constraint code for rules\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow35\irowband35\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 BYTE\cell actions[ ]\cell Sequences of action code\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow36\irowband36\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell dActions[ ]\cell Name index for each action for documentation purposes. 0 = stripped}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs45\super\insrsid7955135 \chftn {\footnote \ltrpar \pard\plain \ltrpar \s42\ql \fi-144\li144\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin144\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs45\super\insrsid7955135 \chftn }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 Should debug tables go at the end, and be marked via a flag as per Gloc?}}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 . numRules of these\cell \cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow37\irowband37\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell dStates[ ]\cell Name index for each intermediateFSM row/state for debugging. 0 = stripped. Corresponds to the last numRows \endash numRules\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow38\irowband38\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row \ltrrow }\trowd \irow39\irowband39\lastrow \ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7955135 USHORT\cell dCols[ ]\cell Name index for each state (numRows of these)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid11355067 \trowd \irow39\irowband39\lastrow \ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9102\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid11355067\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx2964 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4608\clshdrawnil \cellx7572\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1440\clshdrawnil \cellx9012\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 14: SIL_Pass \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Notice that the ranges array has fast lookup information on the front to allow for the quick identification of which range a particular glyph id is in. Each range consists of the first and last glyph id in the range. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid12086518 Type\cell Name\cell Description\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 USHORT\cell firstId\cell First Glyph id in the range\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow1\irowband1\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\row \ltrrow}\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 USHORT\cell lastId\cell Last Glyph id in the range\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow2\irowband2\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\row \ltrrow}\trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 USHORT\cell colId\cell Column index for this range\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1068\clshdrawnil \cellx960\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth720\clshdrawnil \cellx1680\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2587\clshdrawnil \cellx4267\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 15: Pass_Range \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb80\sa80\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Pass Contents \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 A pass contains a Finite State Machine (FSM) which is used to match input strings to rules. It also contains constraints for further testing whether a matched string should fire, and it contains the action code to execute against the matched string. \par The FSM consists of a set of states. A state consists of a row of transitions between that state and another state dependent upon the next glyph in the input stream. Each state may be an acceptance state, in which case it corre sponds to a rule match, or a transition state, in which case the state is on the way to matching a rule, or both. A null state transition is one in which the occurrence of this particular class of the following glyph, will result in no extension of a rul e match anywhere, just fail on all further searching. A final state is one in which all its transitions are null transitions. \par Note that the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 stateTrans}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 array only needs to represent transitional states, not final states. Similarly, the }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 oRuleMap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 array only ne eds entries for acceptance states (whether final or transitional). For this reason the FSM is set up (conceptually) in the following order: transitional non-accepting states first, followed by transitional accepting states, followed by final (accepting) s tates. \par Note also that because there may be more than one matched rule for a given state, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 oRuleMap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 indicates a list of rule indices in the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 ruleMap}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 array; }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 oRuleMap[i+1] \endash oRuleMap[i]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 indicates how many there are for state i. \par Normally the start state for an FSM is zero. But for each pass there is the idea of a \'93pre-context,\'94 that is, there are slots that need to be taken into consideration in the rule-matching process that are before the current position of the input stream. If we are very near the beginning of the input, we may need to adjust by skipping some states, which corresponds to skipping the \'93pre-context\'94 slots that not present due to being prior to the beginning of the input. This is what the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 maxRulePreContext}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 minRulePreContext}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 , and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 startStates}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 items are used for. Specifically, we need to skip the number of transitions equal to the difference between the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 maxRulePreContext}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 and the current stream position, if greater than zero. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 startStates}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 array indicates what the adjusted start state should be. If the current input position is less than }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 minRulePreContext}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 , no rule will match at all. \par Rules are matched in order of length, so that longest rules are given precedence over shorter rules. However, the length of some rules may have been adjusted to allow for a consistent \'93pre-context\'94 for all rules, so the number of matched states in the FSM may not correspond to the actual number of matched items in the rule. For this reason, it is not adequate to simply order rules based o n the number of traversed states in the FSM. Rather, rules are given sort keys indicating their precedence, which is based primarily on the length of the rule and secondarily on its original position within the source code. \par The FSM engine keeps track of al l the acceptance states it passes through on its path to a final state. This results in a list of rules matched by the string sorted by precedence. The engine takes the first rule index off the list and looks up the offset to some constraint code. This co d e is executed and if the constraint passes, then the action code associated with that offset is executed and the FSM restarts at the returned slot position. If the constraint fails, then the FSM considers the next-preferred rule, tests that constraint, an d so forth. If no accepting state is found or all rules fail their constraints, then no rule applies, in which case a single glyph is put into the output stream and the current position advances by one slot. \par The action strings are simply byte strings of actions, much like hinting code, but using a completely different language. (See \'93Stack Machine Commands.doc\'94.) \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Sile \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 This table is used in Graphite table files that rely on an external font for rendering of the glyphs. When this table is present, the Graphite file is in effect a minimal font that contains information about the actual font to use in rendering. This information is stored in the Sile table. \par This table }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7109090 was added a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 s of version 2.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537 It is not currently being used.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \par \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid12086518 Type\cell Name\cell Description\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 FIXED\cell version\cell Table version: 00010000\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow1\irowband1\ltrrow \ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 ULONG\cell checksum\cell master checksum (checkSumAdjustment) from the head table of the base font\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 ULONG\cell createTime[2]\cell Create time of the base font (64-bits) from the head table\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow3\irowband3\ltrrow \ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 ULONG\cell modifyTime[2]\cell Modify time of the base font (64-bits) from the head table\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 USHORT\cell fontNameLength\cell Number of characters in fontName\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow5\irowband5\ltrrow \ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt \clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 USHORT\cell fontName[ ]\cell Family name of base font\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow6\irowband6\ltrrow \ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt \clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 USHORT\cell fontFileLength\cell Number of characters in baseFile\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row \ltrrow}\trowd \irow8\irowband8\lastrow \ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 USHORT\cell baseFile[ ]\cell Original path and name of base font file\cell }\pard\plain \ltrpar \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \trowd \irow8\irowband8\lastrow \ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth9360\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1326\clshdrawnil \cellx1236\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1824\clshdrawnil \cellx3060\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth6210\clshdrawnil \cellx9270\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 16: Sile \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 There are four possible situations with regard to the Sile table. The first two are considered normal and the second two pathological. \par {\pntext\pard\plain\ltrpar \s108 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid12086518 \hich\af0\dbch\af0\loch\f0 1.\tab}}\pard\plain \ltrpar\s108\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls30\pnrnot0 \pndec\pnstart1\pnindent360\pnsp120\pnhang {\pntxta .}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin360\itap0\pararsid863979 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 No Sile table is present. In this case, it is assumed that the Graphite table file is a normal font containing not only the Graphite tables but also the glyphs and metrics needed for rendering. \par {\pntext\pard\plain\ltrpar \s108 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid12086518 \hich\af0\dbch\af0\loch\f0 2.\tab}}\pard \ltrpar\s108\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls30\pnrnot0 \pndec\pnstart1\pnindent360\pnsp120\pnhang {\pntxta .}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin360\itap0\pararsid863979 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The base font named in the Sile table is present on the sy stem, and its master checksum and dates match those in the Sile table. In this case, the Graphite tables are read from the Graphite table file, but the glyphs, metrics, and cmap from the base font are what are used for rendering (with the modification per formed by the Graphite tables). \par {\pntext\pard\plain\ltrpar \s108 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid12086518 \hich\af0\dbch\af0\loch\f0 3.\tab}}\pard \ltrpar\s108\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls30\pnrnot0 \pndec\pnstart1\pnindent360\pnsp120\pnhang {\pntxta .}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin360\itap0\pararsid863979 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The base font named in the Sile table is present, but its master checksum and/or dates do not match those in the Sile table. In this case the base font is used to perform the rendering, but with no Graphite behaviors. \par {\pntext\pard\plain\ltrpar \s108 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs22\insrsid12086518 \hich\af0\dbch\af0\loch\f0 4.\tab}}\pard \ltrpar\s108\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls30\pnrnot0 \pndec\pnstart1\pnindent360\pnsp120\pnhang {\pntxta .}}\aspalpha\aspnum\faauto\ls30\adjustright\rin0\lin360\itap0\pararsid863979 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The base font named in the Sile table is not present on the system. In this case the Graphite table file is used for the rendering, with no Graphite behaviors, resulting in square boxes in place of the expected glyphs. \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518\charrsid13567547 Sill}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 This table maps ISO-639-3 language codes onto feature values. Each language code can be a maxmum of 4 ASCII characters (although 2 or 3 characters is what is used by the ISO standard). \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7481612 This table was added}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 as of version 3. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537\charrsid13567547 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt \brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448 \pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 FIXED\cell version\cell Table version: 00010000\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\row \ltrrow }\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 USHORT\cell numLangs\cell Number of languages supported\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 USHORT\cell searchRange\cell (maximum power of 2 <= numLangs)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt \brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 USHORT\cell entrySelector\cell log}{\rtlch\fcs1 \af0 \ltrch\fcs0 \sub\insrsid16609537\charrsid13567547 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 (maximum power of 2 <= numLangs)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrnone \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\row \ltrrow }\trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 USHORT\cell rangeShift\cell numLangs - searchRange\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt \brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448 \row \ltrrow}\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 LanguageEntry\cell entries[ ]\cell Languages and pointers to feature settings; there are numLang + 1 of these\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\row \ltrrow }\trowd \irow7\irowband7\lastrow \ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 LangFeatureSetting\cell settings[ ]\cell Feature ID / value pairs\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow7\irowband7\lastrow \ltrrow\ts11\trgaph108\trleft-90\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8538\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid15944935\tbllkborder\tbllkshading\tbllkbestfit\tbllkhdrrows\tbllkhdrcols\tblind18\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1890\clshdrawnil \cellx1800\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1320\clshdrawnil \cellx3120 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth3630\clshdrawnil \cellx6750\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1698\clshdrawnil \cellx8448\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 17: Sill \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Each language entry contains a 4-character language code and an offset to the list of features. There is one bogus entry at the end that facilitates finding the size of the last entry. The offsets are relative to the beginning of the Sill table. \par The language code is left-aligned with any unused characters padded with NULLs. For instance, the code \'93en\'94 is represented by the four bytes [101, 110, 0, 0]. \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537\charrsid13567547 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{ \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 BYTE\cell langcode[4]\cell 4-char ISO-639-3 language code\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\row \ltrrow }\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 USHORT\cell numSettings\cell Number of feature settings for this language\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\row \ltrrow }\trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 USHORT\cell offset\cell Offset to first feature setting for this language\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8628\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4080\clshdrawnil \cellx6360\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth2160\clshdrawnil \cellx8520\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 18: LanguageEntry \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537\charrsid13567547 Type\cell Name\cell Description\cell }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid15944935 V}{ \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537 ersion notes}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid16609537\charrsid13567547 \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1 \widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrs\brdrw30\brdrcf15 \clbrdrl\brdrtbl \clbrdrb \brdrs\brdrw15\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 ULONG\cell featureId\cell Feature identifer number (matches ID in Feat table)\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb \brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\row \ltrrow }\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\pard\plain \ltrpar \s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 SHORT\cell value\cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 Default feature value for this language\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\row \ltrrow }\trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\pard\plain \ltrpar\s38\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 USHORT\cell reserved\cell }\pard \ltrpar\s38\ql \li0\ri0\sb40\sa40\keepn\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16609537\charrsid13567547 Pad bytes\cell \cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs18\insrsid16609537 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw30\brdrcf15 \trbrdrb\brdrs\brdrw30\brdrcf15 \trftsWidth3\trwWidth8676\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblrsid16609537\tbllkborder\tbllkbestfit\tbllkhdrrows\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr \brdrtbl \cltxlrtb\clftsWidth3\clwWidth1000\clshdrawnil \cellx892\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1388\clshdrawnil \cellx2280\clvertalt\clbrdrt\brdrtbl \clbrdrl \brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4560\clshdrawnil \cellx6840\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrs\brdrw30\brdrcf15 \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth1728\clshdrawnil \cellx8568\row }\pard\plain \ltrpar\s39\ql \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Table 19: LangFeatureSetting \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Sild \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 This table holds the debug strings for debugging purposes. Since the strings are only used for debugging, they are held somewhat optimised fo r space over speed and are not considered to be multilingual. Thus strings are considered to be 7-bit ASCII, with a possible extension to UTF-8 at a later stage. The table consists of a sequence of strings each preceded by a length byte. The first string is id 0 and so on to the end of the table. \par NOTE: this table has not been implemented. \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Multiple Descriptions \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 In the case where multiple descriptions are to be stored in the same set of tables, the following unifications need to occur: \par {\pntext\pard\plain\ltrpar \s55 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s55\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The feature sets must be unified, thus limiting two features with the same name to having the same settings and corresponding values. \par {\pntext\pard\plain\ltrpar \s55 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s55\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The glyph attributes must be unified. This can be done by using different attribute number ranges, or by examining for identical attribute mappings or for non-intersecting attribute mappings. \par {\pntext\pard\plain\ltrpar \s55 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s55\ql \fi-360\li360\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls31\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls31\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 The use of the name table must be unified to ensure that two features or feature settings do not refer to the same entry in the name table. \par }\pard\plain \ltrpar\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Notice that the requirement that any tables declared in an external binary description override the corresponding font table in the font, means that a }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs48\f2\fs20\lang1024\langfe1024\noproof\insrsid12086518 name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 table in an external binary description must be complete, including all the strings from the original font. \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb360\sa120\keep\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Changes \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 18 March 2003: Changed unicode field of PseudoMap class to ULONG. \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 22 July 2003: Added fields for critical features. \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 Sometime: Added pass constraints. \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 20 August 2003: Added Sile table; changed title to Graphite Table Format. \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 January 2004: Added justification levels. \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 10 February 2004: Added description of Feat table. \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid12086518 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12086518 31 January 2006: Added Sill table \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid13567547 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13567547 25 February 2011: Added version 2.0 of Glat table \par {\pntext\pard\plain\ltrpar \s143 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f3\fs22\insrsid6187003 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s143\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls32\pnrnot0 \pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls32\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6187003 31 May 2012: Added version annotations \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b 4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b 4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210030dd4329a8060000a41b0000160000007468656d652f7468656d652f 7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87 615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad 79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b 5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab 999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9 699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586 8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6 0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f 9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be 15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979 3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d 32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86 e877f0034e16bafb0e258ebb4faf06b769e888340b103d331115bebc4eb813bf83291b63624a0d1475a756c734f9bbc2cd28546ecbe1e20a3794ca175f3fae90 fb6d2dd99bb07b55e5ccf68942bd0877b23c77b908e8db5f9db7f024d9239010f35bd4bbe2fcae387bfff9e2bc289f2fbe24cfaa301468dd8bd846dbb4ddf1c2 ae7b4c191ba8292337a469bc25ec3d411f06f53a73e224c5292c8de0516732307070a1c0660d125c7d44553488700a4d7bddd3444299910e254ab984c3a219ae a4adf1d0f82b7bd46cea4388ad1c12ab5d1ed8e1153d9c9f350a3246aad01c6873462b9ac05999ad5cc988826eafc3acae853a33b7ba11cd1445875ba1b236b1 399483c90bd560b0b0263435085a21b0f22a9cf9356b38ec6046026d77eba3dc2dc60b17e92219e180643ed27acffba86e9c94c7ca9c225a0f1b0cfae0788ad5 4adc5a9aec1b703b8b93caec1a0bd8e5de7b132fe5113cf312503b998e2c2927274bd051db6b35979b1ef271daf6c6704e86c73805af4bdd476216c26593af84 0dfb5393d964f9cc9bad5c313709ea70f561ed3ea7b053075221d51696910d0d339585004b34272bff7213cc7a510a5454a3b349b1b206c1f0af490176745d4b c663e2abb2b34b23da76f6352ba57ca2881844c1111ab189d8c7e07e1daaa04f40255c77988aa05fe06e4e5bdb4cb9c5394bbaf28d98c1d971ccd20867e556a7 689ec9166e0a522183792b8907ba55ca6e943bbf2a26e52f48957218ffcf54d1fb09dc3eac04da033e5c0d0b8c74a6b43d2e54c4a10aa511f5fb021a07533b20 5ae07e17a621a8e082dafc17e450ffb739676998b48643a4daa7211214f623150942f6a02c99e83b85583ddbbb2c4996113211551257a656ec1139246ca86be0 aadedb3d1441a89b6a929501833b197fee7b9641a3503739e57c732a59b1f7da1cf8a73b1f9bcca0945b874d4393dbbf10b1680f66bbaa5d6f96e77b6f59113d 316bb31a795600b3d256d0cad2fe354538e7566b2bd69cc6cbcd5c38f0e2bcc63058344429dc2121fd07f63f2a7c66bf76e80d75c8f7a1b622f878a18941d840 545fb28d07d205d20e8ea071b283369834296bdaac75d256cb37eb0bee740bbe278cad253b8bbfcf69eca23973d939b97891c6ce2cecd8da8e2d343578f6648a c2d0383fc818c798cf64e52f597c740f1cbd05df0c264c49134cf09d4a60e8a107260f20f92d47b374e32f000000ffff0300504b030414000600080000002100 0dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f7 8277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89 d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd500 1996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0f bfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6 a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a 0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021 0030dd4329a8060000a41b00001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d001400060008 00000021000dd1909fb60000001b0100002700000000000000000000000000b20900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000ad0a00000000} {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} {\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9; \lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7; \lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title; \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List; \lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List; \lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid; \lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1; \lsdunhideused0 \lsdlocked0 Revision;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography; \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e30000000000000000000000e0000 d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e50000000000000000000000007080 f45317bfd0010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000007080f45317bfd001 7080f45317bfd0010000000000000000000000003100d300d700df00cf00c6005600d0004d00d400c200cf00c00043003500c800c4003500cc00cc005200c0003d003d000000000000000000000000000000000032000101ffffffffffffffff0300000000000000000000000000000000000000000000007080f45317bf d0017080f45317bfd0010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 00000000000000000000000000000000d800000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f75726365732053656c65637465645374796c653d225c4150412e58534c22205374796c654e616d653d224150412220786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f7267 2f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879223e3c2f623a536f75726365733e00000000 0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b42454646 334436462d373036352d343833332d414638302d3237453839314642324334367d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c 64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f 72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}grcompiler-5.2.1/doc/GTF_5_0.pdf000066400000000000000000003060621411153030700162070ustar00rootroot00000000000000%PDF-1.4 %쏢 5 0 obj <> stream x\r$+P [园rx1|h9ljiC`U2$j45rEi7~Von? 7o۳L#ܾ|ӹokZ99k7{1mfw3i6=;7}װ(}˦k趇](+mylXϔ>amzgw"mmvѲb{V\qҾm/g0~c G~5ܘVn߹kMWzf๹69%"c@EEc`Ix~u;tF {Iv=."hW>,[nH=n;q[n;p;vxܻ̮]I`ڿ݌WgӺM鎻KR-s7g#@?\`@v{ Ù#dۅ˹% pEJZ>?iMp5UgZDzDOZ6mۋF .rUvgzk|Ki=8^] Zh2h5&-*>0xtxǛBaR "zte#G~cNpK" tnF Ä潕fcEPKp"aoƝ ?4|}]-gvJ?kqrkX=IiI,tr|eψ;aWмwõan1!򿽝ݞqI=}G-?obduxjWD'hA]wOcF w@V]byS hX8 C=Yݵ]oۆ;:nqn\[j Bpc{a;$~c슧]U}39&S9(N/5w|2R:($M~2;/c1,F_"尿GHGؽa*+QFxLtvO(jJX-|ě$;|$y /6r@G̪vDT䆑GHu5Le /%Uca[KmFgu:\C P2V8~-fAj]}h?㛑Jmx OPċ=cM2"PY8GFt*0 ˚s<鑀 $=ֈ/AGZF˽ '\Qd~B)K8`gGN5j7Μq:s`T|x֟}B;Б~Rd 4 9nS\ φàgTNK*RB㫪]gj~IΞ>\~Te*ց?aIȅDIJKskAqi9`A," PL3,SSIHytj{T,`C}HT$Uc"J3f 8\pҷ$Ip){ i;м# ivTCT [!78D&`9HFE4.pƵd!.C[ {Gt+  $4E3omSċ8ڄT3^e)u(8#:_36|%ЄkL'R2Æ{`n"Td4<֐BYf6`wbp+VЛs qRBZ-UZ&p#ˆ#HL<`Q>ıؔ4;JK}3Li(AHѦ&̀JkbW?R{OQ 񌂭aFBT+B1aLr"&V[l2<+aUak3;vrTiӳƴ:`M9Cx?GuS`AECߊ$$1%!sO = !C ?V- hI"%؇8D) חҞ}&-(DIy3Gd&*U5 D~%4fGĸzfM e՝$ªh.,R/NqѾ,vj>FRitȇo@(~(A]Up.qf޸Jd$A!9/Sj2r':#gsG4ZUCRYP:մWs=*R Pi)MғDqN-Z)t_A˰Wtܨ&aO-*d4Ƿ聅^vG\shb"UH )S E$2UG/t=\_YVcN ]e:<аr x+lntrK^QG?.,^+\xlZij] 92Jdh65Wpaw%+FM/x&A[VdBGq<.,Yt+p&y!YwɫJnk?3㓌n+/9NV|.7;ZѰR2< "~}S#%J`F49k4ƽBn bi2"MdpHgg6K<OFLr _퍮X4o)J:譆# A}).0SNJForͽȶsoKѬ06iu~Ze)EMNr쒊.;UǚN:SM+}1^Qe,j9&;{f6*^M& itQ$SjαoN# S)OxMt;q2Z=&"nF [$/P<~bvg;~N]^t0!z!D>{`?x9[TBU_QhMu!Hdipp* |_ 2v@6fJ3I OHaTC0+\&m~*)ݴ+[ [~-4rc Σߠ63y27M Ea--ck?goU l|rJ٧L o=g8ML$>K:Q\%af8xB_0C."YUQ52"5Qf>_5̖[/O-*U[.!B[`ժtiAMbaUt(cSAяhKzI]INi/ 88冉SE8dP >T "c:A9* >I fJD^1 uĴf ;#a/C"˩eG|Uie5TTI$B=s/,P=UOu~/?vendstream endobj 6 0 obj 4106 endobj 21 0 obj <> stream x]mq~b?:mP*_Kr\dW]u$E.e2?v%7h`n4fv**o7m#䦅R??7ޜ7O}{f ?.|EimCXݙm\-зœL IOl &;HFIݹjJlw5(&o,yQ^pځȣRXX$h1)0iv`kB{T]2EdttřWWjn]5tP":D{v#{ո.Vy֕q}4TYaf(;p=bs03ôCƅ{9,Z!M4|H]~׵ Rf70H{ǔ/xv`^Y{ ک@;/zk(Dj[)j0I ) _ZKSMJ/0!6 oBY%u1~i9I&.zYiЮroIX[}6ۆtKyp-&;5&kR*B;aot-T\]ҢW ")-BHJ)EIdȯ7 %}}ݸc13n&%cpϡ~º!?t뤦hA \ӿgݔ&qٟVlCsLJ~HMSI+N1.}w}#zP~AĩkTL2B_ >R8/(9P2x"zw6Zk]J^b2MۊŵDٽp5s%%u".":od8p )x'R-Hf<`I\ݕMV^h$HlDƒA)G4Х!O˴>mhucCKiCkTP;.BWB\*u?q {^RD8Js w=zDaZЋ#a4)zBktN>-&ز1`M_5~Νad)ƣj=D:%py$ :Nau~ִB {`냹pvJu0նX6WzS9N>WΦahZK8!ٙؼ8[gi}`eoFݙPs6fk3=նf--yJ<ҝNrԃYVDB?1%:o@ 4S,&S~>XןBaәES׃( Z]_EaFo2~Gg(n)GtTJYdF * zb* H)uB2f\ȗq"/dGNli%>nqNU}0lOp)7tħgyy6[+)GĥM~e{mF_H&t$^ޯ`V-d&a$Ɍ*--#3O;%IхН猟t.v~bEl>? Olm ~2 AraOwdW]8ky w2\B5)>ƧV{Z-[XT!u^:1h$e^1:x]>`^],z8_ٳ5=Kưg :\uBUHUay *R~h1<> #h8b4A0B$#M^gqɾkCc#Rm8}<,g2`d3cB 8ljeYLdIFw]!x\<+q Zi,P ,aFHZ0L'4=fFK4ٓ5tJ"ɘP=`[.JR%ePj/^MD I>Yb!!$NJI TV:T"z>;jZE.f>լkf ; 6 8#v/(|`" !qIQb~.R}2)>r?Uh`!*/&_p'lA|ځM|FKP~4A|ˏ0 6ka[Wܱ(,Z BiT:G?8ϠmF&}pY Ꙉuʛ)6h8&juDhD%|(e ?9~.$B#n~,,^- pqϗ`uHZ3yĴըSv0?i@FVݓe,U8%Kp[A8.D+IʯH*ݹ |1`[9M 0BMUҫ  UIZB00'^S]2uë́X)@|U>5Ӽd|F@@19n%3iS}Å]⠶(j,dt-}T(\$-baG:"%l@~8a 3:+#4v\oSٕt^F<7X B3Lk;cVjUBv d%%w^+â Wc2/<Q"l6ko*?! CohsìB">eHԓ<J]x:\?,C^%2Q !C(bAJ긢xMbUa+{W}3.ECCvGj}kBpa=x䪰M:5gcJ ܭpGV).Ύ.Hh"y> aG.1܅w'RwD1+U˚D)O]X~~i& nf1\ wi59:R#ޫWWp,~ܕT yo4Ηs,␧GFs3~XX%fWԖOi`PxkT:3(f.FC[;D'Qrͬn<>3J]6LmNW g1ǷsUYzNg髽]?p7=1ԙy35'算l3|b)o*R{U[JR!t瘣J}?MO'T#y0WTa>M aW4OׯsI1#F+Nx^$C}O['aßr/kH6 d8+ѱ>-6}"}ȿ`AJLmz28ewykQlk:H{ړ@ GXߕ'"!paO/%|6cA! *0!2(PCv2kW)ځ2{3^?۱C>'fCuWt#(T(;JQ6XnC#0\ur|ر3Wƌ;/&wGk|4f#Nίq?I-SDg *dשPv 5So!#`lǪǎOMF%+#LNJB&H&yI#rky lBz`Cdz 9Beq'DO'kpGHoqBuoqq'%D8Qoq<钟"2 9y5Wf |HlO]K%:`m?`v)ݣ0 N-e/F'ͺuRUJjB'jBW њ&B 0[ a^ LWW8+YUN_y_ +jOgBW њ+!į-!oE(D|#KrՐ"܊!E9s . ThB%)0/V-\kD?~@%v/D=+ߏO~oŘ/Wo O:^>6禗m#~.itc@"a H{`w +85ϕzVawVEϪR:+QyͷWD8//. p̟I:Rendstream endobj 22 0 obj 5735 endobj 26 0 obj <> stream x][s\ ~ׯNߒ&qitd븘O.3;;{gϞ볽{^ξB?cj:s63:kf/{\t󧋥8sίK&,X_y-^,T=n~Xkd(BwV1)JA=ktR++w\Zoza:S󗡧6I`;+ INPԁqa7,Gm9ub9N.(t[f 4vcBnp(, V!|EA v04,'K f4+áQy+enj69BNU- TZ{Sg{[02"CckF \z.}>bئlvb+ /y1P,8/Ip3 {1K+4 qTGE]7<חA oѻ20ڢ ;c[\;NqѫμᲯ*@2<vR  ZlGgw`x4ev v[ʨokL썓蔻^~tƚ;f}UT4|9Ah~~ 1(='^yDžEGio!J 7BR6Ti<VĐR{R42!ۚ8~ DKǤ_ZrXَzl\XVl;W!j<{1Vl<`Qk1T `J(80 5|BOwTZbR&]AC,TAh_H`ba}`@lǾ#qC;Ղ!s~_ʆ9d%?Wc;G4<̲ lȪvL%B3^kqoٓdhs>h9rlrZD cam{gܶ(뤀'T?1+.kojE-⛅aco|6(%Y|T6 0T$7 FCጼES3(I- FI6ٜZ$4ۋhT>l< FϱNlXnbR9@u_vᷰwn4#٫d?p$x+B`ԴB5j!]T#Y~۱~_zΒ$F JDBz,*83}*ўx$pv}kqe嘑AFJ5ȑ:ߔQ)]>9b)Va:9J3.ӻ:U\c \jQߛ~8f;1ʍk tXgvDГij@aR܇D$'V{U‘?U*V?čfl Q,>p (2H1 XL1/{'ju=9,"^"`Y >Gzs=FqP)Q4hC%*^AC4UmDրsUhtX)_pp6R2~TtN&uψ]&Sںs+WPvI1&{Ѐ/ j{ }WἨ2V+*Z1鋵Z\ޜ$4\0%k$L*ckuE؊1RJ󎫖"MDnhd!j(x֡Z24<*|QOdf4#uwq|`j LP*YmM5˼/!ByuE75Q|,KQF/f`Nѯ{\xLilk!N]B{Fr~üah(^l~g= |`6n:䯽d@ }Xs| 3thsY9sr=ցj"b$}Vh ::wۚy+J#׫M8II}#@F^!@TS J޻ v0}3u=)Yt@DckOnNKxV]$zyA]c@:$4-&Q&) QhL&,Ъuѻ[ ުj<oԯnIZ_$UacߧŅ%ȭl1.)ตBJqH/gc&5D&eC.Ks4/|me].ջj'6m8oxTkF=6OfBs ;2Swa h0mJɔUbRbވV 샒]+k.!t)~>ؔx6ObƟl9ꦬ]&2"d{d^(cT;o)az1JŰ=dSJLp;f:+HtꅝJhԋpJJ_;G a33edP,ZPU#> #AVNoI+jpY!*Ps=!)XY\rS羮ݯu+)n#&1$<%:6=5 ij9'6iD4*$җ#VA! G#6Awe $+~-%V9zU9c3X7N FKO}[jl3mhlH5e^4gm1FڤI7b}!U]|+0ć__=h@|Էf3˴g]@0.RGIm #HDyKWN4{OE+y7 BmnfNPLȢm&W&PhhS@8i晨i&S7<ۤ鮤IwNJO)<i=Ï"C4'P'&cs;0Q7'MndIm=bv9X|*ɇb+n'`܆u6ӵI+ ǍywHr#4@s'|mh.Q7 j\4ݏ4T( Bp#q\nGxq. ۀ\nr&S76i4._^n^"7~ ._endstream endobj 27 0 obj 4430 endobj 31 0 obj <> stream x][q~_qrN>R~-b2N\%R˽K.io!/ ݘi\],$ .|_6j#߹p7/QyX:ˑt+@go7;a#e'Ht!x]n|?v;#:7'_w'cIm t':nzg:ݱ^㡴ٮ7B8tU ܾ7;I;)پ5ёSOڷO (%rQ*'Gm٩y=RQ= bf#| Y=uYDt T LnMT0w :C$G郼ιީ(DY+d^c V*i( wc+i?`4te|0Rᜭmd0րeq6{J}B/2w@87 r뼈*;NXwV+-g;:a{Jh} *%P Bƚ( (hwQפTCVy)9 y{mbezKs0h 9L7(Vrk`?8R/{."B?AUH.D{;‡c&$rϽ{>DR:9! ZOD"M((&z Q,Ph]M,ԐPCJ}O:#.0Q!Wuk@oUtW|USwXX널"TβtW$jL-#,x}'yp\6ָX[0K5uin&XVIiedפGZ!'ߔ?tӠTyѸJی>6magT*q ;W*u3U#nVTJ:2|)V;oEhl7~?ҸI2:pPQtʧ>Oy, ĎF2<|=EVvy)os(l>o`o5F斞7eTׅLNe\fKLRѫUӴK ֦D,(ҀsW⌔7W܀IwgP R.Kر԰q%m 8Oۑ}pZȢ6];;oU`OT#jDgрs#A?GXup։Gu7aQl@=@@2ĺ8y_3alѻ dL"s&b0qN@?*Kf1phkA@.x%Is赎-@gB!TmWNMߩ :]:?O3j SR:+v{>F:LQ\S'Ըm߭2 [BIIj^@~P {Gw;R/N:d6Vp?rs{qt Sg{u:[Oj{͹O>:=:_>D)2D%b8]ľFWS n>ݥ!a sIU+ux;7l\IRc"'S.ZYȆ)[>wx?%4ɉf3P '񷸟S3?l}Q |ܿeDogEk^B ,{!3FXN~Ijֈ<Blz') 8/8KsͼdAϱ>b%IۓAWoB+g8 +Ԧhpx\VMerHvMd1UhHq&yTXgf#dx u*gwRCs:OC#:5-{ӕ>әtT`[mA>7:ǥ=Cn4ťc\[djCS;k@wb^[/UR\iy uZȔhϧïN\!^tuRZeIr~4=?v|眖U)ݭԙ @Q5wM~d(=&xMNqT6ɬH!wi9L:s86\ hu)=/gd)QFpYTКPt@|r霹6c=(m|oԽ`S)nFȪlPu]δk& 8:R5U -d%dDItLzIfXZP/Δ]+Q$ .̣]b4v1\}`̒!ΨWHPk7sR#wܸ g6Cu6&=̟E"qiPW\֫ ʍdڐщi8vox{`n"{A5M&YY-er\" ZMF.)b.J 1gAm{;0@^Ŧ:bJة"Bᇩ_1zn}VȰ&n }RR(km)ι STs?0n6vS{vu#Nh+Ln9/ 54hTR$L~UI?D6E_FG’?SݪMuW _ݼ3`4~շ;M+-GGݑb‭_ep}1w>?;%j^-_脔KqZ{~PZMے=YxJY[RLgӆ=7n{@Ҏhy59< р|m?r9ur&w./xNq{bs75;nW[._٪=m |rw7BhΣKg%",G x$['E&BH]Q]M{:,&ם7懜D-o-Z\0zڄλPmm84e9ԘIv XɪtV)J _N(ߒUG4NNé~Rӭ;+ҽbDFHXՠMIFxblQD+^cvm@mIy G`ůjL;~؆ <&߬fɀmۓ w_ M/ď@5B#>& pK8^Qbok%rkib{<&kznG{~BB^У5E(vŽ.)vJ@"}H8-vVWXX{ kWAA7ϓ7:lǶ.(1:j?KGucO1WX,U M?zK:+>>s @l h3y&Q)|zn"7P>;8 oH|Y2wYs޽սQG"ȯgG7{B{u1ރ_Bܓ *9(,H֦~;^;6~N>J&/+oڲxSHcHqSUԖ~?`p^)x#X=N/-#9†[x08'd˽ц?V9GH6{Y4,˶Ҳd'J<Oô1?[3hcCs&kUM6dM6dWl{} =Tp#!%;9()!)moq7^blk5,JK}$ǭ0LHArr [endstream endobj 32 0 obj 5088 endobj 38 0 obj <> stream xZ[s5 ~?be8w} S(MNy&'! M~/֞ m20ʲ%)ûF Iŗ{9yHdn?_7_P16J iBABHr@ğk@m/ fbM[z$^uK+ƷV?igA{-PNЮ;Ή`1[F6v}[gI7'ʄ˲BH۞N%x~u:~Z}TyEG'\-޴?tZxp'-%u^jqylN,[oFlU$}0 ;Сd$1Ax jT٥a2E۔  7hh_aEċϲ-m8ݧY(?/|쨯 APL`y,?t{j_vK#FB:\h4vGf@'u{P!wyO4,ZFc7{d_өD*ViS[ +hG+~Jsқ+@`SK\"߅qQ*~\+΀$zoqTP8aE,FkLjx*:s\ľ^r CQ$% ZQTVH\]Me%iJmP gAʘ͢f/6jXisL= z]b|㗝9@SQ5N Nss êבҖ)E5m\{ÑteSIo@׺YO)ԙbr=+SˌX2HE9\n?ǡc'*rQE:vIڦ[P 읪(T1ın{Xgk7G`r|Q!Ūeef˒/V܈ Desz=GtIR ,,p%1[dۜM95DP/605bP\v.sC-'O]r 9!G'UZE3gLK[bYѥS`;%4v'N>=Ty33Gg95GhVCbe s(TU|9,0GO4 i4DѻiZiY{'MѦbʝ"TS4z/{vEzRWY]_ݫ_sYendstream endobj 39 0 obj 1916 endobj 43 0 obj <> stream xox:}z1L+);aVǗG1s\G nuhT /rf:)7PڭO6!w|o6Qڰlm'~}HLjc;o6v*cEPVOy]W8>-|q A4:>Dk+>5 QJĢT$ Ϗ^ܨ]@obnv f}YKa6ֺ,B[g:s{zB~t7#[ rD 3$pD:>wyUg[:^_1,m0y R]0Wy?hʗTqD~ҩDBY7Ƙa̲W.Lɋ^tu]['"Rx6&#J)E}VN"')AOmѡפET,N:mǮPax.U,{N.%#P݊n|5"6ﬕ~]/ϯX,PLQ)9RfM;N4 W+7P$RRwT'W]*R؋ $yӍ .:'.lp3O#;pden  tȈ`6(6r,ȥUO+VpΪw贫*s^1)fwu])7ulG`@UЌ@Ԯ!Dvfd(OqJ([Q޽]P8R@D6&C>\Z#hLneL$LVa@-؀NE+{+T_'oH8M)ozE>RֿIu:7X `։1gY2G$6Fvq`u/dn\BГQ} U ê<\՛#p}wy3%f~L1Lj*?$8"r_q0Wlnii+rv*tr<ٮHzYHFHtd4l׉3`ye5WkW*L^;Y|~`/&1ƒw%{3z$PR4ˆ$8r΋>fa|'|(%=J4 Z5 '[3' ^猪"3҉lC%Ăx #tCNjp6?at0} 0L0?a@n`A`&#L.~D*T< Yd:]`D/H/+|'J( S[QKC ImoR\I&ƫ.qʩx+в}=0ɟ!b_e0>$!Q7nl5%6WzWMN6WK 4Wle )>vKSZs/7QY5+Evɽl-yr?#'=3'O3izfEx1sQR𢽉ʕR`yd-ꎘ+HA ` xL{ z % 42#tgm1ԬMgqki°puQL(nyb{">X!2Xνu1dE;3`;.mɽ{; ]S{;t)PSE^LJQ^hrQl-mzCD ֧IHxn" Mf5< .z9^UƤ:r"%aQ<01Ir%F)E+odxo--ʈsGHL80lQ6'ptT8EaS蛜>WƱ%Pr*ԥ3#:3U #6:3ʒE6Lj=5\SE 5}K,  Z{ʊCS6@S_ތ"l;2!{m!PĮEP=748gUPd1Њت4#٭}OǷEI˼C,K3EcY6|=U?ho,դ,6Lv3Ѥ"W*B&1߃*~p4?RO_Gт'okDVf͔}7)svpl̸S5Ɔ9R= ӹ'f65MK\\²yL2D,60Kݷ֧I3%L`q{&uVC/A<<[t@C\lΆlXUoxyoa>D q  f"g<R A=Jᗶ!+͗F(1̞);g;ָ̆"+٩]6ϧϑzǰ4'U\s4ג4`RJ$F_[xᠻ"||=Ξ0I!1YjZ>;q3ͩ]raE@?Jj['QXAerSfHݲPʨ# %70i2,Z@,ux]8+~;ޗ h+-Ys~׋T!RVBӪȣhkW`TwNGl=Џ;$%Kl g],ʚW>'Mz_9XXdi>ٟ}lvX޶S3V}3}neOK-[/'jE枟p `?d?l$ҝ GIm٠UA..#U|- 88T,tqRyY )v8➱H7-@dF^N2f wnL_OXkyjh|{ |(:]{@} 2c4眂A0BwNCp&X;a%5o.2C{VڦO)Jq~e K̯\Q(HL5L"q1~CL|84,5wS#I>LDJF+rext!?"ՀK8Br)]}1?Tc0X}tQQK^#.$=XgQ"jY$y.zc)z*SvPF=c|Wr??!bO _4[K:Qӱ !6ŲO>`Ű&z[S{3[ > stream xk8KB$ ('H*eԽؾ=|6/53nݙ5e[ѣoZ )^N^(,.nţˋo0W[A'/BǴPJH8̲=,t\LI5/WF8jN* `Wؔz3J%` *-¢Ģ¢[f^SBHgh[ w ysc`޷k- 'fO v"UͿxL"P BKvq6hhe;Tv 囖lԮyBk}vӡR2 P &3dLyYI@r(2)AΕHA~ ouV*`8#S))ra:K^Pʐ"v87#D3%@§Mcq=р kz.uzF-V-Sdֿ4*s,1\se0nĴD^%wÃ/@-E0.Ÿ`xyvRIٛnk*X3-]MebL|+oDa3 =k-aSOpp\ ]PZ.Yz*ԡxpFW+mڢ2TF$2yp67+" f>cUvy[<B^AmZ${a:WRE|roWXrmsNbڅ 3 B'Hż3GN rI`ao2OZ쇸)a&MqJ(T{#ۜ0TPoxgpA7lzwLbyG<G=6J@?esʐLoƪ!M-Xb~:y_-{QcN= ȱ ڎRE+]B C. jYa^ʇ衬7%%֯@~ICY4`&"#JU<%YJr5&Nqv1b[X{^ǔvYl<&B4eDRm(# JA$nGNH}$ Nq~hCa+VW OA_1 oͱb7(2tknI' ™XȻ{smJYL*ms0b6Xa9| 8vXn3K8S^]xCj>!p0eϮZAYԲ,{b}'x,˨'̡3,2<6h7G­A@^KYi>{4bT{ a+$=/Nc0^3}Fwbm'W$@-eKǃ'`'prn5=T)z[eĞ[!~8-n
`$uNvS8a%? E^p[A5s?NrN3c˙=L6ؘzD8TLȇ?YpUg6{ԓ ǂay=Dx$"24Y׾xc[A&:#٦eVy/Zk0~RkALpЍw8 sg dz /L&]4@2iyeP `G QZѦ{:Q0yeJ% ^UjDzy%b L6~j;UL5Acc. JUd#[kbL {E+WaƢt$6gcI?Gz}tOϩzrLUπMl|P92, 8 :b:MF)?bZǷM9bggnߛ>R忁;ޏ]g,1|J6-7SyF@Ea:sqj9ㅰQ9Q6`Ҏ5U6amڳh߾ =83*K5'PIEϠ`eVbGK֘Xq ~)g.^݅G wTj-ҰꦡKl FЮjQEdh,8a[T'2^)pW#L]{fS7Ȋ'E.Q`(\r}5"VrWJPV 8>)qJvۗh=p~=lSb:ӝ Qr`3Yub/f]"e7zgyBJ`;Er!%#Wf ٕĽ!z̥r)29D]N5#-WK~%'Nd R&}7lg!$h4XGrT& 6MM ˄ٍtlx;mn[7qn]}Ry2KWYUR.lq/lhsh{=5 uMݵZBL~hu!LH~>zi,Yo/MSL /}wYGLdчH7`O}th07쫥KMC{N7pI}j|Ȳ&SY/ؔ6'FvƉac{DgRm7r:7q=Kpǭ؋(T>Ӣ> Nzp ٓ7z9īK^ pwfLt8C%{Sޕ"/1܌vA#]D7EEL2WNMk wO& c #+wXd(w dRNiYl vF3Zˁ{uip1od/ʾ{9n nk9:4nbL|&ǃU0Oc|NlAVER~9(f-dƶh`u&Hւ ߍ$dq~MZJ-j{P>RnUlzx9磖!ƴz/{Ѵ%giפMއHg_O>ŶÓդxK&S]1p>'[k$My,ZYNWg'' e~?ܵy7Gl[Gc2a0®΅!mŌQ 2hu&S`S0ëMsӉVV ޯ|(^ !M% #!_U#=:n-QƄW·S:ᄂ6 $0\_L[(}WT 愅$b@X^V5}۷'&/Qrm~ZO>I4B{79AE7>^cxP<}ť+_zhpepG{DVO> stream x][w7r~篘ǙͲ;{Wr}xWɕ(ٛߛ@ 3HΞcXn5+m%:V"^sz{_5>:QO|A^>?JN膡rzy:y}^mNz$Ugɳjs:)zo6ǦsBi>݈_tr_?lm'~}Vy#^l[eLt |)=]Kl}#;wXuY5#=Ğh7o6QJEt[xr~\ouO*sf1~F ՛%nuZb ֥i:)hfLnM`0 oe4#޾s;:k =}g[ _G.&Rf+iׯ8t <􃡳!ٺ?R~ZWޱ%x&#Hn]/ˎ[dha6ǺZi>ȡ:}d/R FJc߳sQXAG & h?d_\SйO a]\}@nvS-r8 d3t!_LdЪm7>@iKĮ|xԭWִ\zzq+ \wʛ(Rnu LƖv$/K%/$fŎH*]>.tCK(B>8y29^(9ry5^q@hIa[_m _ v{su^XʂZi+_7GGL*ί'vlmfZakk+r.pT56,3^AI8ؔW`b2O`©b^!R&һ 4HK4DS&mgԑYÍTtĒ !t'@G r#>BqNg=F ⠁b_^qJe D[8M^Wc.IbjЭ>@A,u"`\lXy~(q%^:m3xc A4R4ܞ yc߯7?9/w={`iI:ڠz-]k?KD4kLe SUycBo ~Qޭ|a0YIϓ"UٕVY`+8rX 9;n _R ʦx4z"A&k {4D!U-*sWJ4/d!-_pzHO<+T 2B_j;rQK󽝨@:MaW@ɣTrH?mH'5 5+nط*|}rG+dFM_~ZU<<~ n}{5r8<+BGr*CzK"⹷qkD9ˁhe,=9JT_rcN1NHu'Vڞ9|j=[bF]y>Ux%ELphDF0"$MrY 8~KqD-,4!hqPS;V;9+0YUNiYʻTH%ƦaxȚ9$+.L~yַiQC52WV+z''²$ QoAeP( _FLºK#X|#ُ={u eQBZ o,3F!ċRԯL 3<U F;iIf.%q?bo56nv$P]␠dUMbTԖf2+ sdZ1J{e^h{[jhbv9=E#Y$AUP@oB|~`1KI ٢ؖ 'VRvl2C2o 4VYK?+BP/c,Y_I?BfR4pSvBZr(ZSz_snY<:TFOC獙<NglwBY8Ѷ3t84/wE戵%]W+X4ևSeݲfUGGnseo<87_c)E`bztO$DCU6m'!|%#Y>eeUй3#'Q_w=e3K  ]^g5kb %. ])@^VF۩Tl4bkk/ֲ"4'ReCwh-9ߗPDOӛ )ux[ݡzذ/_ǐ?ŸA:&_@1`@3`T8ixuS f.1#&n.[Udes y[O(+^e?2%Yi6.7p" "(e!gPjY@,t_SES ]CGlxԐNe}gDx,Wm*ra?TC|6H)Jqأr駈(eD%uɲ`0V 95~^&`uWtԉfuu>{oBDnQLAثrF:Wb:ú.7frw8;U,tpʱ Ğ~QbǻPJL}cWQu)5_W|7ór 7RHwZlx㻓YۇULiJZ-]ʘTر5KGXOvkt Ş(3tᵷyP+qo GG|T2VviaIO1w0Kla)z:2c؁7'bw{s=!iXg`2? yF[p?ߖ1}<e9jBgɧt$}U7n*nHXԷo'bL8N܇YF#w 1Aۻk,Y gE 斘uGSlX/~K@ opρS^.jЌ@ч@b]h/vP.a.cemX%ؘӂ#QR?A U,M02<_Nv zmA3 vd 3jIM3ҹnP99caIp ,Cgs?ҥHpm*C0z5cvS >6H~pz!Y]NFMR~O~"G/ȘQLxO)Vo[̍?spYt *5 EjjpKPc_d/rș 5>܋?EDi6c"gBU~asL@vy.[_B0GRv*:0*;2 sӈ/ %^1az>֦c[.f&Ɏ)Kz]g(9Y' g9.uH.&诨a_CSK5谕_KRC07Rwp}-|nUݏNLx4G8M&2\NY; 9̂m.5y: D kd#]kendstream endobj 54 0 obj 5688 endobj 58 0 obj <> stream x\m~beb'z| )*e>;p~H~oZHݚ{MzmiiǕZN_a::Jի_G?NR-Z}z JN#хS\vE׻js#:W_hf:)ׯ7[9[lDg}ޭ/ 7AZlm'(1Jz#^o2&Or/LOǯp/6n}=_o\f*NxGWN3iܪ?(%rQ*gG6sjO=4TE:L+a ^(oOՙfcd:)ʂnFb&*Q2D{䈸}w9;:kJߙ^ßXPp^I~EXx:PjH3wQXzXOnЮʿp ޯ /UrT`NͶF7MKovU?]7]rs!7mLf1otYf}CacPp9ӅoCDQګqAwe!t``pnƈ q-ŀN`RhVP9A lFa%'J}^g6)2`aEkXB G{F!芥]*؀2%p$pObYބtxԨd 7ij#mzhLFa^LSnj0dܳځA.j BċZ^N g.lI议6}\HB1jvJ%%yt4ƚ%B=9E͡i+Z뷵Ⱦpdحάn;"[ܸFPe}\T !A %<<ܑY2q\?SƔP똉G:V8>1ܞp]\e+'Sv_ֽ: _$ 4 h7 ;3'-'0> '349\;5cxo]H!iJTB Fp< ptq&E'ܚK+F(30&1ƧE-,DGCBBqs)4A9+Q 5eDBfX\б8@T0<o5$4h6+GO+DuҎقWReR /7diSJ9'3V|cBlzol"#Y1rYؼsE9"VIrsBec bi^5/RKS<~7Y0qs kݻYe3%MI2n3'Z@p7]DF: 7T}{Va-_or^; OY @M>س2%Ud>E`XR"% }^H2^)E,BB~=VPz-[ [ EJ [ 1Xlb`FN0ytp$r6zט hA/Ib'kFD _: _ޕsw7~=1f XVB_wo1p*$Y/t)DӊNr*u (o*p.1Ű/z^ VL6g7t_ֹ `*3:z=CFCtdF燂,|Zz;wRbLnoB,K|;p hHXׇLVp{=2N[zgp.'GsImMo>@?ÎF.'piNA ipG"%r7T\92I9wc;šv޷`lMnD|㺾ku7|Wȸ\nҍٻrd6* <*!ěP2Rh#!x%ICY\uoOh&f #u&0#l#Ǭcw[ЄZ3h1Iեѝ}c_6zɃ7Y\m_hX7ᔤt\^">۝e3溳4 sFS 7pC&f'}Lta vk7A: *kmImM6p 'uq5^_|CRLޞs F3H;>8V[ {S M%ft3|?Urcz ٠͡5#UtݧIz+E>XXaK^H8XŸij[T r!N$zB6;ٸEt M[΋njZbpB2z/MXk!z+#ShUKHcc`rjV|5 I8+:la!rHmo(y& /V_;Y3-CmF7SVB|Q IK/7QeI4xxcKTMM!&^ħ3;)X#epϿ ~{᳘]9'>EGɴw)?% d2193̝qm&b]. zF:lL\/eF֒ǻ˞9<#6-w9*E [9ewJwjkBߎ_kӔw6շ[gpMk~pH>NC>1<6ZDplszf=vo?ܱ%[ǖ߯).)ݏ9@ߎOᲫJ.ۥ69Wu=JxnsO,j5@?C&қ&v&,N̰,Fn}D>mAu:O ky$8ef^i'ABH)M/kS^Ō}/8*PFa:LUk?n^jOPo)uOMNc)2>ԊumwOk)J;$8,ÝWrO i{߯䟔0+kEʆcBY{OUF_KsįUjJ oVFCķGendstream endobj 59 0 obj 4339 endobj 63 0 obj <> stream x]Ys~ت:RıeyHɮERbu8V~F{Ә;=r)[*pG`UjT8}z=xq=^|(<87*=ӧaX ѴzumBw{fӣjs#!W_wfkz7[V*>ٴx~GX|э4´[oژVfg}F`IbvF4B`WX6Vƚƶґ^v=nh L(j 㳣Xo^dZ AZög *7~g1'kA @_E ;`t5Fr,"&FFʻZge\Nӊ[Z_bVS^l@¬"Ȇn zk-0-#*ZHMGwk~K*>ʼnNOˍo$g3Q\k_uQWFҽسS8Q=D <"d~tv* A{i= :,~K?~>A'|(ۣZ&oAq_`aA;N9JV )zT|#^ҹ(ؑڭС:F$ѯ8־ CA9|q^b&.7_5eW&x2FvQ_;_1mZ֗Th皪 YSsc}#Rcd^bݚh+?wە":BjxFY&5p Nrgʠl,VRQNԠz{BJmȤދEFG؜{bw>tYNpH҉B"U#`D{!uZL!D :i4`Uf܉^FI4x+^P1Υ1?;ɔ HAU=$X8ڦ#IU?@%/"Xo]kdnA"Џ}xI^bڤGy>=D,=۱];'q[\swlȽ@t2:w恟i|~@um=)* Gv BPGX"̊G\a{*Qj<Bn'Yxo!Gz&@OY{V .Ji =Y sJ.nM3SW"י.V@*hOUFd^q@!qj8Pф#+9.l!7xM^T/YBYt&d$"&,rÖ NT<:Q} ꓪzL_q}Q> VTcMx5;.\yBp5l `I VH%Ha(]\6p%,YӃULIټR_ I3AX١:=: /hu%aZ_ =L+dP׀/v#F Ůamx-{ 1r!2s(JdG6WƧZ=Tk~G68uN[2Xd$΄m֍[|*w,aCA4R2Zv0һ$˛HcWlZ1m(Au0KNH]Zb/s+Q?Z<礉Z96^?b8d>-Iq)yW[cTuҏ2 #oI '"\'ycr{G3פ5R)f ,$3ĄN{7>p8b/.gk:ta9V=0TkFW&pM͙Ap,Έ!X1w>MKk lyA%_+ Gi;A;xطod0NғJX̔;3kcFs6)䎸DĞ3փ)P`3Gw3v |3=&#&;_Oiq_lݛߴ40ܩ tr6XK_22FQ~ŊiMxBMC]q!, jem.卶k& [Bq!+K1u.5)5ļo'O^`&,|sWJ$a\V_j{'86aOVm,NO1gHYz<Ɂʎvp炑:e6HS*;TP;(\~lvF i9>8Kjbi(n| W{rG_CpvrcQIji2wt%(&4nBϛ i$+\~G/moXC? ËnB4=A>us"4SBuv.!q]oYA}l4a6sNLYru"1Z{i2B{h;ټoF50yx'G#Ol,{iw1<ũ q w:ܥJcJ L8= ۻ!D7g[ K 4_]:"$m@3 Ԓ 6GXټ(_=PECՎn SLݽ_pϞ'*ͯޥ@9^X ֥.c?ᤈ(Kovmrb".h8I2 H1W(u1ᠧ'-'Ӽqn$m/6"9֞A߭L&pČsfRJ"\d"!o +c,//W|.qS7FCc g&p`c 񃄺+$ޱ>O'H2z|ĂF)?U4+;:^& ?>L&mv 0ʟ㸕 &1=dbb!}Jy?:aɸsoT彼Yv3Fy2yHX.&b"idHݳ]yStܧTP]O~|c6(Q=7f q5to<ąhQ^EİvWa_U {|c*!ړIf4MT\"T/,}q}x!dq[%T4B/4V8a>WNO9VxGNX,pk2 AtʭH<˾r,(ŚgTgW6ty)k> stream x][s7r~8$,yu|z+1Okx)R([޿T~o3GJr4`pi|N4R 7'{ߝǻ_̉Ou8}f3[pI;:8b{F~w8DF?7/]#`T7Pm?? [H@9J3F~y-уMhtlz*2r wKxwPȶ|fA5`W{ےzKx(A-xbɲ`L75r/}ӔHh'jVIq_n Mrөcts|*FCd˃c3;V J~KƭA^y_h+yܛaиYg?]0Y)+@I? AVWijdWnۋ2mQA@RBImWDөN4|decoG}~ ]3ۦg7IT1~>, =km:>ȶ; 8AаvsƇШ^14ZBJ)Nfivx30Q3{xL`W^wd?1xc s&wSDrj{j G~!)jI\"Yno0521Pe= X: :c9 1Ϸxp+04Z54L#b>AHR0t,ݚ!D9FԞ{~qXFEHs#dK-@ja)ldT@.QNbpCxT˱ve*^@.QЫyOC9; [M/HA Wn \!VX͗@4qd-E&. v '~V~U.e܁jA&T1˨;:$3p)@!U R/x&^H`ߑ^ՙ=#Yp?0uS /(TNNqp(X7OdX/_"Mo7qi+LGΦ*0'G-:XA vRp ]/峸$MKM ["콀/0 "lv485qK8 [TD< tIn$gayဒ kvi*|MXbUS7c-z z`$,H:Yi:%Є6YtB.-֩ %K$I q$G>dՑ7!fZ b&}0Dq=]N=GHP&KĆ7Ԙgu3+9hrRu#VVͫYn;#iw&7K:YS8eϖR26.%%"^Ȟ 9zt 5N*Sij˘:G}L;tBt" Ths5yH6\ %3#q.We$q/a6)SVhw{"t td.m]mc -ֵ4*I?vIT?8%/jUE˕iVaa $+Vޑ{ <ƙk 5dQ!EL;"JipIE%ƞgIFS=$D޷oElne $Z?!BFw"&.0Ph]f rtArGD:zҜ±՜9Ⳬ,N?}Yq+&&!V~y}:#]zC8Hbd2FX& ҩH\D>g1sSv"ie3Y=5Ӏ9-=Io:o y w܅rZOƍJ{[=zpC,[Jz&j"NOJ܁ mv v-d^LwՂL`WHwS_g[ DoE\6h4U{Hׄ{u&N(9ۇȓJ/{M'6$2[4I4M-8^X<^1Z*\.]CGLv"6¹|r&p< Br{pgg6_IK/G8KM3lA⁼wrg:žMvu2,v~hNnf- eOo/ ghM~Oq/N1J*yY:ܪ>&+ d% Das) xiLA5ܠN}|@oZQ%쪕cŌ-G&s|J:y!D3ōy'9}cխ\oǟ|]ok=H%6NVN;AQIo٠.߆:Kx?l OpW m;FJ@'?ò`ɣ~!ѐ2ɢ8_4kcxГ=@{1ūg$<{f. r?G4~)W{4S*<)B^nqUjf&! )ƭ/|ך#o^Ͳŗ@aqwʣpMDљ((+m𴓶GF1P i_y|6s׮.vi$V1H]M?P^FXh,uw>'U_\+cOї3 sSzANK໊&@=xcqwKS#_R 'uC$g ZoFMLj<+1s.{?s-`]HknE5n-lB5roE1WJܰ&>MoxNRL‡xD)fSdW?\*ބt32DRъᒻO~M29> stream x]ݒݶ8lyw;rDnd4rH8HD7AZ%uF?h۵/.ߟ~8 ?^}5]<ݞ6~חw:s;!VnNflkM/vvpζwgO_Olݝ}}r_:h6éjVv6G|ov|8ՍmkGjwЍQmCcTjth K=]Ï љ?@˧CHk[[꾵=9}KcrߎB³o<ȦDKF8 QL!^dWǙ:?'}v0}x8mh"9x9CVcK 5\/J鹟~ZkeK uoVY"knz#eF40! xC7xNḳVM+jиÉN+y"M7 9`lB̸փLl:̈^ӡw"l <_'k{B `R:,fi6 !0bg31;̩[(Ch{1Tu<ʼn^Tx5ȏG1Bo_B$M$ x n FI8uڏPNô:He)VI-]C?ߧ.Gtӵ*D9Mb{8{# 2"""(|31m&$,^¥XB3"bvRw$>Xé#@RWl~Aƿ"ic_/UBn ,v6#GII 0Qz>`1$M/ %(x*=-9":96v&y} QxJ=/!} Ȼ L3]>36ZQ)nIz#ƫŶ.e# TeF`hטq‰sA7x09.-,\ V앎Rl[_}D"827szjow U Hʘ F3T"lQ]uj(BaD[&z(\tEqSA C:bIP5>aӈ{F!]܏ls$gVU,+ti ZeFRZV$dMh0䆒" '5E@:ezOC$nsy=jt A'l[FDJdpKPh14bϐwf+Z9:xZ2wfgh0G@.Ծ4 |R'WX( d~fáSXi!QhNKmrx|NJ/g$"luD,PHFBMdЃ!b ̪̺Ⱥ 2|$wCvFz،cL3? (I2g^IPp@x gɒ Nʓ.D Yj~WX Oh!'sey(3y[Ÿ(1 𳪀$1~wp\@dAٚ sj3 fO\It,.r*k#]./<0u+ha=.ݩi|JP@zX eB V p\vHMMZZ˧XPo*@"wI-n*k[J(٥e* #z:qm4,Q6kRڪ4%_oъA X`2 `26JN5)&O%i6OcנDžFV?aZk-ZJ@iUA fZq^aq2BhA D`|Ǣ5z[LY6P\?[P\=ՅB]* j D W){^0U +bwX*|P*=mC=eFaøkfm^,//mb RDg|'|e-E`l_XVƈomXIF}kƥQ#PC_^).Փ?Sj1DT7HW2'^ZO팉ɟ/.}=1؆uZ;e=]z=ގ?n36ʔOV.=-nzZj3{tӁOK &)4sdLׇ.)M{٢%LŇp<2" 'ND㶘EUҠ!w0)]=~<(<9toS6+~[jע j$0ϳFݴO>qzZ:L|0ZgA(:1Ċޛ/_9Yl1#8[ +̾I_i@%Aaj3A*}ʵ ާ֟bd0ǟ=[0rD2 ȋwAҏD}8ʎȆ@'tݿJ 1' ! C-;p \bF* R<1tnJ2!k;}ĥY_x(1#-}} kX%h3väQ'jըTnL^C,[ pC=u@4?|Pls sһH(/q,0D # t$QH&'ېN֖ʔaex;&'gptHN!9 f@9FCĝ"oh#d,NS񷝻t߷]8ݖNc{)|Jfm_̶ Q{i2a "0Gq;e-9>t$rş8P\<$zV#v^0:Xuފ.4lrҖb6(mN$$ o^@;u8.v֞R8N9*T;Ϋc$T)h8m:jK]iT;mirʧ4CUd;f;ٱD`*zob\g}6g2:ۧߌ,m̡ ?Ob y\Vu`*vg7Z.c?MmTgRcϋ+Xާ]*[qֱEt(cPvXz~`qқ[O/fC!Ƹ1c}꣤ ldJb+NTw%g[> Yl(Xc NoʔrȮؚ^|J5C;R`nuuZE tOقD /HPdX`cvkCm̑u]v|q7g1V.ć`FEcpW$b GOh;|H mY giߩzd_n~:Hn+ & FrRO6yFTf0j%FGec0"wg$`FC<]]zU9{2ˤdE[ .aaq[O{4c&w ,3~sa&8kۆ&|<ײۀHI*\>ushYl apcPpIy\%iC]@'!zei?a3N׽i"I֓{DZF X7VojCpPxFKئ !-VTT̕szYmy⸜> /9Qm|敀3׿pg3% ly,Z\}m'{Զi?=1}P\89N9N t޻fSմdC):x_>y<08%tCDwf$}n=0N32ְY.kG^˹:+q.8Kaq꨻c(s"@o1i9B5~t[kO8>u.H$?ޑ)נ? fendstream endobj 74 0 obj 5831 endobj 78 0 obj <> stream x][u~_13[h%~fJ\w2!+,o$?8@{9TRaw\q>`~؈N凓_rۇyŘt{Ét'~ߜAa#e'Dtw1_nƋهfw'Ruoξ=97SI{;5JNtzo|w;A~;; ;lw:tWƤFz5~lNvRn䧝l?ҞcKڶrEWQ*"]q:{ie,ըS'f+NBGpW*ߔѳuͮm e' 8!" &hDMQwΪ{!J'#`EzraJFI -CGC \e_7@%t0{Cw8'2o$qazE q mtTwVZn/wrD>bQ2 L^]NT2*%EaI~hMn:W;%:c1NoaPX V9#;BI 67XAoŌg| \uo񗏴 ܻLK tZ{R },IovSvE-Æ?6ߖ)=cX %m= S"cEJCj>!pe mݥ9:iMkMKavku 2\R}&Ft IHVL#Xz2t]Hlmv_A6%K3b)K/vAqk1ԦL)ykVkg]K9{0}PݣH9[} ζ{ʂ-uQXfNs1}214j+DE- $#$**(ɮH50BhP_ Umq->]̋^).{\Ր&;>e J&:|e]HtdElo^͹O]$\s}3ټe4x?OJǎ]4jca]TQ7= ʐbl4Di0 Y1H{%lvFG<.%).{\M8LLEb*뤼2(a2MkjŪl<3F=*_JAH"Njy!=u[Ҙ& yieAsZ'V/Ua-oe9Krl{ ɽn8fOI'h)iN#PVV,߲S(_LV֕Y̷4ǜt)|ؖWv2otz_ԜCnabG3d Oǽ<1 Vu|gvw ΰELh/9t˽9z&Ls>oy6y;('Eз )?>2TQbYϓ0Jf p9E F hctXb>fadg:J97iHʊb&,E y߻Qqw<Zg7 )gW()@ wlKVqs'6:ܕ6Ơ[qO`4rVz%m mDFt..<BFXA;,ZX()r,Or4|QǸ`kڹyйk}O/}@Zm wt '. K"0nҳ?ߧȆ 3q?7t}rsH%eϓlp3bvA.VŽI^{קl;yE )׺NDϑH_ |6n^G`; @YHC1WOS$HY c\Tv(JQh. CFI$$TNЉ?NEL}?8„Cv<k,U7kCXqu^fUa 1xT;_ HFE)x!C+©#D0'ߖ]>'DS%!RQ-0QDi6DϓrTZdQ7,Ѿ 0qܒQt ^ tI*׾cgXfl[M`{L8spdY/]b%?2LWTփ6S*;!"%Y:P` 63x2|'1 _h{>L;aM9lB`Z7y. x1I#YƟ 댽:`W< Vf*YXс;`L $ڼ#"{(Y4Hd 6$,0P5:򯐾+PHsDMtCėiY:0!lOtU6eh юߦeSxU%9z =UVz=qOf[~*z6þ"i4Y:%iѬkm0=%CG[ec|NEen4<#c%zPN*%"s\p)|$b  t%+%-׏u8e Vĸ{(kfe #^sۈUǃ}y:|Jsj9 rcF@lLߥ&Q&K2Vv(J*CxX4S[ɗ$'}/Yz#=>'(IlHZv0O"z߸A3rf0)q*'brfj/&n[/Ұ8{e&Ή#eiat'U<˩wR&Bӷ `V/lt0M C:1!B #]Y}Tdij@/%v~J? x3 7 z;mEM(FB h4c. aM*H@BIs)C\/{0+S@EIƦhle[wh( eFP#`ȃuKn aMYWSg,a/ 縎Z AoP%RG ~!baw}69σ5U2v@7SI #H,!q{KLT{p)QTRGi݇WYHiTceaHҫFHmXn-2f pVCD,w+< B)eR7xZ1HdYCc_*<O-HEnYi'y_q\BeoSn[ SL>Sf>jxZMM;Cڴ q {Y0F+`%yw[nv<3t~#7Ʋn.NjdCguy#(t蜂0x_ułjczmBt5bT-n"*cqZs5.pfaJaK3!Ҟ1-Y('.p8LB9hK˷g|6o-hǛj fߦ.jx+ˍ )1Qа8i]{M҄ _ǚjʔN|N(*thAPI6B% ojtT2#@du(TM`&1D&FZtV*YMmvB,v27nŪ䪞z~5 72;&JYPtZh5&c芉H)@jdH7g$B0 YGgoKS11«r Ya9"W-prEY3:jN y`T~vXgcf4U!{z^vJ"`VX!Xe›y|IK@Li)`諻6i J7A9MRa5${4\cM "G^k#v# 15_=*\n# ާyA%m`hs2k^]-鵞+y˴V^YOgfӐ +V7ۧ5ڿ$[]rBrWb dJo]|5q xT.mUwKsW~qw-t9$Y.[?:l鷠c R//&y6…U *N~4/ oPɀ?ZqCBԄoLm^unX `hnJ7oY쑃2}Ǧ2ce7\D^˯?8^ tK| Y@l>/sF9$2CJ5Λ ><ȴؾkP#ߋJ%p}CZnt{ܮ> stream x[IwܸW-dS⌝[sAjIk/ @V5eYADžZ74V߼sݛq{vW:krbfqxz »wMc^T^^*C\֕޺\JQ)*м(M%i}q_.m%XACkQuqX.YeL7h#147i5<0RVR.mYW{axv$< [9÷a]JWa|(~*UU{=,ɒIMb M)Xiyںiىש4^D|(İ84諸vTBF/ 6,)u+A -̀ S5aX7K:}G cM@d(MЯ{Ţ}. V&`gk/"x-2xiidcԕJbUʦ6 z]\c-Nd$/HYtДдeĚ4\3v]J%ZӼN/Y4.|ݮ؛%5'E!2Zv6lBmFʌ[b?]Ԝb۸ W=t؋a 62vTn4lW5jcL44_͸,jTxU2C_N&w Q Q@&CA3f0ee@m)Q  6ѩ:QZZMSisz6Mܚ?[? vԵ]jk+msaQt8 ϮR~tg>Q[Y~S]JWI FRm]{:&,_; 9'f GyxqMmEM4C47]hw=2 ;FN&I`h\ w-Tri@xLafn-zb t+bkk?}=7ΠSXV⏃-v@2@ah /2 _ Űz9K؊e?1 c=\6kf=L5O2-gP$#C!6(h*bVQ%CLdzc:h|z EaM hqi3{Hs\D9Xgِ"簎| HhN2*IZm&~EZ.fgRg=*2A|sr_ ;8&FIށaiݼ٦UX;N))1M8ƈ@ٝ#e;{SbqXg;dlC%4g#Ŝ K8$v'ZEY fUұmfAqj&iBP&Z!LIq{WΤЏw9آ5HpDy"LyLI0k^%Dq.K 2ޏʥS{NBbJYD@[!SĀ%^ i tނ6xnZ0X{Be>U#v@r4)r.Qa-T@:#6g<ѬbS,{d@" d" Y{MXS4xڛDRR mvQᄬ3 L2;N |MtL2Fdz`Q#;-J#-vzD >"o1,iYC&: _ ^W6$1o9k;E B3wTFϯ2xLlĦ_1^- L$K:nB 2P"ܿy96N4mR,G݉crAHXDĦ[mW0Vl&4(8٣8)oII|'`(" Od`\B1%6/bqE>U}D?8A8WfPUr6sr6˓.cK=>iGgdQ0#.n3:؉Q)8ac/6x2@sjLkiL2fA!ၥL`4'-ҊS'(sN%-}>&A&N'tN=1 R2lD n-iNjʂD8&i+ H!IeE&gދ#;3'dT$[Dꯀh+ҙ]dh^Bs]BTB%l54)(lHn͞5RA> /Contents 5 0 R >> endobj 20 0 obj <> /Contents 21 0 R >> endobj 25 0 obj <> /Contents 26 0 R >> endobj 30 0 obj <> /Contents 31 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 42 0 obj <> /Contents 43 0 R >> endobj 47 0 obj <> /Contents 48 0 R >> endobj 52 0 obj <> /Contents 53 0 R >> endobj 57 0 obj <> /Contents 58 0 R >> endobj 62 0 obj <> /Contents 63 0 R >> endobj 67 0 obj <> /Contents 68 0 R >> endobj 72 0 obj <> /Contents 73 0 R >> endobj 77 0 obj <> /Contents 78 0 R >> endobj 82 0 obj <> /Contents 83 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 20 0 R 25 0 R 30 0 R 37 0 R 42 0 R 47 0 R 52 0 R 57 0 R 62 0 R 67 0 R 72 0 R 77 0 R 82 0 R ] /Count 14 /Rotate 0>> endobj 1 0 obj <> endobj 7 0 obj <>endobj 18 0 obj <> endobj 19 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <> endobj 50 0 obj <> endobj 51 0 obj <> endobj 55 0 obj <> endobj 56 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 65 0 obj <> endobj 66 0 obj <> endobj 70 0 obj <> endobj 71 0 obj <> endobj 75 0 obj <> endobj 76 0 obj <> endobj 80 0 obj <> endobj 81 0 obj <> endobj 85 0 obj <> endobj 86 0 obj <> endobj 87 0 obj <>stream xuV TWޟXͦ&ͤmVu}[QD@PZA$@@[@)*EҺvOڪ=vﰗ=ݳgΙ3so~3ɓ01=%'O\,N!9}àޜD܈26_3e:aɡ78 > g@kPVo)deD S/Zd?߬Znh?rEXR m{KDYiv(#3S/C"mϑHr-DW\N;Z\$J.%ŋYŒBѫg ފ? 3aT\X,ٻ#N+[Ht-`[X" [Ò^,`NlۏcX61X,&&c7& '02OM`r俱))'OMxZ1o1;bX*7ȠC%`@c ь~Iٲ׀3 ?TxHs UG-|C?p'0Q& < sa6*'󏗐 0~Cux {eotI3wAݩzR@rUi]^ #7 \x\_0I#h{UfW#g_cD}E`c&|/%1 sۡψ֞sotVf$ZtS.q|r鵔磟Ǝ8#Ƞ)KC>};aH ,GO ljKfN洽=%sՊ2E%heON=qbSөaě8ASw$9z^B(g8 >L-3C&|@.D+ЪCOj>Lܹ t]N;|>͝rP*: 2! .{Յ?GWI[k Kp?.l EqGAA9D-5pQ50fg#tARsVW|*Wԍ[|\H֝r'-?t9\N=J\47'A_;#d? 3]pv(42|N3z*0_!%QBDJ>u-ۉ28x$͋@*-^m?gBW|;zjR&QfI⒵rz~>:71^y ~ZPM[2\ 'c,Ugwou紧^_e(@~HGYڰ2 `AY7 2~76 q d^O8jluV\lnl$XIciJj79gT\Z(I|=)|)XA3)1$ }(8H2wnCX.1TՓ41  U=NRLWG>蘆Jٵ6HAǴ MMi} RʠfR#rp9t:;Zhռ?4"xfիz $6#Q{7{@(*bm+B6*_;Di44ԻʊXF2>j;MafBBvˎfi"Z| *hRl#=6r?۲sef﹑6mQXX_q{^XO[?*d+MUp{t} { '3@ nhóHOjQty~ȧaz r_4>V,oeþh $_h 3)PU^$m5> O+۠o?ٔWIV<&`s&I. ߶ jGn#d/Ėh 05'j[jZ,'K$:@ޑJݥ:mutֻ ڬW8|+ *D؜Hù5Y=lH;N(XؗHBMoQƋidgB%3PKh{NJ+=uqj߂֙Ib7證F:XY!E`g"Lͬg2L8V[fSDr Y^n$J+\nw`Lth9څVo;{֗;kOv-(+u=OG}[G}JiYXAHE,O !D~BkU€%2hr; ؚxcu:x0 .j endstream endobj 88 0 obj 3277 endobj 89 0 obj <>stream xy T׺C}Z&ֶNhB󬨀 "Ff$L ,3NZZ8{z׺w@}ya7`0ӽĢŞqpE=w =E̚G3gL0ݮrS=0*~`2]?$ņ;݅ ?\]]fQ\XHC(R-EůvڄGGFq E9=*:j)p-ItzgӻN˝-oW;Ib%¢E˜:BGE6ceN+â9{OpBđH\ܜ\M7b/p%o;XJ'<3Il#o‹AOCx;ĻXIG'܈/H"~bBPTb f3W׈Y=AF&.:D|D8 7fVC1c4j͡wQ6}FGջ [ɀ"cInpNeA gaQ)( Vɤ0WA3R5NGQI >\4Gn)MIN4FDP֬,?"!d< y/KjoNJzA5Xj;+ȩտ< GsȒa2 h2ն[I<<6yaE91;+2QM \Ԫ0`ܘ,(nibƳQ2BRb5HGJS[ɵ9j E/ a V {RN :V{Bҁ^#%i%݆{ܪlh'A;Q\]tqVY:{A^p_]?E{08T ,~6$/,_Xh&Õh *9_)Ka.˂~&4V9r PPFwY zm70%_1>E;/D4۷=P~f UӋ <:mc5݉B8ߟrK`[42K-.8*%e P!A!1 <a!r&E-хGK0@נּSwUh"!jFgU{!Rk ;phZåIpi-.1t`DdWzI%BYvS+rKKYhJt$GgKU``(iJ\#0DV"ېN)@aT%rזݢ%MKVOOS w] 85L No]8x[aXwR6ˡG =0GQ@d@LP3k4JNr0>KURp^@ o׶xo_PwiN Uyܦw! 1o:$Ч0 zt; xCQd]֌]6ƶ;+?p@& ;p8z3pŨ߻^zq u^Axt0 ^ Lǘ Cs|p/ U 1#b^ISbe> ,m? 0mx{:7Tu_줟*o428e .ؤVHɆk;_+Cs>E4P2T-e?`rmr" {_K;)xݳ iW}x7CPGԸ' =/ q5aSc8Nr^ A";O7rda'SlNPSBzA/yL!7Ϲ .M%HՑ D*"O(K8gW÷ fX0+MD_{UY*iUm-ۻ':0F \MF33 @垟3#OMZ< 'ŁH~P7,J*HMV]7\L9EK2 xCC}Zk!DǒRE-w77 ^h [^-s2<{p.?p{ʎj6d`Va4fC>g?t(Tc:V/c%9YF |!xF!CGZH|C;RM81;N4[XkئgIUj4aZeeհk 5ox1֫ԫ'{4Wc ))~jRdSKo=yNqOn)fhӴ"[P^ pW^hj7WAvet6F],O gûyɆ%'XRǘ\\8TY O$M6IUYȤ#. ^cZvzv15@*bP ea#bkɕ|%$| :d,LJKQ*ոɣ]ȴl:Jl%26 gҐ.Ѣ'f|h(M (mzQ8:`WzD;m^?CJ>2`n5mx Bƽ5M]m jNac[-%L?BT'( z=$.߆lDnl)6Y@aD/CU0^>(惪B UL+Tx&iށ%i 30AeQ~[]AVgk|=Hz_\T{=k)9c|-(MO^cnb?>eZq~؅YEYMl1+qgCo-gXc!rfpù/i'HFh^}[o>v|K+WS%Btj&{7W$UTVTdfDշTuGy hn| wtSy wybhÇoR#SSqJIJ"B%m},=pF?5ѪͰ2vYs h-gBu]5ܒ JpjRr(Dٷf,lK>*,ZJÕ#asf½{s?8^?zdLu23І5 ׁMK8d^_:BrlUqh̫یp\qlLdTmlcs]mcsLkVVͫ`n|l$c+AY7f_Ǩ`u 'Bh}AF)W>r RΠ`3 rp !QʕA0t2 'pdmw-۝YJ(0''T@!]S)`[4Zȏ$E$gC h]12 tA7ӯsdzvYlh7}.~IK<** #~7}ڟp "L!\S@=jMU˅h+`iG{~ L{^ʷ]4^So 1 236t8b݌_n;psEPQBq*$s$S1\nP&%|DON%jNY)ΙOOvu|R yD@IkIh kAn!XX,QlobxQ[7L]˺;O e.UG|uh{7nr,P(KR @>24t@W@K wrqQU M-UMMQxoLP|#q?F=X`Z%HφzG 8v wПq/dM]/x)&E65^F tU=H;C-ܳ~MT%DTǛF)ձqޮ?5,A~j4IL\v7E h\ȹv}&<+e±dsqqZE2Q [[Elt/"ֺ#6@`E}~]Ag.co4{cD%Enz;(.at|x)Gly;T~CEXY\ ooeޘlwLwC1˺Ɔcou> "]D!RydR)8܅O;p^>Og{o8>tib|y5ץ D&Dns|6Ȃ|aChW|5!`|Gw`^kHyǑ7zJz}]ɼv7v2| 9t] ".zehyCH-9#8V!ZCp R4)c@ _PzNXVQ[/V&.hg 3lt?A@&̂LK;#dg oē~i[ߥ+!,WO"^i^iʟ>Y>stream xW{XW@2 2FRgP V/ BjQvR D 7]%!hbZPP-*V-[+]\.7}{9@yvpss{GBHD")P(C?0};J(D"*,O yJ0v0{z .SP.ٸ?0mʠ)S:N=beq|W?[yH<;77'cpS\fܜ‚1A3OL[*_V_r*7g_T`}RL2yCJƸ%9+RrJM񟑱BA$iD KD1'f+%d"EiD"Fl"xXF,"VID IHb( /!AH$"W&]$5Je=%7>QG}sghǽwmO ^B? *^s;wX/XI^g4itjmeUR-GUHPU.cP:F`(C0.:MUUB%75z5HB`HKds';ُH4=DP ,zO}|!>/OFh` Z ~^0n_8vs_ 37 `gmxArŧ3KW ja@`pw 6 Y"re誰G"Yf^q&C{qOq"^\n %3#kmA,$x#oxw^`n6sySZNSˤjKvAޤ/~z>fOyM:)e`^ [aa1sV4hp4܊5`ٙQ]Nc>!јUq }8g_~g/#,! C}PRqbב]Sp&"/4<Ϸj 5vj͋T8DpW(oo^ޔx!F[ "7"PO`a"H @/b "Q8QH9;؀# MɸN^<}Uw9_q{9y3V_m)9IaCJ\:+l2Ly؇7o+` d_OܜĢw}F:զ6 1$Ka,uYH( _ . ťFrmFZo2З(p;w[\ˎ%:1iC3Nn92si_Su4f wYy| 9Niϥݝ,RPi zG.Ա/A/S3G9BH>_x֋0jZH4[o1vL:`Vdj}Ѩo0KY4UU5@  Mv(`&[(նsK7 b99(#q%=ZvT۫X{D{H+M^=f+xصl84&mlձBY7nAÏᄏ--vAeSnVc^ja6?;w =|Ng,,EOwDC7m;Clp+`yg>4[~ydXpr'':sɿ ̠= KHBP=%']4Ky8-qkR_Dx tQOWEdꖍX9f} /(Ξ9}**yY.r<X*̓.K)Z&/GSh/C?ZڮQpոW@ζEoQ34M;[Kˬ+-[b H/ $p-g5 0vil2SZ]Q)̆f e꫘a΅Z^)L[wg:ǛXY I?rZ_9kOb (XR 53LH֗bvqw"zjc i~msYt7wvFJn@=ˁvښ {sCᲸ|uNvypL.f.*Iw-$FX3yGn^+vwKA |y9 NS sD =A hxUMikU (PRJZWՆj>> !#b]=.r-#>Q>stream xuXy\GӞuCD]tA9@E.AQ@+`b(1Fo } D4,,UI4jޚM/o$o~oꩪjzH#<"~~x5JEO$9&?KUpb(o>̤l a M`̤SZ,덅w|VRBX<ȉOIHO˞nW$Z$g$fY b1)I)I96^,&M?IWgYǤeYZ'N$AabyE{ećxZꓙ旝z9rSb"._0v͸,l'Y;̘hϖ=m:AL$,("&v%|i=1K"#&cpŸ& '†O8"CD 1@,$Ob aKDJC $A!"G !RBN %X„AÈ|NfLœAcb>]d-`= porqJoJ"w JDyR-O҇ <*,ƛc=!`zErb7Ȝga  E5(jHDR ڣ'uX@cK>QTb>bx Ҥ"F}F(EcD"/UZ 㔰C JIjS)fJt,#PY]zmdSWq 'OE~M! O_oLMoug_^sG&h]X+HAr] ( p/~L0m#riB" 2ic1lXx=xt'0/d;jbjX8ʇRp,MI-QӆR2XcpҪ)1& SQ`"[*Ebxc^q܌!8!M>xŁ/AL6DK*LK Jr֍ D4y5?h澔=j~~&E١<+TmGo >ErVʦo"oK|CVi=/);JQwI B ϜLF4@qh n`-mz&!sK^#G4v` #mmrC-"UqVRJ޵r@DXcܗDϔ;5kw~=J 5t1wXȧsל:@-Zhҗxs= twâ#9)dsˏRjGAn_zR72V5 {\4@㌴ȁ;oleE6n]'/rcU06f02or ]:x-9> 1ݥ\&ڪc ^,'muʲ\ֱGQ*jeL܌Y/0=Tv8[2U1fω~z QL5~`Ծꬊ$[_EJ<-`W9$&t/udFn]Xa_‰ 幇sJVrьKtLePJy5F Xɳ,>2s)̪&&.-0&^Q=C9G+;lE)a$r_۪~Ą]>"(zeF{"*Sn򘬙^Ś-pLº*9!dblsK!TˎDzڲNJ7`y\TV/*?j~/u6S0יrvuvE:-wPn7@ٌ>=vV~O@uq?VTr=l9uäN]3{|`GnRQK^sEZj7^/ᙐR-]3Rc—zZz"yv2vk;T'y ǚ:Dq 店^PP Z 7c^U( !Fղ%Rk2јAm Ք̄:"pNĚ IC_&/#'RF,x7<@mAA:.2|PU5vI eLRWI5R3:,MAGN%+2n;-Cl]*m2Od9ܦ~\(XyucMĜ~ak3Ss~4Aʯܔ8uϕl; hc I)?☀UǺK䪽8Vˎ0RmZ=K0|3+b@^$yǭ'.!a$FRQ*%_Q0)ZB!\:] ?]xT ʸ#?~98(YʵC~d@FZw+y.f|ݥJn N%aXW"(nPʢXA(O3GKE]]Y[4&wflh `  h{Q{1cBvAX#x6J ֝JD IdLUB҃JA OQ~ox@D@ Ca`%Uv[oL}ge| Z׷J::V P@Ui"\Hڊ%AٶRI+qgT?/'[Qz̟c^Ndqv} N P,FkeE 3NF〕٫^~ݦDΥS((`qufv6χϣ.l#wځUu]zseدW.bz3jLuLoIr\Hf^~q~81&/xJ^}f=4i-Yy _Ts;9XZsUQ.T?ybFkQVt=Ww9|&x4!s|c}sqֲ;)  a$5X/ ~}`Zua5:LBuvU_01͙R }l"PgKn7,gHb () {.1g&<A).B^G4ǐTc*}ǛYioC@ gJxT&}7-.6 2 ,`boN!`'}gGEϚuacrT'}:%$|K[t70hzw?*;GO@ܽT?w=Bxk$Gz`úCWoA'傸e5E W;~A.#nuCPy׋'HH C;DL/,]ĐAxa*.˄/RwR|i`l`?{ endstream endobj 94 0 obj 5086 endobj 95 0 obj <>stream xjSAgiW(~.iA54ҝ{M&3 -usōַ_H!t܄|p֨1^1UIxZ-2$armu}Y MV6e9 _oV#y=ӱp؂]c 'Cg[[/_@! rvvq{ڨ q_:2E ƁZ< 5:$ [Le4IZ`э1a&̀ HqVn4u&꣨R]ɧNZHz葆*Q̤FFBj'TqV"rc)伅z@L׭ZX̳%yTy#X GY.??#Vjx>ars{t{6NvΟn^>?^,o1) endstream endobj 96 0 obj 424 endobj 97 0 obj <>stream x]Vy\TG +B{Y5YEEe ٤q JI Dj Ȓ :Ӡ\.ļ7]UwJ@iiP`g2-:EUqngjR-6!]Mun~!pP52PAzvU:I"aݢqpqqEܢ 2+T%G'm JE,VNKGEEGmWFJEb*MfFlRk">"5Y,$EQ6HUh-I8_2|{|lò+W:9PT r-;zJ)Kʃr(Oj!OyQ6j#N9RJ9QJ@PKeLPeKBLiQ yhMK ٚ!_ijjku 7 OӳiO:~,yEƑ)d笽*fݩcSӧ;5\VML)pZSXb{n EGE;3rPKʎd:Ԝ[yꛢ⊊>HsʸŠPj 28UO#}̓={KOd_""͑q"$AɕS ,+6G v\<o`?Ph*qb^wj/U5\b?yM -gY0- ,/x&sF 7")ǓYB:7 n.VXݱ|S '@-^+Bv|Uv OLt?No4kqfR dL>:8#ey֓dmZRTPGq|]9[`mN} w^K'cf8-IiJSi& q94Y\.\& '¥hT6shr|L|x!I轆yRlE߲ݞ,aV y-}<.'1!K?H?Ay@՛,l` V?ER|ZED?}>&n5)93i,E⡇MMO>Z"]qR&|:NRpLţ"Hk_xys<xc %I]ECܷǕ7eJ%^p)%'Iӳ }=b.<m JH\{<`{0ߓT5JC^a;A̱Ou;iǀ^>-I,Vʱfl$MZ^|Z0ed}gclBnZ/O/X}G7kk+.4V;M DLumiD<>N d4@Rf;dREma$ a75l[cqd7ŭ*H݌54Vs щs_/ki:?0lsFBKǎы;uoHgOh"XsLhص`IRn?Nl 쉓g%/DeeDL̡v)\! 5>FOkMHZ,I]RVx=M9]m ^ua/›`czbÖ>'K߮_-Thk6b\V,C];FwEB2:vg}N>w_4 BL&2u?Eg$v\Io7A׫::q:R8XE4^ uUd΄Hs<^ttvx|#81/v4^>ՆWrm3d/ޟ `c,?~Υƞ+$xjz?s޷1.ݹ'Aic@[?[? GẂ}nkҘ.^%)1P m|p_h.w98bLzx-(>=Uq:qWؖ[ lPm͞Cяꭹ]3F{+띉fZЅ=1_ş\K&kAHT%WgGУ.TW6"b]$qcoKp?OًR\ð> oIj`( XEi(/}f?ԍ~abcl:L Uo6IbM ut3\ڌu!$7 óa@yٕ2+#|BC|byt^0 ݯGݫ4k7*U@Dw mb>#QNÉ35%MQ,# 5sbs؅Sr!ֆz@pO?>4 *A5)NNwGlzӔTڒ|ײ9tQFpyB`ѫW`D!k! N!h5Ԃ`}εUb:7V-Gkf?҇M^F6yNϰ֨P}Y]pJ;֮ ~8zxVgyBGӼÂWbV~}:}R[?_rLE,_ n1gVbĿ^8WfvحZKb6)].K_oDo zwKCȊ'Z{xxmgL%D7 { ~^ )jh-Md<q%[ /]> endobj 15 0 obj <> endobj 17 0 obj <> endobj 9 0 obj <> endobj 34 0 obj <> endobj 99 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj 14 0 obj <> endobj 16 0 obj <> endobj 8 0 obj <> endobj 33 0 obj <> endobj 10 0 obj <> endobj 2 0 obj <>endobj xref 0 100 0000000000 65535 f 0000069495 00000 n 0000099100 00000 n 0000069335 00000 n 0000067069 00000 n 0000000015 00000 n 0000004191 00000 n 0000069543 00000 n 0000098006 00000 n 0000095590 00000 n 0000098766 00000 n 0000096383 00000 n 0000096805 00000 n 0000094177 00000 n 0000097111 00000 n 0000094567 00000 n 0000097642 00000 n 0000095119 00000 n 0000069584 00000 n 0000069614 00000 n 0000067229 00000 n 0000004211 00000 n 0000010018 00000 n 0000069688 00000 n 0000069718 00000 n 0000067391 00000 n 0000010039 00000 n 0000014541 00000 n 0000069781 00000 n 0000069811 00000 n 0000067553 00000 n 0000014562 00000 n 0000019722 00000 n 0000098556 00000 n 0000096146 00000 n 0000069874 00000 n 0000069904 00000 n 0000067715 00000 n 0000019743 00000 n 0000021731 00000 n 0000069978 00000 n 0000070008 00000 n 0000067877 00000 n 0000021752 00000 n 0000026523 00000 n 0000070060 00000 n 0000070090 00000 n 0000068039 00000 n 0000026544 00000 n 0000030967 00000 n 0000070153 00000 n 0000070183 00000 n 0000068201 00000 n 0000030988 00000 n 0000036748 00000 n 0000070235 00000 n 0000070265 00000 n 0000068363 00000 n 0000036769 00000 n 0000041180 00000 n 0000070317 00000 n 0000070347 00000 n 0000068525 00000 n 0000041201 00000 n 0000045758 00000 n 0000070399 00000 n 0000070429 00000 n 0000068687 00000 n 0000045779 00000 n 0000052316 00000 n 0000070481 00000 n 0000070511 00000 n 0000068849 00000 n 0000052337 00000 n 0000058240 00000 n 0000070574 00000 n 0000070604 00000 n 0000069011 00000 n 0000058261 00000 n 0000063803 00000 n 0000070656 00000 n 0000070686 00000 n 0000069173 00000 n 0000063824 00000 n 0000067048 00000 n 0000070738 00000 n 0000070768 00000 n 0000070842 00000 n 0000074205 00000 n 0000074226 00000 n 0000081567 00000 n 0000081588 00000 n 0000085043 00000 n 0000085064 00000 n 0000090236 00000 n 0000090257 00000 n 0000090767 00000 n 0000090787 00000 n 0000094156 00000 n 0000096294 00000 n trailer << /Size 100 /Root 1 0 R /Info 2 0 R /ID [(lb8Y\)X+w0`;)(lb8Y\)X+w0`;)] >> startxref 99300 %%EOF grcompiler-5.2.1/doc/GTF_6_0.pdf000066400000000000000000003057541411153030700162170ustar00rootroot00000000000000%PDF-1.4 %쏢 5 0 obj <> stream x\r$+Pl4CV#͝6ɦfȑ;6P 2${Fƚ| Q?mXņpxǷfs޼=̶2|˹oo7LmoXeXkvӜVgau-gVfڎ m kuvg(AQ-w\K-׌u/mŤܞ7;-uLhC*-u|tch;f;4_+q[ \ƕl-sBy˛} t_p2Od/MY,d$,xg@؁󱦓“Ƿrt73bB?̭_H -džƉdžKqC7t2:w+'g/={ f^C)6C*SB_ڻ3Uͨ)XMbY34c)'sVJ2-I=#)(\+d D/tp<(=%FcB;`wB/VH%M<5ItN.^z %/D%~,4$K;@>#)A =b(OkhmL<<<.K\AY8nwBM {xY!%l '6KUhHMC(c )T[Ÿ"N nsAz3w.'/զ5TjRKvtpK>RtqL6'́P][ajsT{ GhSf@ |cbW˔(DӽzaFBT+J1ar"G̏Mͫaـ[ k ;dmbm펟 fYuvDk!<쟣Һ9rBoKL;rXqSgNd!Bhx+g`d$XC#FhKFLi>"ǬA ~9~+0d-x}D;6VO3ܢ[ḟk OaU f4W/AqѾ"vjZFRitYY#{zuUi,$ WBY䯨>EjQP6D2plHRjd^C2ʤjɳBEJRtb1ZU+i>'Ȁ+%M5DL^P'9=U>O:imFfx(BFGQT)U*b "22Opp!WZ6l*MH$͔);ȱj㌌v\fV`gevOIQQ% 9ļUǚ’c7O1B5(n3$Eœ;.$ ip9ډ$/fryx)1&Y|&eOI/}k5@baƞ\W'!uUIE=1&&Z%[ɆX }eCڬ<1 3hޛ1 yV͏m\R1Dg,BvZu @2a pV9C\b)8&_ga86\x+!oZ `㍑Cb%6i1sZIҳ֎  'uVrٵŴIWktvqcg"P/:R.s1d qF3<* Lqv>PmѰ-iv1~8" m)+.l_=@PG/X adSo dsy2oa2xZz}d∆(`"'"CQ:6h:= nd+E͡˜LD~OEOpkӚüF\[Q;!=Y|oG EJr'^ۊ9f&3Wmy\eixK *d#C">u1Y"Zscuɓ, pһgɫ[$ȤX{ߐި-8d=F)02w xhC=;ʊ8jj̑@ŷ ),d(FjRPkua~inJP|W),J,Djj% ]:n_eu>o!D}JuV4DJQ|DSbB-$3qOɌ| iËDN}Q2D,FABE>I-ұ݅U=CO01}/Wd6 ȴZIB|yc{(X'+{s:JSwG<i"y2imu ݸ'{l%8咯hA. FB&i!*}AjtN4 d(JyI3sx끷eciK=/Ǣdֆץf{AYysZ/=C3WH Iy?gc Bg}mOCL%M23Z͋ xÑ(h")< M$´^yd $ EhZ3!hY&e"ĝ˅dQװ_H@3LmkZNJNLL|JBf#,>*)QtL~r*zQ6urJ҆G N)-66 {HAi Rɶ&xw%MEXHe'?U W}L%n7<7\+ʏ6#VYKOa"wPKG ;>Q)%Jz"wendstream endobj 6 0 obj 4122 endobj 21 0 obj <> stream x]mq~b?: T89RKu-_Ee1?#I%7 1ݣf),T`@cFulO_]ۋD޼y~E,W7Zwm]n}]ox@u}\nvWqMW?re贊߾].(cz:55_Puz>nv^~߁.Bk]۫8;z= uNwC]Lm_!*m߀"jc;Ph?LwRI_fI7@D}Fl5=vއ,:fDь{3pR,(9Lu߅g:IԱs;ï{Kax~gj1n/rqp\p#uw`q4{/ʺ4^ňӱ5i0>D:NaL=;wnPjgG. Pm̡|쭆<5.JhʰL;Ee&sMe >?C:D|'VrI䓆{ teESZ?ٶTes6u2ġ c#vYf>{;?; 3fS+T&}oR^7HwOo`@\Ͽ&؟7LS> ^6g(SK!c Р!ro-kOvrBڐ]b=Don/9DNE^g0pzBUp4[|k{1VP75l>jan&:)a([ 2^PҤNBQ@gġ[̱{+pdne;WUVsLCLHdpbh&A)s銰94ؚiͽj^\wz]7|J }WuD|ͳA,=L !TWHF6mh(h7dK4d8pnbǧYs^%Gm 9 fGI).')_NU8VUʯI3& ѯic2z|#_{/#BĎ`O-{bү'b S”!/4L8Tk>2 /<#B& thu6L[bݯ^ݧ!wKbS̐M?c:}ɜtзEZbAV~=)HN`//_iAеvy0lܠ"nPn2gDDf\`ED4nڅC9w"}OPCJh&t@k~jjCL'!(g 1*垽-ꚞzɀx={Ο_Sv-NOI.I1e$9Iq&.9oJ$;MϨ@I3 '`is wRJ(6q_qk„[c3b lZSf#OBMmT<,8W=,QeIVY嫩yrJi̘;1=WvzZhqĂ8-L헱"!͡}B2\d^R{]E$}܋y 8cI$S9IavbOqצm3ELkn9+B"GG 0Gu}LRк^l W[ :lĪ :T z5*V^u5"5|;OL7U'%`BV8a=3Wň00bCȳ,ug#گeop_3frB.px7RnQKcyIjGCB8u:Xg&΅aSMy< yBD4mqW J->d-4y8ee63 lƘFfX[ň)՟†;_]D"f,ZʧBiyм0X>jR TX<[7Vn6=_s贂׵管Z0jy>p.0)'%  HҼ%rd//$`b =rk2Q2Ofx.QbL90흣,9lp혟.>/q6,BCB~qtp \}LcˊgcSUxZ |engpT6}酄Ft]1g8Bi8 xGxWVy,s9%9,,I8ѻYM!ZMb҉Y2"QnV)&zW1cɑFwzPpʎ7u`J gkWw_ڦb^#*P{.X~_-/yh֭J~_ij5yMapQy lLL*8%UwH.xʅq8{LpzuJ@c}r/$x\F8b&U ;+]l׀"Ɗ\Pٺ3H4WiHJ՞a*5 ~l uaC&(|5_:ʬ9k޳BnrVmUc_FȲ/jgتK}Fٕ>ESV3[|V3lZuNX+>5uTбc[Ͷ/܁vE,:xgĪ%f,3>\$85mO:E;-94RwޮZϒe_:t?zD`TxoĒo'y| l/Evyϳ.<hu(K`<HVȲ/g8Kci޳s5Á${jg?ӓW/ qb=˨F?h`ahP}/5KNUH]?V9j@}ULʁ]ږpRXJ%&vVpDZNwsǟl 񧨦eAǪU?GajӰЕ ]L!+JjB ϸp@^,T8øes J/xAI+KQ A"'9`83DTQ!*<ʈpLT3|`(Q gE( UUEdypQT{iP=] q^;3sF[Nw\]%U߶Qendstream endobj 22 0 obj 5635 endobj 26 0 obj <> stream x][s ~ׯ8t-%͵Ӧ4xtRKǑ%#%.:|:IBs  { \,X;7/v.N_ί;nAۇ/-8Z{ǜ lfw\~bPn?=[~5gNjW i+6h3˗o!3谕٪{ޣ*`kpryPZ!ϫx`5OTZyCˁ!M1skl 㟏K(V^m1Hk֣>Y[H3S(AB#%!8G%V B hxFe/p(C|CHHfHqI۠K2"zS]e>3BQ7C\v g܎E.3"zG2v/]HVjSeLuLd=avS."+`mvCd/ՃqJLvyd z9+d&؎ w^,Rs{ pQƙFf G*lYv#X腤f|Lפ)3jiBJydtUE#L)QW/Iow'="ApjYi@b MǮDL%[D_9#sSɭPypȢyċmԯő)"ļ``a}Q@m۾!K[Ou?@F<3Dp4"ȱKvn;qG8gfx.zq us GN!$Kt,nmRjlM?U=m2{ J?9[꺴l *7*=fb7PFFnA/kl>16/W|W+xcPJLb>,B &F]RQ&nvOԾ7;%,UG$EdB!6;ELds]o*˙+:j9I55By^eay03]|m h#F7t%IƩ7溼u[wq35}@qWW!}=c9+  f&kLIH03n+Bf8eU]~Sq321Fiwc6WuXZW"p:^C1\Hݔ\&!X')ih2áp֬xf-:`S1[%rkBgIhy 4C1:ZF㠰!svȶ/%y%' xc/*lQP^@0h:I(8࠳>\Y~;C:l@ \Z/K:qAg\Eڑr8Eɭ{[G^OAJ19h"EWl~$}pW4a?dnu5Lj 4Ӑ.3yU:MKg2H|LE]PBcs1՜Z5oԪh:jW(lOގ.zã՝ xE7e80^y|BlYɳ?v\l =wjkxc ͟Y5rBhcq৓m\۩ugbj! ec 2fhUᢾ*}zlGyubf>,TZ;HQA (8 }w>6S* &cvh4)~]yQr#Ut}'| ɜ:rL zr(ri 5ntPc b%k|:y*ѕWLg]YM@I2]M/k[g4?YE';lPf::C֩h>4 M! g"G. mZ950Nx5F>/)+bmΜ7q~z-S]v5JP$韟8܅u>[ .%ޚ4t >ӿ&T/b?qM>pER(e㠿m&os@i`#`Qѝh=^`(V/du'ҹmg";<=gB*|Z&.wR݃K}ezQ1x|1EGsw22eUc&ě^΅o 1zyX$ώ|ڏ(Ii Dʸ'(cTo ߝ'4> '>ZhZA꥙XaDlfRI}”6'm'(aKkTpPҀ?YS>}7#A?9V*$IA"_6ڃO(}"dOP"<[.}Q;ӕi򰁛`QC!]&uQ ۶t6q>k$-c tɗ vQ5dhPnFQ3߇9QB!])=v׆3zY9fDѽEjQ>:5̫s@@f)$:V5(` 1#4*uMi^bFnᨠ8f`!>Uz_qHzwqB6jܔf#H GcIG򄸤)ɔ|y(LӒ̆dҶ$sJBv c=c=cn08-u` NLk kt(M J zQ(?X! BG (G!0NlwZȖHl ɤm!۔6:Ȗv[Qw[WA![6?{?w-vzHܥpbrh1ݒ}t6pڙ2^h6RϽ}# KЊ<+̔Cx(v߁':q~`;S]3iDy/\g.t[3b}蔉/2N\'dr')|D!l;{bg46xϔ6&?R#س}Ǧ<}?`!쉝5`τf Sx 6r);!zQS{zD;HhIt=b=]"-{XO"b= ɤ-3NKÆ_JKߒV*|;o0Yc> stream x]ݒ8w{ή&ʅYvɑ&S_fF.Uz v7  Hu%V"IzӮ_|]-_0фo*@Ѵnu`T񫣗G5Rxۮo7qBinDc}ޭ?` _om#tD6Z6i24eHXW8ln[`ۍk¬ǖ 0tl?'O dT&N]QV{:yYi%|fʛ'g-XzȲ:(S/d\qk4}\ GJD9,u8:O5 PƴR | wC +ic4><`(5 m0ր߷l<0 n >.tR\j[EցE:- էH,odۘ 4FD*՝W.G,*OKlI/TwC, -5?7Ӿ[ 624ڰ~j2cQ'w@4 :. mb(] z>a[q\ ,K(w ?@uƔ~PŸͶ&=nrxㄘ%Uj=v4-(5&Dʳ.]MYh!~ Fv , i) r .3@_O{1heN,L-5B%TβiS*+jL~Ejӝp~ݦmaV( lK~6rBTH;'s&sqUnI8cK7I Ef / HS[*lExH lqU&L@Ez}QCrC0%f4tr`RE?jC]%ʴL"&pTQ`/"?Rl@V>fKF>c7Ѷխ]?%{O #{;WT=!7(7DNMN>PU#ؚ6OѨq;0Ոg(ڜM9 5+ى! ,iCJ:yL Ocv%5<1hWvRk,'D:P D=d'MKzəŝr*lh?I,`,>c"d€٬iAbDrMN$ލ h8׸h@@( %,~ov+'axJ.W'-ڵi9G1v˥\NGQ(Ѥ`тmDZ`x^mbΎb%"Isq H TL^1ptqG0`voZPO+\Fg v+ZJJ=iHMEvZ;'mKNڽn`>CA{RiS䚉հT>*ըQϖB|uAuM 9`(;g$I]0S/$*Ŀ F m}1iby YU$vH(JG\_eɕa.v.*R4fG [{}-"X=Ӻ>`9@w= *CJ99RtQ$D'I7$S$z7$/Tдjd&SMfщnd_S.7͎(E&c içkrVh w1kĉDj|1=B~6`qhGnO9sLLd&AO..bW!'-&_i2OF@Tk*IBnwCevMֈG#`O:@_M~+~1pXn~ՐS?NM4mrL.VGٷc[6 himGa7$ߐ&dv^/2АRJyl4;fp?XZ%kg?GB<%`p^ ae`W$.^W[ģA*#'iHM;_ģԤmN8xKiZGS?i_TRZkVPi!/Y?kЩA,>⩭l5{4̙vi֊?A Zy.-_|I ;%ٓ;Y'$σI8iLW0Ok=X C<|m> k֟P9O=p^N_8˫ ƧatBF2xS;!۹Y7 \9dޙ;G"8խ?Dh~X|ţ%+ԙ2a`jl"PI:^e0rI'@/2,T iNmX$cmm:h~~VMq t!v󢫦F_P|^Dp/a a;RϠ6;=0A@&}Skx4k[/˔-vտ(s8J $\O=2xKW"|D-R3'8 ;m6 BsF;w8M r 8pWVY᧣=k'Deg0U( ~ڣY1"Fr4ZԖ95 wMu88e" TI X t0)WJ$<=9]t*x]2J'(5V'VHcÈ/=_+AomD^Ųɦ4rN횋9n{GDEbػm[fxo3ݵI WKC./bJϭ) d8Uwf*0GK0}Ah bL M9pOpNQ^|.>""Q5gHmf\D+ ty>b] 6 => RL K't\ZFr߼QHm?3D3VG8r%zm"fim ) A}- 3}CJä1="9=ʪN [. w2/%S- {(ĨF:+D[yH'dT{S\BmXö"x&!sΒ6쬫hC|2?iٙWΓ!pG^endstream endobj 32 0 obj 5022 endobj 38 0 obj <> stream xYr5}߯7f(VҺBHpI%Ń^'G^Ztώ ɦ B9ZӷF חϟf"d__6_fu" Uq5Et_J bn鄒[pRwRmp&V(+oƒ4]u(e(U+/Ɲ֤ mSB]{E 2!nN|7~J*m>dklebu9Z;WW>SzbNhtֺbsqm82}wr [HlBlMN154?Y"^8NZS*ʴ6x xp-рm%" D0I{Hx'r¶?e1GxrߞȲ^q 2{(=`RNqb]&;hJ0Qmsc+'RL鈽#uT:P!$l:`ᛝ3-[C5Z WȄ2q>fZ &Ԣ4Oa5*X;b~Rc.:%mΧT&{ڮQئ;V(> stream xْ$7}n]> <`lcqsxw`>LUeuuόo8VʒRy)Vj%ҟ28{qOQ^:(t:'c+);aVǗG1s[8Z6=3au?[butN('mp;>(mXoV&h7Bf;o1Q(+ק8+]$?Nj!_n\Bf"AZ';2tmǿIJw@gnTՁ.{Uqi71k7o7@zY_"{t0k]a3w{zFYn$iUb Nsީ?Y+dbVx7B-l]CEx Pl9 ,Hk@peW%K<; !m]IZt$X_ *w8Hߙ(4}bA@AG fu1~dWz,IR&PE%Ph~t_0z#c'wٷ<ɄET(EJ*(FTpaZ:I"@b_c̰[.jX_!s@wkFutqB,-u/Lac2A1'tj0i_4|JP|&G-"`[53/6c}]qx.@>,='K.%/}EWm;ke[_~]/_``JJpȕ|N7;'cI/~`ʃ/prE.%5N,6\OtH='Iיgc 쀢v +'6#G |JsMBيAJC65{Vm".I^0_(rRBWu$OONdW "b^DU/i-R߀|[Én_>V x jeW :MoA}|颾erKbt $>$ߐ@"DFAjcdD<K{!"sk -BzՃ"I>8>Ʈza!jeMˋ#Tdҩ~逳A0A<: b6XI` d$Ǻ^>DvD5チU@*91BKeIW7AAUMiS(BxZGuܑuֻ(Y_THQ!(A,4}ڎZt>>{CUa;q2 f)H S>OC^E}zɆ扖r=5s?K%g{8zo䁌Hc E"A8(2{iՖ&rZ K?%T7 ?хFlz^9Dt+gߡR/I Tz3(kzgLj;ި=J9BHy.. yٰ Gyg%3@O:>==>agAU: 9ijƳ.L DBsl(#E/96ݐs^;=>atK7ic0 #wd'L& X.)kUҞ{]a b WFSadɰ9>p{qddseP&`MYvI1Uil T/{`yٝɗ 75=}Ȏ׭%o[gdU4Tb]hnVx3We -ګ܉JJ@h}.;ⓢKH*B x+M{ .,L4i;F'ŸS4}[e,\MX3m,EzZλ[vX."u1WT+c%IBؙgl+y2uG4ťdK194'%=,6k;j_:S bL2J]D^hr?N? yR+u6 &ѝpdAٸY]&cl?mSQY9׫ΰpGjxXF%:qmMjj[S7u\z0֋ {+E{a+괘GOJs ."3k|ďЛL'z]=!/:@4P;n =ƛX#Ky~~bwK)6.-i8&}Η׳$u)\sRk]6R:-.AZ-?[i:g[ f%)lx+Ne邢vwMzi)Ԃ@P˰:4eujشff{na ًm3*vM/:\x.MCsFYEk2t|[ȡ1Yz3Bi:ȳ;Qc[*%Gtd._:؛(_ y='/<]mY|1~WQapKY)ɶ92 2V=,k7`g%*&j;%:\,`"{mi*{lFkF\)dǗ (疠G2Xc+4%%li].[Y:kbACU3'b@<v{U6ڎ4Ȕh;ha,h7^rqcDʼnGiZHÉqUjQꂕǿ%Vjᠻr٭<>v~;u d fWv+#;i ˙]ErD 3Fe[`PXA㋸rheѺeQG8wx_mQ-,aҾ\}hQQ?YT&8~ ;ޔ dOW{ӋDQVB7 (}wNGl=w$Hpcz؞ϺYu8}N6ZLy=Sǜd)NI xo+|C/پGcԿ]M[}5ТN|RVUJwU}6=\`ԏMe#pFS?5NK JUCR(M?'GE=& qa|MotCz9hb\Qf`v6 ?^]{39{ *'^.]|Q]x; 3 ŵG7 wj I ZKR m5 96>6,g|o֨Ml 5KC.U-|haxv - `ashh!N wf2ЍR2VkTc_'[#q/#,R{o'hcyM- 뮣F<\(RՃTaղPT%'S{Uo{KÃ-~ 6Gdgi4sVÿS~ |; ?q5S>B8s c|N)(-ra?I8Q g.+|Ȱ|IДc'Ӈ8!dɐ${~N}2=i(cd[d{G̤rūg WQW-zL3- l6/+|2AϮ/Ѓ_&Z/'+{-P1k0cy8!2ιDjfhGl] `"KHRB cNls-ֹG ²vvI?y+dbwA=ɂE<3*wW|6ëToPx $)JUH텨{%gj4wfO(bwr,y lbs-_MY@vǮ$iƅ^VJθ%6 0X[f50860O lڻ|Rk/Y<pVϴ:Q~aߝ0aB z1k[q3B.i!udʹ20N._#jsF*̺2é֑!/I.}o\?_S^,x㎴7F$B/;÷l~(ޣU4?9\f7,({m3f-+LѫLQ˙5 B/crPU( fo G~al4rC0SҟRG?~#&?/Iw_Tendstream endobj 44 0 obj 4609 endobj 48 0 obj <> stream xr_N}IbGQJ"Kt]):âd~/{Ә%)vV bF}BJtaqru/^|u}phDžRB)ECZ$@;jŎÝ.?YP2|Z[6~_^`6PI|Z;ay lbDҘjDp~$S}l~Sg:N~y2!9|B(4t^FOWzDs$"Pi# ÝG+-|t&iO*, "vƝ P/ucDuRv"dVh'd#-RM@˿d!y@ ^giTk ,p|1^ZKl3X`\6&K!ٱO2uXWvd-c&x|v>̭,tLI l^ l~2 C #k 㱫U5p- ےe.XKo1,@JB:_*;l } X:sY $ @/+  (da~WT!f=eNۨ* MvX[xw86N,3?Y$V|fpa\ԙր6IVn#"*{!ShftL;bk wLQvK8{u@,a&3ԑwJGRlP^ Zak@3d?z Zr16 .xTىxO<׷${-L=l\ `q lvE/Ѓ:34a{4]%CM=ޕ(>D0N0 :Y~~[hO8e TT>;QAxkyJ [2[prMfqY> .[lm{'Zye?cې'ïgDpP/4=+~ɢq\][&Cˑ77/I>چODH, tRT̡f9Y. #)3w6OZqSJW7@P|0"ly5"t>־܄#ĝqdZNW(a27O H4[23ȧtK.݀}gJč=8#ft!MtSz?cpO"bqlAwlbptU5k5HCe=ѤIB{M8dƻn}LY9 Y6B1PPփasN0ѭ)c{0#2'&Ԉ4Bl8l}e& } ̥oBׅ>] `.p;q9.ɄXz}hSj*YO&+`Z 2U=Wq~rG[:&^w}f \Uj^M<?}FȻ)HУ6T,H:܄3!;~#9*#jtubȔ5{G!dmNoˬ5< |8'ʎ̢#_lWdj [͗4T07zwC9>lLZ9nm[ywՖSqs>CsT;$8%Hpfؔ2:vdns^}C0*KU"6sj[QE6S Y=`ʑҞ7U6a.gvŌyJ_p/ &UYg%vQq1f >$#6s Иp:4j-!KL &>ѬbʡJ Ě`P|m$R{RoJk2pPdBȸhTtHE(sԥu0Tp8ޅ0+̕j.Z)nyh3l{owLgXl:l1r] QcLֽ;VҘ[uKkX- W9k{[Hց_+(\ί:H}48i_C1aD\M_(,8;Fxr> 4 BZi *o3{sڛi5{~cd5y6E8}܊]~9u$ opɱɅ{8:֬:W^~f9bR.oځ?d,F!0- אC6m@8s=k9[ewFbQ=LqH'q1XC]z̦q;dS.%##cqA8Z;yo8SO84aoTb ^ !YL5D +}1 MwǠSO(HG#E]qsHY' ^p }yJ0z{ ~x {5C[ C7< al<;}Bno:EgME+gDa"KagWmX{ym( יqXg3S*]S=Be ٿ"z$mV[蛶xC-ؚ̜x6Cs:;<葉s}K{M ^$N㣯c[eGg \$o).nSy/ȝ|2C+:>9k)~Z2zoi%h|W=pgupPmJʤ\(} h=84\< X;g.E]'xmR,w-e+iMo&wE pclr 8> M: B*Rg \u٨^%N2t!Upx=X7]!8&]`6bX#hKGpzloz-̅Z?0co1Bp "gi ly(fzD> stream x][w~篘Ǚl؋{ok;GN˱@ň"Cnh ӅidoΉ}SKPJ RD<\>gIj^>ۉt'5׫OπޯY8C^1.W^VgO֫_O_==9/7nqfsj'vֻ>Ǜd֯7vVq}IOF#^mN0ZeL4e9>֞_acp{|q^Hizоr{@L]|v:fyF~ʛ duZfc"bufPnUdݡ JܚM DhL?Dĕѩ(?5X+d^! J 򷰖Jvs J+|e0C} !di<Py`Z޳>KKQ#mQ['1If}SyǍh!hS:ضȨ ,>e U]!> P-g׫?nda}kDRecTnGuӤn6zdzM_̠T@`~Veތ-}|}wS۬{=JqZpWQRd <$8(߉P'8 tȜojFcIK`._y .z y^ۮXfL3+]/5Oب8hۤƫ RCRDMn׀F}Ou`]aa/NjW?طGaW6xƮ!:EX[ʍF{lmcNjD*@ZmԜV=tA5̐U7i?=UJA4aqFjg  X(ft__p`?lt>;!"t׌L\s>(!b?ۗv@KH=gyN#!fGUįkfR& 8SKƄAɨ9*}Yn"_~ yy.3ҕ=;0!%t?hsvbG$uqפOa`9<{|xpIx#(_6ZQ{'}0Zii;zkW[)VVB觭$A1ˍ~&0VL2HCB9q ּgQ`Q+0ЩNYק kR^%I[Dd$wL~Zقgl순8MN@$@b^. wS@HpGhL3m{ryk=HQn;f0 hg:{Qjmoraҭ5%q=g1T"+[ԖK[[ %kD=geLѝWc`w`,Vv)(YdL35uLBί%~t+e+z9/LA#gb I'd"bhpǬDxS]ޘ[+V@VL4Qb~sʘ&kd2i%蠽e"?vUa;%DnI=OQ{R)v+RnNXh?n؊3Qj珵BF4˘wd/AֽƁNNZ&dB|5|_K,#{2rטUETfYU&X=hO.8ApYEY~S4YLX(ZV`QM+lNj2 pPϰ1'ݔٟ|'K/k#OVFG\nF7sNRl !4B=va!IHlW؊lΡ6I(&&qo$*-6[|yh^S2%?5>j1[/qE7)!@.4]KLFx $Kjmw1'V8RWHnbYKS G1/ ?FIb%GzSoA J)"%>7 *;6%B`ԅ} Iz^`Mƭ>~v0S7?z'Y1ީBrh$ެv+ ;GNen*]6EG{QFHdq:wi Rz^aq))C(^>aO>sgdA1e N$;}VM|U5>R\TKw:yo5Jgl_r;Ύ`.z6B<_vmzf.I! yzg g N73o:+ %Ey%NY~lNo9zezQ=,(Cq8=tXFz-cY,QGՀ$qwe8 sXͧIޖ†DKhgN9| yBz* {ժJpYf6͎/Zy׿25!iֽv|P |ݸG eIf! ;y#?bo5' "SdpVЀTuCe]-:Utt/?uy]\-8QYj8u+]U}O$kXe;Nv;Ü8s&Yp9]5{*cdln]uƉvG<]zl] P7M 8|"epIAgm~94ޫ ^@Tt}mWVC~ָ$$=-YHmv6b~ni$d(l2C2oLtVYϞ?\a#oKo`Hap)8Go%'r('>>.?qݹoީ>F{;1tٙYF0í#3|ckN$tp ݚ z~ӚI+,`cmeò#"k%{]lZ7 m".=:ehg˒#)t&IHm̺[aTqI&{'jhY5'tHX$ލe蓶a=O9'Aۏ} ,1~MTgK -]YzcKnmNƌQ0H'&x"ȍaP`oJ1aO+3~ ~N 6(*<{~bs9H!tA '5> n+3bi6Qtk\;䩑MS_G4|nIjW„ttn?%J"Ȏ)+f0Tr-z!~8 " a6ұ uѤ1yrhVÄ"Tm<5.´gAein.TG)>`6jw[ [&jn"'Tu %$Ģ^*Zw-#,@ѻvT/Ȓr}Ķ67R \Vy2 1!=H8`xak^̬ p|#E[4Is>)0#g6bCnتq{ VXw̘ -kj?͘[og?UIj]8;ЗUܳ=.̽ e5jVA -}_`wAE;օ-TaE*-b}/%,L둂.r`@."y:6{QU1f8cebʒ3n~h9rA.nhnGL@q)b^sv|.oeq<iN ~,f]x/*rW#~쎸x/F~Jx_#eU 0cY<[ڱ^_ч XYēJhn1r^i8I~{D-B q&ȑ:#E.D{"=wOqcOߌZ“1ԒaW881j“ $Ye@ (3p{MG*(UJS(zB 8'05jGP$iAvWEHǪRmą_s=FU`>6 11 yE,7avUht G'Hp𶮺뒺;a"2];UGp !hDQ$,F` i (g抚5SϏe75ym8YZ &%R9慂m_ϻ_#X#aSKzM4\J2M|kوi-z'v ҿ@Ԛ?Ჭw'^YH>*dv ;HA%) JZdF}hy77rWi2 a+O_&H!TZ8._>V\  .U?UD|Ek~6:QMW3oL:DH7\ YkA;,@E<ΰGw\Kvc E6ݲYj(͑ˍD#@-8Hf)Rm1P+:?68endstream endobj 54 0 obj 5692 endobj 58 0 obj <> stream x\msܶ_qzXHM4m⨝87%Ŗ? .t&K`ogޏ+JOn:nu^>?:w'@WR¬DUD۹᫃9T/=]ٸV ofcZ'vF ϱ1 uBt0ZƶZMh;I\?2)v+FRw/uZ0W:CV/ ?)PR;<9xQV{:y:Mba 3_6 zY;koZ"juUn*)2>wr&ZhQ)GND\9k뜊SBFnoM'iWHEo k)o 0 `O2> !8ai20L0ƃ`/QPKQHWmZ:$\"+Wؼndך 4}C`#"dV,D+F^l)b\Ok4jdha!Vg@Sh3!Hv9zh'Z1Iӻj[AK[@ Sa5J%\zG?.Sf}W4k,/Z!EYH-;Z;g)2Eb"16j [%rO4q {4uR vM#l?. cJh@b}E@{^%0C!W5w,;Mӵ^[PYGUe3!a`^E)=ER4U-Wd8Ax8!3]֥Tte{R 2Sc0M2 L"C>* >)WV(YEe~ `5V6]!f4dZ !NJM2LMhtcPUIXy^_pA ^RC<ߥ,`s4i 1!ڏ7Ӵg^ C߆n7N@V#S&"<W1NoUg ٗZ _:-/)z܋)m3GOaAPB#hX~b>ʜ0> l똲j`MÃACv P1vHAzөTtk]Z/@h~BRg'B1ri}|uD[EE2˧w&x[5ۄo}Zg`1:oc/jFĜjOIfYN$b@y۱EoY _+ɦaLvpD Hv=%:Uy$8j~C`*&޷Z6jIRͤ[s14DW;d&.ؘ@ZļsStzS+3 z%UnfL&@k +[UYhk G-0T.Dx@ZYBQ"bj% =."\ js55Qm+j!!M>*(NOXhlizkh#IQ{%9J*V2Yg eH0ڵ{_*^I)ZI Ynݎu\Lc11nVm&a{<5 `-ZGCm>t! td+B Km}5aЙv%SCrH5B싗cR̜#L$&3G}A/8Ŷ\Vc*.Hh8ޏF?EBnK"vA`i(G:%r5Z-:&QmOj{1mJ"3)`ZIJfa}UEE zk{7"sEn-Թ½=݄9H p3i[F X12glύ䬯 SΘ}\ⶆ[0 5g0uBNq3x5x3m3{:!V3\F**z Ħ#Ԃ/X_m|.dJ.ST0)7#ZYq/,tFe2R-6o>Y Osg;k?̋3" ASå:[g68?bw(}dtL=.[Ća}Ҝ-cPS?񾏨Fg\sᵐ*vZ]ԙL w'lub!3)i-r\%#|}{?vl5Z6gLm#[liq=cHH;},av WR&;.3L(~}?yendstream endobj 59 0 obj 4276 endobj 63 0 obj <> stream x]r}WLU^vx0;J$#CJv(rE9DY+|oӳ].)űU14ݍt.K'~e˗'1yqyke/fS(!N5N{9C9}zh8}\s;.WvbRzigˮkg1/U+nq\V讳PRRVuR.N+Z+54^CL>-17'K iY\aKuj4Ԧst[ж{=Ot@;8y[tLKAЉZP rGzZjm@ S|sU+J$ $tk0}u'kr 6X( F \  -弢ԐlٯuJ+,w09E0v΅ 6@8'0uڸ."E&5Ka[;I?]JЖU2JH=ИRau eBu}|}Hv Z}}_!_C5 ɟ·~[b."c{n:@Gx 5Hgw>3R4+AUIJGjUЀuaʢxvNAb29:uNpJEM Lq?KhZBZ_`kMoV4SR?Eau#/3LD}ɜʖ " . Q6dF@pd>d%`pEpXpOe7Ev-h[IsWQ.]qjjS`iAD!Q wP Еv2J%R C;yrU JL28\rͩ5'h:+|׃8HJu*3B&KarZ*'2`hWh8 Q5Bм$ciM]s<&rmٖ>7xBÖkq_hz ϩI*Z5?}<쳰 |!jc]*jj ֕/QvLjh1z11|lW[0@R?5kN2cPM ŝ:GNc0f?7!aÈtF["8(* ˮn4H}]J""fhVFblbjh EP`X ?lXCl `U:?/u%z2i!AgDz9#]>wXh+>D\sĚ MŽp-ebbqt֓-;/ˇ?94b{^y:2H?ǤM' #6a!9VJya9'VJU{V*> G#L]l79 M]r(v1^Ś,vM[.}L^qlWk,+rF~+04֘s(@ဉmZPjXaZ;p* 0EʝV0`׵`#&avoԷ! - ~I[i e棈V8ܭ*pg =p]%|^m B{uX]r\AwCJRs?]XAg.Ifr;cqRhR|*t乓϶ {pPfLC"sC `T1S񘪡+3TIv,g[{wƱwcyX`HhñZt+͛ _ҕǑynH~'zkld4NRJ|;3kcOȸCqvV~ q;3TЁAMnp͠'<ڈ9^Vr95ݍ~j|(ARdp&[7k>7od7\+3#cCt9$Ÿz\=r^p %(kbnW$U,&;g"f=㝩×6N̰ʞ\<.8t!̘;rZĒDEyf>M3>%#]5g ÒΩ)4IX(8aV"rYb΄ S,A؝ʊvp璑:d6HVWj7gr|Ra6߰i@ aJI3vIA)v6 =‾g3.9`' *1;EeRs疹c$o⎃]nV.j=t! 1t%/@k uh<"_"{O#DkA}5@[Qzׁ;s9厤upHG+yv<a5'U9:GJ4hevP&Uam cH_s:] t^ԳlMay8ם3.8g1{ExƸcO>Dш9igK K _L]!͢qVNO}eT1@FGQ2`3@4k@u@گb"Q|ہD)lswgjWᡕ)L1`P)ПqRDe0.orb_Ed9g84{N+4AY~ѦnXwM.&XNF3:4!6 soFlqp7N -'h!ۓ{chW&XfvCgNe7vB63^怰psS}Cl$4:jWXKGsSgիG'nIg6D(.awYR>I2|XTbCZʾuo }G;"#[i_֩M[iH؉\Ga^t9ʟ⸕ 111CI7:aɸcR^ްЖo֦/znH&cFojnf/nD6 By4mwcol JTMYGhۭ qƵ]o<ąhQ^Ea /*=t3^WL-VI Վ<$g4T\"T/'|%Nrs(ػRIgn;W\b/1|7H^i1oֺfI7a_L#֞<bȴBǻ-St~ZVz1NڃƽAHa~"]F]WkvG_D׏'/if0l½q -h@"+!,180$ |\RfjKMذ`Z{K0)߬kvNX#IO g$̀<'Iۂ8T\ʵH&U_5endstream endobj 64 0 obj 4305 endobj 68 0 obj <> stream x][6r~_qI4\xqvkz&O^Wj47#ɖo$$ fT)`5>D#N?_xsxpsд._vR6BήOD3w ٛpӉTvg:9.iޞ3MW}3F? on1NJe-lӷ?UQC+h*Ld,̏}Fo˻cFF!L]h} ڦ7"}ԡj\˷\m[bL:>xg^2cU:|^GnuOZv-e5 ;#$kbu6Sx߇.\I J> fp ā#n/h?uD$8L=!7[C @r9=Wc`&,+v") .ݔ59SCr*Z?k <.23O,Z Iу2:ma^i5%Tga-|t?܆|rHy.jn]weh2T܅ïwQ;|Vl!y|SJڮ{ءGH:]އau^Ó䒘Ǐ|iFNKZ9 . z "qNN'ёv{PN'U'8ȚN&B`!%gQ&Un/2&'lgK:NzYjG\{B Tabs]\7S Tsq֊j} >Qcjwdawxr'J.\p,Zy3jEEC9XcF,gv)kß$PȏCuAƞ7nlTQZVXe -4Ҕs-H7S ™u^j><E4GhFc&/>RA  H82j9%CP[/P^ Y=Л6ך+7V&) 3_NtUVfHV@C8(A+i MjP=i% YewfVe;ѨNz+?)9G(MS>^m!O rkȚ Dkb`hh٠fanua1|&x8d`9 kG%uLaz !4N )au+8X}ʌ<̥X\| FUANTϡfS$a-gE¿};`1g\/.ȁ/O, \xKf2p$`6P*0O[r{;%CqF7`_#uKz],]cqlH_A>$߲p~zylbݬ44%=Mm (+ hjtkښʜs'qyp/̯̥ GVm3Ȉ)ݹpQ͹.Kg[set-FXPIM b <ސ`d/$oI#L >0eQ on)xTNAر*$A*Xo_"C9/7qisاGN|ge7vtāyCrOv:Ni͟6At練~D,n)U 5šMExIo_0 *du8=q=3F{ tE$g&M%hK5ecS_M`DjrP,hiL_53 '$V[ Iϵ\g42S:3A1WZdAMm npD9dّ6!f \rb`%v9 A-P<;2VY"M._ΖN"תx~𑊄L,M,v.-f蜝klNFjR B5 D H| ;N.on2`)ϮB,7Bݡ"ߟi(@id-dD غݐжHI 4CEsH Nұ@ʫiғ}j툰;,$%?cgkUv2@c?aA8_ˠ}ywd"ü8FA \~,,a2҇P% ;xVHa<F)xg$IRGD޷o]ɜݦ%hp,xi#>(h-3׌MK\=tqڝr3')YI#;) gb-b5=Ǔ%.pgcϟtq rse -ڿ'~@('NID9AYb "=D5Jd"feN=\rzxDilL3H%ٕ~.=i֜WJK<8+S'NvBЖRiѬ wdԘ3O=9"w`=n!";uJ~F$Ul>m/C9eع-/1I5ZE;),KeAj\AojY31Z Eg4JD]"wH-W̛XnbڍH)̉z6雗$^ U"7YlH7ȡDp+5!1JZ4(il6dY4Rs(~-ϡ8) !dQ ad?@ԉIr2.g9;nBF E E/iQի R`fdiG-D/,@Y`ELrE/E'I>E3u3}EMن{Ɠ]Il&aIxUךf6GEM:!7G2CY#< F˃ٱ,B<4qV;+-w<@"mڴ'v^%Wo[dgfx[t7}JCz ~by df%O,glsg \k"t#U"BpJ8+h1vviUj-;c~UǓ "ʩFB"NՑOnfZ?M %۸ 64@?  lq3V-W)EysE+A+p0(1;r2ۄ[XHf"ܠ"NjȔ(b>F55͐ٝ2I*&eL(%b-?'PLIq sCtԭdꔍ-ZÊ"_mfE*N_Y{7!.J_qܦ<6+(0|7t :UyN* )c LCqoDx4B6pk9hTr]lzf^>zfSҾskqz3ܘc5QVYZ|nhh2@4O' SFOk` ד`V#:YyQB# O"dE=ӋjJ&Bä?DQ1o՜ֶ6#v}^@NOA8Qq^dZ&DunYVemt.֪02GA#P͇)e-ѝ'X(vc[KGtŢ.H.,4?ǝ.s{>Qm S3TI\o5YNQQ5klcސ£q)/+Q2tCX+X˯m;'4*4lTI5L/B"$|4_!JNR|hE ȱn#xΪHMu!) &a9~"U6gJ2+d*jb~ W}`"}p%-)drdޟmzU>aU灙 ]r5.9'Ӽ'8lռɷ;S܈[ Z֓^nQ: k҈Q \^fK2۫$P* -gIhb6>{#ވmo(ՐsՌ'pRZS 2~!wK^½1OhcK1_+*9ql)pkܪcN}/9 j%pѤpmq'm.vƧU)9 ifSZ :%]9F A:=_1#].+rIԏNaVEK ^)*<5Aؐg L 5  Yhj#k2&֑?#b^:ڂl4e'nHuF1[nT&Jq"e:eܗ3EY.i_7 /endstream endobj 69 0 obj 6415 endobj 73 0 obj <> stream x][ݶ~_q0߲Ndq6֤*93fH^ Fnrqit}ϻrË7'nޝwooN~>M_ov~۝Mvg'm3 f 1~w8Oi߈j{8UMʮߟFA~/A5bm&{tcTu- b+x o=|{imo|Kݷ#==npؿhBv#d[YMK60 x)Q iu&6ش4=l?tnB`tIh 6ʈnmww#+8Nn5éB_ãc n/eg\mkVjUxZߌK0~C#mmv" Ь`*xQC῿9tqw8i9m7r|ШhxLj˄cXK#*|f㇃Va58-5vNoF|%Xu c]N7YhJ VO }y_]EZ=.mv`UZG6O8DlXGRl{No-R 'YN3 27uɌ G2gS t&3L"jk#nL)F;$SN qVu" a& 6\`@nӢl Li-guΙ2'0y-R)"lR !|Im)@ʒf#h8"KPS>L|P&('Tu&Ia:pM⤃т4l uX7p.O{X˔5as/x,Evϒt)Ƀ\\(&9A׹U%8 FHc#I8iJ.)|k~?FN*7lwf6V;𙧛^0zu7Lu IjRwqL9=s(IeG%׈I1!OvNopDZ!̊֕VKE÷bCuْ+"l0uHP021[fYUSY ڒq K3,s`UK s3Yr54UxB|qC?E*W h?a%?E"2PGƧ)$6)qj3Vk,CcjĿYlC302Ym 'U:cL~,?R)k-fA42H''L=v[`kBT0nȳY20 ̨^&knTgTU}PU}Lj\ Z18ZŸwa{ܚM-W&OE)@=DfiP0!V1Ό s r=U}KA8\gUlQ,A8amvG~d٪wk8v%%kf#frd˶sM=0}|<>KGPhwDz 4VSpkg[r\"wvƗ?N0*cDcvL{a*oMw"KPCߌYNѻ"=bS(Du3Zq.p{hwvD:Oz{{sbuv;;y{uOk:4&4oe+˦R>t~a۔mvy|-o16E!(n<${{εL /SVIn>LDd)M-zԮE _-#o^^WY;US;#}*-,0՟AO S|*IwFxOQi@o{;2}ȉ:5JTc@1|l :Gy Vx$} K/4ӌP?v6^A"*=$ڒ"}kDGĉ?ФA-:Fu51nJ2ǐo1NRӬ^c%fp* E{=T 6iq0 o{_uxBƛM4ޢ`IƊsPg2[o %Dl0l5oV9'k PƱqY/l?EMA#h1H=(`WcnB X5i$.iFysНLO)\h6랙NZu"xVihE+HN-aVQ[!qrtxMȌFy ϙKP(=A\!zލM//6ύ۵j}>)˝Ԥoŋ8v%×v-JܢI$Ym;% -;xZhzj<HH#-h=AcX"7x'M!lE6ic %Ҁ%tZM*Gŗ1(h3ALf X0cv+BK-}(viŐm !zyGPf& C4.Y|v6Bx91cd9/AƶI7ÝUl^8#ĪEt 5/Pqf@ׇ E>xr4㓿Ոn||sO5uNzx)|xem|aV7͆^ouڄh?_W[)Ec e);F@),.䱗ntړ97>)d2Lu1Xt=STCg'Kkʑ-m)?f7k9S&Wo.vR )UDeK 'Jj6ݨ‰bdQ]~Ywή:yIYyg :bZOĒ<{= ΅@7*-R۩nw_5SQEf s$H92(@L -^Zb .oBQ_1 %̩g㫴fۗj7Z7JKk+:C ]C߾|\򦂲 +SPQ&vH%k& wj5ՓD=W@CE'1(8̲AJTo49gW${ i!#Nڬ;LxGC]s{t>]7 Cdh%Ȝ8VDS"LM< [kˬǪl켾|r;gU.J!mVL?Gk_q/׊s Ж7$rf!ҶS\ܑMmDf X<>8|Oї3e@ǽAM'Ֆ-.Y]up‰2r8&=$}[.3/yem S * uWm'"Զ)WOWyiѵ~7t޸ZSՠdG- /_g#y2?xɨ]'Lrr5sK a&s[n& vS`eYKIXrNx}7:unv(}"# 9=pJ\i}taEǛ7$(D`ޖkYt??R;YT D o;$俄>@ {7=X8C~_L2qI)~Gډ1C#&"&|f U&hBPZ-bݛ.'c#w9F饲˪WWf~nX7UlUKF_FYqo7\9h+TnäQȰTtPXRh(}P?BTMEu([ŲZN3Dϙ)6_tlnjÐ[3]an~L^ @M>!jIO.s[KvA:-jendstream endobj 74 0 obj 5726 endobj 78 0 obj <> stream x][s~8܁n(,z+)x.E `n4ΐ&Uk \軍ڈ޾?~s(Uo; Z~~)a6'Gb Ofw_GR &lN::7_ E~{;6JN 66,^c r6lvvV Lfgoۓ8xɍBY=Mm+ 6r'w(ys A(iZжߞO \@wr~f\:fXQNVb΋BGpWg5;k] `/f_7D\޿&DDbg"lNŝTB=a0^-nPW  w07fe[& c ~Z;fE! Y6@8:낈Fqd8X|I?Qh:@[ꄶ^ X,~Pi]D4zBK|~ER"?i'AX;nd(*ҰLZXNLhTPGBڎ>aV#6lM7AMOvLK&+RTaz]жRQxF!ٳ 5w;&+{P.vp^@T3/(5}U!*L&KΏ#iR )*@YL4H_I?Z"2e)2Mo.73L2y#luִB%}}pҕV?&l)%M%tS}'V;?h/v Md5)gfK,]41:6"--ӆ qƯ[n.豴`l\eEܼ{ǰt.B._d$?r `QѴblH0(aETW4/]Ըk^(0"ݘػ(#םat54#x;El NF ׳иn@6>A]hV.wVuɨuOO VL%Y๩8_,VlbڎRT;qz6 .@˨VFXv ^T'wZ"*Y=, 6z<6K!Q(0Nj 8 c 4HHU: LBH-@6F|-NG$0dSd8o#=\塏$X9F(@"qA{ܔ4` iECf-nP!N4.%Xqr)_y8X# pqwF,pg.Dp($kN/d6WgA҃tu/`j*mf"^L%"lb6'EF7?E3/Eְp`**I @"lg͔0*G1.S_b}Q%EĒ$u8*"U 2V:Rr5Tf46rP5f(6P5N Y*xߠ!{F,]nC͌; 8KO6r^nrJ`XJW׏ GR$vY&'l'8”_rR,n@uFg8t(p:UYp:H<}g{NmlSdj8S2ޢuk·֙/2Lxi 6}H8P܄`]GgCfuřluBAS0:5w ߙC$@ÖkX#B4iy 7Ճҋ T4.p%cp >Z)5ȃ~dpuYΗEet&P kűuAf^J#==(-&E=]Z@]j̹]~ؓ ~c ޕX hC27YZ5T>,) /hp/(_aܰ ~;燚bZE]w=1؍ ^|KmnÊh~/M7滯l# gϻ^%f11/,SJ7O)E^$rN@ +Tc˔^TuB (O՛xj1^N E[W26HϮ9 cP${M0E4)?)y:T2y~̩r&&ZJl~T<3 $ ǐ3gr#ܗ,M7ΥWI&rb,;v4IdFвE:iuZHn)Tj19?';Ϧ(ZWkzX&WKqA d.szu*DE;IL!C}UE@"[%@`Ch ~Ԩ(qAl%r:zרeS7bLW{Z\j68bkj.ϜCZc @E#*Ra\㉽fFc37nIMn{Ǿ"Xj"Ed4aC/ GC礲zZqlD 9]~˱\~ӜU4ouxqfEt\~_zL/8O ]c:c\OV;f 6,Ic6&'3aqj8E'xMڄ ӓvTedSoqYE(=3( "m8>Reo.%&ʱ'&oZLw ޛS>qm {*\ElޟvuLIk+:XNNe!|Nt$ 5#N D@jmU6=l:嫿B$mKWX|DSV^z X{`)  D)H+x_NA0-?)(_$=+ U+/Av~ JcB4r%=hjWd81Lb-ifsȎ+tϠpq94hvFЕˆ9uWr'% 6Δ4V zDWٝdl1I~ؘ''7Cu-]iج)aqKY/Uz3wS$gэ TMy/:O|f`8ha=yC+ì!|do HWuaMpڽfY0mѣ~xo=5 NV-!J/+c|QYo{ G.-~OˆS"ʘz8h{EM^Hː>CTɴJkf+u9pHV+}9!xȐeJF ItOBGO>l8wȈ#MEy՗W?uj+=I%ݪ?C^4v=Gl+)B]'%JIA)i5*ɥ[d bzf&z g7>q$񪣤4jZ _by;L+@\zݿ?˶=RSl]Zwʏg~vuac)[5}Z卡@/ټ_D}BұO$]>{v>՜E=n#U;.dm[Sp`[ 95p"ʄ}P"O'&+_O;Gw !ln٬y t|G_ ̛MM'+RY`Mdtؐ7bjV|7K!n"'G$q z !cPU(=ԯ$t&/"AϦhC 2b/x'mgC2>Yyu-RDz:W$϶櫇Ɛq=f0fE9"n~,]}Õ]|Ac{whSk%a6g l%Ҭ"szN2=}nt$0c:9Y3a_s-7'ww-\շῤ9Y8ٷwz'c T;]QxlzT # jbۛ8_R Nendstream endobj 79 0 obj 5117 endobj 83 0 obj <> stream x[v+f ZY%JDvlkɂoREUhTM)JiQ@UݺU_IJS/?M7_)%Ym:/V] kWjUo~>PZ|sUn޺^Jݴa-mu h^FNY_k+UuZV8#N8&:6t a Y+׵;y[B{/Mu{VtτskyOI8@!m}EmILaS)hCKϒXkA@`'QA-(߀vt6JdH uږ)/d w)iz: sVvsr i2x됉; 6L˶5}݈ nLt\w Fhiٙ6@j&EZja=v ȵ(\`&|Nٝpfܷ>hYz^ v8iZ>>۠ChAvJ:bj#"!yc:{jeEߣ ]Kx:dKR>NTkpcJl.SfPǿkƿ7:)_ -{/-iÑœe{&=>u!FMG':aVo٦I/J ;b:kd~hQs=ʸ3h 6;  ; AL8$ȋaK/Z,^dYmb=:G>yp`e4pОYq{wQ$?u0>"s#CM|@FOsց^v˜H?.D@ӵ3f>h󁼏9F1X t@>mh}2ʢuf\ P0洏YN:*XOEPM˅X)Fٵn7YNnӉ 989 3nфbwMGhXZymv )lН'F&!pd n8{iYhF`+  {Q(i{A XĸOMmD$1"t["SmҊh^}&y2DH .u6 y[m:z:Qj)@HN'9W-NaRh{E3qh1<fNlf;2;" XpL-sZ\$P:]GѺ Ya(Rq=:mJc UݲR3,JqjUo=vsPÐ2pFjCJ3 aD](z+%F^ix@ C܋ &md)Àm1[h!S&J;(uS9cQFSlNg6f&;m X7 Y؟lfO9y@d4g҉kʛRyH~eS npTg9JS3+pcdnOUd|I eFL{̈{,RLg;9K92LvLm#`DgRY5X~L+8B2288o+ 1u`8 ) 2q:SIVZkAayIsw3B꣒`3#I(Q8$qȤL{90}7E>sA*&O>U?혞}8=>hޯlc}WiDXkL+h֭BJ$8N|Ag4.-à!4G ;h'mK+6LƉ'cDdF%<2eR*Ԟ0՞q/\K &h~[D~y13e~cerC4 ob̃¾7ـ]ՆX;$7pܡ^UjݡM΍wFRpؘ=瘅Drd?{@ \IK9R7F4=c&ObzA2_&) C~$٣Bڟj>RP̣ďEhXy~CWK#0`Y1)Fnfj(tmF\3F ~=bDmMendstream endobj 84 0 obj 3074 endobj 4 0 obj <> /Contents 5 0 R >> endobj 20 0 obj <> /Contents 21 0 R >> endobj 25 0 obj <> /Contents 26 0 R >> endobj 30 0 obj <> /Contents 31 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 42 0 obj <> /Contents 43 0 R >> endobj 47 0 obj <> /Contents 48 0 R >> endobj 52 0 obj <> /Contents 53 0 R >> endobj 57 0 obj <> /Contents 58 0 R >> endobj 62 0 obj <> /Contents 63 0 R >> endobj 67 0 obj <> /Contents 68 0 R >> endobj 72 0 obj <> /Contents 73 0 R >> endobj 77 0 obj <> /Contents 78 0 R >> endobj 82 0 obj <> /Contents 83 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 20 0 R 25 0 R 30 0 R 37 0 R 42 0 R 47 0 R 52 0 R 57 0 R 62 0 R 67 0 R 72 0 R 77 0 R 82 0 R ] /Count 14 /Rotate 0>> endobj 1 0 obj <> endobj 7 0 obj <>endobj 18 0 obj <> endobj 19 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <> endobj 50 0 obj <> endobj 51 0 obj <> endobj 55 0 obj <> endobj 56 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 65 0 obj <> endobj 66 0 obj <> endobj 70 0 obj <> endobj 71 0 obj <> endobj 75 0 obj <> endobj 76 0 obj <> endobj 80 0 obj <> endobj 81 0 obj <> endobj 85 0 obj <> endobj 86 0 obj <> endobj 12 0 obj <> endobj 14 0 obj <> endobj 16 0 obj <> endobj 8 0 obj <> endobj 33 0 obj <> endobj 93 0 obj <> endobj 10 0 obj <> endobj 13 0 obj <> endobj %BeginResource: file (PDF FontFile obj_87) 87 0 obj <>stream xVyTSw*bkԚK[ֵڪ}3uoD@( !fߓ_$]@TEt2Nqjv9o<̏9gnLߙ3?9/}g2S01#TX4I'* jzi 57nʛ{̹XJ33(A<@K /ς3Yl*N΅Y;__xrHb͚5䉿|IXY\X8~S-Ke}UyekS3Uħ#^]aܲJIy) 2wJ__4q!mҰyX:IJױENlۄ-6c˱-Xۊ`۰Tl6K3cd)9SKz+S=EL-.k{ } 'ܴipx<~Ex] U?( SY9}T.|[}@N`4>&9b%?9e;zkV["${7)0Mv3)Z3oᛵO]~8tZ\c:`{&ǭζt/ H,hj-B rbHׯv\%_ĿN@S=V[Hxs7#'0\~qNH>ìfHI @v|he=-_EÊk%߂\8,qsWڮ`(axl&jEXAfsnP ,{2BJT.1i5vyGHCNxhQ7Ze;{7m)YN;6sa@`eUL5 lUNKDVzL>Sp 𷡓gnuu-nO3jE%b /o_UZz _>v/urZtI:,PKi 3fsp>WV2,_@%LDd<ܻ|ֱSAݑHpGoA0$*Ae27K_IِAI$w 8*eǥ%{3E'ة=ŀuwYm|e6Y ?{ۮ}hZ`6gmDm6j"`"d)$IwМ[=VDK1̘MEd ,c.h~EIg==fNF{ݧvuʃX[)Un5I =*huyT/4\4ah 2Z}Y_gRyر =$Cz*M 3CqjGv)mGA:^4z[~A5Їwl-RI5nЁ=I(nzQ _6 ǥN=0`3uB SóB`9|8TFCH`xAp9ZjZ9H.OZћnBTzM[K =j;\ ;д-+Ŋ2I\8gD`W.^4 bFIֿ%GROFq*~b-WzGMD _اRD-!>_'o|%8f fz2: G|ܳD4Bv޺,H=ݨwLJDI$H4m֢[I'zU)i;ήDŽUu4j3w'!5Et_T\K1B8K=! 8n6^pPCLSևGf7Cm)ل+؟ڼVP v*{/mÀ>'D4Kv {"Eq"P19ldyϕ'oftއqoݘ&"(p|]D[ \?P݅h ZŽ;7n%*˹G=H) EDAPus5Zzcmm]Jhh4k04F2ʦӍηPB_f[U*#Cs&kjG7|wŪD&گm ?"[zZӺ ˟:q wK /6PwCoWw;Ћ Y&3{4t8k̕FSnӸ[T A_3kf8f…,TO=z"~o>!\09=Gj5DGaƹq%FNP(dsMpNd;MsLjͷҋ':+I6tH񂠴L_ǽj,W,4UG%Q1As#&c8|lj*ӻ֛.ܮ*q漺~YDޯ e Jap H߰:# bTI |.Lu՟Q:=}>d^_={}8_8>שWIޤe<(iJ?^q H&VkMJ)44ИFFzEe 6=q&z{|6Q>D[Nc KS'S0{y]0p9'\Lwn 4wSkkt8<sxA&6i :Z%`Թk#q8,%r)-A#i)NL;h` jj%laGFVF!dUc2wtx#GI} DPo87vT;f,'ґB_`m2:x{ˤ{~b.ȉ?kGpz2ڮ_bLW23Z N1z{WbҼdjqό@YThIy%Ef^ar* ,׿0y\6r Gs`|;wu66m[r^ZyFjS-,򳚧ݙ\a. endstream endobj 15 0 obj <> endobj %BeginResource: file (PDF FontFile obj_88) 88 0 obj <>stream xXyTS׾>1s@+1%Mmc jATd&$!#I6H$yEq֪u<ܶ݇n{o{{z+;g}0iWhʠM3=Qo W5s͟IL0ӡfԙN ?^ 5>G_=Eon&Sbܖ]O<"Sc^dD "$NOumpodTz|D~'"bϖmIɞ)SwL'cWfna/={#p`!o.^to\Umڷm^#}Ze›X@ī~b!GFbHl%$mb" !'N,#vˉ;[.b%XEx=b/NӉ,b#D&E"p!s Wb'("x؋K8}FҴ9§=d0:qxƱ'(>.k3Vrf3ޜ%S_f?u ۗmzNӜO98߾jp.]~:rqe+żAܸw]=\w:<Ӽg?2i/6DsH2FEE5n& TF*By"l%C2M:sI0s$}2@DP@C#RщzyƇcf%Tg,,Ts4X I૔RRm!G"I%% 0JA1u؅-;HMQ8FśJibk Wj@*ʼnQ>I<`: Vt^D^˫ _rrsq2+S,6:`457ȭ#:Hy@)d@>` w]{hxXE=:Ü!~ ɶ9J&=bNJ_ɇVMOgw88 - MI*Ϙj5;30:C[kgHNbj?葴8a; ._f!y%dņ.U394΄::^\WBg!,ȅǗЎGgg>oN\ʆ6 N6p`i3 Hu Ai`IӾw}=+Q-$o @& >_x&H?="p(JR- v0 ;)+ԃ2@uU$8Tzk)CU ] .'bUӿgoK< Er? z{&D!fm}[v id  ئoMR] |>Oxw~MFXy",c?i+7 <s`@@y``b%(pgr7˪ڹٹ)z–Iz')(~E-@z|aˆ/zF%Pi&*0H(ɭH͕XE<IL[\K5>ٻO;О1e8]ipG BDx*zPI`QA\B~ ,r;Ui,\R&qK` ]YҪT+8bȻZ xN͋LG!{H'Sc1 +P&@:i4J4rNb)Nj*-Q+eZ-U4`dNQ@z[s+oyFө0 u8W졗C'?W$pW!Vrc nS0B~oc,T &u>}&srД+>Q)6f%7MaxOh?{ ;Fsdf[v"ߢ$WAR@#) :9(`Ы2dY B)TB?x?4N矲u6bp2 #YXLTw̦8S"3qlzNF)=Ϣ"W^CW`֜gew?*Qȏ`[#!EFLkhU]YɘcӒ" q6-Y7pRSc jSIQ w LL©(0bК_ =-/yU\AљP[!$vwY vvƚt92FX`7Y2 z߸ViQ³"{~€m/P +dV90 imjl/Y )ٚoP(Ss Y'_wҳ 73L,Tߩ8pJR\OF$Z[" 2aZFF'Kso%vvSӷh*83E(wqDe l/[vΡ=Vh.BDs-6YYCI-rDD!`V&?+"Ƿ|ZSRsH[$_] RCE\݃9Ɲp/nr-gpP<(;TrFܤ`KĹ#RE2GHQ%ɽPe2qxf-Ojͧo|{0ʉe;aXʽnjhjo`Hޓ9hoa }\DSQb}Z` BFW*;p2~i.7cዃ2"Dh|+ϰ` p|56_m~SKE #) TYwJF]d38IiiBamZsK]mKsZ]"3ʺm49z e?frӔJ X |!5IbX7:xߎ|Hh!ՠp}}1M e^=RS(QIyNy/"OX=dTKup:G 4!)/;kİV AVƍ~m ?(^sbQS7.:@-~*ެV 2`GZG/ *K wUa<.NBZj\bmzk{]mkkJOtbC2{'ƞ[s컷L=Ю~ݼ~g&,wO+JcWa}&<\8XYU]dE ڲ~v\០pw.SE5quR}aa)^PU &>ߔ&.dG$ZdLa>hxwI|9NBJr|bCJK[cCK[rc٧ߜSyAl61wd!?;` FF9~ Br,g$"z Fzөc4; )gQ0b r%sV5EZ+< CS3v;koyʄvs()/..Wc) >V-͖E'B/22!7Ԫxˀ_xH͂g_y?eGbqnߺoE5BY!@ۑk*6_\vEva߄'K.>jz/Nݵ%)S_P-w",#z(NN 4t։ĶZQEb?y܏v_X&'$IYrww küQ))tG* 6gxXxy c>a'Zu\7B; jMPC_|Ā0;ȪE:}gl4CB ;I5>$^ݼ!SMե3(SDHvS5}p[4t*lطM=}g|1/Ҟ{jE=@_ci{ʹ+X9A,hk "6z#@sʦzΥ^ O|8gG Dz " BQm!piC"l+:|F߹ˠ1NXhazF<  FO4Ձ f =BM!|kܠ>vy!bs.k/K6=~7퀎pz3f}/9PSڵ)p> +< 7 _2/stڥ9A3V\!q~r,0Znd ^GjS=8bFAP= ֦LX 8O>B?9 y@GW̞7;.t̞yٳ~a' ^3߇sgmwB̤S87 `M{ gCSKl{h/GvE絛lOFi5Z&٢RCGsLNc'1ml IH>2z-{^3qu ^W?_L7]m}{r#> endobj %BeginResource: file (PDF FontFile obj_89) 89 0 obj <>stream xW PWVFP:'"Q\ AEAñxpx5p IGPxl6AzdkLڪy}-!&D"gũ]0Dg RP¯b`A)'NއK Xf@6T"ⷸ^5Ø1cg''D\hۿ4M6qa4NT2ʤ4%$}a19i X̀ b# 2mGo:<կ+v+CHrKUr>\ະOhW ـ92!_@UI9WDglܶ##ShG~voAޥyyCH@2;5? qRRRY1-3=Y@<Խ`Qp 0:V곆 ɴQa^8@.yr}/et 4^!Jf x]Rtptrsw_؞\Wl|.ɔ-6emqdyQAI閂y: &umr3svstIaaIaVAJnp-[4֟?|K`xk7+`T^EI V(m04 e|viХVq4HJ GWZ?z+)(3CTV')ՙ-fHVh|4pp)+SL1W|}> Ȟ\WT]gEq@KaVfn(\-. B9]6RSbc.bvSWwe'Q,r$[Sp6SO'ח_qMS2J}A1f4]:iz,,Ɨ J _y~~wjwd`Q)*`JvA[^z諿yPQzіwnPF&z,hOk.P =( }_L i0̿~c ATß?ߥ"펶Y*Hf', =Gb"vK"EɖLXE˿:¥"ӿY]ԠoA=ql4 `EmWKXѸIo'y&`f$S,_ *ɻVܼ٘-+Bo.L/U>;W/a=1_,L89pˤrcakdj>~ao4|lV1H1)` 8E8KYnFYz8#)!/Y(y 09f 6H7 FQYvbee5Kum$sfk6 脁0`l2c܂5=iNi#Mudz;;>S]a gixR14\ h:@ogrނq:Kf'%CLo| Bρo dSE 8c7sb|?0\Ղ\qL 3 F^[*.՚]\ ]^%s P3LɌw`rL esR2Eg4 q3 CWK!Adz5P'rN}&k<u .转7EnA<焝:x3nP;NQk1;Fk؄VZݙ;הHoFL4u`~}C#ָ94k9ٲaghCwa9 WILy 2B횴O.sB#mݶck&|L?έ1K+^6]:V>/ tnY0`2@Xauh$:QHq@-ض/ʠ0K ޴ 3 D N*fq\Zeo]sCf.FmCm"AB^<|w u#U]*Z](Jsp\5k$ 3= ~"vamwȜ!cA2M\Ñ[4RPު`o%v_H_SZ $)@>%\YVtgM{RN)_ciDž[ە;wglhȲHwqzWyՄF,?鸐x2(/J(XW]\ByZ[=~p=l[#GZ]7a[xi3%ey%]Kit֥.;%z؆oZ 4ݲt=eםJxK`ӻgYq@O@vJ:h@}4`w_ GB!Ņ 9sFLc?> endobj %BeginResource: file (PDF FontFile obj_90) 90 0 obj <>stream xXiXqEApAE@wPv$l*0.cĝ,%htP1QsOOjޛy?3LWUwWSyk$Q/J" LLY4>N9 ap/a4ˣP^rc KQ`B4D2!8sF"/ciRr͸I&,γx71siRX"51-+tiLȸL`Ĥ씸 g EExNY/?3 +0{ƪrŇ'&- OJXl)QsF7aݎN\\L8q)SGx([*DQdj5NEP#Hj$5fS(j45Cͥ)*R1/Hͣ('ʟrqT 5r(73ʝ S!*HRS)cʄLt5OQ攌@eIITeE (kj05b)9Q 7IK'Soɗ*uA:@:U/o(ZNsM&\cYwvsjxo{{?鳲OU߁}=-K 51c^6ᦋM3M7*M?}qwQffs0Cf!5 0:'y*Y)  ީK1KS3NT<.`ҦB=R -JV'RvY(O +kgw?#E.4aUYZC 8 iL3 ޭCiχk0_e7հM j6-iCmfg*5wdS B95'OE8\h= m8{8T SVdmC x9yt|́LN@֞IP˳3S,D!UphTt@} <b}F0fcŞ˫ 20*>5Z` < $ ԓj-nIZRK.hI(45ev $; l\9+^!Go^f}ڥia!K=Ý  Co\K?87el30ZE|YKً8sk3ASzaBV"'pml'#[7'c37tG]!^/AjZ\+ J[I9*lr'm5/܆, e4FaeDRpXce]W[c8Lco-uU+p9GϯMxW` &Կ*zk ՒN>0T Z;UPތ)<#; WIiDjXpcz19o)Pz6Z|' Ś @v]_VjbvjS᫞ܪuR!H0\&$pSGO:SePUL2%VWݸwS%l&3a ' oUg)6p^Eڬ-rS,5|#j9Z-E ,WXe!NuMیw;QoϺ5D.#M7K ٖo^J!Jʏ%ӊQ1]U@(2^m҄`})-NUJ$Ȼ],qY~F^%Kyq}T dmm`.x)/\Gvza=w! '2/z'*9%RZ~/&ĥ}nڀ:O NHgXyS1IVd(yUOAޗWfGݰ?֗]!:pel9# G3,<qAW*>/Qh|h ڈo<%]"bp uPg(/Ӵ@^y8ȃ/|-bk#9D ]8+W X .CUB < M%BR/ȻSceZAIqdd*ܒ[:=(ԙ^o//9s,67Ca-N0`bS8aQ/f=`yYb]P#Hd փFy'w)~4&h` ^bE"e |WoLO<[~dZa=d">$G `,S_uG+dX/fӚzBnt_4\# "굌L#DK5` AnFpk`5mPPٔK#/H0no??)EpuĩoF6+ '*_+]-vĹ8hڎPݫA_ 'c_[rqNvDB{rqTD f[H4v)wU;&6wۚ|y.p how#8j -<x<:Թk=LnX/k# QySDs驑`&:R6Xp&fL#4y;n@kl5sӽl:+.h]n|-Z(o.JDKwe}w7ʹNpTޡgN_{A?LRpnY? [b\gUsſe#I&Is;QfFm'QTG+P@K 2kag1r8ԈO FP Jn^?NQ-$ 2&Û8bIQ;S?7ecD]6חZU r rS00ћwL$vFVj4(DI޼UIVݨv<$<Х&uf5aVŧd,XϬSI.,=_$ .o@wPg]#ځEW P,ډZtCNAws~Pqܗݵy{Q ^VЙg4Ѷ17aZ4 6t[k?U8QJ*nv1FǏW"J_8apΠ T'WJjIY bɎ ýgǖJ'ͯDW8a#8L^/a\S <% ɁĞ xMd`/9"+įԿ"jVv+oJ nq@ުH!v!ٗFŭ \;8Zra05ӷ]}$ClNr5ZQ]X۽ZڏFN)E3PXڒ!YyV)y/ ?8W5cxX`(ADռze ]hGht3,)`V|C8C*ͤNfv^~b ٟ72UU.C2n4 _SVv{t3bZyI 9~¢JH-ƒVsAi)kw3tW]xYQNc_xQA|Į%W4'w?e LL!{zly1_5LmwPV;xqӣR>WdM2q__f4E櫛ACxί~xgҕgOyD<{Fk<8:~ubQB$pKuGWPEfD6q>pӚ0<_b\p.<}v&*vJ%,h:[lO$M15oQ{TCsn3d3!OJ!'_=|2U敝APD~,e]Лo9wB,R7fX:`rٻ ol~-Ƥj sx!FLW̹{(dpf aî߼jdnTuBki=aH;盔x"f~p-\7zH;aڃW~Ta1#PZT]a>>ƫΛ rލ!O{2x.͘ KOcĎIPL 1II/$ww-SKoxތxz`J h'%GmqAjuJyBOz9L.6旞3W섰:/$c+0g}׀i'*qhAX=֔UKK[URn{ a)Vzݴ?tSܥ'/U&,H˶#eAO_\'P?i\?!ns%TG4h F.3 W$o"~G{s}!SYA']l#Vc)!Ė8qAo^a\."pCZ  e+L( {f1>O?ilBQrA endstream endobj 34 0 obj <> endobj %BeginResource: file (PDF FontFile obj_91) 91 0 obj <>stream xcd`ab`dddM1~H3a!C,VYyy0t0wL#M3wfFFРpĢTʢCKKsJ|pIb^JbQĪb2"3000ng`(a`bddQ#G|?fZY޶zh4rKO endstream endobj 11 0 obj <> endobj %BeginResource: file (PDF FontFile obj_92) 92 0 obj <>stream xV{\G1(c ~N" CԀD-XAF@T " FVDzs5jqQ[ݚ$7?7;;JDP"h_bjvb2>v*5A7"؊!ª ؎ZSLR!ɲ9MoQF"ysprJYLNɔzzz7Oމ[r{rڜL*M*_#a(!]jwbofl:>0!(1)89E!݅n=<)j-LͦQsj.JͣS(GʋZEEPޔ3CC)(_ʕՔ ܩ ʜ4,)+JDYS)ʑL։0{ ] 3 h}q+J :lؗS2Lyn2>ibhgR`nʴ % &~C4ȭBm"tzGP_݇2!xEl^/z|ϐ%2A A,j$@nB'=` Lyr a>K&2B(ih8!gKjk-V,B,\w%`,-=9x3>۟b:$_PNqK`t xr!`tޅR/4ҧv ? P[נ9?ֈBd2bu ѾMFa;9,?ڒeb6Nu} ҋgS%0V#QND@@lqc\F#$ = wc| lG{B>'!E^H\QdYB}RnVT>fa>--![)xK[RYWqSїMW;eFp!qX\.#=![Tpu+",2`/p}:D(7 ={E4"AsvbLCx OL+(B-S5_WTW_ $q9kJx¿c[kVWcZڼ1_uh[tbs7+5 p$HtJ8P b8NlOӎbkaT3gNv9.Sz7#8vZy&5PްD7Ƃ>axW}}|6?kdD =!NO8dM6a7PF(wk +,E_"[pags3L}g>6x哙̞ XF$dxQŶjvs[r5m_fHbHJ=~JPgR=ҿ֖[*{lٟRXh~ ;Z? ~;$v߫HF! eSy|[OrM)LJYS+B#}&0J:COʃ|=6d-Rl+^佘Q>RZdx][~&=/>'7AʓuH/1ō\9ߝoDk BwZrY SkD!@̂f2H\'\ ꘌJ'ҌH똓+Y&5ME6lCpC&D.95h+0O{/9M*<=($e&#e1vyH`!YׇmkyLWɏC=/o} dw 0Dq%AL[/t[MBE\GY@i &؉ xЩ}%c1xޛYIqdƙs6ȰV?{yp Sʶt?E&u Dّ SąΛ :) 6xm~É(?ҫ5ˏP^R4yFgЩmIM;c2QRUQWp=A=|SH҈`ûv,w,!A"@]9{Uw`3'EnSTP'jMׯ5x/H.PM=VMQOQ; i0Gj>=.QA7?t!] gpAv?w׼_7ZOt ؀n*,^Jٹa?K@eѲV^nP{%{Xm2kqV!Є](!!.'C " (1Jb46T#E>A+{td/Iq[mJ$5yb|C l Tn(:ݝյIݫU 1ޱesK8~g40 KȍF˺-͗QQbp7|Edh`@tp"MWq]I?11 ᜃtG2ȼḬ 7w< "eQ%{o2)+)*9|DE;d.NKɘJt3Zی9{ 6TzI6]kO ]~^:#WFGt|wsPo%`JҰ' w=Bm5WF@{DiYL3q3WeŇkYl,Bym조j<:, xIfT ~4L0.65M(l^$ endstream endobj 94 0 obj <>stream 2019-09-25T13:38:34-05:00 2019-09-25T13:38:34-05:00 PScript5.dll Version 5.2.2 Microsoft Word - GTF_6_0.rtfcorrell endstream endobj 2 0 obj <>endobj xref 0 95 0000000000 65535 f 0000068418 00000 n 0000099088 00000 n 0000068258 00000 n 0000065992 00000 n 0000000015 00000 n 0000004207 00000 n 0000068483 00000 n 0000071195 00000 n 0000087637 00000 n 0000071988 00000 n 0000093875 00000 n 0000069782 00000 n 0000072410 00000 n 0000070172 00000 n 0000076122 00000 n 0000070724 00000 n 0000084011 00000 n 0000068524 00000 n 0000068554 00000 n 0000066152 00000 n 0000004227 00000 n 0000009934 00000 n 0000068628 00000 n 0000068658 00000 n 0000066314 00000 n 0000009955 00000 n 0000014401 00000 n 0000068721 00000 n 0000068751 00000 n 0000066476 00000 n 0000014422 00000 n 0000019516 00000 n 0000071751 00000 n 0000093344 00000 n 0000068814 00000 n 0000068844 00000 n 0000066638 00000 n 0000019537 00000 n 0000021482 00000 n 0000068918 00000 n 0000068948 00000 n 0000066800 00000 n 0000021503 00000 n 0000026184 00000 n 0000069000 00000 n 0000069030 00000 n 0000066962 00000 n 0000026205 00000 n 0000030715 00000 n 0000069093 00000 n 0000069123 00000 n 0000067124 00000 n 0000030736 00000 n 0000036500 00000 n 0000069175 00000 n 0000069205 00000 n 0000067286 00000 n 0000036521 00000 n 0000040869 00000 n 0000069257 00000 n 0000069287 00000 n 0000067448 00000 n 0000040890 00000 n 0000045267 00000 n 0000069339 00000 n 0000069369 00000 n 0000067610 00000 n 0000045288 00000 n 0000051775 00000 n 0000069421 00000 n 0000069451 00000 n 0000067772 00000 n 0000051796 00000 n 0000057594 00000 n 0000069514 00000 n 0000069544 00000 n 0000067934 00000 n 0000057615 00000 n 0000062804 00000 n 0000069596 00000 n 0000069626 00000 n 0000068096 00000 n 0000062825 00000 n 0000065971 00000 n 0000069678 00000 n 0000069708 00000 n 0000072773 00000 n 0000076710 00000 n 0000084432 00000 n 0000088244 00000 n 0000093601 00000 n 0000094266 00000 n 0000071899 00000 n 0000097571 00000 n trailer << /Size 95 /Root 1 0 R /Info 2 0 R /ID [<999206E5596E2EC229426CE95A851AA7><999206E5596E2EC229426CE95A851AA7>] >> startxref 99302 %%EOF grcompiler-5.2.1/doc/GraphiteOverview.pdf000066400000000000000000000500031411153030700204050ustar00rootroot00000000000000%PDF-1.5 % 18 0 obj <> endobj 26 0 obj <>/Filter/FlateDecode/ID[<76639FFACDCC4D8DB6161BCBED378CEB><87D8F5A8357DEB40911E676F85D499B0>]/Index[18 25]/Info 17 0 R/Length 60/Prev 20161/Root 19 0 R/Size 43/Type/XRef/W[1 2 1]>>stream hbbd``b` @ H 0 H?Ȱ$H9q'Lw  endstream endobj startxref 0 %%EOF 42 0 obj <>stream hb```f``c`b`de@^F da800Ã0 A1C ܁4#w1C  •  endstream endobj 19 0 obj <> endobj 20 0 obj <> endobj 21 0 obj <>stream hެmo8?nub8/ ʡF JwƎI• 0؞pP¸KxHXAH.ė0F&OľN=Kʉ]aɉ &ą /_}Tŕ>b蝒ЙYł1  s.z7O#j7fy#U-x,ka?{ œhTL8U]kU$ҹT}:ceLΘ3Im A׹_ϓd TA aIKçQrVDU3ˋ]jՓizmSEUj7 +}?ƥ>Gw_uIdL'IQVw/qaߪ7=(~(1ySKvJRϦmTRJ}RM"٩Կ1Y+G<|kL~1gʽ`3^|[{|?P#\53d,lEȌ9 M8FqiZ7"fU(-ث]qXYynZ@`A}NpJh QAg?~-l:Zv|qv,bሺY.:k׻(zgE:[Q!ң5O+=J;7+b6&C{ZQMh{MGџH-ݰLHGyt~1g^yGߋ v>C&9 Mgfsif{!V *t ~׀١2l](9FƄCdt=u$ℛ!G2go-:=0z}MQ0iMÍIYP7T0@6ΰxAlSXe Cی.Kף%ĐU0KW[53 <e tRp0s~5 endstream endobj 22 0 obj <>stream h޼Y[۶}_ّDm3ix4x<$}HHB"UZy3z4=ޥ(o3w>_ei"_wդTl4M񡽛jWwENjzRG/"2qZlFEW^nUFu6 /k,~!xlN2vI3ZEV{fGcTc*N<2|S*)laIRZ#A U?b)M҉+ZBZjZ촖zbgIOWWr~e;E0(N`:m6LɞPâAsBSa%f| PwKYf0jFG.E&e]i8˝#q[DxWމѓF$Y,\GOv6_LBx0cWnC yt;vJtj{@7# tK_DI*A@WE@>,=yqN"INy3q#jÒeDnoYDGI/g["<&я䙹:Iܒ&p =ȝ?}?Z +ʃUBOH3E@A` b\/1!Ċ)LX-W:1W'ی5AS-_3iz~uc{ $ON)9 A[WQ?d/qۭV Q< 5ڊxs]i{/\F}'_ y@E7re^Z4!̈~lYQ9 Vc ѣ2$NG- -UdYٟē6vrkoe&dWFm+\ED];E^yciD|jtvϣhb^^z唢g;a)E&)F~bcߎn&gn"Az#72eB\  3B~ɓ^.tvܾU{7tURf&ҟ%⫽v<H F^:5_  T lUݑi>#]{ !p$RN ^bZΫ'-_?>}gMFRjJATDx!z4\u,Gᆱb2V, 7|+5-ĥr.)<|A+ر'ιC((2){{$IHǤbc;wӵR8KP`V%Kdn&V-Q8~_/#?(DDa g@5Mro~I^(# +3I!CлA˓(P'Ҧx+קk0->F x9<@T }_{ LF!`ua6Q-;]gocY]"H 5]49m/UNPq0P{ԓ{|? W{S. ky=l&->fbhɽki0 wB֪9o" Y C;`0 j;LzGi"F+L}5Sujzx&(k]4 x@^C>6ѡ:Sfrg\D=cN[: b Eӱt6$`4^aꪸHv{-W`]u\'ߪ h8N.:p oYH_zñ5$zfg0cP:gD*Ԩ>} -EAQѬxG:g[{i:3{pޤ!7>s@(;BC q'o !'Aw;Ct|y jy}5q,rT'&PdD/pʳjK&;y3G"Y8fA UMG,GY3oEvgzy38;wҝ=A]¹$ˉ%{LN:?X_ QF"WdN9DlP@}/Ȼcʎ#@%?Bdb>stream hj`@ 0@ endstream endobj 24 0 obj <>stream h8ktU߽tByH2IKkN;BHtHB0XFl$ӎpuVX:qsVw=Nv2*E\&ٳgΙw{oV5,U(yamW){H*(oX~Hnoۡ7hY{j`ۀ0 q ̎@MIdH(1IT4Jq:PN /Ljō0_\٣^CP7T &?]e gH4ˆCw@#'p@+P$@ A.#P&da\ B9 fB;̇ŰZ~v?QTw鿅٘ K ƺN3 }~됈9cjp6 O(|I d} b~k`3q8 RM:#:гbwvz~c${GDϟ`_c cd1 Udi"?$? OVMgIybeql7F^%Jqn= v.<%`[wFŴM^г"O̲96{)\ vQA~/\ "*b/{j5^+vk|&p>hÝӃc“X;^ oïo xGx>ϱ8|~3Xzlp.2@X9mY R/]=DtJL•Hgd]deO,Fo* Va^ yb¦_)KZ$5KQ$˗q8 BN}L"2}zh%!yA`sr' uXݤcSl9&n!ͬBpnC!6F>'=ct/(}w}P B&2a|zs*XQvlgyV} y*n=6A9: D/(Y1g 0ɠ%P;5qz>C oF89ہopNԌ]]ʊ%w,Z`BkAwrs檷[H63uFJ9iĄ8$ jOr}.]ZyՏ-n 3e -۾fiMZR ESU%V{>PA4h!`!cLp()N#9pHB] !dR,'BfU 4JTN-Cu4j=NG-*Ԉ=hjIVFMk&#ɧHH表Z|Vտ1Hb\6{ӿbq[Y,LT8 =hGV{nZxKs|: Vլ`4^ YM/:ķIZ#ɇkҠ2i߆Lr{TVzّT5̰)S5EsDa#ӓbD[Π sN&+KxF2P0s*]BR4KKk쾐˹&U%)P?`H9O|L5ߤ5U+([d5 ¾(Q{ ",4bm,x-h=-YC`+z5㚑kffݧN>R7Ss'i3IupBjV]yg=ЗNb6aY4F,fhqSn4'QrO26uk$4$D̾7b_:E@_ʭS)C r˽.^Qɾ׼3l>gjz#sQVlNJ9p\7 Uְ ` QL)# ِS| qKkO(/zsFxޞpQ<~ Ghq`)s#a~:ʗ#\E(DhFPZ+v!e3[9fiUHS SyR,΁\PLs 4W_!G6^RB^R1j 8J&E@X&<5p2 l9ѧ؉㜬yK"DY6O`=w=78GG~pf/W }c@`X<ğ!\B=pobxi?as1< pI8Gd }Pٍj0 ",AAx#$R8ac,7yE,c%Xךr(@+K[&wQَUt>~GB7N`PїwJM*ÖKsW}ї dgGi #kKx'3{~^Jveg*>‰*dA(AC%˜,ۢ kRR㖄䬭)|n7[M;M:Sx)\l [MSx)UNt9QeY FmV~S%3G{͔㫀6Zz%ZMJIoҖX]q'BȠ݇o$'Jt.ڛ/@@V {W^R\V_=[WcMA{ҔKQ6a. 9AWG;>ǫ->KN֜ "}@Dlc\_KcP;Mu(ߠ5#;nOd-8U; %R08%܃7 Ci#FI Gl\#[ 8B=4"Ђ#ta$aۑǷ]3DcP0C A#0ԣnt*?ȆK_2Qǫr_؎o endstream endobj 25 0 obj <>stream hTP=k0 +4t/2&Fq&Az=Iۧ\tapdgAXg֕l&@&ru-GΑW;u -1!WB%"(h8y~UO~ U8m5RLJf/H|g]YtlD7]}9Y,#ق#&r_j endstream endobj 1 0 obj <> endobj 2 0 obj <>stream hތYMϯhD#(BN1l U:ْzC2lr@n^UuSfg6X`1{UͯfwnDwISU/k{n1~)iGw;VmtQ?=fY9|.+z%l~ֳ|F9&ϗm-9 ;HFe&ޟt/MיbOE?O$svn"gd6f}ȝKәɨNp9g7r#$rJץ·lsMau'"KIÇFl.Hy6j6FtMPT7TH*{ԓ*Yd>qCRL`g>+`viE5TeȢz;8BoZS=aT!$$X$$^cJsCu&m[qm!:uUjCF!GNDI33}Z6 ѮnD ]U.TQ@lNa6-yr4u\ꥫu.QrBG5:b!pX"akyKAqӁ6TEfi`5BH_@4u ow/N>a;u~|4a@F^f]BguUP:˜_6rcۆ8<1-jgKSoqД#ۮ)sHsͭq3>j#+ ܧ@7y2)2sa(˼:w#TJa3R(wkҷOM( *Ѐla{sOUӉ%ƕxAuPoAe(K5kTଆ*A4E_=OzL- gptd{)2M V=nk?],G]z]-7)&}HcOCSN  CD{}鋐IG¢vaCVGOF_& G Hصe_t5om~ 02H%~!QX):{㳄~LdT+^;7dNA?AU+dǶ?5Hx㖨y⹤| yvK_~QRui׵J?l/J֯u&gh]XA=YY w~ȞX,  Hh٣řGyL46Jr!۹K¨֘)у-i8r7 Oy[b*htYL "NJюu_]9"uQ3b[ AnI@qV73 jC?mX'<Ɖx68=s50K/-SbZ!K_!$ csfЯ%7逜 N?$zI) K Xw' jykvԦ36yӔKxGbJv tsZi0n9OIۊUE4 MH  GˮX'\4=NO.[$ᙶ-:  她c?_ogw<%S9M駿o}X_Su!^M#d]۪v}>x=c,':&!7t>jU %yYK x1 ͋r`ܣ(ә[K&rx0G@Si/f܋&Zv9VدpYH-t!d'=¥8j/H't'$15?6vO7W8ZJFcu'?ѐA0]\m6]eo{XЏJ}@ZUQǧEݖyd1B~[nk!LQ!6fW'(]h'z\zAՔ_,-]D.Rj#}Oɘ#j#9⇂Nia37 RPVa%xEьQ1-3qwF9[HCh{[YO5yG(dL 8G4bhQIP ,Ea/XԳOuxbCc9EHwaNHaĜ֍Uq eyꩱ%zl f tnbZ׆BYG|{/ KvfCiMȂ xu+$RubjFAe1^0umMg`fGZ|5vLn"倄> om-Ѱ\׵oIF,$Hq/ZRNKfP' h|*>;kp(m f]_2Geh(32̨vDz-PL~ WOL92fY*Rڊ%ҳיZ}lդJ$d;.GqA, (2h̃ݩlFMa3/1Нq1v)X[fɇB)I1msCv49uշE];z;YEڒ$MM  ;\g5hy|r 43H^I x9։Orw 0q endstream endobj 3 0 obj <>stream h24R0Pw(q.I,I݃ ,Avvny%@#c D4S062-aSK\CR+Jb X@ endstream endobj 4 0 obj <> endobj 5 0 obj <>stream hޤYے}߯_%Eyr,[+\MAIxV~t R[rŵ{tooBv{mBu ?TrT*),SW]AाZ(+Wۡ:x_}3x ИG??Dt~)Tܾ!y"ZyLTyQk+W"KZ`\!/!A}5ӶzZEA*"`gdZQ.S8jь6jSݏjYYAzVc^RxP۽<@ 005f(P:PZM{v'y_Lgx a'ÌӔ@ijά0/\qj#?Oa+`a;-9iiYfӜ^fؐYE4*sBZ96FE!)rbpZw׭WqI?Y>~ؘAr'`4bQ,p,P/W!B?M#Y݌/#gXs4{[Eȗv.d!ѕڊE&y(Gm I ""M6{E&U=QS3W-MLԻᇏ,C/n ӵژLF.092gz!,HG42757]Iͱ-X}J{+GM;jϴ"&u"QιEmMzlV0ޫf+' ǵalp/֛@ЫYY!w-U^OUj"TSo( T;+AFW#2pҏҬ89ݑDe(Pʄ%"] p¢e~%#:x0 8 I[n{NDE$ ut @'UcŨ-( DQ6sql%{b&V4Svu\@P\%絛_08\@#~U2uК.1xY̚d) Vf _ D gXi Xcrc PD] 9=*%YAbFxZjX:?I=4%@c}Ӎ33gZN UüI(}ȧ\E畜{ˬ 8R.QܟџS|߷S? yۅbbF1bR*g?MTFvQUI $tZ=MGe+"_Fq<4qB.`A!ƴK?^\wf5D~G2D{,Q?foǝ˒ M=TTlT3;i'܌B>- iO~+̘&tcgɉ sz)b3wJ( 'nΝnNkƵZR5| Q*rh\Fe~  E eAZ.LtpAr¼g*A*\{2(v(*yi\E%֔/?\o0^h\}mlRfnGsaqH5 9.zq%TTTBi>А\ ϙ_c6cm!97z=>ch0;26NKvs'sqZp_6# M`XSݶwsbv !-vm*ae,v*n{i2IFɬu QyI3L  ԴlE9qHFN}#M $՚XxxQF@䩶Λ7ge ^sjjdˤv댎0&Vs1H\ϛJwH(d^VoRa0sr|LjpW6Xu3s5LžPTkc:fem2pnSQ6y &؊~{lIL|*{ -ĸ0G»kYnWӬuKMhڥ{2yRlџ-?9R7^- N D|75ًnM5bI>@62@G[7?^t '#`"]~_#GehWpkܤ>x?nO<Hw<3yahߋ^bqUi{\}`guo*ANg=\pJTAFô^_ׯ endstream endobj 6 0 obj <>stream h24V0Pw(q.I,I݃ ,Avvny%@CCc m`le(@f fP]E%.n!%vvc endstream endobj 7 0 obj <>stream h24Q0P04U0T+- bB.vv endstream endobj 8 0 obj <>stream Acrobat Distiller 9.3.0 (Windows) PScript5.dll Version 5.2.2 2011-10-03T10:54:45-05:00 2011-10-03T10:54:45-05:00 application/pdf Microsoft Word - GraphiteOverview.rtf Correll uuid:c674c852-a4c9-4000-b0bd-894ee9d31001 uuid:601f36a6-32e0-4ca1-baf6-cc88e4e908e6 endstream endobj 9 0 obj <>stream h24S0Pw/+Q0L)62 )IRYZlg`h endstream endobj 10 0 obj <>stream h|̱@Wlt%bJN8q`qd2j<&궢Jj˽\1ƈ844AW#;{凥K?aBj_%T'u^<B 0 gw{pe+<\ NqcԮ~0D endstream endobj 11 0 obj <>/Filter/FlateDecode/ID[<76639FFACDCC4D8DB6161BCBED378CEB><87D8F5A8357DEB40911E676F85D499B0>]/Info 17 0 R/Length 67/Root 19 0 R/Size 18/Type/XRef/W[1 2 1]>>stream hbb&F L @gv N bMmrqA#``L\1 endstream endobj startxref 116 %%EOF grcompiler-5.2.1/doc/GraphiteOverview.rtf000066400000000000000000002105471411153030700204420ustar00rootroot00000000000000{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f36\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;} {\f37\froman\fcharset238\fprq2 Times New Roman CE;}{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f40\froman\fcharset161\fprq2 Times New Roman Greek;}{\f41\froman\fcharset162\fprq2 Times New Roman Tur;} {\f42\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f43\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\f47\fswiss\fcharset238\fprq2 Arial CE;}{\f48\fswiss\fcharset204\fprq2 Arial Cyr;}{\f50\fswiss\fcharset161\fprq2 Arial Greek;}{\f51\fswiss\fcharset162\fprq2 Arial Tur;}{\f52\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} {\f53\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f54\fswiss\fcharset186\fprq2 Arial Baltic;}{\f55\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f57\fmodern\fcharset238\fprq1 Courier New CE;}{\f58\fmodern\fcharset204\fprq1 Courier New Cyr;} {\f60\fmodern\fcharset161\fprq1 Courier New Greek;}{\f61\fmodern\fcharset162\fprq1 Courier New Tur;}{\f62\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f63\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);} {\f64\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f65\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f397\fswiss\fcharset238\fprq2 Tahoma CE;}{\f398\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f400\fswiss\fcharset161\fprq2 Tahoma Greek;} {\f401\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f402\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f403\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f404\fswiss\fcharset186\fprq2 Tahoma Baltic;} {\f405\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f406\fswiss\fcharset222\fprq2 Tahoma (Thai);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0; \red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{ \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{ \s2\ql \fi-576\li576\ri0\sb240\keepn\widctlpar\jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls27\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{\s3\ql \li0\ri0\sb120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{\s4\qc \fi-864\li864\ri0\keepn\widctlpar\jclisttab\tx864\wrapdefault\aspalpha\aspnum\faauto\ls27\ilvl3\outlinelevel3\adjustright\rin0\lin864\itap0 \rtlch\fcs1 \af0\afs28\alang1025 \ltrch\fcs0 \fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 4;}{\s5\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs26\alang1025 \ltrch\fcs0 \b\i\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 5;}{\s6\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs22\alang1025 \ltrch\fcs0 \b\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 6;}{\s7\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 7;}{\s8\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af0\afs24\alang1025 \ltrch\fcs0 \i\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 8;}{\s9\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{ \s15\ql \fi720\li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Body Text Indent;}{ \s16\ql \li0\ri0\sb240\sa360\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs32\alang1025 \ltrch\fcs0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 Title;}{\s17\ql \li0\ri0\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af0\afs22\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 Subtitle;}{ \s18\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 Body Text;}{ \s19\ql \fi210\li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon18 \snext19 Body Text First Indent;}{ \s20\ql \fi-200\li200\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin200\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 1;}{ \s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon18 \snext21 Paragraph;}{ \s22\ql \fi-360\li360\ri0\sb360\sa60\keepn\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls23\outlinelevel0\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon1 \snext19 Outline1;}{\s23\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext23 ParaContd;}{\s24\ql \li360\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Body Text Indent 2;}{\s25\ql \fi-576\li576\ri0\sb180\sa60\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls27\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon2 \snext21 StepWNumber;}{ \s26\ql \li432\ri0\widctlpar\tx864\tx1728\tx2592\tx3456\tx4320\tx5184\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext26 CCode;}{\s27\ql \li720\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext27 ParaIndent;}{\s28\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 header;}{ \s29\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 footer;}{ \s30\ql \fi360\li720\ri0\widctlpar\tx1080\tx1710\tx2340\tx2700\tx3330\tx3960\tx4590\tx5220\tx5850\tx6480\tx7110\tx7740\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 Body Text Indent 3;}{\s31\ql \fi-3600\li3600\ri0\sb360\keepn\widctlpar\tx1800\tx2520\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3600\itap0 \rtlch\fcs1 \ab\af0\afs22\alang1025 \ltrch\fcs0 \b\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 ClassName;}{\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls15\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls15\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 \sautoupd List Bullet;}{ \s33\ql \fi-1440\li1872\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1872\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 AttrDescription;}{\* \cs34 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Strong;}{\s35\ql \fi-720\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls27\ilvl2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 Comment;}{\s36\ql \li1440\ri1440\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin1440\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 Block Text;}{\*\cs37 \additive \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20 \sbasedon10 VariableName;}{\s38\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls18\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls18\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext38 List Number;}{ \s39\ql \li0\ri0\sa120\sl480\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext39 Body Text 2;}{ \s40\ql \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs16\alang1025 \ltrch\fcs0 \fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 Body Text 3;}{ \s41\ql \fi210\li360\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon15 \snext41 Body Text First Indent 2;}{ \s42\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden caption;}{ \s43\ql \li4320\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin4320\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext43 Closing;}{ \s44\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext44 \ssemihidden annotation text;}{ \s45\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Date;}{ \s46\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af36\afs20\alang1025 \ltrch\fcs0 \f36\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext46 \ssemihidden Document Map;}{ \s47\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext47 E-mail Signature;}{ \s48\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext48 \ssemihidden endnote text;}{ \s49\ql \li2880\ri0\widctlpar\phpg\posxc\posyb\absh-1980\absw7920\dxfrtext180\dfrmtxtx180\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext49 envelope address;}{\s50\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs20\alang1025 \ltrch\fcs0 \f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext50 envelope return;}{\s51\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext51 \ssemihidden footnote text;}{\s52\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af0\afs20\alang1025 \ltrch\fcs0 \i\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext52 HTML Address;}{\s53\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext53 HTML Preformatted;}{\s54\ql \fi-200\li400\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin400\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 2;}{\s55\ql \fi-200\li600\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin600\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 3;}{\s56\ql \fi-200\li800\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin800\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 4;}{\s57\ql \fi-200\li1000\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1000\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 5;}{\s58\ql \fi-200\li1200\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1200\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 6;}{\s59\ql \fi-200\li1400\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1400\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 7;}{ \s60\ql \fi-200\li1600\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1600\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 8;} {\s61\ql \fi-200\li1800\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1800\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden index 9;}{\s62\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 \ssemihidden index heading;}{\s63\ql \fi-360\li360\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext63 List;}{ \s64\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext64 List 2;}{ \s65\ql \fi-360\li1080\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1080\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext65 List 3;}{ \s66\ql \fi-360\li1440\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext66 List 4;}{ \s67\ql \fi-360\li1800\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1800\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext67 List 5;}{ \s68\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls20\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls20\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext68 \sautoupd List Bullet 2;}{\s69\ql \fi-360\li1080\ri0\widctlpar\jclisttab\tx1080\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls21\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls21\adjustright\rin0\lin1080\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext69 \sautoupd List Bullet 3;}{\s70\ql \fi-360\li1440\ri0\widctlpar \jclisttab\tx1440\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls22\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls22\adjustright\rin0\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext70 \sautoupd List Bullet 4;}{\s71\ql \fi-360\li1800\ri0\widctlpar\jclisttab\tx1800\wrapdefault\aspalpha\aspnum\faauto\ls23\adjustright\rin0\lin1800\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext71 \sautoupd List Bullet 5;}{\s72\ql \li360\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext72 List Continue;}{\s73\ql \li720\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext73 List Continue 2;}{\s74\ql \li1080\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1080\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext74 List Continue 3;}{\s75\ql \li1440\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext75 List Continue 4;}{\s76\ql \li1800\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1800\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext76 List Continue 5;}{\s77\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls24\pnrnot0\pndec } \aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext77 List Number 2;}{\s78\ql \fi-360\li1080\ri0\widctlpar \jclisttab\tx1080\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls25\pnrnot0\pndec }\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin1080\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext78 List Number 3;}{\s79\ql \fi-360\li1440\ri0\widctlpar\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\adjustright\rin0\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext79 List Number 4;}{\s80\ql \fi-360\li1800\ri0\widctlpar\jclisttab\tx1800\wrapdefault\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin1800\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext80 List Number 5;}{\s81\ql \li0\ri0\widctlpar\tx480\tx960\tx1440\tx1920\tx2400\tx2880\tx3360\tx3840\tx4320\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext81 \ssemihidden macro;}{\s82\ql \fi-1080\li1080\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrl\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \brdrr \brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1080\rtlgutter\itap0 \shading2000 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext82 Message Header;}{ \s83\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext83 Normal (Web);}{ \s84\ql \li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext84 Normal Indent;}{ \s85\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Note Heading;}{ \s86\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext86 Plain Text;}{ \s87\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Salutation;}{ \s88\ql \li4320\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin4320\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext88 Signature;}{ \s89\ql \fi-200\li200\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin200\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden table of authorities;}{\s90\ql \fi-400\li400\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin400\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden table of figures;}{\s91\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden toa heading;}{\s92\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 1;}{\s93\ql \li200\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin200\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 2;}{\s94\ql \li400\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin400\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 3;}{\s95\ql \li600\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin600\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 4;}{\s96\ql \li800\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin800\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 5;}{\s97\ql \li1000\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1000\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 6;}{\s98\ql \li1200\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1200\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 7;}{\s99\ql \li1400\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1400\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 8;}{\s100\ql \li1600\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1600\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd \ssemihidden toc 9;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid1629282526\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listname ;}\listid-132}{\list\listtemplateid138939394\listsimple{\listlevel \levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listname ;}\listid-131} {\list\listtemplateid-487397848\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1080 \jclisttab\tx1080\lin1080 }{\listname ;}\listid-130}{\list\listtemplateid610802434\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\jclisttab\tx720\lin720 }{\listname ;}\listid-129}{\list\listtemplateid1009025686\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listname ;}\listid-128}{\list\listtemplateid1129208938\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listname ;}\listid-127}{\list\listtemplateid-54068814\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listname ;}\listid-126}{\list\listtemplateid-164845846\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listname ;}\listid-125}{\list\listtemplateid-1529607284\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-120}{\list\listtemplateid932189664\listsimple{\listlevel\levelnfc23\levelnfcn23 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}{\list\listtemplateid1943585380{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \s22\fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'04\'00.\'01.;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-432\li792\jclisttab\tx792\lin792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-504\li1224\jclisttab\tx1224\lin1224 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-648\li1728\jclisttab\tx1728\lin1728 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-792\li2232\jclisttab\tx2232\lin2232 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-936\li2736\jclisttab\tx2736\lin2736 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1080\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1224\li3744\jclisttab\tx3744\lin3744 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1440\li4320\jclisttab\tx4320\lin4320 }{\listname ;}\listid184250857}{\list\listtemplateid67698711\listsimple{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li360 \jclisttab\tx360\lin360 }{\listname ;}\listid1337146905}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid1487355350}{\list\listtemplateid616584080{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0 \s1\fi-432\li432\jclisttab\tx432\lin432 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \s2\fi-576\li576\jclisttab\tx576\lin576 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0 \s35\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0 \s4\fi-864\li864\jclisttab\tx864\lin864 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1008\li1008\jclisttab\tx1008\lin1008 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1152\li1152\jclisttab\tx1152\lin1152 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1296\li1296\jclisttab\tx1296\lin1296 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1584\li1584\jclisttab\tx1584\lin1584 }{\listname ;}\listid1506630628}{\list\listtemplateid-1934717386{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-432\li432 \jclisttab\tx432\lin432 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-576\li576\jclisttab\tx576\lin576 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0 \levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-864\li864\jclisttab\tx864\lin864 }{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1008\li1008\jclisttab\tx1008\lin1008 }{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1152\li1152\jclisttab\tx1152\lin1152 }{\listlevel\levelnfc0 \levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1296\li1296\jclisttab\tx1296\lin1296 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1440\li1440 \jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-1584\li1584\jclisttab\tx1584\lin1584 }{\listname ;}\listid1717271031}{\list\listtemplateid67698711\listsimple{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'00);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid2020767601}}{\*\listoverridetable{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-120 \listoverridecount0\ls2}{\listoverride\listid-125\listoverridecount0\ls3}{\listoverride\listid-126\listoverridecount0\ls4}{\listoverride\listid-127\listoverridecount0\ls5}{\listoverride\listid-128\listoverridecount0\ls6}{\listoverride\listid-129 \listoverridecount0\ls7}{\listoverride\listid-130\listoverridecount0\ls8}{\listoverride\listid-131\listoverridecount0\ls9}{\listoverride\listid-132\listoverridecount0\ls10}{\listoverride\listid-119\listoverridecount0\ls11}{\listoverride\listid-120 \listoverridecount0\ls12}{\listoverride\listid-125\listoverridecount0\ls13}{\listoverride\listid-126\listoverridecount0\ls14}{\listoverride\listid-127\listoverridecount0\ls15}{\listoverride\listid-128\listoverridecount0\ls16}{\listoverride\listid-129 \listoverridecount0\ls17}{\listoverride\listid-130\listoverridecount0\ls18}{\listoverride\listid-131\listoverridecount0\ls19}{\listoverride\listid-132\listoverridecount0\ls20}{\listoverride\listid1337146905\listoverridecount0\ls21} {\listoverride\listid2020767601\listoverridecount0\ls22}{\listoverride\listid184250857\listoverridecount0\ls23}{\listoverride\listid1487355350\listoverridecount0\ls24}{\listoverride\listid-119\listoverridecount0\ls25}{\listoverride\listid1717271031 \listoverridecount0\ls26}{\listoverride\listid1506630628\listoverridecount0\ls27}{\listoverride\listid-120\listoverridecount0\ls28}{\listoverride\listid-120\listoverridecount1{\lfolevel\listoverridestartat\levelstartat1}\ls29}{\listoverride\listid-125 \listoverridecount0\ls30}{\listoverride\listid-126\listoverridecount0\ls31}{\listoverride\listid-127\listoverridecount0\ls32}{\listoverride\listid-128\listoverridecount0\ls33}{\listoverride\listid-129\listoverridecount0\ls34}{\listoverride\listid-130 \listoverridecount0\ls35}{\listoverride\listid-131\listoverridecount0\ls36}{\listoverride\listid-132\listoverridecount0\ls37}}{\*\rsidtbl \rsid867496\rsid1186561\rsid1736643\rsid3097561\rsid3410134\rsid4133908\rsid8998164\rsid10117778\rsid11227823 \rsid12060537\rsid14049566\rsid15689802\rsid15742510\rsid16205632}{\*\generator Microsoft Word 11.0.0000;}{\info{\title Graphite Overview}{\author Sharon Correll}{\operator Sharon Correll}{\creatim\yr2006\mo4\dy25\hr9\min19} {\revtim\yr2011\mo10\dy3\hr10\min54}{\printim\yr2011\mo10\dy3\hr10\min54}{\version14}{\edmins20}{\nofpages3}{\nofwords1357}{\nofchars7736}{\*\company Summer Institute of Linguistics}{\nofcharsws9075}{\vern24611}{\*\password 00000000}} {\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb \nospaceforul\hyphcaps0\formshade\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0\jexpand\viewkind4\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl\nojkernpunct\rsidroot14049566 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0 {\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \chftnsep \par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \chftnsepc \par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \chftnsep \par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \chftnsepc \par }}\ltrpar \sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\footerr \ltrpar \pard\plain \ltrpar\s29\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid14049566 TITLE \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid3410134 Graphite Overview}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 , Page }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 PAGE \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid3410134 3}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 of }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 NUMPAGES \\* MERGEFORMAT }}{\fldrslt { \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid3410134 3}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \par }{\field{\*\fldinst {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14049566 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\lang1024\langfe1024\noproof\insrsid3410134 Sharon Correll}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14049566 , }{\field{\*\fldinst {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14049566 DATE \\@ "dd-MMM-yyyy" \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\lang1024\langfe1024\noproof\insrsid3410134 03-Oct-2011}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14049566 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar \s16\ql \li0\ri0\sb240\sa360\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs32\alang1025 \ltrch\fcs0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst { \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 TITLE \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Graphite Overview}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af0\afs22\alang1025 \ltrch\fcs0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid14049566 Sharon Correll}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16205632 Version 3}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af1\afs28 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 1\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Overview \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 The Graphite engine provides "smart" rendering for complex writing systems. It allows for the following complex behaviors: \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 contextual substitution, insertion, and deletion \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 reordering \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 creation of ligatures with defined components \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 positioning based on attachment points or shifting and kerning \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 accessing of glyph metrics \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 rule-based line-breaking \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 application of the Unicode bidirectional algorithm. \par {\pntext\pard\plain\ltrpar \s32 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langfenp1033\insrsid14049566 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\s32\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlblt\ilvl0\ls25\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 selecting and editing in all of the above situations. \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af1\afs28 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 2\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Project history \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 Graphite was originally developed under the code name \'93WinRend\'94 because it was intended to provide complex rendering on the Windows system. Early documents refer to WinRend and also to RDL which is now known as GDL (Graphite Description Language). Design work began around 1997, requirements were formalized in the first half o f 1998, and coding began in the middle of 1998. An alpha was made available for testing in mid-2000. A beta of WorldPad, the first Graphite-enabled application, was released in September, 2001. Open-sourcing efforts began in earnest in the second half of 2002, with a port to Linux starting in late 2002.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1186561 Version 2 of the API was finalized in mid-2005.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15689802 A }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16205632 thorough rewrite of the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15689802 Graphite engine, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16205632 called }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15689802 \'93Graphite2\'94 was completed in 2010. It contains a completely new API, but can render using the same font tables as the original Graphite engine. This documentation pertains only to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1736643 original engine}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15689802 . \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af1\afs28 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 3\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Graphite\rquote s application interactions \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 From the point of view of the calling application, there are }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 two}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 main classes that serve as the top-level interface. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 The Font class represents a font object, which incorporates the font face, boldness, and italicization. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11227823 Various platforms and environments provide different versions of Font, depending on how they want to read tables out of the font file. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 The Segment class rep resents a range of text laid out for rendering, with properly positioned glyphs. The Font is passed as an argument to the }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 method that creates }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 Segment}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 s (the constructor)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 Normally }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 a Segment}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 would }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 consist of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 one line of}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 text}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 , or if there are changes in font, wri}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 ting system, or style, several S}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 egments may be needed to make }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 up one line. In no case does a S}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 egment ever consist of text displayed on more than one line. The calling application is responsible for laying out the segments into a reasonable paragraph. \par In addition to }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4133908 Font and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 Segment, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4133908 a TextSource}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 must be provided by the application to supply key information; }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 it}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 serve}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 as}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \'93call-}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 back\'94 class}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4133908 . An instance of }{ \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 TextSource represents the text to be rendered\emdash the range of characters and their associated style information. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 A rudimentary version of TextSource is included in the open-source code, but many applications will need to supply their own.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4133908 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998164 Another call-back class is optional, needed only in the case where justification is required. The GrJustifier class is implemented by the application and used by the Graphite engine to make decisions about stretching and shrinking to achieve justification . A default GrJustifier class is supplied as part of the open-source code. \par The SegmentPainter class }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12060537 used to handle drawing and other operations that occur as part of the editing process. An application may make use of the default SegmentPainter class, may s ubclass methods to customize the behavior, or may implement drawing and selection behaviors directly without using a SegmentPainter at all.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af1\afs28 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 4\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Graphite fonts \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 The behavior of the Graphite engine for a given writing system is specified by special-purpose tables in a TrueType font. }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15742510 The application creates a Font object based on this TrueType font, and as this object is passed to the Graphite engine, the tables in the font are used to perform the layout of glyphs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 . \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af1\afs28 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 5\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Graphite processing \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 Processing in Graphite occ urs in a series of passes. The first pass converts Unicode characters from the underlying string to glyph IDs; all the remainder of the processing happens in terms of glyph IDs. Each pass takes the output of the previous pass as its own input, looks for p atterns, and applies rules to make modifications to the stream of glyphs. The final pass performs the final positioning of all glyphs. The output of the engine is a \'93segment,\'94 a group of well-positioned glyphs that fits properly in the available space, and also understands its relationship to the original underlying string. \par A class called GrTableManager is an important helper class to the engine. It keeps a list of passes and manages the process of calling each pass. An important point to be aware of is that processing occurs in small chunks. We }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid14049566 don\rquote t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 run the whole string through the first pass, then run all of the result through the second pass, etc. Instead, we process just little bit of the first pass, and send the results on the second pass, which does it s processing and sends the results to the third pass, and so on. The mechanism is driven by the final pass attempting to do its positioning, and repeatedly requesting a little more input from the previous passes until it has filled up the available space or successfully processed all the input. \par The reason for using this approach is to allow us to avoid doing more work than necessary in the case where we have a long string that will not fit on the line, and we need to insert a line-break. We gradually proces s a little bit of each pass until the final pass notices that the available space has been exceeded, and then it initiates a prcoess called \'93backtracking.\'94 Backtracking involves finding a place to insert a linebreak, and then "unwinding" the subsequent gly ph streams so that we can redo the processing while taking into account the inserted line-break. The trick is to unwind as little as possible but enough that we retain the context for each pass. This requires careful bookkeeping, and is managed by keeping track of \'93chunks.\'94 (It may also be necessary to backtrack more than once before finding a line-break that will allow the segment to fit on the line.) See \lquote WR Data Transform Engine.pdf\rquote (an early design document) for more details on this process. \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 5.1\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls27\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Passes and streams \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 There are five kinds of passes: the glyph-generation pass, line-break passes, substitution passes, the bidi pass, and positioning passes\emdash implemented by corresponding subclasses of GrPass. They occur in the order just listed. The first pass is the glyph-generation pass, and simply creates a stream of glyphs corresponding to characters. Substitution passes have the ability to substitute, insert, delete, and reorder glyphs; positioning and line-break passes do not. The bidi pass (if any) performs the Unicode bidi algorithm. (Many Graphite fonts will not have a bidi pass or any line-break passes.) \par Each pass takes a stream of glyphs as input and generates a stream as output. That output stream then serves as input to the following pass. The first pas s, which is always the glyph generation pass, is numbered 0 and generates stream #0. Stream #0 serves as input to pass #1 which outputs stream #1, etc. \par The streams are implemented by instances of class GrSlotStream, containing the glyphs as they are being processed. Each stream holds a sequence of GrSlotStates, where each slot contains one glyph. The slots have pointers to slots in the previous streams to help keep track of the relationships between the output and the input. They also have a number of inst ance variables that represent "slot attributes" that are modified by the rules. \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 5.2\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls27\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Matching and running rules \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 Pattern matching\emdash determining which rules to fire\emdash is achieved using finite state machines (FSMs). Each pass has its own finite state machine. The c olumns in the FSM correspond to classes of glyphs that are considered equivalent for the purposes of matching, and the rows are the states to transition to. Each FSM has a table assigning each glyph ID to a column in the table, and each final state indica tes which rules are considered to be matched. See \lquote WR FSM Design.pdf\rquote for more details. \par The effect of firing of the rules is done though a stack machine mechanism. There are commands to perform subsitutions, look up glyph attributes, make mathematical calculations, etc. See \lquote Stack Machine Commands.doc\rquote for a complete list. \par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 5.3\tab}}\pard\plain \ltrpar\s2\ql \fi-576\li576\ri0\sb240\keepn\widctlpar \jclisttab\tx576\wrapdefault\aspalpha\aspnum\faauto\ls27\ilvl1\outlinelevel1\adjustright\rin0\lin576\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14049566 Other details \par }\pard\plain \ltrpar\s21\ql \li0\ri0\sb120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 Another tricky aspect of the engine relates to cross-line-boundary contextualization. In other words, the way a segment is rendered may be affected by the characters on t he previous or following line. In order to make this happen, there is a block of information that is passed in when starting to create a new segment, which is information from the previous segment. It tells the engine how much to "back up" in order to tak e into account the stuff from the previous segment that will have an effect. \lquote WR Data Transform Engine.pdf\rquote also discusses this process. \par To get a complete overview of the capabilities of the Graphite system, refer to \lquote GDL.pdf\rquote .}{\rtlch\fcs1 \ab\af1\afs28 \ltrch\fcs0 \b\f1\fs28\insrsid14049566 \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 6\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs24 \ltrch\fcs0 \fs24\insrsid14049566 Revision History \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af0\dbch\af0\loch\f0 1.\tab}}\pard\plain \ltrpar\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls24\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang {\pntxta .}}\aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 15-May-2003: based on an earlier plain-text document. \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1033\langfenp1033\insrsid10117778 \hich\af0\dbch\af0\loch\f0 2.\tab}}\pard \ltrpar\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls24\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang {\pntxta .}}\aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10117778 25-April-2006: updated to discuss API v2. \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1033\langfenp1033\insrsid15689802 \hich\af0\dbch\af0\loch\f0 3.\tab}}\pard \ltrpar\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls24\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang {\pntxta .}}\aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin360\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15689802 3-Oct-2011: mention Graphite2 \par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\lang1033\langfe1033\langfenp1033\insrsid14049566 \hich\af1\dbch\af0\loch\f1 7\tab}}\pard\plain \ltrpar\s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar \jclisttab\tx432\wrapdefault\aspalpha\aspnum\faauto\ls27\outlinelevel0\adjustright\rin0\lin432\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs24 \ltrch\fcs0 \fs24\insrsid14049566 File Name \par }\pard\plain \ltrpar\s23\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid867496 GraphiteOverview.rtf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14049566 \par }}grcompiler-5.2.1/doc/MakeGDL.odt000066400000000000000000000617421411153030700163500ustar00rootroot00000000000000PKoO7^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKoO7Configurations2/statusbar/PKoO7'Configurations2/accelerator/current.xmlPKPKoO7Configurations2/floater/PKoO7Configurations2/popupmenu/PKoO7Configurations2/progressbar/PKoO7Configurations2/menubar/PKoO7Configurations2/toolbar/PKoO7Configurations2/images/Bitmaps/PKoO7 layout-cachecd`d(a``d``2Bx84 V$(*qȐcr KP%e0V PKؒ9XPKoO7 content.xml}nH~l%vv6NW'ڙUhkQ(*$q"UXV طyeߘOosBoIjtfq;qΉaa)L~}; gbڳ?]NrS [cm>\=;}Y[:kӱ_[rkG=H|;.HhNxeN:?vl"fCmm]4= 67sn-X7HLnB|hDݝt PvQO1EoO'P ׍x+X (NUҤM0ؒWL{kZect_xƧmͲ G?I*n? jYi< /eKt`q'!Sc(!Z%[E`& H籱@ts]{WSTYd=( \qm]dYgFaj,.|lc7!"0/=3]A(BYDW5{/\jo2+OE|T3m!?xԪS*Ǩ g4|dwzvc)?G,1G{nyy^8lm7Wd`N3+=Vfny<ѻ" #^JR‚,[ȏIm~ { 쎄&R$K_T; 2Baw+3wѸnNm/lK[/ \XDŽl4sM|S :=L1Ԝ!x@R4RޛdLuˉZ'44m{¦In/RHu7ֿʾiG @`{bi ;~$f9K;X`:56oO>oit 3l0td$Т:o0] !n?Fx %Պ?>G0'v:W{pq{p&&4+CM0hΰ@Kgm=tVeS&,+98wVv3XP{Z Z(Xh" pb8L]gʝ;`LűE<0D>V&C/-Ik' \|wO{NͣېL\6uZ+Qh Ep+⡭J.L(@0]t\gӹ@6 lcz]{|4Kw2xkVʴ, ("KhPX~+"No))gÂ!oY]gŰ1 yoNZ/^x¬D2/0P"`b鯓O'#0 4kzKb5l 辯sIdh1Nt-<#焘(h-]f-BH Vp)(d4Pn**d9b̙dc]IPPI=XYСns)Cnz]+BݚgtbYĂK9 4dԬHg6k`B |J̈%(Ʉ.EքܜБ iD r],lH^yhdk-c !G3I|ٌyOL~)S@v A@MoP:٘TdȥL@ ?m3L2g"tto ܎rv~r6=|d9i>:S 3aSX8 h9 |OZ ߱A>]8 /3bE6rߟ[O.byTlAMPA ebXCpeTNH=}1ya;>lCS z =bM ]Mm4nG_"˶"v r8iuA-r*@fTHŠI$j5~@h^SCg(o LBIv?jٴ:U>US.s֭y6M0\[alN Y9|p:&>Lr ߆$FfJl,ikf?AmY/tSZ=4jFuQlnW\W2#TH1lDTZWZꦱ)Id&$2C9Pݳf<S+1j9Q/AcnF|"뒻";}YQ⸵OŘ^A`ʬg2MAoCۉ_A E0TX`+ձS=; 1Sxa2LtHo z ue=! $YXы.i5;c7U¿~ S%4Lg􁭉sǽ& e)H$!MFW|{ҵ{\z4{ωK-EL3@*{cnŻ0*٘KPȡ}Nx!?F; '}m諢DrdxcaQIJ wSDz4G +M*~@aL "(mҤh  "2fW{ (wJcd&M oF1l3 '@S*H%:DKX~C|43)+|;߱Km4JHé<f4BCT&Nm{m@A4?юt˥ȎD )h3H;f QW9tꤵE\Gr=K;FHAfgCwtuX:QLPTGlI:8ށ' ^Z fs;Kt똶"g{$m1l|17`IF6?-f%-74De\&W;?)DyЫe7!=T8_L8Pk2H:"e#\' "7Gu`VZwBUaPKg#]y͸jjnh2E\qE,rhp0iSsV5?! _pxX!!/MNO{'mT鞚Q6A8EqzO"ᆳ;-^ӹ;ŽKh݅Q/`~ǖxX !7]f(B kG"&ɧRA5;H<_%=ho,awS XCW]SaڏI[l<-#=?%{`$P aCP̿J`u<`R䨕e``&Atp\3Je=9tLLӵ󙇧@R)}m*BKoR[Qtbp [dǥ&.R,}LgV>JaJ4q #P)>s9ctrO1j!+)rgb[8cX74KrǵBycgFH*a-7 he Z: A'JZHyd00X(cͨܥѻQ,`η^K4|+_o_bO<1:RY_r={n,^(>j?ro ,&-XEUؘاmlԴxMᖪC8V#(xk "Ѝ'¨,J2J,2,geݤ/hdKӺEO|etPqN^$VW:3Pڊb| | nΈ";P ӕо9kLiB(,gUbKfrRh){7Leۀ0d2O-3Yiur:x;d㋐Sik|rO*A(g>I3ԁ%'%A|W"X{f JXIHڤa.I),:&M?۟2h6o"|ah_-kuKY~RjYw->[~[Y]v;j;%ޒ .@p ml҇&cr:ǝnsuz\19@nsv:n>ſ۴ *~#);De.(1GE(ك&&6nD? hh0:Fla4YmpPѵW30;/j | `8,m`KYeZ<S;NU.ej7S0k*]ݦo|ĝc],1"^ˎb6/j2z'`ֹ8Mx^V>:je׊E >~w'GYf.}AY$Aǂ9uKb+^Q*5Aw  /K0% Gw$r^){r,\2+ЀWv47%)ʐ_k ^४(-f[at!v-v`؅ƀG / ^d11KcT)dzk樂.s-"#M8DZ+p[6[>Jsie򙅂&sWս(9WV@ɊݴF_|Y) MK3nt} l#'F8&2쭐< vs?=aZ!1< {7`~s Pß̞0( R݀=U+j&V3,ynij<'$~[Nz$mVr%gAڔ>5 AY}P`5i}3( vڒT"˽ϴմ/ Tee4/VEW~JVҳ5X76d5jb]AuJ95h7#hT m kpSZBzI mDQdXM&r3*+z3Ĵ,}bqE*hQ]1Qm\mP[Bq=OS@ߖ0]o̳2uK,fu>NzƷR9XX÷سXJ#ĘρlSAEIw #nYmJe?Kqc'BϋȐ %^eNc~Sx^mgx%d !)}c~;~&?x0"Cˊq,nMc4%Jf*Ffs ^tUH.9eW Ppe 0ہSTo]IAtnnhg"N\鰔tXA:, uf4 M\g`îڐuGpҖTU>+vtۑL7-e NR=bJ|)QM_W|=t.wtBq/Mڦ.-vu_vFٰBuS;ڗYpt{B~)ҊxsɖGD^_2|q}T`ش1x$<  BX%.q A ."S i]'(,^q =^1~lʦ8^'1W d#5P`oRi&r]B(qq{*)dJd] :^atIK?  Ŏb(‚pA5C؆y PZ_3שtM'?Rw8Zj k7޳a0M-fh\ UT=v, vXB'[.#y%zf  dGi.Ky>4EJaROYD/Rj[{kHXo9f,SegIfYHdjҍ2|GĦ{|#g K+ФYʱO>q{}j;YV@+Tvo*k9b7k?k向,}Wz@~Cf\a#(6x2X?(4~]Ix0|<(WM#AW˜>d,hQ=|v vfe&BĿJ5dOX+sb-3 B.V/M̊g:<ӔI$G%s'&2?k8 .:p!y|8v^o(k9t_>C5:bʊeŻ'ԄKtC(煝HH[L/8LdpgM"!rnB 2ު;Χ~jp ^ջQxyA12.;5$yv:>?ON.q56MWNLV0./B_fZ .r.Y"$#XϮ\\Vt#C"Yb*`rhT3%ge &\3Mr}z=QPvo+Nj+Ȭz,q۱Lf&IpI~ P,kؿqSfVG&Mk/1a*M.] RW)Û9œi0h(ҒVXo.#3K[Ra {U8wR9Âр!w$ ֞EcE-ӞhgЊ&P؁֘{ a\217#uUtbh$akjkҚx7mןN _ܠ&A#-D }PKO)qZPKoO7 styles.xmlr_Qg3L(ؒcfx؛>z إH IYV3~V ETv3q9=o< 7=?зW7OYoK׆WN`6Џ(>x02Pg?7]_ r+l`tWӕ}EO` ;ϱng 3`ng x*v_#\l vsX<{`q?Wk>HkmwG{='Vp .~VDm0f AAJ[#V kjΊww}7 ^+d2|@R]7sa jIA$@ p2})>tc v) <;x1 Ya'=ۺ>j 64h{5խAcc6H8t(D 6#:(C$sm[779z3n8Xxׅذ&'LruS? %l@LaRmgCwR+5 |]LODZT% Fa.FGf"+#oᓣĞG1r><*z _шes' TUhbhyf aJDM3S tő.8Ƌa8M8B ; ecŴ$'I$US!XJj&"`q}1iD9Ssݒ/0&"iKcW(k&RМ֍F/te0s:]kEGR_d|Y.ה Xig_ @f@fHUdW fzrI_S.Iymq4o0޺J>Z ïf]hy]_.)j0AU)ԕv)^; Ⱦ!RD"TcwCzJDva霓5jF6K`I{3XWwyeԏz!wu1/)?r sq}li[渼Ҷ[ڦa3H$?cb+4{GW6r8#wWbiM'QALfma7IyhfW6@&Q>aQ:e Z#퟇0Yb 0!?Dsu] 9[(hAn,Su0MWY#Z1uVXqѧIP1ׇ#ʶ1FID`ƨxV1cԦ 8 q\œЧ8J+CU $I /'UMΛ>EUwJ_S 5P`Ef:Iz$tB`$5xdjH q ?96?( hR3(,[PCkE0 F]Tx4@+"DR+D(I+DX+r"g87jSE Q +'|PÞIzK0MQ/^o9i׀T)Gv|F#˙@@0s.)@,$ɱs% Ђ'=4q4{E0|5`!߇bW존%.vM{N;9tjV )1rhg}/7r7 ;[exA>d. NVvM㎰\tKfӴl:ͣn~#l6fRҼluG8^1 ͵vS^QHZɋ3Ӌ%bX ]5_fNQg+sOaum\u-=͍ZUX]u&-R>Ս;msy|67>HWgOcuN0.(>ɜqwk=ʌ[ƫw-IX46 Mڗs 16i&miㆤ6iM*& Ih&9diӆ]KZ/9]AOAA-ٛ$S$Mio&8#\tW܈f$ & 2iݘ^&r[vC_̬}\f9ЇHx| V0'957xN`6PwU 4ʯe3S_ \3%vmV^z&o3nOb5^B!"qk8F~KFNӗRw|<4{8bD ۍՓ#-͒{5{[۲FGZxɃ0.Yq<݈MhX?IKW Cx2խEJM ͸+g^A~-W!K;ȉ܁3 X"_I u6yF *VWRK9@֔ $a\u>7g*cvZҗEH5uWdu5b@vo= 2ʵ~AhBi(ְQBf"=S)iQrStH`Xh̪̣8$_N ,^@3ofq! 4Og(zz_khlgr Graphite.OpenOffice.org/2.0$Win32 OpenOffice.org_project/680m5$Build-90112007-08-08T13:44:322007-10-15T14:51:30en-US45P1DT6H23M49SPKoO7Thumbnails/thumbnail.pngXePLF@pwE=kp[,8ww@E rꮾ?7U3Scj~TæFAASUQ/1;/QP(4TdrJ'kJxWh/ئa0"5Q31?ޠ3: ;q %E`p3#/2W7'7}sKͣbOŒ*& 3r9tKUck.{2ixfi,DOjF{-vz*72b}SX pwl r@dƍ;9*7Q#* C(~=UU_je"6~Q8S?6c_W+k@.Q:x3cq۸CetCo5ϵ&#` ܞS'uk5qX1Nw,/z#/gEDv{ebtFj3gf-O󣫺q?D4G+'bXz:{ՁyQ D=tAs+Beb Giks3wZ"~*$!61b'B5٭7LqH5@Y]K]R 7tB>j:LQAk5Pi^qݰqMSl4{F0+.Χ!4ٱ\ H {x;o- {k9 b㞲o=ZޙR}d4+2F(/:}^\yxFklA>yy+?=R͵ia #G*C hQt@&3VzGTG2S1AD=іe{_,{@{V29Bu:837sĦ۠Y:%ߵ m=S>LK,9"{(Svþɿ6#QT}moH tU}2cmD!OBÏ>o}uU<>x춡i_I LB2 ) %\I8ml@moYCi?'s([FE*!>&.|k(RW8*os)qzb/}nMH6~{LW }{ݝ.InY68!{Ղ-R49x 2>&Êl tfy#pNVní0;`'SG=eߓCۘ:`)O5!OH˚$pyQi7L;1v$^_~?GIR"$6^(+{˟^]̓aL{*zt שC,ǡmo){v(} dpZlG n&ҿ4d`!MӏrPpaymofP j_vzoPWB~t#n3{r}U˽/|yq<An42N啘}UẂOvYP$즣f[og2Qx#˘asBQ}8؍QtLZ1C*41} U[quZHfm@=/>ߣOc]mZ Gmśqԗk,$m:轎! 2Åڛֽ$~v' 1X0 :6)+8;!Ot؎R/ )I6ؘF20(;rm^2s8g-V?ϴz&ZNovif"?j5WqPYѬϣ;^4HŁ>EU'@I_ TYMc؎S0& 5yrFGdKey0QjK߬M4,p4J% %\l$ T (cF ނ"XO8+Vsu & թ%/ _[G\̊@dT7È˱ZV!48͚6fK0~~~(A,@X.BE |0MRWW'45@8ku1m!5WIMEJ!s:mքeqs ZM\ pTKhnG&\[{]vt'E-ݼT @> M^,Vo/j ]iI"ړч#Ք^T{%L6s'iR|'GK!`̋5jY>,<]9`;KA_>(f@z/30~o/@ifq%+( ; /p: HK:S< f#6}$řQ>`ȂJ~H򗆘pkJ(iRlfCS&YwVrw[T>"ah 1,8\I;,{l3`y B( /L+;YLuX0~(Cێfm_WO\p|0ȾJQREҤUqoSbXll8E g'կ[?y#;R[5oIyS7Jo/&'4u7,;F#[arqqX~J:cRRZ% Wr&hV#Nߴ㍴.Vn3Z c?jlkv7gsRI*kN3ͺhI:Lnբ^uk%5pt'G7L"J \F(aBD/"[4̬awV5Y6 %aq&!.+͇x^$˯1 F=((ꔣy\k֬,J2tRwk Y釂:iVe4nFHұ'[*H(kz/B8YC:O,Ҧ>݅ˆ"HiUXNЁ4`roQ񌇅HԽm#Xy1>4-?ݽ)ܶN.i(|*$iDմ[yV4RU5_0:iC,ihNذnR<Q =7ݸ c@AĻb"zAmᐽ48)m% ^SGJdbOBgÍ9@-~Wh.Ef!K9SWׁ;aOH)[ *i'JBnfm42RR{ұJM!5 ~q!i_`BY])MP [Gs `_ͯQ=!'=znָAp5#hAKYeX,eDŽ+L ( tܔFL<ڑ_җSFj blɁ?8GrS18 \& Q1SL!ۼ_Vytd;y;:ⳚJj%j84u][BEy(/~h~ʔ*3jn&Kbq_ ds(0"QR3[IJ:'m J&Qf cʀ%=흑|B;T5jBPKEMPKoO7 settings.xmlY[s:~?;r0CKH3훰ЉHrV6dR09FO.շOP^Ai.^ 4oOp>>4)k0mNX&2uStM@5߯n&ґ-jX]^ZTjdvG9SU߫B7EvCzDYZmT^i{\ag~n (sMi;lHek^־l1f4^q}W9q!Mj1<0,bXf~y}SdGa[2`(I=gBC>%U8rȢ2!8tV6=jsQQ^m\ǐW7 HԮ7R5 8{$R׉ǣ!B($`)qu)IڇU~[}Tbk՜z|A_@P|Ǧy(3$!u`2$b#$11yta~AģXC@}`LmC*[,a>ٌ9+M ҆̀Pt.ʿTHuٹ!q܄ g.}z}Ea$%c&`tr- эsb (K̰ X!&<};FK6^#',6L'6ȑ{H<~H&IU4'  .r bz \xt}^%CIfD NTY:(Mz^J+P:ʕ/%]L!p6Ǥ9Q_2d4Ek6w&c& ؋0%*72@Ml>vK"2u(b{D6p 2e0G;΍b^Ud&uRVXʱPKR[PKoO7META-INF/manifest.xmlMn F9ަDj =$ ő6@X)H;ۈAhky+zX`uiP}F`k0 լjѶN-ןדi(.N,0J=67Z:޶U]+*.Sz]#wnS^tñzA)4.HCݕE'3RJgL6G/q'k^PSE]kj|-" TLa'8 NG\ ͎alⰵ I> +o6ӛ{nR~{rWPKOPKoO7^2 ''mimetypePKoO7MConfigurations2/statusbar/PKoO7'Configurations2/accelerator/current.xmlPKoO7Configurations2/floater/PKoO7Configurations2/popupmenu/PKoO7JConfigurations2/progressbar/PKoO7Configurations2/menubar/PKoO7Configurations2/toolbar/PKoO7Configurations2/images/Bitmaps/PKoO7ؒ9X -layout-cachePKoO7O)qZ content.xmlPKoO7譗eȟ (,styles.xmlPKoO7\22=meta.xmlPKoO7EMBThumbnails/thumbnail.pngPKoO7R[ }Ysettings.xmlPKoO7O^META-INF/manifest.xmlPK(_grcompiler-5.2.1/doc/Makefile.am000066400000000000000000000006561411153030700164650ustar00rootroot00000000000000pkgdocdir = $(datadir)/doc/@PACKAGE@ dist_pkgdoc_DATA = CompilerDebugFiles.pdf GDL.pdf GraphiteOverview.pdf README.gdlpp EXTRA_DIST = grcompiler.1.xml gdlpp.1.in CompilerDebugFiles.rtf GDL.rtf GraphiteOverview.rtf man_MANS = grcompiler.1 gdlpp.1 MOSTLYCLEANFILES = $(man_MANS) grcompiler.1: $(srcdir)/grcompiler.1.xml $(DOCBOOK2MAN) $(srcdir)/grcompiler.1.xml gdlpp.1: $(srcdir)/gdlpp.1.in cp $(srcdir)/gdlpp.1.in gdlpp.1 grcompiler-5.2.1/doc/README.gdlpp000066400000000000000000000004401411153030700164050ustar00rootroot00000000000000The GDL preprocessor is based on fcpp http://daniel.haxx.se/projects/fcpp/ There is no documentation on that site anymore but I have found a copy of it on web.archive.org This may be found at http://web.archive.org/web/20050305100824/http://www.contactor.se/~dast/fpl-old/cpp/main.HTML grcompiler-5.2.1/doc/StackMachineCommands.pdf000066400000000000000000000350661411153030700211430ustar00rootroot00000000000000%PDF-1.5 % 30 0 obj <> endobj 35 0 obj <>/Filter/FlateDecode/ID[<7C08DED9A3C9CD9EAE04B087ADD93892><306D90A4CD637348BD170767D986F74F>]/Index[30 17]/Info 29 0 R/Length 49/Prev 14558/Root 31 0 R/Size 47/Type/XRef/W[1 2 1]>>stream hbbd``b` @ H0_ւ$&3.` 2 endstream endobj startxref 0 %%EOF 46 0 obj <>stream hb```f``e \ , B348H I_``0*Ҍ@ NL>#?@ s endstream endobj 31 0 obj <> endobj 32 0 obj <> endobj 33 0 obj <>stream h޴_O0HR M"՘xȊFJ}It+vSp|;/g"0ʈ S%'$&ITD$'L* `, gp!#rz\ ܏|ϊFpEXNazE 3 Ggs'R β:_ l\;ӈ3̊l!mi|7 Øl7LZg&/~[ݐkT|omFiU<\-=56up]՛[R}4Y/'Єћ/ r?z[fF}_!/Wm^N&ߎgyݘuVwVA:>e*}f0Emf Y7w<_<&a? CB[ LyogBXy#b?!5DF!Wzzb~>stream hVnF}W#Y%KpH4<9}XQ+e #O/]^$Q-\qf9sfo f.IS ͌QB9P ALⷻ|F(1 }9K-?ȊRIx_vB7$Č,8ül m9<\B0~LXhþ8Vk΁L{2=ž[p&kaR?:KE$q9H{%^!#|@0|jDmȽh4u)go5^RjS?R?e^hX$z{eN[x'=?:iQ6vƎTֲr%Ѕ2#\Zt!4JbňёAP*ž(9Muh{1zqNh>E"^|SQf6SWP ?[D-QKYT5 B h0_ -vM9r*5|Vb[o%j.[ "u -A@S憶 Cg)!MXI:A{%'6|tpƄ;wRZJ].3b\Oȅ0{]ά}~+2qn! P4Z"rd`c/muڦx"> endobj 2 0 obj <>stream hVKo@WіCh+Ri:dm3WHy|73>z{`YMē8 ^L%ů(x! =Oo'B) !NEĺ+'JN$WvE8ød:b:.|P)nH({M䫤,rZ"˦@]"NaGvql|uYAP߇d-nmD`U6B?)TM]&i[ȲBOǸHdU 0| (؟%<@6 gP44ݻZiRTMVheNf3u\Szd^!y]e|N5\aUMBRRV$Yj0[Kw6YARqDlUSmF.uFC_Rv*H4Vt#3 4AA /vl IQs:SYY<)E: endstream endobj 3 0 obj <>stream h22T0Pw(q.I,I݃ ́Avvny%@#cKi`be)C &PME%.n!%vvA endstream endobj 4 0 obj <> endobj 5 0 obj <>stream h޼K6s"RoI@uSwxS S V> 1aPGO95&{A5 ++̃ؓKDf6FЏAܼxP DZ9Nk*G |$ )0F[^c&E<N*UTWJ|%||u .թQ!I=}V%<~ ܺ咝hw=[5\`"% RlCxctOO~)8ųRٷm"&{ #r)*9~e.^; 9=g$E1t,'j9Orc"f7OzPy7)R{R )-~5VwTC;%IɡQIh.gDrA){#>1#qhu d+Fk1lagYZ-kqƠ``v6_iDN+564!l9AY]?!bT/](P>gDo2HְHtLگg5_s ca:i=ފ6T3Í 3>u`V-3$'-gtwRS3s*$:hMn|7dWj2a^G+ֱUZ I+2 Q 7nj[kx}[+W[~LÄ\P[&4Jenn)Zx M&[%\q}<t`;\' 9Q Nd:P7WEא_tI endstream endobj 6 0 obj <>stream h22R0Pw(q.I,I݃ ́Avvny%@#cKi`be)CU'D釤V endstream endobj 7 0 obj <> endobj 8 0 obj <>stream hWێ6}W*֌%E4)h`PYzIAv,!)YRӤ@@ K\Μ93z5'zzb',HI< "$ aN֕qAMYݑPKA^Rto4`wOrkb6bk㊼/oIړ ﯼ;?mxEx{eQ9!܊ p,I\jhԢ5dz̢,ȒUŦ?P)>*CbZAAqrdeYN;ù%#}KS^`.7($/['Ǟk#0ȜZl:t. S9lVyB~Ą%a_NDuij%5 Q*_<c= n 7Fp[c`2yhyCrQ Ui&H2sXL3xT΅Bq0MOQ0^ 8]݀Ã'tl nk%d|i9 ?%9ū 'ւ83;ꆢi!xpho)- rҺ"Wm6|sK ,xWHPM 4B7mgLfِoJ?K 0YI?mЧ.qL.IX`}@2F,'LhL,-Rk&y1FvG謁ʾ{")G|쟟#:to}<_aͿLӧbVfܠIsǬͦIY)20_?jo И? 0u endstream endobj 9 0 obj <>stream h22V0Pw(q.I,I݃ ́Avvny%@#cKi`be)C &PME%.n!%vvC endstream endobj 10 0 obj <> endobj 11 0 obj <>stream hXَ6}WQFH@PM E:z0Ƀ,Ӷ[̤K%.(fssWwlwYrH^0_%.c.|_d$Ջ MoRrUc 8{&Sbx fA"$$D ^LYaoƷY-KZb!wS0G!܄FLL4i4**d]ӪÇl lL{qpF}( ⠇;\ɪh%?V ]kY򸕍Py4N#XnijѐL{]E{;¦Av,,o0zS0L!NF)K 9Cg:W %:E+] Nȩ-fܸ"Yۑ'Qn tU%<-J F2e Eɖ;Pxq<ʣ8"AO;h0U0_g/dd4L|Aϰa*'4?fF>\B x `oUpN7bsf%T!\VJ@ P{+'+~UQ>Af YtRj&dSPOJC 6Y BzX" =IR1tT0(x{%Џ'8!xh\+YBn ȗ{cߐz~rD`&]E"'~^54jIWr'>W:EZH`dyZ4AgN1Qγ̚~}E:+\Y#+I=sAM̡Iȣ9\Sa+|Q1fӈ송I3j"Mr颼)IYVW3֥! }Ф:V46֗Yzz^o`8F o!?T:;jʝx25KU/ˏriyН1y7x]GA|7"P kU3MG<אx;`[?((JlfF_ 5h6iեC̮Č*QkWD%iF:s0dCޥoSiZkNV+e?JnOwչ b3Aqe o`t{=*u%m\4-hf@GK!V"nQW:Yj<=^-|ij0 ,Hؗoח`r:w kg?v to-At[# ^wǰaEWV?BzEYRnH=aِse4dϰ&u)>}%0798YB|f q-K)w"+M B-J3M??뭆 endstream endobj 12 0 obj <>stream h22Q0Pw(q.I,I݃ ́Avvny%@#cKi`be)C &PME%.n!%vvYD endstream endobj 13 0 obj <> endobj 14 0 obj <>stream hތUYo0~_1 F"HV6jxzZ;6Z kv. ՌQB] ~LbjFa=#Ҭ }Y7g?gy!WU岵 \zk!^ڤ ^LXhÑs(M#|ɴR`n% 8 90ȴG*w(57#p tb2 JESٱUH\@ݨLm!׀@#tHDgbpId6xMmaW6w2o7fb;eIH=ĵJó}[BCQեb9pN3;ձI,SI!+0x:-QX XBLj؜ZTWfѣ#ꪐEO9, |_I;5ό58b&M ,j ]<.nȋ_;YuTR9nrՕKhzZ!]m- vK.qN X:MhY,c"t5fG|y6tYbP j?pf48jj6Y!|80ye3z@b1:[,:=nDn =#1iԚQI.g6JRv7;ՇH0O'ƛ͸(z^oj%/7POD.֪:ٛ qo{S:-3:~H켘K`|X* k+_#wJa?~PW܄gd"`*_ endstream endobj 15 0 obj <>stream h22U0Pw(q.I,I݃ ́Avvny%@#cKi`be)C &PME%.n!%vvE endstream endobj 16 0 obj <>stream h22S0P02W0T+- bB.vv endstream endobj 17 0 obj <>stream Acrobat Distiller 9.3.0 (Windows) PScript5.dll Version 5.2.2 2011-10-03T11:13:10-05:00 2011-10-03T11:13:10-05:00 application/pdf Microsoft Word - StackMachineCommands.rtf Correll uuid:3ce70dd2-8b83-4367-bead-0cbdc69d7c3f uuid:21348d73-1938-4fae-8607-2fc4d2c49bc3 endstream endobj 18 0 obj <>stream h2P0Pw/+Q0L)66 )I0i1P *V? U? 1= z endstream endobj 19 0 obj <>stream h| 0@&CkKEiׂإKL"cO.']k6U܉UO!%]DZ+A FlW5Zq|Ig|Jp :ӘFW##V`YbJacZ0).>yֺ:GIAqu3&b%ĺh=..> E endstream endobj 20 0 obj <>/Filter/FlateDecode/ID[<7C08DED9A3C9CD9EAE04B087ADD93892><306D90A4CD637348BD170767D986F74F>]/Info 29 0 R/Length 89/Root 31 0 R/Size 30/Type/XRef/W[1 2 1]>>stream hbb&F L @㲄X[v&ⲀA2t Lk.Hh U "0 X R endstream endobj startxref 116 %%EOF grcompiler-5.2.1/doc/StackMachineCommands.rtf000066400000000000000000001124061411153030700211570ustar00rootroot00000000000000{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f28\froman\fcharset238\fprq2 Times New Roman CE;}{\f29\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f31\froman\fcharset161\fprq2 Times New Roman Greek;} {\f32\froman\fcharset162\fprq2 Times New Roman Tur;}{\f33\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f34\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f35\froman\fcharset186\fprq2 Times New Roman Baltic;} {\f36\fswiss\fcharset238\fprq2 Arial CE;}{\f37\fswiss\fcharset204\fprq2 Arial Cyr;}{\f39\fswiss\fcharset161\fprq2 Arial Greek;}{\f40\fswiss\fcharset162\fprq2 Arial Tur;}{\f41\fswiss\fcharset177\fprq2 Arial (Hebrew);} {\f42\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f43\fswiss\fcharset186\fprq2 Arial Baltic;}{\f44\fmodern\fcharset238\fprq1 Courier New CE;}{\f45\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f47\fmodern\fcharset161\fprq1 Courier New Greek;} {\f48\fmodern\fcharset162\fprq1 Courier New Tur;}{\f49\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f50\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f51\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0; \red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{ \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\tx432\nooverflow\faroman\ls1\outlinelevel0\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{\s2\ql \fi-576\li576\ri0\sb240\keepn\widctlpar \tx576\nooverflow\faroman\ls1\ilvl1\outlinelevel1\rin0\lin576\itap0 \b\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext21 heading 2;}{\s3\ql \fi-720\li720\ri0\sb120\widctlpar \tx720\nooverflow\faroman\ls1\ilvl2\outlinelevel2\rin0\lin720\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext3 heading 3;}{\s4\ql \fi-864\li864\ri0\sb120\widctlpar \tx864\nooverflow\faroman\ls1\ilvl3\outlinelevel3\rin0\lin864\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext4 heading 4;}{\s5\ql \fi-1008\li1008\ri0\sb120\widctlpar \tx990\nooverflow\faroman\ls1\ilvl4\outlinelevel4\rin0\lin1008\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 5;}{\s6\ql \li0\ri0\sb240\sa60\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 6;}{\s7\ql \li0\ri0\sb240\sa60\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 7;}{ \s8\ql \li0\ri0\sb240\sa60\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \i\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 8;}{\s9\ql \li0\ri0\sb240\sa60\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\i\f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\s15\ql \fi720\li0\ri0\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Body Text 2;}{\s16\ql \li0\ri0\sb240\sa360\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 Title;}{\s17\ql \li0\ri0\sa60\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 Subtitle;}{\s18\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 Body Text;}{\s19\ql \fi210\li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon18 \snext19 Body Text First Indent;}{\s20\ql \fi-200\li200\ri0\widctlpar\nooverflow\faroman\rin0\lin200\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 index 1;}{ \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon18 \snext21 Paragraph;}{\s22\ql \li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext21 ParaContd;}{\s23\ql \li360\ri0\widctlpar\nooverflow\faroman\rin0\lin360\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext23 Body Text Indent 2;}{ \s24\ql \li432\ri0\widctlpar\tx864\tx1728\tx2592\tx3456\tx4320\tx5184\nooverflow\faroman\rin0\lin432\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext24 CCode;}{ \s25\ql \li720\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin720\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext25 ParaIndent;}{\s26\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\nooverflow\faroman\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 header;}{\s27\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\nooverflow\faroman\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext27 footer;}{ \s28\ql \li0\ri0\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f2\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext28 HTML Body;}{\s29\ql \li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext21 ParaLabeled;}{\s30\ql \li1440\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin1440\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon21 \snext30 Comment;}{ \s31\ql \fi-360\li360\ri0\widctlpar\tx360{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec }\nooverflow\faroman\ls2047\ilvl11\rin0\lin360\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext31 List Bullet;}{ \s32\ql \li0\ri0\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 Style1;}{\s33\ql \fi-720\li720\ri0\widctlpar\tx720\nooverflow\faroman\rin0\lin720\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 VersionNumber;}{\s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 Command;}} {\*\listtable{\list\listtemplateid-1940496826{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace120\levelindent432{\leveltext\'01\'00;}{\levelnumbers\'01;}\b\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s1\fi-432\li432 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace120\levelindent576{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s2\fi-576\li576 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace120\levelindent720{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\b\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s3\fi-720\li720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace120\levelindent864{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\b\chbrdr \brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s4\fi-864\li864 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace120\levelindent1008{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers \'01\'03\'05\'07\'09;}\b\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \s5\fi-1008\li1008 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\chbrdr \brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 }{\listlevel \levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0 \levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 }{\listname ;}\listid-5}}{\*\listoverridetable{\listoverride\listid-5\listoverridecount0\ls1}}{\info {\title Stack Machine Commands}{\author Sharon Correll}{\operator Sharon Correll}{\creatim\yr2003\mo4\dy28\hr16\min29}{\revtim\yr2003\mo4\dy28\hr16\min29}{\printim\yr1999\mo5\dy18\hr13\min32}{\version2}{\edmins0}{\nofpages2}{\nofwords1260}{\nofchars7182} {\*\company Summer Institute of Linguistics}{\nofcharsws8820}{\vern8247}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\lytprtmet\hyphcaps0\formshade\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow1 \dgvshow0\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\bdrrlswsix\nolnhtadjtbl\oldas \fet0\sectd \linex0\endnhere\sectdefaultcl {\footer \pard\plain \s27\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\nooverflow\faroman\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst {\b TITLE \\* MERGEFORMAT }}{\fldrslt {\b Stack Machine Commands}}}{, Page }{\field{\*\fldinst { PAGE \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof 1}}}{ of } {\field{\*\fldinst { NUMPAGES \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof 1}}}{ \par }\pard \s27\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\nooverflow\faroman\rin0\lin0\itap0 {\field{\*\fldinst {\fs18 AUTHOR \\* MERGEFORMAT }}{\fldrslt {\fs18\lang1024\langfe1024\noproof Sharon Correll}}}{\fs18 , }{\field{\*\fldinst {\fs18 DATE \\ @ "dd-MMM-yyyy" \\* MERGEFORMAT }}{\fldrslt {\fs18\lang1024\langfe1024\noproof 28-Apr-2003}}}{\fs18 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s16\ql \li0\ri0\sb240\sa360\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs32\lang1033\langfe1033\kerning28\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst { TITLE \\* MERGEFORMAT }}{\fldrslt {Stack Machine Commands}}}{ \par }\pard\plain \s17\ql \li0\ri0\sa60\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \i\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\flddirty{\*\fldinst { AUTHOR \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof Sharon Correll}}}{ \par Last modified: 20 October 2000 \par }\pard \s17\ql \li0\ri0\sa1200\widctlpar\nooverflow\faroman\rin0\lin0\itap0 {Copyright \'a9 1999 by SIL International \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {This document describes the commands that are defined in Graphite\rquote s stack machine, which are use d to run rules and test their constraints. \par }\pard \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 {All arguments are 8-bit values. Angle brackets () indicate a signed value, curly braces (\{arg\}) indicate an unsigned value. \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 1\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\tx432\nooverflow\faroman\ls1\outlinelevel0\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { General arithmetic operations \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {NOP \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Do nothing. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushByte \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Push the given 8-bit signed number onto the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushByteU \{byte\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Push the given 8-bit unsigned number onto the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushShort \{byte2\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Treat the two arguments as a 16-bit signed number, with byte1 as the most significant. Push the number onto the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushShortU \{byte2\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Treat the two arguments as a 16-bit unsigned number, with byte1 as the most significant. Push the number onto the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushLong \{byte2\} \{byte3\} \{byte4\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Treat the four arguments as a 32-bit number, with byte1 as the most significant. Push the number onto the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Add \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack, add them, and push the result. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Sub \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack, subtract the first (top-most) from the second, and push the result. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Mul \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack, multiply them, and push the result. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Div \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack, divide the second by the first (top-most), and push the result. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Min \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack and push the minimum. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Max \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack and push the maximum. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Neg \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top item off the stack and push the negation. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Trunc8 \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top item off the stack and push the value truncated to 8 bits. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Trunc16 \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top item off the stack and push the value truncated to 16 bits. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Cond \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top three items of f the stack. If the first == 0 (false), push the third back on, otherwise push the second back on. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {And \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack and push their logical }{\i and}{ . Zero is treated as false; all other values are treated as true. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Or \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack and push their logical }{\i or}{ . Zero is treated as false; all other values are treated as true. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Not \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top item off the stack and push its logical negation (1 if it equals zero, 0 otherwise. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Equal \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack and push 1 if they are equal, 0 if not. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {NotEq \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two items off the stack and push 0 if they are equal, 1 if not. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Less \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Pop the top two items off the stack and push 1 if the next-to-the-top is less than the top-most; push 0 othewise. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Gtr \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Pop the top two items off the stack and push 1 if the next-to-the-top is greater than the top-most; push 0 othewise. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {LessEq \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Pop the top two items off the stack and push 1 if the next-to-the-top is less than or equal to the top-most; push 0 otherwise. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {GtrEq \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the top two ite ms off the stack and push 1 if the next-to-the-top is greater than or equal to the top-most; push 0 otherwise \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 2\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\tx432\nooverflow\faroman\ls1\outlinelevel0\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Rule processing and constraints \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Next \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Move the current slot pointer forward one slot (used after we have finished processing that slot). \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {CopyNext \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Copy the current slot from the input to the output and move the current slot pointer forward one slot. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PutGlyph \{output-class\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Put the first glyph of the specified class into the output. Normally used when there is only one member of the class, and when inserting. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PutSubs \{input-class\} \{output-class\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Determine the index of the glyph that was the input in the given slot within the input class, and place the corresponding glyph from the output class in the current slot. The slot number is relative to the current input position. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PutCopy \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Copy the glyph that was in the input in the given slot into the current output slot. The slot number is relative to the current input position. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Insert \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Insert a new slot before the current slot and make the new slot the current one. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Delete \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Delete the current item in the input stream. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Assoc \{cnt\} .. \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Set the associations for the current slot to be the given slot(s) in the input. The first argument indicates how many slots follow. The slot offsets are relative to the current input slot. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {ContextItem \{byte-cnt\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { If the slot currently being tested is not the slot specified by the argument (relative to the stream position, the first modified item in the rule), skip the given number of bytes of stack-machine code. These bytes represent a test that is irrelevant for this slot. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {AttrSet \{slot-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the stack and set the value of the given attribute to the resulting numerical value. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {AttrAdd \{slot-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the stack and adjust the value of the given attribute by adding the popped value. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {AttrSub \{slot-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the stack and adjust the value of the given attribute by subtracting the popped value. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {AttrSetSlot \{slot-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the stack and set the given attribute to the v alue, which is a reference to another slot, making an adjustment for the stream position. The value is relative to the current stream position. [Note that corresponding add and subtract operations are not needed since it never makes sense to add slot refe rences.] \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {IAttrSet \{slot-attr\} \{index\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Pop the stack and set the value of the given indexed attribute to the resulting numerical value. Not to be used for attributes whose value is a slot reference. [Currently the only non-slot-reference indexed slot attributes are }{\i userX}{.] \par Not supported in version 1.0 of the font tables. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {IAttrAdd \{slot-attr\} \{index\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Pop the stack and adjust the value of the given indexed slot attribute by adding the popped value. Not to be used for attributes whose value is a slot reference. [Currently the only non-slot-reference indexed slot attributes are }{\i userX}{.] \par }\pard \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 {Not supported in version 1.0 of the font tables. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {IAttrSub \{slot-attr\} \{index\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Pop the stack and adjust the value of the given indexed slot attribute by subtracting the popped value. Not to be used for attributes whose value is a slot reference. [Currently the only non-slot-reference indexed slot attributes are }{\i userX}{.] \par Not supported in version 1.0 of the font tables. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {IAttrSetSlot \{slot-attr\} \{index\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Pop the stack and set the given indexed attribute of the current slot to the value, which is a reference to another slot, making an adjustment for the stream position. The value is relative to the current stream position. [Currently the only indexed slot attributes are }{\i component.X.ref}{.] \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushSlotAttr \{slot-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Look up the value of the given slot attribute of the given slot and push the result on the stack. The slot offset is relative to the current input position. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushISlotAttr \{slot-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Push the value of the indexed slot attribute onto the stack. [The current indexed slot attributes are }{\i component.X.ref}{ and }{\i userX}{.] \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushGlyphAttr \{glyph-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Look up the value of the given glyph attribute of the given slot and push the result on the stack. T he slot offset is relative to the current input position. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushGlyphMetric \{glyph-metric\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Look up the value of the given glyph metric of the given slot and push the result on the stack. The slot offset is relative to the current input position. The level indicates the attachment level for cluster metrics. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushFeat \{feat\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Push the value of the given feature for the current slot onto the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushAttToGlyphAttr \{glyph-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Look up the value of the given glyph attribute for the slot indicated by the given slot\rquote s }{\i attach.to }{ attribute. Push the result on the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushAttToGlyphMetric \{glyph-metric\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Look up the value of the given glyph metric for the slot indicated by the given slot\rquote s }{\i attach.to}{ attribute. Push the result on the stack. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PopRet \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { No more processing is needed for this rule. Pop the top of the stack and return that value. For rule action code, the return value is the number of positions to move the stream position forward (or backward, if the nu mber is negative) for the next rule. For constraint code, the return value is a boolean indicating whether the constraint succeeded. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {RetZero \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Terminate the processing and return zero. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {RetTrue \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Terminate the processing and return true (1). \par {\listtext\pard\plain\s1 \b\f1\fs28 \hich\af1\dbch\af0\loch\f1 3\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\keepn\widctlpar\tx432\nooverflow\faroman\ls1\outlinelevel0\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Not yet implemented \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {NextN \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { Move the current slot pointer by the given number of slots (used after we have finished processing the current slot). The count may be positive or negative. Should not be used to copy a range of slots; CopyNext is needed for that. \par }\pard\plain \s34\ql \li0\ri0\sb300\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {PushIGlyphAttr \{glyph-attr\} \par }\pard\plain \s21\ql \fi720\li0\ri0\sb120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Push the value of the indexed glyph attribute onto the stack. [Examples of indexed glyph attributes are }{\i component.X.box.top, component.X.box.bottom,}{ etc.] \par {\listtext\pard\plain\s1 \b\f1 \hich\af1\dbch\af0\loch\f1 4\tab}}\pard\plain \s1\ql \fi-432\li432\ri0\sb360\sa120\keepn\widctlpar\tx432\nooverflow\faroman\ls1\outlinelevel0\rin0\lin432\itap0 \b\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { \fs24 File Name \par }\pard\plain \s22\ql \li0\ri0\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field{\*\fldinst { FILENAME \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof Stack Machine Commands.doc}}}{ \par }}grcompiler-5.2.1/doc/gdlpp.1.in000066400000000000000000000036271411153030700162270ustar00rootroot00000000000000.\"Text automatically generated by txt2man .TH gdlpp 1 "25 February 2011" "grcompiler" "" .SH NAME \fBgdlpp \fP- GDL (Graphite Description Language) preprocessor .SH SYNOPSIS .nf .fam C \fBgdlpp\fP [\fIoptions\fP] [\fIinfile\fP [\fIoutfile\fP] ] .fam T .fi .fam T .fi .SH OPTIONS .TP .B \fB-B\fP No machine specific built-in symbols .TP .B \fB-b\fP Output any parentheses, brace or bracket unbalance .TP .B \fB-C\fP Write source file comments to output .TP .B \fB-D\fP Define a symbol with the given (optional) value "symbol[=value]" .TP .B \fB-d\fP Display all specified \fIoptions\fP .TP .B \fB-E\fP Ignore non-fatal errors .TP .B \fB-F\fP Output all included file names on stderr .TP .B \fB-f\fP Output all defined functions' names on stderr .TP .B \fB-H\fP Output all whitespaces from the source file .TP .B \fB-h\fP Output this help text .TP .B \fB-I\fP Add directory to the #include search list .TP .B \fB-J\fP Allow nested comments .TP .B \fB-j\fP Enable warnings for nested comments .TP .B \fB-LL\fP Don't output #line instructions .TP .B \fB-L\fP Don't output the 'line' keyword in "#line" instructions .TP .B \fB-M\fP Don't warn for missing include files .TP .B \fB-N\fP Don't predefine target-specific names .TP .B \fB-n\fP Toggle prefs usage .TP .B \fB-P\fP Don't recognize C++ comment style .TP .B \fB-p\fP Enable warnings on non ANSI preprocessor instructions .TP .B \fB-Q\fP Ignore but visualize undefined flags .TP .B \fB-q\fP Ignore all undefined flags .TP .B \fB-R\fP Evaluate the right part first in symbol concatenations .TP .B \fB-s\fP Include the following string at the top of each function .TP .B \fB-S\fP Specify sizes for #if sizeof .TP .B \fB-t\fP This function should not get an initial function .TP .B \fB-U\fP Undefine symbol .TP .B \fB-V\fP Output version information .TP .B \fB-W\fP Output all #defines .TP .B \fB-WWW\fP Web mode preprocessing .TP .B \fB-w\fP Only output #defines .TP .B \fB-X\fP Include file grcompiler-5.2.1/doc/grcompiler.1.xml000066400000000000000000000146201411153030700174510ustar00rootroot00000000000000 $Revision: 4.2 $ $Date: 2012-05-29 11:36:50 $ grcompiler 1 grcompiler Compile GDL into a TrueType Font grcompiler number number number gdl-file font-file output-file output-fontname Description Grcompiler compiles a Graphite Description Language description of the smarts for a font along with a TrueType Font to create a graphite font with graphite tables in it. Enable compression of Graphite tables. This forces a version 5.0 Silf and version 3.0 Glat. Generate XML debugger file. Generate all debugger files. Permit and ignore invalid glyph definitions. number Set name table start location. Quiet mode (no messages except on error). number Set Silf table version number. number Ignore warning with the given number. This option may be repeated. Display all warnings. Environment grcompiler makes use of the following environment variables GDLPP Specifies the command to execute to run the GDL preprocessor Files gdlerr.txt Warnings and errors are output to this file. dbg_classes.txt Debug file that specifies the classes stored in the font in terms of their GDL source and containing glyph ids in hex. dbg_cmap.txt Debug file giving Unicode to glyph mapping of all the glyphs in the font and vice versa. dbg_enginecode.txt Debug file containing the action code and constraint code associated with each pass and rule in a pass. dbg_fsm.txt Debug file that gives the finite state machines of each pass and the rules referenced. For each pass, a mapping is given between glyph and column number. dbg_glyphattrs.txt Debug file containing all the glyph attributes and their names, along with values specified for each glyph. dbg_parsetree.txt Debug file giving the complete parse tree of the GDL source file. dbg_ruleprec.txt Debug file that lists the rules in precedence order (order in which they will be tested) for each pass. $_temp.gdl Debug file containing the output of gdlpp Author Graphite project SIL International graphite_nrsi@sil.org grcompiler-5.2.1/doc/version_update.txt000066400000000000000000000013551411153030700202160ustar00rootroot00000000000000Where to update version number ============================== installer/readme.txt -------------------- * GrCompiler.exe - Graphite compiler version 5.2 also update changes and "KNOWN BUGS AND INFELICITIES" installer/windows/grcompiler.iss -------------------------------- AppVerName=Graphite Compiler 5.2 OutputBaseFilename=grcompiler_setup_5_2 configure.ac ------------ AC_INIT(grcompiler, 5.2, silgraphite-devel@lists.sourceforge.net) ChangeLog --------- update if necessary compiler/CMakeLists.txt ------------ project(compiler VERSION 5.2) compiler/main.cpp ----------------- line 149: std::cout << "Graphite Compiler Version 5.2"; update copyright line 157: << "Copyright (C) 2002-2012, by SIL International. All rights reserved.\n"; grcompiler-5.2.1/installer/000077500000000000000000000000001411153030700156525ustar00rootroot00000000000000grcompiler-5.2.1/installer/example/000077500000000000000000000000001411153030700173055ustar00rootroot00000000000000grcompiler-5.2.1/installer/example/Stddr.ttf000066400000000000000000001555401411153030700211160ustar00rootroot00000000000000 POS/2R}Vcmapww4fcvt fpgm3O<glyfvP2headbɄ6hheaɼ$hmtxؖdlocaNzDhmaxpЬ name5post0c1mؼprepʵڐ2MACR@ "\@ ~Sax & 0 :!"" R`x  0 9!""  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ua%41N`'Immq&FJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ@,vE %E#ah#h`D-?V@ @ Fv/7?#0@ *: % Fv/7?<2/AD4.k %4=AB40tRKW%!/' eSNV:G:"ZRNHVL0 FQ`MRM& 1<Hw@3II@JA;1'&=-"&%('C92/ G5 Fv/7?+# %* 616!,99* X `@( @    Fv/7? >   > 8ReE@@  Fv/7??///<<10IhIha@RX878Y567654#"#"54632ϗ+# 6' t5 !&/9!0C@@Fv/7/ ! >DsI%RF!X@!""@#!  Fv/7?A#V)JBiTN)tG1J04Qw (+)X@"**@+(&" "Fv/7??//......10Ih*Iha@RX87*8Y%#"5463232654'&'567654'&#"'67632}wW%0Qd*;-+E(*O53QW+]k7/L:r*-Q<T>98(,JQ/ {@8@       Fv/7?*6Z@$77@8/'#+ 14 Fv/7??/////..10Ih7Iha@RX8778Y%#"'&547&'&5476324#"6764'&'326(6j[83A,96Nb3$1?G8Xo1C#O3;45TH74E?0@71A^_860'~8<--HaCL9*'V@!((@)  # Fv/7?Wc?9`-(21!E9H N_{4@:SjHE\TRhA:(,K_uIX F@@   Fv/7??/<<10IhIha@RX878Y#"&54632#"&54632""!!#"$$ ! l!!WR T@ !!@"     Fv/7??////<<10Ih!Iha@RX87!8Y#"&54632567654#"#"54632""!!+# 6'  ! ;t5 !&/9!' 1j@,@Fv/7//.ć........10IhIha@RX878Y-5%  X'>> S@@ Fv/7/>' 1j@,@Fv/7//.ć........10IhIha@RX878Y5-5 X >>/".\@%//@0#)  ,& & Fv/7??///...10Ih/Iha@RX87/8Y#67654'&#"#"'&547632#"&54632O??0'!.-3 /3UTj###" OYG/AviPGF& *= +<*,V! 1>M@<NN@O>$"$"# #$%$$%@'.6FB J:*2 Fv/7?//</////.........10IhNIha@RX87N8Y%#"'&547632#"547#"&547632?327654'&#"32767$54#"3276`}odkvMxP%6`^YIO:0FCMa\~bmuM.?EGA073WgYx}Y_J.@5zwtG8 ˨XdWSҦq~jEi3S~sL";6@P@       Fv/7?7F|%1u@322@3&,+"! .)$Fv/7?7Y30T62:A4'*>(+ GV)&% S@!!@"    Fv/7??<t ;o?EGDwG05;ibjn00RWQN S!e@)""@# Fv/7?falz,,ٶZU&?$=@\>>@?  =0/7.-('87&%  =<10-,!  '&/.Fv/7?Iha@RX87>8Y)53276=!;!5327654'&+5!#"!54'&+5!#";* *) )''A%'&  ,=@?>?B  ,C=Al@0@   Fv/7?>,. 5_M: =@X>>@?% +8789 8 /.10-=%$ =.-! 0/Fv/7?Iha@RX87>8Y)5276/;!5327654'.+5!#"6767654+53"4( ,* &%%%8' .)-ri?,(0 (=@B%B 49ri>fi@,@    Fv/7?9A8??&@M''@(  &%$ $# &%Fv/7?\dg˦KX[MR)y@7**@+   %$   "'  Fv/7?(t:58f3V>-A v@1@      Fv/7?}I(J$->|>/5@y66@7" 1%  101""#2!!2 101""#2!!2112  0 112  0 #""#*),+55,)+*Fv/7?' jz 74"4<<. 4(%oK$( AY2 0@Q11@2'.*$&' '('&'( / 0.    0/ Fv/7?>> XB@@Fv/7/' * ( /5$%/(8/+:CCadNW'VI 8L) +$'58Wh:1&U@ @   Fv/7??/<</<....10IhIha@RX878Y%#"&54632!7'4'&#" 26LUvx`Nd30G]+Z&$+BJ5:lufWd>:pC!B:&&@?''@(    $$  $  Fv/7?,# ,o|/D8/ '\@$((@)$"% '   '&Fv/7??9 ,DKn 80@N11@2) )()*  %$#"00 %"#$# Fv/7?= 10'&A#  /;50/"!.Fv/7?54'&'&'736324'&#"326;<^@/ 68 %@VLbQ(#;(7*&$O.9f 8hh 3p+m@.,,@-"!'   #"%!  Fv/7??).   )&3$+.4PGH _XNKku5OD'$($2K@,6F==$#2"je@*@  Fv/7???'&'&'53&7654#53.`e.%'bX%#'BE%,%?t %  "45 hd $3V+ (@I))@*!$ ! !"! !"'&(& ('Fv/7??<</<--@.+#$ + $  ) !& Fv/7????/(:  Fv/7?6I8H(>\ ~'T0"(B.66RA+00' i=5?)vy0C I@*RH,':'@N((@)   " %Fv/7?U<0$* &"7hO#*p?4+14M(8(0/O:`@%$N@Q!4*5BM:-68hDK9C*">2.$ 04$(!#< ? 5.C !'-5 1@!;7 ?@@  Fv/7/# ;D@?EE@F;810%$'&CB ,+ <6C;'$&%@21 Fv/7??/ > Xf>\> SV@@   Fv/7/#:!29& /W> C\@P!.#e 0$3X"-0;% 7@ @ Fv/7/*-! O@ @  Fv/7?7F %(@U))@* '& ! !&(&' '(! !((&'&' % (%  (&   Fv/7?7F"%@Y&&@'$#   #%#$ $%%%#$#$ "%" %#Fv/7?7Fv.1@\22@30/  *))*/1/0 01*))*11/0/0(''(.1! #".#   1/)("!"Fv/7?7Fa 36@\77@854#  /../4645 56/../664  545!-,,-36&%(' 3(% 64  .-'&'Fv/7?7F '36@]77@8 54 #""#4645 56#""#664545! ! ' 6.(' 164+ "!  Fv/7?7F;##"%;>@h??@@;> >>< =<= $,)+*=< 21%$,+#076>< =$#10&%*)Fv/7?t ;o?EGDwG05;6#(/! ,%^b^jn00RWQN Sd7@F88@9 7 '& .- ('#,  32 ! -,&%  Fv/7?++@,$# &%"!  %$  #"(Fv/7?_'"ޜdg˦KX[MR$ #Q@$$@%    Fv/7??///....10Ih$Iha@RX87$8Y#7632#"'&54632'&76**"_bƓsgr8:hf;>_"Ӝdg˦KX[MR$ Y@"!!@"  Fv/7??/<//.......10Ih!Iha@RX87!8Y#'#73#"'&54632'&76$$A,_bƓsgr8:hf;>lldg˦KX[MR$v,]@%--@. %   )"Fv/7??/<//<<//..10Ih-Iha@RX87-8Y#"&#"#632327#"'&54632'&76$!*'O $ZO< _bƓsgr8:hf;>v, #0j.3dg˦KX[MR$a $1\@%22@3*%  .'" "Fv/7??/<<////10Ih2Iha@RX8728Y#"&54632#"&54632#"'&54632'&76! _bƓsgr8:hf;>-    dg˦KX[MR: @G @        Fv/7/ae:A]kgIQSiLRTkO\gRvYs\RYGP8@>99@: "!' 8 760('1065#"   ,87! Fv/7??(t:58f3V>-A 9@>::@; #"(! 9 871)(2176$#   !-98"! Fv/7??(t:58f3V>-A6@B77@8 %6 54.&%/. 43! *65Fv/7??(t:58f3V>-Aa G@EHH@I106/.(GFE? 76)(@?ED21.-/ ;$ GF0/$.Fv/7??(t:58f3V>-A  :@V;;@< 184.01 12  10129: )('&8*)&  ':9('&Fv/7?5432.0M*7*(Lmb-(Qba[>C.$,( &^$:y[Jd('%3=p@/>>@? 531" 3 954-, $< (( Fv/7?Iha@RX87>8Y#'&5432#"5#"&5476754&#"#"547632327'5.*- "/966@#2=/9*-%,+40F^#)l%)&_'"LL2 A69'15A8 015 +!R<)*$'$0% 4>p@/??@@ 642#4 :65.- !%= )) Fv/7?#"76)*.  F&22Fv/7?&%3-/" Fv/7?O5/"$ 4RD1B*!<.e21+!&==dZ{,;pz!;.U-%3%5# 3z@344@53'% -1 *"" Fv/7??/////...........10Ih4Iha@RX8748Y%632#"'73254'&'7&'&547632#"&#"327 iC%Q5&.!=&&J/1B?]EY03 B8B'*F_1Qk5#(/! ,%Z @DelFDI&+y_JW;@v&%_@%&&@'  % %" Fv/7??//<</<........10Ih&Iha@RX87&8Y#'&5432#"&54632!7'4'&#"B*- " 26LUvx`Nd30G]+Z&$+B_'"J5:lufWd>:pC!B:& &_@%''@(  &&#Fv/7??//<</<........10Ih'Iha@RX87'8Y#7632#"&54632!7'4'&#"**" 26LUvx`Nd30G]+Z&$+B_"J5:lufWd>:pC!B:&#j@+$$@%# #  Fv/7?:pC!B:& ,4j@,55@6,-%4& * 4-&%1" "Fv/7??/</<<<///<....10Ih5Iha@RX8758Y#"&54632#"&54632#"&54632!7'4'&#"!  26LUvx`Nd30G]+Z&$+Bo    &J5:lufWd>:pC!B:e@(@      Fv/7?""##$@B%%@&     #  Fv/7??////.ć.ć...........10Ih %Iha@RX87%8Y#"''7&'&76327&#"74'32D5:AkKFDH6t0%rMEY`JU;NQ@b]IQ8KPBCC;E/# (@8))@* (&  "!#  $#! #" Fv/7?<@3210 ( >301 %  @?21 0Fv/7??(. &<d@.XTSb1"$0l@-11@2%$+ /$ ) Fv/7?<]g84[NZNBS'S/!L #Be#$;h0$RlrGDPQeWexn1 (":vDHmFIB 9{@5::@;(,+3" -,%  0%+*% "Fv/7?<).   )&3$+.4PGH _XNKkkk5OD'$($2K@,6F==$#2 f H@]II@J?FB<>? ?@.--.?>?@%$'&,G#H7654 -,F8745('$#%  HG65&%4Fv/7?!%.(( @!r@<,  ~%F! >c& F@@@Fv/7?C>In//0 !=3/#D4.!=3/#D4.}$6&!46YtRKW%!-tRKW%!-0 TP_/(>aFAF.9"YRQ(VLI"[TM(VL# SH?Z<?@@Fv/7??@@Fv/7?*);:-,43A@?Fv/7?*"X"W/1%{B$Z{$B$BBy  {ZT!Z'%#"&Z&! !!)#"d3!oRh6,Zs@X;O7#K l(#F@2n nd;M? nT}! c T V'%{{{{ZZZ Z$$$$$% B%%%%%%%#&&&&!!!!"#####&"BB% FZZ^ZaZb"a"3G,#vJZ<Z>#|||Jjl\  ` j RttF*n> ", b!$!#@$%N&d''()*+,-.0r12^23<34D45667h8\9:;Jl^ * <~TTvjXj<l(2c@ +=&(h6& =J4Q l   9 hG   & Version 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEStd SILDoulosRegularStd SILDoulos Macromedia Fontographer 4.1 SILDoulosLStd SILDoulosMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08StdSILDoulosRegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEStd SILDoulosRegularStd SILDoulos Macromedia Fontographer 4.1 SILDoulosLStd SILDoulosMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08StdSILDoulosRegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEStd SILDoulosRegularStd SILDoulos Macromedia Fontographer 4.1 SILDoulosLStd SILDoulosMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08StdSILDoulosRegular{  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~@G&&%%$$##""!!  EhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDF+F+EhDEhDgrcompiler-5.2.1/installer/example/allcaps.gdl000066400000000000000000000010001411153030700214030ustar00rootroot00000000000000 /********************************************************************************* File: allcaps.gdl Sample GDL file for creating small caps. Compile with Std SILDoulos (stddr.ttf). *********************************************************************************/ #include "stddef.gdh" Bidi = false; table(glyph) clsUpperCase = codepoint("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); clsLowerCase = codepoint("abcdefghijklmnopqrstuvwxyz"); endtable; // glyph table(sub) clsLowerCase > clsUpperCase; endtable; grcompiler-5.2.1/installer/example/allcaps_test.html000066400000000000000000000013651411153030700226560ustar00rootroot00000000000000

Lower ABCs in stddr.ttf

abcdefghijklmnopqrstuvwxyz

Lower ABCs using stddr_gr.ttf

abcdefghijklmnopqrstuvwxyz

grcompiler-5.2.1/installer/gr_buildbat.bat000077500000000000000000000011451411153030700206240ustar00rootroot00000000000000@echo off setlocal set _I=%0 set _R=ret1 set _D=\ goto getpath :ret1 rem GPATH = directory of the compiler set GPATH=%_I% set _I=%1 set _R=ret2 set _D=. goto getpath :ret2 rem FPATH = directory of the font set FPATH=%_I% rem generate output echo @echo off > "%FPATH%bat" echo "%GPATH%grcompiler" "%1" "%2" >> "%FPATH%bat" echo pause >> "%FPATH%bat" goto done rem :getpath -- figure out directory from a file with path :getpath set _I=%_I:"=% :getpath_l set _T=%_I:~-1,1% if %_T%X==%_D%X goto getpath_d if X%_I%==X goto getpath_d set _I=%_I:~0,-1% goto getpath_l :getpath_d goto %_R% :done grcompiler-5.2.1/installer/readme.txt000066400000000000000000000116361411153030700176570ustar00rootroot00000000000000FILES INCLUDED Program Files * GrCompiler.exe - Graphite compiler * icuuc66.dll - ICU character definitions that are used to initialize certain glyph attributes based on the corresponding Unicode character properties. * icudt66.dll - ICU data tables * gdlpp.exe - C-like preprocessor to handle #define and #include statements * stddef.gdh - standard GDL identifiers For testing the installation ("example" folder) * allcaps.gdl - simple GDL program * stddr.ttf - simple Roman font to compile with allcaps.gdl * allcaps_test.html - HTML file to test the compiled font Documentation files ("doc" folder) * GraphiteOverview.pdf * GDL.pdf * CompilerDebugFiles.pdf * StackMachineCommands.pdf * GTF_4_0.pdf * GDL_BNF.pdf * CppDoc.pdf - from the C preprocessor gdlpp.exe is derived from INSTALLING THE PROGRAM Please uninstall any prior versions (see below). After running the installer program, all the program files will be located in the indicated folder. The PATH environment variable will be modified to include the directory containing grcompiler.exe. If you choose to put the gdlpp.exe file in a different folder from GrCompiler.exe, you need to set the GDLPP environment variable to indicate where this utility is, for instance: "c:\graphite_extras\gdlpp.exe". Note that the variable must include the name of the program as well as well as the path. Also, the actual env var must be set without using quote marks. The GDLPP_PREFS environment variable is used to indicate where the Graphite compiler will find #included files. The value consists of "-I" followed by the path or paths to files of interest, for instance, "-Ic:\graphite" (without quotes marks in actual use). At the very least, you will want to be able to #include "stddef.gdh", which is the standard include file that contains all the standard GDL abbreviations. If it is located in a different folder than the GDL source code and font file, you will need to put its path in the GDLPP_PREFS environment variable. The installer will initialize GDLPP_PREFS to point to the directory containing this file, which will be in the same directory as grcompiler.exe. NOTE: GDLPP_PREFS must not contain directory names with spaces. If there are spaces in your path, you will need to use 8-character directory names. So if, for instance, your "stddef.gdh" file is located in "C:\Program Files\Graphite Compiler", GDLPP_PREFS should likely be set to "-IC:\Progra~1\Graphi~1" (without quotes). If the compiler is having trouble finding the stddef.gdh file (ie, standard definitions are not recognized), check your GDLPP_PREFS environment variable and change it to use short names if necessary. (Alternatively, you can install the compiler into a folder with no spaces in its path or copy the "stddef.gdh" to the same folder as the GDL source code or specify the path to it in the #include directive.) RUNNING THE COMPILER To run the compiler, execute the grcompiler.exe file. Omitting all arguments will give a summary of the expected syntax, which is: grcompiler [options] gdl-file input-font-file [output-font-file] [output-font-name] If the output-font-file argument is omitted, the name of the resulting Graphite-enabled font file will be the same as the input-font-file with "_gr" appended. For instance, if your input-font-file is "myfont.ttf", the output file will be "myfont_gr.ttf". If the output-font-name is omitted, the resulting font will have the same name as the original font. Options: -c - generate a compressed version of the font -d - causes the compiler to output the XML debugger file. This flag is recommended, and required for fonts to run in Graide. -D - causes the compiler to output both the XML file and the text debugger files. The text files are documented in "Compiler Debug Files.doc". -e - specify the error message file; gdlerr.txt by default -g - permit and ignore invalid glyph definitions. -q - runs in quiet mode, generating no messages unless there is an error. -vN - allows you to specify the version of the font tables to be generated; e.g., "-v3". Version 2 will be generated by default. -wNNNN - ignore warning with the given number. -wall - show all warnings (warnings can be hidden by adding subsequent -wNNNN options). Run 'grcomiler -h' for more options. TESTING THE INSTALLATION The file "allcaps.gdl" is a very simple program that you can try to compile which will render English lowercase letters as uppercase. It needs to be compiled with a font that contains the Roman alphabet--a, b, c, etc. The stddr.ttf is such a font and is included as part of the installation. The "allcaps_test.html" file will render lower case English letters in the compiled font. These files are located in the example folder. - Run 'grcompiler allcaps.gdl stddr.ttf', which generates stddr_gr.ttf - Open 'allcaps_test.html' in a browser that supports Graphite (like Firefox) UNINSTALLING THE PROGRAM To uninstall, run "unins000.exe". You may also want to remove the installation folder from the PATH. grcompiler-5.2.1/installer/windows/000077500000000000000000000000001411153030700173445ustar00rootroot00000000000000grcompiler-5.2.1/installer/windows/grcompiler-cmake-debug.iss000066400000000000000000000106271411153030700243770ustar00rootroot00000000000000; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AppName=Graphite Compiler AppVerName=Graphite Compiler 5.2.1 AppPublisher=SIL International AppPublisherURL=http://graphite.sil.org/ AppSupportURL=http://graphite.sil.org/ AppUpdatesURL=http://graphite.sil.org/ DefaultDirName=C:\Program Files\Graphite Compiler ; Start Menu item name: DefaultGroupName=Graphite Compiler ; allows them to say they don't want a start menu item: AllowNoIcons=yes ; installer file name: OutputBaseFilename=grcompiler_setup_5_2_1 Compression=lzma SolidCompression=yes LicenseFile= "..\..\license/LICENSING.txt" InfoAfterFile= "..\..\installer\readme.txt" [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "..\..\build\compiler\Debug\grcompiler.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\build\compiler\Debug\icuuc66.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\build\compiler\Debug\icudt66.dll"; DestDir: "{app}"; Flags: ignoreversion ; Don't need this because the ICU stuff is built with /MT: ;Source: "C:\Windows\system32\msvcr71.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\build\preprocessor\Debug\gdlpp.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\installer\readme.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\compiler\stddef.gdh"; DestDir: "{app}"; Flags: ignoreversion ;Source: "..\..\installer\gr_buildbat.bat"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\doc\CompilerDebugFiles.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\CppDoc.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GDL.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GDL_BNF.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GraphiteOverview.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GTF_6_0.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\StackMachineCommands.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\installer\example\stddr.ttf"; DestDir: "{app}\example"; Flags: ignoreversion Source: "..\..\installer\example\allcaps.gdl"; DestDir: "{app}\example"; Flags: ignoreversion Source: "..\..\installer\example\allcaps_test.html"; DestDir: "{app}\example"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] ;Name: "{group}\Run GrCompiler"; Filename: "{app}\GrCompiler.exe" Name: "{group}\Read-Me"; Filename: "{app}\readme.txt" Name: "{group}\GDL documentation"; Filename: "{app}\doc\GDL.pdf" Name: "{group}\Compiler Debug Files Doc"; Filename: "{app}\doc\CompilerDebugFiles.pdf" Name: "{commondesktop}\Graphite Compiler"; Filename: "{app}\GrCompiler.exe"; Tasks: desktopicon [Registry] Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "GDLPP_PREFS"; ValueData: "-I{code:GetShortName|{app}}" Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}"; Check: NeedsAddPath('{app}') [Messages] ClickFinish=Click Finish to exit Setup. [Code] function SendMessage(const Wnd: HWND; const Msg, WParam: LongInt; LParam: AnsiString): Longint; external 'SendMessageA@user32.dll stdcall'; procedure CurStepChanged(CurStep: TSetupStep); begin Log('CurStepChanged(' + IntToStr(Ord(CurStep)) + ') called'); if CurStep = ssPostInstall then begin // Inform all windows that the environment has changed (ie, via the registry). Note that 26 = x1A. // Above we redefine the SendMessage function because a call with "Environment" needs to have that argument // interpreted as a string. SendMessage(-1, 26, 0, 'Environment'); end; end; // This check does not seem to be working (as of 2/28/2012): function NeedsAddPath(NewDir: string): boolean; var OrigPath: string; begin if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', OrigPath) then Result := True // Didn't find any path. else // Look for the directory to add, with leading and trailing semicolon. // Pos() returns 0 if not found. Result := (Pos(';' + NewDir + ';', ';' + OrigPath + ';') = 0); end; grcompiler-5.2.1/installer/windows/grcompiler.iss000066400000000000000000000111111411153030700222220ustar00rootroot00000000000000; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AppName=Graphite Compiler AppVerName=Graphite Compiler 5.2.1 AppPublisher=SIL International AppPublisherURL=http://graphite.sil.org/ AppSupportURL=http://graphite.sil.org/ AppUpdatesURL=http://graphite.sil.org/ DefaultDirName=C:\Program Files\Graphite Compiler ; Start Menu item name: DefaultGroupName=Graphite Compiler ; allows them to say they don't want a start menu item: AllowNoIcons=yes ; installer file name: OutputBaseFilename=grcompiler_setup_5_2_1 Compression=lzma SolidCompression=yes LicenseFile= "..\..\license\LICENSING.txt" InfoAfterFile= "..\..\installer\readme.txt" [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "..\..\build\compiler\Release\grcompiler.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\build\compiler\Release\icuuc66.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\build\compiler\Release\icudt66.dll"; DestDir: "{app}"; Flags: ignoreversion ; Don't need this because the ICU stuff is built with /MT: ;Source: "C:\Windows\system32\msvcr71.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\build\preprocessor\Release\gdlpp.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\installer\readme.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\compiler\stddef.gdh"; DestDir: "{app}"; Flags: ignoreversion ;Source: "..\..\installer\gr_buildbat.bat"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\doc\CompilerDebugFiles.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\CppDoc.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GDL.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GDL_BNF.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GraphiteOverview.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\GTF_6_0.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\doc\StackMachineCommands.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion Source: "..\..\installer\example\stddr.ttf"; DestDir: "{app}\example"; Flags: ignoreversion Source: "..\..\installer\example\allcaps.gdl"; DestDir: "{app}\example"; Flags: ignoreversion Source: "..\..\installer\example\allcaps_test.html"; DestDir: "{app}\example"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] ;Name: "{group}\Run GrCompiler"; Filename: "{app}\GrCompiler.exe" Name: "{group}\Read-Me"; Filename: "{app}\readme.txt" Name: "{group}\GDL documentation"; Filename: "{app}\doc\GDL.pdf" Name: "{group}\Compiler Debug Files Doc"; Filename: "{app}\doc\CompilerDebugFiles.pdf" Name: "{commondesktop}\Graphite Compiler"; Filename: "{app}\GrCompiler.exe"; Tasks: desktopicon [Registry] Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "GDLPP_PREFS"; ValueData: "-I{code:GetShortName|{app}}"; Flags: uninsdeletevalue Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}"; Check: NeedsAddPath(ExpandConstant('{app}')) [Messages] ClickFinish=Click Finish to exit Setup. [Code] function SendMessage(const Wnd: HWND; const Msg, WParam: LongInt; LParam: AnsiString): Longint; external 'SendMessageA@user32.dll stdcall'; procedure CurStepChanged(CurStep: TSetupStep); begin Log('CurStepChanged(' + IntToStr(Ord(CurStep)) + ') called'); if CurStep = ssPostInstall then begin // Inform all windows that the environment has changed (ie, via the registry). Note that 26 = x1A. // Above we redefine the SendMessage function because a call with "Environment" needs to have that argument // interpreted as a string. SendMessage(-1, 26, 0, 'Environment'); end; end; // Check if install directory should be added to the PATH // see https://stackoverflow.com/questions/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-install function NeedsAddPath(NewDir: string): boolean; var OrigPath: string; begin if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', OrigPath) then Result := True // Didn't find any path. else // Look for the directory to add, with leading and trailing semicolon. // Pos() returns 0 if not found. Result := (Pos(';' + NewDir + ';', ';' + OrigPath + ';') = 0); end; grcompiler-5.2.1/license/000077500000000000000000000000001411153030700152775ustar00rootroot00000000000000grcompiler-5.2.1/license/LICENSING.txt000066400000000000000000000756331411153030700173710ustar00rootroot00000000000000Graphite Compiler Licensing ============================ Copyright 1999-2021, SIL International (http://www.sil.org). This program is free software; you can redistribute it and/or modify it under the terms of either: a) the Common Public License as published by the "Agreement Steward" for that license (currently IBM); either version 0.5 of the License, or (at your option) any later version, or b) the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of 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 either the Common Public License or the GNU Lesser General Public License for more details. You should have received a plain text copy of the Common Public License Version 0.5 with this distribution in the file named "License_CPLv05.txt". That text came from http://www.opensource.org/licenses/cpl.html. The initial "Agreement Steward" for the CPL displays currently the license at http://www-124.ibm.com/developerworks/oss/license-cpl.html. You should also have received a copy of the GNU Lesser General Public License along with this library in the file named "License_LGPLv21.txt". If not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA or visit their web page on the internet at http://www.fsf.org/licenses/lgpl.html. The GNU General Public License to which the GNU Lesser General Public License refers can be found at http://www.gnu.org/copyleft/gpl.html. For convenient reference, a text version has been included with this distribution in the file named "License_GPLv2.txt". All of the licenses mentioned above can also be found at http://www.opensource.org/licenses/. Copyright notices and licensing for other components: ===================================================== Files: preprocessor/* Copyright: Copyright (c) 1999 Daniel Stenberg License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Files: compiler/Grammar/* Copyright: none License: public-domain ANTLR 1.6.0 MageLang Insitute, 1999 We reserve no legal rights to the ANTLR--it is fully in the public domain. An individual or company may do whatever they wish with source code distributed with ANTLR or the code generated by ANTLR, including the incorporation of ANTLR, or its output, into commerical software. We encourage users to develop software with ANTLR. However, we do ask that credit is given to us for developing ANTLR. By "credit", we mean that if you use ANTLR or incorporate any source code into one of your programs (commercial product, research project, or otherwise) that you acknowledge this fact somewhere in the documentation, research report, etc... If you like ANTLR and have developed a nice tool with the output, please mention that you developed it using ANTLR. In addition, we ask that the headers remain intact in our source code. As long as these guidelines are kept, we expect to continue enhancing this system and expect to make other tools available as they are completed. The ANTLR gang: @version ANTLR 2.6.0 MageLang Insitute, 1999 @author Terence Parr, http://www.MageLang.com MageLang Institute @author John Lilley, http://www.Empathy.com Empathy Software @author pete@yamuna.demon.co.uk" Pete Wells Files: compiler/Grammar/lz4*.* Copyright: Copyright (C) 2011-2015, Yann Collet License: BSD 2-Clause License LZ4 - Fast LZ compression algorithm Copyright (C) 2011-2015, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. You can contact the author at : - LZ4 source repository : https://github.com/Cyan4973/lz4 - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c Files: test/GrcRegressionTest/fonts/*, installer/example/*.ttf Copyright: Copyright (c) SIL International, 1994-2021 License: OFL-1.1 This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later) Copyright © 1991-2020 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. --------------------- Third-Party Software Licenses This section contains third-party software notices and/or additional terms for licensed third-party software components included within ICU libraries. 1. ICU License - ICU 1.8.1 to ICU 57.1 COPYRIGHT AND PERMISSION NOTICE Copyright (c) 1995-2016 International Business Machines Corporation and others All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. All trademarks and registered trademarks mentioned herein are the property of their respective owners. 2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt) # The Google Chrome software developed by Google is licensed under # the BSD license. Other software included in this distribution is # provided under other licenses, as set forth below. # # The BSD License # http://opensource.org/licenses/bsd-license.php # Copyright (C) 2006-2008, Google Inc. # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided with # the distribution. # Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # The word list in cjdict.txt are generated by combining three word lists # listed below with further processing for compound word breaking. The # frequency is generated with an iterative training against Google web # corpora. # # * Libtabe (Chinese) # - https://sourceforge.net/project/?group_id=1519 # - Its license terms and conditions are shown below. # # * IPADIC (Japanese) # - http://chasen.aist-nara.ac.jp/chasen/distribution.html # - Its license terms and conditions are shown below. # # ---------COPYING.libtabe ---- BEGIN-------------------- # # /* # * Copyright (c) 1999 TaBE Project. # * Copyright (c) 1999 Pai-Hsiang Hsiao. # * All rights reserved. # * # * Redistribution and use in source and binary forms, with or without # * modification, are permitted provided that the following conditions # * are met: # * # * . Redistributions of source code must retain the above copyright # * notice, this list of conditions and the following disclaimer. # * . Redistributions in binary form must reproduce the above copyright # * notice, this list of conditions and the following disclaimer in # * the documentation and/or other materials provided with the # * distribution. # * . Neither the name of the TaBE Project nor the names of its # * contributors may be used to endorse or promote products derived # * from this software without specific prior written permission. # * # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # * OF THE POSSIBILITY OF SUCH DAMAGE. # */ # # /* # * Copyright (c) 1999 Computer Systems and Communication Lab, # * Institute of Information Science, Academia # * Sinica. All rights reserved. # * # * Redistribution and use in source and binary forms, with or without # * modification, are permitted provided that the following conditions # * are met: # * # * . Redistributions of source code must retain the above copyright # * notice, this list of conditions and the following disclaimer. # * . Redistributions in binary form must reproduce the above copyright # * notice, this list of conditions and the following disclaimer in # * the documentation and/or other materials provided with the # * distribution. # * . Neither the name of the Computer Systems and Communication Lab # * nor the names of its contributors may be used to endorse or # * promote products derived from this software without specific # * prior written permission. # * # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # * OF THE POSSIBILITY OF SUCH DAMAGE. # */ # # Copyright 1996 Chih-Hao Tsai @ Beckman Institute, # University of Illinois # c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4 # # ---------------COPYING.libtabe-----END-------------------------------- # # # ---------------COPYING.ipadic-----BEGIN------------------------------- # # Copyright 2000, 2001, 2002, 2003 Nara Institute of Science # and Technology. All Rights Reserved. # # Use, reproduction, and distribution of this software is permitted. # Any copy of this software, whether in its original form or modified, # must include both the above copyright notice and the following # paragraphs. # # Nara Institute of Science and Technology (NAIST), # the copyright holders, disclaims all warranties with regard to this # software, including all implied warranties of merchantability and # fitness, in no event shall NAIST be liable for # any special, indirect or consequential damages or any damages # whatsoever resulting from loss of use, data or profits, whether in an # action of contract, negligence or other tortuous action, arising out # of or in connection with the use or performance of this software. # # A large portion of the dictionary entries # originate from ICOT Free Software. The following conditions for ICOT # Free Software applies to the current dictionary as well. # # Each User may also freely distribute the Program, whether in its # original form or modified, to any third party or parties, PROVIDED # that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear # on, or be attached to, the Program, which is distributed substantially # in the same form as set out herein and that such intended # distribution, if actually made, will neither violate or otherwise # contravene any of the laws and regulations of the countries having # jurisdiction over the User or the intended distribution itself. # # NO WARRANTY # # The program was produced on an experimental basis in the course of the # research and development conducted during the project and is provided # to users as so produced on an experimental basis. Accordingly, the # program is provided without any warranty whatsoever, whether express, # implied, statutory or otherwise. The term "warranty" used herein # includes, but is not limited to, any warranty of the quality, # performance, merchantability and fitness for a particular purpose of # the program and the nonexistence of any infringement or violation of # any right of any third party. # # Each user of the program will agree and understand, and be deemed to # have agreed and understood, that there is no warranty whatsoever for # the program and, accordingly, the entire risk arising from or # otherwise connected with the program is assumed by the user. # # Therefore, neither ICOT, the copyright holder, or any other # organization that participated in or was otherwise related to the # development of the program and their respective officials, directors, # officers and other employees shall be held liable for any and all # damages, including, without limitation, general, special, incidental # and consequential damages, arising out of or otherwise in connection # with the use or inability to use the program or any product, material # or result produced or otherwise obtained by using the program, # regardless of whether they have been advised of, or otherwise had # knowledge of, the possibility of such damages at any time during the # project or thereafter. Each user will be deemed to have agreed to the # foregoing by his or her commencement of use of the program. The term # "use" as used herein includes, but is not limited to, the use, # modification, copying and distribution of the program and the # production of secondary products from the program. # # In the case where the program, whether in its original form or # modified, was distributed or delivered to or received by a user from # any person, organization or entity other than ICOT, unless it makes or # grants independently of ICOT any specific warranty to the user in # writing, such person, organization or entity, will also be exempted # from and not be held liable to the user for any such damages as noted # above as far as the program is concerned. # # ---------------COPYING.ipadic-----END---------------------------------- 3. Lao Word Break Dictionary Data (laodict.txt) # Copyright (C) 2016 and later: Unicode, Inc. and others. # License & terms of use: http://www.unicode.org/copyright.html # Copyright (c) 2015 International Business Machines Corporation # and others. All Rights Reserved. # # Project: https://github.com/rober42539/lao-dictionary # Dictionary: https://github.com/rober42539/lao-dictionary/laodict.txt # License: https://github.com/rober42539/lao-dictionary/LICENSE.txt # (copied below) # # This file is derived from the above dictionary version of Nov 22, 2020 # ---------------------------------------------------------------------- # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. Redistributions in binary # form must reproduce the above copyright notice, this list of conditions and # the following disclaimer in the documentation and/or other materials # provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # -------------------------------------------------------------------------- 4. Burmese Word Break Dictionary Data (burmesedict.txt) # Copyright (c) 2014 International Business Machines Corporation # and others. All Rights Reserved. # # This list is part of a project hosted at: # github.com/kanyawtech/myanmar-karen-word-lists # # -------------------------------------------------------------------------- # Copyright (c) 2013, LeRoy Benjamin Sharon # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: Redistributions of source code must retain the above # copyright notice, this list of conditions and the following # disclaimer. Redistributions in binary form must reproduce the # above copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # Neither the name Myanmar Karen Word Lists, nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -------------------------------------------------------------------------- 5. Time Zone Database ICU uses the public domain data and code derived from Time Zone Database for its time zone support. The ownership of the TZ database is explained in BCP 175: Procedure for Maintaining the Time Zone Database section 7. # 7. Database Ownership # # The TZ database itself is not an IETF Contribution or an IETF # document. Rather it is a pre-existing and regularly updated work # that is in the public domain, and is intended to remain in the # public domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do # not apply to the TZ Database or contributions that individuals make # to it. Should any claims be made and substantiated against the TZ # Database, the organization that is providing the IANA # Considerations defined in this RFC, under the memorandum of # understanding with the IETF, currently ICANN, may act in accordance # with all competent court orders. No ownership claims will be made # by ICANN or the IETF Trust on the database or the code. Any person # making a contribution to the database or code waives all rights to # future claims in that contribution or in the TZ Database. 6. Google double-conversion Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. grcompiler-5.2.1/license/License_CPLv05.txt000066400000000000000000000264551411153030700204670ustar00rootroot00000000000000Common Public License Version 0.5 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 1. DEFINITIONS "Contribution" means: a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and b) in the case of each subsequent Contributor: i) changes to the Program, and ii) additions to the Program; where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. "Contributor" means any person or entity that distributes the Program. "Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. "Program" means the Contributions distributed in accordance with this Agreement. "Recipient" means anyone who receives the Program under this Agreement, including all Contributors. 2. GRANT OF RIGHTS a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 3. REQUIREMENTS A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: a) it complies with the terms and conditions of this Agreement; and b) its license agreement: i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. When the Program is made available in source code form: a) it must be made available under this Agreement; and b) a copy of this Agreement must be included with each copy of the Program. Contributors may not remove or alter any copyright notices contained within the Program. Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. 4. COMMERCIAL DISTRIBUTION Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. 5. NO WARRANTY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. 6. DISCLAIMER OF LIABILITY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. GENERAL If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. grcompiler-5.2.1/license/License_GPLv2.txt000066400000000000000000000431331411153030700204000ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 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. Copyright (C) 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 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) year 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. , 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. grcompiler-5.2.1/license/License_LGPLv21.txt000066400000000000000000000635001411153030700205750ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library. 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 Library or any portion of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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 Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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. If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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. 9. 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License. 11. 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library. 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. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. 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. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! grcompiler-5.2.1/makefile.mak000066400000000000000000000312331411153030700161260ustar00rootroot00000000000000!IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF TARGET=GrCompiler GRC_SRC=.\compiler GRC_GRMR_SRC=.\compiler\Grammar GRC_ANTLR_SRC=.\compiler\Grammar\Antlr GRC_LZ4_SRC=.\compiler\LZ4 GRC_RES=.\compiler GRC_GEN_SRC=.\compiler\Generic GRC_LIB_SRC=.\compiler TTF_LIB_SRC=.\compiler ICU_BIN=.\icu\bin !IF "$(CFG)" == "" CFG=RELEASE !ENDIF !IF "$(CFG)" == "RELEASE" OUTDIR=.\release INTDIR=.\release_temp all : "$(OUTDIR)\$(TARGET).exe" - copy $(ICU_BIN)\icuuc66.dll $(OUTDIR)\icuuc66.dll - copy $(ICU_BIN)\icudt66.dll $(OUTDIR)\icudt66.dll clean : @- rd /s/q $(INTDIR) realclean : clean @- rd /s/q $(OUTDIR) CPP_PROJ=/Zc:wchar_t- /nologo /MT /W3 /GR /EHsc /O2 /I "./compiler" /I "./compiler/grammar" /I "./compiler/Grammar/Antlr" /I "./compiler/generic" /I "./icu/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_CRT_SECURE_NO_WARNINGS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c RSC_PROJ=/l 0x409 /fo"$(INTDIR)\$(TARGET).res" /d "NDEBUG" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib icuuc.lib /nologo /subsystem:console /incremental:no /machine:I386 /out:"$(OUTDIR)\$(TARGET).exe" /LIBPATH:".\icu\lib\" BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(TARGET).bsc" !ELSEIF "$(CFG)" == "DEBUG" OUTDIR=.\debug INTDIR=.\debug_temp all : "$(OUTDIR)\$(TARGET).exe" "$(OUTDIR)\$(TARGET).bsc" - copy $(ICU_BIN)\icuuc66.dll $(OUTDIR)\icuuc66.dll - copy $(ICU_BIN)\icudt66.dll $(OUTDIR)\icudt66.dll clean : @- rd /s/q $(INTDIR) realclean : clean @- rd /s/q $(OUTDIR) CPP_PROJ=/nologo /MTd /W3 /Gm /GR /EHsc /RTC1 /ZI /Od /I "./compiler" /I "./compiler/grammar" /I "./compiler/Grammar/Antlr" /I "./compiler/generic" /I "./icu/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_CRT_SECURE_NO_WARNINGS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c RSC_PROJ=/l 0x409 /fo"$(INTDIR)\$(TARGET).res" /d "_DEBUG" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib icuuc.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\$(TARGET).pdb" /debug /machine:I386 /out:"$(OUTDIR)\$(TARGET).exe" /pdbtype:sept /LIBPATH:".\icu\lib\" BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(TARGET).bsc" !ENDIF "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" {$(GRC_SRC)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_SRC)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_GRMR_SRC)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_GRMR_SRC)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_LZ4_SRC)}.c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_LZ4_SRC)}.c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_GEN_SRC)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_GEN_SRC)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_LIB_SRC)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(GRC_LIB_SRC)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << {$(TTF_LIB_SRC)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(TTF_LIB_SRC)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << CPP=cl.exe RSC=rc.exe BSC32=bscmake.exe LINK32=link.exe LINK32_OBJS= \ "$(INTDIR)\Compiler.obj" \ "$(INTDIR)\lz4.obj" \ "$(INTDIR)\lz4hc.obj" \ "$(INTDIR)\ErrorCheckClasses.obj" \ "$(INTDIR)\ErrorCheckFeatures.obj" \ "$(INTDIR)\ErrorCheckRules.obj" \ # "$(INTDIR)\explicit_instantiations.obj" \ "$(INTDIR)\Fsm.obj" \ "$(INTDIR)\GdlExpression.obj" \ "$(INTDIR)\GdlFeatures.obj" \ "$(INTDIR)\GdlGlyphClassDefn.obj" \ "$(INTDIR)\GdlRenderer.obj" \ "$(INTDIR)\GdlRule.obj" \ "$(INTDIR)\GdlTablePass.obj" \ "$(INTDIR)\GrcErrorList.obj" \ "$(INTDIR)\GrcFont.obj" \ "$(INTDIR)\GrcGlyphAttrMatrix.obj" \ "$(INTDIR)\GlyphBoundaries.obj" \ "$(INTDIR)\GrcManager.obj" \ "$(INTDIR)\GrcMasterTable.obj" \ "$(INTDIR)\GrcSymtable.obj" \ "$(INTDIR)\GrpExtensions.obj" \ "$(INTDIR)\GrpLexer.obj" \ "$(INTDIR)\GrpParser.obj" \ "$(INTDIR)\GrpParserDebug.obj" \ "$(INTDIR)\main.obj" \ "$(INTDIR)\OutputToFont.obj" \ "$(INTDIR)\ParserTreeWalker.obj" \ "$(INTDIR)\PostParser.obj" \ "$(INTDIR)\AST.obj" \ "$(INTDIR)\ANTLRException.obj" \ "$(INTDIR)\ASTFactory.obj" \ "$(INTDIR)\BitSet.obj" \ "$(INTDIR)\CharBuffer.obj" \ "$(INTDIR)\CharScanner.obj" \ "$(INTDIR)\CommonASTNode.obj" \ "$(INTDIR)\CommonToken.obj" \ "$(INTDIR)\InputBuffer.obj" \ "$(INTDIR)\LexerSharedInputState.obj" \ "$(INTDIR)\LLkParser.obj" \ "$(INTDIR)\MismatchedTokenException.obj" \ "$(INTDIR)\NoViableAltException.obj" \ "$(INTDIR)\Parser.obj" \ "$(INTDIR)\ParserException.obj" \ "$(INTDIR)\ParserSharedInputState.obj" \ "$(INTDIR)\ScannerException.obj" \ "$(INTDIR)\String.obj" \ "$(INTDIR)\Token.obj" \ "$(INTDIR)\TokenBuffer.obj" \ # "$(INTDIR)\Util.obj" \ # "$(INTDIR)\UtilString.obj" \ # "$(INTDIR)\HashMap.obj" \ "$(INTDIR)\Platform.obj" \ "$(INTDIR)\TtfUtil.obj" \ # "$(INTDIR)\GrCompiler.res" "$(OUTDIR)\$(TARGET).exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << BSC32_SBRS= \ "$(INTDIR)\Compiler.sbr" \ "$(INTDIR)\lz4.sbr" \ "$(INTDIR)\lz4hc.sbr" \ "$(INTDIR)\ErrorCheckClasses.sbr" \ "$(INTDIR)\ErrorCheckFeatures.sbr" \ "$(INTDIR)\ErrorCheckRules.sbr" \ # "$(INTDIR)\explicit_instantiations.sbr" \ "$(INTDIR)\Fsm.sbr" \ "$(INTDIR)\GdlExpression.sbr" \ "$(INTDIR)\GdlFeatures.sbr" \ "$(INTDIR)\GdlGlyphClassDefn.sbr" \ "$(INTDIR)\GdlRenderer.sbr" \ "$(INTDIR)\GdlRule.sbr" \ "$(INTDIR)\GdlTablePass.sbr" \ "$(INTDIR)\GrcErrorList.sbr" \ "$(INTDIR)\GrcFont.sbr" \ "$(INTDIR)\GrcGlyphAttrMatrix.sbr" \ "$(INTDIR)\GlyphBoundaries.sbr" \ "$(INTDIR)\GrcManager.sbr" \ "$(INTDIR)\GrcMasterTable.sbr" \ "$(INTDIR)\GrcSymtable.sbr" \ "$(INTDIR)\GrpExtensions.sbr" \ "$(INTDIR)\GrpLexer.sbr" \ "$(INTDIR)\GrpParser.sbr" \ "$(INTDIR)\GrpParserDebug.sbr" \ "$(INTDIR)\main.sbr" \ "$(INTDIR)\OutputToFont.sbr" \ "$(INTDIR)\ParserTreeWalker.sbr" \ "$(INTDIR)\PostParser.sbr" \ "$(INTDIR)\AST.sbr" \ "$(INTDIR)\ANTLRException.sbr" \ "$(INTDIR)\ASTFactory.sbr" \ "$(INTDIR)\BitSet.sbr" \ "$(INTDIR)\CharBuffer.sbr" \ "$(INTDIR)\CharScanner.sbr" \ "$(INTDIR)\CommonASTNode.sbr" \ "$(INTDIR)\CommonToken.sbr" \ "$(INTDIR)\InputBuffer.sbr" \ "$(INTDIR)\LexerSharedInputState.sbr" \ "$(INTDIR)\LLkParser.sbr" \ "$(INTDIR)\MismatchedTokenException.sbr" \ "$(INTDIR)\NoViableAltException.sbr" \ "$(INTDIR)\Parser.sbr" \ "$(INTDIR)\ParserException.sbr" \ "$(INTDIR)\ParserSharedInputState.sbr" \ "$(INTDIR)\ScannerException.sbr" \ "$(INTDIR)\String.sbr" \ "$(INTDIR)\Token.sbr" \ "$(INTDIR)\TokenBuffer.sbr" \ # "$(INTDIR)\Util.sbr" \ # "$(INTDIR)\UtilString.sbr" \ # "$(INTDIR)\HashMap.sbr" \ "$(INTDIR)\Platform.sbr"\ "$(INTDIR)\TtfUtil.sbr" \ # "$(OUTDIR)\$(TARGET).bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << "$(INTDIR)\Compiler.obj" "$(INTDIR)\Compiler.sbr" : "$(GRC_SRC)\Compiler.cpp" "$(INTDIR)" "$(INTDIR)\ErrorCheckClasses.obj" "$(INTDIR)\ErrorCheckClasses.sbr" : "$(GRC_SRC)\ErrorCheckClasses.cpp" "$(INTDIR)" "$(INTDIR)\ErrorCheckFeatures.obj" "$(INTDIR)\ErrorCheckFeatures.sbr" : "$(GRC_SRC)\ErrorCheckFeatures.cpp" "$(INTDIR)" "$(INTDIR)\ErrorCheckRules.obj" "$(INTDIR)\ErrorCheckRules.sbr" : "$(GRC_SRC)\ErrorCheckRules.cpp" "$(INTDIR)" #"$(INTDIR)\explicit_instantiations.obj" "$(INTDIR)\Compiler.explicit_instantiations" : "$(GRC_SRC)\explicit_instantiations.cpp" "$(INTDIR)" "$(INTDIR)\Fsm.obj" "$(INTDIR)\Fsm.sbr" : "$(GRC_SRC)\Fsm.cpp" "$(INTDIR)" "$(INTDIR)\GdlExpression.obj" "$(INTDIR)\GdlExpression.sbr" : "$(GRC_SRC)\GdlExpression.cpp" "$(INTDIR)" "$(INTDIR)\GdlFeatures.obj" "$(INTDIR)\GdlFeatures.sbr" : "$(GRC_SRC)\GdlFeatures.cpp" "$(INTDIR)" "$(INTDIR)\GdlGlyphClassDefn.obj" "$(INTDIR)\GdlGlyphClassDefn.sbr" : "$(GRC_SRC)\GdlGlyphClassDefn.cpp" "$(INTDIR)" "$(INTDIR)\GdlRenderer.obj" "$(INTDIR)\GdlRenderer.sbr" : "$(GRC_SRC)\GdlRenderer.cpp" "$(INTDIR)" "$(INTDIR)\GdlRule.obj" "$(INTDIR)\GdlRule.sbr" : "$(GRC_SRC)\GdlRule.cpp" "$(INTDIR)" "$(INTDIR)\GdlTablePass.obj" "$(INTDIR)\GdlTablePass.sbr" : "$(GRC_SRC)\GdlTablePass.cpp" "$(INTDIR)" "$(INTDIR)\GrcErrorList.obj" "$(INTDIR)\GrcErrorList.sbr" : "$(GRC_SRC)\GrcErrorList.cpp" "$(INTDIR)" "$(INTDIR)\GrcFont.obj" "$(INTDIR)\GrcFont.sbr" : "$(GRC_SRC)\GrcFont.cpp" "$(INTDIR)" "$(INTDIR)\GrcGlyphAttrMatrix.obj" "$(INTDIR)\GrcGlyphAttrMatrix.sbr" : "$(GRC_SRC)\GrcGlyphAttrMatrix.cpp" "$(INTDIR)" "$(INTDIR)\GlyphBoundaries.obj" "$(INTDIR)\GlyphBoundaries.sbr" : "$(GRC_SRC)\GlyphBoundaries.cpp" "$(INTDIR)" "$(INTDIR)\GrcManager.obj" "$(INTDIR)\GrcManager.sbr" : "$(GRC_SRC)\GrcManager.cpp" "$(INTDIR)" "$(INTDIR)\GrcMasterTable.obj" "$(INTDIR)\GrcMasterTable.sbr" : "$(GRC_SRC)\GrcMasterTable.cpp" "$(INTDIR)" "$(INTDIR)\GrcSymtable.obj" "$(INTDIR)\GrcSymtable.sbr" : "$(GRC_SRC)\GrcSymtable.cpp" "$(INTDIR)" "$(INTDIR)\GrpExtensions.obj" "$(INTDIR)\GrpExtensions.sbr" : "$(GRC_SRC)\GrpExtensions.cpp" "$(INTDIR)" "$(INTDIR)\GrpLexer.obj" "$(INTDIR)\GrpLexer.sbr" : "$(GRC_SRC)\GrpLexer.cpp" "$(INTDIR)" "$(INTDIR)\GrpParser.obj" "$(INTDIR)\GrpParser.sbr" : "$(GRC_SRC)\GrpParser.cpp" "$(INTDIR)" "$(INTDIR)\GrpParserDebug.obj" "$(INTDIR)\GrpParserDebug.sbr" : "$(GRC_SRC)\GrpParserDebug.cpp" "$(INTDIR)" "$(INTDIR)\main.obj" "$(INTDIR)\main.sbr" : "$(GRC_SRC)\main.cpp" "$(INTDIR)" "$(INTDIR)\OutputToFont.obj" "$(INTDIR)\OutputToFont.sbr" : "$(GRC_SRC)\OutputToFont.cpp" "$(INTDIR)" "$(INTDIR)\ParserTreeWalker.obj" "$(INTDIR)\ParserTreeWalker.sbr" : "$(GRC_SRC)\ParserTreeWalker.cpp" "$(INTDIR)" "$(INTDIR)\PostParser.obj" "$(INTDIR)\PostParser.sbr" : "$(GRC_SRC)\PostParser.cpp" "$(INTDIR)" "$(INTDIR)\AST.obj" "$(INTDIR)\AST.sbr" : "$(GRC_GRMR_SRC)\AST.cpp" "$(INTDIR)" "$(INTDIR)\ANTLRException.obj" "$(INTDIR)\ANTLRException.sbr" : "$(GRC_GRMR_SRC)\ANTLRException.cpp" "$(INTDIR)" "$(INTDIR)\ASTFactory.obj" "$(INTDIR)\ASTFactory.sbr" : "$(GRC_GRMR_SRC)\ASTFactory.cpp" "$(INTDIR)" "$(INTDIR)\BitSet.obj" "$(INTDIR)\BitSet.sbr" : "$(GRC_GRMR_SRC)\BitSet.cpp" "$(INTDIR)" "$(INTDIR)\CharBuffer.obj" "$(INTDIR)\CharBuffer.sbr" : "$(GRC_GRMR_SRC)\CharBuffer.cpp" "$(INTDIR)" "$(INTDIR)\CharScanner.obj" "$(INTDIR)\CharScanner.sbr" : "$(GRC_GRMR_SRC)\CharScanner.cpp" "$(INTDIR)" "$(INTDIR)\CommonASTNode.obj" "$(INTDIR)\CommonASTNode.sbr" : "$(GRC_GRMR_SRC)\CommonASTNode.cpp" "$(INTDIR)" "$(INTDIR)\CommonToken.obj" "$(INTDIR)\CommonToken.sbr" : "$(GRC_GRMR_SRC)\CommonToken.cpp" "$(INTDIR)" "$(INTDIR)\InputBuffer.obj" "$(INTDIR)\InputBuffer.sbr" : "$(GRC_GRMR_SRC)\InputBuffer.cpp" "$(INTDIR)" "$(INTDIR)\LexerSharedInputState.obj" "$(INTDIR)\LexerSharedInputState.sbr" : "$(GRC_GRMR_SRC)\LexerSharedInputState.cpp" "$(INTDIR)" "$(INTDIR)\LLkParser.obj" "$(INTDIR)\LLkParser.sbr" : "$(GRC_GRMR_SRC)\LLkParser.cpp" "$(INTDIR)" "$(INTDIR)\MismatchedTokenException.obj" "$(INTDIR)\MismatchedTokenException.sbr" : "$(GRC_GRMR_SRC)\MismatchedTokenException.cpp" "$(INTDIR)" "$(INTDIR)\NoViableAltException.obj" "$(INTDIR)\NoViableAltException.sbr" : "$(GRC_GRMR_SRC)\NoViableAltException.cpp" "$(INTDIR)" "$(INTDIR)\Parser.obj" "$(INTDIR)\Parser.sbr" : "$(GRC_GRMR_SRC)\Parser.cpp" "$(INTDIR)" "$(INTDIR)\ParserException.obj" "$(INTDIR)\ParserException.sbr" : "$(GRC_GRMR_SRC)\ParserException.cpp" "$(INTDIR)" "$(INTDIR)\ParserSharedInputState.obj" "$(INTDIR)\ParserSharedInputState.sbr" : "$(GRC_GRMR_SRC)\ParserSharedInputState.cpp" "$(INTDIR)" "$(INTDIR)\ScannerException.obj" "$(INTDIR)\ScannerException.sbr" : "$(GRC_GRMR_SRC)\ScannerException.cpp" "$(INTDIR)" "$(INTDIR)\String.obj" "$(INTDIR)\String.sbr" : "$(GRC_GRMR_SRC)\String.cpp" "$(INTDIR)" "$(INTDIR)\Token.obj" "$(INTDIR)\Token.sbr" : "$(GRC_GRMR_SRC)\Token.cpp" "$(INTDIR)" "$(INTDIR)\TokenBuffer.obj" "$(INTDIR)\TokenBuffer.sbr" : "$(GRC_GRMR_SRC)\TokenBuffer.cpp" "$(INTDIR)" "$(INTDIR)\lz4.obj" "$(INTDIR)\lz4.sbr" : "$(GRC_LZ4_SRC)\lz4.c" "$(INTDIR)" "$(INTDIR)\lz4hc.obj" "$(INTDIR)\lz4hc.sbr" : "$(GRC_LZ4_SRC)\lz4hc.c" "$(INTDIR)" # "$(INTDIR)\Util.obj" "$(INTDIR)\Util.sbr" : "$(GRC_GEN_SRC)\Util.cpp" "$(INTDIR)" # "$(INTDIR)\UtilString.obj" "$(INTDIR)\UtilString.sbr" : "$(GRC_GEN_SRC)\UtilString.cpp" "$(INTDIR)" # "$(INTDIR)\HashMap.obj" "$(INTDIR)\HashMap.sbr" : "$(GRC_GEN_SRC)\HashMap.cpp" "$(INTDIR)" "$(INTDIR)\Platform.obj" "$(INTDIR)\Platform.sbr" : "$(GRC_GEN_SRC)\Platform.cpp" "$(INTDIR)" "$(INTDIR)\TtfUtil.obj" "$(INTDIR)\TtfUtil.sbr" : "$(TTF_LIB_SRC)\TtfUtil.cpp" "$(INTDIR)" "$(INTDIR)\$(TARGET).res" : "$(GRC_RES)\$(TARGET).rc" "$(INTDIR)" $(RSC) $(RSC_PROJ) "$(GRC_RES)\$(TARGET).rc" grcompiler-5.2.1/preprocessor/000077500000000000000000000000001411153030700164035ustar00rootroot00000000000000grcompiler-5.2.1/preprocessor/CMakeLists.txt000066400000000000000000000006601411153030700211450ustar00rootroot00000000000000project(preprocessor VERSION 1.5.1) add_executable(gdlpp cpp1.c cpp2.c cpp3.c cpp4.c cpp5.c cpp6.c memory.c usecpp.c) target_compile_definitions(gdlpp PRIVATE unix UNIX GDLPP PKGDATADIR="${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME}") if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") target_compile_options(gdlpp PRIVATE /W3 /EHsc) endif() install(TARGETS gdlpp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) grcompiler-5.2.1/preprocessor/FPPBase.h000066400000000000000000000027671411153030700200100ustar00rootroot00000000000000/****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/FPPBase.h,v $ * $Revision: 1.2 $ * $Date: 2003/07/17 10:16:34 $ * $Author: mhosken $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: FPPBase.h,v $ * Revision 1.2 2003/07/17 10:16:34 mhosken * Main linux port checkin * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.3 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:15:59 start * Initial revision * * *****************************************************************************/ #ifndef FPP_BASE_H #define FPP_BASE_H /* ** $Filename: libraries/FPPbase.h $ ** $Release: 1.0 $ ** $Date: 2003/07/17 10:16:34 $ ** ** (C) Copyright 1992, 1993 by FrexxWare ** All Rights Reserved */ #include #include struct FPPBase { struct Library LibNode; Ubyte Flags; Ubyte pad; /* long word aligned */ ULONG SysLib; ULONG DosLib; ULONG SegList; }; #define FPPNAME "fpp.library" #endif grcompiler-5.2.1/preprocessor/FPP_protos.h000066400000000000000000000021461411153030700206120ustar00rootroot00000000000000/****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/FPP_protos.h,v $ * $Revision: 1.1 $ * $Date: 2003/04/21 21:24:18 $ * $Author: wardak $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: FPP_protos.h,v $ * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.3 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:15:59 start * Initial revision * * *****************************************************************************/ /****************************************************** * * FPP_protos.h * *******/ int fppPreProcess(struct fppTag *); grcompiler-5.2.1/preprocessor/Makefile.am000066400000000000000000000004271411153030700204420ustar00rootroot00000000000000bin_PROGRAMS = gdlpp gdlpp_SOURCES = cpp.h cppdef.h cppadd.h fpp.h FPPBase.h fpp_pragmas.h FPP_protos.h memory.h \ cpp1.c cpp2.c cpp3.c cpp4.c cpp5.c cpp6.c memory.c usecpp.c gdlpp_CFLAGS = -Dunix -DGDLPP -DPKGDATADIR=\"$(pkgdatadir)\" EXTRA_DIST = fcpp-1.5.1.tar.gz README grcompiler-5.2.1/preprocessor/README000066400000000000000000000061141411153030700172650ustar00rootroot00000000000000Alan Ward 10/11/2000: These files originally came from the Internet. Daniel Stenberg created a C preprocessor for his FrexxEd program, called cpp. These original files are in cpp-1.5.tar.gz. See these URLs: http://daniel.haxx.se/ http://www.contactor.se/~dast/stuff/ http://www.contactor.se/~dast/source.html The above source.html site says, "Sources written by me, Daniel Stenberg, alone or together with others. They're all written in C. Use whatever you want, but telling me you're using my stuff would be greatly appriciated!" Stephen McConnel modifed cpp to properly handle GDL syntax. The files which he modified are: cpp1.c-orig cpp2.c-orig cpp3.c-orig cpp6.c-orig cppdef.h-orig usecpp.c-orig After you compile GDLPP.exe, put it somewhere on your path. GrCompiler.exe uses it as part of the compilation process. Alan Ward 10/13/2000: I notified the author on 10/12/2000 (see below). The file CppDoc.pdf contains documentation for the original program. See below for the main change we made to it. I found an undocumented feature in the source code. An environment variable CPP_PREFS is examined to set command line switches. I changed this to GDLPP_PREFS. The installer can use it to set the -I switch to specify where the stddef.gdh file is located. ***** from: Alan Ward to: daniel@haxx.se date: 10/12/2000 subj: Re: Use of FrexxEd cpp program AW> I am trying to contact the Daniel Stenberg who wrote FrexxEd. Are you the right one? DS> That's me! Great! On your website (http://www.contactor.se/~dast/source.html) you say, "Use whatever you want, but telling me you're using my stuff would be greatly appriciated!" It would be helpful if your e-mail address was there. :-) AW> We simply want to inform him we are using the cpp program he wrote (with some slight modifications), as he asked. DS> Any modifications I would be interested in? We are developing a software component for rendering writing systems around the world. It is somewhat like Apple's TrueType GX technology (and a little like OpenType and Uniscribe) but more elaborate. We have a web page (http://www.sil.org/computing/graphite) describing the system. Part of the system is a higher level language for describing writing system behaviors. We needed something like the C preprocessor to handle macro definitions and include files. Our problem is that we use the '.' character in a way that conflicts with C. The standard C preprocessor thought we were using floating point numbers when we weren't (since we don't have floating point numbers in our language). We altered your cpp code to handle our syntax. Since this is very specific to our language, I don't think anybody would really be interested in our changes - it's basically a C preprocessor with floating point support eliminated. > Thanks for letting me know. Thank you for making your code available. Alan Ward In 2002 the files were rereleased under the MIT license. There were no changes apart from adding the license so I merged the files in. The original source is now in fcpp-1.5.1.tar.gz Downloaded from http://daniel.haxx.se/projects/fcpp/ Daniel Glassey grcompiler-5.2.1/preprocessor/cpp-1.5.tar.gz000066400000000000000000001631051411153030700206230ustar00rootroot00000000000000X4cpp-1.5.tar\ysFԧ(t[ޢxL(R!)- I@!9_ @䭔3c`cs(VKՅŇT+x!VW qxT?kUT/DxaAߧ~vK3l{}cئ<y{fx&:||M ȅ2<&|1"ߔg</ es(.ߋ/xPہgZ뱖H^ʕ#QVj3? [B^~\聞g̤@f +>*}Qb4!/Dd"ydDo醀UGHŰ#DztV?M ?jq'UӋچ#|H)|nO\KNQx])yIEvk!*= ߖIYCHPV򥆟oD[,}{: inmWR/T4G ijB]CTD,˅ JN(~!nP-Yon.qǘDžaC%$ҝϷSWZhaZo#FΓ疗}iw7.bwX]eOv\[ >|_=>Z4_.8٧(ʿ[4n( WJڥbژ|zp\JdϺ2#}ŧNu+B!oC8Ђ&Ƴ7S@10G$J늩to8(Pgv &E0".5œTZMԂBVM+lwTzb!$+y W"Eg :;"=ds[\} zxNC.W]ep8g# qM4ß/(ْf&,5?+{iڮEnh:ӹmm s\LF>l{*|A@h%ūM7@\+.TLR v?h ߌrbvx|S"9vn,a =VR&sf^`r.,O^(`]EcvK~{3n^5cd4)~ CF\6tZ4 ^q=vԾ ; sMXc EN9^\&:LoNNra$i2Pz,5Ӷ(+=؎-=yn8xB=hf }!IP[ҴNTk'TyJLP3v"Pޝ0U)H#bKz$xoP< N$i+@LtA4B;є1%WΏ$8),1_P,wH0& ( d$wí7kzkdb~6Sa ,dvnV >bg{i\ݶA^!f( V OlS;e0 5EwbK_23o/U7Z4:xE.wrVe 8yU'ّa.wcUU}[_~=&f Zb$s>yz b5sɜ dVeo`TqNدXM}%vґ/% {cۥ,_Ͷy'YF0)xj퀧#|cF%v-÷ `BMjtx}į? 5:ןfČ\Ox]\'ݐ)9)lb&W8 ڒ;j-Ȧ<b7qz};Z# /Fo1Kk܆]7Ld)![q@ C 3~1"7F$W^Fxa)BxXa١1i$".iu\ts0I-:X_dXz.ؖZ͇"RP06AQԜIE }/,UЛC2ik`kps{,Ijpv0)#}}KAoVNA0,Yg(j-=BI*7ۊH*6}8x1^ƑE+96 61Gk_. d`,$s佌G J0N.3{ ؗЇTr4Y|-E1 r3(1Zeyl^MGja ;R3TBcL4t{n3o8+rd$V|@G fcI6FNZG :GJQ7v_vS'}3~|Ec^TK'Y9(W`5V*gqkk7OŭEEzoqʿۊ:p'"}VKRaZAZ[p7K9X9Et{lmurvprF77u/&d<6G2αp51@1r T4Qa\;`bkgZ Î(9Vu[섂&ͮm%]ۏ $G)=/ biPpl!@}ଢ଼ LS>~S~V93q{ MM}cSm!OA>4hIϵjXOB^^*K۱A+|u'׷L9Gn1?Dvxf˶2T ]rx{j\ooJϢUYJ \;GǽuQ;-~kR=st *Pg_ܸ=YR8I&@ :mջؗjۚЃnPh"BYQe yF>:0DP d Ełgl0zT;b9PÙf.˅A1Xnq 6:-5\ )J qiB78W)H7g!ѐCa_) -^oB-v"L~ דDŧZ*n$W%TM},Ц+sLi~AH;NYǬhP jxLp=-~ Mɑ1)]PkL Y7ɳ/w ͒;#^D'Oj̖P{VJoNj45teȐ(WM#oF~jڃ؈+4#kFͷenȆZI͋0{@y$QeGm! YVnؤca8ޔkiwaaӵ+nqWS9`^%~s`Ksse%[S3жt;UqYofia(]Z̆S(k±(!nS,?`F^ኼ'b k0rTY $r/=}&:|R_wvQ4$/F7avҟTcɠ]4ObQ/IͤrK6J-=g=tyA)5.fhŐ~|ujG]&(O =puiTAZ:L* Hp+u0yqkK41mm -F*z}nOʺˡsVԤD|{ ucϊ0E T krCSDb 4g9`>W`W Y"kH$UA'63J`q?EB^tUѣ0-/s23mŦvqJy &8a51|. nLzʴ &3mI ^l`|5ݓ`hWs`*?i.rB+}ekžw(M6y| qO.٦qZ\nQ"Iu& q(X,Ņ3X>8q&r`%<_̸ t˶RT93Fna bsƵ>B`gDNP} yĆ$FA>a yu#ݴϤ {bKk"8(h0jzr0.^A 8BbO1Ҟ^6?afZL=Aw{(#80c~R ܎ɡVů xrؔrBtXć#>wxx}ښ&r*++y;8=b9i(zuh5$z܋K<v-Ǫ21k ~G Y 'e=!T yol?Օsm J{Q 6N8յNOtIxn-txZ糎wvD 3da˄!Q&8@p%+/*ޏR <Wu"GP&6]rS*<+ƛ]`Rp%1* JgiexV7E&1H3}VWWWUAՃ98\Mh^_%Ko IGs` I Ðb`\Ԯht{#R眢)0'g>ċ#4a 93t0 P=k DӉjCp >rHorԝa ~)kv#^d%g78꡽b6>}HX4́(UY1kR6Gڈ눵%:\+x0:Px{Xǣ (fi_bU>"\H-.. H}xgfT!ݣ32a%DD4}y#F[YBkͿ{S5 hIz@`L,K/V- +FwxO;-iU`j NhIk5M@*kr=ٗ=}l-lj"o2`^lbߴYbTc!xSq$28uz)PnjaTVe!;sdS3=Pa;}(qV8@^Y `s Xiuf^Hc|Dfx˛^68>%2%o2 ~^C*twXŝ-_3P׹"4 j|zNv"{b̛9w 2'xr9 8ޘ ;vv+o=-D[2u{YY]# ɏkE4[g1N7 U7f'= myuB5vBvVsO$Ѡ+o7вw217fvPl{[P "0qU-ZL8jA@CCSC0+ˆ?G~43 f`(F8eq,WYÀ'g;g l4׸B,7LYvL {k7сu{" A܌I򏙭Y? 5@7ѻa#+ 7K8|C@E}d Zר9&"lߓ]]zz ["vd[4Ҳ &Wɺsq PF\#kfH^FHn}uJd 7yHɿOJnQ" ^lƹC#;;6?:od R H ?{#쌬u38:'6_ya6l|.UAj4 j ~Ǒv~Zf/nqג.-@nal+ʵ<(TO4"6Ey͂#cSN={}ej= #^GV*>;|r9[G'/^*80 puW~~ <'$D'1sVH,l?ȣ54]sCr;gbb2?!#CfG9liسZ#EJ-,4o9D'AT+bΌŘFQ a6ֆx $R ߉ڄ<&_c,./(0xh:<^>IC$}?f<4+o7VIRt1ʘfxƦ7Ki^cPBN y_VYlbE`Khq xaZJQPbk>n!v7rg})j_C ?8Áku/:H]븍,I S4k%?#vϝIL? lejhXX7xh|IG]1S(xz W6Zͥ$9z .M|:# 3XKӨ*$@[8(6^[/8Lt~1$K IU PFzrAvK[?iP8 (`IvdDB8ƅ[:\@4!Hc%px>Эn#Ԭ./=_xtόAX0&'8Í;Hd1 ;+;n:p^/ӻWǚgwos]z 7)yOc`ew oP ݇1qY~[C»y\i<7Hި"̑ZDmϢ5W&Lt!AEl鶛 6"%ܢ /*p@L@|acf+X R)褳oNYB%~s^5 8o֭gE HOݛgBSBMCE@L^~>v{ǝwjT&[X"=.%d9zȞ Entp (`|vF|vV/?U 4e%3$.({:rޔySZHB ͿNݴ-#!(H2)76n?q:޵z䕄egeiY^ٛՕ ~nJ29ݪ#Y 6]}pv7Ao cF\MAlv,Uy]3u V"jPǠZ)w!RZK`Dd*RYA61}K`WqK'\G&e^fz^ /8ɶ8Oe}6paG+_ҝ&'䱖RmOßϤ"w?_Wx.PJP#-:RW\h18y!̝D_.=fp W )-dn7ZD. CD{/'F}TN M6;Xtf<f٨i:6c񠛚Y,QDV%tўAmpދ`8e~ؓ 5:MZIVyŞ!0+u`X1;?ޥqJ0s{}ݥm)E᭏vTn!q&Fw JNv`[ 8mN"Jb;acnb P5w~$4k;I-rҿt o3롊o y~_7YtqoE7yJ E1ƅzC}ㅒg# jIY@BX, d0_pvdgߺϹ+ [5fKl'Kr]WrJ) o(Gi9Q'7T$+&L9+ٳX{0 hN b{؞8lݾ]L[Iou9FfU8Z*K٨1`ڽX^/::g զWAR2$_Q$h.TS/#֒QKnuh4ffQ@SunPO) >a:OX>GI4S>)0-@ M&M-u5:ý5 =HY-TR;%L^>IWG%OL {(Y 4v&M/_?"%D#4,Af$Xc*2=5nAؙEt^3Ġ]9̞>ΙgJT. Q6OXXguJ8#CبX ؅b~N%_lPTn([SP{ $R1{0n<;0mp]^Gې{ z $&YH8۰nW`v&;K]-+oSNK@5# ضHZRp\H1da:91UYG% Gc*?nHxƻ2>{C4SPd,hÃ9BV17 J]&vDr4o]^E~&&)ߜudMѦ3E{mG= =JyP"PzS!FkvmUJ8fvp/?cV%GDAlf`]<*.wE9UrJt8xZ_maẴ#<%"e=^}+BL:Ǣefl91ijh1QF5oeEM{6 -5gca^MiZ\^ܳAi{7pa+^KЪ_b_W#2Lhe >uȏzޙOڌOscɰ^QPD^$n0X k*.%^iI[aFi s܎Ǜdp#7᝖'F< Sxy[ܣ%8$ϻ1BԤ#a YfL9%?NQW ILuÇalЗ{ߞ'o3(  iTmrF^ e.{f_7ۀG2FpEC7M͑Qpmy5 1B(ho" AQdPFyAsw0CET+8[]}U cr e M ]>fȷ r1F"\DmBwk5><6U=̧ނ<بN A̦/sg;enC]M[PE5f6D&{u )8<Ⱥx~"n}4['"ɸPlσ {FSXV@if@,'R7 hr%܃T;+7oƇJ.v|!Ü(@Fz&^>%YA9& Ap-~ET!b}^-jʆZ,a̺覚a9|ѐP<7L>5F@tkI㋱E%7\@;䏁VGN SēgJŴk0ɴ悥H2u9N| Eġp`:f8I cYLN${LK Su(;:~@&ju/[ދxH,eSn>9{ =唩<4b I[!4vjp`MOv_a: L~t/ $O)osM#5 .06ٌ?Ҷעƭ/:?)݁Y߽P U&?{@xr%26(' 6 Y)pOQ; &{_颽Lrl\o[L(2>4%Owk*J6bcT%2mF_rJ{ܞǑB[ =.P*\CAWv ApИaxa#_r"r4}6[NIlwz2z)@)s+T mlB~_1UZ`NTws8-Ʊq~MƅVs!ڿZNf꟢);"Rl~}NSA"3h#4l41$FK W2P?GKL(C,uLL7ɤU(i40h N_Pg2v윂ݽ+8ry}"_sVENog p%?qceHi,ۻ(DGρIsL(19 /$\ Lwsax{ɀxu9W +S/ Qk $Lr𸵝[K K^ Vּ4/?ۏywRp޶-֠+PviY0E&륦}g O)@)Bؤ7 ]qB?/,_7c=* J3e\ԛL=NmE!::@1d&FQ:%Po-}:.DD.Y#Þ6SG.gdCOR)*Y^t}i9,fwmdǯNQ( ΖrԶ~fp]&\ 5+}޹6u( nZݠXdx> ;EK, p9KkF{9F8%*rDߘvY0E2rT a,>8'Pxh Rve+cQ%QxQ|7>ߍ軱8]w[ ˘E%a Lz{},ʘ>MMp0J%)2ɍiY)](˿N{rG -ڢ'֝i|Y;)NSZjդq4\QuPKOqBGarv8MyAZ1u!6|qi1 eNcSMTs :p]K:ؐ] a#,. r(X`5A򞲗UEyXs|'v_ ]s^r_cd2 ӶC^z; ߐۛfqjꋦB9əsa;ql,w0\+MG Fe<5 oe1^Zd <0d. X//`鋇 w CMcX桖-yEMY~Qh~N6*_M秜d^ +CzI֑Vq_K_Նo6@.1~]Nyfa]|2,-e]_&@Dn`w? :+!R(ؑ!sez~qqqZq?R1{πр 9l634Oۇ1JtI4dT!GA 08 |x' {H.Ыs|*x{nrs4ZT`ND2 [ ˡSxv&~xFkssx؜)\AV UAPfֶ&gY+`$ϲ^܊H/Q{\mޫ}sUc:GHZZCNxO( v5֠=ǝ|Lc"⣆;ISx9f{gh8i)0v;t Sb[?kksh6%6mS+p]KY}uPMZQ0VKkDtN{Rh c+nG!g"<ы֧ Yz '@~,!jշ$0D30'4kO0ӧk˘J<~o_O$UE_ʋ9]J"?)BDb)x).6 4 *ƾ V-?i:;}VČy`qp>l^; JST+TFia-\.% kU0|e`a0h 8P|}%} n{~yUJ ) "WlX?qSuV *5 0= %Ǝ2Kj{nLEP2SZQVà"ua7I͊Ĵ 5LcouNqٌm yw%(R>t&[6.ҺZ9t%cY7| ooKrʖpɕ}ІV7*%Yrꥤqe Ljc+ 3fSTЎC;R,+x*L6 jЙ@nh6}{xζϱTїum{lneIh7wJ۔7:  d?i4dRgm5Aw:K>jn9ek<(nU2v--w6l,xo-;n?o[, N`{VT)JȜ ʜB-!ZR]ؾHj؂whod `rOUJL}Z*%&gC}}nsy; W 緒 Cb* .s~3-MhsSN,,?5}z7WSi(~zrvs?<u@*NDR8qmaǯ\ahP̽uǩVۻi- Nq?Hͷ"ZI!6JDK^.2o)7W&'X(~̎m X#Q.j4܄=0xMQb ,ςl2L]<^?S &0+_bFZ_gr0TĎ;5x0 &1}n[m6JRfdĹp<ރf@Q\-mV`h, n׊Dg1T¢U[UUsi _ec5Xa',qŬ,J#r\޽NӃsF~5ԍ!e8޳*yTN{Mǁlc8-tX&S[ W@GJjugRg!|fN8+?PcPIumP 39mEXp/PD"?Qxj}Wlj?0o@ua!>Nq,rtu| k~x-1)yyQJԈRU:,FRq.L&1@'#0_Ԥݸ3I++JM4âg$/xyӰȕ:uD"A^9 g y@IeL(<=cY"՘ʖ9PNdxSMon0>[Ƌ잌QqFf@SQ' k |D#ZQd{˾Ē6Ql"4 =D0wK+͛Ȫm)NoԙU՚3(19UbLkc2br .,O!t%Cm ye, AAEd ( {3EO..h>߳F?oWY 7jqw4qwYM.QҡzGC[2c녶+҆$h# .EKAOw8hCNX~q4~T\ |:+M+SKRډU/q7f ݣð>[&`FZ$ zOaG81<;nY|sE{F{퀒ǞޝE 6<ߩ" w ػeP-h5t! 4l4X< @5g)Ilp5#gmkf1+_Ym)|~xp * 6 a~?I뉦R(dfVewmp,ƍWVE/g͇~U8=2Gõa-\+#G/+RH(E/ ,4hkDsەQ!q~;V +le 9Ԇ4 <ƜW\T"\BǷn/s)Q/@4zhXQP7h,1{KU,.v?ӠQKj\&Iv4Lz{chCNxwP{n*_vl#c 2Ų,b|Pά &itLņ:pNc[O~5݄r(ʘɷ[Y{~Y3^?kQ8kZ0aϬZ/X> $]q`rq;LJv9"{(?k2FAP`x< ]LSi>`!`<6yCvp^3lۅ_uuw(yMz.P(Yg,,Pd\:ĮN9ÆiO٧ f(vxZdVk9-c-Š6.lsyPkLN¶昩ie^F]Bz;G.^DK(B8li_I|1$n)kafG?VwV2 4g񑋝+C/O7+ Ϥ\[ʄfYo*hdmr7{ \( Ɉ 3sӔD#S1c=Ovd46  Û\gU5LV jx%NޭZ<(g1Q^<*zfà&1E6NFbSuN FH :|pмq`p `bE Ӄ{ɢPbԠ!w׃i$Z{)KQD_-ߣ-$;;Ll:qaŶJ&}\krq?(9!]%kvEi :u6m Jq.h}0{ G0}ٲǯh/hGӹUCHGk޲(Ez> zav&y7-?YQgr{պ?fY$hQGE?bpF M}!^ 07(?m==ԑP )8=uvγWLoF{f^]HO^'0k @JhlֹSMA1r'c`;kG$aс$k4v|W77QlRyz!.мrЧHB>0^zgz5ߢ,{DMK&Ȝ'qq8YuKmD3uem\m+Z fH^tnuFJ<ӽA[b & yh[ΘIlر1YeuB 0z8%r=BȫHvyح΅g"]`: Dnql٨QT@m"D?7Nk&-n*A-7 y_C ѡ氩`O:8i;Lv T6p&Ű8qoJ̀U-iМTNU SR2ꈙ)rScZ ["wo|(#ktOAAf18h[0f|z>ʵ"`;O/h vl9ErnN;aX]@V~,Y! M2k,`2PXee\']z|͞ZPj;ağ[ݕߔJ(vojfq͙ǵ1^]ͥPD` RԆaj$? @Mo;c2q.-7QN+3λ*pbSđ8̎J8BȦA}iu !O9U^R_cn%2O-L3&b9"LFEMg`,^k;{Humh*lN)Tt!)'kH'Y[2x&dbQ.b(vhUDJZF9u 1`thcU+3[ -VB>F-B h/@o _V\0"Ɍ<\[s(uqUG0 Onh f;]=S9CN" a|o bd?lڬ M*)R* uz߭ڽV\n VWPM'TÕ&n݄)>-UT;X^8P? ` *@k6Ҕ8I1EoagkcTE=*̅L~@p3+2#9Ƀ #b}.zB>$3Ϸ?j_.責G0ir]+k>Nd檗֊c wu<+01hfdIÒ0HJ@ɀv29Kag$o\G5_K#!/R""jaHȆc*Y Xμ g3C^Y`y+N#7Y, KKRIȃe\R\`AU$a,Գ&Fr?2dzvUf.Ͷy1V@$# EaI$13cdvS(y:% oedy7w[fȦI;h=Z0EuPȅt*v7LMpq%j`)\YF`VuYVLwヒd)7nhlB9VJ+kVVw[!8 ޙ )GZǟ>>}hu%N_KU?&|9}\u k b)b}lc&UG2|s ZZCAYOe a" `+_keFʳ`F*dtg.z>A7JOnLj/y*zG9?cV]^.#ƈ ޫ Ha#A@|e|Vj EiEJb".贛 (o{cW+J7axj%|LdRɺ-Qs?{Ar: @Iߓ.%`'l"dard3@T`eaGO”nt-TГ7Hʤ$j;bEmde[XVnp dtp L25``\Yxc 8 -2: \C` jZ"Qcs ղ>R&Ӑ9c !TZZ&VFX\׺ dm+0ʎJ.Vp3{VlYiQBTfЪ-e+Ͳ}GW{.zhj*qWAoq7}aOf{;t-Qa_^~jS6Tj4d0Z}*բ؆ijbwZ+Df:/?~0 =!jkpk4ӓF7R^5)[Db)յ, ()&S 0<ʰKԇU+@Gp,(1V{_@bR1"p&UӐTj"膆KWLʜ6x\`gWǝ}2l:-wC\j!?*FKQ\msزCaM[e/V'"[XsgWե@kEO_&XˢG&\;L]P7[>jdf`KSG喱d&%2YR7G+ZI݄3F;;'k7T ~WS0qb>sfC_RR" JQ'Pߏ/1Er}.Y6B: d'OJ,U^AA-\4uz2Q|\Qd, !6c -MԻƤ" {S4-|aFB^VQ&̴J&٣^W]:%{f$ "!v8Ĉ ^Q 58&&]"PC7ge6uYQgDFK3AҖ3Kc9W2ZWXvt}ʥ "I)W`ylTyL<혁r8~bO'&2*#N&dS.BA2@LhO!) ZE&v w5 N>oQqfl 7dpێd,sECS2P6Orl4{sL  کb觳o{ ;O"JLnQP"I=jFUx(}5`盎{3YG QtsAw( ?ˆ=7&ThԘ CJr^ƾu8v*pa* ~iN4!8Frlamy;~"15eWUaWX=X^0CSk͛ ߺ`F4+w=Hwpj]kBl>,M {+$,pG/ӕ B\m/5; #A 3zOǁs>G5$s`΁a|,k vN_%ԃ)b޿̰=j[-Q jԵNe8EQ4[R?wU`D Z:Byz<@y:h2:n&x$,*U NE7\nȣ(z &HTSj5=!*g !V D>eyZ9zCxAijpn,l;r2_ub*z69n (Zk>ĐDIx>ddsuDZZ_4,υd4LRqCx̡t:'v+&PcHg/ R3aEe8Z 0XFk'r3CX&Cq+K4,4x4"<*SQ9K%ق x~pdB U`7Zdr`Et&ڤhǖK?iHKK6FRs> MR >j8V=TDj 1_$ &G/NW|zEarK:isfF_U?]B>X8n"ҁ49_ln<–Ρh& Pn2ԙ3f:oZ Rtۻ6{Mvf^> }r{ vwl5NNۭYg2CkF> lWZG6"9' yT=-"GA:l ]Rt eFH'bLj,։yC]0a$PḂ !] yqBb򋰶"]ۢG>bԏSn{l^6Q +cu82Cщ? 켊AŸ,Eঢ়C.RT6 kt= Mѳ2ըV|˟߼[olZGQJL!Țy}! 1A|4~(έ )X9%3R?Kmzj{FitksTf#F׹lξ sFe@!NzY"ePr^12K7ve)+I:&%gPÔӯu6@՝5B%ጝOٔ'%Q$c5 r%-b2[` Oƶ(ōv.Df㈖^DQK7=TS Mܒ~=ltxl%oƻkmyVaz:۸EA;k j 5*5ָZ'lC7}=Ws93.[ࢨ@+3W𬶰{\ qV4f,b#W5zƤ_<$p^`OYA"p, 'ЛPqJEQu &q@%39BA[F}Jۻ8H2n Rws~\GďU WhGLiqt^.w?DF[eSoW1Yr,t~qzmJٴN&W:i6W.J]Y`fBz@) *C:{??}H<~f̓GO<~=~,|D?G_y9'RO ?.S3jx7'"Wk_{69xa Ic[KT -C/kNv5Za:2 $TX ԛfDSp6V1*4;cedp&pXYYhC,+!1ô uF0ZO(._G%| 1|H9(YÙĬre\a;;x ׉36L~H? f}1HJ-W{-,WKT0fP9tqBƁ{U2P7'=z]cI wgsG73|[L&q0w%qD ۷PDB?`;7 _BGji1A]"n%F{ê= v<.-%pTUUZ7W#2?Rv%<ՑT0c '$N5,'wǔdr Z`u }#()5ڃtL$wv{l!Ÿa@WI>eR%at$&+  A^]MjL T, P)RзGxU ־I7W=8LVMl !RQ' Z^*AB\:Wp2P˸θV2~`{ Xt c;QJ{!$kft:Hjf_oxc{)&Bl_1 9wnCk v*[?NQrKiք.X%3Ѱ uE׵+fϹcodS%ƛ {-cJQaG {$WA<2Ȉ](]]-%n0 8" JFc,H%1%p^;c>o٨׹xԉ@ϟ[X'&Qdk4=Xa+Uh ޛݏoAYX[gx+!y^H)MFqC#|b'%0&'hI{֝JNO-[p yOx;4(F1 nzc:e̔eE(EKu/Mly{([¨62gW[8THߏb@+u[| hݻզAHw0_mnzqdLCK.sakN!?~>rg"I9 2y%pEy5!Ab$:$_˶.K@о;E4I=¼L M9QVWY}ARuKmdλ , .WfŗsF"cqkzo9s' 斾27 YBfZ{\3|)_7ʴҸW_o<|F8V4h͗[?^q3Oi+_?85<^6G=n~7.|4㛷sk`d-:65z]zf.?@ `Cmȧ_k1_-cBϭ7H$*B L?ꞐiO6ŒUZֿ9d*Ŝuf@~jw{RĞ:^wK0C3,hM MǢuǚHwGakG^WiX62Uu&(fH**+S\8L$u\)EoC=IϓU68.˜KkCedJ 5h1kh%L76}Ņ ߰\Ma7yp~|hZZ{?vm v+zO0UOAkM(OQX37 5)*ʹABbwѰp.z.6GΆb]m)o>S̚9иH|DM;p=ܯ o_ m ,Bcw ]tDŃȅ0 a[;, 3_D苣~Wq x`qf]RwI!_{ߋH 6'j-jcw!wyӗ>MtQ^Xo.xšjyTfٱ%CnJwdSxɊghH 1ATbo|xphi8БSEѕi%rMw/B=zv0{KR)Ֆb/ye6izZ. J l۟ϫר9M}VE ޏ5^7vetkbfox5bDM{b[_{} FU(z mp\CoUDZt-|w44d9"=Л0XHN ׬dWWӞH6Cc/qρuw24oKj`Wz_%E :em C;xJ=^3ʆ9D*@w'b™KS"I e>V9[;݈\m%Ml];ŝwhK7$2nqvG_&ꚋl# F- f GQ7W L+O- b^.3[xrV.^هDۜL]K Jm3!/:7O۹9si9+ v3PXLHH|eq`:'Gå} JKJUu7;[@ϑqckݸӻC&00Jf~ʋ.m/޵Fl&ME2IH:ɑM )19s荲Hk,@$qDnl`/9$DX. }H \^kb$BĝBlw`'i@n͔ )7!Yv<&=C>Vv ^r$&s 0멪y#V.9z*m̉hW2o.Ə$kTUj9.QE a LF⪐^W6V5W҅686n ƘE+݀%c7^G7aS ߎr5ZX# O\Lm'>hCfJP2^ 6@ % R7iwRPJz^ v{2 >pbAw>~,.Wũ#q3¨~Ra}BxĄHzEQdj7ܝ⫹uu&QE oD*+N$-ye2A=OZ&#~zy*/9Üwn?u짮O4훗Ӗm? ;nSN6ëhà$89Z Pҁ3ÕJ&-Klm<51_>h`濽dO|Ф #ߏm(oY&"yO!KmhC.?&H"P#S*<@r^G=1O&dprNB̏xW@xZ_^X|>zd;7'K_"N>XFCnrO8Uwwo ^h+3Xcv71.܀7nCٻT}-;ۃe_n {w-:V XHAG 0C-xW +Z9h@:D7G,7WmhJ$ N!kYy=%/m\c IN2j?'eK*A#eYĭ ӹPl07b^h[Cy)N 7k 4S.8T{~5%F?:iMUnxtwc߼0KGJ|k㢖^'w@.K YKT;&g2}_7*6j#}30ӅMyXIZqk2VgIIŌzB-iò.#sO:̄{,PjDZĐ;ddѬ 1E_ٝ"I]Ȃ/y` wxVO|DOdP5M]PHJܚksn | <4h5Shvp/\wt^[[ը+ج"EO[?+ډ.44sj#gꌻ8O{)[2IAɻHWQ պ ״/s.l{*80^g|s]n^lmmçi>"đ5*G'gC)FTG_aO>5:~KJS,XM_ܶQs4A~]#wD; &7@=ްraU0험~$d(^O:ɑ蒩xFQn-Fh@.<])#й{`4l %vy:ǎ/05XNwBhO4/QYgYׄ@-i/(2Xzc@ grBx( o#פ Hv]I2==B,'lq/A'1wzDg\7QyY:K%ȞF|,a-!V{1xᆓjPrX˖~hI7bV/c[h|6+zAoz5H'?wf@G+olH!کۣ3tgsgšj8ɏ ge`YK^aVJZ4_?zx)sa~yj9PTRzu"ۘ{@iaV*\7%P4ofhّzz bX&;"//Uz~f9(m?xP}$Ya!tm-?߼Y"zVTRLg`.2-s‘桴zhy8c6H#pN5To0 @Si" wk@zyIX?詶N@*6堑Bppg]Dy3J6zC9z58DVmw5LܣB2k_ XheL!G uT2ot>Դ a:p5kmb/,I|t 3Ug=Nx}ҶJ.z{Y^EMs`i࣬dLEy18i(9qp~ q2̛Z'͌:]ʾP^`f~ap/rEgΗ~F"Y~>h|Pi+1S$+X{`W8Q0/eq<`<_5¥O=oíi DF4f3MH&RVk;@jѶ(U꤆]#yn'Eau'Hxʉ],\Jx##NJ0)76xPl^(">E)Zy$l=85q}IOQt,O3)c;f VFHdP@1Z )G 6%-WT3hC'yj)Ȓ06bUMbf L}_O9S*t܍-h}KpLH`q#-B% Db yܰ;{g4Q1N[;cIZX!9:d6ID?&(T!<}T<XQx#?VV zMWd# Cq:DHT4/h/<:%Eԍz(y@p=o9dy{_vN)_ &@9?h:ΨHE 4q HzZҤ(.u]A 2VGN-O˼G aTAMU5\K݅ `=#[cE_^rXO 2Q.&,yrsqS~2]..V]|,=X]xJMaX< ]u:g5*O.u5W6G q=XW##Gd6SXHYpR 4wޱuT*#FNY0zt_ ޘUGgoLK^9Qd/= w(OM{0wBJAISRENNCPx'|w9Hlؽ8KU]7[!D1Oȵ _@蹃6g&ⴴ LކF"0$ʍr XPO9U8hwdAE@"K|=+YƍrYcIO*x6 aOBm}o|Id_E!a}Q%ƸhkBUjP;*MhraXGG3Bjy4l nh_iuXu0_vv=6ldzKΚap*jAQ˿s֪ Tmd#:=.Qj\c }fЖGޛ;yTp=aʡQS $:bUXrv3+&dmhq3l i}Z42H)}_QV;AϚAhb*Z_f+UUU(NaZYGB󸏮mbsYSlWYVs`Qنu)RȖ<")EuG%3DSw(5u+y;žmy Ռ<w +o.^},/?ylZyJ>yDg5&#t-X[ZY]Z~.}~B,hwT3JqgQ qK e\&YEp{NzH09Z6.F$-.]ۭ7ߛr~0gcn/͋.nȆv;/5 ,(ſaŭzN]4+෍jt Oqr%ɹ`C@kRhU% /Չ[O0N"G̯9#1O; B6e7Aŷ>s"Rc)3 [&_5,1&ؚ(wHy[Ι 9м_/BJsEw\ LԡEA!`ę#Q$G7SS#B=eHj(+D1@ 㤠#qDQG1 צaAPM'J ; . y.ˎlmj+Y`j{'Zo xvFvglyv<5q(Oql˱DmB0bpS44ѲM d| 8pM$)hmk#^m 1|W\ʌY2mpDG4UUMz*StM;-VJ[~)±[ c[I=fڜ]jl^}KNz< /(8' fɲ ,eeBϷ15 DzA:܀Sn...>+fc5'Ģp$Cf-I3X{q&vZϾkU`(/@ Wc=1ZmCKY. 8<8{k̝»NNv_pҢ4_>%>Pzc߽5u␋n<Ò̳0̛] t-&l^h\>lFb{</q޽ԕ)hyJIbֹvzUb/OK<iק^WNVRRcbbGW8hd%m@l͋uu(WQ0D!X+(5i[}pVAUIfMS` +|c%M(KA{zr=Dflʦo(K"eILGy^Ͱ)2ryhf[B{$bg _7o O?0yawSB ԯ#Da۳w6`V5b벗jCu%z%/o@X,r:+^%o+~cDnbe]||wfHi{v@ӛ&F(gH늑;v)i%{h;m*b'?)?/߿wu xڍ?} LŨ6wFddSa2%a8|7hy|dʆ$Hbk<8`'7рmICUP_FMaǓ2keD}`bL`"7Sۮ ;BŝY]~{D>kZ֋Od b L~>8>xQɷ9A|`W$|x7:P9;^:~DGUa ETb'>b o=fh2D41Jg$ j,+.QwvܙfP.le@VmamF{ iQLz spx5̃Xt8MCaG&)t=D0;9>*4OZ#gyaG1[GĠ;6A~Ѭ6@>Qf`Pd4|kY9S,C{V=!5; /wLhZo P !Ԧ;Z RNj'I/[y . Y2 Au*S&D(b+[(zGe5J 8-vnLB^5e:oE;JvT"}e_FWU1<<=Q.ra$ .t w eLv8ٞV`3y{":b40ΙHA[ar 0<݊ _162EAYwFabH$V zQ1DpWl iZʔeQ깏YABn~&<Ǣ&rz3I7K'ecR?zӰY,b32;w 7'1LM2*%!=Y4]۰]ؕԜcd/\9ZÊΆܐoX3 AԔF6Q^A]ky%cFi8>>c"/ ER V i):T5m3l;-ҷD7&?,bܡ<(L񁹌kʄ# xjD2:1:л\{<K}|kk+ĥY_g%NM.L*+>~ /N*~# %Icr y_°9ɝ?247cxcZcXs ?̄ͧ}e`HP$EрKpLˏLd,wWJ< tZ^[Lxe5_!*+ u ~/'ue0|ywIRyB ʚ%';P4v.30 Cp 0uMĜBu4 eh^Y;_0EV"B95IyӣQBJ R277 ( Xۭ=GG"+:vU(/0MYB*1\1JxtA!~tXh[V$jc5dpv ܛsk<fU}\Uw朗)Ro-}4%n֨q׸dpPtFٖ6i'2uZr9nFUBKjoSa <1XiT(ږ]JWSqà &dt۰{;' ;d>XgOCPo,dgg4v2&hnM-d񃻠ƖO¶/[8q#IIqk<;RE5F3nib^>ԝ)ٙy|Ȍ3PJYNi6"yQ5~2v rZܞr#f-%{٦jT-;׶xRHѐ,oRYdCsԎ2T͔^ -w|Q`mŘO֞>~x і<^7y0;/}ӿfcp?zCs4;9:ziLrHjQ\ϵ4?s_wS?VVHOѣ'˟?>k?h/o:S+L# 櫳Wߜo!)5Ҍͻ&?IqIV)he`vf%s =nm9''<;+7GˬcHg\g[=qA+&DݻN:Y!ƣp q$@@Wn ~t~.鄩rsUP>o>#SUbd#! vh( ݘ]aAf+6{Q^|U%Sw[;dHvYl} _$^dJg l( LP.A' ӌ #{ nyr!78.z<KNv2| B/ZK 24;4,m7`[kJϛUz\Z\bΌ I-t[ yC?ٿzG_{x_8MA~)Je6 3fS{]ej\}O{;@ alq(6x1g6C zoޘ7¿mliIgp3v W<_/ qx;Vҗ3{n߅ S}iwsfPób& J.֖Ү͟kvuBs4<F*?YLb_xß,f_W)*Y?cd1#?Wǭ!y5&`!V|y$k|# Lm틅>ֺ--pxe,|C,\1&QT\?paX2ڢyHu2faozFqs4:ak>H;zAg33L3ëN[o#=oO .:333+PL66mC{:*6UbF1PEo0Y\4L΅W\ubF)$>ဲM#=Y͢r.'ow;GSkG++(C|,̋]~ dY?Ek 9g_F7Mots*d6iU 5϶~V~P?sUjKү`էWr)@~ωIYw7FS34s^9FI,]-/MQlٯdQTqWqWqV)1?Ι:IZxחo8,&KF_2 QdKF_r;M,?YY˞++˟?{]PXĽ|`t}v_8X㋮N/JpEТ :AtQa61}x"bxyZs0|ϺHK{80^)dbpv,^C qo 鍷+* {U#`\xgLuI&F&X$R]|X0J'L7^1mEAK.erΚCIEAipr ؂bGIm!t?e?\$f64338pA =5-ʯW\x`+7jL;ϙa g"|'--Ţ9a@rvN EGLg(81.7Jg6P)zLo7o Ȭ.CtkC٭ )tEė)D{*G4).4pAcmeGd* pڿ3Ȭz0޳̩{(0_Mi݃==4\$t9ngr;Ы S쵰i8/uN{N)&=fPmT<m8>ϝ"^ؿKYpDqҒ_8 9ſ.C;Ccn"T:{bӬ^(fp nOذ kv/١Gص;czawMZ~+UZ˪ -SegU\wHR|SfZǶ);u_\%^ՠkģ4Dng+z8 F^f2l40Q#wqyVja3˔f5&mPtm>7"RZeJJ>[X"t]_yX=YN8%ƲnoPٍ(IKL|L]T}=g<,KEkM'a3 (Iq&7 8vry١QY1 V KRS 1ϱ%IVs/`d\ ʽWbdUNxvFnjcVD`UGe/Eȳ3b}4TrB;{oc%ۼL3,1HPOa:59lcNC4>s*0>dd.E*$9<[HI—7ߟG#z}]O[qIj1)oܝ g{j !ĬU.jfINt,[/]k,o[KA57\d+fozLyD)xi* zx|Hr]pIB镊G8Zmv&,TPl{%Rqy爐w9`nyMGFH2`a].gֆ0٬:?da\ `<. Ƥ0nԿ K4#ٝ>X—яnhCxd6ʆfb= x5kA2 w#`<.KBz:^fN `]LhԹb.\^|q'u65ֹ-_6%ԱMpsQKbl%eyqVW!i+vvhfQ^<_Z&ٕI=;ڲf}o hեsWw*$0YEub:˚X|DC^?,R@+us2ަq.haMô[onT`hFԐ2MIK QTyu(a00Z-t5fyNKXGx1keUE#/Oh@ `@ tvTW \ax _jUt'VARhwA>΄*qb| v99~S\ دF&`fatP@>23=|y'iM.$m~77T爁&V(6QnΙt s8m ៎GpT%rc\/S+U<̢M^۔WjNZ(Cq/4$ldBw44&MDÇjbk#h9WzGijC~\= ܥ+qӃS SPW#: w C=unůu]Ǭ2򑯈leë <>V}ܣ7Սf lz-7q >jnt":i |n i28HykFù!$Re:^5jiS:HQTuɹc 0l)Hۂ,|3&S]J*oƺ5h;';[HNE9J7ף#&/E{ؼ_eXHI%$!~{L8 ^s77U.4I2q ˶ތKUԎKVmCYS .j9ܴu}}Oدyek_7]Oc5kʆgd +R23n E ДóL+Fx!݂`*ZξC# %)Ueʁ]cgHkx iCz5mN@^iʹh _t D":V؉LSEh7>!E=g8>wU*{4:"a##mNh\ds蚲)QI.녍XJWW_3IHAvg?>|??lgrcompiler-5.2.1/preprocessor/cpp.h000066400000000000000000000151311411153030700173370ustar00rootroot00000000000000/****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cpp.h,v $ * $Revision: 1.1 $ * $Date: 2003/04/21 21:24:18 $ * $Author: wardak $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cpp.h,v $ * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.3 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:15:59 start * Initial revision * * *****************************************************************************/ /* * I n t e r n a l D e f i n i t i o n s f o r C P P * * In general, definitions in this file should not be changed. */ #include #include #include #ifndef toupper #define toupper(c) ((c) + ('A' - 'a')) #endif /* no toupper */ #ifndef tolower #define tolower(c) ((c) + ('a' - 'A')) #endif /* no tolower */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #ifndef EOS /* * This is predefined in Decus C */ #define EOS '\0' /* End of string */ #endif #define EOF_CHAR 0 /* Returned by get() on eof */ #define NULLST ((char *) NULL) /* Pointer to nowhere (linted) */ #define DEF_NOARGS (-1) /* #define foo vs #define foo() */ /* * The following may need to change if the host system doesn't use ASCII. */ #define QUOTE_PARM 0x1C /* Magic quoting operator */ #define DEF_MAGIC 0x1D /* Magic for #defines */ #define TOK_SEP 0x1E /* Token concatenation delim. */ #define COM_SEP 0x1F /* Magic comment separator */ /* * Note -- in Ascii, the following will map macro formals onto DEL + the * C1 control character region (decimal 128 .. (128 + PAR_MAC)) which will * be ok as long as PAR_MAC is less than 33). Note that the last PAR_MAC * value is reserved for string substitution. */ #define MAC_PARM 0x7F /* Macro formals start here */ #ifndef OS9 #if (PAR_MAC >= 33) #error "assertion fails -- PAR_MAC isn't less than 33" #endif #endif #define LASTPARM (PAR_MAC - 1) /* * Character type codes. */ #define INV 0 /* Invalid, must be zero */ #define OP_EOE INV /* End of expression */ #define DIG 1 /* Digit */ #define LET 2 /* Identifier start */ #define FIRST_BINOP OP_ADD #define OP_ADD 3 #define OP_SUB 4 #define OP_MUL 5 #define OP_DIV 6 #define OP_MOD 7 #define OP_ASL 8 #define OP_ASR 9 #define OP_AND 10 /* &, not && */ #define OP_OR 11 /* |, not || */ #define OP_XOR 12 #define OP_EQ 13 #define OP_NE 14 #define OP_LT 15 #define OP_LE 16 #define OP_GE 17 #define OP_GT 18 #define OP_ANA 19 /* && */ #define OP_ORO 20 /* || */ #define OP_QUE 21 /* ? */ #define OP_COL 22 /* : */ #define OP_CMA 23 /* , (relevant?) */ #define LAST_BINOP OP_CMA /* Last binary operand */ /* * The following are unary. */ #define FIRST_UNOP OP_PLU /* First Unary operand */ #define OP_PLU 24 /* + (draft ANSI standard) */ #define OP_NEG 25 /* - */ #define OP_COM 26 /* ~ */ #define OP_NOT 27 /* ! */ #define LAST_UNOP OP_NOT #define OP_LPA 28 /* ( */ #define OP_RPA 29 /* ) */ #define OP_END 30 /* End of expression marker */ #define OP_MAX (OP_END + 1) /* Number of operators */ #define OP_FAIL (OP_END + 1) /* For error returns */ /* * The following are for lexical scanning only. */ #define QUO 65 /* Both flavors of quotation */ #define DOT 66 /* . might start a number */ #define SPA 67 /* Space and tab */ #define BSH 68 /* Just a backslash */ #define END 69 /* EOF */ /* * These bits are set in ifstack[] */ #define WAS_COMPILING 1 /* TRUE if compile set at entry */ #define ELSE_SEEN 2 /* TRUE when #else processed */ #define TRUE_SEEN 4 /* TRUE when #if TRUE processed */ /* * Define bits for the basic types and their adjectives */ #define T_CHAR 1 #define T_INT 2 #define T_FLOAT 4 #define T_DOUBLE 8 #define T_SHORT 16 #define T_LONG 32 #define T_SIGNED 64 #define T_UNSIGNED 128 #define T_PTR 256 /* Pointer */ #define T_FPTR 512 /* Pointer to functions */ /* * The DEFBUF structure stores information about #defined * macros. Note that the defbuf->repl information is always * in malloc storage. */ typedef struct defbuf { struct defbuf *link; /* Next define in chain */ char *repl; /* -> replacement */ uintptr_t hash; /* Symbol table hash */ int nargs; /* For define(args) */ char name[1]; /* #define name */ } DEFBUF; /* * The FILEINFO structure stores information about open files * and macros being expanded. */ typedef struct fileinfo { char *bptr; /* Buffer pointer */ int line; /* for include or macro */ FILE *fp; /* File if non-null */ struct fileinfo *parent; /* Link to includer */ char *filename; /* File/macro name */ char *progname; /* From #line statement */ unsigned int unrecur; /* For macro recursion */ char buffer[1]; /* current input line */ } FILEINFO; /* * The SIZES structure is used to store the values for #if sizeof */ typedef struct sizes { short bits; /* If this bit is set, */ short size; /* this is the datum size value */ short psize; /* this is the pointer size */ } SIZES; /* * nomacarg is a built-in #define on Decus C. */ #ifdef nomacarg #define cput output /* cput concatenates tokens */ #else #if COMMENT_INVISIBLE #define cput(c) { if (c != TOK_SEP && c != COM_SEP) putchar(c); } #else #define cput(c) { if (c != TOK_SEP) putchar(c); } #endif #endif #ifndef nomacarg #define streq(s1, s2) (strcmp(s1, s2) == 0) #endif /* * Note: IO_NORMAL and IO_ERROR are defined in the Decus C stdio.h file */ #ifndef IO_NORMAL #define IO_NORMAL 0 #endif #ifndef IO_ERROR #define IO_ERROR 1 #endif /* * Externs */ #include "fpp.h" /* structs and defines */ #include "cppadd.h" /* Added prototypes for ANSI complience! */ #ifdef AMIGA #include extern int _OSERR; #endif extern char type[]; /* Character classifier */ #define compiling global->ifstack[0] #if DEBUG extern int debug; /* Debug level */ #endif extern SIZES size_table[]; /* For #if sizeof sizes */ #define MAX_SPACE_SIZE 512 /* maximum number of whitespaces possible to remember */ grcompiler-5.2.1/preprocessor/cpp1.c000066400000000000000000000633251411153030700174230ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: cpp1.c,v 1.3 2005/05/27 10:21:14 mhosken Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cpp1.c,v $ * $Revision: 1.3 $ * $Date: 2005/05/27 10:21:14 $ * $Author: mhosken $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cpp1.c,v $ * Revision 1.3 2005/05/27 10:21:14 mhosken * Get GrCompiler working on Linux * * Revision 1.2 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.8 1994/06/02 09:10:34 start * Made the function definition prinout to be more verbose * * Revision 1.7 1994/06/02 08:48:55 start * Made the initial function routine work * Added initial function exclusion list * Added function names output * * Revision 1.6 1994/01/24 09:32:22 start * Fixed the #line-option a bit. * * Revision 1.5 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.5 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.4 1993/12/02 15:10:56 start * Lots of new features. * * Revision 1.3 1993/11/29 14:00:32 start * new * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ /* * CPP main program. * * Edit history * 21-May-84 MM "Field test" release * 23-May-84 MM Some minor hacks. * 30-May-84 ARF Didn't get enough memory for __DATE__ * Added code to read stdin if no input * files are provided. * 29-Jun-84 MM Added ARF's suggestions, Unixifying cpp. * 11-Jul-84 MM "Official" first release (that's what I thought!) * 22-Jul-84 MM/ARF/SCK Fixed line number bugs, added cpp recognition * of #line, fixed problems with #include. * 23-Jul-84 MM More (minor) include hacking, some documentation. * Also, redid cpp's #include files * 25-Jul-84 MM #line filename isn't used for #include searchlist * #line format is * 25-Jul-84 ARF/MM Various bugs, mostly serious. Removed homemade doprint * 01-Aug-84 MM Fixed recursion bug, remove extra newlines and * leading whitespace from cpp output. * 02-Aug-84 MM Hacked (i.e. optimized) out blank lines and unneeded * whitespace in general. Cleaned up unget()'s. * 03-Aug-84 Keie Several bug fixes from Ed Keizer, Vrije Universitet. * -- corrected arg. count in -D and pre-defined * macros. Also, allow \n inside macro actual parameter * lists. * 06-Aug-84 MM If debugging, dump the preset vector at startup. * 12-Aug-84 MM/SCK Some small changes from Sam Kendall * 15-Aug-84 Keie/MM cerror, cwarn, etc. take a single string arg. * cierror, etc. take a single int. arg. * changed LINE_PREFIX slightly so it can be * changed in the makefile. * 31-Aug-84 MM USENET net.sources release. * 7-Sep-84 SCH/ado Lint complaints * 10-Sep-84 Keie Char's can't be signed in some implementations * 11-Sep-84 ado Added -C flag, pathological line number fix * 13-Sep-84 ado Added -E flag (does nothing) and "-" file for stdin. * 14-Sep-84 MM Allow # 123 as a synonym for #line 123 * 19-Sep-84 MM scanid always reads to token, make sure #line is * written to a new line, even if -C switch given. * Also, cpp - - reads stdin, writes stdout. * 03-Oct-84 ado/MM Several changes to line counting and keepcomments * stuff. Also a rewritten control() hasher -- much * simpler and no less "perfect". Note also changes * in cpp3.c to fix numeric scanning. * 04-Oct-84 MM Added recognition of macro formal parameters if * they are the only thing in a string, per the * draft standard. * 08-Oct-84 MM One more attack on scannumber * 15-Oct-84 MM/ado Added -N to disable predefined symbols. Fixed * linecount if COMMENT_INVISIBLE enabled. * 22-Oct-84 MM Don't evaluate the #if/#ifdef argument if * compilation is supressed. This prevents * unnecessary error messages in sequences such as * #ifdef FOO -- undefined * #if FOO == 10 -- shouldn't print warning * 25-Oct-84 MM Fixed bug in false ifdef supression. On vms, * #include should open foo.h -- this duplicates * the behavior of Vax-C * 31-Oct-84 ado/MM Parametized $ in indentifiers. Added a better * token concatenator and took out the trial * concatenation code. Also improved #ifdef code * and cleaned up the macro recursion tester. * 2-Nov-84 MM/ado Some bug fixes in token concatenation, also * a variety of minor (uninteresting) hacks. * 6-Nov-84 MM Happy Birthday. Broke into 4 files and added * #if sizeof (basic_types) * 9-Nov-84 MM Added -S* for pointer type sizes * 13-Nov-84 MM Split cpp1.c, added vms defaulting * 23-Nov-84 MM/ado -E supresses error exit, added CPP_INCLUDE, * fixed strncpy bug. * 3-Dec-84 ado/MM Added OLD_PREPROCESSOR * 7-Dec-84 MM Stuff in Nov 12 Draft Standard * 17-Dec-84 george Fixed problems with recursive macros * 17-Dec-84 MM Yet another attack on #if's (f/t)level removed. * 07-Jan-85 ado Init defines before doing command line options * so -Uunix works. * 21-Oct-85 RMS Rename `token' to `tokenbuf'. * Allocate it dynamically, with size in `tokenbsize'. * 23-Oct-85 RMS Do not print message about number of errors. * 14-Mar-85 FNF Incorporate macro based C debugging package. * Port to Commodore AMIGA. * 20-Aug-88 Ois Changed format of documentation. * Feb-93 DST Daniel Stenberg. Started enhancing the `cpp' in February 1993: o Allows C++ comments. o Ported to ANSI C and to SAS/C 6.0. o Changed entire indent- and statement- layout previously used! o Changed hash sizing to any-number-hash-size. o Removed every global variable. o Made the cpp startable by creating a taglist and call the cpp. o Made a shared library of it, called FPP: "Frexx PreProcessor" o Changed the amiga version to use realloc(). o Removed all VMS defines. Who wants such? o Changed it from Public Domain to Freeware. o Moved out the include directory assigning to only be a part of the taglist and _no_ internal at all! o Made `fpp' accept input from a user specified function instead of always the stdin stream. This makes it possible to preprocess almost anything. An output routine is also implemented. o I have discovered that this program needs a lot of re-writing since a amiga shared library can't exit() as this `cpp' does on a fatal error... I made all necessary changes! Now most functions leave a return code telling success/failure (*MAJOR* re-writing! :-(). o The original 50-60 gotos in the source codes have been decreased to only a few. I *HATE* gotos in C programs! o Changed all cwarn(), cerror() cfatal(), ciwarn(), cierror() functions to the one and all function `cerror()', which will accept a variable number of arguments to build message from. o Moved all error/warning/fatal texts to domsg(). o All error output can be received in the error function (and have to in the amiga library version!). o Found out that my test.c caused 53 malloc() but only 25 free()... Inserted my own Malloc(), Free(), FreeAll() and Realloc() to always remove alloced memory when finishing the preprocessing (ok, malloc/free does that for us, but I don't want to use/depend on them). o Compiling into a shared library under AmigaDos still needs some changes. fopen() and other similar function in SAS/C use symbols I don't want it to... eg. _ProgramName and _XCEXIT! */ #include #include #include #include "cppdef.h" #include "cpp.h" #if defined(AMIGA) #include #if defined(SHARED) int _OSERR=0; char *_ProgramName="junk"; void __stdargs _XCEXIT(long a) { return; } #endif #endif FILE_LOCAL ReturnCode output(struct Global *, int); /* Output one character */ FILE_LOCAL void sharp(struct Global *); INLINE FILE_LOCAL ReturnCode cppmain(struct Global *); int PREFIX fppPreProcess(REG(a0) struct fppTag *tags) { intptr_t i=0; ReturnCode ret; /* cpp return code */ struct Global *global; global=(struct Global *)Malloc(sizeof(struct Global)); if(!global) return(FPP_OUT_OF_MEMORY); memset(global, 0, sizeof(struct Global)); global->infile=NULL; global->line=0; global->wrongline=0; global->errors=0; global->recursion=0; global->rec_recover=TRUE; global->instring=FALSE; global->inmacro=FALSE; global->workp=NULL; global->keepcomments = FALSE; /* Write out comments flag */ global->cflag = FALSE; /* -C option (keep comments) */ global->eflag = FALSE; /* -E option (never fail) */ global->nflag = 0; /* -N option (no predefines) */ global->wflag = FALSE; /* -W option (write #defines) */ global->ifstack[0]=TRUE; /* #if information */ global->ifptr = global->ifstack; global->incend = global->incdir; /* names defined at cpp start */ global->preset[0]="frexxcpp"; /* This is the Frexx cpp program */ #if defined( amiga ) global->preset[1]="amiga"; global->preset[2]="m68000"; global->preset[3]="amigados"; global->preset[4]= NULL; /* Must be last */ #elif defined( unix ) global->preset[1]="unix"; global->preset[2]= NULL; #elif defined( _MSC_VER ) global->preset[1]="\"PC\""; global->preset[2]="MS-DOS/Windows"; global->preset[3]= NULL; #endif /* Note: order is important */ global->magic[0] = "__LINE__"; global->magic[1] = "__FILE__"; global->magic[2] = "__FUNCTION__"; global->magic[3] = "__FUNC_LINE__"; global->magic[4] = NULL; /* Must be last */ global->funcline = 0; global->cplusplus=1; global->sharpfilename=NULL; global->parmp=NULL; global->nargs=0; global->macro=NULL; global->evalue=0; global->input=NULL; global->output=NULL; global->error=NULL; global->first_file=NULL; global->userdata=NULL; global->linelines=TRUE; global->warnillegalcpp = FALSE; global->outputLINE = TRUE; global->warnnoinclude = TRUE; #ifdef GDLPP global->showversion = FALSE; #else global->showversion = TRUE; #endif global->showincluded = FALSE; global->showspace = FALSE; global->nestcomments = FALSE; global->warnnestcomments = FALSE; global->outputfile = TRUE; global->included = 0; global->comment = FALSE; global->rightconcat = FALSE; global->work[0] = '\0'; global->initialfunc = NULL; memset(global->symtab, 0, SBSIZE * sizeof(DEFBUF *)); ret=initdefines(global); /* O.S. specific def's */ if(ret) return(ret); dooptions(global, tags); /* Command line -flags */ ret=addfile(global, stdin, global->work); /* "open" main input file */ global->out = global->outputfile; if(!ret) ret=cppmain(global); /* Process main file */ if ((i = (global->ifptr - global->ifstack)) != 0) { #if OLD_PREPROCESSOR cwarn(global, ERROR_IFDEF_DEPTH, i); #else cerror(global, ERROR_IFDEF_DEPTH, i); #endif } fflush(stdout); fclose(stdout); FreeAll(); /* free all unfreed memory! */ if (global->errors > 0 && !global->eflag) return(IO_ERROR); return(IO_NORMAL); /* No errors or -E option set */ } INLINE FILE_LOCAL ReturnCode cppmain(struct Global *global) { /* * Main process for cpp -- copies tokens from the current input * stream (main file, include file, or a macro) to the output * file. */ int c; /* Current character */ int counter; /* newlines and spaces */ ReturnCode ret; /* return code variable type */ long bracelevel = 0; long parenlevel = 0; long bracketlevel = 0; int fake = 0; #define MAX_FUNC_LENGTH 50 char tempfunc[MAX_FUNC_LENGTH + 1]; char tempfunc2[MAX_FUNC_LENGTH + 1]; char define = 0; /* probability of a function define phase in the program */ char prev = 0; /* previous type */ char go = 0; uint8_t include = 0; char initfunc = 0; /* Initialize for reading tokens */ global->tokenbsize = 50; global->tokenbuf = Getmem(global, global->tokenbsize + 1); if(!global->tokenbuf) return(FPP_OUT_OF_MEMORY); global->functionname = Getmem(global, global->tokenbsize + 1); if(!global->functionname) return(FPP_OUT_OF_MEMORY); global->functionname[0] = '\0'; if(global->showspace) { global->spacebuf = (char *)Getmem(global, MAX_SPACE_SIZE); if(!global->spacebuf) return(FPP_OUT_OF_MEMORY); } if(global->showversion) Error(global, VERSION_TEXT); /* * Explicitly output a #line at the start of cpp output so * that lint (etc.) knows the name of the original source * file. If we don't do this explicitly, we may get * the name of the first #include file instead. */ if(global->linelines) /* if #line lines are wanted! */ sharp(global); /* * This loop is started "from the top" at the beginning of each line * wrongline is set TRUE in many places if it is necessary to write * a #line record. (But we don't write them when expanding macros.) * * The counter variable has two different uses: at * the start of a line, it counts the number of blank lines that * have been skipped over. These are then either output via * #line records or by outputting explicit blank lines. * When expanding tokens within a line, the counter remembers * whether a blank/tab has been output. These are dropped * at the end of the line, and replaced by a single blank * within lines. */ include = global->included; while(include--) { openinclude(global, global->include[include], TRUE); } for (;;) { counter = 0; /* Count empty lines */ for (;;) { /* For each line, ... */ global->comment = FALSE; /* No comment yet! */ global->chpos = 0; /* Count whitespaces */ while (type[(c = get(global))] == SPA) /* Skip leading blanks */ if(global->showspace) { if(global->chposspacebuf[global->chpos++]=(char)c; } if (c == '\n') { /* If line's all blank, */ if(global->comment) { /* A comment was output! */ Putchar(global, '\n'); } else ++counter; /* Do nothing now */ } else if (c == '#') { /* Is 1st non-space '#' */ global->keepcomments = FALSE; /* Don't pass comments */ ret = control(global, &counter); /* Yes, do a #command */ if(ret) return(ret); global->keepcomments = (global->cflag && compiling); } else if (c == EOF_CHAR) /* At end of file? */ break; else if (!compiling) { /* #ifdef false? */ skipnl(global); /* Skip to newline */ counter++; /* Count it, too. */ } else { break; /* Actual token */ } } if (c == EOF_CHAR) /* Exit process at */ break; /* End of file */ /* * If the loop didn't terminate because of end of file, we * know there is a token to compile. First, clean up after * absorbing newlines. counter has the number we skipped. */ if(global->linelines) { /* if #line lines are wanted! */ if ((global->wrongline && global->infile->fp != NULL) || counter > 4) sharp(global); /* Output # line number */ else { /* If just a few, stuff */ while (--counter >= 0) /* them out ourselves */ Putchar(global, (int)'\n'); } } if(global->showspace) { /* Show all whitespaces! */ global->spacebuf[global->chpos] = '\0'; Putstring(global, global->spacebuf); } /* * Process each token on this line. */ unget(global); /* Reread the char. */ for (;;) { /* For the whole line, */ do { /* Token concat. loop */ for (global->chpos = counter = 0; type[(c = get(global))] == SPA;) { #if COMMENT_INVISIBLE if (c != COM_SEP) counter++; #else if(global->showspace && global->chpos < MAX_SPACE_SIZE-1) { global->spacebuf[global->chpos++]=(char)c; } counter++; /* Skip over blanks */ #endif } if (c == EOF_CHAR || c == '\n') break; /* Exit line loop */ else if (counter > 0) { /* If we got any spaces */ if(!global->showspace) /* We don't output all spaces */ Putchar(global, (int)' ');/* Output one space */ else { global->spacebuf[global->chpos] = '\0'; Putstring(global, global->spacebuf); /* Output all whitespaces */ } } if((ret=macroid(global, &c))) /* Grab the token */ return(ret); } while (type[c] == LET && catenate(global, &ret) && !ret); if(ret) /* If the loop was broken because of a fatal error! */ return(ret); if (c == EOF_CHAR || c == '\n') /* From macro exp error */ break; /* Exit line loop */ go++; switch (type[c]) { case LET: go =0; /* Quite ordinary token */ Putstring(global, global->tokenbuf); if(!define) { /* Copy the name */ strncpy(tempfunc, global->tokenbuf, MAX_FUNC_LENGTH); tempfunc[MAX_FUNC_LENGTH]=0; } /* fputs(global->tokenbuf, stdout); */ break; case DIG: /* Output a number */ case DOT: /* Dot may begin floats */ go = 0; ret=scannumber(global, c, (ReturnCode(*)(struct Global *, int))output); if(ret) return(ret); break; case QUO: /* char or string const */ go = 0; /* Copy it to output */ if(!global->webmode) { ret=scanstring(global, c, (ReturnCode(*)(struct Global *, int))output); if(ret) return(ret); break; } /* FALLTHROUGH */ default: /* Some other character */ define++; switch(c) { case '{': if(! bracelevel++ && define > 2) { /* * This is a starting brace. If there is a probability of a * function defining, we copy the `tempfunc' function name to * `global->functionname'. */ strcpy(global->functionname, tempfunc2); global->funcline = global->line; if(global->outputfunctions) { /* * Output the discovered function name to stderr! */ Error(global, "#> Function defined at line %d: %s <#\n", global->line, global->functionname); } if(global->initialfunc) { int a; for(a=0; aexcluded; a++) { /* check for excluded functions */ if(!strcmp(global->functionname, global->excludedinit[a])) break; } if(a==global->excluded) { expstuff(global, "__brace__", "{"); expstuff(global, "__init_func__", global->initialfunc); initfunc = TRUE; } } } break; case '}': go = 0; if( (--bracelevel == initfunc) && strcmp(global->infile->filename, "__init_func__") ) { /* we just stepped out of the function! */ global->functionname[0] = '\0'; global->funcline = 0; define = 1; if(initfunc) { Putchar(global, '}'); bracelevel--; initfunc=0; } } fake = 0; break; case ';': case ',': if(go == 2) { define = 1; fake = 0; go--; break; } break; case '(': if(! parenlevel++ && !bracelevel) { if(go == 2) { /* foobar(text) -> "(" is found. This can't be a function */ go--; define = 1; break; } if( define < 2 && prev == LET) { /* This is the first parenthesis on the ground brace level, and we did previously not have a probable function name */ strncpy(tempfunc2, global->tokenbuf, MAX_FUNC_LENGTH); tempfunc2[MAX_FUNC_LENGTH]=0; define++; } else { /* we have a fake start */ fake++; } } break; case ')': if(! --parenlevel && !bracelevel && define>1 && !fake) { /* * The starting parentheses level and * the starting brace level. * This might be the start of a function defining coming * up! */ define++; /* increase probability */ fake = 0; go = 1; } break; case '[': bracketlevel++; break; case ']': bracketlevel--; break; } define--; /* decrease function probability */ Putchar(global, c); /* Just output it */ break; } /* Switch ends */ prev = type[c]; } /* Line for loop */ if (c == '\n') { /* Compiling at EOL? */ Putchar(global, '\n'); /* Output newline, if */ if (global->infile->fp == NULL) /* Expanding a macro, */ global->wrongline = TRUE; /* Output # line later */ } } /* Continue until EOF */ if(global->showbalance) { if(bracketlevel) { cwarn(global, WARN_BRACKET_DEPTH, bracketlevel); } if(parenlevel) { cwarn(global, WARN_PAREN_DEPTH, parenlevel); } if(bracelevel) { cwarn(global, WARN_BRACE_DEPTH, bracelevel); } } if (global->wflag) { global->out = TRUE; /* enable output */ outdefines(global); /* Write out #defines */ } return(FPP_OK); } FILE_LOCAL ReturnCode output(struct Global *global, int c) { /* * Output one character to stdout -- output() is passed as an * argument to scanstring() */ #if COMMENT_INVISIBLE if (c != TOK_SEP && c != COM_SEP) #else if (c != TOK_SEP) #endif Putchar(global, c); return(FPP_OK); } void Putchar(struct Global *global, int c) { /* * Output one character to stdout or to output function! */ if(!global->out) return; #if defined(unix) if(global->output) global->output(c, global->userdata); else putchar(c); #else /* amiga */ global->output(c, global->userdata); #endif } void Putstring(struct Global *global, char *string) { /* * Output a string! One letter at a time to the Putchar routine! */ if(!string) return; while(*string) Putchar(global, *string++); } void Putint(struct Global *global, int number) { /* * Output the number as a string. */ char buffer[16]; /* an integer can't be that big! */ char *point=buffer; sprintf(buffer, "%d", number); while(*point) Putchar(global, *point++); } FILE_LOCAL void sharp(struct Global *global) { /* * Output a line number line. */ char *name; if (global->keepcomments) /* Make sure # comes on */ Putchar(global, '\n'); /* a fresh, new line. */ /* printf("#%s %d", LINE_PREFIX, global->line); */ Putchar(global, '#'); if(global->outputLINE) Putstring(global, LINE_PREFIX); Putchar(global, ' '); Putint(global, global->line); if (global->infile->fp != NULL) { name = (global->infile->progname != NULL) ? global->infile->progname : global->infile->filename; if (global->sharpfilename == NULL || (global->sharpfilename != NULL && !streq(name, global->sharpfilename))) { if (global->sharpfilename != NULL) Freemem(global->sharpfilename); global->sharpfilename = savestring(global, name); /* printf(" \"%s\"", name); */ Putstring(global, " \""); Putstring(global, name); Putchar(global, '\"'); } } Putchar(global, '\n'); global->wrongline = FALSE; return; } grcompiler-5.2.1/preprocessor/cpp2.c000066400000000000000000000612151411153030700174200ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: cpp2.c,v 1.2 2004/10/25 19:08:41 danglassey Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cpp2.c,v $ * $Revision: 1.2 $ * $Date: 2004/10/25 19:08:41 $ * $Author: danglassey $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cpp2.c,v $ * Revision 1.2 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.5 1994/01/24 09:32:54 start * Fixed AmigaDOS include file routine. * * Revision 1.4 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.4 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.3 1993/11/29 14:00:32 start * new * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ /* * C P P 2 . C * * Process #control lines * * Edit history * 13-Nov-84 MM Split from cpp1.c * 21-Oct-85 RMS Do not turn on `instring' while reading #include arg. * Rename `token' to `tokenbuf'. * Flush tabs at end of #include line, like spaces. * 14-Mar-86 FNF Incorporate macro based C debugging package. * Port to Commodore AMIGA. * 25-May-86 FNF Change handling of fully qualified include file * pathnames (like "/usr/include/stdio.h" for unix, * or "df0:include/stdio.h" for the Amiga) to be * used verbatum in the first open attempt. * 20-Aug-88 Ois Added #error. Passed unrecognized # commands. * Added \n when those lines are passed. */ #include #include #include #include "cppdef.h" #include "cpp.h" #ifdef _AMIGA #include #endif FILE_LOCAL void dump_line(struct Global *, int *); FILE_LOCAL ReturnCode doif(struct Global *, int); INLINE FILE_LOCAL ReturnCode doinclude(struct Global *); INLINE FILE_LOCAL int hasdirectory(char *, char *); /* * Generate (by hand-inspection) a set of unique values for each control * operator. Note that this is not guaranteed to work for non-Ascii * machines. CPP won't compile if there are hash conflicts. */ #define L_assert ('a' + ('s' << 1)) #define L_define ('d' + ('f' << 1)) #define L_elif ('e' + ('i' << 1)) #define L_else ('e' + ('s' << 1)) #define L_endif ('e' + ('d' << 1)) #define L_error ('e' + ('r' << 1)) #define L_if ('i' + (EOS << 1)) #define L_ifdef ('i' + ('d' << 1)) #define L_ifndef ('i' + ('n' << 1)) #define L_include ('i' + ('c' << 1)) #define L_line ('l' + ('n' << 1)) #define L_nogood (EOS + (EOS << 1)) /* To catch #i */ #define L_pragma ('p' + ('a' << 1)) #define L_undef ('u' + ('d' << 1)) ReturnCode control( struct Global *global, int *counter ) /* Pending newline counter */ { /* * Process #control lines. Simple commands are processed inline, * while complex commands have their own subroutines. * * The counter is used to force out a newline before #line, and * #pragma commands. This prevents these commands from ending up at * the end of the previous line if cpp is invoked with the -C option. */ int c; char *tp; int hash; char *ep; ReturnCode ret; c = skipws( global ); if( c == '\n' || c == EOF_CHAR ) { (*counter)++; return(FPP_OK); } if( !isdigit(c) ) scanid( global, c ); /* Get #word to tokenbuf */ else { unget( global ); /* Hack -- allow #123 as a */ strcpy( global->tokenbuf, "line" ); /* synonym for #line 123 */ } hash = (global->tokenbuf[1] == EOS) ? L_nogood : (global->tokenbuf[0] + (global->tokenbuf[2] << 1)); switch( hash ) { case L_assert: tp = "assert"; break; case L_define: tp = "define"; break; case L_elif: tp = "elif"; break; case L_else: tp = "else"; break; case L_endif: tp = "endif"; break; case L_error: tp = "error"; break; case L_if: tp = "if"; break; case L_ifdef: tp = "ifdef"; break; case L_ifndef: tp = "ifndef"; break; case L_include: tp = "include"; break; case L_line: tp = "line"; break; case L_pragma: tp = "pragma"; break; case L_undef: tp = "undef"; break; default: hash = L_nogood; case L_nogood: tp = ""; break; } if( !streq( tp, global->tokenbuf ) ) hash = L_nogood; /* * hash is set to a unique value corresponding to the * control keyword (or L_nogood if we think it's nonsense). */ if( global->infile->fp == NULL ) cwarn( global, WARN_CONTROL_LINE_IN_MACRO, global->tokenbuf ); if( !compiling ) { /* Not compiling now */ switch( hash ) { case L_if: /* These can't turn */ case L_ifdef: /* compilation on, but */ case L_ifndef: /* we must nest #if's */ if( ++global->ifptr >= &global->ifstack[BLK_NEST] ) { cfatal( global, FATAL_TOO_MANY_NESTINGS, global->tokenbuf ); return( FPP_TOO_MANY_NESTED_STATEMENTS ); } *global->ifptr = 0; /* !WAS_COMPILING */ case L_line: /* Many */ /* * Are pragma's always processed? */ case L_pragma: /* options */ case L_include: /* are uninteresting */ case L_define: /* if we */ case L_undef: /* aren't */ case L_assert: /* compiling. */ case L_error: dump_line( global, counter ); /* Ignore rest of line */ return(FPP_OK); } } /* * Make sure that #line and #pragma are output on a fresh line. */ if( *counter > 0 && (hash == L_line || hash == L_pragma) ) { Putchar( global, '\n' ); (*counter)--; } switch( hash ) { case L_line: /* * Parse the line to update the line number and "progname" * field and line number for the next input line. * Set wrongline to force it out later. */ c = skipws( global ); global->workp = global->work; /* Save name in work */ while( c != '\n' && c != EOF_CHAR ) { if( (ret = save( global, c )) ) return(ret); c = get( global ); } unget( global ); if( (ret = save( global, EOS )) ) return(ret); /* * Split #line argument into and * We subtract 1 as we want the number of the next line. */ global->line = atoi(global->work) - 1; /* Reset line number */ for( tp = global->work; isdigit(*tp) || type[(uint8_t)*tp] == SPA; tp++) ; /* Skip over digits */ if( *tp != EOS ) { /* Got a filename, so: */ if( *tp == '"' && (ep = strrchr(tp + 1, '"')) != NULL ) { tp++; /* Skip over left quote */ *ep = EOS; /* And ignore right one */ } if( global->infile->progname != NULL ) /* Give up the old name if it's allocated. */ Freemem( global->infile->progname ); global->infile->progname = savestring( global, tp ); } global->wrongline = TRUE; /* Force output later */ break; case L_include: ret = doinclude( global ); if( ret ) return(ret); break; case L_define: ret = dodefine( global ); if( ret ) return(ret); break; case L_undef: doundef( global ); break; case L_else: if( global->ifptr == &global->ifstack[0] ) { cerror( global, ERROR_STRING_MUST_BE_IF, global->tokenbuf ); dump_line( global, counter ); return( FPP_OK ); } else if( (*global->ifptr & ELSE_SEEN) != 0 ) { cerror( global, ERROR_STRING_MAY_NOT_FOLLOW_ELSE, global->tokenbuf ); dump_line( global, counter ); return( FPP_OK ); } *global->ifptr |= ELSE_SEEN; if( (*global->ifptr & WAS_COMPILING) != 0 ) { if( compiling || (*global->ifptr & TRUE_SEEN) != 0 ) compiling = FALSE; else { compiling = TRUE; } } break; case L_elif: if( global->ifptr == &global->ifstack[0] ) { cerror( global, ERROR_STRING_MUST_BE_IF, global->tokenbuf ); dump_line( global, counter ); return( FPP_OK ); } else if( (*global->ifptr & ELSE_SEEN) != 0 ) { cerror( global, ERROR_STRING_MAY_NOT_FOLLOW_ELSE, global->tokenbuf ); dump_line( global, counter ); return( FPP_OK ); } if( (*global->ifptr & (WAS_COMPILING | TRUE_SEEN)) != WAS_COMPILING ) { compiling = FALSE; /* Done compiling stuff */ dump_line( global, counter ); /* Skip this clause */ return( FPP_OK ); } ret = doif( global, L_if ); if( ret ) return(ret); break; case L_error: cerror(global, ERROR_ERROR); break; case L_if: case L_ifdef: case L_ifndef: if( ++global->ifptr < &global->ifstack[BLK_NEST] ) { *global->ifptr = WAS_COMPILING; ret = doif( global, hash ); if( ret ) return(ret); break; } cfatal( global, FATAL_TOO_MANY_NESTINGS, global->tokenbuf ); return( FPP_TOO_MANY_NESTED_STATEMENTS ); case L_endif: if( global->ifptr == &global->ifstack[0] ) { cerror( global, ERROR_STRING_MUST_BE_IF, global->tokenbuf ); dump_line( global, counter ); return(FPP_OK); } if( !compiling && (*global->ifptr & WAS_COMPILING) != 0 ) global->wrongline = TRUE; compiling = ((*global->ifptr & WAS_COMPILING) != 0); --global->ifptr; break; case L_assert: { int result; ret = eval( global, &result ); if(ret) return(ret); if( result == 0 ) cerror( global, ERROR_PREPROC_FAILURE ); } break; case L_pragma: /* * #pragma is provided to pass "options" to later * passes of the compiler. cpp doesn't have any yet. */ Putstring( global, "#pragma " ); while( (c = get( global ) ) != '\n' && c != EOF_CHAR ) Putchar( global, c ); unget( global ); Putchar( global, '\n' ); break; default: /* * Undefined #control keyword. * Note: the correct behavior may be to warn and * pass the line to a subsequent compiler pass. * This would allow #asm or similar extensions. */ if( global->warnillegalcpp ) cwarn( global, WARN_ILLEGAL_COMMAND, global->tokenbuf ); Putchar( global, '#' ); Putstring( global, global->tokenbuf ); Putchar( global, ' ' ); while( (c = get( global ) ) != '\n' && c != EOF_CHAR ) Putchar( global, c ); unget( global ); Putchar( global, '\n' ); break; } if( hash != L_include ) { #if OLD_PREPROCESSOR /* * Ignore the rest of the #control line so you can write * #if foo * #endif foo */ dump_line( global, counter ); /* Take common exit */ return( FPP_OK ); #else if( skipws( global ) != '\n' ) { cwarn( global, WARN_UNEXPECTED_TEXT_IGNORED ); skipnl( global ); } #endif } (*counter)++; return( FPP_OK ); } FILE_LOCAL void dump_line(struct Global *global, int *counter) { skipnl( global ); /* Ignore rest of line */ (*counter)++; } FILE_LOCAL ReturnCode doif(struct Global *global, int hash) { /* * Process an #if, #ifdef, or #ifndef. The latter two are straightforward, * while #if needs a subroutine of its own to evaluate the expression. * * doif() is called only if compiling is TRUE. If false, compilation * is always supressed, so we don't need to evaluate anything. This * supresses unnecessary warnings. */ int c; int found; ReturnCode ret; if( (c = skipws( global ) ) == '\n' || c == EOF_CHAR ) { unget( global ); cerror( global, ERROR_MISSING_ARGUMENT ); #if !OLD_PREPROCESSOR skipnl( global ); /* Prevent an extra */ unget( global ); /* Error message */ #endif return(FPP_OK); } if( hash == L_if ) { unget( global ); ret = eval( global, &found ); if( ret ) return( ret ); found = (found != 0); /* Evaluate expr, != 0 is TRUE */ hash = L_ifdef; /* #if is now like #ifdef */ } else { if( type[c] != LET ) { /* Next non-blank isn't letter */ /* ... is an error */ cerror( global, ERROR_MISSING_ARGUMENT ); #if !OLD_PREPROCESSOR skipnl( global ); /* Prevent an extra */ unget( global ); /* Error message */ #endif return(FPP_OK); } found = ( lookid( global, c ) != NULL ); /* Look for it in symbol table */ } if( found == (hash == L_ifdef) ) { compiling = TRUE; *global->ifptr |= TRUE_SEEN; } else compiling = FALSE; return(FPP_OK); } INLINE FILE_LOCAL ReturnCode doinclude( struct Global *global ) { /* * Process the #include control line. * There are three variations: * * #include "file" search somewhere relative to the * current source file, if not found, * treat as #include . * * #include Search in an implementation-dependent * list of places. * * #include token Expand the token, it must be one of * "file" or , process as such. * * Note: the November 12 draft forbids '>' in the #include format. * This restriction is unnecessary and not implemented. */ int c; int delim; ReturnCode ret; delim = skipws( global ); if( (ret = macroid( global, &delim )) ) return(ret); if( delim != '<' && delim != '"' ) { cerror( global, ERROR_INCLUDE_SYNTAX ); return( FPP_OK ); } if( delim == '<' ) delim = '>'; global->workp = global->work; while( (c = get(global)) != '\n' && c != EOF_CHAR ) if( (ret = save( global, c )) ) /* Put it away. */ return( ret ); unget( global ); /* Force nl after include */ /* * The draft is unclear if the following should be done. */ while( --global->workp >= global->work && (*global->workp == ' ' || *global->workp == '\t') ) ; /* Trim blanks from filename */ if( *global->workp != delim ) { cerror( global, ERROR_INCLUDE_SYNTAX ); return(FPP_OK); } *global->workp = EOS; /* Terminate filename */ ret = openinclude( global, global->work, (delim == '"') ); if( ret && global->warnnoinclude ) { /* * Warn if #include file isn't there. */ cwarn( global, WARN_CANNOT_OPEN_INCLUDE, global->work ); } return( FPP_OK ); } #ifdef _AMIGA ReturnCode MultiAssignLoad( struct Global *global, char *incptr, char *filename, char *tmpname ); #endif ReturnCode openinclude( struct Global *global, char *filename, /* Input file name */ int searchlocal ) /* TRUE if #include "file" */ { /* * Actually open an include file. This routine is only called from * doinclude() above, but was written as a separate subroutine for * programmer convenience. It searches the list of directories * and actually opens the file, linking it into the list of * active files. Returns ReturnCode. No error message is printed. */ char **incptr; char tmpname[NWORK]; /* Filename work area */ size_t len; /* ReturnCode ret; *//*NOT USED*/ #if HOST == SYS_AMIGADOS if( strchr (filename, ':') != NULL ) { if( ! openfile( global, filename ) ) return(FPP_OK); } #else if( filename[0] == '/' ) { if( ! openfile( global, filename ) ) return(FPP_OK); } #endif if( searchlocal ) { /* * Look in local directory first. * Try to open filename relative to the directory of the current * source file (as opposed to the current directory). (ARF, SCK). * Note that the fully qualified pathname is always built by * discarding the last pathname component of the source file * name then tacking on the #include argument. */ if( hasdirectory( global->infile->filename, tmpname ) ) strcat( tmpname, filename ); else strcpy( tmpname, filename ); if( ! openfile( global, tmpname ) ) return(FPP_OK); } /* * Look in any directories specified by -I command line * arguments, then in the builtin search list. */ for( incptr = global->incdir; incptr < global->incend; incptr++ ) { len = strlen(*incptr); if( len + strlen(filename) >= sizeof(tmpname) ) { cfatal( global, FATAL_FILENAME_BUFFER_OVERFLOW ); return( FPP_FILENAME_BUFFER_OVERFLOW ); } else { #if HOST == SYS_AMIGADOS if( (*incptr)[len-1] != '/' && (*incptr)[len-1] != ':' ) sprintf( tmpname, "%s/%s", *incptr, filename ); #else if( (*incptr)[len-1] != '/' ) sprintf( tmpname, "%s/%s", *incptr, filename ); #endif else sprintf( tmpname, "%s%s", *incptr, filename ); #if HOST == SYS_AMIGADOS // // amp July 9, 1997 // // OK, hack in multiassign support for the buitin // search directories... // if( (*incptr)[len-1] == ':' ) { if( ! MultiAssignLoad( global, *incptr, filename, tmpname ) ) return(FPP_OK); } else #endif if( !openfile( global, tmpname ) ) return(FPP_OK); } } return( FPP_NO_INCLUDE ); } INLINE FILE_LOCAL int hasdirectory( char *source, /* Directory to examine */ char *result ) /* Put directory stuff here */ { /* * If a device or directory is found in the source filename string, the * node/device/directory part of the string is copied to result and * hasdirectory returns TRUE. Else, nothing is copied and it returns FALSE. */ char *tp2; #if HOST == SYS_AMIGADOS char *tp1; if( (tp1 = strrchr( source, ':' ) ) == NULL ) tp1 = source; if( (tp2 = strrchr( tp1, '/' ) ) == NULL ) tp2 = tp1; if( tp2 == source ) return (FALSE); #else if( (tp2 = strrchr( source, '/' ) ) == NULL ) return(FALSE); #endif strncpy( result, source, tp2 - source + 1 ); result[tp2 - source + 1] = EOS; return( TRUE ); } #ifdef _AMIGA // // amp July 9, 1997 // // Use the OS Luke... // // We do the sneaky version and let the OS do all // the hard work so we don't have to mess around // a lot ;) // ReturnCode MultiAssignLoad( struct Global *global, char *incptr, char *filename, char *tmpname ) { /* MultiAssignLoad */ struct MsgPort *FSTask; struct DevProc *DevProc = NULL; LONG RtnCode = FPP_NO_INCLUDE; FSTask = GetFileSysTask(); do { // // This should not bring up a requester. // check to see if cpp does in fact tweek // the process WindowPtr. // DevProc = GetDeviceProc( incptr, DevProc ); if( DevProc ) { SetFileSysTask( DevProc->dvp_Port ); // // Normally we would pass the lock and filename // to the Load() routine, which would CD to the // directory and Open(filename), but in order to // satisfy the exisiting openfile() function, we // bite the bullet and build the complete pathspec // rather than add the standard Load() routine. // if( NameFromLock( DevProc->dvp_Lock, tmpname, NWORK ) ) { AddPart( tmpname, filename, NWORK ); RtnCode = openfile( global, tmpname ); if( ! RtnCode ) break; } } } while ( RtnCode && DevProc && (DevProc->dvp_Flags & DVPF_ASSIGN) && IoErr() == ERROR_OBJECT_NOT_FOUND); /* repeat if multi-assign */ SetFileSysTask( FSTask ); if( DevProc ) FreeDeviceProc( DevProc ); return RtnCode; } /* MultiAssignLoad */ #endif //_AMIGA grcompiler-5.2.1/preprocessor/cpp3.c000066400000000000000000000305611411153030700174210ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: cpp3.c,v 1.2 2004/10/25 19:08:41 danglassey Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cpp3.c,v $ * $Revision: 1.2 $ * $Date: 2004/10/25 19:08:41 $ * $Author: danglassey $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cpp3.c,v $ * Revision 1.2 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.6 1994/06/02 08:50:08 start * Added the new command line options * * Revision 1.5 1994/01/24 09:33:15 start * Added the FPPTAG_RIGHTCONCAT tag. * * Revision 1.4 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.4 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.3 1993/11/29 14:00:32 start * new * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ /* * C P P 3 . C * * File open and command line options * * Edit history * 13-Nov-84 MM Split from cpp1.c * 21-Oct-85 rms Make -g command arg not cause an error. * 14-Mar-86 FNF Incorporate macro based C debugging package. * Port to the Commodore AMIGA. * 20-Aug-88 Ois Added __TIME__, and changed __DATE__ to standard. */ #include #include #include /*OIS*0.92*/ #include "cppdef.h" #include "cpp.h" ReturnCode openfile(struct Global *global, char *filename) { /* * Open a file, add it to the linked list of open files. * This is called only from openfile() in cpp2.c. */ FILE *fp; ReturnCode ret; if ((fp = fopen(filename, "r")) == NULL) ret=FPP_OPEN_ERROR; else ret=addfile(global, fp, filename); if(!ret && global->showincluded) { /* no error occured! */ Error(global, "cpp: included \""); Error(global, filename); Error(global, "\"\n"); } return(ret); } ReturnCode addfile(struct Global *global, FILE *fp, /* Open file pointer */ char *filename) /* Name of the file */ { /* * Initialize tables for this open file. This is called from openfile() * above (for #include files), and from the entry to cpp to open the main * input file. It calls a common routine, getfile() to build the FILEINFO * structure which is used to read characters. (getfile() is also called * to setup a macro replacement.) */ FILEINFO *file; ReturnCode ret; ret = getfile(global, NBUFF, filename, &file); if(ret) return(ret); file->fp = fp; /* Better remember FILE * */ file->buffer[0] = EOS; /* Initialize for first read */ global->line = 1; /* Working on line 1 now */ global->wrongline = TRUE; /* Force out initial #line */ return(FPP_OK); } int dooptions(struct Global *global, struct fppTag *tags) { /* * dooptions is called to process command line arguments (-Detc). * It is called only at cpp startup. */ DEFBUF *dp; char end=FALSE; /* end of taglist */ while(tags && !end) { switch(tags->tag) { case FPPTAG_END: end=TRUE; break; case FPPTAG_INITFUNC: global->initialfunc = (char *) tags->data; break; case FPPTAG_DISPLAYFUNCTIONS: global->outputfunctions = tags->data?1:0; break; case FPPTAG_RIGHTCONCAT: global->rightconcat = tags->data?1:0; break; case FPPTAG_OUTPUTMAIN: global->outputfile = tags->data?1:0; break; case FPPTAG_NESTED_COMMENTS: global->nestcomments = tags->data?1:0; break; case FPPTAG_WARNMISSINCLUDE: global->warnnoinclude = tags->data?1:0; break; case FPPTAG_WARN_NESTED_COMMENTS: global->warnnestcomments = tags->data?1:0; break; case FPPTAG_OUTPUTSPACE: global->showspace = tags->data?1:0; break; case FPPTAG_OUTPUTBALANCE: global->showbalance = tags->data?1:0; break; case FPPTAG_OUTPUTINCLUDES: global->showincluded = tags->data?1:0; break; case FPPTAG_IGNOREVERSION: #ifdef GDLPP global->showversion = tags->data?0:1; #else global->showversion = tags->data?1:0; #endif break; case FPPTAG_WARNILLEGALCPP: global->warnillegalcpp = tags->data?1:0; break; case FPPTAG_OUTPUTLINE: global->outputLINE = tags->data?1:0; break; case FPPTAG_KEEPCOMMENTS: if(tags->data) { global->cflag = TRUE; global->keepcomments = TRUE; } break; case FPPTAG_DEFINE: /* * If the option is just "-Dfoo", make it -Dfoo=1 */ { char *symbol=(char *)tags->data; char *text=symbol; while (*text != EOS && *text != '=') text++; if (*text == EOS) text = "1"; else *text++ = EOS; /* * Now, save the word and its definition. */ dp = defendel(global, symbol, FALSE); if(!dp) return(FPP_OUT_OF_MEMORY); dp->repl = savestring(global, text); dp->nargs = DEF_NOARGS; } break; case FPPTAG_IGNORE_NONFATAL: global->eflag = TRUE; break; case FPPTAG_INCLUDE_DIR: if (global->incend >= &global->incdir[NINCLUDE]) { cfatal(global, FATAL_TOO_MANY_INCLUDE_DIRS); return(FPP_TOO_MANY_INCLUDE_DIRS); } *global->incend++ = (char *)tags->data; break; case FPPTAG_INCLUDE_FILE: case FPPTAG_INCLUDE_MACRO_FILE: if (global->included >= NINCLUDE) { cfatal(global, FATAL_TOO_MANY_INCLUDE_FILES); return(FPP_TOO_MANY_INCLUDE_FILES); } global->include[global->included] = (char *)tags->data; global->includeshow[global->included] = (tags->tag == FPPTAG_INCLUDE_FILE); global->included++; break; case FPPTAG_BUILTINS: global->nflag|=(tags->data?NFLAG_BUILTIN:0); break; case FPPTAG_PREDEFINES: global->nflag|=(tags->data?NFLAG_PREDEFINE:0); break; case FPPTAG_IGNORE_CPLUSPLUS: global->cplusplus=!tags->data; break; case FPPTAG_SIZEOF_TABLE: { SIZES *sizp; /* For -S */ int size; /* For -S */ int isdatum; /* FALSE for -S* */ int endtest; /* For -S */ char *text=(char *)tags->data; sizp = size_table; if ( (isdatum = (*text != '*')) ) /* If it's just -S, */ endtest = T_FPTR; /* Stop here */ else { /* But if it's -S* */ text++; /* Step over '*' */ endtest = 0; /* Stop at end marker */ } while (sizp->bits != endtest && *text != EOS) { if (!isdigit(*text)) { /* Skip to next digit */ text++; continue; } size = 0; /* Compile the value */ while (isdigit(*text)) { size *= 10; size += (*text++ - '0'); } if (isdatum) sizp->size = size; /* Datum size */ else sizp->psize = size; /* Pointer size */ sizp++; } if (sizp->bits != endtest) cwarn(global, WARN_TOO_FEW_VALUES_TO_SIZEOF, NULL); else if (*text != EOS) cwarn(global, WARN_TOO_MANY_VALUES_TO_SIZEOF, NULL); } break; case FPPTAG_UNDEFINE: if (defendel(global, (char *)tags->data, TRUE) == NULL) cwarn(global, WARN_NOT_DEFINED, tags->data); break; case FPPTAG_OUTPUT_DEFINES: global->wflag++; break; case FPPTAG_INPUT_NAME: strcpy(global->work, tags->data); /* Remember input filename */ global->first_file=tags->data; break; case FPPTAG_INPUT: global->input=(char *(*)(char *, int, void *))tags->data; break; case FPPTAG_OUTPUT: global->output=(void (*)(int, void *))tags->data; break; case FPPTAG_ERROR: global->error=(void (*)(void *, char *, va_list))tags->data; break; case FPPTAG_USERDATA: global->userdata=tags->data; break; case FPPTAG_LINE: global->linelines= tags->data?1:0; break; case FPPTAG_EXCLFUNC: global->excludedinit[ global->excluded++ ] = (char *)tags->data; break; case FPPTAG_WEBMODE: global->webmode=(tags->data?1:0); break; default: cwarn(global, WARN_INTERNAL_ERROR, NULL); break; } tags++; } return(0); } ReturnCode initdefines(struct Global *global) { /* * Initialize the built-in #define's. There are two flavors: * #define decus 1 (static definitions) * #define __FILE__ ?? (dynamic, evaluated by magic) * Called only on cpp startup. * * Note: the built-in static definitions are supressed by the -N option. * __LINE__, __FILE__, __TIME__ and __DATE__ are always present. */ char **pp; DEFBUF *dp; int i; #if OK_DATE struct tm* tm; char* tp; time_t tvec; #endif static char months[12][4] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; /* * Predefine the built-in symbols. Allow the * implementor to pre-define a symbol as "" to * eliminate it. */ if (!(global->nflag & NFLAG_BUILTIN)) { for (pp = global->preset; *pp != NULL; pp++) { if (*pp[0] != EOS) { dp = defendel(global, *pp, FALSE); if(!dp) return(FPP_OUT_OF_MEMORY); dp->repl = savestring(global, "1"); dp->nargs = DEF_NOARGS; } } } /* * The magic pre-defines (__FILE__ and __LINE__ are * initialized with negative argument counts. expand() * notices this and calls the appropriate routine. * DEF_NOARGS is one greater than the first "magic" definition. */ if (!(global->nflag & NFLAG_PREDEFINE)) { for (pp = global->magic, i = DEF_NOARGS; *pp != NULL; pp++) { dp = defendel(global, *pp, FALSE); if(!dp) return(FPP_OUT_OF_MEMORY); dp->nargs = --i; } #if OK_DATE /* * Define __DATE__ as today's date. */ dp = defendel(global, "__DATE__", FALSE); tp = Getmem(global, 14); if(!tp || !dp) return(FPP_OUT_OF_MEMORY); dp->repl = tp; dp->nargs = DEF_NOARGS; time(&tvec); tm = localtime(&tvec); sprintf(tp, "\"%3s %2d %4d\"", /* "Aug 20 1988" */ months[tm->tm_mon], tm->tm_mday, tm->tm_year + 1900); /* * Define __TIME__ as this moment's time. */ dp = defendel(global, "__TIME__", FALSE); tp = Getmem(global, 11); if(!tp || !dp) return(FPP_OUT_OF_MEMORY); dp->repl = tp; dp->nargs = DEF_NOARGS; sprintf(tp, "\"%2d:%02d:%02d\"", /* "20:42:31" */ tm->tm_hour, tm->tm_min, tm->tm_sec); #endif } return(FPP_OK); } void deldefines(struct Global *global) { /* * Delete the built-in #define's. */ char **pp; int i; /* * Delete the built-in symbols, unless -WW. */ if (global->wflag < 2) { for (pp = global->preset; *pp != NULL; pp++) { defendel(global, *pp, TRUE); } } /* * The magic pre-defines __FILE__ and __LINE__ */ for (pp = global->magic, i = DEF_NOARGS; *pp != NULL; pp++) { defendel(global, *pp, TRUE); } #if OK_DATE /* * Undefine __DATE__. */ defendel(global, "__DATE__", TRUE); /* * Undefine __TIME__. */ defendel(global, "__TIME__", TRUE); #endif return; } grcompiler-5.2.1/preprocessor/cpp4.c000066400000000000000000000540551411153030700174260ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: cpp4.c,v 1.2 2004/10/25 19:08:41 danglassey Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cpp4.c,v $ * $Revision: 1.2 $ * $Date: 2004/10/25 19:08:41 $ * $Author: danglassey $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cpp4.c,v $ * Revision 1.2 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.3 1994/06/02 08:50:52 start * Changed a few things to make the initial function routine to run * * Revision 1.2 1994/01/24 09:34:03 start * Made a bunch of functions FILE_LOCAL and INLINE. * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ /* * C P P 4 . C * M a c r o D e f i n i t i o n s * * Edit History * 31-Aug-84 MM USENET net.sources release * 04-Oct-84 MM __LINE__ and __FILE__ must call ungetstring() * so they work correctly with token concatenation. * Added string formal recognition. * 25-Oct-84 MM "Short-circuit" evaluate #if's so that we * don't print unnecessary error messages for * #if !defined(FOO) && FOO != 0 && 10 / FOO ... * 31-Oct-84 ado/MM Added token concatenation * 6-Nov-84 MM Split off eval stuff * 21-Oct-85 RMS Rename `token' to `tokenbuf'. * In doundef, don't complain if arg already not defined. * 14-Mar-86 FNF Incorporate macro based C debugging package. * Port to Commodore AMIGA. * 21-Aug-88 Ois Changed concatenation operator to ##. Changed hand- * ling of tokens following ##. Added new meaning of #. */ #include #include #include #include "cppdef.h" #include "cpp.h" INLINE FILE_LOCAL ReturnCode checkparm(struct Global *, int, DEFBUF *, int); INLINE FILE_LOCAL ReturnCode stparmscan(struct Global *, int); INLINE FILE_LOCAL ReturnCode textput(struct Global *, char *); FILE_LOCAL ReturnCode charput(struct Global *, int); INLINE FILE_LOCAL ReturnCode expcollect(struct Global *); INLINE FILE_LOCAL char *doquoting(char *, char *); ReturnCode dodefine(struct Global *global) { /* * Called from control when a #define is scanned. This module * parses formal parameters and the replacement string. When * the formal parameter name is encountered in the replacement * string, it is replaced by a character in the range 128 to * 128+NPARAM (this allows up to 32 parameters within the * Dec Multinational range). If cpp is ported to an EBCDIC * machine, you will have to make other arrangements. * * There is some special case code to distinguish * #define foo bar * from #define foo() bar * * Also, we make sure that * #define foo foo * expands to "foo" but doesn't put cpp into an infinite loop. * * A warning message is printed if you redefine a symbol to a * different text. I.e, * #define foo 123 * #define foo 123 * is ok, but * #define foo 123 * #define foo +123 * is not. * * The following subroutines are called from define(): * checkparm called when a token is scanned. It checks through the * array of formal parameters. If a match is found, the * token is replaced by a control byte which will be used * to locate the parameter when the macro is expanded. * textput puts a string in the macro work area (parm[]), updating * parmp to point to the first free byte in parm[]. * textput() tests for work buffer overflow. * charput puts a single character in the macro work area (parm[]) * in a manner analogous to textput(). */ int c; DEFBUF *dp; /* -> new definition */ int isredefine; /* TRUE if redefined */ char *old; /* Remember redefined */ ReturnCode ret; #if OK_CONCAT int quoting; /* Remember we saw a # */ #endif if (type[(c = skipws(global))] != LET) { cerror(global, ERROR_DEFINE_SYNTAX); global->inmacro = FALSE; /* Stop hack */ return(FPP_OK); } isredefine = FALSE; /* Set if redefining */ if ((dp = lookid(global, c)) == NULL) { /* If not known now */ dp = defendel(global, global->tokenbuf, FALSE); /* Save the name */ if(!dp) return(FPP_OUT_OF_MEMORY); } else { /* It's known: */ isredefine = TRUE; /* Remember this fact */ old = dp->repl; /* Remember replacement */ dp->repl = NULL; /* No replacement now */ } global->parlist[0] = global->parmp = global->parm; /* Setup parm buffer */ if ((c = get(global)) == '(') { /* With arguments? */ global->nargs = 0; /* Init formals counter */ do { /* Collect formal parms */ if (global->nargs >= LASTPARM) { cfatal(global, FATAL_TOO_MANY_ARGUMENTS_MACRO); return(FPP_TOO_MANY_ARGUMENTS); } else if ((c = skipws(global)) == ')') break; /* Got them all */ else if (type[c] != LET) { /* Bad formal syntax */ cerror(global, ERROR_DEFINE_SYNTAX); global->inmacro = FALSE; /* Stop hack */ return(FPP_OK); } scanid(global, c); /* Get the formal param */ global->parlist[global->nargs++] = global->parmp; /* Save its start */ ret=textput(global, global->tokenbuf); /* Save text in parm[] */ if(ret) return(ret); } while ((c = skipws(global)) == ','); /* Get another argument */ if (c != ')') { /* Must end at ) */ cerror(global, ERROR_DEFINE_SYNTAX); global->inmacro = FALSE; /* Stop hack */ return(FPP_OK); } c = ' '; /* Will skip to body */ } else { /* * DEF_NOARGS is needed to distinguish between * "#define foo" and "#define foo()". */ global->nargs = DEF_NOARGS; /* No () parameters */ } if (type[c] == SPA) /* At whitespace? */ c = skipws(global); /* Not any more. */ global->workp = global->work; /* Replacement put here */ global->inmacro = TRUE; /* Keep \ now */ quoting = 0; /* No # seen yet. */ while (c != EOF_CHAR && c != '\n') { /* Compile macro body */ #if OK_CONCAT if (c == '#') { /* Token concatenation? */ if ((c = get(global)) != '#') { /* No, not really */ quoting = 1; /* Maybe quoting op. */ continue; } while (global->workp > global->work && type[(uint8_t)global->workp[-1]] == SPA) --global->workp; /* Erase leading spaces */ if((ret=save(global, TOK_SEP))) /* Stuff a delimiter */ return(ret); c = skipws(global); /* Eat whitespace */ continue; } #endif switch (type[c]) { case LET: #if OK_CONCAT ret=checkparm(global, c, dp, quoting); /* Might be a formal */ #else ret=checkparm(c, dp); /* Might be a formal */ #endif if(ret) return(ret); break; case DIG: /* Number in mac. body */ case DOT: /* Maybe a float number */ ret=scannumber(global, c, save); /* Scan it off */ if(ret) return(ret); break; case QUO: /* String in mac. body */ ret=stparmscan(global, c); if(ret) return(ret); break; case BSH: /* Backslash */ ret=save(global, '\\'); if(ret) return(ret); if ((c = get(global)) == '\n') global->wrongline = TRUE; ret=save(global, c); if(ret) return(ret); break; case SPA: /* Absorb whitespace */ /* * Note: the "end of comment" marker is passed on * to allow comments to separate tokens. */ if (global->workp[-1] == ' ') /* Absorb multiple */ break; /* spaces */ else if (c == '\t') c = ' '; /* Normalize tabs */ /* Fall through to store character */ default: /* Other character */ ret=save(global, c); if(ret) return(ret); break; } c = get(global); quoting = 0; /* Only when immediately*/ /* preceding a formal */ } global->inmacro = FALSE; /* Stop newline hack */ unget(global); /* For control check */ if (global->workp > global->work && global->workp[-1] == ' ') /* Drop trailing blank */ global->workp--; *global->workp = EOS; /* Terminate work */ dp->repl = savestring(global, global->work); /* Save the string */ dp->nargs = global->nargs; /* Save arg count */ if (isredefine) { /* Error if redefined */ if ((old != NULL && dp->repl != NULL && !streq(old, dp->repl)) || (old == NULL && dp->repl != NULL) || (old != NULL && dp->repl == NULL)) { cerror(global, ERROR_REDEFINE, dp->name); } if (old != NULL) /* We don't need the */ Freemem(old); /* old definition now. */ } return(FPP_OK); } INLINE FILE_LOCAL ReturnCode checkparm(struct Global *global, int c, DEFBUF *dp, int quoting) /* Preceded by a # ? */ { /* * Replace this param if it's defined. Note that the macro name is a * possible replacement token. We stuff DEF_MAGIC in front of the token * which is treated as a LETTER by the token scanner and eaten by * the output routine. This prevents the macro expander from * looping if someone writes "#define foo foo". */ int i; char *cp; ReturnCode ret=FPP_OK; scanid(global, c); /* Get parm to tokenbuf */ for (i = 0; i < global->nargs; i++) { /* For each argument */ if (streq(global->parlist[i], global->tokenbuf)) { /* If it's known */ #if OK_CONCAT if (quoting) { /* Special handling of */ ret=save(global, QUOTE_PARM); /* #formal inside defn */ if(ret) return(ret); } #endif ret=save(global, i + MAC_PARM); /* Save a magic cookie */ return(ret); /* And exit the search */ } } if (streq(dp->name, global->tokenbuf)) /* Macro name in body? */ ret=save(global, DEF_MAGIC); /* Save magic marker */ for (cp = global->tokenbuf; *cp != EOS;) /* And save */ ret=save(global, *cp++); /* The token itself */ return(ret); } INLINE FILE_LOCAL ReturnCode stparmscan(struct Global *global, int delim) { /* * Normal string parameter scan. */ unsigned char *wp; int i; ReturnCode ret; wp = (unsigned char *)global->workp; /* Here's where it starts */ ret=scanstring(global, delim, save); if(ret) return(ret); /* Exit on scanstring error */ global->workp[-1] = EOS; /* Erase trailing quote */ wp++; /* -> first string content byte */ for (i = 0; i < global->nargs; i++) { if (streq(global->parlist[i], (char *)wp)) { *wp++ = MAC_PARM + PAR_MAC; /* Stuff a magic marker */ *wp++ = (i + MAC_PARM); /* Make a formal marker */ *wp = wp[-3]; /* Add on closing quote */ global->workp = (char *)wp + 1; /* Reset string end */ return(FPP_OK); } } global->workp[-1] = wp[-1]; /* Nope, reset end quote. */ return(FPP_OK); } void doundef(struct Global *global) /* * Remove the symbol from the defined list. * Called from the #control processor. */ { int c; if (type[(c = skipws(global))] != LET) cerror(global, ERROR_ILLEGAL_UNDEF); else { scanid(global, c); /* Get name to tokenbuf */ (void) defendel(global, global->tokenbuf, TRUE); } } INLINE FILE_LOCAL ReturnCode textput(struct Global *global, char *text) { /* * Put the string in the parm[] buffer. */ size_t size; size = strlen(text) + 1; if ((global->parmp + size) >= &global->parm[NPARMWORK]) { cfatal(global, FATAL_MACRO_AREA_OVERFLOW); return(FPP_WORK_AREA_OVERFLOW); } else { strcpy(global->parmp, text); global->parmp += size; } return(FPP_OK); } FILE_LOCAL ReturnCode charput(struct Global *global, int c) { /* * Put the byte in the parm[] buffer. */ if (global->parmp >= &global->parm[NPARMWORK]) { cfatal(global, FATAL_MACRO_AREA_OVERFLOW); return(FPP_WORK_AREA_OVERFLOW); } *global->parmp++ = c; return(FPP_OK); } /* * M a c r o E x p a n s i o n */ ReturnCode expand(struct Global *global, DEFBUF *tokenp) { /* * Expand a macro. Called from the cpp mainline routine (via subroutine * macroid()) when a token is found in the symbol table. It calls * expcollect() to parse actual parameters, checking for the correct number. * It then creates a "file" containing a single line containing the * macro with actual parameters inserted appropriately. This is * "pushed back" onto the input stream. (When the get() routine runs * off the end of the macro line, it will dismiss the macro itself.) */ int c; FILEINFO *file; ReturnCode ret=FPP_OK; /* * If no macro is pending, save the name of this macro * for an eventual error message. */ if (global->recursion++ == 0) global->macro = tokenp; else if (global->recursion == RECURSION_LIMIT) { cerror(global, ERROR_RECURSIVE_MACRO, tokenp->name, global->macro->name); if (global->rec_recover) { do { c = get(global); } while (global->infile != NULL && global->infile->fp == NULL); unget(global); global->recursion = 0; return(FPP_OK); } } /* * Here's a macro to expand. */ global->nargs = 0; /* Formals counter */ global->parmp = global->parm; /* Setup parm buffer */ switch (tokenp->nargs) { case (-2): /* __LINE__ */ if(global->infile->fp) /* This is a file */ sprintf(global->work, "%d", global->line); else /* This is a macro! Find out the file line number! */ for (file = global->infile; file != NULL; file = file->parent) { if (file->fp != NULL) { sprintf(global->work, "%d", file->line); break; } } ret=ungetstring(global, global->work); if(ret) return(ret); break; case (-3): /* __FILE__ */ for (file = global->infile; file != NULL; file = file->parent) { if (file->fp != NULL) { sprintf(global->work, "\"%s\"", (file->progname != NULL) ? file->progname : file->filename); ret=ungetstring(global, global->work); if(ret) return(ret); break; } } break; case (-4): /* __FUNC__ */ sprintf(global->work, "\"%s\"", global->functionname[0]? global->functionname : ""); ret=ungetstring(global, global->work); if(ret) return(ret); break; case (-5): /* __FUNC_LINE__ */ sprintf(global->work, "%d", global->funcline); ret=ungetstring(global, global->work); if(ret) return(ret); break; default: /* * Nothing funny about this macro. */ if (tokenp->nargs < 0) { cfatal(global, FATAL_ILLEGAL_MACRO, tokenp->name); return(FPP_ILLEGAL_MACRO); } while ((c = skipws(global)) == '\n') /* Look for (, skipping */ global->wrongline = TRUE; /* spaces and newlines */ if (c != '(') { /* * If the programmer writes * #define foo() ... * ... * foo [no ()] * just write foo to the output stream. */ unget(global); cwarn(global, WARN_MACRO_NEEDS_ARGUMENTS, tokenp->name); /* fputs(tokenp->name, stdout); */ Putstring(global, tokenp->name); return(FPP_OK); } else if (!(ret=expcollect(global))) { /* Collect arguments */ if (tokenp->nargs != global->nargs) { /* Should be an error? */ cwarn(global, WARN_WRONG_NUMBER_ARGUMENTS, tokenp->name); } } else { /* Collect arguments */ return(ret); /* We failed in argument colleting! */ } case DEF_NOARGS: /* No parameters just stuffs */ ret=expstuff(global, tokenp->name, tokenp->repl); /* expand macro */ } /* nargs switch */ return(ret); } INLINE FILE_LOCAL ReturnCode expcollect(struct Global *global) { /* * Collect the actual parameters for this macro. */ int c; int paren; /* For embedded ()'s */ ReturnCode ret; for (;;) { paren = 0; /* Collect next arg. */ while ((c = skipws(global)) == '\n')/* Skip over whitespace */ global->wrongline = TRUE; /* and newlines. */ if (c == ')') { /* At end of all args? */ /* * Note that there is a guard byte in parm[] * so we don't have to check for overflow here. */ *global->parmp = EOS; /* Make sure terminated */ break; /* Exit collection loop */ } else if (global->nargs >= LASTPARM) { cfatal(global, FATAL_TOO_MANY_ARGUMENTS_EXPANSION); return(FPP_TOO_MANY_ARGUMENTS); } global->parlist[global->nargs++] = global->parmp; /* At start of new arg */ for (;; c = cget(global)) { /* Collect arg's bytes */ if (c == EOF_CHAR) { cerror(global, ERROR_EOF_IN_ARGUMENT); return(FPP_EOF_IN_MACRO); /* Sorry. */ } else if (c == '\\') { /* Quote next character */ charput(global, c); /* Save the \ for later */ charput(global, cget(global)); /* Save the next char. */ continue; /* And go get another */ } else if (type[c] == QUO) { /* Start of string? */ ret=scanstring(global, c, (ReturnCode (*)(struct Global *, int))charput); /* Scan it off */ if(ret) return(ret); continue; /* Go get next char */ } else if (c == '(') /* Worry about balance */ paren++; /* To know about commas */ else if (c == ')') { /* Other side too */ if (paren == 0) { /* At the end? */ unget(global); /* Look at it later */ break; /* Exit arg getter. */ } paren--; /* More to come. */ } else if (c == ',' && paren == 0) /* Comma delimits args */ break; else if (c == '\n') /* Newline inside arg? */ global->wrongline = TRUE; /* We'll need a #line */ charput(global, c); /* Store this one */ } /* Collect an argument */ charput(global, EOS); /* Terminate argument */ } /* Collect all args. */ return(FPP_OK); /* Normal return */ } #if OK_CONCAT INLINE FILE_LOCAL char *doquoting(char *to, char *from) { *to++ = '"'; while (*from) { if (*from == '\\' || *from == '"') *to++ = '\\'; *to++ = *from++; } *to++ = '"'; return to; } #endif ReturnCode expstuff(struct Global *global, char *MacroName, char *MacroReplace) { /* * Stuff the macro body, replacing formal parameters by actual parameters. */ int c; /* Current character */ char *inp; /* -> repl string */ char *defp; /* -> macro output buff */ size_t size; /* Actual parm. size */ char *defend; /* -> output buff end */ int string_magic; /* String formal hack */ FILEINFO *file; /* Funny #include */ ReturnCode ret; #if OK_CONCAT char quoting; /* Quote macro argument */ #endif ret = getfile(global, NBUFF, MacroName, &file); if(ret) return(ret); inp = MacroReplace; /* -> macro replacement */ defp = file->buffer; /* -> output buffer */ defend = defp + (NBUFF - 1); /* Note its end */ if (inp != NULL) { quoting = 0; while ((c = (*inp++ & 0xFF)) != EOS) { #if OK_CONCAT if (c == QUOTE_PARM) { /* Special token for # */ quoting = 1; /* set flag, for later */ continue; /* Get next character */ } #endif if (c >= MAC_PARM && c <= (MAC_PARM + PAR_MAC)) { string_magic = (c == (MAC_PARM + PAR_MAC)); if (string_magic) c = (*inp++ & 0xFF); /* * Replace formal parameter by actual parameter string. */ if ((c -= MAC_PARM) < global->nargs) { size = strlen(global->parlist[c]); #if OK_CONCAT if (quoting) { size++; size *= 2; /* worst case condition */ } #endif if ((defp + size) >= defend) { cfatal(global, FATAL_OUT_OF_SPACE_IN_ARGUMENT, MacroName); return(FPP_OUT_OF_SPACE_IN_MACRO_EXPANSION); } /* * Erase the extra set of quotes. */ if (string_magic && defp[-1] == global->parlist[c][0]) { strcpy(defp-1, global->parlist[c]); defp += (size - 2); } #if OK_CONCAT else if (quoting) defp = doquoting(defp, global->parlist[c]); #endif else { strcpy(defp, global->parlist[c]); defp += size; } } } else if (defp >= defend) { cfatal(global, FATAL_OUT_OF_SPACE_IN_ARGUMENT, MacroName); return(FPP_OUT_OF_SPACE_IN_MACRO_EXPANSION); } else *defp++ = c; quoting = 0; } } *defp = EOS; return(FPP_OK); } grcompiler-5.2.1/preprocessor/cpp5.c000066400000000000000000000614651411153030700174320ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: cpp5.c,v 1.3 2004/10/25 19:08:41 danglassey Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cpp5.c,v $ * $Revision: 1.3 $ * $Date: 2004/10/25 19:08:41 $ * $Author: danglassey $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cpp5.c,v $ * Revision 1.3 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.2 2003/07/17 10:16:34 mhosken * Main linux port checkin * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.2 1994/01/24 09:35:02 start * Made a bunch of functions FILE_LOCAL and INLINE. * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ /* * C P P 5 . C * E x p r e s s i o n E v a l u a t i o n * * Edit History * 31-Aug-84 MM USENET net.sources release * 04-Oct-84 MM __LINE__ and __FILE__ must call ungetstring() * so they work correctly with token concatenation. * Added string formal recognition. * 25-Oct-84 MM "Short-circuit" evaluate #if's so that we * don't print unnecessary error messages for * #if !defined(FOO) && FOO != 0 && 10 / FOO ... * 31-Oct-84 ado/MM Added token concatenation * 6-Nov-84 MM Split from #define stuff, added sizeof stuff * 19-Nov-84 ado #if error returns TRUE for (sigh) compatibility * 21-Oct-85 RMS Rename `token' to `tokenbuf' * 23-Oct-85 RMS Treat undefined symbols as having value zero. * 14-Mar-86 FNF Incorporate macro based C debugging package. * Port to Commodore Amiga. * 20-Aug-88 Ois Conditionally compile sizeof stuff. */ #include #include #include #include "cppdef.h" #include "cpp.h" INLINE FILE_LOCAL ReturnCode evallex(struct Global *, int, int *); INLINE FILE_LOCAL ReturnCode dosizeof(struct Global *, int *); INLINE FILE_LOCAL int bittest(int); INLINE FILE_LOCAL int evalnum(struct Global *, int); INLINE FILE_LOCAL int evalchar(struct Global *, int); INLINE FILE_LOCAL int *evaleval(struct Global *, int *, int, int); /* * Evaluate an #if expression. */ static char *opname[] = { /* For debug and error messages */ "end of expression", "val", "id", "+", "-", "*", "/", "%", "<<", ">>", "&", "|", "^", "==", "!=", "<", "<=", ">=", ">", "&&", "||", "?", ":", ",", "unary +", "unary -", "~", "!", "(", ")", "(none)", }; /* * opdope[] has the operator precedence: * Bits * 7 Unused (so the value is always positive) * 6-2 Precedence (000x .. 017x) * 1-0 Binary op. flags: * 01 The binop flag should be set/cleared when this op is seen. * 10 The new value of the binop flag. * Note: Expected, New binop * constant 0 1 Binop, end, or ) should follow constants * End of line 1 0 End may not be preceeded by an operator * binary 1 0 Binary op follows a value, value follows. * unary 0 0 Unary op doesn't follow a value, value follows * ( 0 0 Doesn't follow value, value or unop follows * ) 1 1 Follows value. Op follows. */ static char opdope[OP_MAX] = { 0001, /* End of expression */ 0002, /* Digit */ 0000, /* Letter (identifier) */ 0141, 0141, 0151, 0151, 0151, /* ADD, SUB, MUL, DIV, MOD */ 0131, 0131, 0101, 0071, 0071, /* ASL, ASR, AND, OR, XOR */ 0111, 0111, 0121, 0121, 0121, 0121, /* EQ, NE, LT, LE, GE, GT */ 0061, 0051, 0041, 0041, 0031, /* ANA, ORO, QUE, COL, CMA */ /* * Unary op's follow */ 0160, 0160, 0160, 0160, /* NEG, PLU, COM, NOT */ 0170, 0013, 0023, /* LPA, RPA, END */ }; /* * OP_QUE and OP_RPA have alternate precedences: */ #define OP_RPA_PREC 0013 #define OP_QUE_PREC 0034 /* * S_ANDOR and S_QUEST signal "short-circuit" boolean evaluation, so that * #if FOO != 0 && 10 / FOO ... * doesn't generate an error message. They are stored in optab.skip. */ #define S_ANDOR 2 #define S_QUEST 1 typedef struct optab { uint8_t op; /* Operator */ uint8_t prec; /* Its precedence */ uint8_t skip; /* Short-circuit: TRUE to skip */ } OPTAB; #ifdef nomacargs FILE_LOCAL int isbinary(op) int op; { return (op >= FIRST_BINOP && op <= LAST_BINOP); } FILE_LOCAL int isunary(op) int op; { return (op >= FIRST_UNOP && op <= LAST_UNOP); } #else #define isbinary(op) (op >= FIRST_BINOP && op <= LAST_BINOP) #define isunary(op) (op >= FIRST_UNOP && op <= LAST_UNOP) #endif /* * The following definitions are used to specify basic variable sizes. */ #if OK_SIZEOF #ifndef S_CHAR #define S_CHAR (sizeof (char)) #endif #ifndef S_SINT #ifdef manx /* Aztec/Manx C does not like "short int" */ #define S_SINT (sizeof (short)) #else #define S_SINT (sizeof (short int)) #endif #endif #ifndef S_INT #define S_INT (sizeof (int)) #endif #ifndef S_LINT #define S_LINT (sizeof (long int)) #endif #ifndef S_FLOAT #define S_FLOAT (sizeof (float)) #endif #ifndef S_DOUBLE #define S_DOUBLE (sizeof (double)) #endif #ifndef S_PCHAR #define S_PCHAR (sizeof (char *)) #endif #ifndef S_PSINT #ifdef manx /* Aztec/Manx C does not like "short int" */ #define S_PSINT (sizeof (short *)) #else #define S_PSINT (sizeof (short int *)) #endif #endif #ifndef S_PINT #define S_PINT (sizeof (int *)) #endif #ifndef S_PLINT #define S_PLINT (sizeof (long int *)) #endif #ifndef S_PFLOAT #define S_PFLOAT (sizeof (float *)) #endif #ifndef S_PDOUBLE #define S_PDOUBLE (sizeof (double *)) #endif #ifndef S_PFPTR #define S_PFPTR (sizeof (int (*)())) #endif typedef struct types { short type; /* This is the bit if */ char *name; /* this is the token word */ } TYPES; static TYPES basic_types[] = { { T_CHAR, "char", }, { T_INT, "int", }, { T_FLOAT, "float", }, { T_DOUBLE, "double", }, { T_SHORT, "short", }, { T_LONG, "long", }, { T_SIGNED, "signed", }, { T_UNSIGNED, "unsigned", }, { 0, NULL, }, /* Signal end */ }; /* * Test_table[] is used to test for illegal combinations. */ static short test_table[] = { T_FLOAT | T_DOUBLE | T_LONG | T_SHORT, T_FLOAT | T_DOUBLE | T_CHAR | T_INT, T_FLOAT | T_DOUBLE | T_SIGNED | T_UNSIGNED, T_LONG | T_SHORT | T_CHAR, 0 /* end marker */ }; /* * The order of this table is important -- it is also referenced by * the command line processor to allow run-time overriding of the * built-in size values. The order must not be changed: * char, short, int, long, float, double (func pointer) */ SIZES size_table[] = { { T_CHAR, S_CHAR, S_PCHAR }, /* char */ { T_SHORT, S_SINT, S_PSINT }, /* short int */ { T_INT, S_INT, S_PINT }, /* int */ { T_LONG, S_LINT, S_PLINT }, /* long */ { T_FLOAT, S_FLOAT, S_PFLOAT }, /* float */ { T_DOUBLE, S_DOUBLE, S_PDOUBLE }, /* double */ { T_FPTR, 0, S_PFPTR }, /* int (*()) */ { 0, 0, 0 }, /* End of table */ }; #endif /* OK_SIZEOF */ ReturnCode eval(struct Global *global, int *eval) { /* * Evaluate an expression. Straight-forward operator precedence. * This is called from control() on encountering an #if statement. * It calls the following routines: * evallex Lexical analyser -- returns the type and value of * the next input token. * evaleval Evaluate the current operator, given the values on * the value stack. Returns a pointer to the (new) * value stack. * For compatiblity with older cpp's, this return returns 1 (TRUE) * if a syntax error is detected. */ int op; /* Current operator */ int *valp; /* -> value vector */ OPTAB *opp; /* Operator stack */ int prec; /* Op precedence */ int binop; /* Set if binary op. needed */ int op1; /* Operand from stack */ int skip; /* For short-circuit testing */ int value[NEXP]; /* Value stack */ OPTAB opstack[NEXP]; /* Operand stack */ ReturnCode ret; char again=TRUE; valp = value; opp = opstack; opp->op = OP_END; /* Mark bottom of stack */ opp->prec = opdope[OP_END]; /* And its precedence */ opp->skip = 0; /* Not skipping now */ binop = 0; while(again) { ret=evallex(global, opp->skip, &op); if(ret) return(ret); if (op == OP_SUB && binop == 0) op = OP_NEG; /* Unary minus */ else if (op == OP_ADD && binop == 0) op = OP_PLU; /* Unary plus */ else if (op == OP_FAIL) { *eval=1; /* Error in evallex */ return(FPP_OK); } if (op == DIG) { /* Value? */ if (binop != 0) { cerror(global, ERROR_MISPLACED_CONSTANT); *eval=1; return(FPP_OK); } else if (valp >= &value[NEXP-1]) { cerror(global, ERROR_IF_OVERFLOW); *eval=1; return(FPP_OK); } else { *valp++ = global->evalue; binop = 1; } again=TRUE; continue; } else if (op > OP_END) { cerror(global, ERROR_ILLEGAL_IF_LINE); *eval=1; return(FPP_OK); } prec = opdope[op]; if (binop != (prec & 1)) { cerror(global, ERROR_OPERATOR, opname[op]); *eval=1; return(FPP_OK); } binop = (prec & 2) >> 1; do { if (prec > opp->prec) { if (op == OP_LPA) prec = OP_RPA_PREC; else if (op == OP_QUE) prec = OP_QUE_PREC; op1 = opp->skip; /* Save skip for test */ /* * Push operator onto op. stack. */ opp++; if (opp >= &opstack[NEXP]) { cerror(global, ERROR_EXPR_OVERFLOW, opname[op]); *eval=1; return(FPP_OK); } opp->op = op; opp->prec = prec; skip = (valp[-1] != 0); /* Short-circuit tester */ /* * Do the short-circuit stuff here. Short-circuiting * stops automagically when operators are evaluated. */ if ((op == OP_ANA && !skip) || (op == OP_ORO && skip)) opp->skip = S_ANDOR; /* And/or skip starts */ else if (op == OP_QUE) /* Start of ?: operator */ opp->skip = (op1 & S_ANDOR) | ((!skip) ? S_QUEST : 0); else if (op == OP_COL) { /* : inverts S_QUEST */ opp->skip = (op1 & S_ANDOR) | (((op1 & S_QUEST) != 0) ? 0 : S_QUEST); } else { /* Other ops leave */ opp->skip = op1; /* skipping unchanged. */ } again=TRUE; continue; } /* * Pop operator from op. stack and evaluate it. * End of stack and '(' are specials. */ skip = opp->skip; /* Remember skip value */ switch ((op1 = opp->op)) { /* Look at stacked op */ case OP_END: /* Stack end marker */ if (op == OP_EOE) { *eval=valp[-1]; /* Finished ok. */ return(FPP_OK); } /* Read another op. */ again=TRUE; continue; case OP_LPA: /* ( on stack */ if (op != OP_RPA) { /* Matches ) on input */ cerror(global, ERROR_UNBALANCED_PARENS, opname[op]); *eval=1; return(FPP_OK); } opp--; /* Unstack it */ /* -- Fall through */ case OP_QUE: /* Evaluate true expr. */ again=TRUE; continue; case OP_COL: /* : on stack. */ opp--; /* Unstack : */ if (opp->op != OP_QUE) { /* Matches ? on stack? */ cerror(global, ERROR_MISPLACED, opname[opp->op]); *eval=1; return(FPP_OK); } /* * Evaluate op1. */ default: /* Others: */ opp--; /* Unstack the operator */ valp = evaleval(global, valp, op1, skip); again=FALSE; } /* op1 switch end */ } while (!again); /* Stack unwind loop */ } return(FPP_OK); } INLINE FILE_LOCAL ReturnCode evallex(struct Global *global, int skip, /* TRUE if short-circuit evaluation */ int *op) { /* * Set *op to next eval operator or value. Called from eval(). It * calls a special-purpose routines for 'char' strings and * numeric values: * evalchar called to evaluate 'x' * evalnum called to evaluate numbers. */ int c, c1, t; ReturnCode ret; char loop; do { /* while(loop); */ /* again: */ loop=FALSE; do { /* Collect the token */ c = skipws(global); if((ret=macroid(global, &c))) return(ret); if (c == EOF_CHAR || c == '\n') { unget(global); *op=OP_EOE; /* End of expression */ return(FPP_OK); } } while ((t = type[c]) == LET && catenate(global, &ret) && !ret); if(ret) /* If the loop was broken because of a fatal error! */ return(ret); if (t == INV) { /* Total nonsense */ if (!skip) { if (isascii(c) && isprint(c)) cerror(global, ERROR_ILLEGAL_CHARACTER, c); else cerror(global, ERROR_ILLEGAL_CHARACTER2, c); } return(FPP_ILLEGAL_CHARACTER); } else if (t == QUO) { /* ' or " */ if (c == '\'') { /* Character constant */ global->evalue = evalchar(global, skip); /* Somewhat messy */ *op=DIG; /* Return a value */ return(FPP_OK); } cerror(global, ERROR_STRING_IN_IF); return(FPP_CANT_USE_STRING_IN_IF); } else if (t == LET) { /* ID must be a macro */ if (streq(global->tokenbuf, "defined")) { /* Or defined name */ c1 = c = skipws(global); if (c == '(') /* Allow defined(name) */ c = skipws(global); if (type[c] == LET) { global->evalue = (lookid(global, c) != NULL); if (c1 != '(' /* Need to balance */ || skipws(global) == ')') { /* Did we balance? */ *op=DIG; return(FPP_OK); /* Parsed ok */ } } cerror(global, ERROR_DEFINED_SYNTAX); return(FPP_BAD_IF_DEFINED_SYNTAX); } #if OK_SIZEOF else if (streq(global->tokenbuf, "sizeof")) { /* New sizeof hackery */ ret=dosizeof(global, op); /* Gets own routine */ return(ret); } #endif global->evalue = 0; *op=DIG; return(FPP_OK); } else if (t == DIG) { /* Numbers are harder */ global->evalue = evalnum(global, c); } else if (strchr("!=<>&|\\", c) != NULL) { /* * Process a possible multi-byte lexeme. */ c1 = cget(global); /* Peek at next char */ switch (c) { case '!': if (c1 == '=') { *op=OP_NE; return(FPP_OK); } break; case '=': if (c1 != '=') { /* Can't say a=b in #if */ unget(global); cerror(global, ERROR_ILLEGAL_ASSIGN); return (FPP_IF_ERROR); } *op=OP_EQ; return(FPP_OK); case '>': case '<': if (c1 == c) { *op= ((c == '<') ? OP_ASL : OP_ASR); return(FPP_OK); } else if (c1 == '=') { *op= ((c == '<') ? OP_LE : OP_GE); return(FPP_OK); } break; case '|': case '&': if (c1 == c) { *op= ((c == '|') ? OP_ORO : OP_ANA); return(FPP_OK); } break; case '\\': if (c1 == '\n') { /* Multi-line if */ loop=TRUE; break; } cerror(global, ERROR_ILLEGAL_BACKSLASH); return(FPP_IF_ERROR); } if(!loop) unget(global); } } while(loop); *op=t; return(FPP_OK); } #if OK_SIZEOF INLINE FILE_LOCAL ReturnCode dosizeof(struct Global *global, int *result) { /* * Process the sizeof (basic type) operation in an #if string. * Sets evalue to the size and returns * DIG success * OP_FAIL bad parse or something. */ int c; TYPES *tp; SIZES *sizp; short *testp; short typecode; ReturnCode ret; if ((c = skipws(global)) != '(') { unget(global); cerror(global, ERROR_SIZEOF_SYNTAX); return(FPP_SIZEOF_ERROR); } /* * Scan off the tokens. */ typecode = 0; while ((c = skipws(global))) { if((ret=macroid(global, &c))) return(ret); /* (I) return on fail! */ if (c == EOF_CHAR || c == '\n') { /* End of line is a bug */ unget(global); cerror(global, ERROR_SIZEOF_SYNTAX); return(FPP_SIZEOF_ERROR); } else if (c == '(') { /* thing (*)() func ptr */ if (skipws(global) == '*' && skipws(global) == ')') { /* We found (*) */ if (skipws(global) != '(') /* Let () be optional */ unget(global); else if (skipws(global) != ')') { unget(global); cerror(global, ERROR_SIZEOF_SYNTAX); return(FPP_SIZEOF_ERROR); } typecode |= T_FPTR; /* Function pointer */ } else { /* Junk is a bug */ unget(global); cerror(global, ERROR_SIZEOF_SYNTAX); return(FPP_SIZEOF_ERROR); } } else if (type[c] != LET) /* Exit if not a type */ break; else if (!catenate(global, &ret) && !ret) { /* Maybe combine tokens */ /* * Look for this unexpandable token in basic_types. * The code accepts "int long" as well as "long int" * which is a minor bug as bugs go (and one shared with * a lot of C compilers). */ for (tp = basic_types; tp->name != NULLST; tp++) { if (streq(global->tokenbuf, tp->name)) break; } if (tp->name == NULLST) { cerror(global, ERROR_SIZEOF_UNKNOWN, global->tokenbuf); return(FPP_SIZEOF_ERROR); } typecode |= tp->type; /* Or in the type bit */ } else if(ret) return(ret); } /* * We are at the end of the type scan. Chew off '*' if necessary. */ if (c == '*') { typecode |= T_PTR; c = skipws(global); } if (c == ')') { /* Last syntax check */ for (testp = test_table; *testp != 0; testp++) { if (!bittest(typecode & *testp)) { cerror(global, ERROR_SIZEOF_ILLEGAL_TYPE); return(FPP_SIZEOF_ERROR); } } /* * We assume that all function pointers are the same size: * sizeof (int (*)()) == sizeof (float (*)()) * We assume that signed and unsigned don't change the size: * sizeof (signed int) == (sizeof unsigned int) */ if ((typecode & T_FPTR) != 0) /* Function pointer */ typecode = T_FPTR | T_PTR; else { /* Var or var * datum */ typecode &= ~(T_SIGNED | T_UNSIGNED); if ((typecode & (T_SHORT | T_LONG)) != 0) typecode &= ~T_INT; } if ((typecode & ~T_PTR) == 0) { cerror(global, ERROR_SIZEOF_NO_TYPE); return(FPP_SIZEOF_ERROR); } /* * Exactly one bit (and possibly T_PTR) may be set. */ for (sizp = size_table; sizp->bits != 0; sizp++) { if ((typecode & ~T_PTR) == sizp->bits) { global->evalue = ((typecode & T_PTR) != 0) ? sizp->psize : sizp->size; *result=DIG; return(FPP_OK); } } /* We shouldn't fail */ cerror(global, ERROR_SIZEOF_BUG, typecode); return(FPP_SIZEOF_ERROR); } unget(global); cerror(global, ERROR_SIZEOF_SYNTAX); return(FPP_SIZEOF_ERROR); } INLINE FILE_LOCAL int bittest(int value) { /* * TRUE if value is zero or exactly one bit is set in value. */ #if (4096 & ~(-4096)) == 0 return ((value & ~(-value)) == 0); #else /* * Do it the hard way (for non 2's complement machines) */ return (value == 0 || value ^ (value - 1) == (value * 2 - 1)); #endif } #endif /* OK_SIZEOF */ INLINE FILE_LOCAL int evalnum(struct Global *global, int c) { /* * Expand number for #if lexical analysis. Note: evalnum recognizes * the unsigned suffix, but only returns a signed int value. */ int value; int base; int c1; if (c != '0') base = 10; else if ((c = cget(global)) == 'x' || c == 'X') { base = 16; c = cget(global); } else base = 8; value = 0; for (;;) { c1 = c; if (isascii(c) && isupper(c1)) c1 = tolower(c1); if (c1 >= 'a') c1 -= ('a' - 10); else c1 -= '0'; if (c1 < 0 || c1 >= base) break; value *= base; value += c1; c = cget(global); } if (c == 'u' || c == 'U') /* Unsigned nonsense */ c = cget(global); unget(global); return (value); } INLINE FILE_LOCAL int evalchar(struct Global *global, int skip) /* TRUE if short-circuit evaluation */ /* * Get a character constant */ { int c; int value; int count; global->instring = TRUE; if ((c = cget(global)) == '\\') { switch ((c = cget(global))) { case 'a': /* New in Standard */ #if ('a' == '\a' || '\a' == ALERT) value = ALERT; /* Use predefined value */ #else value = '\a'; /* Use compiler's value */ #endif break; case 'b': value = '\b'; break; case 'f': value = '\f'; break; case 'n': value = '\n'; break; case 'r': value = '\r'; break; case 't': value = '\t'; break; case 'v': /* New in Standard */ #if ('v' == '\v' || '\v' == VT) value = VT; /* Use predefined value */ #else value = '\v'; /* Use compiler's value */ #endif break; case 'x': /* '\xFF' */ count = 3; value = 0; while ((((c = get(global)) >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) && (--count >= 0)) { value *= 16; value += (c <= '9') ? (c - '0') : ((c & 0xF) + 9); } unget(global); break; default: if (c >= '0' && c <= '7') { count = 3; value = 0; while (c >= '0' && c <= '7' && --count >= 0) { value *= 8; value += (c - '0'); c = get(global); } unget(global); } else value = c; break; } } else if (c == '\'') value = 0; else value = c; /* * We warn on multi-byte constants and try to hack * (big|little)endian machines. */ #if BIG_ENDIAN count = 0; #endif while ((c = get(global)) != '\'' && c != EOF_CHAR && c != '\n') { if (!skip) cwarn(global, WARN_MULTIbyte_NOT_PORTABLE, c); #if BIG_ENDIAN count += BITS_CHAR; value += (c << count); #else value <<= BITS_CHAR; value += c; #endif } global->instring = FALSE; return (value); } INLINE FILE_LOCAL int *evaleval(struct Global *global, int *valp, int op, int skip) /* TRUE if short-circuit evaluation */ { /* * Apply the argument operator to the data on the value stack. * One or two values are popped from the value stack and the result * is pushed onto the value stack. * * OP_COL is a special case. * * evaleval() returns the new pointer to the top of the value stack. */ int v1, v2; if (isbinary(op)) v2 = *--valp; v1 = *--valp; switch (op) { case OP_EOE: break; case OP_ADD: v1 += v2; break; case OP_SUB: v1 -= v2; break; case OP_MUL: v1 *= v2; break; case OP_DIV: case OP_MOD: if (v2 == 0) { if (!skip) { cwarn(global, WARN_DIVISION_BY_ZERO, (op == OP_DIV) ? "divide" : "mod"); } v1 = 0; } else if (op == OP_DIV) v1 /= v2; else v1 %= v2; break; case OP_ASL: v1 <<= v2; break; case OP_ASR: v1 >>= v2; break; case OP_AND: v1 &= v2; break; case OP_OR: v1 |= v2; break; case OP_XOR: v1 ^= v2; break; case OP_EQ: v1 = (v1 == v2); break; case OP_NE: v1 = (v1 != v2); break; case OP_LT: v1 = (v1 < v2); break; case OP_LE: v1 = (v1 <= v2); break; case OP_GE: v1 = (v1 >= v2); break; case OP_GT: v1 = (v1 > v2); break; case OP_ANA: v1 = (v1 && v2); break; case OP_ORO: v1 = (v1 || v2); break; case OP_COL: /* * v1 has the "true" value, v2 the "false" value. * The top of the value stack has the test. */ v1 = (*--valp) ? v1 : v2; break; case OP_NEG: v1 = (-v1); break; case OP_PLU: break; case OP_COM: v1 = ~v1; break; case OP_NOT: v1 = !v1; break; default: cerror(global, ERROR_IF_OPERAND, op); v1 = 0; } *valp++ = v1; return (valp); } grcompiler-5.2.1/preprocessor/cpp6.c000066400000000000000000001150311411153030700174200ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: cpp6.c,v 1.3 2005/05/27 10:21:14 mhosken Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cpp6.c,v $ * $Revision: 1.3 $ * $Date: 2005/05/27 10:21:14 $ * $Author: mhosken $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cpp6.c,v $ * Revision 1.3 2005/05/27 10:21:14 mhosken * Get GrCompiler working on Linux * * Revision 1.2 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.5 1994/01/24 09:35:17 start * Made the FPPTAG_RIGHTCONCAT work. * * Revision 1.4 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.4 1993/12/06 13:50:39 start * A lot of new stuff (too much to mention) * * Revision 1.3 1993/11/29 14:00:32 start * new * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ /* * C P P 6 . C * S u p p o r t R o u t i n e s * * Edit History * 25-May-84 MM Added 8-bit support to type table. * 30-May-84 ARF sharp() should output filename in quotes * 02-Aug-84 MM Newline and #line hacking. sharp() now in cpp1.c * 31-Aug-84 MM USENET net.sources release * 11-Sep-84 ado/MM Keepcomments, also line number pathological * 12-Sep-84 ado/MM bug if comment changes to space and we unget later. * 03-Oct-84 gkr/MM Fixed scannumber bug for '.e' (as in struct.element). * 04-Oct-84 MM Added ungetstring() for token concatenation * 08-Oct-84 MM Yet another attack on number scanning * 31-Oct-84 ado Parameterized $ in identifiers * 2-Nov-84 MM Token concatenation is messier than I thought * 6-Dec-84 MM \ is everywhere invisible. * 21-Oct-85 RMS Rename `token' to `tokenbuf'. * Dynamically allocate it, and make it as big as needed. * 23-Oct-85 RMS Fix bugs storing into tokenbuf as it gets bigger. * Change error msg to cpp: "FILE", line LINE: MSG * 24-Oct-85 RMS Turn off warnings about / then * inside a comment. * 16-Mar-86 FNF Incorporate macro based C debugging package. * Port to Commodore Amiga. * 20-Aug-88 Ois Added time routines (or actually deleted stubs). * 20-Aug-88 Ois Changed handling of token following ## to match Cpp4. * 16-Feb-93 DSt Changed case of getmem() to Getmem(). */ #include #include #include "cppdef.h" #include "cpp.h" INLINE FILE_LOCAL void outadefine(struct Global *, DEFBUF *); INLINE FILE_LOCAL void domsg(struct Global *, ErrorCode, va_list); FILE_LOCAL char *incmem(struct Global *, char *, int); /* * skipnl() skips over input text to the end of the line. * skipws() skips over "whitespace" (spaces or tabs), but * not skip over the end of the line. It skips over * TOK_SEP, however (though that shouldn't happen). * scanid() reads the next token (C identifier) into tokenbuf. * The caller has already read the first character of * the identifier. Unlike macroid(), the token is * never expanded. * macroid() reads the next token (C identifier) into tokenbuf. * If it is a #defined macro, it is expanded, and * macroid() returns TRUE, otherwise, FALSE. * catenate() Does the dirty work of token concatenation, TRUE if it did. * scanstring() Reads a string from the input stream, calling * a user-supplied function for each character. * This function may be output() to write the * string to the output file, or save() to save * the string in the work buffer. * scannumber() Reads a C numeric constant from the input stream, * calling the user-supplied function for each * character. (output() or save() as noted above.) * save() Save one character in the work[] buffer. * savestring() Saves a string in malloc() memory. * getfile() Initialize a new FILEINFO structure, called when * #include opens a new file, or a macro is to be * expanded. * Getmem() Get a specified number of bytes from malloc memory. * output() Write one character to stdout (calling Putchar) -- * implemented as a function so its address may be * passed to scanstring() and scannumber(). * lookid() Scans the next token (identifier) from the input * stream. Looks for it in the #defined symbol table. * Returns a pointer to the definition, if found, or NULL * if not present. The identifier is stored in tokenbuf. * defnedel() Define enter/delete subroutine. Updates the * symbol table. * get() Read the next byte from the current input stream, * handling end of (macro/file) input and embedded * comments appropriately. Note that the global * instring is -- essentially -- a parameter to get(). * cget() Like get(), but skip over TOK_SEP. * unget() Push last gotten character back on the input stream. * cerror() This routine format an print messages to the user. */ /* * This table must be rewritten for a non-Ascii machine. * * Note that several "non-visible" characters have special meaning: * Hex 1C QUOTE_PARM --a flag for # stringifying * Hex 1D DEF_MAGIC -- a flag to prevent #define recursion. * Hex 1E TOK_SEP -- a delimiter for ## token concatenation * Hex 1F COM_SEP -- a zero-width whitespace for comment concatenation */ #ifndef OS9 #if (TOK_SEP != 0x1E || COM_SEP != 0x1F || DEF_MAGIC != 0x1D) #error "<< error type table isn't correct >>" #endif #endif #if OK_DOLLAR #define DOL LET #else #define DOL 000 #endif char type[256] = { /* Character type codes Hex */ END, 000, 000, 000, 000, 000, 000, 000, /* 00 */ 000, SPA, 000, 000, 000, 000, 000, 000, /* 08 */ 000, 000, 000, 000, 000, 000, 000, 000, /* 10 */ 000, 000, 000, 000, 000, LET, 000, SPA, /* 18 */ SPA, OP_NOT, QUO, 000, DOL, OP_MOD,OP_AND,QUO, /* 20 !"#$%&' */ OP_LPA,OP_RPA,OP_MUL,OP_ADD, 000,OP_SUB, DOT,OP_DIV, /* 28 ()*+,-./ */ DIG, DIG, DIG, DIG, DIG, DIG, DIG, DIG, /* 30 01234567 */ DIG, DIG,OP_COL, 000, OP_LT, OP_EQ, OP_GT,OP_QUE, /* 38 89:;<=>? */ 000, LET, LET, LET, LET, LET, LET, LET, /* 40 @ABCDEFG */ LET, LET, LET, LET, LET, LET, LET, LET, /* 48 HIJKLMNO */ LET, LET, LET, LET, LET, LET, LET, LET, /* 50 PQRSTUVW */ LET, LET, LET, 000, BSH, 000,OP_XOR, LET, /* 58 XYZ[\]^_ */ 000, LET, LET, LET, LET, LET, LET, LET, /* 60 `abcdefg */ LET, LET, LET, LET, LET, LET, LET, LET, /* 68 hijklmno */ LET, LET, LET, LET, LET, LET, LET, LET, /* 70 pqrstuvw */ LET, LET, LET, 000, OP_OR, 000,OP_NOT, 000, /* 78 xyz{|}~ */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ 000, 000, 000, 000, 000, 000, 000, 000, /* 80 .. FF */ }; void skipnl(struct Global *global) { /* * Skip to the end of the current input line. */ int c; do { /* Skip to newline */ c = get(global); } while (c != '\n' && c != EOF_CHAR); return; } int skipws(struct Global *global) { /* * Skip over whitespace */ int c; do { /* Skip whitespace */ c = get(global); #if COMMENT_INVISIBLE } while (type[c] == SPA || c == COM_SEP); #else } while (type[c] == SPA); #endif return(c); } void scanid(struct Global *global, int c) /* First char of id */ { /* * Get the next token (an id) into the token buffer. * Note: this code is duplicated in lookid(). * Change one, change both. */ int ct; if (c == DEF_MAGIC) /* Eat the magic token */ c = get(global); /* undefiner. */ ct = 0; do { if (ct == global->tokenbsize) global->tokenbuf = incmem (global, global->tokenbuf, 1 + (global->tokenbsize *= 2)); global->tokenbuf[ct++] = c; c = get(global); } while (type[c] == LET || type[c] == DIG); unget(global); global->tokenbuf[ct] = EOS; } ReturnCode macroid(struct Global *global, int *c) { /* * If c is a letter, scan the id. if it's #defined, expand it and scan * the next character and try again. * * Else, return the character. If type[c] is a LET, the token is in tokenbuf. */ DEFBUF *dp; ReturnCode ret=FPP_OK; if (global->infile != NULL && global->infile->fp != NULL) global->recursion = 0; while (type[*c] == LET && (dp = lookid(global, *c)) != NULL) { if((ret=expand(global, dp))) return(ret); *c = get(global); } return(FPP_OK); } int catenate(struct Global *global, ReturnCode *ret) { /* * A token was just read (via macroid). * If the next character is TOK_SEP, concatenate the next token * return TRUE -- which should recall macroid after refreshing * macroid's argument. If it is not TOK_SEP, unget() the character * and return FALSE. */ #if OK_CONCAT int c; char *token1; #endif #if OK_CONCAT if (get(global) != TOK_SEP) { /* Token concatenation */ unget(global); return (FALSE); } else { token1 = savestring(global, global->tokenbuf); /* Save first token */ c=get(global); if(global->rightconcat) { *ret=macroid(global, &c); /* Scan next token */ if(*ret) return(FALSE); } else lookid(global, c); switch(type[c]) { /* What was it? */ case LET: /* An identifier, ... */ if ((int)strlen(token1) + (int)strlen(global->tokenbuf) >= NWORK) { cfatal(global, FATAL_WORK_AREA_OVERFLOW, token1); *ret=FPP_WORK_AREA_OVERFLOW; return(FALSE); } sprintf(global->work, "%s%s", token1, global->tokenbuf); break; case DIG: /* A number */ case DOT: /* Or maybe a float */ strcpy(global->work, token1); global->workp = global->work + strlen(global->work); *ret=scannumber(global, c, save); if(*ret) return(FALSE); *ret=save(global, EOS); if(*ret) return(FALSE); break; default: /* An error, ... */ if (isprint(c)) cerror(global, ERROR_STRANG_CHARACTER, c); else cerror(global, ERROR_STRANG_CHARACTER2, c); strcpy(global->work, token1); unget(global); break; } /* * work has the concatenated token and token1 has * the first token (no longer needed). Unget the * new (concatenated) token after freeing token1. * Finally, setup to read the new token. */ Freemem(token1); /* Free up memory */ *ret=ungetstring(global, global->work); /* Unget the new thing, */ if(*ret) return(FALSE); return(TRUE); } #else return(FALSE); /* Not supported */ #endif } ReturnCode scanstring(struct Global *global, int delim, /* ' or " */ /* Output function: */ ReturnCode (*outfun)(struct Global *, int)) { /* * Scan off a string. Warning if terminated by newline or EOF. * outfun() outputs the character -- to a buffer if in a macro. * TRUE if ok, FALSE if error. */ int c; ReturnCode ret; global->instring = TRUE; /* Don't strip comments */ ret=(*outfun)(global, delim); if(ret) return(ret); while ((c = get(global)) != delim && c != '\n' && c != EOF_CHAR) { ret=(*outfun)(global, c); if(ret) return(ret); if (c == '\\') { ret=(*outfun)(global, get(global)); if(ret) return(ret); } } global->instring = FALSE; if (c == delim) { ret=(*outfun)(global, c); return(ret); } else { cerror(global, ERROR_UNTERMINATED_STRING); unget(global); return(FPP_UNTERMINATED_STRING); } } ReturnCode scannumber(struct Global *global, int c, /* First char of number */ /* Output/store func: */ ReturnCode (*outfun)(struct Global *, int)) { /* * Process a number. We know that c is from 0 to 9 or dot. * Algorithm from Dave Conroy's Decus C. */ int radix; /* 8, 10, or 16 */ int expseen; /* 'e' seen in floater */ int signseen; /* '+' or '-' seen */ int octal89; /* For bad octal test */ int dotflag; /* TRUE if '.' was seen */ ReturnCode ret; char done=FALSE; expseen = FALSE; /* No exponent seen yet */ signseen = TRUE; /* No +/- allowed yet */ octal89 = FALSE; /* No bad octal yet */ radix = 10; /* Assume decimal */ if ((dotflag = (c == '.')) != FALSE) {/* . something? */ ret=(*outfun)(global, '.'); /* Always out the dot */ if(ret) return(ret); if (type[(c = get(global))] != DIG) { /* If not a float numb, */ unget(global); /* Rescan strange char */ return(FPP_OK); /* All done for now */ } } /* End of float test */ else if (c == '0') { /* Octal or hex? */ ret=(*outfun)(global, c); /* Stuff initial zero */ if(ret) return(ret); radix = 8; /* Assume it's octal */ c = get(global); /* Look for an 'x' */ if (c == 'x' || c == 'X') { /* Did we get one? */ radix = 16; /* Remember new radix */ ret=(*outfun)(global, c); /* Stuff the 'x' */ if(ret) return(ret); c = get(global); /* Get next character */ } } while (!done) { /* Process curr. char. */ /* * Note that this algorithm accepts "012e4" and "03.4" * as legitimate floating-point numbers. */ #ifndef GDLPP if (radix != 16 && (c == 'e' || c == 'E')) { if (expseen) /* Already saw 'E'? */ break; /* Exit loop, bad nbr. */ expseen = TRUE; /* Set exponent seen */ signseen = FALSE; /* We can read '+' now */ radix = 10; /* Decimal exponent */ } else #endif if (radix != 16 && c == '.') { if (dotflag) /* Saw dot already? */ break; /* Exit loop, two dots */ dotflag = TRUE; /* Remember the dot */ radix = 10; /* Decimal fraction */ } else if (c == '+' || c == '-') { /* 1.0e+10 */ if (signseen) /* Sign in wrong place? */ break; /* Exit loop, not nbr. */ /* signseen = TRUE; */ /* Remember we saw it */ } else { /* Check the digit */ switch (c) { case '8': case '9': /* Sometimes wrong */ octal89 = TRUE; /* Do check later */ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': break; /* Always ok */ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': if (radix == 16) /* Alpha's are ok only */ break; /* if reading hex. */ default: /* At number end */ done=TRUE; /* Break from for loop */ continue; } /* End of switch */ } /* End general case */ ret=(*outfun)(global, c); /* Accept the character */ if(ret) return(ret); signseen = TRUE; /* Don't read sign now */ c = get(global); /* Read another char */ } /* End of scan loop */ /* * When we break out of the scan loop, c contains the first * character (maybe) not in the number. If the number is an * integer, allow a trailing 'L' for long and/or a trailing 'U' * for unsigned. If not those, push the trailing character back * on the input stream. Floating point numbers accept a trailing * 'L' for "long double". */ #ifndef GDLPP if (dotflag || expseen) { /* Floating point? */ if (c == 'l' || c == 'L') { ret=(*outfun)(global, c); if(ret) return(ret); c = get(global); /* Ungotten later */ } } else { /* Else it's an integer */ /* * We know that dotflag and expseen are both zero, now: * dotflag signals "saw 'L'", and * expseen signals "saw 'U'". */ char done=TRUE; while(done) { switch (c) { case 'l': case 'L': if (dotflag) { done=FALSE; continue; } dotflag = TRUE; break; case 'u': case 'U': if (expseen) { done=FALSE; continue; } expseen = TRUE; break; default: done=FALSE; continue; } ret=(*outfun)(global, c); /* Got 'L' or 'U'. */ if(ret) return(ret); c = get(global); /* Look at next, too. */ } } #endif unget(global); /* Not part of a number */ if(!(global->webmode)) { if (octal89 && radix == 8) cwarn(global, WARN_ILLEGAL_OCTAL); } return(FPP_OK); } ReturnCode save(struct Global *global, int c) { if (global->workp >= &global->work[NWORK]) { cfatal(global, FATAL_WORK_BUFFER_OVERFLOW); return(FPP_WORK_AREA_OVERFLOW); } else *global->workp++ = c; return(FPP_OK); } char *savestring(struct Global *global, char *text) { /* * Store a string into free memory. */ char *result; result = Getmem(global, strlen(text) + 1); strcpy(result, text); return (result); } ReturnCode getfile(struct Global *global, size_t bufsize, /* Line or define buffer size */ char *name, FILEINFO **file) /* File or macro name string */ { /* * Common FILEINFO buffer initialization for a new file or macro. */ size_t size; size = strlen(name); /* File/macro name */ if(!size) { name = "[stdin]"; size = strlen(name); } *file = (FILEINFO *) Getmem(global, sizeof (FILEINFO) + bufsize + size); if(!*file) return(FPP_OUT_OF_MEMORY); (*file)->parent = global->infile; /* Chain files together */ (*file)->fp = NULL; /* No file yet */ (*file)->filename = savestring(global, name); /* Save file/macro name */ (*file)->progname = NULL; /* No #line seen yet */ (*file)->unrecur = 0; /* No macro fixup */ (*file)->bptr = (*file)->buffer; /* Initialize line ptr */ (*file)->buffer[0] = EOS; /* Force first read */ (*file)->line = 0; /* (Not used just yet) */ if (global->infile != NULL) /* If #include file */ global->infile->line = global->line; /* Save current line */ global->infile = (*file); /* New current file */ global->line = 1; /* Note first line */ return(FPP_OK); /* All done. */ } void Freemem(void *ptr) { /* * Free a block of memory! */ Free(ptr); } char *Getmem(struct Global *global, size_t size) { /* * Get a block of free memory. */ char *result; if ((result = (char *)Malloc(size)) == NULL) cfatal(global, FATAL_OUT_OF_MEMORY); return(result); } FILE_LOCAL char *incmem(struct Global *global, char *obj, int size) { /* * Get a block of free memory. */ char *result; if ((result = Realloc(obj, (unsigned) size)) == NULL) cfatal(global, FATAL_OUT_OF_MEMORY); return(result); } /* * C P P S y m b o l T a b l e s */ DEFBUF *lookid(struct Global *global, int c) /* First character of token */ { /* * Look for the next token in the symbol table. Returns token in tokenbuf. * If found, returns the table pointer; Else returns NULL. */ int nhash; DEFBUF *dp; int ct; int temp; int isrecurse; /* For #define foo foo */ nhash = 0; temp = 0; if ((isrecurse = (c == DEF_MAGIC))) /* If recursive macro */ c = get(global); /* hack, skip DEF_MAGIC */ ct = 0; do { if (ct == global->tokenbsize) global->tokenbuf = incmem(global, global->tokenbuf, 1 + (global->tokenbsize *= 2)); global->tokenbuf[ct++] = c; /* Store token byte */ nhash += c; /* Update hash value */ c = get(global); } while (type[c] == LET || type[c] == DIG); unget(global); /* Rescan terminator */ global->tokenbuf[ct] = EOS; /* Terminate token */ if (isrecurse) /* Recursive definition */ return(NULL); /* undefined just now */ nhash += ct; /* Fix hash value */ dp = global->symtab[nhash % SBSIZE]; /* Starting bucket */ while (dp != (DEFBUF *) NULL) { /* Search symbol table */ if (dp->hash == nhash /* Fast precheck */ && (temp = strcmp(dp->name, global->tokenbuf)) >= 0) break; dp = dp->link; /* Nope, try next one */ } return((temp == 0) ? dp : NULL); } DEFBUF *defendel(struct Global *global, char *name, int delete) /* TRUE to delete a symbol */ { /* * Enter this name in the lookup table (delete = FALSE) * or delete this name (delete = TRUE). * Returns a pointer to the define block (delete = FALSE) * Returns NULL if the symbol wasn't defined (delete = TRUE). */ DEFBUF *dp; DEFBUF **prevp; char *np; uintptr_t nhash; int temp; size_t size; for (nhash = 0, np = name; *np != EOS;) nhash += *np++; size = (np - name); nhash += size; prevp = &global->symtab[nhash % SBSIZE]; while ((dp = *prevp) != (DEFBUF *) NULL) { if (dp->hash == nhash && (temp = strcmp(dp->name, name)) >= 0) { if (temp > 0) dp = NULL; /* Not found */ else { *prevp = dp->link; /* Found, unlink and */ if (dp->repl != NULL) /* Free the replacement */ Freemem(dp->repl); /* if any, and then */ Freemem((char *) dp); /* Free the symbol */ } break; } prevp = &dp->link; } if (!delete) { dp = (DEFBUF *) Getmem(global, (int) (sizeof (DEFBUF) + size)); dp->link = *prevp; *prevp = dp; dp->hash = nhash; dp->repl = NULL; dp->nargs = 0; strcpy(dp->name, name); } return(dp); } void outdefines(struct Global *global) { DEFBUF *dp; DEFBUF **syp; deldefines(global); /* Delete built-in #defines */ for (syp = global->symtab; syp < &global->symtab[SBSIZE]; syp++) { if ((dp = *syp) != (DEFBUF *) NULL) { do { outadefine(global, dp); } while ((dp = dp->link) != (DEFBUF *) NULL); } } } INLINE FILE_LOCAL void outadefine(struct Global *global, DEFBUF *dp) { char *cp; int c; /* printf("#define %s", dp->name); */ Putstring(global, "#define "); Putstring(global, dp->name); if (dp->nargs > 0) { int i; Putchar(global, '('); for (i = 1; i < dp->nargs; i++) { /* printf("__%d,", i); */ Putstring(global, "__"); Putint(global, i); Putchar(global, ','); } /* printf("__%d)", i); */ Putstring(global, "__"); Putint(global, i); Putchar(global, ')'); } else if (dp->nargs == 0) { Putstring(global, "()"); } if (dp->repl != NULL) { Putchar(global, '\t'); for (cp = dp->repl; (c = *cp++ & 0xFF) != EOS;) { if (c >= MAC_PARM && c < (MAC_PARM + PAR_MAC)) { /* printf("__%d", c - MAC_PARM + 1); */ Putstring(global, "__"); Putint(global, c - MAC_PARM + 1); } else if (isprint(c) || c == '\t' || c == '\n') Putchar(global, c); else switch (c) { case QUOTE_PARM: Putchar(global, '#'); break; case DEF_MAGIC: /* Special anti-recursion */ case MAC_PARM + PAR_MAC: /* Special "arg" marker */ break; case COM_SEP: #if COMMENT_INVISIBLE Putstring(global, "/**/"); #else Putchar(global, ' '); #endif break; case TOK_SEP: Putstring(global, "##"); break; default: { /* Octal output! */ char buffer[32]; sprintf(buffer, "\\0%o", c); Putstring(global, buffer); } } } } Putchar(global, '\n'); } /* * G E T */ int get(struct Global *global) { /* * Return the next character from a macro or the current file. * Handle end of file from #include files. */ int c; FILEINFO *file; int popped; /* Recursion fixup */ long comments=0; popped = 0; get_from_file: if ((file = global->infile) == NULL) return (EOF_CHAR); newline: /* * Read a character from the current input line or macro. * At EOS, either finish the current macro (freeing temp. * storage) or read another line from the current input file. * At EOF, exit the current file (#include) or, at EOF from * the cpp input file, return EOF_CHAR to finish processing. */ if ((c = *file->bptr++ & 0xFF) == EOS) { /* * Nothing in current line or macro. Get next line (if * input from a file), or do end of file/macro processing. * In the latter case, jump back to restart from the top. */ if (file->fp == NULL) { /* NULL if macro */ popped++; global->recursion -= file->unrecur; if (global->recursion < 0) global->recursion = 0; global->infile = file->parent; /* Unwind file chain */ } else { /* Else get from a file */ /* * If a input routine has been specified in the initial taglist, * we should get the next line from that function IF we're reading * from that certain file! */ if(global->input && global->first_file && !strcmp(global->first_file, file->filename)) file->bptr = global->input(file->buffer, NBUFF, global->userdata); else file->bptr = fgets(file->buffer, NBUFF, file->fp); if(file->bptr != NULL) { goto newline; /* process the line */ } else { if(!(global->input && global->first_file && !strcmp(global->first_file, file->filename))) /* If the input function isn't user supplied, close the file! */ fclose(file->fp); /* Close finished file */ if ((global->infile = file->parent) != NULL) { /* * There is an "ungotten" newline in the current * infile buffer (set there by doinclude() in * cpp1.c). Thus, we know that the mainline code * is skipping over blank lines and will do a * #line at its convenience. */ global->wrongline = TRUE; /* Need a #line now */ } } } /* * Free up space used by the (finished) file or macro and * restart input from the parent file/macro, if any. */ Freemem(file->filename); /* Free name and */ if (file->progname != NULL) /* if a #line was seen, */ Freemem(file->progname); /* free it, too. */ Freemem(file); /* Free file space */ if (global->infile == NULL) /* If at end of file */ return (EOF_CHAR); /* Return end of file */ global->line = global->infile->line; /* Reset line number */ goto get_from_file; /* Get from the top. */ } /* * Common processing for the new character. */ if (c == '\r') { c = get(global); if (c != '\n') { unget(global); c = '\n'; } } if (c == DEF_MAGIC && file->fp != NULL) /* Don't allow delete */ goto newline; /* from a file */ if (file->parent != NULL) { /* Macro or #include */ if (popped != 0) file->parent->unrecur += popped; else { global->recursion -= file->parent->unrecur; if (global->recursion < 0) global->recursion = 0; file->parent->unrecur = 0; } } if (c == '\n') /* Maintain current */ ++global->line; /* line counter */ if (global->instring) /* Strings just return */ return (c); /* the character. */ else if (c == '/') { /* Comment? */ global->instring = TRUE; /* So get() won't loop */ /* Check next byte for '*' and if(cplusplus) also '/' */ if ( (c = get(global)) != '*' ) if(!global->cplusplus || (global->cplusplus && c!='/')) { global->instring = FALSE; /* Nope, no comment */ unget(global); /* Push the char. back */ return ('/'); /* Return the slash */ } comments = 1; if (global->keepcomments) { /* If writing comments */ global->comment = TRUE; /* information that a comment has been output */ if(global->showspace) { /* Show all whitespaces! */ global->spacebuf[global->chpos] = '\0'; Putstring(global, global->spacebuf); } if(c=='*') { Putchar(global, '/'); /* Write out the */ Putchar(global, '*'); /* initializer */ } else { /* C++ style comment */ Putchar(global, '/'); /* Write out the */ Putchar(global, '/'); /* initializer */ } } if(global->cplusplus && c=='/') { /* Eat C++ comment! */ do { c=get(global); if(global->keepcomments) Putchar(global, c); } while(c!='\n' && c!=EOF_CHAR); /* eat all to EOL or EOF */ global->instring = FALSE; /* End of comment */ return(c); /* Return the end char */ } for (;;) { /* Eat a comment */ c = get(global); test: if (global->keepcomments && c != EOF_CHAR) Putchar(global, c); switch (c) { case EOF_CHAR: cerror(global, ERROR_EOF_IN_COMMENT); return (EOF_CHAR); case '/': if(global->nestcomments || global->warnnestcomments) { if((c = get(global)) != '*') goto test; if(global->warnnestcomments) { cwarn(global, WARN_NESTED_COMMENT); } if(global->nestcomments) comments++; } break; case '*': if ((c = get(global)) != '/') /* If comment doesn't */ goto test; /* end, look at next */ if (global->keepcomments) { /* Put out the comment */ Putchar(global, c); /* terminator, too */ } if(--comments) /* nested comment, continue! */ break; global->instring = FALSE; /* End of comment, */ /* * A comment is syntactically "whitespace" -- * however, there are certain strange sequences * such as * #define foo(x) (something) * foo|* comment *|(123) * these are '/' ^ ^ * where just returning space (or COM_SEP) will cause * problems. This can be "fixed" by overwriting the * '/' in the input line buffer with ' ' (or COM_SEP) * but that may mess up an error message. * So, we peek ahead -- if the next character is * "whitespace" we just get another character, if not, * we modify the buffer. All in the name of purity. */ if (*file->bptr == '\n' || type[*file->bptr & 0xFF] == SPA) goto newline; #if COMMENT_INVISIBLE /* * Return magic (old-fashioned) syntactic space. */ return ((file->bptr[-1] = COM_SEP)); #else return ((file->bptr[-1] = ' ')); #endif case '\n': /* we'll need a #line */ if (!global->keepcomments) global->wrongline = TRUE; /* later... */ default: /* Anything else is */ break; /* Just a character */ } /* End switch */ } /* End comment loop */ } /* End if in comment */ else if (!global->inmacro && c == '\\') { /* If backslash, peek */ if ((c = get(global)) == '\n') { /* for a . If so, */ global->wrongline = TRUE; goto newline; } else { /* Backslash anything */ unget(global); /* Get it later */ return ('\\'); /* Return the backslash */ } } else if (c == '\f' || c == VT) /* Form Feed, Vertical */ c = ' '; /* Tab are whitespace */ return (c); /* Just return the char */ } void unget(struct Global *global) { /* * Backup the pointer to reread the last character. Fatal error * (code bug) if we backup too far. unget() may be called, * without problems, at end of file. Only one character may * be ungotten. If you need to unget more, call ungetstring(). */ FILEINFO *file; if ((file = global->infile) == NULL) return; /* Unget after EOF */ if (--file->bptr < file->buffer) { cfatal(global, FATAL_TOO_MUCH_PUSHBACK); /* This happens only if used the wrong way! */ return; } if (*file->bptr == '\n') /* Ungetting a newline? */ --global->line; /* Unget the line number, too */ } ReturnCode ungetstring(struct Global *global, char *text) { /* * Push a string back on the input stream. This is done by treating * the text as if it were a macro. */ FILEINFO *file; ReturnCode ret; ret = getfile(global, strlen(text) + 1, "", &file); if(!ret) strcpy(file->buffer, text); return(ret); } int cget(struct Global *global) { /* * Get one character, absorb "funny space" after comments or * token concatenation */ int c; do { c = get(global); #if COMMENT_INVISIBLE } while (c == TOK_SEP || c == COM_SEP); #else } while (c == TOK_SEP); #endif return (c); } /* * Error messages and other hacks. */ INLINE FILE_LOCAL void domsg(struct Global *global, ErrorCode error, /* error message number */ va_list arg) /* Something for the message */ { /* * Print filenames, macro names, and line numbers for error messages. */ static char *ErrorMessage[]={ /* * ERRORS: */ "#%s must be in an #if", "#%s may not follow #else", "#error directive encountered", "Preprocessor assertion failure", "#if, #ifdef, or #ifndef without an argument", "#include syntax error", "#define syntax error", "Redefining defined variable \"%s\"", "Illegal #undef argument", "Recursive macro definition of \"%s\"(Defined by \"%s\")", "end of file within macro argument", "misplaced constant in #if", "#if value stack overflow", "Illegal #if line", "Operator %s in incorrect context", "expression stack overflow at op \"%s\"", "unbalanced paren's, op is \"%s\"", "Misplaced '?' or ':', previous operator is %s", "Can't use a string in an #if", "Bad #if ... defined() syntax", "= not allowed in #if", "Unexpected \\ in #if", "#if ... sizeof() syntax error", "#if sizeof, unknown type \"%s\"", "#if ... sizeof: illegal type combination", "#if sizeof() error, no type specified", "Unterminated string", "EOF in comment", "Inside #ifdef block at end of input, depth = %d", "illegal character '%c' in #if", "illegal character (%d decimal) in #if", "#if ... sizeof: bug, unknown type code 0x%x", "#if bug, operand = %d.", "Strange character '%c' after ##", "Strange character (%d.) after ##", "", /* Dummy, to visualize the border between errors and warnings */ /* * WARNINGS: */ "Control line \"%s\" within macro expansion", "Illegal # command \"%s\"", "Unexpected text in #control line ignored", "too few values specified to sizeof", "too many values specified to sizeof! Not used.", "\"%s\" wasn't defined", "Internal error!", "Macro \"%s\" needs arguments", "Wrong number of macro arguments for \"%s\"", "%s by zero in #if, zero result assumed", "Illegal digit in octal number", "multi-byte constant '%c' isn't portable", "Cannot open include file \"%s\"", "Illegal bracket '[]' balance, depth = %d", "Illegal parentheses '()' balance, depth = %d", "Illegal brace '{}' balance, depth = %d", "Nested comment", "", /* Dummy, to visualize the border between warnings and fatals */ /* * FATALS: */ "Too many nested #%s statements", "Filename work buffer overflow", "Too many include directories", "Too many include files", "Too many arguments for macro", "Macro work area overflow", "Bug: Illegal __ macro \"%s\"", "Too many arguments in macro expansion", "Out of space in macro \"%s\" arg expansion", "work buffer overflow doing %s ##", "Work buffer overflow", "Out of memory", "Too much pushback", /* internal */ }; char *tp; FILEINFO *file; char *severity=errorinfile; file && !file->fp; file = file->parent) ; tp = file ? file->filename : 0; Error(global, "%s\"%s\", line %d: %s: ", MSG_PREFIX, tp, global->infile->fp?global->line:file->line, severity); if(global->error) global->error(global->userdata, ErrorMessage[error], arg); #if defined(unix) else vfprintf(stderr, ErrorMessage[error], arg); #elif defined(AMIGA) else return; #endif Error(global, "\n"); if (file) /*OIS*0.92*/ while ((file = file->parent) != NULL) { /* Print #includes, too */ tp = file->parent ? "," : "."; if (file->fp == NULL) Error(global, " from macro %s%s\n", file->filename, tp); else Error(global, " from file %s, line %d%s\n", (file->progname != NULL) ? file->progname : file->filename, file->line, tp); } if(errorerrors++; } void cerror(struct Global *global, ErrorCode message, ...) /* arguments */ { /* * Print a normal error message, string argument. */ va_list arg; va_start(arg, message); domsg(global, message, arg); } void Error(struct Global *global, char *format, ...) { /* * Just get the arguments and send a decent string to the user error * string handler or to stderr. */ va_list arg; va_start(arg, format); if(global->error) global->error(global->userdata, format, arg); #if defined(unix) else vfprintf(stderr, format, arg); #endif } grcompiler-5.2.1/preprocessor/cppadd.h000066400000000000000000000344371411153030700200220ustar00rootroot00000000000000/****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cppadd.h,v $ * $Revision: 1.2 $ * $Date: 2003/07/17 10:16:34 $ * $Author: mhosken $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cppadd.h,v $ * Revision 1.2 2003/07/17 10:16:34 mhosken * Main linux port checkin * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.5 1994/01/24 09:38:12 start * Added the 'rightconcat' in the global structure. * * Revision 1.4 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.3 1993/11/29 14:01:13 start * New features added * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:15:59 start * Initial revision * * *****************************************************************************/ /********************************************************************** * * cppadd.h * * Prototypes and structures added by Daniel Stenberg. * *******/ #include #include #include "memory.h" struct Global { /* * Commonly used global variables: * line is the current input line number. * wrongline is set in many places when the actual output * line is out of sync with the numbering, e.g, * when expanding a macro with an embedded newline. * * tokenbuf holds the last identifier scanned (which might * be a candidate for macro expansion). * errors is the running cpp error counter. * infile is the head of a linked list of input files (extended by * #include and macros being expanded). infile always points * to the current file/macro. infile->parent to the includer, * etc. infile->fd is NULL if this input stream is a macro. */ int line; /* Current line number */ int wrongline; /* Force #line to compiler */ char *tokenbuf; /* Buffer for current input token */ char *functionname; /* Buffer for current function */ int funcline; /* Line number of current function */ int tokenbsize; /* Allocated size of tokenbuf, */ /* not counting zero at end. */ int errors; /* cpp error counter */ FILEINFO *infile; /* Current input file */ #if DEBUG int debug; /* TRUE if debugging now */ #endif /* * This counter is incremented when a macro expansion is initiated. * If it exceeds a built-in value, the expansion stops -- this tests * for a runaway condition: * #define X Y * #define Y X * X * This can be disabled by falsifying rec_recover. (Nothing does this * currently: it is a hook for an eventual invocation flag.) */ int recursion; /* Infinite recursion counter */ int rec_recover; /* Unwind recursive macros */ /* * instring is set TRUE when a string is scanned. It modifies the * behavior of the "get next character" routine, causing all characters * to be passed to the caller (except ). Note especially that * comments and \ are not removed from the source. (This * prevents cpp output lines from being arbitrarily long). * * inmacro is set by #define -- it absorbs comments and converts * form-feed and vertical-tab to space, but returns \ * to the caller. Strictly speaking, this is a bug as \ * shouldn't delimit tokens, but we'll worry about that some other * time -- it is more important to prevent infinitly long output lines. * * instring and inmarcor are parameters to the get() routine which * were made global for speed. */ int instring; /* TRUE if scanning string */ int inmacro; /* TRUE if #defining a macro */ /* * work[] and workp are used to store one piece of text in a temporay * buffer. To initialize storage, set workp = work. To store one * character, call save(c); (This will fatally exit if there isn't * room.) To terminate the string, call save(EOS). Note that * the work buffer is used by several subroutines -- be sure your * data won't be overwritten. The extra byte in the allocation is * needed for string formal replacement. */ char work[NWORK + 1]; /* Work buffer */ char *workp; /* Work buffer pointer */ /* * keepcomments is set TRUE by the -C option. If TRUE, comments * are written directly to the output stream. This is needed if * the output from cpp is to be passed to lint (which uses commands * embedded in comments). cflag contains the permanent state of the * -C flag. keepcomments is always falsified when processing #control * commands and when compilation is supressed by a false #if * * If eflag is set, CPP returns "success" even if non-fatal errors * were detected. * * If nflag is non-zero, no symbols are predefined except __LINE__. * __FILE__, and __DATE__. If nflag > 1, absolutely no symbols * are predefined. */ char keepcomments; /* Write out comments flag */ char cflag; /* -C option (keep comments) */ char eflag; /* -E option (never fail) */ char nflag; /* -N option (no predefines) */ char wflag; /* -W option (write #defines) */ /* * ifstack[] holds information about nested #if's. It is always * accessed via *ifptr. The information is as follows: * WAS_COMPILING state of compiling flag at outer level. * ELSE_SEEN set TRUE when #else seen to prevent 2nd #else. * TRUE_SEEN set TRUE when #if or #elif succeeds * ifstack[0] holds the compiling flag. It is TRUE if compilation * is currently enabled. Note that this must be initialized TRUE. */ char ifstack[BLK_NEST]; /* #if information */ char *ifptr; /* -> current ifstack[] */ /* * incdir[] stores the -i directories (and the system-specific * #include <...> directories. */ char *incdir[NINCLUDE]; /* -i directories */ char **incend; /* -> free space in incdir[] */ /* * include[] stores the -X and -x files. */ char *include[NINCLUDE]; uint8_t includeshow[NINCLUDE]; /* show it or not! */ uint8_t included; /* * This is the table used to predefine target machine and operating * system designators. It may need hacking for specific circumstances. * Note: it is not clear that this is part of the Ansi Standard. * The -B option supresses preset definitions. */ char *preset[5]; /* names defined at cpp start */ /* * The value of these predefined symbols must be recomputed whenever * they are evaluated. The order must not be changed. */ char *magic[5]; /* Note: order is important */ /* * This is the variable saying if Cpp should remove C++ style comments from * the output. Default is... TRUE, yes, pronto, do it!!! */ char cplusplus; char *sharpfilename; /* * parm[], parmp, and parlist[] are used to store #define() argument * lists. nargs contains the actual number of parameters stored. */ char parm[NPARMWORK + 1]; /* define param work buffer */ char *parmp; /* Free space in parm */ char *parlist[LASTPARM]; /* -> start of each parameter */ int nargs; /* Parameters for this macro */ DEFBUF *macro; /* Catches start of infinite macro */ DEFBUF *symtab[SBSIZE]; /* Symbol table queue headers */ int evalue; /* Current value from evallex() */ char *(*input)(char *, int, void *); /* Input function */ char *first_file; /* Preprocessed file. */ void *userdata; /* Data sent to input function */ void (*output)(int, void *); /* output function */ void (*error)(void *, char *, va_list); /* error function */ char linelines; char warnillegalcpp; /* warn for illegal preprocessor instructions? */ char outputLINE; /* output 'line' in #line instructions */ char showversion; /* display version */ char showincluded; /* display included files */ char showbalance; /* display paren balance */ char showspace; /* display all whitespaces as they are */ char comment; /* TRUE if a comment just has been written to output */ char *spacebuf; /* Buffer to store whitespaces in if -H */ long chpos; /* Number of whitespaces in buffer */ char nestcomments; /* Allow nested comments */ char warnnestcomments; /* Warn at nested comments */ char warnnoinclude; /* Warn at missing include file */ char outputfile; /* output the main file */ char out; /* should we output anything now? */ char rightconcat; /* should the right part of a concatenation be avaluated before the concat (TRUE) or after (FALSE) */ char *initialfunc; /* file to include first in all functions */ char *excludedinit[20]; /* functions (names) excluded from the initfunc */ int excluded; char outputfunctions; /* output all discovered functions to stderr! */ char webmode; /* WWW process mode */ }; typedef enum { ERROR_STRING_MUST_BE_IF, ERROR_STRING_MAY_NOT_FOLLOW_ELSE, ERROR_ERROR, ERROR_PREPROC_FAILURE, ERROR_MISSING_ARGUMENT, ERROR_INCLUDE_SYNTAX, ERROR_DEFINE_SYNTAX, ERROR_REDEFINE, ERROR_ILLEGAL_UNDEF, ERROR_RECURSIVE_MACRO, ERROR_EOF_IN_ARGUMENT, ERROR_MISPLACED_CONSTANT, ERROR_IF_OVERFLOW, ERROR_ILLEGAL_IF_LINE, ERROR_OPERATOR, ERROR_EXPR_OVERFLOW, ERROR_UNBALANCED_PARENS, ERROR_MISPLACED, ERROR_STRING_IN_IF, ERROR_DEFINED_SYNTAX, ERROR_ILLEGAL_ASSIGN, ERROR_ILLEGAL_BACKSLASH, ERROR_SIZEOF_SYNTAX, ERROR_SIZEOF_UNKNOWN, ERROR_SIZEOF_ILLEGAL_TYPE, ERROR_SIZEOF_NO_TYPE, ERROR_UNTERMINATED_STRING, ERROR_EOF_IN_COMMENT, ERROR_IFDEF_DEPTH, ERROR_ILLEGAL_CHARACTER, ERROR_ILLEGAL_CHARACTER2, ERROR_SIZEOF_BUG, ERROR_IF_OPERAND, ERROR_STRANG_CHARACTER, ERROR_STRANG_CHARACTER2, BORDER_ERROR_WARN, /* below this number: errors, above: warnings */ WARN_CONTROL_LINE_IN_MACRO, WARN_ILLEGAL_COMMAND, WARN_UNEXPECTED_TEXT_IGNORED, WARN_TOO_FEW_VALUES_TO_SIZEOF, WARN_TOO_MANY_VALUES_TO_SIZEOF, WARN_NOT_DEFINED, WARN_INTERNAL_ERROR, WARN_MACRO_NEEDS_ARGUMENTS, WARN_WRONG_NUMBER_ARGUMENTS, WARN_DIVISION_BY_ZERO, WARN_ILLEGAL_OCTAL, WARN_MULTIbyte_NOT_PORTABLE, WARN_CANNOT_OPEN_INCLUDE, WARN_BRACKET_DEPTH, WARN_PAREN_DEPTH, WARN_BRACE_DEPTH, WARN_NESTED_COMMENT, BORDER_WARN_FATAL, /* below this number: warnings, above: fatals */ FATAL_TOO_MANY_NESTINGS, FATAL_FILENAME_BUFFER_OVERFLOW, FATAL_TOO_MANY_INCLUDE_DIRS, FATAL_TOO_MANY_INCLUDE_FILES, FATAL_TOO_MANY_ARGUMENTS_MACRO, FATAL_MACRO_AREA_OVERFLOW, FATAL_ILLEGAL_MACRO, FATAL_TOO_MANY_ARGUMENTS_EXPANSION, FATAL_OUT_OF_SPACE_IN_ARGUMENT, FATAL_WORK_AREA_OVERFLOW, FATAL_WORK_BUFFER_OVERFLOW, FATAL_OUT_OF_MEMORY, FATAL_TOO_MUCH_PUSHBACK } ErrorCode; /********************************************************************** * RETURN CODES: *********************************************************************/ typedef enum { FPP_OK, FPP_OUT_OF_MEMORY, FPP_TOO_MANY_NESTED_STATEMENTS, FPP_FILENAME_BUFFER_OVERFLOW, FPP_NO_INCLUDE, FPP_OPEN_ERROR, FPP_TOO_MANY_ARGUMENTS, FPP_WORK_AREA_OVERFLOW, FPP_ILLEGAL_MACRO, FPP_EOF_IN_MACRO, FPP_OUT_OF_SPACE_IN_MACRO_EXPANSION, FPP_ILLEGAL_CHARACTER, FPP_CANT_USE_STRING_IN_IF, FPP_BAD_IF_DEFINED_SYNTAX, FPP_IF_ERROR, FPP_SIZEOF_ERROR, FPP_UNTERMINATED_STRING, FPP_TOO_MANY_INCLUDE_DIRS, FPP_TOO_MANY_INCLUDE_FILES, FPP_INTERNAL_ERROR, FPP_LAST_ERROR } ReturnCode; /* Nasty defines to make them appear as three different functions! */ #define cwarn cerror #define cfatal cerror /********************************************************************** * PROTOTYPES: *********************************************************************/ int PREFIX fppPreProcess(REG(a0) struct fppTag *); void Freemem(void *); void Error(struct Global *, char *, ...); void Putchar(struct Global *, int); void Putstring(struct Global *, char *); void Putint(struct Global *, int); char *savestring(struct Global *, char *); ReturnCode addfile(struct Global *, FILE *, char *); int catenate(struct Global *, ReturnCode *); void cerror(struct Global *, ErrorCode, ...); ReturnCode control(struct Global *, int *); ReturnCode dodefine(struct Global *); int dooptions(struct Global *, struct fppTag *); void doundef(struct Global *); void dumpparm(char *); ReturnCode expand(struct Global *, DEFBUF *); int get(struct Global *); ReturnCode initdefines(struct Global *); void outdefines(struct Global *); ReturnCode save(struct Global *, int); void scanid(struct Global *, int); ReturnCode scannumber(struct Global *, int, ReturnCode(*)(struct Global *, int)); ReturnCode scanstring(struct Global *, int, ReturnCode(*)(struct Global *, int)); void unget(struct Global *); ReturnCode ungetstring(struct Global *, char *); ReturnCode eval(struct Global *, int *); #ifdef DEBUG_EVAL void dumpstack(OPTAB[NEXP], register OPTAB *, int [NEXP], register int *); #endif void skipnl(struct Global *); int skipws(struct Global *); ReturnCode macroid(struct Global *, int *); ReturnCode getfile(struct Global *, size_t, char *, FILEINFO **); DEFBUF *lookid(struct Global *, int ); DEFBUF *defendel(struct Global *, char *, int); #if DEBUG void dumpdef(char *); void dumpadef(char *, register DEFBUF *); #endif ReturnCode openfile(struct Global *,char *); int cget(struct Global *); void deldefines(struct Global *); char *Getmem(struct Global *, size_t); ReturnCode openinclude(struct Global *, char *, int); ReturnCode expstuff(struct Global *, char *, char *); grcompiler-5.2.1/preprocessor/cppdef.h000066400000000000000000000250751411153030700200260ustar00rootroot00000000000000/****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/cppdef.h,v $ * $Revision: 1.1 $ * $Date: 2003/04/21 21:24:18 $ * $Author: wardak $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: cppdef.h,v $ * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.4 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.3 1993/11/29 14:01:13 start * New features added * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:15:59 start * Initial revision * * *****************************************************************************/ #ifdef EMACS /* Use the Emacs config file to find out what type of machine */ #define NO_SHORTNAMES /* Convert Emacs's conventions for BIG_ENDIAN to cpp's convention. */ #ifdef BIG_ENDIAN #undef BIG_ENDIAN #define BIG_ENDIAN TRUE #else /* not BIG_ENDIAN */ #define BIG_ENDIAN FALSE #endif /* BIG_ENDIAN */ /* Emacs uses the names index and rindex and defines them as str(r)chr if nec; cpp uses the opposite convention. Here we flush the macro definitions for Emacs and add the ones cpp wants. */ #ifdef index #undef index #undef rindex #else /* index is not defined as a macro */ #define strchr index #define strrchr rindex #endif /* index is not defined as a macro */ #define NBUFF 2048 #define NWORK 2048 #endif /* EMACS */ /* * S y s t e m D e p e n d e n t * D e f i n i t i o n s f o r C P P * * Definitions in this file may be edited to configure CPP for particular * host operating systems and target configurations. * * NOTE: cpp assumes it is compiled by a compiler that supports macros * with arguments. If this is not the case (as for Decus C), #define * nomacarg -- and provide function equivalents for all macros. * * cpp also assumes the host and target implement the Ascii character set. * If this is not the case, you will have to do some editing here and there. */ /* * This redundant definition of TRUE and FALSE works around * a limitation of Decus C. */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif /* * Define the HOST operating system. This is needed so that * cpp can use appropriate filename conventions. */ #define SYS_UNKNOWN 0 #define SYS_UNIX 1 #define SYS_VMS 2 #define SYS_RSX 3 #define SYS_RT11 4 #define SYS_LATTICE 5 #define SYS_ONYX 6 #define SYS_68000 7 #define SYS_AMIGADOS 8 #define SYS_MSDOS 9 #ifdef _MSC_VER #undef HOST #define HOST SYS_MSDOS #endif #ifndef HOST #ifdef unix #define HOST SYS_UNIX #else #ifdef amiga #define HOST SYS_AMIGADOS #else #error "Unknown HOST system" #endif #endif #endif /* * We assume that the target is the same as the host system */ #ifndef TARGET #define TARGET HOST #endif /* * In order to predefine machine-dependent constants, * several strings are defined here: * * MACHINE defines the target cpu (by name) * SYSTEM defines the target operating system * COMPILER defines the target compiler * * The above may be #defined as "" if they are not wanted. * They should not be #defined as NULL. * * LINE_PREFIX defines the # output line prefix, if not "line" * This should be defined as "" if cpp is to replace * the "standard" C pre-processor. */ #define LINE_PREFIX "line" /* * FILE_LOCAL marks functions which are referenced only in the * file they reside. Some C compilers allow these * to be marked "static" even though they are referenced * by "extern" statements elsewhere. * * OK_DOLLAR Should be set TRUE if $ is a valid alphabetic character * in identifiers (default), or zero if $ is invalid. * Default is TRUE. * * OK_CONCAT Should be set TRUE if # may be used to concatenate * tokens in macros (per the Ansi Draft Standard) or * FALSE for old-style # processing (needed if cpp is * to process assembler source code). */ #define OK_CONCAT TRUE /* * OK_DATE Predefines the compilation date if set TRUE. * Not permitted by the Nov. 12, 1984 Draft Standard. */ #define OK_DATE FALSE /* * * OK_SIZEOF Permits sizeof in #if preprocessor expressions. * According to K&R V2 (page 232), this is not allowed. */ #define OK_SIZEOF TRUE /* * S_CHAR etc. Define the sizeof the basic TARGET machine word types. * By default, sizes are set to the values for the HOST * computer. If this is inappropriate, see the code in * cpp3.c for details on what to change. Also, if you * have a machine where sizeof (signed int) differs from * sizeof (unsigned int), you will have to edit code and * tables in cpp3.c (and extend the -S option definition.) * * CPP_LIBRARY May be defined if you have a site-specific include directory * which is to be searched *before* the operating-system * specific directories. */ #if HOST == SYS_AMIGADOS #define MACHINE "amiga", "m68000" #define SYSTEM "amigados" #endif #if HOST == SYS_MSDOS #define MACHINE "\"PC\"", "i386/Pentium XXX" #define SYSTEM "MS-DOS/Windows" #endif /* * defaults */ #ifndef MSG_PREFIX #define MSG_PREFIX "cpp: " #endif /* * OLD_PREPROCESSOR forces the definition of OK_DOLLAR, OK_CONCAT, * COMMENT_INVISIBLE to values appropriate for * an old-style preprocessor. */ #if OLD_PREPROCESSOR #define OK_DOLLAR FALSE #define OK_CONCAT FALSE #define COMMENT_INVISIBLE TRUE #endif /* * RECURSION_LIMIT may be set to -1 to disable the macro recursion test. */ #ifndef RECURSION_LIMIT #define RECURSION_LIMIT 1000 #endif /* * BITS_CHAR may be defined to set the number of bits per character. * it is needed only for multi-byte character constants. */ #ifndef BITS_CHAR #define BITS_CHAR 8 #endif /* * BIG_ENDIAN is set TRUE on machines (such as the IBM 360 series) * where 'ab' stores 'a' in the high-bits and 'b' in the low-bits. * It is set FALSE on machines (such as the PDP-11 and Vax-11) * where 'ab' stores 'a' in the low-bits and 'b' in the high-bits. * (Or is it the other way around?) -- Warning: BIG_ENDIAN code is untested. * [I *seems* to be the other way around, according to the code /OIS] */ #ifndef BIG_ENDIAN #define BIG_ENDIAN FALSE #endif /* * COMMENT_INVISIBLE may be defined to allow "old-style" comment * processing, whereby the comment becomes a zero-length token * delimiter. This permitted tokens to be concatenated in macro * expansions. This was removed from the Draft Ansi Standard. */ #ifndef COMMENT_INVISIBLE #define COMMENT_INVISIBLE FALSE #endif /* * OK_DOLLAR enables use of $ as a valid "letter" in identifiers. * This is a permitted extension to the Ansi Standard and is required * for e.g., VMS, RSX-11M, etc. It should be set FALSE if cpp is * used to preprocess assembler source on Unix systems. OLD_PREPROCESSOR * sets OK_DOLLAR FALSE for that reason. */ #ifndef OK_DOLLAR #define OK_DOLLAR TRUE #endif /* * OK_CONCAT enables (one possible implementation of) token concatenation. * If cpp is used to preprocess Unix assembler source, this should be * set FALSE as the concatenation character, #, is used by the assembler. */ #ifndef OK_CONCAT #define OK_CONCAT TRUE #endif /* * OK_DATE may be enabled to predefine today's date as a string * at the start of each compilation. This is apparently not permitted * by the Draft Ansi Standard. */ #ifndef OK_DATE #define OK_DATE TRUE #endif /* * OK_SIZEOF may be defined to allow sizeof(type) in #if expressions. * Actually, it is none of the preprocessors business how large these * things are, as they might be different with different compiler * options. Also, according to K&R V2, page 232, it is nonstandard. * This option was added in the PDC process, under no. *OIS*0.92*. */ #ifndef OK_SIZEOF #define OK_SIZEOF FALSE #endif /* * Some common definitions. */ #ifndef DEBUG #define DEBUG FALSE #endif /* * The following definitions are used to allocate memory for * work buffers. In general, they should not be modified * by implementors. * * PAR_MAC The maximum number of #define parameters (31 per Standard) * Note: we need another one for strings. * NBUFF Input buffer size * NWORK Work buffer size -- the longest macro * must fit here after expansion. * NEXP The nesting depth of #if expressions * NINCLUDE The number of directories that may be specified * on a per-system basis, or by the -I option. * BLK_NEST The number of nested #if's permitted. */ #ifndef PAR_MAC #define PAR_MAC (31 + 1) #endif #ifndef NBUFF #define NBUFF 512 #endif #ifndef NWORK #define NWORK 512 #endif #ifndef NEXP #define NEXP 128 #endif #ifndef NINCLUDE #define NINCLUDE 20 #endif #ifndef NPARMWORK #define NPARMWORK (NWORK * 2) #endif #ifndef BLK_NEST #define BLK_NEST 32 #endif /* * Some special constants. These may need to be changed if cpp * is ported to a wierd machine. * * NOTE: if cpp is run on a non-ascii machine, ALERT and VT may * need to be changed. They are used to implement the proposed * ANSI standard C control characters '\a' and '\v' only. * DEL is used to tag macro tokens to prevent #define foo foo * from looping. Note that we don't try to prevent more elaborate * #define loops from occurring. */ #ifndef ALERT #define ALERT '\007' /* '\a' is "Bell" */ #endif #ifndef VT #define VT '\013' /* Vertical Tab CTRL/K */ #endif /* * Functions can be declared/defined static to only become in the * scope for functions of the same source file. */ #ifndef FILE_LOCAL #define FILE_LOCAL static /* file-unique globals */ #endif /* * For compilers supporting inlining, the INLINE macro has been added to * functions called from only one place. There might still be some * functions that should have this macro. */ #ifdef AMIGA #define INLINE __inline /* Amiga compiler SAS/C 6.x supports this! */ #else #define INLINE /* don't support that kind of stuff */ #endif #if defined(AMIGA) && defined(SHARED) #define PREFIX __asm __saveds #define REG(x) register __ ## x #else #define PREFIX #define REG(x) #endif /* * SBSIZE defines the number of hash-table slots for the symbol table. */ #ifndef SBSIZE #define SBSIZE 64 #endif #ifdef GDLPP #define VERSION_TEXT "Frexx C Preprocessor v1.5 " \ "Copyright (C) by FrexxWare 1993 - 1997.\n" \ "Revised by SIL International for Graphite Description Language, " \ __DATE__ "\n" #else #define VERSION_TEXT "Frexx C Preprocessor v1.5 " \ "Copyright (C) by FrexxWare 1993 - 1997.\n" \ "Compiled by Daniel Stenberg " __DATE__ "\n" #endif grcompiler-5.2.1/preprocessor/fcpp-1.5.1.tar.gz000066400000000000000000001653621411153030700211370ustar00rootroot000000000000000Bfcpp-1.5.1.tar[ywFϿ)*t,&M he>[%0ɜӚLJUUefVj\=f(ˋ/>ShT08ǍFqhw~|\BT>5"8@/l3>4c51'O ;{9'|@_ҊNE7 |KЄ~XT,_`xqu +/OņD@/R0ϧ|Ϝg9\dz("竮J\BU\g#C)SFҕ!?/4VACͭy>(ykRMbDSC0r+<Uƶ{iD+$з|%(~ɓ4x _ϿtD5uerŝt'm07_CHg}y og4ͫ؛Ve>KvfY&SF~Sau5Q93 /B> wi.d@;ݛ9Kɬ6L_4BD|+[i"Ya$‡0Ka2GU4-(g`ҹ6GW}l2%~Cf-jFSf~`+&ooƝ^0KOXg{&lujD(W=ͦIxoҥfh9Naܝ p^nكNVU%wi9'Tmi9X'Q.}'V 2E Uz"-MO녲P=b];ltke1ӵ4(&n&.Gs9'Lip.1O}ag@e73@7ޥoO6%Q-$lyO-ĖqFMNC]D\ ,?RMg5"B Ampj<̝(-Ծ6ߙ#̼1On΍`v;^szzd|}5#W׽\0=6Qfp3Xur/3#}*}]Y21keUŇ_դ_}4ϪeXF2)Jdh끉 m=F2]Ъ,m&^*JG4 -E)c; `5En ̚WؽVEHWޚ^®RZ0Oz~=7LDffRk xػf]'GSTZ#sflV{؅GTPa&C^Vź+|>~? 3:_n}f%`bFM^Z'݈)=)<ƦCQv%WwHZMx,) $a4| n]0pm)_ {R-(.ޱB<<(ٝB\0ڔplDבfY,BSxLqz};^# ǗDܦo9RC>ŷáPF83`gnjmI/F_hO9,eQH/V0<;,&R[%v'I:WڙԢ"Gқu)j&DJI 9B:0m*[fGAMn| {,}6iK̢:&LS`(,-_LcǍJ&u#cS.YviAOlGDr~ d\W>y7؀fNBʺo/_R,;%OyZi?EX#tXb-WWD)O1@*8jG3 FS$` ͧ{bkPb2yܻJvJ{eCw$'~o3,tf^Ep4Q%ʴmZMO dOS:ҳ)U+㢙j/>_q35{ͥs 1tK#!kwί/Rl97[ꀯ0غo8zux=2h!1AByri;Ko-Xe! NIM>DL!`OZ>šZyH??F;jԩI _}e|z(ފjNVJV*.hkomןhqscx)ڦHW`|~(*fHj+R=05^@J2;"q.dK P#XO#\¯?ɓDŽ-ӷbJT*'7+ Iޖב!$hA'R(p(dMgY:zZ  O,~ӯdVuEQC78t< 84vEUYD9| %NŁ-U f# yG* i$ Ga#|9d᷒iQ|(.ITpBڬ:PPBN<@i[deG I c,i{E֘\'GftvQt GX :WÞoۨ93 N6Ԡ $vROFϘ|_wI`v\4=1Z׽H GCOl>vPJVƮ7xfG[~D!~?2..'rkw0xfMqj+5h7^5Q) ~MӚ>'#A%d[c)b" yb'V ; Zd$)~=kRrz}cr;B#NG< z3"ENHS!asʴU4RȘ7Ԓ[LP>pipV2&r{a+o5MOv fz\>(zPk03Z-a׹T-R ˏ>xROH؍lrHZqx0=&' oԀZqZi/~Z9o܄5C#G[&\ ;<{Z2J' WWSuA=@P %QR@NYaL7(N]{/أKJiDR8u`L R#/^_zEB[H[ZG` 5f,x8dbi+:KTe6S d)uZY!)-;Oj~oZQLu +#<-/(hHڜm̎+Ħ[B >29eeDyp%*ӜKҳMuz%uϩQ C -#,"= H/W&ORj9̎0GV (T]]f#aQOHTe .*Whr׌[&_q#VR+P~η<ʏ: ׎4QfGR+|7 .`: 4t HFWSW`Ս4fudkxu8󽇥ό>;}G߹%'%EqS`<}'(U7\ 7>y?[H~Z/ h^KFr>>M'@&Dی>(~W[#m|{+Olܤ]4Oժ^޹'}CS_)d3TBIyٓ(8#k0UP3_*R+QP H<]jq SVgzܻsB>O]" kA!is>9Igf̙5/n: Zߌc>=0e jӒ|kO1wd4z4`3ŏpWzY.8Y@: |RQrUY#Ҭ,F.ӹ,o@]tq֎WCOsɅy|Ƽ/t{윆(_*o}ߕS\%1֥o?m{ӆda~'A$`W0 e4FG2f&8sLtNwV]]U]{bS QSBjL7+v|`Am>K.!jQ}E*WTu2:v(]You eެ1z`8̓>=Y?]1"A(a-8{:iILCq@7ЖnU!^D3סG=od;eI߻\y>}%(Fe;NHGЮ=e˽Q "C,N\;J.dZX1UY1ĽNge*8*t2Cf ) ݙv@~Tr}uC0O;Zn­=!,]yezkԈ_THGJ눮n4B=yN-or2|_N.m2S u~^C*twX5lsœe\)ǦӺ=DO6#n\vQlq3@fOP<Dڛ8@hO[͟vSv> BH?*KMp3Ϥ.].TQ2E@B@*yJ&2.༐AB BEݥ';:7M^Prx|[k54g0IHw2<6Y $J@2gwn㽇| X7C= Dg&_?Ϣ (pSPS^RBB"T0.{2+1-_KZK!bGnVkaV,HPfK<шmw 6sFQ@{ޅU!9%;bb2C{lI r0,_}MYGN!T,ԌoW1Dω3c}1Q&C I'}Y,$)ynFhZZ^ ++ wb6!'ɝ;K' (L8}ODf7OVM|'IߛtfFbq0hYz1F)،.TF{)Pc5)t1Ow z!+#3^ܜSxH 6w2Wv91J(:wX}v g~m>[o?Nz{?}y4],v\Apo SyFqUp)G#5ВOXxIxбZdȕIL oxY%6k=EFױߺCVǶO5|Q.6fYo5 SeW5l5EEw P%7q$L!k+["?:g1 C8\Rs *T$h''5YJ[tVDa蚡be&ALvbYG+x9G<$Z;XOG/M0% $ŢJ$&=9[%-oЌ8 F7 D 33|Tz'39!f1)Z7dCx>,e {j/}oG'+(sP,NH+g(5ץ6a79H /sG2da7]TH1 Ɔә*&y,Aw [fPkoA XMN-~h$h0瀈I% WoH,/MIW3?t:έ Dfy2a4-jeĠM>g'jUW .Ap_NZ%˸'R2 {#[BRӷ 0?:Nujso<?9GW{:dg'dv ܥ%ޠec,sa] C[rܬ#x#kEMĺ, YSN?}eb 5GKc v a00VS/,{90*l5wTO*ė6JB.f indB2$y+-P_~WMdEnNAuKFYpQCPaa+P>=WEhq=Z3`DŸt7ѻjȞEwp ( ?Y)*b'tެim搜B{-ߩ=M7%4C(ש22YX&e^5Gb2Y?ػYh3+{ Iz[x$^Ȧ6γI&> xZaӣ~Aŵ q&n`ݜЪabpbr]ƻ)-ѥ 3@ 2FI)̬arⰇ%_q<8%`.#A^2/z]ߋ /نϗ~d[粀)xgMN[o|IHwtZJ |?gR;ɟ+( 'HNZE==7˥n畴uvs x -ٍs ϡox"{-'F}RN c 6YtѲ$mf٨'SAűx DYM`A[+ދ8o [dvSuiyŞ&sUYcȻϚ: ;3R^%uc/mCE|N) o}uQc|='tb&Q@yuRjf~4OsrB5}/bĒWlq>!=-q~^~ݠ||7(;څvnQ,`guYe1Nа1X U1׿zעP4™fwm7g\SX7Pŷw&y8 ?tt> },@J,@Orů rS=~q& `jTU,N&{&Ұsׄ6o,-Qn2k9rX]7i4JЂᩓuMfyRwz'm|{0Spۂ bؖ8l}3<7Ө1mi px dq,U%Yc zE{["UM0e6/)w4{I~W*6C֒Snnѵh$;\#h'?ܗR f'/<ְo( S^e FCLKr5P0haӺyAȶֺNڰQbQ&TR1}PE%oL :Y A@2cd8 $ڣbļ< !8H:z)&̣Ou\l܆8Bss>8,y1hLhN+6U4{7kh7AmFg@M ]Ek a X ̎VnYfU{tNfF օ9ae\27ss*ޭ¥px.yzNɕwH2 %nn1oCΣuj̘ i+rh2Q L;,>#$n˅/\N p4ͯ/bPcpg |BWw/@]~s' Ӣ >2< ?kqvc>-[Zk5>y% { FC}8&JXSy Q HKz䝈!ޛ&a:q󥖛kolZfO-#mk#7Zy᝖.ڀO6M㢺x-£ϴbL6ꈫa Y^RAAXS%4>p&U]gCX=h/~8=hߥ#Zl9ـ]qcՂU=|?`Ns}8[}Sb8v/8 FrpU&7 ?'k%;[ΘH( !4)QM AQŭN9޹m ^*sb\pBP`4gp8WO)H!@Qdjwk@><6U=a\S`olT'Qg1Y!S1^H[bդU_Ur9h!j5٫;GMͬݎ'^7+ޟ uRX,a|σ{FSzXf LNms$Q#V ! lƟf ]$ErcaqhwmOy 5:b3IBxlfXҫ,!r.Y4*>TMݬZw#{c" z2j '#C>'CCl@S p$[#gNx!DZ>p=;8OǓV Si%#h&Ӛs"@ -Cq(,=v;(v FʑD4];%_;"Owr](& Ye%O^nY >FKEw(!}C>$Pحp6ͽvlp/0HWӝ^)MB(5_6s8TgL)3^w ij?|v5oE*܁i'L~vMINӓ(^ {[,)pWϞ&{🻖颽HrhfB\[A?bUD)xᙕ`mDNP3dڔ_?)rѻ+E3=#ʷH]$T+B#aܩ(݈Cqrh0iE4+f1s+5#gjުlrl3bI2)4vNi|'&1R+'m .~OH`L&KD!hhV(Nfpqgk~_vYU26S`F ɴ4[?w9orods2ИjR-Fa9a{ñD]$ha)UX"y82R@+U ̔qUo㏘.7:" Bt(cA D]nx8wE+jBkdJK/>i 6gpS1rU@Z=zrF\$ KD{da|J{#NIe>FѫJ*D-y0(, jp/l ޹^Gf1 JfW_XWRc pssimh/ӈ'dUEHf8>QS_%E #Z#EʘiGTɹG'}Q8}lNSgSx+Y|€Sfn"8A dx\2oYkF[dU&Ǹ'mf:Z/5كӞ)svKug\b J' -J xZ6I;pT]i!NY~4.gE XYSNy!c:81m8&ru.xx ?g61Gĩg7*%8K8A$ؐMʤFQ\':^jɃ^hVLw$z -<_PE'Xzl_kI;S0m0t39y]cte#KtX5c4R-bnC^Un'wHӤA>\fXHRq~\QUO^ndn^C9֛Ҥ 'Zxտ'·s)&Y*PК՘,@a_虂ΨL&@iXR[(n2d)k"6T>>4r7D*TdudVjmc13B ƣP @>*Prgї${E!27U'-KE=4;(y x ^\h£Lw'D-{_E zCTq5`ߧqb N)lb@ MW:U8+_$jY1ml4j4i)Y69kJL01܊A"(JVUSC,p mk;m*;jmF>+*XK , HX1ufܵg=1 9Q5s5䄧1I(d# /lnW 鸕:cp v>VhCrlftp=e>~tW)Glxshw_T5vBg+[/:/m#A,v]xl(Wgw5zt!Md HZ-/9P <x/W](ʓ?I ʚY|q>}9 2<"Qnҏ@s,&FceXy$*ǍWeal5$#Ge)хJ/jѝ])DJCJ㫤D HY!}5wvvJ ;svhRx'7OO%P|8ETR6E)} “bk%9)J6-E$@R * *0zvЌ%Z+keVrt/yrj#/-^e@w(zʄc WLy\Z uI,hEB;Bk| âXӁh|6 Ӽ+SKt?2Pa3]L A\urL) YooKrΖ}цxԃs*B,:)e]) #fSDюKR/,) ORN CkZ: 85YԷI*$tw&ф8HcV,vlFM 0 "،Fl=!fh&h ي_}N1klW>ǝT~݃㝓-uh]PD\phw{}ANX~Oӂ~r xMC&@g8Dυ ~cHN?D~A~5Fh{4VW@_3VxS*_/{|%Z2ՙyυ̞?6ڰQeXB*uxx^_5h璿S3alQ N?:msޏ[}>G>^{qd2CVG7t-+׷χr ؂h~ozz]sTbR)1?N6<;4zwP6ȞcVR[L|ZeEp&SW rNMb(K0"c[V{_3j;RBN;'ikt:uG@ L讖ٌk vzjjqyA2Lcn`lHճ{0bc0uƾ9D@;Ԃc^3m9,*Nb'Z<p\/|KA29aY0 Z,T/ޤ{`Z#Q}s nœ A/Ov2lzΞRQa*CuwmtFim'ۻ}+BbQZ|RHD,izE@}K,!"A^%`L.k;J$r 6Q_0tP@o:l*%=AZusx|D]jO#1QXP80"げb 0䶸e#{cj=p lEڈ\̻HYr~*b{}73%FlK%#=tEzW6ùBյ-mVɐXܦǟ%ZcW!k_sEi>1Vc$'6(}'T>Q?mq[ &W3͗C|v5bH݃p)AbR-+;NG,P#V UW ^\60sŒ&ƝiRZ-*b7天=%&ԼxŻ7{ PF|WE#*-O9dU\شcüi4lw fZn$-6Ҭiq~ӎJPo*4BwmBv e)wovefuݛLj.-9^މ~4?ј?Oiu&`lNfI:s8eQÉ' QA!GztKuil(1T/ zx&nkUU#[ANh&VF7S YKebF#Bظ|uҺjOBtE 67=+b$mNQF\ҘB%|F7tFBŁ7 Ȥ6|3eJ9P 6 4Š; Pn{ Qz۶*B#ntrf =;\ߔU:_j"k Fz`V/Z=%dG\ qUAeqVIOZwG'|meU7285ͽA ήߔrڸLvL3 (m%]L}f~@2o:)Ʌ_L=l;i"՘ĹI,|XfòO`YLd,$W;(~O_5G??Q֬ڽϽϽϽϽGy(%9Qy#̨%Dh<yAMŶ9b%R3gnE9Bv0X|`J}< 6pv' 껾|\_8hA΢1T0.">b1+92p$[.dhM4}& xN0 7zrBg#y2r}hc x[e)e{!]UwЯ Gjl69_>ul2eI C3ء%6_\Z|-(~tf2ʢ7ۄ=8%W6bB4n&WG 5:t)%n0O:}Qs 9үBWp޼`v#D~i~&OINRP*X^P5h,{ˑU9,.~?Ҡ^Kj2Ni'x%3@s:p%eׇ˰eIkh*vf v1Ik|AbbNãj Yh|bR܋Xks*{+R2ayFoSjt2&69O_.GgD)X0 /cx\R"n ga l0Kܖ8N. o;*e5-LVrh`&NՂZ<(贿g1a81A }y_ŠLRO&tv56Zd /Q1@id89#rx`n-&ӌpH +..YڋOY@i@n?`la;%7x5݀ A# qNp힧Sq٠Л;msT8^~ѵ(!]&kvOi1syXh*Lo=J]»`0)@|%$/G|-ztnGU5^Jr> ziB*oŠ '5/QnZ}6,KWDsֱe|^0$Cs/p`TW~p< /'-Y AHǜc.~U/k/J^"H2ױ F -OMG}x3࠙rxz Dw&GBw~JҝEVЭ> ͅUmlԃG&E\+Wh܎0_d:EtfS Ɲv;Ld1( rB%|V-.`IΉXEK:MiV*8sEi.(AAtsHQU"`T!Yּ꾂_بBbbl:K*/Y\+׈~r좞588p^ 9<7Zcz40 PDwc?7z|NxIp_NPq吶jT;a,n{^J&@D>IYxsPB"L l/.ϪQvz`]O"ZR[}yb5:N=N[zr4$*ie [2_0C&vxw*T#pSRmhOIo}׶h&6 ӌ43~c+`q;6lQ!YDӏ=DN9pk-w捈nO~a;z!zXx$)Nju|a[7vtj^!ݽItЙ.,KD58*jA{}:$1,-^.?ٸۯq:+AeXMI0v5_lOX*8 isű1Y8dJ*C71Sb-pwǢQܽŢG]1ޝ݁Bc /[0f|z>ʕ"`{Oկa zi(tcB $ v%짂/!1$Sb&Y\P]KQosC+Jm5՝9nw,'yjfq͙ǵ1^zK-*ne;l/ScI(j|$ѡjN4L Oe1mzA7j )U]qQa {`r| 2 (Cm(޴c.틘\8/_. {/Y_Rnͤ3Ub#h0t4Cl֗}  (HhmRMK L&ZW>"A p͍œbx1 0ґs:i`TcPl%iYDV(wHTB9^Se:fpOLp>c21o\sQMY,/'6E T^*l A48KX] w} n̩|[)mqX-xV"mbPP@$0#Q6*q08xc7"^"յ1ۣ)V?jnPSi $e5i$-~PuKS4=7!X$KrQўb(|Q7Gj1EySbllYL.0~JtEf+;JGبTha]hZճ<*`F/i\߀SiH@ ೔4[v؂ծF Λt9"SL4X!^,g~mQ02@'tb6{tYeʯKgX/(Ί;"cm{ˎ(t㕵cӬB1xӜ,PgטŎHi&UÁ`yoTaC L6x(.> 򚗊 x@5[u *ZXPHPi=(~]s( OfgZ(s<]{uG㔚yZ<|)'>%阜SVܣ@|ϩ59" 2;6Q $t>~]-q&̮胲w= 6<3w g, 2)2lL\=;٘g?ݒ|!ݲz'p3n>VpWǛ^]x^v; uj4, ㎴xA h*kqg${\G5_J#!/R<"jaHcB"W_ GSܳ!g0ެ 򑛬Vp%_deSL`AU$ahi#mBG]5JiFf[ҼHkL c EaI$d03vJ lM&m38SP_6nUzusXilփ qDh\7Y %K\hY`{4?;oV޹dC P_dmR^v:\2ˊ9zx|PЖ,5%WPuMH>!GێNQp* K䪎IgƑKtQ&rd|#0A+߬=vy#>wD?*1>?|?%k9Ã29iGb1?ylɳA30e52(sGHTy; MQOy,H%,8ʫZ>A37J?Kݸ GPeWr@dV{]D+Agi(NGFi6(&Di6wҌHُ?hF\W"(ozY)Lס{i~陕yZX +Zf"[:CU/--Gd2I)IհÍNL TcQh̕H.ӿ_gϰk&ߤgT=yOsf]k~:@j}؟h*W2b6Nppr.#vQ9rG<~CY %d" h;1e'ҡg* hVVHV+=pDZhLHGj 吳`8W `Y'X# aK duwU ǪAF'J@Ij)VQ 5h+lل oUJI`,橶\$zzFB Ih)Dɘ1*JI- -=̯k]q\Jv%01j zZڑ>SɥRkw7g+[40`j%D3An B۽ޤެ7{to*=I'&WCkԿt deT#|kmKk0_YKP>[sn:T]a_&/1{OVz^(VR޿HPsop7\BFy0J-/R6_ BDm]o &r]9T)k e-* VD8a☃w-/xX)bYlE=L*'!ky6(IJ"/43xg{e;.?6L{N7A؀&V㚼uX{Ki]  @:xz}u' Ѩ>RH c&E1mfL.H+,;q4#M)WVLwD ~IcQ"Io+Z U+}5`盎avgt:US`M s&j {MsBШy8 VEb@B$TJ4 DHE #Is4|a}kp nT$LQ8T.-ѽ9hta~t T F;Cvo?H41zM J#J)mȃ!>l67$:&N&0lBN1Q΢S/O(z*f9|c.JP2Ǜ LMU,Y55HwxyF>y24n`yrdUo0uοlloxwgi9D">"Đv@S%zS5ȥ(H=y;U<>kl5ѐ}`A\a"7=mww _wm "Q5eWaWCqڎI{l[Dk `ٮڡܶ޹`B6n6Ǩ--]fתsO Њ$Szcp@R<#ũ/y^N9z :ĒO+ E촉q'2 ̓"&OpB%J `)Xw~cį* wۼuVZ{:P|պު4m_Pf CF &clr>B>,L G+8K5 v;T'j `J/3=1wjyu&y`=N0*oVJs\1_-F$=Υ'/{,G̓uu3;p{ K)eV 6:uxJϘ@2v]\/y8~L Iܚ7gT;3s$3`)wcW9s(QmnYٿ^jqő GN2-+\Vѓ:7.|)2ϚEtn zYۤumٲy^'>}}h`>QbtaswiBvS!WBG;b+OC?JF)"p;\ &G/NF0Gt)R5GEViϧ)VkdStzL`BQ*6:0BlSGyU|hDL}5#q0;3,.X1:ӠN^৭IW0=~w,{Ss&pb\̞HIudOQifdnY&HB%E1Plkme(v1 q/eh*x>97=o#=[֑cNq)Y3+޽KBD8&Q3ϕW;%u!=6TdYyIަo^vx+B$1*skzb6xg_:j9_e|a=,7ESeˠ.S=Q`Z9Ӟ4 Udzw/,EvkJ۷)9OļĄ킘QUŊ{)a7y2ܴ sY7 '$"F?oEf(_2#s4 O[om?WL ^`x3ʺk-*nDD)G蹑pXaI~ N) hǠEdVhi2NYpq2^ 䙲@#*R泬4/ҵ18,w<^5HK-)HNofH"p<Bjt_&?ȄWtiE8s2qc̅9E\4gFm|Ù8J7kI>ohzFSN+u&ᩚ]U6Bh` Ry\[[orjGrm8fTrbHre"fI*Z+9i/D٣7~]9Iu!}}#e% !Yot˂W3,VuL"Kd|rz.A{%w9 O(J"`dat?/hQҮv9X9_Z-ۦF o(-|1h⨼@b(x'inc$ctT&ӫRכ*ځxEd*;Ki3)Pϫ)AK1.EN ݚ# WLHgЧ哘 }7;P34㽆[`Ԯ.m./.H_H D]+vy3y ~֚ޑ-{IJPӻ@-p)d!ot4W=9 H<^).mߘ 9IS `EmcB;Y3׀ĽX> o ]CmOVA_1.,h h= bMRv'7':rL[hЗXC4YL{kakX:5ǎɩ7,UOH+"IdHqI?YAA)p)-> 4$,twwKh+U+Rɰ?*yu@xR~Tǀp > 7룇23x7' qzؑI{ ,SC#  ],mEy)|}. s"6tw U: 4; U-*:9r5ZŽ[pT_FS$~ތ,ͣEZgET)w{zݸIr,)y",W| VW3hyB0-n%Q2O^Q[ dsaZP*=?qYӠ*]'Om'Bc?J'ٰq>}ٟO <Os<CH@rsxxxuJ{sQlǚcmy)|dewІZ_ϱ*jUca?rJ'Cjk*7O.hOW%GyjԌC36R:K)HԿ}lx))'l8(NJinoT%,r d綤*k~Zxr nԛٶ1 sK euގGXVr# c8!+whAHqAZ>.΍çG%\Ǭ甲4a+9䱹x?F8;x ߉2&?xT@@\ق$+=VV+wo!< 1S.8 CM'쨋*!$- 5s aC} L5_%)aVlh A# -o("_0rex0yd#CUݶd`ي7S _F[ê= v>!H [Inʨ&Puf~7|L@0QgȞ/0@$D+VTϘ13CZ' ìw'j.ЃAqD%r1&hXտ{d T"*M_?"·a(cė/͝';ilvwHaCPb\l6MAu Et'bg8leN$eS$Tl !R^#n:T-5s9FB/LaUkwF1I\+QW/+>JMS2~Œ`{ x 1&aG87ev'Sbn:0E W7m^Cb}!Go՜[][bj@׬hf(POrG€\*|O$3QjЋnkW̞sG4ȦJ/R4쏮j8|J)uk=$Sa<2Ȉ](]]-%Ʈ0 8* JDb,H%QЌڜ 8o[6u?zjDff9"@D%KU&ŮCKP޼ ebEoE{8x<+ ^C*XDs M΂$H =i 4EDp(o4BK,]'#W*vzrhٲsH X X&4 dS+x8PF C"cSV\ ]dH!RnRQh 3QWרYuG"M,yN( #5 G7<)`e㮛dlSaCob>9NxT ;{ԍ&LxAu;&Ftiֵ܏eDժ tfqI7ƨ߈q0(_5LMnabRT?#eFń^M .'P>z\ 'DI4noL5eԖ6 R>4(P1I1B+z bGu(n*<1SFp&5#d)Gqq@n&;tod-Tw~#RUFFtjw*j| =qkq hnS&Z>_mTU~m_K8;de9K/~ܠ6 HRNGL^Ir<^NeHQޞ~ǩ+tee%<=מ㟿|߲vC32IT<e=!*ʟt9rA_t2^Gkn܌Wq;SǺܩxaOw 3yBh]&:xvڙוuZ2h*pU{ݴ2i/Bm*JhNa o\L2{SKJ)/pkI~6\;~0lCޥ`ra >^D-Cv(.\ulkHjΕޯkUk3yؠ/t]{rrV6|,`*}-2&ue?"ZPB ےQqXqakXsz#J%gz A-s2٬<[R׼H1[n=ݭ6+ UFU=o5 ^*f[!{4ag =QyҵE^R@FD#{7A~MKvY.XߢHDZ){wfyT\B?^]mMJj(\^tq[N:~HLivjV9[;݈\meME΍΍{4GxwmCG_ ǽF>xk8o@901[N 8P_}j\nY8px/`=[#ye[K9ə߹ęڔBB<%3rvAقc1$bQL^puLHu}JKZU-KSϑc∋ݸӻ%C"s`6",-0=*/?" b$Hb8q @H:ɐM +9I upG1)`Cs 3NAf$qDm`9/9$LEY) ߢ.v f@V$_Pӷ)l"u 4c#r3 惐,'@x{i:!-shgv8 Ļ2S # ^OUWv{PY"K1|T5Z2o1ŏ$kW-=.ksf^2]C Lf㪐^W6VP RUc$/Iݠdcnؓ&:lJ6z@=QnF AxD隃+R|mħmH͙, /6]1%}0 THܠIϒUBKۋ/uh?\] Gŗɛ xLfH5xӇ7@:&D֋-"V=_Sۅu]* U ;2ƚR@ ҖV5Q*c~S{Nl3cu~;Oa߼߶mih&Xi̜ =vMm5gi4Ȕ-3A9'NkyrJB̏xW@xZ_^X|0zd K8Drb -a&Ä"#$|[B XQ#Ǹ q0 .ghkaܹiᐕsgB;n[tʱƃy3a1Z6gٯ@י"kaHx]k|[ FBYj)r K,CɳrVX͊0MSjR4˜/Rɷ4ΉvR^)~E&nTX,,pseaGoK.*4TW0^u)N 7+ 4T.8T{~;#fhm7f*7H=oW_77tE.N|y<7Yma6SORŠ+Ӫ?T: *W)< =OɐY!% #6@I{Zl<4|%]\FΛAn^@u-M͏vcO.n^uI<t]kqZH'8Eauns.^pSA=զN'e݋%Q%R`doxl$smдT5t9UlAYBƞNGgmMxs9(RP4]JYQCj;z?,x * St#{0ې%ZI*i3>Ɵ%]v־~9ӅMyXIZuk2r-uh}NZ8Xe )8]zG? 3yGT@iC6MDV^Cw;&~]gwڊ$U! Z|fieEZv <gC'={ ҨmB\334p?A7CVP1ZmP7g/07V5n6H֏̾v ;D)-s:bQrڿ:n6^–LR~P}·C@պ ״/s*3ѻ&Ac|(f=,aچ6 &|E8+%#kU>>r =39~=y.6ڱ ^i:_6j&M*8Gtv{rPRA a6|U2험~݆܂ٴ^Y.Wlvl =B(zsuPwй{ӪieJxՈXάr!NJpCo -DVi⩿@ ̫=?&EO4mms֏l^Y{1LԖЩEYXx@i˲aV*\7%DpuZvdgv=U XSu^,KzOz//..zvf9(빰<(g&}$ya!;+Tg/~ ߾]jX,!.ɩy(HzcOnuvHX=@Q]l-.OyK -uў?)ط_ :-璚_PS5C5lkSkmb?,I|tS]d=Nx}ҶR.z{7ٽҋ\22ӊ-GYIuԋ"FJqߦ P8rVv'Qd:onP!V}>oc}onE݊SH$>f.D<_.0ṕAIvs$r~mfwj,cs\N<]-@$ٻ{A">9&S}6J@0@3 bƐH;G|8WJC9B6|rU AU9~'hY8$=X\9qMD_XQuDV3
͹ q~JEqƈ=O6>k'M*2q$S1bkv`5)Ne@ɼD~r4L}†-¤!xQ|\?;WLjɠ?_\ lu2Ӹb0dsM=VsyknMKp92"F1W"HY%vԢm+PI7F9Oa~'H\7MI+&-9r8d |c؏Mjn\DuT#ZdH &݃SQW7u>@)@L>ѷG4D"EJM߈ڐ@_8h1@7.\^K OT3hC'EjȲ06bU$![q踛XcѐXՙRbQUӳ$kuG%{[ph$c57v&-H%USqITTA"S`ɈJaa#,ZѨreё_*kMp4GZu[3RfF,w)^R㫄 P7`9,䍊e"0N.|琁'hD 4PΏ3j,Qt8$D-yAXT#Xk /A?<ŒQ`KaCȉB< h pCiUͭ~V0vcWt&* 90//Q {S_E&J;9R. P0]u8?N6_xT&q˥%( /X+KO; u nQLPeeVFq[³A"A7@ gO+jdH¼ɳNf}4"vh4noTқ9*#LeӔIcĨ:8R8X gQd/=(O TDx>po9mFʄ vi/P4E'99ո6} DP,dQR[ҕ3 L?`jŒVy"qHy iCRX{/_fZ'[ߟAe#- 2Q$ ˚irN#cs< Y稻\LOL#g*zf>c#&k%0p;xlE'BEAdWspe((e Դ.*C4WGfU{jxaR"N,6Ъ<SR9q\N6]6': zcsx!/[޼LephLJl: :0N~ }=0;Lr)8kUO`4zAװe`j|6"Y/E {w 0ѸGo_%oZrN @jQ䁣AU _k0'e)[T;W,.Kk/\'؜׃$sX8b>o1<}E%zMt"8-ӏgR6֊_YB@rvX /8TB,{i)UsPV$Avm_#C BW"G-q#%f8' w`۷9SpL߂MaN@kd$YIu,+j0 ‹3P!$$788Ǝf y;!)"vb!yM|ow1zԛ$Kta_Z$4x3vitPH.nХ& .݉%vCj83@DSTFŸvLqD-݆:]Z͛FH$L%m  {` ޼[0Bq6{tT.&fRSl#6 4Au YY V]r'dZ/X ^bAiA3k3⤰ LgކF"0$b XN1Uhq;V\b@F$} f1*YrYcIO*xD(ro.P[ߛlxu<:($/mBtCH,Y zV&IwU.lk?(eFHpd$̋=YgfpF՘F]UX70ãOF/;kщSAV k>gZ3AH6bQݟ\|. Pl@q}`~Ċ{;`9gJaZŕ/PBJ Ց0[/`ʰ%)|;~C0 -{*M.W!A MEt G-ۥO:Yϫ6ovj}eaBҕ*P*zV'0-ρ۬t ^o>R~P9\,dZ5^uRȖ<")YuG%3DSw(5u+%y;žm氹 IՌˋ_:ٟO?yĢ/3x7DђGe|*S{8wu|9^. |նj Q0)l;”˫}xyeuyYnѷk1\놝/Y{BG`oiPwltP4& n$/,vmKiM^1|N藹j1hyumy)|du}mo$+ABD*ē`U)lw#69<#8,5eufէ돾KAe++h W?+KXJ3J %?s_hCi Q()*A/$%Wπb{VH幹}ǣJf"YBb`CDR,鹆 x HР=A[y}X=hfa 0,KLejS<44T 6ʹVs_gMK8˙0r'M͜T`(87nУ:L8Ny5Ȗjc|UKJq2HI=Es|zĞr6$$ɀ~w _VglU*Eqv-Iǫu^]s:JoC*Ek?9,od@q\6PǨWpgQJ#Ż,B 7_-7++`]^S%:Sm_C9Y_jVR8H]'+EIyGKŻ,ˋm'PVȏT B rUlz/ZR62#1)a8FiZĥp2Be8{÷.]H&QB Vq4 f@"x7ѥ[u's''plP%x^ѡy N8#th4`1 ͺ䬏滤qxGTo RX&e}xJ E ńG>MA_ jp+ Xv1JWshwf>H݅(52qnvZLX{&bۆ{M08 ߊ{W=9]n hkQґޕBJӻ{G>e0 L|8Dgq7tCF!LQһV D.Y TK; c +@<@Jo);ŧ"8ۋy^3T.#4[W:8zx)KKd9#@)dL;=??b(jJ'.acnÓw-kYByz&@К*EK@ac:`+|@2Nrxhpzz/ísaк f13>(5Ayƨof KuFFBRvV#1-ER $s^q5E:XY%HJZ FvIr12&39"0SV ->$X0 1G,<sSymjfdĪѠ~v^v,og:V$`SBpQS4}==6`Oٞtq/-(O'qkkh˱aRvMC;n*؀Üq1@RDj"b(u5MF/<'J8bX;-Cdyhڋ@:MBD}`X)c1mk=ph1kƁ*3~B`+[y)¾IӃ$qȭ$3mZZ.,$ڵ{?1 ȅ-Nzj,Naq(-stF{iHl eWu10\ZZzWLyQ:=;n]Ï a=#B#Y&;&'aK0TɍƾSˏ?e1yTn=AQx>&sIa$3 )@QKV.n ƦwWhI W:8{IA,n4V]RKz&8,X>;\͓4'w kAc?8;QĿGx <<,GtCbH'ؚq$"{v._o$%#L>CĹ[}N ID*YȊ,~g$-mvhl :w5S f2??oǧCB6\><xt]c,G+#f 0H!R5ԓV hfO59 `qdK@I/O. + :{1vFpIc;&МR Xy8t^Kxy hҹחjռ!t} 4J?il2?OwZ{{ק(2yx<s#;[_b5`b~as3 ԯ#Da6(`VVZAF'% (Bg+[^ A&|y} ƺ`e5J\(ys 7c.j+V7܁gsvbqgF7ޮ􆉡HrҺ|]>l "io[Mtˤ|?_ ky{?sK!qW]ZG뿯o0{?7W~cMBglOE {t2hxMDϏm9ӊ|:m::FE b?  &/_y8 ((^[WtN{O<_(S\ 8 xڍ?} LŸ2v.ddSf20q97ߣul*fqq^=F۰3'uU21_:w<(1,&\MԟL Cd!=pu~*o#GPjY/J 367&6ӥ'T <!|KJhh%$Pv7"noPЁmҸי#:.M X*H&RrȊ1eOd(A0̭\qE% pnݎ;lUkjԅPC1u?`\Rk}ӆëaFYt8䎍MEj'6`L:3cdh5 ZO~6"k!{_rQ$ Ff9BQqZa 3G Eo$2 _&3Ri> dE%>ֶo3Isw6^#yZ:+i֛TSx')ւgG٣j8x8>݂? ~fϞ~ nMbmڥҷsvqSY"!Хdtջj8YױKh؞PZy C,ij;< P@Qd9xĆ9MjXzI*̈^,X ݃f;,MMeŲ0Eit<-;QB#^vT;Aeqx(UQ1+cl%MtO|KG^dڀYl2]t~ZFI82>@Jv{X \`UTYXD)zsjqA/ĹH::"ܲKH\枓6^00ť[2)cpEpJqTN[{{RNu;{‰Ӄy.XCYAɜF+R0{*,z\5VV`q\ЧjLtU؆zⱳGk_4PON6lo-K::guRb)Q UkC!3j-_)y't$%Lƭ<C,MUL) P(|&+[8zGe5J 8=ZnVX7&6#z"~yu{pK?rT&F\3+by>Ã'BɜJPXĮ!rhmdn!td5GCjrʇyi(8q TGdSJ* |\DOLJJgA3[@Je_WI*B`pPHAI c6W!Đu4gHG~Ew b(ޖ [k G`V 2>[݊4?(3PtRw_GOW$nb-,Dg $P: )™}8,-lpJ~>{ ;`{F=gW$a _TQH1N FI5ov1z|h<5УU SMnfKB5F!=X[80c5^P{$!O-q6>WO+VKRqKgI=^4%J0)S!2+8)1($}X {$J%:rW$7ۏC+ILdg^4 X 6piW.)Q!瞽qK6 1- vxv8=+̻yUXu1ϔB+9 ۈxG,ej$ĩv/Fi1< dc7͚KBJSγM3 Ӕ۹pt*T5E4e2u8UV֖m ;uC]|4ZO4]?Т!sҽmOjw6n~5|<8CKӝ×z?6oVOǫd?h#o:C- # ƫӣW*Hx#s68SM"PKA (.#+6Shwk+9`g.^M90^fCb?@08o&8<؆v Z]5) ޝwfPf"ReCǕBr_P嵣[pI'LALysƋ%/Dtp4ӃŻ12jtYT4EzMciW cNfay) e "]& S:k fGi`Zvu\m|0!xfU;bp6OG%xQg`I3|ƨ< +K@o^;&to6ēUxO\Kcm< w\ (ur|xqπ\:%zxIذ}Ϭ(zY H m]hۺǃ?//.@ g,O8߆F}zZvI86[9f^=o->Wo tĐ+J㰃k=NrAߖN/=0~Y rMys!,Qs,RS=øvF Vp6ϱx}|CFCw\/ 1ZFdiE~6 rIy5FZWϵprng5-XgcǔR"ϹfmWu+Z5Jg5Y9D&g5$.3?vsn66\2G%2kO>gK "F~7`dk "2{oɡAnJ["[9!=rydFGH{H ~xb@x_8wGxf.vwṆAiucueklhH]A@-?mqOVo] Bqީ*m3| Tm~[r[ѣ_`WBh]\EɗTʣG?##G[9(}n6Ymq vJ`_y}^|D{gTC*dVA^Y _?jmB<ՕU8|=C>g/0=C/te3]=?jٿzG?|_8앚 A~)JE6܃-wj+T͜ Ar53i~v[ʾL3_2t ^FMS=z[6;>Qcqoxų7c%(}1]i]0ݗ{;˿hq1ѹ-Ҷ͟*UA5<*񇹥@Y%Df7zg s % e y4#?7ǽVN0Ps/fuNV5>Ğ`A\ mW׳-GMS?~fӿ\i|e8Bh2U3Jw%C`-TP)-c{K2Ϝ0!)Y, s?=eZ?9^uCG1z̿')z tAKgnNvNfvuťۓwJsgTƛ]wͿ]%Oqrh1 _X?}yW+o+Շq%۸Eȷx?po5)by_B&ZS/x,(%gY }6nѝ}?wytSS. !U 5˶+ 9{ h־y|?k+'@sbwZboxefrY+(Ƀ˕i2- ׃?c>c>c>c4wgp\9X9oDrrvghd%/|8K)d%?/{G[oVn#{tS9`Ž*v; zqߴ',_Q"ڄc$F]) u͜cJ_C i3 ;DBpn憒5O#SQ3uYILbUFqԟ" @ #Q^@vCtmX!܄ƉoLM䲆0ٔrNIΦ̄-";ѻ\RD͹!"OfUWe93lpdcJѮ/A7Mslmã֏mSnwf^:96Pqpi݃qnnqH݃W%;hJ" @[PrwowsudxwsMh~A+M 3~=ljq?+|n×Mң`P[{n7^5V a1y}a{ ?:alg Fytlm7kqۆks8PE@AT`E>i7-@l,X\9-4e)=/fH8ȆH^"_"wPF5HA&P+=L=樊ǜj0W=8YVzr^!NeW %E99W6w9LdoF+, {Y4I,ah%x_wJxN͕Tױ`JƒDP^{\qx(+d޴$ Mǃo:-*UN@$ڏvCȀo61tB*4IϹH'qIC]a1 m|e`BW!-ʏu1".bL20Az tԏ ǒCǘCaΣ^ ;  /Gވi<@$<Dm]LI iAe7ՋiN1Eb/(Fpps:ta֥|`vDZR9Q,b.T-|4\wVX^]s3pN0&ܴvSziLoA&#(Ӹ7n=gbCD<JO*Bd=+QXgg5F6;Ԝn͛. ;clQi}^;hc뼁оSm4U)?u'2ē8\FYO^Pb@zKA1}2uizWA]VT~< jKK{}dN0{]I@Ƣ=NQF(81w7N&6 =F5|ӚKcBǧB1Rk)㫺hnm(uw#!.!hOlpD"Hys:m3Rm+ۣ&CTmȗ3}6Af҃NNÇUEJe:HzKa7pu~ȧsgylGLypærDTV9e'A6W2۵ii,_G'-ßN+9Si=*13YvGlE $ݱV"ikvQEx7Wz`~1D=xWk?|p>y!{f~3?ܣ~32\zTy~m)}lGBB!r澼ȇ8\LdsT gd> uDf6#+qY pfT86C^&Upd@ {*#/} hy T_b::㈻ʐH'L9e5)3"kq; Յ+YtȓߗtJZMʻv~7ߣkO5y#>wQ ٸG+2V@V@V@V@V@ Y)iPx`JQyӼxy0ttJQY,?L }r Au0 AQ:UF'~ =м#PǢ 5Lf+8ǀV[ocYe[OJb#33?FӐk`;~";MI%5%ѨngR+W͙ ϤSC;1,^atG%$e3+g^@R%?>ƞ^Wrd;=Mq71*k GITT%ȵûQ`˄Q&S`&](BGPI|,p6 =U=˘rLn:8 &G+Ͱ DHO$#f)T-S˫cjz)v&YE8 w{ƞaAlξ:º4.'WV@/Ǩ pvp0Q 1[8{q!-ωmo@v;vZLJ_&l6|ӐlCdl6ʆfb7F]eUd1C<.\z -1XW5I; 6,&DN^^_i166s8L#1D} asJk{!ƙlh-JiRe20|d+,wP&Y@rLLr3DүM|-\ 4W 40!AmS6lly&vb^S>FJKy|A:dɜ$7@TY"wol}ʆ^Euxr=k{bFδ(F`7Ŏ4zXas?]_M62'̈́E^}/. q|uN+*!q!ɨj5}4q[(( ##SnI}EԪķS)u{#r3t6<xƹBOIIB1G(ρ.&0VF%o^c*[a҈P6\&V6?7gK"r1(u;@Nwͬ1ً$/ivO;Mx7hեqWw*$0YEub:KprDC^",R@+us2&q>R3+fH7ds` h Ԑ2Ry{(<\s(fS390~|M-]Y^[YUHˡ %8PhJjI 'RK}ºlgn$v\ثW(Ƈ;pnٞS郜j`xvA73kW_qC9llt":@iulati:8H}μl5PwU Reٵ^睓2*hn:SIkBv@{ȓ'J/ڿSh6DxL7uyԆ3ea?xDbuo/Vkm]>{ʴ_c۳:$ٰ109H^N ?\$ug%G'=w.ͳ_ҍidjr'9LA7$fGqc/g~>vgv19_Ý]ݺY f'h(8Kqstߵ[խ53:qt{gyE=d22¾d׻={ֹr҂y\ݙ 8+b;ܟײ0d|'n-ylt";`FoLY)8/[͍9&/2}}GqxN-b]D&ͲPKocowm7Zڒ}ߖ@Of.-_bۤ} <'Wј|GC`upkc06:o7SŒM]d8_Hr^Q3j).YsYtߩUV՝ ! _~AU sE'Ѽ3-rxŨ`5d"n SvB,e'UNtk4hRv*}yUN^{h|X.!xۉΑJ2HB! 3WqSfo6e`zү }WyͷA/%1 T)W;eTR ~}6>7~K[02$I_1VƪlxFj~?C<)/󷷓_M|F=X1 q>Oߖ r!}C#y*Z2j/35 N= Lq(,b<p&\Qvm`ƾhx|^2TR[4E5_ b䌂G?ܗn8K{ЭQ &z%O>N|NpNZf`F/:u"S؉LSEh7>!y-8>)U*{O{~eDդ :}/ )5E[f\-w!,xO%>#mNh\d& R$ہB (TÕ'<8؁]=(v?s?s?|grcompiler-5.2.1/preprocessor/fpp.h000066400000000000000000000121121411153030700173360ustar00rootroot00000000000000/****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/fpp.h,v $ * $Revision: 1.1 $ * $Date: 2003/04/21 21:24:18 $ * $Author: wardak $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: fpp.h,v $ * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.5 1994/01/24 09:38:45 start * Added FPPTAG_RIGHTCONCAT. * * Revision 1.4 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.3 1993/11/29 14:01:13 start * New features added * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:15:59 start * Initial revision * * *****************************************************************************/ /********************************************************************** * * fpp.h * */ struct fppTag { int tag; void *data; }; #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define NFLAG_BUILTIN 1 #define NFLAG_PREDEFINE 2 /* end of taglist: */ #define FPPTAG_END 0 /* To make the preprocessed output keep the comments: */ #define FPPTAG_KEEPCOMMENTS 1 /* data is TRUE or FALSE */ /* To define symbols to the preprocessor: */ #define FPPTAG_DEFINE 2 /* data is the string "symbol" or "symbol=" */ /* To make the preprocessor ignore all non-fatal errors: */ #define FPPTAG_IGNORE_NONFATAL 3 /* data is TRUE or FALSE */ /* To add an include directory to the include directory list: */ #define FPPTAG_INCLUDE_DIR 4 /* data is directory name ending with a '/' (on amiga a ':' is also valid) */ /* To define all machine specific built-in #defines, default is TRUE: */ #define FPPTAG_BUILTINS 5 /* data is TRUE or FALSE */ /* To define predefines like __LINE__, __DATE__, etc. default is TRUE: */ #define FPPTAG_PREDEFINES 6 /* data is TRUE or FALSE */ /* To make fpp leave C++ comments in the output: */ #define FPPTAG_IGNORE_CPLUSPLUS 7 /* data is TRUE or FALSE */ /* To define new sizes to #if sizeof: */ #define FPPTAG_SIZEOF_TABLE 8 /* data is sizeof table string */ /* To undefine symbols: */ #define FPPTAG_UNDEFINE 9 /* data is symbol name */ /* Output all #defines: */ #define FPPTAG_OUTPUT_DEFINES 10 /* data is TRUE or FALSE */ /* Initial input file name: */ #define FPPTAG_INPUT_NAME 11 /* data is string */ /* Input function: */ #define FPPTAG_INPUT 12 /* data is an input funtion */ /* Output function: */ #define FPPTAG_OUTPUT 13 /* data is an output function */ /* User data, sent in the last argument to the input function: */ #define FPPTAG_USERDATA 14 /* data is user data */ /* Whether to exclude #line instructions in the output, default is FALSE */ #define FPPTAG_LINE 15 /* data is TRUE or FALSE */ /* Error function. This is called when FPP finds any warning/error/fatal: */ #define FPPTAG_ERROR 16 /* data is function pointer to a "void (*)(void *, char *, va_list)" */ /* Whether to warn for illegal cpp instructions */ #define FPPTAG_WARNILLEGALCPP 17 /* data is boolean, default is FALSE */ /* Output the 'line' keyword on #line-lines? */ #define FPPTAG_OUTPUTLINE 18 /* data is boolean, default is TRUE */ /* Do not output the version information string */ #define FPPTAG_IGNOREVERSION 19 /* data is boolean, default is FALSE */ /* Output all included file names to stderr */ #define FPPTAG_OUTPUTINCLUDES 20 /* data is boolean, default is FALSE */ /* Display warning if there is any brace, bracket or parentheses unbalance */ #define FPPTAG_OUTPUTBALANCE 21 /* data is boolean, default is FALSE */ /* Display all whitespaces in the source */ #define FPPTAG_OUTPUTSPACE 22 /* data is boolean, default is FALSE */ /* Allow nested comments */ #define FPPTAG_NESTED_COMMENTS 23 /* data is boolean, default is FALSE */ /* Enable warnings at nested comments */ #define FPPTAG_WARN_NESTED_COMMENTS 24 /* data is boolean, default is FALSE */ /* Enable warnings at missing includes */ #define FPPTAG_WARNMISSINCLUDE 25 /* data is boolean, default is TRUE */ /* Output the main file */ #define FPPTAG_OUTPUTMAIN 26 /* data is boolean, default is TRUE */ /* Include file */ #define FPPTAG_INCLUDE_FILE 27 /* data is char pointer */ /* Include macro file */ #define FPPTAG_INCLUDE_MACRO_FILE 28 /* data is char pointer */ /* Evaluate the right part of a concatenate before the concat */ #define FPPTAG_RIGHTCONCAT 29 /* data is boolean, default is FALSE */ /* Include the specified file at the beginning of each function */ #define FPPTAG_INITFUNC 30 /* data is char pointer or NULL */ /* Define function to be excluded from the "beginning-function-addings" */ #define FPPTAG_EXCLFUNC 31 /* data is char pointer */ /* Enable output of all function names defined in the source */ #define FPPTAG_DISPLAYFUNCTIONS 32 /* Switch on WWW-mode */ #define FPPTAG_WEBMODE 33 int PREFIX fppPreProcess(REG(a0) struct fppTag *); grcompiler-5.2.1/preprocessor/fpp_pragmas.h000066400000000000000000000015411411153030700210540ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: fpp_pragmas.h,v 1.1 2003/04/21 21:24:18 wardak Exp $"; #endif /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/fpp_pragmas.h,v $ * $Revision: 1.1 $ * $Date: 2003/04/21 21:24:18 $ * $Author: wardak $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: fpp_pragmas.h,v $ * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * *****************************************************************************/ #pragma libcall FPPBase fppPreProcess 1E 801 grcompiler-5.2.1/preprocessor/gdlpp.mak000066400000000000000000000067321411153030700202130ustar00rootroot00000000000000TARGET=gdlpp GDLPP_SRC=. !IF "$(CFG)" == "" CFG=RELEASE !ENDIF !IF "$(CFG)" == "RELEASE" OUTDIR=..\release INTDIR=..\release_temp all : "$(OUTDIR)\$(TARGET).exe" CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "UNIX" /D "unix" /D "_CONSOLE" /D "_MBCS" /D "GDLPP" /D "_CRT_SECURE_NO_WARNINGS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\$(TARGET).pdb" /machine:I386 /out:"$(OUTDIR)\$(TARGET).exe" BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(TARGET).bsc" !ELSEIF "$(CFG)" == "DEBUG" OUTDIR=..\debug INTDIR=..\debug_temp all : "$(OUTDIR)\$(TARGET).exe" "$(OUTDIR)\$(TARGET).bsc" CPP_PROJ=/nologo /MLd /W3 /GX /Gm /ZI /Od /D "_DEBUG" /D "WIN32" /D "UNIX" /D "unix" /D "_CONSOLE" /D "_MBCS" /D "GDLPP" /D "_CRT_SECURE_NO_WARNINGS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FR"$(INTDIR)\\" /FD /GZ /c LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\$(TARGET).pdb" /debug /pdbtype:sept /machine:I386 /out:"$(OUTDIR)\$(TARGET).exe" BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(TARGET).bsc" !ENDIF clean : @- rd /s/q $(INTDIR) realclean : clean @- del /q $(OUTDIR)\$(TARGET).exe "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" {$(GDLPP_SRC)}.c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(GDLPP_SRC)}.c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << CPP=cl.exe LINK32=link.exe RSC=rc.exe BSC32=bscmake.exe LINK32_OBJS= \ "$(INTDIR)\cpp1.obj" \ "$(INTDIR)\cpp2.obj" \ "$(INTDIR)\cpp3.obj" \ "$(INTDIR)\cpp4.obj" \ "$(INTDIR)\cpp5.obj" \ "$(INTDIR)\cpp6.obj" \ "$(INTDIR)\memory.obj" \ "$(INTDIR)\usecpp.obj" "$(OUTDIR)\$(TARGET).exe" : "$(OUTDIR)" $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << BSC32_SBRS= \ "$(INTDIR)\cpp1.sbr" \ "$(INTDIR)\cpp2.sbr" \ "$(INTDIR)\cpp3.sbr" \ "$(INTDIR)\cpp4.sbr" \ "$(INTDIR)\cpp5.sbr" \ "$(INTDIR)\cpp6.sbr" \ "$(INTDIR)\memory.sbr" \ "$(INTDIR)\usecpp.sbr" "$(OUTDIR)\$(TARGET).bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << SOURCE=cpp1 #"$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" "$(INTDIR)\cpp1.obj" "$(INTDIR)\cpp1.sbr" : "$(GDLPP_SRC)\cpp1.c" "$(INTDIR)" SOURCE=cpp2 "$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" SOURCE=cpp3 "$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" SOURCE=cpp4 "$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" SOURCE=cpp5 "$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" SOURCE=cpp6 "$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" SOURCE=memory "$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" SOURCE=usecpp "$(INTDIR)\$(SOURCE).obj" "$(INTDIR)\$(SOURCE).sbr" : "$(GDLPP_SRC)\$(SOURCE).c" "$(INTDIR)" grcompiler-5.2.1/preprocessor/memory.c000066400000000000000000000136371411153030700200710ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: memory.c,v 1.3 2005/05/27 10:21:14 mhosken Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/memory.c,v $ * $Revision: 1.3 $ * $Date: 2005/05/27 10:21:14 $ * $Author: mhosken $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: memory.c,v $ * Revision 1.3 2005/05/27 10:21:14 mhosken * Get GrCompiler working on Linux * * Revision 1.2 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.2 1994/01/24 09:36:46 start * Made it run with OS9 properly. * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ #include #include #if defined(OS9) #include #elif defined(unix) #include #elif defined(AMIGA) #include #include #endif #include #include "memory.h" #ifdef DEBUG int mem; int maxmem; int malloc_count=0; #endif /* * We have two mallockey pointers because we have two different kinds of * Malloc()s! One for each execution and one for each fplInit(). */ static struct MemInfo *MallocKey=NULL; void *Realloc(void *ptr, size_t size) { struct MemInfo *point; void *new; /* `point' points to the MemInfo structure: */ point=(struct MemInfo *)((char *)ptr-sizeof(struct MemInfo)); if(size<=point->size) /* * To increase performance, don't care about reallocing * to smaller sizes! */ return(ptr); new=Malloc(size); /* allocate new storage */ if(!new) return(NULL); /* fail! */ memcpy(new, ptr, point->size); /* copy contents */ Free(ptr); /* free old area */ return(new); /* return new pointer */ } void *Malloc(size_t size) { char *alloc = NULL; struct MemInfo *point; #ifdef DEBUG size+=MEMORY_COOKIE; /* add extra bytes after the block! */ #endif #ifdef AMIGA alloc=(char *)AllocMem(size+sizeof(struct MemInfo), 0L); #elif defined(unix) alloc=(char *)malloc(size+sizeof(struct MemInfo)); #endif if(!alloc) return(NULL); point=(struct MemInfo *)alloc; point->prev=MallocKey; /* previous */ point->next=NULL; /* next */ point->size=size; /* size */ #ifdef DEBUG malloc_count++; mem+=size+sizeof(struct MemInfo); if(mem>maxmem) maxmem=mem; memset((void *)((char *)point+sizeof(struct MemInfo)), 0xbb, size); #endif if(MallocKey) point->prev->next=point; MallocKey = (void *)point; alloc = ((char *)point+sizeof(struct MemInfo)); return ((void *)alloc); } void Free(void *ptr) { struct MemInfo *point; /* `point' points to the MemInfo structure: */ point=(struct MemInfo *)((char *)ptr-sizeof(struct MemInfo)); if(MallocKey==point) { /* if this is the last Malloc, set `last' to `prev' */ MallocKey=point->prev; if(MallocKey) MallocKey->next=NULL; } else { /* point the previous' `next' to our `next', and our next `previous' to our `previous'. Unlink us from the chain */ if(point->prev) /* only if we aren't the _first_ Malloc() ! */ point->prev->next=point->next; if(point->next) /* only if there is a next! */ point->next->prev=point->prev; } #ifdef DEBUG mem-=point->size+sizeof(struct MemInfo); CheckMem(ptr); #endif #ifdef AMIGA FreeMem(point, point->size+sizeof(struct MemInfo)); #elif unix free(point); #endif } #ifdef DEBUG void CheckMem(void *ptr) { int i; int b=0; struct MemInfo *point; /* `point' points to the MemInfo structure: */ point=(struct MemInfo *)((char *)ptr-sizeof(struct MemInfo)); for(i=0;isize-MEMORY_COOKIE)!= 0xbb) b++; if(b) { #if defined(unix) fprintf(stderr, "Memory violation: malloc(%d) was abused %d bytes!\n", point->size-MEMORY_COOKIE-sizeof(struct MemInfo), b); #elif defined(AMIGA) /* ERROR */; #endif } } #endif void FreeAll(void) { struct MemInfo *point; void *prev; if(!MallocKey) return; do { point=MallocKey; /* `point' points to the MemInfo structure! */ prev=(void *)point->prev; #ifdef DEBUG mem-=point->size+sizeof(struct MemInfo); #endif #ifdef AMIGA FreeMem(MallocKey, point->size+sizeof(struct MemInfo)); #elif unix free((char *)MallocKey); #endif } while((MallocKey=prev)); } grcompiler-5.2.1/preprocessor/memory.h000066400000000000000000000033401411153030700200640ustar00rootroot00000000000000/****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/memory.h,v $ * $Revision: 1.1 $ * $Date: 2003/04/21 21:24:18 $ * $Author: wardak $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: memory.h,v $ * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.3 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:15:59 start * Initial revision * * *****************************************************************************/ /****************************************************************************** memory.h Structures and defines for memory functions. *****************************************************************************/ typedef struct MemInfo { struct MemInfo *prev; struct MemInfo *next; size_t size; } MemInfo; void Free(void *); void FreeAll(void); void *Malloc(size_t); void *Realloc(void *, size_t); #ifdef DEBUG void CheckMem(void *); #endif #ifdef DEBUG #define MEMORY_COOKIE 0 /* When using the DEBUG option, all Malloc() will allocate a number of extra bytes at the end of the block. These will be checked to be intact when the block is freed or CheckMem()'ed. This #define tells the size of that block! */ #endif grcompiler-5.2.1/preprocessor/usecpp.c000066400000000000000000000372441411153030700200600ustar00rootroot00000000000000#ifdef RCS static char rcsid[]="$Id: usecpp.c,v 1.2 2004/10/25 19:08:41 danglassey Exp $"; #endif /****************************************************************************** Copyright (c) 1999 Daniel Stenberg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /cvsroot/silgraphite/silgraphite/src/GrCompiler/GdlPp/usecpp.c,v $ * $Revision: 1.2 $ * $Date: 2004/10/25 19:08:41 $ * $Author: danglassey $ * $State: Exp $ * $Locker: $ * * ---------------------------------------------------------------------------- * $Log: usecpp.c,v $ * Revision 1.2 2004/10/25 19:08:41 danglassey * gcc prefers some extra brackets - remove warnings * * Revision 1.1 2003/04/21 21:24:18 wardak * Add files for the GDL pre-processor (gdlpp.exe). * * Revision 1.6 1994/06/02 09:11:01 start * Added the '-n' option! * * Revision 1.5 1994/06/02 08:51:49 start * Added three more command line parameters * Made -h invokes exit nice * * Revision 1.4 1994/01/24 09:37:17 start * Major difference. * * Revision 1.3 1993/12/06 13:51:20 start * A lot of new stuff (too much to mention) * * Revision 1.2 1993/11/11 07:16:39 start * New stuff * * Revision 1.1 1993/11/03 09:13:08 start * Initial revision * * *****************************************************************************/ /********************************************************************** * * usecpp.c * * This is a routine that is should be used to call functions in the * fpp.library. We supply the own_input() and own_output() functions to * the preprocessor to remain flexible. */ #include #ifdef AMIGA #include #include #if defined(SHARED) #include #include #include "fpp_pragmas.h" #include "fpp_protos.h" #include "FPPBase.h" struct Library *FPPBase=NULL; #define PREFIX __saveds #define REG(x) register __ ## x #else #define PREFIX #define REG(x) #endif #elif defined(UNIX) #if defined(OS9) #include #else #include #ifdef BSD #include /* for BSD systems (SUN OS at least) */ #endif #endif #define PREFIX #define REG(x) #endif #include #include #include #include #ifndef OS9 #include #else #define va_list void * #endif #ifndef PREFIX #define PREFIX #define REG(x) #endif #include "fpp.h" #define MAX_TAGS 40 /* maximum number of tags allowed! */ #define FILE_LOCAL static #define CPP_PREFS_FILE "cpp.prefs" #ifdef AMIGA #define DEFAULT_CPP_PREFS_FILE "s:cpp.prefs" #else #define DEFAULT_CPP_PREFS_FILE "$HOME/cpp.prefs" #endif FILE_LOCAL char PREFIX *own_input(char *, int, void *); FILE_LOCAL void PREFIX own_output(int, void *); FILE_LOCAL void PREFIX own_error(void *, char *, va_list); FILE_LOCAL int SetOptions(int, char **, struct fppTag **); FILE_LOCAL char GetPrefs(struct fppTag **, char **); FILE_LOCAL char DoString(struct fppTag **, char *); #ifdef AMIGA extern long __stack=8000; #endif FILE_LOCAL char ignore=FALSE; /* if we should ignore strange flags! */ FILE_LOCAL char display=FALSE; /* display all options in use! */ FILE_LOCAL char dontreadprefs; /* set if only the command line is valid */ int main(int argc, char **argv) { struct fppTag tags[MAX_TAGS]; int i; struct fppTag *tagptr = tags; char *dealloc; /* * Append system-specific directories to the include directory list. * The include directories will be searched through in the same order * as you add them in the taglist! * The directory _must_ end with a proper directory speparator! */ tagptr->tag=FPPTAG_INCLUDE_DIR; #if defined (AMIGA) tagptr->data = "INCLUDE:"; #elif defined (OS9) tagptr->data = "/dd/defs/"; #elif defined (WIN32) tagptr->data = ""; #else tagptr->data = PKGDATADIR; #endif tagptr++; if(GetPrefs(&tagptr, &dealloc)) return(0); if( !(i = SetOptions(argc, argv, &tagptr))) return(0); if (argc - i >2) { printf("Too many file arguments. Usage: cpp [options] [input [output]]\n"); return(-1); } tagptr->tag=FPPTAG_INPUT; tagptr->data=(void *)own_input; tagptr++; if(itag=FPPTAG_INPUT_NAME; tagptr->data=argv[i]; tagptr++; if(display) fprintf(stderr, "cpp: input: %s\n", argv[i]); } else /* Else, just get stdin */ if(display) fprintf(stderr, "cpp: input: [stdin]\n"); i++; } else if(display) fprintf(stderr, "cpp: input: [stdin]\n"); if(itag=FPPTAG_OUTPUT; tagptr->data=(void *)own_output; tagptr++; tagptr->tag=FPPTAG_ERROR; tagptr->data=(void *)own_error; tagptr++; /* The LAST tag: */ tagptr->tag=FPPTAG_END; tagptr->data=0; tagptr++; #if defined(SHARED) && defined(AMIGA) if(!(FPPBase=OpenLibrary(FPPNAME, 1))) { printf("Error opening %s!\n", FPPNAME); return(-1); } #endif fppPreProcess(tags); #if defined(SHARED) && defined(AMIGA) CloseLibrary((struct Library *)FPPBase); #endif /* * Preprocess ready! */ if( dealloc ) free( dealloc ); return(0); } FILE_LOCAL char PREFIX *own_input(char *buffer, int size, void *userdata) { return(fgets(buffer, size, stdin)); } FILE_LOCAL void PREFIX own_output(int c, void *userdata) { putchar(c); } FILE_LOCAL void PREFIX own_error(void *userdata, char *format, va_list arg) { vfprintf(stderr, format, arg); } FILE_LOCAL char GetPrefs(struct fppTag **tagptr, char **string) { FILE *PrefsFile_PF; unsigned Length_U; /* char *PrefsBuffer_PC;*//*NOT USED*/ char ret= 0; char *env_var; *string = NULL; /* Open prefs file for read */ if ( (PrefsFile_PF = fopen(CPP_PREFS_FILE, "r")) || (PrefsFile_PF = fopen(DEFAULT_CPP_PREFS_FILE, "r"))) { fseek(PrefsFile_PF, 0 , SEEK_END); Length_U = ftell(PrefsFile_PF); fseek(PrefsFile_PF, 0, SEEK_SET); if ((*string = (char *)malloc(Length_U+1))) { size_t bytesRead = fread(*string, 1, Length_U, PrefsFile_PF); (*string)[bytesRead] = '\0'; ret = !DoString(tagptr, *string); } fclose(PrefsFile_PF); if(ret) { free( *string ); return ret; } } #ifdef GDLPP if((env_var = getenv("GDLPP_PREFS"))) { #else if((env_var = getenv("CPP_PREFS"))) { #endif ret= !DoString(tagptr, env_var); if(ret && *string) free( *string ); } return ret; } FILE_LOCAL char DoString(struct fppTag **tagptr, char *string) { char *argv[MAX_TAGS]; int argc=1; do { while(*string && *string != '-') string++; if(!*string) break; argv[argc]=string; do { string++; if(*string=='\"') { do string++; while(*string != '\"'); string++; } } while(*string && *string!=' ' && *string != '\n' && *string != '\t'); argc++; if(*string) { *string='\0'; string++; } else break; } while(1); return (SetOptions(argc, argv, tagptr)); } FILE_LOCAL int SetOptions(int argc, char **argv, struct fppTag **tagptr) { int i; char *ap; for (i = 1; i < argc; i++) { ap = argv[i]; if (*ap++ != '-' || *ap == '\0') break; else { char c = *ap++; if(display) fprintf(stderr, "cpp: option: %s\n", ap-2); switch (c) { /* Command character */ case 'Q': /* ignore unknown flags but */ ignore=1; /* output them on stderr */ break; case 'q': /* ignore unknown flags */ ignore=2; break; case 'H': /* display all whitespaces */ (*tagptr)->tag = FPPTAG_OUTPUTSPACE; (*tagptr)->data= (void *)TRUE; (*tagptr)++; break; case 'b': /* display unbalance */ (*tagptr)->tag = FPPTAG_OUTPUTBALANCE; (*tagptr)->data= (void *)TRUE; (*tagptr)++; break; case 'f': /* output all defined functions! */ (*tagptr)->tag = FPPTAG_DISPLAYFUNCTIONS; (*tagptr)->data= (void *)TRUE; (*tagptr)++; break; case 'F': /* output all included files! */ (*tagptr)->tag = FPPTAG_OUTPUTINCLUDES; (*tagptr)->data= (void *)TRUE; (*tagptr)++; break; case 'V': /* do not output version */ (*tagptr)->tag = FPPTAG_IGNOREVERSION; (*tagptr)->data= (void *)FALSE; (*tagptr)++; break; case 'C': /* Keep comments */ (*tagptr)->tag = FPPTAG_KEEPCOMMENTS; (*tagptr)->data= (void *)TRUE; (*tagptr)++; break; case 'D': /* Define symbol */ (*tagptr)->tag=FPPTAG_DEFINE; (*tagptr)->data=argv[i]+2; (*tagptr)++; break; case 'd': /* Display all options */ fprintf(stderr, "FOUND -d flag!\n"); display = TRUE; break; case 'E': /* Ignore non-fatal errors */ (*tagptr)->tag=FPPTAG_IGNORE_NONFATAL; (*tagptr)->data=(void *)TRUE; (*tagptr)++; break; case 'I': /* Include directory */ (*tagptr)->tag=FPPTAG_INCLUDE_DIR; (*tagptr)->data=ap; (*tagptr)++; break; case 'J': /* Allow nested comments */ (*tagptr)->tag=FPPTAG_NESTED_COMMENTS; (*tagptr)->data=ap; (*tagptr)++; break; case 'j': /* Warn at nested comments */ (*tagptr)->tag=FPPTAG_WARN_NESTED_COMMENTS; (*tagptr)->data=ap; (*tagptr)++; break; case 'L': if(*ap == 'L') { /* Do not output #line */ (*tagptr)->tag=FPPTAG_LINE; } else { /* Do not output the 'line' keyword */ (*tagptr)->tag=FPPTAG_OUTPUTLINE; } (*tagptr)->data=(void *)FALSE; (*tagptr)++; break; case 'M': /* Do not warn at missing includes */ (*tagptr)->tag=FPPTAG_WARNMISSINCLUDE; (*tagptr)->data=(void *)FALSE; (*tagptr)++; break; case 'n': dontreadprefs^=1; /* toggle prefsreading, default is read prefs */ /* * This flag should reset all previously added tags! */ break; case 'N': /* No machine specific built-ins */ (*tagptr)->tag=FPPTAG_BUILTINS; (*tagptr)->data=(void *)FALSE; (*tagptr)++; break; case 'B': /* No predefines like __LINE__, etc. */ (*tagptr)->tag=FPPTAG_PREDEFINES; (*tagptr)->data=(void *)FALSE; (*tagptr)++; break; case 'P': /* No C++ comments */ (*tagptr)->tag=FPPTAG_IGNORE_CPLUSPLUS; (*tagptr)->data=(void *)TRUE; (*tagptr)++; break; case 'p': /* warn about illegal # - instructions */ (*tagptr)->tag = FPPTAG_WARNILLEGALCPP; (*tagptr)->data= (void *)TRUE; (*tagptr)++; break; case 'R': (*tagptr)->tag = FPPTAG_RIGHTCONCAT; (*tagptr)->data= (void *)TRUE; (*tagptr)++; break; case 's': /* sizeof table */ (*tagptr)->tag=FPPTAG_INITFUNC; (*tagptr)->data=ap; (*tagptr)++; break; case 't': /* excluded functions */ (*tagptr)->tag=FPPTAG_EXCLFUNC; (*tagptr)->data=ap; (*tagptr)++; break; case 'S': /* sizeof table */ (*tagptr)->tag=FPPTAG_SIZEOF_TABLE; (*tagptr)->data=ap; (*tagptr)++; break; case 'U': /* Undefine symbol */ (*tagptr)->tag=FPPTAG_UNDEFINE; (*tagptr)->data=ap; (*tagptr)++; break; case 'w': /* Output all #defines but not the main file */ (*tagptr)->tag=FPPTAG_OUTPUTMAIN; (*tagptr)->data=(void *)FALSE; (*tagptr)++; case 'W': /* Output all #defines */ if(!strncmp(ap, "WW", 2)) { (*tagptr)->tag=FPPTAG_WEBMODE; (*tagptr)->data=(void *)TRUE; (*tagptr)++; } else { (*tagptr)->tag=FPPTAG_OUTPUT_DEFINES; (*tagptr)->data=(void *)TRUE; (*tagptr)++; } break; case 'X': (*tagptr)->tag=FPPTAG_INCLUDE_FILE; (*tagptr)->data=ap; (*tagptr)++; break; /* case 'x': tags[tag]->tag=FPPTAG_INCLUDE_MACRO_FILE; tags[tag++]->data=ap; break; */ case 'h': case '?': /* if a question mark is possible to specify! */ default: /* What is this one? */ if( ignore < 2 && c != 'h') { fprintf(stderr, "cpp: unknown option: -%s\n", ap-1); } if(!ignore || c == 'h') { fprintf(stderr, "Usage: cpp [options] [infile [outfile] ]\n\n" "The following options are valid:\n" " -B\tNo machine specific built-in symbols\n" " -b\tOutput any parentheses, brace or bracket unbalance\n" " -C\tWrite source file comments to output\n" " -D\tDefine a symbol with the given (optional) value \"symbol[=value]\"\n" " -d\tDisplay all specified options\n" " -E\tIgnore non-fatal errors\n" " -F\tOutput all included file names on stderr\n" " -f\tOutput all defined functions' names on stderr\n" " -H\tOutput all whitespaces from the source file\n" " -h\tOutput this help text\n" " -I\tAdd directory to the #include search list\n" " -J\tAllow nested comments\n" " -j\tEnable warnings for nested comments\n" " -LL\tDon't output #line instructions\n" " -L\tDon't output the 'line' keyword in \"#line\" instructions\n" " -M\tDon't warn for missing include files\n" " -N\tDon't predefine target-specific names\n" " -n\tToggle prefs usage\n" " -P\tDon't recognize C++ comment style\n" " -p\tEnable warnings on non ANSI preprocessor instructions\n" " -Q\tIgnore but visualize undefined flags\n" " -q\tIgnore all undefined flags\n" " -R\tEvaluate the right part first in symbol concatenations\n" " -s\tInclude the following string at the top of each function\n" " -S\tSpecify sizes for #if sizeof\n" " -t\tThis function should not get an initial function\n" " -U\tUndefine symbol\n" #ifdef GDLPP " -V\tOutput version information\n" #else " -V\tDon't output version information\n" #endif " -W\tOutput all #defines\n" " -WWW\tWeb mode preprocessing\n" " -w\tOnly output #defines\n" " -X\tInclude file\n"); return(0); } /* if (!ignore) */ } /* Switch on all options */ } /* If it's a -option */ } /* For all arguments */ return i; } /* end of function */ grcompiler-5.2.1/test/000077500000000000000000000000001411153030700146345ustar00rootroot00000000000000grcompiler-5.2.1/test/CMakeLists.txt000066400000000000000000000001051411153030700173700ustar00rootroot00000000000000project(test) add_subdirectory(GrcRegressionTest) enable_testing() grcompiler-5.2.1/test/GrcRegressionTest/000077500000000000000000000000001411153030700202505ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/CMakeLists.txt000066400000000000000000000056431411153030700230200ustar00rootroot00000000000000project(grc_regression_test) include_directories(${compiler_SOURCE_DIR}) add_executable(GrcRegressionTest CompareFontTables.cpp FileInput.cpp GrcRtFileFont.cpp GrcRegressionTest.cpp $) target_compile_definitions(GrcRegressionTest PRIVATE $<${BIGENDIAN_SYSTEM}:WORDS_BIGENDIAN>) target_link_libraries(GrcRegressionTest generic) if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") target_compile_options(GrcRegressionTest PRIVATE /W3 /EHsc) endif() set(FONT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/fonts) function(compile_test FONT VERSION PSNAME) string(REGEX REPLACE "Test(_v${VERSION})?$" "" _input ${FONT}) string(REGEX REPLACE "(^.+)Test" "\\1Benchmark" _benchmark ${FONT}) # Compile the font add_test(NAME compile_${FONT} COMMAND grcompiler -D -v${VERSION} ${ARGN} -e ${PROJECT_BINARY_DIR}/${FONT}.gdlerr.txt ${FONT_SOURCE_DIR}/${_input}Main.gdl ${FONT_SOURCE_DIR}/${_input}Input.ttf ${FONT}.ttf ${PSNAME}) set_tests_properties(compile_${FONT} PROPERTIES ENVIRONMENT "GDLPP=$;LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${ICU_INCLUDE_DIR}/../lib" # ATTACHED_FILES ${PROJECT_BINARY_DIR}/${FONT}.gdlerr.log REQUIRED_FILES "${FONT_SOURCE_DIR}/${_input}Input.ttf;${FONT_SOURCE_DIR}/${_input}Main.gdl" WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) # Run the regression tests add_test(NAME GrcRegressionTest_${FONT} COMMAND GrcRegressionTest -l ${PROJECT_BINARY_DIR}/${FONT}.grcregtest.log ${FONT_SOURCE_DIR}/${_benchmark}.ttf ${FONT}.ttf) set_tests_properties(GrcRegressionTest_${FONT} PROPERTIES DEPENDS compile_${FONT} REQUIRED_FILES "${FONT_SOURCE_DIR}/${_benchmark}.ttf;${FONT}.ttf" # ATTACHED_FILES ${PROJECT_BINARY_DIR}/${BENCHMARK_NAME}.grcregtest.log WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) # Compare the output to the expected output add_test(NAME compare_${FONT} COMMAND ${CMAKE_COMMAND} -E compare_files ${FONT}.ttf ${FONT_SOURCE_DIR}/${_benchmark}.ttf) set_tests_properties(compare_${FONT} PROPERTIES DEPENDS compile_${FONT} REQUIRED_FILES "${FONT_SOURCE_DIR}/${_benchmark}.ttf;${FONT}.ttf" WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) endfunction() function(get_icu_dirs) string(REGEX MATCH "^[0-9]+" icu_major_version ${ICU_VERSION}) file(GLOB icuders RELATIVE ${FONT_SOURCE_DIR} CONFIGURE_DEPENDS ${FONT_SOURCE_DIR}/icu*) list(TRANSFORM icuders REPLACE "icu([0-9]+)$" "\\1") list(SORT icuders) list(REVERSE icuders) foreach(ver IN LISTS icuders) if (${ver} LESS_EQUAL ${icu_major_version}) list(APPEND ICUDIRS "${ver}") endif() endforeach() set(ICUDIRS ${ICUDIRS} PARENT_SCOPE) endfunction() compile_test(SchTest 4 "") compile_test(CharisTest 2 "") compile_test(PigLatinTest_v2 2 "PigLatin GrRegTest V2" -p) compile_test(PigLatinTest_v3 3 "") compile_test(PadaukTest_v3 3 "" -offsets -p) grcompiler-5.2.1/test/GrcRegressionTest/CompareFontTables.cpp000066400000000000000000001367621411153030700243430ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2007 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: CompareFontTables.cpp Responsibility: Sharon Correll Description: Methods to run the comparisons for the benchmark and test fonts. -------------------------------------------------------------------------------*//*:End Ignore*/ #include "main.h" //:>******************************************************************************************** //:> Global variables //:>******************************************************************************************** //:>******************************************************************************************** //:> Functions //:>******************************************************************************************** /*---------------------------------------------------------------------------------------------- Compare the benchmark font against the newly created test font. ----------------------------------------------------------------------------------------------*/ int CompareFontTables(TestCase * ptcase, GrcRtFileFont * pfontBmark, GrcRtFileFont * pfontTest) { int ec = 0; // error count // benchmark font buffers const gr::byte * pHeadTblB; const gr::byte * pCmapTblB; const gr::byte * pSileTblB; const gr::byte * pSilfTblB; const gr::byte * pFeatTblB; const gr::byte * pGlatTblB; const gr::byte * pGlocTblB; const gr::byte * pNameTblB; const gr::byte * pSillTblB; size_t cbHeadSzB, cbCmapSzB, /*cbSileSzB,*/ cbSilfSzB, cbFeatSzB, cbGlatSzB, cbGlocSzB, cbNameSzB, cbSillSzB; // test font buffers const gr::byte * pHeadTblT; const gr::byte * pCmapTblT; const gr::byte * pSileTblT; const gr::byte * pSilfTblT; const gr::byte * pFeatTblT; const gr::byte * pGlatTblT; const gr::byte * pGlocTblT; const gr::byte * pNameTblT; const gr::byte * pSillTblT; size_t cbHeadSzT, cbCmapSzT, /*cbSileSzT,*/ cbSilfSzT, cbFeatSzT, cbGlatSzT, cbGlocSzT, cbNameSzT, cbSillSzT; // head table try { pHeadTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiHead), &cbHeadSzB)); if (pHeadTblB == NULL) OutputError(ec, ptcase, "ERROR: benchmark font has empty head table"); else { try { pHeadTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiHead), &cbHeadSzT)); if (pHeadTblT == NULL) OutputError(ec, ptcase, "ERROR: test font has empty head table"); else { if (cbHeadSzB != cbHeadSzT) OutputError(ec, ptcase, "ERROR: size of head tables do not match"); if (TtfUtil::DesignUnits(pHeadTblB) != TtfUtil::DesignUnits(pHeadTblT)) OutputError(ec, ptcase, "ERROR: design units do not match"); if (TtfUtil::IsItalic(pHeadTblB) != TtfUtil::IsItalic(pHeadTblT)) OutputError(ec, ptcase, "ERROR: italic flags do not match"); } } catch (...) { OutputError(ec, ptcase, "ERROR, could not read test font head table"); pHeadTblT = NULL; } } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read benchmark font head table"); pHeadTblB = NULL; pHeadTblT = NULL; } // TODO: handle Sile table. pSileTblB = NULL; pSileTblT = NULL; // cmap try { pCmapTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiCmap), &cbCmapSzB)); if (pCmapTblB == NULL) OutputError(ec, ptcase, "ERROR: benchmark font has empty cmap table"); else { try { pCmapTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiCmap), &cbCmapSzT)); if (pHeadTblT == NULL) OutputError(ec, ptcase, "ERROR: test font has empty cmap table"); else { if (cbCmapSzB != cbCmapSzT) OutputError(ec, ptcase, "ERROR: size of cmap tables do not match"); // TBD: do we need to test the contents of the cmap? // The Graphite compiler shouldn't be changing it. } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read test font cmap table"); pCmapTblT = NULL; } } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read benchmark font cmap table"); pCmapTblB = NULL; pCmapTblT = NULL; } // name // Currently the only stuff we're getting from the name table are our feature names, // so use the version from the Graphite font (not the base font if any). //////if (m_fUseSepBase) ////// pgg->SetupGraphics(&chrpOriginal); // name - need feature names later try { pNameTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiName), &cbNameSzB)); if (pNameTblB == NULL) OutputError(ec, ptcase, "ERROR: benchmark font has empty name table"); else { try { pNameTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiName), &cbNameSzT)); if (pNameTblT == NULL) OutputError(ec, ptcase, "ERROR: test font has empty name table"); else { if (cbNameSzB != cbNameSzT) OutputError(ec, ptcase, "ERROR: size of name tables do not match"); } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read test font name table"); } } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read benchmark font name table"); } /**** Obtain font name from InitNew() now instead of reading from font file. InitNew should should have a correct font name passed to it since it should come from a font registered by GrFontInst.exe. This commented code could be use to verify name in font file matches. NOTE: if we ever use this code again, make sure we're using the base font name table, not the Graphite wrapper font name table. // find the font family name if (!TtfUtil::Get31EngFamilyInfo(vbName.Begin(), lnNameOff, lnNameSz)) { // use Name table which is Symbol encode instead // this could cause problems if a real Symbol writing system is used in the name table // however normally real Unicode values are used instead a Symbol writing system if (!TtfUtil::Get30EngFamilyInfo(vbName.Begin(), lnNameOff, lnNameSz)) { ReturnResult(kresFail); } // test for Symbol writing system. first byte of Unicode id should be 0xF0 if (vbName[lnNameOff + 1] == (unsigned char)0xF0) // 1 - Unicode id is big endian ReturnResult(kresFail); } if (!TtfUtil::SwapWString(vbName.Begin() + lnNameOff, lnNameSz / sizeof(utf16))) ReturnResult(kresFail); m_stuFaceName = std::wstring((utf16 *)(vbName.begin() + lnNameOff), lnNameSz / sizeof(utf16)); ****/ // Silf try { pSilfTblT = NULL; if ((pSilfTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiSilf), &cbSilfSzB))) == NULL) OutputError(ec, ptcase, "ERROR: benchmark font has empty Silf table"); else { try { if ((pSilfTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiSilf), &cbSilfSzT))) == NULL) OutputError(ec, ptcase, "ERROR: test font has empty Silf table"); else { if (cbSilfSzB != cbSilfSzT) OutputError(ec, ptcase, "ERROR: size of Silf tables do not match"); } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read test font Silf table"); pSilfTblT = NULL; } } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read benchmark font Silf table"); pSilfTblB = NULL; pSilfTblT = NULL; } // Feat try { if ((pFeatTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiFeat), &cbFeatSzB))) == NULL) OutputError(ec, ptcase, "ERROR: benchmark font has empty Feat table"); else { try { if ((pFeatTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiFeat), &cbFeatSzT))) == NULL) OutputError(ec, ptcase, "ERROR: test font has empty Feat table"); else { if (cbFeatSzB != cbFeatSzT) OutputError(ec, ptcase, "ERROR: size of Feat tables do not match"); } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read test font Feat table"); pFeatTblT = NULL; } } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read benchmark font Feat table"); pFeatTblB = NULL; pFeatTblT = NULL; } // Glat try { if ((pGlatTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiGlat), &cbGlatSzB))) == NULL) OutputError(ec, ptcase, "ERROR: benchmark font has empty Glat table"); else { try { if ((pGlatTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiGlat), &cbGlatSzT))) == NULL) OutputError(ec, ptcase, "ERROR: test font has empty Glat table"); else { if (cbGlatSzB != cbGlatSzT) OutputError(ec, ptcase, "ERROR: size of Glat tables do not match"); } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read test font Glat table"); pGlocTblT = NULL; } } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read benchmark font Glat table"); pGlocTblB = NULL; pGlocTblT = NULL; } // Gloc try { if ((pGlocTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiGloc), &cbGlocSzB))) == NULL) OutputError(ec, ptcase, "ERROR: benchmark font has empty Gloc table"); else { try { if ((pGlocTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiGloc), &cbGlocSzT))) == NULL) OutputError(ec, ptcase, "ERROR: test font has empty Gloc table"); else { if (cbGlatSzB != cbGlatSzT) OutputError(ec, ptcase, "ERROR: size of Gloc tables do not match"); } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read test font Gloc table"); pGlatTblT = NULL; } } } catch (...) { OutputError(ec, ptcase, "ERROR: could not read benchmark font Gloc table"); pGlatTblB = NULL; pGlatTblT = NULL; } // Sill try { pSillTblB = static_cast (pfontBmark->getTable(TtfUtil::TableIdTag(ktiSill), &cbSillSzB)); try { pSillTblT = static_cast (pfontTest->getTable(TtfUtil::TableIdTag(ktiSill), &cbSillSzT)); if (cbSillSzB != cbSillSzT) OutputError(ec, ptcase, "ERROR: size of Sill tables do not match"); } catch (...) { OutputError(ec, ptcase, "ERROR: in attempting to read test font Sill table"); pSillTblT = NULL; } } catch (...) { OutputError(ec, ptcase, "ERROR: in attempting to read benchmark font Sill table"); pSillTblB = NULL; pSillTblT = NULL; } if (pSilfTblT == NULL) return ec; Assert(pSilfTblB); GrBufferIStream grstrmB, grstrmT; grstrmB.OpenBuffer((gr::byte *)pSilfTblB, cbSilfSzB); grstrmT.OpenBuffer((gr::byte *)pSilfTblT, cbSilfSzT); int chwMaxGlyphID; CompareSilfTables(ec, ptcase, grstrmB, grstrmT, &chwMaxGlyphID); grstrmB.Close(); grstrmT.Close(); if (chwMaxGlyphID == -1) { int ecBogus; OutputError(ecBogus, ptcase, "[Skipping Gloc and Glat tables since max glyph IDs do not match]"); } else if (pGlatTblB && pGlocTblB && pGlatTblT && pGlocTblT) { GrBufferIStream grstrmGlatB, grstrmGlocB, grstrmGlatT, grstrmGlocT; grstrmGlatB.OpenBuffer((gr::byte *)pGlatTblB, cbGlatSzB); grstrmGlocB.OpenBuffer((gr::byte *)pGlocTblB, cbGlocSzB); grstrmGlatT.OpenBuffer((gr::byte *)pGlatTblT, cbGlatSzT); grstrmGlocT.OpenBuffer((gr::byte *)pGlocTblT, cbGlocSzT); CompareGlatAndGlocTables(ec, ptcase, chwMaxGlyphID, grstrmGlatB, grstrmGlocB, grstrmGlatT, grstrmGlocT); grstrmGlatB.Close(); grstrmGlocB.Close(); grstrmGlatT.Close(); grstrmGlocT.Close(); } if (pFeatTblB && pFeatTblT) { grstrmB.OpenBuffer((gr::byte *)pFeatTblB, cbFeatSzB); grstrmT.OpenBuffer((gr::byte *)pFeatTblT, cbFeatSzT); CompareFeatTables(ec, ptcase, grstrmB, grstrmT, (gr::byte*)pNameTblB, (gr::byte*)pNameTblT); grstrmB.Close(); grstrmT.Close(); } if (pSillTblB && pSillTblT) { grstrmB.OpenBuffer((gr::byte *)pSillTblB, cbSillSzB); grstrmT.OpenBuffer((gr::byte *)pSillTblT, cbSillSzT); CompareSillTables(ec, ptcase, grstrmB, grstrmT); grstrmB.Close(); grstrmT.Close(); } delete[] pHeadTblB; delete[] pHeadTblT; delete[] pCmapTblB; delete[] pCmapTblT; delete[] pNameTblB; delete[] pNameTblT; delete[] pSilfTblB; delete[] pSilfTblT; delete[] pFeatTblB; delete[] pFeatTblT; delete[] pGlatTblB; delete[] pGlatTblT; delete[] pGlocTblB; delete[] pGlocTblT; delete[] pSillTblB; delete[] pSillTblT; return ec; } /*---------------------------------------------------------------------------------------------- Compare the Silf tables of the benchmark and the test fonts. ----------------------------------------------------------------------------------------------*/ void CompareSilfTables(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, int * pchwMaxGlyphID) { int fxdSilfVersionB = ReadVersion(grstrmB); int fxdSilfVersionT = ReadVersion(grstrmT); Assert(fxdSilfVersionB <= kSilfVersion); if (fxdSilfVersionT > kSilfVersion) { OutputError(ec, ptcase, "ERROR: Unknown Silf table version in test font"); return; } if (fxdSilfVersionB >= 0x00030000) // compiler version grstrmB.ReadIntFromFont(); if (fxdSilfVersionT >= 0x00030000) grstrmT.ReadIntFromFont(); // number of tables unsigned short cSubTablesB = grstrmB.ReadUShortFromFont(); Assert(cSubTablesB == 1); // for now Assert(cSubTablesB <= kMaxSubTablesInFont); unsigned short cSubTablesT = grstrmT.ReadUShortFromFont(); if (cSubTablesT < 1) { OutputError(ec, ptcase, "ERROR: Silf table has no subtable"); return; } if (cSubTablesT > 1) OutputError(ec, ptcase, "ERROR: Silf table has greater than 1 subtable"); if (fxdSilfVersionB >= 0x00020000) // reserved grstrmB.ReadShortFromFont(); if (fxdSilfVersionT >= 0x00020000) grstrmT.ReadShortFromFont(); // subtable offsets int nSubTableOffsetsB[kMaxSubTablesInFont]; int nSubTableOffsetsT[kMaxSubTablesInFont]; int i; for (i = 0; i < cSubTablesB; i++) nSubTableOffsetsB[i] = grstrmB.ReadIntFromFont(); for (i = 0; i < cSubTablesT; i++) nSubTableOffsetsT[i] = grstrmT.ReadIntFromFont(); grstrmB.SetPositionInFont(nSubTableOffsetsB[0]); grstrmT.SetPositionInFont(nSubTableOffsetsT[0]); // Now we are at the beginning of the desired sub-table. // Get the position of the start of the table. long lSubTableStartB, lSubTableStartT; grstrmB.GetPositionInFont(&lSubTableStartB); grstrmT.GetPositionInFont(&lSubTableStartT); // rule version uint32_t fxdRuleVersionB = (fxdSilfVersionB >= 0x00030000) ? ReadVersion(grstrmB) : fxdSilfVersionB; uint32_t fxdRuleVersionT = (fxdSilfVersionT >= 0x00030000) ? ReadVersion(grstrmT) : fxdSilfVersionT; long lPassBlockPosB = -1; long lPseudosPosB = -1; if (fxdSilfVersionB >= 0x00030000) { lPassBlockPosB = grstrmB.ReadUShortFromFont() + lSubTableStartB; lPseudosPosB = grstrmB.ReadUShortFromFont() + lSubTableStartB; } long lPassBlockPosT = -1; long lPseudosPosT = -1; if (fxdSilfVersionT >= 0x00030000) { lPassBlockPosT = grstrmT.ReadUShortFromFont() + lSubTableStartT; lPseudosPosT = grstrmT.ReadUShortFromFont() + lSubTableStartT; } // maximum glyph ID *pchwMaxGlyphID = grstrmB.ReadUShortFromFont(); if (grstrmT.ReadUShortFromFont() != *pchwMaxGlyphID) { OutputError(ec, ptcase, "ERROR: Silf table - maxiumum glyph ID"); *pchwMaxGlyphID = -1; } // extra ascent if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - extra ascent"); // extra descent if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - extra descent"); // number of passes gr::byte cPasses = grstrmB.ReadByteFromFont(); if (cPasses != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - number of passes"); // index of first substitution pass gr::byte ipassSub1 = grstrmB.ReadByteFromFont(); if (ipassSub1 != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - first substitution pass"); // index of first positioning pass gr::byte ipassPos1 = grstrmB.ReadByteFromFont(); if (ipassPos1 != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - first positioning pass"); // index of first justification pass gr::byte ipassJust1 = grstrmB.ReadByteFromFont(); if (ipassJust1 != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - first justification pass"); // index of first reordered pass, or 0xFF if no reordering gr::byte ipassReordered1 = grstrmB.ReadByteFromFont(); if (ipassReordered1 != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - first reordered pass"); gr::byte bT, bB; // flags if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - flags"); // range of possible cross-line-boundary contextualization if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - pre LB context"); if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - post LB context"); // actual glyph ID for pseudo-glyph (ID of bogus attribute) //long posB; grstrmB.GetPositionInFont(&posB); - debuggers //WriteToLog("benchmark position = ", posB, "; "); //long posT; grstrmT.GetPositionInFont(&posT); //WriteToLog("test font position = ", posT, "; "); //gr::byte tempB = grstrmB.ReadByteFromFont(); //WriteToLog("next byte B = ", tempB, "; "); //gr::byte tempT = grstrmT.ReadByteFromFont(); //WriteToLog("next byte T = ", tempT, "\n"); //if (tempB != tempT) if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - actual-for-pseudo attr"); // breakweight if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - breakweight attr"); // directionality if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - directionality attr"); if (fxdSilfVersionB >= 0x00020000 && fxdSilfVersionT >= 0x00020000) { if (fxdSilfVersionB >= 0x00040000) { if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - mirroring attrs"); if ((bB = grstrmB.ReadByteFromFont()) != (bT = grstrmT.ReadByteFromFont())) OutputError(ec, ptcase, "ERROR: Silf table - skip-passes attr"); } else { // reserved grstrmB.ReadByteFromFont(); grstrmT.ReadByteFromFont(); grstrmB.ReadByteFromFont(); grstrmT.ReadByteFromFont(); } // justification levels int cJLevels = grstrmB.ReadByteFromFont(); if (cJLevels != grstrmT.ReadByteFromFont()) { OutputError(ec, ptcase, "ERROR: Silf table - justification levels"); return; } for (int i = 0; i < cJLevels; i++) { // justification glyph attribute IDs if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - stretch", i); if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - shrink", i); if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - step", i); if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - weight", i); grstrmB.ReadByteFromFont(); // runto grstrmT.ReadByteFromFont(); // reserved grstrmB.ReadByteFromFont(); grstrmB.ReadByteFromFont(); grstrmB.ReadByteFromFont(); grstrmT.ReadByteFromFont(); grstrmT.ReadByteFromFont(); grstrmT.ReadByteFromFont(); } } else if (fxdSilfVersionB >= 0x00020000) { // reserved grstrmB.ReadByteFromFont(); grstrmB.ReadByteFromFont(); // justification levels int cJLevels = grstrmB.ReadByteFromFont(); if (cJLevels > 0) OutputError(ec, ptcase, "ERROR: Silf table - missing justification data"); gr::byte rgb[8]; for (int i = 0; i < cJLevels; i++) grstrmB.ReadBlockFromFont(rgb, 8); } else if (fxdSilfVersionT >= 0x00020000) { // reserved grstrmB.ReadByteFromFont(); grstrmB.ReadByteFromFont(); // justification levels int cJLevels = grstrmB.ReadByteFromFont(); if (cJLevels > 0) OutputError(ec, ptcase, "ERROR: Silf table - justification data found but not expected"); gr::byte rgb[8]; for (int i = 0; i < cJLevels; i++) grstrmB.ReadBlockFromFont(rgb, 8); } // number of component attributes if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - number of components"); // number of user-defined slot attributes if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - number of user-defined slot attributes"); // max number of ligature components per glyph if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - max number of ligature components"); // directions supported if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - supported directions"); if (fxdSilfVersionB >= 0x00040001) { if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - collision attributes"); } else { // reserved grstrmB.ReadByteFromFont(); grstrmT.ReadByteFromFont(); } // reserved grstrmB.ReadByteFromFont(); grstrmB.ReadByteFromFont(); grstrmT.ReadByteFromFont(); grstrmT.ReadByteFromFont(); // critical features if (fxdSilfVersionB >= 0x00020000 && fxdSilfVersionT >= 0x00020000) { // reserved grstrmB.ReadByteFromFont(); grstrmT.ReadByteFromFont(); // critical features if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - critical features"); // reserved grstrmB.ReadByteFromFont(); grstrmT.ReadByteFromFont(); } else if (fxdSilfVersionB >= 0x00020000) { grstrmB.ReadByteFromFont(); if (grstrmB.ReadByteFromFont() != 0) OutputError(ec, ptcase, "ERROR: Silf table - critical features not equal to zero"); grstrmB.ReadByteFromFont(); } else if (fxdSilfVersionT >= 0x00020000) { grstrmT.ReadByteFromFont(); if (grstrmT.ReadByteFromFont() != 0) OutputError(ec, ptcase, "ERROR: Silf table - critical features found but not expected"); grstrmT.ReadByteFromFont(); } // rendering behaviors int cBehaviorsB = grstrmB.ReadByteFromFont(); int cBehaviorsT = grstrmT.ReadByteFromFont(); if (cBehaviorsB != cBehaviorsT) OutputError(ec, ptcase, "ERROR: Silf table - rendering behaviors"); for (i = 0; i < cBehaviorsB; i++) grstrmB.ReadUShortFromFont(); for (i = 0; i < cBehaviorsT; i++) grstrmT.ReadUShortFromFont(); // linebreak glyph ID if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - linebreak glyph ID"); // Jump to the beginning of the pass offset block, if we have this information. if (fxdSilfVersionB >= 0x00030000) grstrmB.SetPositionInFont(lPassBlockPosB); else // Otherwise assume that's where we are! Assert(lPassBlockPosB == -1); if (fxdSilfVersionT >= 0x00030000) grstrmT.SetPositionInFont(lPassBlockPosT); else Assert(lPassBlockPosT == -1); // offsets to passes, relative to the start of this subtable; // note that we read (cPasses + 1) of these int rgnPassOffsets[kMaxPasses]; bool fPassesOk = true; for (i = 0; i <= cPasses; i++) { rgnPassOffsets[i] = grstrmB.ReadIntFromFont(); if (rgnPassOffsets[i] != grstrmT.ReadIntFromFont()) { OutputError(ec, ptcase, "ERROR: Silf table - pass offsets", i); fPassesOk = false; } } // Jump to the beginning of the pseudo-glyph info block, if we have this information. if (fxdSilfVersionB >= 0x00030000) grstrmB.SetPositionInFont(lPseudosPosB); else // Otherwise assume that's where we are! Assert(lPseudosPosB == -1); if (fxdSilfVersionT >= 0x00030000) grstrmT.SetPositionInFont(lPseudosPosT); else Assert(lPseudosPosT == -1); // number of pseudo-glyphs and search constants int cpsd = grstrmB.ReadUShortFromFont(); if (cpsd != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - pseudo search count"); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - pseudo search increment"); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - pseudo search loop"); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - pseudo search start"); // unicode-to-pseudo map for (i = 0; i < cpsd; i++) { int unicodeB, unicodeT; if (fxdSilfVersionB <= 0x00010000) unicodeB = grstrmB.ReadUShortFromFont(); else unicodeB = grstrmB.ReadIntFromFont(); if (fxdSilfVersionT <= 0x00010000) unicodeT = grstrmT.ReadUShortFromFont(); else unicodeT = grstrmT.ReadIntFromFont(); if (unicodeB != unicodeT) OutputError(ec, ptcase, "ERROR: Silf table - unicode for pseudo", i); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table = pseudo value", i); } CompareClassMaps(ec, ptcase, grstrmB, grstrmT, fxdSilfVersionB); if (fPassesOk) ComparePasses(ec, ptcase, grstrmB, grstrmT, fxdSilfVersionB, fxdSilfVersionT, cPasses, lSubTableStartB, lSubTableStartT, rgnPassOffsets); } /*---------------------------------------------------------------------------------------------- Compare the class tables. ----------------------------------------------------------------------------------------------*/ void CompareClassMaps(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, int fxdSilfVersion) { // number of classes int cClasses = grstrmB.ReadUShortFromFont(); if (cClasses != grstrmT.ReadUShortFromFont()) { OutputError(ec, ptcase, "ERROR: class map - number of classes"); return; } // number of linearly stored classes int cClassesLinear = grstrmB.ReadUShortFromFont(); if (cClassesLinear != grstrmT.ReadUShortFromFont()) { OutputError(ec, ptcase, "ERROR: class map - number of linear classes"); return; } // offsets int * nOffsets = new int[cClasses + 1]; bool fOffsetsOk = true; for (int i = 0; i <= cClasses; i++) { bool fErr; if (fxdSilfVersion < 0x00040000) { nOffsets[i] = (int)grstrmB.ReadUShortFromFont(); fErr = (nOffsets[i] != grstrmT.ReadUShortFromFont()); } else { nOffsets[i] = grstrmB.ReadIntFromFont(); fErr = (nOffsets[i] != grstrmT.ReadIntFromFont()); } if (fErr) { OutputError(ec, ptcase, "ERROR: class map - offset", i); fOffsetsOk = false; } } if (!fOffsetsOk) { delete[] nOffsets; return; } int iClass = 0; int ibOffset = (fxdSilfVersion < 0x00040000) ? 4 + (2 * (cClasses + 1)) : 4 + (4 * (cClasses + 1)); while (iClass < cClasses) { bool fLinear = (iClass < cClassesLinear); if (fLinear) { int cGlyphs = (nOffsets[iClass + 1] - nOffsets[iClass]) >> 1; // divided by 2 for (int ig = 0; ig < cGlyphs; ig++) { if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: class map - glyph of class", iClass); ibOffset += 2; // 2 bytes per glyph ID } } else { int cGlyphs = grstrmB.ReadUShortFromFont(); if (cGlyphs != grstrmT.ReadUShortFromFont()) { OutputError(ec, ptcase, "ERROR: class map - number of glyphs in class", iClass); return; } if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - class search increment", iClass); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - class search loop", iClass); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - class search start", iClass); ibOffset += 8; for (int ig = 0; ig < cGlyphs; ig++) { if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - glyph ID in class", iClass); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Silf table - glyph index in class", iClass); ibOffset += 4; // glyph ID + index in class } } iClass++; Assert(ibOffset == nOffsets[iClass]); } //delete[] wOffsets; delete[] nOffsets; } /*---------------------------------------------------------------------------------------------- Compare the class tables. ----------------------------------------------------------------------------------------------*/ void ComparePasses(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, int fxdSilfVersionB, int fxdSilfVersionT, int cPasses, int lSubTableStartB, int lSubTableStartT, int * prgnPassOffsets) { for (int iPass = 0; iPass < cPasses; iPass++) { int nOffsetB = lSubTableStartB + prgnPassOffsets[iPass]; int nOffsetT = lSubTableStartT + prgnPassOffsets[iPass]; long lPassInfoStart; grstrmB.GetPositionInFont(&lPassInfoStart); if (lPassInfoStart != nOffsetB) grstrmB.SetPositionInFont(nOffsetB); grstrmT.GetPositionInFont(&lPassInfoStart); if (lPassInfoStart != nOffsetT) grstrmT.SetPositionInFont(nOffsetT); // flags if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, " - flags"); // MaxRuleLoop if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, " - MaxRuleLoop"); // max rule context if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, " - max rule context"); // MaxBackup if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, " - MaxBackup"); // number of rules int crul = grstrmB.ReadShortFromFont(); if (crul != grstrmT.ReadShortFromFont()) { OutputError(ec, ptcase, "ERROR: pass", iPass, " - number of rules"); return; } // offset to pass constraint code, relative to start of subtable int nPConstraintOffsetB = 0; long lFsmPosB = -1; if (fxdSilfVersionB >= 0x00020000) { if (fxdSilfVersionB >= 0x00030000) lFsmPosB = grstrmB.ReadUShortFromFont() + nOffsetB; // offset to row info else grstrmB.ReadShortFromFont(); // pad bytes nPConstraintOffsetB = grstrmB.ReadIntFromFont(); } int nPConstraintOffsetT = 0; long lFsmPosT = -1; if (fxdSilfVersionT >= 0x00020000) { if (fxdSilfVersionT >= 0x00030000) lFsmPosT = grstrmT.ReadUShortFromFont() + nOffsetT; // offset to row info else grstrmT.ReadShortFromFont(); // pad bytes nPConstraintOffsetT = grstrmT.ReadIntFromFont(); } // offset to rule constraint code, relative to start of subtable int nConstraintOffset = grstrmB.ReadIntFromFont(); //grstrmB.ReadIntFromFont(); grstrmT.ReadIntFromFont(); // offset to action code, relative to start of subtable int nActionOffset = grstrmB.ReadIntFromFont(); //grstrmB.ReadIntFromFont(); grstrmT.ReadIntFromFont(); // offset to debug strings; 0 if stripped //int nDebugOffset = grstrmB.ReadIntFromFont(); grstrmB.ReadIntFromFont(); grstrmT.ReadIntFromFont(); // Jump to beginning of FSM, if we have this information. if (fxdSilfVersionB >= 0x00030000) grstrmB.SetPositionInFont(lFsmPosB); else // Otherwise assume that's where we are! Assert(lFsmPosB == -1); if (fxdSilfVersionT >= 0x00030000) grstrmT.SetPositionInFont(lFsmPosT); else // Otherwise assume that's where we are! Assert(lFsmPosT == -1); int cFsmCells = CompareFsm(ec, ptcase, grstrmB, grstrmT, fxdSilfVersionB, fxdSilfVersionT, iPass); // rule sort keys int irul; for (irul = 0; irul < crul; irul++) { if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, ", rule sort key", irul); } // rule pre-mod-context item counts for (irul = 0; irul < crul; irul++) { if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, ", rule pre-mod-context", irul); } if (fxdSilfVersionB >= 0x00050000) { if (grstrmB.ReadByteFromFont() != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, "- collision threshold"); } else if (fxdSilfVersionB >= 0x00020000) { int x1 = grstrmB.ReadByteFromFont(); int x2 = grstrmT.ReadByteFromFont(); } // constraint offset for pass-level constraints int cbPassConstraintsB = 0; if (fxdSilfVersionB >= 0x00020000) { if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, ", pass-level constraint offset"); } // constraint and action offsets for rules data16 cbConstraints; for (irul = 0; irul <= crul; irul++) // N + 1 { cbConstraints = grstrmB.ReadUShortFromFont(); // save the last item, it gives the total if (cbConstraints != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, ", rule constraint offset", irul); } data16 cbActions; for (irul = 0; irul <= crul; irul++) // N + 1 { cbActions = grstrmB.ReadUShortFromFont(); // save the last item, it gives the total if (cbActions != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, ", rule action offset", irul); } // FSM cells for (int iCell = 0; iCell < cFsmCells; iCell++) { if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass", iPass, ", FSM cell", iCell); } if (fxdSilfVersionB >= 0x00020000) // reserved - pad byte grstrmB.ReadByteFromFont(); if (fxdSilfVersionT >= 0x00020000) // reserved - pad byte grstrmT.ReadByteFromFont(); gr::byte * pbB; gr::byte * pbT; int ib; // Constraint and action blocks int cb = cbPassConstraintsB; gr::byte * prgbPConstraintBlockB = new gr::byte[cb]; gr::byte * prgbPConstraintBlockT = new gr::byte[cb]; grstrmB.ReadBlockFromFont(prgbPConstraintBlockB, cb); grstrmT.ReadBlockFromFont(prgbPConstraintBlockT, cb); for (ib = 0, pbB = prgbPConstraintBlockB, pbT = prgbPConstraintBlockT; ib < cb; ib++, pbB++, pbT++) { if (*pbB != *pbT) OutputError(ec, ptcase, "ERROR: pass", iPass, ", pass constraint byte", ib); } delete[] prgbPConstraintBlockB; delete[] prgbPConstraintBlockT; cb = cbConstraints; gr::byte * prgbConstraintBlockB = new gr::byte[cb]; gr::byte * prgbConstraintBlockT = new gr::byte[cb]; grstrmB.ReadBlockFromFont(prgbConstraintBlockB, cb); grstrmT.ReadBlockFromFont(prgbConstraintBlockT, cb); for (ib = 0, pbB = prgbConstraintBlockB, pbT = prgbConstraintBlockT; ib < cb; ib++, pbB++, pbT++) { if (*pbB != *pbT) OutputError(ec, ptcase, "ERROR: pass", iPass, ", rule constraint byte", ib); } delete[] prgbConstraintBlockB; delete[] prgbConstraintBlockT; cb = cbActions; gr::byte * prgbActionBlockB = new gr::byte[cb]; gr::byte * prgbActionBlockT = new gr::byte[cb]; grstrmB.ReadBlockFromFont(prgbActionBlockB, cb); grstrmT.ReadBlockFromFont(prgbActionBlockT, cb); for (ib = 0, pbB = prgbActionBlockB, pbT = prgbActionBlockT; ib < cb; ib++, pbB++, pbT++) { if (*pbB != *pbT) OutputError(ec, ptcase, "ERROR: pass", iPass, ", action byte", ib); } delete[] prgbActionBlockB; delete[] prgbActionBlockT; } } /*---------------------------------------------------------------------------------------------- Compare the FSMs. ----------------------------------------------------------------------------------------------*/ int CompareFsm(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, int fxdSilfVersionB, int fxdSilfVersionT, int iPass) { // number of FSM states int crow = grstrmB.ReadShortFromFont(); if (crow != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - number of FSM states"); // number of transitional states int crowTransitional = grstrmB.ReadShortFromFont(); if (crowTransitional != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - number of FSM transitional states"); // number of success states int crowSuccess = grstrmB.ReadShortFromFont(); if (crowSuccess != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - number of FSM success states"); int crowFinal = crow - crowTransitional; int crowNonAcpt = crow - crowSuccess; // number of columns int ccol = grstrmB.ReadShortFromFont(); if (ccol != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - number of FSM columns"); // Sanity check Assert(crowTransitional <= crow && crowSuccess <= crow); // number of FSM glyph ranges and search constants int cmcr = grstrmB.ReadShortFromFont(); if (cmcr != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - # of glyph ranges"); if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - glyph range search increment"); if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - glyph range search loop"); if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - glyph range search start"); for (int imcr = 0; imcr < cmcr; imcr++) { if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - glyph range first", imcr); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - glyph range last", imcr); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - glyph range column", imcr); } // rule map and offsets (extra item at end gives final offset, ie, total) int crulInMap; int i; for (i = 0; i < (crowSuccess + 1); i++) { crulInMap = grstrmB.ReadUShortFromFont(); // last offset functions as the total length of the rule list if (crulInMap != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - rule map offset", i); } for (i = 0; i < crulInMap; i++) { if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - rule map item", i); } // min rule pre-context number of items int critMinRulePreContext = grstrmB.ReadByteFromFont(); if (critMinRulePreContext != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - min rule pre-context", i); int critMaxRulePreContext = grstrmB.ReadByteFromFont(); if (critMaxRulePreContext != grstrmT.ReadByteFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - max rule pre-context", i); Assert(critMinRulePreContext <= kMaxSlotsPerRule); Assert(critMaxRulePreContext <= kMaxSlotsPerRule); int cStartStates = critMaxRulePreContext - critMinRulePreContext + 1; // start states for (int ic = 0; ic < cStartStates; ic++) { if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: pass FSM", iPass, " - start state", ic); } return (crow - crowFinal) * ccol; } /*---------------------------------------------------------------------------------------------- Compare the Glat and Gloc tables. ----------------------------------------------------------------------------------------------*/ void CompareGlatAndGlocTables(int & ec, TestCase * ptcase, int wMaxGlyphID, GrIStream & grstrmGlatB, GrIStream & grstrmGlocB, GrIStream & grstrmGlatT, GrIStream & grstrmGlocT) { if (ReadVersion(grstrmGlatB) != ReadVersion(grstrmGlatT)) { OutputError(ec, ptcase, "ERROR: Glat table versions do not match."); return; } if (ReadVersion(grstrmGlocB) != ReadVersion(grstrmGlocT)) { OutputError(ec, ptcase, "ERROR: Gloc table versions do not match."); return; } // flag bits data16 wFlagsB = grstrmGlocB.ReadUShortFromFont(); data16 wFlagsT = grstrmGlocT.ReadUShortFromFont(); if (wFlagsB != wFlagsT) OutputError(ec, ptcase, "ERROR: Gloc table flags do not match"); bool fLongFormatB = wFlagsB & 0x0001; bool fLongFormatT = wFlagsT & 0x0001; // number of attributes data16 cAttribs = grstrmGlocB.ReadUShortFromFont(); if (cAttribs != grstrmGlocT.ReadUShortFromFont()) { OutputError(ec, ptcase, "ERROR: Gloc table - number of attributes"); return; } // offsets and attribute values int nOffsetB = fLongFormatB ? grstrmGlocB.ReadIntFromFont() : grstrmGlocB.ReadUShortFromFont(); int nOffsetT = fLongFormatT ? grstrmGlocT.ReadIntFromFont() : grstrmGlocT.ReadUShortFromFont(); if (fLongFormatB == fLongFormatT && nOffsetB != nOffsetT) OutputErrorWithValues(ec, ptcase, "ERROR: Gloc table - offset", 0, nOffsetB, nOffsetT); int iAttrEntry = 0; int cbGlatOffset = 4; // read version for (gid16 wGlyphID = 1; wGlyphID < wMaxGlyphID; wGlyphID++) { int nOffsetBnext = fLongFormatB ? grstrmGlocB.ReadIntFromFont() : grstrmGlocB.ReadUShortFromFont(); while (cbGlatOffset < nOffsetBnext) { int nAttrNumB = grstrmGlatB.ReadByteFromFont(); int nAttrNumT = grstrmGlatT.ReadByteFromFont(); if (nAttrNumB != nAttrNumT) { OutputError(ec, ptcase, "ERROR: Glat table - glyph", wGlyphID, ", attr entry first attr", iAttrEntry); return; } int cAttrsB = grstrmGlatB.ReadByteFromFont(); int cAttrsT = grstrmGlatT.ReadByteFromFont(); if (cAttrsB != cAttrsT) { OutputError(ec, ptcase, "ERROR: Glat table - glyph", wGlyphID, ", attr entry # of attrs", iAttrEntry); return; } cbGlatOffset += 2; // 2 bytes for (int iAttr = 0; iAttr < cAttrsB; iAttr++) { int nValueB = grstrmGlatB.ReadShortFromFont(); int nValueT = grstrmGlatT.ReadShortFromFont(); if (nValueB != nValueT) { OutputError(ec, ptcase, "ERROR: Glat table - glyph", wGlyphID, ", attr value", nAttrNumB+iAttr); OutputError(ec, ptcase, " Values: ", nValueB, " -> ", nValueT); } cbGlatOffset += 2; // 2 bytes } iAttrEntry++; } // Go on to next glyph ID. nOffsetB = nOffsetBnext; nOffsetT = fLongFormatT ? grstrmGlocT.ReadIntFromFont() : grstrmGlocT.ReadUShortFromFont(); if (fLongFormatB == fLongFormatT && nOffsetB != nOffsetT) OutputErrorWithValues(ec, ptcase, "ERROR: Gloc table - offset", wGlyphID, nOffsetB, nOffsetT); } } /*---------------------------------------------------------------------------------------------- Compare the Feat tables. ----------------------------------------------------------------------------------------------*/ void CompareFeatTables(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, const gr::byte * pNameTblB, const gr::byte * pNameTblT) { int fxdVersionB = ReadVersion(grstrmB); int fxdVersionT = ReadVersion(grstrmT); Assert(fxdVersionB <= kFeatVersion); if (fxdVersionT > kFeatVersion) { OutputError(ec, ptcase, "ERROR: Feat table - unknown version number"); return; } // number of features int cfeatB = grstrmB.ReadUShortFromFont(); int cfeatT = grstrmT.ReadUShortFromFont(); Assert(cfeatB <= kMaxFeatures); if (cfeatB != cfeatT) OutputError(ec, ptcase, "ERROR: Feat table - number of features"); // reserved grstrmB.ReadUShortFromFont(); grstrmT.ReadUShortFromFont(); grstrmB.ReadIntFromFont(); grstrmT.ReadIntFromFont(); int cfset = 0; int ifeat; for (ifeat = 0; ifeat < min(cfeatB, cfeatT); ifeat++) { // ID featid nIdB, nIdT; if (fxdVersionB >= 0x00020000) nIdB = (unsigned int)grstrmB.ReadIntFromFont(); else nIdB = grstrmB.ReadUShortFromFont(); if (fxdVersionT >= 0x00020000) nIdT = (unsigned int)grstrmT.ReadIntFromFont(); else nIdT = grstrmT.ReadUShortFromFont(); if (nIdB != nIdT) OutputError(ec, ptcase, "ERROR: Feat table - feature ID", ifeat); // number of settings data16 cfsetThis = grstrmB.ReadUShortFromFont(); if (cfsetThis != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Feat table - feature", ifeat, ", number of settings"); cfset += cfsetThis; if (fxdVersionB >= 0x00020000) grstrmB.ReadShortFromFont(); // pad bytes if (fxdVersionT >= 0x00020000) grstrmT.ReadShortFromFont(); // offset to settings list grstrmB.ReadIntFromFont(); grstrmT.ReadIntFromFont(); // flags if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Feat table - feature", ifeat, ", flags"); // index into name table of UI label unsigned int nStrOffsetB = grstrmB.ReadShortFromFont(); unsigned int nStrOffsetT = grstrmT.ReadShortFromFont(); std::wstring strB = StringFromNameTable(pNameTblB, 1033, nStrOffsetB); std::wstring strT = StringFromNameTable(pNameTblT, 1033, nStrOffsetT); if (wcscmp(strB.c_str(), strT.c_str()) != 0) OutputError(ec, ptcase, "ERROR: Feat table - label for feature", ifeat); } if (cfeatB != cfeatT) return; // setttings for (int ifset = 0; ifset < cfset; ifset++) { if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: Feat table - value for setting", ifset); // name table offsets unsigned int nStrOffsetB = grstrmB.ReadUShortFromFont(); unsigned int nStrOffsetT = grstrmT.ReadUShortFromFont(); std::wstring strB = StringFromNameTable(pNameTblB, 1033, nStrOffsetB); std::wstring strT = StringFromNameTable(pNameTblT, 1033, nStrOffsetT); if (wcscmp(strB.c_str(), strT.c_str()) != 0) OutputError(ec, ptcase, "ERROR: Feat table - label for setting", ifset); } } /*---------------------------------------------------------------------------------------------- Compare the Sill tables. ----------------------------------------------------------------------------------------------*/ void CompareSillTables(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT) { ReadVersion(grstrmB); ReadVersion(grstrmT); // number of languages int clangB = grstrmB.ReadUShortFromFont(); int clangT = grstrmT.ReadUShortFromFont(); if (clangB != clangT) OutputError(ec, ptcase, "ERROR: Sill table - number of languages"); // search constants if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Sill table - search increment"); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Sill table - search loop"); if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Sill table - search start"); int cSettings = 0; for (int ilang = 0; ilang <= std::min(clangB, clangT); ilang++) { if (grstrmB.ReadIntFromFont() != grstrmT.ReadIntFromFont()) OutputError(ec, ptcase, "ERROR: Sill table - language code", ilang); int c = grstrmB.ReadUShortFromFont(); if (c!= grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Sill table - number of settings", ilang); cSettings += c; if (grstrmB.ReadUShortFromFont() != grstrmT.ReadUShortFromFont()) OutputError(ec, ptcase, "ERROR: Sill table - offset", ilang); } if (clangB != clangT) return; for (int iSetting = 0; iSetting < cSettings; iSetting++) { if (grstrmB.ReadIntFromFont() != grstrmT.ReadIntFromFont()) // should be unsigned, but oh well OutputError(ec, ptcase, "ERROR: Sill table - feature ID", iSetting); if (grstrmB.ReadShortFromFont() != grstrmT.ReadShortFromFont()) OutputError(ec, ptcase, "ERROR: Sill table - default value", iSetting); // pad bytes grstrmB.ReadShortFromFont(); grstrmT.ReadShortFromFont(); } } /*---------------------------------------------------------------------------------------------- Reinterpret the version number from a font table. ----------------------------------------------------------------------------------------------*/ int ReadVersion(GrIStream & grstrm) { int fxdVersion = grstrm.ReadIntFromFont(); if (fxdVersion < 0x00010000) fxdVersion = 0x00010000; // kludge for bug with which some fonts were generated return fxdVersion; } grcompiler-5.2.1/test/GrcRegressionTest/FileInput.cpp000077500000000000000000000210031411153030700226520ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: FileInput.cpp Responsibility: Sharon Correll Last reviewed: Not yet. Description: Contains the functions for reading from a TT file. (These are functions, not methods associated with a class.) ----------------------------------------------------------------------------------------------*/ //:>******************************************************************************************** //:> Include files //:>******************************************************************************************** #include "main.h" //#ifndef _MSC_VER //#include "config.h" //#endif #ifdef _MSC_VER #pragma hdrstop #endif //:End Ignore //:>******************************************************************************************** //:> Forward declarations //:>******************************************************************************************** //:>******************************************************************************************** //:> Local Constants and static variables //:>******************************************************************************************** namespace gr { //:>******************************************************************************************** //:> Methods of GrBufferIStream //:>******************************************************************************************** /*---------------------------------------------------------------------------------------------- Constructor. ----------------------------------------------------------------------------------------------*/ GrBufferIStream::GrBufferIStream() { m_pbStart = NULL; m_pbNext = NULL; m_pbLim = NULL; } /*---------------------------------------------------------------------------------------------- Destructor. ----------------------------------------------------------------------------------------------*/ GrBufferIStream::~GrBufferIStream() { Close(); } /*---------------------------------------------------------------------------------------------- Initialize the stream. ----------------------------------------------------------------------------------------------*/ #ifdef GR_FW bool GrBufferIStream::Open(std::wstring stuFileName, int kMode) #else bool GrBufferIStream::Open(const char * /*pcFileName*/, std::ios::openmode /*kMode*/) #endif { Assert(false); // use OpenBuffer return false; } /*---------------------------------------------------------------------------------------------- Initialize the stream to a buffer. ----------------------------------------------------------------------------------------------*/ bool GrBufferIStream::OpenBuffer(byte * pbBuffer, int cb) { Assert(m_pbStart == NULL); Assert(m_pbNext == NULL); Assert(m_pbLim == NULL); m_pbStart = pbBuffer; m_pbNext = pbBuffer; if (cb > 0) m_pbLim = m_pbStart + cb; // otherwise we don't know the length return true; } /*---------------------------------------------------------------------------------------------- Close the stream. ----------------------------------------------------------------------------------------------*/ void GrBufferIStream::Close() { m_pbStart = NULL; m_pbNext = NULL; m_pbLim = NULL; } /*---------------------------------------------------------------------------------------------- Read a byte from the stream. ----------------------------------------------------------------------------------------------*/ byte GrBufferIStream::ReadByteFromFont() { if (m_pbLim && m_pbNext >= m_pbLim) THROW(kresReadFault); return *m_pbNext++; } /*---------------------------------------------------------------------------------------------- Read a short (signed 16-bit) word from the stream. Switch the bytes from big-endian to little-endian format. ----------------------------------------------------------------------------------------------*/ short GrBufferIStream::ReadShortFromFont() { short snInput; if (m_pbLim && 2 > m_pbLim - m_pbNext) THROW(kresReadFault); snInput = (m_pbNext[0] << 8) + m_pbNext[1]; m_pbNext += 2; return snInput; } /*---------------------------------------------------------------------------------------------- Read a wide character (unsigned 16-bit word) from the stream. Switch the bytes from big-endian to little-endian format. ----------------------------------------------------------------------------------------------*/ utf16 GrBufferIStream::ReadUShortFromFont() { utf16 chwInput; if (m_pbLim && 2 > m_pbLim - m_pbNext) THROW(kresReadFault); chwInput = (m_pbNext[0] << 8) + m_pbNext[1]; m_pbNext += 2; return chwInput; } /*---------------------------------------------------------------------------------------------- Read a standard (32-bit) word from the stream. Switch the bytes from big-endian to little-endian format. ----------------------------------------------------------------------------------------------*/ int GrBufferIStream::ReadIntFromFont() { sdata32 nInput = 0; if (m_pbLim && 4 > m_pbLim - m_pbNext) THROW(kresReadFault); nInput = (m_pbNext[0] << 24) + (m_pbNext[1] << 16) + (m_pbNext[2] << 8) + m_pbNext[3]; m_pbNext += 4; return nInput; } /*---------------------------------------------------------------------------------------------- Read a block of data from the stream. DON'T switch the bytes from big-endian to little-endian format. ----------------------------------------------------------------------------------------------*/ void GrBufferIStream::ReadBlockFromFont(void * pvInput, int cb) { if (m_pbLim && (cb < 0 || cb > m_pbLim - m_pbNext)) THROW(kresReadFault); std::copy(m_pbNext, m_pbNext + cb, reinterpret_cast(pvInput)); m_pbNext += cb; } /*---------------------------------------------------------------------------------------------- Get the absolute position of the font-file stream (relative to the beginning of the file). For buffers, we just return the byte position in the buffer. ----------------------------------------------------------------------------------------------*/ void GrBufferIStream::GetPositionInFont(long * plPos) { *plPos = (m_pbNext - m_pbStart); } /*---------------------------------------------------------------------------------------------- Set the position of the font-file stream to the given absolute position (relative to the beginning of the file). For buffers, assume the position is relative to the beginning of the buffer. ----------------------------------------------------------------------------------------------*/ void GrBufferIStream::SetPositionInFont(long lPos) { if (m_pbLim && (lPos < 0 || lPos > m_pbLim - m_pbStart)) THROW(kresReadFault); m_pbNext = m_pbStart + lPos; } //:>******************************************************************************************** //:> Swap byte order. //:>******************************************************************************************** int swapb(int nArg) { #if WORDS_BIGENDIAN return nArg; #else int b1, b2, b3, b4; b1 = ((nArg & 0xFF000000) >> 24) & 0x000000FF; // remove sign extension b2 = ((nArg & 0x00FF0000) >> 8); // & 0x0000FF00; b3 = ((nArg & 0x0000FF00) << 8); // & 0x00FF0000; b4 = ((nArg & 0x000000FF) << 24); // & 0xFF000000; int nRet = b1 | b2 | b3 | b4; return nRet; #endif } unsigned int swapb(unsigned int nArg) { #if WORDS_BIGENDIAN return nArg; #else int b1, b2, b3, b4; b1 = ((nArg & 0xFF000000) >> 24) & 0x000000FF; // remove sign extension b2 = ((nArg & 0x00FF0000) >> 8); // & 0x0000FF00; b3 = ((nArg & 0x0000FF00) << 8); // & 0x00FF0000; b4 = ((nArg & 0x000000FF) << 24); // & 0xFF000000; int nRet = b1 | b2 | b3 | b4; return nRet; #endif } utf16 swapb(utf16 chwArg) { #if WORDS_BIGENDIAN return chwArg; #else utf16 b1, b2; b1 = ((chwArg & 0xFF00) >> 8) & 0x00FF; // remove sign extension b2 = ((chwArg & 0x00FF) << 8); // & 0xFF00; utf16 chwRet = b1 | b2; return chwRet; #endif } short swapb(short snArg) { #if WORDS_BIGENDIAN return snArg; #else short b1, b2; b1 = ((snArg & 0xFF00) >> 8) & 0x00FF; // remove sign extension b2 = ((snArg & 0x00FF) << 8); // & 0xFF00; short snRet = b1 | b2; return snRet; #endif } #ifndef _WIN32 size_t utf16len(const utf16 *s) { // assumes NULL terminated strings const utf16 *start = s; for (; *s; ++s); return s - start; } #endif } //namespace gr grcompiler-5.2.1/test/GrcRegressionTest/FileInput.h000066400000000000000000000057101411153030700223230ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: FileInput.h Responsibility: Sharon Correll Last reviewed: not yet Description: Defines utility functions for reading from a font file. ----------------------------------------------------------------------------------------------*/ #ifdef _MSC_VER #pragma once #endif #ifndef FILEINPUT_INCLUDED #define FILEINPUT_INCLUDED //:End Ignore namespace gr { int swapb(int nArg); unsigned int swapb(unsigned int nArg); utf16 swapb(utf16 chwArg); short swapb(short snArg); #ifndef _WIN32 size_t utf16len(const utf16 *s); #endif // Most significant byte first (converting from least-sig-first): inline int msbf(int nArg) { return swapb(nArg); } inline unsigned int msbf(unsigned int nArg) { return swapb(nArg); } inline utf16 msbf(utf16 chwArg) { return swapb(chwArg); } inline short msbf(short chwArg) { return swapb(chwArg); } // Least significant byte first (converting from most-sig first): inline int lsbf(int nArg) { return swapb(nArg); } inline unsigned int lsbf(unsigned int nArg) { return swapb(nArg); }; inline utf16 lsbf(utf16 chwArg) { return swapb(chwArg); } inline short lsbf(short chwArg) { return swapb(chwArg); } class GrIStream { public: virtual void Close() = 0; virtual byte ReadByteFromFont() = 0; virtual short ReadShortFromFont() = 0; virtual utf16 ReadUShortFromFont() = 0; virtual int ReadIntFromFont() = 0; virtual void ReadBlockFromFont(void * pvInput, int cb) = 0; virtual void GetPositionInFont(long * plPos) = 0; virtual void SetPositionInFont(long lPos) = 0; virtual bool OpenBuffer(byte * pbBuffer, int cb) = 0; virtual void CloseBuffer() = 0; protected: virtual ~GrIStream() {} }; /*---------------------------------------------------------------------------------------------- A stream that reads from a buffer rather than a file. ----------------------------------------------------------------------------------------------*/ class GrBufferIStream : public GrIStream { public: GrBufferIStream(); ~GrBufferIStream(); #ifdef GR_FW virtual bool Open(std::wstring stuFileName, std::ios::openmode kMode); #else virtual bool Open(const char * pcFileName, std::ios::openmode kMode); #endif virtual void Close(); virtual byte ReadByteFromFont(); virtual short ReadShortFromFont(); virtual utf16 ReadUShortFromFont(); virtual int ReadIntFromFont(); virtual void ReadBlockFromFont(void * pvInput, int cb); virtual void GetPositionInFont(long * plPos); virtual void SetPositionInFont(long lPos); virtual bool OpenBuffer(byte * pbBuffer, int cb); virtual void CloseBuffer() { Close(); } protected: byte * m_pbStart; byte * m_pbNext; byte * m_pbLim; }; } // namespace gr #endif // !FILEINPUT_INCLUDED grcompiler-5.2.1/test/GrcRegressionTest/FontStub.cpp000066400000000000000000000141301411153030700225170ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001, 2005 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcRtFileFontStub.cpp Responsibility: Sharon Correll Description: Stub definition of the GrcRtFileFont class, just enough to get rid of link errors. ----------------------------------------------------------------------------------------------*/ #include "GrcRtFileFont.h" #include namespace gr { /*---------------------------------------------------------------------------------------------- Return uniquely identifying information that will be used a the key for this font in the font cache. This includes the font face name and the bold and italic flags. ----------------------------------------------------------------------------------------------*/ void GrcRtFileFont::UniqueCacheInfo(std::wstring & stuFace, bool & fBold, bool & fItalic) { size_t cbSize; const byte * pNameTbl = static_cast(getTable(TtfUtil::TableIdTag(ktiName), &cbSize)); size_t lOffset, lSize; if (!TtfUtil::Get31EngFamilyInfo(pNameTbl, lOffset, lSize)) { // TODO: try to find any name in any arbitrary language. Assert(false); return; } // byte * pvName = (byte *)pNameTbl + lOffset; utf16 rgchwFace[128]; const size_t cchw = min(long(lSize / sizeof(utf16)), long(sizeof(rgchwFace - 1))); const utf16 *src_start = reinterpret_cast(pNameTbl+ lOffset); std::copy(src_start, src_start + cchw, rgchwFace); rgchwFace[cchw] = 0; // zero terminate TtfUtil::SwapWString(rgchwFace, cchw); stuFace.assign(rgchwFace, rgchwFace + cchw); const void * pOs2Tbl = getTable(TtfUtil::TableIdTag(ktiOs2), &cbSize); TtfUtil::GrcRtFileFontOs2Style(pOs2Tbl, fBold, fItalic); // Do we need to compare the results from the OS2 table with the italic flag in the // head table? (There is no requirement that they be consistent!) } /*---------------------------------------------------------------------------------------------- A default unhinted implmentation of getGlyphPoint(..) ----------------------------------------------------------------------------------------------*/ void GrcRtFileFont::getGlyphPoint(gid16 glyphID, unsigned int pointNum, Point & pointReturn) { Assert(false); // should not be called // Default values pointReturn.x = 0; pointReturn.y = 0; // this isn't used very often, so don't bother caching size_t cbLocaSize = 0; const void * pGlyf = getTable(TtfUtil::TableIdTag(ktiGlyf), &cbLocaSize); if (pGlyf == 0) return; const void * pHead = getTable(TtfUtil::TableIdTag(ktiHead), &cbLocaSize); if (pHead == 0) return; const void * pLoca = getTable(TtfUtil::TableIdTag(ktiLoca), &cbLocaSize); if (pLoca == 0) return; const size_t MAX_CONTOURS = 32; int cnPoints = MAX_CONTOURS; bool rgfOnCurve[MAX_CONTOURS]; int prgnX[MAX_CONTOURS]; int prgnY[MAX_CONTOURS]; if (TtfUtil::GlyfPoints(glyphID, pGlyf, pLoca, cbLocaSize, pHead, 0, 0, prgnX, prgnY, rgfOnCurve, cnPoints)) { float nPixEmSquare; getGrcRtFileFontMetrics(0, 0, &nPixEmSquare); const float nDesignUnitsPerPixel = float(TtfUtil::DesignUnits(pHead)) / nPixEmSquare; pointReturn.x = prgnX[pointNum] / nDesignUnitsPerPixel; pointReturn.y = prgnY[pointNum] / nDesignUnitsPerPixel; } } /*---------------------------------------------------------------------------------------------- A default unhinted implmentation of getGlyphMetrics(..) ----------------------------------------------------------------------------------------------*/ void GrcRtFileFont::getGlyphMetrics(gid16 glyphID, gr::Rect & boundingBox, gr::Point & advances) { Assert(false); // should not be called // Setup default return values in case of failiure. boundingBox.left = 0; boundingBox.right = 0; boundingBox.bottom = 0; boundingBox.top = 0; advances.x = 0; advances.y = 0; // get the necessary tables. size_t locaSize, hmtxSize; const void * pHead = getTable(TtfUtil::TableIdTag(ktiHead), &locaSize); if (pHead == 0) return; const void * pHmtx = getTable(TtfUtil::TableIdTag(ktiHmtx), &hmtxSize); if (pHmtx == 0) return; // Calculate the number of design units per pixel. float pixelEmSquare; getGrcRtFileFontMetrics(0, 0, &pixelEmSquare); const float designUnitsPerPixel = float(TtfUtil::DesignUnits(pHead)) / pixelEmSquare; // Use the Hmtx and Head tables to find the glyph advances. int lsb; unsigned int advance = 0; if (TtfUtil::HorMetrics(glyphID, pHmtx, hmtxSize, pHead, lsb, advance)) { advances.x = (advance / designUnitsPerPixel); advances.y = 0.0f; } const void * pGlyf = getTable(TtfUtil::TableIdTag(ktiGlyf), &locaSize); if (pGlyf == 0) return; // const void * pHhea = getTable(TtfUtil::TableIdTag(ktiHhea), &locaSize); // if (pHhea == 0) return; const void * pLoca = getTable(TtfUtil::TableIdTag(ktiLoca), &locaSize); if (pLoca == 0) return; // Fetch the glyph bounding box, GlyphBox may return false for a // whitespace glyph. // Note that using GlyfBox here allows attachment points (ie, points lying outside // the glyph's outline) to affect the bounding box, which might not be what we want. int xMin, xMax, yMin, yMax; if (TtfUtil::GlyfBox(glyphID, pGlyf, pLoca, locaSize, pHead, xMin, yMin, xMax, yMax)) { boundingBox.left = (xMin / designUnitsPerPixel); boundingBox.bottom = (yMin / designUnitsPerPixel); boundingBox.right = (xMax / designUnitsPerPixel); boundingBox.top = (yMax / designUnitsPerPixel); } } /*---------------------------------------------------------------------------------------------- Copy constructor. ----------------------------------------------------------------------------------------------*/ GrcRtFileFont::GrcRtFileFont(const GrcRtFileFont & fontSrc) { Assert(false); // not implemented } /*---------------------------------------------------------------------------------------------- Destructor. ----------------------------------------------------------------------------------------------*/ GrcRtFileFont::~GrcRtFileFont() { } } // namespace gr grcompiler-5.2.1/test/GrcRegressionTest/FontTableCache.h000066400000000000000000000020221411153030700232170ustar00rootroot00000000000000 #include "TtfUtil.h" namespace gr { // used to allow table sharing between font copies // TBD: should this be a real class or is it acceptable to // make the attributes public class FontTableCache { public: FontTableCache() : m_fontCount(1) { for (int i = 0; i -1); } byte * getTable(TableId id) const { Assert(id < ktiLast); return m_pTable[id]; } const long & getTableSize(TableId id) const { Assert(id < ktiLast); return m_tableSize[id]; } byte * allocateTable(TableId id, long size) { m_pTable[id] = new byte[size]; m_tableSize[id] = size; return m_pTable[id]; } private: int m_fontCount; byte * m_pTable[ktiLast]; long m_tableSize[ktiLast]; }; } grcompiler-5.2.1/test/GrcRegressionTest/GrcRegressionTest.cpp000066400000000000000000000271001411153030700243700ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2007 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcRegressionTest.cpp Responsibility: Sharon Correll Description: Main file for the Graphite regression test program. -------------------------------------------------------------------------------*//*:End Ignore*/ #include "main.h" //:>******************************************************************************************** //:> Global variables //:>******************************************************************************************** std::ofstream g_strmLog; // log file output stream int g_errorCount; bool g_debugMode = false; bool g_silentMode = false; char * g_benchmarkName = NULL; char * g_testName = NULL; char g_logFileName[128]; int g_itcaseStart = 0; // adjust to skip to a certain test // Forward defintions. int WriteLog(int); void CopyWstringToUtf16(std::wstring textStr, gr::utf16 * utf16Buf, int bufSize); //:>******************************************************************************************** //:> Functions //:>******************************************************************************************** /*---------------------------------------------------------------------------------------------- Main function. ----------------------------------------------------------------------------------------------*/ int main(int argc, char* argv[]) { #ifdef _WIN32 _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); #endif // WIN32 if (argc < 3) { std::cout << "\nUsage: GrcRegressionTest [options] benchmark-file test-file\n"; std::cout << "\nOptions:\n"; std::cout << " -d - debug mode\n"; std::cout << " -s - silent mode\n"; std::cout << " -l file - specify log file name\n"; return -1; } int iargc = 1; while (iargc < argc) { if (strcmp(argv[iargc], "/d") == 0 || strcmp(argv[iargc], "-d") == 0) { g_debugMode = true; } else if (strcmp(argv[iargc], "/s") == 0 || strcmp(argv[iargc], "-s") == 0) { g_silentMode = true; } else if (strcmp(argv[iargc], "/l") == 0 || strcmp(argv[iargc], "-l") == 0) { iargc++; if (iargc < argc) { strcpy(g_logFileName, argv[iargc]); //g_logFileName = argv[iargc]; } } else if (g_benchmarkName) { if (g_testName) { std::cout << "Incorrect number of arguments"; return -1; } g_testName = argv[iargc]; } else { g_benchmarkName = argv[iargc]; } iargc++; } if (!g_silentMode) std::cout << "Graphite Compiler Regression Test\n\n"; // Start a new log. if (strlen(g_logFileName) == 0) { memset(g_logFileName, 0, 128); strcpy(g_logFileName, "grcregtest.log"); } g_strmLog.open(g_logFileName, std::ios_base::out | std::ios_base::app ); if (g_strmLog.fail()) { std::cout << "Unable to open log file."; return -1; } if (g_testName == NULL || g_benchmarkName == NULL) { std::cout << "Font files not adequately specified\n\n"; return -1; } g_errorCount = 0; //WriteToLog("Graphite Compiler Regression Test\n\n"); // *** TEST CASES *** /*** const int numberOfTests = 5; TestCase rgtcaseList[5]; rgtcaseList[0].m_testName.assign("Scheherazade"); rgtcaseList[0].m_fontFileBmark.assign("SchBenchmark.ttf"); rgtcaseList[0].m_fontFileTest.assign("SchTest.ttf"); rgtcaseList[0].m_debug = false; rgtcaseList[0].m_skip = false; rgtcaseList[1].m_testName.assign("Charis"); rgtcaseList[1].m_fontFileBmark.assign("CharisBenchmark.ttf"); rgtcaseList[1].m_fontFileTest.assign("CharisTest.ttf"); rgtcaseList[1].m_debug = false; rgtcaseList[1].m_skip = false; rgtcaseList[2].m_testName.assign("PigLatin - Silf version 2"); rgtcaseList[2].m_fontFileBmark.assign("PigLatinBenchmark_v2.ttf"); rgtcaseList[2].m_fontFileTest.assign("PigLatinTest_v2.ttf"); rgtcaseList[2].m_debug = false; rgtcaseList[2].m_skip = false; rgtcaseList[3].m_testName.assign("PigLatin - Silf version 3"); rgtcaseList[3].m_fontFileBmark.assign("PigLatinBenchmark_v3.ttf"); rgtcaseList[3].m_fontFileTest.assign("PigLatinTest_v3.ttf"); rgtcaseList[3].m_debug = false; rgtcaseList[3].m_skip = false; rgtcaseList[4].m_testName.assign("Padauk"); rgtcaseList[4].m_fontFileBmark.assign("PadaukBenchmark.ttf"); rgtcaseList[4].m_fontFileTest.assign("PadaukTest.ttf"); rgtcaseList[4].m_debug = false; rgtcaseList[4].m_skip = false; // *** Add tests here, and increment numberOfTests. *** //RunTests(numberOfTests, rgtcaseList); ****/ // Run the test. WriteToLog("\nTesting "); WriteToLog(g_testName); WriteToLog(" against "); WriteToLog(g_benchmarkName); WriteToLog("...\n"); if (!g_silentMode) std::cout << "Testing " << g_testName << " against " << g_benchmarkName << "...\n"; GrcRtFileFont fontBmark(g_benchmarkName, 12.0, 96, 96); GrcRtFileFont fontTest(g_testName, 12.0, 96, 96); int g_errorCount = CompareFontTables(NULL, &fontBmark, &fontTest); WriteLog(g_errorCount); WriteToLog("\n==============================================\n"); //g_strmLog << "\n\nTOTAL NUMBER OF ERRORS: " << g_errorCount << "\n"; //if (!g_silentMode) // std::cout << "\n\nTOTAL NUMBER OF ERRORS: " << g_errorCount << "\n"; g_strmLog.close(); return g_errorCount; } /*---------------------------------------------------------------------------------------------- Run the tests. ----------------------------------------------------------------------------------------------*/ void RunTests(int numberOfTests, TestCase * ptcaseList) { for (int itcase = g_itcaseStart; itcase < numberOfTests; itcase++) { TestCase * ptcase = ptcaseList + itcase; WriteToLog("\n----------------------------------------------\n"); WriteToLog("Test: "); if (!g_silentMode) std::cout << "Test " << ptcase->m_testName << "..."; WriteToLog(ptcase->m_testName); if (ptcase->m_skip) { if (!g_silentMode) std::cout << "skipping\n"; WriteToLog("...skipping\n"); continue; } WriteToLog("\n"); RunOneTestCase(ptcase); } } /*---------------------------------------------------------------------------------------------- Run a single test case. ----------------------------------------------------------------------------------------------*/ int RunOneTestCase(TestCase * ptcase) { #ifdef _MSC_VER #if (_WIN32_WINNT > 0x0400) // Break into the debugger if requested. if (ptcase->m_debug ) ///&& ::IsDebuggerPresent()) { ::DebugBreak(); } #endif #endif GrcRtFileFont fontBmark(ptcase->m_fontFileBmark, 12.0, 96, 96); GrcRtFileFont fontTest( ptcase->m_fontFileTest, 12.0, 96, 96); int errorCount = CompareFontTables(ptcase, &fontBmark, &fontTest); return WriteLog(errorCount); } /*---------------------------------------------------------------------------------------------- Write the error count to the log. ----------------------------------------------------------------------------------------------*/ int WriteLog(int errorCount) { WriteToLog("\nError count = "); WriteToLog(errorCount); WriteToLog("\n"); if (!g_silentMode) { if (errorCount == 0) std::cout << "ok\n"; else std::cout << "FAILED\n"; } g_errorCount += errorCount; return errorCount; } /*---------------------------------------------------------------------------------------------- Copy a std::wstring (whose bytes can be of various sizes on different platforms) to a buffer of UTF16. ----------------------------------------------------------------------------------------------*/ void CopyWstringToUtf16(std::wstring textStr, gr::utf16 * utf16Buf, int bufSize) { std::fill_n(utf16Buf, bufSize, 0); int cc = textStr.length(); for (int i = 0; i < cc; i++) utf16Buf[i] = textStr[i]; } /*---------------------------------------------------------------------------------------------- Output information about an error. ----------------------------------------------------------------------------------------------*/ void OutputError(int & errCnt, TestCase * ptcase, std::string strErr, int i) { OutputErrorAux(ptcase, strErr, i, "", -1, false, 0, 0); errCnt++; } void OutputErrorWithValues(int & errCnt, TestCase * ptcase, std::string strErr, int i, int valueFound, int valueExpected) { OutputErrorAux(ptcase, strErr, i, "", -1, true, valueFound, valueExpected); errCnt++; } void OutputError(int & errCnt, TestCase * ptcase, std::string strErr1, int i1, std::string strErr2, int i2) { OutputErrorAux(ptcase, strErr1, i1, strErr2, i2, false, 0, 0); errCnt++; } void OutputErrorAux(TestCase * ptcase, std::string strErr1, int i1, std::string strErr2, int i2, bool showValues, int valueFound, int valueExpected) { // if (g_debugMode) // ::DebugBreak(); if (!g_silentMode) { //std::cout << ptcase->TestName() << ": "; std::cout << strErr1; if (i1 > -1) { std::cout << "[" << i1 << "]"; } std::cout << strErr2; if (i2 > -1) { std::cout << "[" << i2 << "]"; } std::cout << "\n"; } WriteToLog(strErr1, i1, strErr2, i2, showValues, valueFound, valueExpected); WriteToLog("\n"); } /*---------------------------------------------------------------------------------------------- Write some text to the log file. ----------------------------------------------------------------------------------------------*/ bool WriteToLog(std::string str, int i) { return WriteToLog(str, i, "", -1); } bool WriteToLog(std::string str1, int i1, std::string str2, int i2) { if (g_strmLog.fail()) { std::cout << "Error opening log file."; return false; } g_strmLog << str1; if (i1 > -1) g_strmLog << "[" << i1 << "]"; g_strmLog << str2; if (i2 > -1) g_strmLog << "[" << i2 << "]"; g_strmLog.flush(); return true; } bool WriteToLog(std::string str1, int i1, std::string str2, int i2, bool showValues, int valueFound, int valueExpected) { if (g_strmLog.fail()) { std::cout << "Error opening log file."; return false; } g_strmLog << str1; if (i1 > -1) g_strmLog << "[" << i1 << "]"; g_strmLog << str2; if (i2 > -1) g_strmLog << "[" << i2 << "]"; if (showValues) { g_strmLog << "; found " << valueFound << " not " << valueExpected; } g_strmLog.flush(); return true; } bool WriteToLog(int n) { if (g_strmLog.fail()) { std::cout << "Error opening log file."; return false; } g_strmLog << n; g_strmLog.flush(); return true; } std::wstring StringFromNameTable(const gr::byte * pNameTbl, int nLangID, int nNameID) { std::wstring stuName; stuName.erase(); size_t lOffset = -1; size_t lSize = -1; // The Graphite compiler stores our names in either // the MS (platform id = 3) Unicode (writing system id = 1) table // or the MS Symbol (writing system id = 0) table. Try MS Unicode first. // lOffset & lSize are in bytes. // new interface: if (!TtfUtil::GetNameInfo(pNameTbl, 3, 1, nLangID, nNameID, lOffset, lSize)) { if (!TtfUtil::GetNameInfo(pNameTbl, 3, 0, nLangID, nNameID, lOffset, lSize)) { return stuName; } } size_t cchw = (unsigned(lSize) / sizeof(utf16)); utf16 * pchwName = new utf16[cchw+1]; // lSize - byte count for Uni str const utf16 *pchwSrcName = reinterpret_cast(pNameTbl + lOffset); std::transform(pchwSrcName, pchwSrcName + cchw, pchwName, std::ptr_fun(lsbf)); pchwName[cchw] = 0; // zero terminate #ifdef _WIN32 stuName.assign((const wchar_t*)pchwName, cchw); #else wchar_t * pchwName32 = new wchar_t[cchw+1]; // lSize - byte count for Uni str for (int i = 0; i <= signed(cchw); i++) { pchwName32[i] = pchwName[i]; } stuName.assign(pchwName32, cchw); delete [] pchwName32; #endif delete [] pchwName; return stuName; } grcompiler-5.2.1/test/GrcRegressionTest/GrcRtFileFont.cpp000066400000000000000000000247451411153030700234400ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 1999, 2001, 2005 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcRtFileFont.cpp Responsibility: Sharon Correll Description: ----------------------------------------------------------------------------------------------*/ //#include "FontTableCache.h" #include "GrcRtFileFont.h" #include // TBD do this properly ////#define FUDGE_FACTOR 72 ////#define fix26_6(x) (x >> 6) + (x & 32 ? (x > 0 ? 1 : 0) : (x < 0 ? -1 : 0)) /* GrcRtFileFont::GrcRtFileFont() : m_file(NULL), m_pTableCache(NULL), m_ascent(0), m_descent(0), m_emSquare(0), m_pointSize(0), m_dpiX(FUDGE_FACTOR), m_dpiY(FUDGE_FACTOR), m_isValid(false), m_pHeader(NULL), m_pTableDir(NULL), m_xScale(1.0f), m_yScale(1.0f) { m_fItalic = false; m_fBold = false; // colors are not used m_clrFore = (unsigned long)kclrBlack; m_clrBack = (unsigned long)kclrTransparent; } GrcRtFileFont::GrcRtFileFont(FILE * file, float pointSize, unsigned int dpiX, unsigned int dpiY) : m_file(file), m_pTableCache(NULL), m_ascent(0), m_descent(0), m_emSquare(0), m_pointSize(pointSize), m_dpiX(dpiX), m_dpiY(dpiY), m_isValid(false), m_pHeader(NULL), m_pTableDir(NULL), m_xScale(1.0f), m_yScale(1.0f) { Assert(m_file); // shouldn't be null initializeFromFace(); } GrcRtFileFont::GrcRtFileFont(char * fileName, float pointSize, unsigned int dpiX, unsigned int dpiY) : m_file(NULL), m_pTableCache(NULL), m_ascent(0), m_descent(0), m_emSquare(0), m_pointSize(pointSize), m_dpiX(dpiX), m_dpiY(dpiY), m_isValid(false), m_pHeader(NULL), m_pTableDir(NULL), m_xScale(1.0f), m_yScale(1.0f) { Assert(fileName); // shouldn't be null but we play safe anyway m_file = fopen(fileName, "rb"); initializeFromFace(); } */ GrcRtFileFont::GrcRtFileFont(std::string fileName, float pointSize, unsigned int dpiX, unsigned int dpiY) : m_file(NULL), ////m_pTableCache(NULL), m_ascent(0), m_descent(0), m_emSquare(0), m_pointSize(pointSize), m_dpiX(dpiX), m_dpiY(dpiY), m_isValid(false), m_pHeader(NULL), m_pTableDir(NULL), m_xScale(1.0f), m_yScale(1.0f) { Assert(fileName.length()); // shouldn't be null but we play safe anyway m_file = fopen(fileName.c_str(), "rb"); initializeFromFace(); } void GrcRtFileFont::initializeFromFace() { if (m_dpiY == 0) m_dpiY = m_dpiX; //m_fItalic = false; //m_fBold = false; //// colors are not used //m_clrFore = (unsigned long)kclrBlack; //m_clrBack = (unsigned long)kclrTransparent; if (m_file) { size_t lOffset; size_t lSize; TtfUtil::GetHeaderInfo(lOffset, lSize); m_pHeader = new gr::byte [lSize]; m_isValid = true; if (!m_pHeader) { m_isValid = false; return; } m_isValid = (fseek(m_file, lOffset, SEEK_SET) == 0); size_t bytesRead = fread(m_pHeader, 1, lSize, m_file); Assert(static_cast(bytesRead) == lSize); m_isValid = TtfUtil::CheckHeader(m_pHeader); if (!m_isValid) return; m_isValid = TtfUtil::GetTableDirInfo(m_pHeader, lOffset, lSize); m_pTableDir = new gr::byte[lSize]; if (!m_pTableDir) { m_isValid = false; return; } // if lOffset hasn't changed this isn't needed fseek(m_file, lOffset, SEEK_SET); bytesRead = fread(m_pTableDir, 1, lSize, m_file); Assert(static_cast(bytesRead) == lSize); // now read head tables m_isValid = TtfUtil::GetTableInfo(ktiOs2, m_pHeader, m_pTableDir, lOffset, lSize); if (!m_isValid) { return; } gr::byte * pTable = readTable(ktiOs2, lSize); // get ascent, descent, style while we have the OS2 table loaded if (!m_isValid || !pTable) { return; } bool fBold, fItalic; // temp m_isValid = TtfUtil::FontOs2Style(pTable, fBold, fItalic); m_ascent = static_cast(TtfUtil::FontAscent(pTable)); m_descent = static_cast(TtfUtil::FontDescent(pTable)); delete[] pTable; // OS2 pTable = readTable(ktiName, lSize); if (!m_isValid || !pTable) { return; } if (!TtfUtil::Get31EngFamilyInfo(pTable, lOffset, lSize)) { // not English name m_isValid = false; return; } Assert(lSize %2 == 0);// should be utf16 int cchw = (lSize / sizeof(utf16)) + 1; cchw = min(cchw, 128); utf16 * pTable16 = reinterpret_cast(pTable + lOffset); utf16 rgchwFace[128]; std::copy(pTable16, pTable16 + cchw - 1, rgchwFace); rgchwFace[cchw - 1] = 0; // zero terminate TtfUtil::SwapWString(rgchwFace, cchw - 1); // We could use something like "if (sizeof(std::wstring::value_type) == 4)" here, // but a compile-time switch is preferable. ////#if SIZEOF_WCHAR_T == 4 // Quick and dirty utf16 -> wchar_t: for (int c16 = 0; c16 < cchw; c16++) { m_stu32FaceName.push_back((wchar_t)rgchwFace[c16]); } ////#else -- for some reason this won't build on Windows, but the above approach works okay //// m_stu32FaceName.assign(const_cast(rgchwFace)); ////#endif delete[] pTable; // name pTable = readTable(ktiHead, lSize); if (!m_isValid || !pTable) { return; } m_emSquare = static_cast(TtfUtil::DesignUnits(pTable)); // can now set the scale m_xScale = scaleFromDpi(m_dpiX); m_yScale = scaleFromDpi(m_dpiY); delete[] pTable; // head } else { m_isValid = false; } } // Unlike original (FileFont) version, caller is responsible for deleting the allocated buffer. gr::byte * GrcRtFileFont::readTable(int /*TableId*/ tid, size_t & size) { TableId tableId = static_cast(tid); bool isValid = true; size_t lOffset = 0, lSize = 0; //if (!m_pTableCache) //{ // m_pTableCache = new FontTableCache(); //} //if (!m_pTableCache) return NULL; gr::byte * pTable = NULL; // m_pTableCache->getTable(tableId); size = 0; // m_pTableCache->getTableSize(tableId); // check whether it is already in the cache //if (pTable) return pTable; isValid &= TtfUtil::GetTableInfo(tableId, m_pHeader, m_pTableDir, lOffset, lSize); if (!isValid) return NULL; fseek(m_file, lOffset, SEEK_SET); //pTable = m_pTableCache->allocateTable(tableId, lSize); pTable = new gr::byte[lSize]; if (!pTable) { isValid = false; return NULL; } size_t bytesRead = fread(pTable, 1, lSize, m_file); isValid = (static_cast(bytesRead) == lSize); if (isValid) { isValid &= TtfUtil::CheckTable(tableId, pTable, lSize); } if (!isValid) { return NULL; } size = lSize; return pTable; } GrcRtFileFont::~GrcRtFileFont() { // if this is the last copy of the font sharing these tables // delete them //if (m_pTableCache) //{ // m_pTableCache->decrementFontCount(); // if (m_pTableCache->getFontCount() == 0) // { // delete [] m_pHeader; // delete [] m_pTableDir; // delete m_pTableCache; // m_pTableCache = NULL; // if (m_file) fclose(m_file); // } //} //else //{ delete [] m_pHeader; delete [] m_pTableDir; if (m_file) fclose(m_file); //} // note the DecFontCount(); is done in the Font base class } GrcRtFileFont * GrcRtFileFont::copyThis() { GrcRtFileFont * copy = new GrcRtFileFont(*this); return copy; } /** * A copy constructor that allows a change of point size or dpi * The underlying table cache will be shared between the fonts, so * this should have a low overhead. */ /**** GrcRtFileFont::GrcRtFileFont(const FileFont & font, float pointSize, unsigned int dpiX, unsigned int dpiY) : Font(font), m_file(font.m_file), m_ascent(font.m_ascent), m_descent(font.m_descent), m_emSquare(font.m_emSquare), m_pointSize(font.m_pointSize), m_dpiX(font.m_dpiX), m_dpiY(font.m_dpiY), m_isValid(font.m_isValid), m_pHeader(font.m_pHeader), m_pTableDir(font.m_pTableDir), m_xScale(font.m_xScale), m_yScale(font.m_yScale) { if (pointSize > 0) { m_pointSize = pointSize; if (dpiX > 0) { m_dpiX = dpiX; if (dpiY > 0) m_dpiY = dpiY; else dpiY = dpiX; } m_xScale = scaleFromDpi(m_dpiX); m_yScale = scaleFromDpi(m_dpiY); } m_fItalic = font.m_fItalic; m_fBold = font.m_fBold; // colors are not used m_clrFore = font.m_clrFore; m_clrBack = font.m_clrBack; m_faceName.assign(font.m_faceName); m_pTableCache = font.m_pTableCache; // use the same table cache between instances if (m_pTableCache) m_pTableCache->incrementFontCount(); // I dont' see why we need to reget the face, but WinFont does //m_pfface = FontFace::GetFontFace(this, m_fpropDef.szFaceName, // m_fpropDef.fBold, m_fpropDef.fItalic); } ****/ //virtual FontErrorCode isValidForGraphite(int * pnVersion = NULL, int * pnSubVersion = NULL); /*---------------------------------------------------------------------------------------------- Read a table from the font. ----------------------------------------------------------------------------------------------*/ const void * GrcRtFileFont::getTable(fontTableId32 tableID, size_t * pcbSize) { *pcbSize = 0; // use a cache to reduce the number of times tables have to be reloaded //if (m_pTableCache == NULL) //{ // // constructor automatically sets the font count to 1 // m_pTableCache = new FontTableCache(); //} //TableId tid; //for (int i = 0; i(i); // if (tableID == TtfUtil::TableIdTag(tid)) // { // if (m_pTableCache->getTable(tid)) // { // *pcbSize = m_pTableCache->getTableSize(tid); // return m_pTableCache->getTable(tid); // } // break; // } //} // Map backwards from the fontTableId32 to the kti enum (convoluted, but this is based // on the way FileFont was originally implemented): TableId tid; for (int i = 0; i < ktiLast; i++) { tid = static_cast(i); if (tableID == TtfUtil::TableIdTag(tid)) break; } Assert(tid < ktiLast); size_t tableSize = 0; void * pTable = readTable(tid, tableSize); *pcbSize = static_cast(tableSize); return pTable; } void GrcRtFileFont::getFontMetrics(float * pAscent, float * pDescent, float * pEmSquare) { if (pEmSquare) *pEmSquare = m_emSquare * m_xScale; if (pAscent) *pAscent = m_ascent * m_yScale; if (pDescent) *pDescent = m_descent * m_yScale; } /**** bool GrcRtFileFont::FontHasGraphiteTables(FILE * file) { FileFont testFont(file, 1.0f, FUDGE_FACTOR); return testFont.fontHasGraphiteTables(); } bool GrcRtFileFont::FontHasGraphiteTables(char * fileName) { FileFont testFont(fileName, 1.0f, FUDGE_FACTOR); return testFont.fontHasGraphiteTables(); } bool GrcRtFileFont::fontHasGraphiteTables() { long tableSize; bool isGraphiteFont = m_isValid; isGraphiteFont &= (readTable(ktiSilf, tableSize) != NULL); return isGraphiteFont; } ****/ grcompiler-5.2.1/test/GrcRegressionTest/GrcRtFileFont.h000066400000000000000000000047251411153030700231010ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2007 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: GrcRtFileFont.h Responsibility: Sharon Correll Description: The GrcRtFileFont class is based roughly on the FileFont class, but there is no table cache. -------------------------------------------------------------------------------*//*:End Ignore*/ #include "Generic/GrCommon.h" #ifndef _WIN32 #include "Generic/GrMstypes.h" #endif #include "Generic/GrDebug.h" #include #include #include #include // gAssert should be used for any kind of assertions that can be caused by a corrupted font, // particularly those that won't be caught when loading the tables. #define gAssert(x) Assert(x) //#include "graphite/GrResult.h" //#include "graphite/GrAppData.h" #include "TtfUtil.h" //#include "graphite/Font.h" #ifdef _MSC_VER #pragma once #endif #ifndef RTFILEFONT_H #define RTFILEFONT_H 1 #define NO_EXCEPTIONS 1 ///using namespace gr; class GrcRtFileFont // : public Font { public: GrcRtFileFont(std::string fileName, float pointSize, unsigned int dpiX, unsigned int dpiY); ~GrcRtFileFont(); GrcRtFileFont * copyThis(); virtual bool bold() { return false; } virtual bool italic() { return false; } virtual float ascent() { return m_ascent; } virtual float descent() { return m_descent; } virtual float height() { return m_ascent + m_descent; } virtual unsigned int getDPIx() { return m_dpiX; } virtual unsigned int getDPIy() { return m_dpiY; } const void * getTable(fontTableId32 tableID, size_t * pcbSize); void getFontMetrics(float * pAscent, float * pDescent, float * pEmSquare); void UniqueCacheInfo(std::wstring & stuFace, bool & fBold, bool & fItalic); protected: void initializeFromFace(); gr::byte * readTable(int /*TableId*/ tid, size_t & size); float scaleFromDpi(int dpi) { return (dpi * m_pointSize) / (72.0f * m_emSquare); } // Member variables: FILE *m_file; // KRS: I think these should be cached otherwise Segment::LineContextSegment doesn't work float m_ascent; float m_descent; float m_emSquare; float m_pointSize; int m_dpiX; int m_dpiY; bool m_isValid; std::wstring m_stu32FaceName; gr::byte * m_pHeader; gr::byte * m_pTableDir; float m_xScale; float m_yScale; }; #endif // !RTFILEFONT_H grcompiler-5.2.1/test/GrcRegressionTest/Makefile.am000066400000000000000000000017531411153030700223120ustar00rootroot00000000000000AUTOMAKE_OPTIONS = 1.6 # EXTRA_DIST = fonts regtest noinst_PROGRAMS = GrcRegressionTest AM_CPPFLAGS = -I$(top_srcdir)/../../compiler GrcRegressionTest_LDFLAGS = $(GR2_LIBS) GrcRegressionTest_SOURCES = \ main.h \ stdafx.h \ TestCase.h \ CompareFontTables.cpp \ FileInput.cpp \ GrcRtFileFont.h \ GrcRtFileFont.cpp \ GrcRegressionTest.cpp \ FileInput.h \ FontTableCache.h \ $(top_srcdir)/../../compiler/TtfUtil.cpp \ $(top_srcdir)/../../compiler/TtfUtil.h \ $(top_srcdir)/../../compiler/TtfTypes.h \ fonts \ regtest # FontStubb.cpp check-local: GrcRegressionTest $(top_srcdir)/regtest -k -v -g ../../compiler/grcompiler -p ../../preprocessor/gdlpp -r ./GrcRegressionTest -d . $(top_srcdir)/fonts dist-hook: rm -f regtest.log gdlerr.txt grcregtest.log find $(distdir) -name "dbg_*" | xargs rm -rf rm -f *Test*.ttf CLEANFILES=regtest.log gdlerr.txt grcregtest.log *Test*.ttf grcompiler-5.2.1/test/GrcRegressionTest/Makefile.vc000066400000000000000000000100101411153030700223070ustar00rootroot00000000000000!IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF TARGET=GrcRegressionTest REGT_SRC=. REGT_RES=. !IF "$(CFG)" == "" CFG=DEBUG !ENDIF !IF "$(CFG)" == "RELEASE" OUTDIR=.\release INTDIR=.\release_temp all : "$(OUTDIR)\$(TARGET).exe" clean : @- rd /s/q $(INTDIR) realclean : clean @- rd /s/q $(OUTDIR) CPP_PROJ=/nologo /MT /W3 /GR /GX /O2 /I "." /I "../../compiler" /I "../../compiler/Generic" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_CRT_SECURE_NO_WARNINGS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c RSC_PROJ=/l 0x409 /fo"$(INTDIR)\$(TARGET).res" /d "NDEBUG" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /machine:I386 /out:"$(OUTDIR)\$(TARGET).exe" /libpath:"..\..\release" BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(TARGET).bsc" !ELSEIF "$(CFG)" == "DEBUG" OUTDIR=.\debug INTDIR=.\debug_temp COMPILER_DIR=..\..\compiler GENERIC_DIR=..\..\compiler\Generic all : "$(OUTDIR)\$(TARGET).exe" "$(OUTDIR)\$(TARGET).bsc" clean : @- rd /s/q $(INTDIR) realclean : clean @- rd /s/q $(OUTDIR) CPP_PROJ=/nologo /MTd /W3 /Gm /GR /EHsc /RTC1 /ZI /Od /I "." /I "../../compiler" /I "../../compiler/Generic" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_CRT_SECURE_NO_WARNINGS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c RSC_PROJ=/l 0x409 /fo"$(INTDIR)\$(TARGET).res" /d "_DEBUG" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\$(TARGET).pdb" /debug /machine:I386 /out:"$(OUTDIR)\$(TARGET).exe" /libpath:"..\..\debug" BSC32_FLAGS=/nologo /o"$(OUTDIR)\$(TARGET).bsc" !ENDIF "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" {$(REGT_SRC)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(REGT_SRC)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << {$(COMPILER_DIR)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(COMPILER_DIR)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << {$(GENERIC_DIR)}.cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << {$(GENERIC_DIR)}.cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << CPP=cl.exe RSC=rc.exe BSC32=bscmake.exe LINK32=link.exe LINK32_OBJS= \ "$(INTDIR)\GrcRegressionTest.obj" \ "$(INTDIR)\CompareFontTables.obj" \ "$(INTDIR)\GrcRtFileFont.obj" \ "$(INTDIR)\TtfUtil.obj" \ "$(INTDIR)\FileInput.obj" \ "$(INTDIR)\Platform.obj" \ # "$(INTDIR)\GrcRegressionTest.res" "$(OUTDIR)\$(TARGET).exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << BSC32_SBRS= \ "$(INTDIR)\GrcRegressionTest.sbr" \ "$(INTDIR)\CompareFontTables.sbr" \ "$(INTDIR)\GrcRtFileFont.sbr" \ "$(INTDIR)\TtfUtil.sbr" \ "$(INTDIR)\FileInput.sbr" \ "$(INTDIR)\Platform.sbr" \ # "$(OUTDIR)\$(TARGET).bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << "$(INTDIR)\GrcRegressionTest.obj" "$(INTDIR)\GrcRegressionTest.sbr" : "$(REGT_SRC)\GrcRegressionTest.cpp" "$(INTDIR)" "$(INTDIR)\CompareFontTables.obj" "$(INTDIR)\CompareFontTables.sbr" : "$(REGT_SRC)\CompareFontTables.cpp" "$(INTDIR)" "$(INTDIR)\GrcRtFileFont.obj" "$(INTDIR)\GrcRtFileFont.sbr" : "$(REGT_SRC)\GrcRtFileFont.cpp" "$(INTDIR)" "$(INTDIR)\TtfUtil.obj" "$(INTDIR)\TtfUtil.sbr" : "$(COMPILER_DIR)\TtfUtil.cpp" "$(INTDIR)" "$(INTDIR)\FileInput.obj" "$(INTDIR)\FileInput.sbr" : "$(REGT_SRC)\FileInput.cpp" "$(INTDIR)" "$(INTDIR)\Platform.obj" "$(INTDIR)\Platform.sbr" : "$(GENERIC_DIR)\Platform.cpp" "$(INTDIR)" "$(INTDIR)\$(TARGET).res" : "$(REGT_RES)\$(TARGET).rc" "$(INTDIR)" $(RSC) $(RSC_PROJ) "$(REGT_RES)\$(TARGET).rc" grcompiler-5.2.1/test/GrcRegressionTest/TestCase.h000066400000000000000000000023571411153030700221430ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2007 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: TestCase.h Responsibility: Sharon Correll Description: Definition of TestCase class for Graphite Compiler regression test program. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef TESTCASE_H #define TESTCASE_H 1 #define NO_EXCEPTIONS 1 class TestCase { public: TestCase() { m_fxdSilfVersion = 0x00010000; m_fxdFeatVersion = 0x00010000; m_fxdGlocVersion = 0x00010000; m_fxdGlatVersion = 0x00010000; m_fxdSillVersion = 0x00010000; } std::string m_testName; std::string m_fontFileBmark; std::string m_fontFileTest; bool m_debug; // break into the debugger when running this test bool m_skip; // easy way to temporarily skip the test // Font table versions expected in the benchmark file: int m_fxdSilfVersion; int m_fxdFeatVersion; int m_fxdGlocVersion; int m_fxdGlatVersion; int m_fxdSillVersion; }; #endif // !TESTCASE_H grcompiler-5.2.1/test/GrcRegressionTest/configure.ac000066400000000000000000000012451411153030700225400ustar00rootroot00000000000000AC_PREREQ(2.54) AC_INIT(GrcRegressionTest, 1.0, silgraphite-devel@lists.sourceforge.net) AC_CONFIG_SRCDIR(Makefile.am) AC_CONFIG_AUX_DIR(config) # setup automake AM_INIT_AUTOMAKE(foreign) AM_MAINTAINER_MODE # System checks. AC_CANONICAL_HOST # Check programs we need AC_PROG_CXX # Check packages needed # PKG_CHECK_MODULES(GR2, silgraphite >= 2.2.0) # Set default language for tests AC_LANG(C++) # Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN AC_TYPE_SIZE_T AC_CHECK_SIZEOF(wchar_t) AC_SUBST(SIZEOF_WCHAR_T) # need to check for icu .h files as in unicode/uchar.h AC_CHECK_HEADER(unicode/utf16.h,,) AC_CONFIG_FILES(Makefile) AC_OUTPUT grcompiler-5.2.1/test/GrcRegressionTest/fonts/000077500000000000000000000000001411153030700214015ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/CharisBenchmark.ttf000066400000000000000000034560501411153030700251610ustar00rootroot00000000000000 Feat.\\XxLGlatXd LGloc` x4 OS/2w,`Silf ~ @6Sill҃[dcmap쨷gcvt viDfpgmY7idsglyf-tj 3headn^ 6hhea& $hmtx7p+ )loca2ˆt )maxp F namebL RXpost Ew[prepU tr]33dR SIL @ |  ^ VT  V8. ~{~ybdefg'hjikmlnoqprutvxzy{}|~ZNc          XT\c#V  !!""##$$%%&&''((G))**H++,,E--..O// 00K1122T33344w55^66778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJ%KKLLMMFNNOOAPPuQQ5RSTTUUVVWWXXYYZZ[[\\!]] ^^)__``"aa bbRcc6ddKee5ffSgg9hhiifjjkkhllmmdnnoonppqqarrsstttuuvv!wwxxyyHzz7{{K||:}}J~~9txwShjmZQ _k*R7V<Xy*O@ae^]|q)( YFBemjlk)\^m:OPdX__l9\CMI SC    D    v  6@bc'P3f`  &!!""##l$$P%%D&&]''((a))!**++J,,--D..//K0011L22#334455 66>77d8899::e;;<<==>>U??@@FAAjBBiCCDDEEFFeGG&HHxII`JJKKLLMMNN'OOPPQQRR4SSvTTUUVVWWXX1YY*ZZ0[[3\\6]]9^^=__g``aabbccddeeffgghh#ii8jjAkkllmmnnooppqqrrssttuuTvvwwxxyyzz{{||}}~~mC=w=BU[glp<akoA@w]VRhm    -*UQdb_%nhg 8    L L N M Ovu .3F?  X  N       Z\IJejKPca^  ##E$$>%%M&&H'(x))Y**}++(,, --..//0011+22233544567899T::;;<<)==&>>!??7FF~GG6HH[IIiJJKKLLMM NN OO PP QQSRRSS$TT UU VV WWWXXGYY#ZZO[["\] ^^1__0``aabb ccddeeff4gg`hhiijjkkllmm-nnoo=XeH[]<It  |    \    ,- @Eo+-yr   !!""H##+$$%%&& ''0() *+,,--..[//0011y223344s556677@88 99::;;n<<==>>1??@@AABBDCCDDEEFFGGHIJK|LLzMMNN;OOPPQQRRSSTTUUVVWWXX\YYpZZ[[\\]]^^__rrssZ.{qB fYE([G32f'g(={o4>X[i7Uk+l.pAbV0/IUW./ ,1~sDrC~  r        ZFn?}qBk;G:  1  v      !tghjpnJ  !!""G##c$%r&&''(())**++z,,A--j..//0011F22i334455@66u778899::;;"<<s==>>??@@IAABBCCDDEEFF<GGnHHIIJJ-KK4LL;MMNN2OOPPQQRR3SSTTqUUoVVWW,XX_YYZZ[[\\t]]^^__``aabbccdd^eeffgghhiijjkkllummnnxooppqqrrssttuu:vvAwwxxyyzz?{{R||:}}~~rw? 3%58/"vY57ui$9BSb V8x6>CWY|  boqp          ZY^_b"v  !!""##$$%%&&''(())**++,,M--..J//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMCNNOOEPPQQHRRSSGTTUUVVWWXXYYZZ[[\\]]^^__``$aa bb%ccdd ee ff#gg hh&iijjLkk/llOmm2nnNoo1ppMqq0rrssrttuuqvvwwpxxyygzz{{i||}}~~$ I8M<L;. a`DFJHLOQUSW` ]WJ L PNRLNNMw7y9}={;?`acbdsoz{}|~ & % " A   ;   B   <   @   C   ?   D   > E . - +                  4             ! ! " " # # $ % & & ' ' ( ( 6 ) ) : * *  + +  , ,  - -  . .  / / = 0 0 2 2 3 3 4 4 5 6 7 8 9 : < < ? ? @ @ D D S S W W ` ` * a a  b b  c c  j j 2 k l 0 m m / n o 7 p pw q q t t u u v v w w x x y y z z` { { | |; } } ~ ~   v x z }       ]  :    2  ,           u    T     f +  !!*!!!"!"!#!#!&!&!S!S!T!T!U!U!V!V!W!W!X!X!Y!Y!Z!Z![![!\!\!]!^!_!_!`!`?!a!cU!d!d!e!g!h!hX!i!i!j!k!l!l!m!m!n!n!o!o!p!p!q!s4!t!t!u!w!x!x7!y!y!z!{!|!|!}!}!~!~!!!!!!!!!!!!!! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! """"^"""""""""" """""""+"+"<"<"H"H"_"_<"`"`"a"a="d"e## $#$#%%%%'' 'M'M '',`,`,a,a,b,b,c,c,d,d,e,e ,f,f;,g,g,h,h,i,i,j,j,k,kQ,l,lE,t,t,u,u,v,v,w,w          t}n !s03 H45pp|qsttuuvv xxyyzzD{{7n 582>u$Bi[Vix6CWb 8>hY9S}t  9   ( 2 < F P Z d g    SYi &!!e""##$$r%%&&''w(())**++,,--..//00112233?44N55Z66 77388%995::8;;/<<"==>>v??@@AABBCCDD'EE_FFGH>IIuJJKKxLLMMNNOOPPQQRR:SSATTRUUVVWWFXXYYYZZ[[\\]]:^^__```aaxbbccddEeeQffgghhiijj !!""}##q$$%%&&''(())**n++?  !"# , 3 9 Gd"~ ?o_s 0 : < @ D S W c q !!!#!&!!!!"""""""+"<"H"a"e# $#%%''M',l,w!5v{j+# #Fr 2 < ? D S W ` j t !!!"!&!S!!!"""""""+"<"H"_"d#$#%%''M',`,t 0px /Z,exyޖދtq_0]j`S  -(&" p | h  " L N N   $ * , {~ybcdefg'hjikmlnoqprsutvwxzy{}|~ZNcXT\c#VGHEO KT3w^%FAu5! )" R6K5S9fhdnat!H7K:J9txwShjmZQ _k*R7V<Xy*O@ae^]|q)( YFBemjlk)\^m:OPdX__l9\CMI SCDv6@bc'P3f`&lPD]a!JDKL# >deUFjie&x`'4v1*0369=g#8ATmC=w=BU[glp<akoAB@w]VRhm -*UQdb_%nhg 8 L L N M Ovu .3F?XN Z\IJefjKPca^E>MHxyY}( +25T)&!7~6[i  S$ WG#O"  10 4`-=H[]<It|\,- @Eo+-yr H+ 0 [ys@ n1D|}z;\pZ.{qB fYE([G32f'g(={o4>X[i7Uk+l.pAbV0/IUW./ ,1~sDrC~rZFn?}qBk;G:1v!tghjpnJGcrszAjFi@u"sI<n-4;23qo,_t^ux:A?R:rw? 3%58/"vY57ui$9BSb V8x6>CWY boqpZY^_b"vMJCEHG$ %  # &L/O2N1M0rqpgi$ I8M<L;. a`DFJHLOQUSW` ]WJ L PNRLNNMw7y9}={;?`acbdsoz{}|~ & % " A ; B < @ C ? D > E F . - +  4  6 :      = *    2 0 1 / 7 8w`;vxz}]:2,uTf+ ?UVWX4567 ^ <= ;QE tuvwx}nopq H I J K| Dnopq 582>u$Bi[Vix6CWb 8>hY9S}tuvwx  9   ( 2 < F P Z dghSYi&erw?NZ 3%58/"v'_>?ux:ARFY:`xEQ}qn? 3 4 5 9 G*bh!D\#,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-dH/ /ܸܸи/EX/>Y+017!!'!!L2P22(#+A &6F]AUe]и/# EX&/& >YEX/>YA'7GWgw ]A]01%#"&&&5466632#&'&&&&54632#..""..# d GGX^R/ ///01#4632#4632!H.*++!E,*+-^0440 0440ug// / /++ии иииии01!3!!'!'!5!!5!!!e)ep`Jf׮dDdoh+m^%f!#f%i!>!>iw-  N`3+H.++AZj]A )9I]Hи/. и /A &6F]AUe].H9Hи/.и.:и:/H<иEиE/P/EX;/; >YEX:/: >YEX=/= >YEX3/3 >YEXC/C >YEX/>YEX / >Y;9;9-014&&&'6666#5&&&&'33&&&&54666667532#'&#P$>P++P>$)F4%8D *CW[V"_&dmr4f%9KV*CmE":MUY(^B}193k0,_ZP=#^8P9%$;T %:O32H3" X?jU@- \ 7XX>eO<* 5 *8PjB';?S- 2+(+J+@+A   & 6 F ]AU e ]AZj]A )9I]A ((&(6(F(]AU(e(]=2@9?2@9AZJjJ]A JJ)J9JIJ]@UEX>/> >YEX7/7 >YEXYEXE/E>Y-+O+7AIYqA!(8HXhx]A (8qE#A!##'#7#G#W#g#w#########]A ##'#7#qAF#V#q=E#9?79014&&&#"326664&&&#"32666#"&&&5466632#3#"&&&5466632%;**=((=**;%%;*)=((=)*;%&NvOOvO''OvOOvN&f<'NvOOvO''OvOOvN'Q[22[QQ[22[ Q\22\QQ]22]\sBBs\[sBBs^/[tBBt[[sBBsPoy#_Ȼ0+D+A &6F]AUe]AZj]A )9I]:5:9DSиS/I0S9EX?/? >YEX+/+>YEX$/$>Y+ A!  ' 7 G W g w ]A   ' 7 qAF V q?AIYqA!(8HXhx]A (8q5+?9I+?9 ]и]/013266674&&&#"66665'#"&&&546667&&&&5466632666676&''5!5(.Pm>/MA9q0H1*D0'9B-E/\(VdvHXtC(Ie<:8);iSN`74Ul8X%! o)/23=K.EuU0 )X,P=$4F(3YK?5CS1g ?2 =lXCoYD;Pd:M\2/RqCKpT?:@C VV4bYL XX^ //01#4632!H,*+-^0440y;+A &6F]AUe] //01&&&&&&54667k\9=ݡl]))]l Mzp/Z{쪫{F; +AZ j ]A  ) 9 I ]//01566654&&'59\kl[))[lފ=NpӼzM Z{{Zm #///990177'%'7'7#7'7!\ݏ^FTV ݑ5/t+}}+f L+и/EX/>Y +и 01#!5!3!?~'~''''BE+ AZj]A )9I]//01%56666'#&&&&5466632;cF6U9 ".,@*Ma;J )CbF!2(#=UZ59}B^/EX/ >Y01#3hR/3w4/5/ܹAZj]A )9I]4&и&/A &6F]AUe]EX-/- >YEX!/!>Y-AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq014&&&&&#"32666667#"&&546666632V *>T66T=* *=T66T>* ={}}{<6QnSSnR7MvV11VvMMuU11UuMssb_55_ +EX / >Y013572655%33N\@7\\`!0+%+AZj]A )9I],9/%2EX / >YEX/>Y  AI Y qA!  ( 8 H X h x ]A   ( 8 q,01356$6654&&&#"#"&&&5466632!73`j/Ok<$;,  &,#I|ZdyD7c\_$elJsO)  -@pR/:iYHI`!R+9A+K.+KAZ.j.]A ..).9.I.]NA9KTEXF/F >YEX/>Y) +A'7GWgw ]A]A!'7GWgw]A '7qAFVq #и#/ %и%/F3AI3Y3qA!33(383H3X3h3x333333333]A 33(383qFKc;?bD@dE#  ,!:iN.2\Qt+)Q{R/ k + ии EX / >YEX/>Y + 9 и01!#!5333yGZ\#^3B4/5/ܹAZj]A )9I]4%и%/*EX&/& >YEX/>Y/ + A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVq&(01#"&&&546323266654&&&#"!!266632#K؍Pj>I8 N (,,Q~V-6^J3q198z0Nb3kxAhG.FV(8;  =`t6VT) Ʈ{9lR/485/6/ܹAZj]A )9I]5!и!/ A   & 6 F ]AU e ] и / -и-/EX&/& >YEX/>Y0+A!'7GWgw]A '7qAFVq&'-09014&&&#"326667#"&&&546$3'&6632^'KkD!HHE EiJJmG#NhhLn1Fb`UVao=KwS+& 9i}E:chpID.vEzI8ArV+^ /EX/ >YEX/>Y01%#!#!!h#DѺhrR-'O 2+F+FA   & 6 F ]AU e ]AZj]A )9I] <(72(9K2(9FQEXA/A >YEX-/->YA!'7GWgw]A '7qAFVqAAIYqA!(8HXhx]A (8q7-A9K-A9014&&&'326664&&&#"6666#"&&&546667&&&&5466632^6ha'C2'LrJBkJ(%(D[34W>".V}O7(KjqE1Qj9*UD+?sb^vC1JX'1lZ:T@YG?'4CV7BpS.+I_?cE$'@U.6WJ?8DPXl=YEX/>Y(+2AIYqA!(8HXhx]A (8q#(9014&&&#"32666766#56667#"&&&5466632Z EjIJmG#'KkD!HHEnEba*VUV+ao=MhgL;i}E9dMKwS+& 9vEz%1 @q\pID}' +A &6F]AUe]и EX#/# >YEX/>YA'7GWgw ]A]#A]A(8HXhx ]01%#"&&&5466632#"&&&5466632&31&&13&&31&&13&q2%%22%%22%%23%%3B.+ AZj]A )9I]%/EX*/* >Y A ]A  ( 8 H X h x ]01%56666'#&&&&5466632#"&&&5466632;cF6U9 ".,@*&21&&22$Ma;J )CbF!2(#=U%2%%23%%3Pf}//9015I'himf`++015!5!4mtPf}//901%55IP)fV&:G'1++A ''&'6'F']AU'e'] 1'9 /AZj]A )9I]EX"/" >YEX,/,>Y""A]A(8HXhx ]ии,6A66'676G6W6g6w666666 ]A66]01#666654&####"&&&5466632#"&&&5466632V$YEX0/0 >YS^+lG+= +*AIYqA!(8HXhx]A (8q и/1*9016&&&#"326667#"&5#"&&&5466632733266654&&&#"326667#"&&&&&546666632!/LzV.SM">5,-Meor3UKPH8^D&Wa453%r $ &-n^@bluѱc6a Zq/EYnεlYEX/>YEX/>Y +01!5726'!3!573'v ' ydwݚ \wX w  XXXB^"5H, +6+# 9AZ6j6]A 66)696I6],>иJEX/ >YEX/>YD&+ &&+и+/ ,и,/.и./1и9и>и>/D?и?/DAиA/01#!576654&''5!224&#"#326664&#"#3332666/Pisw6ll$zp4:Xh-ElCߦ=6(+l\(R%! dT%S}Z;#XDX-VzMMlJ, !L|k$Hly%FgPBB^Bh^)i"+"EX / >YEX/>Y +  ии"и#013576654&''5!#'&&#!!26573#'4&#!!26773Bjj{D3hh  %nXDXϨ 7  3^'J+EX%/% >Y+%#и#/$и$/01'&&#!!26773#'&&#!!576654&''5!L9ff l} 3  XXDXP\<~=/>/ܸ=и/и/4 и /*A **&*6*F*]AU*e*]EX/ >YEX/ >YEX / >Y%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%q /A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q01#"&&&&&546$32#'&&'&&&&#"3266634&''5!>F0 5'6b_ g   NݏS  YYB^3=4/5/.ܹ4и/и!!+01!57665!!576654&''5!!4&''5!u^ujjuujjXXXDZZ3ZZXD`^?3^tB^.+EX/ >YEX#/# >YEX/>YEX / >Y и / ии/и/!и!/"и"/%и%/'и ,и,/-и-/01!5#!576654&''5!36&''5!ulluJ i$,^˔?#+XXDXX!  XX ` X7^;^3^#*$/%/ܸ$и/01#!576654&''5!4&''5!uEuyu/{XXDX3XXP'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&5466326lkol45kmol5``^_}ݥ_`z{ݦbb|qmpr3R^67/8/ܹAZj]A )9I]7+и+/  EX1/1 >Y+1AIYqA!(8HXhx]A (8qи/ и //и//0и0/014&&&#"##236667'"&&&'!576654&''5!2}(Wb$"&Q[2To/+l{ՋDKuQ+{(T\qo7XXDX,bP<1 1+,++AZj]A )9I]A   & 6 F ]AU e ]!9AZ,j,]A ,,),9,I,]>EX8/8 >Y'+8AIYqA!(8HXhx]A (8q014&&&#"326667326667#"&&&5&&&&5466666324kqpl46mnol5M҅%B4# 9Rd6l_*{ИV+Qvf`yۧc`zxݩdcx{sX 0ZOrd^3pB1^JK/L/<ܹAZj]A )9I]K0и0/%кA0<9EX6/6 >YEX/>YEX/>YEX*/*>Y +6(,и,/-и-/4и4/5и5/A 9-J014&&&##2232666#"&&&&&&&#"#!576654&''5!23o(Wa^! UZ.$+\rG(")Jv^ ljjuE8]zASd:;eTBeF$Doc 7[tyt[7-XXDX&VeQtP2GZecZF)PGH/I/ܹAZj]A )9I]H$и$/1и1/$>A >>&>6>F>]AU>e>]EX)/) >YEX/>YA!'7GWgw]A '7qAFVq)9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q01#"&'&'33266654&&&'&&&&5466632#'&&'&&&&#"=ΐT07, 4K0AoP-Gk~8?sW3He:gYM"u +C.>bD%%IjE]c4NvHk  !>Z9>]I:@TqN[i9 $AX4/MA8#L^u!^@+EX/ >Yܸиии01'&&#!!57665!"#!1ՃwXXmG?{^+ +#+-EX / >YA!'7GWgw]A '7qAFVq01#"&54&''5!3266654&''5!Dŀm uLkjNu~x: XX+Zj;>mUXX?^^^vEX/ >YEX/ >YEX/ >YEX/>YEX/>Y99901##'5!36&''5!ǖwz AJoXX d) XX^^ 9 + 9EX/ >YEX/ >Y01!57665'5!6&''5!dwwg!= sVEXXXX  XXPJ^9EX / >YEX/>Y  0135!"#!!26773PyG#yZG^h!+++01!!!?\^B^/EX/ >Y013ffZN!+++015!!5!ZB^\HhQ +015!ςhFB+<%+%A &6F]AUe]%к292/,<DEX7/7 >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q797(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q7,ܸ @и@/01326767'#"&&&5466666754&#"#"&&&5466632S'9%)Y%+*698;=8aH).SÆ\c6L LzL_}Ic##DEG& =0y)  &HfA&D@;:9Xgc ?[<.RpCP+(')/*/ܸ)и/ к 9AZj]A )9I]EX / >YEX/ >YEX/>YAIYqA!(8HXhx]A (8q 9!и!/#и$01#!#5%36666324&#"3332666+DߚٛR:KV-eh4ѥ./-![b4tŒRRDOL *`FuFNF"._//0/ܸи/ и /и/ -и-/.EX/ >YEX/>Y.+A!'7GWgw]A '7qAFVq"9(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01%#"&&&5466632!3266674&&&#"!+]cf4]OHi_`0h!Nc,VSL#1K33XC)f."?~xËK?o[N|M$-3W@%'JiB;3MEX/// >YEX/>Y+ии/"01&&&&&&'3#!57665#5746667666632!)/(+#yeO[c2+B-j)   ,JiHi!PPH%3QGC%:U8",F+)fӻ H+-+-A   & 6 F ]AU e ]AZj]A )9I]ZH 9Z/ *-9> RиR/UH>9-hEX_/_ >YEXC/C>Yd*+%2+CA!'7GWgw]A '7qAFVq_AIYqA!(8HXhx]A (8qU2%9014&&&&&'326664&&&#"326667'#"&&&546667&&&&5467&&&&5466632!+*EWYS-<$ BeEImH#s0G.+H31I0.G0 J{V .v{w\9So\b46Q8163\F)-QA/ (a7 4Og>QZ0  dhF'^+\1# + и/EX/ >YEX/ >YEX/>YEX / >Y и и /!и!/"01!5#!57665#5%336&''5!rX/dT)- TalPPPDO'T PP P5)))`,4 +'+ и к'9'.EX/ >YEX#/# >YEX/>YEX/>Y# AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/# 9*и*/+01!576654&#"!57665#573666632VZk;r4V1dT+YXR$ZPae!`PPCNf.$PF'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632?!DfEGhC !DfEFhC!Epp~CDrr|ATvFFvTSvGFvRmPOomPR+B3: '++AZj]A )9I]  и +'-и 0к1'9<EX/// >YEX6/6 >YEX%/%>YEX/>YEX/>Y6AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq169014&&&#"326667#"&'&'!57665#573676632f%HkF'K" < T|Q(Gy@ ybP,2+p ?  DqmyŋL OO CNf#(HFBF3~4/5/-ܹ4#и#/A &6F]AUe]к#-9EX(/( >YEX/>YEX/>Y(AIYqA!(8HXhx]A (8q A!  ' 7 G W g w ]A   ' 7 qAF V q 901&&#"32666757665#"&&&5466632G*TW-#KuS/0-yFMM"_h8P܌JNN cYEX"/" >YEX/ >YEX / >YAIYqA!(8HXhx]A (8q  и/и/и/и/ 901&&#"!57665#5736666324&2f5eT?HM$$"  !C<PNCNGB. F;YEX/>YA!'7GWgw]A '7qAFVq$/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q01#"&&&'33266654&&&'&&&&5466632#'&&#"6d[/YK:h[<,D/"@];8V;1^Y-RD4kV0UQ5WA6ZB%)KxS, %,9+=1.5=I.DnM* M<#4.04@N7Ȼ+ /EX/ >YEX/>Y ииA!'7GWgw]A '7qAFVq 901%#"&5#5773!!326767&-&d7th\Z!)=)3+ lzCBf=U5  +b&'/(/!ܹ' и /EX/ >YEX/ >YEX/>YEX/>Y9A!'7GWgw]A '7qAFVq01!5#"&&&5#573326667#573KW_-BiI'R/L6@:3TZu2+'Q}W+FPf6V<  FPP'/EX/ >YEX/ >YEX/ >YEX/>YEX/>Y9и/и и и /99и/01##'5!36&''5!q`^f PP}PP+))nEX/ >YEX'/' >YEX / >Y'и/иии/! 9%и%/&01#"&&&546766667'5!6&''5!w $1; %Y4$8&#4.& qbamBT_\ %) +#;XQZY"} PP\PPFm9EX / >YEX/>Y  0135!"#!!2666773Fi om#T {ZL9B + иB2'//+:901"&&&'&&&554&&'&&&�"3Z6j^M#" .9G--G9. "#M^j6 6?< )q??q) YEX*/* >YEX/>YEX/>YEX/>YEXT/T>YY+A!'7GWgw]A '7qAFVq*9*:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:qTDA!DD'D7DGDWDgDwDDDDDDDDD]A DD'D7DqAFDVDq01#"&'&'53266654&#"5&'&&&&&546$32#'&&'&&&&#"32666766773##6632$?W45+/%6*84ayS*h2]`j>{ '6B&iKGz$;,/wFpN 5(0H2P  &&b^i  NᓏS  `#7Bhm"(3"1{P!"2B?{!"8BF"DYF"DF"DF"DBF"DFP"D F3uU>#++595/-A >>&>6>F>]AU>e>]FиF/-WEX(/( >YEX/>YEX/>YC+A!'7GWgw]A '7qAFVq(9(2A22]A22(282H2X2h2x222222 ](9AI9Y9qA!99(989H9X9h9x999999999]A 99(989qF(9Q01#"&'&'53266654&#"5&'&&&5466632#"&'5&&#"32676632$?W45+/%6*LAVzBPbCuU1"+"2-DmK(+UTHB#MW0#% 5(0H2P  &&'nąC4L2- >nYUo@-,u% i#7F"HrF"HF"HF"HBF_"('"("({"(B)`"QF"RF"RF"RF"RBF"R+b"X+b"X +b"X+b"XB //9901#3'7%5%%#7ZZZN!s+R``bT!^`RPPR`+f)'ø(/)/ܸA]A )9IYiy ](и/ A  & 6 F V f v ]A ]+#+014&&&#"326667#"&&&5466632'45''54'R#=R//R>##>R//R=#4''44''4/R=##=R//R>##>R5 ;+0+A &6F]AUe]% и0ииии0//EX/>YEX/>Y01##5&&&&546667532#'&&'&&&&'6676766773\(XK1(E\3'ImHbht>Aueb'HGI(b !- 5 d :da[iB 9 ThfW  Ӳ   X)EF/G/ܹ F;и;/и/и(и(/;0и0/;3и3/;7и7/;9и9/EXA/A >YEX)/)>Y+AA]A(8HXhx ]AAIYqA!(8HXhx]A (8q)"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q$и$/%и%/'и(и4и601#"'&'5&'&&#"!!67763!!56666'6&''#53&5&55466632)#.  ;W=&}0UC%!8^3?V44lp0qaB +";PZ`/"O"Pdb{d+}CeR/Hd/+%%=jP4SykmB+9+AZ9j9]A 99)999I9]99/AZj]A )9I]A &6F]AUe]B9LB9L/&и&/GB9XиLcmEXQ/Q >Y4!+Q^AI^Y^qA!^^(^8^H^X^h^x^^^^^^^^^]A ^^(^8^q014&'66667#"&&&'33266654&&&&&&&546667&&&&5466632#'&&&&#"甆/E.$IoK<5%*FY/-M9 9eS5aR@f044-M9 2RiniR2&AX2.K61cd-XM<a)17.K62QgmgQ2f]83>D"/NFC# /@L\&-E:58BUmHDdK76@L-FpN)   .?%'>648ARhH //01#"&&&5466632%@V11V?%%?V11V@%1V?%%?V11V@%%@V7^^@+/EX/ >Yиии/01##"&&&546663!-doJ@{s^5#Zwq^)J-`3>+X+K&+AZ&j&]A &&)&9&I&]&K9/AZj]A )9I]AZj]A )9I] и /EXF/F >YEX/>YEX/>YEX8/8>YA!'7GWgw]A '7qAFVqF+AI+Y+qA!++(+8+H+X+h+x+++++++++]A ++(+8+q6и6/7и7/:и:/01#"&'&'33266654&&&&&546667676654&&&#"!5766546666632"&#"9aI#T%++o>+'?-AaraA&B[53M5@\@( h/b7TsZXZ. 4I-%Y^l+H+5+ +H&и&/(и(/H*и*/2к? 9zPAIPYPqA!PP(P8PHPXPhPxPPPPPPPPP]A PP(P8Pq014&&&##2232666#"&&&&&&&#"#!576654&''5!234&&&&&#"32666667#"&&&&&546666632>aEF=]?!X"&DT33TD*NNN}T]1(BW/=H)/QC2[``[32Zaa[2Y8gnlǮg88gmkɯg9*C/-H#:IMI:# 99  :8[B4K5! /:BA;-sb\22[d`\33\`mʰg99gmmʰg99fFm)Eaw8T+ +F*+A &6F]AUe]A**]A **)*9*I*Y*i*y****** ]A88&868F8V8f8v888888 ]A88]FcEX[/[ >Y?M+"++[1AI1Y1qA!11(181H1X1h1x111111111]A 11(181q01#"&&&5466632#'&&#"32666773%4&&&&&#"32666667#"&&&&&5466666321Pg9yBHrPD]O,Az]86Xr<2,& Zx2Zaa[22[``\2Y8gmlȯg88gmnʯf7OajG3b[^e4 a\33\aa\33\cmʰg99glmʰg9:hF1L64+ ++49-68// /&/+иии.и40157##57'5353'4###576767#"#5!/>1=@@ՇAAk   l ;1- T --  /h/ X -V K-- Vh //01#666632t $ (> !BfB? //+ +ии  и01'7!5!7!5!7!!!XRqRgmRR 5^iP^ =ø>/?/>,и,/A &6F]AUe]?ܺ ,9 AZ j ]A  ) 9 I ],9'и'/ 5и5/%/5/EX1/1 >YEX/>Y1AIYqA!(8HXhx]A (8q %59%59A!'7GWgw]A '7qAFVq01&&#"4&'326667#"&''7&&&&5466327.tEol445:;|ݘ1{Mol5`]G ? ^;\?"^VBta= @cE$&(`zzTS-1b|q*(6h5:0}Zp&"9-d61XJ'OP/Q/P<иY +и  01!5!#!5!3!~'~'pqfy 2/EX/>Y9 901!5!54Iqqufy 2/EX/>Y9901!5!%554IqqEF{^0 + 9& 9EX/ >YEX./. >YEX/>Y++ик9ик9&901!!!!!57665!5!'!5!'5!66&&''5!=!w7vyFoyX)b|ZZ  VV  XZZVV VVw9mF$+<9+9 и+ܹ+.<HEX,/, >YEX:/: >YEX/>YEX/>YEX/>Y ,96A!66'676G6W6g6w666666666]A 66'676qAF6V6q69A01%#"&&&'#"&&&'#"&&&54666665332673326667m$7G(:1#,KHI) .55$   !*EM$ 1&9MN/O/N(и(/ A   & 6 F ]AU e ]Oܺ4(97AZ7j7]A 77)797I7]B( 9#+G<+/+B<G901&&&&#"3266666#"&&&5466666326676&&&#"'666632(6I15WE3" -B/5XF6)"6NjX^i9-H\^W /HFO61Tm:(627(TNh<j  HprR56/7//ܹ6 и /EX&/& >YEX)/) >YEX'/' >YEX/>YEX/>Y)  01!5266654&&&##"3!5266654&&!"3b"I>(#8G$$G8#(=I""I>(6M0/N7)>J" 4(+33+*4  5*+=&&=+(4 )Ej+ "+; +E+*и*/4EX3/3 >YEX/>YEX/>Y09+9 иA!'7GWgw]A '7qAFVq9#и@A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&&&5!#"&&&5332666665#"#46663!2673##326665%?T0KW. "B`>,9 D+"%%"V3: <9ZA":4$;+} !-#7T~T*3N^,C+Pe:2Qg5 !+2*7  "AfL0+# " P  % hlB!  >K% ~T E7oo@!A/B/Aи/и/B:ܹ%и A   & 6 F ]AU e ]%EX5/5 >Y++и/5(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q5,>и>/015!326767'#"&&&54666754&#"#"&5466632?TZi7&;#& P'#?/SR0 Bo==(*+% sH+>'":635>; k '7#1D) /1oo+!,/-/ܹAZj]A )9I],"и"/ A   & 6 F ]AU e ]"и/и/EX'/' >Y++'AIYqA!(8HXhx]A (8q014&&&#"326665!#"&&&5466632#,C-.D,,B-.C-q-RuIIvR--SwKJuP*73\G**G\31\F+*F\j==AqS0.SqCBrT01UrFF7FX} 56/7/ܹAZj]A )9I]6&и&/&9A &6F]AUe]&91и1///!/EX+/+ >YEX/>Y!/9A!'7GWgw]A '7qAFVq+AIYqA!(8HXhx]A (8q!/9014&'32666&&#"#"&''7&&54666327?"# S5FhC!~J+GhC EpBt3qHsX^Dr9e-fJf2M4VYEX/>YA'7GWgw ]A]3)A))]A))()8)H)X)h)x)))))) ]01%#"&&&546667533776632#"&&&5466632}'P{TZsAMu;s0iW9T 0$"-.#"/-"$H9$4`TaiHYEX/ >YEX/>YA]A(8HXhx ]01%#"&&&73#"&&&5466632!11"LbL"./""/.",<&&<,o .""..##.R\#+/+01!5!))R^{') 3/EX/ >YEX/>Y901#'733>F!N\h?=y>9+F7EXB/B >YEX/>Y+501&&&&&&'3##"&&&54676766665#5746667666632!)/(*!&O[c2,A-"(4+!O[c2+B-j)   ,JiHieJ9T7", (    # -JkHH%3QGC%:U8",#f!CC//!C93C901&&&'&&&56666766675&&&'&&&5666676667f=LV.=TIJ2TkWLH&0GfI9nha*]ue5=LV.=TIJ2TkWLH&0GfI9nha*]ue5,'(<%,' % $G/,'(<%,' % $G/ N7V / // /0155NV=V܍܍R;V / ///01757'557'5RV=Vۍۍ3';YEX/>YEX-/->YA'7GWgw ]A]#и701%#"&&&5466632#"&&&5466632#"&&&5466632&21&&12&&22%&12&%21&$13&q2%%22%%23%%22%%22%%22%&2 Zm"$ Z"$HP"2PD +<+A   & 6 F ]AU e ]<%и<.и=/EX&/& >YEX"/" >YEX/>YEX/>Y0;+&AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq"9-и-/.и./014&&&#"326665#"&&5466325!#'&&#!!26573#'4&#!!26773 QloQQmoQG|KH}GL{D3ii  #n}ݥ_`z{ݦbbqFLmpLEpϨ 7  FJ6JVFA#+7+V+и/и/79-79A AA&A6AFA]AUAeA]UиU/EX(/( >YEX2/2 >YEX/>YEX/>YV+ A!  ' 7 G W g w ]A   ' 7 qAF V q(9(9-(9(<AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<qFA!FF'F7FGFWFgFwFFFFFFFFF]A FF'F7FqAFFVFq<P01!326667#"&&&'#"&&&54666326666324&&&#"326664&&&#"!J"N^*OH? LXd7EoYDEWlCow>?xoGw]BKXd4Y[.?`BCb? A`AAa?^,A+1O;#PMxJ!(}-$$:H%&H:#SijR#7F#-H3>oXsCDrQVwFEt 2XA&-Mh<3 +015!3 +015!Pq#7+!2+AZ2j2]A 22)292I2]2**9A &6F]AUe]и/!$и$///+$и/013#"&5466673#"&546667}=0  -O[7KK:5%  .QY7KKENV0  ."fXK}`C@NZ4  /"jXJ{`B}qP5+0+A &6F]AUe] и/"9'*и*/AZ0j0]A 00)090I0]7/!/+*и301'666654&5#&'&&5466632'666654&5#&'&&546327KKL;5%  !.QW7KKL=1  C8N\J|`C@MZ3  ."hVK}`CEMV0  5FgPq}[+A &6F]AUe]и///9013#"&546667};3#  -O[7KKBNY3  ."dZK|aC}qW+ и/AZj]A )9I]//901'6666'4&5#&'&&546327KKL"?/  @;M]K}`C"HNS, 5Hef++] +A &6F]AUe]и "+'++01#"&&&5466632%5!#"&&&5466632{"-,"",-""-,"",-",  ,-!!--!!--""-H5 ,/EX/>Y9901#3'`^cbP#+)"\B!"<B>B^/EX/ >Y01#3hRH9:/;/5ܹAZj]A )9I]:!и!/ A   & 6 F ]AU e ]//(/0/+,+014&&&#"32666'#"&''7&&546667'7663271Tr@CtW22WuBArT08GM9J-- #J7HG5J+1,.m@rV31VtCBsU13Ws01/2I8H$IFAJ--/-J6HI8NV //015NTڏRV //01757'5RTۏ;z;| #3/"/"9"9"9"901'3%'7%5%%#3'7%5%%#7^PRV!s+mmk=!s+P^``^PPPP^+VT#^`RPPR`+H?91}W+ и/AZj]A )9I]//901%'6666'4&5#&'&&546327KKL"?/  @;M]'K}`C"HNS- 5Hd}P5+0+A &6F]AUe] и/"9'*и*/AZ0j0]A 00)090I0]7/!/+*и301%'666654&5#&'&&5466632'666654&5#&'&&546327KKL;5%  !.QW7KKL=1  C8N\%J|`C@MZ4  ."hVK}`CENV0  5FfB';OSg{ F+<+^+T+2r+h(+A   & 6 F ]AU e ]AZj]A )9I]A &6F]AUe]AZ(j(]A (()(9(I(]A <<&<6<F<]AU<e<]QFh9SFh9AZrjr]A rr)r9rIr]h}EXR/R >YEXK/K >YEXP/P>YEXY/Y>YEXm/m>YA+c+KAIYqA!(8HXhx]A (8qY#A!##'#7#G#W#g#w#########]A ##'#7#qAF#V#q-и#7кQY#9SK9cw014&&&#"326664&&&#"32666%4&&&#"32666#"&&&5466632#3#"&&&5466632#"&&&5466632%;**=((=**;%I%;)*=((=*);%%;)*=((=*);%&NvOOvO''OvOOvN&g~&NvOOwO''OwOOvN&&NvOOwO''OwOOvN&Q[22[QQ[22[ Q\22\QQ]22]QQ\22\QQ]22]\sBBs\[sBBs^/[tBBt[[sBBs[[tBBt[[sBBs ZS"$\BhS"( Zm"$Bh!"(BBhm"(/D{m"?S"?!"?B,`m"?,Pm"2GPS"2K %4AN]kxci+++++AZj]A )9I] ииAZj]A )9I]$и$/A &6F]AUe],и,/2и:и:/AZj]A )9I]@и@/A cc&c6cFc]AUcec]cGcMиM/Uи[и[/и/cиiиGиcи//EX/>Y+!++y+)и)//и!7и7/!и/=и=/и/DиJиJ/7Xܸ`иfиf/ylиl/rиr/Xи!и014632#"&4632#"&6632#"&546632#"&546632#"&54632#"&546632#"&546632#"&546%2##"&546%2##"&546#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632  6< d<757 E Pm"2?{m"8I?{S"8?{m"8F'(h///01'#3#{h[#'+ +и01#"&&&&&#"#666632326667 (:N2-)(-6!$R ';N2,)'-5!%-R=%$-R>$$2-hb+ и01#"&&&53326667b&MrLMrL&P ,>H&&H<, 6mW66Wm6,?((?,; +AZ j ]A  ) 9 I ]+01#"&&&5466632)**)!**+  +hP'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632'45''54'd&BX33YB&&BY33XB&Z5((54''42XB&&BX23YC''CYR3&ϻ+EX/>YEX/>YEX/>Y"+A!'7GWgw]A '7qAFVq901#"&'&'53266654&#"536632$?W45+/%6*Q 5(0H2P  &&#7hj +и 01#666632#6632u $ u,)$ (> !(>!y}N+A &6F]AUe]EX / >Y+01#"&5466673326767}! =`m+2a'!?8   KJ+L?/ '0: 32  h///01#373{{h[FB+<%+%A &6F]AUe]%к292/,<DEX7/7 >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q797(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q7,ܸ @и@/01326767'#"&&&5466666754&#"#"&&&5466632S'9%)Y%+*698;=8aH).SÆ\c6L LzL_}Ic##DEG& =0y)  &HfA&D@;:9Xgc ?[<.RpCPLD+>'+'A &6F]AUe]'к494/.>FEX9/9 >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q999*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q9.01326767'#"&&&5466666754&#"#"&&&5466632\Z4'9%)X$*)588:=7aH*-R†Wc6L LzL_}Ic#-../1 :-y'  #EcA&D@;:9Xgc ?[:-QpCP2%BC/D/<ܹ%иCи/A &6F]AUe]%EX/>YEX%/%>YEX,/,>YEXY A!  ' 7 G W g w ]A   ' 7 qAF V q%9%7A!77'777G7W7g7w777777777]A 77'777qAF7V7q( @иAиA/01326767'#"&&&5466666754&#"#"&&&5466632Zi6 %9#%$&($?/ 6XW<@$1 a 1Pc1>Q/ @))+$ tI  +=')&$"#5>; j &6$2C( 07o<=/>/6ܹ!и=и/A &6F]AUe]!EX1/1 >Y +и/1$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q1( :и:/01326767'#"&&&54666754&#"#"&5466632Zi7&;#& P'#?/SR0 BX(*+% sH+>'":635>; k '7#1D) /ykw"D,Fh"D#E+Fm"D#YF{"DFm"D#{"DF"D#F"DF"D#X+F"DHF"DF"DFh"D#E+Fm"D#YF"D#"Fm"D#F"D#d"F"D#F"DF"D#X+F"D#X+L"F"DF2"D-L"BF"D#B-F"DF"D#-F "D# Y0F"DW+F "DX+Fh"DE+F"DM+FyP`V+H+AZj]A )9I]Hи/H9/#A VV&V6VFV]AUVeV]1V91/+<Qи<bEX6/6 >YEX / >YEX/>YEXD/D>YEX/>YEXA/A>YK+ 696'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q6+ܸD?[01#"&5466767#'#"&&&5466666754&#"#"&&&5466632#326767326767! =`m+698;=8aH).SÆ\c6L LzL_}Ic!?8  ݊S'9%)Y%+* KJ+L?y)  &HfA&D@;:9Xgc ?[<.RpCP 0: 32  #DEG& =0F-Vʻ!+M+@)+)A &6F]AUe]6!96/0H!@9@XEX;/; >YEX/>YEX/>YEX/>YEXF/F>Y A!  ' 7 G W g w ]A   ' 7 qAF V q;,AI,Y,qA!,,(,8,H,X,h,x,,,,,,,,,]A ,,(,8,q;0ܸ DиD/H;901326767#"&55#"&&&5466666754&#"#"&&&5466632!'37S'9%)Y%+* 8N--8aH).SÆ\c6L LzL_}Ic7 =8##DEG& =0.%xv&HfA&D@;:9Xgc ?[<.RpCPy!B6 -F-cDT>J +-+2C+A JJ&J6JFJ]AUJeJ]" J9"/Eи2VEX'/' >YEX@/@>YEX/>YEX/>Y'AIYqA!(8HXhx]A (8q'ܸ0O01!'#"&&&5466666754&#"#"&&&546663237#"&55326767698;=8aH).SÆ\c6L LzL_}Ic=8 8N-䊢S'9%)Y%+*y)  &HfA&D@;:9Xgc ?[<.RpCB6 -".%xv##DEG& =0F^vI+5+A &6F]AUe]'9'/!'!959=и5KH/0/EX,/, >YEXD/D>YEXG/G>YEX/>YEX;/;>YH09H09H09D A!  ' 7 G W g w ]A   ' 7 qAF V q,AIYqA!(8HXhx]A (8q,!ܸ 9и9/=H0901%326767&&5466677&#"#"&&&54666327!'#"&''KZ.")Y%+*)>K gp6L LzLNo&rW c698;= RT 8.I79: L ~Y4[TN( ?[<9"O-Py)  :F"Fh"E#D1+'!+!'9/AZj]A )9I] и9иFEX@/@ >YEX7/7 >YEX,/,>Y@AIYqA!(8HXhx]A (8q,A!'7GWgw]A '7qAFVq,!ܸ5и5/9,@9014&&&#"66666673267532#"&&&54&''5!67666632':%)W%+)\Z5 .R†Yc6L LzL_}Jb1598;=7aH*=0.-//0'&D@;:9Xgc ?[<.RqC=Py(!  &Hg#D1+'!+!'9/AZj]A )9I] и9иFEX@/@ >YEX7/7 >YEX,/,>Y@AIYqA!(8HXhx]A (8q,A!'7GWgw]A '7qAFVq,!ܸ5и5/9,@9014&&&#"66666673267532#"&&&54&''5!67666632':%)W%+)\Z5 .R†Yc6L LzL_}Jb1598;=7aH*=0.-//0'&D@;:9Xgc ?[<.RqC=Py(!  &Hg}pDE/F/ܹAZj]A )9I]E1и1/ и9EX7/7 >YEX@/@ >Y!,+@AIYqA!(8HXhx]A (8q,5и5/6и6/014&&&#"66666673267532#"&&&54&''5367666632 &9;U;" 6W~W9A#1 a  2Oc1>Q0 ?"%$&(#?/% )&##"5=< k &6$1D(X 0H +>FPFP.//0/(ܹ/и/ A   & 6 F ]AU e ]к(9&и&/EX#/# >YEX'/' >YEX/>YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq901&&&&#"32675#"&&&546663273-13LzU-)LoG>m(#KOS-ga.@ƒ1m(}>V; =n]Te7+m1$WWhƚ],"NN2p.//0/(ܹ/и/ A   & 6 F ]AU e ]к(9&и&/EX#/# >YEX'/' >Y+#AIYqA!(8HXhx]A (8q901&&&&#"32675#"&&&546663273  !1P72H.(G146Ca?*T~U GQ( 8  %B[83S=!pA 4Ti4>w\8//FP"FP"%FP"xFP"FhP"#ExFPm"#FPm"#%FP"#FP"#XxFP"FP"FhP"#ExFPm"#FPm"#%FP"#FP"#XxFP"FP"FP2"-FP"BFP"#B-FP"FP"#-FPP"XFP "#X0FP"WxFP "XxFhP"ExFP"MxFyP8KC+0+AZj]A )9I]0и/0$09и9/A CC&C6CFC]AUCeC]KEX/ >YEX"/" >YEX/>YEX)/)>YEX / >YEX/>YEX,/,>Y3+HA!HH'H7HGHWHgHwHHHHHHHHH]A HH'H7HqAFHVHqH9>AI>Y>qA!>>(>8>H>X>h>x>>>>>>>>>]A >>(>8>q01#"&54667675#"&&&546663273#326767&&&&#"3267! =`m+#KOS-ga.@ƒ1m(}>V!?8  -13LzU-)LoG>m( KJ+L?m1$WWhƚ],"NN 0: 32  7 =n]Te7+F-P1DĻ<+)+"+')9"2A <<&<6<F<]AU<e<]FEX/ >YEX/ >YEX/>YEX / >YEX'/'>YEX / >YEX / >Y'AA!AA'A7AGAWAgAwAAAAAAAAA]A AA'A7AqAFAVAq"'A97AI7Y7qA!77(787H7X7h7x777777777]A 77(787q01#"&55#"&&&546663273!5337&&&&#"3267 8N-#$ga.@ƒ1m(}>V#K(%=8-13LzU-)LoG>m(.%xvWWhƚ],"NNm1B6 -k =n]Te7+F--@8 ++,+.A 88&868F8]AU8e8]BEX/ >YEX/ >YEX)/)>YEX/>YEX/>Y=A!=='=7=G=W=g=w=========]A =='=7=qAF=V=q=93AI3Y3qA!33(383H3X3h3x333333333]A 33(383q01!5#"&&&54666327337#"&55&&&&#"3267#KOS-ga.@ƒ1m(}>V=8 8N--13LzU-)LoG>m(m1$WWhƚ],"NB6 -".%xv; =n]Te7+3=01/2/ܹAZj]A )9I]1и/ и/ &к'9EX%/% >YEX,/, >YEX/>YEX/>Y,AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq',9014&&&#"326667#"&'#4&&&''5!666632s)LpF>m(,23LzU-@Â1m(}> VB#KOS-ga.Te7* =nhƚ],"Ns Nl0$W&p01/2/ܹAZj]A )9I]1и/ и/ &к'9EX%/% >YEX,/, >Y+,AIYqA!(8HXhx]A (8qк',9014&&&#"326667#"&'#4&&&''53666632C1I-)G  !1O8)TT GQ) 8136Ca?63S=!  %B\L>w\8/ /A 4ThF n4+c +] +c A &6F]AUe]]и 9кG49G/CS c9]`и`/]bиb/]pEXN/N >YEXX/X >YEX!/!>YEX///>Y b+XAIYqA!(8HXhx]A (8q b 9?иNCܺSNC9!iA!ii'i7iGiWigiwiiiiiiiii]A ii'i7iqAFiViqn!N9014&&&#"!326767#"&&&'&'#"&&&54666754&&&#"#"&546666632666632!326667+B-9J-pqU"&;($N!'%BUj=-OF:8)6;:?B"AbC"?ۜ)E32@)%":NY`.H_<" -D\;[Q&9IZ7.LB:.WC)5Vm7A;@K.#?0[,' ",," )Ib9QnRD(T3M4#*E5( %*)&DsR  1))F n4+c +] +c A &6F]AUe]]и 9кG49G/CS c9]`и`/]bиb/]pEXN/N >YEXX/X >YEX!/!>YEX///>Y b+XAIYqA!(8HXhx]A (8q b 9?иNCܺSNC9!iA!ii'i7iGiWigiwiiiiiiiii]A ii'i7iqAFiViqn!N9014&&&#"!326767#"&&&'&'#"&&&54666754&&&#"#"&546666632666632!326667+B-9J-pqU"&;($N!'%BUj=-OF:8)6;:?B"AbC"?ۜ)E32@)%":NY`.H_<" -D\;[Q&9IZ7.LB:.WC)5Vm7A;@K.#?0[,' ",," )Ib9QnRD(T3M4#*E5( %*)&DsR  1))2p nL4+c +] +c A &6F]AUe]]и 9и]`и`/]bиb/]pEXN/N >YEXX/X >Yi!+ b+XAIYqA!(8HXhx]A (8qiи/!/и?иNC014&&&#"3326767#"&&&'&'#"&&&54666754&&&#"#"&546666632666632!326667 +%0 I`7 &2+7E'3.%$#&&)+*@+)Ye -!!* ]&39?.>',<';T5%/;#2+%4( 3B!'$&-& 7     +;"1B1)2. j* )EZ1  F"7]F2"7-F j Y+7 +EA+7 кAE9/AZj]A )9I]Yи2O 79Y\и\/Y^и^/ _и2lEX!/! >YEX-/- >YEXJ/J>YEXT/T>Y_ +TA!'7GWgw]A '7qAFVq _9=иJAܺOJA9!eAIeYeqA!ee(e8eHeXehexeeeeeeeee]A ee(e8eqjJ!901326665!%666654&&&#"%666632676666323267532#"&&&'#"&&&546767!&&&&#"+B-9J-/qU"&;($O!'$BUi>Y07*4<;?C"@cC"?ۜ)E32@)%ItFH_<" -D\;\Q&79IZ7.LB:9.WC)5Vl8A;@K."?0[,'1",," )Ib9QnRD(T3M4#?[<%*)&DsR 1))2p jN Y+7 +2+7 AZj]A )9I]YиY\и\/Y^и^/ _и2lEX!/! >YEX-/- >YAJ+_ +J=к _9-AIYqA!(8HXhx]A (8qJTиe01326665#%666654&&&#"%666632676666323267532#"&&&'#"&&&546747!5&&&&#" +%0 lI`7 &3+7D(:[$"'&),*@+)Ye -!!* ]/L\..>',<';T5q%/;#2+%4( 4@"'#&-& 7   ,;"1B1)2. k&6$ )EZ2  F Nd ,+A   & 6 F ]AU e ]EX1/1 >YEX/>YEX'/'>Y1AIYqA!(8HXhx]A (8q'A!'7GWgw]A '7qAFVq"19619901&&&&&&#"32666#"&&&'#"&&&54666326673326767u'YEX4/4 >YEX/>YEX$/$>YO\+fE+.AIYqA!(8HXhx]A (8q$A!'7GWgw]A '7qAFVq$99A!99'979G9W9g9w999999999]A 99'979qAF9V9q01&&&&#"3267#"&&&'#"&&&546663273326666654&&&#"3266677#"$&546$32%-13LzU-)LoG>m(V&@S[\(#B4"#KOT-ga/@ƒ651};/+&=-  X菓vn \kKr%B_yU⁅2sȥW.9 ;k]Tf:-_g~Y9!5%1$YWhŘ\ PAL)F[df-`iq-5+;C9%w:Ļ7};iPBZ[/\/[MиM/\ܺM9M9M9&AZ&j&]A &&)&9&I&]M4A 44&464F4]AU4e4]&AиA/EXT/T >YEXF/F>YEX/>YEX/>Y+!иT-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-qF;A!;;';7;G;W;g;w;;;;;;;;;]A ;;';7;qAF;V;qF@013#!5766'!!5733266654&&&&&#"3266673#"&&&&&546666632w/W~NL jfKQwx 1H/1YddZ11ZdTu$1sxq>>qxxq>obMH) HH9BjGkūc77ckkīc73I/Q\2ByΪyBBy Z@EX/ >YEX/>YEX/>Y +01!5726'!3!573'v ' ydwݚ \wX w  XXX ]?/+ +и/ии01!5726''!3!573M [XNN6d5 ;5 55  5ZEX/ >Y +01!5726'!3!573 #%fljh`RBP  PP P Zm"$ Z"$#\ Z "$ Z"$#\ Z "$ Z"$#\H Zp"$H Z ,"$#\X Z["$ hZS"$#E\ Z("$z Z("$z Z"$#z Z"$#z} Z"$#z Z"$#z Z"$#zH ZO"$H Z ,"$#zX Zu"$#zXi hZ("$#Ez Z9"@ Q ZS"$\ Z"$-T Z!"@Bh ZR"$#Bh-T Z&"$9 ZR"$#-T 9 Z "$# Z"$X hZ"$E Z"$M yZ8;0+AZj]A )9I]0=EX"/" >YEX/>YEX/>YEX)/)>Y3+;+01#"&5466767#5726'!3!573#326767!! =`m+v ' ydwݚ \!?8   KJ+L?X w  XXX 0: 32  s -Z"${ ^Z!),/ /EX/ >YEX/>YEX / >YEX/>Y*+ 9 9 9*к' 9(01!5726'##'7#5733#%'sv F`^>wݚta5 \)Nj)u3PX w]X:hX9Xw b+k1EX)/) >YEX / >YEX/>Y/++/ии!и/#и%и'и+и-01!'!73!5726'!3!57#537#5333#3i{#~P Jz_ SJO a_Ws"{в"sd XX   XX&dsdSdsdPR; "+5+A   & 6 F ]AU e ]и.ии1:и5=EX/// >YEX)/) >YEX/>YEX/>Y)AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq)91и1/.199и9/01&&&&#"3266675#"&&&&&5466666325!DMLdl99fQ$XVK)agl3Ot\?""Fin-QH<fd$#d`91"b`^&*%C2;eO_f:%.`j  jBD=$%++AZj]A )9I]$ и$*%/и$1и 2и?EX0/0 >YEX7/7 >YEX$/$>YEX/>Y7AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq#9&и&/279014&&&#"32666667#"&&&'!576654&''5!666632P;gQ$URGCLKBr]G1"Fin-QH<d$$df(jsu4OnT9`N!5..TtU_j=%.`j  j%B28a 5^9!+и!/EX/ >YEX/>YEX/>Y +#.+9и/и/и/и/ и!и0и101!57665!!576&''5!#'&&#!26773#'&&#!!2666773`e' ulm d>wsee  tdXs XXk VϨ 7   I9!+и и(!/EX7/7 >Y0+ + +#.+ 90и/0и/и0и/ и/01!576655!!576&''5!#'&&#!26773#'&&##!2666773dB͕ LG AN  BB 1Ko5 55  3e TVz8+и-EX/ >YEX'/'>YEX5/5>Y.++9ии' )и)/*и*/3и3/4и4/7и7/8и8/01!6&''5!#'&#!3266673#&&&&##!26773!576655!3!572 \t dd  m\hj! P** ** P  PP 5m"i 5"i-#()/*/ܸ)и/ к 9AZj]A )9I] /EX/ >Y$+AIYqA!(8HXhx]A (8q 9$и/$!и!/01###5736666324&#"3332666,\dd5 &08AcC"ia  :\?"VEwX22(0 .MfSvv:9\+N"E+"E*h+"EE-++>&5++5!к"9,и@EX / >YEX'/' >YEX/>YEX/>Y559'/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q"'/957и7/9и:01#"&&&546667265#!#5%36666324&#"3332666+".-N8 6=3?oٛR:KV-eh4ѥ./-![b4tcI;Yvx%."- 6BQ!)RDOL *`q(2o+)+и/ иии)(и1и2и4EX/ >YEX/ >YEX/>Y и /"иܸиии и,AI,Y,qA!,,(,8,H,X,h,x,,,,,,,,,]A ,,(,8,q2ܸ к,92и"#и(и)01#!#53#5%36666323!333266675&&#" Fƌ٪R7FT-c_0e!VV/ +,)cxDf'DOJ}\f&Tcf +2W++ ии)AZj]A )9I](EX/ >YEX/ >YEX/>Y  + ии и и#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q#9)+и+/-и.01#!#535#5%33#6666324&&&#"3332666+Dߚ٪ P;KW-ef4+QuJ-/,![b4tŐRPhDOhLab2 *^Z8KL/M/Lи/и/Mܺ9Bк9*иB/иB1и1/9AZ9j9]A 99)999I9]EX./. >YEX / >YEX/>Y+(+3+(ии/ <AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<q <9("к#.9BDиD/FиG01#"'666632#!&'&#"#6666325#5%33266674&#"3332666 (:N2 :KV-eh4Dߚ!$R ';N2 R!%2./-![b4-R=%{L^tŒRy$-R>$QDO$ *`:-;/YEX6/6 >YEX/>Y6AIYqA!(8HXhx]A (8q  +169014&#"326667#!46667666632'"666632B-/,i[a2CUcm84M3"0T=#;KX-df3 ,`tƐQ=aTO*6L1$/$. *QwNL+ &'/(/ܸ'и/ к 9AZj]A )9I] /EX/ >YEX/>YAIYqA!(8HXhx]A (8q 9и/!и"01#!'6666324&#"3332666+DߚٛZ:KV-eh4ѥ./-![b4tŒR&]L *`+/10/1/0и/& и1ܺ 9AZj]A )9I]EX/ >YEX/ >YEX/>Y AI Y qA!  ( 8 H X h x ]A   ( 8 q  9&(и(/*и+01#'&&#!"666632#!4&#"3332666q:KV-eh4Dߚ./-![b4 NL^tŒR *`FAB/C/ܹAZj]A )9I]Bи/ 8 9+/EX&/& >YEX=/= >YEX/>Y=AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq&1AI1Y1qA!11(181H1X1h1x111111111]A 11(181q8+9014&&&#"326667#"&&&554666663267673#"666632?&HjDHkG#&IjDGkG#D}lo|B+PrZUc  !Jgff@'Ec~No{BWuEEuWYvDDvYlQXcߢl@ ,WF+";P\e2'QA)S367/8/ܹAZj]A )9I]7 и / ,EX&/& >YEX/>Y2+и/ и /  и /ии/и&$(и(/)и2-и-/2/и//014&&&#"326667#!576654&''5!6766326YC "  Vd4-i|`eYn)[o>)3T<"T#;L)NpH#P  PP )Px ~45/6/'ܹAZj]A )9I]5и/ ии2/EX/ >YEX/ >YEX,/,>Y"+и/ и /,  и /и"и/"и/.и.//и3и4014&&&#"326663533#676632#!57665#6YC "  Vd4D)[o>-i|`e)3T<"T#;L✜f)PxNNpH#P 5&:;/YEX/>Y",+ии/"и/"и/,/и//,1и1/2и2/3и3/601#!576654&##"#5!6766324&&&#"326665-i|^d Zm)[o>4XC" Wd3 )NpH#P   P )PxN3T<"T#;L1L!9MaE +:+4'+Eи"и"/,и,/AZ:j:]A ::):9:I:]4OEX/ >YEX-/- >YEX/>YEX"/">Y?+и/ии/и/#и#/$и+и,и,//и//0и$7и8и8/?BиB/?DиD/8EиE/FиF/I01#!576654&''5!676632576654&''5!4&&&#"32666-i|^eWl*[o> bbccy5XC" Wd3)NpH#P  PP )PxP  PP  P)3T<"T#;L1L"}B{? >P++5+AZj]A )9I]и5 :595@EX1/1 >YEX%/%>Y+1AIYqA!(8HXhx]A (8qи/и/%и'и'/(и(//и0и0/:9014&#"326664&#"2326667#!576654&''5!2u|*+Oj@B|&$ 4UsE'CW^a*+a aķ!6B!0\F+OW/Dh]Y1I>=[B, P Pr/F4# 8SB^"5H, +6+# 9AZ6j6]A 66)696I6],>иJEX/ >YEX/>YD&+ &&+и+/ ,и,/.и./1и9и>и>/D?и?/DAиA/01#!576654&''5!224&#"#326664&#"#3332666/Pisw6ll$zp4:Xh-ElCߦ=6(+l\(R%! dT%S}Z;#XDX-VzMMlJ, !L|k$Hly%Fg0I"5Hɻ, +6+#ܹ 9AZ6j6]A 66)696I6],>иJ1+9+D&+1 и /9и/&D91.и./9>и>/DAиA/01#!576654&''5!224&#"#3326664&#"#33326664DKN#FFdOrI"&9D-XF+lj(#  F`;5eh  AY72K6$5  43I/.A,.JATN+AIM*==@X -+7+7AZj]A )9I] и <797BEX3/3 >YEX'/'>Y+и/' и3AIYqA!(8HXhx]A (8qи/)и)/*и*/1и2и2/<9014&#"#2326664&#"#32666#!576654&''5!2(&  TtHDv}./NkA'BV_a+)] ]ø"6D!0\H,]U2JQW.Du=[B* P  Pr/F5# 7TB&"%B^"%* Bh^"%E#^&=P'4 +>+' к" 94/AZ>j>]A >>)>9>I>]4FиREX/ >YEX/>Y+L*+ *"*/и//0и2и 4и4/6и6/9иAиFиF/LGиG/LIиI/01#!576655#534&''5!224&#"#!!36664&"#333666/Pisw6ll$zq5;Xi-ElCߦ=6(1*l\)R%! dT%S}Z;#Xh X-VzMMlJ, !L|kh$Hmx%Hh+I=*+8+AZj]A )9I]к89/AZj]A )9I]89*.к;89<ии>/AEX6/6 >YEX&/&>Y+6AIYqA!(8HXhx]A (8qи/&ии(и(/)и)/-и/и4и5и5/=014&#"#366664&'#2326667#!57665#534&''5!23v}.>Je=Dzz TtH?;J'BV_a+)] ]øJ@QW,@`[W0ES<;W@) P Rg8 Pr:a g^0CXS: +'D+'1, 9AZDjD]A DD)D9DID]:Nи'ZEX!/! >YEX/>YT4+ !!A]A(8HXhx ]4,49и9/ :и:/<иYEX/>Y)+и/ и /  и /ии/и/)$и$/)&и&/014&&&#"326667#!57665'6766328eT-$lc.M}f3rԢbZk9$IoQl^+X ٽ^m Q1^;YEX/>Y7+и/ и /  и /ии/и/&$-и.и72и2/74и4/014&&&#"326667#!576654&''5!#'&&#!"6766328eT-$lc.M}lq3rԢbZk9$IoQl^+X H X  Q1T^9:/;/ܹAZj]A )9I]:и/ /EX$/$ >YEX/>Y5+и/и/  и /ии/и/$"+и,и50и0/52и2/014&#"326667#!576654&''5!#'&&#!"676632-$lT"=؜}lq3rďRt+SwKle1X H X }9p3V^4¸5/6/ܹAZj]A )9I]5и/ *EX/>Y0+и/и/  и /ии/и/0+и+/0-и-/014&#"326667#!576654&''5!676632q-$lN=؜}l3rďRx*QvKle1X H XX }9pV23/4/%ܹAZj]A )9I]3и/ии0EX/ >YEX/ >YEX/ >YEX*/*>Y +и/и/*  и /и и/ и/,и,/-и-/1и2014&#"326663533#676632#!57665#q-$lN3rďR=؜}x*Qv gY9pmle1X l  ^;YEX/>Y7+и/ и /  и /ии/и/+$.и./72и2/74и4/014&&&#"326667#!576654&##"#!676632% HsT-$lE7Ӝ}q3rKZU)x*QvKle1X @EX }9p3}^6N]  ++I<+AZj]A )9I] ,иIPEX&/& >YEXB/B >YEX/>YEX7/7>Y2+и/ и /  и /ии/и/&$(и(/)и2-и-/2/и//8и8/9и9/)@и@/AиA/DиD/EиE/9LиL/MиM/014&&&#"326667#!576654&''5!676632576654&''5!\ HsT-$lE7Ҝ}l3rKyy}}ZU)x*QvKle1X H XX }9pXDZZX3}!"B-BcN-8+E +Eܹ 89AZ j ]A  ) 9 I ]J89EPEX@/@ >YEX2/2>YEX/>Y+ 2@9A!'7GWgw]A '7qAFVq@%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%qJ901#"&'53266654&&&46766654&&&#"3!5766546666632b#?Weo80n*2W+2cO12ksMpI#3M5@P. t#d$@`ZXZ.'BX1Kk@\jI,tG}dXa2.)NpF.WC(0Ncga$ OO "FoR/0Y}NFqT7 /W"(N7-8+E +AZ j ]A  ) 9 I ] E9/AZj]A )9I] 89J892/0/4/EX/>Y@%++A!'7GWgw]A '7qAFVqJ901#"&'53266654&&&467266654&&&#"3!5766546666632)8BH%G!9!@4 !FkK2I0!2"*4  KA )?W;9X:+9 1YF*7V@, E+K<5T: /C*4(/<=;00 *TNC16K/*C3!5Q"N-8+E +AZ j ]A  ) 9 I ] E9/AZj]A )9I] 89J892/@%+++J901#"&'53266654&&&467266654&&&#"3!5766546666632)8BH%G!9!@4 !FkK2I0!2"*4  KA )?W;9X:+9 1YF*!7V@, E+K<5T: /C*4(/<=;00 *TNC16K/*C3!5QL{-.///ܸи/. и / %A %%&%6%F%]AU%e%]EX/ >YEX/>YA]A(8HXhx ] AI Y qA!  ( 8 H X h x ]A   ( 8 q*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q-901%#"&&&5466632#"&'5&&#"3267{#MW_4lzBPbDtV0"+"2,ElL(+UUGBL%MnąC4L2- >nYUo@-,Fu-.///ܸи/. и / %A %%&%6%F%]AU%e%]EX/ >YEX/>YA]A(8HXhx ] AI Y qA!  ( 8 H X h x ]A   ( 8 q*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q-901%#"&&&5466632#"&'5&&#"3267u#MW_4lzBPbCuU1"+"2-DmK(+UTHBL%MnąC4L2- >nYUo@-,1Do(0 +A   & 6 F ]AU e ]EX / >Y%+ AIYqA!(8HXhx]A (8q AIYqA!(8HXhx]A (8q01#"&&&5466632#"&'5&#"3267D-pEFqO+5Yt@+L8 1 -F27S8.R,=&.QpBNvO).#% j%BZ63YB&ywFu"Fu"Fu"Fu"F3uUe >#++595/-A >>&>6>F>]AU>e>]FиF/[#F9-ga/EX(/( >YEX/>YEX/>YC+A!'7GWgw]A '7qAFVqa9(2A22]A22(282H2X2h2x222222 ](9AI9Y9qA!99(989H9X9h9x999999999]A 99(989qFa9Q[a901#"&'&'53266654&#"5&'&&&5466632#"&'5&&#"32676632#666632$?W45+/%6*LAVzBPbCuU1"+"2-DmK(+UTHB#MW0#% 5(Ut $ 0H2P  &&'nąC4L2- >nYUo@-,u% i#7d(> !Lp{:k2+ +AZ j ]A  ) 9 I ]) 9)/!и/ 9A 22&262F2]AU2e2]!<EX/ >Y  +&A&&]A&&(&8&H&X&h&x&&&&&& ]-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-q01%#5654&&&'&&&&5466632#"&'5&&#"3267{7M*8fZ'7T]2PbDtV0"+"2,ElL(+UUGBL6 Q0gv`?>3* Y`ąC4L2- >nYUo@-,F-u?λ7+&.+&и/&A 77&767F7]AU7e7]&AEX!/! >YEX/>YEX/>Y<A!<<'<7<G<W<g<w<<<<<<<<<]A <<'<7<qAF<V<q<9!+A++]A++(+8+H+X+h+x++++++ ]!2AI2Y2qA!22(282H2X2h2x222222222]A 22(282q?!901#"&&&546667265#"&&&5466632#"&'5&&#"3267u-N8 6=+_4lzBPbCuU1"+"2-DmK(+UTHBvx%."- 6B MnąC4L2- >nYUo@-,FXu}2@;+A ;;&;6;F;]AU;e;]//EX / >YEX/ >YEX./.>YA]A(8HXhx ].%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q(9 6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q?901'7&'&&54666327#"&'53267#"'&'&&#"H=BPbC: ZJV*"+"2*=@THB#MW_4lW&"-DmK( S+EnąC)%&2- 4 -,u%&N >nYUKPF+u/0/1/ܸи/0 и / 'EX/ >YEX/>YA]A(8HXhx ]!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q,A!,,',7,G,W,g,w,,,,,,,,,]A ,,',7,qAF,V,q/901#"&&&5466632#"&'5&&#"3267u"MW`4lzBPbCuU1"+"2-DlK)+UTIB$KoāąC5M2- >nY9Ul=.*FyCʸD/E/ܹD2и2/A &6F]AUe]'и'/?/EX/ >YEX7/7 >YEX-/->Y7A]A(8HXhx ]7AIYqA!(8HXhx]A (8q-$A!$$'$7$G$W$g$w$$$$$$$$$]A $$'$7$qAF$V$q'-?901'#"&'5&&#"3267#"&&&5466632666632y "+"2-DlK)+UTIB"MW`4lzBPb&J 1E[8%<)L# n /F43 - >nYUo@5,u' MnąC .M7$F=Mһ/+&+A //&/6/F/]AU/e/]49>ܸO /EX/ >YEX/>YEX/>Y9A+#A##]A##(#8#H#X#h#x###### ]*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q4 9IA!II'I7IGIWIgIwIIIIIIIII]A II'I7IqAFIVIq01%##"'#467&&&&5466632#"&'5&&#"6666324&#"326667_I X K}Z2PbCuU1!+"2-DmK('<*-D\>&B0o(%);* ( >08cJ*={99DY]ąC5M2- >oYYI+9A+и/#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q01##"'#467&&&&5466632#"&'5&&#"6666324&#"32666M#>S/ 9 0R:!4Xt@+L7 !  ,G1 ' ,<(+H&( ";-$J""P( 5Ma8NuP( . l &B[6$C:-">/('/!Fu,-/./ܸ- и /AZj]A )9I] "и"/EX(/( >YEX/>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq(AIYqA!(8HXhx]A (8q"(901#"&&&54666323266654&&&#"5666632uQbDsV0","1-)DmL(+UTGB"NV_5kzBąC4L2- >nYUo@-+t$MFu,-/./ܸ-#и#/ и /AZj]A )9I]#EX(/( >YEX/>Y (9A!'7GWgw]A '7qAFVq(AIYqA!(8HXhx]A (8q(A]A(8HXhx ]01#"&&&'53266654&&&#"#"&&&5466632uBzk5_VN"BGTU+(LmD)-1","0VsDbQoM$t+-@oUYn> -2L4C2Dp,ɻ+AZj]A )9I]EX(/( >Y+(AIYqA!(8HXhx]A (8q01#"&&&54666323266654&&&#"5666632D4Yt@,K8  ,G17S7.T+28>"FqO+=MvP(. l%BZ63ZB'F  .Rp2Dp,0+AZj]A )9I]EX(/( >Y+(AIYqA!(8HXhx]A (8q(AIYqA!(8HXhx]A (8q01#"&&&'53266654&&&#"#"&&&5466632D+OqF">82+T.7S71G,  8K,@tY45BqR.  E'BZ36ZB&l .(PuF-u> +,+%AZ,j,]A ,,),9,I,]4и4/5и5/EX:/: >YEX/>YEX/>YEX/>Y!A!!'!7!G!W!g!w!!!!!! ]A!!] !9'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q:1AI1Y1qA!11(181H1X1h1x111111111]A 11(181q4:901#"'&'37#"&54666323266654&&&#"5666632uQbD:2'=8 8N-","1-)DmL(+UTGB"NV_5kzBąC B6 -".%xv- >nYUo@-+t$MF-u>ƻ 5+%+5и/AZ%j%]A %%)%9%I%]5-EX:/: >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q  9:9:*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q:0A00]A00(080H0X0h0x000000 ]01#"&'&'37#"&53266654&&&#"#"&&&5466632uBzk5_+=8 8N-BGTU+(LmD)-1","0VsDbQoM B6 -".%xv+-@oUYn> -2L4CFu-.///.и/и//#ܹAZj]A )9I]EX/ >YEX(/(>Y(9A!'7GWgw]A '7qAFVq AI Y qA!  ( 8 H X h x ]A   ( 8 qA]A(8HXhx ]0173266654&&&#"#"&&&5466632#"&&&'FBHTU+(KmD-2"+"1UtDbPBzl4_WN",-@oUYn> -2L4CānM%FSS,(++AZj]A )9I]A &6F]AUe]"(9. /"/+ ܸ #и#/012#"&&&54673654&&&#"#&&&&54666FąC4L2- >nYUo@-+t$MQbDsV0","1-)DmL(+UTGB"NV_5kzBBb3#' +'$EX/ >YEX/>Y%&+AIYqA!(8HXhx]A (8q*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q01%#"&&&5466632#'&&'&&&&#"!!3267676773b)/(h8AHu"BFK+\ $0HwV3{ .#X ZbrK  }  .^_V Fh3#+EX/// >YEX/>Y+A!'7GWgw]A '7qAFVq/AIYqA!(8HXhx]A (8q01#"&'&'53326667!5!&&#"#5666632hB~9g)0)Z!/SuL({ 0$ \+LEB"uIbZ  1aad  }  KFh"BuBbMi+AZj]A )9I]6EXI/I >YEX/>Y1+,#+A!'7GWgw]A '7qAFVq19(и(/I9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q01#"&'&'53326667#"&&&#"#6632326767&&#"#5666632bA9g(/)X".SvL( &'#& X\O$" #! 0$ \+KFB"uHbZ  0aa   EU   }  KP5H& +A &&&&6&F&]AU&e&]EX/ >YEX/ >YEX/>Y!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q+A!++'+7+G+W+g+w+++++++++]A ++'+7+qAF+V+q01%#"&&&&&546$32#'&&'&&&&#"32666766773FpNsßyS*h2]`j>{ '6B&iKGz$;,/w/7b^i  NᓏS  P5H& +A &&&&6&F&]AU&e&]EX/ >YEX/ >YEX/>Y!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q+A!++'+7+G+W+g+w+++++++++]A ++'+7+qAF+V+q01%#"&&&&&546$32#'&&'&&&&#"32666766773FpNsßyS*h2]`j>{ '6B&iKGz$;,/w/7b^i  NᓏS  F/7# +A ##&#6#F#]AU#e#]EX/ >YEX/>YAIYqA!(8HXhx]A (8q(A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q01%#"&&&5466632#&&&&'&&#"32676773;\u?ؔMUւ)KOW4s (L-Rh;7i_#?)n%WfrK0815ifdl8 Pm"IPS"PS"P&"|P3m]m,?%++A ??&?6?F?]AU?e?]c%9i/EX0/0 >YEX*/* >YEX/>YEX/>YEX/>YEXT/T>YY+A!'7GWgw]A '7qAFVqi9*:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:qTDA!DD'D7DGDWDgDwDDDDDDDDD]A DD'D7DqAFDVDqci901#"&'&'53266654&#"5&'&&&&&546$32#'&&'&&&&#"32666766773##6632#666632$?W45+/%6*84ayS*h2]`j>{ '6B&iKGz$;,/wFpN 5(Pt $ 0H2P  &&b^i  NᓏS  `#7(> !P>FAG/H/ܹAZj]A )9I]9Gи/"и"/7A 77&767F7]AU7e7]EX(/( >YEX"/" >YEX / >Y "9"2AI2Y2qA!22(282H2X2h2x222222222]A 22(282q01%#5266654&&&'&&&&546$32#'&&'&&&&#"326667667733Sn>$*6eZ+K6/=!ɈGh2]`j>{ '6B&iKGz$;,/w/!Y8:Z?"|.'+>. zi  NᓏS  P^4Cx=+A ==&=6=F=]AU=e=] //EX!/! >YEX/ >YEX/>Y8AI8Y8qA!88(888H8X8h8x888888888]A 88(888q89% 9*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*qA 9B 901%#"&'''&'&&&546$327#'&'32666766773&&#"&FpNsP^YEXYEX0/0>Y<AIYqA!(8HXhx]A (8q0 A!  ' 7 G W g w ]A   ' 7 qAF V q01'#'&&'&&&&#"32666766773#"&&&&&546$32666632!#${ '6B&iKGz$;,/wFpNsßyS*h?q?-RyS0H2B#,  'DgN NᓏS  7b^iM_5#.1ILEX / >YEX/ >YEX/>Y  ++*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q/и1и 7и 9и?A!??'?7?G?W?g?w?????????]A ??'?7?qAF?V?q01%#"&&&'#73&5547#73666632#'&&'&&&&#"!!!!326667667731;`{BΗ_ex*OSY5h "-8!NlI6a GoZ3%(e/]w] . ^ԗS  ;uq^ . ]py@  Gk;>FPA?+A ??&?6?F?]AU?e?]?9/#/ //EX/ >YEX/ >YEX"/" >YEX)/) >YEX/>Y4A!44'474G4W4g4w444444444]A 44'474qAF4V4q49 9A 9B 9I 901%#"&'#7&&'#&&&&546667733273#'&&'&&'32667766773&&#";?fG6a-0b:CbU5Q6N|/^-$.^2.bYEX/>Y8C+/5+Cи/AIYqA!(8HXhx]A (8q5,и,/EиF01!57665&&&&5466632#'&&'&&#"4&''5!#'&&#!326573#'4&##!26773Ech5C{h =?D)PF2DuV1"A_<EsP DD=G9 N [UgM  y;n`PiG( 9m []B6O9P/Q/P и /QCܸи/C!и!/ &A &&&&6&F&]AU&e&]C,C1EX/ >YEX/ >YEX/>Y7?+!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q?-и-/2901%#"&&&&&546632#'&&'&&&&#"665#573666632#&&#"6666767736?fGgmJ&]-TW_8o #0<"^wD o?/6:7<'%M'2$*l/7b^i  N=3:51#2-[  9- <+1+A &6F]AUe]1иии1/EX/ >YEX&/& >Y901#5&&&&54666753#'&&'&&&&#32666766773,SxMGwV09[w@aÅEKwa(LPW3h !-7 3%(et_kY"}|p α  {  P5D+AZj]A )9I]EX(/( >YEX/// >YEX/>YA!'7GWgw]A '7qAFVq/AIYqA!(8HXhx]A (8q01#"&&&'33266654&&&#"#666632h1\aj?{! '4B&iLGy$<,/yFpNsßyS*i B LߓU  L7bP5D+AZj]A )9I]EX*/* >YEX1/1 >YEX/>YA!'7GWgw]A '7qAFVq1!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q01#"&&&'33266654&&&#"#666632*SysNpFy/,<$yGLi&B4' !{?ja\1 h^b7L  U㏓ߖL B iH/;% +AZ j ]A  ) 9 I ]%1EX / >YEX*/*>YA!'7GWgw]A '7qAFVq AIYqA!(8HXhx]A (8q0133266654&&&#"#5666632#"&&&'Hn)?#_i7;hR-L( s4WOK)֚UMً?u\; 8ldfi5180KrfWH/; #+AZ#j#]A ##)#9#I#] 1EX/ >YEX/>YA!'7GWgw]A '7qAFVq(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01666632#"&&&'533266654&&&#"#H;\u?ٔMUւ)KOW4s (L-Rh;7i_#?)nWfrK0815ifdl8 P5D+AZj]A )9I]EX*/* >YEX1/1 >YEX/>YA!'7GWgw]A '7qAFVq1!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q01#"&&&'33266654&&&#"#666632*SysNpFy/+<$yGLi&B5' !{?ja\1 h^b7L  U㏔ߖK A iP7#) +)&EX/ >YEX/>Y'(+!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q.A!..'.7.G.W.g.w.........]A ..'.7.qAF.V.q01%#"&&&&&546$32#'&&'&&&&#"!!3267676773:B9NuşwQ(e/[ai=s )8G+eS9Ps)B$/o'9dZi Ů D΋_דLP7#+EX3/3 >YEX/>Y+A!'7GWgw]A '7qAFVq3#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q01#"&'&'3326667!5!&&&&#"#666632(QwuN9B:n0#A*sP9Se+G8) s=ia[/e[d9CL׋_ΉD ; iP!"BPUa<+AZ<j<]A <<)<9<I<]<и/EXQ/Q >YEX/>Y7 +0%+A!'7GWgw]A '7qAFVq 79QAAIAYAqA!AA(A8AHAXAhAxAAAAAAAAA]A AA(A8Aq01#"&'&'3326667#"&&&#"#666632326767&&&&#"#666632(QwuN9B:n0#A*sQ @ .E?E.#+ r+@S1):-$&,7 Re+G8) s=ia[/e[d9CL΂")"0R># ÄC ; iFNFN56/7//ܹ+и6 и / A   & 6 F ]AU e ]+к /9EX./. >YEX/>YEX/>Y,%+A!'7GWgw]A '7qAFVq901&&&&#"3266675#"&&&5466632#5%3 )/3L|W/(LnG:60#KOS-g`-@Ą85+ RXs ;k]Th:  m1$YWhŘ\ wDOP71 2/3/+ܹ'и2и/ A   & 6 F ]AU e ]'к+9*/EX!/! >Y+!AIYqA!(8HXhx]A (8qи/901&&&&#"32675#"&&&54666325#573 1P92I.(F-e;C`?*TV$"d3 9##A[73T>"qB 05Ui4>v[7(0 /y"MwFNN"F N"FN"*FhN"EwFN"HwF3"J18F+NK> 7+F+*+FBA   & 6 F ]AU e ]иB,к-F9MEXE/E >YEX/>YEX+/+>YEX2/2>YC<+2A!'7GWgw]A '7qAFVq-2901&&&&#"326667#"&&&546767666655#5#"&&&5466632#5%3 )/3L|W/(LnG:60BDsZ0I2'!#KOS-g`-@Ą85+ RXs ;k]Th:  8wc@'1") 8W>m1$YWhŘ\ wDO ?+ ии7и<иAEX;/; >YEX2/2 >YEX/>YEX%/%>YA!'7GWgw]A '7qAFVqܸ2AIYqA!(8HXhx]A (8qк %9*и,и29ܸ=01!326667&&&&#"!!5#"&&&'#53666632#5%33 -KhA:60 )/3GtU5X#KOS-e`0FL Lw85+ RK|Y2   3]QfPm1$UVf[~J wDOFfF=͸>/?/ܹ2и>'и'/ A   & 6 F ]AU e ]2к'925и:EX9/9 >YEX,/, >YEX/>YEX"/">Y74+,AIYqA!(8HXhx]A (8q"A!'7GWgw]A '7qAFVq4;й"92и,3=01&&&&#"326667!5#"&&&54666325!5!5#5%33 )/3L|W/(LnG:60X#KOS-g`-@Ą85+ )Rs ;k]Th:  1Pm1$YWhŘ\ wfDOfFAܸB/C/ܸи6иB+и+/A &6F]AUe]6 к!+969и>EX=/= >YEX0/0 >YEX&/&>Y+;8+0 AI Y qA!  ( 8 H X h x ]A   ( 8 q&A!'7GWgw]A '7qAFVq8?й !&96и07A015!&&&&#"326667!5#"&&&54666325!5!5#5%33 )/3L|W/(LnG:60X#KOS-g`-@Ą85+ )Rggm ;k]Th:  1Pm1$YWhŘ\ wfDOfFCXY/Z/ܹYи/#и&и&/<иYEX/ >YEX / >YEX/>Y63+>+3ии/SA!SS'S7SGSWSgSwSSSSSSSSS]A SS'S7SqAFSVSqS93(-к.99IAIIYIqA!II(I8IHIXIhIxIIIIIIIII]A II(I8Iq01#"'!5#"&&&54666325&'&#"#6666325#5%3326667&&&&#"326667 (:N2 X#KOS-g`-@Ą85+ !$R ';N2 R!% )/3L|W/(LnG:60 -R=%ZPm1$YWhŘ\ $-R>$KDO$j ;k]Th:  F7DE/F/ܹ;иE0и0/ A   & 6 F ]AU e ];%к&09EX@/@ >YEX5/5 >YEX$/$>YEX+/+>Y5AIYqA!(8HXhx]A (8q+A!'7GWgw]A '7qAFVq&+901&&&&#"3267'!5#"&&&54666325466632 (03L{W0(LnG>o&)$%X#IOU-ga.Ań73+ +Y]0H0s ;k]Tf:+", *IrUHNm1$YWhŘ\ ^[sB#.F+7DE/F/9ܹ5иE*и*/ A   & 6 F ]AU e ]5к *99EX8/8 >YEX/// >YEX/>YEX%/%>Y/AIYqA!(8HXhx]A (8q%A!'7GWgw]A '7qAFVq %9/601&&&&#"326667#"&&&55#"&&&5466632#5%37 )/3L|W/(LnG:60+0H0]Y,#KOS-g`-@Ą85+ R&$s ;k]Th:  /"Ar[1$YWhŘ\ wDOUrI* +F+7UV/W/*ܹиVKиK/ A   & 6 F ]AU e ]@кAK*9EX/ >YEXP/P >YEX;/;>YEXF/F>YPAIYqA!(8HXhx]A (8qFA!'7GWgw]A '7qAFVqAF901&&&&#"326667466632'7#"&&&55#"&&&5466632 )/3L|W/(LnG:60+Y]0H0$%"0H0]Y,#KOS-g`-@Ą85+ s ;k]Th:  [sB#.", CucZrG' +"/"Ar[1$YWhŘ\ F/4IY ?+*&+J+&*99&5A ??&?6?F?]AU?e?]AJJ]A JJ)J9JIJYJiJyJJJJJJ ]*P /EX)/) >YEX / >YEX/>YEX/>YUA!UU'U7UGUWUgUwUUUUUUUUU]A UU'U7UqAFUVUqMܺUM9U9 'ܸM0+M09 :AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:q01%#"&''66667#"&&&5466632#5%3766632&&&&#"326667%4&#"32666/1Qj9Vu5-&R+[0ga.Ań83+ R013(<' (/2L|X0)LoG%90+(00X* -#6*D`=5;'SRO"::7YWhŘ\ wDOo  2?k ;k]Th:  /)"E8$.;FN<=/>/<ܹ1и=&и&/ A   & 6 F ]AU e ]1к&<9EX;/; >YEX+/+ >YEX/>YEX!/!>Y+AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq!9;401&&&&#"326667!5#"&&&54666324&#!"#! )/3L|W/(LnG:60X#KOS-g`-@Ą85+  qs ;k]Th:  7Pm1$YWhŘ\   ?F*?R5+I+@+иI к!9+A 55&565F5]AU5e5]AZ@j@]A @@)@9@I@]EX/ >YEX/ >YEX&/& >YEX / >YEX/>Y 9ܸ&CAICYCqA!CC(C8CHCXChCxCCCCCCCCC]A CC(C8Cq!&C9 IKиK/MиN01#!5#"&&&5466632#5%3666632%&&&&#"3266674&#"3332666Dߚ#KOS-g`-@Ą85+ R:KV-eh4 )/3L|W/(LnG:60./-![b4tŒRm1$YWhŘ\ wDOL ;k]Th:  : *`F"]F"#]F1=e>/?/ܹ>!и!/ A   & 6 F ]AU e ]к!9+и0EX/// >YEX+/+ >YEX1/1 >YEX/>YEX/>Y-&++AIYqA!(8HXhx]A (8q/9/9/9401&&&&#"32675#"&&&5466632#5%3!!2666773 (/2L|X0)LoG>k(^#JNS-ga.Ań83+ RI ns ;k]Th:-m1$YWhŘ\ wDOR FH #ZԻ =+!+$+A   & 6 F ]AU e ]AZj]A )9I]=$92к3=$9Gи!LкP=$9$\-/EXK/K >YEXG/G >YEXM/M >YEX8/8>YEX)/)>YEX1/1>Y+IB+GAIYqA!(8HXhx]A (8q8V"V9#-K939PиQ01&&&&#"3267%4&#"32666###&67!5#"&&&5466632#5%3!3666632 (/2L|X0)LoG>k()#:/$ J-D.^-J`2t X #JNS-ga.Ań83+ RI͞6Kb?6(s ;k]Th:-N #=R..<9bH)H4Hк?I9SиXк\I9bEXW/W >YEXN/N >YEXS/S >YEXY/Y >YEX/>YEX1/1>YEX=/=>YEX/>YEXD/D>Y\6+NAIYqA!(8HXhx]A (8qDA!'7GWgw]A '7qAFVqY\ܸD%,A!,,',7,G,W,g,w,,,,,,,,,]A ,,',7,qAF,V,q?D9NU01&&&&#"3267#"&&&54666323266654&&&#"#5#"&&&5466632#5%3!2 (/2L|X0)LoG>k(Lohj7. 'B(V2HnK&$?V1!HFB8* D#JNS-ga.Ań83+ R}r^sAs ;k]Th:-q ]P-DQ%+# Jr>LrK&!6DFBm1$YWhŘ\ wDOD?lF64I? ++- +5A ??&?6?F?]AU?e?]-KEX/ >YEX/ >YEX/>YEX0/0>Y&$+ܸ0A!'7GWgw]A '7qAFVq%ܸ(и$)и:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:q01%#"&&&5466632#5%3326554&''5!#"&&&&&&&#"326667"#RWZ-g`-@Ą85+ RJONE``UmF)' )/3L|W/(LnG:60w4(YWhŘ\ wDO:clla PP $6 ;k]Th:  FM :+0+AZj]A )9I]A   & 6 F ]AU e ]D: 9D/'?:090OEXI/I >YEX5/5>YA!'7GWgw]A '7qAFVqIA]A(8HXhx ]I"AI"Y"qA!""("8"H"X"h"x"""""""""]A ""("8"q?5I9014&&&'32666#"&&&''&&#"#"&&&546667&&&&5466632!7K*4kX8'CZ3@bB!.+(W1<3!8\v{v\8QRZOKzQ;sZ87[xBgg4>k_S%HdTVX,7c+# '#4#"CFMZh}Yxy=0jx_rT-RQS.CiI&-ES2M :+0+AZj]A )9I]A   & 6 F ]AU e ]D: 9D/'?:090O5+I"+I014&&&'32666#"&&&''&&#"#"&&&546667&&&&5466632$1"E:$,:")@+^ 9 '!$KZ5HmH%?eH9YD3202(?,)2F AB/C/ܹAZj]A )9I]B!и!/ A   & 6 F ]AU e ]+!91и1/EX7/7 >YEX&/& >YEX/>Y&AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq+&9014&'&'&&#"326667#"&&&54666323&&&&''7''577D*&7QxN&BiKKjBGimEKj/)32'-H/ALN@)|?  BrYQyINz֘RNrrK JD2QR:KRLi2*?_@/A/@и/Aܺ996A 66&666F6]AU6e6]!и!/#9+AZ+j+]A ++)+9+I+])и)/'/)/EX/ >Y; +'91AI1Y1qA!11(181H1X1h1x111111111]A 11(181q19#'901#"&&&5466632&&&&''7''5774&'&&#"32666 *13*.SsEGtR-1WuE !!/p`+95M3+D01E+ .?NYa3O[1/TsEDqQ--(]1U1"-ZP2Kl&'E]51]H,/L_BB^ %&/'/ ܹAZj]A )9I]&и/EX / >YEX/>Y и/и/и/и/014&&&##766667#!576654&''5!2ZKyvK"Hq́llr?fAޢZ^4XDXQ0pI %y&/'/ ܹAZj]A )9I]&и/+!+и/и/014&&&##766667#!576654&''5!21ZOelL~X1/IgTFFWiJ`U&='Ta6g\M95  40e9N #$/%/ ܹAZj]A )9I]$и/EX/ >YEX/>Yи/и/и/и/014&&&##326667#!576654&''5!2:l`tz\l;@ܜ/] ]^o`+-boaRP  P9xBBS"cBB&"@B B^"cBB^"*[BhB^"EBB^"HB^-Ѹ.///.и// ܸи AZj]A )9I]$'EX/ >YEX/>Y+"и#и$и&и(и(/)0134&''5!2#!57665#%4&&&##!!76666lr"Hq́l=KyDvKXQZ^4X?hAB^-Ѹ.///.и// ܸи AZj]A )9I]$'EX/ >YEX/>Y+"и#и$и&и(и(/)0134&''5!2#!57665#%4&&&##!!76666lr"Hq́l=KyDvKXQZ^4X?hAB^-Ѹ.///.и// ܸи AZj]A )9I]$'EX/ >YEX/>Y+"и#и$и&и(и(/)0134&''5!2#!57665#%4&&&##!!76666lr"Hq́l=KyDvKXQZ^4X?hAN+ٸ,/-/,и/-ܹAZj]A )9I] и EX&/& >YEX/>Y+& и/и/ии $и$/%и%/013266654&&&##3%#!57665#534&''5!2mz\l;:l`t@ܜ/] ]^-bmo`+^&aRP U^> P9x^;#YEX4/4>Y+4' ии и/и/'A]A(8HXhx ]6и6/7и7/01%7666654&&&##!!!534&##"#"&&&5463!2#!57665;vˆKKyIwN63VA%( r"Iq΀jbAޞ?hh %/rkQZ^4X ^ 34/5/ ܹAZj]A )9I]4и/EX./. >YEX/>Y.и/и/и/и/.&A&&]A&&(&8&H&X&h&x&&&&&& ]014&&&##766667#!576654&##"#"&&&5463!2KyvˆK"Iq΀jN63VA%( r?fAޢZ^4X H %/rkQP^;\YEX/>Y +и/и/A!'7GWgw]A '7qAFVqи/и/ #и#/ %и%/0)2и2/3и:и:/;и;/01&'&&#"326767!"&&&54666324&#!"#!..b^.0ej%wR_u3ql}!FnNNj@b"Uqb^- ?X B^"]B"#]%B ^"=B S"#=Ps^455/6/5и/A &6F]AUe]6*ܹ EX///>Y+/A!'7GWgw]A '7qAFVqи/ и / и / и /и/и/ -и-/.и./01326767&'&&#"4666324&''5!!"&&&5Nl%.Rr4l}؈=KvQ*mp9 XX X1eP^N,+2 +I<+A &6F]AUe] %иIPEX/>YEXL/L>Y +A!'7GWgw]A '7qAFVq и / и / #и#/ %и%/701326667&'&&#"#"&&&54666324&''5!32666554&''5!#"&5!GoN-,(.?SrCRr4l6M/)E2uj^KyU- l+*4ilmp9 XX Me>>eMcZZm2 /EX/>Y01!m9X\=6sBBB^4?ջ  +5+&+AZ&j&]A &&)&9&I&] ,AZ5j5]A 55)595I5] :EX/ >YEX/>Y;+   и!и+и,01#!576654&''5!2##3266654&&&##63324&&&'6666B"Hq́llrAmNvKKy Va5:V96U; Z^4XDXQgj6A?>mn?oW8r3WxON^ 3Ӹ4/!и!/A]A?]A@]A`]!A?]A]A@]A`],5EX&/& >YEX/>Y&  иии 01#"33!266654&&&##"&&&&&546$3!2#yŋKKvuvKKy`͞qH"rr"Hq΀?ᡞAA?fb4^YQQZ^4ON^5Q\g]K+R<+46+.]++AZj]A )9I]4%и6DA KK&K6KFK]AUKeK]A RR&R6RFR]AUReR]6WAZ]j]]A ]])]9]I]]4bиiEX / >YEX/>Yc4+ $47и$EиFиPиQиcW01!"&&&&&546$3!2#'266654&&&##6332##'#"&&&546663325#"334&&&'6666͞qH"rr"Hq΀+vKKy Va5AmNNmA5aV yŋKKv ;U69W9:V96U; 4^YQQZ^4bA?>mXgj66jgXm>?ᡞATZy+gM+1+A&6FVfv ]A]AZMjM]A MM)M9MIM]MAZj]A )9I]"Mg99M9_Mg9by19qy19y19y191^/>/EX4/4>YEXl/l>YEXt/t>YX+,+и/tA'7GWgw ]A]">^9t~A~~'~7~G~W~g~w~~~~~~ ]A~~]9t~9HиX[и[/_>^9bX9qt~9t~9>^901"3267&&3266654&&&#"66667666632#"&&&'3266654&&&'%6632667#"&&&'#"&&&5466632667667&&#"89 1?2"/.##./"&  &;R8%F8"sd2-! B)A '*.SpC/H3-FGX%<[%Eq0>kN,4ny%<3)(]D3+2G-$<.# G+ 6lcX"L='UD&5j)  ))  )=yy|A%8'*?)U_ +JP^?@s? /%Hf-[QB=GN@^/P4@ZtFwŠL +<4'9%%?-LNF~7"/F"._//0/ܸи/ и /и/ -и-/.EX/ >YEX/>Y.+A!'7GWgw]A '7qAFVq"9(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01%#"&&&5466632!3266674&&&#"!+]cf4]OHi_`0h!Nc,VSL#1K33XC)f."=}xŋM@r[NzL$-3XB&)KjB2%d".ݸ//0/ܸи/ и /и/ -и-/.EX/>Y(+.+A!'7GWgw]A '7qAFVq01#"&&&5466632!3266674&&&#"!d]?P2V@861 0"!9+%q &KsMHuS-&B]7 /]K. 4&,?(7ho &Ѹ'/(/'и/и/(ܹ  EX/ >Y# + +AIYqA!(8HXhx]A (8q014&&&#"!#"&&&5466632!32671!B[%7D=pV3/SsE=]>P3UA9l-4'\P ,%KrMHvS-%C]7!0]I..ywF""HDFm"H#rF{"H7Fm"H#7{"H7F"H#F"HF"H#XDF"HaFh"H#EDF"HF"HF"F"HF"HF2"H-FO"H#-rrFO"H#-rF"BF"HF "HXDF "HFq"HDFh"HEDF3JV#1#++-0и0/-;иKиK/1UиU/EX(/( >YEX/>YEX/>YEX/>YEXA/A>YF+V0+A!'7GWgw]A '7qAFVq(9A6A!66'676G6W6g6w666666666]A 66'676qAF6V6q;(9(PAIPYPqA!PP(P8PHPXPhPxPPPPPPPPP]A PP(P8Pq01#"&'&'53266654&#"5&'&&&5466632!326667##66324&&&#"!$?W45+/%6*1/VOHi_`0h!Nc,VSL#+]cf4 5( 1K33XC)0H2P  && ~xËK?o[N|M$-}."h#73W@%'JiBF3JVl91#++-0и0/-;иKиK/1UиU/EX(/( >YEX/>YEX/>YEX/>YEXA/A>YF+g\+V0+A!'7GWgw]A '7qAFVq(9A6A!66'676G6W6g6w666666666]A 66'676qAF6V6q;(9(PAIPYPqA!PP(P8PHPXPhPxPPPPPPPPP]A PP(P8Pq\lܸa01#"&'&'53266654&#"5&'&&&5466632!326667##66324&&&#"!#"&&&53326667$?W45+/%6*1/VOHi_`0h!Nc,VSL#+]cf4 5( 1K33XC)o&MrLMrL&P ,>H&&H<, 0H2P  && ~xËK?o[N|M$-}."h#73W@%'JiB%6mW66Wm6,?((?,Fy=I3%++/I+/AZj]A )9I]9/2и2/3HиH//KEX*/* >YEX/>YEX / >Y +I2+8A!88'878G8W8g8w888888888]A 88'878qAF8V8q=*9*CAICYCqA!CC(C8CHCXChCxCCCCCCCCC]A CC(C8Cq01%326767#"&546677#"&&&5466632!3266674&&&#"!+/R-/?8  1! =`m&6]OHi_`0h!Nc,VSL#1K33XC)f (47A32  R KJ+QD?~xËK?o[N|M$-3W@%'JiBF-7C+/+C+и/'иBиB/EEX/ >YEX/>YC+'9=AI=Y=qA!==(=8=H=X=h=x=========]A ==(=8=q01#"&55&'&&&5466632!326667374&&&#"! 8N-=9VOHi_`0h!Nc,VSL#+]c3=81K33XC).%xv ~xËK?o[N|M$-}." B6 -3W@%'JiBF-4@!+@+ @9 и /+и!?и?/BEX/ >YEX/>YEX/>Y@ +&A!&&'&7&G&W&g&w&&&&&&&&&]A &&'&7&qAF&V&q &9+9:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:q01#"&5#"&&&5466632!326667374&&&#"! 8N-)+1f4]OHi_`0h!Nc,VSL#=81K33XC).%xv?~xËK?o[N|M$--B6 -3W@%'JiBFX}0;AG]8+8@и@///EX / >YEX,/,>YG+,!A!!!'!7!G!W!g!w!!!!!!!!!]A !!'!7!qAF!V!q&9 3AI3Y3qA!33(383H3X3h3x333333333]A 33(383qG8к>9?кE901'7&'&&54666327!326667#"'&'&#"37&#%4''3H|AOHi_HdJf00'Bc,VSL#+]cf4]V'#F%33XC)  Wf+?xËK )7[&$-}."S'JiB =4 N3+ #6BC/D/(ܸиC и / и /(+и+/ ,AиA/(BEX#/# >YEX/>Y +  +и1A!11'171G1W1g1w111111111]A 11'171qAF1V1q6#9#<AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<qA01%#"&&&5467"&&&54666323666632!3266674&&&#"!+]cf4]O:bG( (%AV48TxX_`0h!Nc,VSL#1K33XC)f."?~  5R9/% Yd6?o[N|M$-3W@%'JiB#yT`36+L+2`+AZj]A )9I]L9и/25и5/2@и6_и_/2bEX-/- >YO+!+(5и-ZAIZYZqA!ZZ(Z8ZHZXZhZxZZZZZZZZZ]A ZZ(Z8Zq(_01#"&5466767&'&&&5467"&&&54666323666632!3266673267674&&&#"!! =`m+FAVO:bG( (%AV48TxX_`0h!Nc,VSL#+]c3 !?8  1K33XC) KJ+L? ~  5R9/% Yd6?o[N|M$-}." 0: 32  3W@%'JiBF+F+F".c//0/ܸ/ и / и / и #.и./EX/ >YEX/>Y #+AIYqA!(8HXhx]A (8q9)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q01#"&&&5547!4&&&#"5666632326667Hh_`0!Nc,VRM"+]bf5]Ol2J33XD)xËK?p[N{M$-}."?~-3W@%'JiB2%d".//0/ܸ/ и / и / и #.и./EX/>Y+ #+)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q01#"&&&5547!4&&&#"5666632326667d/SsD=^> 2VA852=@B"=pU3S 0!"9,HuS-&C\7 /]J.K &Ks4&,?(7ho (Ѹ)/*/)и/* ܹ и / EX$/$ >Y++$AIYqA!(8HXhx]A (8q013266677#"&&&55!4&&&#"566321!!:,/SsD>\?2V@9m-8D=oV35'-?(VHuS-&C]6#/]J.0L *%LrF"+BF-:F;"+&++и/"%и%/"0и&FиF/HEX6/6 >YEX/>YEX/>Y+%и6+AI+Y+qA!++(+8+H+X+h+x+++++++++]A ++(+8+q069;иAA!AA'A7AGAWAgAwAAAAAAAAA]A AA'A7AqAFAVAq01337#"&5##"&&&5547!4&&&#"5666632326667=8 8N-m $h_`0!Nc,VRM"+]bf5]Ol2J33XD)KB6 -".%xvM&$aK?p[N{M$-}."?~-3W@%'JiBF J4++@+AZj]A )9I]4)и)/@LEX8/8 >YEX"/">YE+"89" A!  ' 7 G W g w ]A   ' 7 qAF V q"898/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q4"89J"89014&'32666#"&&&55#"&&&&&5&&&&#"566327326667 -:Q3Me<! :0,sHhNsT6 f4J_<,VRM"ViYEX/>Y#+ 9A!'7GWgw]A '7qAFVq(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01#"&'532666665!&55466632'&&&&#"S]iO+ada,5Q<' \FwX_}I -@P+'M@2 xEMY}/D,%AXdk4?K@kN,(LmD2xp"-+EX/ >Y+#+(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01#"&'532666665!&55466632'&&&&#"x6YsYEX/>Y45+ 549!A!!]A!!(!8!H!X!h!x!!!!!! ],AI,Y,qA!,,(,8,H,X,h,x,,,,,,,,,]A ,,(,8,q58и8/5;иCA!CC'C7CGCWCgCwCCCCCCCCC]A CC'C7CqAFCVCqH901%#"&546667&&&&5466632#"&'&'5&&&&#"3"&##""326667R'Z]\*)DX.0H09aGQ`6'(  - &D4wm  (K;#oq2a\S$#8'5P7 7BG :cH(5M1,!  .F-mhX #@4^m/=#1-oE=+A ==&=6=F=]AU=e=]=.EX/ >Y@+5ܺ 59)AI)Y)qA!))()8)H)X)h)x)))))))))]A ))()8)q5801# 546667&&&&5466632#"&'&'5&&&&#"3"&##""326667-3}7-: . %>S-5Y?#    ,"NE  1'IK ?:6\*00" !(+";+. V (B?5'7B%F-Z"I+Q/+Q /Q9Q9A II&I6IFI]AUIeI]IQ%и%/:Q\EX / >YEX/>YEX/>Y=>+LA!LL'L7LGLWLgLwLLLLLLLLL]A LL'L7LqAFLVLq L9>=9 *A**]A**(*8*H*X*h*x****** ] 5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q>AиA/>DкQ 901#"&5#"&546667&&&&5466632#"&'&'5&&&&#"3"&##""32666737 8N-$&.\*)DX.0H09aGQ`6'(  - &D4wm  (K;#oq2a\S$=8.%xv5P7 7BG :cH(5M1,!  .F-mhX #@4^m/=#B6 -1=H*5+? +?5и/AZ j ]A  ) 9 I ]D9?JEX:/: >YEX/>Y+ :9A!'7GWgw]A '7qAFVqии/:%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%q:0A00]A00(080H0X0h0x000000 ]D901#"&&&'532654&&&#&##"#52654&&&#"#"&&&5466632=*]]Z'$S\b2pq$:K(  my5E& -  ('6`QFa9/H0.WC)'8#w#=/m^4@# Xhm-F.  !,1M5(Hc: GB7 7P% pH? +?AZ j ]A  ) 9 I ]?JEX:/: >Y+ 9:%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%qD901#"&&&'532654&&&#&##"#52654&&&#"#"&&&5466632 =<;6<@ II&0  GN"-   #>W5-T?%/9+Y\ !H%A8 &5>B* W /+;#+(! !01-=Z +Q2+Q#AZ2j2]A 22)292I2]=GиG/V9Q\EXL/L >YEX/>YEX/>Y/.+ A!  ' 7 G W g w ]A   ' 7 qAF V q 9L9.(и.*и*/L7AI7Y7qA!77(787H7X7h7x777777777]A 77(787qLBABB]ABB(B8BHBXBhBxBBBBBB ]V./901#"&'&'37#"&532654&&&#&##"#52654&&&#"#"&&&5466632=*]/%$=8 8N-$S\b2pq$:K(  my5E& -  ('6`QFa9/H0.WC)B6 -".%xv#=/m^4@# Xhm-F.  !,1M5(Hc: GB7 7PF`>I++V +AZj]A )9I]I!и!/*4иVbEXN/N >YEX/>Y[+10+NDADD]ADD(D8DHDXDhDxDDDDDD ] ND9019"N9'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'qN9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q`ND901#"&&&55#"&&&'532654&&&##52654&&&#"#"&&&54666327326667 ;0-l0I0.XD**]]Y'$S\a2qn#;K(?kx3E% - ('5`Q6cTB;   E:&-8L GB7 7Q5'8#w#=/m^5@# Xgn-F.   !,1M5*<%f ,"+8A۸B/C/ܸи/9AZ9j9]A 99)999I9] и /Bи/#A#9EX/ >YEX/>Y32+ 239A'7GWgw ]A](A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q>AI>Y>qA!>>(>8>H>X>h>x>>>>>>>>>]A >>(>8>qA9016632#"&&&54666323266654&&�&&&#"hIE[b45K.as?iFQl?')8 *1&K;%%B[6@ =/ 4B"UG36#EeB.TB,"xW;eL+5M1,!2I-6Q4X.D-'@-?< pA9+и/AZ9j9]A 99)999I9]9-и-/CEX/ >Y4+ 49(>AI>Y>qA!>>(>8>H>X>h>x>>>>>>>>>]A >>(>8>q016632#"&&&54666323266654&&�&&&#"I/g-;]@""1?K)EW-5]F)  $ 0'+;#)(!+8_.1 )='2(H5#=- .  W +!0 5)'&$F9&++AZj]A )9I]A &6F]AUe]0 +&9;EX5/5 >YEX#/#>Y +5AIYqA!(8HXhx]A (8q#A!'7GWgw]A '7qAFVq+ 9014&&&#"3#"326667#"&546667&&&&54666323<_t8 @3 xl@(K;#%>Q,8t_<Avf)CX/0H0YEX!/!>Y++AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq59014&&&##52654&&&#"326667#"&&&5466632$:K(@kx3@ 8t_<<_t8,Q>%fvAAvfLf;0I1/XD)5@# Xgn-F./ello95K,[hiL(Hc: GB7 7Q2lp9A&+0 +0AZ j ]A  ) 9 I ]A&6FVfv ]A]5&90;EX+/+ >Y!++AIYqA!(8HXhx]A (8q!5!9014&&&##52654&&&#"326667#"&&&5466632&1)EN!*%K>''>K%5(BmL++LmB2XB'0 9, '5>B*=^@AcB" -Y\7Zu??mP-+;#+(! !1FFLg7+A 77&767F7]AU7e7]7 $EX/ >YEXJ/J>Y'2+2AIYqA!(8HXhx]A (8q'*и*/J:A!::':7:G:W:g:w:::::::::]A ::':7:qAF:V:q0146667&&&&5466632#'&&'&&&&#"332727&'&&#"32666766773#"&F'Gd=HY1:bH(PU]4b(4)I7 wj  %OA*~z8/# b2TMJ(8X>#8BG"9[A#w  +D1`Zj (H:dn  s FFL{C)+CAZ)j)]A ))))9)I)]CNEX>/> >YEX/>Y&+A!'7GWgw]A '7qAFVq и /&#и#/>.AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.qH01#"&&&'5332654&&&#"53332654&&&#"#5666632F(JMT2b #/8z~*AO%! jw 7I)4(b4]UP(Hb:1YH=dG' s  nd:H( jZ`1D+  w#A[9"GB8#>XFF"@BpFyFg_+AZj]A )9I]_M _3и3/R_9 WZ_9EXH/H >YEX / >YEXZ/Z>Yb+0%+ A!'7GWgw]A '7qAFVq%*и*/0-и-/H8AI8Y8qA!88(888H8X8h8x888888888]A 88(888q%R0132654&&&'"&&&'5332654&&&#"53332654&&&#"#5666632#"&'&'  8?&GKQ0b #/8z~*AO%! jw 7I)4(b4]UP(Hb:1YH=dG'( m`= !  23/)$  s  nd:H( jZ`1D+  w#A[9"GB8#>X8.8A$JK VC9++9 AZj]A )9I]E/EX4/4 >YEX / >Y+и/и/4$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q>01%#4&&&#4&&&#"53332654&&&#"#5666632Fhi5WB*AO%! jw 7I)4(b4]UP(Hb:1YH=dG'u qXzK":H( jZ`1D+  w#A[9"GB8#>X8VSJ0++A JJ&J6JFJ]AUJeJ]JUEXE/E >YEX/>Y "+A!'7GWgw]A '7qAFVq"'и'/ *и*/ ,и,/E5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q"O01326554&''5!#"&&&54&&&#"53332654&&&#"#5666632CCOM<``$O{WeK*AO%! jw 7I)4(b4]UP(Hb:1YH=cF&clla PP NyS+)NoF:H( jZ`1D+  w#A[9"GB8$=RBh^)i"+"EX / >YEX/>Y +  ии"и#013576654&''5!#'&&#!!26573#'4&#!!26773Bjj{B5hh  %nXDXϨ 7  0I)\"+"EX'/' >Y"+ + +"и/ и /01576654&''5!#'&&#!326573#'4&##!267730EEP DD QG5  4e TUz5*i#+#EX / >YEX/>Y!+  ии#и$013576654&''5!#'&#!3266673#&&&&##!267735\\1t dd  mP  P** ** Bhm"E/Bhm"(Bh"(# Bh "(uBh"(#/ Bh "(uBh"(# Bhp"(Bh ,"(#X Bh["(BhhS"(#EBh("($Bh("($Bh9"E Q4BhS"(Bh"(Bh"(-Bh"(#-Bh"(#-/Bh!"EBBh&"(Bh"(XB h^"(Bqh^"(Bhh^"(EB3h^P+@#++@1EX)/) >YEX/>YEX/>YEX/>YEXG/G>YL+3>+A!'7GWgw]A '7qAFVq)'0и1и@иA01#"&'&'53266654&#"5!576654&''5!#'&&#!!26573#'4&#!!26773!6632A$?W45+/%6*jj{D3hh  %n 5(0H2P  &&XDXϨ 7  #7B3h(PfM@#++@1иfиf/EX)/) >YEX/>YEX/>YEX/>YEXG/G>YL+aV+3>+A!'7GWgw]A '7qAFVq)'0и1и@иAиVfܸ[01#"&'&'53266654&#"5!576654&''5!#'&&#!!26573#'4&#!!26773!6632#"&&&53326667A$?W45+/%6*jj{D3hh  %n 5(E&MrLMrL&P ,>H&&H<, 0H2P  &&XDXϨ 7  #7 6mW66Wm6,?((?,Byh^G̻1+?+AZj]A )9I]1"и?'и'/?,и,/EX/ >YEX/>YEX8/8>YB+$/+!и"и1и201#"&5466767!576654&''5!#'&&#!!26573#'4&#!!26773#326767! =`m+3jj{D3hh  %n!?8   KJ+L?XDXϨ 7  0: 32  B-h^=,+5+,EX/ >YEX/>YEX / >YEX3/3>Y*+  ии ,и-01#"&55!576654&''5!#'&&#!!26573#'4&#!!26773!37 8N- jj{D3hh  %n =8.%xvXDXϨ 7  B6 - ^h,03û!+!-и!1 /*/EX / >YEX / >YEX/>YEX(/(>Y+ * 9!и"и-и/и0к1* 920135774&''5!73#'326573#'4&##!26773!'73!7#BTCjL^a<{6hh s %nv`^>Lz/W>>XqX9eel 7  :h3i4BC/D/C и /и/D$ܸ'и'/$)и)/ *$54$59*BиB/EX!/! >YEX/>Y +  )и/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q4!95и!;AI;Y;qA!;;(;8;H;X;h;x;;;;;;;;;]A ;;(;8;q01%#"&&5"&&&54666323366663 !32666754&&&#"5}FeVuH  (%AV36&pvFHn8efpB.XT8aQ?-)B.[:V9/% זQ N,I6?Ul=*F]gk0Sa5+K+/T+AZj]A )9I]K9'и'//2и2//4и4/?T/95aиa//cEX,/, >YEX/>YEX/>YEXG/G>YN++'4и:A!::':7:G:W:g:w:::::::::]A ::':7:qAF:V:q?G,9'Tи,ZAIZYZqA!ZZ(Z8ZHZXZhZxZZZZZZZZZ]A ZZ(Z8Zq01#"&5466767#"&&5"&&&54666323366663 !32666732676754&&&#",,)$O{&8 eVuH  (%AV36&pvFHn8efpB5}D#$*OI&.XT8aQ?-Nda7bQ [:V9/% זQ N,I6)B ?L*A@ ?Ul=*F]gk0Bh^)q+!и+EX/ >YEX / >Y!+  ии"и#01!33!!"#33!!"#hjjn%  hh3D{^XXV 3 ɍ 10I)d+!и+EX / >Y +"+!+"и/ и /01!533!#"#333!"#5EENGQ DD PI4 q 5zRUT2 ePkP 2m3/4/3и/4ܹ и /и/и/(9EX,/, >YEX/>Y+A!'7GWgw]A '7qAFVq,#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q(,901326666677#"&&&546767!4&&&#"56632=1]V8^L:)XۃLEuV8x{{;aN`8/?WpA,Jakm0lW E4S=ZT&NvP!"kBcP3TݻD +(+ 9A DD&D6DFD]AUDeD]D3VEX/ >YEX/>Y6?+?#A##]A##(#8#H#X#h#x###### ].AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q69и9/?<и!/ $EeBy;fNAtW3  !(PP9+A 99&969F9]AU9e9]9 $EX/ >YEX/ >YEXN/N>Y)4+4AIYqA!(8HXhx]A (8q),и,/).и./N>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>q0146667&&&&5466632#'&''&&&&#"332727&'&&#"32666766773# $P@kLYQ%H{Z2ektA{  &3@'3fS42VtC  (.o`A4]L&F:+ {>j`]2MyV1N[c0NY0( Ȼ   BdECeE#y;gQFvW1PPG-+GAZ-j-]A --)-9-I-]GREX;/; >YEXB/B >YEX/>Y(+A!'7GWgw]A '7qAFVq(%и%/B2AI2Y2qA!22(282H2X2h2x222222222]A 22(282qL01!"&&&'33266654&&&#"5333266654&&&#"#6666322]`j>{ +:F&L]4A`o.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@A1WvFQg;y#EeCEdB   8 (0YN0c[N1VyP!"oBPyj߻b+P6+AZj]A )9I]P!AZ6j6]A 66)696I6]Ub9Z]b9PlEXD/D >YEXK/K >YEX / >YEX]/]>Ye+1&+ A!'7GWgw]A '7qAFVq1.и./K;AI;Y;qA!;;(;8;H;X;h;x;;;;;;;;;]A ;;(;8;q&U0132654&'#"&&&'33266654&&&#"5333266654&&&#"#666632#"&'&'q  8?, 2]`j>{ +:F&L]4A`o.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@&m`= !  230NA1WvFQg;y#EeCEdB   8 (0YN0c[N1VyM.6?"JK d\E'/+AB+/AZj]A )9I]9AGA/EX#/# >YEX*/* >YEXE/E>Y+ и /*AIYqA!(8HXhx]A (8q4E@014&&&#"5333266654&&&#"#666632#4&#FA`o.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@/D1iQg;y#EeCEdB   8 (0YN0c[N1VyMHcA$dWt/+PC+A //&/6/F/]AU/e/]/9PYEX#/# >YEX*/* >YEXS/S>Y4+*AIYqA!(8HXhx]A (8qS>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>q014&&&#"5333266654&&&#"#6666323266654&''5!#"&&&C@_n.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@1A#)B.ujOX0lSoCy#EeCEdB   8 (0YN0c[N/XUSnA@iMZZ.b;3MEX/// >YEX/>Y+ии/"01&&&&&&'3#!57665#5746667666632!)/(+#yeO[c2+B-j)   ,JiHi!PPH%3QGC%:U8",- +G+и/#)/++и 01&&&&'3#!57665#574676632 &,$  NB VV'{B97X,?+\@L // +<^-EB+;"I|;-E3+,+и37иGEXA/A >YEX/>YEX-/->Y+-/и//0и401&&&&&&'3##"&&&5466672655!57665#5746667666632!)/(+#y-N8 6=veO[c2+B-j)   ,JiHi!vx%."- 6BPH%3QGC%:U8",WEX3/3 >YEX / >YR+#+JM+#ии/  ии/к 39M&01#"'!57665&'&#"#666632#5746667666632&&&&&&'3#326667 (:N2 ye!$R ';N2 O[c2+B-!)/(+#!%[-R=%PPN$-R>$ H%3QGC%:U8",)   ,JiHi$;z;AU+<+и7и7/?Bи<WEX:/: >YEX!/! >YEX/>YEX / >Y9+ и / иии/и?и?/@и!GAGG]AGG(G8GHGXGhGxGGGGGG ]Q01!57665!!57665#5746667666632&&&&&&'!73#"&&&5466632eyeO[c2+B-!)/(*!Tgg#.-""-.#P!PPH%3QGC%:U8",)   ,JiH'P-/""/."".;|;AB/C/<ܹB(и(/и/(,EX6/6 >YEX:/: >YEX/>YEX"/">Y+ и /!и$и%и%/)и%?и?/@01!57265#&&&&&&'3#!57665#5746667666632733mX)/(*!yeO[c2AQTmP  ,JiHi!PPH%3QGC%:U8) IP;^;^;^[o!++V+!%и:и<иQиY\иVqEXT/T >YEX*/* >YEXA/A >YEX/>YEX / >YEX/>YS+ и / иии/ии/иии/"иS;иYиY/ZиAaAaa]Aaa(a8aHaXahaxaaaaaa ]k01!57665!!57665!!57665#57466632'!466632'!73#"&&&5466632dyd#ye-cs+B-!+#-cr-B+!+"Tff#..""..#P!PP!PPH!``#,)  ,JiH``#,)  ,JiH'P-/""/."".;`;`;`[%0+"+V+и04и%Iи"KиV]EX9/9 >YEXP/P >YEXT/T >YEX/>YEX/>YEX*/*>Y+и/иии/#и(и(/)и,и-и-/1иJи-YиY/Z01!57665#'3#!57665!!57665#57466632'!46663273qlX+"yd#ye-cs+B-!+#-crBQRlP ,JiHi!PP!PPH!``#,)  ,JiH``+ KP;;;M߸N/O/ܸ иN)и)/)-иBиDEX2/2 >YEXI/I >YEX/>YEX#/#>Y +ии/и!и!/"и%и&и&/*и C01'3#!57665!!57665#57466632'!466632!+"yd#ye-cs+B-!+#-cr-B+j)  ,JiHi!PP!PPH!``#,)  ,JiH``#,;+i+6+(++6:и+Zи^к_69EXD/D >YEX:/: >YEX]/] >YEXd/d >YEX/>YEX"/">YEX0/0>YdAIYqA!(8HXhx]A (8q" $и$/%и)и*и%.и/и//2и2/3и*7и8и)\_d901#"&&&546663266654&#"!57665!!57665#5746667666632&&&&&&'!73666632JxP-='2*al:4T1b2yeO[c2+B-!)/(+#4T+^]W#CiI&!rk3&/3"%GgBag!^NN!PPH%3QGC%:U8",)   ,JiHf.$+QuK;,A+EX(/( >YEX/>Yии/01&&&&&&'!5766546667666632!)/(+#yeO[c2+B-j)   ,JiH5PPL3QGC%:U8",;N""3Z[+EX/ >YEX / >Y   ии/и/01'&&#!!576654&#'5! VE``'  PP  P3Z"!3 _ +/EX/ >YEX/>Yи и /и/01!576654&#'5!26773uVE``D Tw PP  P 3Zi+  + /EX/ >YEX/>Y ии/и/01'&&#!#4&&&##576654&#'5! ViDpU-``'  qXzK"P  PZ! + иEX/ >YEX/>Y+ ии/иии/01'&&#!3#!57665#534&#'5! VE``' d PP Pd; PZ! + иEX/ >YEX/>Y+ ии/иии/01'&&#!3#!57665#534&#'5! VE``' d PP Pd; PZ'++и$/EX/ >YEX / >Y%+ ии/и%и#и$01#4&&&##57665#534&#'5!#'&&#!3uViDpU-``'T  qXzK"P Pd; Pհ dZ'++и$/EX/ >YEX / >Y%+ ии/и%и#и$01#4&&&##57665#534&#'5!#'&&#!3uViDpU-``'T  qXzK"P Pd; Pհ d-Z3/++и/*EX"/" >YEX/>YEX/>Y+" )и*и+и-и2и3и3/01#"&&&5466672655!57665#534&#'5!#'&&#!3#-N8 6=``'T Vvx%."- 6BP Pd; Pհ d -Z3/++и/*EX"/" >YEX/>YEX/>Y+" )и*и+и-и2и3и3/01#"&&&5466672655!57665#534&#'5!#'&&#!3#-N8 6=``'T Vvx%."- 6BP Pd; Pհ d 3&")N2^)+иииEX!/! >Y++ииии!(и)01!!!!!57665#535#534&''5!#'&&#!ggl}yLTdsdtXXdsd}X7+^1i)+EX/// >YEX/>Y+/$-и-/.и./01'&&#!!26773#'&&#!#"&&&546667266654&''5!J;ff ?q^6K0""0?%} 3 Tbo;,6!0%BY4LX7 ^=+EX/ >YEX/ >Yи/01'&&#!!576654&''5!# Xmyy XX H X%9 J +EX/ >YEX/ >YEX/>Y01&&&&#!"3!5266654&&!&9T?'6(=J""I>(6M0)!;gL,/3#5$$5#+=&+[+EX/ >YEX / >Y  и и /и/01!576654&''5!#'&&#b5ccfs u  PP  P 7 m"|7o0 +/EX/ >Yи/01!576654&''5!26773myy "k XX H X7\ ^K+  + /EX/ >YEX/ >Yи/01'&&#!#4&##576654&''5!# XmiLyy X H X ^!o + иEX/ >YEX/ >Y+иии/01'&&#!!!!57665#534&''5!# X5myy f XX f X\ ^%y++и"/EX/ >YEX/ >Y#+и#и!и"01#4&##57665#534&''5!#'&&#!!miLyyj# X5 X f X f- ^3/++и/*EX$/$ >YEX"/" >YEX/>Y+" )и*и+и-01#"&&&5466672655!57665#534&''5!#'&&#!!!B-N8 6=]yyj# X5mvx%."- 6BX f X f 1o%\S B+)+)A   & 6 F ]AU e ]AZj]A )9I]RB 9R/&)9: JиJ/MB:9)^EXW/W >Y?+!.+WAIYqA!(8HXhx]A (8q.MиM/014&&&&&'326664&&&#"326667'#"&5467&&&&5467&&&&54666323-::58,+B-0F/I/9F / /Z0Ph7 KPN=&5]IwEH!#!<-&Fb<0R# @-%%-6(NG6))72%0L3 $5%,O;#UK5S ;  />%0N6 <F+"JTF+"JF+"JF+"JF+2"J-F+"JF+"J&+)lݸm/n/;ܹAZj]A )9I]mEиE/ A   & 6 F ]AU e ]OиO/RE;9g;9EX_/_ >YEX@/@>Yef++ /+_AIYqA!(8HXhx]A (8q@%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q*и/RиR/WиYиj01"!&&&&26667!4&&&&&'32666'#"&&&546667&&&&5467&&&&'#53666632!#3Lg z/@((@00C[*EWYS-<$ BeEImH#M OxQ .v{w\9So\b46Q816/VD-ux DiR$E=4h^(H6 6J++I6*;& -46%TF//FT!HpI".( &=W=ImB,Nk>-QA/ (a7 /EZ7gBiH'  d;#g+5 +o"I+Y+AZj]A )9I]Y9A ""&"6"F"]AU"e"]I"9nDIn9TиT/VY9YqEXN/N >YEX1/1>YTU++'^+1A!'7GWgw]A '7qAFVqNAIYqA!(8HXhx]A (8q,и6и8кD^'9m0126667!!&&&&&&4&&&#"32666#"&&&'#53667&&&&5467&&&&5466632!#'3#7ZD. *?S;'7%(0FSTM0G.+H31I0.G0bVUa:RXfZ163\F)QZ0  d%WYEXJ/J >YEX/>YEX:/:>YDAIYqA!(8HXhx]A (8q:A!'7GWgw]A '7qAFVq&A&&'&7&G&W&g&w&&&&&& ]A&&]/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q5:901&&&&#"326667#"&&&54666323266655#"&&&546663273-13LzU-(LnG;70*Gj`S`4.  C8"FnM)#KOS-ga.?550>9 ;k]Tf:  (eieN07L.* 5aTi1$YWhŘ\ P2}pK$L/M/KܹL?и?/ A   & 6 F ]AU e ])и)/4к5?K9IиI/EXD/D >YEXJ/J >Y/+:+DAIYqA!(8HXhx]A (8q5:901&&&&#"326667#"&&&54666323266655#"&&&546663273  !1P71H.&$ | .E^>6Y>" , $-H2146Ca?)T~U#" R(  $@[82U=# nYEX5/5 >YEX/>YEX%/%>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq%O %O98>и>//VAIVYVqA!VV(V8VHVXVhVxVVVVVVVVV]A VV(V8VqO`01%#"&&&54666323266655#"&&&546663273!#"&&&546667266655!&&&&#"326667*Gj`S`4.  C8"FnM)#KOS-ga.?550>:R3-G1|#-13LzU-(LnG;70(eieN07L.* 5aTi1$YWhŘ\ P;Y<%."-  .! ;k]Tf:  + UF)+и)%иIи)WEX/ >YEX$/$ >YEX1/1>YEXO/O>Y+OA!'7GWgw]A '7qAFVq AI Y qA!  ( 8 H X h x ]A   ( 8 qи&и(и1;A;;';7;G;W;g;w;;;;;; ]A;;]1DA!DD'D7DGDWDgDwDDDDDDDDD]A DD'D7DqAFDVDqJO9T01!326667"!&&&&3666632733##"&&&54666323266655#"&&&'#,,KiA;70GsT2-13ti Ku550>*Gj`S`4.  C8"FnM)#KOS-ea0dJ|Y1  3]R [~J P7f?(eieN07L.* 5aTi1$UVF+?Zd[/\/ZܹEи/[=и=/ A   & 6 F ]AU e ]E2и2/3=Z9EXJ/J >YEXB/B >YEX/>YEX8/8>YBAIYqA!(8HXhx]A (8q8A!'7GWgw]A '7qAFVq$A$$'$7$G$W$g$w$$$$$$ ]A$$]-A!--'-7-G-W-g-w---------]A --'-7-qAF-V-q389EB901&&&&#"3267#"&&&54666323266655#"&&&5466632466632'-24LyT-(LnG>o(*Gj`S`4.  C8"FnM)#KOS-ga.?1e09fT,B, " 9:k]Tf9)(eieN07L.* 5aTi1$YWhŘ\&*yu:", )  !1D/*)f>+Z +A &6F]AUe]AZ j ]A  ) 9 I ] Z9 /AZ j ]A  ) 9 I ]-ܹ*>9 H RиR/U>H9HhEXC/C >YEX_/_>Y*d+2%+CAIYqA!(8HXhx]A (8q_A!'7GWgw]A '7qAFVqU%2901666654&&&#"3266654&&&#"&&54666666&'&&&&&&5466632#"&&&'!5*EWYT-<$ BeEImH#s0G.+H31I0.G0 J{V .v{w\9So[b46R7163\F)-QA/ (a7 4Og>QZ0  dF+;Z-+7+# +A &6F]AUe]AZ j ]A  ) 9 I ]A &6F]AUe]279:-#9#=EX/ >YEX(/(>Y A!  ' 7 G W g w ]A   ' 7 qAF V q2(9:и;01%32654&&&!##"&&&546667&&&&5467!#I>'#CcAn}7Ugs)eO (@SWS@(FyZ`g66]{E# ,EcF3\E)mlC[G@2!CGK)(B;7.6A)x5FV=>/?/>&и&/A &6F]AUe]?0ܸи/09EX+/+ >YEX!/!>Y++AIYqA!(8HXhx]A (8q! A!  ' 7 G W g w ]A   ' 7 qAF V q+5A55]A55(585H5X5h5x555555 ]01"3266676&&&'5!#"&&&5466632#"&'5&&&&|Fd<4^O7K/ $D7"+]qzĉJSӀ?gA"+"2 '*'4gcfm9.E,%7%PP "B:)]N4WfuI-PA- 9]<=/>/ܸ=и/и/4 и /*A **&*6*F*]AU*e*]EX/ >Y/ +%+01#"&&&&&5466632#'&&'&&&&#"32666354&''5!=(.'d6JgP6B}p%E?=P #*HwV01Y~N(Y[d !:Q`m9ap> n  /ZVX_2 55F`>i?/@/ ܸ?и/ и 3#и#/+A ++&+6+F+]AU+e+]EX/ >YEX/>Y&AI&Y&qA!&&(&8&H&X&h&x&&&&&&&&&]A &&(&8&q0A!00'070G0W0g0w000000000]A 00'070qAF0V0q01#"&&&5466632#'&&'&&#"32674&'&'&&'5!` ! =c}CהMSߌ/UPO)w U9Wf99j]%B" ( WfuI   4gcfm9  PP\m"*YP\S"*P\("*P\S"*P\"*-P\&"*P\"*H+PkDE/F/ܸи/E и /6и/ 'A ''&'6'F']AU'e']61иAиA/EX/ >YEX/ >YEX/>Y<D+"AI"Y"qA!""("8"H"X"h"x"""""""""]A ""("8"q,A!,,',7,G,W,g,w,,,,,,,,,]A ,,',7,qAF,V,qD2и3иDB401#"&&&&&546$32#'&&'&&&&#"3266635!5!54&''5!3>F0 h'6b_ g   NݏS b YY bP3O>+2%+2 и /1 и /A &6F]AUe]2F2QK/EX / >YEXC/C >YEX7/7>YCAIYqA!(8HXhx]A (8q7 A!  ' 7 G W g w ]A   ' 7 qAF V q01'#'&&'&&&&#"3266634&''5!#"&&&&&546$326666323#${! ,9B tHJx">0 h>FYEX;/;>YEAIYqA!(8HXhx]A (8q;A!'7GWgw]A '7qAFVq01'#'&&'&&#"32674&'&'&&'5!#"&&&5466632666632L& w U9Wf99j]#D" ( ! =c}CהMSߌ+X-*QwN-F0' )FeF  3edgn9 PP WguISe9$0<-F9D:+  +1+ и ии/ *A ::&:6:F:]AU:e:] ?к@9F /EX/ >Y? 9@ 901#5&&&&5466675332#'&&''&&&#3266634&''5!%.6.w@av|AC~sa.TNK&b ,41'2p*NqGEpP+=|}o  ů  } TTwv`fZPz:Z)+A ))&)6)F)]AU)e)]EX/ >YEX/ >YEX / >Y:+$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q .A!..'.7.G.W.g.w.........]A ..'.7.qAF.V.q801#"$&546$32#'&&'&&&&#"3266674&&&'5!z29 /igf:ib^/{!+6A$oILi?gH(7\F*?3[JDh@b  g   NݏM#?Y5=[>"Y.ɸ//0/)ܹ/и/к)9///EX#/# >Y AI Y qA!  ( 8 H X h x ]A   ( 8 q# 901576654&&&#"!5765#5736666328  2'#Q9?b55<>&B0 =/ >, l//(0 .F0 /o7Pwh{"h{"hI"BhN"Th"ph"*hh"Ep3hW-4++Sи/S!и-84:и:/-=иSI>:I9EXYEXC/C >YEX/>YEX/>YEX2/2>YEXN/N>YA!'7GWgw]A '7qAFVq2C'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q0и0/1иSO3и14и5и5/>C'9LиL/M01#"&'&'53266654&#"76654&&&#"!57665#5%3666632!6632$?W45+/%6*T/N;<;7X3bRR]_(;eK+\ 5(0H2P  &&5,J6  `PPDO,'&LuOP#7h:t+5+ и"и"/%и)к*"595<EX$/$ >YEX/// >YEX/>YEX/>Y"+/ AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/(ии&и 'к*/ 98и8/901!576654&&&#"!57665#535#5%33#666632T/N;<;7X3bRR]_(;eK+\P,J6  `PPgDOg,'&LuOPh:t+5+ и"и"/%и)к*"595<EX$/$ >YEX/// >YEX/>YEX/>Y"+/ AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/(ии&и 'к*/ 98и8/901!576654&&&#"!57665#535#5%33#666632T/N;<;7X3bRR]_(;eK+\P,J6  `PPgDOg,'&LuOP:#;/Y+ +/ AI Y qA!  ( 8 H X h x ]A   ( 8 qи/ии &и(к*/ 98и8/01576654&&&#"!57665#535#5733#6666326  3&'&$ :@ wwd65=='A1 <0 <,! m 00 6>n)/>r -F0 0R8^.#+ +AZ j ]A  ) 9 I ].и#и/.!%и#'и.*и+/EX)/) >YEX&/& >YEX4/4 >YEX/>Y%"+4AIYqA!(8HXhx]A (8q&$+и,и"-к/4901#566654&&&#"!57665#535#573!!666632R>hDkG4Up<4u<Z+fb%VXU$Sk>ٖR'P }u\&- fPPe@Ie-$D+hLM/N/GܹMи/2и2/;к<G9EX$/$ >YEXA/A >YEX/>YEX/>YA AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/$.A..]A..(.8.H.X.h.x...... ]$6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q<A 9JиJ/K01!576654&&&#"!5766546666632#"'&''&&#"666632T/N;<;7X3b$>_XS]2)FA"0ZE)R]_(;eK+\P,J6  `PPWdfS41P9* -WT,'&LuOP#G&H/I/BܹHи/B&и&/-и-/6и6/79//EX)/) >YEX+/+ >YEX-/- >YEXY!1+< AI Y qA!  ( 8 H X h x ]A   ( 8 q7< 901576654&&&#"!5766546666632#"'&''&&#"6666328  2'#P9?  (=U96W-!l// <3;;1 -"*h1K3w .F0 /+<,,3+  +,и/,и/,739и9/ >EX;/; >YEX/ >YEX/>YEX1/1>Y&AI&Y&qA!&&(&8&H&X&h&x&&&&&&&&&]A &&(&8&q&91/3и4и4/01666632#"&&&546667266654&&&#"!57665#5%3uS^`(;eK+YEXQ/Q >YEX/>YEX&/&>YQAIYqA!(8HXhx]A (8q&$(и)и)/4>A>>]A>>(>8>H>X>h>x>>>>>> ]4FAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8FqLQ901#"&&&546667266654&&&#"!5766546666632#"'&''&&#"666632_XS]2)FA"0[E*S^`(;eK++bo;,6"0(E]4,J6  `PPWdfS41P9* -WT,')QxNh8F+3 +8+"$и$/'к($898:/EX&/& >YEX-/- >YEX/>YEX/>Y-AIYqA!(8HXhx]A (8qии/и/к(-96и7и7/014&&&'#576654&&&#"!57665#5%36666320F.T/N;<;7X3bRR]_(;eK+\ZyJ!P,J6  `PPDO,'&LuOqB?+2 +:+!#и#/&к'#9EX%/% >YEX,/, >YEX>/> >YEX/>YEX/>Y,AIYqA!(8HXhx]A (8q',95A!55'575G5W5g5w555555555]A 55'575qAF5V5q;и<01#"&&&54&&&#"!57665#5%3666632326665#573B3fgk])/N;<;7X3bRR]_(;eK+om.K4T_Lg<YEX/>Y'+ии/и/01%!576654&''5!!267676673#'&#!fe=dde eeu PP  PP  " f/+y2" +0+#и+1и1/04EX/ >YEX)/) >YEX/>YEX/>YA!'7GWgw]A '7qAFVq9и/и'и(и(/+и+/,01##"&&&54&''5!3266674&''5!3sRS]^(;fK+\T.O;;;7Xc+;,'&LuO;PP,J6  PPdC$a23/4/0ܹ3 и /#/EX/ >YEX)/) >Y+9и/и'и(и(/+и+/,01##"&&&54&''5!3266674&''5!3C56<=&C0 ;)7  3''&$ 9+@ dV -G/W 00 ,   00 <)+ <# +:+-и5;и;/:>EX/ >YEX3/3 >YEX/>YEX/>Y(A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q(901##"&&&54&&&'&'&&54666323266674&''5!3RR]_(;eK+1H/]T(.O;<;7Xb+9+'(OwN}AT5  ,".#9gW,K7  PPfC+MN/O/Cܹ Nи/, 6EX&/& >YEXYEX/>YEX/>Y1A!11'171G1W1g1w111111111]A 11'171qAF1V1q 1901#"&&&55#"&&&54&&&'&'&&54666323266674&''5!70H0\V(R]_(;eK+1H/]T(.O;<;7Xb/"9fW+'(OwN}AT5  ,".#9gW,K7  PP'BU5  +h28+-+и/!к"-9-4EX / >YEX'/' >YEX/>YEX/>Y' AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/"' 90и0/101!576654&&&#"!57665#5%3666632T/N;<;7X3bRR]_(;eK+\P,J6  `PPDO,'&LuOP;78/9/2ܹ8и/&к'29EX / >YEX/>YEX/>Y, +и/иии/' ,95и5/601!576654&&&#"!576654&#'5!"666632PR#=0*T0RM__RBC@(]O4ZP"1PPPP 3T>Pif=ݸ>/?/ܹ!AZ!j!]A !!)!9!I!]и/>5и5/*к5*9EX;/; >YEX///>Y+ &+; и/&)и)//-1и2и2/9и9/01'&&#!6632#"&''3266654&&&#"!576654&#'5!2 ?jw?M^4d7+)$ H~]6BhI6VE``ֈ BxgՐI I2jr]m=o PP  P734/5/.ܹ4и/и!EX/ >YEX'/' >YEX/>YEX / >Y!+ и / иии/и/и%и&и&/)и)/*и1и1/201!57665!!576654&''5!!4&''5!`)`=aa````P d PP  PP 5 PP  P7A5ո6/7/0ܹ6и/и!EX/ >YEX'/' >YEX/>YEX / >Y!+ и / иии/и/%и%/.и/и3и3/401!57665!!576654&''5!!4&''5!#'&&##`)`=aa``vT `P d PP  PP 5 P  P79+4 +9+%и 'и9.и9;/EX/ >YEX-/- >YEX/>YEX/>Y' +ии/и/и!и!/"и+и,и,//и//0и7и8и8/014&&&##57665!!576654&''5!!4&''5!%BpT9`)`=aa````XzK"P n PP  PP ? PP  q7@$A/B/;ܸи/; ;9; и /A и /,и./ /EX&/& >YEX4/4 >YEX/>YEX / >YEX/>Y.+и/и/иии/&$(и(/)и2и3и3/6и6/7и>и>/?01!&##!57665!!576654&''5!!4&''5!0& %<`)`=aa````WD26P d PP  PP 5 PP  P7<QG+H +=+%и 'иH3AZ=j=]A ==)=9=I=]EX/ >YEX-/- >YEX/>YEX/>Y8B+ии/и/и!и!/"иB'"+и,и,//и//0и84и4/BEиE/BGиG/HиH/JиJ/M01#!57665!!576654&''5!!4&''5!766324&&&#"32666.h|e^\`=aa`^n*)[o>5YC#  We4)NpH#P y PP  PP  PP &LuN3Q9^#;L7B=ڸ>/?/ܹ>'и'/3и5EX-/- >YEX;/; >YEX / >YEX/>YEX!/!>Y5+;!#и$и$/+и,и,//и//0и9и:и:/01#"&&&54666326665!!576654&''5!!4&''5!-JxP-='4*)`=aa`` rk4'03"%FgB+ PP  PP ? PP7xC +1+7+ "и$EX/ >YEX*/* >YEX/>YEX/>Y$ +ии/и/и(и)и)/,и,/-и4и ;и;/$=и ?и?/01#"&&&55!!576654&''5!!4&''5!326554&''5!eN )`=aa```MONE``-,TzN PP  PP 5 PP clla PP ?F+,/-/&ܹ,и/EX/ >YEX/>YEX/>Y и/иии/ и/"и"/)и)/*01!576654&#!"!576654&''5!a`GWWXXP    PP  PP  P?fO+J+.A+J%к7J9AZAjA]A AA)A9AIA].QEX/ >YEX/>YEX/>Y<3+)F+ и/иии/ и/"и"/)&и&/FIиI/MиM/N01!576654&#!"!576654&''5!6632#"&''3266654&&&#"wMVQWWX=jw?M^4d7+)$ H~]6BhI5XP    PP  PP BxgՐI I2jr]m=o P?F78/и/ܹи/%ܸ*и*/%29/EX/ >YEX+/+ >YEX/>YEX / >Yи/и!и"и)и*и*/-и-/.и"5и5/01!"#4&&&##576654&''5!3!2654&''5!`IX/}.WIWW`TaXX"KzXXzK"P  PP    PP  P?F1 +,+1+1&и13/EX/ >YEX%/% >YEX/>Yи/иии#и$и$/'и'/(и/и//014&&&#!576654&''5!3!2654&''5!DpUWW`TaXXXzK"P  PP    PP  q;1?+&+:-+:AEX / >YEX/ >YEX3/3 >YEX/>Y   и /иииии/!и!/"и)и*и"1и2и2/5и5/6и*=и=/013576654&#'5!"3!2654&#'5!"3!2654&''5!;VVa!^X!^XXP  PP    PP    PP  P;1E +,+@3+E+E:иEG/EX/ >YEX%/% >YEX9/9 >YEX/>Yи/иии#и$и$/'и'/(и/и0и(7и8и8/;и;/<и0CиC/014&&&#!576654&#'5!"3!2654&#'5!"3!2654&''5!@nTVVa!^X!^XXXzK"P  PP    PP    PP  q5}+,/-/'ܹ,и/EX / >YEX/>YEX/>Y  и/иии/ и/#и#/*и*/+01!!576654&'!!576654&''5!}5cb5ccHbbP    PP  PP  B^3=4/5/.ܹ4и/и!!+01!57665!!576654&''5!!4&''5!u^ujjuujjXXXDZZ3ZZX0I34/5/.ܹ4и/и!++!+ и / иии/%и'и)и)/1и1/0157665!!576654&''5!!4&''5!gL J LEEQL  LPEE5 = 55  66  66 q 50I34/5/.ܹ4и/и!++!+ и / иии/%и'и)и)/1и1/0157665!!576654&''5!!4&''5!gL J LEEQL  LPEE5 = 55  66  66 q 5+34/5/.ܹ4и/и!EX/ >YEX'/' >YEX/>YEX / >Y!+ и / иии/и/и%и&и&/)и)/*и1и1/201!57665!!576654&''5!!4&''5!de=dde dbbP d PP  PP 3 PP  PBS"+BS"+B!"+BB&"+BT^"+&Bh^"+E&B3^X$/++!$;и!=иBи!JEX/>YEX/>YT+="+A!'7GWgw]A '7qAFVq01#"&'&'53266654&#"7665!!576654&''5!!4&''5!!6632$?W45+/%6*u^ujjuujjK 5(0H2P  &&=XXDZZ3ZZX#7B^?@/A/ܹ@и/ии"и.и0и<0++ии0!и0=015!%!57665!!57665#5354&''5!!54&''5!3J^qju^ujjuujXXXXDgZZZZgB^;c +9++ +ии9и 7и+=+и801!!576654&''5!!3!4&''5!!57665!#ujju&gujjugXXDZZ3ZZXXB\^Bz^@ +1+;+ "и$EX?/? >YEX/>YEX/>Y$ +и/и/601#"&&&5!!576654&''5!!4&''5!326665#573z^b2^ujjuuj!:P/)I7 T_-^d@XXDZZ3ZZMi@@iMFPB^% +$+01%!576654&''5!!26773#'&&#!ujjukff XXDZZ' 3 ?^78/9/2ܹ8и/&к'29EX,/, >Y AI Y qA!  ( 8 H X h x ]A   ( 8 q', 901!576654&#"!576654&''5!666632eow7:<dood%\`Z#4p\<lXaO XXHXX-$FtWX5f^B +8+и8'0 9DEX/ >YEX/>Y3,+"=+ии"и/"и/30и0/=@и@/=BиB/01%!576654&''5!#'&&#!"676632#"&''3266654&&&#"cylq :rΝ\`49%Z"pJ4_T3 XX H X }B䡦T I@ņՇ=B^56/7/0ܹ6и/и!EX/ >YEX'/' >Y!+и/и/%и%/&и&/.и/01!57665!!576654&''5!!4&''5!#'&&##u^ujjuuyjXXXDZZ3ZXB\^9O+4 +9+%и 'и9.и9;/' +014&&&##57665!!576654&''5!!4&''5!H2^T1u\ujjuujj\mg1XXXDZZ3ZZB^;OYEX&/&>YL+:+и/ и /  и /ии/и/$и$/%и%/(и(/)и)/LGиG/LIиI/014&&&#"326667!!57665!!576654&''5!!4&''5!6766327 HsT-%Y}O$tujjut"4rKZ|M"*QvKX%XXDZZHZZj3hBB^=X>/?/ܹ>'и'/3и5EX / >Y5+ 01#"&&&54666726665!!576654&''5!!4&''5!F?q]6L1"!0?%^ujjuuco<+7!0%AY5XXDZZ3ZZB ^D+.+8+и!EX/>YEX / >Y!+ и/и/3и<ии@и@/01!"&5!!576654&''5!!4&''5!3266654&''5!tN^ujjuuj6M/)E2uj^@XXDZZ3ZZMi@@iMZZB^+N,/-/&ܹ,и/EX/ >Y и/"и"/01!576654&#!"!576654&''5!ywjjKllX @ XX H XX XBf^Sл+ +6I++к? 9AZIjI]A II)I9III]6UEX%/% >YD;+1N+%#и#/(и(/1,и,/1.и./NQиQ/NSиS/01%!576654&#!"!576654&''5!676632#"&''3266654&&&#"ly1wjjl :rΝ\e.r0#$!včN4_T3 XX @ XX H XX }B䡫Q I=NJՇ=B\^7e++2%+29/EX/>YEX / >Y!и"и5и5/01!"#4&&&#!576654&''5!3!2654&''5!5Tc55eTjjw)y ll1gmmg1X H XX @ XX XB\^6m+1$+6+6+и68/EX/>YEX / >Y  и!и4и4/014&&&""#!576654&''5!3!2654&''5!%8fT/;0.!jjw)y ll\mh2X H XX @ XX B^?X+&+:-+:AEX/>Yии)и*и=и=/013576654&''5!3!2654&''5!3!2654&''5!Bjjw{y l{wmmX H XX  = XX  @ XX VB\^En +,+@3+E+E:иEG/EX/>Yии/и0иCиC/014&&&#!576654&''5!3!2654&''5!3!2654&''5!8fTjjw{y l{wmm\mg1V H XX  = XX  @ XX F'$q + и/EX / >YEX/>Y +и/01357665#573#"&&&5466632FdQii"-/""/-"PHNP-/""/."".F'F'$q + и/EX / >YEX/>Y +и/01357665#573#"&&&5466632FdQii"-/""/-"PHNP-/""/."".24k$V +ии/EX/>Y +ܸи/0157665#573#"&&&54666322A [5 DD   40 +/ 0  1jwF +ии//EX / >Y+0157665#573#"&546321B \5 CC/#"00"#// +0 /----7pw2"(dg"(g"("("(C)2"(/C{"(B{m"("BF' "(Xcq"jFh'"EiFy'.B+9/9и/&/EX/ >YEX/>YEX/>Y)+>4+ии/01#"&5466767#57665#573#326767#"&&&5466632! =`m+dQi!?8  "-/""/-" KJ+L?PHNP 0: 32  )/""/."".F-$8 + 9/ и/%EX/ >YEX/>YEX / >YEX/>Y4*+  ии/01#"&55#57665#573#37#"&&&5466632 8N-dQi=8"-/""/-".%xvPHNPB6 -]/""/."".F-"6 +!+ и/!#и#/8EX / >YEX/>YEX/>Y2(+и/01357665#57337#"&55#"&&&5466632FdQi=8 8N-"-/""/-"PHNB6 -".%xv-/""/."".75,+и#EX/ >YEX/>Y(++и и / и01!57665#53#5733#"&&&5466632idQw"-/""/-"PPBf3HN7fh/""/."".%ow# + и/ и /и/ и/и/EX/ >Y!++ и01!57655#535#5733#"&54632 CBddZ5iL0""00""0! //;(0; ----F'(F''F'W + и/EX / >YEX/>Yи/01357665#573FdQiPHNPF'W + и/EX / >YEX/>Yи/01357665#573FdQiPHNP24k2 + /EX/>Yܸи/0157665#5732A [5 D40 +/ 02kp2 +EX / >Y+и/0157665#5732A [5 D0 +/ 0q"(dFh'"(EcFy'.+9/9и/&EX/ >YEX/>YEX/>Y)+ии/01#"&5466767#57665#573#326767! =`m+dQi!?8   KJ+L?PHNP 0: 32  F-"z +!+ и/$EX / >YEX/>YEX/>Yи/01357665#57337#"&55FdQi=8 8N-PHNB6 -".%xv75}+ ииEX/ >YEX/>Y+и и / и01!57665#53#5733idQPPBf3HN7f%oor + и/ и и/и/EX/ >Y+ и01!57655#535#5733 CBddZ5i! //;(0;71$̻ + и/ и/ EX/ >YEX / >YEX / >Yи/и A'7GWgw ]A]013#4&''5466632#"&&&dQi"-.##.-"P%HNqP.##.."".)aa$> + и/ EX/ >Y +013#4&''5466632#"&&&aA \5 Dd   a0 I+/ 0  F+!"\mF"mF"#mF"mFm"mF9 +EX/ >YEX/>Y901%#"&&&5#57367AKN!$H9$T! 0;U9;gQrDN-9"/-2p, +/EX/ >Y901#"&&&5#573367 *12/%]7   $3" $=1x(/?" F y+иииEX/ >YEX/>Y+й 901673#"&&&55#53#5733! 0XAKN!$H9$Tǿ-9"/-;U9;gQg4DN:g/B ++ 9++AZj]A )9I]9и/ 7иDEX1/1 >YEX>/> >YEX/>YEX%/%>Y9+1AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&&'#!576654&#'5!"36666325ZEH[45ZEG[48nkll9e7bbe8jlol5WuEEuWYvDDvYlQMa PP  PP ^MSD`^?D`^?7)d +EX/ >YEX/ >YEX/>Yии/01%3!572656&&&#'5!"om omPP PP D`^ +013576654&''5!Dzz}}XDZZX1I9++  +  и /и/01576654&''5!1O O_QQ5  66 q 57A+EX / >YEX/>Yи/013576654&''5!7ccbbP  PP  P%J`4+/EX / >Y  и /01576654&#'5!"%? ?%B B/  11 ; /Nm"?!("?!!("?!S"?"?"?-!"?B"?#B D`&"?D`"?Xq^"?Dh`^"?EDy`^5[-+A --&-6-F-]AU-e-]-9/!!90+01#"&5466767#576654&''5!#326767! =`m+zz}}!?8   KJ+L?XDZZX 0: 32  D-^+2+9/#EX/>Y01#"&55#576654&''5!#37 8N-zz}}=8.%xvXDZZXB6 - ^7 + и+ и01!57665#534&''5!3}zz}XXhZZ3ho + иEX/ >YEX/>Y+и и / и01!57665#534&''5!3}b5ccb PP U^< PP ^ ^`^ + и/EX/ >Y+ ииܸи/01!576655#5354&''5!3 A@ ss @A t0 && - '' -DP^"?tD^"??D^"?#??HD^"?D^"?7h#-B9H^ +EX/ >YEX/>Y9A!'7GWgw]A '7qAFVq01#"&&&54&''5!67HSbd(/_M0,5(DOsJ#A}k X8<N?3B ++ ++AZj]A )9I] 7и9иDEX1/1 >YEX>/> >YEX/>YEX%/%>Y9+1AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq$и$/'и'/0и0/3и3/014&&&#"326667#"&&&'!!576654&''5!!666632"UpqU""UqpU"O䖒ߙS{{{{ V܏Oޥ``~ަ``~qk XX H XX fq^+17+EX/ >YEX/>Y-#+01%#"&&&54666766665#573#"&&&5466632?a 8+ & T"..##..".mnh)a] +'?Wk;DN9/""/."".w%,+/EX/ >Y#+01#"&546766665#5737#"&54632  *t?*:%^7.""00"".oBB>;:## R &4@#&0----^+"e^+"e^+=%9a+и"EX!/! >YEX / >Y5++#+и#01#"&&&54666766665#53#5733#"&&&5466632?a 8+ & ƑT"..##..".mnh)a] +'?Wk;f3DN;fd/""/."".^+q'9M0+D+D9A 00&060F0]AU0e0]EX/ >YEX / >YI?+++ 9 5A!55'575G5W5g5w555555555]A 55'575qAF5V5q01&&&&'#"&&&546663265#573&&#"32666#"&&&5466632'*27@WoE%=-5Uk62T"?:4n::/ !*@/"-/""/-"NBA=0dP3'>K#=`B#^DNEDEMP% -< .&9Tb/""/."".w'9M0+D+(и(/A00&060F0V0f0v000000 ]A00]EX/ >Y5 +I?+++01&&&&'#"&&&546663265#573%&&#"32666#"&&&5466632k  $*8H-("7F# _6 )%"&&*    ('%<0%-%9((/)V)).0$ "3:s  ^+e^+e^+/+EX/ >YEX/>Y01%#"&&&54666766665#573?a 8+ & T.mnh)a] +'?Wk;DNp"+/EX/ >Y01#"&&&54666766665#573 )u?$  ^7`AB?;7 R %5@#"(/^+=h^+=%Y+и"EX!/! >YEX / >Y+#й01#"&&&54666766665#53#5733?a 8+ & ƑT.mnh)a] +'?Wk;f3DN;fyp%L+и" /EX!/! >Y#+и#01#"&&&54666766665#535#5733 )u?$  ^7g#AB?;7 R %5@#,=(/=^+q'90++9A 00&060F0]AU0e0]EX/ >YEX / >Y5A!55'575G5W5g5w555555555]A 55'575qAF5V5q+ܺ5+901&&&&'#"&&&546663265#573&&#"32666'*27@WoE%=-5Uk62T"?:4n::/ !*@/NBA=0dP3'>K#=`B#^DNEDEMP% -< .&9Tbp'90++(и(/A00&060F0V0f0v000000 ]A00]EX/ >Y5 +++01&&&&'#"&&&546663265#573%&&#"32666k  $*8H-("7F# _6 )%"&&* ('%<0%-%9((/)V)).0$ "3:J+-7 (+ и/ )%и)-EX3/3 >YEX/>YEX/>YEX&/&>Y (и)01'3##"&&&546767666655#53#575466632-!+">mZ,B,+"0fo,A,j)  0KiCf/NwI", (  .JjH?fD%5^Q#,J+-3]%+ и /%)EX/// >YEX/>Y +&и (01'3##"&&&54676766665#53466632-!+">mZ,B,+"0fo,A,j)  0KiCPgNwI", (  .JjHvgb^Q#, 5$+0+07EX)/) >YEX/>YEX/>Y)'и'/,и,/3и3/401!57665!#"&&&5466632666766665&&''5!c20KOK'  (   cuddP Q3= %*!J $cPP  P A1+=+ =9=C/ /EX6/6 >YEX/>YEX/>YEX / >Y64и4/9и9/@и@/A01!&##!57665!#"&&&5466632666766665&&''5!0& %YEX*/*>YEX/>YP+и/ и /  и /ии/иD!BиB/GиG/PKиK/PMиM/014&&&#"326667#!57665!#"&&&5466632666766665&&''5!676632 4XC$  Wd3.i|`d20KOK'  (   c@o)[o?)3T<"T#;L)NpH#P Q3= %*!J $cPP )Px B?l+)+)AEX#/# >YEX///>YEX / >Y#!и!/&и&/01!#"&&&5466632666766665&&''5!#"&&&54666326665=20KOK'  (   cudKyP-='4*wQ3= %*!J $cPP rk4'03"%FgB gE+)+=0+=GEX#/# >YEX / >YEX@/@>Y64+#!и!/&и&/@-A!--'-7-G-W-g-w---------]A --'-7-qAF-V-q48и8/01!#"&&&5466632666766665&&''5!326554&''5!#"&&&5=20KOK'  (   cudJONE``eN wQ3= %*!J $cPP clla PP ,TzN ` 7"#+.+++ #96и9/"/EX5/5 >YEX/>YEX/>YEX$/$>Y5$  и5 3и4и4/01!!"#4&&&#!"#6666766665&&&&#'5!!*   Ib,Mi=e>GH ' lww{% 4  MwQ*C1N9#c ==3^#+%EX / >YA!'7GWgw]A '7qAFVq01#"&&&'33266654&''5!50j|2`L3{-Fb>5̎M^ 6llXX&hI#B+%EX/ >Y +"+01#"&&''533266654&''5! DpQ ?1P  .@(T` SMzV. Җ !@b@ 44) +"EX/ >YEX / >YA!'7GWgw]A '7qAFVq01#"&&&'332654&&"'5! (Xf(M?+s%(i^*0  \i9  PP3S"tT3^++и(и-EX/>Y)+A!'7GWgw]A '7qAFVqи)01#"&&&'33266655!5!4&''5!3 0j|2`L3{-Fb>)w̎M^ 6llhXX3h ^;&+6+6=EX/// >YEX/>YEX/>Y/)и)/+и+/2и2/9и9/:и:/01!57665!#"&&&54632666766666654&'&'&!j{i("Q_k<1'8/   09{{X k3Ia;"-/@D-5"s] XX X 5%+1+17EX*/* >YEX/>YEX/>Y*(и(/-и-/4и4/501!!57665!#"&&&54666326667666654&''5!5c4/JKE1&! YbbP Q3= *&<  $c PP   ^C/+?+?9?E//EX8/8 >YEX/>YEX/>YEX/>Y 82и2/4и4/;и;/ BиB/CиC/01!&##!57665!#"&&&54632666766666654&'&'&!9,d)Ag{i("Q_k<1'8/   09{{_KTX k3Ia;"-/@D-5"s] XX  ?^X ?+ ++AZj]A )9I] NиZEXH/H >YEX*/*>YEX/>YT+и/ и /  и /ии/и/HBиB/DиD/KиK/TOиO/TQиQ/014&&&#"326667!!57665!#"&&&54632666766666654&'&'&!676632X-PoA*  ![~N#}("Q_k<1'8/   00rLZU)x*QvKX k3Ia;"-/@D-5"s] XX }9p B^E~6++ и /EX?/? >YEX!/!>YEX/>Y?9и9/;и;/BиB/01#"&&&54666726665!#"&&&54632666766666654&'&'&!?q]6L1"!0?%i("Q_k<1'8/   09{co<+7!0%AY5X3Ia;"-/@D-5"s] XX  ^L=++ +NEXF/F >YEX/>YEX(/(>YA!'7GWgw]A '7qAFVqF@и@/BиB/IиI/013266654&''5!!"&5!#"&&&54632666766666654&'&'&!4N3)E2ujNi("Q_k<1'8/   09{vRoC@iMZZ3Ia;"-/@D-5"s] XX  \w^3@+5)+4+  + 2к? 9 B //EX1/1 >YEX / >YEX/>YEX/>Y1,и,/-и-/4и5и?@01#4&&&&&#!"#6766766666654&''&!!! Zi#8EE<:DE9#iB>6r($#./5k!2;#}\Iw]D--D]wI*$rQ!p] XT33"2+///EX/ >Y015'#!57665#573376&#'5!J9? d7 7TF+// (0// /1"N1{"N1"N*h1"NET1"NHT+19"++&"(и(/+EX*/* >YEX3/3 >YEX/>YEX/>YEX / >Y"и#и#/8и8/901#"&&&546767666655#5#!57665#5%336&''5!1Cu]0H0,rX/dT)- TalZwE'1", -OvTPPPDO'T PP +36Y+'EX/ >YEX/// >YEX/>YEX / >Y01!5#!5766546666632'36&''5!uZ/d*B]yL-B+!+"+/ TalPPP3@|mR/#,)  ,JiHR PP P1) ++ и/ и+/EX/ >YEX$/$ >YEX/>YEX/>Yи/иии/01%#4&&&##5#!57665#5%336&''5!1h2J0rX/dT)- TaPq\{IPPPDO'T PP+)#!+и"и"/!%EX/ >YEX/ >YEX/>YEX / >Yи/иии/01##!57'5!34&''5!3#T) Tu mFuXg+ PP! PPNPPdC7-7-D+EX+/+ >YEX/ >YEX/>YEX / >Y и/ии/к<+9BиCиC/01!5&&&&#!576654&''5!667666676632' 1)VGaaVK_'\5%>-!#.# w?B  PP  PP ;9'D@= -8!+#;X3<@G P7-"7-I +I+ $кAI9IK/EX0/0 >YEX/ >YEX/>YEX/>Yи/и и /!кA09GиHиH/014&&&&&&#!576654&''5!667666676632'2J0 1)VGaaVK_'\5%>-!#.# w\{I?B  PP  PP ;9'D@= -8!+#;X3<@G q<F3>+3EX/ >YEX/ >YEX*/*>YEX8/8>Y"*9*(6и6/7и:и;и;/?и@01667666676632'!5&&&&#!57665#"#VK_'\5%>-!#.# w 1)VGa TP ;9'D@= -8!+#;X3<@G P?B  PP   -E +и и 9EX/ >YEX/ >YEX1/1>YEX?/?>Y+ и и к)191/=и=/>иAиBиB/01#535#5%33#667666676632'!5&&&&#!57665RK_'\5%>-!#.# w 1)VGa3gDOg;9'D@= -8!+#;X3<@G P?B  PP 7BK ++ и /и/  и$и&EX2/2 >YEX/ >YEX/>YEX/>Y29 и/ии/к'29C29IиJиJ/01!5#&&#!576654&''5!6673767666676632'e4&VGaaV5e Y5%>-$." w? PP  PP  'D@= -8!+#;X3<@G P7B]^/_/^AиA/_ܺ A9*AZ*j*]A **)*9*I*]A6Mи*YиY/EXY/Y >YEXG/G >YEX/>YEX///>YEX;/;>Y Y99=и>и>/GEIиI/J01'#"&&&'&66676654&&&'&&&&#!576654&''5!667666676632!#.# #-Ok@6+" 2)VGaaVK_'\5%>-}#;X3<@G 78:"6kU5#/("`*352  PP  PP ;9'D@= -8!+u+BиNEX5/5 >YEX\/\ >YEXH/H >YEX/>YEX / >YEX/>Y  ии/ии/$59B59HFJиJ/KкO59m59sиs/t01!5&&&&#!57665"!5766667&&'&&&&'&&54666324&''5!66667666676632'Z VPV w #.#-?%4\$VV#[5%>-#.# w;F  PP A ;Pb G@<3X;#+!8- =@D'$ X PP $'D@= -8!+#;X3<@G P""Bz) +z+Gи SкTz9zfиf/rz9z|/EX:/: >YEXa/a >YEXM/M >YEX/>YEX/>YEX / >Yии/"и#и#/):9G:9MKOиO/PкT:9r:9#xиx/y014&&&&&&#!57665"!5766667&&'&&&&'&&54666324&''5!66667666676632'/K5 VPV w #.#-?%4\$VV#[5%>-#.# wXzK";F  PP A ;Pb G@<3X;#+!8- =@D'$ X PP $'D@= -8!+#;X3<@G q0WI.}+ ++ и и /и/!и!/#и%и%/'и,и,/015#!576654&''5!36&''5!m]LFFRL0"D*a&H 55  44 G44m57-/Ż+EX/ >YEX$/$ >YEX/>YEX / >Y и / ии/и/"и"/#и#/&и&/(и)и)/+и+/ -и-/.и./01!5#!576654&''5!34'&#'5!g^NXX^0b\n(f}3} PP  PP {PP/PBm". BS"._B^".*WBh^".EB^".HB5&+)EX1/1 >Y01'!5#!576654&''5!3666632! 5#ɖulluJ*)2B\^4˻ +4+ !и46/EX/ >YEX)/) >YEX/>YEX/>Y и/ии/и/'и'/(и(/+и+/-и2и2/3и3/014&&&##5#!576654&''5!36&''5!"=V4ulluJ i$,^˔\hj5?#+XXDXX!  XX ` 1P^6+и#EX/ >YEX+/+ >YEX/>YEX / >Y4+ии4и4$01!5#!57665#534&''5!36&''5!!)~zcF\\cHr Yp&#b X?#+XXd XX  XX YEX/ >Y01!5&&&&'!576654&''5!26766666676632' -8:qppqd) !0%%a4$?-(#*. +038NPB ) XX D XX N?%PSSQO$%!!+#EX)]ei3">3' $)# XBm"B\K +K+ $иK7и7/EK9KM/EX2/2 >YEX/ >YEX/>YEX/>YE29014&&&&&&'!576654&''5!26766666676632'"=V4 -8:qppqd) !0%%a4$?-(#*. +038NP\hj5B ) XX D XX N?%PSSQO$%!!+#EX)]ei3">3' $)# !HM+!EX/// >YEX/ >Yи/и/01!5&&&&'!57665#"#!26766666676632' -8:qpwqd) !0%%a4$?-(#*. +038NPB ) XX mGX N?%PSSQO$%!!+#EX)]ei3">3' $)# XBNi0;+0и;?и0KEX/ >YEXE/E >Yܸ<и=иL>и=N0126766666676632'!5&&&&'!57665#5354&''5!3d) !0%%a4$?-(#*. +038NP -8:qppqN?%PSSQO$%!!+#EX)]ei3">3' $)# XB ) XX Dg XX gB/Mi ++ и /и/  и$и&EX4/4 >YEX/ >Y01!5#&&'!576654&''5!267366766666676632'{(Lqppq,A&{ !0%%b5$>.)#)- &+/3EPB ) XX D XX   %PSSQO$%!!+#EX)]ei3 :3( )&# XBB c¸d/e/dEиE/eܺE9*AZ*j*]A **)*9*I*]E:QEX_/_ >YEXK/K >YEX/>YEX-/->YEX?/?>Y_901'#"&&&5466676654&'&'&&&&'&&&&'!576654&''5!26766666676632 (#*. +038L!1)*T~T9/#6"dQ#C6$ .7:qppqd) !0%%a4$?-#EX)]ei3">3' $)qJMLJzX1#1'#^A (\0s1_J/ ) XX D XX N?%PSSQO$%!!+u~+@иLEX1/1 >YEX\/\ >YEXF/F >YM+к M9M@кmM901!5&&'!57665!5766667&&'&&&&'&&546663234&''5!2666766666676632'B0pq0B )390R +($(-?$4c%%/ *>2qp3=* /%%b5$>.)#)* Q093* B#!) XX !#%BX #kD3ie])XE#+!!%$OQSSP% 3& XX &3 %PSSQO$%!!+#EX)]ei3Dk#7 X9" Qo!"BM\z +z+Eи Qиzfиf/rz9z|/EX6/6 >YEXa/a >YEXK/K >YR + к% R9REкr R9014&&&&'!57665!5766667&&'&&&&'&&546663234&''5!2666766666676632'7_KB0pq0B )390R +($(-?$4c%%/ *>2qp3=* /%%b5$>.)#)* Q093* \NwIB#!) XX !#%BX #kD3ie])XE#+!!%$OQSSP% 3& XX &3 %PSSQO$%!!+#EX)]ei3Dk#7 5)W + и/EX / >YEX/>Yи/01357265#5%337mToPDOP5)W + и/EX / >YEX/>Yи/01357265#5%337mToPDOP-s% + /+и/0157665#573/Hf7 H/(0/5X" ""*5h)"E\h"#E\-5)"H\5g".5"J85+)&~"++ и /"и/EX / >YEX/>YEX/>Y%и&и&/01#"&&&546767666655!57265#5%33)Au]0H2,vmToZwE'1", ,PwUPDO'l&Q"++ и /"и/ /+%й01#"&&&546767666655!57265#5733l*L=/  y G f6 H6`G) \0G30)/`Z+ ии/EX/ >Y+ и01!57665#53#5%33oqӞTPPfPDOf` + и ии/иEX/ >Y++ ийии01!57665#535#53#5%33#3oqӞT+XPPf{gDOg{f2 + %и'и *EX)/) >Y-+"+"к-9и/-9%"901#"&'!57665&#"#6666332#5%3326667 ';Q5mn #-&X ';Q5 T",'-S>%PP $-R>$DOR $u+  9ии/EX/ >YEX/>Yи и / 9901!57665'7#5%37kq3 N8PP{ToDOwT5+/ +EX/ >YEX/>Y01#"&&&5#5%37%:EfP R(#1&F~hNDO "jm\'' + //01#"&&&5#5737&-BW4f5 o  J *Kh>/)/o?B7 a % ,%++AZj]A )9I]%и/%9./EX#/# >YEX/>Y(+ A!  ' 7 G W g w ]A   ' 7 qAF V q#9%(901%4&#"326667#"&''66667#5%36632--/X,03;-^-OnATw<` V3@K*T/_3$?.0(U_,6.;cG'8YEX&/& >YAIYqA!(8HXhx]A (8q)&901&&#"%!57665&&&&5466632#5%3666670224E&0tAjn9iQ0%9F!. R3*&Z?,'7%/0GbPP#=V71K2 DO +% >'+5 +A &6F]AUe]5 и !и /EX3/3 >YEX,/, >YEX/>Y,AIYqA!(8HXhx]A (8q/,901&&#"7#"&&&5&&&&5466632#5%3666670224E&'#%:EfP 9iQ0%9F!. R3*&10tAZ?,'7%{"jm\'1&F~h#=V71K2 DO =0G5+"\`5IZ +7$+A+ и/$и/AZj]A )9I]A 77&767F7]AU7e7]AKEX / >YEX)/) >YEXF/F>YEX/>YFи)4AI4Y4qA!44(484H4X4h4x444444444]A 44(484q01357265#5%33533266654&&&'&&&&5466632#'&&#"#"&'7mT&h[<,D/"@];8V;1^Y-RD4kV0UQ5WA6ZB%6d[YEX/ >YEX/>Y и01!"57265#5%3!!2666773mT o2PDOT +?1'.++AZj]A )9I].4и4/%49'2'7к;49EX6/6 >YEX8/8 >YEX/>Y,+; +A!'7GWgw]A '7qAFVq8%01%#"&&&54666323266654&&&#"'!!57665#5%3!2Sohk7. + @*T2HtS,:Xk0##7llRs^{G ]P-DQ%+# Jr>LuP)9VPPDOD?l\!p ;+ +(1+A]A )9IYiy ]A &6F]AUe] (9 99AZ1j1]A 11)191I1]6(999:9(=-/EX/ >YAIYqA!(8HXhx]A (8q -9 -9 -9-96-99-9:-901&&#"66667&&&&5466632'6654&&&'' #MI!:,-G2, ($RD-$Ca= GC'2<Md0B4KAW3h62acf6#J>'!6'agGR6Q:$ $qL@ukc/[[X)IJ/K/ܹ J<иYEX,/,>Y++EA]A(8HXhx ]EAIYqA!(8HXhx]A (8q,%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q'и'/(и(/*и+и6и8и<и>01#"'&'5&'&&#"!!!!67763!!5666654&5#534&'#535466632)#.  ;W=&QH2Q=%!8`1=U54lp0raA+";PZ`//d:d7g`X'}@_~Nd: d-jP4S7^,+EX/>Yи013576654&''5!!267737ww m!wXDXX)I9++  +и/  и /01576654&''5!!26773)MMTG M5  44 X 5dW+EX / >YEX/>Y   и /ии013576654&''5!!2666735e eVK nP  PP 5D@ '9a4+EX / >Y+и/01576654&''5!3266473'B B8 G0 00 , )& @+( +A &6F]AUe] и и(1EX!/! >YEX:/:>Y+9!#и#/$и:2<иYEX/>Y + иии01357665#534&''5!!!!267737ww o!uXh XX 3h^)"+ и и"и"EX/>Y +  + и и и и"и#01357665#535#534&''5!!!!!!267737ww m!wXLkkXXkk^<r5+и5"EX/>Y +&1+1к 9+и5и601357665&&#"#6666324&''5!3266673#"&'!26773w3-"b/E^=w n2+"d/E^<   uXP  (3^G*VXXP !)3^G*^!a+ иEX/ >YEX/>Y99и01357665'74&''5!7!267735y4yy8#uXcT XX {Pd"+иEX/ >YEX / >Y и / и / 9и/к 901!266673!576655'74&''5!7sK ne |. eV2f5D@ P TLt PP mK7+"\?7^"t?)S(/++N+(3/5и5/(8к9/N9NUEX7/7 >YEX>/> >YEXH/H >YEX/>YEX/>YEX-/->YH AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/ "и+и+/,и/и0и0/9H 9QиQ/R01!576654&&&#"!576654&&&#"!57665#573666632666632V+F3997V?V+E1?:3V1dT"SXY(,H7) Xbb)Qf;cP 0M6  ^PP+I3  `PPCNf,&)32+;[p4PRoM#-++H+#2к3-H9HO//'/EX1/1 >YEX8/8 >YEXB/B >Y AI Y qA!  ( 8 H X h x ]A   ( 8 qк3B 901576654&&&#"!576654&#"!57665#573666632666632)5  -" N:7 7@(& :? \769:/$:?@4C& @/ :/!l// B4C l// )/=  #8C /w)")")h"E)-e(/++N+Sd+(3/5и5/(8к9/S9SgEX7/7 >YEX>/> >YEXH/H >YEXV/V>YEX/>YEX/>YEX-/->YH AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/ "и+и+/,и/и0и0/9H 9QиQ/R01!576654&&&#"!576654&&&#"!57665#573666632666632#"&&&5466672655V+F3997V?V+E1?:3V1dT"SXY(,H7) Xbb)Qf;c-N8 6=P 0M6  ^PP+I3  `PPCNf,&)32+;[p4vx%."- 6B`q!(++[+!,-(!96и(8и8/!;к<([9[Pиdиoиvи!и[EX:/: >YEXA/A >YEXK/K >YEX/>YEX/>YEX&/&>Yc+r+и/и/иии/$и$/%и(и)и)/-c91к2A9KjAIjYjqA!jj(j8jHjXjhjxjjjjjjjjj]A jj(j8jq<Kj9Qr9rUкVA9)^и^/_иj|01!576655#"&'&#!57665&'&&##!57665#6767#573666632666632676733354&&&#"%254&&&#"6VH\YEXG/G >YEXN/N >YEXX/X >YEX"/">YEX3/3>YEX=/=>Y;Y9;Y9;Y9N AI Y qA!  ( 8 H X h x ]A   ( 8 q:;Y9IN 9SN 901754&&&#"!576654&'#576655#7#57665#5736666326666773r= , )&!  $Y'  @$ ! $$ bRA \769:.$ 5;=Z^(`+I3  `BPY*PP FcPP{mPCNf,&)3.*)+]p8?+!,++! и /8C?EиE/8HкI?9EXG/G >YEXN/N >YEXX/X >YEX/>YEX&/&>YEX=/=>YXAIYqA!(8HXhx]A (8q&$(и)и)/2и);и;/<и?и@и@/IX901%#"&&&546667666654&&&#"!576654&&&#"!57665#573666632666632#=]V8+ & +E35s1V?V*E2>;3V1dT"SWX(,H9) W`a)Qh<EuW3*'@Wi;/M7"`PP+H5  `PPCNf,&)32+;\o4oS/9+%+и//>к?99/EX=/= >YEXD/D >YEXN/N >YAIYqA!(8HXhx]A (8q)к?N901#"&5467666654&&&#"!576654&#"!57665#573666632666632=jT)=% ." L:7 5@(& 8? \7599/%9??4D'o>iC## R &4@#/!l// @4E l// )/=  #8C+S*+A4+K+KSи/KиL иUEX#/# >YEX:/: >YEXQ/Q >YEX/>YEX/>YEX/>YQ/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q /9!и"и"/%и%/&и8и9и9/<иYEX6/6 >YEXK/K >Y@+K@и/и/ @9и!и"и"/%и%/&и@-и&4и5и5/8и8/9иIиJиJ/01"3#5#"&&&'#"&&&54&#'5!"32674&#'5!"3266674&#'5! \5799/% 9?@4C& =)8 2B#M  7#: 6>*&!  7-- T)->  "6B V 11 9D 11 5B  11++Sz*+A4++Sи/KиUEX#/# >YEX:/: >YEXQ/Q >YEX/>YEX/>YEX/>YQ/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q /9!и"и"/%и%/&и8и9и9/<иYEX:/: >YEXQ/Q >YF+Q F9и!и"и"/%и%/&иF/и&8и9и9/<ииQиQ/HUR/EX./. >YEX5/5 >YEX3/3 >YEXM/M>Y+M5'ܸ(и8и90133!266654&&&'!"#33!266654&&&'!"#33!53##!"#FP 0M6  ^PP+I3  `PPCNf,&)32+;[p4P=V+F3:97VV+E1?:3VdT#RXY(,H7) Xbc(Qf;c7w, +'+'9'.EX/ >YEX / >YEX/>YEX/>YEX/>Y9 9 и /иии/9"и"/#и*и*/+01!57665#!576654&''5!5!Zba__g)"ZZP ^ PP  P)/P  P7w8#+5+ 59,#595:/ /EX)/) >YEX./. >YEX/>YEX / >YEX/>YEX/>Yии/)9)9и/ии и /)',)90и0/1и 8и8/01%&##!57665#!576654&''5!5!w0& %YEX / >YEX/>YEX/>YEX/>Y9 9 и /иии/9"и"/#и*и*/+01!57665#!576654&''5!5!Z`^bb!ZZP J+ PP  P1V3P  P;m";&" ;h^"E;+^@$/++8/9EX/>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq01#"&&&5466632326665#!576654&''5!5!'$>_XS^3 *  C<"1U>#)f9uEuusso YfhU55R9+ .YU XXDX7=X?\^U +%+<C+C/иC@6и6/<WEXA/A>YEXH/H>YEXP/P>YA!'7GWgw]A '7qAFVq*014&''5!326667&54&''5!3266674&''5!!5#"&'#"&&&5 h/SsDGJF h?bD3NEB) hw:XU]=i33``d7VzIXXDrR-"Kc<XXDrR-&5 XX  X.J3TR&>+;ph;^4;+0+09'0906//01!&##!57665#!576654&''5!5!9,d)Am)f9uEuussnn_KTXi XXDX7=XPb,f}#;++wl+и/A ##&#6#F#]AU#e#]R9wEX2/2>YEX/>YEXg/g>YM+MX01#"''&&#&&#"#4&&&"667%567666654&&&'577666632766663232677&&&&5467%7V6:&! $! ;'6"37*5AS,)+)GTB6*;T\ 786<3)#9-" 5+"  5)2L4#6%i$6=   +/Cf-WE+)&O'6jc['\QZ 3ү+MT$QWZ,f[//0AM+*&=N'w$ J %./ ,P{Yk6>0XZ8,#0 3o)ָ*/+/%ܹ*и/ к%9//EX/ >YEX!/! >YAIYqA!(8HXhx]A (8q!90157654&#"!57665#573666632::E&I":? \7:95W[;/@;>l// )/= cZ/)`"Q)`"Q)`"Q)`"Q) `"Q)`"Q*)h`"QEq)`"QHqb#J8Q)5`BG$++>++$/+1и1/$4к519EX3/3 >YEX:/: >YEX/>YEX/>YEX)/)>Y: AI Y qA!  ( 8 H X h x ]A   ( 8 q'и(и(/+и+/,к5: 9AиBиB/01#"&&&546767666655!576654&#"!57665#573666632`Cu]/H0,V\k9r4V3bR+YXR$ZBwZ5#."+ 1MYEX1/1 >YEX/>YEX/>Yи/иии/19!191RAIRYRqA!RR(R8RHRXRhRxRRRRRRRRR]A RR(R8Rq,1R9619:19CиC/D01!576655#"&&&&''!57665#66767#57366663276673254&#"V+JFFM,V1d#[?.T+YXR$%[@/Z++JFDL+Zk;r4PPP8'1W !CNf.$'1V PVae!H+6 7/8/1ܹ7"и"/ 'к("19EX&/& >YEX-/- >YEX/>YEX/>Y- AI Y qA!  ( 8 H X h x ]A   ( 8 q(- 94и4/501!576654&#"#"&&&54666326665#573666632VZj;r4JyP,>&2*T+YXR#ZPai#rk3'/3"%GgBCNf.$Po6 +1+ " 'к(1918/EX&/& >YEX-/- >Y AI Y qA!  ( 8 H X h x ]A   ( 8 q#и#/$и$/(- 901576654&#"#"&&&54666326665#5736666327 DbA g*>(+)/E cZ /'+8$++($*и*/-к.*9EX,/, >YEX3/3 >YEX/>YEX"/">Y3AIYqA!(8HXhx]A (8q.3901#"&&&546663266654&#"!57665#573666632JxP-='2*al:4T1bT+^]W#CiI&!rk3&/3"%GgBag!^NNCNf.$+QuKo6(+ +  и-к.(9/EX,/, >YEX3/3 >YAIYqA!(8HXhx]A (8q)и)/*и*/.3901#"&&&546663266654&#"!57665#5736666320Od4( l"@E'S" 7? ^7<<8Xa DbA g*>(9=j//)-C cZ'+J8+. +!и!/$к%!.9.:EX#/# >YEX*/* >YEX/>YEX/>Y*AIYqA!(8HXhx]A (8q%*901#"&&&54&&&#"!57665#57366663272J-D,h_--H6;j4 X1f T+WTP$($+.$Cu\0K3!Z  NN  CNf.$ KjJ+ $0uo2ػ+* + "к#9*4/EX!/! >YEX&/& >YAIYqA!(8HXhx]A (8q#&901#"&&&54&#"3!57265#573663272u,@_? 7F%D"YEXA/A >YEX/>YEX0/0>YH+ A!  ' 7 G W g w ]A   ' 7 qAF V q/и// /9A'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q/2и2/<A'9EH901%4&#"326667#"&''666674&#"!57665#57366663266323&0Z,% <-Z2Rl9_l$=0" Z *@T3\k9r4V3bR+YXR$/b6'>**. ;/#349Y>!6(-^UF#_lr4ai#`PPCNf.$*;)B`, +'+ и к'9'.EX/ >YEX#/# >YEX/>YEX/>Y# AI Y qA!  ( 8 H X h x ]A   ( 8 qии/# 901576654&#"!57665#573666632VZk;r4V1dT+YXR$ZBOae!`PPCNf.$ O)+="Q\B34/5/.ܹ4и/к .9!EX/ >YEX'/' >YEX/>YEX / >Y9 и / иии/и/к 9%и&и&/)и)/*и1и1/201!57665!576654&''5!54&''5!^`HVV`^VVP d7 PP  PP - PP  PB" DB" IB?cFd/e/.ܹdи/и.7и7/ 79!к>.9.?:/=/EX/ >YEX'/' >YEX/>YEX / >YEX3/3>YaE+:9 и / иии/и/к :9%и&и&/)и)/*и1и1/2иaMиEV01!57665!576654&''5!54&''5!&###"&&&54632326667'466632^`HVV`^VV0& %<2Rg65hR260/8o0B-/C.n%34P d7 PP  PP - PP  PWD26H0R<" :R217:*FH$;B2" -B" B'&I#c$/%/ܸ$и/ܸ  +"+ и ии"и01#!576654&''5!4&''5!Th LLOL  55  44 44+#$/%/ܸ$и/EX/ >YEX!/! >YEX/>YEX / >Y!9  ии/ии/9и и /01#!576654&''5!4&''5!'^^dX_q a PP  P-Jn PP`#$/%/ܸ$и/ܸ/ /EX/ >YEX!/! >Y9ии/9и и /01"##576654&#'534&#'53 \| == ?T =- m //  1^w 113m"193m"13S"13&"1l3 ^"13^"1*3h^"1E 3^"1H c^ C]D/E/ܸܸD)и)/ܸк)9)9к )9 к )9ии)-и)1и;EX7/7 >YEXA/A >YEX/>YEX#/#>Y+;+;к7979 к 79 и;иииии*и,и.и;001#335#3'#3#3##!!57665#535#534&''5!!4&''5!\wG6nnnnpRQttttT R3%;sssdsd&gXXdsdpX36pXXA+^-M.///.и//+ܹEX/>YEX+/+>Y01#"&&&546663266654&''5!4&''5!#R6`N-@) 3*yur1qe/(04$%GgB1X3XX/{5+^89/:/ܹ0и/9'и'/EX-/- >YEX6/6 >YEX / >YEX/>YEX!/!>Y -90 -901#"&&&546663266655!576654&''5!4&''5!!7`N-@) 3*qCosoqe/(04$%GgBjo XX @ X39k XX/#$/%/$и/%ܹEX/ >YEX / >YEX/>YEX/>Yии/9 и и /ии/9015!5!!57665#4&'/q_Xd^^PP -P  PP f %I#m$/%/$и/ܸ%ܹ++и/ и и /и015!5!!57665#4&'%$K O JJ )p CC C&C CC 0n 5+>?/@/9ܹ?&и&/-к.&99EX,/, >YEX3/3 >YEX/>YEX/>Y3 AI Y qA!  ( 8 H X h x ]A   ( 8 q!.3901!576654&&&#"#"&&&546667266654&''5!666632k/UuE3^XS(?r]6M0""0?%y:hhl>V|JnX EoM*&6bo;,6"0%BY4P  X.J35iiX9B<2/++2и/%и%/2*EX0/0 >YEX7/7 >YEX/>YEX$/$>Y7AIYqA!(8HXhx]A (8q27901#"&&&546667266654&&&#"!576654&''5!666632B=o^6I-"!,9" 8^|DhQjdwo:nnq>VR^n<.6.%AY4eDrR-R?K XXF  X.J3;ph9+<2/++2и/%и%/2*EX0/0 >YEX7/7 >YEX/>Y7AIYqA!(8HXhx]A (8q27901#"&&&546667266654&&&#"!576654&''5!666632@r]6L/" 0?%/SsEgQhwo:jim>VzI+bo;,6!0%BY4DrR-R?IXXH  X.J3;ph/B4߻+)+и 6EX/ >YEX/ >YEX#/#>Y#9/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q01%!576654&''5!666632!576654&&&#"hy:hhl>V|Jnk/UuE3^XS(XXH  X.J35iiXX EoM*&69Dj:7++: :и'ии:&и7-и-/:2EX8/8 >YEX?/? >YEX/>YA!'7GWgw]A '7qAFVq?!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q:?901#"&&&54666323266654&&&#"!576654&''5!666632\xtK".&8&ePd9/Rn?4]VR(jdwo:ddmBK|NqQ:]u;2$$ 0DyeIsO*&6 XX  X.J36nn3+y"1\3 q^"1tKOc#8+ A+ Z+P+AZj]A )9I]AZZjZ]A ZZ)Z9ZIZ]PeEXI/I >YEX>/> >YEX*/*>YEX / >YEXL/L>YU+_+"*I9A*I9LM014&&&#"32666'##"&546667666654&''5!466666325!#"&&&5466632V8R48R67Q46S8h #%CgK9J $}%CgK9JtdJ7dWYb43a[Xc5hEyZ44ZyEExY33Yx-$y.TIm<}viN-56-%y.TI T37 ;}vhN.5``hVm??mVUo@@oBs^3<4/5/.ܹ4и/к .9!01!57665!576654&''5!54&''5!hwwll wbw ooX Lg XX H XX B XX XBsm"+Bs9"+ QBs9;]i^/_/.ܹ^и/к .9!к:.96/9/[A+[IиAR01!57665!576654&''5!54&''5!&###"&&&54632326667'4632hwwll wbw oo9,d)A2Rg65hR260/8o0B-/C.n8.34X Lg XX H XX B XX X_KT0Q<" :Q217:*D  F(:9Bs!"+BBs"+-F'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632?!DfEGhC !DfEFhC!Epp~CDrr|ATvFFvTSvGFvRmPOomPR2%'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632!-B-.C,,B-.C,-SuIIuR,-SvJJuP+3\G**G\31]G**G\1ArS0/SrBBrT01Uq1o'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >Y+#AIYqA!(8HXhx]A (8q014&&&#"326667#"&&&5466632#,C-.D,,B-.C--RuIIvR--SwKJuP*73\G**G\31\F+*F\2AqS0.SqCBrT01Ury3ewF1"R("RZFm"R#F{"RMFm"R#F{"RMF"R#F"RF"R#XZF"RwFh"R#EZF"RF"RF"RFm"R#F"R#-F!"R#BF2"R-FO"R#-rFO"R#-rF"1BF"R#B-F"RF"R#-F "RXZFh"REZFy/C:&+ +0+A   & 6 F ]AU e ] 9AZ0j0]A 00)090I0]A ::&:6:F:]AU:e:]EX+/+ >YEX/>YEX!/!>Y ++5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q!?A!??'?7?G?W?g?w?????????]A ??'?7?qAF?V?q01326767#"&546767#"&&&54666324&&&#"32666E@4GK-1?8  1! =`m'p~CDrr|A!DfEGhC !DfEFhC!mF9&+49A32  R KJ+U$OomPRjTvFFvTSvGFvFy2/CGƻ:&+ +0+A   & 6 F ]AU e ] 9AZ0j0]A 00)090I0]A ::&:6:F:]AU:e:]EX+/+ >YEX/>YEX!/!>Y +ED++5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q!?A!??'?7?G?W?g?w?????????]A ??'?7?qAF?V?q01326767#"&546767#"&&&54666324&&&#"326665!E@4GK-1?8  1! =`m'p~CDrr|A!DfEGhC !DfEFhC!mF9&+49A32  R KJ+U$OomPRjTvFFvTSvGFvF-(<3+ +)+AZ)j)]A ))))9)I)]A 33&363F3]AU3e3]>EX/ >YEX/>Y.AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q01#"&55&'&&&5466632374&&&#"32666 8N-SFZ~CDrr|AE[DQ=8!DfEGhC !DfEFhC!.%xv(omPRlm(B6 -TvFFvTSvGFvF-2(<@3+ +)+AZ)j)]A ))))9)I)]A 33&363F3]AU3e3]BEX/ >YEX/>Y>=+.AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q01#"&55&'&&&5466632374&&&#"326665! 8N-SFZ~CDrr|AE[DQ=8!DfEGhC !DfEFhC!.%xv(omPRlm(B6 -TvFFvTSvGFvFM?0+D'+A &6F]AUe]AZ'j']A '')'9'I'] 'D9 /AZ j ]A  ) 9 I ]:?0:9OEX5/5 >YI+5AIYqA!(8HXhx]A (8qI"01666654&&&#"4666323266654&&&&&&&5466632#"&&& 8K*3kY8'CZ3@bB!.+(W1<3!8\v{v\8QRZOL{P;s[87[xBhg4>l^S%IdTVX,7cm+# '#4#"CFMZh}Yxy=0jx_rU-RPS.CiI&-ERFUF )I*/+/* и /+ܹ  и /EX%/% >YEX/>Y+A!'7GWgw]A '7qAFVq%AIYqA!(8HXhx]A (8q01326667'&&&&#"#"&&&5466632%CaABcD%'C`?AaC&Epp~CDrr|AMj?>jNfKd::dK?mPOomPR1o )Ѹ*/+/* и /+ܹ  ии/EX%/% >Y++%AIYqA!(8HXhx]A (8q013266675&&&&#"#"&&&5466632+@*+@-,?(*@+-RuIIvR--SwKJuP*.T?%%?T.=-O<##YEX%/%>Y+%A!'7GWgw]A '7qAFVq3AIYqA!(8HXhx]A (8q01326666675&&&&&&#"#"&&&&&546666632  &:R77Q;&  &;Q77R:& ,GhZZgG,,GgZZhG,4~y_99_y~4`4~y_99_y~41Wf::fWWf::f4r )?*/+/* и /+ܹ  и/%/0132666554&&&#"#"&&&54666320B''>-5G( 8+ HrRTrDAmT[yFyY!*_m&pT *Zc"P|MM}NITN~F1EF/G/2ܹAZj]A )9I]F<иYEX7/7>Y-+-9- и /7A!'7GWgw]A '7qAFVqAAIYqA!(8HXhx]A (8q (# (901#"&&&#"32666'&&&&#"66663232666#"&&&5466632="-",?:=*!/  -F^;FjG$ -E]9DhF&&2#*?86#-D|lo{A@{qo{A%#+#! GzZ3CrDvW1?mR #+#$(]lQQljSS- 1l2/3/ܹAZj]A )9I]2'и'/#и#/1и1/#19'A &6F]AUe]#19!и!//и//0/"/EX,/, >YEX1/1 >Y+"09,AIYqA!(8HXhx]A (8q"09014'32666'&&#"#"''7&&54666327#9$.C-7=(.D, %%-RuIcG[=V&,-SwK4[%N;7?6*F\!*G\3"BT*k>AqS0)f5b*oBBrT0[4FX"*^W#5FG/H/ܸGи/6AZ6j6]A 66)696I6]и/.A ..&.6.F.]AU.e.]39:9 //EX/ >YEX/>Y'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q3 9: 9@A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"'&'''&5466666327&&#"&4&''3266666/={}}])"^=<6QnSS7a)7T66T=* X 5T66T>* s9!:bb_5509B+11VvMME 'ME%*11Uu ;(YEX$/$>Y1A!'7GWgw]A '7qAFVq01&&#"4&'326667#"&''7&&&&5466666327UslranaUolb8gmcT9[@#8gmcR7Y>!>El^^YEX8/8 >YEX!/!>Y@5++AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq014&&&#"32666#"&&&546663266665#&'&&5466632?!DfEGhC !DfEFhC!0GT$Epp~CDrKjR4+ (2&>-TvFFvTSvGFvI1YM=0g7mPOomP$@[7+7B((+9QF"_F"_F"_F "_XWFh"_EWF<=/>/#ܹAZj]A )9I]=-и-/ A   & 6 F ]AU e ]#и/ #9/EX2/2 >YEX(/(>Y2AIYqA!(8HXhx]A (8q(A!'7GWgw]A '7qAFVq7 79014&&&#"32666#"&'&'#"&&&5466632326667?"DgEGfC !DfEFhC!o#0 0EHEpp~CD~rCpkoB#, SvFFuTSuFEu} '-0&  GrmPOonP .K FB7+++AZj]A )9I]A &6F]AUe]9$9A BB&B6BFB]AUBeB]HEXYEX./.>YEX2/2>Y<AIYqA!(8HXhx]A (8q2A!'7GWgw]A '7qAFVq.<9$.<9&и=014&#"6627&&&&5466632327#"'#"&&&546663O/02/ $1/&(C0<]o48qZ97M0NH$-4=%KLU\lNQnJvR-$Gk긩-ZVL9 TdtAwr74mr@xk[#L9*OokRFK|XYtCFS'(/)/ܹAZj]A )9I](и/A &6F]AUe]+# +01%266654&&&#"#"&&&5466632WQsEFwXQtEFwURjqNOlqO CeEFhE" CeEEhE#u{@Fnr}BF 56/7/6"и"/A &6F]AUe]70ܺ "09AZj]A )9I]"09и/(и(/+++01326776654&&&#"#"&&&5467'76632$,FwYQ9FFwYF6#\n~CpN!,EӀpO+ R8EiE#!8J.FhE"0K2FrBt2]G_UZFoAg,\I2p6JV6A#+7+V+и/и/-79A AA&A6AFA]AUAeA]UиU/EX(/( >YEX2/2 >Y +V+и(<AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<qF<P01!326667#"&&&'#"&&&54666326666324&&&#"32666%4&&&#"!o3S=3/)19A$-H:,-9F+HqM))NrH.N<+ 19A":W<)>+,@)*>+*?)* 3't .[H,  K",+#2Uq?@qU1!*+%C]u5]E()DZ14]G*)F[5'.?$EI6JVNV+7+#A+и/и/79-79AZAjA]A AA)A9AIA]UиU/#XEX/ >YEX/ >YEX(/(>YEX2/2>YU+ AI Y qA!  ( 8 H X h x ]A   ( 8 q(9(9-(9(<A!<<'<7<G<W<g<w<<<<<<<<<]A <<'<7<qAF<V<qFAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8Fq<P01547!4&&&#"5666632666632#"&&&'#"&&&%3266654&&&#"326667!Ei"N^*OH? LXc8EoYCFWlCow>?xoGw]BKXd4Y[.-?aBCb? Aa@Aa?,A+1O;#nMxJ!(}-$$:H%%I:#SikR"8F#-H3>oXsCDrQUwFEt2XA&-Mh<FB*?++5++A ++&+6+F+]AU+e+]AEX/ >YEX/ >YEX$/$>YEX / >Y$"&и'и'/ 0A!00'070G0W0g0w000000000]A 00'070qAF0V0q;AI;Y;qA!;;(;8;H;X;h;x;;;;;;;;;]A ;;(;8;q01"&'#"&&&546663232673!57665326665&&&&#"|132YEX-/->Y +-A!'7GWgw]A '7qAFVqAAIYqA!(8HXhx]A (8q7 9K 901%266654&&&#""3266654&&&#"&&&546667&&&&5466632=\=#AZ7:\?!=]@6M20M82K34JEyahwA4ZwD2cO2@nTVl=1Nc3DwY4T4YxDKvQ*1UtBGxX2+0Nc39iP0.Nj<@fH& WrCBsWKfD3UyM[b33b[MwT4 FdFMG-+J+A &6F]AUe]#-#92-#97@AZJjJ]A JJ)J9JIJ]O/YE +(A!'7GWgw]A '7qAFVq E92 E901%266654&&&#"#"&&&546667&&&&5466673266654&'=\=#AZ7:\?!=]:^B#1Nc3DwY4EyahwA4ZwD2cO2%C]718-3M4.J513T4YxDKvQ*1UtBGxX2yD[qBMwT4 @aRWrCBsWRb?3UyMBq[Do"r_9iP0.Nj<_r"F//ܸ и / / /EX/>YA!'7GWgw]A '7qAFVq01#"&&&53326665Epp~C!CgEFhC!tŽOMwXxGFxY2AE//ܸ и /  + и01#"&&&53326665-SuIIuR,+C-.C,AFtV/.TuH5`H**H_6F//ܹ и / / /EX/ >YAIYqA!(8HXhx]A (8q01&&&&#"#666632?#CeDFfD!Fpp|CRrDDrRkNOi2Ap//ܹ и / EX/ >YܸAIYqA!(8HXhx]A (8q и 01&&&&#"#666632!,A--B--SuIHtQ+A1ZD))DZ1@oQ//Ro?P'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&5466326lkol45kmol5``^_}ݥ_`z{ݦbb|qmpr9]'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632#FiFHjF""FhGHjG">rbbs>=qccq>Kc9:cIJc;;cKZuDBt]ZuCDvF'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632*T}SVS))R~TUT*Mz{ɏOM||ȎMWrBCrUVsCDsUkQNokQRPm"2Pm"2P"2#G P "2 P"2# P "2 P"2# Pp"2P ,"2#X P["26PhS"2#EP("2P("2PS"2P"2#G PR"2#- P"2#B P"2-P"2#-GP"2#-P!"rBPR"2#B- P&"2zPR"2#z- P"2XPh"2EPy0D;+(+A ((&(6(F(]AU(e(](9A ;;&;6;F;]AU;e;]EX/ >YEX / >YEX/>YEX#/#>Y++6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q @A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&5466767#"&&5466323267674&&&#"32666! =`m+`^_`{DL !?8  6lkol45kmol5 KJ+L?mpr9 0: 32  }ݥ_`z{ݦbbPy0DH;+(+A ((&(6(F(]AU(e(](9A ;;&;6;F;]AU;e;]EX/ >YEX / >YEX/>YEX#/#>Y++FE+6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q @A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&5466767#"&&5466323267674&&&#"326665!! =`m+`^_`{DL !?8  6lkol45kmol5 KJ+L?mpr9 0: 32  }ݥ_`z{ݦbbP-';c2++A 22&262F2]AU2e2]EX/ >YEX/>YEX / >YEX/>Y-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-q 7A!77'777G7W7g7w777777777]A 77'777qAF7V7q01#"&55&'&&546632374&&&#"32666 8N-xf{`^_`{gy=8 6lkol45kmol5.%xv,7pr9.B6 -}ݥ_`z{ݦbbP-';?m2++A 22&262F2]AU2e2]EX/ >YEX/>YEX / >YEX/>Y=<+-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-q 7A!77'777G7W7g7w777777777]A 77'777qAF7V7q01#"&55&'&&546632374&&&#"326665! 8N-xf{`^_`{gy=8 6lkol45kmol5.%xv,7pr9.B6 -}ݥ_`z{ݦbbPP )A*/+/* и /и+ܹ  EX%/% >YEX/>Y+A!'7GWgw]A '7qAFVq%AIYqA!(8HXhx]A (8q013266675&&&&#"#"&&546632=:jgil:YEX/>Y5,+%AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq016&&&'"26667#"&&5466324#!"#33!2536opfn98liauA.Ux_ghgP<<<<<T<<YW钐_Jg\1gji<<<<P{3GH/I/4ܹAZj]A )9I]H>и>/#A ##&#6#F#]AU#e#]и/и/EXC/C >YEX9/9>Y/+/9/ и /9A!'7GWgw]A '7qAFVqCAIYqA!(8HXhx]A (8q (# (901#"&&&#"32666&&&&#"66663232666#"&&546632)5C-7uwt6*C3!Dnaop8 Em^lo;'5I6#LNMJC'?2(^^^^5)1<1*0eH^#byDYx*#(#"18qqqqP^m"GPVD &++AZj]A )9I]A   & 6 F ]AU e ];9;/AZ;j;]A ;;);9;I;]5FEX-/- >YEX!/!>Y@5+-AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq014&&&#"32666#"&&54666663266665#&'&&54666326lkol45kmnl59Zp86:`a+Pvf[+N;# .=!4U=!}ݥ_`z{ݦbb:pdRWvqmd]3zm?KU02 6'%GgPVm"GPVm"PV"PV"XPhV"EP KG:+++AZj]A )9I]A &6F]AUe]:9$:9A GG&G6GFG]AUGeG]MEXA/A >YEX///>YEX5/5>Y+5A!'7GWgw]A '7qAFVq/A9$/A9&иAB01&#"627&&&&54666323267#"&'#"&&54666663ZPP_-@(UW9@66Y@$JuHNrE'IhB-19f32?HU46i29|Cc/W}fr~C8oAr,Q@-u]MI[145A&9'md]3Slz{ݦbFJG˸H/I/<ܹHи/ A   & 6 F ]AU e ]<9%<9<.EX&/& >YEX"/" >YEX/>YEX/>Y0;+&AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq9-и-/.и./=и=/>и>/014&&&#"326665#"&&&54666325!#'&&#!326773#'&&##!27676653F?lRUm>>kSUn?;^{y=:x}^;t  ddmYp@ApVXrAAqjD,1PojQ1+C} jm ' -2pG< +<+A   & 6 F ]AU e ]<9%<96)и)/6*и*/<.EX"/" >YEX6/6 >YEX&/& >Y+0;+"A]A(8HXhx ]9%"9-и-/.и./=и=/014&&&#"326665#"&&&54666325!#'&&##326773#'&&##!27676653&)F67G((F67G)&b=PwO(&NxQ=c&K  AA  F86[C&'CZ35\D''C\)0TrC?qU0(K ?BPBEd .+!+A+A   & 6 F ]AU e ]AGEX3/3 >YEX?/? >YEX'/'>Y3AIYqA!(8HXhx]A (8q'A!'7GWgw]A '7qAFVq01&&&&#"326665!57665&'#"&&&&&5466323266673)?:@*ol4H}b8Y=!z8<9YEX7/7>Y +7A!'7GWgw]A '7qAFVqKAIYqA!(8HXhx]A (8q- 9A 901%266654&&&#""3266654&&&#"&&&546667&&&&5466632X@jK*/Oh:=jN,%IlH5]E($B^:9]B$*E[8Ym5Hc;VfmRBpS.>]?6`J++J`6?]=IoN0 2U}X\i98i\XX1 0PpH`U((UKbaQa-+L+A &6F]AUe]#-#92-#97BAZLjL]A LL)L9LIL]SEX/ >YEXYEX(/(>YG +(A!'7GWgw]A '7qAFVq G92 G901%266654&&&#"#"&&&546667&&&&5466673266654&&&'X@jK*/Oh:=jN,%Il 4cN/8Ym5Hc;VfmRBpS.?Qd/$ H % :,,: (FU'OŻA+-#+A &6F]AUe]-KAZ#j#]A ##)#9#I#]72A79FA79-QEX(/( >YEXY+< A!  ' 7 G W g w ]A   ' 7 qAF V q(AIYqA!(8HXhx]A (8q29F901"3266654&&&"3266654&&&'2#"&&&546667&&&&54666*G42H-+H34G* 7*&9)$9()9!H^7&?P+9bG(=jRWg9(G`9*O>&8`~"8K(&K;%#:K(+K8 .?%!B5!0@%)C/R#B_=6Q7!(B[9AkL))LjB:\B(8Q9B`@F-Ma-+J+A &6F]AUe]#-#92-#97@AZJjJ]A JJ)J9JIJ]OEX/ >YEXYEX(/(>YE+( A!  ' 7 G W g w ]A   ' 7 qAF V qE92E901"3266654&&&#"&&&546667&&&&5466673266654&'*@-*B-+B--AJ0O8&?P+9bG(7bRW`3(G`9*O>&9O0*''$9)$8'/!"8K(&K;%#:K(+K8  0?L*/N<& .DV2:iO//Oi:2XD. $;P1.N>- ]Q2!B5!0@%9PF?!6++A !!&!6!F!]AU!e!]!)AEX/>YEX'/'>Y;+' и/и001!266653!666654&&&#"!33!5&&&&5466$32,Lgu~>?0*+Wd6FooE6cW+*0?]_a aRSv\@%!5'h[{\eØ]]e\{[D'5!M|ۛUUP+G :+ +,+AZ j ]A  ) 9 I ]AZj]A )9I]A   & 6 F ]AU e ],IEXA/A >YEX3/3>Y+AAIYqA!(8HXhx]A (8q3'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q01#"&&&54666324&&&&&#"326667#"&&&&&546666632'64&&46'(JhOxҜZ)KiOwћZ3\cc]33]cd\27))73&&3(OjL*[xOiL)[yc^44^cc^44_+B3: '++AZj]A )9I]  и +'-и 0к1'9<EX/// >YEX6/6 >YEX%/%>YEX/>YEX/>Y6AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq169014&&&#"326667#"&'&'!57665#573676632f%HkF'K" < T|Q(Gy@ ybP,2+pYEX6/6 >Y%+6AIYqA!(8HXhx]A (8qи/и/169014&&&#"326667#"&'&'!57665#573676632;.F.0'7Q4.V}O) O? \5!H'3]E)/0U@%  Z)EXCHvT. // )/=*Oo+B3"S+B3"S+-3?T%,+@+@@9%0,2и%5к6,9%JиVEX4/4 >YEX;/; >YEX / >YEX/>YEX"/">Y ;9;EAIEYEqA!EE(E8EHEXEhExEEEEEEEEE]A EE(E8Eq6;E9PA!PP'P7PGPWPgPwPPPPPPPPP]A PP'P7PqAFPVPq01#"&&&54666726665#"&'&'!57665#5736766324&&&#"326663$ 6YB-D-!=T`y@ ybP,2+p ?  DqBy Dֻ#*+ +#и  и /#и#.2и*4и#7к8*9BиFEX6/6 >YEX=/= >YEX(/(>YEX/>YEX / >Y+A!'7GWgw]A '7qAFVq=AIYqA!(8HXhx]A (8qи/и1к8=9B01326667'&&&&#"#"&'&'!57665#53#5736766323j9 QrJ%%@]>&H!G}r<xbQ*0*lYEX8/8 >YEX'/'>YEX/>YEX/>YEX/>Y8AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq'89389014&&&#"327'76666#"&'&'!57665#573676632f%HkF'K" < -)gTr%8%CF@ ybP,2+p ?  >M\gL OO CNf#(HrW|^<B3=R<+>+ и".и0и3к49AZ>j>]A >>)>9>I>]HEX2/2 >YEX9/9 >YEX/>YEX/>YEX/>Y,%+ A  ' 7 G W g w ]A ],и и/(и,.и./9CAICYCqA!CC(C8CHCXChCxCCCCCCCCC]A CC(C8Cq49C9NA!NN'N7NGNWNgNwNNNNNNNNN]A NN'N7NqAFNVNq01#"&'&'32673#"'!576655&#"#6632#5736766324&&&#"326663Gy@ &*>Rsd yb **;Rre P,2+p ?  Dq+B3: '++AZj]A )9I]  и +'-и 0к1'9<EX/// >YEX6/6 >YEX%/%>YEX/>YEX/>Y6AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq169014&&&#"326667#"&'&'!57665#573676632f%HkF'K" < T|Q(Gy@ ybP,2+p ?  DqmyŋL OO DM#(H+B1ToU/V/ܹAZj]A )9I]U+и+/  и=и=/ JкK+9EX3/3 >YEXP/P >YEX%/%>YEX/>YEX/>YPAIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq3=A==]A==(=8=H=X=h=x====== ]3EAIEYEqA!EE(E8EHEXEhExEEEEEEEEE]A EE(E8EqKP9014&&&#"326667#"&'&'!5766546666632#"'&''&&#"676632d$GkF'K" < T|P'Gy? yb%>`XR^2* F@"0[E*+2+o ?  DqmyŋL OO bVbdQ3.L9+  *UT#(H/B\DY+ '+E+AEE]A EE)E9EIEYEiEyEEEEEE ]E +'-и 0к1'9;E9 Oи[EX/ >YEX/ >YEX / >YEX/// >YEX9/9 >YEX6/6 >YEX%/%>YEX/>YUA!UU'U7UGUWUgUwUUUUUUUUU]A UU'U7UqAFUVUqU96JAIJYJqA!JJ(J8JHJXJhJxJJJJJJJJJ]A JJ(J8Jq16J9;6J9@01##"'"''#"&'&'!57665#5736766326666324&&&#"32666\%1N7.* Gy@ ybR,2+pYEX0/0 >YEX/>Y090AIYqA!(8HXhx]A (8q)0901654&&&#"!57665#57367666632w *RF('&'%4[|MybP176:<YwHDF?eH'  'K\{l/ OO CN1' ;c&Gk67/8/72и2/A &6F]AUe]8ܹAZj]A )9I]#и#/%и%/20и0/*/+ +# 901%"3266654&&&'2#"&&&'#666676'6666$)6 +B.6-3D6_E()Ha93/% o )Hf/"?Y79Z?!0TA@eE#<#Bc@[|N# >81/'J[d2s>^@!FB^ I߻1++ +A &6F]AUe]AZ j ]A  ) 9 I ]и+и6иDиKEXYEX#/#>Y#<9 #<9#<9#<9014&&&'66667!5766665&&&&54666754&''5!0G01G.}1G.0G08g[ mo \h76g] om ]f7OjDD~jOCiOOi~EaZ  MM  3XcbY NN  Y2I I1++ +A &6F]AUe]AZ j ]A  ) 9 I ]и+и6иDиK+*+5A   & 6 F ]AU e ]AZj]A )9I]5иBкC>59Wи>YиY/5\и]и*hEX[/[ >YEXR/R >YEXU/U >YEX_/_ >YEXb/b >YEXYEX///>YEX2/2>YEXE/E>YEXH/H>YRAIYqA!(8HXhx]A (8qHA!'7GWgw]A '7qAFVqи%к4H9CH9WR9RYܺ]R901&'&&#"3267674&&&#"326667#"&'&'!57665#"&&&5466632#5%36766321"3XA&&AX3"15%@Y3"12"3W@%>qa5 jn6aq>>qb4R5aq>o  HvPPvH  PvH   HvPqN  MM =NqpNCP\N2(RɻA)+ F++AZj]A )9I] и/F#иF5и5/A AA&A6AFA]AUAeA]T+N+и/N.и./:014&&&#"66667!576655&&&&5466632&&&&#"546666632 ! +A+)NoD GH FoN*4Q7  -=#%/7=Q28K-&GgB8HW1At[>  // 2RxR8cJ+  ! ,?,8[F1-YOC1*Jd2pR@A)+ F++AZj]A )9I] и/F#иF5и5/A AA&A6AFA]AUAeA]TEX./. >YEXN/N >Y+NAIYqA!(8HXhx]A (8qи:014&&&#"66667!576655&&&&5466632&&&&#"546666632 ! +A+)NoD GH FoN*4Q7  -=#%/7=Q2^8K-&GgB8HW1At[>  // 2RxR8cJ+  ! ,?,8[F1-YOC1*JdFCG-+ 2+?+AZj]A )9I]2!и!/A --&-6-F-]AU-e-]?EEX/ >YEX:/: >YEX/>Y:AIYqA!(8HXhx]A (8q :9!:9&к2:9014&&&#"6666"&&&5466632&&&&#"46666632#2!0#CdB!΍J&P|U, #'E^6(9HT/]~L!N+^}K >wnYvO׈^{G$,7,HjI^sNBLpQ.F{alѣd3R^67/8/ܹAZj]A )9I]7+и+/  EX1/1 >Y+1AIYqA!(8HXhx]A (8qи/ и //и//0и0/014&&&#"##236667'"&&&'!576654&''5!2}(Wb$"&Q[2To/+l{ՋDKuQ+{(T\qo7XXDX,b&I!45/6/ܸ5и/ "AZ"j"]A "")"9"I"] *+'+0+и'и/'*и*/01#"&&&#!576654&''5!24&&&###236667^H XFP?^[,8Z@*  4U; RDfB! 55  4;^F-F1}2N115 /++AZj]A )9I]и/#и#/)7EX0/0 >YEX"/">Y +0AIYqA!(8HXhx]A (8qи/и//и//014&&&#"#326667'"&&&'6!5666654&&'5!2DkN, 1@eG&ExZ +2=+%)/us92O7L8W?S{Q( PP  PFr3Rm"33R&"33R^=>/?/8ܹAZj]A )9I]>,и,/! к,89=и=/EX2/2 >YAIYqA!(8HXhx]A (8qи/ и /0и0/1и1/014&&&#"##237'766'"&&&'!576654&''5!2}(Wb$"&ZFaTg15w0e6/+l{ՋDi_SKuQ+{>* XXDX,br4<3R^>M?/@/?/и//$и@ܹ AZ j ]A  ) 9 I ]$и/3EX9/9 >YEX/ >YEX2/2 >Y+9AIYqA!(8HXhx]A (8qи/и/0и1и7и7/8и8/012366654&&&#"##3%'"&&&'!57665#5354&''5!2"&Q[2(Wb$To/+l{ՋD(TYKuQ+g5qo7XXgX,b^DKE/F/ܹAZj]A )9I]E+и+/  EX?/? >Y+?AIYqA!(8HXhx]A (8qи/ и //и//0и0/?7A77]A77(787H7X7h7x777777 ]014&&&#"##236667'"&&&'!576654&##"#"&&&5463!2(Wa$#%Q[2So/+ jN63VA%( ՋDKuQ+{(T\qo7XX F %/rk,bAA^5?IR +ии 6и Dи NEX$/$ >YEX/>Y+@+3+и3и$"*и,и6к7$9":и=и=/?и?/CиMи3O01'"&&&'!57665#535#5354&''5!23#3!&&#"##67!254'!!66ToI($r7\igtI?z{ ba"!7tDeC!XXdsdXCiKd  'd;U\pQWV s'.#^ɻ2=+I+Q%+n+d+2 иI'и'/QLAZnjn]A nn)n9nIn]nYиY/AZdjd]A dd)d9dId]EXC/C >YEXJ/J >YEXs/s >YEXM/M >YEX7/7>YEX/>YEX"/">Y,+CAIYqA!(8HXhx]A (8qи/ и /J& AиA/BиB/s~AI~Y~qA!~~(~8~H~X~h~x~~~~~~~~~]A ~~(~8~qIs~9&OиPи_A!__'_7_G_W_g_w_________]A __'_7_qAF_V_q014&&&#"##23666#"&&&'#"&5#'"&&&'!576654&''5!2773!!3267533266654&&&'&&&&5466632#'&&#"$$O|X ! " HvR-0[R&I?4"k?h^a T[+&zbo~=dSQ%7%#^R6'>*:S62N4,T|P(J=.`M,KJ0O:0R;!KuQ+{(TKxS, lz^]-XXDX+bp5f=U5Ǯ%,9+=1.5=I.DnM* M<#4.04@NBP^;YEX / >YEX/>Y AIYqA!(8HXhx]A (8q  9 90и0/1014&&&#"666657265#5%36666323 ;1,ZVO!jGme#WdpjOo*_Q6&@T-cPDO'H7 @hDjĴ<PP8evFGa+NY+$2++AZj]A )9I]$A NN&N6NFN]AUNeN]N,и,/6YN92YEX)/)>YEX/>Yp +A!'7GWgw]A '7qAFVq#9-)f969fBAIBYBqA!BB(B8BHBXBhBxBBBBBBBBB]A BB(B8Bqk)f9014&&&&&&&#"326667#"&&&'#"&'566655666674&&&#"5666654&&&'&&5466632666632t1BMSRN",":md[(BV2{6bS6_XW/3J02\#B4 `)@HL#0HV&#A3#5>5#3IQ.&#3;+VSCp\I138btxb>:\w}`9+@*> *BjG&)-ZJ.T 2!K*V#@pT03P9/H?;ER7AT38(6:?$#l-%#w"A`=-%##%-=`A"UR7X+{{+W86ph\D''D\hp60,+{{,,0RU $=R\a._k9 fExN 1 9k_qF\ XX \ YEX/>Y++!и!/&и&/*и4и6иAиEиE/F01!576655"&&&554&&Ȕ34&''5!26665466633"#czd* 2%H7W<4dTcbTd5YEX@/@ >YEX*/*>YEX6/6>Y@AIYqA!(8HXhx]A (8q6 A!  ' 7 G W g w ]A   ' 7 qAF V q16 901&&#"326667&&&&&&'!57665#"&&&54666725466632G*TW-#KuS/0-P */(!. e}FKM"_j8O؉=o\+B-/?/2ܹ>(и(/A &6F]AUe]к(29EX-/- >YEX/>YEX#/#>Y-AIYqA!(8HXhx]A (8q# A!  ' 7 G W g w ]A   ' 7 qAF V q# 901&&#"326667#"&&&55#"&&&546663272G*TW-#KuS/0-E-C-bf4FMM"_h8P܌JNN +)/1ܹ='и'/ A   & 6 F ]AU e ]к'19EX,/, >YEX/>Y"+,AIYqA!(8HXhx]A (8q"9014&&&#"32666#"&&&5#"&&&5466632720J35J00I24K0:.C-^c3*c9Yd65eZYe6'"*+I+S+A &6F]AUe]IAZj]A )9I]I(и3к4>S9S_EXC/C >YEXN/N >YEX-/->YEX9/9>YEXX/X>YEX[/[>YCAIYqA!(8HXhx]A (8q9 A!  ' 7 G W g w ]A   ' 7 qAF V qXA!'7GWgw]A '7qAFVqN"AI"Y"qA!""("8"H"X"h"x"""""""""]A ""("8"q49 9IN"901&&#"3266673266654&&&#"!57665#"&&&5466632676632#"&'&'G*TW-#KuS/0-< T|Q(%HkF'K" cyFMM"_h8P܌JNN ,2+p  MM rNf}ɍL ^#(HryŋLP+=>/?/2ܹ>&и&/ A   & 6 F ]AU e ]к&29EX/>YEX!/!>Y-+!A!'7GWgw]A '7qAFVq!9801&&&&#"3267#"&&&55#"$&54666663237'0<&pMGiEy3{ElLN]36Ed%MtzUlX')>*"$ K젞H9-8-7h]5.Y Xe: ":kQ0/$4#T+EX / >Y+  ܸи/и/и/01%&&#"!57665#573666632 " B# XB `6(/2 ($ 0/ (/m+(zMz!K+ ++ и/и/и/01&&#"!57665#573666632m ! C# XB `6).2/ & ,+ %+d '$ p#o!ݻ+EX/ >YEX / >YEX/ >Y +AIYqA!(8HXhx]A (8q ии/и/01&&#"!57665#573666632# C" XA `5).20 )# // )/l*' yw/ "U!"U/ "U/ "Ul/ "UI "U*/h "UEO/h2"U#EO-d/ "UHO/- 59 + +$ &и&/)к*& 9EX(/( >YEX4/4 >YEX/// >YEX/>YEX/>Y/AIYqA!(8HXhx]A (8q  и /!и%и%/&и&/*/901&&#"#"&&&5466672655!57665#5736666324&2f5-N8 6=heT?HM$$"  !C<vx%."- 6BNCNGB.  +> + и ии/ EX/ >YEX*/* >YEX%/% >YEX/>Y +%AIYqA!(8HXhx]A (8qи/и/ иии/и/ %901&&#"3#!57665#53#5736666324&2f5eT?HM$$"  !CYEX5/5 >YEX0/0 >YEX / >YB+#+#ии/  и/и/к 09#%и%/)&+ 09:01#"'!57665&'&#"#6666325#573666632#&&#"326667 (:N2 e!$R ';N2 T?HM$$" P4&2f5!%[-R=%PNN$-R>$CNGB. !C<$/+ -+!EX / >YEX,/, >YEX'/' >YEX/>Y'AIYqA!(8HXhx]A (8qи/и/"'901&&#"7#"&&&5#5736666324&2f5'#%9CgP!T?HM$$"  !CYEX"/" >YEX/ >YEX / >YAIYqA!(8HXhx]A (8qи/и/ 901&&#"!57665#5736666324&2f5eT?HM$$"  !C<OM CNGB. #!+и"и"/!%EX/ >YEX/>YEX / >YEX/>Y9A!'7GWgw]A '7qAFVqи/и!и!/"и"/01!#5#"&&&'5332674&''5!3T?HM$$! P5&1g5eGB.  C<?PN9Ca#Z!+и!%EX/ >Y+и/и!и!/01#5#"&&&'5332674&''5!3J7).2 4 " C" WLA `m+'y )$Y 0/ U(+4* + и*6EX#/# >YEX/>YEX/>YEX*/*>Y #9A!'7GWgw]A '7qAFVq#!%и%/&01#"&&&55#"&&&'5332674&''5!7%9DgQ!?HM$$! P5&1g5e(#1&F~hGB.  C<?PN"jm\'va4X* +  EX#/# >Y+#!%и%/&01#"&&&55#"&&&'5332674&''5!7v%-CX4).2 4 " C" WLA  n  J *Kh>k+'y )$Y 0/ ?B7 a +-л+(EX,/, >YEX/>YEX/>YEX/>Y,9%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q017#"&&&55#"&&&'533267#5%3^(#%9DgQ!?HM$$! P5&1g5T"jm\'1&F~hGB.  C<9DO+иEX/ >YEX/>YEX / >YEX/>Y9A!'7GWgw]A '7qAFVqи/и/01!#5#"&&&'533267#5%33T?HM$$! P5&1g5TGB.  C<9DOC+%/ +EX!/! >YEX/>Y01'!5766665466632-  d#b 5cW7H+{!/ >mV   PP  Qf:$+Hy+)и?EX/// >YEX/>YC+'+'ии/!к"/901#"'!5766665&'&#"#6666325466632'326667 (:N2 d#b !$R ';N2 5cW7H+- !%[-R=%  PP  N$-R>$Qf:$+!/ >mVu$+^//% +EX/ >YEX/>Y01#"&&&&&54&&&'&&&&54666327^+B-LsT8!   !,B,LtT8!!,"/Qm|@HgF* , ,"/Rm|@HgG* ,B#A+EX/ >YEX/>Y!и"и"/01576654&&&'&&&&5466632y   !,B,LtT8!dBOHgF* , ,"/Rm|@O0eI9IøJ/K/Jи/и/K+ܺ0+9:AZ:j:]A ::):9:I:]@9+&?+E+и/9и/9и/?#и#/0E901"#"&&&&&&&##"##!576654&''5!234&&&##2332666eYEX/>YEX/>YEX/>YT+и/ и /"и"//)AI)Y)qA!))()8)H)X)h)x)))))))))]A ))()8)q.и./:T9"Dи.JиLиL/MиM/O01!#"&&&'&&&&##"!5667676654&'&'&&'5!234&&&#&##"332666% Pb< &9T@% " T  ^l:(BW/0A+ (JCBjM   %CfE" ,EW*7R4 PP  P=eK6P:& +9G+#@0+C..KB1m"5B1m"5B1("5*B1S"5 B1&"5B1^"5*Bh1^"5EBh1"5#E-B1^"5H 1^ F G/H/8ܹAZj]A )9I]G(и(/и(,к=(89EX2/2 >YEX/>YEX / >YEX"/">Y+2 $и$/%и%/)и+и0и0/1и1/=9%F014&&&32666#"&&&&&&&##!57665#534&''5!23o(Wa^fUZ.$+axG&%Fv`\ojjuE8]zAQc:;dSAgG$Bni 7ZsysZ7-XXkX&WdQtP2FYfd\F*?+1^EV W/X/W+и+/X7ܺ<+79FAZFjF]A FF)F9FIF]LEX1/1 >YEX$/$>YEX/>YEX/>YR+и/и/1/<R9E/KиLиRMиM/ROиO/01!#"&&&&&&&#"7#"&&&&&54&''5!234&&&##33326661$+awI& &Fv_  *8V^>$mtF8]zAQc:;dS<(Va^UY. 7[tyt[7u;jW@',,Mj{E{X&WdQtP2FYfd\F*AeF%DoB+1û + %EX$/$ >YEX+/+ >YEX/>Y+AIYqA!(8HXhx]A (8q&+901&&#"7#"&&&54&''5!6666323<&DJH & 1?Z jfQWW$-0/d, -G1+b[H'0,JnX:[?"Bq^?LM/N/Mи/:и/Nܺ9@AZ@j@]A @@)@9@I@]:DиD/'.+C+H+8и8/013576654&''5!32#3267#"&&&'&&&&##4&##32666Bzz}y}?:\r9.L>139D, )G/HhTH'ISX,"}b4&NmDXDZZ-@lSNsL& 1GV.AiBZ =n\FtS.AXW_u":P;^Lal+x+C0+&+aAZ0j0]A 00)090I0]0и/AZ&j&]A &&)&9&I&]A xx&x6xFx]AUxex]}l9EXr/r >YEX/ >YEX5/5 >YEXx/x >YEX/>YEXR/R>YEXM/M>YEXf/f>Y [+r ;и;/5@AI@Y@qA!@@(@8@H@X@h@x@@@@@@@@@]A @@(@8@qfdhиh/iиi/pиp/qиq/}[ 9i014&&&##2232666#"&&&'33266654&&&'&&&&5466632#'&&#"#"&&&&&&&#"#!576654&''5!23$O{WT MwQ)0[R*QC4^R6'>*:S62N4,T|P(J=.`M,KJ0O:0R;! 'Sg@$%BjUa6``iu?3Tm;KZ44[LBeF$DoKxS, %,9+=1.5=I.DnM* M<#4.04@N 7[tyt[7-XXDX&VeQtP2GZecZF)Bowj|5@+L+a+AZj]A )9I]5к%L9'@9Q@9VL9\AZaja]A aa)a9aIa]lf/&/EXF/F >YEXa/a >YEX"/">YEX/>YEX:/:>Y /+F"%"98и8/9и9/<иYEX/ >YEX/ >YEX'/'>YJ+и/и/'%2J9?и%EиF0166663233274&''5!!"&&&546667&&&&'&&&&'&&#33&&##" 7O& &9T@% XXXJ^l:(BW/0A+  C3iBjMD $DeE" .598Q47 PP  P=eK6P:& *9H+)% +C.w.L1%<LG+=+ 9G"иG*AZ=j=]A ==)=9=I=]NEX#/# >YEXYEX7/7 >YEX/>Y,B+< B,9"и"/GиH01"#!5666654&&"'5!"32676676666324&&&##"32666%CJ(  SE/WB(:l^J*&&*+%BKY P  PP %P&*VF, 7K..C%p<KL/M/Lи/Mܺ 9F*и=AZ=j=]A ==)=9=I=]2и2/FCиC/EX#/# >YEXYEX7/7 >YG+<#Bܺ #B9Gи/"и"/01"#!5626654&&"'5!"32676676666324&&&##"32666,0 6-8+%Gb=   +1:'@4  -B,%,2E+4&  &. #0!,=%00004*D!- (^ARS/T/<ܹS0и0/+0<9Bи0HA HH&H6HFH]AUHeH]EX5/5 >YEX/>YEX/>YM + и/ и/+ M957BиCиMPиP/MRиR/01!57665&'&&#"#"&'&'576676666667&&&&546663!#"332727l'FbB*,#II<+&#?%%9cTHyY2?ƒ jjfgQ!$Q^$X 6JU^^[( V'djk]I5PoJcZ*X X%FfBQmB7GH/I/Hи/Iܺ 9&8A 88&868F8]AU8e8]&AEX/ >YEX2/2>YEX / >YEX7/7>Y>)+2 )>9и/и"и#и#/BиC01'2666766667&&&&546663!!57665&##"#"&&&'33267#".E2! .E0/WB(:l^XXTX %F\;r i"EeD$ DMjBL(D5!F?2 &:P6Ke=P  PP 7$YEX2/2>YEX / >YEX7/7>Y>)+2 )>9и/и"и#и#/BиC0152666766667&&&&546663!!57665&##"#"&&&'33267#".E2! .E0/WB(:l^XXTX %F\;r i"EeD$ DMjBL(D5!F?2 &:P6Ke=P  PP 7$YEX/>YA!'7GWgw]A '7qAFVq$/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q01#"&&&'33266654&&&'&&&&5466632#'&&#"6e[/YL:h[<,D/"@\;8W;1^Y-RD4kV0TQ4WA6[B%)KvP* +8+<1-5=I.DnM* M<#4/05AN1o56/7/ܸ6и/и/AZj]A )9I],A ,,&,6,F,]AU,e,]EX / >Y+ )AI)Y)qA!))()8)H)X)h)x)))))))))]A ))()8)q01#"&&&'533266654&&&'&&&&54632#'&&#"x:2' F=(-*<&%8'|t;[D 785#:*";*[f k ## $,RaX -%'.F"VF&"V"9F"V\F"V\F&"V"\9F"V9Fh"VEFh"V#E9F"VHF"VHF3cCK8++8#и#/.9./AZ.j.]A ..).9.I.]A KK&K6KFK]AUKeK]UeEX=/= >YEX/>YEX/>YEX/>YEX[/[>Y_+A!'7GWgw]A '7qAFVq)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q=HAIHYHqA!HH(H8HHHXHhHxHHHHHHHHH]A HH(H8Hq01#"&'&'53266654&#"5#"&&&'33266654&&&'&&&&5466632#'&&#"6632$?W45+/%6* /YK:h[<,D/"@];8V;1^Y-RD4kV0UQ5WA6ZB%6dI!% 5(0H2P  && %,9+=1.5=I.DnM* M<#4.04@N2KxS o#7F+J`/+:&+& и/и//B:LEX4/4 >YEX/>YEX/>Y!A!!!'!7!G!W!g!w!!!!!!!!!]A !!'!7!qAF!V!q !94?AI?Y?qA!??(?8?H?X?h?x?????????]A ??(?8?q01#"&&&'37# 533266654&&&&&&&5466632#'&&#"6d[%6)!?6 8N-h[<,D/)DV[VD)1^Y-RD4kV0UQ)CUYUC))KxS, B7 -"-$%,9,A3**/>P7DnM* M<+>1))/=P2pJ/+&+ AZ&j&]A &&)&9&I&]&и//и//BEX4/4 >Y!+! !94?AI?Y?qA!??(?8?H?X?h?x?????????]A ??(?8?q01#"&&&'37#"533266654&&&&&&&5466632#'&&#"#A_;# )#k$3D<',-8;8,>Y95," F 7 75,7:7,-H2(!V ?h #'%0!)B. V .$%%0F+I@-+8$+$89/A @@&@6@F@]AU@e@]@и/$89EX2/2 >YEX/>YEX/>YA!'7GWgw]A '7qAFVq92=AI=Y=qA!==(=8=H=X=h=x=========]A ==(=8=q01!"&&&546667265#"&&&'33266654&&&&&&&5466632#'&&#"-N8 6=3]/YK:h[<,D/)DVYVD)0^Y-RD4kT2SS)CUYUC)%-"- 7B3(0 #,9,@3)*/=Q7CnN* M<,A2)*.YEX / >Y :9A!'7GWgw]A '7qAFVq, :9:EAIEYEqA!EE(E8EHEXEhExEEEEEEEEE]A EE(E8Eq01#"&&&'33266654&&&'&'&#"#66767'&&5466632#'&&#"676667 6d[/YK:h[<,D/"@];$R ' 1^Y-RD4kV0UQ5WA6-[-)'"'2KxS, %,9+=1. $-R I.DnM* M<#4.0 $F+/R˸S/T/ܸS6и6/!и!/!9,AZ,j,]A ,,),9,I,]и/и/6IA II&I6IFI]AUIeI]EX;/; >YEX/>YEX/>YEX/>Y'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q!ܸ;FAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8Fq01#"&'37#"&&&&&#33266654&&&'&&&&5466632#'&&#"6d[  )0430+<%Rz_MJP3h[<,D/"@];8V;1^Y-RD4kV0UQ5WA5[B%)KxS, 9KRD- +"/"IooI%,9+<1.6YEX/>Y AIYqA!(8HXhx]A (8q2A!22'272G2W2g2w222222222]A 22'272qAF2V2q01%#"&&&546667666654&#"#76632326773:MY/Zb45Uk65G*OS0Lk [;W99_D&.C+<\ h !EjH=aOB*)-!;J!3PC>""0/:-8+%+)%EX%/% >YEX/>Y01'#"&546767666&'&66632"* &[]_U"+ &\]0C+#,i'?_HwXqA9)#- j(?_HWrA%) /%/01'#"&546767666&'&66632 t`;]<>7 ua<\=, ] ? &9+G4\C'" @ &9+4\D' <0&+#//EX8/8 >Y#8901'#"&'37#"&5546767666&'&66632"* &[](=6 8N-"+ &[^/C,#,i'>_HWrAB6 -".%xv#- k(?`HqWrA%+CA#+EEX?/? >YEX+/+>Y $+01'!#"&&&546667266655!#"&546767666&'&66632"* s:R3-G1|#_ &[]_U"+ &\]0C+#,i'?_Hr;Y<%."-  .!XqA9)#- j(?_HWrA%+ A0+A &6F]AUe]EX=/= >YEX#/#>YEX+/+>Y5++ A!  ' 7 G W g w ]A   ' 7 qAF V q(+=975901&&#"326'&'&&'#"&&&5466632&66632Z?0@429F!* 3( d +"y/M7'@U.D? &\]0C+406?^#,i'>_H????>:)7IW4G'.Q=#WrA%VwGH/I/ܹAZj]A )9I]H$и$/1и1/$>A >>&>6>F>]AU>e>]EX)/) >YEX/>YA!'7GWgw]A '7qAFVq)9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q01#"&'&'33266654&&&'&&&&5466632#'&&'&&&&#"<͐T08+ 3J0AoP-Fj~8?rW3H~f:eYL"u +B/>bD%%GjE]c4NsF k   ]I:@TqN[f6    "=V4/MA8#L^uPm"6P"6# PS"6PS"6P"6# P&"6Ph"6ELPh&"6#ELP"6HLP"6HLP3p,X>++4и4/KиK/A XX&X6XFX]AUXeX]bEXC/C >YEX/>YEX/>YEX/>YEX/>YEXh/h>Yl+A!'7GWgw]A '7qAFVq/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/qCSAISYSqA!SS(S8SHSXShSxSSSSSSSSS]A SS(S8Sq01#"&'&'53266654&#"5#"&'&'33266654&&&'&&&&5466632#'&&'&&&&#"6632 $?W45+/%6*T07, 4K0AoP-Gk~8?sW3He:gYM"u +C.>bD%%IjE]c4=g1: 5(0H2P  &&k  !>Z9>]I:@TqN[i9 $AX4/MA8#L^uMNv$ j#7Q@A/B/%ܸи/A и /%AZj]A )9I] 1A 11&161F1]AU1e1]:и:/;и;/EX / >YEX/>Y AIYqA!(8HXhx]A (8q6A!66'676G6W6g6w666666666]A 66'676qAF6V6q01%#"&&&546667666654&#"#663232667766773,80Sɀ;8i]FmL(xgh'u Euc{F7\w@&TRL:"+Nl@0K6 #+YEX/>Y ++'AIYqA!(8HXhx]A (8q/и1и5и 7иBA!BB'B7BGBWBgBwBBBBBBBBB]A BB'B7BqAFBVBq01%#"&&&5467#53667!5!6654&#"#66323#!!32666766773(2+yKs5m&Y4>Azm/E0#i ?jYo?Y K). $B2'Fa:+D0  t+YEX/ >Y+ и01#"&5#57733#326767A$JCTZ;:64#  +  ?J)'=J;yk,w#"WB#7"W! "W!"W*7h"WE7"WH7"WH7"WJ873E7,!++AZj]A )9I]!,9,ܸ,'&/EX(/( >YEX/>YEX/>Y1+A!'7GWgw]A '7qAFVq&9("*и+к6&9A01#"&'&'53266654&#"5&'&5#5773!!3267676632\$?W45+/%6*: 4\Z!)=)3&-&215 5(0H2P  && "6zCBf=U5  R h#77+/%++% /EX!/! >YEX/>YEX/>YEX/>Y*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q*9!#и$к/901#"&&&5466672655#"&5#5773!!326767.N86;?*th\Z!)=)3vv%-"- 7B  lzCBf=U5  )/y%++% и"и"/EX/ >YEX!/! >Y*+*9*!#и$01#"&&&5466672655#"&5#57733#326767RW2%l#' )LCU[<:(!  GF  V!(AI((=%3 7%+ ии/EX/ >YEX/>Y  + ии и и A!  ' 7 G W g w ]A   ' 7 qAF V q%901%#"&55#53#5773!!!!326767&-&d7th\Z!!)=)3+ lzgGCBfg=U5  @+,и2и61/EX3/3 >YEX/>Y;+*+*ии/ A!  ' 7 G W g w ]A   ' 7 qAF V q19$к%19*,и,/3-5и601#"'326767#"&5'&#"#666632#5773!!326667~ (:N2 )=)3&-&d7th !$R ';N2 \Z!!%[-R=%B=U5  R lz$-R>$CBf$^?$+и и"и"/ /#/EX / >YEX/>Y ииA!'7GWgw]A '7qAFVq# 9"# 9017##57733326767#"&''y\ZˤW:)=)3&-&d7ahT2CB9=U5  R JS:70#+ и#'EX,/, >YEX / >YEX / >Y  A!'7GWgw]A '7qAFVq ,9$и%01'!!326767#"&5#57466632!  !)=)3&-&d7th!Vs,B,h)  0DS/f=U5  R lzCB`Q"- +Ȼ+ /EX/ >YEX/>Y ииA!'7GWgw]A '7qAFVq 901#"&5#5773!!326767'-&e8sh\X!RR3spyaCBf {h   14++AZj]A )9I]9%и)к*93/$/EX&/& >YEX/>Y-+ A!  ' 7 G W g w ]A   ' 7 qAF V q$9& (и)к*-901%4&#"326667#"&''66667#5773!!6632u/--I*33 5&^'IhASw<` V3?K*\Z!,O3#?//'U_+6-;bH(:;JN'-dfc-CBf(;7^ Y8-++T+9-T9!-T9)-T983и?иAиA/DкE-T9H-T9T['/F/EXC/C >YEX1/1 >YEXN/N >YEX4/4 >YEX)/)>YEX/>YEX/>YEX$/$>YEX&/&>Yи/иии/'F9'F9!'F91.6и7кE'F9H1.9WиW/X01!576654&&&#"!57665767'7#"&5#5773!!#5%36766632XT/N;<;7X3b&-_^/ th\Z!) Ra)]_(;eK+\P,J6  `PPQ R:OlzCBf=U5 cDOK9 '&LuOP7VWg$+I.+8@+A II&I6IFI]AUIeI].I9$кN898Xܸ8i/ /EX/ >YEX3/3 >YEX / >YEX/>YEX/>YEX/>YS[+ 9"и#и)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q3=A==]A==(=8=H=X=h=x====== ]3DAIDYDqA!DD(D8DHDXDhDxDDDDDDDDD]A DD(D8DqN 9cA!cc'c7cGcWcgcwccccccccc]A cc'c7cqAFcVcq01%##"'#467&'#"&5#57733#3267&5466632#"&'5&&#"6666324&#"32666V7_I V Y4?J*th\Z .F;ObCuW1!+"2-DmL(&<*.D]>&B0o(%);* ( >08cJ*={99D%f9,lzCBf=J' 6.pąC5M2- >oYYEX;/; >YEX/ >YEX/>YEX / >Yии  A!  ' 7 G W g w ]A   ' 7 qAF V q(и;FAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8Fq01#"&&&'#"&5#57733#327533266654&&&&&&&5466632#'&&#"6d[)PF:%_4th\Z 4)'i\<+E/)DV[VD)1^X-RE4kV0UQ)CUYUC))KxS, lzCBf=X8 ͮ%,9,A3**/>P7DnM* M<+>1))/=P7+G"5+";EXC/C >YEXYEX/>YEX2/2>Y< 2'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q,C9 6и701'#"&5467676664'!326767#"&5#5773!'&66632"+ &[]_U"* {)=)3&-&d7th\Z '\]0C,#,i'?_HwXqA9)#- j(@_G=U5  R lzCBgWrA% Ȼ+/EX/ >YEX/>Y AI Y qA!  ( 8 H X h x ]A   ( 8 q9и01#5!5!4&&&#"56766323\[ (>(4'-&e8shf<=V4  R lzXC<o+EX/ >YEX / >Yܸ  ии/иии01#'&&##!57665#"#T j'j T  PP   <!}+ + /EX/ >YEX/>Yܸ и/ииии 01#'&&###4&&&##57665#"#T jiDpUKj T  qXzK"P   <+,/-/,и/-ܹEX#/# >YEX/>Y  +A!'7GWgw]A '7qAFVq и/##!ܸ%и&и*и+01326554&''5!#"&&&5#"#!#'&&##VJONE``eN TuT clla PP ,TzNG  <5Ļ-++!"+!и!7!/EX/ >YEX/ >YEX'/'>Yܸ' и/и/ и/*и*/.и/и3и401#'&&##3!2654&''5!#4&&&#!57665#"#T nraXXiDpUiWn T    PP  qXzK"P   !^@+EX/ >Yܸиии01'&&#!!57665!"#!1ՃwXXmG I?+  ++  ии01'&&##!57665#"#5! UV Ns Y 55  sU+EX/ >YEX / >Yܸиии01'&&##!57665#"#!\ ^3a pӏ PP !S"7!&"7! ^"7!^"7*!h^"7E!^"7H!^"7H!3^B 4#+#49/4и/EX+/+ >YEX/>YEX/>Y>+A!'7GWgw]A '7qAFVq+9+$+)ܸ-и.и$2и301#"&'&'53266654&#"5#57665!"#!#'&&#!#6632Q$?W45+/%6*wy 5(0H2P  &&XmGX#7!^#r + иEX!/! >Y+!ܸ!иииии 01'&&#!!!!57665!5!!"#!1Ճw hXXhGS.^+`+и ии!EX)/) >Yܸ)"и#и'и(01'&&##77!576655'75'7#"#! 88o)o44 eV}Pa}PXX|Tb|T!G!^$'+и% //EX/ >YEX"/" >Yܺ 9ик% 9&и'01'&'&'!57665'!"#!73#1 Ճ^w^aYи01'&&#!!57665##"&&&546663!1Ճ6= !$%0''Ga:XXmEHt )A-?gJ(!^+,+EX&/& >Yи 01#"&'&'754&&&##!57665!"#!2 2%#* |-I4Ճw0YE*hLD/!XXmG:^!+^'U+EX/ >YEX/>Yܸ!и"и&и'017#"&&&&&5!"#!#'&&#!!*8V^>$wy+;jW@',,Mj{EG!\^N++/EX/ >Yܸиии01%#4&##57665!"#!#'&&#!iuwyۋXoG!^,-/./-и/.ܹ EX$/$ >YEX/>YA!'7GWgw]A '7qAFVq$$"ܸ&и'и+и,013266654&''5!!"&5!"#!#'&&#!4N3)E2ujNwyvRoC@iMZZG!\P^:++++и</EX/ >YEX3/3 >YEX / >YEX%/%>Y%и и / и /и/и/и/(и(/,и-и31ܸ5и6013!2654&''5!#4&&&""#!57665#"#!#'&&#k)y llh8fT/>43$vwy@ XX mh2X oG^=>/?/8ܹ>и/,к-89EX$/$ >Y2 +$$"ܸ&и'и+и,к- 2901!576654&&&#"!57665#"#!#'&&##666632d1P<7:<doqp%VXU$3o\;oX1C) !XXkE,"FtXRXu^;YEX/>Y7+)")'ܸ+и,и"0и1к27901#5666654&&&#"!57665#"#!#'&&##666632uL[Qe7.WQ;>?e lpq&Z[X#NPk*YCgGEtS. XXkE)-$A|!%&'/(/!ܹ' и ///EX/>Y9A!'7GWgw]A '7qAFVq015#"&&&5#573326667#573 18>+D0]52#)&! ^7 :4F 1K4M*0q!3$ *0 0#o"g#/$/ܹ# и /EX / >YEX/ >Y+и/015#"&5#573326667#57319>V`^78G)&! ^5 9F ^iK+0pAH +0 /uy1_Rw+b"X+b"Xs+b"X+b"X+b"X+b"X+bm"X#+b2"X-+b"X#-Br+bm"X#B+bm"X#B +bS"X#B+b"X#B-+bP"XS+b "XXs+ b"X+qb"Xs+ob"X>s+hb"XEs+ybDg +<+AZj]A )9I]<9/009*и0FEX/ >YEX./. >YEX/>YEX5/5>YEX / >YEX/>YEX8/8>Y?+ 9%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q01#"&5466767#5#"&&&5#573326667#573#326767@! =`m+2KW_-BiI'R/L6@:3TZ!?8   KJ+L?u2+'Q}W+FPf6V<  FPP 0: 32  +-b<-+4+&-+- к249&>EX/ >YEX$/$ >YEX/>YEX+/+>YEX2/2>YEX / >YEX / >Y2A!'7GWgw]A '7qAFVq-901#"&55#"&&&5#573326667#573!5337 8N- BiI'R/L6@:3TZK,#=8.%xv'Q}W+FPf6V<  FPPu2 B6 -+-8 +!+&7+и&:EX/ >YEX/ >YEX4/4>YEX/>YEX/>Y49A!'7GWgw]A '7qAFVq01!5#"&&&5#573326667#57337#"&55KW_-BiI'R/L6@:3TZ=8 8N-u2+'Q}W+FPf6V<  FPB6 -".%xv+b 2b+,+ и++9ии!и"и#и,(и+1и,4EX / >YEX'/' >YEX / >YEX/>Y#+A!'7GWgw]A '7qAFVq9и#и#)и+01!3266675#"&&&55#53#573!#5733#\/L6@:3LX_-BhI&RRZk6V:  s1*'Q}Wf5FN75FN7fP#o .//0/(ܹ/и/ к (9иии($EX/ >YEX#/# >Y+++ и /иии и%и&и'и(01!3266675#"&55#535#573!5#5733#3 :G)& 19=V`^^^5\5VV 9@AH }F ^iV=(0(0= /+A(+ + 'и,и8и8/-и-/2CEX/ >YEX+/+ >YEX / >YEX/>Y=2+ 9"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q-901!5#"&&&5#573326667#57366665#&'&&54666326Wo9ZKW_-BiI'R/L6@:3T#D5!  %1%C3B2g\JPu2+'Q}W+FPf6V<  FP2=I*(+ :Q+"y+"yD+"y+ "yX+h"yE+v>J+4#+0J+0и4'к(0903и3/4IиI/0LEX/ >YEX&/& >YEX+/+ >YEX/>YEX / >YJ3++DAIDYDqA!DD(D8DHDXDhDxDDDDDDDDD]A DD(D8Dq(+D99A!99'979G9W9g9w999999999]A 99'979qAF9V9q>901%#"&'#"&&&5#573326667#5736632!3266674&&&#"!v+]cf4qB9smb(BiI'R/L6@:3T:S_`0g!Oc,VSL#1K33XC)f."RZ$>/'Q}W+FPf6V< FPc03?o[N|M$-3W@%'JiB3@&_+AZj]A )9I](%/ / +!+01##!#'5!266654&&&'!#'5!26773'u2+'Q}WFP6V<  RFPqPKW_-BiI'R/L6@:3TZ&{&+A]A )9IYiy ]( /EX%/% >Y +!+01##!#'5!266654&&&'!#'5!26773L 5Q9.4#8' B.4= 4-49'?,U1 -!'# V2 6n'N+.>+A &6F]AUe]и#к).9AZ>j>]A >>)>9>I>].PM/5/93+ +I)++)C012#"&&&546662#"&&&54666##!#'5!266654&&&'!#'5!26773* )) )**))u2+'Q}WFP6V<  RFPqP)(()l() ((<KW_-BiI'R/L6@:3TZ+0 ++AZj]A )9I]EX/ >YEX*/* >YEX/>YA!'7GWgw]A '7qAFVq*01#"&&&5#5733266654&&&'#&'&&5466632@yoFmCT3Rf4YEX*/* >Y+01#"&&&5#5733266654&&&'#&'&&5466632*NrH.YG+]7!5C"'B/ w !8.$ TC{]71O8G*/i#3 *Jb9.,$   *9?BF3+4/5/ܸ4 и / 9A &6F]AUe]$AZ$j$]A $$)$9$I$]) 9EX/ >YEX)/) >YEX/>YA!'7GWgw]A '7qAFVq01#"&&&5466676&''5!3266654&&&'!?|y~y: 19 }3*"2Oa02bN1#*5} :1 ]SS]@zlX  E#Xs^uk33kugoP#E  Xlz1`34/5/ܸ4 и / 9A &6F]AUe]$AZ$j$]A $$)$9$I$]) 9EX/ >YEX)/) >Y+01#"&&&5466676&#'533266654&&&'3")PxNRyO&!&R  4? @3 R % '8jR11Rj8%J@5 )4EX8FeAAeF>YB0) 5@Jz ;5YEX./. >YEX/>Y)+A!'7GWgw]A '7qAFVq ии)и)901%26667!#"&&&'#53666676&''5!!&&&&'!3//]L35M\@|w}x<_h #*. }3'!#"'5} .+# iB-^ff^-\QQ\g2^QC  E QhRZdK E  CQ^2g7#-8.I+U +#+- +*+и*ии/'01#"&54&''5!3266654&''5!H -VSGSL 1XEEY2L! -LnH# 44 M6Z?$&AY3 44d. +%+0EX/ >YEX,/, >YEX / >Y A!  ' 7 G W g w ]A   ' 7 qAF V q01"#"&54&&"'5!"3266654&&"'5! 9mi$*-'dF&(Hc; PPa.I +%+0EX/ >YEX,/, >Y  +01"#"&54&&"'5!"3266654&&"'53 %GiD  'D65D( ,7N4hiM00%<*+<#700?{m"8?{m"8?{("8?{("8?{S"8?{"8?{"8#I ?{"8-?{"8#-B?{"8#BI ?{"8#B ?{"8#B ?{R"8#B- ?{"8?{"8X? {^"8?q{^"8?o{^"8>?h{^"8E?y{^J +B+7*+AZj]A )9I]B97LEX / >YEX/>YEX/>YEX>/>>YE+ %A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q01#"&5466767#"&54&''5!3266654&''5!326767L! =`m+4;m uLkjNuwDC=X!?8   KJ+L? XX+Zj;>mUXX~<7 0: 32  ?-{^@ɻ +8+1$+1BEX/>YEX / >YEX7/7>YA!'7GWgw]A '7qAFVq01#"&55&'&54&''5!3266654&''5!37 8N-w{m uLkjNuwDc@L=8.%xvw{ XX+Zj;>mUXX~xB6 -1^ 7+ +и&и(и 4и 9EX/>Y(+A!'7GWgw]A '7qAFVq ии(и(501!3266657#"&55#534&''5!!4&''5!3`HLkjNyDŀm uuwZj;>mU~x:hXX3XX3ho :A++и и /(и)и*и+и:2и2/7и<EX!/! >YEX1/1 >YEX/>Y*+A!'7GWgw]A '7qAFVq ии*и*801%266655!#"&55#534&&"'5!"!4&&"'5!"3dRi=dF&p\V(^G PP G PP^` 7+ +и&и(и 4и 9EX / >YEX./. >Y+(+ ии(и ܸ"и"/#и,и-и-/0и0/1и(501!3266657#"&55#5354&''5!!54&''533K(F78F)?#EgBWW 8= j => X0E&@./@$E[7O3jh[- &&  && -?F+%+=+1к297AZ=j=]A ==)=9=I=]EX / >YB7+  A!  ' 7 G W g w ]A   ' 7 qAF V q01#"&54&''5!3266654&''5!66665#&'&&5466632?p\Dŀm uLkjN`bHfA +<%0UA&`c~x: XX+Zj;>mUXXPiQ16('If?m"I?m"?"?"X?h"E;V6+ +AZ j ]A  ) 9 I ]EX/ >YEX0/0 >YEX/>YA!'7GWgw]A '7qAFVq0%01#"&&&&&54&''5!3266654&&&'#&'&&5466632V$Jpu0ih^H*sm9aGXO"3=  1=7g[K6lȯg9.IfS+ Tw\\-WSlN )"6&8aP'^5+6/7/ܸ6 и / 9A &6F]AUe]$AZ$j$]A $$)$9$I$]+ 9EX/ >YEX+/+ >YEX/>YA!'7GWgw]A '7qAFVq01#"&&&5466676&''5!3266654&&&&&'!'O虙O*?H f;7'?kKKj@&'%i I?+rrZ~' \0xЈFFdeRE \ '~'nEX/ >YEX/ >YEX/>Yи/иии/ 9и/01#'5!6&''5!qb\f PPPP'nEX/ >YEX/ >YEX/>Yи/иии/ 9и/01#'5!6&''5!qb\f PPPP4&//EX/>Y 901%#'5!6&''53qVI&?  YEX/ >Yи/иии/ 9и/01#'5!"6&#'53mVJ'?  ;)11  11&tw'"h'"EJ-',+.EX/ >YEX*/* >YEX/>YEX/>Y*и/ии и /$9(и(/)01!#"&&&546667266655!'5!6&''5!@:R3-G1|#qb\f;Y<%."-  .! PPPPN!D/EX/ >YEX/ >YEX/>Y9012'#'5!"66667H+#qb۸0FcN$+!/ 1H/ PP89fN-+z"+AZ"j"]A "")"9"I"]EX'/' >YEX / >YEX/>Y'901#'5!"6666'&&&&#"&&&5466632,GVUHqb0dO1 b'$.H_8Jr]" PPX7L1)M#.3Qd 6(+A ((&(6(F(]AU(e(].(9EX#/# >YEX4/4 >YEX/>Y#AIYqA!(8HXhx]A (8q#9.#93и3/6и6/014&&&#"66%#&'7267'&&54666326&#'5! &( #/5P-9 7H)*R?')7\gB$ @"(/V~;"B3 .B*3P>-PPb";"#; <"#;# 'nEX/ >YEX/>YEX / >Y9 и / иии/и/01!5766'!573bc\mfIqPPP  PaDEX/ >Y+ и / иии/015766'#573A  ;GWJ0  000+I!+ +AZ j ]A  ) 9 I ] 90 9KEX>/> >YEXD/D >YEX&/&>YA!'7GWgw]A '7qAFVq&>9DAIYqA!(8HXhx]A (8q&>90&>93к8&>9014&&&'326664&&&#"#"&&&546667&&#"'46663266324J0,J6+.I4"A#-1v>Vg9.V}OG5&6:ZT;+%%+:T]"aƸb/c/+ܹAZj]A )9I]b5и5/<иYEX]/] >YEX0/0>Y0Q9A!'7GWgw]A '7qAFVq]AIYqA!(8HXhx]A (8qAкW0Q901%4&&&'32666#&&&&#"#"&&&5466677'&&&&#"#&'&&54666327666632}  D *#$?9599 6N39U9 H )0)(?*D10TK@hV'NIA.G0-.+ )-, ~3 78)(@O(V_$0.7*#G:%4D&$06l1*(68$1_J.'BU.:fL-$YEXY/Y >Y ,+YAIYqA!(8HXhx]A (8q=014&&&'326#&&&&#"#"&&&5466677'&&&&#"#&'&&54666327666632  R+)%"%% #3!%7% 0Y ) + 70*E730*.w  !   !!&/67!," ( B  " 9-'3fL#>-$/N;EYEX9/9 >YEX/>Y,9A!'7GWgw]A '7qAFVq3,901%4&&&'32666#"&&&546667'5!6&''5!s   l1(6O39V9+-uV `q'&! &(! F"?BF*#H:&5D% B=5 PP I  PP++D;+A ;;&;6;F;]AU;e;]EX/>Y@A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&&&54677'5!6&''5!4'&&'&'32666" 7U::R3 l}d ! ft    } L?6/##RG0'YEX&/& >Yи/иии/ 9$и$/%к1901#"&&&5477'5!6&''534''&&'&'32666#7'&4" HR1?  D      )7-& <  1*%,11f11J   FD;~Y7(+7-01%666653#"&&&546767&&&&&&#"#"&546666632(KD0,DSO?  "%!3?@<  %0ZUQST2.<80k''QB*!;R22q29:0qF'/'+$ +25*X2*ai;Y(97A!77'777G7W7g7w777777777]A 77'777qAF7V7q01666653#"&&&546767&&&&&&#"#"&546666632l1,g,63)    !)*'    ;741oqo2P\`YN$!@1'$1D"#QWUD* 5o2aF;uYEX/ >YEX/>Y 901#'5!6&''5!5+yy hZ qXX    XXJ@EX/ >YEX/ >YEX/>Y 901#'5!"6&#'5!ch bX}j PP L PP?"^h?^"Eo?4%+%AZj]A )9I],%9 //EX / >YEX/ >YEX2/2 >YEX/>Y 9 9, 901##'5!7666654&&&54666326&''5!5tjOyy -   * "e}Z qFJ;HXX  n-OOT33.1 #7C@yqe,  XX^"?T X^"#?T? ^"#?T#?? ?@EX/ >YEX/>YEX / >Y901!5726'!573Vy qju͜xX    XXX EX/ >Y01!!5726'3!573ifh`RP h PP{ B^AEX2/2 >YEX?/? >YEX&/&>Y&29A!'7GWgw]A '7qAFVq?0и0/1и4и5и5/9&29=и=/>01%4&'&&'&'326#"&&&54677'5!6&''5!   &(^'!?bCD^; }Ls5N w  ()  +K>5-#!"J=(3@"*A PP K PP a\//EX/ >YEX/ >YEX/ >Y99901##'5!36&''53ƶ__I$? o_{ =*400 3 00/"Z/"Z/"Z/"ZB/"Z/P"ZKh/"ZENh%i!/EX/ >YEX/ >YEX / >YEX / >Y !9 !9 !901'##'5!3666632h#)*0q`BXqG$;*#Eb>nZ PPIj@%. `5EX#/# >YEX+/+ >YEX3/3 >YEX/>YEX/>Y+и/#9 к#9к#9и/и3#9!и!/"и%и&и&/*#9-#91и1/201##'5!"36&#'53##'5!"36&#'53Ʒ^`J%? q^{ ;C^`J%? q^{ ;400 3 00 511 3 11/EX/ >YEX/ >YEX/>YEX/>YEX/>Y9 9 и /иии/9и/01!5766'#!5733o`^iqP}PP  PF5Wػ J+,+6+AZj]A )9I]A   & 6 F ]AU e ]A ,,&,6,F,]AU,e,],%@,96YEXQ/Q >YEX;/;>YEXE/E>YQAIYqA!(8HXhx]A (8qEA!'7GWgw]A '7qAFVq1к@;Q9014&&&#"3266654&&&&&5466632326667#"&&&'#"&&&546666632F2fhff3*?)*)PuK4aP8 :Pa3KvP*Adljb@[]]Z44vEX/ >YEX/ >YEX/ >YEX/>YEX/>Y99901##'5!"36&#'5!ak  pb{lPP  PP^m":2^m":^S":^!":B^&":eh^^":Eo2i!/EX/ >YEX/ >YEX/>YEX/>Y!9 !9!901#'5!3676666766667666632'"wz AJ  !!&7BP2$A0(@>;!oXX d)y4lfZ!Qy`N! ,-$ ~^lp^ BEX./. >YEX7/7 >YEX@/@ >YEX/>YEX"/">Y +6 +6к.9.9и  и и и и6и и ии и$и &и (и6*и69013'7##%37#3'#37#3#3#####53'#53'5!3336&''53T*,S 'Ytԡwz3:UZjhY[=GI:\^[4 McdsssssudsdIIdsdXX n XX'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!76&''5!HE gzu%yG Xpn/oP  PP}PP   PPEP'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!76&''5!HE gzu%yG Xpn/oP  PP}PP   PPEP4'-/ /EX/>YEX / >Y015766''#577''5!76&''53, s BLO%/ it 9HI4000 0000 0 `'-/ /EX/ >YEX / >Y015726''3#577''5!76&''53{/r ANP'/ fu9HH/// 1111 /w"B"+;v+EX(/( >YEX5/5 >YEX/>YEX/>YEX!/!>Y(9/(901#"&&&546667266655!5766'!57'5!76&''5!$9' E gzu%yG Xpn/opy-5)  0#P  PP}PP   PPE-EX/ >YEX'/' >YEX/>YEX/>Y++ 9и+к9!901!5766'!57#53'5!76&''5!3oHE gzuyG XpnPP  PPggKPP   PPgB<+AZj]A )9I]>EX+/+ >YEX8/8 >YEX / >YEX/>YEX$/$>Y +92 +901%#"&&&'&66676654&&&'!57'5!76&''5!#-Ok@6+" gzu%yG XpnV78:"6kU5#/("`*352 PP}PP   PP-q-+-//EX/ >YEX&/& >YEX/>YEX/>Y 9 9014&&&##5766'!57'5!76&''5!ChI?E gzu%yG Xpn/oXzK"P  PP}PP   PPEq;""#+3^EX/ >YEX&/& >YEX/>Y 9 9%9'901#"&&&'#&&&&#"&&&54666323372,PmB4N<-]w(+6%*#-QnB4N;,_I+s(,6$)")D1$C`;+{IW/%)E3!@]<I\3%R3P/ //.///EX/>Y 9 9%9'901#"&&&''#'&&&&#"&&&54666323372R4F+"3' <Պ1N#T 5G+"3& >֊J#V )(:#,4t  *&8$?7,7 v Rp3U/ /EX/ >YEX&/& >Y 9 9%9'901#"&&&''#'&&&&#"&&&54666323372R4F+"3' <Պ1N#T 5G+"3& >֊J#V g)(:#,4t  *&8$?7,7 v ^'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!6&''5!v {M{h iX N  XX5HXX  {XXX^'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!6&''5!v {M{h iX N  XX5HXX  {XXX!"BF&"^-EX/ >YEX'/' >YEX/>YEX/>Y++ 9и+к9!901!5766'!57!5!'5!6&''5!! _v {M{Çh i>XX N  XX%gXX  {XX gB^>+AZj]A )9I]=и=/@EX/// >YEXYEX / >YEX(/(>Y" /96 /901#"&&&546667666654&&&'!57'5!6&''5!hl0%2^T9- '2{M{h i*MIDJxW/$2'"l /;G,N  XX5HXX  {XX\^+q+++-/EX/ >YEX$/$ >YEX/>YEX/>Y 99014&##5766'!57'5!6&''5!Zv {M{h i\X N  XX5HXX  {XXr^"? ^"#??B))nEX/ >YEX'/' >YEX / >Y'и/иии/! 9%и%/&01#"&&&546766667'5!6&''5!w !-8 %X5$8&#1*# qbamBMUU %*!*#;XJQQ"} PP\PPa)3 /EX/ >YEX'/' >Y! 901#"&&&546766667'5!6&''53t &:!$ }"I&?  ?*297 #506600 k 00+)"\B5"+)"\ +)"\B)"+)"\+)2"\-B)2"-B)"B+)"\+)P"\>+) "\X^)"\EKq+)5EX%/% >YEX3/3 >YEX/>Y-+3-иии-!и#и#/$и'и(и(/1и1/201%!3##"&&&546766667#53''5!!76&''5!F D} $1; %Y4$8&#4.& @qb1}3amw gNT_\ %) +#;XQZY"qg PP~~PP+%632/EX#/# >YEX/>Y*2901'#"&&&546766667'5!66666632%#&*3 !-9 %X5$8&#1*# qb )4>FL($;*#Eb?mXT_\ %) +#;XQZY" NNw%WXQ>&%.By"E + и/ 9EX/ >YEX / >Y01!57665'5!6&''5!ہf  qu TT 5oRR  uRRBy(+и/ 9EX/ >YEX&/& >YEX/>YEX/>Yиик 901!!!57665!5!'5!6&''5!P0́f  qud TT +dRR  `RR))nEX/ >YEX/>YEX / >Y9 и / иии/'и'/(01!5766'!57666676632'dc`k &1 %X5$8&#*" \qP\PP EKL %+!+#;XAGI" P])7/+ и / ии'и'/015766'#57666676632'@  >F :"% ~I0 j 00@)-. $5'+,0)N%+A &6F]AUe]EX5/5 >YEX/>YEX/>Y* +59и/иии/-59LиL/M017&&&&#"5766'!57&&&&5466632666676632'667$A\9 ,*(c`kGuT/4L1C9 "+%X5$8&#*" /7s<3@y> q 8,G]6'P\PP  1EY3$E6"9D%+!+#;XAGI"y=0H3EU P8(EX&/& >YEX / >YEX/>Y &91A!11'171G1W1g1w111111111]A 11'171qAF1V1q 19&AIYqA!(8HXhx]A (8q01%#"&&&'#&&'&'&&&&#""&&&546663232772:\A4P@3 $!![*":\A4Q@4b$"! X*#:P1#@]:-#=3A% #+:P2YEX7/7 >YEX/>YEX/>YA!'7GWgw]A '7qAFVq39939 390132772#"&&&'#&&'57&&#""&&&54666327-T$"! X*#:\A4P@3  9[*":\AXn+n3E*#+:P1#@]:- 9⓼E0 #+:P2UR;78/9/2ܹ8и/%EX/ >YEX+/+ >YEX/>Y" + "95и5/601!57665#"&&&54&#'5!"32674&#'5!"LRBCA*]P4[R "<0,S0R\\PJ!3U?"PP#0VPPP;"B;9>#+  +9+ &и (и,и9@EX/ >YEX2/2 >YEX/>Y9<и/[RDGs"HR\\PJ "1A*"PP<;VPPP;=#+8 +=+ +и=2и=?/EX/ >YEX1/1 >YEX/>Y(+ (9;и<иYEX/// >YEX/>Y&+ &99и9/:01!"#7665#"&&&54&#'5!"32674&#'5!"͋eRBCA*]P4[R "<0,S0R\\J!3U?"PP#0VPPP^ 9 + 9EX/ >YEX/ >Y01!57665'5!6&''5!dwwg!= sVEXXXX  XX r + и/ 9EX/ >YEX/ >YEX/>Y и и /9013!57265'5!6&#'5! s3lc\  b^}'PP PRi PPb G + 9/EX/ >YEX/ >Y901!576655'5376&#'53X CD @5 >3پ %% 1 %%  %%m"<m"<[S"<2"<"<-*&"<"<Xh^"<E^,q+9EX/ >YEX&/& >Yܸиии к&9 *и,01!!!57665#53''5!!76&''5!3ewgSZ soqwEXXgXX  XXg^&S+9EX/ >YEX$/$ >Y+и01!!!57665!5!'5!6&''5!VEwg!= shpXXhiXX  XX3 + 9EX/ >YEX./. >Yи/ и /и.$A$$]A$$($8$H$X$h$x$$$$$$ ]016&''5!!57665&'&&#"#"&&&5466632so &.WA&),Kc65RB6XXVEXX   %/C`> %D6-, +# 9)/EX/ >Y01'"!57665'5!666632*(+wwg!3QWkL0H11"5(?-EXXXX  VtG&2 ^&nEX/ >YEX$/$ >YEX/>Y$и/иии/9"и"/#01#"&&&546667667'5!6&''5!EWlB0F-#&> L Z@}6aI*'-"$#Xf6 XXdXX m"+ 9"+ Q "+- !"+B?^9C:/;/4ܹ:и/'" + "901!57665#"&&&54&''5!3266674&''5! d%ckj+;pX6od+?)!Y\UdooX2*FtXXXw0C) &XXX?!"0B^?^@i+@+/$+и@к /9$;к</9/B+<901%#"&&&54&''5!332736674&''5!!57665e/$;pX6od+?) {4c#dood$a58 FtXXXw0C)z+XXXX1?\^=Q!+8 +=+ +и=2и=?/&+ &9014&##57665#"&&&54&''5!3266674&''5!Cd%ckj+3o\;od)@-!Y\Udoo\X2*FtXXXw0C) &XX?\^AQ%++< + /и4и<C/*+*901!"#7665#"&&&54&''5!3266674&''5!:DE9#id%ckj+;pX6od+?)!Y\Udoo-D]wI2*FtXXXw0C) &XXXFm9EX / >YEX/>Y  0135!"#!!2666773Fi om#T #/`(EX / >Y + 015#"#5!!26773#`  F H@Z3 cFm"]>Fm"]Fm"]Fm"]qFm"]*Fhm"]EF+)h! + и/!+EX/ >YEX/>YEX / >Y 01#"&&&55!5!"#!!266677337.F-IgBBk o% 0'6R8m #T G6 *2$a)L! + и/!+EX/ >Y+ 01#"&&&55!5#"#5!!266677337$-0C+7a  F  H}I 1"AZ2 a+ QF+m)`+(и(/EX/ >YEX/>YEX/>Y!01#"&&&546667266655!5!"#!!2666773m-E/  Bi opk'0+  0$m #T FmSEX / >YEX/>Y+ ии0135#53!"#!3#!2666773F}i omZgM#Tg /m@[EX/ >YEX/>Y +! 9+и 1и70135&&##"#666632!"#!33266673#"&&&'!2666773F+%R ';N2 !$i %R (:O2  oml"-P>$- #Tw"-P>$ F 2+AZj]A )9I]4/EX%/% >YEX/>YEX/>Y.+%(и)014&#"326667###&67!5!"#!36666323),E5& S-J5c3Qe2{ Y iϙ>Rh>6( #=R..<%9bH)H4HY +.+и% (014&#"326667###&67#5#"#5!3666632-"60"A!5B P:a  Ec (6C(#$2$";++T+O$AZ3,F1  F +AZj]A )9I] /EX/ >YEX / >YEX/>Y  01!"#!!#666654&'!5diOONB n{#T'7GA-6:/mF +AZj]A )9I] /EX/ >YEX / >YEX/>Y  01!"#!!#666654&'!5diOONB n{#T'7GA-6:/mF+%JEX#/# >YEX/>YEX/>Y#9#01%37#"&&&&&##5!"#!HNOG<+<%E}rh`Y)>ib Kep^> +"/"EiyiEm#TF9EX / >YEX/>Y  0135!"#5!!2773FXh qsN1NPJm"=PJS"=PJS"=PJ&"=PJ^"=* PhJ^"=EP-J^%h$+ и /'EX / >YEX/>YEX/>Y  0135!"#!!26773#"&&&5466672655PyG#y-N8 6=ZG^hvx%."- 6BPJ^SEX/ >YEX/>Y+ и и01!26773!5#5!!"#!3G#y6yZVgG^gPP^ +AZj]A )9I] /EX/ >YEX / >YEX/>Y  01!"#!!#666654&'!5JyQVB G^h0YEX / >YEX/>Y  01!"#!!#666654&'!5JyQVB G^h0YEX/>Y 01!!!#&&&&#!"!2673?i/# A`x@{   DZ'YEX/>Y 01333!!"#!Py#\uky{a/G^Z++V++3(+AZj]A )9I]EX,/, >YEX/>Y/ +A'7GWgw ]A]A!'7GWgw]A '7qAFVq,%01#"&&&54666323266654&&&#"'!"#!2Sohk7. + @(W1HuR,:Xk0#"8#j7s^{G]}H,DQ&+# Cj>M}X09wDFu!a3h+AZj]A )9I]EX,/, >Y+/ +,%01#"&&&54666323266654&&&#"'!"#5!26]~HDgE$ *9/L6&9E $  E=jP. 8cK+)0  r(@M%.K5"^R*G[++"V+mCX +++AZ+j+]A ++)+9+I+]59?9/ /EXYEX/>Y?0+A'7GWgw ]A]9&A!&&'&7&G&W&g&w&&&&&&&&&]A &&'&7&qAF&V&q<501%#"&'37# 54666323266654&&&#"'!"#!2Sol6=6 8N-. + @*U1HuR,:Xk0#"8#j7s^{G ]P1%D7 ,".%+# Jr>LuP)9wD?l++NN6K++AZj]A )9I]M96PEX,/, >YEX/>Y5L+/ +A'7GWgw ]A]A!'7GWgw]A '7qAFVq,%01#"&&&54666323266654&&&#"'!"#!2!#"&&&546667266655!Sohk7. + @(W1HuR,:Xk0#"8#j7s^=&:R3-G1|#y]}H,DQ&+# Cj>M}X09wDF;#*;Y<%."-  .!=+MQN/O/N(и(/ A   & 6 F ]AU e ]Oܹ5AZ5j5]A 55)595I5]?(9I(9/EXF/F >YEX/>YEX#/#>Y-+I:+#A!'7GWgw]A '7qAFVqF?01&&&&#"326&'&&'#"&&&54666326654&&&#"'!"#!2\BKR+'8PV*K!=U4 T 6u?hd0+GY-GvbM06:Xk0#"8#j7s^{G"B3#*8! &Q8k`T (4  $=aG/I1'?O)6ALuP)9wD?l++LC^D/E/ܹAZj]A )9I]D и /A &6F]AUe]9' 91 96и6/; 9EX8/8 >YEX/>Y;,+ A!  ' 7 G W g w ]A   ' 7 qAF V q89'8981014&'32666%#"&54666667&&&&#"'!"#!2627 b^7\GHuR,8@# So8`O6>A#"8#j7s;obP0S 7 %YEX/>Y&)&9>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>qEAEE'E7EGEWEgEwEEEEEE ]AEE]01#"&&&54666666654&&&#"'!"#!263267766327kgM{V.1QgkgQ11GOB!"#j7 YEX/>Y+(A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q/A//'/7/G/W/g/w////// ]A//]01#"&&&5466635!#'&&#!&&#"3267766327kgoSG{^s7j#8"#0kX:,RuH1W(@ + .&QD,Bu]Q}L=90X}M>jC #+B+:;/YEX*/*>Y4+*A!'7GWgw]A '7qAFVq01#"'&'5&&&&#"326772#"&&&5466632#. (,-ORsD5YvA%= #!;_v;qϞ^At^SwG+  Q"EgDH{X2 **8!1dhQb64SF+< #+AZ#j#]A ##)#9#I#] >EX8/8 >YEX/>Y89898(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q015666654&&&#5666654&&&#"#5666632 #?Y67`F(ovz?#8H$-_2dY( 7I)4(b4]UP(Hb:9f]S& ,?Q.\9j9z}};4F,-j2gij61D+  w#A[++^b++^;+AZj]A )9I]EX4/4 >YEX/>YEX/>Y7&+A!'7GWgw]A '7qAFVq4+01%#"&&&5466632326666654&&&&&#"'!"#!2/VwVw{?"5#0J._97hYJ5$Y+/ +,%01%#"&&&54666323266654&&&#"'!"#!2Sg_c2* ' ;%M-BvX3>]k- 3. ^ |WzHPUrB)>K"( >bw8FkI%3 DjH9b++S"bB+^9) +A ))&)6)F)]AU)e)]EX/ >YEX5/5>YEX/>Y"+.A!..'.7.G.W.g.w.........]A ..'.7.qAF.V.q01#"&&&546666635!#'&&&&#!&&#"326776632?{wh)JfzHu@ )(%VUO<$@nS9_.J0#4#0hW8VwEtbF'e>  H+A[uHQR, ,7P>%+AZ%j%]A %%)%9%I%]/EX3/3 >YEX:/: >Y:9:9*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q01566666654&&&'5666654&&&#"#666632ʼnBpR.FzlS}\4+H]1YEX / >Y/AIYqA!(8HXhx]A (8q/%A%%]A%%(%8%H%X%h%x%%%%%% ]01!57665666654&&&"#"&&&5466632jB`m*ki0jX9%=N)<7  ) 4aTZrAbb> PP A`~LCmM)   *$NA*3_39\1_2/3/ܸ2и/AZj]A )9I] /-%+01!57665666654&&&"#"&54666329+?GFD D9$'2'%  ( #?Y7:eK*;T<% //3 (:K-(B. j,/'9QF1`2/3/ܸ2и/AZj]A )9I] и /и/EX-/- >YEX / >Y  ии/-AIYqA!(8HXhx]A (8q- A ]A  ( 8 H X h x ]"и#013!57265666654&#"###"&&&5466632&BY3 h.h 3V?#ZT)D*!%HhC^].A]B-PPN *?W8at  $A6#+OnPu56/7/ܸ6и/AZj]A )9I]EX1/1 >YAIYqA!(8HXhx]A (8q1'A'']A''('8'H'X'h'x'''''' ]01!57665666654&&&"#"&&&5466632u!6EIGmh0p`@%=N)<7  ) 4aTZwDAeM9+ XX:VvLCjI&   *$QE-:fPj;XYEX/>Y+ии7$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q7-A--]A--(-8-H-X-h-x------ ]01!!!57665!5!5666654&&&"#"&&&5466632jB`m*ki 0jX9%=N)<7  ) 4aTZrAbb>]j PP 'joA`~LCmM)   *$NA*3_Pj526/7/6,и,/A &6F]AUe]7ܹ$EX1/1 >YEX/>Y1A]A(8HXhx ]1AIYqA!(8HXhx]A (8q01#"&'&''&&#&!57665&&&&&&5466632j )  7<*N<%9Xj0!fjDFA3Ar[T`4*   )MmCL~`A PP  #2ATiAT_3*AN4:\1i2/3/2и/A &6F]AUe]3!ܹ,&/+ 01466632#"&'&''&&#"!57665&&&&4*Kd;7Y?# (  %'2'$9C  DFG?+c9]@#'/,j -B(-K:( //' 8O39\1i2/3/2(и(/A &6F]AUe]3ܹ"/- +-01#"&'&''&&#&!57665&&&&54666329(  %&3(%:D  CE G?++Kf;6X?",j .B(-K:( //' %/?/>4и4/A &6F]AUe]?ܸи(,EX9/9 >YEX"/">Y+9A]A(8HXhx ]9AIYqA!(8HXhx]A (8q)и+01#"&'&''&&#&!!!57665!5!5&&&&&&5466632j )  7<*N<%9Xj0 !fjDFA3Ar[T`4*   )MmCL~`Aoj PP 'j] #2ATiAT_3*ANPj^9*:/;/ܹAZj]A )9I]:"и"/3EX*/* >YEX/>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq01#"&&&5466632366654&&&'4&&&''5!jArZTa4 )  7<)N=%9Xj0 ik EEB2LT_3*AN$+  )LmDL}`B  PP   $1BTiPj^ATB/C/ܹAZj]A )9I]B"и"/&и";6EX./. >YEX/>Y&#+A'7GWgw ]A]A!'7GWgw]A '7qAFVq&7и#901#"&&&5466632366654&&&'5!5!4&&&''5!!!jArZTa4 )  7<)N=%9Xj0 ik EEB2LT_3*AN$+  )LmDL}`Boh)  PP  h\ $1BTiQUTYU/V/Uи/A &6F]AUe]VIܸи/I/AZ/j/]A //)/9/I/]EXD/D >YEX/>Y A'7GWgw ]A]D4D7A77]A77(787H7X7h7x777777 ]9и:013776632#"&&&5466676666766666654&&&####"&&&5466632+J7 6Yp:T 0$'P{TOP'E\5  ,,* $GjFT 1$'QzT[o>,ER% %)-;0=^?  +$H9$2Y|JHbH8BJC(7')I8  *$H9$1Pf5N]>.(032--I]/EX / >YEX*/*>Y A!'7GWgw]A '7qAFVq A'7GWgw ]A]2и*9A!99'979G9W9g9w999999999]A 99'979qAF9V9q012326666632#"&&&'#"&&&54632326667&&&&5466666%VVQ>%/Qm>'J@3 !<12P7$^jq8:uk^"'H6 >;  7JW-?qT1%>PVV/?FI"'Zaf3!:+ ' 6*;5%5G**F4,<#.7(-('8!4roe'"IF?/dAC7//&/ 9.и&5:&.90123266632#"&&&'#"&&&54632326667&&&&54666&\Q7 7K*3,"   *!#6&@IN&(PI@1%*)   &2<,M:"7Q]A"5?38:!  ")("   A?9?5"- y++ ++EX/>YEX/>Y+ и 014#!#!2#253#!3@<YLY#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632+)E55F**F55E)'PyQQyP((PyQQyP'Eg??gEEf>>fEXtCCtXXuCCu5V'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632+)E55F**F55E)'PyQQyP((PyQQyP'Eg??gEEg??gEXtDDtXXsCCsdHR' + /+и/01572655%33 !1 }H7 !7R 7dRV' + /+и/01572655%33 !1 }8 !5R 8?H,O#+AZj]A )9I]#.(+ +015666654&&&#"#"&5466632!73?f{D4E&'  10Pj;@mP,OZAHRMyvA,D- "%'B/!>V6A|z|Ai?V,#+AZj]A )9I]#.EX*/* >YEX/ >YEX/ >YEX/ >Y(+ +015766654&&&#"#"&5466632!73?U{D4E&' 10Pj;@mP,OZARAxuA-C- %%'A.!YEX/>Y4+ и4и,AIYqA!(8HXhx]A (8q01!73!5667!5!6654&&&#"#"&&&54666323`^%e?]I:<'Fc<$:*  &,#HyZdqYA.+$+ A!  ' 7 G W g w ]A   ' 7 qAF V qA!'7GWgw]A '7qAFVq и /"и"/A7ܸI01#"&&&546323266654&&&#"53266654&&&#"#"&&&54666327^HDfF#&()3@.L7&;G! #*N:#0?"- /Ok<9dI*gc*UC+8\B$)1+o4D%-;#K':)':' y$<-4M1Fg1I?VOH++HAZ+j+]A ++)+9+I+]HQ +C0+&+"и"/C9ܸK01#"&&&546323266654&&&#"523266654&&&#"#"&&&54666327^HDfF#&()4?.L7&;G!  *N:#0?"- /Ok<9dI*gc*UC+8]B%*2+o5D%-;#N';)&:' y#=-5M1Eg0H59 ^ + ии  /EX/>Y + 9 и01%!#!533-}}j_pTVT5V Q + ии  // + 9 и01!#!533-}}j_pTTTR+/(+ +$и )EX#/# >YEX/>Y+ +A'7GWgw ]A]A!'7GWgw]A '7qAFVq+%и '01#"&&&54666323266655!533#!7kiS`5) F #%*WG,3+H{O-L9*  #A^<~Z;934/5/ܹAZj]A )9I]4%и%/*EX/>YEX / >Y'(+ A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVq% 9 /A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q01#"&&&546323266654&&&#"!!2666321^[4]E(/% 3 5R7#=S0 K &$^2?!EoO*?hK)(2"#s $8D 3M2 h "@];H3s4/5/ܹAZj]A )9I]4%и%/* +'(+/ +01#"&&&546323266654&&&#"!!2666321^[4]E(/% 3 5R7#=S0 K &$^2?!EoO*?hK))2"$s $8E 3M2 g #A]+#^:V;/YEX / >Y)+ A'7GWgw ]A] A!'7GWgw]A '7qAFVq/-6и7012#"&&&546323266654&&&&&#4&''5!#'&&#!"};oDK؍Pj>?8*E *0/Q~V-5\~Plqv0Mo]hG'BX12B   =`t6BkT>( X -9:b;/YEX / >Y)+ A'7GWgw ]A] !A!!!'!7!G!W!g!w!!!!!!!!!]A !!'!7!qAF!V!q/-6и7012#"&&&546663232654&&&#4&''5!#'&&##"m+fg_I,=o\;sZ8%H  cxQ\b\ "7QoHK~[32E,," njHgB. \q  590'1/2/ܹAZj]A )9I]1и/ A   & 6 F ]AU e ]и/ )и)/EX/>Y"#+,+A!'7GWgw]A '7qAFVq),9014&#"326667#"&&&546663#"66321dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH'[c!"?gH(!;O>DmN*(XenEK(NrJ-!&D]5V01/2/ܹAZj]A )9I]1и/ A   & 6 F ]AU e ]и/ )и)/+"$+,+),9014&#"326667#"&&&546663'&66321dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH'!"?gH(!;O>DnN+(XenEL'OtJ-!'D]79 EX/>Y+01#!#5!fFb)qF7H "/EX/ >Y+01#!#5!fF++pF59#K# .+B+A   & 6 F ]AU e ]AZj]A )9I] 8ܹ$3.$9G.$9BMEX)/)>Y=+) A!  ' 7 G W g w ]A   ' 7 qAF V q014&&&'326664&&&#"66#"&&&546667&&&&5466632/#Bb?,!fa+D0,;!"9*8R3*91UuDJwT- 5E%7-*Li@=gK+/8 F9%'5*& )4!Nb*7&:(&2 5,&Q4X@$#>W4*B2$ !.;$5T;7L,'@1# !1E5V#K .+B+A   & 6 F ]AU e ]AZj]A )9I] 8ܹ$3.$9G.$9BM )+=+014&&&'326664&&&#"66#"&&&546667&&&&5466632/#Bb?,!fa+D0,;!"9*8R3*91UuDJwT- 5E%7-*Li@=gK+/8 F9%'5+' )4!Oc)7%:'%1 5,%Q5X?$#?W5*A1# "/<$5S:6K-'@2$ !1E590ĸ1/2/ܹAZj]A )9I]1'и'/ A   & 6 F ]AU e ]и/и/EX/>Y,+ "+" 901%4&&&#"32676&#56667#"&&&5466632-+D00G/eX+_(H/@t\> 8n9?fI'3WvDCuV17?hI)!;O.[f$nFL'PsJ-!'E^6DnM*'W5V01/2/ܹAZj]A )9I]1'и'/ A   & 6 F ]AU e ]и/и/+,+ "+" 9014&&&#"32676&#56667#"&&&5466632-+D00G/eX+_(H/@t\> 8n9?fI'3WvDCuV1?hI)":P.[e"" nFN'OsJ-!'D]6CnN*'W^wP + 9 //EX/>Y+и/ 901576655%3#3 !1 }c\7  7R 7^A +8+ 9AZj]A )9I]@@9=@98C //EX/>YEX/>Y.+3 +.и/.и/ 9+и+/=01576655%3#35666654&&&#"#"&5466632!73 !1 }cfwA.@&& 1.Ph;@hI'J}ZD\7  7R 7jRNyuA-B- "&'A0!>W6A|z{Bk^eݻ +^A+ 9^.9AZAjA]A AA)A9AIA]a9^g //EX/>YEX/>Y<3++YF+и/"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q"9 9)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q38и8/OиO/3a01576655%3#3#"&&&546323266654&&&#"523266654&&&#"#"&&&5466632 !1 }c'5\}HDeC!&( )3 .J4#8D!  *J6.="+  -Mi<9bG(jc*VE+\7  7R 7V8\B$)1+l5D%,;#N&;)':' x#>-6N1Eh0Hb"#/$/ܹ#и/9и/и ///EX/>Y ++ 9 ии/ 9 901!576655%3#3#!533? !1 }VsVZ7  7R 7SVT^1BF=7+(#++AZj]A )9I]D7=9F79;/E/EX/>YEXC/C>Y-+32+%&+ A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVq#;9(-93@и@/D 9F;901#"&&&5463233266654&&&#"!!676632576655%3#31^[4]E(1# 3>4R8#=S0 K &$^@!EoO*܇ !1 }c ?hI)(1"$s$7E!3M2 g "A]7  7R 7^0AEx<6+ ++AZj]A )9I]AZj]A )9I] )и)/C6<9E69G:/D/EX/>YEXB/B>Y,+21+"#+A!'7GWgw]A '7qAFVq),92?и?/C9E:9014&#"326667#"&&&546663#"6632576655%3#3dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH' !1 }c[c!"?gH(!;O>DmN*(XenEK(NrJ-!&D]7  7R 7^!26^-'+A+U+UAZj]A )9I]Kܹ4'-976'79AZAjA]A AA)A9AIA]F'79Z'79U`+/5/EX3/3>YEXY#"+P+< A!  ' 7 G W g w ]A   ' 7 qAF V q#0и0/4< 96<+9F<+9Z<+901%4&&&'326664&&&#"66%576655%3#3#"&&&546667&&&&5466632$Db>3Dca+E1,;!#8(8R3(8 !1 }V%1WuEJvT- 5D%7,)Kh@=hL, 09G:'%5+&PBNd*8%:&%1 5,%Q&7  7R 7I4W?#">W4*B1$ ".;$5U;8K-'@2$ 2F?,0 #+z]+A ##&#6#F#]AU#e#]+zJ1019AZ]j]]A ]])]9]I]]}19zEX-/->YEX6/6>Y +XO+(+ub+ܸ6>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>q.6>9/и//0 96EA!EE'E7EGEWEgEwEEEEEEEEE]A EE'E7EqAFEVEqOTиT/kиk/O}015666654&&&#"#"&5466632!73#3#"&&&546323266654&&&#"523266654&&&#"#"&&&5466632?fvA.@&&  2/Pi;@hI'K}ZAŁ'5\}HDeC!&( )3 .J4#8D!  *J6.="+  -Mi<9bG(jc*VE+\RNxu@-C- #%&A0">W5A|y|AhV8\B$)1+l5D%,;#N&;)':' x#>-6N1Eh0H?1^bлU8+(#++AZj]A )9I]A UU&U6UFU]AUUeU]8]b89EX/>YEX_/_>YP=+-+Z2+ A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVqZ&и&/%(-9PHܸ%\и\/` 9Paиa/b=P901#"&&&5463233266654&&&#"!!6766325666654&&&#"#"&5466632!73#31^[4]E(1# 3>4R8#=S0 K &$^@!EoO*fvA.@&&  2/Pi;@hI'K}ZAŁ ?hI)(1"$s$7E!3M2 g "A]RNxu@-C- #%&A0">W5A|y|AhNWbP3+_+3_9A PP&P6PFP]AUPeP]P"_XиZи_dY/EX/>YK8+`X+.'+ +  9`к8K9',и,/KAܸ'SܸX[01!#3#"&&&54666323266654&&&#"53266654&&&#"#"&&&5466632#!533@d4[}HDdC! )2 .J5$7E! "*J6.="*  -Mi<:bH(ic*UC+osVZ8\B$)0  m 5D%-:"L&;)&:' {#=-6N1Ef0HjVTNTܻM0+}x+Un+0U9A MM&M6MFM]AUMeM]MAZnjn]A nn)n9nIn]UEX/>YEXZ/Z>YH5++$+s+ +z{+ZbAbb'b7bGbWbgbwbbbbbb ]Abb]Zb95H9$)и)/H>ܸ$PܸZiA!ii'i7iGiWigiwiiiiiiiii]A ii'i7iqAFiViq}s901!#3#"&&&54666323266654&&&#"53266654&&&#"#"&&&5466632#"&&&5463233266654&&&#"!!6766324[}HDdC! )2 .J5$7E! "*J6.="*  -Mi<:bH(ic*UC+'1^[4]E(1# 3>4R8#=S0 K &$^@!EoO*8\B$)0  m 5D%-:"L&;)&:' {#=-6N1Ef0H?hI)(1"$s$7E!3M2 g "A]N!%tܻmP+++AZj]A )9I]ܹ u%Pu9A mm&m6mFm]AUmem]m?&AZj]A )9I]Pu9Pu9EX"/">YEXz/z>YhU+KD+3+++zA!'7GWgw]A '7qAFVq#z9%Uh9+:DIиI/h^ܸDp014&&&#"664&&&'32666#3#"&&&546323266654&&&#"53266654&&&#"#"&&&5466632#"&&&546667&&&&5466632 ,;!#8(8R3(8$Db>3Dca+E1ك)5\}HCdC"'))3/J4$7E!  *J6.="*  -Mi<:aG(gc)UD+1WuEJvT-5D&7,)Kh@=gL+/9G:'o%:&%1 5,%Q%5+&PBNd*88\B$)0,m 4D&-:"L&;)':' {"=-6N1Dg/H`4W?#">W4*B1$ ".;$5U;8K-'@2$ 2F% ?C +61+'+ иAZ'j']A '')'9'I']C9E /EX/>YEX@/@>Y;,+ +34+ 9 ииA'7GWgw ]A]"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q1 96,;9A9C 901!#!533#"&&&5463233266654&&&#"!!676632#3@ssVZ1^[4]E(1# 3>4R8#=S0 K &$^@!EoO*<TVT?hI)(1"$s$7E!3M2 g "A];0bfƻYT+1J+ ++AZj]A )9I]AZj]A )9I] )и)/A 11&161F1]AU1e1]dT9fT9hEX/>YEXc/c>YVW+^O+,+>6+"#+A!'7GWgw]A '7qAFVq),96EYO^9d9Veиe/fWV9014&#"326667#"&&&546663#"6632#"&&&5463233266654&&&#"!!676632#3dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH'/1^[4]E(1# 3>4R8#=S0 K &$^@!EoO*ǁ[c!"?gH(!;O>DmN*(XenEK(NrJ-!&D]?hI)(1"$s$7E!3M2 g "A]X;!SWܻJE+";+b+v+vAZj]A )9I]lܹA ""&"6"F"]AU"e"]XUEX9WEX9AZbjb]A bb)b9bIb]gEX9{EX9vEXT/T>YEX]/]>YGH+O@+/'+q+] A!  ' 7 G W g w ]A   ' 7 qAF V q'6J@O9U] 9GVиV/WHG901%4&&&'326664&&&#"66#"&&&5463233266654&&&#"!!676632#3#"&&&546667&&&&5466632#$Db>3Dca+E1,;!#8(8R3(81^[4]E(1# 3>4R8#=S0 K &$^@!EoO*%1WuEJvT-5D&7,)Kh@=gL+/9G:'%5+&PBNd*8%:&%1 5,%Q7?hI)(1"$s$7E!3M2 g "A]XI4W?#">W4*B1$ ".;$5U;8K-'@2$ 2Fy!+/Wb0+D+AZj]A )9I]AZDjD]A DD)D9DID]Dܺ/D09?D09NSD090YEX,/,>YEX5/5>Y*%+I+5 A!  ' 7 G W g w ]A   ' 7 qAF V q-5 9*.и.//%*901%4&&&'326664&&&#"66%#!#5!#3#"&&&546667&&&&5466632$Db>3Dca+E1,;!#8(8R3(8>fE1WuEJvT- 5D%7,)Kh@=hL, 09G:'%5+&PBNd*8%:&%1 5,%QG)pDI4W?#">W4*B1$ ".;$5U;8K-'@2$ 2Fnj(#+A &6F]AUe]и/# и*EX&/& >YEX/>YA'7GWgw ]A]01%#"&&&5466632#&'&&&&54632j#..""..# d GG8](f#+A &6F]AUe]и/# &/EX/ >Y+01#"&&&5466632#&'&&&&546328    A  '**'N  3N`2uu2`N3&**8] D+ и / и //EX / >Y+01#"&&&737#"&&&54666326   1@1   a$ $  # //01#&'&&&&54632 e DAAH&LsJحJsL>GG; //01#'&&&&54632 e DAAH&]]]]>GG;/EX/ >Y01#&'&&&&54632 e :AA>Ce~@@~eC>GGs/EX/ >Y01#&'&&&&54632 e :AA>USSU>GG} +A &6F]AUe]EX/>YA'7GWgw ]A]01%#"&&&5466632&31&&13&q2%%22%%2};#}nir'S +A &6F]AUe]и +#+01%#"&&&5466632#"&&&5466632&31&&13&&31&&13&2%%22%%22%%23%%3oPq}[+A &6F]AUe]и///9013#"&546667};3#  -O[7KKBNY3  ."dZK|aCRhT' +и///01466673#"&R&D]7)8#y  )AP5UA+ < ,=, $ UPq}[+ A &6F]AUe]и///901&&&&54632#1KK7\N;@ />#qC`}KYeH5 ,SNH"Pq}[+ A &6F]AUe]и///901&&&&54632#1KK7\N;@ />#qC`}KYeH5 ,SNH"=9jt[+ A &6F]AUe]и///901&&&&54632#KK7\N;@ />#9C`}KYeH5 ,SNH";qhW+ и/AZj]A )9I]//901'6666'4&5#&'&&54632h7KKL#>/  @:N\K}`C"HNS, 5HeMQ+ и/AZj]A )9I]/+01'6666'4&5#&'&&54632Habb-Q=#  TKexb}W,^el9  'E^Pq#5+0+ A &6F]AUe]и/AZj]A )9I]''90-и-///+"и,01&&&&54632#&&&&54632#1KK7[O8C 1=ZKK7WQ.! %5:qC`}KXfF5  0VMEC`|JXh".  3ZM@;q5+0+A &6F]AUe] и/"9'*и*/AZ0j0]A 00)090I0]7/!/+*и301'666654&5#&'&&5466632'666654&5#&'&&54632h7KKL:5%  !.PW7KKL=1  D7O[J|`C@MZ3  ."hVK}`CEMV0  5FfX%EX/ >YEX/>Y0133#!XffffZFFX/EX/ >Y01#!LfZFH?91H?91H?91; +AZ j ]A  ) 9 I ]+01#"&&&54666329 ,,  ,, ,!!,-  -T;+A &6F]AUe]/ /01&&&&&&546667EnT<%'ZhFa<Y+ии 013#!!!x#fKMOMhl d / / и/  ܹEX / >Y+ ии0135!!5!"fIQfM,Xx&+/EX/ >Y01!#XWxW L,Xx&+/EX/ >Y01#!5XWxW"XN+/+013!W9,+W"XN+/+015!39WWH"+/EX/ >Y013iHeHU/ /и/ ܹ//EX/ >YEX/ >Y01333iiHee2H#v+ии и/EX / >Y++ и ии01!5!5!5!3!!!!vDDiDDHhhhh^;/ /и/ ܹ////013!3|}nn-j2+и/EX/ >Y0133-iiij4F3f+//013iLN+//013iL/XR} //01'wHJ+)/T //01'yJL+&)Z59Z59Z592O3 +015!23 +015!'f +015!'Z59 +015!Z?.t +015!?5[[? tf +015!?5 [[1 +015!RRgB+ +015!gffi+ +015!iff / /01#666632u $ )>  h h.3B3B/EX / >Y01#676632 {,& + N 3Bj-//EX / >YEX/ >Y01#676632#676632 {,& h {,& + N  N hj +и 01#666632#6632u $ u,)$ (> !(>!jmhm3B"#h3B:"#h#8 / /01%&&5466632f $ )  h //01%&&5466632f $ h(! h3B /EX/ >Y01466632#&&3 &,{ +  3Bj"hj2h8+ и01%&&5466632!%&&54666324 $  % h(! (! 3B"#h///901'#3zy% "f fh"h{///01'#3'76632{ #i* h[+ h-{ / //01'&5466632'#3 (f{=  [h*///+% +и 01'#3#"&&&&&#"#6666323266677{ (:N2,)(-6"$R ':N3,)'-5!%h[x-R>$$-R>$$fhj+e+A]A )9IYiy ]-'///01'#3#5666654&#"#"&5466632{f!.25)"/  '8#%<*h[#4&ay)1: A"")6T + и01&&&&#"#466632 ,=H&&H<, R&LrMLrM&T+?((?+6lW66Wl6hhbhbhb + и01&&&&#"#466632 ,=H&&H<, R&LrMLrM&h,?((?,6lW77Wl6# P`fhb+ 01&&&&#"#466632 +, P&LrMLrM&h,?((?,6lW77Wl6mS/ /+01&&&$#"'6$! _&铒%5UmoW2A''A2-hS / +01"'6$!%5Um'A2-hS /+01&&&$#5 6%}U2A'T+ и01#"&&&53326667&MrLMrL&P ,>H&&H<, }6lW66Wl6,?))?,hh""hb""h9A +-"+4+ и-и'01#"&&&53326667#"&&&&&#"#666632326667&LrMLrM&P -=H%&H=- (:N2,)(-6"$R ':N3,)'-5!%6mW66Wm6,?((?,'-R>$$-R>$$hb"X^h6#`hB#!+! и01#"&&&54632326667'466632B2Rg65hR260/8o0B-/C.n%34H0R<" :R217:*FH$;)bXEX/>Yܸ и иA!'7GWgw]A '7qAFVq01#"&&&53326667b&MrLMrL&P ,>H&&H<+ 6lW66Wl6,?((?,mJ}// +01! $'732$667W7*U5%&P-2A''A2m/b )//EX/>Y01#373{{)Z)" h"_hH /EX/ >Y01#66663!T%^._hH EX / >Y+01#!5!%3%\S_hH EX/ >Y+01"&&&'3!%Th-_hH /EX/ >Y01%!5!2j%h^'/// / 9901#"&''#663273 3V24V  D^ ////901'#"&'37663262V3 hӬFծ  2 2]pq7R#'+ +и01#"&&&&&#"#666632326667 (:N2-)(-6!$R ';N2,)'-5!%-R>$$-R=%$n5f#'+ +и01#"&&&&&#"#666632326667 (:N2-)(-6!$R ';N2,)'-5!%f-R=%$-R>$$p7p>Qi'd'/EX/ >Y#++#9# к '99к'9017&&#"#66663273266673#"&' l4*$R -BU2&L'?q3+%R .BT2&K'o $-R>$&!&!$8BI+TC*!(!!4?!V /+01&&&&#"'666632>}^Za@7Kph`y9 $8BI+TC* Jo /+01326667#"&&&'=z^TjF9SzcZy: !4?K(N>& c=D#+A &6F]AUe]9/AZj]A )9I] ии %#//015666654&&&&&546667D$$>R-$%=R-%!5-'),2N;' R$!6-()-2N:( .;x"/EX/ >Y+013#7#<_d<_ #///990177'''7'7#'7'7dAfdB1;<e%jt ! Rf tjXX f!h /// /01'7'77pBppBppBppBtpBppBppBppBu: /// /01'7'77'pBppBppBppBpBppBppBppBh ////01'#7'373`щh=) ////01%'7''P)PP)=$PP%P''R"///+9 и01#"&'#"&&&5332673326667-E-5DC6-D-/$+%@/>%+%&K<&1%%1&/@%+$/-D-6CD5-E-+ $&&$ +%L<&2&&2&Y+015!%5!LLLL.++015!%5!LLLLmf!%)*/+/* и /и/  ܸи/+ܸA]A )9IYiy ]/EX/ >Y#"+'&+0153#5466654&'66325!5!I.8.;*2*8$ 1O1;/4FF(:/(R^%+8'" 4,!2tf !+ ++015!5!5!44oR'(/)/( и /A &6F]AUe])ܹAZj]A )9I]+и#01#"&&&5466632#"&&&5466632o)(()() (())* *))* *BBB'(/)/( и /A &6F]AUe])ܹAZj]A )9I]+и#01#"&&&5466632#"&&&5466632)(()() ((!*  () )*  *))h'+и#01#"&&&5466632#"&&&5466632      %      EBahFR; +AZ j ]A  ) 9 I ]+01#"&&&5466632F)**))  )+  +aFav^RTQ+A &6F]AUe]и/ //01566665#&&&&5466632T&D]7)8#y  (AP5V@, > *=- $WRhTJR80s+A &6F]AUe]и/ //EX/ >YEX / >Y01566665#&&&&5466632&D]7)8#y  (AP05V@+ < ,=, $ U0h[+A &6F]AUe]9 и//+0176666'4&5#&'&&5466632h:Zl1(@,  .:N\\hBK>NZ, #9)o2MR'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632c'45''54'd&BX33YB&&BY33XB&5((54''43XB&&BX33YB&&BYhP4I˸J/и/5AO5]A5]A5]*AO*]A*]A*]5*95*954?K%+/+%9 ик/9/:и%D01#"&'#"&&&546663266323266654&&&#"#&&&&#"326665x&BX3Y  +01!"&&&546663"3X[..[X<_B#y6`MKb8i$B^:{eQo8g+ A&6FVfv ]A]/ /01"&&&546663"38%H9#!7I(/#$.5J,-I4H"//!o8WdfD+и EX/>Y+01#52654&&4.[Xy#B_YEX / >YEX/ >YEX/ >YEX/ >Y01#5666654&#"#"&5466632o-17(!,  (8#%<(y#4&u)19 B  !(5%*+/EX/>Y013^%^h+//013^h_'%U/ /и/ ܹ//EX/>YEX/>Y01333'^^%^^<hk;/ /и/ ܹ////01333<^u\h__ ?+и// +и 01#5#53533^^^^]Z ?+и// +и 01#5#53533V^^^^h U+и//EX/ >YEX / >Yи01#5#53533^^^^%!+/+01#5#5!R\ϏRRw!+/+01##5!Q;gRR%!+/+0153533%RRRw!+/+0175333wQQfQSS-+и //+015#5353RRSS%+//+01#33RRqRw9%+//+01#3!RRp;Rs$+/+0173!sNc&)Ojf.+/EX/ >Y01!5!ZRT&G7 //0178]Z8-o*+/EX/ >Y013-~-M7 //01'Z[ZZ-o//и/A &6F]AUe]ܹ/EX/ >YEX / >YAIYqA!(8HXhx]A (8q01#"&54666323. /  Z- ..  ~&G7E+A &6F]AUe]// +01'#"&&&54632]Y  . /ZZ  //-<G+A &6F]AUe]+ +015!#"&&&54632-  / .<+  //-<0+EX/ >Y+015!3-E<'Y-; +015!-;2Z [ / /ܹ и/EX/ >YEX/ >Y+01#!#!8vv(6x2Z E / / и/  ܹ//+01!3!3ZvvVx62Z+/+01!3Zvw22ZA/ /ܹи/+0153!3vv2<//ܸܸи/ и / ܸи/ и/и/EX/>YEX/>Y +ܸйܸ 01!!#!!#!l)OuY)Oukk:-d{-d/ +EX/>YEX / >Y01#"&55337d 8N-f=8.%xvB6 -4 s:+A &6F]AUe]#9#/AZ#j#]A ##)#9#I#] -ܹии/(и </6/36901"&&&546666654&&&5466654&#6632s#%% 3('VI/$+5+)3,FVE38 $% % $(9F '~P13A/ /ܹи/+015##!I^1E/ /и/ ܹ+013353^\A/ /и/ܸ ܸ+013!53R3R  7/ /ܸܸи/++01#3!GwHw=+ /+01#"&55'7326667=+@,NO/$) 'L<&QD=.$,?(95E6/7/+ܸܸ6и//)/0+и001#"&55#"&55'73266767'7773266679+@,NO +@,NO/$) /$) 'L<&QDv&<&QD=.$,".$,?(9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""Zr EX/>Y013"&5463!2#""""""""X 7&'&676// /V/V" 7'&&766 .  .  . .Uy 7'&&766 +  + " + +U 7'&&766))')V)X &&766'p//b//ZV +01"&5463!2#""""V""""XT &'&676//b/V/VRx '&&766 .  . p . .UQ '&&766 +  + x + +V" &676&'c .  . . T. XT &&766'p////Z +01"&5463!2#""""""""Xv &'&676///V/V '&&766 .  .  . .Uy &676&'_ +  + $+ + VRx &676&'c .  . . T. Xv &&766'p////Zt +01"&5463!2#""""""""X &'&676...T.U &676&']))}))UQ &676&'_ +  + x+ + V &676&'c .  . p. V. X &&766'q..b..ZV +01"&5463!2#""""V""""r EX/>Y013"&5463!2#"""""""" 7&'&676$// /V/" 7'&&7661 .  .  . .y 7'&&7665 +  + " + + 7'&&7667))')V) &&766'"//b//V +01"&5463!2#""""V""""T &'&676$//b/V/Rx '&&7661 .  . p . .Q '&&7665 +  + x + +" &676&'/ .  . . T. T &&766'"//// +01"&5463!2#""""""""v &'&676$///V/ '&&7661 .  .  . .y &676&'3 +  + $+ + Rx &676&'/ .  . . T. v &&766'"////t +01"&5463!2#"""""""" &'&676#...T. &676&'5))}))Q &676&'3 +  + x+ +  &676&'/ .  . p. V.  &&766'!..b..V +01"&5463!2#""""V""""Zr EX/>Y013"&5463!2#""""""""ZV +01"&5463!2#""""V""""Z +01"&5463!2#""""""""Zt +01"&5463!2#""""""""ZV +01"&5463!2#""""V""""tr EX/>Y013"&5463!2#""""""""tV +01"&5463!2#""""V""""t +01"&5463!2#""""""""tt +01"&5463!2#""""""""tV +01"&5463!2#""""V""""n> t//и/ A   & 6 F ]AU e ] ܹEX/>Y+01"&54632#"&54632#22##22X""""2##22##2""V""n> p//и/ A   & 6 F ]AU e ] ܹ/EX/>Y+01"&54632#"&54632#22##22X""""2##22##2a""V""n> p//и/ A   & 6 F ]AU e ] ܹ/EX/>Y+01"&54632#"&54632#22##22X""""2##22##2""V""n> p//и/ A   & 6 F ]AU e ] ܹ/EX/>Y+01"&54632#"&54632#22##22X""""H2##22##2""V""n> //и/ A   & 6 F ]AU e ] ܹ/EX/>YEX/>YA!'7GWgw]A '7qAFVq013"&54632%#"&54632#22##22X""""2##22##29""V""U! +01%'&'&6764632 @)R""9   V)""U&+EX/>Y01%#"&5&6764632""D + T""9""H+ ""V&+EX/>Y01%#"&5&6764632""H . X""9"". ""X&+EX/>Y01%#"&5&&76654632""V.f""9""D.""Z(+EX/>Y+01%#"&5!"&5463!2""x"""9"""""U+/01%'&'&6764632  @ + T""9  + H""V4+/EX/>Y901%#"&5&6764632""H . X""9""C. B""X4+/EX/>Y901%#"&5&&7664632""U/e""9""F/8""Z4+/EX/>Y+01%#"&5!"&5463!4632""x""""9""""""X4+///EX/>Y901%#"&5&'&6767632"". "9"".T"V+/01%'&'&6764632  @ . X""9 . ""X4+/EX/>Y901%#"&5&&7664632""U/e""9""9F/""Z4+/EX/>Y+01%#"&5!"&5463!4632""x""""9""s""q""X4+/EX/>Y901%#"&5&'&674632""/""9""/F7""V <+/////EX/>Y901%#"&5'&&76763323"" .   9"" .X_+/EX/>YEX/>YEX/>YEX / >Y901%##&'&&7664632   @/e""9  V/""Z4+/EX/>Y+01%#"&5!"&5463!4632""x""""9""""""X4+/EX/>Y901%#"&5&'&674632""/""9""9/F""V4+/EX/>Y901%#"&5'&&74632"" . ""9""D .A""U&+EX/>Y01%#"&5'&&7664632"" +  + l""9""H + +""Z( +/EX/>Y 01%!"&5463!4632<""""9""""XE+/EX/>YEX/>Y901%#"&55&'&674632""/""9""/F""VE+/EX/>YEX / >Y901%#"&5'&&74632"" . ""9"" .""UE+/EX/>YEX / >Y901%#"&5'&&74632"" + ""9"" +F""U'I+////EX/>YEX / >Y901%#"&5'&&7676333"")  9"")V  UO9+EX/>YEX/>Y01%#!'&'&676!4632O"B@)a""9" V)""UOY+EX/>YEX/>YEX / >YEX / >Y01%#"&55'&'&6764632O"" @)m""9""  V)""UO Y+EX/>YEX / >YEX / >YEX/>Y01%#"&5#"'&'&6764632O""  @)x""9"" V)?""UO Y+EX/>YEX / >YEX / >YEX/>Y01%#"&5#'&'&6764632O""   @)""9""  V)5sF""UO3Q+EX/>YEX / >YEX / >YEX/>Y01%#"&5''&'&67667633323O""  @)   9""  V)K  UO=+/EX/>YEX/>Y01%#!'&'&676!4632O"C  @ + e""9" +  ""UOg+/EX/>YEX/>YEX / >YEX / >Y901%#"&55'&'&6764632O""  @ + s""9""  + ?""UO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""   @ + ""9"" + \J""UO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""   @ + ""9""  + sF""UO*q+// /EX/>YEX / >YEX / >YEX/>Y9901%#"&5'"'&'&6766763O""   @ +   9""  +    VO=+/EX/>YEX/>Y01%!'&'&676!4632OB  @ . k""9. n""VOg+/EX/>YEX/>YEX / >YEX / >Y901%#"&55'&'&6764632O""  @ . {""9"". """VO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""  @ . ""9"". X""VO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""   @ . ""9"" . F""VO2y+///!/$/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&676676333O""  @ .   9"" .   XO=+/EX/>YEX/>Y01%#!&'&&766!4632O"8@/w""9" V/""XOg+/EX/>YEX/>YEX / >YEX / >Y901%#"&55'&'&&7664632O""@/""9""  V/,""XOg+/EX/>YEX / >YEX / >YEX/>Y901%#"&5'&'&&7664632O""  @/""9""V/n""XO&V+#/EX/>YEX / >YEX/>Y#901%#"&5'&&77'&&7664632O"" + 9/@/""9"" +A+/V/F""XO5@+EX/>YEX / >YEX/>Y01%#"&5'&&77'&&7666763O"")?/@/ 9"")J//V/   ZO( +/EX/>Y 01%!"&5463!4632Oz""J""9""""ZO\+/EX/>YEX/>YEX / >Y901%#"&55!"&5463!4632O"" 7""""9"" "":""ZO\+/EX/>YEX / >YEX / >Y901%#"&5'!"&5463!4632O""  G""""9""""""ZO\+/EX/>YEX / >YEX / >Y901%#"&5'!"&5463!4632O""  E""""9"" ""F""ZO*d+//// /EX/>YEX / >YEX / >Y901%#"&5'!"&5463!676333O""D""   9"" ""/  UOQ+EX/>YEX/>YEX / >YEX / >Y01%##&'&'&6764632O   I @ + ]""9 O + ""UO0+EX/>Y+01%#"&5!'&'&676!4632O""~ @ + e""9"" + """UO&+EX/>Y01%#"&5'&'&6764632O""  @ + s""9""9  + A""UO &+EX/>Y01%#"&5#&'&'&6764632O""    @ + ""9""D + ^JA""US'&+ EX/>Y01%#"&5'&'&676664632O""   @ +  + l""9""H  + t +""VO_+/EX/>YEX/>YEX / >YEX / >Y 901%##&'&'&6764632O   J @ . b""9 N. _""VO4+/EX/>Y+01%#"&5!'&'&676!4632O""  @ . k""9"". n""VO4+/EX/>Y901%#"&5'&'&6764632O""   @ . {""9""9. """VO >+/EX/>Y9901%#"&5'"'&'&6764632O""   @ . ""9""D. XA""VS&&+EX/>Y01%#"&5''&'&676664632O""   @ .  + l""9""H .  +""XO _+/EX/>YEX/>YEX / >YEX / >Y 901%##&'&'&&7664632O   H@/ e""9  OV/""XO4+/EX/>Y+01%#"&5!&'&&766!4632O""s@/w""9"" V/""XO4+/EX/>Y901%#"&5'&&7664632O""@/""9""9 V/,""XO&4+#/EX/>Y#901%#"&5'&&77'&&7664632O"" . !0/@/""9""D .2$/V/nA""XS%&+EX/>Y01%#"&5'&'&&766664632O""  @/ + l""9""H  V/ +""ZO d+/EX/>YEX/>YEX / >Y +и/901%##&'!"&5463!24632O    OR"" e""9  J"" ""ZO4+/EX/>Y+01%#"&5!"&5463!4632O""""J""9""""""ZO>+/EX/>Y +901%#"&5'!"&5463!4632O""@""""9""9 "":""ZO>+/EX/>Y +901%#"&5'!"&5463!4632O""  H""""9""D""A""ZS#0+EX/>Y +01%#"&5'!"&5463!664632O"" G"" + l""9""H "" +""XO%p+"/EX/>YEX/>YEX/>YEX / >YEX / >Y"901%##&'&'&676776324632O   bb/  e""9  </V""XOQ+/EX/>YEX / >Y+и/01%#"&5!&'&676763!4632O""P/ ""9""/V ""XOE+/EX/>YEX / >Y901%#"&5&'&67674632O""H/""9""9/V@""XOE+/EX/>YEX / >Y901%#"&5#&'&674632O"" J/""9""D/SA""XS!7+EX/>YEX / >Y01%#"&5&'&67664632O"" I/ + l""9""H /P +""VO +01%'&'&'&6764632O  H@ . X""9. `""VO&+EX/>Y01%#"&5&'&6764632O""_ @ . b""9""9>. a""VO0+EX/>Y+01%#"&5!'&'&676!4632O""  @ . k""9""s. pq""VO&+EX/>Y01%#"&5'&'&6764632O""   @ . {""9"". "7""VO(+EX/>Y01%#"&5'"'&'&67667633O""   @ .   9"". cXO+/01%'&'&&7664632O  GD/ X""9 S/""XO4+/EX/>Y901%#"&5&'&&7664632O""]@/ e""9""9?V/""XO4+/EX/>Y+01%#"&5!&'&&766!4632O""s@/w""9""s V/q""XO4+/EX/>Y901%#"&5'&&7664632O""@/""9"" V/,7""XO++EX/>Y01%#"&5'&&77'&&766676O"" . !0/@/ 9"" .2$/V/xZO+/ +01%'&'!"&5463!24632O  Q]"" X""9 """"ZO>+/EX/>Y+901%#"&5!"&5463!24632O""dR"" e""9""9:"" ""ZO4+/EX/>Y+01%#"&5!"&5463!4632O""""J""9""s""q""ZO>+/EX/>Y +901%#"&5'!"&5463!4632O""@""""9"" "":7""ZO!(+EX/>Y +01%#"&5'!"&5463!676O""  H"" 9""""XO +/01%'&'&'&676764632O  ap/  X""9 y/V""XO$4+!/EX/>Y!901%#"&5&'&67677633324632O""wb/  e""9""9,/V""XO@+/EX/>Y+и/01%#"&5!&'&676763!4632O""P/ ""9""s/V q""XO4+/EX/>Y901%#"&5&'&67674632O""H/""9""/V@7""XO%<+//// /EX/>Y901%#"&5#&'&676763323O"" J/ 9""/SVO"+/01%'&''&&7676364632O  oo .    X""9 d .""VOE+/EX/>YEX / >Y901%#"&5'&&76764632O""a .   e""9""9! .""VOE+/EX/>YEX / >Y+01%#"&5!'&&76763!4632O""Q .  ""9""sn .q""VOE+/EX/>YEX / >Y901%#"&5'&&7674632O""H .  ""9""_ .?7""VO$I+////EX/>YEX/>Y901%#"&5'&&767676332O""H .  9""` .XO +01%'&'&&7664632O  FJ. T""9  M. H""XO&+EX/>Y01%#"&5&&7664632O""NF. X""9""CP.B""XO&+EX/>Y01%#"&5&'&&7664632O""[@.e""9""AT.8""XO<+EX/>Y+ и /01%#"&5!"'&'&&766!4632O""x @.x""9"" T.""XO+EX/>Y01%#"&5'&'&&76667632O""@. "9"" T.;"ZO+/ +01%'&'!"&5463!64632O  Oc""  T""9  ""H""ZO>+/EX/>Y+901%#"&5!"&5463!24632O""Y]"" X""9""C""B""ZO>+/EX/>Y+901%#"&5!"&5463!24632O""dR"" e""9"":"" 8""ZO4+/EX/>Y+01%#"&5!"&5463!4632O""""J""9""""""ZO>+///EX/>Y +901%#"&5#!"&5463!67632O"" @"" "9"" ""H"XO +/01%'&'&'&676764632O  \y/  T""9  /VH""XO4+/EX/>Y901%#"&5&'&676764632O""ip/  X""9""Cm/VB""XO$4+!/EX/>Y!901%#"&5&'&67677633324632O""wb/  e""9"",/V8""XO@+/EX/>Y+и/01%#"&5!&'&676763!4632O""P/ ""9""/V ""XO4+///EX/>Y901%#"&5&'&676767632O""F/ "9""/VM"VO"+/01%'&''&&7676364632O  iy .    T""9   .H""VO >+/EX/>Y9901%#"&5'&&7676364632O""wo .    X""9""CX .B""VO4+/EX/>Y901%#"&5'&&76764632O""a .   e""9""! .8""VO4+/EX/>Y+01%#"&5!'&&76763!4632O""Q .  ""9""n .""VO4+///EX/>Y901%#"&5'&&76767632O""G .   "9""^ .L"UO"+/01%'&''&&7676324632O  ss +    T""9  s +H""UO O+/EX/>YEX / >Y9901%#"&5'&&767624632O""j +    X""9""CI] +B""UOE+/EX/>YEX / >Y901%#"&5'&&76764632O""] +   e""9""? +8""UOE+/EX/>YEX / >Y+01%#"&5!'&&7676!4632O""O +   ""9""  +""UOE+///EX/>YEX / >Y901%#"&5'&&76767632O""G +   "9""  + L"ZO&++#01%'&'!"&5463!64632O Mg""R""9   /"" ""ZO8+EX/>Y+01%#"&5!"&5463!64632O""Sc""  T""9""H""""ZO8+EX/>Y+01%#"&5!"&5463!24632O""Y]"" X""9""""""ZO8+EX/>Y+01%#"&5!"&5463!254632O""fP""  f""9""8""""ZO(+EX/>Y+01%#"&5!"&5463!O""""9""""XO( !+01%'&'&'&676764632O X~. R""9    .T ""XO&+EX/>Y01%#"&5&'&676764632O""`x.  T""9""H.T""XO&+EX/>Y01%#"&5&'&676764632O""io. X""9""l.T""XO@+////EX/>Y901%#"&5&'&67654632O""wa.f""9""+.T  ""XO(+EX/>Y+01%#"&5!&'&676763!O""P.  9"".TVO%+///"/01%'&''&&7676364632O  d .  R""9   . ""VO J+////EX/>Y9901%#"&5'&&7676364632O""my .    T""9""H .""VO J+////EX/>Y9901%#"&5'&&7676364632O""wo .    X""9""V .""VO&+EX/>Y01%#"&5'&&767654632O""a .  f""9""  . ""VO(+EX/>Y+01%#"&5!'&&76763!2O""Q .  "9""p ."UO(!+///%/01%'&''&&7676364632O m{ +    R""9    + ""UO J+////EX/>Y9901%#"&5'&&7676324632O""ws +    T""9""Hu +""UO J+////EX/>Y9901%#"&5'&&767624632O""j +    X""9""G_ +""UO@+////EX/>Y901%#"&5'&&767654632O""\ +   f""9""A +""UO(+EX/>Y+01%#"&5!'&&7676!O""O +   9""" +UO#+/// /01%'&''&&767664632O uu)  R""9  L)V  ""UO [+////EX/>YEX / >Y9901%#"&5'&&767624632O""~n)   T""9""Hq5)V ""UO [+////EX/>YEX / >Y9901%#"&5'&&767624632O""d) X""9""=)V ""UO7+EX/>YEX / >Y01%#"&5'&&76654632O""X)) f""9"")V""UO9+EX/>YEX / >Y+01%#"&5!'&&7676!O""M)9"")V Z( +/EX/>Y 01%!"&5463!4632"" ""9""""Z4+/EX/>Y+01%#"&5!"&5463!4632"""" ""9""""""Z4+/EX/>Y+01%#"&5!"&5463!4632"""" ""9""s""q""Z4+/EX/>Y+01%#"&5!"&5463!4632"""" ""9""""""Z(+EX/>Y+01%#"&5!"&5463!2""""E"9"""""sC t//и/ܹAZj]A )9I]EX/>Y+ 017#"&54632"&54632"""" #22##229""V""q2##22##2sC p//и/ܹAZj]A )9I] /EX/>Y+017#"&54632"&54632"""" #22##229""V""I2##22##2sC p//и/ܹAZj]A )9I] /EX/>Y+017#"&54632"&54632"""" #22##229""V""2##22##2sC p//и/ܹAZj]A )9I] /EX/>Y+017#"&54632"&54632"""" #22##229""V""2##22##2sC //и/ܹAZj]A )9I] /EX/>YEX/>YA!'7GWgw]A '7qAFVq017#"&54632"&54632"""" #22##229""V""q2##22##2s/+EX/>YEX/>Y017#"&5477677676&'"" )9""V )s+EX/>Y017#"&5477676&'""  + 9""V+  s)P%+//// / /////EX"/">Y"9017767676763236127333&'#"&5476  . "" V.  h""Vs4+ / //EX/>Y 9017#"&54632'""" .9""V".s(+EX/>Y +017#"&54767!2#!""""x9""V""sE+ /EX/>YEX/>Y 9017#"&54632&'"""" + 9""V""+  s4+ /EX/>Y 9017#"&54632&'"""" . 9""V""`.  s4+ /EX/>Y 9017#"&54632'""""/9""V""/s4+ /EX/>Y+017#"&54632!2#!""""""x9""V""""s&+ EX/>Y017#"&546326""""f.V9""V"".sE+ /EX/>YEX/>Y 9017#"&54632&'"""" . 9""V""i`.  s4+ /EX/>Y 9017#"&54632'""""/9""V""s/s4+ /EX/>Y+017#"&54632!2#!""""""x9""V""""s4+ /EX/>Y 9017#"&546326""""e/U9""V""/s&+ EX/>Y017#"&5463266""""X . H9""V""  .bsE+ /EX/>YEX/>Y 9017#"&54632'""""/9""V""/s4+ /EX/>Y+017#"&54632!2#!""""""x9""V""9""s4+ /EX/>Y 9017#"&546326""""e/U9""V""r/s4+ /EX/>Y 9017#"&5463266""""X . H9""V""  .`s&+ EX/>Y017#"&5463266""""T + D9""V""  + s( +/EX/>Y 013"&54632!2#""""""V""""s_ +/EX/>YEX/>YEX/>YEX/>Y9017#"'&'&546326  ""e/  V""/s + /017'&''&5463266   ""X . V""h  .s + /017'&''&5463266  ""T + "  V""  +s  +017'&'&'&5463266 ""R)'  V"" )sh"J+EX/>YEX/>YEX/>Y017#"&54767677676!2#!'&'""  ""C9""V "" sj$Q+EX/>YEX/>YEX/>YEX / >Y01%'&'#"&547676776766 ""  /   ""V '/sl#Q +EX/>YEX/>YEX/>YEX / >Y01%#"'&'#"&5476767666  "" .   ""V K .sm"Q +EX/>YEX/>YEX/>YEX / >Y01%#'&'#"&547767666   "" + "   ""V  5| +sm%Q +EX/>YEX/>YEX/>YEX / >Y01%''&'#"&547767767666  "" )'   ""V K)sh`+ /EX/>YEX/>YEX/>Yк 9017#"&54632!2#!'&'""""""D  9""V"")""  sjg+/EX/>YEX/>YEX/>YEX / >Y901%'&'#"&546326 """"/   ""V""H+/sl q + /EX/>YEX/>YEX/>YEX / >Y 9901%#"'&'#"&5463266   """" .   ""V""eV .sm q + /EX/>YEX/>YEX/>YEX / >Y 9901%#"'&'#"&5463266   """" + "   ""V""| +sm Y + EX/>YEX/>YEX/>YEX / >Y01%'"'&'#"&5463266   """")'   ""V"")sh`+ /EX/>YEX/>YEX/>Yк 9017#"&54632!2#!'&'""""""F  9""V""iz"" sjg+/EX/>YEX/>YEX/>YEX / >Y 901%'&'#"&546326  """"/  ""V""i2/sl` + /EX/>YEX/>YEX / >Y9901%'&'#"&5463266   """" .  ""V""id .sm q + /EX/>YEX/>YEX/>YEX / >Y 9901%#"'&'#"&5463266   """" + "  ""V""i +sm Y + EX/>YEX/>YEX/>YEX / >Y01%'"'&'#"&5463266  """"x)'  ""V""i)shZ +/EX/>YEX/>YEX/>Y01!!&'#"&54632!2/<"""""" ""V""""sj! + /EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y 901%"##&'#"&546326 """"/  ""V""</slg+/EX/>YEX/>YEX/>YEX / >Y 901%'&'#"&5463266  """"{ . ""V""z .sm&V+/EX/>YEX/>YEX/>Y901%'&&77'#"&5463266 + 9/""""r + " +A+/""V"" +sm&H+EX/>YEX/>YEX/>Y01%'&&77'#"&5463266)?/""""l)')J//""V"" )sh( +/EX/>Y 01!!"&54632!2/}"""J"""V""""sj9+ /EX/>YEX/>Y01%!"&54632!6 6"""v/ "V""J/sl9+ /EX/>YEX/>Y01%'!"&54632!66  F"""k . "V"" .sm9+ /EX/>YEX/>Y01%'!"&54632!66  D"""e + " "V"" +sm9 +EX/>YEX/>Y 01!!"&54632!66iC"""a)@"V""/) sj/+EX/>YEX/>Y017#"&5477673676'&'""  /I 9""V/O  sh"(+EX/>Y+017#"&54767673676!2#!'&'""  ""F 9""V"""  sj$+EX / >Y01'&'#"&547676736766  ""  /b   ""VA+/sl% +EX / >Y01#&'&'#"&547767367666    ""   . p  ""V^V .sm% +EX / >Y01'&'&'#"&547767367666    ""   + x   ""Vt +sjE+ /EX/>YEX/>Y 9017#"&54632'&'""""/J 9""V""k/N sh>+ /EX/>Y+ 9017#"&54632!2#!'&'""""""G  9""V""z"" sj4+/EX / >Y 901'&'#"&546326  """"/b ""V""2/sl > + /EX / >Y 9 901'"'&'#"&5463266   """" . p ""V""d .sm& + EX / >Y01''&'#"&5463266   """" + x  ""V"" +sjE+ /EX/>YEX/>Y 9017#"&54632'&'"""" /H9""V""s/Osh> +/EX/>Y+901!&'#"&54632!2/;""""""V ""V""s""sj4 +/EX / >Y 901'#"&546326""""/b ""V""s</sl&4+/EX/>Y901'&&77'#"&5463266 . !0/""""{ . p .2$/""V""sz .sm&+EX / >Y01'&'#"&5463266  """"r + x  ""V""s +sjQ+ /EX/>YEX/>Y+и/017#"&54632!2'!"""" /O9""V""9 /Jsh4+ /EX/>Y+01!#"&54632!2/""""J""V""V""9""sj4 +/EX/>Y+01'!#"&54632!6x""""v/b ""V""9J/sl4 +/EX / >Y+01'!#"&54632!66  """"k . p""V""9 .sm0 +EX / >Y+01'!#"&54632!66 """"e + x ""V""9 +sj)p +/EX/>YEX/>YEX/>YEX/>YEX(/(>Y9017##"'&'&54632677633332'  ""e  /b  V""/<sh u +/EX/>YEX/>YEX/>YEX/>Y+9и/017##"'&'&546326763!2#!  ""e ""Q  V"" ""sj _+/EX/>YEX/>YEX/>YEX / >Y901##"'&'&54632676H  ""e/b  V""P/sl_+/EX/>YEX/>YEX/>YEX / >Y901###"'&'&5463266 J  ""a . p  V"" .smQ+EX/>YEX/>YEX/>YEX / >Y01##"'&'&5463266 I  ""] + x  V""  +sl/Y%++//// ////EX/>YEX(/(>Y$(9017767676732732723732&'&'#"&5476   . H"" `T.  h""Vsj*H &+//// / ///EX#/#>Y# 9017767676773367332'&'#"&5476  /J "" a/N h""Vsh-V#)+//// / ////EX&/&>Y+"&90177676767732727332!2#!'&'#"&5476  ""G  "" p"" h""Vsj3P*0+/// / //////EX-/->Y)-90167776767677323612373326'&'#"&547}  /@  "" 2/ h""Vsl.$*+EX'/'>Y0177676767736733266#'&'#"&5476   . @   "" c .V h""VslE+ /EX/>YEX/>Y 9017#"&54632&'""""  . G9""V""T.  sj4+ /EX/>Y 9017#"&54632'&'"""" /H9""V""/Osh> +/EX/>Y+901!&'#"&54632!2/;"""""" q""V""""sj4 +/EX / >Y 901'#"&546326""""/ q""V""</sl&&+EX/>Y01'&&77'#"&5463266 . !0/""""{ .  .2$/q""V""x .slE+ /EX/>YEX/>Y+017#"&54632!6&'!""""   . Q9""V""T. sj@+ /EX/>Y+и/017#"&54632!2'!"""" /O9""V"" /Jsh4+ /EX/>Y+01!#"&54632!2/""""J""""V""""sj4 +/EX/>Y+01'!#"&54632!6x""""v/ ""V""J/sl0 +EX / >Y+01'!#"&54632!66  """"k . ""V"" .slE+ /EX/>YEX/>Y 9017#"&54632676&'""""e   . a9""V""rT. ysj"4+ /EX/>Y 9017#"&54632677632'""""e   /bw9""V""r/<shJ+ /EX/>Y+ 9и/017#"&546326763!2#!""""e ""Qe9""V""r ""sj4 +/EX/>Y901#"&54632676]""""e/""V""rP/sl& +EX/>Y01##"&5463266 _""""a . ""V""r .sl" + /017'&''&5463267636&'   ""X    . oV""h T. dsj# + /017'&''&54632676332'   ""X  /pV""h /1sh + /+017'&''&546326763!2#!   ""X ""]V""h ""sj + /017'&''&54632676   ""X /CV""h O/sl  +01'&''&546326766H   ""X . `V""h  .smE+ / //EX/>YEX/>Y 9017#"&54632&'"""   + F9""V" + sl4+ / //EX/>Y 9017#"&54632&'"""   . F9""V"T.  sj4+ / //EX/>Y 9017#"&54632'&'""" /F9""V"/QshJ +///EX / >Y+и/ 901"'&'#"&54632!2#o """ "" ""V"""sj +EX / >Y01'&'#"&546326""" . ""V";.smE+ /EX/>YEX/>Y+017#"&54632!6&'!""""   + O9""V""+ sl4+ /EX/>Y+017#"&54632!6&'!""""   . Q9""V""T. sj@+ /EX/>Y+и/017#"&54632!2'!"""" /O9""V"" /Jsh4+ /EX/>Y+01!#"&54632!2/""""J""7""V""""sj0 +EX / >Y+01#!#"&54632!6 x""""x. 7""V""H.smE+ /EX/>YEX/>Y 9017#"&54632676&'""""e   + \9""V""+ sl4+ /EX/>Y 9017#"&54632676&'""""e   . a9""V""T. ysj"4+ /EX/>Y 9017#"&54632677632'""""e   /bw9""V""/<shJ+ /EX/>Y+ 9и/017#"&546326763!2#!""""e ""Qe9""V"" ""sj& +EX/>Y01#"&54632676[""""e.q""V""M.sm O+ /EX/>YEX/>Y 9 9017#"&5463267636&'""""X    + i9""V"" + sl >+ /EX/>Y 9 9017#"&5463267636&'""""X    . ow9""V"" T. dsj!4+ /EX/>Y 9017#"&54632676332'""""X  /pi9""V"" /1sh>+ /EX/>Y+ 9017#"&54632676!2#!""""X  ""]Y9""V"" ""zsj&+ EX/>Y017#"&54632676""""X .EO9""V"" L.jsm" + /017'&''&5463267632&'  ""T    + s"  V"" + sl" + /017'&''&546326762&'  ""T    . x"  V"" T. Usj  + /017'&''&54632676'  ""T  /x"  V"" /+sh + /+017'&''&54632676!2#!  ""T  ""c"  V"" ""sj  +017'&''&54632676  ""T .I"  V""  L.sm9+EX/>YEX/>Y +017#"&5463!6&'!""")M9""V" )/sm(+EX/>Y +017#"&54767!6&'!""   + O9""V+ sl(+EX/>Y +017#"&5463!2&'!"""  . Q9""V"V. sj(+EX/>Y +017#"&5463!233'!""" .P9""V".Hsh(+EX/>Y+01!#"&54767!2/""""V""V""sm7+ EX/>YEX/>Y017#"&54632676&'""""f )X9""V"" ) sm&+ EX/>Y017#"&54632676&'""""f   + \9""V""+ sl&+ EX/>Y017#"&54632676&'""""f  . a9""V""V. xsj@+ ////EX/>Y 9017#"&546326'""""f.aw9""V""  .;sh8+ EX/>Y+ 017#"&546326763!2#!""""f  ""Pf9""V""""sm [+ ////EX/>YEX/>Y 9 9017#"&5463267636&'""""X )d9""V""  )sm J+ ////EX/>Y 9 9017#"&5463267636&'""""X    + i9""V"" + sl J+ ////EX/>Y 9 9017#"&5463267636&'""""X    . ow9""V"" V. bsj&+ EX/>Y017#"&54632676'""""X .oi9""V""  .0sh8+ EX/>Y+ 017#"&54632676!2#!""""X  ""]Y9""V"" ""|sm [+ ////EX/>YEX/>Y 9 9017#"&5463267636&'""""T   )m9""V""  )sm J+ ////EX/>Y 9 9017#"&5463267632&'""""T    + sw9""V"" + ~sl J+ ////EX/>Y 9 9017#"&546326762&'""""T    . xn9""V"" V. Shsj&+ EX/>Y017#"&54632676'""""T  .x`9""V"" .)Jsh8+ EX/>Y+ 017#"&54632676!2#!""""T  ""cS9""V"" ""+sm# +////017'&'&'&546326766&' ""R  )u'  V""   )sm# +////017'&'&'&546326762&' ""R    + z'  V""  + zsl# +////017'&'&'&546326762&' ""R  . '  V""  V. Isj  +017'&'&'&5463266' ""R) .~'  V"" .%sh ++017'&'&'&54632676!2#! ""R""g'  V""  ""s*( + /EX/>Y 01!!&'&54632!2"" ""V""""s*4+ /EX/>Y+01!#"&54632!2"""" ""V""V""9""s*4+ /EX/>Y+01!#"&54632!2"""" """"V""""s*4+ /EX/>Y+01!#"&54632!2"""" ""7""V""""s*(+EX/>Y+01!#"&54767!2""I""V""V""pd +01"&5463!2#""6""""""t1 &'&67%6 &6&&&t &'&676+6+++t &'&676. 6.  . [ . s &'&676#/6//$/qR &'&676(06000q '&&766+/6///r '&&766./6///t '&&7660- 6-  -F -t1 &&766' &6&D&&p- +01"&5463!2#""6""E""""t &'&67%6 &6&D&&t &'&676+6+A++t &'&676. 6. > . [ . sT &'&676#/6/:/$/q &'&676(060600q '&&766+/6/2//r '&&766./6///}/t '&&766'+6++n+t '&&766' &6&&&p +017"&5463!2#""6""""""t 7&'&67%6 &6&&&t 7&'&676+6+++tU 7&'&676. 6.  . [ . s 7&'&676#/6//$/q 7&'&676(06000q 7'&&766+/6///t &&766' .6 .T . . t &&766'+6+Q+n+t &&766' &6&N&&Mp +01"&5463!2#""6""M""""It &'&67%6 &6&N&&ItU &'&676+6+Q++It &'&676. 6. T . [ . Js &'&676#/6/X/$/Lq &'&676(060\00s &&766'!/6/!//t &&766' .6 . . . t &&766'+6++n+It &&766' &6&&&p +01"&5463!2#""6""""""tU &'&67%6 &6&&&t &'&676+6+++t &'&676. 6.  . [ . s &'&676#/6/!/"/qR &&766'&06000sT &&766'!/6///tU &&766' .6 . . . ItU &&766'+6++n+tU &&766' &6&&&pQ +01"&5463!2#""6""""""t &'&67%6 &6&&&t &'&676+6+++t &'&676. 6.  . Y . q &676&')/6//J/q &&766'&06000s &&766'!/6///It &&766' .6 . . . t &&766'+6++n+t &&766' &6&&&p +01"&5463!2#""6""""""t &'&67%6 &6&&&t &'&676+6+++r &676&',/6///q &676&')/6//J/q &&766'&06000Js &&766'!/6/|//t &&766' .6 .x . . t &&766'+6+u+n+t &&766' &6&r&&qp +01"&5463!2#""6""q""""mt &'&67%6 &6&r&&t &676&'. -6 -Q- - r &676&',/6/N//q &676&')/6/K/L/Lq &&766'&060G00s &&766'!/6/C//t &&766' .6 .? . . t &&766'+6+<+p+mt &&766' &6&9&&8p +01"&5463!2#""6""8"""" D #/;GS_kwuic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A99&969F9V9f9v999999 ]A99]3?и9EAQQ&Q6QFQVQfQvQQQQQQ ]AQQ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuи y+ +ии $и*и0и6и <иBиHиNи TиZи`иfи lиr01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632     p #/;GS_kw+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии иии/01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         G""""t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         H&&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         K++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.          N . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         R/$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         V00q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766"/6/         Z//r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766/6/         ]//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766- 6-          ` -F -t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.           . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         /$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         00q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766"/6/         #//r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766/6/         &/}/t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.           . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         /$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         00q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766"/6/         //t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .          . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.           . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         /$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         v//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .         r . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         o+n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         l&&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         k""""t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         l&&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         o++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.          r . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         v/"/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060         C00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         ?//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .         ; . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         8+n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         5&&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         4""""t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         5&&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         8++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.          ; . Y . q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'v/6/         /J/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060          00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         //t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .          . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'y/6/         //q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'v/6/         /J/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060         00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         //t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .          . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'{ -6 -         Z- - r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'y/6/         ]//q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'v/6/         `/L/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060         d00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         h//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .         l . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         o+p+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         r&&p #/;GS_kw+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии ии и/01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         s""""Ez&@Ѻ5+'+AZ'j']A '')'9'I']A55&565F5V5f5v555555 ]A55]BEX/ >YEX"/" >YEX%/% >YEX/>YEX/>YEX/>Y".AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q:A!::':7:G:W:g:w:::::::::]A ::':7:qAF:V:q012###"&#"&&&&&5466666332764&&&&&#"3266666b\23\b-D!b\33\bF# -RsWXsR-cWsR-z3]bb\33\bb\39WsR--RsWc-Rs]n//9017](n(lH )+//9901#73F_~_V%Z!%Hu)+//9901333^{H )+//9901#'3~_!Z%VHu)+//9901##{+|n)+//9901##7guH= +//99 9 901#7'3F____V%ZLZ%V%%)AP:+*/EX/>Y*9*99*9:*9015!&&&&&&'7'6666667&&&&&&'6666667)0LA=DQ44QD=AL0B1=,!*9..9*!,=1B0LA=DQ44QD=AL0B1=,!*9..9*!,=1))A<=IZ;;ZI=Y+01'%!5!%7i#|j#@[{[{/ /// +01'%!5!%7%%%V%ZLZ%V^^^^ / ///+01!'7!5yJqpHJqp3///+к901!!'!%5%!kQqm2#@#j {8[[G3%/ / +  и01!%7'%!'!5!j#@#تms[[8{G=fU//и/ ܹ / //99 901#73737+Vh_taat_f{:a:=f[//ܹи/9 /// 9 9  901'#'#'3dtaat_Va:{=fk//ܹ и ///99 9 99901'7#7'3'7dVh_tt_V_tt_^m{:e:{::R)// + +015!!!N9{9`wu^V^u``R) //+ +01%'7!5!7'!5!'739`9{^u``u^hVR)1/// /++901!!7'7!5!'7Jl99{9d9{>^uu^V^uu^hV\ //99017%L\b])^V=V^)\b\Z //9901%777B)ZV\=\VZ)Z //9901'''%\ZV^)]bN)ZV\b\ //9901%%'P)b\VZ\\b\)^VZp&//901'&&&&&&'76766%w׽Cw["/CX:F[6U-]c*_df0Yn&?wyaJo'BN;g'R+ и EX / >Y+ +и  01!53!!#!5'cyyzz?b{c{fRh3///901#33Z]$%\Rm3 |///901#33 -.. pIfRh3///901#3 ]TZTRm3 |///901#3.- Ipfu//9015fuNNN2//9015}2NNN 3_//9015%3u''zz'fu//9015%%5fuuNNN2 :+ 3_//9015%%53u'zz''# 0  +/// //9 9013#5%%5M%$]Zu)mSNNNgv+A&6FVfv ]A]EX / >Y+  01"&&&5466633#"33H`99`H1>$ $>1g0G//G0E..EAe+A&6FVfv ]A]+  +01"&&&5466633#"33H`99`H1>$ $>10G//G0E..E!g~+A]A )9IYiy ]EX/ >Y+ 0153266654&&&##532#!1>$ $>1H`99`HgE..E0G//G0!Am+A]A )9IYiy ]+ +0153266654&&&##532#!1>$ $>1H`99`HE..E0G//G0+ A&6FVfv ]A]и EX/ >YEX / >Y+  01"&&&5466633#"335!H`99`H1>$ $>1ig0G//G0E..EFFv + и A&6FVfv ]A]/ ++015!'"&&&54633#"33-t>]>||1@&&@1vGE-I5jWG /##. E!m+ܸ ииEX/ >YEX/ >Y+ 0153266654&&&##532#5!!1>$ $>1H`99`HtgE..E0G//G0FF!xK+ܸ ии+ ++0153266654&&&##532#5!!1>$ $>1H`99`HoE..E0G//G0EEd8" r# lz# dz pzd8" r# _z# cz e d8" r# bz# R, SQd8" r TJd8" r ozd8" r# fz# kz azd8" r# fz# kz gzd8" r# fz# kz izd8" r# jz# `z bzd8" r# kz# fz azd8" r# kz# fz gzd8" r# kz# fz izd8" r# mI# l Vd8" r# mI# l Wd8" r# mI# l Xd8" r# mI# l Yd8" r# mI# l Zd8" r# mI# l [d8" r# mI# l \d8" r# mI# l ]d8" r# mI# l ^d8" r# mI# l# V UBd8" r# mI# l# V VUd8" r# mI# l# V WBd8" r# mI# l# V XBd8" r# mI# l# V YBd8" r# mI# l# V ZBd8" r# mI# l# V [Bd8" r# nz eFd8" r# qX# n e d8,;q{W++x+kX+<Q+45+-+|+<ܺ<9|9 |9Akk&k6kFkVkfkvkkkkkk ]Akk] Xk9AQQ]A QQ)Q9QIQYQiQyQQQQQQ ]Q<9A]A )9IYiy ]-9/ܸxи/x#и#/XFиF/kGиG/rиr/t|9xzиz/|~|ии~и}ииии4ииXи/<иXи/ии~и|и}иииии~и|и}и<иии~и|и}и~и|и}и~и|и}иии|EX/ >YEX/ >YEX/ >YEX/ >YEX/ >YEX/ >YEXr/r >YEX/ >YEX/ >YEX / >YEX / >YEX/ >YEX/ >YEXv/v >Y+|+++]+z{+ 9{и t t9{к 9{ к 9 9 9{иAи/]и/2и2/A4и4/]6и6/ALиL/hиh/tuи|}ܸܸиии|ии}ии/иииии|ии|ии|ии|ииии{и/]и/ииии{и/]и/ииии|и01###3333##32%###32#"&&&533266654&&&&&5466632#4&&&#"5!5!!#5#533!!5353!##4&##3264&##326%4&&&##3266653353#5##5##5##53#%3#3#3#53!533#533#%3#3#3##53#'&#*' :9#6%"7) $0"! < QAR}@dh,ddld-033&'= ddddddddddddd ddddddLddDd8" r# qX# n# h0 eF d8" r# qX# n# lF j# !O1"++;+A &6F]AUe]",A 11&161F1]AU1e1]AZ;j;]A ;;);9;I;]E9E/F//EX/ >YEX/>Y A  ' 7 G W g w ]A ]6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q014&&&#"326664&&&#"3266654&&&546663236666766661')  )'8dQW\/$% 0G0'SD+"!1!+5O56/ 0e))*+JuR+0Ph81=# !*-./'BiK'TOG7jknY01!#!5T'''/EX/>Y01!!#''''dB+ии ииEX / >YEX / >YEX/ >YEX/>YEX/>Y 015!!5!!5!!5!5!5!d!!!!?Bei]B?+и и ииEX/ >YEX/ >YEX/ >YEX/>YEX/>Y01!!!!!!!!!!?!!!!ia`2JE+/+01!#EDWW4G^+/+013!4WW3JF!+/+01#!5FWDr7W5H^!+/+015!35WW7rb% + и01&&&&#"#466632 ,=H&&H<, R&LrMLrM&+@))@+6lX77Xl6B9!+ и01#"&&&54632326667'4632B2Rg65hR260/8o0B-/C.n8.340Q<" :Q217:*D  F(:9C Y +A  & 6 F V f v ]A ]//01&&54673(++(0!"bKUUHMSRND Y+A]A )9IYiy ]/ /017#6654&'3*)/! /)*UKNRSMH#Z //01#73W4,Y^%w';(/)/ܸA]A )9IYiy ](и/ A  & 6 F V f v ]A ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&54666320&!!&&!!&G #C99C# #C99C# +J7 7J++R?&&?R+/fT66Tf//^L00L^`*+ /EX/>Y 90135667673*) I >.n +A]A )9IYiy ]и"EX/>Y +013566666654&#"#6666323.=U7$-''K&:)':& .aWE/M>1( //-1!8**3>NeE:"z4-+-и/A]A )9IYiy ]и/0-9-6EX/>Y(!+A!'7GWgw]A '7qAFVqܺ0901%#"&&&533266654춮&&&#"#6632z.@'-@)N "$3:8+! #)J OE&>,   !7)+6!!>1:.8/-HL&365/ \ + ии  /EX/>Y + 9 и013#5#533DDQB=MF='u&+A]A )9IYiy ]EX/>Y+"+ A!  ' 7 G W g w ]A   ' 7 qAF V q"901%#"&533266654&#"#!#666632u-:R]N2'!%1%/C  !#6%$C3JB*&.9E- 7> 2A"z 23/4/ ܸܸи/3и/A&6FVfv ]A]'и'/)и)/EX/>Y"+.+ A!  ' 7 G W g w ]A   ' 7 qAF V q01%4&#"3267#"&&&5466632#&&#"666632.)33++33)L$@3=G% 'G9JB G*"   "4>! 6;;66;;6;3#"Cb@3hR4DD.")1?  $4;*rEX/>Y+013#!5!QH;K ~ ?}@/A/6ܸ A ]A  ) 9 I Y i y ]и/@,и,/A&6FVfv ]A]и/',69;,69EX/>Y1++ A!  ' 7 G W g w ]A   ' 7 qAF V q'9;901%4&#"3264&#"326#"&&&546767&'&&546663265218188/ .-,/6%&5T!3>>3!.89- -99--;;$)//)*..)9""9))7 1$"1  1"$1 7"z 2e3/4/ ܸA]A )9IYiy ]3)и)/A&6FVfv ]A]и/и/и/EX/>Y.+ $+A!'7GWgw]A '7qAFVq014&#"326#"&'33266676'#"&&&5466632(+33))33+R 'G9IB F)"!  #3>! $A3=G$ u7::76;;(3hR4DD." (1@  $4;;3#"Cb,#$/%/ܸ$ и /ܸ A&6FVfv ]A]EX/>Y+ A!  ' 7 G W g w ]A   ' 7 qAF V q01%#"&&&5466632#4&#"32652I.>T34T?2H.J4>IJ%5!3E 7),Kc66eN/)8/0lsY+014&##3267##32dX\\XdHY++ 013!#3#!;JA@@;q 8+EX/>Y++013##!K6ԣ@A,-.///ܸܸи/.#и#/ A  & 6 F V f v ]A ]-и-/EX/>Y(+A!'7GWgw]A '7qAFVq014&&&#"3267675#53#"&&&5466632 -2H-*D3/z64/Th8$B`<4M2 3G(-T@'@  7Wi35\E(*2; c / / ܸܸ и/ܸи/ /EX/>YEX/>Y+01!5##3353KKK,h +/EX/>YA!'7GWgw]A '7qAFVq01%#"&&&5332653h*<$#9(I2"!3J&=-(9!4%44w;q&+/EX/>Y01333;K+@;[ // ܸܸ и/ܺ  9/ /EX/>YEX/>YEX/>Y99 901!##33;Kuu26R; e / / и/ܸ  ܸ//EX/>YEX/>Y9901!#33pKjJLK,';(/)/ܸA]A )9IYiy ](и/ A  & 6 F V f v ]A ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632%@00@&&@00@%L;[=>[<<[>=[;*I77I**P?&&?P*9gP//Pg99aG((Ga;// ܸA]A )9IYiy ]и/ܸEX/>Y++014&##3267###32W@CNNC@H#:J&LK&J:#{3&'22=  !=;()/*/ܸ A ]A  ) 9 I Y i y ]и/ и/) и / ܸи/ 9 и/ $EX/>YEX / >Y#+& + &901!&&&''&&&&###324&##326f -%@K^a;(  XA6\\6A! ).AQ)7.8@"/"",5S6/7/ܸ6и/ и //A//&/6/F/V/f/v////// ]A//] и /A]A )9IYiy ]EX/>Y!,+A!'7GWgw]A '7qAFVq01%#"&&&533266654&&&&&5466632#4&&&#")@P'&@/K$5./GSG/"4A#D5!J"+-:/GRG//=$,>'&#*' :9#6%"7) $0"! < &//EX/>Y901!#33QSSK  O// /EX/>YEX/>Y99 901!##333$B|{BOppXqpODYY A//EX/>YEX/>Y9901!'#'373Xī_{W 8+9//EX/>Y901%#533J[TA! (EX/>Y+0135!5!!!,n3QAR}@d8 !%)-159=AEIMQW]ag˻32++ и и и иии иии иии ии26и37и2Xи9и2:и3;иX=и2>и3?иXAиRи SиTиVи3Zи2\2^и3_иXaи2bи\cи3eиXgиiEX/ >YEX@/@ >YEX/ >YEX:/: >Y ++йи"и#и%и&и'и)и*и+и-и.и/и1иBиCиRиEиFиGиRIиJиKиRMиNиOиRQиRSܸUиXи Yи[и]иbиRcиdиSf0153#53#3#3#3#3#!535353!53!53!533#3#3#3##5!#5!#5!#5!#5#5333#!##dddddddddddd| ddddddddXdddd,ddddd ddddddddddX Xdddddddddh,dd?_<,E|'  | @  sxdXXwBP^XyFm=BZ=}R``R\RVRR=}=Bf}d BPBBT3PBD3B?7;3P3P1B+P!?TsPbbZFqFFF;3FmFV^F`5))ZFy+dF!//F7+;D=F{,d d PB3P?FFFFFFFFFFFmFmmm)ZFZFZFZFZF++++fXyfH7-FFTFw PX`w!9)(71FFZFR)9 NRXd d PPFP}P}LH=RNR;;H}} Bd Bd BBD,PP*KP???mFbRj}FL27FFFFFFFFFFFFFFFFFFFLFFLFFFFFFFFFFFFFF##FF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3&FF2FFF21FLhPd  bd d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d +PBw  w w #qqqqqqVqqFF3 {11?B%0=BBB#1+3j1113Z 33-""LFw1FFFFFLFFFFFl2FFl2l2FFFFBFFBPP#FPPPPPPPPGWB9PP#H#HPPPPPFF7FFFFFyFFFFFFFFFFF5F5FyFyFFhF'F2PF2B09BBBBBB%%P CB CB +B +BPP BOO2F27FFFF7FFFFFFFFFFFFFFFFFFFFFFFFF##FFF27FjFF F2FV1F1Z%1FHFF2FFFFVVB05BBBBBBBBBBBBBBBBBBBBBBBBBBBBB B0LPLPLPyP^P^P^P^Pd d;-;;;;;;;;;;;;7;7;7;(;;;33333T3NT797j%+9779799913F3F3F3F3F3F3F33mFmF2mFmFmFmFmFmFmFFmF3FF9FPPPPPPPPPF<Po+#pp+'+/$)+9;*i7}7777777?"???m;m;5B00+BBBBBBBBBBBB?5BBBmBB>BBBBBBBmFmFmF217m2mmmmmCmmmFmmFmFmFmFm7%mFmFmFmF22mmFmFmFm7%m7)FFGFFFF2F/DD`7D197o%N!!DDDDD 9_ DHDDDD7H93V^V^V^V^^V^V^V^V^V^^JJ      3&;)33       FFFFFFH+FF=7=7=7=7<=R7=7Q0B7BBBBBBB1BB'B!B9BB!!!!`5`5-`5```5``5{5C5`5'````5'555\X?7)5J'?7?7?7?7?7?7Z7?7???7 7)o))))')d+o+k!F77;;+-;;;;?;P)))))))))H ''1)))BBBBBB&+33333333cA5/%599/93 3=BBBBBBZF21ZFZ(ZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZF'FZFZF1ZF1F4DF-ZF*FFFFFFoFr.FC2EFFFZF2ZF2P9FPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPGPPPPPPPPPFC2.PKK 6 6FsFF5Py+#y+y+y+yy+yy+y+/=+hdF2F-2-2F3&1133335Ab.B5KPPBFFFFP$#!/!!/!/!/!!/!/!/!/!!!/!/!!!!+J)_0/11B1B1B1B1B1B1B1B1B1 1?BB];wB/ /1%+DP1/F/F/F/F/F/F/F/F/F/F/F/F2/F/2/F2G5V+P+P+P+P+P+P+P+P+P+P+P/Qz)#7!777777)77 P77)77 <<<(<!!!!!!!!!!S!!!!!!!#u+++++++++++++++++++++++#+++++++3& nV+!`F1`7.?????????????????????1??????;wP;; ;;;   ;; b F22T\TTT  @T VDDDDDDDwDVFssssss~ )ZZ Z=================++9;9;w;9;9;     B?B?B?B?B?FT#FFFFFFFf2FF/Ff2FFFFPPPPPPPPPPPP-+-+!-+-++-+-+F:BBeF++++BCPPm3FPPPw4m3PPPQ#--55dd??X??55R;;s+-55775555^^^b^^^??NNN%;;ynDD!!R}}=}noPRPP=;MP^; X XHHHTT22M    U2-//ZZZ2Z??gi 33j3jjm3:33j3j3jfbbbbmhhbbbBbmm____2pnp>c.!Nu||RR%\%Q%Z33aaRRvK2o3f1eoo3f3fo8'<NZ%)w%)wSSwsdfm&-y--m&---2222<:4=TsssssTZTXTVTUTUTXTZTXTVTUTVTXTZTXTVTUTVTXTZTXTUTUTVTXTZ|||||||||||||||||||||||||(Z(Z(Z(Z(Z(t(t(t(t(tnnnnn(U(U(V(X(Z(U(V(X(Z(X(V(X(Z(X(V(X(Z(X(V(U(Z(X(V(U(UUUUUUUUUUUVVVVVXXXXXZZZZZUUUUUVVVVVXXXXXZZZZZXXXXXVVVVVXXXXXZZZZZXXXXXVVVVVXXXXXZZZZZXXXXXVVVVVUUUUUZZZZZXXXXXVVVVVUUUUUUUUUUZZZZZsssss(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss888888888888888888888888888888888888888888888888888888888888888888888888888888888X888888888888888888888888888888888888888888888888888888888888888888888888888888888E]HH+`X===RRR\ZZ\pf3f3Bf!3Bf!3!!!! `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d=Hf) T-Tdw2w4w3w5bB C D#%`."'"* ",;;;2, ;,;;;:,;;,   ! `dpppp,X B t  $ >N^F$Z `!!""P$H'')))*+X-.f.v.///024*67:@:<<<<=>*>r>>>?$?4AC>CNC^ENF8I:IJIZIjJnJ~JLFN:PRTDVzWXYZZ(["[\\^^^^aabbb6bLbdb|bbbeeeef f f6fLfbfzfffffg g"g:gRgi j^m"oppsvyzz{ {{~.Z&jR&X2:T h\\t`l" 8P(8H(Nf~&>V<Tl|txD"@ $Ddzš°6NnÎî&Ff~ĖĮ>VnņŞd*\0H`<,V&>Vvۖ۶&Ff܆ܦ&F^~ݖݶ| 8f~&F^~.Nf&F^~8P   Z~" !#`&')L*-2-J/X1.2455527F9;|=?8@BfCEGIdI|KNOQT8UUV V$V<VTY[^"`beNhj,lhnoqtDvxz${}} |.nzVB^n* ":RjfphĂXpɐ˸Π҄Lۺ&>Vnb" @L82Rj 8Pp > 6 8v *R!"%t'$*F-.147|94;|=?ADLDbG@IKLMXN@NXNpNNNNOOO8OPOpOOOOOPP P@PXPpPPPPRUTVX<Y\_```bcehPjjmorHs2ttunvwyy,zzz}}}`0HntzFJ$.6\0H`xhTz " Z<Nf~ǖǮ0٪ܒނxP:J^Bz hL <R $<Tl    4*N :!!,""#z######$$($F$^$v$&'Z()***+D+,B,,,../0n12`2x22223l347 707@78R89h9:::2:J:b:z:::::;<<=\>.>???:?R?j?@CCDrDDEGII*I:IJNJ^K,KMNOPRStUrVXfYZ[\\]_4`Zace:g hi6iNifi~iikl m:nFnVooqvrt|v@xTzzz}n~&>V(pB.&>Zz  8Xp\t,2p~,4Ld|\0BZrL.ƌŤΎv,:լצلd܂4Ld|ޔޮ4d<8Px6Nflt&>p     R j vl~:Rr0Ph0Hh& " 2"#\#t%p&2(**-/l122(2@2X2p4789<?nADjFGHIJLMNNNNNOO6OVOnOOOOOPP.PNPnPPPPPQQ6QNQfSVZXvZZ\\^anadd&d>dVdndfikmpvrtv>x{8|vLd|(rfftrxb" x4ϦhbtҊҢҺ4L$ؤ~XPXt<T4@lJfJ`~0H  jL !!.!F!^!~!!!!!%n'*h++$+<+T+l+++++-/n0r135679v<*?BDdEFTG:HJJKLKLL,LDL\LtLLNpOVP>QJQRSzT,UW(X\YZ[[[\\&\>\V\n\\\\]]&]F]^]v]]]]`acevfhhiii0iHklmoFpqstvwwy"yz z$z<zTzlzzzzz{{<{\{t{{{{{}d6 8Ph>Xj<TtXX@TtdF^vh 8Ph|T8rfrtŒ¤0:Rrl*BZrȊȢȺ2JbʠˆDPHвҎH`֢2ھnۆ۞۶..N6NfTl40R.F^<Xh:x. L \    d4, !$&L'J()**+Z,0-J/1p23x4579;=>@@Z@BD@EFG|I&L(M^ORTXT[B]``dXfimopqr`rxrs"sstttuuvvvwxPyyzV{}}^}}}~2~Nj$\Ll(PzDjPbt$6V~6HTtH`PRl2p&>VH`z@RRdz&.4&R&|"4Z6H>T`r8Jj"48Jj|"hz`*lLV~68.hFB–:Ì0Ă&xNƈ8vDz*fȢXɔ Jʆ:v˴8r̬"`͜PΌB~Ϻ4pЬ$`ўўўўўўўўўўў&dҢ*hӦ"ժl.f\Hڮۜ ܜ"݌ތߺttx bZ"d0:bL2xH|,82|RB H  p     : b2JxN0.l~$\t H !""#b#$%%&'2'(v) )*4*+8+,\--.&./0001X223z345f6267h78N89F9:p;2;<=>|>?@J@AHABPBC@CDXDEXEFbFGbGH\HIvIJFJKhL8MMNO`P2QQRSxTJUUVWrXjY:ZZ[B[\\\]|^^_T_`a8abtc"cd^defHfgh hi0ijkldm0mnopqrFrsttu\vvw wxBxyzBz{d{|v|}l}~ d$B"rl4DHJL>p8x l&r8N>:$bP8r$^ F2lTD~2n"\L<x*fVF4p$^N>zŽxbL6  l#V*@1*8>ELSZahvo`vJ}4jT<& t \ F . # * 0 7 > E L S| Zf aN h8 o" v | n V > &  ݮ 0 ^  b ( V  F F 4 ` $ h  d V ( f $ ^ p  B \ J  * R z " J r  : b  * R  B r    < l & \  l D ~   8  &  > b  | f      8 6 ! "v # #^ $ % &^ & '\ ' ) * + - .$ . / /| / 3 s  W @@Q,X /  y~ 777788 888% 83 8> 8Y 8t 8y8}888888888888999 99# 9'!9?"9W#9l$9%9& 9' 9( 9)9*9+9,9-:.:/:#0::1 :B2:K3:h4:w5:6 :7 :8:9 :: :;:<:=:>; ? ;"@ ;+A;5B;KC;QD;YE ;qF ;zG;H ;I ;J;K;L;M ;N;O;P;Q<R< S<T<-U<2V<7W  ? ?  &?(  ?N ?X *?`  ? ?  0? !0? "*? #&@& $2@L %(@~ &@ '@ (@ ) @ * A +A ,4A  -"AT .Av /.A 0A 1A 2:A 3B 4B< 5 BZ 6Bz 7B 8,B 9B :B ;0B <C& =CD >0Cb ?C @C A,C B C CC D0D ED0 FDB G0DV HD ID J,D K D LD ME N E OE( P*E0 Q EZ REd S?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s tuni00A0uni25CCa.2StorySlantItalicuni0430uni2090uni1D43uni0363uni0201uni1EADuni1EA5 uni1EA5.VNuni1EA7 uni1EA7.VNuni1EAB uni1EAB.VNuni1EA9 uni1EA9.VNuni0203abreveuni1EB7uni1EAF uni1EAF.VNuni1EB1 uni1EB1.VNuni1EB5 uni1EB5.VNuni1EB3 uni1EB3.VNuni04D1uni01CEamacronuni04D3uni01DFuni0227uni01E1 aringacuteuni1E9Auni1EA3uni1EA1uni1E01aogonekaogonek.RetroHookStyleuni1D8Funi2C65atilde.2StorySlantItalicuni1EA1.2StorySlantItalicuni0250uni0250.2StorySlantItalicuni1D44uni0251 a.SngStoryuni1D45aacute.SngStoryagrave.SngStoryuni0201.SngStoryacircumflex.SngStoryuni1EAD.SngStoryuni1EA5.SngStoryuni1EA7.SngStoryuni1EAB.SngStoryuni1EA9.SngStoryuni0203.SngStoryabreve.SngStoryuni1EB7.SngStoryuni1EAF.SngStoryuni1EB1.SngStoryuni1EB5.SngStoryuni1EB3.SngStoryuni01CE.SngStoryatilde.SngStoryamacron.SngStoryadieresis.SngStoryuni01DF.SngStoryuni0227.SngStoryuni01E1.SngStoryaring.SngStoryaringacute.SngStoryuni1E9A.SngStoryuni1EA3.SngStoryuni1EA1.SngStoryuni1E01.SngStoryaogonek.SngStoryaogonek.SngStory.RetroHookStyleuni1D90uni0252uni1D9Bae.2StorySlantItalicuni04D5uniF1A1aeacuteuni01E3uni1D02uni1D46alphauniF247uniF248uni0410uni1D2Cuni1D00uni0200uni1EA4 uni1EA4.VNuni1EA6 uni1EA6.VNuni1EAA uni1EAA.VNuni1EA8 uni1EA8.VNuni1EACuni0202Abreveuni1EAE uni1EAE.VNuni1EB0 uni1EB0.VNuni1EB4 uni1EB4.VNuni1EB2 uni1EB2.VNuni1EB6uni04D0uni01CDAmacronuni04D2uni01DEuni0226uni01E0 Aringacuteuni1EA2uni1EA0uni1E00AogonekAogonek.RetroHookStyleuni023Auni20B3uniF208uniF209uni04D4uni1D2Duni1D01AEacuteuni01E2uni1D47uni1E03uni1E07uni1E05uni1D80uni0180.BarBowluni0180uni1D6Cuni0253uni0185uni0183uni0431uni044Cuni048Duni044Auni044Buni04F9uni0432uni0412uni1D2Euni0299uni1E02uni1E06uni1E04uni0243uni1D2Funi1D03uni0181uni0184uni0182uni0411uni042Cuni048Cuni042Auni042Buni04F8betauni1D66uni1D5Duni0441uni217Duni1D9Cuni0368 ccircumflex cdotaccentuni1E09uni04ABuniF225uni023Cuni0297uni0188uni0255uni1D9Duni0254uni0254.TopSerifuni1D53uni1D53.TopSerifuni1D97uni1D97.TopSerifuni2184uni1D12uni0454uni044Duni04EDuni044D.MongolStyleuni0421uni216Duni1D04 Ccircumflex Cdotaccentuni1E08uni04AAuni023Buni0187Euro colonmonetaryuni20A0uni20A2uni20B5uni0186uni0186.TopSerifuni1D10uni1D10.TopSerifuni2183uni0404uni042Duni04ECuni042D.MongolStyleuni0501uni217Euni1D48uni0369uni1E0Buni1E13uni1E0Funi1E0Duni1E11dcaronuni1D81dcroat.BarBowldonguni1D6Duni0257uni0256uni1D91uni0221uni018Cuni0238uni01F3uni01C6uni02A3uni02A5uni02A4uni0503deltauni1D5Funi1D9Euni216Euni1D30uni1D05Dcaronuni1E0Auni1E12uni1E0Euni1E0Cuni1E10Dcroatuni0189uni1D06uniF20Duni018Auni018Buni01F2uni01C5uni01F1uni01C4uni0500uni0502uni0394uni2181uni2180uni2182uni20AFuni0435uni2091uni1D49uni0364uni0450uni0205uni1EBF uni1EBF.VNuni1EC1 uni1EC1.VNuni1EC5 uni1EC5.VNuni1EC3 uni1EC3.VNuni1EC7uni0207ebreveuni04D7ecaronuni1EBDemacronuni1E17uni1E15uni0451 edotaccentuni1EBBuni1E19uni1E1Buni1EB9uni0229uni1E1Deogonekeogonek.RetroHookStyleuni1D92uni0247uni04BDuni04BFuni01DDuni0259uni04D9uni2094uni1D4Auni04DBuni1D95uni025Auni0258uniF1A3uni025Buni1D4Buni1D93uni025Cuni1D9Funi1D94uni025Duni1D08uni1D4Cuni029Auni025EuniF1A4uni0511uni0437uni04DFuni0499uni0507uni0505uni0415uni1D31uni1D07uni0400uni0204uni1EBE uni1EBE.VNuni1EC0 uni1EC0.VNuni1EC4 uni1EC4.VNuni1EC2 uni1EC2.VNuni1EC6uni0206Ebreveuni04D6Ecaronuni1EBCEmacronuni1E16uni1E14uni0401 Edotaccentuni1EBAuni1E18uni1E1Auni1EB8uni0228uni1E1CEogonekEogonek.RetroHookStyleuni0246uni04BCuni04BEuni018Euni1D32uni018Funi04D8uni04DAuni0190uni0510uni0417uni04DEuni0498uni0506uni0504 f.SlantItalicuni1DA0uni1E1Funi1D82uni1D6Ef_if_i.SlantItalicf_lf_l.SlantItalicf_f_if_f_i.SlantItalicffif_f_lf_f_l.SlantItalicfflf_ff_f.SlantItalicffuni02A9longsuni1E9Buni0433uni0453uni0491uni04F7uni0493uni0493.SlantItalicuniF327uniF327.SlantItalicuni04FBuni04FB.SlantItalicuni1E1Euni0191uni0413Gammauni1D26uni0403uni0490uni04F6uni0492uniF326uni04FAuni1D4Duni01F5 gcircumflexgcaronuni1E21 gdotaccent gcommaaccentuni01E5.BarBowluni01E5 g.SngBowluni0261uni1DA2uni01F5.SngBowlgcircumflex.SngBowlgbreve.SngBowlgcaron.SngBowluni1E21.SngBowlgdotaccent.SngBowlgcommaaccent.SngBowluni1D83uni01E5.BarBowl.SngBowluni0260uni1D77uni1D79uni050Duni1D33uni0262uni01F4 GcircumflexGcaronuni1E20 Gdotaccent Gcommaaccentuni01E4uni0193uni029Buni20B2uni050Cuni02B0uni036A hcircumflexuni021Funi1E27uni1E23uni1E2Buni1E96uni1E25uni1E29hbaruni045BuniF1BCuni0452uni0266uni02B1uniF25Auni0267uni2C68uni0195uni2C76uni0265uni1DA3uni02AEuni02AFuni04BBuni04BB.UCStyleuni0495uni043Duni04A5uni04A3uni04CAuni045Auni04C8uni050Buni043Funi04A7uni045Funi0446uni0448uni0449uni1D28uni041Duni1D34uni1D78uni029C Hcircumflexuni021Euni1E26uni1E22uni1E2Auni1E24uni1E28Hbar Hbar.VertStrkuni2C67uni01F6uni2C75uni04BAuni0494uni04A4uni04A2uni04C9uni040Auni04C7uni050Auni041Funi04A6uni040Funi0426uni0428uni0429 i.SlantItalicuni0456uni2170uni1D62uni2071uni0365uni0209uni020Bibreveuni01D0itildeimacronuni0457uni1E2Funi1EC9uni1E2Duni1ECBiogonekiogonek.RetroHookStyleuni1D96uni0268uni1DA4 i.Dotlessdotlessi.SlantItalici.Dotless.SlantItalicuni0456.Dotlessuni1D62.Dotlessuni2071.Dotlessuni1E2D.Dotlessuni1ECB.Dotlessiogonek.Dotlessuni1D96.Dotlessuni0268.Dotlessuni1DA4.Dotlessuni1D09uni1D4Eijuni2171uni2172uni2173uni2178uni0269uni1DA5uni1D7Cuni044Euni0406uni04C0uni04CFuni2160uni1D35uni026Auni1DA6uni0208uni020AIbreveuni01CFItildeImacronuni0407uni1E2Euni1EC8uni1E2Cuni1ECAIogonekIogonek.RetroHookStyleuni0197uni1D7Buni1DA7IJuni2161uni2162uni2163uni2168uniF258uni0196uni042Euni0458uni02B2 jcircumflexuni01F0uni0249uni029Duni1DA8 j.Dotlessuni0237uni0458.Dotlessuni02B2.Dotlessuni025Funi0249.Dotlessuni1DA1uni029D.Dotlessuni1DA8.Dotlessuni0284.TopSerifuni0284uni043Buni04C6uni0459uni0513uni0509uni0434uni0408uni1D36uni1D0A Jcircumflexuni0248uni041Buni1D2Buni04C5uni0409uni0512uni0508uni0414uni1D4Funi1E31uni01E9uni1E35uni1E33 kcommaaccentuni1D84uni0199uni2C6Auni029E kgreenlandicuni043Auni045Cuni049Buni04A1uni049Funi049Duni04C4uni0436uni04C2uni04DDuni0497uni1D37uni1D0Buni1E30uni01E8uni1E34uni1E32 Kcommaaccentuni0198uni2C69uni20ADuni041Auni040Cuni049Auni04A0uni049Euni049Cuni04C3uni0416uni04C1uni04DCuni0496 l.SlantItalicuni217Cuni02E1lacuteuni1E3Duni1E3Buni1E37uni1E39 lcommaaccentldotlcaronuni1D85uni1DAAuni019Auni2C61uni026Buni026Duni1DA9uni0234uni026CuniF266uni01C9uni02AAuni02ABuni026Euni20B0lirauni216Cuni1D38uni029Funi1DABuniF268Lacuteuni1E3Cuni1E3Auni1E36uni1E38 LcommaaccentLdotLcaronuni023Duni2C60uni2C62uni1D0Cuni01C8uni01C7uni217Funi1D50uni036Buni1E3Funi1E41uni1E43uni1D86uni1D6Funi20A5uni0271uni1DACuni026Funi1D5Auni0270uni1DADuni1D1Funi043Cuni04CEuni041Cuni216Funi1D39uni1D0Duni1E3Euni1E40uni1E42uniF25Buni019Cuni04CDu1D510uni207Fnacuteuni01F9ncaronuni1E45uni1E4Buni1E49uni1E47 ncommaaccent napostropheuni1D87uni1D70uni0272uni1DAEenguni1D51uni0273uni1DAFuni0235uni019Euni01CCuni0438uni045Duni0439uni048Buni04E3uni04E5uni1D3Auni0274uni1DB0Nacuteuni01F8Ncaronuni1E44uni1E4Auni1E48uni1E46 Ncommaaccentuni20A6uni019D Eng.UCStyleuni1D0Euni1D3Buni019D.LCStyleEng.BaselineHookEnguni0220Eng.Komuni01CBuni01CAuni2116uni0418uni040Duni0419uni048Auni04E4uni04E2uni043Euni2092uni1D52uni0366 ohungarumlautuni020Duni1ED1 uni1ED1.VNuni1ED3 uni1ED3.VNuni1ED7 uni1ED7.VNuni1ED5 uni1ED5.VNuni1ED9uni020Fobreveuni01D2uni1E4Duni022Duni1E4Fomacronuni1E53uni1E51uni04E7uni022Buni022Funi0231uni1ECFuni1ECDuni01EBuni01EDuni01EB.RetroHookStyleuni01ED.RetroHookStyleuni018Duni0275uni04E9uni1DB1uni04EBthetauni1DBFuni0473uniF1AB oslashacuteemptyset.SlashZeroemptysetohornuni1EDBuni1EDDuni1EE1uni1EDFuni1EE3sigmauni04A9uni1D11uni1D13uniF1ADuni1D14uni01A3uni0223uni0223.OpenTopuni1D17uni1D55uni1D16uni1D54uni041Euni1D3Cuni1D0F Ohungarumlautuni020Cuni1ED0 uni1ED0.VNuni1ED2 uni1ED2.VNuni1ED6 uni1ED6.VNuni1ED4 uni1ED4.VNuni1ED8uni020EObreveuni01D1uni1E4Cuni022Cuni1E4EOmacronuni1E52uni1E50uni04E6uni022Auni022Euni0230uni1ECEuni1ECCuni01EAuni01ECuni01EA.RetroHookStyleuni01EC.RetroHookStyleuni019Funi04E8uni04EAThetauni0472 OslashacuteOhornuni1EDAuni1EDCuni1EE0uni1EDEuni1EE2uni04A8uni0276uniF1AEuni01A2uni0222uni0222.OpenTopuni1D3Duni1D3D.OpenTopuni1D15uni1D15.OpenTopuni03A9uni0298uni0440uni1D56uni1E55uni1E57uni1D88uni1D7Duni048Funi1D71uni01A5uni01A5.BowlHookuni01BFuni1D68uni0278uni1DB2uni0444uni1D69uni1D60uni2C77uni0420uni1D3Euni1D18uni1D29uni1E54uni1E56uni048Euni2C63uni01A4uni20B1pesetauni01F7u1D513uni0424uni1D2Auni02A0uni024Buni01AAuni0239uni024Auni1D63uni1DCAuni02B3uni036Cracuteuni0211uni0213rcaronuni1E59uni1E5Funi1E5Buni1E5D rcommaaccentuni1D89uni024Duni1D72uni027Duni027Cuni0279uni02B4uni027Buni02B5uniF269uni027Auni027Euni1D73uni0285uni027Funi1D3Funi0280Racuteuni0210uni0212Rcaronuni1E58uni1E5Euni1E5Auni1E5C Rcommaaccentuni024Cuni2C64uni2C64.LCStyleuni01A6uni20A8uni211Funi1D1Auni0281uni02B6uni042Funi1D19uni044Funi0455uni02E2sacuteuni1E65 scircumflexuni1E67uni1E61uni1E63uni1E69 scommaaccentscedilla.CommaStyleuni0282uni1DB3uni1D8Auni1D74uni023Funi01A8uni0283uni1DB4uni1D98uni1D8Buni0286uni0405Sacuteuni1E64 Scircumflexuni1E66uni1E60uni1E62uni1E68 ScommaaccentScedilla.CommaStyleuni01A7uni20B4uni1D57uni036Duni1E97uni1E6Buni1E71uni1E6Funi1E6Duni021Buni0163.CommaStyletcaronuni0163uni01ABuni1DB5tbaruni1D75uni2C66uni01ADuni0288uni0236uni1D7Auni02A8uni02A6uni02A7uni0287uni0442uni04ADuni050Funi04B5uni0422uni1D40uni1D1BTcaronuni1E6Auni1E70uni1E6Euni1E6Cuni021Auni0162.CommaStyleuni0162Tbaruni20AEuni023Euni01ACuni01AC.RtHookuni01AEuni04ACuni050Euni04B4uni040Buni0402uni1D64uni1D58uni0367 uhungarumlautuni0215uni0217ubreveuni01D4utildeuni1E79umacronuni1E7Buni01D8uni01DCuni01DAuni01D6uringuni1EE7uni1E77uni1E75uni1E73uni1EE5uogonekuogonek.RetroHookStyleuni1D99uni0289uni1DB6uhornuni1EE9uni1EEBuni1EEFuni1EEDuni1EF1uni1D6Buni1D1Duni1D59uni1D1Euni028Buni1DB9uni028Auni1DB7uni1D7FuniF259uni1D41uni1D1Cuni1DB8 Uhungarumlautuni0214uni0216Ubreveuni01D3Utildeuni1E78Umacronuni1E7Auni01D7uni01DBuni01D9uni01D5Uringuni1EE6uni1E76uni1E74uni1E72uni1EE4UogonekUogonek.RetroHookStyleuni0244uni1D7EuniF1CDUhornuni1EE8uni1EEAuni1EEEuni1EECuni1EF0uni01B2uni01B1 v.SlantItalicuni2174uni1D65uni1D5Buni036Euni1E7Duni1E7Funi1D8CuniF25Funi028B.StraightLftuni2C74uni2175uni2176uni2177uni028Cuni1DBAuni0264.LrgBowluni0264uniF1B5uni0264.GammaStyleuni0263uni02E0gammauni1D67uni1D5Euni2164uni1D20uni1E7Cuni1E7Euni2123uni2165uni2166uni2167uni0245uni1D27uni0194uni02B7wacutewgrave wcircumflex wdieresisuni1E87uni1E98uni1E89uniF21Auni02ACuni028Duni0277uni1D42uni1D21WacuteWgrave Wcircumflex Wdieresisuni1E86uni1E88uniF21Buni20A9uni0445uni2179uni2093uni02E3uni036Funi1E8Duni1E8Buni1D8Duni04FFuni04FDuni04B3uni217Auni217Bchiuni1D6Auni1D61uni0425uni2169uni1E8Cuni1E8Auni04FEuni04FCuni04B2uni216Auni216Buni0443uni02B8uni04F3ygrave ycircumflexuni045Euni1EF9uni0233uni04EFuni04F1uni1E8Funi1E99uni1EF7uni1EF5uni024Funi01B4uni04AFuni04B1uni028EuniF1CEuniF267lambdauni019Buni0447uni04F5uni04B9uni04B7uni04CCuni04AEuni028FuniF1B4Ygrave Ycircumflexuni1EF8uni0232uni1E8Euni1EF6uni1EF4uni024Euni04B0uni01B3uni01B3.RtHookuni0423uni04F2uni040Euni04EEuni04F0uni0427uni04F4uni04B8uni04B6uni04CB z.SlantItalicuni1DBBzacuteuni1E91 zdotaccentuni1E95uni1E93uni0290uni1DBCuni1D8Euni01B6uni1D76uni0291uni1DBDuni0225uni2C6Cuni0240uni1D22Zacuteuni1E90 Zdotaccentuni1E94uni1E92uniF234uni01B5uni0224uni2C6Buni01A9uni01B7.RevSigmaStyleuni04E0.RevSigmaStyleuni0292uni04E1uni1DBEuni01EFuni1D9AuniF235uni0293uni0293.LrgBowluni01BAuni01B9uniF245uni021Duni01B7uni04E0uni1D23uni01EEuni01B8uni021Cuni0294uni02C0uni0242uni0241uni02A1uni0295uni02C1uni02E4uni02A2uni0296uni01BEuni1D24uni1D25uni1D5Cuni20AAuni2080uni2070uni2081uni2082uni01BBuni2083uni2084uni2074uniF246uni2085uni2075uni01BCuni01BDuni2086uni2076uni2087uni2077uni2088uni2078uni2089uni2079uni215Fonethirduni2155uni2159 oneeighth twothirdsuni2156uni2157 threeeighthsuni2158uni215A fiveeighths seveneighthsuni01C3uniF19EuniF19F exclamdbluniF26A uniF26A.LrguniF21D uniF21D.Lrgonedotenleadertwodotenleaderuni02F8uniF1E9 uniF1E9.Wideuni02BBuni0312 quotereverseduni02BDuni0314uni02BC uni02BC.Lrguni201Funi02EEuni02D0uni02D1 anoteleiauni2027uni2219uni208Duni207Duni208Euni207Euni27E6uni27E7uni2308uni2309uni230Auni230Buni01C0uni01C1uni01C2uni2016uni02CCuni02C8uni0337uni0338uni2010uni2011uni00AD figuredashuni2015uni02D7uni208Buni207Buni0320uni0335uni0336uni02CFuni0317uni02CA acutecombminuteuni02B9seconduni02BAuni02F6uni030Buni2034uni2057uni02CEuni0316uni02F4uni02CB gravecombuni2035uni2036uni02F5uni030Funi2037uni2038uni032DuniF1E7uni0302uni0302_acutecomb.VNuni0302_gravecomb.VNuni0302_tildecomb.VNuni0302_hookabovecomb.VNuni032Funi0311 uni0311.UU uni0311.UL uni0311.LLuni0352uni2040uni0361uniFE20uniFE21uni032Euni0306uni0306_acutecomb.VNuni0306_gravecomb.VNuni0306_tildecomb.VNuni0306_hookabovecomb.VNuni0310uni0306.CyShortMrkAltuni203Funi035Cuni035Duni02ECuni032Cuni030Cuni1DC7uni1DC4uni1DC5uni1DC6uni1DC9uni1DC8uni02F7uni0330uni0334 tildecombuni034Asimilaruni2053uni034CuniF17Buni034Buni0360uniFE22uniFE23uni033Euni035Buni0359uni0353uni02DFuni033Duni032Buni033Cuni02CDuni0331 uni0331.Shortuni02C9uni0304 uni0304.Shortuni035Funi035Euni0332uni0305 underscoredbluni0333uni0347uni033Funi02EDuniF1EAuni208Cuni207Cuni225F equivalenceuni0324uni0308 uni0308.UU uni0308.LL uni0308.UL uni0308.SupuniF17A dotbelowcombuni0307uni0358uni0326uni0313uni0315uni031Buni02F3uni0325uni030Auni035Auni031Cuni02D3uni02BFuni0351uni0339uni02D2uni02BEuni0357 hookabovecombuni0329uni030Duni0348uni030Euni208Auni031Funi02D6uni207Auni031Euni02D5uni031Duni02D4uni0318uni0319uni02EBuni02EAuni0349uni031Auni02CB.ChinantecTnuni02C8.ChinantecTnuni02CA.ChinantecTnuniA717uniA718uniA719uniA71Auni02C9.ChinantecTnuniA720uniA721uni02FEuni02FDuni02ADuni0327uni0328uni0328.RetroHookStyleogonek.RetroHookStyleuni1DC2uni032Auni0346uni033Auni2423uni033Buni02DE uni02DE02DEuni02E9.rstaffuni02E8.rstaffuni02E7.rstaffuni02E6.rstaffuni02E5.rstaffuniA716.lstaffuniA715.lstaffuniA714.lstaffuniA713.lstaffuniA712.lstaff uni02E9.1 uni02E9.2 uni02E9.3 uni02E9.4 uni02E9.5 uni02E8.1 uni02E8.2 uni02E8.3 uni02E8.4 uni02E8.5 uni02E7.1 uni02E7.2 uni02E7.3 uni02E7.4 uni02E7.5 uni02E6.1 uni02E6.2 uni02E6.3 uni02E6.4 uni02E6.5 uni02E5.1 uni02E5.2 uni02E5.3 uni02E5.4 uni02E5.5 uniA716.1 uniA715.1 uniA714.1 uniA713.1 uniA712.1 uniA716.2 uniA715.2 uniA714.2 uniA713.2 uniA712.2 uniA716.3 uniA715.3 uniA714.3 uniA713.3 uniA712.3 uniA716.4 uniA715.4 uniA714.4 uniA713.4 uniA712.4 uniA716.5 uniA715.5 uniA714.5 uniA713.5 uniA712.5uni02E9.rstaffnouni02E8.rstaffnouni02E7.rstaffnouni02E6.rstaffnouni02E5.rstaffnouniA716.lstaffnouniA715.lstaffnouniA714.lstaffnouniA713.lstaffnouniA712.lstaffno uni02E9.no uni02E8.no uni02E7.no uni02E6.no uni02E5.no uniA716.no uniA715.no uniA714.no uniA713.no uniA712.nouniA708uniA709uniA70AuniA70BuniA70C uni02E502E9 uni02E502E8 uni02E502E7 uni02E502E6uni02E5 uni02E602E9 uni02E602E8 uni02E602E7uni02E6 uni02E602E5 uni02E702E9 uni02E702E8uni02E7 uni02E702E6 uni02E702E5 uni02E802E9uni02E8 uni02E802E7 uni02E802E6 uni02E802E5uni02E9 uni02E902E8 uni02E902E7 uni02E902E6 uni02E902E5uni02E502E902E9uni02E502E902E8uni02E502E902E7uni02E502E902E6uni02E502E902E5uni02E602E902E9uni02E602E902E8uni02E602E902E7uni02E602E902E6uni02E602E902E5uni02E702E902E9uni02E702E902E8uni02E702E902E7uni02E702E902E6uni02E702E902E5uni02E802E902E9uni02E802E902E8uni02E802E902E7uni02E802E902E6uni02E802E902E5 uni02E902E9uni02E902E902E8uni02E902E902E7uni02E902E902E6uni02E902E902E5uni02E502E802E9uni02E502E802E8uni02E502E802E7uni02E502E802E6uni02E502E802E5uni02E602E802E9uni02E602E802E8uni02E602E802E7uni02E602E802E6uni02E602E802E5uni02E702E802E9uni02E702E802E8uni02E702E802E7uni02E702E802E6uni02E702E802E5uni02E802E802E9 uni02E802E8uni02E802E802E7uni02E802E802E6uni02E802E802E5uni02E902E802E9uni02E902E802E8uni02E902E802E7uni02E902E802E6uni02E902E802E5uni02E502E702E9uni02E502E702E8uni02E502E702E7uni02E502E702E6uni02E502E702E5uni02E602E702E9uni02E602E702E8uni02E602E702E7uni02E602E702E6uni02E602E702E5uni02E702E702E9uni02E702E702E8 uni02E702E7uni02E702E702E6uni02E702E702E5uni02E802E702E9uni02E802E702E8uni02E802E702E7uni02E802E702E6uni02E802E702E5uni02E902E702E9uni02E902E702E8uni02E902E702E7uni02E902E702E6uni02E902E702E5uni02E502E602E9uni02E502E602E8uni02E502E602E7uni02E502E602E6uni02E502E602E5uni02E602E602E9uni02E602E602E8uni02E602E602E7 uni02E602E6uni02E602E602E5uni02E702E602E9uni02E702E602E8uni02E702E602E7uni02E702E602E6uni02E702E602E5uni02E802E602E9uni02E802E602E8uni02E802E602E7uni02E802E602E6uni02E802E602E5uni02E902E602E9uni02E902E602E8uni02E902E602E7uni02E902E602E6uni02E902E602E5uni02E502E502E9uni02E502E502E8uni02E502E502E7uni02E502E502E6 uni02E502E5uni02E602E502E9uni02E602E502E8uni02E602E502E7uni02E602E502E6uni02E602E502E5uni02E702E502E9uni02E702E502E8uni02E702E502E7uni02E702E502E6uni02E702E502E5uni02E802E502E9uni02E802E502E8uni02E802E502E7uni02E802E502E6uni02E802E502E5uni02E902E502E9uni02E902E502E8uni02E902E502E7uni02E902E502E6uni02E902E502E5uni02E902E902E9uni02E802E802E8uni02E702E702E7uni02E602E602E6uni02E502E502E5uniA70DuniA70EuniA70FuniA710uniA711 uniA712A716 uniA712A715 uniA712A714 uniA712A713uniA712 uniA713A716 uniA713A715 uniA713A714uniA713 uniA713A712 uniA714A716 uniA714A715uniA714 uniA714A713 uniA714A712 uniA715A716uniA715 uniA715A714 uniA715A713 uniA715A712uniA716 uniA716A715 uniA716A714 uniA716A713 uniA716A712uniA712A716A716uniA712A716A715uniA712A716A714uniA712A716A713uniA712A716A712uniA713A716A716uniA713A716A715uniA713A716A714uniA713A716A713uniA713A716A712uniA714A716A716uniA714A716A715uniA714A716A714uniA714A716A713uniA714A716A712uniA715A716A716uniA715A716A715uniA715A716A714uniA715A716A713uniA715A716A712 uniA716A716uniA716A716A715uniA716A716A714uniA716A716A713uniA716A716A712uniA712A715A716uniA712A715A715uniA712A715A714uniA712A715A713uniA712A715A712uniA713A715A716uniA713A715A715uniA713A715A714uniA713A715A713uniA713A715A712uniA714A715A716uniA714A715A715uniA714A715A714uniA714A715A713uniA714A715A712uniA715A715A716 uniA715A715uniA715A715A714uniA715A715A713uniA715A715A712uniA716A715A716uniA716A715A715uniA716A715A714uniA716A715A713uniA716A715A712uniA712A714A716uniA712A714A715uniA712A714A714uniA712A714A713uniA712A714A712uniA713A714A716uniA713A714A715uniA713A714A714uniA713A714A713uniA713A714A712uniA714A714A716uniA714A714A715 uniA714A714uniA714A714A713uniA714A714A712uniA715A714A716uniA715A714A715uniA715A714A714uniA715A714A713uniA715A714A712uniA716A714A716uniA716A714A715uniA716A714A714uniA716A714A713uniA716A714A712uniA712A713A716uniA712A713A715uniA712A713A714uniA712A713A713uniA712A713A712uniA713A713A716uniA713A713A715uniA713A713A714 uniA713A713uniA713A713A712uniA714A713A716uniA714A713A715uniA714A713A714uniA714A713A713uniA714A713A712uniA715A713A716uniA715A713A715uniA715A713A714uniA715A713A713uniA715A713A712uniA716A713A716uniA716A713A715uniA716A713A714uniA716A713A713uniA716A713A712uniA712A712A716uniA712A712A715uniA712A712A714uniA712A712A713 uniA712A712uniA713A712A716uniA713A712A715uniA713A712A714uniA713A712A713uniA713A712A712uniA714A712A716uniA714A712A715uniA714A712A714uniA714A712A713uniA714A712A712uniA715A712A716uniA715A712A715uniA715A712A714uniA715A712A713uniA715A712A712uniA716A712A716uniA716A712A715uniA716A712A714uniA716A712A713uniA716A712A712uniA716A716A716uniA715A715A715uniA714A714A714uniA713A713A713uniA712A712A712uniF1F1 uniF1F1F1F2 uniF1F1F1F3 uniF1F1F1F4 uniF1F1F1F5 uniF1F1F1F6 uniF1F1F1F7 uniF1F1F1F8 uniF1F1F1F9 uniF1F2F1F1uniF1F2 uniF1F2F1F3 uniF1F2F1F4 uniF1F2F1F5 uniF1F2F1F6 uniF1F2F1F7 uniF1F2F1F8 uniF1F2F1F9 uniF1F3F1F1 uniF1F3F1F2uniF1F3 uniF1F3F1F4 uniF1F3F1F5 uniF1F3F1F6 uniF1F3F1F7 uniF1F3F1F8 uniF1F3F1F9 uniF1F4F1F1 uniF1F4F1F2 uniF1F4F1F3uniF1F4 uniF1F4F1F5 uniF1F4F1F6 uniF1F4F1F7 uniF1F4F1F8 uniF1F4F1F9 uniF1F5F1F1 uniF1F5F1F2 uniF1F5F1F3 uniF1F5F1F4uniF1F5 uniF1F5F1F6 uniF1F5F1F7 uniF1F5F1F8 uniF1F5F1F9 uniF1F6F1F1 uniF1F6F1F2 uniF1F6F1F3 uniF1F6F1F4 uniF1F6F1F5uniF1F6 uniF1F6F1F7 uniF1F6F1F8 uniF1F6F1F9 uniF1F7F1F1 uniF1F7F1F2 uniF1F7F1F3 uniF1F7F1F4 uniF1F7F1F5 uniF1F7F1F6uniF1F7 uniF1F7F1F8 uniF1F7F1F9 uniF1F8F1F1 uniF1F8F1F2 uniF1F8F1F3 uniF1F8F1F4 uniF1F8F1F5 uniF1F8F1F6 uniF1F8F1F7uniF1F8 uniF1F8F1F9 uniF1F9F1F1 uniF1F9F1F2 uniF1F9F1F3 uniF1F9F1F4 uniF1F9F1F5 uniF1F9F1F6 uniF1F9F1F7 uniF1F9F1F8uniF1F9 space.Lines uniF1F1.LinesuniF1F1F1F2.LinesuniF1F1F1F3.LinesuniF1F1F1F4.LinesuniF1F1F1F5.LinesuniF1F1F1F6.LinesuniF1F1F1F7.LinesuniF1F1F1F8.LinesuniF1F1F1F9.LinesuniF1F2F1F1.Lines uniF1F2.LinesuniF1F2F1F3.LinesuniF1F2F1F4.LinesuniF1F2F1F5.LinesuniF1F2F1F6.LinesuniF1F2F1F7.LinesuniF1F2F1F8.LinesuniF1F2F1F9.LinesuniF1F3F1F1.LinesuniF1F3F1F2.Lines uniF1F3.LinesuniF1F3F1F4.LinesuniF1F3F1F5.LinesuniF1F3F1F6.LinesuniF1F3F1F7.LinesuniF1F3F1F8.LinesuniF1F3F1F9.LinesuniF1F4F1F1.LinesuniF1F4F1F2.LinesuniF1F4F1F3.Lines uniF1F4.LinesuniF1F4F1F5.LinesuniF1F4F1F6.LinesuniF1F4F1F7.LinesuniF1F4F1F8.LinesuniF1F4F1F9.LinesuniF1F5F1F1.LinesuniF1F5F1F2.LinesuniF1F5F1F3.LinesuniF1F5F1F4.Lines uniF1F5.LinesuniF1F5F1F6.LinesuniF1F5F1F7.LinesuniF1F5F1F8.LinesuniF1F5F1F9.LinesuniF1F6F1F1.LinesuniF1F6F1F2.LinesuniF1F6F1F3.LinesuniF1F6F1F4.LinesuniF1F6F1F5.Lines uniF1F6.LinesuniF1F6F1F7.LinesuniF1F6F1F8.LinesuniF1F6F1F9.LinesuniF1F7F1F1.LinesuniF1F7F1F2.LinesuniF1F7F1F3.LinesuniF1F7F1F4.LinesuniF1F7F1F5.LinesuniF1F7F1F6.Lines uniF1F7.LinesuniF1F7F1F8.LinesuniF1F7F1F9.LinesuniF1F8F1F1.LinesuniF1F8F1F2.LinesuniF1F8F1F3.LinesuniF1F8F1F4.LinesuniF1F8F1F5.LinesuniF1F8F1F6.LinesuniF1F8F1F7.Lines uniF1F8.LinesuniF1F8F1F9.LinesuniF1F9F1F1.LinesuniF1F9F1F2.LinesuniF1F9F1F3.LinesuniF1F9F1F4.LinesuniF1F9F1F5.LinesuniF1F9F1F6.LinesuniF1F9F1F7.LinesuniF1F9F1F8.Lines uniF1F9.Linesuni274Duni2023 arrowdownuniF19DarrowupuniF19Cuni034E arrowupdn arrowupdnbse arrowleftuni20EEuni20EDuni02FF arrowrightuni20EFuni20ECuni0362 arrowbothuni034Duni219Auni219B arrowdbldown arrowdblupuni21D5 arrowdblleft arrowdblright arrowdblbothuni2196uni2198uni2197uni2199uni2713uni2213uni02C5uni02EFuni02C4uni02F0uni02C2uni1DFEuni0354uni02F1uni02C3uni0350uni0355uni02F2uni0356uni1DFFuniA702uniA700uniA704uniA706uniA703uniA701uniA705uniA707uni00AD.ShowInvuni034F.ShowInvuni2061.ShowInvuni2063.ShowInvuni2062.ShowInvuni202A.ShowInvuni200E.ShowInvuni202D.ShowInvuni202C.ShowInvuni202B.ShowInvuni200F.ShowInvuni202E.ShowInvuniFE00.ShowInvuniFE01.ShowInvuniFE02.ShowInvuniFE03.ShowInvuniFE04.ShowInvuniFE05.ShowInvuniFE06.ShowInvuniFE07.ShowInvuniFE08.ShowInvuniFE09.ShowInvuniFE0A.ShowInvuniFE0B.ShowInvuniFE0C.ShowInvuniFE0D.ShowInvuniFE0E.ShowInvuniFE0F.ShowInvuni2060.ShowInvuni200D.ShowInvuniFEFF.ShowInvuni200C.ShowInvuni200B.ShowInvuni034Funi2061uni2063uni2062uni202Auni200Euni202Duni202Cuni202Buni200Funi202EuniFE00uniFE01uniFE02uniFE03uniFE04uniFE05uniFE06uniFE07uniFE08uniFE09uniFE0AuniFE0BuniFE0CuniFE0DuniFE0EuniFE0Funi2060uni200DuniFEFFuni200Cuni200Buni206Duni206Buni206Cuni206AuniFFF9uniFFFAuniFFFBuni2028uni206Euni206FuniFFFCuni2029uni2001uni2003uni202Funi2008uni2006uni2004uni2000uni2002uni2005uni2007uni2009uni200AuniFFFDuniF130uniF131uniF132uniF133uni02F9uni02FBuni02FAuni02FCCombInvBreve.UCHtCombBreve.CyShortMrkAlt.UCHtLftParen.SophiaRtParen.Sophia Comma.SophiaDigitZero.SophiaDigitOne.SophiaDigitTwo.SophiaDigitThree.SophiaDigitFour.SophiaDigitFive.SophiaDigitSix.SophiaDigitSeven.SophiaDigitEight.SophiaDigitNine.SophiaLtnCapC.SophiaLtnCapD.SophiaLtnCapE.SophiaLtnCapF.SophiaLtnCapG.SophiaLtnCapH.SophiaLtnCapJ.SophiaLtnCapL.SophiaLtnCapM.SophiaLtnCapN.SophiaLtnCapO.SophiaLtnCapP.SophiaLtnCapR.SophiaLtnCapS.SophiaLtnCapV.SophiaLtnCapW.SophiaLtnCapX.SophiaLtnCapY.SophiaLtnCapZ.Sophia BoxDotted+++>/%+5/%+s\G4+l\G4++ E}iD , ,^$X,&GL @&@ @&@ @&@ @&@ @&@ ?&? @&@ @&@ ?&? @&@U & d&d & &U U&U %&% & &R R&R & &) )$K) & & $ B&B &[ [&[ &3e e&e 0$ & & & & b&b&O&& $LX X$qX $&LJ J$MJ -$L (&P $3L C&C6 <$m6L  &HL0 '$F'/ /$/,d d&dLi D&DL- -$Z-L-M/ $y/L F $dFL" "&L &Lp p$fS Fz$FL+ &L !&>L  & L  $=1L &LU &lU &   &U U&Ul &l $l 0$l $ $ $ $ $ $|  $&L -$ -$ -$ -$6 6$m66 6$m66 6$m66 6$m6i D&D- -$Z-- -$Z-- -$Z-- -$Z-- -$Z- Fz$F Fz$F Fz$F Fz$F w&w&&C L&L & _&_ `&`L $L- -`$Z-L + &+, ,^$X,U &lU &l $l &H H$HL  $=1 &lU &lU U&UlU &lU U&UlU U&UlR R&RlR R&RlR R&RlR R&Rl $l $l G&L $l 0$l 0$l 0$l6 6$m6L&1   p&O $L &L c&c h&h&:LL $  $ $l $ $l $ $l $! $l $ $ $  $ $l $u $l $ $l $! $l $ & $ $ & $N $ $q $  $, $  $L o$L Np$L  $L &L $L $  $L $L $L L&LK K$KLK K$KL &K K$KK K$KK K$KK K$KK K $KK K$KlK K$KlK K$KlK K$KlK K$KK K$KK K $KK K$KlK K$KlK K$KlK K$KlK K$KK K$KK K$KK K$KK K$KNK K$KK K$KNK K$K|K K$K K K$K,K K$KK K $KLK Ko$KLK p$KLK K $KL L&LL8 8m$8L v&v $L $L & $ $ &L & &L c &c  & & &r 1&1LU &lU &U U &U U &U &U &U U  &lU &lU &lU &U &"U &U &7U &U &U &U &EU  &l &U &lU &N &lU &U &lU & U & U &lU  &U o&U p&U  &U & & & L&L &r &L L&Ll L&LN t&tX X$qXX X $qXX X $qX X &X X&X X&X X&X X&X $&$ q&q #&# &L & &&&L &L & &L d&d &r &L d&dl d &d d &d U&U &r v&L }&} \&\ \&\ B&B D&D 4&4 & X&X X&Xl l&l o&o &o &&L&& :&:&:LL $& $& $& $&  $& p&&L & &&L  &&L &&L &&L ?&? $L $L ;&; ;&;  &L  &L $&L L&LL  & L &L & &L && l&lL &l &l &l &l  &l  & & & g&g g&g &L &L & X&X X&Xl X&XJ J$MJ&J &&:LLJ J$MJJ J $MJJ J $MJJ J $MJJ J $MJf f&c J &J A&A J&J J&J J&J J%$J J &J & J&J b&bf f&fLf f&f ;&K, G&G, X &L, f&f & i&i (&( k&k& &r C&CL &l &l  &  &  &  & & & & &4L & & z&zt t&tLt t&t & &l D&D R&R &L K&K O&O&:LL & -$ -$l -$ -$l -$ -$l -$! -$l -$  -$ -$ -$ & -$ -$ -$ -$N -$N & -$ -$  -$L  -$L  -$L  -$L  -$  & L  -$L  & L  & L &L p&L &L -&L -&L K&K O&O -& &L  &&L $ L U&U $L /&/ &L &L "&"  &L &L &L & &L $L O&O $L &L & p&L &L &L U&U &r &L U&UlU U&UlU U&UU UU U&UU UU U&UU U&UU U&UU UU U &UlU U&UlU U&Ul U&UU U&UlU U&UlU U&UNU U&UU U&U U&UlU U&UlU U&UlU U &UU U &UU U &U U &U U &UlU p&UU U &U \&\ g& 4 & U&U &r & & &l g&g B&B & &l / &/  & & (& & (&X ( &, &,!% | |!% | |!% |~ |~!% |~ |~!%) |  | |!%) |  | |!%) |  | |!%) |  | |!% | |7!% | |7 f & & & &L & &L  &L &L &L  &L  &L &L &L %&%l 5 &5 !&! D&D &L !&!l & ! &! & C & & m&mP $3P $3P $3P $3P $3P $3P $3  &L " &"L T $mTL T $mTL W&W T $mT T $mT T $mT T $mT T $mT T $mT T $mT &L ? &?L T &T  $3L  $L v&vL &r S$SL &l &l &l &l &N &l  & & & F&F & &&:LL C&C C&C C&C C&C C &C C &C C &C  &C C&C C&C t&t 7 &7 I&I & K &K  & C&C &L l&lL T &TL & x &xL  &L C&C &L 0 &0L b&bL &L b&bL b&bL &L b &bL W&WL B&BL &L B &BL B&BL 6&6L 6&6L Y&YL & &r &r l&lL &l &l &l &l  &  &  & & & & & & & s &r & & & &  & &&& & &  & & & &6 <$m6L6 <$m6L&6 & $&4LL6 6$m66 6$m66 6$m66 6$m66 6$m66 6$m66 6$m66 6$m6l6 6$m66 < $m6L6 < $m6L6 p$m6L6 < $m6L 6 &66 6k$m6L &6 6$m6L6 6$m6L6 6$m6L6 6$m6L & $6 6 $m6L6 6 $m6L6 p$m6L : &:L6 6k$m6L & ' &'L &6  &b&b&&V&G@ @$@L &@ @$@L &LR R&RR R&R/ /$/,&R &r O$9L &R R&RlR R&RlR R&RlR R&RlR R&RlR R&RNR R&RlR R&RR R&RlR R&RlR R &RR R &RR p&RR R &R R&R &L &R >&C&&&& O&O} &u &  &HL Y&Yr ~ &D ~ &D  &CL  &CL &r ~ &DL ~ &DL ~ &DL W& } $VCL } $VCL _&  &_L & ; &; ; &; E&L E&L &L W &L 8&8L 6&L & G&Gr &L &l & &p &L &p &  &p & &f r&r0 '$F'0 '$F'0 ' $F'0 ' $F'0 ' $F' ' &' /&/ '&'  &L 2&2L 2&2L 2&2 2&2L &L :& <&<L ( &(L &L & & &L &r 2&2L &l &l  &  &  & & & & &l & & & &  & & & &l &/ /$/,&/ &/ /$// / $/,/ / $/,/ / $/,/ / $// / $/,A @&@,? >&>, / &/ & 0&0 0&0 t&t 1&1 / &/ & /&/ h&h h&h/  & \&, J&, U &,&) l&lr &L 0&0 &L) )$K)l) ) $K)) ) $K)) ) $K)) ) $K)N) ) $K), ,&,) )&)  &   &  & & #&L)  &) &&d 8&8&:LLd d&dd d&dd d &dL d&dL a&aL  &L  &  g$gL 8&8 g &gL ;&; @&@ &L &L z&z& J&Jr &L &l &l  &  & M&M z&z }&}i D&Di D&Di D&Di D&Di D &DLi D &DLi D &DLi D &DLk F&FL D &DL G&GL _ &_L & [ &[L Z&Z 8 &8L & D&DL D &DLi  & j&jL j&j j&j j&j j&j j&j &r W&WL & &l &l &l &l  &  &  &  &  &  & [&[L &r & $&$  &   & & N &  _&h & &l & &s &l &N -&-L o&o n&n&:LL- -$Z-- -$Z-- -$Z-l- -$Z- -$Z-l- -$Z- -$Z-l- -$Z-!- -$Z-l- -$Z- - $Z-- -$Z-- -$Z-- -$Z-- -$Z-l- -$Z-N- -$Z-l- -$Z-- -$Z-N- -$Z-N -&-- -$Z-N- -$Z-- -$Z-N- -$Z-- - $Z-L- np$Z-L- np$Z-- - $Z-L- - $Z-  &L -$Z-L -$Z-L n&n -$Z- & ]&] n&n- -`$Z- *&*L *&* *&* *&* *&* * &*L !&!L <&<L L&LL /&/L &&& G&GL  & L  & ,  & , -&-L j&j -&-L j&j & &r e&eL $l $l $ $ $ $ $ $ $ $  $l $l $l $l $ $ $ $N $ $ &l $ $l $ $l  $ p$ p$N  $  $N & & &l & &l & &l &l &l &l  & & H$HL &&& & 9&91 9&9 & & &L &L & / &/L r&r-M/ $y/-M/ $y/ / &/L < &<L / &/L $ &$L / &/ . &. / &/  &L +&+ 2 &2 r&r  & & & B&B }&}r &L &L B&Bl B&Bl B&B B&B b&b I&I O&O F&F &L  &  &L  & ] &]L l &l & N &&:LL" "&" "&" "&" "&" "&" " &L" " &L" " &" " &L  &L "&L "&L  &L " &L &L &  &L D&D  & & "&L :&L  &L  &&L &r +&+L[ [&[l[ [&[l[ [&[l[ [&[l[ [&[l[ [ &[[ [ &[[ [ &[N[ [ &[ &  &  & & &L +&+L n&n t&t &L &L &L  &  & &l & & &l &  &L  &  &L  &L  &L  &L  &   &L &L  &L &L k &k &C m&m  & ` &` & &3l &3 &3l &3l &3 &3l  &3  &3l  &3  &3  &3 & &&LLp p$fp p$fp p $fSp p $fSp p $fSp p $fSp p $fSp p&fS p $fS f &fS & p&pS g&gSp p$fS &  $S J&JS & & S &S h &U, F &FL &L R&L ~&~L &L e&e &r &Le e&ele e&ele e &ee e &ee e &ee e &ee e &e e &e e&ee e&e ]&] e&e e &e e &e & 8&8 & & & &&:LL Fz$F Fz$F Fz$F Fz$F Fz$F Fz$F Fz$Fl Fz$F Fz$FN Fz$Fl Fz$Fl Fz$Fl Fz$FN Fz$F| Fz$F F z$FL F z$FL F z$FL F z$FL @p&FL F z$FL J&JLF F{$FL & j&jL j&j j&j j&j j&j j &jL ~&~L 9&9L w&w &L T&L e&e0 0f$`0L p&p 0&0L v&v} &r ?&?L {&{ 0$l 0$l 0$l 0$l 0$l 0$l 0$ 0$N 0$ 0$ 0$ 0$ 0$ 0$  0$l  0$  0$  0$  0$ p$  0$ & ?&?L & & &l &l &l &l  & & &+ &L& e&e _&_&:LL+ &+  &L  &L+ &L %&L &L&M&& R$;L e&e $;L L$LL ~&~ X$bXL v &vL &  &L I&I I&I& /&/L &l  &&&E& & S&SL & & !&> !&> !&> !&> !&> !&>| ! &>L !&!L  &  !&!L $VL p&pr &L &l &l &l &l &l  & &  & L&  X&X S&S&:LL  &   &   & L  & L  &L  & L&2&e  &L & & && &l &l &  & &&&&  &1L e$e  $=1  &1  $=1  $=1  &1  $=1  $=1  &1  &1  $=1  $=1|  $=1 |$=1L  &EL  &EL C &CL C &CL & e&e & & & &L & :&:L &L  &L & $L P&P &l &l &l &l &N &l &l  & & & & & & &l & &N &l & &l & &  & &L )&) & & & &  &L  &L  &L ;&;  &L &L &L  &L F&F &L &L  &L &L b&bl b&bl b&bl b&bl b &b b &b b &b b&b b&b b&b _&_ W&W W&W  & L  & L W&W  &  A& L  &L  & L ; &;L  &L  & L  &L _ &_ _ &_ &L _ &_l v &v $& $ 6&6 &L & & & 7&7 6&6 & & & & &L & v&vr [&[r v&vr Z&Z v&vr v&vr u&ur '&' &L v&vr v&vr u&ur v&vr &&LL&LL  & d &d  &&GL&GL&GL&GL  N  N&&LL&LL    N&L&&&LL&L&LL  N&LLLLLL&c!LcLLL  N&LL&1LWL&1LL&1LtL&PLL'q  N&LL&L1L&L1L&c!LcL&1L1L&LL&!L!L!D'q O  N&LLLLLLLLLLLLLL  N&LL&,LL&LL vN&LL'q&LL&LL N  N&LL  N  N  N  N&W&LL&LL!D'q  N&,LL  N  N&,LL  N&LL&CLL&CLL&CLL&rL'  N&LL&rG  N&LLGG oN&|LL ~N  N 6&6&,LL  N &&,LL&LL  N&LL  N&LL  N  N  N  N  N  N & P  R  N N  N&LL  N  NGFJ9ZJZJZJ9ZJZH9ZHZHZH9ZHZHT99ZHT9ZHT9ZHT99ZHT9ZHT9ZHTZHTZHT9ZHTZHT9ZHTZHTZHT9ZHTZHT99ZHT9ZHT9ZHT99ZHT9ZHT9ZHTZHTZHT9ZHTZH9K9ZHK9ZHK9ZH9K9ZHK9ZH9KZHKZHKZH9KZHKZH9KZHKZHKZH9KZHKZH9K9ZHK9ZHK9ZH9K9ZHK9ZH9KZHKZHKZH9KZHKZJ9ZJZJZJ9ZJZH9ZHZHZH9ZHZJ9JJJ9JHm9HmHmHm9HmZZZZZZZZZZ  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  | , |,X  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  |  |8  N  N  N  N  N   N&LL N&LL N N N(:::(:::(:::*:::T*:::T(:::(:::(:::(:::(:::(:::(:::(:0 :>BT(:0 :>BT(:0 :>BT(:0 :>BT(:0 :>BT(:0 :>BT(:0 :>BT(:0 :>BT(:0 :>BT(:26>BT(:26>BT(:26>BT(:26>BT(:26>BT(:26>BT(:26>BT(.::T(:0 :>BT( ::4::@T(:26>BT(:26>BT       $  2$ )$  P$=  $H H H{$H  $  2$  )$ 3 3e$f3  2$  G$)   |  |8   |  |8 (  |  |8 2  |  |8 <  |  |8 F  |  |8 P  |  |8 Z  |  |8 d  |  |8[ 4:@FLRX^fntz(:LRX^djpv6H^x ">Vhz"<Xn,Hbx0FNT\bz &B^z8Tp  . J f    & 8 J P V \ b h n t    $ * 0 6 R j  $ * 0 6 < B H N T Z ` f ~  & > Z v  &,8>DPVbn &>Zr2Nj$@\n2Nh(D`r6Rn2Nj.Jf0L^z&>Vh4Ld| 6N`x6NTfx2DVhz .@Rdv*<N`r :Tj|  & 8 J \ v !!!.!D!Z!l!~!!!!!!!!!!" ""$"6"H"Z"t""""""# #&#<#N#`#r#x#######$$&$8$J$\$n$$$$$$$$% %%.%@%R%d%v%%%%%%%&& &2&D&J&P&V&\&b&t&&&&&&' '('@'\'x''''(((.(J(f((((()) )<)T)l)~))))))**&*8*J*b*t******+++*+<+N+`+r+++++++,,",4,F,X,p,,,,,,- --6-N-f-x-----...2.J.b.z......///,/>/P/b/t///////00000B0`0~0001 1181`1f1111111222&282J2\2n22222222333(3:3L3^3p333334 4&484J4`4v4444445 5"545F5X5n555555666,6B6X6j6|66666667 7"787N7d7v7777777888*8<8N8`8r8888888999*9<9N9`9r9999999:::.:D:Z:p:::::::;;;,;>;P;b;t;;;;;;;<<*<6>>6>R>n>>>>>???2?D?V?h????????@ @$@<@V@b@t@@@@@AAA2AJAbAzAAAAABBB&B>BJBVBbBnBBBBBBBBCC"C4CFCXCjCCCCCCCDDD&D8DJD\DnDDDDDDDDEE"E4EFE`EzEEEEEEFF"F4FFFXFjF|FFFFFFFG G"G8GNGdGzGGGGGGGGHH"H4HFHXHjHHHHHHI I$I>ITIjI|IIIIIIIJ JJ0JFJXJjJ|JJJJJJJJKK*KDK^KxKKKKKKKLL*L6LHLZLpLLLLLLLMMM$M6MHMZMlM~MMMMMMMNNN N2NHN^NtNNNNNNO OO.O@OROdOvOOOOOOOP PP.P@PRPdPzPPPPPPQQQ,Q>QPQbQtQQQQQQQRRR$R6RHRZRlR~RRRRRSS*SBS^SzSSSSTTT:TVTrTTTTTUU,UHUdU~UUUUUVV V6VHVZV`VrVVVVVVVVWWW*WaPabataaaaaaab b"b8bNbdbzbbbbbbbbc cc0cBcTcfcxccccccdd$d:dPdfdxdddddddeee,e>ePefe|eeeeefff,f>fPfVfhfzfffffgg0gFg\gngggggggh hh.h@hRhdhvhhhhhhhii(i>iTiji|iiiiiiijjj(j:jLj^jpjjjjjkk4kPklkkkkkll0lLlhllllllmmm(m:mLm^mpmmmmmmmnn"n4nFnXntnnnnooo8oTopooooopp4pPplpppppppqq q2qDqVqhqqqqqqqrrr4rLrXrdrprrrrrrsss(s:sLsXsjssssssssst tt0tBtTtftxtttttttu uu0uBuTufuxu~uuuuuuuvv"v4vFvRv^vpvvvvvvvvw ww$w6wLwbwtwwwwwwxxx.xDxZxlx~xxxxxxxyy y2yDyVyhy~yyyyyyyzz z2zDzVzhzzzzzzzzz{ {{2{D{Z{p{{{{{{{||"|4|F|X|j|||||||||} }}0}B}T}f}x}}}}}}}~~~,~2~D~V~h~z~~~~~~~ 2DVhz(.@FL^pʀЀ $*06DJPbt‚΂Ԃڂ .:LRX^dj|Ѓփ܃0N^rŒ֌&:Nbvƍڍ*>Rfzʎގ.BVj~Ώ 2FVfvƐ֐ ".:FR^djpv|Ƒܑ֑̑ &,28>DJPV\bhntz’ȒΒԒڒ "(.4:@FLRX^djpv|ēʓГ֓ܓ $*06DJPV\bhrx~ƕ̕ҕؕ $*06DJPV\bhntz—ȗΗԗڗ "(.4:@FLRX^djpv|ĘʘИ֘ܘ *Hfޙ >\zԚ.4Rpʛ$BHfޜ8V\zԝ.Ljpʞ$B`~ޟ8VtԠ.Ljʡ$B`~آ2Pnȣ"@^|֤0Nlƥ >\zԦ.LjħDJPV\bhntzάԬ "(lBԯ\(lP4̳b@Եj@¶ʶҶڶ "(.4:@FLRZ`flrx~޷6Tr̸ &,28>DJPV\bhntz¹ȹιԹڹ 6Vvֺ6>FL*B  sTŏj &~*<N`r  *4>8<FPZdnx>BDFPR\ 04RTf   "$&(*,.02468:<>@BDFZn~  . ~  2 F V  * F : J f  * : V j Vjzrf   6 t          u  ! " # $ % & ' v ) * + , - . / 0 1 w 3 4 5 6 7 8 9 : ; x = > ? @ A B C D E y G H I J K L M N O z Q R S T U V W X Y { [ \ ] ^ _ ` a b c |s$do)R6a!klmr(4Q%()*+,-./0cefhjk_y' e f p z f g h i j k l m n o p q r s t u v w x y z { | } ~  cc#tOPm 2d$d!PQRuz{ST         tz|~&'5] !"#$%&'()*+,-./01ECy{~lEGIKPRTV  KMOQ8:<>xz|~y{tz|}~Dmt-)6Rl1c#c OOPtyabIy{}L%OY]^JDijkmlnmDFHJOQSU  JLNP79;=wy{}#VW)*[\AB@% t% ~ }??I $' %' }$%'$%  6    ( 2 < F P Z ds& (*./156 7F HJNOQU V Wklmr(4QX28RX} $(28DHRXF m 2d$d!PQR  u  z {STtz|~ & '   5      !"#$%&'()*+,-./01 EG I K P R TV  KMOQ8:<>xz|~ILOLODmt-)6RLM  "#$ \ ] ` ab[@              ! " # $ % & ' ( ) * +! ," -# .$ /% 0& 1' 2 3) 4* 5+ 6, 7- 8. 9/ :0 ;1 < =3 >4 ?5 @6 A7 B8 C9 D: E; F G= H> I? J@ KA LB MC ND OE P QG RH SI TJ UK VL WM XN YO Z [Q \R ]S ^T _U `V aW bX cY d t u v w( x2 y< zF {P |Z }l1c#c OOP  t  y ab!                    ! " # $ % & ' ( ) * + , - . IL O Y ] y{}% JDijklmn  DF H J O Q SU  JLNP79;=wy{} A #$$%%&&''(())**+-..//0011223457889=>@AABBCCDD EEFFGGHHII JJ KKLL MMNNOO PPQQRRSTUWXXYYZ\]]^abhilmmnno    125667CDDEEFFGGHHIIJJKKLNOOPPQQRRSSTTUUVVWeffgrssttu           IJJKKLLMMNNOOPPQQRstt!uxyy"zz#{{"||#}}"~~#"#"#!!!$%&'''()*+!$%%&'!(kll,mm-n!.  /!"##0$$1%%2&&''3()**+34456778899::;;<<==>>?EFFGYZZ[\]]4^^5_kll6mm7nvwwxxyyzz{{||}}~~67676789:;<=>'((=))>**++,,--.344=5566>7PQQ=RR>SSTTUUVV?WW@X_``aA!BCDE())F**G+455!6RSTHUZ[[I\\J]^__``abKctuvwwxxyyzz{|}}~~LMLMNOLMPQ::RS:RS:TUU:VWX:YZ       :  U:S:[  \!"#$:%%&&''():**+,:--R./00]1122:334456:778=>>:??^@CDDEE:FFGG_HH:IIJJ`KKaLLMM:NNOP:QQRRSSTT:UUVVWWXXSYY:ZZ[[:\\]]^^:_`aa:bbcc:ddef:ghii:jjkmbnqrrbsvwwxxcyydzz:{{|}:~~::`efghijklmnjklmnjklmnjklmnjklmnjklmnefghijklmnopqrs|}}t~tttt   u  v  w  x  y  z  {  |  }  ~    w x ! !y " "z # #{ $ $| % %} & &~ ' 'v ( ( ) )x * *y + +z , ,{ - -| . .} / /~ 0 0v 1 1w 2 2 3 3y 4 4z 5 5{ 6 6| 7 7} 8 8~ 9 9v : :w ; ;x < < = =z > >{ ? ?| @ @} A A~ B Bv C Cw D Dx E Ey F F G G{ H H| I I} J J~ K Kv L Lw M Mx N Ny O Oz P P Q Q| R R} S S~ T Tv U Uw V Vx W Wy X Xz Y Y{ Z Z [ [} \ \~ ] ]v ^ ^w _ _x ` `y a az b b{ c c| d d e : : : :  :  : :     . / : ; F G s t t~ u uv v vw w wx x xy y yz z z{ { {| | |} } } ~   !"#$%&'(+,-/258:<>?@ABDEGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz|~NWOXKWTZTZV\ (O()BCBDEBCDCDEFHFGGHIJLMN`NOXOP_QRWX]^_`abcdefghijklmnopqrstuvwxyz{|}~"'-19=5A+/7;3? !&SY,08<4@*.6:2>  %U[ $#!(/6=DKRY`gnvz~%,3:AIQX_fmt{ #*29AHPW_fnu}  )3:AHOV]dkry%6FUcv 0DWiz ,:L]m| !&+05=EJOW_glt| )19AINS[chmrw| !KuGq%Kq*<N                egcdf !hijklm"#$%&'()*"#$%&'()*negcdf+ !hijklm"#$%&'()*"#$%&'()*negcd,f !hijklm"#$%&'()*"#$%&'()*negcdf- !hijklm"#$%&'()*"#$%&'()*negcd.f !hijklm"#$%&'()*"#$%&'()*n/egcdf !hijklm"#$%&'()*"#$%&'()*noegcdf !hijklm"#$%&'()*"#$%&'()*pegcdf0 !hijklm"#$%&'()*"#$%&'()*negcd1f !hijklm"#$%&'()*"#$%&'()*negcdf2 !hijklm"#$%&'()*"#$%&'()*negcd3f !hijklm"#$%&'()*"#$%&'()*n4444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555566666666666666777777777777rq788888888899s8t899999999999999:::::::<=>?@ABCDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEFFFFFFFFFFFFFFGGGGGGGGGGGGxwGIIIIIIIIIHHyIzIHHHHHHHHHHHHHHKKKKKKKLLLLLLLMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNOOOOOOOOOOOOOOPPPPPPPPPPPP}|PQQQQQQQQQQQQQQRRRRRRRRRQQ~RRSSSSSSSSSSSSTTTTTTTUUUUUUUVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWXXXXXXXXXXXXXXYYYYYYYYYYYYYZZZZZZZZZZZZZZ[[[[[[[[[ZZ[[\\\\\\\\\ \\\] ]]]]]]^ ^^^^^^______ _________```````` ```````aaaaaaaaaaaaaaabbbbbbbbbbbbbbb666666666666666666666666666699999999999999;;;;;;;uvvFFFFFFFFFFFFFFHHHHHHHHHHHHHHHHHHHHHHHHHHHHJJJJJJJJJJJJ{{OOOOOOOOOOOOOOQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSSSSSSSSSSSXXXXXXXXXXXXXXZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\\\\\\ \\\+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+ 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+0+0+0+0+0;h! 0;h! 0;h! 0;h! 0;h! 0;h! 0;g! 0;g! 0;g! 0;g! 0;g! 0;g! 0818D18 ! 08 ! 08 ! 08 ! 08 ! 08! 08! 08! 08! 08! 08! 18! 18! 18! 18! 1;q!88189! 189! 189! 189! 189! 18:! 18:! 18:! 18:! 18:! 18618S1;c1;c1;c1;c1;b1;b1;b1;b1;a1;a1;a1;a1;f1;f1;f1;f1;e1;e1;e1;e1;d1;d1;d1;d1;o1; 1;p1;1;\1;^1;]1818H1;1;F18+18.18/1;[18N18O1;r8<1 8=!''1;r;r8?1  8@!'''18,1811 8;!''11  8>!'''18L18A18 18B1;41;Q18518R1;11;P1;Z1;Y1;V1;U1;`1;_1;X1;W1;71;T1;l1;k1; 1;C1818E18"18K1818G18 18I1;-1;M1;n1;m1;j1;i18318318%8$<Z<Z.73708&8$<Z<Z.73708'8$<Z<Z.73708(8$<Z<Z.73708)8$<Z<Z.73708%8#<Z<Z.73708&8#<Z<Z.73708'8#<Z<Z.73708(8#<Z<Z.73708)8#<Z<Z.737080808<Z<Z.73708<Z<Z.73708<Z<Z.73708<Z<Z.73708<Z<Z.7370;u11;t0;t137803780378037803780378037803780378 0:''\?K'KLMN   0112234556;<<=@AABbccddeijjkmnno"##$$%+,-.34456778:;;<EFFGbccddehiijtuuv  !!"#$$%()*+/0011223899:?@@AABBCNOOPPQRSST[\\]]^_`abbceffghiijjkkltuuv   !""#123445NOPQRSUVVWXYYZnooppqqrrsst +,,--.7889HIIJ]^_``asttuuvwxxy5667=>>?BCCDVWWXghhilmnosttu             !"#$ %%&&''() **+, --./0122 334456 778=>> ?? @CDDEE FFGH IIJK LLMM NNOP QRSSTT UVWXYY ZZ[[ \\]]^^ _`aa bbcc ddef ghii jwxx yy zz {{|} ~~            ' ( ( ) 1 2 2 3 ; < < = E F F G O P P Q Y Z Z [ c d d e       s t t u u v v w w x x! y y" z z# { {$ | |% } }& ~  !#%')*,-./012345689:;<=>?@ABDEFGHIJKMOQRSTVWYZ\]^_`abcdefh 999999999 888#8'8+8/83878"&*.26!%)-15 9  8 $(,04&<Rex#@]z (Eb-Jg2Ol (8HXhx *5@KValw'2=HS^it?@?@ABCCCCCCCCCCC?@D?@ABCCCCCCCCCCC?@?@ABCCCCCCCCCCCF F E E GHIK K 'L L (M M 2NN3OO=PP>ZZZ[[[E E JJJJJJJJJJJJJJJJJJJJJ JJJJJJJJJJ!JJJJJJJJJJ"JJJJJJJJJJ#JJJJJJJJJJ$JJJJJJJJJJ%JJJJJJJJJJ&IK K 'L L ()*+,-./01M M 2NN3456789:;<OO=PP>QRSTUVWXYZZZ[[[+ 0+ 0".70".70".7".70".7".70".7.70".7.70+".7.70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".7".70+".70++08181818181;s80!1;s80!1;s80!1;s80!1;s80!18!18J1;218*!18*!13713708!18!1370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370 !''0815]]`k7 7$$%%&&''(())*+,,--..//00112234578899:=AACCDDEGHHIIJJKKLLMMNOPQRRSSTTUVWWXXYYZZ[[\\]]bcddeeffgnoopwxxy       0112233445567889:;BCDEE FFGG HJKK LWXXYZ[[\bccdegnoqr            !" ##$$%&'' ()*+,-..//001122334<==>>??@HIJKK LLMM NPQQ RTUUVZ[[\`ab ccddeeff gsttuuvvwx  !!""##$$%())**+,--..//0233478899::;;<=>>??@@AABBCNOOPPQSTTUXYfghi    '()+3445788 99:: ;=>> ?HIIJNOPQRSSTUVVWWXY[[\\_tuwxx yyzz {}~~  ()*,,--.455667:;;<<==>JKQRSUUV_``asttuuvvwwx   455667<=^`fgghtwwyy{|~~                  !"#$ &&() +, --./001122 3356 77>> ??@BCCDDEE FFGGHH IIJKMM NNOP RRSSTT VVWXYY ZZ[[ \\^^ aa cc ef ii wwxxyyzz |} ~~        ; F !%')+/13579=?ACEIKMOQUWY[_aceikmoqsuwy{}   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}   !#%')+-/13579;=?ACEGIKMOQSUWY[_acegikoqsuw{}   4) $ $.) $ $. $33 $) $33 $ $33 $.) $33 $ $ $33 $.) $33 $) $33 $. $33 $3( # # # #(( # #- # #-( # #-(-( # # #22 #- #22 #-22- #22 #( #22 #(22( #22 #22 #22 #-( #22 #-(22-( #22 # #2-22(22(- # #22-' " " " "'' " " ", " ",, " ",' " ",',' " ",' "11 "11 "11 ", "11 ",11, "11 "11,' "11 "'11' "11 "11'1,' "11 ",'11,' "11 ",11' &!!!! & &!!!+!!++!!+ &!!+ &+ &!!+ &!00!00!00!0+!00!+00+!00!00+ &!00! &00 &!00!00 &+ &!00!+ &00+ &!00!+00 & $3 #2 "'1,! &+0 %* //.=L[jy-<KZix(8HXhx;f0`*Z$TNHx.^Ds*Y  ? m    o  rspqwttxuv{|{{yy}z~#&&"""-------****,(((%%.....3333344444455555556 66666: ::  : ===>>>>>????#$##AA%A"./..,,0D-3E33114E2787755FF6>?>>HH@<=CICCIIDABGHGGJJJEF'B''BB(B&*+**CCCC)VMVVSSWTU[\[[XXNYZ8888888 LLLLLL_O__]]O`^JKJJKKKKI<<<<<:G::;;GG9QcQQQQdabRfRRRRgReSSSSSSihSTlTTTTTjkUUUUUUUUVVVVVVVmWWWWWWWWXpXXnnqXoYYYYrrsYYZvZZttZZu\z\\ww{xy]]]]||~}]^^^^______```aaaabbbbdeeffggghhiiijjjkkkkccccclmnn[[[[[[[ !!!!"""#$$%%"""&&'''((("""))))****&&#+,-------****-------.....(((%%,!!!!//****(((0000****%%11111222.....4444443333355555556 66666444444777777778888888 77777777999999998888888 6 6666699999999444444: ::  : ;;;;;;<<<<<33333: ::  : ===>>>>>????5555555;;;;;;@@@@  @!@6 66666<<<<<????@@@@  @!@#$##AA%A"444444'B''BB(B&*+**CCCC)#$##AA%A"./..,,0D-: ::  : 3E33114E2787755FF6'B''BB(B&3E33114E2;;;;;;:G::;;GG9*+**CCCC)787755FF6<<<<<:G::;;GG9#$##AA%A">?>>HH@<=33333CICCIIDABGHGGJJJEF'B''BB(B&CICCIIDAB5555555JKJJKKKKI*+**CCCC)GHGGJJJEF6 66666JKJJKKKKI'B''BB(B&77777777LLLLLL*+**CCCC)8888888 LLLLLL>?>>HH@<=./..,,0D-PQPPMMRNO===VMVVSSWTU[\[[XXNYZCICCIIDAB3E33114E2VMVVSSWTU>>>>>_O__]]O`^GHGGJJJEF787755FF6[\[[XXNYZ????_O__]]O`^8888888 LLLLLLJKJJKKKKI_O__]]O`^@@@@  @!@:G::;;GG9JKJJKKKKI99999999LLLLLL8888888 <<<<<PPPPPPP:G::;;GG9PPPPPPPLLLLLLRfRRRRgReQcQQQQdabSSSSSSihSTlTTTTTjkRfRRRRgReUUUUUUUUVVVVVVVmUUUUUUUUWWWWWWWWVVVVVVVmTlTTTTTjkWWWWWWWWVVVVVVVmRfRRRRgReXpXXnnqXoYYYYrrsYYZvZZttZZuUUUUUUUU[[[[[[[VVVVVVVmZvZZttZZu[[[[[[[QcQQQQdabXpXXnnqXo\z\\ww{xy]]]]||~}]^^^^SSSSSSihSYYYYrrsYY______TlTTTTTjkZvZZttZZu^^^^______WWWWWWWW[[[[[[[```RfRRRRgReaaaabbbbaaaaUUUUUUUUcccccbbbbVVVVVVVmccccc```dXpXXnnqXoeeffaaaaeeYYYYrrsYYgggbbbbffZvZZttZZugggggg[[[[[[[ccccc```hhQcQQQQdabiiijjjaaaaiiiSSSSSSihSkkkkbbbbjjjTlTTTTTjkkkkkkkkkWWWWWWWWcccccccccchhd\z\\ww{xylmiiieel]]]]||~}]nnjjjffm^^^^nnkkkknn______ggg+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70+ ".70*37*37&#=H#=I#<J#<K# #0&#=H#=I#<J#<K# #0&#=#=#<P#<Q# #370&#=#=#<P#<Q# #370&#=#=#<P#<Q# #370&#=#=#<P#<Q# #370&#=#=#<P#<Q# #370&#= #=!#<N#<O# #370&#= #=!#<N#<O# #370&#= #=!#<N#<O# #370&#= #=!#<N#<O# #370&#= #=!#<N#<O# #370&#="#=##<R#<S# #370&#="#=##<R#<S# #370&#="#=##<R#<S# #370&#="#=##<R#<S# #370&#="#=##<R#<S# #370&#=$#=%#<F#<G# #370&#=$#=%#<F#<G# #370&#=$#=%#<F#<G# #370&#=$#=%#<F#<G# #370&#=$#=%#<F#<G# #370&#=&#='#<L#<M# #370&#=&#='#<L#<M# #370&#=&#='#<L#<M# #370&#=&#='#<L#<M# #370&#=&#='#<L#<M# #370&#=#=#<P#<Q# 370&#=#=#<P#<Q# 370&#=#=#<P#<Q# 370&#=#=#<P#<Q# 370&#=#=#<P#<Q# 370&#= #=!#<N#<O# 370&#= #=!#<N#<O# 370&#= #=!#<N#<O# 370&#= #=!#<N#<O# 370&#= #=!#<N#<O# 370&#="#=##<R#<S# 370&#="#=##<R#<S# 370&#="#=##<R#<S# 370&#="#=##<R#<S# 370&#="#=##<R#<S# 370&#=$#=%#<F#<G# 370&#=$#=%#<F#<G# 370&#=$#=%#<F#<G# 370&#=$#=%#<F#<G# 370&#=$#=%#<F#<G# 370&#=&#='#<L#<M# 370&#=&#='#<L#<M# 370&#=&#='#<L#<M# 370&#=&#='#<L#<M# 370&#=&#='#<L#<M# 370#1o;;#$=>@AABBC]^abDEEFFGGHJKKLeffg       JKKLLMMNPQQRxy)**+344578899::;=>>?YZZ[\]^_wxxyyzz{}~~*++,,--.STTU_``a^__`tuvwwxxyyzz{|}}~~          !"#$%%&&''()**+,--./001122334456778=>>?CDDEEFGHHIIJKLLMMNNOPQQRRSSTTUUVVWXYYZZ[[\\]]^^_`aabbccddefghiijvwwxz{{|}~~              : ; F G  "&),.01345:>BEILOQUX[]`bdehjlmopqvz~   !%(+-02458:<=?@AMXZ[fptwz| #*07=CHOU[`fkpt (19AHQYahpw~ &/8@JS\dmu}                                                                                                                                                                                  8v*T~*AXo       !"#$%&'()*+,-./0123487567879:787;<787=>787?@787AB787CD787EF787GH787IJ787KL787MN787OP787QR787ST787UV787WX787YZ787[\787]^787_`787ab787cd787ef787gh787ij787kl787mn787op787qr7vustuvuwxuvuyzuvu{|uvu}~uvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuuvuu      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnrrrxxxooopppqqqssstttuuuvvvwwwyyyzzz{{{|||}}}~~~** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1**##1**##1**##1**##1**##1**##1**##1**##1**##1**##1**##1**##1//#$=>CD]^abeffgxy3478>??@TUXY)**+3445YZZ[\]^_*++,,--.STTU_``a^__`tuvwwxxyyzz{|}}~~          !"#$%%&&''()**+,--./001122334456778=>>?CDDEEFGHHIKLLMMNNOPQQRRSSTTUUVVWXYYZZ[[\\]]^^_`aabbccddefghiijvwwxz{{|}~~               : ; F G  "&*,./0127<@DHLORUXZ\^`abdfghijotx|  "%(+.0258:<>@ABGLPTX\_bfjmpsvxz~  "%(+.0258:<>@ABFJMPSVXZ]`bdfhijmprtvxyz|~  )7AOYenw} -7CLXaks"'/5;@FKO_jx'0<EOWclv~  +3<CPYdlw &.7>GNU[fnw~  ! * 8 B N W c l v ~    ( 2 > G S \ f n z     ' . 4                                                                                                                                                                                                                                                                                                                                                      8v*T~&Pz&=Tk        "!$#&%('*),+.-0/214387657787:97787<;7787>=7787@?7787BA7787DC7787FE7787HG7787JI7787LK7787NM7787PO7787RQ7787TS7787VU7787XW7787ZY7787\[7787^]7787`_7787ba7787dc7787fe7787hg7787ji7787lk7787nm7787po7787rq77vutsuuvuxwuuvuzyuuvu|{uuvu~}uuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuuvuuu      "!$#&%('*),+.-0/21436587:9<;>=@?BADCFEHGJILKNMPORQTSVUXWZY\[^]`_badcfehgjilknmporqtsvuxwzy|{~}>>>>                        !!!!""""####$$$$%%%%&&&&''''(((())))****++++,,,,----....////0000111122223333444455556666777788889999::::;;;;<<<<====????@@@@AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZ[[[[\\\\]]]]^^^^____````aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzz{{{{||||}}}}~~~~** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1** *#** ##1**##1**##1**##1**##1**##1**##1**##1**##1**##1**##1**##1**##1"tone,tstv4pit9<vietL romnTchtn\brigdbowlllitrtital|Engs ramh%ogon)Hstk,Jstk/N_hk2opnO5p_hkȀ8R_tlЀ;t_hk؀>v_hkAY_hkDezhcGEzhrJopOUMmonePaposScolnVsbrv Yshha(\empt0_invs8bdsel@eHh    !"#$&'(*+-.0134679:<=?@BCFEHIKLNOQRTUWXZ[]^`acdgfchz>??@@AABBCCDDEEFFGGHHIIJJ%KKLLMMFNNOOAPPuQQ5RSTTUUVVWWXXYYZZ[[\\!]] ^^)__``"aa bbRcc6ddKee5ffSgg9hhiifjjkkhllmmdnnoonppqqarrsstttuuvv!wwxxyyHzz7{{K||:}}J~~9txwShjmZQ _k*R7V<Xy*O@ae^]|q)( YFBemjlk)\^m:OPdX__l9\CMI SC    D    v  6@bc'P3f`  &!!""##l$$P%%D&&]''((a))!**++J,,--D..//K0011L22#334455 66>77d8899::e;;<<==>>U??@@FAAjBBiCCDDEEFFeGG&HHxII`JJKKLLMMNN'OOPPQQRR4SSvTTUUVVWWXX1YY*ZZ0[[3\\6]]9^^=__g``aabbccddeeffgghh#ii8jjAkkllmmnnooppqqrrssttuuTvvwwxxyyzz{{||}}~~mC=w=BU[glp<akoA@w]VRhm    -*UQdb_%nhg 8    L L N M Ovu .3F?  X  N       Z\IJejKPca^  ##E$$>%%M&&H'(x))Y**}++(,, --..//0011+22233544567899T::;;<<)==&>>!??7FF~GG6HH[IIiJJKKLLMM NN OO PP QQSRRSS$TT UU VV WWWXXGYY#ZZO[["\] ^^1__0``aabb ccddeeff4gg`hhiijjkkllmm-nnoo=XeH[]<It  |    \    ,- @Eo+-yr   !!""H##+$$%%&& ''0() *+,,--..[//0011y223344s556677@88 99::;;n<<==>>1??@@AABBDCCDDEEFFGGHIJK|LLzMMNN;OOPPQQRRSSTTUUVVWWXX\YYpZZ[[\\]]^^__rrssZ.{qB fYE([G32f'g(={o4>X[i7Uk+l.pAbV0/IUW./ ,1~sDrC~  r        ZFn?}qBk;G:  1  v      !tghjpnJ  !!""G##c$%r&&''(())**++z,,A--j..//0011F22i334455@66u778899::;;"<<s==>>??@@IAABBCCDDEEFF<GGnHHIIJJ-KK4LL;MMNN2OOPPQQRR3SSTTqUUoVVWW,XX_YYZZ[[\\t]]^^__``aabbccdd^eeffgghhiijjkkllummnnxooppqqrrssttuu:vvAwwxxyyzz?{{R||:}}~~rw? 3%58/"vY57ui$9BSb V8x6>CWY|  boqp          ZY^_b"v  !!""##$$%%&&''(())**++,,M--..J//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMCNNOOEPPQQHRRSSGTTUUVVWWXXYYZZ[[\\]]^^__``$aa bb%ccdd ee ff#gg hh&iijjLkk/llOmm2nnNoo1ppMqq0rrssrttuuqvvwwpxxyygzz{{i||}}~~$ I8M<L;. a`DFJHLOQUSW` ]WJ L PNRLNNMw7y9}={;?`acbdsoz{}|~ & % " A   ;   B   <   @   C   ?   D   > E . - +                  4             ! ! " " # # $ % & & ' ' ( ( 6 ) ) : * *  + +  , ,  - -  . .  / / = 0 0 2 2 3 3 4 4 5 6 7 8 9 : < < ? ? @ @ D D S S W W ` ` * a a  b b  c c  j j 2 k l 0 m m / n o 7 p pw q q t t u u v v w w x x y y z z` { { | |; } } ~ ~   v x z }       ]  :    2  ,           u    T     f +  !!*!!!"!"!#!#!&!&!S!S!T!T!U!U!V!V!W!W!X!X!Y!Y!Z!Z![![!\!\!]!^!_!_!`!`?!a!cU!d!d!e!g!h!hX!i!i!j!k!l!l!m!m!n!n!o!o!p!p!q!s4!t!t!u!w!x!x7!y!y!z!{!|!|!}!}!~!~!!!!!!!!!!!!!! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! """"^"""""""""" """""""+"+"<"<"H"H"_"_<"`"`"a"a="d"e## $#$#%%%%'' 'M'M '',`,`,a,a,b,b,c,c,d,d,e,e ,f,f;,g,g,h,h,i,i,j,j,k,kQ,l,lE,t,t,u,u,v,v,w,w          t}n !s03 H45pp|qsttuuvv xxyyzzD{{7n 582>u$Bi[Vix6CWb 8>hY9S}t  9   ( 2 < F P Z d g    SYi &!!e""##$$r%%&&''w(())**++,,--..//00112233?44N55Z66 77388%995::8;;/<<"==>>v??@@AABBCCDD'EE_FFGH>IIuJJKKxLLMMNNOOPPQQRR:SSATTRUUVVWWFXXYYYZZ[[\\]]:^^__```aaxbbccddEeeQffgghhiijj !!""}##q$$%%&&''(())**n++?  !"# , 3 9 Gd"~ ?o_s 0 : < @ D S W c q !!!#!&!!!!"""""""+"<"H"a"e# $#%%''M',l,w!5v{j+# #Fr 2 < ? D S W ` j t !!!"!&!S!!!"""""""+"<"H"_"d#$#%%''M',`,t 0px /Z,exyޖދtq_0]j`S  -(&" p | h  " L N N   $ * , {~ybcdefg'hjikmlnoqprsutvwxzy{}|~ZNcXT\c#VGHEO KT3w^%FAu5! )" R6K5S9fhdnat!H7K:J9txwShjmZQ _k*R7V<Xy*O@ae^]|q)( YFBemjlk)\^m:OPdX__l9\CMI SCDv6@bc'P3f`&lPD]a!JDKL# >deUFjie&x`'4v1*0369=g#8ATmC=w=BU[glp<akoAB@w]VRhm -*UQdb_%nhg 8 L L N M Ovu .3F?XN Z\IJefjKPca^E>MHxyY}( +25T)&!7~6[i  S$ WG#O"  10 4`-=H[]<It|\,- @Eo+-yr H+ 0 [ys@ n1D|}z;\pZ.{qB fYE([G32f'g(={o4>X[i7Uk+l.pAbV0/IUW./ ,1~sDrC~rZFn?}qBk;G:1v!tghjpnJGcrszAjFi@u"sI<n-4;23qo,_t^ux:A?R:rw? 3%58/"vY57ui$9BSb V8x6>CWY boqpZY^_b"vMJCEHG$ %  # &L/O2N1M0rqpgi$ I8M<L;. a`DFJHLOQUSW` ]WJ L PNRLNNMw7y9}={;?`acbdsoz{}|~ & % " A ; B < @ C ? D > E F . - +  4  6 :      = *    2 0 1 / 7 8w`;vxz}]:2,uTf+ ?UVWX4567 ^ <= ;QE tuvwx}nopq H I J K| Dnopq 582>u$Bi[Vix6CWb 8>hY9S}tuvwx  9   ( 2 < F P Z dghSYi&erw?NZ 3%58/"v'_>?ux:ARFY:`xEQ}qn? 3 4 5 9 G*bh!D\#,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-dH/ /ܸܸи/EX/>Y+017!!'!!L2P22(#+A &6F]AUe]и/# EX&/& >YEX/>YA'7GWgw ]A]01%#"&&&5466632#&'&&&&54632#..""..# d GGX^R/ ///01#4632#4632!H.*++!E,*+-^0440 0440ug// / /++ии иииии01!3!!'!'!5!!5!!!e)ep`Jf׮dDdoh+m^%f!#f%i!>!>iw-  N`3+H.++AZj]A )9I]Hи/. и /A &6F]AUe].H9Hи/.и.:и:/H<иEиE/P/EX;/; >YEX:/: >YEX=/= >YEX3/3 >YEXC/C >YEX/>YEX / >Y;9;9-014&&&'6666#5&&&&'33&&&&54666667532#'&#P$>P++P>$)F4%8D *CW[V"_&dmr4f%9KV*CmE":MUY(^B}193k0,_ZP=#^8P9%$;T %:O32H3" X?jU@- \ 7XX>eO<* 5 *8PjB';?S- 2+(+J+@+A   & 6 F ]AU e ]AZj]A )9I]A ((&(6(F(]AU(e(]=2@9?2@9AZJjJ]A JJ)J9JIJ]@UEX>/> >YEX7/7 >YEXYEXE/E>Y-+O+7AIYqA!(8HXhx]A (8qE#A!##'#7#G#W#g#w#########]A ##'#7#qAF#V#q=E#9?79014&&&#"326664&&&#"32666#"&&&5466632#3#"&&&5466632%;**=((=**;%%;*)=((=)*;%&NvOOvO''OvOOvN&f<'NvOOvO''OvOOvN'Q[22[QQ[22[ Q\22\QQ]22]\sBBs\[sBBs^/[tBBt[[sBBsPoy#_Ȼ0+D+A &6F]AUe]AZj]A )9I]:5:9DSиS/I0S9EX?/? >YEX+/+>YEX$/$>Y+ A!  ' 7 G W g w ]A   ' 7 qAF V q?AIYqA!(8HXhx]A (8q5+?9I+?9 ]и]/013266674&&&#"66665'#"&&&546667&&&&5466632666676&''5!5(.Pm>/MA9q0H1*D0'9B-E/\(VdvHXtC(Ie<:8);iSN`74Ul8X%! o)/23=K.EuU0 )X,P=$4F(3YK?5CS1g ?2 =lXCoYD;Pd:M\2/RqCKpT?:@C VV4bYL XX^ //01#4632!H,*+-^0440y;+A &6F]AUe] //01&&&&&&54667k\9=ݡl]))]l Mzp/Z{쪫{F; +AZ j ]A  ) 9 I ]//01566654&&'59\kl[))[lފ=NpӼzM Z{{Zm #///990177'%'7'7#7'7!\ݏ^FTV ݑ5/t+}}+f L+и/EX/>Y +и 01#!5!3!?~'~''''BE+ AZj]A )9I]//01%56666'#&&&&5466632;cF6U9 ".,@*Ma;J )CbF!2(#=UZ59}B^/EX/ >Y01#3hR/3w4/5/ܹAZj]A )9I]4&и&/A &6F]AUe]EX-/- >YEX!/!>Y-AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq014&&&&&#"32666667#"&&546666632V *>T66T=* *=T66T>* ={}}{<6QnSSnR7MvV11VvMMuU11UuMssb_55_ +EX / >Y013572655%33N\@7\\`!0+%+AZj]A )9I],9/%2EX / >YEX/>Y  AI Y qA!  ( 8 H X h x ]A   ( 8 q,01356$6654&&&#"#"&&&5466632!73`j/Ok<$;,  &,#I|ZdyD7c\_$elJsO)  -@pR/:iYHI`!R+9A+K.+KAZ.j.]A ..).9.I.]NA9KTEXF/F >YEX/>Y) +A'7GWgw ]A]A!'7GWgw]A '7qAFVq #и#/ %и%/F3AI3Y3qA!33(383H3X3h3x333333333]A 33(383qFKc;?bD@dE#  ,!:iN.2\Qt+)Q{R/ k + ии EX / >YEX/>Y + 9 и01!#!5333yGZ\#^3B4/5/ܹAZj]A )9I]4%и%/*EX&/& >YEX/>Y/ + A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVq&(01#"&&&546323266654&&&#"!!266632#K؍Pj>I8 N (,,Q~V-6^J3q198z0Nb3kxAhG.FV(8;  =`t6VT) Ʈ{9lR/485/6/ܹAZj]A )9I]5!и!/ A   & 6 F ]AU e ] и / -и-/EX&/& >YEX/>Y0+A!'7GWgw]A '7qAFVq&'-09014&&&#"326667#"&&&546$3'&6632^'KkD!HHE EiJJmG#NhhLn1Fb`UVao=KwS+& 9i}E:chpID.vEzI8ArV+^ /EX/ >YEX/>Y01%#!#!!h#DѺhrR-'O 2+F+FA   & 6 F ]AU e ]AZj]A )9I] <(72(9K2(9FQEXA/A >YEX-/->YA!'7GWgw]A '7qAFVqAAIYqA!(8HXhx]A (8q7-A9K-A9014&&&'326664&&&#"6666#"&&&546667&&&&5466632^6ha'C2'LrJBkJ(%(D[34W>".V}O7(KjqE1Qj9*UD+?sb^vC1JX'1lZ:T@YG?'4CV7BpS.+I_?cE$'@U.6WJ?8DPXl=YEX/>Y(+2AIYqA!(8HXhx]A (8q#(9014&&&#"32666766#56667#"&&&5466632Z EjIJmG#'KkD!HHEnEba*VUV+ao=MhgL;i}E9dMKwS+& 9vEz%1 @q\pID}' +A &6F]AUe]и EX#/# >YEX/>YA'7GWgw ]A]#A]A(8HXhx ]01%#"&&&5466632#"&&&5466632&31&&13&&31&&13&q2%%22%%22%%23%%3B.+ AZj]A )9I]%/EX*/* >Y A ]A  ( 8 H X h x ]01%56666'#&&&&5466632#"&&&5466632;cF6U9 ".,@*&21&&22$Ma;J )CbF!2(#=U%2%%23%%3Pf}//9015I'himf`++015!5!4mtPf}//901%55IP)fV&:G'1++A ''&'6'F']AU'e'] 1'9 /AZj]A )9I]EX"/" >YEX,/,>Y""A]A(8HXhx ]ии,6A66'676G6W6g6w666666 ]A66]01#666654&####"&&&5466632#"&&&5466632V$YEX0/0 >YS^+lG+= +*AIYqA!(8HXhx]A (8q и/1*9016&&&#"326667#"&5#"&&&5466632733266654&&&#"326667#"&&&&&546666632!/LzV.SM">5,-Meor3UKPH8^D&Wa453%r $ &-n^@bluѱc6a Zq/EYnεlYEX/>YEX/>Y +01!5726'!3!573'v ' ydwݚ \wX w  XXXB^"5H, +6+# 9AZ6j6]A 66)696I6],>иJEX/ >YEX/>YD&+ &&+и+/ ,и,/.и./1и9и>и>/D?и?/DAиA/01#!576654&''5!224&#"#326664&#"#3332666/Pisw6ll$zp4:Xh-ElCߦ=6(+l\(R%! dT%S}Z;#XDX-VzMMlJ, !L|k$Hly%FgPBB^Bh^)i"+"EX / >YEX/>Y +  ии"и#013576654&''5!#'&&#!!26573#'4&#!!26773Bjj{D3hh  %nXDXϨ 7  3^'J+EX%/% >Y+%#и#/$и$/01'&&#!!26773#'&&#!!576654&''5!L9ff l} 3  XXDXP\<~=/>/ܸ=и/и/4 и /*A **&*6*F*]AU*e*]EX/ >YEX/ >YEX / >Y%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%q /A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q01#"&&&&&546$32#'&&'&&&&#"3266634&''5!>F0 5'6b_ g   NݏS  YYB^3=4/5/.ܹ4и/и!!+01!57665!!576654&''5!!4&''5!u^ujjuujjXXXDZZ3ZZXD`^?3^tB^.+EX/ >YEX#/# >YEX/>YEX / >Y и / ии/и/!и!/"и"/%и%/'и ,и,/-и-/01!5#!576654&''5!36&''5!ulluJ i$,^˔?#+XXDXX!  XX ` X7^;^3^#*$/%/ܸ$и/01#!576654&''5!4&''5!uEuyu/{XXDX3XXP'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&5466326lkol45kmol5``^_}ݥ_`z{ݦbb|qmpr3R^67/8/ܹAZj]A )9I]7+и+/  EX1/1 >Y+1AIYqA!(8HXhx]A (8qи/ и //и//0и0/014&&&#"##236667'"&&&'!576654&''5!2}(Wb$"&Q[2To/+l{ՋDKuQ+{(T\qo7XXDX,bP<1 1+,++AZj]A )9I]A   & 6 F ]AU e ]!9AZ,j,]A ,,),9,I,]>EX8/8 >Y'+8AIYqA!(8HXhx]A (8q014&&&#"326667326667#"&&&5&&&&5466666324kqpl46mnol5M҅%B4# 9Rd6l_*{ИV+Qvf`yۧc`zxݩdcx{sX 0ZOrd^3pB1^JK/L/<ܹAZj]A )9I]K0и0/%кA0<9EX6/6 >YEX/>YEX/>YEX*/*>Y +6(,и,/-и-/4и4/5и5/A 9-J014&&&##2232666#"&&&&&&&#"#!576654&''5!23o(Wa^! UZ.$+\rG(")Jv^ ljjuE8]zASd:;eTBeF$Doc 7[tyt[7-XXDX&VeQtP2GZecZF)PGH/I/ܹAZj]A )9I]H$и$/1и1/$>A >>&>6>F>]AU>e>]EX)/) >YEX/>YA!'7GWgw]A '7qAFVq)9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q01#"&'&'33266654&&&'&&&&5466632#'&&'&&&&#"=ΐT07, 4K0AoP-Gk~8?sW3He:gYM"u +C.>bD%%IjE]c4NvHk  !>Z9>]I:@TqN[i9 $AX4/MA8#L^u!^@+EX/ >Yܸиии01'&&#!!57665!"#!1ՃwXXmG?{^+ +#+-EX / >YA!'7GWgw]A '7qAFVq01#"&54&''5!3266654&''5!Dŀm uLkjNu~x: XX+Zj;>mUXX?^^^vEX/ >YEX/ >YEX/ >YEX/>YEX/>Y99901##'5!36&''5!ǖwz AJoXX d) XX^^ 9 + 9EX/ >YEX/ >Y01!57665'5!6&''5!dwwg!= sVEXXXX  XXPJ^9EX / >YEX/>Y  0135!"#!!26773PyG#yZG^h!+++01!!!?\^B^/EX/ >Y013ffZN!+++015!!5!ZB^\HhQ +015!ςhFB+<%+%A &6F]AUe]%к292/,<DEX7/7 >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q797(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q7,ܸ @и@/01326767'#"&&&5466666754&#"#"&&&5466632S'9%)Y%+*698;=8aH).SÆ\c6L LzL_}Ic##DEG& =0y)  &HfA&D@;:9Xgc ?[<.RpCP+(')/*/ܸ)и/ к 9AZj]A )9I]EX / >YEX/ >YEX/>YAIYqA!(8HXhx]A (8q 9!и!/#и$01#!#5%36666324&#"3332666+DߚٛR:KV-eh4ѥ./-![b4tŒRRDOL *`FuFNF"._//0/ܸи/ и /и/ -и-/.EX/ >YEX/>Y.+A!'7GWgw]A '7qAFVq"9(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01%#"&&&5466632!3266674&&&#"!+]cf4]OHi_`0h!Nc,VSL#1K33XC)f."?~xËK?o[N|M$-3W@%'JiB;3MEX/// >YEX/>Y+ии/"01&&&&&&'3#!57665#5746667666632!)/(+#yeO[c2+B-j)   ,JiHi!PPH%3QGC%:U8",F+)fӻ H+-+-A   & 6 F ]AU e ]AZj]A )9I]ZH 9Z/ *-9> RиR/UH>9-hEX_/_ >YEXC/C>Yd*+%2+CA!'7GWgw]A '7qAFVq_AIYqA!(8HXhx]A (8qU2%9014&&&&&'326664&&&#"326667'#"&&&546667&&&&5467&&&&5466632!+*EWYS-<$ BeEImH#s0G.+H31I0.G0 J{V .v{w\9So\b46Q8163\F)-QA/ (a7 4Og>QZ0  dhF'^+\1# + и/EX/ >YEX/ >YEX/>YEX / >Y и и /!и!/"01!5#!57665#5%336&''5!rX/dT)- TalPPPDO'T PP P5)))`,4 +'+ и к'9'.EX/ >YEX#/# >YEX/>YEX/>Y# AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/# 9*и*/+01!576654&#"!57665#573666632VZk;r4V1dT+YXR$ZPae!`PPCNf.$PF'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632?!DfEGhC !DfEFhC!Epp~CDrr|ATvFFvTSvGFvRmPOomPR+B3: '++AZj]A )9I]  и +'-и 0к1'9<EX/// >YEX6/6 >YEX%/%>YEX/>YEX/>Y6AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq169014&&&#"326667#"&'&'!57665#573676632f%HkF'K" < T|Q(Gy@ ybP,2+p ?  DqmyŋL OO CNf#(HFBF3~4/5/-ܹ4#и#/A &6F]AUe]к#-9EX(/( >YEX/>YEX/>Y(AIYqA!(8HXhx]A (8q A!  ' 7 G W g w ]A   ' 7 qAF V q 901&&#"32666757665#"&&&5466632G*TW-#KuS/0-yFMM"_h8P܌JNN cYEX"/" >YEX/ >YEX / >YAIYqA!(8HXhx]A (8q  и/и/и/и/ 901&&#"!57665#5736666324&2f5eT?HM$$"  !C<PNCNGB. F;YEX/>YA!'7GWgw]A '7qAFVq$/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q01#"&&&'33266654&&&'&&&&5466632#'&&#"6d[/YK:h[<,D/"@];8V;1^Y-RD4kV0UQ5WA6ZB%)KxS, %,9+=1.5=I.DnM* M<#4.04@N7Ȼ+ /EX/ >YEX/>Y ииA!'7GWgw]A '7qAFVq 901%#"&5#5773!!326767&-&d7th\Z!)=)3+ lzCBf=U5  +b&'/(/!ܹ' и /EX/ >YEX/ >YEX/>YEX/>Y9A!'7GWgw]A '7qAFVq01!5#"&&&5#573326667#573KW_-BiI'R/L6@:3TZu2+'Q}W+FPf6V<  FPP'/EX/ >YEX/ >YEX/ >YEX/>YEX/>Y9и/и и и /99и/01##'5!36&''5!q`^f PP}PP+))nEX/ >YEX'/' >YEX / >Y'и/иии/! 9%и%/&01#"&&&546766667'5!6&''5!w $1; %Y4$8&#4.& qbamBT_\ %) +#;XQZY"} PP\PPFm9EX / >YEX/>Y  0135!"#!!2666773Fi om#T {ZL9B + иB2'//+:901"&&&'&&&554&&'&&&�"3Z6j^M#" .9G--G9. "#M^j6 6?< )q??q) YEX*/* >YEX/>YEX/>YEX/>YEXT/T>YY+A!'7GWgw]A '7qAFVq*9*:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:qTDA!DD'D7DGDWDgDwDDDDDDDDD]A DD'D7DqAFDVDq01#"&'&'53266654&#"5&'&&&&&546$32#'&&'&&&&#"32666766773##6632$?W45+/%6*84ayS*h2]`j>{ '6B&iKGz$;,/wFpN 5(0H2P  &&b^i  NᓏS  `#7Bhm"(3"1{P!"2B?{!"8BF"DYF"DF"DF"DBF"DFP"D F3uU>#++595/-A >>&>6>F>]AU>e>]FиF/-WEX(/( >YEX/>YEX/>YC+A!'7GWgw]A '7qAFVq(9(2A22]A22(282H2X2h2x222222 ](9AI9Y9qA!99(989H9X9h9x999999999]A 99(989qF(9Q01#"&'&'53266654&#"5&'&&&5466632#"&'5&&#"32676632$?W45+/%6*LAVzBPbCuU1"+"2-DmK(+UTHB#MW0#% 5(0H2P  &&'nąC4L2- >nYUo@-,u% i#7F"HrF"HF"HF"HBF_"('"("({"(B)`"QF"RF"RF"RF"RBF"R+b"X+b"X +b"X+b"XB //9901#3'7%5%%#7ZZZN!s+R``bT!^`RPPR`+f)'ø(/)/ܸA]A )9IYiy ](и/ A  & 6 F V f v ]A ]+#+014&&&#"326667#"&&&5466632'45''54'R#=R//R>##>R//R=#4''44''4/R=##=R//R>##>R5 ;+0+A &6F]AUe]% и0ииии0//EX/>YEX/>Y01##5&&&&546667532#'&&'&&&&'6676766773\(XK1(E\3'ImHbht>Aueb'HGI(b !- 5 d :da[iB 9 ThfW  Ӳ   X)EF/G/ܹ F;и;/и/и(и(/;0и0/;3и3/;7и7/;9и9/EXA/A >YEX)/)>Y+AA]A(8HXhx ]AAIYqA!(8HXhx]A (8q)"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q$и$/%и%/'и(и4и601#"'&'5&'&&#"!!67763!!56666'6&''#53&5&55466632)#.  ;W=&}0UC%!8^3?V44lp0qaB +";PZ`/"O"Pdb{d+}CeR/Hd/+%%=jP4SykmB+9+AZ9j9]A 99)999I9]99/AZj]A )9I]A &6F]AUe]B9LB9L/&и&/GB9XиLcmEXQ/Q >Y4!+Q^AI^Y^qA!^^(^8^H^X^h^x^^^^^^^^^]A ^^(^8^q014&'66667#"&&&'33266654&&&&&&&546667&&&&5466632#'&&&&#"甆/E.$IoK<5%*FY/-M9 9eS5aR@f044-M9 2RiniR2&AX2.K61cd-XM<a)17.K62QgmgQ2f]83>D"/NFC# /@L\&-E:58BUmHDdK76@L-FpN)   .?%'>648ARhH //01#"&&&5466632%@V11V?%%?V11V@%1V?%%?V11V@%%@V7^^@+/EX/ >Yиии/01##"&&&546663!-doJ@{s^5#Zwq^)J-`3>+X+K&+AZ&j&]A &&)&9&I&]&K9/AZj]A )9I]AZj]A )9I] и /EXF/F >YEX/>YEX/>YEX8/8>YA!'7GWgw]A '7qAFVqF+AI+Y+qA!++(+8+H+X+h+x+++++++++]A ++(+8+q6и6/7и7/:и:/01#"&'&'33266654&&&&&546667676654&&&#"!5766546666632"&#"9aI#T%++o>+'?-AaraA&B[53M5@\@( h/b7TsZXZ. 4I-%Y^l+H+5+ +H&и&/(и(/H*и*/2к? 9zPAIPYPqA!PP(P8PHPXPhPxPPPPPPPPP]A PP(P8Pq014&&&##2232666#"&&&&&&&#"#!576654&''5!234&&&&&#"32666667#"&&&&&546666632>aEF=]?!X"&DT33TD*NNN}T]1(BW/=H)/QC2[``[32Zaa[2Y8gnlǮg88gmkɯg9*C/-H#:IMI:# 99  :8[B4K5! /:BA;-sb\22[d`\33\`mʰg99gmmʰg99fFm)Eaw8T+ +F*+A &6F]AUe]A**]A **)*9*I*Y*i*y****** ]A88&868F8V8f8v888888 ]A88]FcEX[/[ >Y?M+"++[1AI1Y1qA!11(181H1X1h1x111111111]A 11(181q01#"&&&5466632#'&&#"32666773%4&&&&&#"32666667#"&&&&&5466666321Pg9yBHrPD]O,Az]86Xr<2,& Zx2Zaa[22[``\2Y8gmlȯg88gmnʯf7OajG3b[^e4 a\33\aa\33\cmʰg99glmʰg9:hF1L64+ ++49-68// /&/+иии.и40157##57'5353'4###576767#"#5!/>1=@@ՇAAk   l ;1- T --  /h/ X -V K-- Vh //01#666632t $ (> !BfB? //+ +ии  и01'7!5!7!5!7!!!XRqRgmRR 5^iP^ =ø>/?/>,и,/A &6F]AUe]?ܺ ,9 AZ j ]A  ) 9 I ],9'и'/ 5и5/%/5/EX1/1 >YEX/>Y1AIYqA!(8HXhx]A (8q %59%59A!'7GWgw]A '7qAFVq01&&#"4&'326667#"&''7&&&&5466327.tEol445:;|ݘ1{Mol5`]G ? ^;\?"^VBta= @cE$&(`zzTS-1b|q*(6h5:0}Zp&"9-d61XJ'OP/Q/P<иY +и  01!5!#!5!3!~'~'pqfy 2/EX/>Y9 901!5!54Iqqufy 2/EX/>Y9901!5!%554IqqEF{^0 + 9& 9EX/ >YEX./. >YEX/>Y++ик9ик9&901!!!!!57665!5!'!5!'5!66&&''5!=!w7vyFoyX)b|ZZ  VV  XZZVV VVw9mF$+<9+9 и+ܹ+.<HEX,/, >YEX:/: >YEX/>YEX/>YEX/>Y ,96A!66'676G6W6g6w666666666]A 66'676qAF6V6q69A01%#"&&&'#"&&&'#"&&&54666665332673326667m$7G(:1#,KHI) .55$   !*EM$ 1&9MN/O/N(и(/ A   & 6 F ]AU e ]Oܺ4(97AZ7j7]A 77)797I7]B( 9#+G<+/+B<G901&&&&#"3266666#"&&&5466666326676&&&#"'666632(6I15WE3" -B/5XF6)"6NjX^i9-H\^W /HFO61Tm:(627(TNh<j  HprR56/7//ܹ6 и /EX&/& >YEX)/) >YEX'/' >YEX/>YEX/>Y)  01!5266654&&&##"3!5266654&&!"3b"I>(#8G$$G8#(=I""I>(6M0/N7)>J" 4(+33+*4  5*+=&&=+(4 )Ej+ "+; +E+*и*/4EX3/3 >YEX/>YEX/>Y09+9 иA!'7GWgw]A '7qAFVq9#и@A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&&&5!#"&&&5332666665#"#46663!2673##326665%?T0KW. "B`>,9 D+"%%"V3: <9ZA":4$;+} !-#7T~T*3N^,C+Pe:2Qg5 !+2*7  "AfL0+# " P  % hlB!  >K% ~T E7oo@!A/B/Aи/и/B:ܹ%и A   & 6 F ]AU e ]%EX5/5 >Y++и/5(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q5,>и>/015!326767'#"&&&54666754&#"#"&5466632?TZi7&;#& P'#?/SR0 Bo==(*+% sH+>'":635>; k '7#1D) /1oo+!,/-/ܹAZj]A )9I],"и"/ A   & 6 F ]AU e ]"и/и/EX'/' >Y++'AIYqA!(8HXhx]A (8q014&&&#"326665!#"&&&5466632#,C-.D,,B-.C-q-RuIIvR--SwKJuP*73\G**G\31\F+*F\j==AqS0.SqCBrT01UrFF7FX} 56/7/ܹAZj]A )9I]6&и&/&9A &6F]AUe]&91и1///!/EX+/+ >YEX/>Y!/9A!'7GWgw]A '7qAFVq+AIYqA!(8HXhx]A (8q!/9014&'32666&&#"#"&''7&&54666327?"# S5FhC!~J+GhC EpBt3qHsX^Dr9e-fJf2M4VYEX/>YA'7GWgw ]A]3)A))]A))()8)H)X)h)x)))))) ]01%#"&&&546667533776632#"&&&5466632}'P{TZsAMu;s0iW9T 0$"-.#"/-"$H9$4`TaiHYEX/ >YEX/>YA]A(8HXhx ]01%#"&&&73#"&&&5466632!11"LbL"./""/.",<&&<,o .""..##.R\#+/+01!5!))R^{') 3/EX/ >YEX/>Y901#'733>F!N\h?=y>9+F7EXB/B >YEX/>Y+501&&&&&&'3##"&&&54676766665#5746667666632!)/(*!&O[c2,A-"(4+!O[c2+B-j)   ,JiHieJ9T7", (    # -JkHH%3QGC%:U8",#f!CC//!C93C901&&&'&&&56666766675&&&'&&&5666676667f=LV.=TIJ2TkWLH&0GfI9nha*]ue5=LV.=TIJ2TkWLH&0GfI9nha*]ue5,'(<%,' % $G/,'(<%,' % $G/ N7V / // /0155NV=V܍܍R;V / ///01757'557'5RV=Vۍۍ3';YEX/>YEX-/->YA'7GWgw ]A]#и701%#"&&&5466632#"&&&5466632#"&&&5466632&21&&12&&22%&12&%21&$13&q2%%22%%23%%22%%22%%22%&2 Zm"$ Z"$HP"2PD +<+A   & 6 F ]AU e ]<%и<.и=/EX&/& >YEX"/" >YEX/>YEX/>Y0;+&AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq"9-и-/.и./014&&&#"326665#"&&5466325!#'&&#!!26573#'4&#!!26773 QloQQmoQG|KH}GL{D3ii  #n}ݥ_`z{ݦbbqFLmpLEpϨ 7  FJ6JVFA#+7+V+и/и/79-79A AA&A6AFA]AUAeA]UиU/EX(/( >YEX2/2 >YEX/>YEX/>YV+ A!  ' 7 G W g w ]A   ' 7 qAF V q(9(9-(9(<AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<qFA!FF'F7FGFWFgFwFFFFFFFFF]A FF'F7FqAFFVFq<P01!326667#"&&&'#"&&&54666326666324&&&#"326664&&&#"!J"N^*OH? LXd7EoYDEWlCow>?xoGw]BKXd4Y[.?`BCb? A`AAa?^,A+1O;#PMxJ!(}-$$:H%&H:#SijR#7F#-H3>oXsCDrQVwFEt 2XA&-Mh<3 +015!3 +015!Pq#7+!2+AZ2j2]A 22)292I2]2**9A &6F]AUe]и/!$и$///+$и/013#"&5466673#"&546667}=0  -O[7KK:5%  .QY7KKENV0  ."fXK}`C@NZ4  /"jXJ{`B}qP5+0+A &6F]AUe] и/"9'*и*/AZ0j0]A 00)090I0]7/!/+*и301'666654&5#&'&&5466632'666654&5#&'&&546327KKL;5%  !.QW7KKL=1  C8N\J|`C@MZ3  ."hVK}`CEMV0  5FgPq}[+A &6F]AUe]и///9013#"&546667};3#  -O[7KKBNY3  ."dZK|aC}qW+ и/AZj]A )9I]//901'6666'4&5#&'&&546327KKL"?/  @;M]K}`C"HNS, 5Hef++] +A &6F]AUe]и "+'++01#"&&&5466632%5!#"&&&5466632{"-,"",-""-,"",-",  ,-!!--!!--""-H5 ,/EX/>Y9901#3'`^cbP#+)"\B!"<B>B^/EX/ >Y01#3hRH9:/;/5ܹAZj]A )9I]:!и!/ A   & 6 F ]AU e ]//(/0/+,+014&&&#"32666'#"&''7&&546667'7663271Tr@CtW22WuBArT08GM9J-- #J7HG5J+1,.m@rV31VtCBsU13Ws01/2I8H$IFAJ--/-J6HI8NV //015NTڏRV //01757'5RTۏ;z;| #3/"/"9"9"9"901'3%'7%5%%#3'7%5%%#7^PRV!s+mmk=!s+P^``^PPPP^+VT#^`RPPR`+H?91}W+ и/AZj]A )9I]//901%'6666'4&5#&'&&546327KKL"?/  @;M]'K}`C"HNS- 5Hd}P5+0+A &6F]AUe] и/"9'*и*/AZ0j0]A 00)090I0]7/!/+*и301%'666654&5#&'&&5466632'666654&5#&'&&546327KKL;5%  !.QW7KKL=1  C8N\%J|`C@MZ4  ."hVK}`CENV0  5FfB';OSg{ F+<+^+T+2r+h(+A   & 6 F ]AU e ]AZj]A )9I]A &6F]AUe]AZ(j(]A (()(9(I(]A <<&<6<F<]AU<e<]QFh9SFh9AZrjr]A rr)r9rIr]h}EXR/R >YEXK/K >YEXP/P>YEXY/Y>YEXm/m>YA+c+KAIYqA!(8HXhx]A (8qY#A!##'#7#G#W#g#w#########]A ##'#7#qAF#V#q-и#7кQY#9SK9cw014&&&#"326664&&&#"32666%4&&&#"32666#"&&&5466632#3#"&&&5466632#"&&&5466632%;**=((=**;%I%;)*=((=*);%%;)*=((=*);%&NvOOvO''OvOOvN&g~&NvOOwO''OwOOvN&&NvOOwO''OwOOvN&Q[22[QQ[22[ Q\22\QQ]22]QQ\22\QQ]22]\sBBs\[sBBs^/[tBBt[[sBBs[[tBBt[[sBBs ZS"$\BhS"( Zm"$Bh!"(BBhm"(/D{m"?S"?!"?B,`m"?,Pm"2GPS"2K %4AN]kxci+++++AZj]A )9I] ииAZj]A )9I]$и$/A &6F]AUe],и,/2и:и:/AZj]A )9I]@и@/A cc&c6cFc]AUcec]cGcMиM/Uи[и[/и/cиiиGиcи//EX/>Y+!++y+)и)//и!7и7/!и/=и=/и/DиJиJ/7Xܸ`иfиf/ylиl/rиr/Xи!и014632#"&4632#"&6632#"&546632#"&546632#"&54632#"&546632#"&546632#"&546%2##"&546%2##"&546#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632  6< d<757 E Pm"2?{m"8I?{S"8?{m"8F'(h///01'#3#{h[#'+ +и01#"&&&&&#"#666632326667 (:N2-)(-6!$R ';N2,)'-5!%-R=%$-R>$$2-hb+ и01#"&&&53326667b&MrLMrL&P ,>H&&H<, 6mW66Wm6,?((?,; +AZ j ]A  ) 9 I ]+01#"&&&5466632)**)!**+  +hP'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632'45''54'd&BX33YB&&BY33XB&Z5((54''42XB&&BX23YC''CYR3&ϻ+EX/>YEX/>YEX/>Y"+A!'7GWgw]A '7qAFVq901#"&'&'53266654&#"536632$?W45+/%6*Q 5(0H2P  &&#7hj +и 01#666632#6632u $ u,)$ (> !(>!y}N+A &6F]AUe]EX / >Y+01#"&5466673326767}! =`m+2a'!?8   KJ+L?/ '0: 32  h///01#373{{h[FB+<%+%A &6F]AUe]%к292/,<DEX7/7 >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q797(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q7,ܸ @и@/01326767'#"&&&5466666754&#"#"&&&5466632S'9%)Y%+*698;=8aH).SÆ\c6L LzL_}Ic##DEG& =0y)  &HfA&D@;:9Xgc ?[<.RpCPLD+>'+'A &6F]AUe]'к494/.>FEX9/9 >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q999*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q9.01326767'#"&&&5466666754&#"#"&&&5466632\Z4'9%)X$*)588:=7aH*-R†Wc6L LzL_}Ic#-../1 :-y'  #EcA&D@;:9Xgc ?[:-QpCP2%BC/D/<ܹ%иCи/A &6F]AUe]%EX/>YEX%/%>YEX,/,>YEXY A!  ' 7 G W g w ]A   ' 7 qAF V q%9%7A!77'777G7W7g7w777777777]A 77'777qAF7V7q( @иAиA/01326767'#"&&&5466666754&#"#"&&&5466632Zi6 %9#%$&($?/ 6XW<@$1 a 1Pc1>Q/ @))+$ tI  +=')&$"#5>; j &6$2C( 07o<=/>/6ܹ!и=и/A &6F]AUe]!EX1/1 >Y +и/1$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q1( :и:/01326767'#"&&&54666754&#"#"&5466632Zi7&;#& P'#?/SR0 BX(*+% sH+>'":635>; k '7#1D) /ykw"D,Fh"D#E+Fm"D#YF{"DFm"D#{"DF"D#F"DF"D#X+F"DHF"DF"DFh"D#E+Fm"D#YF"D#"Fm"D#F"D#d"F"D#F"DF"D#X+F"D#X+L"F"DF2"D-L"BF"D#B-F"DF"D#-F "D# Y0F"DW+F "DX+Fh"DE+F"DM+FyP`V+H+AZj]A )9I]Hи/H9/#A VV&V6VFV]AUVeV]1V91/+<Qи<bEX6/6 >YEX / >YEX/>YEXD/D>YEX/>YEXA/A>YK+ 696'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q6+ܸD?[01#"&5466767#'#"&&&5466666754&#"#"&&&5466632#326767326767! =`m+698;=8aH).SÆ\c6L LzL_}Ic!?8  ݊S'9%)Y%+* KJ+L?y)  &HfA&D@;:9Xgc ?[<.RpCP 0: 32  #DEG& =0F-Vʻ!+M+@)+)A &6F]AUe]6!96/0H!@9@XEX;/; >YEX/>YEX/>YEX/>YEXF/F>Y A!  ' 7 G W g w ]A   ' 7 qAF V q;,AI,Y,qA!,,(,8,H,X,h,x,,,,,,,,,]A ,,(,8,q;0ܸ DиD/H;901326767#"&55#"&&&5466666754&#"#"&&&5466632!'37S'9%)Y%+* 8N--8aH).SÆ\c6L LzL_}Ic7 =8##DEG& =0.%xv&HfA&D@;:9Xgc ?[<.RpCPy!B6 -F-cDT>J +-+2C+A JJ&J6JFJ]AUJeJ]" J9"/Eи2VEX'/' >YEX@/@>YEX/>YEX/>Y'AIYqA!(8HXhx]A (8q'ܸ0O01!'#"&&&5466666754&#"#"&&&546663237#"&55326767698;=8aH).SÆ\c6L LzL_}Ic=8 8N-䊢S'9%)Y%+*y)  &HfA&D@;:9Xgc ?[<.RpCB6 -".%xv##DEG& =0F^vI+5+A &6F]AUe]'9'/!'!959=и5KH/0/EX,/, >YEXD/D>YEXG/G>YEX/>YEX;/;>YH09H09H09D A!  ' 7 G W g w ]A   ' 7 qAF V q,AIYqA!(8HXhx]A (8q,!ܸ 9и9/=H0901%326767&&5466677&#"#"&&&54666327!'#"&''KZ.")Y%+*)>K gp6L LzLNo&rW c698;= RT 8.I79: L ~Y4[TN( ?[<9"O-Py)  :F"Fh"E#D1+'!+!'9/AZj]A )9I] и9иFEX@/@ >YEX7/7 >YEX,/,>Y@AIYqA!(8HXhx]A (8q,A!'7GWgw]A '7qAFVq,!ܸ5и5/9,@9014&&&#"66666673267532#"&&&54&''5!67666632':%)W%+)\Z5 .R†Yc6L LzL_}Jb1598;=7aH*=0.-//0'&D@;:9Xgc ?[<.RqC=Py(!  &Hg#D1+'!+!'9/AZj]A )9I] и9иFEX@/@ >YEX7/7 >YEX,/,>Y@AIYqA!(8HXhx]A (8q,A!'7GWgw]A '7qAFVq,!ܸ5и5/9,@9014&&&#"66666673267532#"&&&54&''5!67666632':%)W%+)\Z5 .R†Yc6L LzL_}Jb1598;=7aH*=0.-//0'&D@;:9Xgc ?[<.RqC=Py(!  &Hg}pDE/F/ܹAZj]A )9I]E1и1/ и9EX7/7 >YEX@/@ >Y!,+@AIYqA!(8HXhx]A (8q,5и5/6и6/014&&&#"66666673267532#"&&&54&''5367666632 &9;U;" 6W~W9A#1 a  2Oc1>Q0 ?"%$&(#?/% )&##"5=< k &6$1D(X 0H +>FPFP.//0/(ܹ/и/ A   & 6 F ]AU e ]к(9&и&/EX#/# >YEX'/' >YEX/>YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq901&&&&#"32675#"&&&546663273-13LzU-)LoG>m(#KOS-ga.@ƒ1m(}>V; =n]Te7+m1$WWhƚ],"NN2p.//0/(ܹ/и/ A   & 6 F ]AU e ]к(9&и&/EX#/# >YEX'/' >Y+#AIYqA!(8HXhx]A (8q901&&&&#"32675#"&&&546663273  !1P72H.(G146Ca?*T~U GQ( 8  %B[83S=!pA 4Ti4>w\8//FP"FP"%FP"xFP"FhP"#ExFPm"#FPm"#%FP"#FP"#XxFP"FP"FhP"#ExFPm"#FPm"#%FP"#FP"#XxFP"FP"FP2"-FP"BFP"#B-FP"FP"#-FPP"XFP "#X0FP"WxFP "XxFhP"ExFP"MxFyP8KC+0+AZj]A )9I]0и/0$09и9/A CC&C6CFC]AUCeC]KEX/ >YEX"/" >YEX/>YEX)/)>YEX / >YEX/>YEX,/,>Y3+HA!HH'H7HGHWHgHwHHHHHHHHH]A HH'H7HqAFHVHqH9>AI>Y>qA!>>(>8>H>X>h>x>>>>>>>>>]A >>(>8>q01#"&54667675#"&&&546663273#326767&&&&#"3267! =`m+#KOS-ga.@ƒ1m(}>V!?8  -13LzU-)LoG>m( KJ+L?m1$WWhƚ],"NN 0: 32  7 =n]Te7+F-P1DĻ<+)+"+')9"2A <<&<6<F<]AU<e<]FEX/ >YEX/ >YEX/>YEX / >YEX'/'>YEX / >YEX / >Y'AA!AA'A7AGAWAgAwAAAAAAAAA]A AA'A7AqAFAVAq"'A97AI7Y7qA!77(787H7X7h7x777777777]A 77(787q01#"&55#"&&&546663273!5337&&&&#"3267 8N-#$ga.@ƒ1m(}>V#K(%=8-13LzU-)LoG>m(.%xvWWhƚ],"NNm1B6 -k =n]Te7+F--@8 ++,+.A 88&868F8]AU8e8]BEX/ >YEX/ >YEX)/)>YEX/>YEX/>Y=A!=='=7=G=W=g=w=========]A =='=7=qAF=V=q=93AI3Y3qA!33(383H3X3h3x333333333]A 33(383q01!5#"&&&54666327337#"&55&&&&#"3267#KOS-ga.@ƒ1m(}>V=8 8N--13LzU-)LoG>m(m1$WWhƚ],"NB6 -".%xv; =n]Te7+3=01/2/ܹAZj]A )9I]1и/ и/ &к'9EX%/% >YEX,/, >YEX/>YEX/>Y,AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq',9014&&&#"326667#"&'#4&&&''5!666632s)LpF>m(,23LzU-@Â1m(}> VB#KOS-ga.Te7* =nhƚ],"Ns Nl0$W&p01/2/ܹAZj]A )9I]1и/ и/ &к'9EX%/% >YEX,/, >Y+,AIYqA!(8HXhx]A (8qк',9014&&&#"326667#"&'#4&&&''53666632C1I-)G  !1O8)TT GQ) 8136Ca?63S=!  %B\L>w\8/ /A 4ThF n4+c +] +c A &6F]AUe]]и 9кG49G/CS c9]`и`/]bиb/]pEXN/N >YEXX/X >YEX!/!>YEX///>Y b+XAIYqA!(8HXhx]A (8q b 9?иNCܺSNC9!iA!ii'i7iGiWigiwiiiiiiiii]A ii'i7iqAFiViqn!N9014&&&#"!326767#"&&&'&'#"&&&54666754&&&#"#"&546666632666632!326667+B-9J-pqU"&;($N!'%BUj=-OF:8)6;:?B"AbC"?ۜ)E32@)%":NY`.H_<" -D\;[Q&9IZ7.LB:.WC)5Vm7A;@K.#?0[,' ",," )Ib9QnRD(T3M4#*E5( %*)&DsR  1))F n4+c +] +c A &6F]AUe]]и 9кG49G/CS c9]`и`/]bиb/]pEXN/N >YEXX/X >YEX!/!>YEX///>Y b+XAIYqA!(8HXhx]A (8q b 9?иNCܺSNC9!iA!ii'i7iGiWigiwiiiiiiiii]A ii'i7iqAFiViqn!N9014&&&#"!326767#"&&&'&'#"&&&54666754&&&#"#"&546666632666632!326667+B-9J-pqU"&;($N!'%BUj=-OF:8)6;:?B"AbC"?ۜ)E32@)%":NY`.H_<" -D\;[Q&9IZ7.LB:.WC)5Vm7A;@K.#?0[,' ",," )Ib9QnRD(T3M4#*E5( %*)&DsR  1))2p nL4+c +] +c A &6F]AUe]]и 9и]`и`/]bиb/]pEXN/N >YEXX/X >Yi!+ b+XAIYqA!(8HXhx]A (8qiи/!/и?иNC014&&&#"3326767#"&&&'&'#"&&&54666754&&&#"#"&546666632666632!326667 +%0 I`7 &2+7E'3.%$#&&)+*@+)Ye -!!* ]&39?.>',<';T5%/;#2+%4( 3B!'$&-& 7     +;"1B1)2. j* )EZ1  F"7]F2"7-F j Y+7 +EA+7 кAE9/AZj]A )9I]Yи2O 79Y\и\/Y^и^/ _и2lEX!/! >YEX-/- >YEXJ/J>YEXT/T>Y_ +TA!'7GWgw]A '7qAFVq _9=иJAܺOJA9!eAIeYeqA!ee(e8eHeXehexeeeeeeeee]A ee(e8eqjJ!901326665!%666654&&&#"%666632676666323267532#"&&&'#"&&&546767!&&&&#"+B-9J-/qU"&;($O!'$BUi>Y07*4<;?C"@cC"?ۜ)E32@)%ItFH_<" -D\;\Q&79IZ7.LB:9.WC)5Vl8A;@K."?0[,'1",," )Ib9QnRD(T3M4#?[<%*)&DsR 1))2p jN Y+7 +2+7 AZj]A )9I]YиY\и\/Y^и^/ _и2lEX!/! >YEX-/- >YAJ+_ +J=к _9-AIYqA!(8HXhx]A (8qJTиe01326665#%666654&&&#"%666632676666323267532#"&&&'#"&&&546747!5&&&&#" +%0 lI`7 &3+7D(:[$"'&),*@+)Ye -!!* ]/L\..>',<';T5q%/;#2+%4( 4@"'#&-& 7   ,;"1B1)2. k&6$ )EZ2  F Nd ,+A   & 6 F ]AU e ]EX1/1 >YEX/>YEX'/'>Y1AIYqA!(8HXhx]A (8q'A!'7GWgw]A '7qAFVq"19619901&&&&&&#"32666#"&&&'#"&&&54666326673326767u'YEX4/4 >YEX/>YEX$/$>YO\+fE+.AIYqA!(8HXhx]A (8q$A!'7GWgw]A '7qAFVq$99A!99'979G9W9g9w999999999]A 99'979qAF9V9q01&&&&#"3267#"&&&'#"&&&546663273326666654&&&#"3266677#"$&546$32%-13LzU-)LoG>m(V&@S[\(#B4"#KOT-ga/@ƒ651};/+&=-  X菓vn \kKr%B_yU⁅2sȥW.9 ;k]Tf:-_g~Y9!5%1$YWhŘ\ PAL)F[df-`iq-5+;C9%w:Ļ7};iPBZ[/\/[MиM/\ܺM9M9M9&AZ&j&]A &&)&9&I&]M4A 44&464F4]AU4e4]&AиA/EXT/T >YEXF/F>YEX/>YEX/>Y+!иT-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-qF;A!;;';7;G;W;g;w;;;;;;;;;]A ;;';7;qAF;V;qF@013#!5766'!!5733266654&&&&&#"3266673#"&&&&&546666632w/W~NL jfKQwx 1H/1YddZ11ZdTu$1sxq>>qxxq>obMH) HH9BjGkūc77ckkīc73I/Q\2ByΪyBBy Z@EX/ >YEX/>YEX/>Y +01!5726'!3!573'v ' ydwݚ \wX w  XXX ]?/+ +и/ии01!5726''!3!573M [XNN6d5 ;5 55  5ZEX/ >Y +01!5726'!3!573 #%fljh`RBP  PP P Zm"$ Z"$#\ Z "$ Z"$#\ Z "$ Z"$#\H Zp"$H Z ,"$#\X Z["$ hZS"$#E\ Z("$z Z("$z Z"$#z Z"$#z} Z"$#z Z"$#z Z"$#zH ZO"$H Z ,"$#zX Zu"$#zXi hZ("$#Ez Z9"@ Q ZS"$\ Z"$-T Z!"@Bh ZR"$#Bh-T Z&"$9 ZR"$#-T 9 Z "$# Z"$X hZ"$E Z"$M yZ8;0+AZj]A )9I]0=EX"/" >YEX/>YEX/>YEX)/)>Y3+;+01#"&5466767#5726'!3!573#326767!! =`m+v ' ydwݚ \!?8   KJ+L?X w  XXX 0: 32  s -Z"${ ^Z!),/ /EX/ >YEX/>YEX / >YEX/>Y*+ 9 9 9*к' 9(01!5726'##'7#5733#%'sv F`^>wݚta5 \)Nj)u3PX w]X:hX9Xw b+k1EX)/) >YEX / >YEX/>Y/++/ии!и/#и%и'и+и-01!'!73!5726'!3!57#537#5333#3i{#~P Jz_ SJO a_Ws"{в"sd XX   XX&dsdSdsdPR; "+5+A   & 6 F ]AU e ]и.ии1:и5=EX/// >YEX)/) >YEX/>YEX/>Y)AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq)91и1/.199и9/01&&&&#"3266675#"&&&&&5466666325!DMLdl99fQ$XVK)agl3Ot\?""Fin-QH<fd$#d`91"b`^&*%C2;eO_f:%.`j  jBD=$%++AZj]A )9I]$ и$*%/и$1и 2и?EX0/0 >YEX7/7 >YEX$/$>YEX/>Y7AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq#9&и&/279014&&&#"32666667#"&&&'!576654&''5!666632P;gQ$URGCLKBr]G1"Fin-QH<d$$df(jsu4OnT9`N!5..TtU_j=%.`j  j%B28a 5^9!+и!/EX/ >YEX/>YEX/>Y +#.+9и/и/и/и/ и!и0и101!57665!!576&''5!#'&&#!26773#'&&#!!2666773`e' ulm d>wsee  tdXs XXk VϨ 7   I9!+и и(!/EX7/7 >Y0+ + +#.+ 90и/0и/и0и/ и/01!576655!!576&''5!#'&&#!26773#'&&##!2666773dB͕ LG AN  BB 1Ko5 55  3e TVz8+и-EX/ >YEX'/'>YEX5/5>Y.++9ии' )и)/*и*/3и3/4и4/7и7/8и8/01!6&''5!#'&#!3266673#&&&&##!26773!576655!3!572 \t dd  m\hj! P** ** P  PP 5m"i 5"i-#()/*/ܸ)и/ к 9AZj]A )9I] /EX/ >Y$+AIYqA!(8HXhx]A (8q 9$и/$!и!/01###5736666324&#"3332666,\dd5 &08AcC"ia  :\?"VEwX22(0 .MfSvv:9\+N"E+"E*h+"EE-++>&5++5!к"9,и@EX / >YEX'/' >YEX/>YEX/>Y559'/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q"'/957и7/9и:01#"&&&546667265#!#5%36666324&#"3332666+".-N8 6=3?oٛR:KV-eh4ѥ./-![b4tcI;Yvx%."- 6BQ!)RDOL *`q(2o+)+и/ иии)(и1и2и4EX/ >YEX/ >YEX/>Y и /"иܸиии и,AI,Y,qA!,,(,8,H,X,h,x,,,,,,,,,]A ,,(,8,q2ܸ к,92и"#и(и)01#!#53#5%36666323!333266675&&#" Fƌ٪R7FT-c_0e!VV/ +,)cxDf'DOJ}\f&Tcf +2W++ ии)AZj]A )9I](EX/ >YEX/ >YEX/>Y  + ии и и#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q#9)+и+/-и.01#!#535#5%33#6666324&&&#"3332666+Dߚ٪ P;KW-ef4+QuJ-/,![b4tŐRPhDOhLab2 *^Z8KL/M/Lи/и/Mܺ9Bк9*иB/иB1и1/9AZ9j9]A 99)999I9]EX./. >YEX / >YEX/>Y+(+3+(ии/ <AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<q <9("к#.9BDиD/FиG01#"'666632#!&'&#"#6666325#5%33266674&#"3332666 (:N2 :KV-eh4Dߚ!$R ';N2 R!%2./-![b4-R=%{L^tŒRy$-R>$QDO$ *`:-;/YEX6/6 >YEX/>Y6AIYqA!(8HXhx]A (8q  +169014&#"326667#!46667666632'"666632B-/,i[a2CUcm84M3"0T=#;KX-df3 ,`tƐQ=aTO*6L1$/$. *QwNL+ &'/(/ܸ'и/ к 9AZj]A )9I] /EX/ >YEX/>YAIYqA!(8HXhx]A (8q 9и/!и"01#!'6666324&#"3332666+DߚٛZ:KV-eh4ѥ./-![b4tŒR&]L *`+/10/1/0и/& и1ܺ 9AZj]A )9I]EX/ >YEX/ >YEX/>Y AI Y qA!  ( 8 H X h x ]A   ( 8 q  9&(и(/*и+01#'&&#!"666632#!4&#"3332666q:KV-eh4Dߚ./-![b4 NL^tŒR *`FAB/C/ܹAZj]A )9I]Bи/ 8 9+/EX&/& >YEX=/= >YEX/>Y=AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq&1AI1Y1qA!11(181H1X1h1x111111111]A 11(181q8+9014&&&#"326667#"&&&554666663267673#"666632?&HjDHkG#&IjDGkG#D}lo|B+PrZUc  !Jgff@'Ec~No{BWuEEuWYvDDvYlQXcߢl@ ,WF+";P\e2'QA)S367/8/ܹAZj]A )9I]7 и / ,EX&/& >YEX/>Y2+и/ и /  и /ии/и&$(и(/)и2-и-/2/и//014&&&#"326667#!576654&''5!6766326YC "  Vd4-i|`eYn)[o>)3T<"T#;L)NpH#P  PP )Px ~45/6/'ܹAZj]A )9I]5и/ ии2/EX/ >YEX/ >YEX,/,>Y"+и/ и /,  и /и"и/"и/.и.//и3и4014&&&#"326663533#676632#!57665#6YC "  Vd4D)[o>-i|`e)3T<"T#;L✜f)PxNNpH#P 5&:;/YEX/>Y",+ии/"и/"и/,/и//,1и1/2и2/3и3/601#!576654&##"#5!6766324&&&#"326665-i|^d Zm)[o>4XC" Wd3 )NpH#P   P )PxN3T<"T#;L1L!9MaE +:+4'+Eи"и"/,и,/AZ:j:]A ::):9:I:]4OEX/ >YEX-/- >YEX/>YEX"/">Y?+и/ии/и/#и#/$и+и,и,//и//0и$7и8и8/?BиB/?DиD/8EиE/FиF/I01#!576654&''5!676632576654&''5!4&&&#"32666-i|^eWl*[o> bbccy5XC" Wd3)NpH#P  PP )PxP  PP  P)3T<"T#;L1L"}B{? >P++5+AZj]A )9I]и5 :595@EX1/1 >YEX%/%>Y+1AIYqA!(8HXhx]A (8qи/и/%и'и'/(и(//и0и0/:9014&#"326664&#"2326667#!576654&''5!2u|*+Oj@B|&$ 4UsE'CW^a*+a aķ!6B!0\F+OW/Dh]Y1I>=[B, P Pr/F4# 8SB^"5H, +6+# 9AZ6j6]A 66)696I6],>иJEX/ >YEX/>YD&+ &&+и+/ ,и,/.и./1и9и>и>/D?и?/DAиA/01#!576654&''5!224&#"#326664&#"#3332666/Pisw6ll$zp4:Xh-ElCߦ=6(+l\(R%! dT%S}Z;#XDX-VzMMlJ, !L|k$Hly%Fg0I"5Hɻ, +6+#ܹ 9AZ6j6]A 66)696I6],>иJ1+9+D&+1 и /9и/&D91.и./9>и>/DAиA/01#!576654&''5!224&#"#3326664&#"#33326664DKN#FFdOrI"&9D-XF+lj(#  F`;5eh  AY72K6$5  43I/.A,.JATN+AIM*==@X -+7+7AZj]A )9I] и <797BEX3/3 >YEX'/'>Y+и/' и3AIYqA!(8HXhx]A (8qи/)и)/*и*/1и2и2/<9014&#"#2326664&#"#32666#!576654&''5!2(&  TtHDv}./NkA'BV_a+)] ]ø"6D!0\H,]U2JQW.Du=[B* P  Pr/F5# 7TB&"%B^"%* Bh^"%E#^&=P'4 +>+' к" 94/AZ>j>]A >>)>9>I>]4FиREX/ >YEX/>Y+L*+ *"*/и//0и2и 4и4/6и6/9иAиFиF/LGиG/LIиI/01#!576655#534&''5!224&#"#!!36664&"#333666/Pisw6ll$zq5;Xi-ElCߦ=6(1*l\)R%! dT%S}Z;#Xh X-VzMMlJ, !L|kh$Hmx%Hh+I=*+8+AZj]A )9I]к89/AZj]A )9I]89*.к;89<ии>/AEX6/6 >YEX&/&>Y+6AIYqA!(8HXhx]A (8qи/&ии(и(/)и)/-и/и4и5и5/=014&#"#366664&'#2326667#!57665#534&''5!23v}.>Je=Dzz TtH?;J'BV_a+)] ]øJ@QW,@`[W0ES<;W@) P Rg8 Pr:a g^0CXS: +'D+'1, 9AZDjD]A DD)D9DID]:Nи'ZEX!/! >YEX/>YT4+ !!A]A(8HXhx ]4,49и9/ :и:/<иYEX/>Y)+и/ и /  и /ии/и/)$и$/)&и&/014&&&#"326667#!57665'6766328eT-$lc.M}f3rԢbZk9$IoQl^+X ٽ^m Q1^;YEX/>Y7+и/ и /  и /ии/и/&$-и.и72и2/74и4/014&&&#"326667#!576654&''5!#'&&#!"6766328eT-$lc.M}lq3rԢbZk9$IoQl^+X H X  Q1T^9:/;/ܹAZj]A )9I]:и/ /EX$/$ >YEX/>Y5+и/и/  и /ии/и/$"+и,и50и0/52и2/014&#"326667#!576654&''5!#'&&#!"676632-$lT"=؜}lq3rďRt+SwKle1X H X }9p3V^4¸5/6/ܹAZj]A )9I]5и/ *EX/>Y0+и/и/  и /ии/и/0+и+/0-и-/014&#"326667#!576654&''5!676632q-$lN=؜}l3rďRx*QvKle1X H XX }9pV23/4/%ܹAZj]A )9I]3и/ии0EX/ >YEX/ >YEX/ >YEX*/*>Y +и/и/*  и /и и/ и/,и,/-и-/1и2014&#"326663533#676632#!57665#q-$lN3rďR=؜}x*Qv gY9pmle1X l  ^;YEX/>Y7+и/ и /  и /ии/и/+$.и./72и2/74и4/014&&&#"326667#!576654&##"#!676632% HsT-$lE7Ӝ}q3rKZU)x*QvKle1X @EX }9p3}^6N]  ++I<+AZj]A )9I] ,иIPEX&/& >YEXB/B >YEX/>YEX7/7>Y2+и/ и /  и /ии/и/&$(и(/)и2-и-/2/и//8и8/9и9/)@и@/AиA/DиD/EиE/9LиL/MиM/014&&&#"326667#!576654&''5!676632576654&''5!\ HsT-$lE7Ҝ}l3rKyy}}ZU)x*QvKle1X H XX }9pXDZZX3}!"B-BcN-8+E +Eܹ 89AZ j ]A  ) 9 I ]J89EPEX@/@ >YEX2/2>YEX/>Y+ 2@9A!'7GWgw]A '7qAFVq@%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%qJ901#"&'53266654&&&46766654&&&#"3!5766546666632b#?Weo80n*2W+2cO12ksMpI#3M5@P. t#d$@`ZXZ.'BX1Kk@\jI,tG}dXa2.)NpF.WC(0Ncga$ OO "FoR/0Y}NFqT7 /W"(N7-8+E +AZ j ]A  ) 9 I ] E9/AZj]A )9I] 89J892/0/4/EX/>Y@%++A!'7GWgw]A '7qAFVqJ901#"&'53266654&&&467266654&&&#"3!5766546666632)8BH%G!9!@4 !FkK2I0!2"*4  KA )?W;9X:+9 1YF*7V@, E+K<5T: /C*4(/<=;00 *TNC16K/*C3!5Q"N-8+E +AZ j ]A  ) 9 I ] E9/AZj]A )9I] 89J892/@%+++J901#"&'53266654&&&467266654&&&#"3!5766546666632)8BH%G!9!@4 !FkK2I0!2"*4  KA )?W;9X:+9 1YF*!7V@, E+K<5T: /C*4(/<=;00 *TNC16K/*C3!5QL{-.///ܸи/. и / %A %%&%6%F%]AU%e%]EX/ >YEX/>YA]A(8HXhx ] AI Y qA!  ( 8 H X h x ]A   ( 8 q*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q-901%#"&&&5466632#"&'5&&#"3267{#MW_4lzBPbDtV0"+"2,ElL(+UUGBL%MnąC4L2- >nYUo@-,Fu-.///ܸи/. и / %A %%&%6%F%]AU%e%]EX/ >YEX/>YA]A(8HXhx ] AI Y qA!  ( 8 H X h x ]A   ( 8 q*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q-901%#"&&&5466632#"&'5&&#"3267u#MW_4lzBPbCuU1"+"2-DmK(+UTHBL%MnąC4L2- >nYUo@-,1Do(0 +A   & 6 F ]AU e ]EX / >Y%+ AIYqA!(8HXhx]A (8q AIYqA!(8HXhx]A (8q01#"&&&5466632#"&'5&#"3267D-pEFqO+5Yt@+L8 1 -F27S8.R,=&.QpBNvO).#% j%BZ63YB&ywFu"Fu"Fu"Fu"F3uUe >#++595/-A >>&>6>F>]AU>e>]FиF/[#F9-ga/EX(/( >YEX/>YEX/>YC+A!'7GWgw]A '7qAFVqa9(2A22]A22(282H2X2h2x222222 ](9AI9Y9qA!99(989H9X9h9x999999999]A 99(989qFa9Q[a901#"&'&'53266654&#"5&'&&&5466632#"&'5&&#"32676632#666632$?W45+/%6*LAVzBPbCuU1"+"2-DmK(+UTHB#MW0#% 5(Ut $ 0H2P  &&'nąC4L2- >nYUo@-,u% i#7d(> !Lp{:k2+ +AZ j ]A  ) 9 I ]) 9)/!и/ 9A 22&262F2]AU2e2]!<EX/ >Y  +&A&&]A&&(&8&H&X&h&x&&&&&& ]-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-q01%#5654&&&'&&&&5466632#"&'5&&#"3267{7M*8fZ'7T]2PbDtV0"+"2,ElL(+UUGBL6 Q0gv`?>3* Y`ąC4L2- >nYUo@-,F-u?λ7+&.+&и/&A 77&767F7]AU7e7]&AEX!/! >YEX/>YEX/>Y<A!<<'<7<G<W<g<w<<<<<<<<<]A <<'<7<qAF<V<q<9!+A++]A++(+8+H+X+h+x++++++ ]!2AI2Y2qA!22(282H2X2h2x222222222]A 22(282q?!901#"&&&546667265#"&&&5466632#"&'5&&#"3267u-N8 6=+_4lzBPbCuU1"+"2-DmK(+UTHBvx%."- 6B MnąC4L2- >nYUo@-,FXu}2@;+A ;;&;6;F;]AU;e;]//EX / >YEX/ >YEX./.>YA]A(8HXhx ].%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q(9 6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q?901'7&'&&54666327#"&'53267#"'&'&&#"H=BPbC: ZJV*"+"2*=@THB#MW_4lW&"-DmK( S+EnąC)%&2- 4 -,u%&N >nYUKPF+u/0/1/ܸи/0 и / 'EX/ >YEX/>YA]A(8HXhx ]!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q,A!,,',7,G,W,g,w,,,,,,,,,]A ,,',7,qAF,V,q/901#"&&&5466632#"&'5&&#"3267u"MW`4lzBPbCuU1"+"2-DlK)+UTIB$KoāąC5M2- >nY9Ul=.*FyCʸD/E/ܹD2и2/A &6F]AUe]'и'/?/EX/ >YEX7/7 >YEX-/->Y7A]A(8HXhx ]7AIYqA!(8HXhx]A (8q-$A!$$'$7$G$W$g$w$$$$$$$$$]A $$'$7$qAF$V$q'-?901'#"&'5&&#"3267#"&&&5466632666632y "+"2-DlK)+UTIB"MW`4lzBPb&J 1E[8%<)L# n /F43 - >nYUo@5,u' MnąC .M7$F=Mһ/+&+A //&/6/F/]AU/e/]49>ܸO /EX/ >YEX/>YEX/>Y9A+#A##]A##(#8#H#X#h#x###### ]*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q4 9IA!II'I7IGIWIgIwIIIIIIIII]A II'I7IqAFIVIq01%##"'#467&&&&5466632#"&'5&&#"6666324&#"326667_I X K}Z2PbCuU1!+"2-DmK('<*-D\>&B0o(%);* ( >08cJ*={99DY]ąC5M2- >oYYI+9A+и/#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q01##"'#467&&&&5466632#"&'5&&#"6666324&#"32666M#>S/ 9 0R:!4Xt@+L7 !  ,G1 ' ,<(+H&( ";-$J""P( 5Ma8NuP( . l &B[6$C:-">/('/!Fu,-/./ܸ- и /AZj]A )9I] "и"/EX(/( >YEX/>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq(AIYqA!(8HXhx]A (8q"(901#"&&&54666323266654&&&#"5666632uQbDsV0","1-)DmL(+UTGB"NV_5kzBąC4L2- >nYUo@-+t$MFu,-/./ܸ-#и#/ и /AZj]A )9I]#EX(/( >YEX/>Y (9A!'7GWgw]A '7qAFVq(AIYqA!(8HXhx]A (8q(A]A(8HXhx ]01#"&&&'53266654&&&#"#"&&&5466632uBzk5_VN"BGTU+(LmD)-1","0VsDbQoM$t+-@oUYn> -2L4C2Dp,ɻ+AZj]A )9I]EX(/( >Y+(AIYqA!(8HXhx]A (8q01#"&&&54666323266654&&&#"5666632D4Yt@,K8  ,G17S7.T+28>"FqO+=MvP(. l%BZ63ZB'F  .Rp2Dp,0+AZj]A )9I]EX(/( >Y+(AIYqA!(8HXhx]A (8q(AIYqA!(8HXhx]A (8q01#"&&&'53266654&&&#"#"&&&5466632D+OqF">82+T.7S71G,  8K,@tY45BqR.  E'BZ36ZB&l .(PuF-u> +,+%AZ,j,]A ,,),9,I,]4и4/5и5/EX:/: >YEX/>YEX/>YEX/>Y!A!!'!7!G!W!g!w!!!!!! ]A!!] !9'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q:1AI1Y1qA!11(181H1X1h1x111111111]A 11(181q4:901#"'&'37#"&54666323266654&&&#"5666632uQbD:2'=8 8N-","1-)DmL(+UTGB"NV_5kzBąC B6 -".%xv- >nYUo@-+t$MF-u>ƻ 5+%+5и/AZ%j%]A %%)%9%I%]5-EX:/: >YEX/>YEX/>Y A!  ' 7 G W g w ]A   ' 7 qAF V q  9:9:*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q:0A00]A00(080H0X0h0x000000 ]01#"&'&'37#"&53266654&&&#"#"&&&5466632uBzk5_+=8 8N-BGTU+(LmD)-1","0VsDbQoM B6 -".%xv+-@oUYn> -2L4CFu-.///.и/и//#ܹAZj]A )9I]EX/ >YEX(/(>Y(9A!'7GWgw]A '7qAFVq AI Y qA!  ( 8 H X h x ]A   ( 8 qA]A(8HXhx ]0173266654&&&#"#"&&&5466632#"&&&'FBHTU+(KmD-2"+"1UtDbPBzl4_WN",-@oUYn> -2L4CānM%FSS,(++AZj]A )9I]A &6F]AUe]"(9. /"/+ ܸ #и#/012#"&&&54673654&&&#"#&&&&54666FąC4L2- >nYUo@-+t$MQbDsV0","1-)DmL(+UTGB"NV_5kzBBb3#' +'$EX/ >YEX/>Y%&+AIYqA!(8HXhx]A (8q*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q01%#"&&&5466632#'&&'&&&&#"!!3267676773b)/(h8AHu"BFK+\ $0HwV3{ .#X ZbrK  }  .^_V Fh3#+EX/// >YEX/>Y+A!'7GWgw]A '7qAFVq/AIYqA!(8HXhx]A (8q01#"&'&'53326667!5!&&#"#5666632hB~9g)0)Z!/SuL({ 0$ \+LEB"uIbZ  1aad  }  KFh"BuBbMi+AZj]A )9I]6EXI/I >YEX/>Y1+,#+A!'7GWgw]A '7qAFVq19(и(/I9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q01#"&'&'53326667#"&&&#"#6632326767&&#"#5666632bA9g(/)X".SvL( &'#& X\O$" #! 0$ \+KFB"uHbZ  0aa   EU   }  KP5H& +A &&&&6&F&]AU&e&]EX/ >YEX/ >YEX/>Y!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q+A!++'+7+G+W+g+w+++++++++]A ++'+7+qAF+V+q01%#"&&&&&546$32#'&&'&&&&#"32666766773FpNsßyS*h2]`j>{ '6B&iKGz$;,/w/7b^i  NᓏS  P5H& +A &&&&6&F&]AU&e&]EX/ >YEX/ >YEX/>Y!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q+A!++'+7+G+W+g+w+++++++++]A ++'+7+qAF+V+q01%#"&&&&&546$32#'&&'&&&&#"32666766773FpNsßyS*h2]`j>{ '6B&iKGz$;,/w/7b^i  NᓏS  F/7# +A ##&#6#F#]AU#e#]EX/ >YEX/>YAIYqA!(8HXhx]A (8q(A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q01%#"&&&5466632#&&&&'&&#"32676773;\u?ؔMUւ)KOW4s (L-Rh;7i_#?)n%WfrK0815ifdl8 Pm"IPS"PS"P&"|P3m]m,?%++A ??&?6?F?]AU?e?]c%9i/EX0/0 >YEX*/* >YEX/>YEX/>YEX/>YEXT/T>YY+A!'7GWgw]A '7qAFVqi9*:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:qTDA!DD'D7DGDWDgDwDDDDDDDDD]A DD'D7DqAFDVDqci901#"&'&'53266654&#"5&'&&&&&546$32#'&&'&&&&#"32666766773##6632#666632$?W45+/%6*84ayS*h2]`j>{ '6B&iKGz$;,/wFpN 5(Pt $ 0H2P  &&b^i  NᓏS  `#7(> !P>FAG/H/ܹAZj]A )9I]9Gи/"и"/7A 77&767F7]AU7e7]EX(/( >YEX"/" >YEX / >Y "9"2AI2Y2qA!22(282H2X2h2x222222222]A 22(282q01%#5266654&&&'&&&&546$32#'&&'&&&&#"326667667733Sn>$*6eZ+K6/=!ɈGh2]`j>{ '6B&iKGz$;,/w/!Y8:Z?"|.'+>. zi  NᓏS  P^4Cx=+A ==&=6=F=]AU=e=] //EX!/! >YEX/ >YEX/>Y8AI8Y8qA!88(888H8X8h8x888888888]A 88(888q89% 9*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*qA 9B 901%#"&'''&'&&&546$327#'&'32666766773&&#"&FpNsP^YEXYEX0/0>Y<AIYqA!(8HXhx]A (8q0 A!  ' 7 G W g w ]A   ' 7 qAF V q01'#'&&'&&&&#"32666766773#"&&&&&546$32666632!#${ '6B&iKGz$;,/wFpNsßyS*h?q?-RyS0H2B#,  'DgN NᓏS  7b^iM_5#.1ILEX / >YEX/ >YEX/>Y  ++*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q/и1и 7и 9и?A!??'?7?G?W?g?w?????????]A ??'?7?qAF?V?q01%#"&&&'#73&5547#73666632#'&&'&&&&#"!!!!326667667731;`{BΗ_ex*OSY5h "-8!NlI6a GoZ3%(e/]w] . ^ԗS  ;uq^ . ]py@  Gk;>FPA?+A ??&?6?F?]AU?e?]?9/#/ //EX/ >YEX/ >YEX"/" >YEX)/) >YEX/>Y4A!44'474G4W4g4w444444444]A 44'474qAF4V4q49 9A 9B 9I 901%#"&'#7&&'#&&&&546667733273#'&&'&&'32667766773&&#";?fG6a-0b:CbU5Q6N|/^-$.^2.bYEX/>Y8C+/5+Cи/AIYqA!(8HXhx]A (8q5,и,/EиF01!57665&&&&5466632#'&&'&&#"4&''5!#'&&#!326573#'4&##!26773Ech5C{h =?D)PF2DuV1"A_<EsP DD=G9 N [UgM  y;n`PiG( 9m []B6O9P/Q/P и /QCܸи/C!и!/ &A &&&&6&F&]AU&e&]C,C1EX/ >YEX/ >YEX/>Y7?+!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q?-и-/2901%#"&&&&&546632#'&&'&&&&#"665#573666632#&&#"6666767736?fGgmJ&]-TW_8o #0<"^wD o?/6:7<'%M'2$*l/7b^i  N=3:51#2-[  9- <+1+A &6F]AUe]1иии1/EX/ >YEX&/& >Y901#5&&&&54666753#'&&'&&&&#32666766773,SxMGwV09[w@aÅEKwa(LPW3h !-7 3%(et_kY"}|p α  {  P5D+AZj]A )9I]EX(/( >YEX/// >YEX/>YA!'7GWgw]A '7qAFVq/AIYqA!(8HXhx]A (8q01#"&&&'33266654&&&#"#666632h1\aj?{! '4B&iLGy$<,/yFpNsßyS*i B LߓU  L7bP5D+AZj]A )9I]EX*/* >YEX1/1 >YEX/>YA!'7GWgw]A '7qAFVq1!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q01#"&&&'33266654&&&#"#666632*SysNpFy/,<$yGLi&B4' !{?ja\1 h^b7L  U㏓ߖL B iH/;% +AZ j ]A  ) 9 I ]%1EX / >YEX*/*>YA!'7GWgw]A '7qAFVq AIYqA!(8HXhx]A (8q0133266654&&&#"#5666632#"&&&'Hn)?#_i7;hR-L( s4WOK)֚UMً?u\; 8ldfi5180KrfWH/; #+AZ#j#]A ##)#9#I#] 1EX/ >YEX/>YA!'7GWgw]A '7qAFVq(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01666632#"&&&'533266654&&&#"#H;\u?ٔMUւ)KOW4s (L-Rh;7i_#?)nWfrK0815ifdl8 P5D+AZj]A )9I]EX*/* >YEX1/1 >YEX/>YA!'7GWgw]A '7qAFVq1!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q01#"&&&'33266654&&&#"#666632*SysNpFy/+<$yGLi&B5' !{?ja\1 h^b7L  U㏔ߖK A iP7#) +)&EX/ >YEX/>Y'(+!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q.A!..'.7.G.W.g.w.........]A ..'.7.qAF.V.q01%#"&&&&&546$32#'&&'&&&&#"!!3267676773:B9NuşwQ(e/[ai=s )8G+eS9Ps)B$/o'9dZi Ů D΋_דLP7#+EX3/3 >YEX/>Y+A!'7GWgw]A '7qAFVq3#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q01#"&'&'3326667!5!&&&&#"#666632(QwuN9B:n0#A*sP9Se+G8) s=ia[/e[d9CL׋_ΉD ; iP!"BPUa<+AZ<j<]A <<)<9<I<]<и/EXQ/Q >YEX/>Y7 +0%+A!'7GWgw]A '7qAFVq 79QAAIAYAqA!AA(A8AHAXAhAxAAAAAAAAA]A AA(A8Aq01#"&'&'3326667#"&&&#"#666632326767&&&&#"#666632(QwuN9B:n0#A*sQ @ .E?E.#+ r+@S1):-$&,7 Re+G8) s=ia[/e[d9CL΂")"0R># ÄC ; iFNFN56/7//ܹ+и6 и / A   & 6 F ]AU e ]+к /9EX./. >YEX/>YEX/>Y,%+A!'7GWgw]A '7qAFVq901&&&&#"3266675#"&&&5466632#5%3 )/3L|W/(LnG:60#KOS-g`-@Ą85+ RXs ;k]Th:  m1$YWhŘ\ wDOP71 2/3/+ܹ'и2и/ A   & 6 F ]AU e ]'к+9*/EX!/! >Y+!AIYqA!(8HXhx]A (8qи/901&&&&#"32675#"&&&54666325#573 1P92I.(F-e;C`?*TV$"d3 9##A[73T>"qB 05Ui4>v[7(0 /y"MwFNN"F N"FN"*FhN"EwFN"HwF3"J18F+NK> 7+F+*+FBA   & 6 F ]AU e ]иB,к-F9MEXE/E >YEX/>YEX+/+>YEX2/2>YC<+2A!'7GWgw]A '7qAFVq-2901&&&&#"326667#"&&&546767666655#5#"&&&5466632#5%3 )/3L|W/(LnG:60BDsZ0I2'!#KOS-g`-@Ą85+ RXs ;k]Th:  8wc@'1") 8W>m1$YWhŘ\ wDO ?+ ии7и<иAEX;/; >YEX2/2 >YEX/>YEX%/%>YA!'7GWgw]A '7qAFVqܸ2AIYqA!(8HXhx]A (8qк %9*и,и29ܸ=01!326667&&&&#"!!5#"&&&'#53666632#5%33 -KhA:60 )/3GtU5X#KOS-e`0FL Lw85+ RK|Y2   3]QfPm1$UVf[~J wDOFfF=͸>/?/ܹ2и>'и'/ A   & 6 F ]AU e ]2к'925и:EX9/9 >YEX,/, >YEX/>YEX"/">Y74+,AIYqA!(8HXhx]A (8q"A!'7GWgw]A '7qAFVq4;й"92и,3=01&&&&#"326667!5#"&&&54666325!5!5#5%33 )/3L|W/(LnG:60X#KOS-g`-@Ą85+ )Rs ;k]Th:  1Pm1$YWhŘ\ wfDOfFAܸB/C/ܸи6иB+и+/A &6F]AUe]6 к!+969и>EX=/= >YEX0/0 >YEX&/&>Y+;8+0 AI Y qA!  ( 8 H X h x ]A   ( 8 q&A!'7GWgw]A '7qAFVq8?й !&96и07A015!&&&&#"326667!5#"&&&54666325!5!5#5%33 )/3L|W/(LnG:60X#KOS-g`-@Ą85+ )Rggm ;k]Th:  1Pm1$YWhŘ\ wfDOfFCXY/Z/ܹYи/#и&и&/<иYEX/ >YEX / >YEX/>Y63+>+3ии/SA!SS'S7SGSWSgSwSSSSSSSSS]A SS'S7SqAFSVSqS93(-к.99IAIIYIqA!II(I8IHIXIhIxIIIIIIIII]A II(I8Iq01#"'!5#"&&&54666325&'&#"#6666325#5%3326667&&&&#"326667 (:N2 X#KOS-g`-@Ą85+ !$R ';N2 R!% )/3L|W/(LnG:60 -R=%ZPm1$YWhŘ\ $-R>$KDO$j ;k]Th:  F7DE/F/ܹ;иE0и0/ A   & 6 F ]AU e ];%к&09EX@/@ >YEX5/5 >YEX$/$>YEX+/+>Y5AIYqA!(8HXhx]A (8q+A!'7GWgw]A '7qAFVq&+901&&&&#"3267'!5#"&&&54666325466632 (03L{W0(LnG>o&)$%X#IOU-ga.Ań73+ +Y]0H0s ;k]Tf:+", *IrUHNm1$YWhŘ\ ^[sB#.F+7DE/F/9ܹ5иE*и*/ A   & 6 F ]AU e ]5к *99EX8/8 >YEX/// >YEX/>YEX%/%>Y/AIYqA!(8HXhx]A (8q%A!'7GWgw]A '7qAFVq %9/601&&&&#"326667#"&&&55#"&&&5466632#5%37 )/3L|W/(LnG:60+0H0]Y,#KOS-g`-@Ą85+ R&$s ;k]Th:  /"Ar[1$YWhŘ\ wDOUrI* +F+7UV/W/*ܹиVKиK/ A   & 6 F ]AU e ]@кAK*9EX/ >YEXP/P >YEX;/;>YEXF/F>YPAIYqA!(8HXhx]A (8qFA!'7GWgw]A '7qAFVqAF901&&&&#"326667466632'7#"&&&55#"&&&5466632 )/3L|W/(LnG:60+Y]0H0$%"0H0]Y,#KOS-g`-@Ą85+ s ;k]Th:  [sB#.", CucZrG' +"/"Ar[1$YWhŘ\ F/4IY ?+*&+J+&*99&5A ??&?6?F?]AU?e?]AJJ]A JJ)J9JIJYJiJyJJJJJJ ]*P /EX)/) >YEX / >YEX/>YEX/>YUA!UU'U7UGUWUgUwUUUUUUUUU]A UU'U7UqAFUVUqMܺUM9U9 'ܸM0+M09 :AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:q01%#"&''66667#"&&&5466632#5%3766632&&&&#"326667%4&#"32666/1Qj9Vu5-&R+[0ga.Ań83+ R013(<' (/2L|X0)LoG%90+(00X* -#6*D`=5;'SRO"::7YWhŘ\ wDOo  2?k ;k]Th:  /)"E8$.;FN<=/>/<ܹ1и=&и&/ A   & 6 F ]AU e ]1к&<9EX;/; >YEX+/+ >YEX/>YEX!/!>Y+AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq!9;401&&&&#"326667!5#"&&&54666324&#!"#! )/3L|W/(LnG:60X#KOS-g`-@Ą85+  qs ;k]Th:  7Pm1$YWhŘ\   ?F*?R5+I+@+иI к!9+A 55&565F5]AU5e5]AZ@j@]A @@)@9@I@]EX/ >YEX/ >YEX&/& >YEX / >YEX/>Y 9ܸ&CAICYCqA!CC(C8CHCXChCxCCCCCCCCC]A CC(C8Cq!&C9 IKиK/MиN01#!5#"&&&5466632#5%3666632%&&&&#"3266674&#"3332666Dߚ#KOS-g`-@Ą85+ R:KV-eh4 )/3L|W/(LnG:60./-![b4tŒRm1$YWhŘ\ wDOL ;k]Th:  : *`F"]F"#]F1=e>/?/ܹ>!и!/ A   & 6 F ]AU e ]к!9+и0EX/// >YEX+/+ >YEX1/1 >YEX/>YEX/>Y-&++AIYqA!(8HXhx]A (8q/9/9/9401&&&&#"32675#"&&&5466632#5%3!!2666773 (/2L|X0)LoG>k(^#JNS-ga.Ań83+ RI ns ;k]Th:-m1$YWhŘ\ wDOR FH #ZԻ =+!+$+A   & 6 F ]AU e ]AZj]A )9I]=$92к3=$9Gи!LкP=$9$\-/EXK/K >YEXG/G >YEXM/M >YEX8/8>YEX)/)>YEX1/1>Y+IB+GAIYqA!(8HXhx]A (8q8V"V9#-K939PиQ01&&&&#"3267%4&#"32666###&67!5#"&&&5466632#5%3!3666632 (/2L|X0)LoG>k()#:/$ J-D.^-J`2t X #JNS-ga.Ań83+ RI͞6Kb?6(s ;k]Th:-N #=R..<9bH)H4Hк?I9SиXк\I9bEXW/W >YEXN/N >YEXS/S >YEXY/Y >YEX/>YEX1/1>YEX=/=>YEX/>YEXD/D>Y\6+NAIYqA!(8HXhx]A (8qDA!'7GWgw]A '7qAFVqY\ܸD%,A!,,',7,G,W,g,w,,,,,,,,,]A ,,',7,qAF,V,q?D9NU01&&&&#"3267#"&&&54666323266654&&&#"#5#"&&&5466632#5%3!2 (/2L|X0)LoG>k(Lohj7. 'B(V2HnK&$?V1!HFB8* D#JNS-ga.Ań83+ R}r^sAs ;k]Th:-q ]P-DQ%+# Jr>LrK&!6DFBm1$YWhŘ\ wDOD?lF64I? ++- +5A ??&?6?F?]AU?e?]-KEX/ >YEX/ >YEX/>YEX0/0>Y&$+ܸ0A!'7GWgw]A '7qAFVq%ܸ(и$)и:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:q01%#"&&&5466632#5%3326554&''5!#"&&&&&&&#"326667"#RWZ-g`-@Ą85+ RJONE``UmF)' )/3L|W/(LnG:60w4(YWhŘ\ wDO:clla PP $6 ;k]Th:  FM :+0+AZj]A )9I]A   & 6 F ]AU e ]D: 9D/'?:090OEXI/I >YEX5/5>YA!'7GWgw]A '7qAFVqIA]A(8HXhx ]I"AI"Y"qA!""("8"H"X"h"x"""""""""]A ""("8"q?5I9014&&&'32666#"&&&''&&#"#"&&&546667&&&&5466632!7K*4kX8'CZ3@bB!.+(W1<3!8\v{v\8QRZOKzQ;sZ87[xBgg4>k_S%HdTVX,7c+# '#4#"CFMZh}Yxy=0jx_rT-RQS.CiI&-ES2M :+0+AZj]A )9I]A   & 6 F ]AU e ]D: 9D/'?:090O5+I"+I014&&&'32666#"&&&''&&#"#"&&&546667&&&&5466632$1"E:$,:")@+^ 9 '!$KZ5HmH%?eH9YD3202(?,)2F AB/C/ܹAZj]A )9I]B!и!/ A   & 6 F ]AU e ]+!91и1/EX7/7 >YEX&/& >YEX/>Y&AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq+&9014&'&'&&#"326667#"&&&54666323&&&&''7''577D*&7QxN&BiKKjBGimEKj/)32'-H/ALN@)|?  BrYQyINz֘RNrrK JD2QR:KRLi2*?_@/A/@и/Aܺ996A 66&666F6]AU6e6]!и!/#9+AZ+j+]A ++)+9+I+])и)/'/)/EX/ >Y; +'91AI1Y1qA!11(181H1X1h1x111111111]A 11(181q19#'901#"&&&5466632&&&&''7''5774&'&&#"32666 *13*.SsEGtR-1WuE !!/p`+95M3+D01E+ .?NYa3O[1/TsEDqQ--(]1U1"-ZP2Kl&'E]51]H,/L_BB^ %&/'/ ܹAZj]A )9I]&и/EX / >YEX/>Y и/и/и/и/014&&&##766667#!576654&''5!2ZKyvK"Hq́llr?fAޢZ^4XDXQ0pI %y&/'/ ܹAZj]A )9I]&и/+!+и/и/014&&&##766667#!576654&''5!21ZOelL~X1/IgTFFWiJ`U&='Ta6g\M95  40e9N #$/%/ ܹAZj]A )9I]$и/EX/ >YEX/>Yи/и/и/и/014&&&##326667#!576654&''5!2:l`tz\l;@ܜ/] ]^o`+-boaRP  P9xBBS"cBB&"@B B^"cBB^"*[BhB^"EBB^"HB^-Ѹ.///.и// ܸи AZj]A )9I]$'EX/ >YEX/>Y+"и#и$и&и(и(/)0134&''5!2#!57665#%4&&&##!!76666lr"Hq́l=KyDvKXQZ^4X?hAB^-Ѹ.///.и// ܸи AZj]A )9I]$'EX/ >YEX/>Y+"и#и$и&и(и(/)0134&''5!2#!57665#%4&&&##!!76666lr"Hq́l=KyDvKXQZ^4X?hAB^-Ѹ.///.и// ܸи AZj]A )9I]$'EX/ >YEX/>Y+"и#и$и&и(и(/)0134&''5!2#!57665#%4&&&##!!76666lr"Hq́l=KyDvKXQZ^4X?hAN+ٸ,/-/,и/-ܹAZj]A )9I] и EX&/& >YEX/>Y+& и/и/ии $и$/%и%/013266654&&&##3%#!57665#534&''5!2mz\l;:l`t@ܜ/] ]^-bmo`+^&aRP U^> P9x^;#YEX4/4>Y+4' ии и/и/'A]A(8HXhx ]6и6/7и7/01%7666654&&&##!!!534&##"#"&&&5463!2#!57665;vˆKKyIwN63VA%( r"Iq΀jbAޞ?hh %/rkQZ^4X ^ 34/5/ ܹAZj]A )9I]4и/EX./. >YEX/>Y.и/и/и/и/.&A&&]A&&(&8&H&X&h&x&&&&&& ]014&&&##766667#!576654&##"#"&&&5463!2KyvˆK"Iq΀jN63VA%( r?fAޢZ^4X H %/rkQP^;\YEX/>Y +и/и/A!'7GWgw]A '7qAFVqи/и/ #и#/ %и%/0)2и2/3и:и:/;и;/01&'&&#"326767!"&&&54666324&#!"#!..b^.0ej%wR_u3ql}!FnNNj@b"Uqb^- ?X B^"]B"#]%B ^"=B S"#=Ps^455/6/5и/A &6F]AUe]6*ܹ EX///>Y+/A!'7GWgw]A '7qAFVqи/ и / и / и /и/и/ -и-/.и./01326767&'&&#"4666324&''5!!"&&&5Nl%.Rr4l}؈=KvQ*mp9 XX X1eP^N,+2 +I<+A &6F]AUe] %иIPEX/>YEXL/L>Y +A!'7GWgw]A '7qAFVq и / и / #и#/ %и%/701326667&'&&#"#"&&&54666324&''5!32666554&''5!#"&5!GoN-,(.?SrCRr4l6M/)E2uj^KyU- l+*4ilmp9 XX Me>>eMcZZm2 /EX/>Y01!m9X\=6sBBB^4?ջ  +5+&+AZ&j&]A &&)&9&I&] ,AZ5j5]A 55)595I5] :EX/ >YEX/>Y;+   и!и+и,01#!576654&''5!2##3266654&&&##63324&&&'6666B"Hq́llrAmNvKKy Va5:V96U; Z^4XDXQgj6A?>mn?oW8r3WxON^ 3Ӹ4/!и!/A]A?]A@]A`]!A?]A]A@]A`],5EX&/& >YEX/>Y&  иии 01#"33!266654&&&##"&&&&&546$3!2#yŋKKvuvKKy`͞qH"rr"Hq΀?ᡞAA?fb4^YQQZ^4ON^5Q\g]K+R<+46+.]++AZj]A )9I]4%и6DA KK&K6KFK]AUKeK]A RR&R6RFR]AUReR]6WAZ]j]]A ]])]9]I]]4bиiEX / >YEX/>Yc4+ $47и$EиFиPиQиcW01!"&&&&&546$3!2#'266654&&&##6332##'#"&&&546663325#"334&&&'6666͞qH"rr"Hq΀+vKKy Va5AmNNmA5aV yŋKKv ;U69W9:V96U; 4^YQQZ^4bA?>mXgj66jgXm>?ᡞATZy+gM+1+A&6FVfv ]A]AZMjM]A MM)M9MIM]MAZj]A )9I]"Mg99M9_Mg9by19qy19y19y191^/>/EX4/4>YEXl/l>YEXt/t>YX+,+и/tA'7GWgw ]A]">^9t~A~~'~7~G~W~g~w~~~~~~ ]A~~]9t~9HиX[и[/_>^9bX9qt~9t~9>^901"3267&&3266654&&&#"66667666632#"&&&'3266654&&&'%6632667#"&&&'#"&&&5466632667667&&#"89 1?2"/.##./"&  &;R8%F8"sd2-! B)A '*.SpC/H3-FGX%<[%Eq0>kN,4ny%<3)(]D3+2G-$<.# G+ 6lcX"L='UD&5j)  ))  )=yy|A%8'*?)U_ +JP^?@s? /%Hf-[QB=GN@^/P4@ZtFwŠL +<4'9%%?-LNF~7"/F"._//0/ܸи/ и /и/ -и-/.EX/ >YEX/>Y.+A!'7GWgw]A '7qAFVq"9(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01%#"&&&5466632!3266674&&&#"!+]cf4]OHi_`0h!Nc,VSL#1K33XC)f."=}xŋM@r[NzL$-3XB&)KjB2%d".ݸ//0/ܸи/ и /и/ -и-/.EX/>Y(+.+A!'7GWgw]A '7qAFVq01#"&&&5466632!3266674&&&#"!d]?P2V@861 0"!9+%q &KsMHuS-&B]7 /]K. 4&,?(7ho &Ѹ'/(/'и/и/(ܹ  EX/ >Y# + +AIYqA!(8HXhx]A (8q014&&&#"!#"&&&5466632!32671!B[%7D=pV3/SsE=]>P3UA9l-4'\P ,%KrMHvS-%C]7!0]I..ywF""HDFm"H#rF{"H7Fm"H#7{"H7F"H#F"HF"H#XDF"HaFh"H#EDF"HF"HF"F"HF"HF2"H-FO"H#-rrFO"H#-rF"BF"HF "HXDF "HFq"HDFh"HEDF3JV#1#++-0и0/-;иKиK/1UиU/EX(/( >YEX/>YEX/>YEX/>YEXA/A>YF+V0+A!'7GWgw]A '7qAFVq(9A6A!66'676G6W6g6w666666666]A 66'676qAF6V6q;(9(PAIPYPqA!PP(P8PHPXPhPxPPPPPPPPP]A PP(P8Pq01#"&'&'53266654&#"5&'&&&5466632!326667##66324&&&#"!$?W45+/%6*1/VOHi_`0h!Nc,VSL#+]cf4 5( 1K33XC)0H2P  && ~xËK?o[N|M$-}."h#73W@%'JiBF3JVl91#++-0и0/-;иKиK/1UиU/EX(/( >YEX/>YEX/>YEX/>YEXA/A>YF+g\+V0+A!'7GWgw]A '7qAFVq(9A6A!66'676G6W6g6w666666666]A 66'676qAF6V6q;(9(PAIPYPqA!PP(P8PHPXPhPxPPPPPPPPP]A PP(P8Pq\lܸa01#"&'&'53266654&#"5&'&&&5466632!326667##66324&&&#"!#"&&&53326667$?W45+/%6*1/VOHi_`0h!Nc,VSL#+]cf4 5( 1K33XC)o&MrLMrL&P ,>H&&H<, 0H2P  && ~xËK?o[N|M$-}."h#73W@%'JiB%6mW66Wm6,?((?,Fy=I3%++/I+/AZj]A )9I]9/2и2/3HиH//KEX*/* >YEX/>YEX / >Y +I2+8A!88'878G8W8g8w888888888]A 88'878qAF8V8q=*9*CAICYCqA!CC(C8CHCXChCxCCCCCCCCC]A CC(C8Cq01%326767#"&546677#"&&&5466632!3266674&&&#"!+/R-/?8  1! =`m&6]OHi_`0h!Nc,VSL#1K33XC)f (47A32  R KJ+QD?~xËK?o[N|M$-3W@%'JiBF-7C+/+C+и/'иBиB/EEX/ >YEX/>YC+'9=AI=Y=qA!==(=8=H=X=h=x=========]A ==(=8=q01#"&55&'&&&5466632!326667374&&&#"! 8N-=9VOHi_`0h!Nc,VSL#+]c3=81K33XC).%xv ~xËK?o[N|M$-}." B6 -3W@%'JiBF-4@!+@+ @9 и /+и!?и?/BEX/ >YEX/>YEX/>Y@ +&A!&&'&7&G&W&g&w&&&&&&&&&]A &&'&7&qAF&V&q &9+9:AI:Y:qA!::(:8:H:X:h:x:::::::::]A ::(:8:q01#"&5#"&&&5466632!326667374&&&#"! 8N-)+1f4]OHi_`0h!Nc,VSL#=81K33XC).%xv?~xËK?o[N|M$--B6 -3W@%'JiBFX}0;AG]8+8@и@///EX / >YEX,/,>YG+,!A!!!'!7!G!W!g!w!!!!!!!!!]A !!'!7!qAF!V!q&9 3AI3Y3qA!33(383H3X3h3x333333333]A 33(383qG8к>9?кE901'7&'&&54666327!326667#"'&'&#"37&#%4''3H|AOHi_HdJf00'Bc,VSL#+]cf4]V'#F%33XC)  Wf+?xËK )7[&$-}."S'JiB =4 N3+ #6BC/D/(ܸиC и / и /(+и+/ ,AиA/(BEX#/# >YEX/>Y +  +и1A!11'171G1W1g1w111111111]A 11'171qAF1V1q6#9#<AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<qA01%#"&&&5467"&&&54666323666632!3266674&&&#"!+]cf4]O:bG( (%AV48TxX_`0h!Nc,VSL#1K33XC)f."?~  5R9/% Yd6?o[N|M$-3W@%'JiB#yT`36+L+2`+AZj]A )9I]L9и/25и5/2@и6_и_/2bEX-/- >YO+!+(5и-ZAIZYZqA!ZZ(Z8ZHZXZhZxZZZZZZZZZ]A ZZ(Z8Zq(_01#"&5466767&'&&&5467"&&&54666323666632!3266673267674&&&#"!! =`m+FAVO:bG( (%AV48TxX_`0h!Nc,VSL#+]c3 !?8  1K33XC) KJ+L? ~  5R9/% Yd6?o[N|M$-}." 0: 32  3W@%'JiBF+F+F".c//0/ܸ/ и / и / и #.и./EX/ >YEX/>Y #+AIYqA!(8HXhx]A (8q9)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q01#"&&&5547!4&&&#"5666632326667Hh_`0!Nc,VRM"+]bf5]Ol2J33XD)xËK?p[N{M$-}."?~-3W@%'JiB2%d".//0/ܸ/ и / и / и #.и./EX/>Y+ #+)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q01#"&&&5547!4&&&#"5666632326667d/SsD=^> 2VA852=@B"=pU3S 0!"9,HuS-&C\7 /]J.K &Ks4&,?(7ho (Ѹ)/*/)и/* ܹ и / EX$/$ >Y++$AIYqA!(8HXhx]A (8q013266677#"&&&55!4&&&#"566321!!:,/SsD>\?2V@9m-8D=oV35'-?(VHuS-&C]6#/]J.0L *%LrF"+BF-:F;"+&++и/"%и%/"0и&FиF/HEX6/6 >YEX/>YEX/>Y+%и6+AI+Y+qA!++(+8+H+X+h+x+++++++++]A ++(+8+q069;иAA!AA'A7AGAWAgAwAAAAAAAAA]A AA'A7AqAFAVAq01337#"&5##"&&&5547!4&&&#"5666632326667=8 8N-m $h_`0!Nc,VRM"+]bf5]Ol2J33XD)KB6 -".%xvM&$aK?p[N{M$-}."?~-3W@%'JiBF J4++@+AZj]A )9I]4)и)/@LEX8/8 >YEX"/">YE+"89" A!  ' 7 G W g w ]A   ' 7 qAF V q"898/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q4"89J"89014&'32666#"&&&55#"&&&&&5&&&&#"566327326667 -:Q3Me<! :0,sHhNsT6 f4J_<,VRM"ViYEX/>Y#+ 9A!'7GWgw]A '7qAFVq(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01#"&'532666665!&55466632'&&&&#"S]iO+ada,5Q<' \FwX_}I -@P+'M@2 xEMY}/D,%AXdk4?K@kN,(LmD2xp"-+EX/ >Y+#+(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q01#"&'532666665!&55466632'&&&&#"x6YsYEX/>Y45+ 549!A!!]A!!(!8!H!X!h!x!!!!!! ],AI,Y,qA!,,(,8,H,X,h,x,,,,,,,,,]A ,,(,8,q58и8/5;иCA!CC'C7CGCWCgCwCCCCCCCCC]A CC'C7CqAFCVCqH901%#"&546667&&&&5466632#"&'&'5&&&&#"3"&##""326667R'Z]\*)DX.0H09aGQ`6'(  - &D4wm  (K;#oq2a\S$#8'5P7 7BG :cH(5M1,!  .F-mhX #@4^m/=#1-oE=+A ==&=6=F=]AU=e=]=.EX/ >Y@+5ܺ 59)AI)Y)qA!))()8)H)X)h)x)))))))))]A ))()8)q5801# 546667&&&&5466632#"&'&'5&&&&#"3"&##""326667-3}7-: . %>S-5Y?#    ,"NE  1'IK ?:6\*00" !(+";+. V (B?5'7B%F-Z"I+Q/+Q /Q9Q9A II&I6IFI]AUIeI]IQ%и%/:Q\EX / >YEX/>YEX/>Y=>+LA!LL'L7LGLWLgLwLLLLLLLLL]A LL'L7LqAFLVLq L9>=9 *A**]A**(*8*H*X*h*x****** ] 5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q>AиA/>DкQ 901#"&5#"&546667&&&&5466632#"&'&'5&&&&#"3"&##""32666737 8N-$&.\*)DX.0H09aGQ`6'(  - &D4wm  (K;#oq2a\S$=8.%xv5P7 7BG :cH(5M1,!  .F-mhX #@4^m/=#B6 -1=H*5+? +?5и/AZ j ]A  ) 9 I ]D9?JEX:/: >YEX/>Y+ :9A!'7GWgw]A '7qAFVqии/:%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%q:0A00]A00(080H0X0h0x000000 ]D901#"&&&'532654&&&#&##"#52654&&&#"#"&&&5466632=*]]Z'$S\b2pq$:K(  my5E& -  ('6`QFa9/H0.WC)'8#w#=/m^4@# Xhm-F.  !,1M5(Hc: GB7 7P% pH? +?AZ j ]A  ) 9 I ]?JEX:/: >Y+ 9:%AI%Y%qA!%%(%8%H%X%h%x%%%%%%%%%]A %%(%8%qD901#"&&&'532654&&&#&##"#52654&&&#"#"&&&5466632 =<;6<@ II&0  GN"-   #>W5-T?%/9+Y\ !H%A8 &5>B* W /+;#+(! !01-=Z +Q2+Q#AZ2j2]A 22)292I2]=GиG/V9Q\EXL/L >YEX/>YEX/>Y/.+ A!  ' 7 G W g w ]A   ' 7 qAF V q 9L9.(и.*и*/L7AI7Y7qA!77(787H7X7h7x777777777]A 77(787qLBABB]ABB(B8BHBXBhBxBBBBBB ]V./901#"&'&'37#"&532654&&&#&##"#52654&&&#"#"&&&5466632=*]/%$=8 8N-$S\b2pq$:K(  my5E& -  ('6`QFa9/H0.WC)B6 -".%xv#=/m^4@# Xhm-F.  !,1M5(Hc: GB7 7PF`>I++V +AZj]A )9I]I!и!/*4иVbEXN/N >YEX/>Y[+10+NDADD]ADD(D8DHDXDhDxDDDDDD ] ND9019"N9'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'qN9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q`ND901#"&&&55#"&&&'532654&&&##52654&&&#"#"&&&54666327326667 ;0-l0I0.XD**]]Y'$S\a2qn#;K(?kx3E% - ('5`Q6cTB;   E:&-8L GB7 7Q5'8#w#=/m^5@# Xgn-F.   !,1M5*<%f ,"+8A۸B/C/ܸи/9AZ9j9]A 99)999I9] и /Bи/#A#9EX/ >YEX/>Y32+ 239A'7GWgw ]A](A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q>AI>Y>qA!>>(>8>H>X>h>x>>>>>>>>>]A >>(>8>qA9016632#"&&&54666323266654&&�&&&#"hIE[b45K.as?iFQl?')8 *1&K;%%B[6@ =/ 4B"UG36#EeB.TB,"xW;eL+5M1,!2I-6Q4X.D-'@-?< pA9+и/AZ9j9]A 99)999I9]9-и-/CEX/ >Y4+ 49(>AI>Y>qA!>>(>8>H>X>h>x>>>>>>>>>]A >>(>8>q016632#"&&&54666323266654&&�&&&#"I/g-;]@""1?K)EW-5]F)  $ 0'+;#)(!+8_.1 )='2(H5#=- .  W +!0 5)'&$F9&++AZj]A )9I]A &6F]AUe]0 +&9;EX5/5 >YEX#/#>Y +5AIYqA!(8HXhx]A (8q#A!'7GWgw]A '7qAFVq+ 9014&&&#"3#"326667#"&546667&&&&54666323<_t8 @3 xl@(K;#%>Q,8t_<Avf)CX/0H0YEX!/!>Y++AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq59014&&&##52654&&&#"326667#"&&&5466632$:K(@kx3@ 8t_<<_t8,Q>%fvAAvfLf;0I1/XD)5@# Xgn-F./ello95K,[hiL(Hc: GB7 7Q2lp9A&+0 +0AZ j ]A  ) 9 I ]A&6FVfv ]A]5&90;EX+/+ >Y!++AIYqA!(8HXhx]A (8q!5!9014&&&##52654&&&#"326667#"&&&5466632&1)EN!*%K>''>K%5(BmL++LmB2XB'0 9, '5>B*=^@AcB" -Y\7Zu??mP-+;#+(! !1FFLg7+A 77&767F7]AU7e7]7 $EX/ >YEXJ/J>Y'2+2AIYqA!(8HXhx]A (8q'*и*/J:A!::':7:G:W:g:w:::::::::]A ::':7:qAF:V:q0146667&&&&5466632#'&&'&&&&#"332727&'&&#"32666766773#"&F'Gd=HY1:bH(PU]4b(4)I7 wj  %OA*~z8/# b2TMJ(8X>#8BG"9[A#w  +D1`Zj (H:dn  s FFL{C)+CAZ)j)]A ))))9)I)]CNEX>/> >YEX/>Y&+A!'7GWgw]A '7qAFVq и /&#и#/>.AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.qH01#"&&&'5332654&&&#"53332654&&&#"#5666632F(JMT2b #/8z~*AO%! jw 7I)4(b4]UP(Hb:1YH=dG' s  nd:H( jZ`1D+  w#A[9"GB8#>XFF"@BpFyFg_+AZj]A )9I]_M _3и3/R_9 WZ_9EXH/H >YEX / >YEXZ/Z>Yb+0%+ A!'7GWgw]A '7qAFVq%*и*/0-и-/H8AI8Y8qA!88(888H8X8h8x888888888]A 88(888q%R0132654&&&'"&&&'5332654&&&#"53332654&&&#"#5666632#"&'&'  8?&GKQ0b #/8z~*AO%! jw 7I)4(b4]UP(Hb:1YH=dG'( m`= !  23/)$  s  nd:H( jZ`1D+  w#A[9"GB8#>X8.8A$JK VC9++9 AZj]A )9I]E/EX4/4 >YEX / >Y+и/и/4$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q>01%#4&&&#4&&&#"53332654&&&#"#5666632Fhi5WB*AO%! jw 7I)4(b4]UP(Hb:1YH=dG'u qXzK":H( jZ`1D+  w#A[9"GB8#>X8VSJ0++A JJ&J6JFJ]AUJeJ]JUEXE/E >YEX/>Y "+A!'7GWgw]A '7qAFVq"'и'/ *и*/ ,и,/E5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q"O01326554&''5!#"&&&54&&&#"53332654&&&#"#5666632CCOM<``$O{WeK*AO%! jw 7I)4(b4]UP(Hb:1YH=cF&clla PP NyS+)NoF:H( jZ`1D+  w#A[9"GB8$=RBh^)i"+"EX / >YEX/>Y +  ии"и#013576654&''5!#'&&#!!26573#'4&#!!26773Bjj{B5hh  %nXDXϨ 7  0I)\"+"EX'/' >Y"+ + +"и/ и /01576654&''5!#'&&#!326573#'4&##!267730EEP DD QG5  4e TUz5*i#+#EX / >YEX/>Y!+  ии#и$013576654&''5!#'&#!3266673#&&&&##!267735\\1t dd  mP  P** ** Bhm"E/Bhm"(Bh"(# Bh "(uBh"(#/ Bh "(uBh"(# Bhp"(Bh ,"(#X Bh["(BhhS"(#EBh("($Bh("($Bh9"E Q4BhS"(Bh"(Bh"(-Bh"(#-Bh"(#-/Bh!"EBBh&"(Bh"(XB h^"(Bqh^"(Bhh^"(EB3h^P+@#++@1EX)/) >YEX/>YEX/>YEX/>YEXG/G>YL+3>+A!'7GWgw]A '7qAFVq)'0и1и@иA01#"&'&'53266654&#"5!576654&''5!#'&&#!!26573#'4&#!!26773!6632A$?W45+/%6*jj{D3hh  %n 5(0H2P  &&XDXϨ 7  #7B3h(PfM@#++@1иfиf/EX)/) >YEX/>YEX/>YEX/>YEXG/G>YL+aV+3>+A!'7GWgw]A '7qAFVq)'0и1и@иAиVfܸ[01#"&'&'53266654&#"5!576654&''5!#'&&#!!26573#'4&#!!26773!6632#"&&&53326667A$?W45+/%6*jj{D3hh  %n 5(E&MrLMrL&P ,>H&&H<, 0H2P  &&XDXϨ 7  #7 6mW66Wm6,?((?,Byh^G̻1+?+AZj]A )9I]1"и?'и'/?,и,/EX/ >YEX/>YEX8/8>YB+$/+!и"и1и201#"&5466767!576654&''5!#'&&#!!26573#'4&#!!26773#326767! =`m+3jj{D3hh  %n!?8   KJ+L?XDXϨ 7  0: 32  B-h^=,+5+,EX/ >YEX/>YEX / >YEX3/3>Y*+  ии ,и-01#"&55!576654&''5!#'&&#!!26573#'4&#!!26773!37 8N- jj{D3hh  %n =8.%xvXDXϨ 7  B6 - ^h,03û!+!-и!1 /*/EX / >YEX / >YEX/>YEX(/(>Y+ * 9!и"и-и/и0к1* 920135774&''5!73#'326573#'4&##!26773!'73!7#BTCjL^a<{6hh s %nv`^>Lz/W>>XqX9eel 7  :h3i4BC/D/C и /и/D$ܸ'и'/$)и)/ *$54$59*BиB/EX!/! >YEX/>Y +  )и/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q4!95и!;AI;Y;qA!;;(;8;H;X;h;x;;;;;;;;;]A ;;(;8;q01%#"&&5"&&&54666323366663 !32666754&&&#"5}FeVuH  (%AV36&pvFHn8efpB.XT8aQ?-)B.[:V9/% זQ N,I6?Ul=*F]gk0Sa5+K+/T+AZj]A )9I]K9'и'//2и2//4и4/?T/95aиa//cEX,/, >YEX/>YEX/>YEXG/G>YN++'4и:A!::':7:G:W:g:w:::::::::]A ::':7:qAF:V:q?G,9'Tи,ZAIZYZqA!ZZ(Z8ZHZXZhZxZZZZZZZZZ]A ZZ(Z8Zq01#"&5466767#"&&5"&&&54666323366663 !32666732676754&&&#",,)$O{&8 eVuH  (%AV36&pvFHn8efpB5}D#$*OI&.XT8aQ?-Nda7bQ [:V9/% זQ N,I6)B ?L*A@ ?Ul=*F]gk0Bh^)q+!и+EX/ >YEX / >Y!+  ии"и#01!33!!"#33!!"#hjjn%  hh3D{^XXV 3 ɍ 10I)d+!и+EX / >Y +"+!+"и/ и /01!533!#"#333!"#5EENGQ DD PI4 q 5zRUT2 ePkP 2m3/4/3и/4ܹ и /и/и/(9EX,/, >YEX/>Y+A!'7GWgw]A '7qAFVq,#AI#Y#qA!##(#8#H#X#h#x#########]A ##(#8#q(,901326666677#"&&&546767!4&&&#"56632=1]V8^L:)XۃLEuV8x{{;aN`8/?WpA,Jakm0lW E4S=ZT&NvP!"kBcP3TݻD +(+ 9A DD&D6DFD]AUDeD]D3VEX/ >YEX/>Y6?+?#A##]A##(#8#H#X#h#x###### ].AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q69и9/?<и!/ $EeBy;fNAtW3  !(PP9+A 99&969F9]AU9e9]9 $EX/ >YEX/ >YEXN/N>Y)4+4AIYqA!(8HXhx]A (8q),и,/).и./N>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>q0146667&&&&5466632#'&''&&&&#"332727&'&&#"32666766773# $P@kLYQ%H{Z2ektA{  &3@'3fS42VtC  (.o`A4]L&F:+ {>j`]2MyV1N[c0NY0( Ȼ   BdECeE#y;gQFvW1PPG-+GAZ-j-]A --)-9-I-]GREX;/; >YEXB/B >YEX/>Y(+A!'7GWgw]A '7qAFVq(%и%/B2AI2Y2qA!22(282H2X2h2x222222222]A 22(282qL01!"&&&'33266654&&&#"5333266654&&&#"#6666322]`j>{ +:F&L]4A`o.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@A1WvFQg;y#EeCEdB   8 (0YN0c[N1VyP!"oBPyj߻b+P6+AZj]A )9I]P!AZ6j6]A 66)696I6]Ub9Z]b9PlEXD/D >YEXK/K >YEX / >YEX]/]>Ye+1&+ A!'7GWgw]A '7qAFVq1.и./K;AI;Y;qA!;;(;8;H;X;h;x;;;;;;;;;]A ;;(;8;q&U0132654&'#"&&&'33266654&&&#"5333266654&&&#"#666632#"&'&'q  8?, 2]`j>{ +:F&L]4A`o.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@&m`= !  230NA1WvFQg;y#EeCEdB   8 (0YN0c[N1VyM.6?"JK d\E'/+AB+/AZj]A )9I]9AGA/EX#/# >YEX*/* >YEXE/E>Y+ и /*AIYqA!(8HXhx]A (8q4E@014&&&#"5333266654&&&#"#666632#4&#FA`o.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@/D1iQg;y#EeCEdB   8 (0YN0c[N1VyMHcA$dWt/+PC+A //&/6/F/]AU/e/]/9PYEX#/# >YEX*/* >YEXS/S>Y4+*AIYqA!(8HXhx]A (8qS>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>q014&&&#"5333266654&&&#"#6666323266654&''5!#"&&&C@_n.) CtV24Sf3'@3&  {Atke2Z{H%QYLk@1A#)B.ujOX0lSoCy#EeCEdB   8 (0YN0c[N/XUSnA@iMZZ.b;3MEX/// >YEX/>Y+ии/"01&&&&&&'3#!57665#5746667666632!)/(+#yeO[c2+B-j)   ,JiHi!PPH%3QGC%:U8",- +G+и/#)/++и 01&&&&'3#!57665#574676632 &,$  NB VV'{B97X,?+\@L // +<^-EB+;"I|;-E3+,+и37иGEXA/A >YEX/>YEX-/->Y+-/и//0и401&&&&&&'3##"&&&5466672655!57665#5746667666632!)/(+#y-N8 6=veO[c2+B-j)   ,JiHi!vx%."- 6BPH%3QGC%:U8",WEX3/3 >YEX / >YR+#+JM+#ии/  ии/к 39M&01#"'!57665&'&#"#666632#5746667666632&&&&&&'3#326667 (:N2 ye!$R ';N2 O[c2+B-!)/(+#!%[-R=%PPN$-R>$ H%3QGC%:U8",)   ,JiHi$;z;AU+<+и7и7/?Bи<WEX:/: >YEX!/! >YEX/>YEX / >Y9+ и / иии/и?и?/@и!GAGG]AGG(G8GHGXGhGxGGGGGG ]Q01!57665!!57665#5746667666632&&&&&&'!73#"&&&5466632eyeO[c2+B-!)/(*!Tgg#.-""-.#P!PPH%3QGC%:U8",)   ,JiH'P-/""/."".;|;AB/C/<ܹB(и(/и/(,EX6/6 >YEX:/: >YEX/>YEX"/">Y+ и /!и$и%и%/)и%?и?/@01!57265#&&&&&&'3#!57665#5746667666632733mX)/(*!yeO[c2AQTmP  ,JiHi!PPH%3QGC%:U8) IP;^;^;^[o!++V+!%и:и<иQиY\иVqEXT/T >YEX*/* >YEXA/A >YEX/>YEX / >YEX/>YS+ и / иии/ии/иии/"иS;иYиY/ZиAaAaa]Aaa(a8aHaXahaxaaaaaa ]k01!57665!!57665!!57665#57466632'!466632'!73#"&&&5466632dyd#ye-cs+B-!+#-cr-B+!+"Tff#..""..#P!PP!PPH!``#,)  ,JiH``#,)  ,JiH'P-/""/."".;`;`;`[%0+"+V+и04и%Iи"KиV]EX9/9 >YEXP/P >YEXT/T >YEX/>YEX/>YEX*/*>Y+и/иии/#и(и(/)и,и-и-/1иJи-YиY/Z01!57665#'3#!57665!!57665#57466632'!46663273qlX+"yd#ye-cs+B-!+#-crBQRlP ,JiHi!PP!PPH!``#,)  ,JiH``+ KP;;;M߸N/O/ܸ иN)и)/)-иBиDEX2/2 >YEXI/I >YEX/>YEX#/#>Y +ии/и!и!/"и%и&и&/*и C01'3#!57665!!57665#57466632'!466632!+"yd#ye-cs+B-!+#-cr-B+j)  ,JiHi!PP!PPH!``#,)  ,JiH``#,;+i+6+(++6:и+Zи^к_69EXD/D >YEX:/: >YEX]/] >YEXd/d >YEX/>YEX"/">YEX0/0>YdAIYqA!(8HXhx]A (8q" $и$/%и)и*и%.и/и//2и2/3и*7и8и)\_d901#"&&&546663266654&#"!57665!!57665#5746667666632&&&&&&'!73666632JxP-='2*al:4T1b2yeO[c2+B-!)/(+#4T+^]W#CiI&!rk3&/3"%GgBag!^NN!PPH%3QGC%:U8",)   ,JiHf.$+QuK;,A+EX(/( >YEX/>Yии/01&&&&&&'!5766546667666632!)/(+#yeO[c2+B-j)   ,JiH5PPL3QGC%:U8",;N""3Z[+EX/ >YEX / >Y   ии/и/01'&&#!!576654&#'5! VE``'  PP  P3Z"!3 _ +/EX/ >YEX/>Yи и /и/01!576654&#'5!26773uVE``D Tw PP  P 3Zi+  + /EX/ >YEX/>Y ии/и/01'&&#!#4&&&##576654&#'5! ViDpU-``'  qXzK"P  PZ! + иEX/ >YEX/>Y+ ии/иии/01'&&#!3#!57665#534&#'5! VE``' d PP Pd; PZ! + иEX/ >YEX/>Y+ ии/иии/01'&&#!3#!57665#534&#'5! VE``' d PP Pd; PZ'++и$/EX/ >YEX / >Y%+ ии/и%и#и$01#4&&&##57665#534&#'5!#'&&#!3uViDpU-``'T  qXzK"P Pd; Pհ dZ'++и$/EX/ >YEX / >Y%+ ии/и%и#и$01#4&&&##57665#534&#'5!#'&&#!3uViDpU-``'T  qXzK"P Pd; Pհ d-Z3/++и/*EX"/" >YEX/>YEX/>Y+" )и*и+и-и2и3и3/01#"&&&5466672655!57665#534&#'5!#'&&#!3#-N8 6=``'T Vvx%."- 6BP Pd; Pհ d -Z3/++и/*EX"/" >YEX/>YEX/>Y+" )и*и+и-и2и3и3/01#"&&&5466672655!57665#534&#'5!#'&&#!3#-N8 6=``'T Vvx%."- 6BP Pd; Pհ d 3&")N2^)+иииEX!/! >Y++ииии!(и)01!!!!!57665#535#534&''5!#'&&#!ggl}yLTdsdtXXdsd}X7+^1i)+EX/// >YEX/>Y+/$-и-/.и./01'&&#!!26773#'&&#!#"&&&546667266654&''5!J;ff ?q^6K0""0?%} 3 Tbo;,6!0%BY4LX7 ^=+EX/ >YEX/ >Yи/01'&&#!!576654&''5!# Xmyy XX H X%9 J +EX/ >YEX/ >YEX/>Y01&&&&#!"3!5266654&&!&9T?'6(=J""I>(6M0)!;gL,/3#5$$5#+=&+[+EX/ >YEX / >Y  и и /и/01!576654&''5!#'&&#b5ccfs u  PP  P 7 m"|7o0 +/EX/ >Yи/01!576654&''5!26773myy "k XX H X7\ ^K+  + /EX/ >YEX/ >Yи/01'&&#!#4&##576654&''5!# XmiLyy X H X ^!o + иEX/ >YEX/ >Y+иии/01'&&#!!!!57665#534&''5!# X5myy f XX f X\ ^%y++и"/EX/ >YEX/ >Y#+и#и!и"01#4&##57665#534&''5!#'&&#!!miLyyj# X5 X f X f- ^3/++и/*EX$/$ >YEX"/" >YEX/>Y+" )и*и+и-01#"&&&5466672655!57665#534&''5!#'&&#!!!B-N8 6=]yyj# X5mvx%."- 6BX f X f 1o%\S B+)+)A   & 6 F ]AU e ]AZj]A )9I]RB 9R/&)9: JиJ/MB:9)^EXW/W >Y?+!.+WAIYqA!(8HXhx]A (8q.MиM/014&&&&&'326664&&&#"326667'#"&5467&&&&5467&&&&54666323-::58,+B-0F/I/9F / /Z0Ph7 KPN=&5]IwEH!#!<-&Fb<0R# @-%%-6(NG6))72%0L3 $5%,O;#UK5S ;  />%0N6 <F+"JTF+"JF+"JF+"JF+2"J-F+"JF+"J&+)lݸm/n/;ܹAZj]A )9I]mEиE/ A   & 6 F ]AU e ]OиO/RE;9g;9EX_/_ >YEX@/@>Yef++ /+_AIYqA!(8HXhx]A (8q@%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q*и/RиR/WиYиj01"!&&&&26667!4&&&&&'32666'#"&&&546667&&&&5467&&&&'#53666632!#3Lg z/@((@00C[*EWYS-<$ BeEImH#M OxQ .v{w\9So\b46Q816/VD-ux DiR$E=4h^(H6 6J++I6*;& -46%TF//FT!HpI".( &=W=ImB,Nk>-QA/ (a7 /EZ7gBiH'  d;#g+5 +o"I+Y+AZj]A )9I]Y9A ""&"6"F"]AU"e"]I"9nDIn9TиT/VY9YqEXN/N >YEX1/1>YTU++'^+1A!'7GWgw]A '7qAFVqNAIYqA!(8HXhx]A (8q,и6и8кD^'9m0126667!!&&&&&&4&&&#"32666#"&&&'#53667&&&&5467&&&&5466632!#'3#7ZD. *?S;'7%(0FSTM0G.+H31I0.G0bVUa:RXfZ163\F)QZ0  d%WYEXJ/J >YEX/>YEX:/:>YDAIYqA!(8HXhx]A (8q:A!'7GWgw]A '7qAFVq&A&&'&7&G&W&g&w&&&&&& ]A&&]/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q5:901&&&&#"326667#"&&&54666323266655#"&&&546663273-13LzU-(LnG;70*Gj`S`4.  C8"FnM)#KOS-ga.?550>9 ;k]Tf:  (eieN07L.* 5aTi1$YWhŘ\ P2}pK$L/M/KܹL?и?/ A   & 6 F ]AU e ])и)/4к5?K9IиI/EXD/D >YEXJ/J >Y/+:+DAIYqA!(8HXhx]A (8q5:901&&&&#"326667#"&&&54666323266655#"&&&546663273  !1P71H.&$ | .E^>6Y>" , $-H2146Ca?)T~U#" R(  $@[82U=# nYEX5/5 >YEX/>YEX%/%>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq%O %O98>и>//VAIVYVqA!VV(V8VHVXVhVxVVVVVVVVV]A VV(V8VqO`01%#"&&&54666323266655#"&&&546663273!#"&&&546667266655!&&&&#"326667*Gj`S`4.  C8"FnM)#KOS-ga.?550>:R3-G1|#-13LzU-(LnG;70(eieN07L.* 5aTi1$YWhŘ\ P;Y<%."-  .! ;k]Tf:  + UF)+и)%иIи)WEX/ >YEX$/$ >YEX1/1>YEXO/O>Y+OA!'7GWgw]A '7qAFVq AI Y qA!  ( 8 H X h x ]A   ( 8 qи&и(и1;A;;';7;G;W;g;w;;;;;; ]A;;]1DA!DD'D7DGDWDgDwDDDDDDDDD]A DD'D7DqAFDVDqJO9T01!326667"!&&&&3666632733##"&&&54666323266655#"&&&'#,,KiA;70GsT2-13ti Ku550>*Gj`S`4.  C8"FnM)#KOS-ea0dJ|Y1  3]R [~J P7f?(eieN07L.* 5aTi1$UVF+?Zd[/\/ZܹEи/[=и=/ A   & 6 F ]AU e ]E2и2/3=Z9EXJ/J >YEXB/B >YEX/>YEX8/8>YBAIYqA!(8HXhx]A (8q8A!'7GWgw]A '7qAFVq$A$$'$7$G$W$g$w$$$$$$ ]A$$]-A!--'-7-G-W-g-w---------]A --'-7-qAF-V-q389EB901&&&&#"3267#"&&&54666323266655#"&&&5466632466632'-24LyT-(LnG>o(*Gj`S`4.  C8"FnM)#KOS-ga.?1e09fT,B, " 9:k]Tf9)(eieN07L.* 5aTi1$YWhŘ\&*yu:", )  !1D/*)f>+Z +A &6F]AUe]AZ j ]A  ) 9 I ] Z9 /AZ j ]A  ) 9 I ]-ܹ*>9 H RиR/U>H9HhEXC/C >YEX_/_>Y*d+2%+CAIYqA!(8HXhx]A (8q_A!'7GWgw]A '7qAFVqU%2901666654&&&#"3266654&&&#"&&54666666&'&&&&&&5466632#"&&&'!5*EWYT-<$ BeEImH#s0G.+H31I0.G0 J{V .v{w\9So[b46R7163\F)-QA/ (a7 4Og>QZ0  dF+;Z-+7+# +A &6F]AUe]AZ j ]A  ) 9 I ]A &6F]AUe]279:-#9#=EX/ >YEX(/(>Y A!  ' 7 G W g w ]A   ' 7 qAF V q2(9:и;01%32654&&&!##"&&&546667&&&&5467!#I>'#CcAn}7Ugs)eO (@SWS@(FyZ`g66]{E# ,EcF3\E)mlC[G@2!CGK)(B;7.6A)x5FV=>/?/>&и&/A &6F]AUe]?0ܸи/09EX+/+ >YEX!/!>Y++AIYqA!(8HXhx]A (8q! A!  ' 7 G W g w ]A   ' 7 qAF V q+5A55]A55(585H5X5h5x555555 ]01"3266676&&&'5!#"&&&5466632#"&'5&&&&|Fd<4^O7K/ $D7"+]qzĉJSӀ?gA"+"2 '*'4gcfm9.E,%7%PP "B:)]N4WfuI-PA- 9]<=/>/ܸ=и/и/4 и /*A **&*6*F*]AU*e*]EX/ >Y/ +%+01#"&&&&&5466632#'&&'&&&&#"32666354&''5!=(.'d6JgP6B}p%E?=P #*HwV01Y~N(Y[d !:Q`m9ap> n  /ZVX_2 55F`>i?/@/ ܸ?и/ и 3#и#/+A ++&+6+F+]AU+e+]EX/ >YEX/>Y&AI&Y&qA!&&(&8&H&X&h&x&&&&&&&&&]A &&(&8&q0A!00'070G0W0g0w000000000]A 00'070qAF0V0q01#"&&&5466632#'&&'&&#"32674&'&'&&'5!` ! =c}CהMSߌ/UPO)w U9Wf99j]%B" ( WfuI   4gcfm9  PP\m"*YP\S"*P\("*P\S"*P\"*-P\&"*P\"*H+PkDE/F/ܸи/E и /6и/ 'A ''&'6'F']AU'e']61иAиA/EX/ >YEX/ >YEX/>Y<D+"AI"Y"qA!""("8"H"X"h"x"""""""""]A ""("8"q,A!,,',7,G,W,g,w,,,,,,,,,]A ,,',7,qAF,V,qD2и3иDB401#"&&&&&546$32#'&&'&&&&#"3266635!5!54&''5!3>F0 h'6b_ g   NݏS b YY bP3O>+2%+2 и /1 и /A &6F]AUe]2F2QK/EX / >YEXC/C >YEX7/7>YCAIYqA!(8HXhx]A (8q7 A!  ' 7 G W g w ]A   ' 7 qAF V q01'#'&&'&&&&#"3266634&''5!#"&&&&&546$326666323#${! ,9B tHJx">0 h>FYEX;/;>YEAIYqA!(8HXhx]A (8q;A!'7GWgw]A '7qAFVq01'#'&&'&&#"32674&'&'&&'5!#"&&&5466632666632L& w U9Wf99j]#D" ( ! =c}CהMSߌ+X-*QwN-F0' )FeF  3edgn9 PP WguISe9$0<-F9D:+  +1+ и ии/ *A ::&:6:F:]AU:e:] ?к@9F /EX/ >Y? 9@ 901#5&&&&5466675332#'&&''&&&#3266634&''5!%.6.w@av|AC~sa.TNK&b ,41'2p*NqGEpP+=|}o  ů  } TTwv`fZPz:Z)+A ))&)6)F)]AU)e)]EX/ >YEX/ >YEX / >Y:+$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q .A!..'.7.G.W.g.w.........]A ..'.7.qAF.V.q801#"$&546$32#'&&'&&&&#"3266674&&&'5!z29 /igf:ib^/{!+6A$oILi?gH(7\F*?3[JDh@b  g   NݏM#?Y5=[>"Y.ɸ//0/)ܹ/и/к)9///EX#/# >Y AI Y qA!  ( 8 H X h x ]A   ( 8 q# 901576654&&&#"!5765#5736666328  2'#Q9?b55<>&B0 =/ >, l//(0 .F0 /o7Pwh{"h{"hI"BhN"Th"ph"*hh"Ep3hW-4++Sи/S!и-84:и:/-=иSI>:I9EXYEXC/C >YEX/>YEX/>YEX2/2>YEXN/N>YA!'7GWgw]A '7qAFVq2C'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q0и0/1иSO3и14и5и5/>C'9LиL/M01#"&'&'53266654&#"76654&&&#"!57665#5%3666632!6632$?W45+/%6*T/N;<;7X3bRR]_(;eK+\ 5(0H2P  &&5,J6  `PPDO,'&LuOP#7h:t+5+ и"и"/%и)к*"595<EX$/$ >YEX/// >YEX/>YEX/>Y"+/ AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/(ии&и 'к*/ 98и8/901!576654&&&#"!57665#535#5%33#666632T/N;<;7X3bRR]_(;eK+\P,J6  `PPgDOg,'&LuOPh:t+5+ и"и"/%и)к*"595<EX$/$ >YEX/// >YEX/>YEX/>Y"+/ AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/(ии&и 'к*/ 98и8/901!576654&&&#"!57665#535#5%33#666632T/N;<;7X3bRR]_(;eK+\P,J6  `PPgDOg,'&LuOP:#;/Y+ +/ AI Y qA!  ( 8 H X h x ]A   ( 8 qи/ии &и(к*/ 98и8/01576654&&&#"!57665#535#5733#6666326  3&'&$ :@ wwd65=='A1 <0 <,! m 00 6>n)/>r -F0 0R8^.#+ +AZ j ]A  ) 9 I ].и#и/.!%и#'и.*и+/EX)/) >YEX&/& >YEX4/4 >YEX/>Y%"+4AIYqA!(8HXhx]A (8q&$+и,и"-к/4901#566654&&&#"!57665#535#573!!666632R>hDkG4Up<4u<Z+fb%VXU$Sk>ٖR'P }u\&- fPPe@Ie-$D+hLM/N/GܹMи/2и2/;к<G9EX$/$ >YEXA/A >YEX/>YEX/>YA AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/$.A..]A..(.8.H.X.h.x...... ]$6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q<A 9JиJ/K01!576654&&&#"!5766546666632#"'&''&&#"666632T/N;<;7X3b$>_XS]2)FA"0ZE)R]_(;eK+\P,J6  `PPWdfS41P9* -WT,'&LuOP#G&H/I/BܹHи/B&и&/-и-/6и6/79//EX)/) >YEX+/+ >YEX-/- >YEXY!1+< AI Y qA!  ( 8 H X h x ]A   ( 8 q7< 901576654&&&#"!5766546666632#"'&''&&#"6666328  2'#P9?  (=U96W-!l// <3;;1 -"*h1K3w .F0 /+<,,3+  +,и/,и/,739и9/ >EX;/; >YEX/ >YEX/>YEX1/1>Y&AI&Y&qA!&&(&8&H&X&h&x&&&&&&&&&]A &&(&8&q&91/3и4и4/01666632#"&&&546667266654&&&#"!57665#5%3uS^`(;eK+YEXQ/Q >YEX/>YEX&/&>YQAIYqA!(8HXhx]A (8q&$(и)и)/4>A>>]A>>(>8>H>X>h>x>>>>>> ]4FAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8FqLQ901#"&&&546667266654&&&#"!5766546666632#"'&''&&#"666632_XS]2)FA"0[E*S^`(;eK++bo;,6"0(E]4,J6  `PPWdfS41P9* -WT,')QxNh8F+3 +8+"$и$/'к($898:/EX&/& >YEX-/- >YEX/>YEX/>Y-AIYqA!(8HXhx]A (8qии/и/к(-96и7и7/014&&&'#576654&&&#"!57665#5%36666320F.T/N;<;7X3bRR]_(;eK+\ZyJ!P,J6  `PPDO,'&LuOqB?+2 +:+!#и#/&к'#9EX%/% >YEX,/, >YEX>/> >YEX/>YEX/>Y,AIYqA!(8HXhx]A (8q',95A!55'575G5W5g5w555555555]A 55'575qAF5V5q;и<01#"&&&54&&&#"!57665#5%3666632326665#573B3fgk])/N;<;7X3bRR]_(;eK+om.K4T_Lg<YEX/>Y'+ии/и/01%!576654&''5!!267676673#'&#!fe=dde eeu PP  PP  " f/+y2" +0+#и+1и1/04EX/ >YEX)/) >YEX/>YEX/>YA!'7GWgw]A '7qAFVq9и/и'и(и(/+и+/,01##"&&&54&''5!3266674&''5!3sRS]^(;fK+\T.O;;;7Xc+;,'&LuO;PP,J6  PPdC$a23/4/0ܹ3 и /#/EX/ >YEX)/) >Y+9и/и'и(и(/+и+/,01##"&&&54&''5!3266674&''5!3C56<=&C0 ;)7  3''&$ 9+@ dV -G/W 00 ,   00 <)+ <# +:+-и5;и;/:>EX/ >YEX3/3 >YEX/>YEX/>Y(A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q(901##"&&&54&&&'&'&&54666323266674&''5!3RR]_(;eK+1H/]T(.O;<;7Xb+9+'(OwN}AT5  ,".#9gW,K7  PPfC+MN/O/Cܹ Nи/, 6EX&/& >YEXYEX/>YEX/>Y1A!11'171G1W1g1w111111111]A 11'171qAF1V1q 1901#"&&&55#"&&&54&&&'&'&&54666323266674&''5!70H0\V(R]_(;eK+1H/]T(.O;<;7Xb/"9fW+'(OwN}AT5  ,".#9gW,K7  PP'BU5  +h28+-+и/!к"-9-4EX / >YEX'/' >YEX/>YEX/>Y' AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/"' 90и0/101!576654&&&#"!57665#5%3666632T/N;<;7X3bRR]_(;eK+\P,J6  `PPDO,'&LuOP;78/9/2ܹ8и/&к'29EX / >YEX/>YEX/>Y, +и/иии/' ,95и5/601!576654&&&#"!576654&#'5!"666632PR#=0*T0RM__RBC@(]O4ZP"1PPPP 3T>Pif=ݸ>/?/ܹ!AZ!j!]A !!)!9!I!]и/>5и5/*к5*9EX;/; >YEX///>Y+ &+; и/&)и)//-1и2и2/9и9/01'&&#!6632#"&''3266654&&&#"!576654&#'5!2 ?jw?M^4d7+)$ H~]6BhI6VE``ֈ BxgՐI I2jr]m=o PP  P734/5/.ܹ4и/и!EX/ >YEX'/' >YEX/>YEX / >Y!+ и / иии/и/и%и&и&/)и)/*и1и1/201!57665!!576654&''5!!4&''5!`)`=aa````P d PP  PP 5 PP  P7A5ո6/7/0ܹ6и/и!EX/ >YEX'/' >YEX/>YEX / >Y!+ и / иии/и/%и%/.и/и3и3/401!57665!!576654&''5!!4&''5!#'&&##`)`=aa``vT `P d PP  PP 5 P  P79+4 +9+%и 'и9.и9;/EX/ >YEX-/- >YEX/>YEX/>Y' +ии/и/и!и!/"и+и,и,//и//0и7и8и8/014&&&##57665!!576654&''5!!4&''5!%BpT9`)`=aa````XzK"P n PP  PP ? PP  q7@$A/B/;ܸи/; ;9; и /A и /,и./ /EX&/& >YEX4/4 >YEX/>YEX / >YEX/>Y.+и/и/иии/&$(и(/)и2и3и3/6и6/7и>и>/?01!&##!57665!!576654&''5!!4&''5!0& %<`)`=aa````WD26P d PP  PP 5 PP  P7<QG+H +=+%и 'иH3AZ=j=]A ==)=9=I=]EX/ >YEX-/- >YEX/>YEX/>Y8B+ии/и/и!и!/"иB'"+и,и,//и//0и84и4/BEиE/BGиG/HиH/JиJ/M01#!57665!!576654&''5!!4&''5!766324&&&#"32666.h|e^\`=aa`^n*)[o>5YC#  We4)NpH#P y PP  PP  PP &LuN3Q9^#;L7B=ڸ>/?/ܹ>'и'/3и5EX-/- >YEX;/; >YEX / >YEX/>YEX!/!>Y5+;!#и$и$/+и,и,//и//0и9и:и:/01#"&&&54666326665!!576654&''5!!4&''5!-JxP-='4*)`=aa`` rk4'03"%FgB+ PP  PP ? PP7xC +1+7+ "и$EX/ >YEX*/* >YEX/>YEX/>Y$ +ии/и/и(и)и)/,и,/-и4и ;и;/$=и ?и?/01#"&&&55!!576654&''5!!4&''5!326554&''5!eN )`=aa```MONE``-,TzN PP  PP 5 PP clla PP ?F+,/-/&ܹ,и/EX/ >YEX/>YEX/>Y и/иии/ и/"и"/)и)/*01!576654&#!"!576654&''5!a`GWWXXP    PP  PP  P?fO+J+.A+J%к7J9AZAjA]A AA)A9AIA].QEX/ >YEX/>YEX/>Y<3+)F+ и/иии/ и/"и"/)&и&/FIиI/MиM/N01!576654&#!"!576654&''5!6632#"&''3266654&&&#"wMVQWWX=jw?M^4d7+)$ H~]6BhI5XP    PP  PP BxgՐI I2jr]m=o P?F78/и/ܹи/%ܸ*и*/%29/EX/ >YEX+/+ >YEX/>YEX / >Yи/и!и"и)и*и*/-и-/.и"5и5/01!"#4&&&##576654&''5!3!2654&''5!`IX/}.WIWW`TaXX"KzXXzK"P  PP    PP  P?F1 +,+1+1&и13/EX/ >YEX%/% >YEX/>Yи/иии#и$и$/'и'/(и/и//014&&&#!576654&''5!3!2654&''5!DpUWW`TaXXXzK"P  PP    PP  q;1?+&+:-+:AEX / >YEX/ >YEX3/3 >YEX/>Y   и /иииии/!и!/"и)и*и"1и2и2/5и5/6и*=и=/013576654&#'5!"3!2654&#'5!"3!2654&''5!;VVa!^X!^XXP  PP    PP    PP  P;1E +,+@3+E+E:иEG/EX/ >YEX%/% >YEX9/9 >YEX/>Yи/иии#и$и$/'и'/(и/и0и(7и8и8/;и;/<и0CиC/014&&&#!576654&#'5!"3!2654&#'5!"3!2654&''5!@nTVVa!^X!^XXXzK"P  PP    PP    PP  q5}+,/-/'ܹ,и/EX / >YEX/>YEX/>Y  и/иии/ и/#и#/*и*/+01!!576654&'!!576654&''5!}5cb5ccHbbP    PP  PP  B^3=4/5/.ܹ4и/и!!+01!57665!!576654&''5!!4&''5!u^ujjuujjXXXDZZ3ZZX0I34/5/.ܹ4и/и!++!+ и / иии/%и'и)и)/1и1/0157665!!576654&''5!!4&''5!gL J LEEQL  LPEE5 = 55  66  66 q 50I34/5/.ܹ4и/и!++!+ и / иии/%и'и)и)/1и1/0157665!!576654&''5!!4&''5!gL J LEEQL  LPEE5 = 55  66  66 q 5+34/5/.ܹ4и/и!EX/ >YEX'/' >YEX/>YEX / >Y!+ и / иии/и/и%и&и&/)и)/*и1и1/201!57665!!576654&''5!!4&''5!de=dde dbbP d PP  PP 3 PP  PBS"+BS"+B!"+BB&"+BT^"+&Bh^"+E&B3^X$/++!$;и!=иBи!JEX/>YEX/>YT+="+A!'7GWgw]A '7qAFVq01#"&'&'53266654&#"7665!!576654&''5!!4&''5!!6632$?W45+/%6*u^ujjuujjK 5(0H2P  &&=XXDZZ3ZZX#7B^?@/A/ܹ@и/ии"и.и0и<0++ии0!и0=015!%!57665!!57665#5354&''5!!54&''5!3J^qju^ujjuujXXXXDgZZZZgB^;c +9++ +ии9и 7и+=+и801!!576654&''5!!3!4&''5!!57665!#ujju&gujjugXXDZZ3ZZXXB\^Bz^@ +1+;+ "и$EX?/? >YEX/>YEX/>Y$ +и/и/601#"&&&5!!576654&''5!!4&''5!326665#573z^b2^ujjuuj!:P/)I7 T_-^d@XXDZZ3ZZMi@@iMFPB^% +$+01%!576654&''5!!26773#'&&#!ujjukff XXDZZ' 3 ?^78/9/2ܹ8и/&к'29EX,/, >Y AI Y qA!  ( 8 H X h x ]A   ( 8 q', 901!576654&#"!576654&''5!666632eow7:<dood%\`Z#4p\<lXaO XXHXX-$FtWX5f^B +8+и8'0 9DEX/ >YEX/>Y3,+"=+ии"и/"и/30и0/=@и@/=BиB/01%!576654&''5!#'&&#!"676632#"&''3266654&&&#"cylq :rΝ\`49%Z"pJ4_T3 XX H X }B䡦T I@ņՇ=B^56/7/0ܹ6и/и!EX/ >YEX'/' >Y!+и/и/%и%/&и&/.и/01!57665!!576654&''5!!4&''5!#'&&##u^ujjuuyjXXXDZZ3ZXB\^9O+4 +9+%и 'и9.и9;/' +014&&&##57665!!576654&''5!!4&''5!H2^T1u\ujjuujj\mg1XXXDZZ3ZZB^;OYEX&/&>YL+:+и/ и /  и /ии/и/$и$/%и%/(и(/)и)/LGиG/LIиI/014&&&#"326667!!57665!!576654&''5!!4&''5!6766327 HsT-%Y}O$tujjut"4rKZ|M"*QvKX%XXDZZHZZj3hBB^=X>/?/ܹ>'и'/3и5EX / >Y5+ 01#"&&&54666726665!!576654&''5!!4&''5!F?q]6L1"!0?%^ujjuuco<+7!0%AY5XXDZZ3ZZB ^D+.+8+и!EX/>YEX / >Y!+ и/и/3и<ии@и@/01!"&5!!576654&''5!!4&''5!3266654&''5!tN^ujjuuj6M/)E2uj^@XXDZZ3ZZMi@@iMZZB^+N,/-/&ܹ,и/EX/ >Y и/"и"/01!576654&#!"!576654&''5!ywjjKllX @ XX H XX XBf^Sл+ +6I++к? 9AZIjI]A II)I9III]6UEX%/% >YD;+1N+%#и#/(и(/1,и,/1.и./NQиQ/NSиS/01%!576654&#!"!576654&''5!676632#"&''3266654&&&#"ly1wjjl :rΝ\e.r0#$!včN4_T3 XX @ XX H XX }B䡫Q I=NJՇ=B\^7e++2%+29/EX/>YEX / >Y!и"и5и5/01!"#4&&&#!576654&''5!3!2654&''5!5Tc55eTjjw)y ll1gmmg1X H XX @ XX XB\^6m+1$+6+6+и68/EX/>YEX / >Y  и!и4и4/014&&&""#!576654&''5!3!2654&''5!%8fT/;0.!jjw)y ll\mh2X H XX @ XX B^?X+&+:-+:AEX/>Yии)и*и=и=/013576654&''5!3!2654&''5!3!2654&''5!Bjjw{y l{wmmX H XX  = XX  @ XX VB\^En +,+@3+E+E:иEG/EX/>Yии/и0иCиC/014&&&#!576654&''5!3!2654&''5!3!2654&''5!8fTjjw{y l{wmm\mg1V H XX  = XX  @ XX F'$q + и/EX / >YEX/>Y +и/01357665#573#"&&&5466632FdQii"-/""/-"PHNP-/""/."".F'F'$q + и/EX / >YEX/>Y +и/01357665#573#"&&&5466632FdQii"-/""/-"PHNP-/""/."".24k$V +ии/EX/>Y +ܸи/0157665#573#"&&&54666322A [5 DD   40 +/ 0  1jwF +ии//EX / >Y+0157665#573#"&546321B \5 CC/#"00"#// +0 /----7pw2"(dg"(g"("("(C)2"(/C{"(B{m"("BF' "(Xcq"jFh'"EiFy'.B+9/9и/&/EX/ >YEX/>YEX/>Y)+>4+ии/01#"&5466767#57665#573#326767#"&&&5466632! =`m+dQi!?8  "-/""/-" KJ+L?PHNP 0: 32  )/""/."".F-$8 + 9/ и/%EX/ >YEX/>YEX / >YEX/>Y4*+  ии/01#"&55#57665#573#37#"&&&5466632 8N-dQi=8"-/""/-".%xvPHNPB6 -]/""/."".F-"6 +!+ и/!#и#/8EX / >YEX/>YEX/>Y2(+и/01357665#57337#"&55#"&&&5466632FdQi=8 8N-"-/""/-"PHNB6 -".%xv-/""/."".75,+и#EX/ >YEX/>Y(++и и / и01!57665#53#5733#"&&&5466632idQw"-/""/-"PPBf3HN7fh/""/."".%ow# + и/ и /и/ и/и/EX/ >Y!++ и01!57655#535#5733#"&54632 CBddZ5iL0""00""0! //;(0; ----F'(F''F'W + и/EX / >YEX/>Yи/01357665#573FdQiPHNPF'W + и/EX / >YEX/>Yи/01357665#573FdQiPHNP24k2 + /EX/>Yܸи/0157665#5732A [5 D40 +/ 02kp2 +EX / >Y+и/0157665#5732A [5 D0 +/ 0q"(dFh'"(EcFy'.+9/9и/&EX/ >YEX/>YEX/>Y)+ии/01#"&5466767#57665#573#326767! =`m+dQi!?8   KJ+L?PHNP 0: 32  F-"z +!+ и/$EX / >YEX/>YEX/>Yи/01357665#57337#"&55FdQi=8 8N-PHNB6 -".%xv75}+ ииEX/ >YEX/>Y+и и / и01!57665#53#5733idQPPBf3HN7f%oor + и/ и и/и/EX/ >Y+ и01!57655#535#5733 CBddZ5i! //;(0;71$̻ + и/ и/ EX/ >YEX / >YEX / >Yи/и A'7GWgw ]A]013#4&''5466632#"&&&dQi"-.##.-"P%HNqP.##.."".)aa$> + и/ EX/ >Y +013#4&''5466632#"&&&aA \5 Dd   a0 I+/ 0  F+!"\mF"mF"#mF"mFm"mF9 +EX/ >YEX/>Y901%#"&&&5#57367AKN!$H9$T! 0;U9;gQrDN-9"/-2p, +/EX/ >Y901#"&&&5#573367 *12/%]7   $3" $=1x(/?" F y+иииEX/ >YEX/>Y+й 901673#"&&&55#53#5733! 0XAKN!$H9$Tǿ-9"/-;U9;gQg4DN:g/B ++ 9++AZj]A )9I]9и/ 7иDEX1/1 >YEX>/> >YEX/>YEX%/%>Y9+1AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&&'#!576654&#'5!"36666325ZEH[45ZEG[48nkll9e7bbe8jlol5WuEEuWYvDDvYlQMa PP  PP ^MSD`^?D`^?7)d +EX/ >YEX/ >YEX/>Yии/01%3!572656&&&#'5!"om omPP PP D`^ +013576654&''5!Dzz}}XDZZX1I9++  +  и /и/01576654&''5!1O O_QQ5  66 q 57A+EX / >YEX/>Yи/013576654&''5!7ccbbP  PP  P%J`4+/EX / >Y  и /01576654&#'5!"%? ?%B B/  11 ; /Nm"?!("?!!("?!S"?"?"?-!"?B"?#B D`&"?D`"?Xq^"?Dh`^"?EDy`^5[-+A --&-6-F-]AU-e-]-9/!!90+01#"&5466767#576654&''5!#326767! =`m+zz}}!?8   KJ+L?XDZZX 0: 32  D-^+2+9/#EX/>Y01#"&55#576654&''5!#37 8N-zz}}=8.%xvXDZZXB6 - ^7 + и+ и01!57665#534&''5!3}zz}XXhZZ3ho + иEX/ >YEX/>Y+и и / и01!57665#534&''5!3}b5ccb PP U^< PP ^ ^`^ + и/EX/ >Y+ ииܸи/01!576655#5354&''5!3 A@ ss @A t0 && - '' -DP^"?tD^"??D^"?#??HD^"?D^"?7h#-B9H^ +EX/ >YEX/>Y9A!'7GWgw]A '7qAFVq01#"&&&54&''5!67HSbd(/_M0,5(DOsJ#A}k X8<N?3B ++ ++AZj]A )9I] 7и9иDEX1/1 >YEX>/> >YEX/>YEX%/%>Y9+1AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq$и$/'и'/0и0/3и3/014&&&#"326667#"&&&'!!576654&''5!!666632"UpqU""UqpU"O䖒ߙS{{{{ V܏Oޥ``~ަ``~qk XX H XX fq^+17+EX/ >YEX/>Y-#+01%#"&&&54666766665#573#"&&&5466632?a 8+ & T"..##..".mnh)a] +'?Wk;DN9/""/."".w%,+/EX/ >Y#+01#"&546766665#5737#"&54632  *t?*:%^7.""00"".oBB>;:## R &4@#&0----^+"e^+"e^+=%9a+и"EX!/! >YEX / >Y5++#+и#01#"&&&54666766665#53#5733#"&&&5466632?a 8+ & ƑT"..##..".mnh)a] +'?Wk;f3DN;fd/""/."".^+q'9M0+D+D9A 00&060F0]AU0e0]EX/ >YEX / >YI?+++ 9 5A!55'575G5W5g5w555555555]A 55'575qAF5V5q01&&&&'#"&&&546663265#573&&#"32666#"&&&5466632'*27@WoE%=-5Uk62T"?:4n::/ !*@/"-/""/-"NBA=0dP3'>K#=`B#^DNEDEMP% -< .&9Tb/""/."".w'9M0+D+(и(/A00&060F0V0f0v000000 ]A00]EX/ >Y5 +I?+++01&&&&'#"&&&546663265#573%&&#"32666#"&&&5466632k  $*8H-("7F# _6 )%"&&*    ('%<0%-%9((/)V)).0$ "3:s  ^+e^+e^+/+EX/ >YEX/>Y01%#"&&&54666766665#573?a 8+ & T.mnh)a] +'?Wk;DNp"+/EX/ >Y01#"&&&54666766665#573 )u?$  ^7`AB?;7 R %5@#"(/^+=h^+=%Y+и"EX!/! >YEX / >Y+#й01#"&&&54666766665#53#5733?a 8+ & ƑT.mnh)a] +'?Wk;f3DN;fyp%L+и" /EX!/! >Y#+и#01#"&&&54666766665#535#5733 )u?$  ^7g#AB?;7 R %5@#,=(/=^+q'90++9A 00&060F0]AU0e0]EX/ >YEX / >Y5A!55'575G5W5g5w555555555]A 55'575qAF5V5q+ܺ5+901&&&&'#"&&&546663265#573&&#"32666'*27@WoE%=-5Uk62T"?:4n::/ !*@/NBA=0dP3'>K#=`B#^DNEDEMP% -< .&9Tbp'90++(и(/A00&060F0V0f0v000000 ]A00]EX/ >Y5 +++01&&&&'#"&&&546663265#573%&&#"32666k  $*8H-("7F# _6 )%"&&* ('%<0%-%9((/)V)).0$ "3:J+-7 (+ и/ )%и)-EX3/3 >YEX/>YEX/>YEX&/&>Y (и)01'3##"&&&546767666655#53#575466632-!+">mZ,B,+"0fo,A,j)  0KiCf/NwI", (  .JjH?fD%5^Q#,J+-3]%+ и /%)EX/// >YEX/>Y +&и (01'3##"&&&54676766665#53466632-!+">mZ,B,+"0fo,A,j)  0KiCPgNwI", (  .JjHvgb^Q#, 5$+0+07EX)/) >YEX/>YEX/>Y)'и'/,и,/3и3/401!57665!#"&&&5466632666766665&&''5!c20KOK'  (   cuddP Q3= %*!J $cPP  P A1+=+ =9=C/ /EX6/6 >YEX/>YEX/>YEX / >Y64и4/9и9/@и@/A01!&##!57665!#"&&&5466632666766665&&''5!0& %YEX*/*>YEX/>YP+и/ и /  и /ии/иD!BиB/GиG/PKиK/PMиM/014&&&#"326667#!57665!#"&&&5466632666766665&&''5!676632 4XC$  Wd3.i|`d20KOK'  (   c@o)[o?)3T<"T#;L)NpH#P Q3= %*!J $cPP )Px B?l+)+)AEX#/# >YEX///>YEX / >Y#!и!/&и&/01!#"&&&5466632666766665&&''5!#"&&&54666326665=20KOK'  (   cudKyP-='4*wQ3= %*!J $cPP rk4'03"%FgB gE+)+=0+=GEX#/# >YEX / >YEX@/@>Y64+#!и!/&и&/@-A!--'-7-G-W-g-w---------]A --'-7-qAF-V-q48и8/01!#"&&&5466632666766665&&''5!326554&''5!#"&&&5=20KOK'  (   cudJONE``eN wQ3= %*!J $cPP clla PP ,TzN ` 7"#+.+++ #96и9/"/EX5/5 >YEX/>YEX/>YEX$/$>Y5$  и5 3и4и4/01!!"#4&&&#!"#6666766665&&&&#'5!!*   Ib,Mi=e>GH ' lww{% 4  MwQ*C1N9#c ==3^#+%EX / >YA!'7GWgw]A '7qAFVq01#"&&&'33266654&''5!50j|2`L3{-Fb>5̎M^ 6llXX&hI#B+%EX/ >Y +"+01#"&&''533266654&''5! DpQ ?1P  .@(T` SMzV. Җ !@b@ 44) +"EX/ >YEX / >YA!'7GWgw]A '7qAFVq01#"&&&'332654&&"'5! (Xf(M?+s%(i^*0  \i9  PP3S"tT3^++и(и-EX/>Y)+A!'7GWgw]A '7qAFVqи)01#"&&&'33266655!5!4&''5!3 0j|2`L3{-Fb>)w̎M^ 6llhXX3h ^;&+6+6=EX/// >YEX/>YEX/>Y/)и)/+и+/2и2/9и9/:и:/01!57665!#"&&&54632666766666654&'&'&!j{i("Q_k<1'8/   09{{X k3Ia;"-/@D-5"s] XX X 5%+1+17EX*/* >YEX/>YEX/>Y*(и(/-и-/4и4/501!!57665!#"&&&54666326667666654&''5!5c4/JKE1&! YbbP Q3= *&<  $c PP   ^C/+?+?9?E//EX8/8 >YEX/>YEX/>YEX/>Y 82и2/4и4/;и;/ BиB/CиC/01!&##!57665!#"&&&54632666766666654&'&'&!9,d)Ag{i("Q_k<1'8/   09{{_KTX k3Ia;"-/@D-5"s] XX  ?^X ?+ ++AZj]A )9I] NиZEXH/H >YEX*/*>YEX/>YT+и/ и /  и /ии/и/HBиB/DиD/KиK/TOиO/TQиQ/014&&&#"326667!!57665!#"&&&54632666766666654&'&'&!676632X-PoA*  ![~N#}("Q_k<1'8/   00rLZU)x*QvKX k3Ia;"-/@D-5"s] XX }9p B^E~6++ и /EX?/? >YEX!/!>YEX/>Y?9и9/;и;/BиB/01#"&&&54666726665!#"&&&54632666766666654&'&'&!?q]6L1"!0?%i("Q_k<1'8/   09{co<+7!0%AY5X3Ia;"-/@D-5"s] XX  ^L=++ +NEXF/F >YEX/>YEX(/(>YA!'7GWgw]A '7qAFVqF@и@/BиB/IиI/013266654&''5!!"&5!#"&&&54632666766666654&'&'&!4N3)E2ujNi("Q_k<1'8/   09{vRoC@iMZZ3Ia;"-/@D-5"s] XX  \w^3@+5)+4+  + 2к? 9 B //EX1/1 >YEX / >YEX/>YEX/>Y1,и,/-и-/4и5и?@01#4&&&&&#!"#6766766666654&''&!!! Zi#8EE<:DE9#iB>6r($#./5k!2;#}\Iw]D--D]wI*$rQ!p] XT33"2+///EX/ >Y015'#!57665#573376&#'5!J9? d7 7TF+// (0// /1"N1{"N1"N*h1"NET1"NHT+19"++&"(и(/+EX*/* >YEX3/3 >YEX/>YEX/>YEX / >Y"и#и#/8и8/901#"&&&546767666655#5#!57665#5%336&''5!1Cu]0H0,rX/dT)- TalZwE'1", -OvTPPPDO'T PP +36Y+'EX/ >YEX/// >YEX/>YEX / >Y01!5#!5766546666632'36&''5!uZ/d*B]yL-B+!+"+/ TalPPP3@|mR/#,)  ,JiHR PP P1) ++ и/ и+/EX/ >YEX$/$ >YEX/>YEX/>Yи/иии/01%#4&&&##5#!57665#5%336&''5!1h2J0rX/dT)- TaPq\{IPPPDO'T PP+)#!+и"и"/!%EX/ >YEX/ >YEX/>YEX / >Yи/иии/01##!57'5!34&''5!3#T) Tu mFuXg+ PP! PPNPPdC7-7-D+EX+/+ >YEX/ >YEX/>YEX / >Y и/ии/к<+9BиCиC/01!5&&&&#!576654&''5!667666676632' 1)VGaaVK_'\5%>-!#.# w?B  PP  PP ;9'D@= -8!+#;X3<@G P7-"7-I +I+ $кAI9IK/EX0/0 >YEX/ >YEX/>YEX/>Yи/и и /!кA09GиHиH/014&&&&&&#!576654&''5!667666676632'2J0 1)VGaaVK_'\5%>-!#.# w\{I?B  PP  PP ;9'D@= -8!+#;X3<@G q<F3>+3EX/ >YEX/ >YEX*/*>YEX8/8>Y"*9*(6и6/7и:и;и;/?и@01667666676632'!5&&&&#!57665#"#VK_'\5%>-!#.# w 1)VGa TP ;9'D@= -8!+#;X3<@G P?B  PP   -E +и и 9EX/ >YEX/ >YEX1/1>YEX?/?>Y+ и и к)191/=и=/>иAиBиB/01#535#5%33#667666676632'!5&&&&#!57665RK_'\5%>-!#.# w 1)VGa3gDOg;9'D@= -8!+#;X3<@G P?B  PP 7BK ++ и /и/  и$и&EX2/2 >YEX/ >YEX/>YEX/>Y29 и/ии/к'29C29IиJиJ/01!5#&&#!576654&''5!6673767666676632'e4&VGaaV5e Y5%>-$." w? PP  PP  'D@= -8!+#;X3<@G P7B]^/_/^AиA/_ܺ A9*AZ*j*]A **)*9*I*]A6Mи*YиY/EXY/Y >YEXG/G >YEX/>YEX///>YEX;/;>Y Y99=и>и>/GEIиI/J01'#"&&&'&66676654&&&'&&&&#!576654&''5!667666676632!#.# #-Ok@6+" 2)VGaaVK_'\5%>-}#;X3<@G 78:"6kU5#/("`*352  PP  PP ;9'D@= -8!+u+BиNEX5/5 >YEX\/\ >YEXH/H >YEX/>YEX / >YEX/>Y  ии/ии/$59B59HFJиJ/KкO59m59sиs/t01!5&&&&#!57665"!5766667&&'&&&&'&&54666324&''5!66667666676632'Z VPV w #.#-?%4\$VV#[5%>-#.# w;F  PP A ;Pb G@<3X;#+!8- =@D'$ X PP $'D@= -8!+#;X3<@G P""Bz) +z+Gи SкTz9zfиf/rz9z|/EX:/: >YEXa/a >YEXM/M >YEX/>YEX/>YEX / >Yии/"и#и#/):9G:9MKOиO/PкT:9r:9#xиx/y014&&&&&&#!57665"!5766667&&'&&&&'&&54666324&''5!66667666676632'/K5 VPV w #.#-?%4\$VV#[5%>-#.# wXzK";F  PP A ;Pb G@<3X;#+!8- =@D'$ X PP $'D@= -8!+#;X3<@G q0WI.}+ ++ и и /и/!и!/#и%и%/'и,и,/015#!576654&''5!36&''5!m]LFFRL0"D*a&H 55  44 G44m57-/Ż+EX/ >YEX$/$ >YEX/>YEX / >Y и / ии/и/"и"/#и#/&и&/(и)и)/+и+/ -и-/.и./01!5#!576654&''5!34'&#'5!g^NXX^0b\n(f}3} PP  PP {PP/PBm". BS"._B^".*WBh^".EB^".HB5&+)EX1/1 >Y01'!5#!576654&''5!3666632! 5#ɖulluJ*)2B\^4˻ +4+ !и46/EX/ >YEX)/) >YEX/>YEX/>Y и/ии/и/'и'/(и(/+и+/-и2и2/3и3/014&&&##5#!576654&''5!36&''5!"=V4ulluJ i$,^˔\hj5?#+XXDXX!  XX ` 1P^6+и#EX/ >YEX+/+ >YEX/>YEX / >Y4+ии4и4$01!5#!57665#534&''5!36&''5!!)~zcF\\cHr Yp&#b X?#+XXd XX  XX YEX/ >Y01!5&&&&'!576654&''5!26766666676632' -8:qppqd) !0%%a4$?-(#*. +038NPB ) XX D XX N?%PSSQO$%!!+#EX)]ei3">3' $)# XBm"B\K +K+ $иK7и7/EK9KM/EX2/2 >YEX/ >YEX/>YEX/>YE29014&&&&&&'!576654&''5!26766666676632'"=V4 -8:qppqd) !0%%a4$?-(#*. +038NP\hj5B ) XX D XX N?%PSSQO$%!!+#EX)]ei3">3' $)# !HM+!EX/// >YEX/ >Yи/и/01!5&&&&'!57665#"#!26766666676632' -8:qpwqd) !0%%a4$?-(#*. +038NPB ) XX mGX N?%PSSQO$%!!+#EX)]ei3">3' $)# XBNi0;+0и;?и0KEX/ >YEXE/E >Yܸ<и=иL>и=N0126766666676632'!5&&&&'!57665#5354&''5!3d) !0%%a4$?-(#*. +038NP -8:qppqN?%PSSQO$%!!+#EX)]ei3">3' $)# XB ) XX Dg XX gB/Mi ++ и /и/  и$и&EX4/4 >YEX/ >Y01!5#&&'!576654&''5!267366766666676632'{(Lqppq,A&{ !0%%b5$>.)#)- &+/3EPB ) XX D XX   %PSSQO$%!!+#EX)]ei3 :3( )&# XBB c¸d/e/dEиE/eܺE9*AZ*j*]A **)*9*I*]E:QEX_/_ >YEXK/K >YEX/>YEX-/->YEX?/?>Y_901'#"&&&5466676654&'&'&&&&'&&&&'!576654&''5!26766666676632 (#*. +038L!1)*T~T9/#6"dQ#C6$ .7:qppqd) !0%%a4$?-#EX)]ei3">3' $)qJMLJzX1#1'#^A (\0s1_J/ ) XX D XX N?%PSSQO$%!!+u~+@иLEX1/1 >YEX\/\ >YEXF/F >YM+к M9M@кmM901!5&&'!57665!5766667&&'&&&&'&&546663234&''5!2666766666676632'B0pq0B )390R +($(-?$4c%%/ *>2qp3=* /%%b5$>.)#)* Q093* B#!) XX !#%BX #kD3ie])XE#+!!%$OQSSP% 3& XX &3 %PSSQO$%!!+#EX)]ei3Dk#7 X9" Qo!"BM\z +z+Eи Qиzfиf/rz9z|/EX6/6 >YEXa/a >YEXK/K >YR + к% R9REкr R9014&&&&'!57665!5766667&&'&&&&'&&546663234&''5!2666766666676632'7_KB0pq0B )390R +($(-?$4c%%/ *>2qp3=* /%%b5$>.)#)* Q093* \NwIB#!) XX !#%BX #kD3ie])XE#+!!%$OQSSP% 3& XX &3 %PSSQO$%!!+#EX)]ei3Dk#7 5)W + и/EX / >YEX/>Yи/01357265#5%337mToPDOP5)W + и/EX / >YEX/>Yи/01357265#5%337mToPDOP-s% + /+и/0157665#573/Hf7 H/(0/5X" ""*5h)"E\h"#E\-5)"H\5g".5"J85+)&~"++ и /"и/EX / >YEX/>YEX/>Y%и&и&/01#"&&&546767666655!57265#5%33)Au]0H2,vmToZwE'1", ,PwUPDO'l&Q"++ и /"и/ /+%й01#"&&&546767666655!57265#5733l*L=/  y G f6 H6`G) \0G30)/`Z+ ии/EX/ >Y+ и01!57665#53#5%33oqӞTPPfPDOf` + и ии/иEX/ >Y++ ийии01!57665#535#53#5%33#3oqӞT+XPPf{gDOg{f2 + %и'и *EX)/) >Y-+"+"к-9и/-9%"901#"&'!57665&#"#6666332#5%3326667 ';Q5mn #-&X ';Q5 T",'-S>%PP $-R>$DOR $u+  9ии/EX/ >YEX/>Yи и / 9901!57665'7#5%37kq3 N8PP{ToDOwT5+/ +EX/ >YEX/>Y01#"&&&5#5%37%:EfP R(#1&F~hNDO "jm\'' + //01#"&&&5#5737&-BW4f5 o  J *Kh>/)/o?B7 a % ,%++AZj]A )9I]%и/%9./EX#/# >YEX/>Y(+ A!  ' 7 G W g w ]A   ' 7 qAF V q#9%(901%4&#"326667#"&''66667#5%36632--/X,03;-^-OnATw<` V3@K*T/_3$?.0(U_,6.;cG'8YEX&/& >YAIYqA!(8HXhx]A (8q)&901&&#"%!57665&&&&5466632#5%3666670224E&0tAjn9iQ0%9F!. R3*&Z?,'7%/0GbPP#=V71K2 DO +% >'+5 +A &6F]AUe]5 и !и /EX3/3 >YEX,/, >YEX/>Y,AIYqA!(8HXhx]A (8q/,901&&#"7#"&&&5&&&&5466632#5%3666670224E&'#%:EfP 9iQ0%9F!. R3*&10tAZ?,'7%{"jm\'1&F~h#=V71K2 DO =0G5+"\`5IZ +7$+A+ и/$и/AZj]A )9I]A 77&767F7]AU7e7]AKEX / >YEX)/) >YEXF/F>YEX/>YFи)4AI4Y4qA!44(484H4X4h4x444444444]A 44(484q01357265#5%33533266654&&&'&&&&5466632#'&&#"#"&'7mT&h[<,D/"@];8V;1^Y-RD4kV0UQ5WA6ZB%6d[YEX/ >YEX/>Y и01!"57265#5%3!!2666773mT o2PDOT +?1'.++AZj]A )9I].4и4/%49'2'7к;49EX6/6 >YEX8/8 >YEX/>Y,+; +A!'7GWgw]A '7qAFVq8%01%#"&&&54666323266654&&&#"'!!57665#5%3!2Sohk7. + @*T2HtS,:Xk0##7llRs^{G ]P-DQ%+# Jr>LuP)9VPPDOD?l\!p ;+ +(1+A]A )9IYiy ]A &6F]AUe] (9 99AZ1j1]A 11)191I1]6(999:9(=-/EX/ >YAIYqA!(8HXhx]A (8q -9 -9 -9-96-99-9:-901&&#"66667&&&&5466632'6654&&&'' #MI!:,-G2, ($RD-$Ca= GC'2<Md0B4KAW3h62acf6#J>'!6'agGR6Q:$ $qL@ukc/[[X)IJ/K/ܹ J<иYEX,/,>Y++EA]A(8HXhx ]EAIYqA!(8HXhx]A (8q,%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q'и'/(и(/*и+и6и8и<и>01#"'&'5&'&&#"!!!!67763!!5666654&5#534&'#535466632)#.  ;W=&QH2Q=%!8`1=U54lp0raA+";PZ`//d:d7g`X'}@_~Nd: d-jP4S7^,+EX/>Yи013576654&''5!!267737ww m!wXDXX)I9++  +и/  и /01576654&''5!!26773)MMTG M5  44 X 5dW+EX / >YEX/>Y   и /ии013576654&''5!!2666735e eVK nP  PP 5D@ '9a4+EX / >Y+и/01576654&''5!3266473'B B8 G0 00 , )& @+( +A &6F]AUe] и и(1EX!/! >YEX:/:>Y+9!#и#/$и:2<иYEX/>Y + иии01357665#534&''5!!!!267737ww o!uXh XX 3h^)"+ и и"и"EX/>Y +  + и и и и"и#01357665#535#534&''5!!!!!!267737ww m!wXLkkXXkk^<r5+и5"EX/>Y +&1+1к 9+и5и601357665&&#"#6666324&''5!3266673#"&'!26773w3-"b/E^=w n2+"d/E^<   uXP  (3^G*VXXP !)3^G*^!a+ иEX/ >YEX/>Y99и01357665'74&''5!7!267735y4yy8#uXcT XX {Pd"+иEX/ >YEX / >Y и / и / 9и/к 901!266673!576655'74&''5!7sK ne |. eV2f5D@ P TLt PP mK7+"\?7^"t?)S(/++N+(3/5и5/(8к9/N9NUEX7/7 >YEX>/> >YEXH/H >YEX/>YEX/>YEX-/->YH AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/ "и+и+/,и/и0и0/9H 9QиQ/R01!576654&&&#"!576654&&&#"!57665#573666632666632V+F3997V?V+E1?:3V1dT"SXY(,H7) Xbb)Qf;cP 0M6  ^PP+I3  `PPCNf,&)32+;[p4PRoM#-++H+#2к3-H9HO//'/EX1/1 >YEX8/8 >YEXB/B >Y AI Y qA!  ( 8 H X h x ]A   ( 8 qк3B 901576654&&&#"!576654&#"!57665#573666632666632)5  -" N:7 7@(& :? \769:/$:?@4C& @/ :/!l// B4C l// )/=  #8C /w)")")h"E)-e(/++N+Sd+(3/5и5/(8к9/S9SgEX7/7 >YEX>/> >YEXH/H >YEXV/V>YEX/>YEX/>YEX-/->YH AI Y qA!  ( 8 H X h x ]A   ( 8 qи/иии/ "и+и+/,и/и0и0/9H 9QиQ/R01!576654&&&#"!576654&&&#"!57665#573666632666632#"&&&5466672655V+F3997V?V+E1?:3V1dT"SXY(,H7) Xbb)Qf;c-N8 6=P 0M6  ^PP+I3  `PPCNf,&)32+;[p4vx%."- 6B`q!(++[+!,-(!96и(8и8/!;к<([9[Pиdиoиvи!и[EX:/: >YEXA/A >YEXK/K >YEX/>YEX/>YEX&/&>Yc+r+и/и/иии/$и$/%и(и)и)/-c91к2A9KjAIjYjqA!jj(j8jHjXjhjxjjjjjjjjj]A jj(j8jq<Kj9Qr9rUкVA9)^и^/_иj|01!576655#"&'&#!57665&'&&##!57665#6767#573666632666632676733354&&&#"%254&&&#"6VH\YEXG/G >YEXN/N >YEXX/X >YEX"/">YEX3/3>YEX=/=>Y;Y9;Y9;Y9N AI Y qA!  ( 8 H X h x ]A   ( 8 q:;Y9IN 9SN 901754&&&#"!576654&'#576655#7#57665#5736666326666773r= , )&!  $Y'  @$ ! $$ bRA \769:.$ 5;=Z^(`+I3  `BPY*PP FcPP{mPCNf,&)3.*)+]p8?+!,++! и /8C?EиE/8HкI?9EXG/G >YEXN/N >YEXX/X >YEX/>YEX&/&>YEX=/=>YXAIYqA!(8HXhx]A (8q&$(и)и)/2и);и;/<и?и@и@/IX901%#"&&&546667666654&&&#"!576654&&&#"!57665#573666632666632#=]V8+ & +E35s1V?V*E2>;3V1dT"SWX(,H9) W`a)Qh<EuW3*'@Wi;/M7"`PP+H5  `PPCNf,&)32+;\o4oS/9+%+и//>к?99/EX=/= >YEXD/D >YEXN/N >YAIYqA!(8HXhx]A (8q)к?N901#"&5467666654&&&#"!576654&#"!57665#573666632666632=jT)=% ." L:7 5@(& 8? \7599/%9??4D'o>iC## R &4@#/!l// @4E l// )/=  #8C+S*+A4+K+KSи/KиL иUEX#/# >YEX:/: >YEXQ/Q >YEX/>YEX/>YEX/>YQ/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q /9!и"и"/%и%/&и8и9и9/<иYEX6/6 >YEXK/K >Y@+K@и/и/ @9и!и"и"/%и%/&и@-и&4и5и5/8и8/9иIиJиJ/01"3#5#"&&&'#"&&&54&#'5!"32674&#'5!"3266674&#'5! \5799/% 9?@4C& =)8 2B#M  7#: 6>*&!  7-- T)->  "6B V 11 9D 11 5B  11++Sz*+A4++Sи/KиUEX#/# >YEX:/: >YEXQ/Q >YEX/>YEX/>YEX/>YQ/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q /9!и"и"/%и%/&и8и9и9/<иYEX:/: >YEXQ/Q >YF+Q F9и!и"и"/%и%/&иF/и&8и9и9/<ииQиQ/HUR/EX./. >YEX5/5 >YEX3/3 >YEXM/M>Y+M5'ܸ(и8и90133!266654&&&'!"#33!266654&&&'!"#33!53##!"#FP 0M6  ^PP+I3  `PPCNf,&)32+;[p4P=V+F3:97VV+E1?:3VdT#RXY(,H7) Xbc(Qf;c7w, +'+'9'.EX/ >YEX / >YEX/>YEX/>YEX/>Y9 9 и /иии/9"и"/#и*и*/+01!57665#!576654&''5!5!Zba__g)"ZZP ^ PP  P)/P  P7w8#+5+ 59,#595:/ /EX)/) >YEX./. >YEX/>YEX / >YEX/>YEX/>Yии/)9)9и/ии и /)',)90и0/1и 8и8/01%&##!57665#!576654&''5!5!w0& %YEX / >YEX/>YEX/>YEX/>Y9 9 и /иии/9"и"/#и*и*/+01!57665#!576654&''5!5!Z`^bb!ZZP J+ PP  P1V3P  P;m";&" ;h^"E;+^@$/++8/9EX/>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq01#"&&&5466632326665#!576654&''5!5!'$>_XS^3 *  C<"1U>#)f9uEuusso YfhU55R9+ .YU XXDX7=X?\^U +%+<C+C/иC@6и6/<WEXA/A>YEXH/H>YEXP/P>YA!'7GWgw]A '7qAFVq*014&''5!326667&54&''5!3266674&''5!!5#"&'#"&&&5 h/SsDGJF h?bD3NEB) hw:XU]=i33``d7VzIXXDrR-"Kc<XXDrR-&5 XX  X.J3TR&>+;ph;^4;+0+09'0906//01!&##!57665#!576654&''5!5!9,d)Am)f9uEuussnn_KTXi XXDX7=XPb,f}#;++wl+и/A ##&#6#F#]AU#e#]R9wEX2/2>YEX/>YEXg/g>YM+MX01#"''&&#&&#"#4&&&"667%567666654&&&'577666632766663232677&&&&5467%7V6:&! $! ;'6"37*5AS,)+)GTB6*;T\ 786<3)#9-" 5+"  5)2L4#6%i$6=   +/Cf-WE+)&O'6jc['\QZ 3ү+MT$QWZ,f[//0AM+*&=N'w$ J %./ ,P{Yk6>0XZ8,#0 3o)ָ*/+/%ܹ*и/ к%9//EX/ >YEX!/! >YAIYqA!(8HXhx]A (8q!90157654&#"!57665#573666632::E&I":? \7:95W[;/@;>l// )/= cZ/)`"Q)`"Q)`"Q)`"Q) `"Q)`"Q*)h`"QEq)`"QHqb#J8Q)5`BG$++>++$/+1и1/$4к519EX3/3 >YEX:/: >YEX/>YEX/>YEX)/)>Y: AI Y qA!  ( 8 H X h x ]A   ( 8 q'и(и(/+и+/,к5: 9AиBиB/01#"&&&546767666655!576654&#"!57665#573666632`Cu]/H0,V\k9r4V3bR+YXR$ZBwZ5#."+ 1MYEX1/1 >YEX/>YEX/>Yи/иии/19!191RAIRYRqA!RR(R8RHRXRhRxRRRRRRRRR]A RR(R8Rq,1R9619:19CиC/D01!576655#"&&&&''!57665#66767#57366663276673254&#"V+JFFM,V1d#[?.T+YXR$%[@/Z++JFDL+Zk;r4PPP8'1W !CNf.$'1V PVae!H+6 7/8/1ܹ7"и"/ 'к("19EX&/& >YEX-/- >YEX/>YEX/>Y- AI Y qA!  ( 8 H X h x ]A   ( 8 q(- 94и4/501!576654&#"#"&&&54666326665#573666632VZj;r4JyP,>&2*T+YXR#ZPai#rk3'/3"%GgBCNf.$Po6 +1+ " 'к(1918/EX&/& >YEX-/- >Y AI Y qA!  ( 8 H X h x ]A   ( 8 q#и#/$и$/(- 901576654&#"#"&&&54666326665#5736666327 DbA g*>(+)/E cZ /'+8$++($*и*/-к.*9EX,/, >YEX3/3 >YEX/>YEX"/">Y3AIYqA!(8HXhx]A (8q.3901#"&&&546663266654&#"!57665#573666632JxP-='2*al:4T1bT+^]W#CiI&!rk3&/3"%GgBag!^NNCNf.$+QuKo6(+ +  и-к.(9/EX,/, >YEX3/3 >YAIYqA!(8HXhx]A (8q)и)/*и*/.3901#"&&&546663266654&#"!57665#5736666320Od4( l"@E'S" 7? ^7<<8Xa DbA g*>(9=j//)-C cZ'+J8+. +!и!/$к%!.9.:EX#/# >YEX*/* >YEX/>YEX/>Y*AIYqA!(8HXhx]A (8q%*901#"&&&54&&&#"!57665#57366663272J-D,h_--H6;j4 X1f T+WTP$($+.$Cu\0K3!Z  NN  CNf.$ KjJ+ $0uo2ػ+* + "к#9*4/EX!/! >YEX&/& >YAIYqA!(8HXhx]A (8q#&901#"&&&54&#"3!57265#573663272u,@_? 7F%D"YEXA/A >YEX/>YEX0/0>YH+ A!  ' 7 G W g w ]A   ' 7 qAF V q/и// /9A'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q/2и2/<A'9EH901%4&#"326667#"&''666674&#"!57665#57366663266323&0Z,% <-Z2Rl9_l$=0" Z *@T3\k9r4V3bR+YXR$/b6'>**. ;/#349Y>!6(-^UF#_lr4ai#`PPCNf.$*;)B`, +'+ и к'9'.EX/ >YEX#/# >YEX/>YEX/>Y# AI Y qA!  ( 8 H X h x ]A   ( 8 qии/# 901576654&#"!57665#573666632VZk;r4V1dT+YXR$ZBOae!`PPCNf.$ O)+="Q\B34/5/.ܹ4и/к .9!EX/ >YEX'/' >YEX/>YEX / >Y9 и / иии/и/к 9%и&и&/)и)/*и1и1/201!57665!576654&''5!54&''5!^`HVV`^VVP d7 PP  PP - PP  PB" DB" IB?cFd/e/.ܹdи/и.7и7/ 79!к>.9.?:/=/EX/ >YEX'/' >YEX/>YEX / >YEX3/3>YaE+:9 и / иии/и/к :9%и&и&/)и)/*и1и1/2иaMиEV01!57665!576654&''5!54&''5!&###"&&&54632326667'466632^`HVV`^VV0& %<2Rg65hR260/8o0B-/C.n%34P d7 PP  PP - PP  PWD26H0R<" :R217:*FH$;B2" -B" B'&I#c$/%/ܸ$и/ܸ  +"+ и ии"и01#!576654&''5!4&''5!Th LLOL  55  44 44+#$/%/ܸ$и/EX/ >YEX!/! >YEX/>YEX / >Y!9  ии/ии/9и и /01#!576654&''5!4&''5!'^^dX_q a PP  P-Jn PP`#$/%/ܸ$и/ܸ/ /EX/ >YEX!/! >Y9ии/9и и /01"##576654&#'534&#'53 \| == ?T =- m //  1^w 113m"193m"13S"13&"1l3 ^"13^"1*3h^"1E 3^"1H c^ C]D/E/ܸܸD)и)/ܸк)9)9к )9 к )9ии)-и)1и;EX7/7 >YEXA/A >YEX/>YEX#/#>Y+;+;к7979 к 79 и;иииии*и,и.и;001#335#3'#3#3##!!57665#535#534&''5!!4&''5!\wG6nnnnpRQttttT R3%;sssdsd&gXXdsdpX36pXXA+^-M.///.и//+ܹEX/>YEX+/+>Y01#"&&&546663266654&''5!4&''5!#R6`N-@) 3*yur1qe/(04$%GgB1X3XX/{5+^89/:/ܹ0и/9'и'/EX-/- >YEX6/6 >YEX / >YEX/>YEX!/!>Y -90 -901#"&&&546663266655!576654&''5!4&''5!!7`N-@) 3*qCosoqe/(04$%GgBjo XX @ X39k XX/#$/%/$и/%ܹEX/ >YEX / >YEX/>YEX/>Yии/9 и и /ии/9015!5!!57665#4&'/q_Xd^^PP -P  PP f %I#m$/%/$и/ܸ%ܹ++и/ и и /и015!5!!57665#4&'%$K O JJ )p CC C&C CC 0n 5+>?/@/9ܹ?&и&/-к.&99EX,/, >YEX3/3 >YEX/>YEX/>Y3 AI Y qA!  ( 8 H X h x ]A   ( 8 q!.3901!576654&&&#"#"&&&546667266654&''5!666632k/UuE3^XS(?r]6M0""0?%y:hhl>V|JnX EoM*&6bo;,6"0%BY4P  X.J35iiX9B<2/++2и/%и%/2*EX0/0 >YEX7/7 >YEX/>YEX$/$>Y7AIYqA!(8HXhx]A (8q27901#"&&&546667266654&&&#"!576654&''5!666632B=o^6I-"!,9" 8^|DhQjdwo:nnq>VR^n<.6.%AY4eDrR-R?K XXF  X.J3;ph9+<2/++2и/%и%/2*EX0/0 >YEX7/7 >YEX/>Y7AIYqA!(8HXhx]A (8q27901#"&&&546667266654&&&#"!576654&''5!666632@r]6L/" 0?%/SsEgQhwo:jim>VzI+bo;,6!0%BY4DrR-R?IXXH  X.J3;ph/B4߻+)+и 6EX/ >YEX/ >YEX#/#>Y#9/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q01%!576654&''5!666632!576654&&&#"hy:hhl>V|Jnk/UuE3^XS(XXH  X.J35iiXX EoM*&69Dj:7++: :и'ии:&и7-и-/:2EX8/8 >YEX?/? >YEX/>YA!'7GWgw]A '7qAFVq?!AI!Y!qA!!!(!8!H!X!h!x!!!!!!!!!]A !!(!8!q:?901#"&&&54666323266654&&&#"!576654&''5!666632\xtK".&8&ePd9/Rn?4]VR(jdwo:ddmBK|NqQ:]u;2$$ 0DyeIsO*&6 XX  X.J36nn3+y"1\3 q^"1tKOc#8+ A+ Z+P+AZj]A )9I]AZZjZ]A ZZ)Z9ZIZ]PeEXI/I >YEX>/> >YEX*/*>YEX / >YEXL/L>YU+_+"*I9A*I9LM014&&&#"32666'##"&546667666654&''5!466666325!#"&&&5466632V8R48R67Q46S8h #%CgK9J $}%CgK9JtdJ7dWYb43a[Xc5hEyZ44ZyEExY33Yx-$y.TIm<}viN-56-%y.TI T37 ;}vhN.5``hVm??mVUo@@oBs^3<4/5/.ܹ4и/к .9!01!57665!576654&''5!54&''5!hwwll wbw ooX Lg XX H XX B XX XBsm"+Bs9"+ QBs9;]i^/_/.ܹ^и/к .9!к:.96/9/[A+[IиAR01!57665!576654&''5!54&''5!&###"&&&54632326667'4632hwwll wbw oo9,d)A2Rg65hR260/8o0B-/C.n8.34X Lg XX H XX B XX X_KT0Q<" :Q217:*D  F(:9Bs!"+BBs"+-F'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632?!DfEGhC !DfEFhC!Epp~CDrr|ATvFFvTSvGFvRmPOomPR2%'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632!-B-.C,,B-.C,-SuIIuR,-SvJJuP+3\G**G\31]G**G\1ArS0/SrBBrT01Uq1o'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >Y+#AIYqA!(8HXhx]A (8q014&&&#"326667#"&&&5466632#,C-.D,,B-.C--RuIIvR--SwKJuP*73\G**G\31\F+*F\2AqS0.SqCBrT01Ury3ewF1"R("RZFm"R#F{"RMFm"R#F{"RMF"R#F"RF"R#XZF"RwFh"R#EZF"RF"RF"RFm"R#F"R#-F!"R#BF2"R-FO"R#-rFO"R#-rF"1BF"R#B-F"RF"R#-F "RXZFh"REZFy/C:&+ +0+A   & 6 F ]AU e ] 9AZ0j0]A 00)090I0]A ::&:6:F:]AU:e:]EX+/+ >YEX/>YEX!/!>Y ++5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q!?A!??'?7?G?W?g?w?????????]A ??'?7?qAF?V?q01326767#"&546767#"&&&54666324&&&#"32666E@4GK-1?8  1! =`m'p~CDrr|A!DfEGhC !DfEFhC!mF9&+49A32  R KJ+U$OomPRjTvFFvTSvGFvFy2/CGƻ:&+ +0+A   & 6 F ]AU e ] 9AZ0j0]A 00)090I0]A ::&:6:F:]AU:e:]EX+/+ >YEX/>YEX!/!>Y +ED++5AI5Y5qA!55(585H5X5h5x555555555]A 55(585q!?A!??'?7?G?W?g?w?????????]A ??'?7?qAF?V?q01326767#"&546767#"&&&54666324&&&#"326665!E@4GK-1?8  1! =`m'p~CDrr|A!DfEGhC !DfEFhC!mF9&+49A32  R KJ+U$OomPRjTvFFvTSvGFvF-(<3+ +)+AZ)j)]A ))))9)I)]A 33&363F3]AU3e3]>EX/ >YEX/>Y.AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q01#"&55&'&&&5466632374&&&#"32666 8N-SFZ~CDrr|AE[DQ=8!DfEGhC !DfEFhC!.%xv(omPRlm(B6 -TvFFvTSvGFvF-2(<@3+ +)+AZ)j)]A ))))9)I)]A 33&363F3]AU3e3]BEX/ >YEX/>Y>=+.AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q01#"&55&'&&&5466632374&&&#"326665! 8N-SFZ~CDrr|AE[DQ=8!DfEGhC !DfEFhC!.%xv(omPRlm(B6 -TvFFvTSvGFvFM?0+D'+A &6F]AUe]AZ'j']A '')'9'I'] 'D9 /AZ j ]A  ) 9 I ]:?0:9OEX5/5 >YI+5AIYqA!(8HXhx]A (8qI"01666654&&&#"4666323266654&&&&&&&5466632#"&&& 8K*3kY8'CZ3@bB!.+(W1<3!8\v{v\8QRZOL{P;s[87[xBhg4>l^S%IdTVX,7cm+# '#4#"CFMZh}Yxy=0jx_rU-RPS.CiI&-ERFUF )I*/+/* и /+ܹ  и /EX%/% >YEX/>Y+A!'7GWgw]A '7qAFVq%AIYqA!(8HXhx]A (8q01326667'&&&&#"#"&&&5466632%CaABcD%'C`?AaC&Epp~CDrr|AMj?>jNfKd::dK?mPOomPR1o )Ѹ*/+/* и /+ܹ  ии/EX%/% >Y++%AIYqA!(8HXhx]A (8q013266675&&&&#"#"&&&5466632+@*+@-,?(*@+-RuIIvR--SwKJuP*.T?%%?T.=-O<##YEX%/%>Y+%A!'7GWgw]A '7qAFVq3AIYqA!(8HXhx]A (8q01326666675&&&&&&#"#"&&&&&546666632  &:R77Q;&  &;Q77R:& ,GhZZgG,,GgZZhG,4~y_99_y~4`4~y_99_y~41Wf::fWWf::f4r )?*/+/* и /+ܹ  и/%/0132666554&&&#"#"&&&54666320B''>-5G( 8+ HrRTrDAmT[yFyY!*_m&pT *Zc"P|MM}NITN~F1EF/G/2ܹAZj]A )9I]F<иYEX7/7>Y-+-9- и /7A!'7GWgw]A '7qAFVqAAIYqA!(8HXhx]A (8q (# (901#"&&&#"32666'&&&&#"66663232666#"&&&5466632="-",?:=*!/  -F^;FjG$ -E]9DhF&&2#*?86#-D|lo{A@{qo{A%#+#! GzZ3CrDvW1?mR #+#$(]lQQljSS- 1l2/3/ܹAZj]A )9I]2'и'/#и#/1и1/#19'A &6F]AUe]#19!и!//и//0/"/EX,/, >YEX1/1 >Y+"09,AIYqA!(8HXhx]A (8q"09014'32666'&&#"#"''7&&54666327#9$.C-7=(.D, %%-RuIcG[=V&,-SwK4[%N;7?6*F\!*G\3"BT*k>AqS0)f5b*oBBrT0[4FX"*^W#5FG/H/ܸGи/6AZ6j6]A 66)696I6]и/.A ..&.6.F.]AU.e.]39:9 //EX/ >YEX/>Y'AI'Y'qA!''('8'H'X'h'x''''''''']A ''('8'q3 9: 9@A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"'&'''&5466666327&&#"&4&''3266666/={}}])"^=<6QnSS7a)7T66T=* X 5T66T>* s9!:bb_5509B+11VvMME 'ME%*11Uu ;(YEX$/$>Y1A!'7GWgw]A '7qAFVq01&&#"4&'326667#"&''7&&&&5466666327UslranaUolb8gmcT9[@#8gmcR7Y>!>El^^YEX8/8 >YEX!/!>Y@5++AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq014&&&#"32666#"&&&546663266665#&'&&5466632?!DfEGhC !DfEFhC!0GT$Epp~CDrKjR4+ (2&>-TvFFvTSvGFvI1YM=0g7mPOomP$@[7+7B((+9QF"_F"_F"_F "_XWFh"_EWF<=/>/#ܹAZj]A )9I]=-и-/ A   & 6 F ]AU e ]#и/ #9/EX2/2 >YEX(/(>Y2AIYqA!(8HXhx]A (8q(A!'7GWgw]A '7qAFVq7 79014&&&#"32666#"&'&'#"&&&5466632326667?"DgEGfC !DfEFhC!o#0 0EHEpp~CD~rCpkoB#, SvFFuTSuFEu} '-0&  GrmPOonP .K FB7+++AZj]A )9I]A &6F]AUe]9$9A BB&B6BFB]AUBeB]HEXYEX./.>YEX2/2>Y<AIYqA!(8HXhx]A (8q2A!'7GWgw]A '7qAFVq.<9$.<9&и=014&#"6627&&&&5466632327#"'#"&&&546663O/02/ $1/&(C0<]o48qZ97M0NH$-4=%KLU\lNQnJvR-$Gk긩-ZVL9 TdtAwr74mr@xk[#L9*OokRFK|XYtCFS'(/)/ܹAZj]A )9I](и/A &6F]AUe]+# +01%266654&&&#"#"&&&5466632WQsEFwXQtEFwURjqNOlqO CeEFhE" CeEEhE#u{@Fnr}BF 56/7/6"и"/A &6F]AUe]70ܺ "09AZj]A )9I]"09и/(и(/+++01326776654&&&#"#"&&&5467'76632$,FwYQ9FFwYF6#\n~CpN!,EӀpO+ R8EiE#!8J.FhE"0K2FrBt2]G_UZFoAg,\I2p6JV6A#+7+V+и/и/-79A AA&A6AFA]AUAeA]UиU/EX(/( >YEX2/2 >Y +V+и(<AI<Y<qA!<<(<8<H<X<h<x<<<<<<<<<]A <<(<8<qF<P01!326667#"&&&'#"&&&54666326666324&&&#"32666%4&&&#"!o3S=3/)19A$-H:,-9F+HqM))NrH.N<+ 19A":W<)>+,@)*>+*?)* 3't .[H,  K",+#2Uq?@qU1!*+%C]u5]E()DZ14]G*)F[5'.?$EI6JVNV+7+#A+и/и/79-79AZAjA]A AA)A9AIA]UиU/#XEX/ >YEX/ >YEX(/(>YEX2/2>YU+ AI Y qA!  ( 8 H X h x ]A   ( 8 q(9(9-(9(<A!<<'<7<G<W<g<w<<<<<<<<<]A <<'<7<qAF<V<qFAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8Fq<P01547!4&&&#"5666632666632#"&&&'#"&&&%3266654&&&#"326667!Ei"N^*OH? LXc8EoYCFWlCow>?xoGw]BKXd4Y[.-?aBCb? Aa@Aa?,A+1O;#nMxJ!(}-$$:H%%I:#SikR"8F#-H3>oXsCDrQUwFEt2XA&-Mh<FB*?++5++A ++&+6+F+]AU+e+]AEX/ >YEX/ >YEX$/$>YEX / >Y$"&и'и'/ 0A!00'070G0W0g0w000000000]A 00'070qAF0V0q;AI;Y;qA!;;(;8;H;X;h;x;;;;;;;;;]A ;;(;8;q01"&'#"&&&546663232673!57665326665&&&&#"|132YEX-/->Y +-A!'7GWgw]A '7qAFVqAAIYqA!(8HXhx]A (8q7 9K 901%266654&&&#""3266654&&&#"&&&546667&&&&5466632=\=#AZ7:\?!=]@6M20M82K34JEyahwA4ZwD2cO2@nTVl=1Nc3DwY4T4YxDKvQ*1UtBGxX2+0Nc39iP0.Nj<@fH& WrCBsWKfD3UyM[b33b[MwT4 FdFMG-+J+A &6F]AUe]#-#92-#97@AZJjJ]A JJ)J9JIJ]O/YE +(A!'7GWgw]A '7qAFVq E92 E901%266654&&&#"#"&&&546667&&&&5466673266654&'=\=#AZ7:\?!=]:^B#1Nc3DwY4EyahwA4ZwD2cO2%C]718-3M4.J513T4YxDKvQ*1UtBGxX2yD[qBMwT4 @aRWrCBsWRb?3UyMBq[Do"r_9iP0.Nj<_r"F//ܸ и / / /EX/>YA!'7GWgw]A '7qAFVq01#"&&&53326665Epp~C!CgEFhC!tŽOMwXxGFxY2AE//ܸ и /  + и01#"&&&53326665-SuIIuR,+C-.C,AFtV/.TuH5`H**H_6F//ܹ и / / /EX/ >YAIYqA!(8HXhx]A (8q01&&&&#"#666632?#CeDFfD!Fpp|CRrDDrRkNOi2Ap//ܹ и / EX/ >YܸAIYqA!(8HXhx]A (8q и 01&&&&#"#666632!,A--B--SuIHtQ+A1ZD))DZ1@oQ//Ro?P'w(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX#/# >YEX/>Y#AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq014&&&#"326667#"&&5466326lkol45kmol5``^_}ݥ_`z{ݦbb|qmpr9]'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632#FiFHjF""FhGHjG">rbbs>=qccq>Kc9:cIJc;;cKZuDBt]ZuCDvF'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632*T}SVS))R~TUT*Mz{ɏOM||ȎMWrBCrUVsCDsUkQNokQRPm"2Pm"2P"2#G P "2 P"2# P "2 P"2# Pp"2P ,"2#X P["26PhS"2#EP("2P("2PS"2P"2#G PR"2#- P"2#B P"2-P"2#-GP"2#-P!"rBPR"2#B- P&"2zPR"2#z- P"2XPh"2EPy0D;+(+A ((&(6(F(]AU(e(](9A ;;&;6;F;]AU;e;]EX/ >YEX / >YEX/>YEX#/#>Y++6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q @A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&5466767#"&&5466323267674&&&#"32666! =`m+`^_`{DL !?8  6lkol45kmol5 KJ+L?mpr9 0: 32  }ݥ_`z{ݦbbPy0DH;+(+A ((&(6(F(]AU(e(](9A ;;&;6;F;]AU;e;]EX/ >YEX / >YEX/>YEX#/#>Y++FE+6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q @A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&5466767#"&&5466323267674&&&#"326665!! =`m+`^_`{DL !?8  6lkol45kmol5 KJ+L?mpr9 0: 32  }ݥ_`z{ݦbbP-';c2++A 22&262F2]AU2e2]EX/ >YEX/>YEX / >YEX/>Y-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-q 7A!77'777G7W7g7w777777777]A 77'777qAF7V7q01#"&55&'&&546632374&&&#"32666 8N-xf{`^_`{gy=8 6lkol45kmol5.%xv,7pr9.B6 -}ݥ_`z{ݦbbP-';?m2++A 22&262F2]AU2e2]EX/ >YEX/>YEX / >YEX/>Y=<+-AI-Y-qA!--(-8-H-X-h-x---------]A --(-8-q 7A!77'777G7W7g7w777777777]A 77'777qAF7V7q01#"&55&'&&546632374&&&#"326665! 8N-xf{`^_`{gy=8 6lkol45kmol5.%xv,7pr9.B6 -}ݥ_`z{ݦbbPP )A*/+/* и /и+ܹ  EX%/% >YEX/>Y+A!'7GWgw]A '7qAFVq%AIYqA!(8HXhx]A (8q013266675&&&&#"#"&&546632=:jgil:YEX/>Y5,+%AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq016&&&'"26667#"&&5466324#!"#33!2536opfn98liauA.Ux_ghgP<<<<<T<<YW钐_Jg\1gji<<<<P{3GH/I/4ܹAZj]A )9I]H>и>/#A ##&#6#F#]AU#e#]и/и/EXC/C >YEX9/9>Y/+/9/ и /9A!'7GWgw]A '7qAFVqCAIYqA!(8HXhx]A (8q (# (901#"&&&#"32666&&&&#"66663232666#"&&546632)5C-7uwt6*C3!Dnaop8 Em^lo;'5I6#LNMJC'?2(^^^^5)1<1*0eH^#byDYx*#(#"18qqqqP^m"GPVD &++AZj]A )9I]A   & 6 F ]AU e ];9;/AZ;j;]A ;;);9;I;]5FEX-/- >YEX!/!>Y@5+-AIYqA!(8HXhx]A (8q!A!'7GWgw]A '7qAFVq014&&&#"32666#"&&54666663266665#&'&&54666326lkol45kmnl59Zp86:`a+Pvf[+N;# .=!4U=!}ݥ_`z{ݦbb:pdRWvqmd]3zm?KU02 6'%GgPVm"GPVm"PV"PV"XPhV"EP KG:+++AZj]A )9I]A &6F]AUe]:9$:9A GG&G6GFG]AUGeG]MEXA/A >YEX///>YEX5/5>Y+5A!'7GWgw]A '7qAFVq/A9$/A9&иAB01&#"627&&&&54666323267#"&'#"&&54666663ZPP_-@(UW9@66Y@$JuHNrE'IhB-19f32?HU46i29|Cc/W}fr~C8oAr,Q@-u]MI[145A&9'md]3Slz{ݦbFJG˸H/I/<ܹHи/ A   & 6 F ]AU e ]<9%<9<.EX&/& >YEX"/" >YEX/>YEX/>Y0;+&AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq9-и-/.и./=и=/>и>/014&&&#"326665#"&&&54666325!#'&&#!326773#'&&##!27676653F?lRUm>>kSUn?;^{y=:x}^;t  ddmYp@ApVXrAAqjD,1PojQ1+C} jm ' -2pG< +<+A   & 6 F ]AU e ]<9%<96)и)/6*и*/<.EX"/" >YEX6/6 >YEX&/& >Y+0;+"A]A(8HXhx ]9%"9-и-/.и./=и=/014&&&#"326665#"&&&54666325!#'&&##326773#'&&##!27676653&)F67G((F67G)&b=PwO(&NxQ=c&K  AA  F86[C&'CZ35\D''C\)0TrC?qU0(K ?BPBEd .+!+A+A   & 6 F ]AU e ]AGEX3/3 >YEX?/? >YEX'/'>Y3AIYqA!(8HXhx]A (8q'A!'7GWgw]A '7qAFVq01&&&&#"326665!57665&'#"&&&&&5466323266673)?:@*ol4H}b8Y=!z8<9YEX7/7>Y +7A!'7GWgw]A '7qAFVqKAIYqA!(8HXhx]A (8q- 9A 901%266654&&&#""3266654&&&#"&&&546667&&&&5466632X@jK*/Oh:=jN,%IlH5]E($B^:9]B$*E[8Ym5Hc;VfmRBpS.>]?6`J++J`6?]=IoN0 2U}X\i98i\XX1 0PpH`U((UKbaQa-+L+A &6F]AUe]#-#92-#97BAZLjL]A LL)L9LIL]SEX/ >YEXYEX(/(>YG +(A!'7GWgw]A '7qAFVq G92 G901%266654&&&#"#"&&&546667&&&&5466673266654&&&'X@jK*/Oh:=jN,%Il 4cN/8Ym5Hc;VfmRBpS.?Qd/$ H % :,,: (FU'OŻA+-#+A &6F]AUe]-KAZ#j#]A ##)#9#I#]72A79FA79-QEX(/( >YEXY+< A!  ' 7 G W g w ]A   ' 7 qAF V q(AIYqA!(8HXhx]A (8q29F901"3266654&&&"3266654&&&'2#"&&&546667&&&&54666*G42H-+H34G* 7*&9)$9()9!H^7&?P+9bG(=jRWg9(G`9*O>&8`~"8K(&K;%#:K(+K8 .?%!B5!0@%)C/R#B_=6Q7!(B[9AkL))LjB:\B(8Q9B`@F-Ma-+J+A &6F]AUe]#-#92-#97@AZJjJ]A JJ)J9JIJ]OEX/ >YEXYEX(/(>YE+( A!  ' 7 G W g w ]A   ' 7 qAF V qE92E901"3266654&&&#"&&&546667&&&&5466673266654&'*@-*B-+B--AJ0O8&?P+9bG(7bRW`3(G`9*O>&9O0*''$9)$8'/!"8K(&K;%#:K(+K8  0?L*/N<& .DV2:iO//Oi:2XD. $;P1.N>- ]Q2!B5!0@%9PF?!6++A !!&!6!F!]AU!e!]!)AEX/>YEX'/'>Y;+' и/и001!266653!666654&&&#"!33!5&&&&5466$32,Lgu~>?0*+Wd6FooE6cW+*0?]_a aRSv\@%!5'h[{\eØ]]e\{[D'5!M|ۛUUP+G :+ +,+AZ j ]A  ) 9 I ]AZj]A )9I]A   & 6 F ]AU e ],IEXA/A >YEX3/3>Y+AAIYqA!(8HXhx]A (8q3'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q01#"&&&54666324&&&&&#"326667#"&&&&&546666632'64&&46'(JhOxҜZ)KiOwћZ3\cc]33]cd\27))73&&3(OjL*[xOiL)[yc^44^cc^44_+B3: '++AZj]A )9I]  и +'-и 0к1'9<EX/// >YEX6/6 >YEX%/%>YEX/>YEX/>Y6AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq169014&&&#"326667#"&'&'!57665#573676632f%HkF'K" < T|Q(Gy@ ybP,2+pYEX6/6 >Y%+6AIYqA!(8HXhx]A (8qи/и/169014&&&#"326667#"&'&'!57665#573676632;.F.0'7Q4.V}O) O? \5!H'3]E)/0U@%  Z)EXCHvT. // )/=*Oo+B3"S+B3"S+-3?T%,+@+@@9%0,2и%5к6,9%JиVEX4/4 >YEX;/; >YEX / >YEX/>YEX"/">Y ;9;EAIEYEqA!EE(E8EHEXEhExEEEEEEEEE]A EE(E8Eq6;E9PA!PP'P7PGPWPgPwPPPPPPPPP]A PP'P7PqAFPVPq01#"&&&54666726665#"&'&'!57665#5736766324&&&#"326663$ 6YB-D-!=T`y@ ybP,2+p ?  DqBy Dֻ#*+ +#и  и /#и#.2и*4и#7к8*9BиFEX6/6 >YEX=/= >YEX(/(>YEX/>YEX / >Y+A!'7GWgw]A '7qAFVq=AIYqA!(8HXhx]A (8qи/и1к8=9B01326667'&&&&#"#"&'&'!57665#53#5736766323j9 QrJ%%@]>&H!G}r<xbQ*0*lYEX8/8 >YEX'/'>YEX/>YEX/>YEX/>Y8AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq'89389014&&&#"327'76666#"&'&'!57665#573676632f%HkF'K" < -)gTr%8%CF@ ybP,2+p ?  >M\gL OO CNf#(HrW|^<B3=R<+>+ и".и0и3к49AZ>j>]A >>)>9>I>]HEX2/2 >YEX9/9 >YEX/>YEX/>YEX/>Y,%+ A  ' 7 G W g w ]A ],и и/(и,.и./9CAICYCqA!CC(C8CHCXChCxCCCCCCCCC]A CC(C8Cq49C9NA!NN'N7NGNWNgNwNNNNNNNNN]A NN'N7NqAFNVNq01#"&'&'32673#"'!576655&#"#6632#5736766324&&&#"326663Gy@ &*>Rsd yb **;Rre P,2+p ?  Dq+B3: '++AZj]A )9I]  и +'-и 0к1'9<EX/// >YEX6/6 >YEX%/%>YEX/>YEX/>Y6AIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq169014&&&#"326667#"&'&'!57665#573676632f%HkF'K" < T|Q(Gy@ ybP,2+p ?  DqmyŋL OO DM#(H+B1ToU/V/ܹAZj]A )9I]U+и+/  и=и=/ JкK+9EX3/3 >YEXP/P >YEX%/%>YEX/>YEX/>YPAIYqA!(8HXhx]A (8qA!'7GWgw]A '7qAFVq3=A==]A==(=8=H=X=h=x====== ]3EAIEYEqA!EE(E8EHEXEhExEEEEEEEEE]A EE(E8EqKP9014&&&#"326667#"&'&'!5766546666632#"'&''&&#"676632d$GkF'K" < T|P'Gy? yb%>`XR^2* F@"0[E*+2+o ?  DqmyŋL OO bVbdQ3.L9+  *UT#(H/B\DY+ '+E+AEE]A EE)E9EIEYEiEyEEEEEE ]E +'-и 0к1'9;E9 Oи[EX/ >YEX/ >YEX / >YEX/// >YEX9/9 >YEX6/6 >YEX%/%>YEX/>YUA!UU'U7UGUWUgUwUUUUUUUUU]A UU'U7UqAFUVUqU96JAIJYJqA!JJ(J8JHJXJhJxJJJJJJJJJ]A JJ(J8Jq16J9;6J9@01##"'"''#"&'&'!57665#5736766326666324&&&#"32666\%1N7.* Gy@ ybR,2+pYEX0/0 >YEX/>Y090AIYqA!(8HXhx]A (8q)0901654&&&#"!57665#57367666632w *RF('&'%4[|MybP176:<YwHDF?eH'  'K\{l/ OO CN1' ;c&Gk67/8/72и2/A &6F]AUe]8ܹAZj]A )9I]#и#/%и%/20и0/*/+ +# 901%"3266654&&&'2#"&&&'#666676'6666$)6 +B.6-3D6_E()Ha93/% o )Hf/"?Y79Z?!0TA@eE#<#Bc@[|N# >81/'J[d2s>^@!FB^ I߻1++ +A &6F]AUe]AZ j ]A  ) 9 I ]и+и6иDиKEXYEX#/#>Y#<9 #<9#<9#<9014&&&'66667!5766665&&&&54666754&''5!0G01G.}1G.0G08g[ mo \h76g] om ]f7OjDD~jOCiOOi~EaZ  MM  3XcbY NN  Y2I I1++ +A &6F]AUe]AZ j ]A  ) 9 I ]и+и6иDиK+*+5A   & 6 F ]AU e ]AZj]A )9I]5иBкC>59Wи>YиY/5\и]и*hEX[/[ >YEXR/R >YEXU/U >YEX_/_ >YEXb/b >YEXYEX///>YEX2/2>YEXE/E>YEXH/H>YRAIYqA!(8HXhx]A (8qHA!'7GWgw]A '7qAFVqи%к4H9CH9WR9RYܺ]R901&'&&#"3267674&&&#"326667#"&'&'!57665#"&&&5466632#5%36766321"3XA&&AX3"15%@Y3"12"3W@%>qa5 jn6aq>>qb4R5aq>o  HvPPvH  PvH   HvPqN  MM =NqpNCP\N2(RɻA)+ F++AZj]A )9I] и/F#иF5и5/A AA&A6AFA]AUAeA]T+N+и/N.и./:014&&&#"66667!576655&&&&5466632&&&&#"546666632 ! +A+)NoD GH FoN*4Q7  -=#%/7=Q28K-&GgB8HW1At[>  // 2RxR8cJ+  ! ,?,8[F1-YOC1*Jd2pR@A)+ F++AZj]A )9I] и/F#иF5и5/A AA&A6AFA]AUAeA]TEX./. >YEXN/N >Y+NAIYqA!(8HXhx]A (8qи:014&&&#"66667!576655&&&&5466632&&&&#"546666632 ! +A+)NoD GH FoN*4Q7  -=#%/7=Q2^8K-&GgB8HW1At[>  // 2RxR8cJ+  ! ,?,8[F1-YOC1*JdFCG-+ 2+?+AZj]A )9I]2!и!/A --&-6-F-]AU-e-]?EEX/ >YEX:/: >YEX/>Y:AIYqA!(8HXhx]A (8q :9!:9&к2:9014&&&#"6666"&&&5466632&&&&#"46666632#2!0#CdB!΍J&P|U, #'E^6(9HT/]~L!N+^}K >wnYvO׈^{G$,7,HjI^sNBLpQ.F{alѣd3R^67/8/ܹAZj]A )9I]7+и+/  EX1/1 >Y+1AIYqA!(8HXhx]A (8qи/ и //и//0и0/014&&&#"##236667'"&&&'!576654&''5!2}(Wb$"&Q[2To/+l{ՋDKuQ+{(T\qo7XXDX,b&I!45/6/ܸ5и/ "AZ"j"]A "")"9"I"] *+'+0+и'и/'*и*/01#"&&&#!576654&''5!24&&&###236667^H XFP?^[,8Z@*  4U; RDfB! 55  4;^F-F1}2N115 /++AZj]A )9I]и/#и#/)7EX0/0 >YEX"/">Y +0AIYqA!(8HXhx]A (8qи/и//и//014&&&#"#326667'"&&&'6!5666654&&'5!2DkN, 1@eG&ExZ +2=+%)/us92O7L8W?S{Q( PP  PFr3Rm"33R&"33R^=>/?/8ܹAZj]A )9I]>,и,/! к,89=и=/EX2/2 >YAIYqA!(8HXhx]A (8qи/ и /0и0/1и1/014&&&#"##237'766'"&&&'!576654&''5!2}(Wb$"&ZFaTg15w0e6/+l{ՋDi_SKuQ+{>* XXDX,br4<3R^>M?/@/?/и//$и@ܹ AZ j ]A  ) 9 I ]$и/3EX9/9 >YEX/ >YEX2/2 >Y+9AIYqA!(8HXhx]A (8qи/и/0и1и7и7/8и8/012366654&&&#"##3%'"&&&'!57665#5354&''5!2"&Q[2(Wb$To/+l{ՋD(TYKuQ+g5qo7XXgX,b^DKE/F/ܹAZj]A )9I]E+и+/  EX?/? >Y+?AIYqA!(8HXhx]A (8qи/ и //и//0и0/?7A77]A77(787H7X7h7x777777 ]014&&&#"##236667'"&&&'!576654&##"#"&&&5463!2(Wa$#%Q[2So/+ jN63VA%( ՋDKuQ+{(T\qo7XX F %/rk,bAA^5?IR +ии 6и Dи NEX$/$ >YEX/>Y+@+3+и3и$"*и,и6к7$9":и=и=/?и?/CиMи3O01'"&&&'!57665#535#5354&''5!23#3!&&#"##67!254'!!66ToI($r7\igtI?z{ ba"!7tDeC!XXdsdXCiKd  'd;U\pQWV s'.#^ɻ2=+I+Q%+n+d+2 иI'и'/QLAZnjn]A nn)n9nIn]nYиY/AZdjd]A dd)d9dId]EXC/C >YEXJ/J >YEXs/s >YEXM/M >YEX7/7>YEX/>YEX"/">Y,+CAIYqA!(8HXhx]A (8qи/ и /J& AиA/BиB/s~AI~Y~qA!~~(~8~H~X~h~x~~~~~~~~~]A ~~(~8~qIs~9&OиPи_A!__'_7_G_W_g_w_________]A __'_7_qAF_V_q014&&&#"##23666#"&&&'#"&5#'"&&&'!576654&''5!2773!!3267533266654&&&'&&&&5466632#'&&#"$$O|X ! " HvR-0[R&I?4"k?h^a T[+&zbo~=dSQ%7%#^R6'>*:S62N4,T|P(J=.`M,KJ0O:0R;!KuQ+{(TKxS, lz^]-XXDX+bp5f=U5Ǯ%,9+=1.5=I.DnM* M<#4.04@NBP^;YEX / >YEX/>Y AIYqA!(8HXhx]A (8q  9 90и0/1014&&&#"666657265#5%36666323 ;1,ZVO!jGme#WdpjOo*_Q6&@T-cPDO'H7 @hDjĴ<PP8evFGa+NY+$2++AZj]A )9I]$A NN&N6NFN]AUNeN]N,и,/6YN92YEX)/)>YEX/>Yp +A!'7GWgw]A '7qAFVq#9-)f969fBAIBYBqA!BB(B8BHBXBhBxBBBBBBBBB]A BB(B8Bqk)f9014&&&&&&&#"326667#"&&&'#"&'566655666674&&&#"5666654&&&'&&5466632666632t1BMSRN",":md[(BV2{6bS6_XW/3J02\#B4 `)@HL#0HV&#A3#5>5#3IQ.&#3;+VSCp\I138btxb>:\w}`9+@*> *BjG&)-ZJ.T 2!K*V#@pT03P9/H?;ER7AT38(6:?$#l-%#w"A`=-%##%-=`A"UR7X+{{+W86ph\D''D\hp60,+{{,,0RU $=R\a._k9 fExN 1 9k_qF\ XX \ YEX/>Y++!и!/&и&/*и4и6иAиEиE/F01!576655"&&&554&&Ȕ34&''5!26665466633"#czd* 2%H7W<4dTcbTd5YEX@/@ >YEX*/*>YEX6/6>Y@AIYqA!(8HXhx]A (8q6 A!  ' 7 G W g w ]A   ' 7 qAF V q16 901&&#"326667&&&&&&'!57665#"&&&54666725466632G*TW-#KuS/0-P */(!. e}FKM"_j8O؉=o\+B-/?/2ܹ>(и(/A &6F]AUe]к(29EX-/- >YEX/>YEX#/#>Y-AIYqA!(8HXhx]A (8q# A!  ' 7 G W g w ]A   ' 7 qAF V q# 901&&#"326667#"&&&55#"&&&546663272G*TW-#KuS/0-E-C-bf4FMM"_h8P܌JNN +)/1ܹ='и'/ A   & 6 F ]AU e ]к'19EX,/, >YEX/>Y"+,AIYqA!(8HXhx]A (8q"9014&&&#"32666#"&&&5#"&&&5466632720J35J00I24K0:.C-^c3*c9Yd65eZYe6'"*+I+S+A &6F]AUe]IAZj]A )9I]I(и3к4>S9S_EXC/C >YEXN/N >YEX-/->YEX9/9>YEXX/X>YEX[/[>YCAIYqA!(8HXhx]A (8q9 A!  ' 7 G W g w ]A   ' 7 qAF V qXA!'7GWgw]A '7qAFVqN"AI"Y"qA!""("8"H"X"h"x"""""""""]A ""("8"q49 9IN"901&&#"3266673266654&&&#"!57665#"&&&5466632676632#"&'&'G*TW-#KuS/0-< T|Q(%HkF'K" cyFMM"_h8P܌JNN ,2+p  MM rNf}ɍL ^#(HryŋLP+=>/?/2ܹ>&и&/ A   & 6 F ]AU e ]к&29EX/>YEX!/!>Y-+!A!'7GWgw]A '7qAFVq!9801&&&&#"3267#"&&&55#"$&54666663237'0<&pMGiEy3{ElLN]36Ed%MtzUlX')>*"$ K젞H9-8-7h]5.Y Xe: ":kQ0/$4#T+EX / >Y+  ܸи/и/и/01%&&#"!57665#573666632 " B# XB `6(/2 ($ 0/ (/m+(zMz!K+ ++ и/и/и/01&&#"!57665#573666632m ! C# XB `6).2/ & ,+ %+d '$ p#o!ݻ+EX/ >YEX / >YEX/ >Y +AIYqA!(8HXhx]A (8q ии/и/01&&#"!57665#573666632# C" XA `5).20 )# // )/l*' yw/ "U!"U/ "U/ "Ul/ "UI "U*/h "UEO/h2"U#EO-d/ "UHO/- 59 + +$ &и&/)к*& 9EX(/( >YEX4/4 >YEX/// >YEX/>YEX/>Y/AIYqA!(8HXhx]A (8q  и /!и%и%/&и&/*/901&&#"#"&&&5466672655!57665#5736666324&2f5-N8 6=heT?HM$$"  !C<vx%."- 6BNCNGB.  +> + и ии/ EX/ >YEX*/* >YEX%/% >YEX/>Y +%AIYqA!(8HXhx]A (8qи/и/ иии/и/ %901&&#"3#!57665#53#5736666324&2f5eT?HM$$"  !CYEX5/5 >YEX0/0 >YEX / >YB+#+#ии/  и/и/к 09#%и%/)&+ 09:01#"'!57665&'&#"#6666325#573666632#&&#"326667 (:N2 e!$R ';N2 T?HM$$" P4&2f5!%[-R=%PNN$-R>$CNGB. !C<$/+ -+!EX / >YEX,/, >YEX'/' >YEX/>Y'AIYqA!(8HXhx]A (8qи/и/"'901&&#"7#"&&&5#5736666324&2f5'#%9CgP!T?HM$$"  !CYEX"/" >YEX/ >YEX / >YAIYqA!(8HXhx]A (8qи/и/ 901&&#"!57665#5736666324&2f5eT?HM$$"  !C<OM CNGB. #!+и"и"/!%EX/ >YEX/>YEX / >YEX/>Y9A!'7GWgw]A '7qAFVqи/и!и!/"и"/01!#5#"&&&'5332674&''5!3T?HM$$! P5&1g5eGB.  C<?PN9Ca#Z!+и!%EX/ >Y+и/и!и!/01#5#"&&&'5332674&''5!3J7).2 4 " C" WLA `m+'y )$Y 0/ U(+4* + и*6EX#/# >YEX/>YEX/>YEX*/*>Y #9A!'7GWgw]A '7qAFVq#!%и%/&01#"&&&55#"&&&'5332674&''5!7%9DgQ!?HM$$! P5&1g5e(#1&F~hGB.  C<?PN"jm\'va4X* +  EX#/# >Y+#!%и%/&01#"&&&55#"&&&'5332674&''5!7v%-CX4).2 4 " C" WLA  n  J *Kh>k+'y )$Y 0/ ?B7 a +-л+(EX,/, >YEX/>YEX/>YEX/>Y,9%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q017#"&&&55#"&&&'533267#5%3^(#%9DgQ!?HM$$! P5&1g5T"jm\'1&F~hGB.  C<9DO+иEX/ >YEX/>YEX / >YEX/>Y9A!'7GWgw]A '7qAFVqи/и/01!#5#"&&&'533267#5%33T?HM$$! P5&1g5TGB.  C<9DOC+%/ +EX!/! >YEX/>Y01'!5766665466632-  d#b 5cW7H+{!/ >mV   PP  Qf:$+Hy+)и?EX/// >YEX/>YC+'+'ии/!к"/901#"'!5766665&'&#"#6666325466632'326667 (:N2 d#b !$R ';N2 5cW7H+- !%[-R=%  PP  N$-R>$Qf:$+!/ >mVu$+^//% +EX/ >YEX/>Y01#"&&&&&54&&&'&&&&54666327^+B-LsT8!   !,B,LtT8!!,"/Qm|@HgF* , ,"/Rm|@HgG* ,B#A+EX/ >YEX/>Y!и"и"/01576654&&&'&&&&5466632y   !,B,LtT8!dBOHgF* , ,"/Rm|@O0eI9IøJ/K/Jи/и/K+ܺ0+9:AZ:j:]A ::):9:I:]@9+&?+E+и/9и/9и/?#и#/0E901"#"&&&&&&&##"##!576654&''5!234&&&##2332666eYEX/>YEX/>YEX/>YT+и/ и /"и"//)AI)Y)qA!))()8)H)X)h)x)))))))))]A ))()8)q.и./:T9"Dи.JиLиL/MиM/O01!#"&&&'&&&&##"!5667676654&'&'&&'5!234&&&#&##"332666% Pb< &9T@% " T  ^l:(BW/0A+ (JCBjM   %CfE" ,EW*7R4 PP  P=eK6P:& +9G+#@0+C..KB1m"5B1m"5B1("5*B1S"5 B1&"5B1^"5*Bh1^"5EBh1"5#E-B1^"5H 1^ F G/H/8ܹAZj]A )9I]G(и(/и(,к=(89EX2/2 >YEX/>YEX / >YEX"/">Y+2 $и$/%и%/)и+и0и0/1и1/=9%F014&&&32666#"&&&&&&&##!57665#534&''5!23o(Wa^fUZ.$+axG&%Fv`\ojjuE8]zAQc:;dSAgG$Bni 7ZsysZ7-XXkX&WdQtP2FYfd\F*?+1^EV W/X/W+и+/X7ܺ<+79FAZFjF]A FF)F9FIF]LEX1/1 >YEX$/$>YEX/>YEX/>YR+и/и/1/<R9E/KиLиRMиM/ROиO/01!#"&&&&&&&#"7#"&&&&&54&''5!234&&&##33326661$+awI& &Fv_  *8V^>$mtF8]zAQc:;dS<(Va^UY. 7[tyt[7u;jW@',,Mj{E{X&WdQtP2FYfd\F*AeF%DoB+1û + %EX$/$ >YEX+/+ >YEX/>Y+AIYqA!(8HXhx]A (8q&+901&&#"7#"&&&54&''5!6666323<&DJH & 1?Z jfQWW$-0/d, -G1+b[H'0,JnX:[?"Bq^?LM/N/Mи/:и/Nܺ9@AZ@j@]A @@)@9@I@]:DиD/'.+C+H+8и8/013576654&''5!32#3267#"&&&'&&&&##4&##32666Bzz}y}?:\r9.L>139D, )G/HhTH'ISX,"}b4&NmDXDZZ-@lSNsL& 1GV.AiBZ =n\FtS.AXW_u":P;^Lal+x+C0+&+aAZ0j0]A 00)090I0]0и/AZ&j&]A &&)&9&I&]A xx&x6xFx]AUxex]}l9EXr/r >YEX/ >YEX5/5 >YEXx/x >YEX/>YEXR/R>YEXM/M>YEXf/f>Y [+r ;и;/5@AI@Y@qA!@@(@8@H@X@h@x@@@@@@@@@]A @@(@8@qfdhиh/iиi/pиp/qиq/}[ 9i014&&&##2232666#"&&&'33266654&&&'&&&&5466632#'&&#"#"&&&&&&&#"#!576654&''5!23$O{WT MwQ)0[R*QC4^R6'>*:S62N4,T|P(J=.`M,KJ0O:0R;! 'Sg@$%BjUa6``iu?3Tm;KZ44[LBeF$DoKxS, %,9+=1.5=I.DnM* M<#4.04@N 7[tyt[7-XXDX&VeQtP2GZecZF)Bowj|5@+L+a+AZj]A )9I]5к%L9'@9Q@9VL9\AZaja]A aa)a9aIa]lf/&/EXF/F >YEXa/a >YEX"/">YEX/>YEX:/:>Y /+F"%"98и8/9и9/<иYEX/ >YEX/ >YEX'/'>YJ+и/и/'%2J9?и%EиF0166663233274&''5!!"&&&546667&&&&'&&&&'&&#33&&##" 7O& &9T@% XXXJ^l:(BW/0A+  C3iBjMD $DeE" .598Q47 PP  P=eK6P:& *9H+)% +C.w.L1%<LG+=+ 9G"иG*AZ=j=]A ==)=9=I=]NEX#/# >YEXYEX7/7 >YEX/>Y,B+< B,9"и"/GиH01"#!5666654&&"'5!"32676676666324&&&##"32666%CJ(  SE/WB(:l^J*&&*+%BKY P  PP %P&*VF, 7K..C%p<KL/M/Lи/Mܺ 9F*и=AZ=j=]A ==)=9=I=]2и2/FCиC/EX#/# >YEXYEX7/7 >YG+<#Bܺ #B9Gи/"и"/01"#!5626654&&"'5!"32676676666324&&&##"32666,0 6-8+%Gb=   +1:'@4  -B,%,2E+4&  &. #0!,=%00004*D!- (^ARS/T/<ܹS0и0/+0<9Bи0HA HH&H6HFH]AUHeH]EX5/5 >YEX/>YEX/>YM + и/ и/+ M957BиCиMPиP/MRиR/01!57665&'&&#"#"&'&'576676666667&&&&546663!#"332727l'FbB*,#II<+&#?%%9cTHyY2?ƒ jjfgQ!$Q^$X 6JU^^[( V'djk]I5PoJcZ*X X%FfBQmB7GH/I/Hи/Iܺ 9&8A 88&868F8]AU8e8]&AEX/ >YEX2/2>YEX / >YEX7/7>Y>)+2 )>9и/и"и#и#/BиC01'2666766667&&&&546663!!57665&##"#"&&&'33267#".E2! .E0/WB(:l^XXTX %F\;r i"EeD$ DMjBL(D5!F?2 &:P6Ke=P  PP 7$YEX2/2>YEX / >YEX7/7>Y>)+2 )>9и/и"и#и#/BиC0152666766667&&&&546663!!57665&##"#"&&&'33267#".E2! .E0/WB(:l^XXTX %F\;r i"EeD$ DMjBL(D5!F?2 &:P6Ke=P  PP 7$YEX/>YA!'7GWgw]A '7qAFVq$/AI/Y/qA!//(/8/H/X/h/x/////////]A //(/8/q01#"&&&'33266654&&&'&&&&5466632#'&&#"6e[/YL:h[<,D/"@\;8W;1^Y-RD4kV0TQ4WA6[B%)KvP* +8+<1-5=I.DnM* M<#4/05AN1o56/7/ܸ6и/и/AZj]A )9I],A ,,&,6,F,]AU,e,]EX / >Y+ )AI)Y)qA!))()8)H)X)h)x)))))))))]A ))()8)q01#"&&&'533266654&&&'&&&&54632#'&&#"x:2' F=(-*<&%8'|t;[D 785#:*";*[f k ## $,RaX -%'.F"VF&"V"9F"V\F"V\F&"V"\9F"V9Fh"VEFh"V#E9F"VHF"VHF3cCK8++8#и#/.9./AZ.j.]A ..).9.I.]A KK&K6KFK]AUKeK]UeEX=/= >YEX/>YEX/>YEX/>YEX[/[>Y_+A!'7GWgw]A '7qAFVq)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q=HAIHYHqA!HH(H8HHHXHhHxHHHHHHHHH]A HH(H8Hq01#"&'&'53266654&#"5#"&&&'33266654&&&'&&&&5466632#'&&#"6632$?W45+/%6* /YK:h[<,D/"@];8V;1^Y-RD4kV0UQ5WA6ZB%6dI!% 5(0H2P  && %,9+=1.5=I.DnM* M<#4.04@N2KxS o#7F+J`/+:&+& и/и//B:LEX4/4 >YEX/>YEX/>Y!A!!!'!7!G!W!g!w!!!!!!!!!]A !!'!7!qAF!V!q !94?AI?Y?qA!??(?8?H?X?h?x?????????]A ??(?8?q01#"&&&'37# 533266654&&&&&&&5466632#'&&#"6d[%6)!?6 8N-h[<,D/)DV[VD)1^Y-RD4kV0UQ)CUYUC))KxS, B7 -"-$%,9,A3**/>P7DnM* M<+>1))/=P2pJ/+&+ AZ&j&]A &&)&9&I&]&и//и//BEX4/4 >Y!+! !94?AI?Y?qA!??(?8?H?X?h?x?????????]A ??(?8?q01#"&&&'37#"533266654&&&&&&&5466632#'&&#"#A_;# )#k$3D<',-8;8,>Y95," F 7 75,7:7,-H2(!V ?h #'%0!)B. V .$%%0F+I@-+8$+$89/A @@&@6@F@]AU@e@]@и/$89EX2/2 >YEX/>YEX/>YA!'7GWgw]A '7qAFVq92=AI=Y=qA!==(=8=H=X=h=x=========]A ==(=8=q01!"&&&546667265#"&&&'33266654&&&&&&&5466632#'&&#"-N8 6=3]/YK:h[<,D/)DVYVD)0^Y-RD4kT2SS)CUYUC)%-"- 7B3(0 #,9,@3)*/=Q7CnN* M<,A2)*.YEX / >Y :9A!'7GWgw]A '7qAFVq, :9:EAIEYEqA!EE(E8EHEXEhExEEEEEEEEE]A EE(E8Eq01#"&&&'33266654&&&'&'&#"#66767'&&5466632#'&&#"676667 6d[/YK:h[<,D/"@];$R ' 1^Y-RD4kV0UQ5WA6-[-)'"'2KxS, %,9+=1. $-R I.DnM* M<#4.0 $F+/R˸S/T/ܸS6и6/!и!/!9,AZ,j,]A ,,),9,I,]и/и/6IA II&I6IFI]AUIeI]EX;/; >YEX/>YEX/>YEX/>Y'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q!ܸ;FAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8Fq01#"&'37#"&&&&&#33266654&&&'&&&&5466632#'&&#"6d[  )0430+<%Rz_MJP3h[<,D/"@];8V;1^Y-RD4kV0UQ5WA5[B%)KxS, 9KRD- +"/"IooI%,9+<1.6YEX/>Y AIYqA!(8HXhx]A (8q2A!22'272G2W2g2w222222222]A 22'272qAF2V2q01%#"&&&546667666654&#"#76632326773:MY/Zb45Uk65G*OS0Lk [;W99_D&.C+<\ h !EjH=aOB*)-!;J!3PC>""0/:-8+%+)%EX%/% >YEX/>Y01'#"&546767666&'&66632"* &[]_U"+ &\]0C+#,i'?_HwXqA9)#- j(?_HWrA%) /%/01'#"&546767666&'&66632 t`;]<>7 ua<\=, ] ? &9+G4\C'" @ &9+4\D' <0&+#//EX8/8 >Y#8901'#"&'37#"&5546767666&'&66632"* &[](=6 8N-"+ &[^/C,#,i'>_HWrAB6 -".%xv#- k(?`HqWrA%+CA#+EEX?/? >YEX+/+>Y $+01'!#"&&&546667266655!#"&546767666&'&66632"* s:R3-G1|#_ &[]_U"+ &\]0C+#,i'?_Hr;Y<%."-  .!XqA9)#- j(?_HWrA%+ A0+A &6F]AUe]EX=/= >YEX#/#>YEX+/+>Y5++ A!  ' 7 G W g w ]A   ' 7 qAF V q(+=975901&&#"326'&'&&'#"&&&5466632&66632Z?0@429F!* 3( d +"y/M7'@U.D? &\]0C+406?^#,i'>_H????>:)7IW4G'.Q=#WrA%VwGH/I/ܹAZj]A )9I]H$и$/1и1/$>A >>&>6>F>]AU>e>]EX)/) >YEX/>YA!'7GWgw]A '7qAFVq)9AI9Y9qA!99(989H9X9h9x999999999]A 99(989q01#"&'&'33266654&&&'&&&&5466632#'&&'&&&&#"<͐T08+ 3J0AoP-Fj~8?rW3H~f:eYL"u +B/>bD%%GjE]c4NsF k   ]I:@TqN[f6    "=V4/MA8#L^uPm"6P"6# PS"6PS"6P"6# P&"6Ph"6ELPh&"6#ELP"6HLP"6HLP3p,X>++4и4/KиK/A XX&X6XFX]AUXeX]bEXC/C >YEX/>YEX/>YEX/>YEX/>YEXh/h>Yl+A!'7GWgw]A '7qAFVq/A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/qCSAISYSqA!SS(S8SHSXShSxSSSSSSSSS]A SS(S8Sq01#"&'&'53266654&#"5#"&'&'33266654&&&'&&&&5466632#'&&'&&&&#"6632 $?W45+/%6*T07, 4K0AoP-Gk~8?sW3He:gYM"u +C.>bD%%IjE]c4=g1: 5(0H2P  &&k  !>Z9>]I:@TqN[i9 $AX4/MA8#L^uMNv$ j#7Q@A/B/%ܸи/A и /%AZj]A )9I] 1A 11&161F1]AU1e1]:и:/;и;/EX / >YEX/>Y AIYqA!(8HXhx]A (8q6A!66'676G6W6g6w666666666]A 66'676qAF6V6q01%#"&&&546667666654&#"#663232667766773,80Sɀ;8i]FmL(xgh'u Euc{F7\w@&TRL:"+Nl@0K6 #+YEX/>Y ++'AIYqA!(8HXhx]A (8q/и1и5и 7иBA!BB'B7BGBWBgBwBBBBBBBBB]A BB'B7BqAFBVBq01%#"&&&5467#53667!5!6654&#"#66323#!!32666766773(2+yKs5m&Y4>Azm/E0#i ?jYo?Y K). $B2'Fa:+D0  t+YEX/ >Y+ и01#"&5#57733#326767A$JCTZ;:64#  +  ?J)'=J;yk,w#"WB#7"W! "W!"W*7h"WE7"WH7"WH7"WJ873E7,!++AZj]A )9I]!,9,ܸ,'&/EX(/( >YEX/>YEX/>Y1+A!'7GWgw]A '7qAFVq&9("*и+к6&9A01#"&'&'53266654&#"5&'&5#5773!!3267676632\$?W45+/%6*: 4\Z!)=)3&-&215 5(0H2P  && "6zCBf=U5  R h#77+/%++% /EX!/! >YEX/>YEX/>YEX/>Y*A!**'*7*G*W*g*w*********]A **'*7*qAF*V*q*9!#и$к/901#"&&&5466672655#"&5#5773!!326767.N86;?*th\Z!)=)3vv%-"- 7B  lzCBf=U5  )/y%++% и"и"/EX/ >YEX!/! >Y*+*9*!#и$01#"&&&5466672655#"&5#57733#326767RW2%l#' )LCU[<:(!  GF  V!(AI((=%3 7%+ ии/EX/ >YEX/>Y  + ии и и A!  ' 7 G W g w ]A   ' 7 qAF V q%901%#"&55#53#5773!!!!326767&-&d7th\Z!!)=)3+ lzgGCBfg=U5  @+,и2и61/EX3/3 >YEX/>Y;+*+*ии/ A!  ' 7 G W g w ]A   ' 7 qAF V q19$к%19*,и,/3-5и601#"'326767#"&5'&#"#666632#5773!!326667~ (:N2 )=)3&-&d7th !$R ';N2 \Z!!%[-R=%B=U5  R lz$-R>$CBf$^?$+и и"и"/ /#/EX / >YEX/>Y ииA!'7GWgw]A '7qAFVq# 9"# 9017##57733326767#"&''y\ZˤW:)=)3&-&d7ahT2CB9=U5  R JS:70#+ и#'EX,/, >YEX / >YEX / >Y  A!'7GWgw]A '7qAFVq ,9$и%01'!!326767#"&5#57466632!  !)=)3&-&d7th!Vs,B,h)  0DS/f=U5  R lzCB`Q"- +Ȼ+ /EX/ >YEX/>Y ииA!'7GWgw]A '7qAFVq 901#"&5#5773!!326767'-&e8sh\X!RR3spyaCBf {h   14++AZj]A )9I]9%и)к*93/$/EX&/& >YEX/>Y-+ A!  ' 7 G W g w ]A   ' 7 qAF V q$9& (и)к*-901%4&#"326667#"&''66667#5773!!6632u/--I*33 5&^'IhASw<` V3?K*\Z!,O3#?//'U_+6-;bH(:;JN'-dfc-CBf(;7^ Y8-++T+9-T9!-T9)-T983и?иAиA/DкE-T9H-T9T['/F/EXC/C >YEX1/1 >YEXN/N >YEX4/4 >YEX)/)>YEX/>YEX/>YEX$/$>YEX&/&>Yи/иии/'F9'F9!'F91.6и7кE'F9H1.9WиW/X01!576654&&&#"!57665767'7#"&5#5773!!#5%36766632XT/N;<;7X3b&-_^/ th\Z!) Ra)]_(;eK+\P,J6  `PPQ R:OlzCBf=U5 cDOK9 '&LuOP7VWg$+I.+8@+A II&I6IFI]AUIeI].I9$кN898Xܸ8i/ /EX/ >YEX3/3 >YEX / >YEX/>YEX/>YEX/>YS[+ 9"и#и)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q3=A==]A==(=8=H=X=h=x====== ]3DAIDYDqA!DD(D8DHDXDhDxDDDDDDDDD]A DD(D8DqN 9cA!cc'c7cGcWcgcwccccccccc]A cc'c7cqAFcVcq01%##"'#467&'#"&5#57733#3267&5466632#"&'5&&#"6666324&#"32666V7_I V Y4?J*th\Z .F;ObCuW1!+"2-DmL(&<*.D]>&B0o(%);* ( >08cJ*={99D%f9,lzCBf=J' 6.pąC5M2- >oYYEX;/; >YEX/ >YEX/>YEX / >Yии  A!  ' 7 G W g w ]A   ' 7 qAF V q(и;FAIFYFqA!FF(F8FHFXFhFxFFFFFFFFF]A FF(F8Fq01#"&&&'#"&5#57733#327533266654&&&&&&&5466632#'&&#"6d[)PF:%_4th\Z 4)'i\<+E/)DV[VD)1^X-RE4kV0UQ)CUYUC))KxS, lzCBf=X8 ͮ%,9,A3**/>P7DnM* M<+>1))/=P7+G"5+";EXC/C >YEXYEX/>YEX2/2>Y< 2'A!''''7'G'W'g'w''''''''']A ''''7'qAF'V'q,C9 6и701'#"&5467676664'!326767#"&5#5773!'&66632"+ &[]_U"* {)=)3&-&d7th\Z '\]0C,#,i'?_HwXqA9)#- j(@_G=U5  R lzCBgWrA% Ȼ+/EX/ >YEX/>Y AI Y qA!  ( 8 H X h x ]A   ( 8 q9и01#5!5!4&&&#"56766323\[ (>(4'-&e8shf<=V4  R lzXC<o+EX/ >YEX / >Yܸ  ии/иии01#'&&##!57665#"#T j'j T  PP   <!}+ + /EX/ >YEX/>Yܸ и/ииии 01#'&&###4&&&##57665#"#T jiDpUKj T  qXzK"P   <+,/-/,и/-ܹEX#/# >YEX/>Y  +A!'7GWgw]A '7qAFVq и/##!ܸ%и&и*и+01326554&''5!#"&&&5#"#!#'&&##VJONE``eN TuT clla PP ,TzNG  <5Ļ-++!"+!и!7!/EX/ >YEX/ >YEX'/'>Yܸ' и/и/ и/*и*/.и/и3и401#'&&##3!2654&''5!#4&&&#!57665#"#T nraXXiDpUiWn T    PP  qXzK"P   !^@+EX/ >Yܸиии01'&&#!!57665!"#!1ՃwXXmG I?+  ++  ии01'&&##!57665#"#5! UV Ns Y 55  sU+EX/ >YEX / >Yܸиии01'&&##!57665#"#!\ ^3a pӏ PP !S"7!&"7! ^"7!^"7*!h^"7E!^"7H!^"7H!3^B 4#+#49/4и/EX+/+ >YEX/>YEX/>Y>+A!'7GWgw]A '7qAFVq+9+$+)ܸ-и.и$2и301#"&'&'53266654&#"5#57665!"#!#'&&#!#6632Q$?W45+/%6*wy 5(0H2P  &&XmGX#7!^#r + иEX!/! >Y+!ܸ!иииии 01'&&#!!!!57665!5!!"#!1Ճw hXXhGS.^+`+и ии!EX)/) >Yܸ)"и#и'и(01'&&##77!576655'75'7#"#! 88o)o44 eV}Pa}PXX|Tb|T!G!^$'+и% //EX/ >YEX"/" >Yܺ 9ик% 9&и'01'&'&'!57665'!"#!73#1 Ճ^w^aYи01'&&#!!57665##"&&&546663!1Ճ6= !$%0''Ga:XXmEHt )A-?gJ(!^+,+EX&/& >Yи 01#"&'&'754&&&##!57665!"#!2 2%#* |-I4Ճw0YE*hLD/!XXmG:^!+^'U+EX/ >YEX/>Yܸ!и"и&и'017#"&&&&&5!"#!#'&&#!!*8V^>$wy+;jW@',,Mj{EG!\^N++/EX/ >Yܸиии01%#4&##57665!"#!#'&&#!iuwyۋXoG!^,-/./-и/.ܹ EX$/$ >YEX/>YA!'7GWgw]A '7qAFVq$$"ܸ&и'и+и,013266654&''5!!"&5!"#!#'&&#!4N3)E2ujNwyvRoC@iMZZG!\P^:++++и</EX/ >YEX3/3 >YEX / >YEX%/%>Y%и и / и /и/и/и/(и(/,и-и31ܸ5и6013!2654&''5!#4&&&""#!57665#"#!#'&&#k)y llh8fT/>43$vwy@ XX mh2X oG^=>/?/8ܹ>и/,к-89EX$/$ >Y2 +$$"ܸ&и'и+и,к- 2901!576654&&&#"!57665#"#!#'&&##666632d1P<7:<doqp%VXU$3o\;oX1C) !XXkE,"FtXRXu^;YEX/>Y7+)")'ܸ+и,и"0и1к27901#5666654&&&#"!57665#"#!#'&&##666632uL[Qe7.WQ;>?e lpq&Z[X#NPk*YCgGEtS. XXkE)-$A|!%&'/(/!ܹ' и ///EX/>Y9A!'7GWgw]A '7qAFVq015#"&&&5#573326667#573 18>+D0]52#)&! ^7 :4F 1K4M*0q!3$ *0 0#o"g#/$/ܹ# и /EX / >YEX/ >Y+и/015#"&5#573326667#57319>V`^78G)&! ^5 9F ^iK+0pAH +0 /uy1_Rw+b"X+b"Xs+b"X+b"X+b"X+b"X+bm"X#+b2"X-+b"X#-Br+bm"X#B+bm"X#B +bS"X#B+b"X#B-+bP"XS+b "XXs+ b"X+qb"Xs+ob"X>s+hb"XEs+ybDg +<+AZj]A )9I]<9/009*и0FEX/ >YEX./. >YEX/>YEX5/5>YEX / >YEX/>YEX8/8>Y?+ 9%A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q01#"&5466767#5#"&&&5#573326667#573#326767@! =`m+2KW_-BiI'R/L6@:3TZ!?8   KJ+L?u2+'Q}W+FPf6V<  FPP 0: 32  +-b<-+4+&-+- к249&>EX/ >YEX$/$ >YEX/>YEX+/+>YEX2/2>YEX / >YEX / >Y2A!'7GWgw]A '7qAFVq-901#"&55#"&&&5#573326667#573!5337 8N- BiI'R/L6@:3TZK,#=8.%xv'Q}W+FPf6V<  FPPu2 B6 -+-8 +!+&7+и&:EX/ >YEX/ >YEX4/4>YEX/>YEX/>Y49A!'7GWgw]A '7qAFVq01!5#"&&&5#573326667#57337#"&55KW_-BiI'R/L6@:3TZ=8 8N-u2+'Q}W+FPf6V<  FPB6 -".%xv+b 2b+,+ и++9ии!и"и#и,(и+1и,4EX / >YEX'/' >YEX / >YEX/>Y#+A!'7GWgw]A '7qAFVq9и#и#)и+01!3266675#"&&&55#53#573!#5733#\/L6@:3LX_-BhI&RRZk6V:  s1*'Q}Wf5FN75FN7fP#o .//0/(ܹ/и/ к (9иии($EX/ >YEX#/# >Y+++ и /иии и%и&и'и(01!3266675#"&55#535#573!5#5733#3 :G)& 19=V`^^^5\5VV 9@AH }F ^iV=(0(0= /+A(+ + 'и,и8и8/-и-/2CEX/ >YEX+/+ >YEX / >YEX/>Y=2+ 9"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q-901!5#"&&&5#573326667#57366665#&'&&54666326Wo9ZKW_-BiI'R/L6@:3T#D5!  %1%C3B2g\JPu2+'Q}W+FPf6V<  FP2=I*(+ :Q+"y+"yD+"y+ "yX+h"yE+v>J+4#+0J+0и4'к(0903и3/4IиI/0LEX/ >YEX&/& >YEX+/+ >YEX/>YEX / >YJ3++DAIDYDqA!DD(D8DHDXDhDxDDDDDDDDD]A DD(D8Dq(+D99A!99'979G9W9g9w999999999]A 99'979qAF9V9q>901%#"&'#"&&&5#573326667#5736632!3266674&&&#"!v+]cf4qB9smb(BiI'R/L6@:3T:S_`0g!Oc,VSL#1K33XC)f."RZ$>/'Q}W+FPf6V< FPc03?o[N|M$-3W@%'JiB3@&_+AZj]A )9I](%/ / +!+01##!#'5!266654&&&'!#'5!26773'u2+'Q}WFP6V<  RFPqPKW_-BiI'R/L6@:3TZ&{&+A]A )9IYiy ]( /EX%/% >Y +!+01##!#'5!266654&&&'!#'5!26773L 5Q9.4#8' B.4= 4-49'?,U1 -!'# V2 6n'N+.>+A &6F]AUe]и#к).9AZ>j>]A >>)>9>I>].PM/5/93+ +I)++)C012#"&&&546662#"&&&54666##!#'5!266654&&&'!#'5!26773* )) )**))u2+'Q}WFP6V<  RFPqP)(()l() ((<KW_-BiI'R/L6@:3TZ+0 ++AZj]A )9I]EX/ >YEX*/* >YEX/>YA!'7GWgw]A '7qAFVq*01#"&&&5#5733266654&&&'#&'&&5466632@yoFmCT3Rf4YEX*/* >Y+01#"&&&5#5733266654&&&'#&'&&5466632*NrH.YG+]7!5C"'B/ w !8.$ TC{]71O8G*/i#3 *Jb9.,$   *9?BF3+4/5/ܸ4 и / 9A &6F]AUe]$AZ$j$]A $$)$9$I$]) 9EX/ >YEX)/) >YEX/>YA!'7GWgw]A '7qAFVq01#"&&&5466676&''5!3266654&&&'!?|y~y: 19 }3*"2Oa02bN1#*5} :1 ]SS]@zlX  E#Xs^uk33kugoP#E  Xlz1`34/5/ܸ4 и / 9A &6F]AUe]$AZ$j$]A $$)$9$I$]) 9EX/ >YEX)/) >Y+01#"&&&5466676&#'533266654&&&'3")PxNRyO&!&R  4? @3 R % '8jR11Rj8%J@5 )4EX8FeAAeF>YB0) 5@Jz ;5YEX./. >YEX/>Y)+A!'7GWgw]A '7qAFVq ии)и)901%26667!#"&&&'#53666676&''5!!&&&&'!3//]L35M\@|w}x<_h #*. }3'!#"'5} .+# iB-^ff^-\QQ\g2^QC  E QhRZdK E  CQ^2g7#-8.I+U +#+- +*+и*ии/'01#"&54&''5!3266654&''5!H -VSGSL 1XEEY2L! -LnH# 44 M6Z?$&AY3 44d. +%+0EX/ >YEX,/, >YEX / >Y A!  ' 7 G W g w ]A   ' 7 qAF V q01"#"&54&&"'5!"3266654&&"'5! 9mi$*-'dF&(Hc; PPa.I +%+0EX/ >YEX,/, >Y  +01"#"&54&&"'5!"3266654&&"'53 %GiD  'D65D( ,7N4hiM00%<*+<#700?{m"8?{m"8?{("8?{("8?{S"8?{"8?{"8#I ?{"8-?{"8#-B?{"8#BI ?{"8#B ?{"8#B ?{R"8#B- ?{"8?{"8X? {^"8?q{^"8?o{^"8>?h{^"8E?y{^J +B+7*+AZj]A )9I]B97LEX / >YEX/>YEX/>YEX>/>>YE+ %A!%%'%7%G%W%g%w%%%%%%%%%]A %%'%7%qAF%V%q01#"&5466767#"&54&''5!3266654&''5!326767L! =`m+4;m uLkjNuwDC=X!?8   KJ+L? XX+Zj;>mUXX~<7 0: 32  ?-{^@ɻ +8+1$+1BEX/>YEX / >YEX7/7>YA!'7GWgw]A '7qAFVq01#"&55&'&54&''5!3266654&''5!37 8N-w{m uLkjNuwDc@L=8.%xvw{ XX+Zj;>mUXX~xB6 -1^ 7+ +и&и(и 4и 9EX/>Y(+A!'7GWgw]A '7qAFVq ии(и(501!3266657#"&55#534&''5!!4&''5!3`HLkjNyDŀm uuwZj;>mU~x:hXX3XX3ho :A++и и /(и)и*и+и:2и2/7и<EX!/! >YEX1/1 >YEX/>Y*+A!'7GWgw]A '7qAFVq ии*и*801%266655!#"&55#534&&"'5!"!4&&"'5!"3dRi=dF&p\V(^G PP G PP^` 7+ +и&и(и 4и 9EX / >YEX./. >Y+(+ ии(и ܸ"и"/#и,и-и-/0и0/1и(501!3266657#"&55#5354&''5!!54&''533K(F78F)?#EgBWW 8= j => X0E&@./@$E[7O3jh[- &&  && -?F+%+=+1к297AZ=j=]A ==)=9=I=]EX / >YB7+  A!  ' 7 G W g w ]A   ' 7 qAF V q01#"&54&''5!3266654&''5!66665#&'&&5466632?p\Dŀm uLkjN`bHfA +<%0UA&`c~x: XX+Zj;>mUXXPiQ16('If?m"I?m"?"?"X?h"E;V6+ +AZ j ]A  ) 9 I ]EX/ >YEX0/0 >YEX/>YA!'7GWgw]A '7qAFVq0%01#"&&&&&54&''5!3266654&&&'#&'&&5466632V$Jpu0ih^H*sm9aGXO"3=  1=7g[K6lȯg9.IfS+ Tw\\-WSlN )"6&8aP'^5+6/7/ܸ6 и / 9A &6F]AUe]$AZ$j$]A $$)$9$I$]+ 9EX/ >YEX+/+ >YEX/>YA!'7GWgw]A '7qAFVq01#"&&&5466676&''5!3266654&&&&&'!'O虙O*?H f;7'?kKKj@&'%i I?+rrZ~' \0xЈFFdeRE \ '~'nEX/ >YEX/ >YEX/>Yи/иии/ 9и/01#'5!6&''5!qb\f PPPP'nEX/ >YEX/ >YEX/>Yи/иии/ 9и/01#'5!6&''5!qb\f PPPP4&//EX/>Y 901%#'5!6&''53qVI&?  YEX/ >Yи/иии/ 9и/01#'5!"6&#'53mVJ'?  ;)11  11&tw'"h'"EJ-',+.EX/ >YEX*/* >YEX/>YEX/>Y*и/ии и /$9(и(/)01!#"&&&546667266655!'5!6&''5!@:R3-G1|#qb\f;Y<%."-  .! PPPPN!D/EX/ >YEX/ >YEX/>Y9012'#'5!"66667H+#qb۸0FcN$+!/ 1H/ PP89fN-+z"+AZ"j"]A "")"9"I"]EX'/' >YEX / >YEX/>Y'901#'5!"6666'&&&&#"&&&5466632,GVUHqb0dO1 b'$.H_8Jr]" PPX7L1)M#.3Qd 6(+A ((&(6(F(]AU(e(].(9EX#/# >YEX4/4 >YEX/>Y#AIYqA!(8HXhx]A (8q#9.#93и3/6и6/014&&&#"66%#&'7267'&&54666326&#'5! &( #/5P-9 7H)*R?')7\gB$ @"(/V~;"B3 .B*3P>-PPb";"#; <"#;# 'nEX/ >YEX/>YEX / >Y9 и / иии/и/01!5766'!573bc\mfIqPPP  PaDEX/ >Y+ и / иии/015766'#573A  ;GWJ0  000+I!+ +AZ j ]A  ) 9 I ] 90 9KEX>/> >YEXD/D >YEX&/&>YA!'7GWgw]A '7qAFVq&>9DAIYqA!(8HXhx]A (8q&>90&>93к8&>9014&&&'326664&&&#"#"&&&546667&&#"'46663266324J0,J6+.I4"A#-1v>Vg9.V}OG5&6:ZT;+%%+:T]"aƸb/c/+ܹAZj]A )9I]b5и5/<иYEX]/] >YEX0/0>Y0Q9A!'7GWgw]A '7qAFVq]AIYqA!(8HXhx]A (8qAкW0Q901%4&&&'32666#&&&&#"#"&&&5466677'&&&&#"#&'&&54666327666632}  D *#$?9599 6N39U9 H )0)(?*D10TK@hV'NIA.G0-.+ )-, ~3 78)(@O(V_$0.7*#G:%4D&$06l1*(68$1_J.'BU.:fL-$YEXY/Y >Y ,+YAIYqA!(8HXhx]A (8q=014&&&'326#&&&&#"#"&&&5466677'&&&&#"#&'&&54666327666632  R+)%"%% #3!%7% 0Y ) + 70*E730*.w  !   !!&/67!," ( B  " 9-'3fL#>-$/N;EYEX9/9 >YEX/>Y,9A!'7GWgw]A '7qAFVq3,901%4&&&'32666#"&&&546667'5!6&''5!s   l1(6O39V9+-uV `q'&! &(! F"?BF*#H:&5D% B=5 PP I  PP++D;+A ;;&;6;F;]AU;e;]EX/>Y@A!@@'@7@G@W@g@w@@@@@@@@@]A @@'@7@qAF@V@q01#"&&&54677'5!6&''5!4'&&'&'32666" 7U::R3 l}d ! ft    } L?6/##RG0'YEX&/& >Yи/иии/ 9$и$/%к1901#"&&&5477'5!6&''534''&&'&'32666#7'&4" HR1?  D      )7-& <  1*%,11f11J   FD;~Y7(+7-01%666653#"&&&546767&&&&&&#"#"&546666632(KD0,DSO?  "%!3?@<  %0ZUQST2.<80k''QB*!;R22q29:0qF'/'+$ +25*X2*ai;Y(97A!77'777G7W7g7w777777777]A 77'777qAF7V7q01666653#"&&&546767&&&&&&#"#"&546666632l1,g,63)    !)*'    ;741oqo2P\`YN$!@1'$1D"#QWUD* 5o2aF;uYEX/ >YEX/>Y 901#'5!6&''5!5+yy hZ qXX    XXJ@EX/ >YEX/ >YEX/>Y 901#'5!"6&#'5!ch bX}j PP L PP?"^h?^"Eo?4%+%AZj]A )9I],%9 //EX / >YEX/ >YEX2/2 >YEX/>Y 9 9, 901##'5!7666654&&&54666326&''5!5tjOyy -   * "e}Z qFJ;HXX  n-OOT33.1 #7C@yqe,  XX^"?T X^"#?T? ^"#?T#?? ?@EX/ >YEX/>YEX / >Y901!5726'!573Vy qju͜xX    XXX EX/ >Y01!!5726'3!573ifh`RP h PP{ B^AEX2/2 >YEX?/? >YEX&/&>Y&29A!'7GWgw]A '7qAFVq?0и0/1и4и5и5/9&29=и=/>01%4&'&&'&'326#"&&&54677'5!6&''5!   &(^'!?bCD^; }Ls5N w  ()  +K>5-#!"J=(3@"*A PP K PP a\//EX/ >YEX/ >YEX/ >Y99901##'5!36&''53ƶ__I$? o_{ =*400 3 00/"Z/"Z/"Z/"ZB/"Z/P"ZKh/"ZENh%i!/EX/ >YEX/ >YEX / >YEX / >Y !9 !9 !901'##'5!3666632h#)*0q`BXqG$;*#Eb>nZ PPIj@%. `5EX#/# >YEX+/+ >YEX3/3 >YEX/>YEX/>Y+и/#9 к#9к#9и/и3#9!и!/"и%и&и&/*#9-#91и1/201##'5!"36&#'53##'5!"36&#'53Ʒ^`J%? q^{ ;C^`J%? q^{ ;400 3 00 511 3 11/EX/ >YEX/ >YEX/>YEX/>YEX/>Y9 9 и /иии/9и/01!5766'#!5733o`^iqP}PP  PF5Wػ J+,+6+AZj]A )9I]A   & 6 F ]AU e ]A ,,&,6,F,]AU,e,],%@,96YEXQ/Q >YEX;/;>YEXE/E>YQAIYqA!(8HXhx]A (8qEA!'7GWgw]A '7qAFVq1к@;Q9014&&&#"3266654&&&&&5466632326667#"&&&'#"&&&546666632F2fhff3*?)*)PuK4aP8 :Pa3KvP*Adljb@[]]Z44vEX/ >YEX/ >YEX/ >YEX/>YEX/>Y99901##'5!"36&#'5!ak  pb{lPP  PP^m":2^m":^S":^!":B^&":eh^^":Eo2i!/EX/ >YEX/ >YEX/>YEX/>Y!9 !9!901#'5!3676666766667666632'"wz AJ  !!&7BP2$A0(@>;!oXX d)y4lfZ!Qy`N! ,-$ ~^lp^ BEX./. >YEX7/7 >YEX@/@ >YEX/>YEX"/">Y +6 +6к.9.9и  и и и и6и и ии и$и &и (и6*и69013'7##%37#3'#37#3#3#####53'#53'5!3336&''53T*,S 'Ytԡwz3:UZjhY[=GI:\^[4 McdsssssudsdIIdsdXX n XX'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!76&''5!HE gzu%yG Xpn/oP  PP}PP   PPEP'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!76&''5!HE gzu%yG Xpn/oP  PP}PP   PPEP4'-/ /EX/>YEX / >Y015766''#577''5!76&''53, s BLO%/ it 9HI4000 0000 0 `'-/ /EX/ >YEX / >Y015726''3#577''5!76&''53{/r ANP'/ fu9HH/// 1111 /w"B"+;v+EX(/( >YEX5/5 >YEX/>YEX/>YEX!/!>Y(9/(901#"&&&546667266655!5766'!57'5!76&''5!$9' E gzu%yG Xpn/opy-5)  0#P  PP}PP   PPE-EX/ >YEX'/' >YEX/>YEX/>Y++ 9и+к9!901!5766'!57#53'5!76&''5!3oHE gzuyG XpnPP  PPggKPP   PPgB<+AZj]A )9I]>EX+/+ >YEX8/8 >YEX / >YEX/>YEX$/$>Y +92 +901%#"&&&'&66676654&&&'!57'5!76&''5!#-Ok@6+" gzu%yG XpnV78:"6kU5#/("`*352 PP}PP   PP-q-+-//EX/ >YEX&/& >YEX/>YEX/>Y 9 9014&&&##5766'!57'5!76&''5!ChI?E gzu%yG Xpn/oXzK"P  PP}PP   PPEq;""#+3^EX/ >YEX&/& >YEX/>Y 9 9%9'901#"&&&'#&&&&#"&&&54666323372,PmB4N<-]w(+6%*#-QnB4N;,_I+s(,6$)")D1$C`;+{IW/%)E3!@]<I\3%R3P/ //.///EX/>Y 9 9%9'901#"&&&''#'&&&&#"&&&54666323372R4F+"3' <Պ1N#T 5G+"3& >֊J#V )(:#,4t  *&8$?7,7 v Rp3U/ /EX/ >YEX&/& >Y 9 9%9'901#"&&&''#'&&&&#"&&&54666323372R4F+"3' <Պ1N#T 5G+"3& >֊J#V g)(:#,4t  *&8$?7,7 v ^'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!6&''5!v {M{h iX N  XX5HXX  {XXX^'[EX/ >YEX / >YEX/>YEX / >Y9901!5766'!57'5!6&''5!v {M{h iX N  XX5HXX  {XXX!"BF&"^-EX/ >YEX'/' >YEX/>YEX/>Y++ 9и+к9!901!5766'!57!5!'5!6&''5!! _v {M{Çh i>XX N  XX%gXX  {XX gB^>+AZj]A )9I]=и=/@EX/// >YEXYEX / >YEX(/(>Y" /96 /901#"&&&546667666654&&&'!57'5!6&''5!hl0%2^T9- '2{M{h i*MIDJxW/$2'"l /;G,N  XX5HXX  {XX\^+q+++-/EX/ >YEX$/$ >YEX/>YEX/>Y 99014&##5766'!57'5!6&''5!Zv {M{h i\X N  XX5HXX  {XXr^"? ^"#??B))nEX/ >YEX'/' >YEX / >Y'и/иии/! 9%и%/&01#"&&&546766667'5!6&''5!w !-8 %X5$8&#1*# qbamBMUU %*!*#;XJQQ"} PP\PPa)3 /EX/ >YEX'/' >Y! 901#"&&&546766667'5!6&''53t &:!$ }"I&?  ?*297 #506600 k 00+)"\B5"+)"\ +)"\B)"+)"\+)2"\-B)2"-B)"B+)"\+)P"\>+) "\X^)"\EKq+)5EX%/% >YEX3/3 >YEX/>Y-+3-иии-!и#и#/$и'и(и(/1и1/201%!3##"&&&546766667#53''5!!76&''5!F D} $1; %Y4$8&#4.& @qb1}3amw gNT_\ %) +#;XQZY"qg PP~~PP+%632/EX#/# >YEX/>Y*2901'#"&&&546766667'5!66666632%#&*3 !-9 %X5$8&#1*# qb )4>FL($;*#Eb?mXT_\ %) +#;XQZY" NNw%WXQ>&%.By"E + и/ 9EX/ >YEX / >Y01!57665'5!6&''5!ہf  qu TT 5oRR  uRRBy(+и/ 9EX/ >YEX&/& >YEX/>YEX/>Yиик 901!!!57665!5!'5!6&''5!P0́f  qud TT +dRR  `RR))nEX/ >YEX/>YEX / >Y9 и / иии/'и'/(01!5766'!57666676632'dc`k &1 %X5$8&#*" \qP\PP EKL %+!+#;XAGI" P])7/+ и / ии'и'/015766'#57666676632'@  >F :"% ~I0 j 00@)-. $5'+,0)N%+A &6F]AUe]EX5/5 >YEX/>YEX/>Y* +59и/иии/-59LиL/M017&&&&#"5766'!57&&&&5466632666676632'667$A\9 ,*(c`kGuT/4L1C9 "+%X5$8&#*" /7s<3@y> q 8,G]6'P\PP  1EY3$E6"9D%+!+#;XAGI"y=0H3EU P8(EX&/& >YEX / >YEX/>Y &91A!11'171G1W1g1w111111111]A 11'171qAF1V1q 19&AIYqA!(8HXhx]A (8q01%#"&&&'#&&'&'&&&&#""&&&546663232772:\A4P@3 $!![*":\A4Q@4b$"! X*#:P1#@]:-#=3A% #+:P2YEX7/7 >YEX/>YEX/>YA!'7GWgw]A '7qAFVq39939 390132772#"&&&'#&&'57&&#""&&&54666327-T$"! X*#:\A4P@3  9[*":\AXn+n3E*#+:P1#@]:- 9⓼E0 #+:P2UR;78/9/2ܹ8и/%EX/ >YEX+/+ >YEX/>Y" + "95и5/601!57665#"&&&54&#'5!"32674&#'5!"LRBCA*]P4[R "<0,S0R\\PJ!3U?"PP#0VPPP;"B;9>#+  +9+ &и (и,и9@EX/ >YEX2/2 >YEX/>Y9<и/[RDGs"HR\\PJ "1A*"PP<;VPPP;=#+8 +=+ +и=2и=?/EX/ >YEX1/1 >YEX/>Y(+ (9;и<иYEX/// >YEX/>Y&+ &99и9/:01!"#7665#"&&&54&#'5!"32674&#'5!"͋eRBCA*]P4[R "<0,S0R\\J!3U?"PP#0VPPP^ 9 + 9EX/ >YEX/ >Y01!57665'5!6&''5!dwwg!= sVEXXXX  XX r + и/ 9EX/ >YEX/ >YEX/>Y и и /9013!57265'5!6&#'5! s3lc\  b^}'PP PRi PPb G + 9/EX/ >YEX/ >Y901!576655'5376&#'53X CD @5 >3پ %% 1 %%  %%m"<m"<[S"<2"<"<-*&"<"<Xh^"<E^,q+9EX/ >YEX&/& >Yܸиии к&9 *и,01!!!57665#53''5!!76&''5!3ewgSZ soqwEXXgXX  XXg^&S+9EX/ >YEX$/$ >Y+и01!!!57665!5!'5!6&''5!VEwg!= shpXXhiXX  XX3 + 9EX/ >YEX./. >Yи/ и /и.$A$$]A$$($8$H$X$h$x$$$$$$ ]016&''5!!57665&'&&#"#"&&&5466632so &.WA&),Kc65RB6XXVEXX   %/C`> %D6-, +# 9)/EX/ >Y01'"!57665'5!666632*(+wwg!3QWkL0H11"5(?-EXXXX  VtG&2 ^&nEX/ >YEX$/$ >YEX/>Y$и/иии/9"и"/#01#"&&&546667667'5!6&''5!EWlB0F-#&> L Z@}6aI*'-"$#Xf6 XXdXX m"+ 9"+ Q "+- !"+B?^9C:/;/4ܹ:и/'" + "901!57665#"&&&54&''5!3266674&''5! d%ckj+;pX6od+?)!Y\UdooX2*FtXXXw0C) &XXX?!"0B^?^@i+@+/$+и@к /9$;к</9/B+<901%#"&&&54&''5!332736674&''5!!57665e/$;pX6od+?) {4c#dood$a58 FtXXXw0C)z+XXXX1?\^=Q!+8 +=+ +и=2и=?/&+ &9014&##57665#"&&&54&''5!3266674&''5!Cd%ckj+3o\;od)@-!Y\Udoo\X2*FtXXXw0C) &XX?\^AQ%++< + /и4и<C/*+*901!"#7665#"&&&54&''5!3266674&''5!:DE9#id%ckj+;pX6od+?)!Y\Udoo-D]wI2*FtXXXw0C) &XXXFm9EX / >YEX/>Y  0135!"#!!2666773Fi om#T #/`(EX / >Y + 015#"#5!!26773#`  F H@Z3 cFm"]>Fm"]Fm"]Fm"]qFm"]*Fhm"]EF+)h! + и/!+EX/ >YEX/>YEX / >Y 01#"&&&55!5!"#!!266677337.F-IgBBk o% 0'6R8m #T G6 *2$a)L! + и/!+EX/ >Y+ 01#"&&&55!5#"#5!!266677337$-0C+7a  F  H}I 1"AZ2 a+ QF+m)`+(и(/EX/ >YEX/>YEX/>Y!01#"&&&546667266655!5!"#!!2666773m-E/  Bi opk'0+  0$m #T FmSEX / >YEX/>Y+ ии0135#53!"#!3#!2666773F}i omZgM#Tg /m@[EX/ >YEX/>Y +! 9+и 1и70135&&##"#666632!"#!33266673#"&&&'!2666773F+%R ';N2 !$i %R (:O2  oml"-P>$- #Tw"-P>$ F 2+AZj]A )9I]4/EX%/% >YEX/>YEX/>Y.+%(и)014&#"326667###&67!5!"#!36666323),E5& S-J5c3Qe2{ Y iϙ>Rh>6( #=R..<%9bH)H4HY +.+и% (014&#"326667###&67#5#"#5!3666632-"60"A!5B P:a  Ec (6C(#$2$";++T+O$AZ3,F1  F +AZj]A )9I] /EX/ >YEX / >YEX/>Y  01!"#!!#666654&'!5diOONB n{#T'7GA-6:/mF +AZj]A )9I] /EX/ >YEX / >YEX/>Y  01!"#!!#666654&'!5diOONB n{#T'7GA-6:/mF+%JEX#/# >YEX/>YEX/>Y#9#01%37#"&&&&&##5!"#!HNOG<+<%E}rh`Y)>ib Kep^> +"/"EiyiEm#TF9EX / >YEX/>Y  0135!"#5!!2773FXh qsN1NPJm"=PJS"=PJS"=PJ&"=PJ^"=* PhJ^"=EP-J^%h$+ и /'EX / >YEX/>YEX/>Y  0135!"#!!26773#"&&&5466672655PyG#y-N8 6=ZG^hvx%."- 6BPJ^SEX/ >YEX/>Y+ и и01!26773!5#5!!"#!3G#y6yZVgG^gPP^ +AZj]A )9I] /EX/ >YEX / >YEX/>Y  01!"#!!#666654&'!5JyQVB G^h0YEX / >YEX/>Y  01!"#!!#666654&'!5JyQVB G^h0YEX/>Y 01!!!#&&&&#!"!2673?i/# A`x@{   DZ'YEX/>Y 01333!!"#!Py#\uky{a/G^Z++V++3(+AZj]A )9I]EX,/, >YEX/>Y/ +A'7GWgw ]A]A!'7GWgw]A '7qAFVq,%01#"&&&54666323266654&&&#"'!"#!2Sohk7. + @(W1HuR,:Xk0#"8#j7s^{G]}H,DQ&+# Cj>M}X09wDFu!a3h+AZj]A )9I]EX,/, >Y+/ +,%01#"&&&54666323266654&&&#"'!"#5!26]~HDgE$ *9/L6&9E $  E=jP. 8cK+)0  r(@M%.K5"^R*G[++"V+mCX +++AZ+j+]A ++)+9+I+]59?9/ /EXYEX/>Y?0+A'7GWgw ]A]9&A!&&'&7&G&W&g&w&&&&&&&&&]A &&'&7&qAF&V&q<501%#"&'37# 54666323266654&&&#"'!"#!2Sol6=6 8N-. + @*U1HuR,:Xk0#"8#j7s^{G ]P1%D7 ,".%+# Jr>LuP)9wD?l++NN6K++AZj]A )9I]M96PEX,/, >YEX/>Y5L+/ +A'7GWgw ]A]A!'7GWgw]A '7qAFVq,%01#"&&&54666323266654&&&#"'!"#!2!#"&&&546667266655!Sohk7. + @(W1HuR,:Xk0#"8#j7s^=&:R3-G1|#y]}H,DQ&+# Cj>M}X09wDF;#*;Y<%."-  .!=+MQN/O/N(и(/ A   & 6 F ]AU e ]Oܹ5AZ5j5]A 55)595I5]?(9I(9/EXF/F >YEX/>YEX#/#>Y-+I:+#A!'7GWgw]A '7qAFVqF?01&&&&#"326&'&&'#"&&&54666326654&&&#"'!"#!2\BKR+'8PV*K!=U4 T 6u?hd0+GY-GvbM06:Xk0#"8#j7s^{G"B3#*8! &Q8k`T (4  $=aG/I1'?O)6ALuP)9wD?l++LC^D/E/ܹAZj]A )9I]D и /A &6F]AUe]9' 91 96и6/; 9EX8/8 >YEX/>Y;,+ A!  ' 7 G W g w ]A   ' 7 qAF V q89'8981014&'32666%#"&54666667&&&&#"'!"#!2627 b^7\GHuR,8@# So8`O6>A#"8#j7s;obP0S 7 %YEX/>Y&)&9>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>qEAEE'E7EGEWEgEwEEEEEE ]AEE]01#"&&&54666666654&&&#"'!"#!263267766327kgM{V.1QgkgQ11GOB!"#j7 YEX/>Y+(A!(('(7(G(W(g(w(((((((((]A (('(7(qAF(V(q/A//'/7/G/W/g/w////// ]A//]01#"&&&5466635!#'&&#!&&#"3267766327kgoSG{^s7j#8"#0kX:,RuH1W(@ + .&QD,Bu]Q}L=90X}M>jC #+B+:;/YEX*/*>Y4+*A!'7GWgw]A '7qAFVq01#"'&'5&&&&#"326772#"&&&5466632#. (,-ORsD5YvA%= #!;_v;qϞ^At^SwG+  Q"EgDH{X2 **8!1dhQb64SF+< #+AZ#j#]A ##)#9#I#] >EX8/8 >YEX/>Y89898(AI(Y(qA!((((8(H(X(h(x(((((((((]A ((((8(q015666654&&&#5666654&&&#"#5666632 #?Y67`F(ovz?#8H$-_2dY( 7I)4(b4]UP(Hb:9f]S& ,?Q.\9j9z}};4F,-j2gij61D+  w#A[++^b++^;+AZj]A )9I]EX4/4 >YEX/>YEX/>Y7&+A!'7GWgw]A '7qAFVq4+01%#"&&&5466632326666654&&&&&#"'!"#!2/VwVw{?"5#0J._97hYJ5$Y+/ +,%01%#"&&&54666323266654&&&#"'!"#!2Sg_c2* ' ;%M-BvX3>]k- 3. ^ |WzHPUrB)>K"( >bw8FkI%3 DjH9b++S"bB+^9) +A ))&)6)F)]AU)e)]EX/ >YEX5/5>YEX/>Y"+.A!..'.7.G.W.g.w.........]A ..'.7.qAF.V.q01#"&&&546666635!#'&&&&#!&&#"326776632?{wh)JfzHu@ )(%VUO<$@nS9_.J0#4#0hW8VwEtbF'e>  H+A[uHQR, ,7P>%+AZ%j%]A %%)%9%I%]/EX3/3 >YEX:/: >Y:9:9*AI*Y*qA!**(*8*H*X*h*x*********]A **(*8*q01566666654&&&'5666654&&&#"#666632ʼnBpR.FzlS}\4+H]1YEX / >Y/AIYqA!(8HXhx]A (8q/%A%%]A%%(%8%H%X%h%x%%%%%% ]01!57665666654&&&"#"&&&5466632jB`m*ki0jX9%=N)<7  ) 4aTZrAbb> PP A`~LCmM)   *$NA*3_39\1_2/3/ܸ2и/AZj]A )9I] /-%+01!57665666654&&&"#"&54666329+?GFD D9$'2'%  ( #?Y7:eK*;T<% //3 (:K-(B. j,/'9QF1`2/3/ܸ2и/AZj]A )9I] и /и/EX-/- >YEX / >Y  ии/-AIYqA!(8HXhx]A (8q- A ]A  ( 8 H X h x ]"и#013!57265666654&#"###"&&&5466632&BY3 h.h 3V?#ZT)D*!%HhC^].A]B-PPN *?W8at  $A6#+OnPu56/7/ܸ6и/AZj]A )9I]EX1/1 >YAIYqA!(8HXhx]A (8q1'A'']A''('8'H'X'h'x'''''' ]01!57665666654&&&"#"&&&5466632u!6EIGmh0p`@%=N)<7  ) 4aTZwDAeM9+ XX:VvLCjI&   *$QE-:fPj;XYEX/>Y+ии7$AI$Y$qA!$$($8$H$X$h$x$$$$$$$$$]A $$($8$q7-A--]A--(-8-H-X-h-x------ ]01!!!57665!5!5666654&&&"#"&&&5466632jB`m*ki 0jX9%=N)<7  ) 4aTZrAbb>]j PP 'joA`~LCmM)   *$NA*3_Pj526/7/6,и,/A &6F]AUe]7ܹ$EX1/1 >YEX/>Y1A]A(8HXhx ]1AIYqA!(8HXhx]A (8q01#"&'&''&&#&!57665&&&&&&5466632j )  7<*N<%9Xj0!fjDFA3Ar[T`4*   )MmCL~`A PP  #2ATiAT_3*AN4:\1i2/3/2и/A &6F]AUe]3!ܹ,&/+ 01466632#"&'&''&&#"!57665&&&&4*Kd;7Y?# (  %'2'$9C  DFG?+c9]@#'/,j -B(-K:( //' 8O39\1i2/3/2(и(/A &6F]AUe]3ܹ"/- +-01#"&'&''&&#&!57665&&&&54666329(  %&3(%:D  CE G?++Kf;6X?",j .B(-K:( //' %/?/>4и4/A &6F]AUe]?ܸи(,EX9/9 >YEX"/">Y+9A]A(8HXhx ]9AIYqA!(8HXhx]A (8q)и+01#"&'&''&&#&!!!57665!5!5&&&&&&5466632j )  7<*N<%9Xj0 !fjDFA3Ar[T`4*   )MmCL~`Aoj PP 'j] #2ATiAT_3*ANPj^9*:/;/ܹAZj]A )9I]:"и"/3EX*/* >YEX/>YA'7GWgw ]A]A!'7GWgw]A '7qAFVq01#"&&&5466632366654&&&'4&&&''5!jArZTa4 )  7<)N=%9Xj0 ik EEB2LT_3*AN$+  )LmDL}`B  PP   $1BTiPj^ATB/C/ܹAZj]A )9I]B"и"/&и";6EX./. >YEX/>Y&#+A'7GWgw ]A]A!'7GWgw]A '7qAFVq&7и#901#"&&&5466632366654&&&'5!5!4&&&''5!!!jArZTa4 )  7<)N=%9Xj0 ik EEB2LT_3*AN$+  )LmDL}`Boh)  PP  h\ $1BTiQUTYU/V/Uи/A &6F]AUe]VIܸи/I/AZ/j/]A //)/9/I/]EXD/D >YEX/>Y A'7GWgw ]A]D4D7A77]A77(787H7X7h7x777777 ]9и:013776632#"&&&5466676666766666654&&&####"&&&5466632+J7 6Yp:T 0$'P{TOP'E\5  ,,* $GjFT 1$'QzT[o>,ER% %)-;0=^?  +$H9$2Y|JHbH8BJC(7')I8  *$H9$1Pf5N]>.(032--I]/EX / >YEX*/*>Y A!'7GWgw]A '7qAFVq A'7GWgw ]A]2и*9A!99'979G9W9g9w999999999]A 99'979qAF9V9q012326666632#"&&&'#"&&&54632326667&&&&5466666%VVQ>%/Qm>'J@3 !<12P7$^jq8:uk^"'H6 >;  7JW-?qT1%>PVV/?FI"'Zaf3!:+ ' 6*;5%5G**F4,<#.7(-('8!4roe'"IF?/dAC7//&/ 9.и&5:&.90123266632#"&&&'#"&&&54632326667&&&&54666&\Q7 7K*3,"   *!#6&@IN&(PI@1%*)   &2<,M:"7Q]A"5?38:!  ")("   A?9?5"- y++ ++EX/>YEX/>Y+ и 014#!#!2#253#!3@<YLY#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632+)E55F**F55E)'PyQQyP((PyQQyP'Eg??gEEf>>fEXtCCtXXuCCu5V'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632+)E55F**F55E)'PyQQyP((PyQQyP'Eg??gEEg??gEXtDDtXXsCCsdHR' + /+и/01572655%33 !1 }H7 !7R 7dRV' + /+и/01572655%33 !1 }8 !5R 8?H,O#+AZj]A )9I]#.(+ +015666654&&&#"#"&5466632!73?f{D4E&'  10Pj;@mP,OZAHRMyvA,D- "%'B/!>V6A|z|Ai?V,#+AZj]A )9I]#.EX*/* >YEX/ >YEX/ >YEX/ >Y(+ +015766654&&&#"#"&5466632!73?U{D4E&' 10Pj;@mP,OZARAxuA-C- %%'A.!YEX/>Y4+ и4и,AIYqA!(8HXhx]A (8q01!73!5667!5!6654&&&#"#"&&&54666323`^%e?]I:<'Fc<$:*  &,#HyZdqYA.+$+ A!  ' 7 G W g w ]A   ' 7 qAF V qA!'7GWgw]A '7qAFVq и /"и"/A7ܸI01#"&&&546323266654&&&#"53266654&&&#"#"&&&54666327^HDfF#&()3@.L7&;G! #*N:#0?"- /Ok<9dI*gc*UC+8\B$)1+o4D%-;#K':)':' y$<-4M1Fg1I?VOH++HAZ+j+]A ++)+9+I+]HQ +C0+&+"и"/C9ܸK01#"&&&546323266654&&&#"523266654&&&#"#"&&&54666327^HDfF#&()4?.L7&;G!  *N:#0?"- /Ok<9dI*gc*UC+8]B%*2+o5D%-;#N';)&:' y#=-5M1Eg0H59 ^ + ии  /EX/>Y + 9 и01%!#!533-}}j_pTVT5V Q + ии  // + 9 и01!#!533-}}j_pTTTR+/(+ +$и )EX#/# >YEX/>Y+ +A'7GWgw ]A]A!'7GWgw]A '7qAFVq+%и '01#"&&&54666323266655!533#!7kiS`5) F #%*WG,3+H{O-L9*  #A^<~Z;934/5/ܹAZj]A )9I]4%и%/*EX/>YEX / >Y'(+ A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVq% 9 /A!//'/7/G/W/g/w/////////]A //'/7/qAF/V/q01#"&&&546323266654&&&#"!!2666321^[4]E(/% 3 5R7#=S0 K &$^2?!EoO*?hK)(2"#s $8D 3M2 h "@];H3s4/5/ܹAZj]A )9I]4%и%/* +'(+/ +01#"&&&546323266654&&&#"!!2666321^[4]E(/% 3 5R7#=S0 K &$^2?!EoO*?hK))2"$s $8E 3M2 g #A]+#^:V;/YEX / >Y)+ A'7GWgw ]A] A!'7GWgw]A '7qAFVq/-6и7012#"&&&546323266654&&&&&#4&''5!#'&&#!"};oDK؍Pj>?8*E *0/Q~V-5\~Plqv0Mo]hG'BX12B   =`t6BkT>( X -9:b;/YEX / >Y)+ A'7GWgw ]A] !A!!!'!7!G!W!g!w!!!!!!!!!]A !!'!7!qAF!V!q/-6и7012#"&&&546663232654&&&#4&''5!#'&&##"m+fg_I,=o\;sZ8%H  cxQ\b\ "7QoHK~[32E,," njHgB. \q  590'1/2/ܹAZj]A )9I]1и/ A   & 6 F ]AU e ]и/ )и)/EX/>Y"#+,+A!'7GWgw]A '7qAFVq),9014&#"326667#"&&&546663#"66321dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH'[c!"?gH(!;O>DmN*(XenEK(NrJ-!&D]5V01/2/ܹAZj]A )9I]1и/ A   & 6 F ]AU e ]и/ )и)/+"$+,+),9014&#"326667#"&&&546663'&66321dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH'!"?gH(!;O>DnN+(XenEL'OtJ-!'D]79 EX/>Y+01#!#5!fFb)qF7H "/EX/ >Y+01#!#5!fF++pF59#K# .+B+A   & 6 F ]AU e ]AZj]A )9I] 8ܹ$3.$9G.$9BMEX)/)>Y=+) A!  ' 7 G W g w ]A   ' 7 qAF V q014&&&'326664&&&#"66#"&&&546667&&&&5466632/#Bb?,!fa+D0,;!"9*8R3*91UuDJwT- 5E%7-*Li@=gK+/8 F9%'5*& )4!Nb*7&:(&2 5,&Q4X@$#>W4*B2$ !.;$5T;7L,'@1# !1E5V#K .+B+A   & 6 F ]AU e ]AZj]A )9I] 8ܹ$3.$9G.$9BM )+=+014&&&'326664&&&#"66#"&&&546667&&&&5466632/#Bb?,!fa+D0,;!"9*8R3*91UuDJwT- 5E%7-*Li@=gK+/8 F9%'5+' )4!Oc)7%:'%1 5,%Q5X?$#?W5*A1# "/<$5S:6K-'@2$ !1E590ĸ1/2/ܹAZj]A )9I]1'и'/ A   & 6 F ]AU e ]и/и/EX/>Y,+ "+" 901%4&&&#"32676&#56667#"&&&5466632-+D00G/eX+_(H/@t\> 8n9?fI'3WvDCuV17?hI)!;O.[f$nFL'PsJ-!'E^6DnM*'W5V01/2/ܹAZj]A )9I]1'и'/ A   & 6 F ]AU e ]и/и/+,+ "+" 9014&&&#"32676&#56667#"&&&5466632-+D00G/eX+_(H/@t\> 8n9?fI'3WvDCuV1?hI)":P.[e"" nFN'OsJ-!'D]6CnN*'W^wP + 9 //EX/>Y+и/ 901576655%3#3 !1 }c\7  7R 7^A +8+ 9AZj]A )9I]@@9=@98C //EX/>YEX/>Y.+3 +.и/.и/ 9+и+/=01576655%3#35666654&&&#"#"&5466632!73 !1 }cfwA.@&& 1.Ph;@hI'J}ZD\7  7R 7jRNyuA-B- "&'A0!>W6A|z{Bk^eݻ +^A+ 9^.9AZAjA]A AA)A9AIA]a9^g //EX/>YEX/>Y<3++YF+и/"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q"9 9)A!))')7)G)W)g)w)))))))))]A ))')7)qAF)V)q38и8/OиO/3a01576655%3#3#"&&&546323266654&&&#"523266654&&&#"#"&&&5466632 !1 }c'5\}HDeC!&( )3 .J4#8D!  *J6.="+  -Mi<9bG(jc*VE+\7  7R 7V8\B$)1+l5D%,;#N&;)':' x#>-6N1Eh0Hb"#/$/ܹ#и/9и/и ///EX/>Y ++ 9 ии/ 9 901!576655%3#3#!533? !1 }VsVZ7  7R 7SVT^1BF=7+(#++AZj]A )9I]D7=9F79;/E/EX/>YEXC/C>Y-+32+%&+ A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVq#;9(-93@и@/D 9F;901#"&&&5463233266654&&&#"!!676632576655%3#31^[4]E(1# 3>4R8#=S0 K &$^@!EoO*܇ !1 }c ?hI)(1"$s$7E!3M2 g "A]7  7R 7^0AEx<6+ ++AZj]A )9I]AZj]A )9I] )и)/C6<9E69G:/D/EX/>YEXB/B>Y,+21+"#+A!'7GWgw]A '7qAFVq),92?и?/C9E:9014&#"326667#"&&&546663#"6632576655%3#3dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH' !1 }c[c!"?gH(!;O>DmN*(XenEK(NrJ-!&D]7  7R 7^!26^-'+A+U+UAZj]A )9I]Kܹ4'-976'79AZAjA]A AA)A9AIA]F'79Z'79U`+/5/EX3/3>YEXY#"+P+< A!  ' 7 G W g w ]A   ' 7 qAF V q#0и0/4< 96<+9F<+9Z<+901%4&&&'326664&&&#"66%576655%3#3#"&&&546667&&&&5466632$Db>3Dca+E1,;!#8(8R3(8 !1 }V%1WuEJvT- 5D%7,)Kh@=hL, 09G:'%5+&PBNd*8%:&%1 5,%Q&7  7R 7I4W?#">W4*B1$ ".;$5U;8K-'@2$ 2F?,0 #+z]+A ##&#6#F#]AU#e#]+zJ1019AZ]j]]A ]])]9]I]]}19zEX-/->YEX6/6>Y +XO+(+ub+ܸ6>A!>>'>7>G>W>g>w>>>>>>>>>]A >>'>7>qAF>V>q.6>9/и//0 96EA!EE'E7EGEWEgEwEEEEEEEEE]A EE'E7EqAFEVEqOTиT/kиk/O}015666654&&&#"#"&5466632!73#3#"&&&546323266654&&&#"523266654&&&#"#"&&&5466632?fvA.@&&  2/Pi;@hI'K}ZAŁ'5\}HDeC!&( )3 .J4#8D!  *J6.="+  -Mi<9bG(jc*VE+\RNxu@-C- #%&A0">W5A|y|AhV8\B$)1+l5D%,;#N&;)':' x#>-6N1Eh0H?1^bлU8+(#++AZj]A )9I]A UU&U6UFU]AUUeU]8]b89EX/>YEX_/_>YP=+-+Z2+ A  ' 7 G W g w ]A ]A!'7GWgw]A '7qAFVqZ&и&/%(-9PHܸ%\и\/` 9Paиa/b=P901#"&&&5463233266654&&&#"!!6766325666654&&&#"#"&5466632!73#31^[4]E(1# 3>4R8#=S0 K &$^@!EoO*fvA.@&&  2/Pi;@hI'K}ZAŁ ?hI)(1"$s$7E!3M2 g "A]RNxu@-C- #%&A0">W5A|y|AhNWbP3+_+3_9A PP&P6PFP]AUPeP]P"_XиZи_dY/EX/>YK8+`X+.'+ +  9`к8K9',и,/KAܸ'SܸX[01!#3#"&&&54666323266654&&&#"53266654&&&#"#"&&&5466632#!533@d4[}HDdC! )2 .J5$7E! "*J6.="*  -Mi<:bH(ic*UC+osVZ8\B$)0  m 5D%-:"L&;)&:' {#=-6N1Ef0HjVTNTܻM0+}x+Un+0U9A MM&M6MFM]AUMeM]MAZnjn]A nn)n9nIn]UEX/>YEXZ/Z>YH5++$+s+ +z{+ZbAbb'b7bGbWbgbwbbbbbb ]Abb]Zb95H9$)и)/H>ܸ$PܸZiA!ii'i7iGiWigiwiiiiiiiii]A ii'i7iqAFiViq}s901!#3#"&&&54666323266654&&&#"53266654&&&#"#"&&&5466632#"&&&5463233266654&&&#"!!6766324[}HDdC! )2 .J5$7E! "*J6.="*  -Mi<:bH(ic*UC+'1^[4]E(1# 3>4R8#=S0 K &$^@!EoO*8\B$)0  m 5D%-:"L&;)&:' {#=-6N1Ef0H?hI)(1"$s$7E!3M2 g "A]N!%tܻmP+++AZj]A )9I]ܹ u%Pu9A mm&m6mFm]AUmem]m?&AZj]A )9I]Pu9Pu9EX"/">YEXz/z>YhU+KD+3+++zA!'7GWgw]A '7qAFVq#z9%Uh9+:DIиI/h^ܸDp014&&&#"664&&&'32666#3#"&&&546323266654&&&#"53266654&&&#"#"&&&5466632#"&&&546667&&&&5466632 ,;!#8(8R3(8$Db>3Dca+E1ك)5\}HCdC"'))3/J4$7E!  *J6.="*  -Mi<:aG(gc)UD+1WuEJvT-5D&7,)Kh@=gL+/9G:'o%:&%1 5,%Q%5+&PBNd*88\B$)0,m 4D&-:"L&;)':' {"=-6N1Dg/H`4W?#">W4*B1$ ".;$5U;8K-'@2$ 2F% ?C +61+'+ иAZ'j']A '')'9'I']C9E /EX/>YEX@/@>Y;,+ +34+ 9 ииA'7GWgw ]A]"A!""'"7"G"W"g"w"""""""""]A ""'"7"qAF"V"q1 96,;9A9C 901!#!533#"&&&5463233266654&&&#"!!676632#3@ssVZ1^[4]E(1# 3>4R8#=S0 K &$^@!EoO*<TVT?hI)(1"$s$7E!3M2 g "A];0bfƻYT+1J+ ++AZj]A )9I]AZj]A )9I] )и)/A 11&161F1]AU1e1]dT9fT9hEX/>YEXc/c>YVW+^O+,+>6+"#+A!'7GWgw]A '7qAFVq),96EYO^9d9Veиe/fWV9014&#"326667#"&&&546663#"6632#"&&&5463233266654&&&#"!!676632#3dX,`(-E00F/2XvCDtW1G-@t\> 7o9?fH'/1^[4]E(1# 3>4R8#=S0 K &$^@!EoO*ǁ[c!"?gH(!;O>DmN*(XenEK(NrJ-!&D]?hI)(1"$s$7E!3M2 g "A]X;!SWܻJE+";+b+v+vAZj]A )9I]lܹA ""&"6"F"]AU"e"]XUEX9WEX9AZbjb]A bb)b9bIb]gEX9{EX9vEXT/T>YEX]/]>YGH+O@+/'+q+] A!  ' 7 G W g w ]A   ' 7 qAF V q'6J@O9U] 9GVиV/WHG901%4&&&'326664&&&#"66#"&&&5463233266654&&&#"!!676632#3#"&&&546667&&&&5466632#$Db>3Dca+E1,;!#8(8R3(81^[4]E(1# 3>4R8#=S0 K &$^@!EoO*%1WuEJvT-5D&7,)Kh@=gL+/9G:'%5+&PBNd*8%:&%1 5,%Q7?hI)(1"$s$7E!3M2 g "A]XI4W?#">W4*B1$ ".;$5U;8K-'@2$ 2Fy!+/Wb0+D+AZj]A )9I]AZDjD]A DD)D9DID]Dܺ/D09?D09NSD090YEX,/,>YEX5/5>Y*%+I+5 A!  ' 7 G W g w ]A   ' 7 qAF V q-5 9*.и.//%*901%4&&&'326664&&&#"66%#!#5!#3#"&&&546667&&&&5466632$Db>3Dca+E1,;!#8(8R3(8>fE1WuEJvT- 5D%7,)Kh@=hL, 09G:'%5+&PBNd*8%:&%1 5,%QG)pDI4W?#">W4*B1$ ".;$5U;8K-'@2$ 2Fnj(#+A &6F]AUe]и/# и*EX&/& >YEX/>YA'7GWgw ]A]01%#"&&&5466632#&'&&&&54632j#..""..# d GG8](f#+A &6F]AUe]и/# &/EX/ >Y+01#"&&&5466632#&'&&&&546328    A  '**'N  3N`2uu2`N3&**8] D+ и / и //EX / >Y+01#"&&&737#"&&&54666326   1@1   a$ $  # //01#&'&&&&54632 e DAAH&LsJحJsL>GG; //01#'&&&&54632 e DAAH&]]]]>GG;/EX/ >Y01#&'&&&&54632 e :AA>Ce~@@~eC>GGs/EX/ >Y01#&'&&&&54632 e :AA>USSU>GG} +A &6F]AUe]EX/>YA'7GWgw ]A]01%#"&&&5466632&31&&13&q2%%22%%2};#}nir'S +A &6F]AUe]и +#+01%#"&&&5466632#"&&&5466632&31&&13&&31&&13&2%%22%%22%%23%%3oPq}[+A &6F]AUe]и///9013#"&546667};3#  -O[7KKBNY3  ."dZK|aCRhT' +и///01466673#"&R&D]7)8#y  )AP5UA+ < ,=, $ UPq}[+ A &6F]AUe]и///901&&&&54632#1KK7\N;@ />#qC`}KYeH5 ,SNH"Pq}[+ A &6F]AUe]и///901&&&&54632#1KK7\N;@ />#qC`}KYeH5 ,SNH"=9jt[+ A &6F]AUe]и///901&&&&54632#KK7\N;@ />#9C`}KYeH5 ,SNH";qhW+ и/AZj]A )9I]//901'6666'4&5#&'&&54632h7KKL#>/  @:N\K}`C"HNS, 5HeMQ+ и/AZj]A )9I]/+01'6666'4&5#&'&&54632Habb-Q=#  TKexb}W,^el9  'E^Pq#5+0+ A &6F]AUe]и/AZj]A )9I]''90-и-///+"и,01&&&&54632#&&&&54632#1KK7[O8C 1=ZKK7WQ.! %5:qC`}KXfF5  0VMEC`|JXh".  3ZM@;q5+0+A &6F]AUe] и/"9'*и*/AZ0j0]A 00)090I0]7/!/+*и301'666654&5#&'&&5466632'666654&5#&'&&54632h7KKL:5%  !.PW7KKL=1  D7O[J|`C@MZ3  ."hVK}`CEMV0  5FfX%EX/ >YEX/>Y0133#!XffffZFFX/EX/ >Y01#!LfZFH?91H?91H?91; +AZ j ]A  ) 9 I ]+01#"&&&54666329 ,,  ,, ,!!,-  -T;+A &6F]AUe]/ /01&&&&&&546667EnT<%'ZhFa<Y+ии 013#!!!x#fKMOMhl d / / и/  ܹEX / >Y+ ии0135!!5!"fIQfM,Xx&+/EX/ >Y01!#XWxW L,Xx&+/EX/ >Y01#!5XWxW"XN+/+013!W9,+W"XN+/+015!39WWH"+/EX/ >Y013iHeHU/ /и/ ܹ//EX/ >YEX/ >Y01333iiHee2H#v+ии и/EX / >Y++ и ии01!5!5!5!3!!!!vDDiDDHhhhh^;/ /и/ ܹ////013!3|}nn-j2+и/EX/ >Y0133-iiij4F3f+//013iLN+//013iL/XR} //01'wHJ+)/T //01'yJL+&)Z59Z59Z592O3 +015!23 +015!'f +015!'Z59 +015!Z?.t +015!?5[[? tf +015!?5 [[1 +015!RRgB+ +015!gffi+ +015!iff / /01#666632u $ )>  h h.3B3B/EX / >Y01#676632 {,& + N 3Bj-//EX / >YEX/ >Y01#676632#676632 {,& h {,& + N  N hj +и 01#666632#6632u $ u,)$ (> !(>!jmhm3B"#h3B:"#h#8 / /01%&&5466632f $ )  h //01%&&5466632f $ h(! h3B /EX/ >Y01466632#&&3 &,{ +  3Bj"hj2h8+ и01%&&5466632!%&&54666324 $  % h(! (! 3B"#h///901'#3zy% "f fh"h{///01'#3'76632{ #i* h[+ h-{ / //01'&5466632'#3 (f{=  [h*///+% +и 01'#3#"&&&&&#"#6666323266677{ (:N2,)(-6"$R ':N3,)'-5!%h[x-R>$$-R>$$fhj+e+A]A )9IYiy ]-'///01'#3#5666654&#"#"&5466632{f!.25)"/  '8#%<*h[#4&ay)1: A"")6T + и01&&&&#"#466632 ,=H&&H<, R&LrMLrM&T+?((?+6lW66Wl6hhbhbhb + и01&&&&#"#466632 ,=H&&H<, R&LrMLrM&h,?((?,6lW77Wl6# P`fhb+ 01&&&&#"#466632 +, P&LrMLrM&h,?((?,6lW77Wl6mS/ /+01&&&$#"'6$! _&铒%5UmoW2A''A2-hS / +01"'6$!%5Um'A2-hS /+01&&&$#5 6%}U2A'T+ и01#"&&&53326667&MrLMrL&P ,>H&&H<, }6lW66Wl6,?))?,hh""hb""h9A +-"+4+ и-и'01#"&&&53326667#"&&&&&#"#666632326667&LrMLrM&P -=H%&H=- (:N2,)(-6"$R ':N3,)'-5!%6mW66Wm6,?((?,'-R>$$-R>$$hb"X^h6#`hB#!+! и01#"&&&54632326667'466632B2Rg65hR260/8o0B-/C.n%34H0R<" :R217:*FH$;)bXEX/>Yܸ и иA!'7GWgw]A '7qAFVq01#"&&&53326667b&MrLMrL&P ,>H&&H<+ 6lW66Wl6,?((?,mJ}// +01! $'732$667W7*U5%&P-2A''A2m/b )//EX/>Y01#373{{)Z)" h"_hH /EX/ >Y01#66663!T%^._hH EX / >Y+01#!5!%3%\S_hH EX/ >Y+01"&&&'3!%Th-_hH /EX/ >Y01%!5!2j%h^'/// / 9901#"&''#663273 3V24V  D^ ////901'#"&'37663262V3 hӬFծ  2 2]pq7R#'+ +и01#"&&&&&#"#666632326667 (:N2-)(-6!$R ';N2,)'-5!%-R>$$-R=%$n5f#'+ +и01#"&&&&&#"#666632326667 (:N2-)(-6!$R ';N2,)'-5!%f-R=%$-R>$$p7p>Qi'd'/EX/ >Y#++#9# к '99к'9017&&#"#66663273266673#"&' l4*$R -BU2&L'?q3+%R .BT2&K'o $-R>$&!&!$8BI+TC*!(!!4?!V /+01&&&&#"'666632>}^Za@7Kph`y9 $8BI+TC* Jo /+01326667#"&&&'=z^TjF9SzcZy: !4?K(N>& c=D#+A &6F]AUe]9/AZj]A )9I] ии %#//015666654&&&&&546667D$$>R-$%=R-%!5-'),2N;' R$!6-()-2N:( .;x"/EX/ >Y+013#7#<_d<_ #///990177'''7'7#'7'7dAfdB1;<e%jt ! Rf tjXX f!h /// /01'7'77pBppBppBppBtpBppBppBppBu: /// /01'7'77'pBppBppBppBpBppBppBppBh ////01'#7'373`щh=) ////01%'7''P)PP)=$PP%P''R"///+9 и01#"&'#"&&&5332673326667-E-5DC6-D-/$+%@/>%+%&K<&1%%1&/@%+$/-D-6CD5-E-+ $&&$ +%L<&2&&2&Y+015!%5!LLLL.++015!%5!LLLLmf!%)*/+/* и /и/  ܸи/+ܸA]A )9IYiy ]/EX/ >Y#"+'&+0153#5466654&'66325!5!I.8.;*2*8$ 1O1;/4FF(:/(R^%+8'" 4,!2tf !+ ++015!5!5!44oR'(/)/( и /A &6F]AUe])ܹAZj]A )9I]+и#01#"&&&5466632#"&&&5466632o)(()() (())* *))* *BBB'(/)/( и /A &6F]AUe])ܹAZj]A )9I]+и#01#"&&&5466632#"&&&5466632)(()() ((!*  () )*  *))h'+и#01#"&&&5466632#"&&&5466632      %      EBahFR; +AZ j ]A  ) 9 I ]+01#"&&&5466632F)**))  )+  +aFav^RTQ+A &6F]AUe]и/ //01566665#&&&&5466632T&D]7)8#y  (AP5V@, > *=- $WRhTJR80s+A &6F]AUe]и/ //EX/ >YEX / >Y01566665#&&&&5466632&D]7)8#y  (AP05V@+ < ,=, $ U0h[+A &6F]AUe]9 и//+0176666'4&5#&'&&5466632h:Zl1(@,  .:N\\hBK>NZ, #9)o2MR'(/)/ܹAZj]A )9I](и/ A   & 6 F ]AU e ]+#+014&&&#"326667#"&&&5466632c'45''54'd&BX33YB&&BY33XB&5((54''43XB&&BX33YB&&BYhP4I˸J/и/5AO5]A5]A5]*AO*]A*]A*]5*95*954?K%+/+%9 ик/9/:и%D01#"&'#"&&&546663266323266654&&&#"#&&&&#"326665x&BX3Y  +01!"&&&546663"3X[..[X<_B#y6`MKb8i$B^:{eQo8g+ A&6FVfv ]A]/ /01"&&&546663"38%H9#!7I(/#$.5J,-I4H"//!o8WdfD+и EX/>Y+01#52654&&4.[Xy#B_YEX / >YEX/ >YEX/ >YEX/ >Y01#5666654&#"#"&5466632o-17(!,  (8#%<(y#4&u)19 B  !(5%*+/EX/>Y013^%^h+//013^h_'%U/ /и/ ܹ//EX/>YEX/>Y01333'^^%^^<hk;/ /и/ ܹ////01333<^u\h__ ?+и// +и 01#5#53533^^^^]Z ?+и// +и 01#5#53533V^^^^h U+и//EX/ >YEX / >Yи01#5#53533^^^^%!+/+01#5#5!R\ϏRRw!+/+01##5!Q;gRR%!+/+0153533%RRRw!+/+0175333wQQfQSS-+и //+015#5353RRSS%+//+01#33RRqRw9%+//+01#3!RRp;Rs$+/+0173!sNc&)Ojf.+/EX/ >Y01!5!ZRT&G7 //0178]Z8-o*+/EX/ >Y013-~-M7 //01'Z[ZZ-o//и/A &6F]AUe]ܹ/EX/ >YEX / >YAIYqA!(8HXhx]A (8q01#"&54666323. /  Z- ..  ~&G7E+A &6F]AUe]// +01'#"&&&54632]Y  . /ZZ  //-<G+A &6F]AUe]+ +015!#"&&&54632-  / .<+  //-<0+EX/ >Y+015!3-E<'Y-; +015!-;2Z [ / /ܹ и/EX/ >YEX/ >Y+01#!#!8vv(6x2Z E / / и/  ܹ//+01!3!3ZvvVx62Z+/+01!3Zvw22ZA/ /ܹи/+0153!3vv2<//ܸܸи/ и / ܸи/ и/и/EX/>YEX/>Y +ܸйܸ 01!!#!!#!l)OuY)Oukk:-d{-d/ +EX/>YEX / >Y01#"&55337d 8N-f=8.%xvB6 -4 s:+A &6F]AUe]#9#/AZ#j#]A ##)#9#I#] -ܹии/(и </6/36901"&&&546666654&&&5466654&#6632s#%% 3('VI/$+5+)3,FVE38 $% % $(9F '~P13A/ /ܹи/+015##!I^1E/ /и/ ܹ+013353^\A/ /и/ܸ ܸ+013!53R3R  7/ /ܸܸи/++01#3!GwHw=+ /+01#"&55'7326667=+@,NO/$) 'L<&QD=.$,?(95E6/7/+ܸܸ6и//)/0+и001#"&55#"&55'73266767'7773266679+@,NO +@,NO/$) /$) 'L<&QDv&<&QD=.$,".$,?(9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""9 "+ /EX/>Y017#"&546329""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""s "+ /EX/>Y017#"&54632""""9""V""Zr EX/>Y013"&5463!2#""""""""X 7&'&676// /V/V" 7'&&766 .  .  . .Uy 7'&&766 +  + " + +U 7'&&766))')V)X &&766'p//b//ZV +01"&5463!2#""""V""""XT &'&676//b/V/VRx '&&766 .  . p . .UQ '&&766 +  + x + +V" &676&'c .  . . T. XT &&766'p////Z +01"&5463!2#""""""""Xv &'&676///V/V '&&766 .  .  . .Uy &676&'_ +  + $+ + VRx &676&'c .  . . T. Xv &&766'p////Zt +01"&5463!2#""""""""X &'&676...T.U &676&']))}))UQ &676&'_ +  + x+ + V &676&'c .  . p. V. X &&766'q..b..ZV +01"&5463!2#""""V""""r EX/>Y013"&5463!2#"""""""" 7&'&676$// /V/" 7'&&7661 .  .  . .y 7'&&7665 +  + " + + 7'&&7667))')V) &&766'"//b//V +01"&5463!2#""""V""""T &'&676$//b/V/Rx '&&7661 .  . p . .Q '&&7665 +  + x + +" &676&'/ .  . . T. T &&766'"//// +01"&5463!2#""""""""v &'&676$///V/ '&&7661 .  .  . .y &676&'3 +  + $+ + Rx &676&'/ .  . . T. v &&766'"////t +01"&5463!2#"""""""" &'&676#...T. &676&'5))}))Q &676&'3 +  + x+ +  &676&'/ .  . p. V.  &&766'!..b..V +01"&5463!2#""""V""""Zr EX/>Y013"&5463!2#""""""""ZV +01"&5463!2#""""V""""Z +01"&5463!2#""""""""Zt +01"&5463!2#""""""""ZV +01"&5463!2#""""V""""tr EX/>Y013"&5463!2#""""""""tV +01"&5463!2#""""V""""t +01"&5463!2#""""""""tt +01"&5463!2#""""""""tV +01"&5463!2#""""V""""n> t//и/ A   & 6 F ]AU e ] ܹEX/>Y+01"&54632#"&54632#22##22X""""2##22##2""V""n> p//и/ A   & 6 F ]AU e ] ܹ/EX/>Y+01"&54632#"&54632#22##22X""""2##22##2a""V""n> p//и/ A   & 6 F ]AU e ] ܹ/EX/>Y+01"&54632#"&54632#22##22X""""2##22##2""V""n> p//и/ A   & 6 F ]AU e ] ܹ/EX/>Y+01"&54632#"&54632#22##22X""""H2##22##2""V""n> //и/ A   & 6 F ]AU e ] ܹ/EX/>YEX/>YA!'7GWgw]A '7qAFVq013"&54632%#"&54632#22##22X""""2##22##29""V""U! +01%'&'&6764632 @)R""9   V)""U&+EX/>Y01%#"&5&6764632""D + T""9""H+ ""V&+EX/>Y01%#"&5&6764632""H . X""9"". ""X&+EX/>Y01%#"&5&&76654632""V.f""9""D.""Z(+EX/>Y+01%#"&5!"&5463!2""x"""9"""""U+/01%'&'&6764632  @ + T""9  + H""V4+/EX/>Y901%#"&5&6764632""H . X""9""C. B""X4+/EX/>Y901%#"&5&&7664632""U/e""9""F/8""Z4+/EX/>Y+01%#"&5!"&5463!4632""x""""9""""""X4+///EX/>Y901%#"&5&'&6767632"". "9"".T"V+/01%'&'&6764632  @ . X""9 . ""X4+/EX/>Y901%#"&5&&7664632""U/e""9""9F/""Z4+/EX/>Y+01%#"&5!"&5463!4632""x""""9""s""q""X4+/EX/>Y901%#"&5&'&674632""/""9""/F7""V <+/////EX/>Y901%#"&5'&&76763323"" .   9"" .X_+/EX/>YEX/>YEX/>YEX / >Y901%##&'&&7664632   @/e""9  V/""Z4+/EX/>Y+01%#"&5!"&5463!4632""x""""9""""""X4+/EX/>Y901%#"&5&'&674632""/""9""9/F""V4+/EX/>Y901%#"&5'&&74632"" . ""9""D .A""U&+EX/>Y01%#"&5'&&7664632"" +  + l""9""H + +""Z( +/EX/>Y 01%!"&5463!4632<""""9""""XE+/EX/>YEX/>Y901%#"&55&'&674632""/""9""/F""VE+/EX/>YEX / >Y901%#"&5'&&74632"" . ""9"" .""UE+/EX/>YEX / >Y901%#"&5'&&74632"" + ""9"" +F""U'I+////EX/>YEX / >Y901%#"&5'&&7676333"")  9"")V  UO9+EX/>YEX/>Y01%#!'&'&676!4632O"B@)a""9" V)""UOY+EX/>YEX/>YEX / >YEX / >Y01%#"&55'&'&6764632O"" @)m""9""  V)""UO Y+EX/>YEX / >YEX / >YEX/>Y01%#"&5#"'&'&6764632O""  @)x""9"" V)?""UO Y+EX/>YEX / >YEX / >YEX/>Y01%#"&5#'&'&6764632O""   @)""9""  V)5sF""UO3Q+EX/>YEX / >YEX / >YEX/>Y01%#"&5''&'&67667633323O""  @)   9""  V)K  UO=+/EX/>YEX/>Y01%#!'&'&676!4632O"C  @ + e""9" +  ""UOg+/EX/>YEX/>YEX / >YEX / >Y901%#"&55'&'&6764632O""  @ + s""9""  + ?""UO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""   @ + ""9"" + \J""UO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""   @ + ""9""  + sF""UO*q+// /EX/>YEX / >YEX / >YEX/>Y9901%#"&5'"'&'&6766763O""   @ +   9""  +    VO=+/EX/>YEX/>Y01%!'&'&676!4632OB  @ . k""9. n""VOg+/EX/>YEX/>YEX / >YEX / >Y901%#"&55'&'&6764632O""  @ . {""9"". """VO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""  @ . ""9"". X""VO q+/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&6764632O""   @ . ""9"" . F""VO2y+///!/$/EX/>YEX / >YEX / >YEX/>Y9901%#"&5#"'&'&676676333O""  @ .   9"" .   XO=+/EX/>YEX/>Y01%#!&'&&766!4632O"8@/w""9" V/""XOg+/EX/>YEX/>YEX / >YEX / >Y901%#"&55'&'&&7664632O""@/""9""  V/,""XOg+/EX/>YEX / >YEX / >YEX/>Y901%#"&5'&'&&7664632O""  @/""9""V/n""XO&V+#/EX/>YEX / >YEX/>Y#901%#"&5'&&77'&&7664632O"" + 9/@/""9"" +A+/V/F""XO5@+EX/>YEX / >YEX/>Y01%#"&5'&&77'&&7666763O"")?/@/ 9"")J//V/   ZO( +/EX/>Y 01%!"&5463!4632Oz""J""9""""ZO\+/EX/>YEX/>YEX / >Y901%#"&55!"&5463!4632O"" 7""""9"" "":""ZO\+/EX/>YEX / >YEX / >Y901%#"&5'!"&5463!4632O""  G""""9""""""ZO\+/EX/>YEX / >YEX / >Y901%#"&5'!"&5463!4632O""  E""""9"" ""F""ZO*d+//// /EX/>YEX / >YEX / >Y901%#"&5'!"&5463!676333O""D""   9"" ""/  UOQ+EX/>YEX/>YEX / >YEX / >Y01%##&'&'&6764632O   I @ + ]""9 O + ""UO0+EX/>Y+01%#"&5!'&'&676!4632O""~ @ + e""9"" + """UO&+EX/>Y01%#"&5'&'&6764632O""  @ + s""9""9  + A""UO &+EX/>Y01%#"&5#&'&'&6764632O""    @ + ""9""D + ^JA""US'&+ EX/>Y01%#"&5'&'&676664632O""   @ +  + l""9""H  + t +""VO_+/EX/>YEX/>YEX / >YEX / >Y 901%##&'&'&6764632O   J @ . b""9 N. _""VO4+/EX/>Y+01%#"&5!'&'&676!4632O""  @ . k""9"". n""VO4+/EX/>Y901%#"&5'&'&6764632O""   @ . {""9""9. """VO >+/EX/>Y9901%#"&5'"'&'&6764632O""   @ . ""9""D. XA""VS&&+EX/>Y01%#"&5''&'&676664632O""   @ .  + l""9""H .  +""XO _+/EX/>YEX/>YEX / >YEX / >Y 901%##&'&'&&7664632O   H@/ e""9  OV/""XO4+/EX/>Y+01%#"&5!&'&&766!4632O""s@/w""9"" V/""XO4+/EX/>Y901%#"&5'&&7664632O""@/""9""9 V/,""XO&4+#/EX/>Y#901%#"&5'&&77'&&7664632O"" . !0/@/""9""D .2$/V/nA""XS%&+EX/>Y01%#"&5'&'&&766664632O""  @/ + l""9""H  V/ +""ZO d+/EX/>YEX/>YEX / >Y +и/901%##&'!"&5463!24632O    OR"" e""9  J"" ""ZO4+/EX/>Y+01%#"&5!"&5463!4632O""""J""9""""""ZO>+/EX/>Y +901%#"&5'!"&5463!4632O""@""""9""9 "":""ZO>+/EX/>Y +901%#"&5'!"&5463!4632O""  H""""9""D""A""ZS#0+EX/>Y +01%#"&5'!"&5463!664632O"" G"" + l""9""H "" +""XO%p+"/EX/>YEX/>YEX/>YEX / >YEX / >Y"901%##&'&'&676776324632O   bb/  e""9  </V""XOQ+/EX/>YEX / >Y+и/01%#"&5!&'&676763!4632O""P/ ""9""/V ""XOE+/EX/>YEX / >Y901%#"&5&'&67674632O""H/""9""9/V@""XOE+/EX/>YEX / >Y901%#"&5#&'&674632O"" J/""9""D/SA""XS!7+EX/>YEX / >Y01%#"&5&'&67664632O"" I/ + l""9""H /P +""VO +01%'&'&'&6764632O  H@ . X""9. `""VO&+EX/>Y01%#"&5&'&6764632O""_ @ . b""9""9>. a""VO0+EX/>Y+01%#"&5!'&'&676!4632O""  @ . k""9""s. pq""VO&+EX/>Y01%#"&5'&'&6764632O""   @ . {""9"". "7""VO(+EX/>Y01%#"&5'"'&'&67667633O""   @ .   9"". cXO+/01%'&'&&7664632O  GD/ X""9 S/""XO4+/EX/>Y901%#"&5&'&&7664632O""]@/ e""9""9?V/""XO4+/EX/>Y+01%#"&5!&'&&766!4632O""s@/w""9""s V/q""XO4+/EX/>Y901%#"&5'&&7664632O""@/""9"" V/,7""XO++EX/>Y01%#"&5'&&77'&&766676O"" . !0/@/ 9"" .2$/V/xZO+/ +01%'&'!"&5463!24632O  Q]"" X""9 """"ZO>+/EX/>Y+901%#"&5!"&5463!24632O""dR"" e""9""9:"" ""ZO4+/EX/>Y+01%#"&5!"&5463!4632O""""J""9""s""q""ZO>+/EX/>Y +901%#"&5'!"&5463!4632O""@""""9"" "":7""ZO!(+EX/>Y +01%#"&5'!"&5463!676O""  H"" 9""""XO +/01%'&'&'&676764632O  ap/  X""9 y/V""XO$4+!/EX/>Y!901%#"&5&'&67677633324632O""wb/  e""9""9,/V""XO@+/EX/>Y+и/01%#"&5!&'&676763!4632O""P/ ""9""s/V q""XO4+/EX/>Y901%#"&5&'&67674632O""H/""9""/V@7""XO%<+//// /EX/>Y901%#"&5#&'&676763323O"" J/ 9""/SVO"+/01%'&''&&7676364632O  oo .    X""9 d .""VOE+/EX/>YEX / >Y901%#"&5'&&76764632O""a .   e""9""9! .""VOE+/EX/>YEX / >Y+01%#"&5!'&&76763!4632O""Q .  ""9""sn .q""VOE+/EX/>YEX / >Y901%#"&5'&&7674632O""H .  ""9""_ .?7""VO$I+////EX/>YEX/>Y901%#"&5'&&767676332O""H .  9""` .XO +01%'&'&&7664632O  FJ. T""9  M. H""XO&+EX/>Y01%#"&5&&7664632O""NF. X""9""CP.B""XO&+EX/>Y01%#"&5&'&&7664632O""[@.e""9""AT.8""XO<+EX/>Y+ и /01%#"&5!"'&'&&766!4632O""x @.x""9"" T.""XO+EX/>Y01%#"&5'&'&&76667632O""@. "9"" T.;"ZO+/ +01%'&'!"&5463!64632O  Oc""  T""9  ""H""ZO>+/EX/>Y+901%#"&5!"&5463!24632O""Y]"" X""9""C""B""ZO>+/EX/>Y+901%#"&5!"&5463!24632O""dR"" e""9"":"" 8""ZO4+/EX/>Y+01%#"&5!"&5463!4632O""""J""9""""""ZO>+///EX/>Y +901%#"&5#!"&5463!67632O"" @"" "9"" ""H"XO +/01%'&'&'&676764632O  \y/  T""9  /VH""XO4+/EX/>Y901%#"&5&'&676764632O""ip/  X""9""Cm/VB""XO$4+!/EX/>Y!901%#"&5&'&67677633324632O""wb/  e""9"",/V8""XO@+/EX/>Y+и/01%#"&5!&'&676763!4632O""P/ ""9""/V ""XO4+///EX/>Y901%#"&5&'&676767632O""F/ "9""/VM"VO"+/01%'&''&&7676364632O  iy .    T""9   .H""VO >+/EX/>Y9901%#"&5'&&7676364632O""wo .    X""9""CX .B""VO4+/EX/>Y901%#"&5'&&76764632O""a .   e""9""! .8""VO4+/EX/>Y+01%#"&5!'&&76763!4632O""Q .  ""9""n .""VO4+///EX/>Y901%#"&5'&&76767632O""G .   "9""^ .L"UO"+/01%'&''&&7676324632O  ss +    T""9  s +H""UO O+/EX/>YEX / >Y9901%#"&5'&&767624632O""j +    X""9""CI] +B""UOE+/EX/>YEX / >Y901%#"&5'&&76764632O""] +   e""9""? +8""UOE+/EX/>YEX / >Y+01%#"&5!'&&7676!4632O""O +   ""9""  +""UOE+///EX/>YEX / >Y901%#"&5'&&76767632O""G +   "9""  + L"ZO&++#01%'&'!"&5463!64632O Mg""R""9   /"" ""ZO8+EX/>Y+01%#"&5!"&5463!64632O""Sc""  T""9""H""""ZO8+EX/>Y+01%#"&5!"&5463!24632O""Y]"" X""9""""""ZO8+EX/>Y+01%#"&5!"&5463!254632O""fP""  f""9""8""""ZO(+EX/>Y+01%#"&5!"&5463!O""""9""""XO( !+01%'&'&'&676764632O X~. R""9    .T ""XO&+EX/>Y01%#"&5&'&676764632O""`x.  T""9""H.T""XO&+EX/>Y01%#"&5&'&676764632O""io. X""9""l.T""XO@+////EX/>Y901%#"&5&'&67654632O""wa.f""9""+.T  ""XO(+EX/>Y+01%#"&5!&'&676763!O""P.  9"".TVO%+///"/01%'&''&&7676364632O  d .  R""9   . ""VO J+////EX/>Y9901%#"&5'&&7676364632O""my .    T""9""H .""VO J+////EX/>Y9901%#"&5'&&7676364632O""wo .    X""9""V .""VO&+EX/>Y01%#"&5'&&767654632O""a .  f""9""  . ""VO(+EX/>Y+01%#"&5!'&&76763!2O""Q .  "9""p ."UO(!+///%/01%'&''&&7676364632O m{ +    R""9    + ""UO J+////EX/>Y9901%#"&5'&&7676324632O""ws +    T""9""Hu +""UO J+////EX/>Y9901%#"&5'&&767624632O""j +    X""9""G_ +""UO@+////EX/>Y901%#"&5'&&767654632O""\ +   f""9""A +""UO(+EX/>Y+01%#"&5!'&&7676!O""O +   9""" +UO#+/// /01%'&''&&767664632O uu)  R""9  L)V  ""UO [+////EX/>YEX / >Y9901%#"&5'&&767624632O""~n)   T""9""Hq5)V ""UO [+////EX/>YEX / >Y9901%#"&5'&&767624632O""d) X""9""=)V ""UO7+EX/>YEX / >Y01%#"&5'&&76654632O""X)) f""9"")V""UO9+EX/>YEX / >Y+01%#"&5!'&&7676!O""M)9"")V Z( +/EX/>Y 01%!"&5463!4632"" ""9""""Z4+/EX/>Y+01%#"&5!"&5463!4632"""" ""9""""""Z4+/EX/>Y+01%#"&5!"&5463!4632"""" ""9""s""q""Z4+/EX/>Y+01%#"&5!"&5463!4632"""" ""9""""""Z(+EX/>Y+01%#"&5!"&5463!2""""E"9"""""sC t//и/ܹAZj]A )9I]EX/>Y+ 017#"&54632"&54632"""" #22##229""V""q2##22##2sC p//и/ܹAZj]A )9I] /EX/>Y+017#"&54632"&54632"""" #22##229""V""I2##22##2sC p//и/ܹAZj]A )9I] /EX/>Y+017#"&54632"&54632"""" #22##229""V""2##22##2sC p//и/ܹAZj]A )9I] /EX/>Y+017#"&54632"&54632"""" #22##229""V""2##22##2sC //и/ܹAZj]A )9I] /EX/>YEX/>YA!'7GWgw]A '7qAFVq017#"&54632"&54632"""" #22##229""V""q2##22##2s/+EX/>YEX/>Y017#"&5477677676&'"" )9""V )s+EX/>Y017#"&5477676&'""  + 9""V+  s)P%+//// / /////EX"/">Y"9017767676763236127333&'#"&5476  . "" V.  h""Vs4+ / //EX/>Y 9017#"&54632'""" .9""V".s(+EX/>Y +017#"&54767!2#!""""x9""V""sE+ /EX/>YEX/>Y 9017#"&54632&'"""" + 9""V""+  s4+ /EX/>Y 9017#"&54632&'"""" . 9""V""`.  s4+ /EX/>Y 9017#"&54632'""""/9""V""/s4+ /EX/>Y+017#"&54632!2#!""""""x9""V""""s&+ EX/>Y017#"&546326""""f.V9""V"".sE+ /EX/>YEX/>Y 9017#"&54632&'"""" . 9""V""i`.  s4+ /EX/>Y 9017#"&54632'""""/9""V""s/s4+ /EX/>Y+017#"&54632!2#!""""""x9""V""""s4+ /EX/>Y 9017#"&546326""""e/U9""V""/s&+ EX/>Y017#"&5463266""""X . H9""V""  .bsE+ /EX/>YEX/>Y 9017#"&54632'""""/9""V""/s4+ /EX/>Y+017#"&54632!2#!""""""x9""V""9""s4+ /EX/>Y 9017#"&546326""""e/U9""V""r/s4+ /EX/>Y 9017#"&5463266""""X . H9""V""  .`s&+ EX/>Y017#"&5463266""""T + D9""V""  + s( +/EX/>Y 013"&54632!2#""""""V""""s_ +/EX/>YEX/>YEX/>YEX/>Y9017#"'&'&546326  ""e/  V""/s + /017'&''&5463266   ""X . V""h  .s + /017'&''&5463266  ""T + "  V""  +s  +017'&'&'&5463266 ""R)'  V"" )sh"J+EX/>YEX/>YEX/>Y017#"&54767677676!2#!'&'""  ""C9""V "" sj$Q+EX/>YEX/>YEX/>YEX / >Y01%'&'#"&547676776766 ""  /   ""V '/sl#Q +EX/>YEX/>YEX/>YEX / >Y01%#"'&'#"&5476767666  "" .   ""V K .sm"Q +EX/>YEX/>YEX/>YEX / >Y01%#'&'#"&547767666   "" + "   ""V  5| +sm%Q +EX/>YEX/>YEX/>YEX / >Y01%''&'#"&547767767666  "" )'   ""V K)sh`+ /EX/>YEX/>YEX/>Yк 9017#"&54632!2#!'&'""""""D  9""V"")""  sjg+/EX/>YEX/>YEX/>YEX / >Y901%'&'#"&546326 """"/   ""V""H+/sl q + /EX/>YEX/>YEX/>YEX / >Y 9901%#"'&'#"&5463266   """" .   ""V""eV .sm q + /EX/>YEX/>YEX/>YEX / >Y 9901%#"'&'#"&5463266   """" + "   ""V""| +sm Y + EX/>YEX/>YEX/>YEX / >Y01%'"'&'#"&5463266   """")'   ""V"")sh`+ /EX/>YEX/>YEX/>Yк 9017#"&54632!2#!'&'""""""F  9""V""iz"" sjg+/EX/>YEX/>YEX/>YEX / >Y 901%'&'#"&546326  """"/  ""V""i2/sl` + /EX/>YEX/>YEX / >Y9901%'&'#"&5463266   """" .  ""V""id .sm q + /EX/>YEX/>YEX/>YEX / >Y 9901%#"'&'#"&5463266   """" + "  ""V""i +sm Y + EX/>YEX/>YEX/>YEX / >Y01%'"'&'#"&5463266  """"x)'  ""V""i)shZ +/EX/>YEX/>YEX/>Y01!!&'#"&54632!2/<"""""" ""V""""sj! + /EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y 901%"##&'#"&546326 """"/  ""V""</slg+/EX/>YEX/>YEX/>YEX / >Y 901%'&'#"&5463266  """"{ . ""V""z .sm&V+/EX/>YEX/>YEX/>Y901%'&&77'#"&5463266 + 9/""""r + " +A+/""V"" +sm&H+EX/>YEX/>YEX/>Y01%'&&77'#"&5463266)?/""""l)')J//""V"" )sh( +/EX/>Y 01!!"&54632!2/}"""J"""V""""sj9+ /EX/>YEX/>Y01%!"&54632!6 6"""v/ "V""J/sl9+ /EX/>YEX/>Y01%'!"&54632!66  F"""k . "V"" .sm9+ /EX/>YEX/>Y01%'!"&54632!66  D"""e + " "V"" +sm9 +EX/>YEX/>Y 01!!"&54632!66iC"""a)@"V""/) sj/+EX/>YEX/>Y017#"&5477673676'&'""  /I 9""V/O  sh"(+EX/>Y+017#"&54767673676!2#!'&'""  ""F 9""V"""  sj$+EX / >Y01'&'#"&547676736766  ""  /b   ""VA+/sl% +EX / >Y01#&'&'#"&547767367666    ""   . p  ""V^V .sm% +EX / >Y01'&'&'#"&547767367666    ""   + x   ""Vt +sjE+ /EX/>YEX/>Y 9017#"&54632'&'""""/J 9""V""k/N sh>+ /EX/>Y+ 9017#"&54632!2#!'&'""""""G  9""V""z"" sj4+/EX / >Y 901'&'#"&546326  """"/b ""V""2/sl > + /EX / >Y 9 901'"'&'#"&5463266   """" . p ""V""d .sm& + EX / >Y01''&'#"&5463266   """" + x  ""V"" +sjE+ /EX/>YEX/>Y 9017#"&54632'&'"""" /H9""V""s/Osh> +/EX/>Y+901!&'#"&54632!2/;""""""V ""V""s""sj4 +/EX / >Y 901'#"&546326""""/b ""V""s</sl&4+/EX/>Y901'&&77'#"&5463266 . !0/""""{ . p .2$/""V""sz .sm&+EX / >Y01'&'#"&5463266  """"r + x  ""V""s +sjQ+ /EX/>YEX/>Y+и/017#"&54632!2'!"""" /O9""V""9 /Jsh4+ /EX/>Y+01!#"&54632!2/""""J""V""V""9""sj4 +/EX/>Y+01'!#"&54632!6x""""v/b ""V""9J/sl4 +/EX / >Y+01'!#"&54632!66  """"k . p""V""9 .sm0 +EX / >Y+01'!#"&54632!66 """"e + x ""V""9 +sj)p +/EX/>YEX/>YEX/>YEX/>YEX(/(>Y9017##"'&'&54632677633332'  ""e  /b  V""/<sh u +/EX/>YEX/>YEX/>YEX/>Y+9и/017##"'&'&546326763!2#!  ""e ""Q  V"" ""sj _+/EX/>YEX/>YEX/>YEX / >Y901##"'&'&54632676H  ""e/b  V""P/sl_+/EX/>YEX/>YEX/>YEX / >Y901###"'&'&5463266 J  ""a . p  V"" .smQ+EX/>YEX/>YEX/>YEX / >Y01##"'&'&5463266 I  ""] + x  V""  +sl/Y%++//// ////EX/>YEX(/(>Y$(9017767676732732723732&'&'#"&5476   . H"" `T.  h""Vsj*H &+//// / ///EX#/#>Y# 9017767676773367332'&'#"&5476  /J "" a/N h""Vsh-V#)+//// / ////EX&/&>Y+"&90177676767732727332!2#!'&'#"&5476  ""G  "" p"" h""Vsj3P*0+/// / //////EX-/->Y)-90167776767677323612373326'&'#"&547}  /@  "" 2/ h""Vsl.$*+EX'/'>Y0177676767736733266#'&'#"&5476   . @   "" c .V h""VslE+ /EX/>YEX/>Y 9017#"&54632&'""""  . G9""V""T.  sj4+ /EX/>Y 9017#"&54632'&'"""" /H9""V""/Osh> +/EX/>Y+901!&'#"&54632!2/;"""""" q""V""""sj4 +/EX / >Y 901'#"&546326""""/ q""V""</sl&&+EX/>Y01'&&77'#"&5463266 . !0/""""{ .  .2$/q""V""x .slE+ /EX/>YEX/>Y+017#"&54632!6&'!""""   . Q9""V""T. sj@+ /EX/>Y+и/017#"&54632!2'!"""" /O9""V"" /Jsh4+ /EX/>Y+01!#"&54632!2/""""J""""V""""sj4 +/EX/>Y+01'!#"&54632!6x""""v/ ""V""J/sl0 +EX / >Y+01'!#"&54632!66  """"k . ""V"" .slE+ /EX/>YEX/>Y 9017#"&54632676&'""""e   . a9""V""rT. ysj"4+ /EX/>Y 9017#"&54632677632'""""e   /bw9""V""r/<shJ+ /EX/>Y+ 9и/017#"&546326763!2#!""""e ""Qe9""V""r ""sj4 +/EX/>Y901#"&54632676]""""e/""V""rP/sl& +EX/>Y01##"&5463266 _""""a . ""V""r .sl" + /017'&''&5463267636&'   ""X    . oV""h T. dsj# + /017'&''&54632676332'   ""X  /pV""h /1sh + /+017'&''&546326763!2#!   ""X ""]V""h ""sj + /017'&''&54632676   ""X /CV""h O/sl  +01'&''&546326766H   ""X . `V""h  .smE+ / //EX/>YEX/>Y 9017#"&54632&'"""   + F9""V" + sl4+ / //EX/>Y 9017#"&54632&'"""   . F9""V"T.  sj4+ / //EX/>Y 9017#"&54632'&'""" /F9""V"/QshJ +///EX / >Y+и/ 901"'&'#"&54632!2#o """ "" ""V"""sj +EX / >Y01'&'#"&546326""" . ""V";.smE+ /EX/>YEX/>Y+017#"&54632!6&'!""""   + O9""V""+ sl4+ /EX/>Y+017#"&54632!6&'!""""   . Q9""V""T. sj@+ /EX/>Y+и/017#"&54632!2'!"""" /O9""V"" /Jsh4+ /EX/>Y+01!#"&54632!2/""""J""7""V""""sj0 +EX / >Y+01#!#"&54632!6 x""""x. 7""V""H.smE+ /EX/>YEX/>Y 9017#"&54632676&'""""e   + \9""V""+ sl4+ /EX/>Y 9017#"&54632676&'""""e   . a9""V""T. ysj"4+ /EX/>Y 9017#"&54632677632'""""e   /bw9""V""/<shJ+ /EX/>Y+ 9и/017#"&546326763!2#!""""e ""Qe9""V"" ""sj& +EX/>Y01#"&54632676[""""e.q""V""M.sm O+ /EX/>YEX/>Y 9 9017#"&5463267636&'""""X    + i9""V"" + sl >+ /EX/>Y 9 9017#"&5463267636&'""""X    . ow9""V"" T. dsj!4+ /EX/>Y 9017#"&54632676332'""""X  /pi9""V"" /1sh>+ /EX/>Y+ 9017#"&54632676!2#!""""X  ""]Y9""V"" ""zsj&+ EX/>Y017#"&54632676""""X .EO9""V"" L.jsm" + /017'&''&5463267632&'  ""T    + s"  V"" + sl" + /017'&''&546326762&'  ""T    . x"  V"" T. Usj  + /017'&''&54632676'  ""T  /x"  V"" /+sh + /+017'&''&54632676!2#!  ""T  ""c"  V"" ""sj  +017'&''&54632676  ""T .I"  V""  L.sm9+EX/>YEX/>Y +017#"&5463!6&'!""")M9""V" )/sm(+EX/>Y +017#"&54767!6&'!""   + O9""V+ sl(+EX/>Y +017#"&5463!2&'!"""  . Q9""V"V. sj(+EX/>Y +017#"&5463!233'!""" .P9""V".Hsh(+EX/>Y+01!#"&54767!2/""""V""V""sm7+ EX/>YEX/>Y017#"&54632676&'""""f )X9""V"" ) sm&+ EX/>Y017#"&54632676&'""""f   + \9""V""+ sl&+ EX/>Y017#"&54632676&'""""f  . a9""V""V. xsj@+ ////EX/>Y 9017#"&546326'""""f.aw9""V""  .;sh8+ EX/>Y+ 017#"&546326763!2#!""""f  ""Pf9""V""""sm [+ ////EX/>YEX/>Y 9 9017#"&5463267636&'""""X )d9""V""  )sm J+ ////EX/>Y 9 9017#"&5463267636&'""""X    + i9""V"" + sl J+ ////EX/>Y 9 9017#"&5463267636&'""""X    . ow9""V"" V. bsj&+ EX/>Y017#"&54632676'""""X .oi9""V""  .0sh8+ EX/>Y+ 017#"&54632676!2#!""""X  ""]Y9""V"" ""|sm [+ ////EX/>YEX/>Y 9 9017#"&5463267636&'""""T   )m9""V""  )sm J+ ////EX/>Y 9 9017#"&5463267632&'""""T    + sw9""V"" + ~sl J+ ////EX/>Y 9 9017#"&546326762&'""""T    . xn9""V"" V. Shsj&+ EX/>Y017#"&54632676'""""T  .x`9""V"" .)Jsh8+ EX/>Y+ 017#"&54632676!2#!""""T  ""cS9""V"" ""+sm# +////017'&'&'&546326766&' ""R  )u'  V""   )sm# +////017'&'&'&546326762&' ""R    + z'  V""  + zsl# +////017'&'&'&546326762&' ""R  . '  V""  V. Isj  +017'&'&'&5463266' ""R) .~'  V"" .%sh ++017'&'&'&54632676!2#! ""R""g'  V""  ""s*( + /EX/>Y 01!!&'&54632!2"" ""V""""s*4+ /EX/>Y+01!#"&54632!2"""" ""V""V""9""s*4+ /EX/>Y+01!#"&54632!2"""" """"V""""s*4+ /EX/>Y+01!#"&54632!2"""" ""7""V""""s*(+EX/>Y+01!#"&54767!2""I""V""V""pd +01"&5463!2#""6""""""t1 &'&67%6 &6&&&t &'&676+6+++t &'&676. 6.  . [ . s &'&676#/6//$/qR &'&676(06000q '&&766+/6///r '&&766./6///t '&&7660- 6-  -F -t1 &&766' &6&D&&p- +01"&5463!2#""6""E""""t &'&67%6 &6&D&&t &'&676+6+A++t &'&676. 6. > . [ . sT &'&676#/6/:/$/q &'&676(060600q '&&766+/6/2//r '&&766./6///}/t '&&766'+6++n+t '&&766' &6&&&p +017"&5463!2#""6""""""t 7&'&67%6 &6&&&t 7&'&676+6+++tU 7&'&676. 6.  . [ . s 7&'&676#/6//$/q 7&'&676(06000q 7'&&766+/6///t &&766' .6 .T . . t &&766'+6+Q+n+t &&766' &6&N&&Mp +01"&5463!2#""6""M""""It &'&67%6 &6&N&&ItU &'&676+6+Q++It &'&676. 6. T . [ . Js &'&676#/6/X/$/Lq &'&676(060\00s &&766'!/6/!//t &&766' .6 . . . t &&766'+6++n+It &&766' &6&&&p +01"&5463!2#""6""""""tU &'&67%6 &6&&&t &'&676+6+++t &'&676. 6.  . [ . s &'&676#/6/!/"/qR &&766'&06000sT &&766'!/6///tU &&766' .6 . . . ItU &&766'+6++n+tU &&766' &6&&&pQ +01"&5463!2#""6""""""t &'&67%6 &6&&&t &'&676+6+++t &'&676. 6.  . Y . q &676&')/6//J/q &&766'&06000s &&766'!/6///It &&766' .6 . . . t &&766'+6++n+t &&766' &6&&&p +01"&5463!2#""6""""""t &'&67%6 &6&&&t &'&676+6+++r &676&',/6///q &676&')/6//J/q &&766'&06000Js &&766'!/6/|//t &&766' .6 .x . . t &&766'+6+u+n+t &&766' &6&r&&qp +01"&5463!2#""6""q""""mt &'&67%6 &6&r&&t &676&'. -6 -Q- - r &676&',/6/N//q &676&')/6/K/L/Lq &&766'&060G00s &&766'!/6/C//t &&766' .6 .? . . t &&766'+6+<+p+mt &&766' &6&9&&8p +01"&5463!2#""6""8"""" D #/;GS_kwuic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A99&969F9V9f9v999999 ]A99]3?и9EAQQ&Q6QFQVQfQvQQQQQQ ]AQQ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuи y+ +ии $и*и0и6и <иBиHиNи TиZи`иfи lиr01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632     p #/;GS_kw+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии иии/01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         G""""t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         H&&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         K++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.          N . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         R/$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         V00q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766"/6/         Z//r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766/6/         ]//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766- 6-          ` -F -t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.           . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         /$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         00q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766"/6/         #//r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766/6/         &/}/t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.           . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         /$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         00q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632'&&766"/6/         //t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .          . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.           . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         /$/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676%060         00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         v//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .         r . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         o+n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         l&&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         k""""t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         l&&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         o++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.          r . [ . s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&676*/6/         v/"/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060         C00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         ?//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .         ; . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         8+n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         5&&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         4""""t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         5&&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         8++t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6760. 6.          ; . Y . q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'v/6/         /J/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060          00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         //t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .          . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&6768+6+         ++r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'y/6/         //q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'v/6/         /J/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060         00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         //t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .          . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         +n+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         &&p #/;GS_kww+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + ++ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         """"t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&'&67%6B&6&         &&t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'{ -6 -         Z- - r #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'y/6/         ]//q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&676&'v/6/         `/L/q #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766's060         d00s #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'n/6/         h//t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'h .6 .         l . . t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'`+6+         o+p+t #/;GS_kwm+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии и01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632&&766'V&6&         r&&p #/;GS_kw+++{+ic+QK+93+!+ +A]A )9IYiy ]и A]A )9IYiy ]'и!-A33]A 33)393I3Y3i3y333333 ]3?и9EAKK]A KK)K9KIKYKiKyKKKKKK ]KWиQ]Aii&i6iFiVifiviiiiii ]Aii]coиiuA&6FVfv ]A]{иA&6FVfv ]A]иA&6FVfv ]A]иA&6FVfv ]A]ии + +ии $и*и0и6и <иBиHиNи TиZи`иfи lиrиxи~и ииии ииии ииии ии и/01"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&54632"&5463!2#L""6""         s""""Ez&@Ѻ5+'+AZ'j']A '')'9'I']A55&565F5V5f5v555555 ]A55]BEX/ >YEX"/" >YEX%/% >YEX/>YEX/>YEX/>Y".AI.Y.qA!..(.8.H.X.h.x.........]A ..(.8.q:A!::':7:G:W:g:w:::::::::]A ::':7:qAF:V:q012###"&#"&&&&&5466666332764&&&&&#"3266666b\23\b-D!b\33\bF# -RsWXsR-cWsR-z3]bb\33\bb\39WsR--RsWc-Rs]n//9017](n(lH )+//9901#73F_~_V%Z!%Hu)+//9901333^{H )+//9901#'3~_!Z%VHu)+//9901##{+|n)+//9901##7guH= +//99 9 901#7'3F____V%ZLZ%V%%)AP:+*/EX/>Y*9*99*9:*9015!&&&&&&'7'6666667&&&&&&'6666667)0LA=DQ44QD=AL0B1=,!*9..9*!,=1B0LA=DQ44QD=AL0B1=,!*9..9*!,=1))A<=IZ;;ZI=Y+01'%!5!%7i#|j#@[{[{/ /// +01'%!5!%7%%%V%ZLZ%V^^^^ / ///+01!'7!5yJqpHJqp3///+к901!!'!%5%!kQqm2#@#j {8[[G3%/ / +  и01!%7'%!'!5!j#@#تms[[8{G=fU//и/ ܹ / //99 901#73737+Vh_taat_f{:a:=f[//ܹи/9 /// 9 9  901'#'#'3dtaat_Va:{=fk//ܹ и ///99 9 99901'7#7'3'7dVh_tt_V_tt_^m{:e:{::R)// + +015!!!N9{9`wu^V^u``R) //+ +01%'7!5!7'!5!'739`9{^u``u^hVR)1/// /++901!!7'7!5!'7Jl99{9d9{>^uu^V^uu^hV\ //99017%L\b])^V=V^)\b\Z //9901%777B)ZV\=\VZ)Z //9901'''%\ZV^)]bN)ZV\b\ //9901%%'P)b\VZ\\b\)^VZp&//901'&&&&&&'76766%w׽Cw["/CX:F[6U-]c*_df0Yn&?wyaJo'BN;g'R+ и EX / >Y+ +и  01!53!!#!5'cyyzz?b{c{fRh3///901#33Z]$%\Rm3 |///901#33 -.. pIfRh3///901#3 ]TZTRm3 |///901#3.- Ipfu//9015fuNNN2//9015}2NNN 3_//9015%3u''zz'fu//9015%%5fuuNNN2 :+ 3_//9015%%53u'zz''# 0  +/// //9 9013#5%%5M%$]Zu)mSNNNgv+A&6FVfv ]A]EX / >Y+  01"&&&5466633#"33H`99`H1>$ $>1g0G//G0E..EAe+A&6FVfv ]A]+  +01"&&&5466633#"33H`99`H1>$ $>10G//G0E..E!g~+A]A )9IYiy ]EX/ >Y+ 0153266654&&&##532#!1>$ $>1H`99`HgE..E0G//G0!Am+A]A )9IYiy ]+ +0153266654&&&##532#!1>$ $>1H`99`HE..E0G//G0+ A&6FVfv ]A]и EX/ >YEX / >Y+  01"&&&5466633#"335!H`99`H1>$ $>1ig0G//G0E..EFFv + и A&6FVfv ]A]/ ++015!'"&&&54633#"33-t>]>||1@&&@1vGE-I5jWG /##. E!m+ܸ ииEX/ >YEX/ >Y+ 0153266654&&&##532#5!!1>$ $>1H`99`HtgE..E0G//G0FF!xK+ܸ ии+ ++0153266654&&&##532#5!!1>$ $>1H`99`HoE..E0G//G0EEd8" r# lz# dz pzd8" r# _z# cz e d8" r# bz# R, SQd8" r TJd8" r ozd8" r# fz# kz azd8" r# fz# kz gzd8" r# fz# kz izd8" r# jz# `z bzd8" r# kz# fz azd8" r# kz# fz gzd8" r# kz# fz izd8" r# mI# l Vd8" r# mI# l Wd8" r# mI# l Xd8" r# mI# l Yd8" r# mI# l Zd8" r# mI# l [d8" r# mI# l \d8" r# mI# l ]d8" r# mI# l ^d8" r# mI# l# V UBd8" r# mI# l# V VUd8" r# mI# l# V WBd8" r# mI# l# V XBd8" r# mI# l# V YBd8" r# mI# l# V ZBd8" r# mI# l# V [Bd8" r# nz eFd8" r# qX# n e d8,;q{W++x+kX+<Q+45+-+|+<ܺ<9|9 |9Akk&k6kFkVkfkvkkkkkk ]Akk] Xk9AQQ]A QQ)Q9QIQYQiQyQQQQQQ ]Q<9A]A )9IYiy ]-9/ܸxи/x#и#/XFиF/kGиG/rиr/t|9xzиz/|~|ии~и}ииии4ииXи/<иXи/ии~и|и}иииии~и|и}и<иии~и|и}и~и|и}и~и|и}иии|EX/ >YEX/ >YEX/ >YEX/ >YEX/ >YEX/ >YEXr/r >YEX/ >YEX/ >YEX / >YEX / >YEX/ >YEX/ >YEXv/v >Y+|+++]+z{+ 9{и t t9{к 9{ к 9 9 9{иAи/]и/2и2/A4и4/]6и6/ALиL/hиh/tuи|}ܸܸиии|ии}ии/иииии|ии|ии|ии|ииии{и/]и/ииии{и/]и/ииии|и01###3333##32%###32#"&&&533266654&&&&&5466632#4&&&#"5!5!!#5#533!!5353!##4&##3264&##326%4&&&##3266653353#5##5##5##53#%3#3#3#53!533#533#%3#3#3##53#'&#*' :9#6%"7) $0"! < QAR}@dh,ddld-033&'= ddddddddddddd ddddddLddDd8" r# qX# n# h0 eF d8" r# qX# n# lF j# !O1"++;+A &6F]AUe]",A 11&161F1]AU1e1]AZ;j;]A ;;);9;I;]E9E/F//EX/ >YEX/>Y A  ' 7 G W g w ]A ]6AI6Y6qA!66(686H6X6h6x666666666]A 66(686q014&&&#"326664&&&#"3266654&&&546663236666766661')  )'8dQW\/$% 0G0'SD+"!1!+5O56/ 0e))*+JuR+0Ph81=# !*-./'BiK'TOG7jknY01!#!5T'''/EX/>Y01!!#''''dB+ии ииEX / >YEX / >YEX/ >YEX/>YEX/>Y 015!!5!!5!!5!5!5!d!!!!?Bei]B?+и и ииEX/ >YEX/ >YEX/ >YEX/>YEX/>Y01!!!!!!!!!!?!!!!ia`2JE+/+01!#EDWW4G^+/+013!4WW3JF!+/+01#!5FWDr7W5H^!+/+015!35WW7rb% + и01&&&&#"#466632 ,=H&&H<, R&LrMLrM&+@))@+6lX77Xl6B9!+ и01#"&&&54632326667'4632B2Rg65hR260/8o0B-/C.n8.340Q<" :Q217:*D  F(:9C Y +A  & 6 F V f v ]A ]//01&&54673(++(0!"bKUUHMSRND Y+A]A )9IYiy ]/ /017#6654&'3*)/! /)*UKNRSMH#Z //01#73W4,Y^%w';(/)/ܸA]A )9IYiy ](и/ A  & 6 F V f v ]A ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&54666320&!!&&!!&G #C99C# #C99C# +J7 7J++R?&&?R+/fT66Tf//^L00L^`*+ /EX/>Y 90135667673*) I >.n +A]A )9IYiy ]и"EX/>Y +013566666654&#"#6666323.=U7$-''K&:)':& .aWE/M>1( //-1!8**3>NeE:"z4-+-и/A]A )9IYiy ]и/0-9-6EX/>Y(!+A!'7GWgw]A '7qAFVqܺ0901%#"&&&533266654춮&&&#"#6632z.@'-@)N "$3:8+! #)J OE&>,   !7)+6!!>1:.8/-HL&365/ \ + ии  /EX/>Y + 9 и013#5#533DDQB=MF='u&+A]A )9IYiy ]EX/>Y+"+ A!  ' 7 G W g w ]A   ' 7 qAF V q"901%#"&533266654&#"#!#666632u-:R]N2'!%1%/C  !#6%$C3JB*&.9E- 7> 2A"z 23/4/ ܸܸи/3и/A&6FVfv ]A]'и'/)и)/EX/>Y"+.+ A!  ' 7 G W g w ]A   ' 7 qAF V q01%4&#"3267#"&&&5466632#&&#"666632.)33++33)L$@3=G% 'G9JB G*"   "4>! 6;;66;;6;3#"Cb@3hR4DD.")1?  $4;*rEX/>Y+013#!5!QH;K ~ ?}@/A/6ܸ A ]A  ) 9 I Y i y ]и/@,и,/A&6FVfv ]A]и/',69;,69EX/>Y1++ A!  ' 7 G W g w ]A   ' 7 qAF V q'9;901%4&#"3264&#"326#"&&&546767&'&&546663265218188/ .-,/6%&5T!3>>3!.89- -99--;;$)//)*..)9""9))7 1$"1  1"$1 7"z 2e3/4/ ܸA]A )9IYiy ]3)и)/A&6FVfv ]A]и/и/и/EX/>Y.+ $+A!'7GWgw]A '7qAFVq014&#"326#"&'33266676'#"&&&5466632(+33))33+R 'G9IB F)"!  #3>! $A3=G$ u7::76;;(3hR4DD." (1@  $4;;3#"Cb,#$/%/ܸ$ и /ܸ A&6FVfv ]A]EX/>Y+ A!  ' 7 G W g w ]A   ' 7 qAF V q01%#"&&&5466632#4&#"32652I.>T34T?2H.J4>IJ%5!3E 7),Kc66eN/)8/0lsY+014&##3267##32dX\\XdHY++ 013!#3#!;JA@@;q 8+EX/>Y++013##!K6ԣ@A,-.///ܸܸи/.#и#/ A  & 6 F V f v ]A ]-и-/EX/>Y(+A!'7GWgw]A '7qAFVq014&&&#"3267675#53#"&&&5466632 -2H-*D3/z64/Th8$B`<4M2 3G(-T@'@  7Wi35\E(*2; c / / ܸܸ и/ܸи/ /EX/>YEX/>Y+01!5##3353KKK,h +/EX/>YA!'7GWgw]A '7qAFVq01%#"&&&5332653h*<$#9(I2"!3J&=-(9!4%44w;q&+/EX/>Y01333;K+@;[ // ܸܸ и/ܺ  9/ /EX/>YEX/>YEX/>Y99 901!##33;Kuu26R; e / / и/ܸ  ܸ//EX/>YEX/>Y9901!#33pKjJLK,';(/)/ܸA]A )9IYiy ](и/ A  & 6 F V f v ]A ]EX/>Y#+A!'7GWgw]A '7qAFVq014&&&#"326667#"&&&5466632%@00@&&@00@%L;[=>[<<[>=[;*I77I**P?&&?P*9gP//Pg99aG((Ga;// ܸA]A )9IYiy ]и/ܸEX/>Y++014&##3267###32W@CNNC@H#:J&LK&J:#{3&'22=  !=;()/*/ܸ A ]A  ) 9 I Y i y ]и/ и/) и / ܸи/ 9 и/ $EX/>YEX / >Y#+& + &901!&&&''&&&&###324&##326f -%@K^a;(  XA6\\6A! ).AQ)7.8@"/"",5S6/7/ܸ6и/ и //A//&/6/F/V/f/v////// ]A//] и /A]A )9IYiy ]EX/>Y!,+A!'7GWgw]A '7qAFVq01%#"&&&533266654&&&&&5466632#4&&&#")@P'&@/K$5./GSG/"4A#D5!J"+-:/GRG//=$,>'&#*' :9#6%"7) $0"! < &//EX/>Y901!#33QSSK  O// /EX/>YEX/>Y99 901!##333$B|{BOppXqpODYY A//EX/>YEX/>Y9901!'#'373Xī_{W 8+9//EX/>Y901%#533J[TA! (EX/>Y+0135!5!!!,n3QAR}@d8 !%)-159=AEIMQW]ag˻32++ и и и иии иии иии ии26и37и2Xи9и2:и3;иX=и2>и3?иXAиRи SиTиVи3Zи2\2^и3_иXaи2bи\cи3eиXgиiEX/ >YEX@/@ >YEX/ >YEX:/: >Y ++йи"и#и%и&и'и)и*и+и-и.и/и1иBиCиRиEиFиGиRIиJиKиRMиNиOиRQиRSܸUиXи Yи[и]иbиRcиdиSf0153#53#3#3#3#3#!535353!53!53!533#3#3#3##5!#5!#5!#5!#5#5333#!##dddddddddddd| ddddddddXdddd,ddddd ddddddddddX Xdddddddddh,dd"_<,E|'  | @  sxdXXwBP^XyFm=BZ=}R``R\RVRR=}=Bf}d BPBBT3PBD3B?7;3P3P1B+P!?TsPbbZFqFFF;3FmFV^F`5))ZFy+dF!//F7+;D=F{,d d PB3P?FFFFFFFFFFFmFmmm)ZFZFZFZFZF++++fXyfH7-FFTFw PX`w!9)(71FFZFR)9 NRXd d PPFP}P}LH=RNR;;H}} Bd Bd BBD,PP*KP???mFbRj}FL27FFFFFFFFFFFFFFFFFFFLFFLFFFFFFFFFFFFFF##FF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3&FF2FFF21FLhPd  bd d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d +PBw  w w #qqqqqqVqqFF3 {11?B%0=BBB#1+3j1113Z 33-""LFw1FFFFFLFFFFFl2FFl2l2FFFFBFFBPP#FPPPPPPPPGWB9PP#H#HPPPPPFF7FFFFFyFFFFFFFFFFF5F5FyFyFFhF'F2PF2B09BBBBBB%%P CB CB +B +BPP BOO2F27FFFF7FFFFFFFFFFFFFFFFFFFFFFFFF##FFF27FjFF F2FV1F1Z%1FHFF2FFFFVVB05BBBBBBBBBBBBBBBBBBBBBBBBBBBBB B0LPLPLPyP^P^P^P^Pd d;-;;;;;;;;;;;;7;7;7;(;;;33333T3NT797j%+9779799913F3F3F3F3F3F3F33mFmF2mFmFmFmFmFmFmFFmF3FF9FPPPPPPPPPF<Po+#pp+'+/$)+9;*i7}7777777?"???m;m;5B00+BBBBBBBBBBBB?5BBBmBB>BBBBBBBmFmFmF217m2mmmmmCmmmFmmFmFmFmFm7%mFmFmFmF22mmFmFmFm7%m7)FFGFFFF2F/DD`7D197o%N!!DDDDD 9_ DHDDDD7H93V^V^V^V^^V^V^V^V^V^^JJ      3&;)33       FFFFFFH+FF=7=7=7=7<=R7=7Q0B7BBBBBBB1BB'B!B9BB!!!!`5`5-`5```5``5{5C5`5'````5'555\X?7)5J'?7?7?7?7?7?7Z7?7???7 7)o))))')d+o+k!F77;;+-;;;;?;P)))))))))H ''1)))BBBBBB&+33333333cA5/%599/93 3=BBBBBBZF21ZFZ(ZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZF'FZFZF1ZF1F4DF-ZF*FFFFFFoFr.FC2EFFFZF2ZF2P9FPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPGPPPPPPPPPFC2.PKK 6 6FsFF5Py+#y+y+y+yy+yy+y+/=+hdF2F-2-2F3&1133335Ab.B5KPPBFFFFP$#!/!!/!/!/!!/!/!/!/!!!/!/!!!!+J)_0/11B1B1B1B1B1B1B1B1B1 1?BB];wB/ /1%+DP1/F/F/F/F/F/F/F/F/F/F/F/F2/F/2/F2G5V+P+P+P+P+P+P+P+P+P+P+P/Qz)#7!777777)77 P77)77 <<<(<!!!!!!!!!!S!!!!!!!#u+++++++++++++++++++++++#+++++++3& nV+!`F1`7.?????????????????????1??????;wP;; ;;;   ;; b F22T\TTT  @T VDDDDDDDwDVFssssss~ )ZZ Z=================++9;9;w;9;9;     B?B?B?B?B?FT#FFFFFFFf2FF/Ff2FFFFPPPPPPPPPPPP-+-+!-+-++-+-+F:BBeF++++BCPPm3FPPPw4m3PPPQ#--55dd??X??55R;;s+-55775555^^^b^^^??NNN%;;ynDD!!R}}=}noPRPP=;MP^; X XHHHTT22M    U2-//ZZZ2Z??gi 33j3jjm3:33j3j3jfbbbbmhhbbbBbmm____2pnp>c.!Nu||RR%\%Q%Z33aaRRvK2o3f1eoo3f3fo8'<NZ%)w%)wSSwsdfm&-y--m&---2222<:4=TsssssTZTXTVTUTUTXTZTXTVTUTVTXTZTXTVTUTVTXTZTXTUTUTVTXTZ|||||||||||||||||||||||||(Z(Z(Z(Z(Z(t(t(t(t(tnnnnn(U(U(V(X(Z(U(V(X(Z(X(V(X(Z(X(V(X(Z(X(V(U(Z(X(V(U(UUUUUUUUUUUVVVVVXXXXXZZZZZUUUUUVVVVVXXXXXZZZZZXXXXXVVVVVXXXXXZZZZZXXXXXVVVVVXXXXXZZZZZXXXXXVVVVVUUUUUZZZZZXXXXXVVVVVUUUUUUUUUUZZZZZsssss(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss888888888888888888888888888888888888888888888888888888888888888888888888888888888X888888888888888888888888888888888888888888888888888888888888888888888888888888888E]HH+`X===RRR\ZZ\pf3f3Bf!3Bf!3!!!! `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d `d=Hf) T-Tdw2w4w3w5bB C D#%`."'"* ",;;;2, ;,;;;:,;;,   ! `dpppp,X B t  $ >N^F$Z `!!""P$H'')))*+X-.f.v.///024*67:@:<<<<=>*>r>>>?$?4AC>CNC^ENF8I:IJIZIjJnJ~JLFN:PRTDVzWXYZZ(["[\\^^^^aabbb6bLbdb|bbbeeeef f f6fLfbfzfffffg g"g:gRgi j^m"oppsvyzz{ {{~.Z&jR&X2:T h\\t`l" 8P(8H(Nf~&>V<Tl|txD"@ $Ddzš°6NnÎî&Ff~ĖĮ>VnņŞd*\0H`<,V&>Vvۖ۶&Ff܆ܦ&F^~ݖݶ| 8f~&F^~.Nf&F^~8P   Z~" !#`&')L*-2-J/X1.2455527F9;|=?8@BfCEGIdI|KNOQT8UUV V$V<VTY[^"`beNhj,lhnoqtDvxz${}} |.nzVB^n* ":RjfphĂXpɐ˸Π҄Lۺ&>Vnb" @L82Rj 8Pp > 6 8v *R!"%t'$*F-.147|94;|=?ADLDbG@IKLMXN@NXNpNNNNOOO8OPOpOOOOOPP P@PXPpPPPPRUTVX<Y\_```bcehPjjmorHs2ttunvwyy,zzz}}}`0HntzFJ$.6\0H`xhTz " Z<Nf~ǖǮ0٪ܒނxP:J^Bz hL <R $<Tl    4*N :!!,""#z######$$($F$^$v$&'Z()***+D+,B,,,../0n12`2x22223l347 707@78R89h9:::2:J:b:z:::::;<<=\>.>???:?R?j?@CCDrDDEGII*I:IJNJ^K,KMNOPRStUrVXfYZ[\\]_4`Zace:g hi6iNifi~iikl m:nFnVooqvrt|v@xTzzz}n~&>V(pB.&>Zz  8Xp\t,2p~,4Ld|\0BZrL.ƌŤΎv,:լצلd܂4Ld|ޔޮ4d<8Px6Nflt&>p     R j vl~:Rr0Ph0Hh& " 2"#\#t%p&2(**-/l122(2@2X2p4789<?nADjFGHIJLMNNNNNOO6OVOnOOOOOPP.PNPnPPPPPQQ6QNQfSVZXvZZ\\^anadd&d>dVdndfikmpvrtv>x{8|vLd|(rfftrxb" x4ϦhbtҊҢҺ4L$ؤ~XPXt<T4@lJfJ`~0H  jL !!.!F!^!~!!!!!%n'*h++$+<+T+l+++++-/n0r135679v<*?BDdEFTG:HJJKLKLL,LDL\LtLLNpOVP>QJQRSzT,UW(X\YZ[[[\\&\>\V\n\\\\]]&]F]^]v]]]]`acevfhhiii0iHklmoFpqstvwwy"yz z$z<zTzlzzzzz{{<{\{t{{{{{}d6 8Ph>Xj<TtXX@TtdF^vh 8Ph|T8rfrtŒ¤0:Rrl*BZrȊȢȺ2JbʠˆDPHвҎH`֢2ھnۆ۞۶..N6NfTl40R.F^<Xh:x. L \    d4, !$&L'J()**+Z,0-J/1p23x4579;=>@@Z@BD@EFG|I&L(M^ORTXT[B]``dXfimopqr`rxrs"sstttuuvvvwxPyyzV{}}^}}}~2~Nj$\Ll(PzDjPbt$6V~6HTtH`PRl2p&>VH`z@RRdz&.4&R&|"4Z6H>T`r8Jj"48Jj|"hz`*lLV~68.hFB–:Ì0Ă&xNƈ8vDz*fȢXɔ Jʆ:v˴8r̬"`͜PΌB~Ϻ4pЬ$`ўўўўўўўўўўў&dҢ*hӦ"ժl.f\Hڮۜ ܜ"݌ތߺttx bZ"d0:bL2xH|,82|RB H  p     : b2JxN0.l~$\t H !""#b#$%%&'2'(v) )*4*+8+,\--.&./0001X223z345f6267h78N89F9:p;2;<=>|>?@J@AHABPBC@CDXDEXEFbFGbGH\HIvIJFJKhL8MMNO`P2QQRSxTJUUVWrXjY:ZZ[B[\\\]|^^_T_`a8abtc"cd^defHfgh hi0ijkldm0mnopqrFrsttu\vvw wxBxyzBz{d{|v|}l}~ d$B"rl4DHJL>p8x l&r8N>:$bP8r$^ F2lTD~2n"\L<x*fVF4p$^N>zŽxbL6  l#V*@1*8>ELSZahvo`vJ}4jT<& t \ F . # * 0 7 > E L S| Zf aN h8 o" v | n V > &  ݮ 0 ^  b ( V  F F 4 ` $ h  d V ( f $ ^ p  B \ J  * R z " J r  : b  * R  B r    < l & \  l D ~   8  &  > b  | f      8 6 ! "v # #^ $ % &^ & '\ ' ) * + - .$ . / /| / 3 s  W2@@Q,X /  y~  ") K XY "  0 ^ "{  " 47Copyright (c) SIL International, 1997-2007. All rights reserved.Charis GrcRegTestRegularSIL International:Charis GrcRegTest:26-0-107Charis GrcRegTestVersion 4.100CharisGrcRegTest-RegularCharis SIL is a trademark of SIL International.SIL Internationalwww.sil.orgThis Font Software is Copyright (c) 2003-2005, SIL International (http://scripts.sil.org/). All Rights Reserved."Charis" is a Reserved Font Name for this Font Software."SIL" is a Reserved Font Name for this Font Software.This Font Software is licensed under the SIL Open Font License, Version 1.0. No modification of the license is permitted, only verbatim copy is allowed. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL-----------------------------------------------------------SIL OPEN FONT LICENSE Version 1.0 - 22 November 2005-----------------------------------------------------------PREAMBLEThe goals of the Open Font License (OFL) are to stimulate worldwide development of cooperative font projects, to support the font creation efforts of academic and linguistic communities, and to provide an open framework in which fonts may be shared and improved in partnership with others.The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and sold with any software provided that the font names of derivative works are changed. The fonts and derivatives, however, cannot be released under any other type of license.DEFINITIONS"Font Software" refers to any and all of the following:- font files- data files- source code- build scripts- documentation"Reserved Font Name" refers to the Font Software name as seen by users and any other names as specified after the copyright statement."Standard Version" refers to the collection of Font Software components as distributed by the Copyright Holder."Modified Version" refers to any derivative font software made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Standard Version, by changing formats or by porting the Font Software to a new environment."Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.PERMISSION & CONDITIONSPermission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the FontSoftware, subject to the following conditions:1) Neither the Font Software nor any of its individual components, in Standard or Modified Versions, may be sold by itself.2) Standard or Modified Versions of the Font Software may be bundled, redistributed and sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.3) No Modified Version of the Font Software may use the Reserved Font Name(s), in part or in whole, unless explicit written permission is granted by the Copyright Holder. This restriction applies to all references stored in the Font Software, such as the font menu name and other font description fields, which are used to differentiate the font from others.4) The name(s) of the Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder and the Author(s) or with their explicit written permission.5) The Font Software, modified or unmodified, in part or in whole, must be distributed using this license, and may not be distributed under any other license.TERMINATIONThis license becomes null and void if any of the above conditions are not met.DISCLAIMERTHE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.http://scripts.sil.org/OFLCharis GrcRegTestCopyright (c) SIL International, 1997-2007. All rights reserved.Charis GrcRegTestRegularSIL International:Charis GrcRegTest:26-0-107Charis GrcRegTestVersion 4.100CharisGrcRegTest-RegularCharis SIL is a trademark of SIL International.SIL Internationalwww.sil.orgThis Font Software is Copyright (c) 2003-2005, SIL International (http://scripts.sil.org/). All Rights Reserved. "Charis" is a Reserved Font Name for this Font Software. "SIL" is a Reserved Font Name for this Font Software. This Font Software is licensed under the SIL Open Font License, Version 1.0. No modification of the license is permitted, only verbatim copy is allowed. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.0 - 22 November 2005 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of cooperative font projects, to support the font creation efforts of academic and linguistic communities, and to provide an open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and sold with any software provided that the font names of derivative works are changed. The fonts and derivatives, however, cannot be released under any other type of license. DEFINITIONS "Font Software" refers to any and all of the following: - font files - data files - source code - build scripts - documentation "Reserved Font Name" refers to the Font Software name as seen by users and any other names as specified after the copyright statement. "Standard Version" refers to the collection of Font Software components as distributed by the Copyright Holder. "Modified Version" refers to any derivative font software made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Standard Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the FontSoftware, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Standard or Modified Versions, may be sold by itself. 2) Standard or Modified Versions of the Font Software may be bundled, redistributed and sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s), in part or in whole, unless explicit written permission is granted by the Copyright Holder. This restriction applies to all references stored in the Font Software, such as the font menu name and other font description fields, which are used to differentiate the font from others. 4) The name(s) of the Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed using this license, and may not be distributed under any other license. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.http://scripts.sil.org/OFLx s  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s tuni00A0uni25CCa.2StorySlantItalicuni0430uni2090uni1D43uni0363uni0201uni1EADuni1EA5 uni1EA5.VNuni1EA7 uni1EA7.VNuni1EAB uni1EAB.VNuni1EA9 uni1EA9.VNuni0203abreveuni1EB7uni1EAF uni1EAF.VNuni1EB1 uni1EB1.VNuni1EB5 uni1EB5.VNuni1EB3 uni1EB3.VNuni04D1uni01CEamacronuni04D3uni01DFuni0227uni01E1 aringacuteuni1E9Auni1EA3uni1EA1uni1E01aogonekaogonek.RetroHookStyleuni1D8Funi2C65atilde.2StorySlantItalicuni1EA1.2StorySlantItalicuni0250uni0250.2StorySlantItalicuni1D44uni0251 a.SngStoryuni1D45aacute.SngStoryagrave.SngStoryuni0201.SngStoryacircumflex.SngStoryuni1EAD.SngStoryuni1EA5.SngStoryuni1EA7.SngStoryuni1EAB.SngStoryuni1EA9.SngStoryuni0203.SngStoryabreve.SngStoryuni1EB7.SngStoryuni1EAF.SngStoryuni1EB1.SngStoryuni1EB5.SngStoryuni1EB3.SngStoryuni01CE.SngStoryatilde.SngStoryamacron.SngStoryadieresis.SngStoryuni01DF.SngStoryuni0227.SngStoryuni01E1.SngStoryaring.SngStoryaringacute.SngStoryuni1E9A.SngStoryuni1EA3.SngStoryuni1EA1.SngStoryuni1E01.SngStoryaogonek.SngStoryaogonek.SngStory.RetroHookStyleuni1D90uni0252uni1D9Bae.2StorySlantItalicuni04D5uniF1A1aeacuteuni01E3uni1D02uni1D46alphauniF247uniF248uni0410uni1D2Cuni1D00uni0200uni1EA4 uni1EA4.VNuni1EA6 uni1EA6.VNuni1EAA uni1EAA.VNuni1EA8 uni1EA8.VNuni1EACuni0202Abreveuni1EAE uni1EAE.VNuni1EB0 uni1EB0.VNuni1EB4 uni1EB4.VNuni1EB2 uni1EB2.VNuni1EB6uni04D0uni01CDAmacronuni04D2uni01DEuni0226uni01E0 Aringacuteuni1EA2uni1EA0uni1E00AogonekAogonek.RetroHookStyleuni023Auni20B3uniF208uniF209uni04D4uni1D2Duni1D01AEacuteuni01E2uni1D47uni1E03uni1E07uni1E05uni1D80uni0180.BarBowluni0180uni1D6Cuni0253uni0185uni0183uni0431uni044Cuni048Duni044Auni044Buni04F9uni0432uni0412uni1D2Euni0299uni1E02uni1E06uni1E04uni0243uni1D2Funi1D03uni0181uni0184uni0182uni0411uni042Cuni048Cuni042Auni042Buni04F8betauni1D66uni1D5Duni0441uni217Duni1D9Cuni0368 ccircumflex cdotaccentuni1E09uni04ABuniF225uni023Cuni0297uni0188uni0255uni1D9Duni0254uni0254.TopSerifuni1D53uni1D53.TopSerifuni1D97uni1D97.TopSerifuni2184uni1D12uni0454uni044Duni04EDuni044D.MongolStyleuni0421uni216Duni1D04 Ccircumflex Cdotaccentuni1E08uni04AAuni023Buni0187Euro colonmonetaryuni20A0uni20A2uni20B5uni0186uni0186.TopSerifuni1D10uni1D10.TopSerifuni2183uni0404uni042Duni04ECuni042D.MongolStyleuni0501uni217Euni1D48uni0369uni1E0Buni1E13uni1E0Funi1E0Duni1E11dcaronuni1D81dcroat.BarBowldonguni1D6Duni0257uni0256uni1D91uni0221uni018Cuni0238uni01F3uni01C6uni02A3uni02A5uni02A4uni0503deltauni1D5Funi1D9Euni216Euni1D30uni1D05Dcaronuni1E0Auni1E12uni1E0Euni1E0Cuni1E10Dcroatuni0189uni1D06uniF20Duni018Auni018Buni01F2uni01C5uni01F1uni01C4uni0500uni0502uni0394uni2181uni2180uni2182uni20AFuni0435uni2091uni1D49uni0364uni0450uni0205uni1EBF uni1EBF.VNuni1EC1 uni1EC1.VNuni1EC5 uni1EC5.VNuni1EC3 uni1EC3.VNuni1EC7uni0207ebreveuni04D7ecaronuni1EBDemacronuni1E17uni1E15uni0451 edotaccentuni1EBBuni1E19uni1E1Buni1EB9uni0229uni1E1Deogonekeogonek.RetroHookStyleuni1D92uni0247uni04BDuni04BFuni01DDuni0259uni04D9uni2094uni1D4Auni04DBuni1D95uni025Auni0258uniF1A3uni025Buni1D4Buni1D93uni025Cuni1D9Funi1D94uni025Duni1D08uni1D4Cuni029Auni025EuniF1A4uni0511uni0437uni04DFuni0499uni0507uni0505uni0415uni1D31uni1D07uni0400uni0204uni1EBE uni1EBE.VNuni1EC0 uni1EC0.VNuni1EC4 uni1EC4.VNuni1EC2 uni1EC2.VNuni1EC6uni0206Ebreveuni04D6Ecaronuni1EBCEmacronuni1E16uni1E14uni0401 Edotaccentuni1EBAuni1E18uni1E1Auni1EB8uni0228uni1E1CEogonekEogonek.RetroHookStyleuni0246uni04BCuni04BEuni018Euni1D32uni018Funi04D8uni04DAuni0190uni0510uni0417uni04DEuni0498uni0506uni0504 f.SlantItalicuni1DA0uni1E1Funi1D82uni1D6Ef_if_i.SlantItalicf_lf_l.SlantItalicf_f_if_f_i.SlantItalicffif_f_lf_f_l.SlantItalicfflf_ff_f.SlantItalicffuni02A9longsuni1E9Buni0433uni0453uni0491uni04F7uni0493uni0493.SlantItalicuniF327uniF327.SlantItalicuni04FBuni04FB.SlantItalicuni1E1Euni0191uni0413Gammauni1D26uni0403uni0490uni04F6uni0492uniF326uni04FAuni1D4Duni01F5 gcircumflexgcaronuni1E21 gdotaccent gcommaaccentuni01E5.BarBowluni01E5 g.SngBowluni0261uni1DA2uni01F5.SngBowlgcircumflex.SngBowlgbreve.SngBowlgcaron.SngBowluni1E21.SngBowlgdotaccent.SngBowlgcommaaccent.SngBowluni1D83uni01E5.BarBowl.SngBowluni0260uni1D77uni1D79uni050Duni1D33uni0262uni01F4 GcircumflexGcaronuni1E20 Gdotaccent Gcommaaccentuni01E4uni0193uni029Buni20B2uni050Cuni02B0uni036A hcircumflexuni021Funi1E27uni1E23uni1E2Buni1E96uni1E25uni1E29hbaruni045BuniF1BCuni0452uni0266uni02B1uniF25Auni0267uni2C68uni0195uni2C76uni0265uni1DA3uni02AEuni02AFuni04BBuni04BB.UCStyleuni0495uni043Duni04A5uni04A3uni04CAuni045Auni04C8uni050Buni043Funi04A7uni045Funi0446uni0448uni0449uni1D28uni041Duni1D34uni1D78uni029C Hcircumflexuni021Euni1E26uni1E22uni1E2Auni1E24uni1E28Hbar Hbar.VertStrkuni2C67uni01F6uni2C75uni04BAuni0494uni04A4uni04A2uni04C9uni040Auni04C7uni050Auni041Funi04A6uni040Funi0426uni0428uni0429 i.SlantItalicuni0456uni2170uni1D62uni2071uni0365uni0209uni020Bibreveuni01D0itildeimacronuni0457uni1E2Funi1EC9uni1E2Duni1ECBiogonekiogonek.RetroHookStyleuni1D96uni0268uni1DA4 i.Dotlessdotlessi.SlantItalici.Dotless.SlantItalicuni0456.Dotlessuni1D62.Dotlessuni2071.Dotlessuni1E2D.Dotlessuni1ECB.Dotlessiogonek.Dotlessuni1D96.Dotlessuni0268.Dotlessuni1DA4.Dotlessuni1D09uni1D4Eijuni2171uni2172uni2173uni2178uni0269uni1DA5uni1D7Cuni044Euni0406uni04C0uni04CFuni2160uni1D35uni026Auni1DA6uni0208uni020AIbreveuni01CFItildeImacronuni0407uni1E2Euni1EC8uni1E2Cuni1ECAIogonekIogonek.RetroHookStyleuni0197uni1D7Buni1DA7IJuni2161uni2162uni2163uni2168uniF258uni0196uni042Euni0458uni02B2 jcircumflexuni01F0uni0249uni029Duni1DA8 j.Dotlessuni0237uni0458.Dotlessuni02B2.Dotlessuni025Funi0249.Dotlessuni1DA1uni029D.Dotlessuni1DA8.Dotlessuni0284.TopSerifuni0284uni043Buni04C6uni0459uni0513uni0509uni0434uni0408uni1D36uni1D0A Jcircumflexuni0248uni041Buni1D2Buni04C5uni0409uni0512uni0508uni0414uni1D4Funi1E31uni01E9uni1E35uni1E33 kcommaaccentuni1D84uni0199uni2C6Auni029E kgreenlandicuni043Auni045Cuni049Buni04A1uni049Funi049Duni04C4uni0436uni04C2uni04DDuni0497uni1D37uni1D0Buni1E30uni01E8uni1E34uni1E32 Kcommaaccentuni0198uni2C69uni20ADuni041Auni040Cuni049Auni04A0uni049Euni049Cuni04C3uni0416uni04C1uni04DCuni0496 l.SlantItalicuni217Cuni02E1lacuteuni1E3Duni1E3Buni1E37uni1E39 lcommaaccentldotlcaronuni1D85uni1DAAuni019Auni2C61uni026Buni026Duni1DA9uni0234uni026CuniF266uni01C9uni02AAuni02ABuni026Euni20B0lirauni216Cuni1D38uni029Funi1DABuniF268Lacuteuni1E3Cuni1E3Auni1E36uni1E38 LcommaaccentLdotLcaronuni023Duni2C60uni2C62uni1D0Cuni01C8uni01C7uni217Funi1D50uni036Buni1E3Funi1E41uni1E43uni1D86uni1D6Funi20A5uni0271uni1DACuni026Funi1D5Auni0270uni1DADuni1D1Funi043Cuni04CEuni041Cuni216Funi1D39uni1D0Duni1E3Euni1E40uni1E42uniF25Buni019Cuni04CDu1D510uni207Fnacuteuni01F9ncaronuni1E45uni1E4Buni1E49uni1E47 ncommaaccent napostropheuni1D87uni1D70uni0272uni1DAEenguni1D51uni0273uni1DAFuni0235uni019Euni01CCuni0438uni045Duni0439uni048Buni04E3uni04E5uni1D3Auni0274uni1DB0Nacuteuni01F8Ncaronuni1E44uni1E4Auni1E48uni1E46 Ncommaaccentuni20A6uni019D Eng.UCStyleuni1D0Euni1D3Buni019D.LCStyleEng.BaselineHookEnguni0220Eng.Komuni01CBuni01CAuni2116uni0418uni040Duni0419uni048Auni04E4uni04E2uni043Euni2092uni1D52uni0366 ohungarumlautuni020Duni1ED1 uni1ED1.VNuni1ED3 uni1ED3.VNuni1ED7 uni1ED7.VNuni1ED5 uni1ED5.VNuni1ED9uni020Fobreveuni01D2uni1E4Duni022Duni1E4Fomacronuni1E53uni1E51uni04E7uni022Buni022Funi0231uni1ECFuni1ECDuni01EBuni01EDuni01EB.RetroHookStyleuni01ED.RetroHookStyleuni018Duni0275uni04E9uni1DB1uni04EBthetauni1DBFuni0473uniF1AB oslashacuteemptyset.SlashZeroemptysetohornuni1EDBuni1EDDuni1EE1uni1EDFuni1EE3sigmauni04A9uni1D11uni1D13uniF1ADuni1D14uni01A3uni0223uni0223.OpenTopuni1D17uni1D55uni1D16uni1D54uni041Euni1D3Cuni1D0F Ohungarumlautuni020Cuni1ED0 uni1ED0.VNuni1ED2 uni1ED2.VNuni1ED6 uni1ED6.VNuni1ED4 uni1ED4.VNuni1ED8uni020EObreveuni01D1uni1E4Cuni022Cuni1E4EOmacronuni1E52uni1E50uni04E6uni022Auni022Euni0230uni1ECEuni1ECCuni01EAuni01ECuni01EA.RetroHookStyleuni01EC.RetroHookStyleuni019Funi04E8uni04EAThetauni0472 OslashacuteOhornuni1EDAuni1EDCuni1EE0uni1EDEuni1EE2uni04A8uni0276uniF1AEuni01A2uni0222uni0222.OpenTopuni1D3Duni1D3D.OpenTopuni1D15uni1D15.OpenTopuni03A9uni0298uni0440uni1D56uni1E55uni1E57uni1D88uni1D7Duni048Funi1D71uni01A5uni01A5.BowlHookuni01BFuni1D68uni0278uni1DB2uni0444uni1D69uni1D60uni2C77uni0420uni1D3Euni1D18uni1D29uni1E54uni1E56uni048Euni2C63uni01A4uni20B1pesetauni01F7u1D513uni0424uni1D2Auni02A0uni024Buni01AAuni0239uni024Auni1D63uni1DCAuni02B3uni036Cracuteuni0211uni0213rcaronuni1E59uni1E5Funi1E5Buni1E5D rcommaaccentuni1D89uni024Duni1D72uni027Duni027Cuni0279uni02B4uni027Buni02B5uniF269uni027Auni027Euni1D73uni0285uni027Funi1D3Funi0280Racuteuni0210uni0212Rcaronuni1E58uni1E5Euni1E5Auni1E5C Rcommaaccentuni024Cuni2C64uni2C64.LCStyleuni01A6uni20A8uni211Funi1D1Auni0281uni02B6uni042Funi1D19uni044Funi0455uni02E2sacuteuni1E65 scircumflexuni1E67uni1E61uni1E63uni1E69 scommaaccentscedilla.CommaStyleuni0282uni1DB3uni1D8Auni1D74uni023Funi01A8uni0283uni1DB4uni1D98uni1D8Buni0286uni0405Sacuteuni1E64 Scircumflexuni1E66uni1E60uni1E62uni1E68 ScommaaccentScedilla.CommaStyleuni01A7uni20B4uni1D57uni036Duni1E97uni1E6Buni1E71uni1E6Funi1E6Duni021Buni0163.CommaStyletcaronuni0163uni01ABuni1DB5tbaruni1D75uni2C66uni01ADuni0288uni0236uni1D7Auni02A8uni02A6uni02A7uni0287uni0442uni04ADuni050Funi04B5uni0422uni1D40uni1D1BTcaronuni1E6Auni1E70uni1E6Euni1E6Cuni021Auni0162.CommaStyleuni0162Tbaruni20AEuni023Euni01ACuni01AC.RtHookuni01AEuni04ACuni050Euni04B4uni040Buni0402uni1D64uni1D58uni0367 uhungarumlautuni0215uni0217ubreveuni01D4utildeuni1E79umacronuni1E7Buni01D8uni01DCuni01DAuni01D6uringuni1EE7uni1E77uni1E75uni1E73uni1EE5uogonekuogonek.RetroHookStyleuni1D99uni0289uni1DB6uhornuni1EE9uni1EEBuni1EEFuni1EEDuni1EF1uni1D6Buni1D1Duni1D59uni1D1Euni028Buni1DB9uni028Auni1DB7uni1D7FuniF259uni1D41uni1D1Cuni1DB8 Uhungarumlautuni0214uni0216Ubreveuni01D3Utildeuni1E78Umacronuni1E7Auni01D7uni01DBuni01D9uni01D5Uringuni1EE6uni1E76uni1E74uni1E72uni1EE4UogonekUogonek.RetroHookStyleuni0244uni1D7EuniF1CDUhornuni1EE8uni1EEAuni1EEEuni1EECuni1EF0uni01B2uni01B1 v.SlantItalicuni2174uni1D65uni1D5Buni036Euni1E7Duni1E7Funi1D8CuniF25Funi028B.StraightLftuni2C74uni2175uni2176uni2177uni028Cuni1DBAuni0264.LrgBowluni0264uniF1B5uni0264.GammaStyleuni0263uni02E0gammauni1D67uni1D5Euni2164uni1D20uni1E7Cuni1E7Euni2123uni2165uni2166uni2167uni0245uni1D27uni0194uni02B7wacutewgrave wcircumflex wdieresisuni1E87uni1E98uni1E89uniF21Auni02ACuni028Duni0277uni1D42uni1D21WacuteWgrave Wcircumflex Wdieresisuni1E86uni1E88uniF21Buni20A9uni0445uni2179uni2093uni02E3uni036Funi1E8Duni1E8Buni1D8Duni04FFuni04FDuni04B3uni217Auni217Bchiuni1D6Auni1D61uni0425uni2169uni1E8Cuni1E8Auni04FEuni04FCuni04B2uni216Auni216Buni0443uni02B8uni04F3ygrave ycircumflexuni045Euni1EF9uni0233uni04EFuni04F1uni1E8Funi1E99uni1EF7uni1EF5uni024Funi01B4uni04AFuni04B1uni028EuniF1CEuniF267lambdauni019Buni0447uni04F5uni04B9uni04B7uni04CCuni04AEuni028FuniF1B4Ygrave Ycircumflexuni1EF8uni0232uni1E8Euni1EF6uni1EF4uni024Euni04B0uni01B3uni01B3.RtHookuni0423uni04F2uni040Euni04EEuni04F0uni0427uni04F4uni04B8uni04B6uni04CB z.SlantItalicuni1DBBzacuteuni1E91 zdotaccentuni1E95uni1E93uni0290uni1DBCuni1D8Euni01B6uni1D76uni0291uni1DBDuni0225uni2C6Cuni0240uni1D22Zacuteuni1E90 Zdotaccentuni1E94uni1E92uniF234uni01B5uni0224uni2C6Buni01A9uni01B7.RevSigmaStyleuni04E0.RevSigmaStyleuni0292uni04E1uni1DBEuni01EFuni1D9AuniF235uni0293uni0293.LrgBowluni01BAuni01B9uniF245uni021Duni01B7uni04E0uni1D23uni01EEuni01B8uni021Cuni0294uni02C0uni0242uni0241uni02A1uni0295uni02C1uni02E4uni02A2uni0296uni01BEuni1D24uni1D25uni1D5Cuni20AAuni2080uni2070uni2081uni2082uni01BBuni2083uni2084uni2074uniF246uni2085uni2075uni01BCuni01BDuni2086uni2076uni2087uni2077uni2088uni2078uni2089uni2079uni215Fonethirduni2155uni2159 oneeighth twothirdsuni2156uni2157 threeeighthsuni2158uni215A fiveeighths seveneighthsuni01C3uniF19EuniF19F exclamdbluniF26A uniF26A.LrguniF21D uniF21D.Lrgonedotenleadertwodotenleaderuni02F8uniF1E9 uniF1E9.Wideuni02BBuni0312 quotereverseduni02BDuni0314uni02BC uni02BC.Lrguni201Funi02EEuni02D0uni02D1 anoteleiauni2027uni2219uni208Duni207Duni208Euni207Euni27E6uni27E7uni2308uni2309uni230Auni230Buni01C0uni01C1uni01C2uni2016uni02CCuni02C8uni0337uni0338uni2010uni2011uni00AD figuredashuni2015uni02D7uni208Buni207Buni0320uni0335uni0336uni02CFuni0317uni02CA acutecombminuteuni02B9seconduni02BAuni02F6uni030Buni2034uni2057uni02CEuni0316uni02F4uni02CB gravecombuni2035uni2036uni02F5uni030Funi2037uni2038uni032DuniF1E7uni0302uni0302_acutecomb.VNuni0302_gravecomb.VNuni0302_tildecomb.VNuni0302_hookabovecomb.VNuni032Funi0311 uni0311.UU uni0311.UL uni0311.LLuni0352uni2040uni0361uniFE20uniFE21uni032Euni0306uni0306_acutecomb.VNuni0306_gravecomb.VNuni0306_tildecomb.VNuni0306_hookabovecomb.VNuni0310uni0306.CyShortMrkAltuni203Funi035Cuni035Duni02ECuni032Cuni030Cuni1DC7uni1DC4uni1DC5uni1DC6uni1DC9uni1DC8uni02F7uni0330uni0334 tildecombuni034Asimilaruni2053uni034CuniF17Buni034Buni0360uniFE22uniFE23uni033Euni035Buni0359uni0353uni02DFuni033Duni032Buni033Cuni02CDuni0331 uni0331.Shortuni02C9uni0304 uni0304.Shortuni035Funi035Euni0332uni0305 underscoredbluni0333uni0347uni033Funi02EDuniF1EAuni208Cuni207Cuni225F equivalenceuni0324uni0308 uni0308.UU uni0308.LL uni0308.UL uni0308.SupuniF17A dotbelowcombuni0307uni0358uni0326uni0313uni0315uni031Buni02F3uni0325uni030Auni035Auni031Cuni02D3uni02BFuni0351uni0339uni02D2uni02BEuni0357 hookabovecombuni0329uni030Duni0348uni030Euni208Auni031Funi02D6uni207Auni031Euni02D5uni031Duni02D4uni0318uni0319uni02EBuni02EAuni0349uni031Auni02CB.ChinantecTnuni02C8.ChinantecTnuni02CA.ChinantecTnuniA717uniA718uniA719uniA71Auni02C9.ChinantecTnuniA720uniA721uni02FEuni02FDuni02ADuni0327uni0328uni0328.RetroHookStyleogonek.RetroHookStyleuni1DC2uni032Auni0346uni033Auni2423uni033Buni02DE uni02DE02DEuni02E9.rstaffuni02E8.rstaffuni02E7.rstaffuni02E6.rstaffuni02E5.rstaffuniA716.lstaffuniA715.lstaffuniA714.lstaffuniA713.lstaffuniA712.lstaff uni02E9.1 uni02E9.2 uni02E9.3 uni02E9.4 uni02E9.5 uni02E8.1 uni02E8.2 uni02E8.3 uni02E8.4 uni02E8.5 uni02E7.1 uni02E7.2 uni02E7.3 uni02E7.4 uni02E7.5 uni02E6.1 uni02E6.2 uni02E6.3 uni02E6.4 uni02E6.5 uni02E5.1 uni02E5.2 uni02E5.3 uni02E5.4 uni02E5.5 uniA716.1 uniA715.1 uniA714.1 uniA713.1 uniA712.1 uniA716.2 uniA715.2 uniA714.2 uniA713.2 uniA712.2 uniA716.3 uniA715.3 uniA714.3 uniA713.3 uniA712.3 uniA716.4 uniA715.4 uniA714.4 uniA713.4 uniA712.4 uniA716.5 uniA715.5 uniA714.5 uniA713.5 uniA712.5uni02E9.rstaffnouni02E8.rstaffnouni02E7.rstaffnouni02E6.rstaffnouni02E5.rstaffnouniA716.lstaffnouniA715.lstaffnouniA714.lstaffnouniA713.lstaffnouniA712.lstaffno uni02E9.no uni02E8.no uni02E7.no uni02E6.no uni02E5.no uniA716.no uniA715.no uniA714.no uniA713.no uniA712.nouniA708uniA709uniA70AuniA70BuniA70C uni02E502E9 uni02E502E8 uni02E502E7 uni02E502E6uni02E5 uni02E602E9 uni02E602E8 uni02E602E7uni02E6 uni02E602E5 uni02E702E9 uni02E702E8uni02E7 uni02E702E6 uni02E702E5 uni02E802E9uni02E8 uni02E802E7 uni02E802E6 uni02E802E5uni02E9 uni02E902E8 uni02E902E7 uni02E902E6 uni02E902E5uni02E502E902E9uni02E502E902E8uni02E502E902E7uni02E502E902E6uni02E502E902E5uni02E602E902E9uni02E602E902E8uni02E602E902E7uni02E602E902E6uni02E602E902E5uni02E702E902E9uni02E702E902E8uni02E702E902E7uni02E702E902E6uni02E702E902E5uni02E802E902E9uni02E802E902E8uni02E802E902E7uni02E802E902E6uni02E802E902E5 uni02E902E9uni02E902E902E8uni02E902E902E7uni02E902E902E6uni02E902E902E5uni02E502E802E9uni02E502E802E8uni02E502E802E7uni02E502E802E6uni02E502E802E5uni02E602E802E9uni02E602E802E8uni02E602E802E7uni02E602E802E6uni02E602E802E5uni02E702E802E9uni02E702E802E8uni02E702E802E7uni02E702E802E6uni02E702E802E5uni02E802E802E9 uni02E802E8uni02E802E802E7uni02E802E802E6uni02E802E802E5uni02E902E802E9uni02E902E802E8uni02E902E802E7uni02E902E802E6uni02E902E802E5uni02E502E702E9uni02E502E702E8uni02E502E702E7uni02E502E702E6uni02E502E702E5uni02E602E702E9uni02E602E702E8uni02E602E702E7uni02E602E702E6uni02E602E702E5uni02E702E702E9uni02E702E702E8 uni02E702E7uni02E702E702E6uni02E702E702E5uni02E802E702E9uni02E802E702E8uni02E802E702E7uni02E802E702E6uni02E802E702E5uni02E902E702E9uni02E902E702E8uni02E902E702E7uni02E902E702E6uni02E902E702E5uni02E502E602E9uni02E502E602E8uni02E502E602E7uni02E502E602E6uni02E502E602E5uni02E602E602E9uni02E602E602E8uni02E602E602E7 uni02E602E6uni02E602E602E5uni02E702E602E9uni02E702E602E8uni02E702E602E7uni02E702E602E6uni02E702E602E5uni02E802E602E9uni02E802E602E8uni02E802E602E7uni02E802E602E6uni02E802E602E5uni02E902E602E9uni02E902E602E8uni02E902E602E7uni02E902E602E6uni02E902E602E5uni02E502E502E9uni02E502E502E8uni02E502E502E7uni02E502E502E6 uni02E502E5uni02E602E502E9uni02E602E502E8uni02E602E502E7uni02E602E502E6uni02E602E502E5uni02E702E502E9uni02E702E502E8uni02E702E502E7uni02E702E502E6uni02E702E502E5uni02E802E502E9uni02E802E502E8uni02E802E502E7uni02E802E502E6uni02E802E502E5uni02E902E502E9uni02E902E502E8uni02E902E502E7uni02E902E502E6uni02E902E502E5uni02E902E902E9uni02E802E802E8uni02E702E702E7uni02E602E602E6uni02E502E502E5uniA70DuniA70EuniA70FuniA710uniA711 uniA712A716 uniA712A715 uniA712A714 uniA712A713uniA712 uniA713A716 uniA713A715 uniA713A714uniA713 uniA713A712 uniA714A716 uniA714A715uniA714 uniA714A713 uniA714A712 uniA715A716uniA715 uniA715A714 uniA715A713 uniA715A712uniA716 uniA716A715 uniA716A714 uniA716A713 uniA716A712uniA712A716A716uniA712A716A715uniA712A716A714uniA712A716A713uniA712A716A712uniA713A716A716uniA713A716A715uniA713A716A714uniA713A716A713uniA713A716A712uniA714A716A716uniA714A716A715uniA714A716A714uniA714A716A713uniA714A716A712uniA715A716A716uniA715A716A715uniA715A716A714uniA715A716A713uniA715A716A712 uniA716A716uniA716A716A715uniA716A716A714uniA716A716A713uniA716A716A712uniA712A715A716uniA712A715A715uniA712A715A714uniA712A715A713uniA712A715A712uniA713A715A716uniA713A715A715uniA713A715A714uniA713A715A713uniA713A715A712uniA714A715A716uniA714A715A715uniA714A715A714uniA714A715A713uniA714A715A712uniA715A715A716 uniA715A715uniA715A715A714uniA715A715A713uniA715A715A712uniA716A715A716uniA716A715A715uniA716A715A714uniA716A715A713uniA716A715A712uniA712A714A716uniA712A714A715uniA712A714A714uniA712A714A713uniA712A714A712uniA713A714A716uniA713A714A715uniA713A714A714uniA713A714A713uniA713A714A712uniA714A714A716uniA714A714A715 uniA714A714uniA714A714A713uniA714A714A712uniA715A714A716uniA715A714A715uniA715A714A714uniA715A714A713uniA715A714A712uniA716A714A716uniA716A714A715uniA716A714A714uniA716A714A713uniA716A714A712uniA712A713A716uniA712A713A715uniA712A713A714uniA712A713A713uniA712A713A712uniA713A713A716uniA713A713A715uniA713A713A714 uniA713A713uniA713A713A712uniA714A713A716uniA714A713A715uniA714A713A714uniA714A713A713uniA714A713A712uniA715A713A716uniA715A713A715uniA715A713A714uniA715A713A713uniA715A713A712uniA716A713A716uniA716A713A715uniA716A713A714uniA716A713A713uniA716A713A712uniA712A712A716uniA712A712A715uniA712A712A714uniA712A712A713 uniA712A712uniA713A712A716uniA713A712A715uniA713A712A714uniA713A712A713uniA713A712A712uniA714A712A716uniA714A712A715uniA714A712A714uniA714A712A713uniA714A712A712uniA715A712A716uniA715A712A715uniA715A712A714uniA715A712A713uniA715A712A712uniA716A712A716uniA716A712A715uniA716A712A714uniA716A712A713uniA716A712A712uniA716A716A716uniA715A715A715uniA714A714A714uniA713A713A713uniA712A712A712uniF1F1 uniF1F1F1F2 uniF1F1F1F3 uniF1F1F1F4 uniF1F1F1F5 uniF1F1F1F6 uniF1F1F1F7 uniF1F1F1F8 uniF1F1F1F9 uniF1F2F1F1uniF1F2 uniF1F2F1F3 uniF1F2F1F4 uniF1F2F1F5 uniF1F2F1F6 uniF1F2F1F7 uniF1F2F1F8 uniF1F2F1F9 uniF1F3F1F1 uniF1F3F1F2uniF1F3 uniF1F3F1F4 uniF1F3F1F5 uniF1F3F1F6 uniF1F3F1F7 uniF1F3F1F8 uniF1F3F1F9 uniF1F4F1F1 uniF1F4F1F2 uniF1F4F1F3uniF1F4 uniF1F4F1F5 uniF1F4F1F6 uniF1F4F1F7 uniF1F4F1F8 uniF1F4F1F9 uniF1F5F1F1 uniF1F5F1F2 uniF1F5F1F3 uniF1F5F1F4uniF1F5 uniF1F5F1F6 uniF1F5F1F7 uniF1F5F1F8 uniF1F5F1F9 uniF1F6F1F1 uniF1F6F1F2 uniF1F6F1F3 uniF1F6F1F4 uniF1F6F1F5uniF1F6 uniF1F6F1F7 uniF1F6F1F8 uniF1F6F1F9 uniF1F7F1F1 uniF1F7F1F2 uniF1F7F1F3 uniF1F7F1F4 uniF1F7F1F5 uniF1F7F1F6uniF1F7 uniF1F7F1F8 uniF1F7F1F9 uniF1F8F1F1 uniF1F8F1F2 uniF1F8F1F3 uniF1F8F1F4 uniF1F8F1F5 uniF1F8F1F6 uniF1F8F1F7uniF1F8 uniF1F8F1F9 uniF1F9F1F1 uniF1F9F1F2 uniF1F9F1F3 uniF1F9F1F4 uniF1F9F1F5 uniF1F9F1F6 uniF1F9F1F7 uniF1F9F1F8uniF1F9 space.Lines uniF1F1.LinesuniF1F1F1F2.LinesuniF1F1F1F3.LinesuniF1F1F1F4.LinesuniF1F1F1F5.LinesuniF1F1F1F6.LinesuniF1F1F1F7.LinesuniF1F1F1F8.LinesuniF1F1F1F9.LinesuniF1F2F1F1.Lines uniF1F2.LinesuniF1F2F1F3.LinesuniF1F2F1F4.LinesuniF1F2F1F5.LinesuniF1F2F1F6.LinesuniF1F2F1F7.LinesuniF1F2F1F8.LinesuniF1F2F1F9.LinesuniF1F3F1F1.LinesuniF1F3F1F2.Lines uniF1F3.LinesuniF1F3F1F4.LinesuniF1F3F1F5.LinesuniF1F3F1F6.LinesuniF1F3F1F7.LinesuniF1F3F1F8.LinesuniF1F3F1F9.LinesuniF1F4F1F1.LinesuniF1F4F1F2.LinesuniF1F4F1F3.Lines uniF1F4.LinesuniF1F4F1F5.LinesuniF1F4F1F6.LinesuniF1F4F1F7.LinesuniF1F4F1F8.LinesuniF1F4F1F9.LinesuniF1F5F1F1.LinesuniF1F5F1F2.LinesuniF1F5F1F3.LinesuniF1F5F1F4.Lines uniF1F5.LinesuniF1F5F1F6.LinesuniF1F5F1F7.LinesuniF1F5F1F8.LinesuniF1F5F1F9.LinesuniF1F6F1F1.LinesuniF1F6F1F2.LinesuniF1F6F1F3.LinesuniF1F6F1F4.LinesuniF1F6F1F5.Lines uniF1F6.LinesuniF1F6F1F7.LinesuniF1F6F1F8.LinesuniF1F6F1F9.LinesuniF1F7F1F1.LinesuniF1F7F1F2.LinesuniF1F7F1F3.LinesuniF1F7F1F4.LinesuniF1F7F1F5.LinesuniF1F7F1F6.Lines uniF1F7.LinesuniF1F7F1F8.LinesuniF1F7F1F9.LinesuniF1F8F1F1.LinesuniF1F8F1F2.LinesuniF1F8F1F3.LinesuniF1F8F1F4.LinesuniF1F8F1F5.LinesuniF1F8F1F6.LinesuniF1F8F1F7.Lines uniF1F8.LinesuniF1F8F1F9.LinesuniF1F9F1F1.LinesuniF1F9F1F2.LinesuniF1F9F1F3.LinesuniF1F9F1F4.LinesuniF1F9F1F5.LinesuniF1F9F1F6.LinesuniF1F9F1F7.LinesuniF1F9F1F8.Lines uniF1F9.Linesuni274Duni2023 arrowdownuniF19DarrowupuniF19Cuni034E arrowupdn arrowupdnbse arrowleftuni20EEuni20EDuni02FF arrowrightuni20EFuni20ECuni0362 arrowbothuni034Duni219Auni219B arrowdbldown arrowdblupuni21D5 arrowdblleft arrowdblright arrowdblbothuni2196uni2198uni2197uni2199uni2713uni2213uni02C5uni02EFuni02C4uni02F0uni02C2uni1DFEuni0354uni02F1uni02C3uni0350uni0355uni02F2uni0356uni1DFFuniA702uniA700uniA704uniA706uniA703uniA701uniA705uniA707uni00AD.ShowInvuni034F.ShowInvuni2061.ShowInvuni2063.ShowInvuni2062.ShowInvuni202A.ShowInvuni200E.ShowInvuni202D.ShowInvuni202C.ShowInvuni202B.ShowInvuni200F.ShowInvuni202E.ShowInvuniFE00.ShowInvuniFE01.ShowInvuniFE02.ShowInvuniFE03.ShowInvuniFE04.ShowInvuniFE05.ShowInvuniFE06.ShowInvuniFE07.ShowInvuniFE08.ShowInvuniFE09.ShowInvuniFE0A.ShowInvuniFE0B.ShowInvuniFE0C.ShowInvuniFE0D.ShowInvuniFE0E.ShowInvuniFE0F.ShowInvuni2060.ShowInvuni200D.ShowInvuniFEFF.ShowInvuni200C.ShowInvuni200B.ShowInvuni034Funi2061uni2063uni2062uni202Auni200Euni202Duni202Cuni202Buni200Funi202EuniFE00uniFE01uniFE02uniFE03uniFE04uniFE05uniFE06uniFE07uniFE08uniFE09uniFE0AuniFE0BuniFE0CuniFE0DuniFE0EuniFE0Funi2060uni200DuniFEFFuni200Cuni200Buni206Duni206Buni206Cuni206AuniFFF9uniFFFAuniFFFBuni2028uni206Euni206FuniFFFCuni2029uni2001uni2003uni202Funi2008uni2006uni2004uni2000uni2002uni2005uni2007uni2009uni200AuniFFFDuniF130uniF131uniF132uniF133uni02F9uni02FBuni02FAuni02FCCombInvBreve.UCHtCombBreve.CyShortMrkAlt.UCHtLftParen.SophiaRtParen.Sophia Comma.SophiaDigitZero.SophiaDigitOne.SophiaDigitTwo.SophiaDigitThree.SophiaDigitFour.SophiaDigitFive.SophiaDigitSix.SophiaDigitSeven.SophiaDigitEight.SophiaDigitNine.SophiaLtnCapC.SophiaLtnCapD.SophiaLtnCapE.SophiaLtnCapF.SophiaLtnCapG.SophiaLtnCapH.SophiaLtnCapJ.SophiaLtnCapL.SophiaLtnCapM.SophiaLtnCapN.SophiaLtnCapO.SophiaLtnCapP.SophiaLtnCapR.SophiaLtnCapS.SophiaLtnCapV.SophiaLtnCapW.SophiaLtnCapX.SophiaLtnCapY.SophiaLtnCapZ.Sophia BoxDotted+++>/%+5/%+s\G4+l\G4++ E}iDgrcompiler-5.2.1/test/GrcRegressionTest/fonts/CharisMain.gdl000066400000000000000000007737371411153030700241370ustar00rootroot00000000000000/* Glyph information for font Charis SIL at Mon Jan 29 10:53:17 2007 */ table(glyph) {MUnits = 2048}; ANY{order = 0}; g__notdef = glyphid(0); g__null = glyphid(1); g_nonmarkingreturn = glyphid(2); g_space = glyphid(3) {H = point(300m, 0m); O = point(350m, 0m); R = point(600m, 1000m); L = point(300m, -100m); U = point(300m, 1500m)}; g_exclam = glyphid(4); g_quotedbl = glyphid(5); g_numbersign = glyphid(6); g_dollar = glyphid(7); g_percent = glyphid(8); g_ampersand = glyphid(9); g_quotesingle = glyphid(10); g_parenleft = glyphid(11); g_parenright = glyphid(12); g_asterisk = glyphid(13); g_plus = glyphid(14); g_comma = glyphid(15); g_hyphen = glyphid(16) {U = point(327m, 1100m)}; g_period = glyphid(17); g_slash = glyphid(18); g_zero = glyphid(19) {L = point(576m, -100m); U = point(576m, 1500m)}; g_one = glyphid(20) {L = point(576m, -100m); U = point(576m, 1500m)}; g_two = glyphid(21) {L = point(576m, -100m); U = point(576m, 1500m)}; g_three = glyphid(22) {L = point(576m, -100m); U = point(576m, 1500m)}; g_four = glyphid(23) {L = point(576m, -100m); U = point(576m, 1500m)}; g_five = glyphid(24) {L = point(575m, -100m); U = point(575m, 1500m)}; g_six = glyphid(25) {L = point(576m, -100m); U = point(576m, 1500m)}; g_seven = glyphid(26) {L = point(576m, -100m); U = point(576m, 1500m)}; g_eight = glyphid(27) {L = point(575m, -100m); U = point(575m, 1500m)}; g_nine = glyphid(28) {L = point(576m, -100m); U = point(576m, 1500m)}; g_colon = glyphid(29); g_semicolon = glyphid(30); g_less = glyphid(31); g_equal = glyphid(32); g_greater = glyphid(33); g_question = glyphid(34); g_at = glyphid(35); g__a = glyphid(36) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1500m)}; g__b = glyphid(37) {L = point(612m, -100m); U = point(612m, 1500m)}; g__c = glyphid(38) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1500m)}; g__d = glyphid(39) {L = point(690m, -100m); U = point(690m, 1500m)}; g__e = glyphid(40) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1500m)}; g__f = glyphid(41) {L = point(549m, -100m); U = point(549m, 1500m)}; g__g = glyphid(42) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1500m)}; g__h = glyphid(43) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1500m)}; g__i = glyphid(44) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1500m)}; g__j = glyphid(45) {L = point(410m, -100m); U = point(675m, 1500m)}; g__k = glyphid(46) {H = point(686m, 0m); L = point(686m, -100m); U = point(686m, 1500m)}; g__l = glyphid(47) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -100m); U = point(553m, 1500m)}; g__m = glyphid(48) {L = point(895m, -100m); U = point(895m, 1500m)}; g__n = glyphid(49) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1500m)}; g__o = glyphid(50) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1500m)}; g__p = glyphid(51) {L = point(578m, -100m); U = point(578m, 1500m)}; g__q = glyphid(52) {L = point(757m, -270m); U = point(757m, 1500m)}; g__r = glyphid(53) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1500m)}; g__s = glyphid(54) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1500m)}; g__t = glyphid(55) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1500m)}; g__u = glyphid(56) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1500m)}; g__v = glyphid(57) {H = point(705m, 0m); O = point(727m, 0m); L = point(705m, -100m); U = point(705m, 1500m)}; g__w = glyphid(58) {L = point(973m, -100m); U = point(983m, 1500m)}; g__x = glyphid(59) {L = point(649m, -100m); U = point(649m, 1500m)}; g__y = glyphid(60) {L = point(641m, -100m); U = point(641m, 1500m)}; g__z = glyphid(61) {L = point(610m, -100m); U = point(610m, 1500m)}; g_bracketleft = glyphid(62); g_backslash = glyphid(63); g_bracketright = glyphid(64); g_asciicircum = glyphid(65) {U = point(335m, 1500m)}; g_underscore = glyphid(66); g_grave = glyphid(67) {U = point(294m, 1500m)}; g_a = glyphid(68) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1100m)}; g_b = glyphid(69) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -100m); U = point(600m, 1540m)}; g_c = glyphid(70) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1100m)}; g_d = glyphid(71) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -100m); U = point(586m, 1540m)}; g_e = glyphid(72) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1100m)}; g_f = glyphid(73) {H = point(428m, 0m); L = point(296m, -100m); U = point(506m, 1480m)}; g_g = glyphid(74) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1100m)}; g_h = glyphid(75) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1540m)}; g_i = glyphid(76) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -100m); U = point(310m, 1100m)}; g_j = glyphid(77) {L = point(137m, -500m); U = point(328m, 1100m)}; g_k = glyphid(78) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -100m); U = point(551m, 1540m)}; g_l = glyphid(79) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1580m)}; g_m = glyphid(80) {H = point(868m, 0m); L = point(868m, -100m); U = point(868m, 1100m)}; g_n = glyphid(81) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1100m)}; g_o = glyphid(82) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g_p = glyphid(83) {H = point(301m, -435m); R = point(1145m, 1000m); L = point(559m, -500m); U = point(559m, 1100m)}; g_q = glyphid(84) {R = point(1124m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g_r = glyphid(85) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1100m)}; g_s = glyphid(86) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1100m)}; g_t = glyphid(87) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1363m)}; g_u = glyphid(88) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1100m)}; g_v = glyphid(89) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g_w = glyphid(90) {L = point(801m, -100m); U = point(830m, 1100m)}; g_x = glyphid(91) {H = point(785m, 0m); L = point(522m, -100m); U = point(522m, 1100m)}; g_y = glyphid(92) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1100m)}; g_z = glyphid(93) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1100m)}; g_braceleft = glyphid(94); g_bar = glyphid(95); g_braceright = glyphid(96); g_asciitilde = glyphid(97); g__adieresis = glyphid(98) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__aring = glyphid(99) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2060m)}; g__ccedilla = glyphid(100) {L = point(730m, -500m); U = point(750m, 1500m)}; g__eacute = glyphid(101) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__ntilde = glyphid(102) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g__odieresis = glyphid(103) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__udieresis = glyphid(104) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g_aacute = glyphid(105) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_agrave = glyphid(106) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_acircumflex = glyphid(107) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_adieresis = glyphid(108) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_atilde = glyphid(109) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_aring = glyphid(110) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1660m)}; g_ccedilla = glyphid(111) {R = point(954m, 1000m); L = point(525m, -500m); U = point(550m, 1100m)}; g_eacute = glyphid(112) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_egrave = glyphid(113) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_ecircumflex = glyphid(114) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_edieresis = glyphid(115) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_iacute = glyphid(116) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_igrave = glyphid(117) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_icircumflex = glyphid(118) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_idieresis = glyphid(119) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_ntilde = glyphid(120) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g_oacute = glyphid(121) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_ograve = glyphid(122) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_ocircumflex = glyphid(123) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_odieresis = glyphid(124) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_otilde = glyphid(125) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_uacute = glyphid(126) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_ugrave = glyphid(127) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_ucircumflex = glyphid(128) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_udieresis = glyphid(129) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_dagger = glyphid(130); g_degree = glyphid(131); g_cent = glyphid(132); g_sterling = glyphid(133); g_section = glyphid(134); g_bullet = glyphid(135); g_paragraph = glyphid(136); g_germandbls = glyphid(137) {L = point(631m, -100m); U = point(631m, 1540m)}; g_registered = glyphid(138); g_copyright = glyphid(139); g_trademark = glyphid(140); g_acute = glyphid(141) {U = point(421m, 1500m)}; g_dieresis = glyphid(142) {U = point(323m, 1500m)}; g_notequal = glyphid(143); g__a_e = glyphid(144) {L = point(1100m, -100m); U = point(1100m, 1500m)}; g__oslash = glyphid(145) {L = point(748m, -100m); U = point(748m, 1500m)}; g_infinity = glyphid(146); g_plusminus = glyphid(147); g_lessequal = glyphid(148); g_greaterequal = glyphid(149); g_yen = glyphid(150); g_mu = glyphid(151); g_partialdiff = glyphid(152); g_summation = glyphid(153) {L = point(607m, -100m); U = point(607m, 1500m)}; g_product = glyphid(154); g_pi = glyphid(155) {L = point(608m, -100m); U = point(608m, 1100m)}; g_integral = glyphid(156); g_ordfeminine = glyphid(157); g_ordmasculine = glyphid(158); g__omega = glyphid(159); g_ae = glyphid(160) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1100m)}; g_oslash = glyphid(161) {H = point(557m, 0m); O = point(608m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g_questiondown = glyphid(162); g_exclamdown = glyphid(163); g_logicalnot = glyphid(164); g_radical = glyphid(165); g_florin = glyphid(166) {L = point(299m, -500m); U = point(299m, 1540m)}; g_approxequal = glyphid(167); g__delta = glyphid(168); g_guillemotleft = glyphid(169); g_guillemotright = glyphid(170); g_ellipsis = glyphid(171); g00A0 = glyphid(172) {H = point(300m, 0m); O = point(350m, 0m); R = point(600m, 1000m); L = point(300m, -100m); U = point(300m, 1500m)}; g__agrave = glyphid(173) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__atilde = glyphid(174) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__otilde = glyphid(175) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__o_e = glyphid(176) {L = point(1030m, -100m); U = point(1030m, 1500m)}; g_oe = glyphid(177) {H = point(840m, 0m); O = point(897m, 0m); R = point(1679m, 1000m); L = point(840m, -100m); U = point(840m, 1100m)}; g_endash = glyphid(178); g_emdash = glyphid(179); g_quotedblleft = glyphid(180); g_quotedblright = glyphid(181); g_quoteleft = glyphid(182); g_quoteright = glyphid(183); g_divide = glyphid(184); g_lozenge = glyphid(185); g_ydieresis = glyphid(186) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g__ydieresis = glyphid(187) {L = point(641m, -100m); U = point(641m, 1900m)}; g_fraction = glyphid(188); g_currency = glyphid(189); g_guilsinglleft = glyphid(190); g_guilsinglright = glyphid(191); g_fi = glyphid(192); g_fl = glyphid(193); g_daggerdbl = glyphid(194); g_periodcentered = glyphid(195); g_quotesinglbase = glyphid(196); g_quotedblbase = glyphid(197); g_perthousand = glyphid(198); g__acircumflex = glyphid(199) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__ecircumflex = glyphid(200) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__aacute = glyphid(201) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__edieresis = glyphid(202) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__egrave = glyphid(203) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__iacute = glyphid(204) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__icircumflex = glyphid(205) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__idieresis = glyphid(206) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__igrave = glyphid(207) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__oacute = glyphid(208) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__ocircumflex = glyphid(209) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g25CC = glyphid(210) {H = point(533m, 0m); O = point(583m, 0m); L = point(533m, -100m); U = point(533m, 1100m)}; g__ograve = glyphid(211) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__uacute = glyphid(212) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ucircumflex = glyphid(213) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ugrave = glyphid(214) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g_dotlessi = glyphid(215) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g_circumflex = glyphid(216); g_tilde = glyphid(217); g_macron = glyphid(218); g_breve = glyphid(219) {U = point(305m, 1500m)}; g_dotaccent = glyphid(220); g_ring = glyphid(221); g_cedilla = glyphid(222) {L = point(235m, -500m)}; g_hungarumlaut = glyphid(223); g_ogonek = glyphid(224) {L = point(279m, -400m)}; g_caron = glyphid(225) {U = point(335m, 1500m)}; g_a_2_story_slant_italic = glyphid(226) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(487m, -100m); U = point(487m, 1100m)}; g0430 = glyphid(227) {L = point(510m, -100m); U = point(510m, 1100m)}; g2090 = glyphid(228) {L = point(355m, -525m); U = point(355m, 200m)}; g1D43 = glyphid(229) {L = point(360m, 750m); U = point(360m, 1450m)}; g0363 = glyphid(230) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g0201 = glyphid(231) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g1EAD = glyphid(232) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1500m)}; g1EA5 = glyphid(233) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EA5_vN = glyphid(234) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m)}; g1EA7 = glyphid(235) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EA7_vN = glyphid(236) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m)}; g1EAB = glyphid(237) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EAB_vN = glyphid(238) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1825m)}; g1EA9 = glyphid(239) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EA9_vN = glyphid(240) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m)}; g0203 = glyphid(241) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_abreve = glyphid(242) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g1EB7 = glyphid(243) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1500m)}; g1EAF = glyphid(244) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EAF_vN = glyphid(245) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(629m, 1790m)}; g1EB1 = glyphid(246) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EB1_vN = glyphid(247) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(394m, 1790m)}; g1EB5 = glyphid(248) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EB5_vN = glyphid(249) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1825m)}; g1EB3 = glyphid(250) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EB3_vN = glyphid(251) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1717m)}; g04D1 = glyphid(252) {L = point(510m, -100m); U = point(510m, 1500m)}; g01CE = glyphid(253) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_amacron = glyphid(254) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1470m)}; g04D3 = glyphid(255) {L = point(510m, -100m); U = point(510m, 1500m)}; g01DF = glyphid(256) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1870m)}; g0227 = glyphid(257) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g01E1 = glyphid(258) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1905m)}; g_aringacute = glyphid(259) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 2060m)}; g1E9A = glyphid(260) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1580m)}; g1EA3 = glyphid(261) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g1EA1 = glyphid(262) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1100m)}; g1E01 = glyphid(263) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -657m); U = point(510m, 1100m)}; g_aogonek = glyphid(264) {H = point(761m, 0m); R = point(1042m, 1000m); L = point(846m, -400m); U = point(510m, 1100m)}; g_aogonek_retro_hook_style = glyphid(265) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1100m)}; g1D8F = glyphid(266) {L = point(510m, -100m); U = point(510m, 1100m)}; g2C65 = glyphid(267) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1100m)}; g_atilde_2_story_slant_italic = glyphid(268) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(487m, -100m); U = point(487m, 1500m)}; g1EA1_2StorySlantItalic = glyphid(269) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(487m, -500m); U = point(487m, 1100m)}; g0250 = glyphid(270) {R = point(1042m, 1000m); L = point(504m, -100m); U = point(504m, 1100m)}; g0250_2StorySlantItalic = glyphid(271) {R = point(1042m, 1000m); L = point(504m, -100m); U = point(504m, 1100m)}; g1D44 = glyphid(272) {L = point(332m, 725m); U = point(332m, 1457m)}; g0251 = glyphid(273) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1100m)}; g_a_sng_story = glyphid(274) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1100m)}; g1D45 = glyphid(275) {L = point(386m, 725m); U = point(386m, 1457m)}; g_aacute_sng_story = glyphid(276) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_agrave_sng_story = glyphid(277) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g0201_sngStory = glyphid(278) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_acircumflex_sng_story = glyphid(279) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g1EAD_sngStory = glyphid(280) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1500m)}; g1EA5_sngStory = glyphid(281) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EA7_sngStory = glyphid(282) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EAB_sngStory = glyphid(283) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EA9_sngStory = glyphid(284) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g0203_sngStory = glyphid(285) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_abreve_sng_story = glyphid(286) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g1EB7_sngStory = glyphid(287) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1500m)}; g1EAF_sngStory = glyphid(288) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EB1_sngStory = glyphid(289) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EB5_sngStory = glyphid(290) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EB3_sngStory = glyphid(291) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g01CE_sngStory = glyphid(292) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_atilde_sng_story = glyphid(293) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_amacron_sng_story = glyphid(294) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1470m)}; g_adieresis_sng_story = glyphid(295) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g01DF_sngStory = glyphid(296) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1870m)}; g0227_sngStory = glyphid(297) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g01E1_sngStory = glyphid(298) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1870m)}; g_aring_sng_story = glyphid(299) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1660m)}; g_aringacute_sng_story = glyphid(300) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 2060m)}; g1E9A_sngStory = glyphid(301) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1580m)}; g1EA3_sngStory = glyphid(302) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g1EA1_sngStory = glyphid(303) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1100m)}; g1E01_sngStory = glyphid(304) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -657m); U = point(587m, 1100m)}; g_aogonek_sng_story = glyphid(305) {H = point(587m, 0m); R = point(1155m, 1000m); L = point(920m, -400m); U = point(587m, 1100m)}; g_aogonek_sng_story_retro_hook_style = glyphid(306) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1100m)}; g1D90 = glyphid(307) {L = point(588m, -100m); U = point(588m, 1100m)}; g0252 = glyphid(308) {H = point(568m, 0m); O = point(621m, 0m); R = point(1155m, 1000m); L = point(568m, -100m); U = point(568m, 1100m)}; g1D9B = glyphid(309) {L = point(374m, 725m); U = point(374m, 1457m)}; g_ae_2_story_slant_italic = glyphid(310) {H = point(738m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(738m, -100m); U = point(738m, 1100m)}; g04D5 = glyphid(311) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1100m)}; gF1A1 = glyphid(312) {L = point(485m, 725m); U = point(485m, 1450m)}; g_aeacute = glyphid(313) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1500m)}; g01E3 = glyphid(314) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1500m)}; g1D02 = glyphid(315) {L = point(738m, -100m); U = point(738m, 1100m)}; g1D46 = glyphid(316) {L = point(485m, 725m); U = point(485m, 1450m)}; g_alpha = glyphid(317) {L = point(641m, -100m); U = point(641m, 1100m)}; gF247 = glyphid(318) {L = point(867m, -500m); U = point(867m, 1500m)}; gF248 = glyphid(319) {L = point(948m, -500m); U = point(948m, 1540m)}; g0410 = glyphid(320) {L = point(683m, -100m); U = point(683m, 1500m)}; g1D2C = glyphid(321) {L = point(454m, 725m); U = point(454m, 1650m)}; g1D00 = glyphid(322) {L = point(561m, -100m); U = point(561m, 1100m)}; g0200 = glyphid(323) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g1EA4 = glyphid(324) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EA4_vN = glyphid(325) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m)}; g1EA6 = glyphid(326) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EA6_vN = glyphid(327) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m)}; g1EAA = glyphid(328) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EAA_vN = glyphid(329) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2225m)}; g1EA8 = glyphid(330) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EA8_vN = glyphid(331) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m)}; g1EAC = glyphid(332) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1900m)}; g0202 = glyphid(333) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__abreve = glyphid(334) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g1EAE = glyphid(335) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EAE_vN = glyphid(336) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(802m, 2190m)}; g1EB0 = glyphid(337) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EB0_vN = glyphid(338) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(567m, 2190m)}; g1EB4 = glyphid(339) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EB4_vN = glyphid(340) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2225m)}; g1EB2 = glyphid(341) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EB2_vN = glyphid(342) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2117m)}; g1EB6 = glyphid(343) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1900m)}; g04D0 = glyphid(344) {L = point(683m, -100m); U = point(683m, 1935m)}; g01CD = glyphid(345) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__amacron = glyphid(346) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1870m)}; g04D2 = glyphid(347) {L = point(683m, -100m); U = point(683m, 1900m)}; g01DE = glyphid(348) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2270m)}; g0226 = glyphid(349) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g01E0 = glyphid(350) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2305m)}; g__aringacute = glyphid(351) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2460m)}; g1EA2 = glyphid(352) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g1EA0 = glyphid(353) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1500m)}; g1E00 = glyphid(354) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -657m); U = point(683m, 1500m)}; g__aogonek = glyphid(355) {H = point(1109m, 0m); L = point(1209m, -400m); U = point(683m, 1500m)}; g__aogonek_retro_hook_style = glyphid(356) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1500m)}; g023A = glyphid(357) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(690m, -100m); U = point(690m, 1500m)}; g20B3 = glyphid(358); gF208 = glyphid(359) {L = point(721m, -100m); U = point(721m, 1500m)}; gF209 = glyphid(360) {L = point(707m, -100m); U = point(707m, 1500m)}; g04D4 = glyphid(361) {L = point(1100m, -100m); U = point(1100m, 1500m)}; g1D2D = glyphid(362) {L = point(715m, 725m); U = point(715m, 1650m)}; g1D01 = glyphid(363) {L = point(759m, -100m); U = point(753m, 1100m)}; g__a_eacute = glyphid(364) {L = point(1100m, -100m); U = point(1100m, 1900m)}; g01E2 = glyphid(365) {L = point(1100m, -100m); U = point(1100m, 1870m)}; g1D47 = glyphid(366) {L = point(372m, 725m); U = point(372m, 1700m)}; g1E03 = glyphid(367) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -100m); U = point(600m, 1940m)}; g1E07 = glyphid(368) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -500m); U = point(600m, 1540m)}; g1E05 = glyphid(369) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -500m); U = point(600m, 1540m)}; g1D80 = glyphid(370) {L = point(600m, -500m); U = point(600m, 1540m)}; g0180_barBowl = glyphid(371) {L = point(600m, -100m); U = point(600m, 1540m)}; g0180 = glyphid(372) {L = point(600m, -100m); U = point(600m, 1540m)}; g1D6C = glyphid(373) {L = point(600m, -100m); U = point(600m, 1540m)}; g0253 = glyphid(374) {L = point(600m, -100m); U = point(600m, 1540m)}; g0185 = glyphid(375) {L = point(548m, -100m); U = point(548m, 1540m)}; g0183 = glyphid(376) {L = point(625m, -100m); U = point(625m, 1540m)}; g0431 = glyphid(377) {L = point(547m, -100m); U = point(547m, 1540m)}; g044C = glyphid(378) {L = point(481m, -100m); U = point(481m, 1100m)}; g048D = glyphid(379) {L = point(461m, -100m); U = point(461m, 1500m)}; g044A = glyphid(380) {L = point(550m, -100m); U = point(550m, 1100m)}; g044B = glyphid(381) {L = point(702m, -100m); U = point(702m, 1100m)}; g04F9 = glyphid(382) {L = point(702m, -100m); U = point(702m, 1500m)}; g0432 = glyphid(383) {L = point(510m, -100m); U = point(510m, 1100m)}; g0412 = glyphid(384) {L = point(612m, -100m); U = point(612m, 1500m)}; g1D2E = glyphid(385) {L = point(403m, 725m); U = point(403m, 1650m)}; g0299 = glyphid(386) {L = point(509m, -100m); U = point(509m, 1100m)}; g1E02 = glyphid(387) {L = point(612m, -100m); U = point(612m, 1900m)}; g1E06 = glyphid(388) {L = point(612m, -500m); U = point(612m, 1500m)}; g1E04 = glyphid(389) {L = point(612m, -500m); U = point(612m, 1500m)}; g0243 = glyphid(390) {L = point(597m, -100m); U = point(597m, 1500m)}; g1D2F = glyphid(391) {L = point(406m, 725m); U = point(406m, 1650m)}; g1D03 = glyphid(392) {L = point(630m, -100m); U = point(509m, 1100m)}; g0181 = glyphid(393) {L = point(637m, -100m); U = point(637m, 1500m)}; g0184 = glyphid(394) {L = point(604m, -100m); U = point(604m, 1500m)}; g0182 = glyphid(395) {L = point(604m, -100m); U = point(604m, 1500m)}; g0411 = glyphid(396) {L = point(578m, -100m); U = point(578m, 1500m)}; g042C = glyphid(397) {L = point(580m, -100m); U = point(580m, 1500m)}; g048C = glyphid(398) {L = point(564m, -100m); U = point(564m, 1540m)}; g042A = glyphid(399) {L = point(650m, -100m); U = point(650m, 1500m)}; g042B = glyphid(400) {L = point(856m, -100m); U = point(856m, 1500m)}; g04F8 = glyphid(401) {L = point(856m, -100m); U = point(856m, 1900m)}; g_beta = glyphid(402) {L = point(620m, -100m); U = point(620m, 1540m)}; g1D66 = glyphid(403) {L = point(367m, -765m); U = point(367m, 450m)}; g1D5D = glyphid(404) {L = point(408m, 485m); U = point(367m, 1757m)}; g0441 = glyphid(405) {O = point(535m, 0m); L = point(535m, -100m); U = point(550m, 1100m)}; g217D = glyphid(406) {U = point(550m, 1500m)}; g1D9C = glyphid(407) {L = point(314m, 725m); U = point(314m, 1450m)}; g0368 = glyphid(408) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_cacute = glyphid(409) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g_ccircumflex = glyphid(410) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g_ccaron = glyphid(411) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g_cdotaccent = glyphid(412) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g1E09 = glyphid(413) {R = point(954m, 1000m); L = point(525m, -500m); U = point(550m, 1500m)}; g04AB = glyphid(414) {L = point(477m, -400m); U = point(550m, 1100m)}; gF225 = glyphid(415) {L = point(550m, -500m); U = point(550m, 1100m)}; g023C = glyphid(416); g0297 = glyphid(417) {L = point(535m, -500m); U = point(550m, 1100m)}; g0188 = glyphid(418) {L = point(535m, -100m); U = point(550m, 1100m)}; g0255 = glyphid(419) {L = point(535m, -320m); U = point(550m, 1100m)}; g1D9D = glyphid(420) {L = point(319m, 725m); U = point(319m, 1457m)}; g0254 = glyphid(421) {H = point(477m, 0m); O = point(530m, 0m); R = point(954m, 1000m); L = point(477m, -100m); U = point(477m, 1100m)}; g0254_topSerif = glyphid(422) {H = point(477m, 0m); O = point(530m, 0m); R = point(954m, 1000m); L = point(477m, -100m); U = point(477m, 1100m)}; g1D53 = glyphid(423) {L = point(315m, 725m); U = point(315m, 1457m)}; g1D53_topSerif = glyphid(424) {L = point(315m, 725m); U = point(315m, 1457m)}; g1D97 = glyphid(425) {L = point(477m, -500m); U = point(477m, 1100m)}; g1D97_topSerif = glyphid(426) {L = point(477m, -500m); U = point(477m, 1100m)}; g2184 = glyphid(427) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1100m)}; g1D12 = glyphid(428) {L = point(588m, -100m); U = point(588m, 1100m)}; g0454 = glyphid(429) {L = point(525m, -100m); U = point(525m, 1100m)}; g044D = glyphid(430) {L = point(440m, -100m); U = point(440m, 1100m)}; g04ED = glyphid(431) {L = point(440m, -100m); U = point(440m, 1500m)}; g044D_mongolStyle = glyphid(432) {L = point(440m, -100m); U = point(440m, 1100m)}; g0421 = glyphid(433) {O = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1500m)}; g216D = glyphid(434) {U = point(642m, 1500m)}; g1D04 = glyphid(435) {L = point(620m, -100m); U = point(620m, 1100m)}; g__cacute = glyphid(436) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ccircumflex = glyphid(437) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ccaron = glyphid(438) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g__cdotaccent = glyphid(439) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g1E08 = glyphid(440) {L = point(730m, -500m); U = point(750m, 1900m)}; g04AA = glyphid(441) {L = point(679m, -500m); U = point(750m, 1500m)}; g023B = glyphid(442) {H = point(645m, 0m); L = point(693m, -100m); U = point(693m, 1500m)}; g0187 = glyphid(443) {L = point(720m, -100m); U = point(720m, 1500m)}; g__euro = glyphid(444); g_colonmonetary = glyphid(445); g20A0 = glyphid(446); g20A2 = glyphid(447); g20B5 = glyphid(448); g0186 = glyphid(449) {L = point(615m, -100m); U = point(615m, 1500m)}; g0186_topSerif = glyphid(450) {L = point(615m, -100m); U = point(615m, 1500m)}; g1D10 = glyphid(451) {L = point(530m, -100m); U = point(530m, 1100m)}; g1D10_topSerif = glyphid(452) {L = point(530m, -100m); U = point(530m, 1100m)}; g2183 = glyphid(453); g0404 = glyphid(454) {L = point(720m, -100m); U = point(720m, 1500m)}; g042D = glyphid(455) {L = point(600m, -100m); U = point(600m, 1500m)}; g04EC = glyphid(456) {L = point(600m, -100m); U = point(600m, 1900m)}; g042D_mongolStyle = glyphid(457) {L = point(600m, -100m); U = point(600m, 1500m)}; g0501 = glyphid(458) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -100m); U = point(586m, 1540m)}; g217E = glyphid(459) {U = point(586m, 1500m)}; g1D48 = glyphid(460) {L = point(390m, 725m); U = point(390m, 1700m)}; g0369 = glyphid(461) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E0B = glyphid(462) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -100m); U = point(586m, 1940m)}; g1E13 = glyphid(463) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g1E0F = glyphid(464) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g1E0D = glyphid(465) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g1E11 = glyphid(466) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g_dcaron = glyphid(467) {H = point(614m, 0m); L = point(614m, -100m); U = point(611m, 1540m)}; g1D81 = glyphid(468) {L = point(586m, -500m); U = point(586m, 1540m)}; g_dcroat_bar_bowl = glyphid(469) {L = point(577m, -100m); U = point(577m, 1540m)}; g_dcroat = glyphid(470) {L = point(586m, -100m); U = point(586m, 1540m)}; g_dong = glyphid(471); g1D6D = glyphid(472) {L = point(586m, -100m); U = point(586m, 1540m)}; g0257 = glyphid(473) {L = point(586m, -100m); U = point(586m, 1540m)}; g0256 = glyphid(474) {R = point(1188m, 1000m); L = point(586m, -475m); U = point(586m, 1540m)}; g1D91 = glyphid(475) {L = point(586m, -500m); U = point(586m, 1540m)}; g0221 = glyphid(476) {L = point(698m, -320m); U = point(698m, 1540m)}; g018C = glyphid(477) {L = point(586m, -100m); U = point(586m, 1540m)}; g0238 = glyphid(478) {L = point(866m, -100m); U = point(866m, 1540m)}; g01F3 = glyphid(479) {H = point(1638m, 0m); L = point(1638m, -100m); U = point(1638m, 1100m)}; g01C6 = glyphid(480) {H = point(1638m, 0m); L = point(1638m, -100m); U = point(1638m, 1500m)}; g02A3 = glyphid(481) {L = point(827m, -100m); U = point(843m, 1580m)}; g02A5 = glyphid(482) {L = point(839m, -100m); U = point(839m, 1580m)}; g02A4 = glyphid(483) {L = point(856m, -500m); U = point(844m, 1580m)}; g0503 = glyphid(484) {L = point(870m, -100m); U = point(870m, 1540m)}; g_delta = glyphid(485) {L = point(542m, -100m); U = point(542m, 1540m)}; g1D5F = glyphid(486) {L = point(361m, 725m); U = point(361m, 1775m)}; g_eth = glyphid(487) {L = point(552m, -100m); U = point(552m, 1540m)}; g1D9E = glyphid(488) {L = point(363m, 725m); U = point(363m, 1700m)}; g216E = glyphid(489) {U = point(706m, 1500m)}; g1D30 = glyphid(490) {L = point(464m, 725m); U = point(464m, 1650m)}; g1D05 = glyphid(491) {L = point(579m, -100m); U = point(579m, 1100m)}; g__dcaron = glyphid(492) {L = point(690m, -100m); U = point(690m, 1900m)}; g1E0A = glyphid(493) {L = point(690m, -100m); U = point(690m, 1900m)}; g1E12 = glyphid(494) {L = point(690m, -500m); U = point(690m, 1500m)}; g1E0E = glyphid(495) {L = point(690m, -500m); U = point(690m, 1500m)}; g1E0C = glyphid(496) {L = point(690m, -500m); U = point(690m, 1500m)}; g1E10 = glyphid(497) {L = point(690m, -500m); U = point(690m, 1500m)}; g__eth = glyphid(498) {L = point(690m, -100m); U = point(690m, 1500m)}; g__dcroat = glyphid(499) {L = point(690m, -100m); U = point(690m, 1500m)}; g0189 = glyphid(500) {L = point(690m, -100m); U = point(690m, 1500m)}; g1D06 = glyphid(501) {L = point(703m, -100m); U = point(564m, 1100m)}; gF20D = glyphid(502) {L = point(730m, -100m); U = point(730m, 1500m)}; g018A = glyphid(503) {L = point(730m, -100m); U = point(730m, 1500m)}; g018B = glyphid(504) {L = point(634m, -100m); U = point(634m, 1500m)}; g01F2 = glyphid(505) {H = point(1908m, 0m); L = point(1908m, -100m); U = point(1908m, 1100m)}; g01C5 = glyphid(506) {H = point(1908m, 0m); L = point(1908m, -100m); U = point(1908m, 1500m)}; g01F1 = glyphid(507) {L = point(2035m, -100m); U = point(2035m, 1500m)}; g01C4 = glyphid(508) {L = point(2035m, -100m); U = point(2035m, 1900m)}; g0500 = glyphid(509) {L = point(580m, -100m); U = point(580m, 1500m)}; g0502 = glyphid(510) {L = point(850m, -100m); U = point(850m, 1500m)}; g0394 = glyphid(511); g2181 = glyphid(512); g2180 = glyphid(513); g2182 = glyphid(514); g20AF = glyphid(515); g0435 = glyphid(516) {L = point(535m, -100m); U = point(535m, 1100m)}; g2091 = glyphid(517) {L = point(331m, -525m); U = point(331m, 200m)}; g1D49 = glyphid(518) {L = point(335m, 725m); U = point(335m, 1450m)}; g0364 = glyphid(519) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g0450 = glyphid(520) {L = point(535m, -100m); U = point(535m, 1500m)}; g0205 = glyphid(521) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1EBF = glyphid(522) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EBF_vN = glyphid(523) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m)}; g1EC1 = glyphid(524) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EC1_vN = glyphid(525) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m)}; g1EC5 = glyphid(526) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EC5_vN = glyphid(527) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1825m)}; g1EC3 = glyphid(528) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EC3_vN = glyphid(529) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m)}; g1EC7 = glyphid(530) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1500m)}; g0207 = glyphid(531) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_ebreve = glyphid(532) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g04D7 = glyphid(533) {L = point(535m, -100m); U = point(535m, 1500m)}; g_ecaron = glyphid(534) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1EBD = glyphid(535) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_emacron = glyphid(536) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1470m)}; g1E17 = glyphid(537) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1870m)}; g1E15 = glyphid(538) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1870m)}; g0451 = glyphid(539) {L = point(535m, -100m); U = point(535m, 1500m)}; g_edotaccent = glyphid(540) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1EBB = glyphid(541) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1E19 = glyphid(542) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g1E1B = glyphid(543) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g1EB9 = glyphid(544) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g0229 = glyphid(545) {O = point(557m, 0m); R = point(1004m, 1000m); L = point(502m, -500m); U = point(535m, 1100m)}; g1E1D = glyphid(546) {O = point(557m, 0m); R = point(1004m, 1000m); L = point(502m, -500m); U = point(535m, 1500m)}; g_eogonek = glyphid(547) {L = point(525m, -500m); U = point(525m, 1100m)}; g_eogonek_retro_hook_style = glyphid(548) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g1D92 = glyphid(549) {L = point(525m, -100m); U = point(525m, 1100m)}; g0247 = glyphid(550) {L = point(525m, -100m); U = point(525m, 1100m)}; g04BD = glyphid(551) {O = point(957m, 0m); L = point(724m, -100m); U = point(724m, 1100m)}; g04BF = glyphid(552) {L = point(899m, -400m); U = point(724m, 1100m)}; g01DD = glyphid(553) {L = point(480m, -100m); U = point(480m, 1100m)}; g0259 = glyphid(554) {H = point(480m, 0m); O = point(557m, 0m); L = point(480m, -100m); U = point(480m, 1100m)}; g04D9 = glyphid(555) {H = point(480m, 0m); O = point(557m, 0m); L = point(480m, -100m); U = point(480m, 1100m)}; g2094 = glyphid(556) {L = point(331m, -525m); U = point(331m, 200m)}; g1D4A = glyphid(557) {L = point(335m, 725m); U = point(335m, 1450m)}; g04DB = glyphid(558) {H = point(480m, 0m); O = point(557m, 0m); L = point(480m, -100m); U = point(480m, 1500m)}; g1D95 = glyphid(559) {L = point(514m, -100m); U = point(514m, 1100m)}; g025A = glyphid(560) {H = point(500m, 0m); O = point(550m, 0m); L = point(525m, -100m); U = point(502m, 1100m)}; g0258 = glyphid(561) {R = point(1034m, 1000m); L = point(517m, -100m); U = point(517m, 1100m)}; gF1A3 = glyphid(562) {L = point(341m, 725m); U = point(341m, 1457m)}; g025B = glyphid(563) {H = point(460m, 0m); O = point(512m, 0m); R = point(899m, 1000m); L = point(490m, -100m); U = point(490m, 1100m)}; g1D4B = glyphid(564) {L = point(303m, 725m); U = point(303m, 1457m)}; g1D93 = glyphid(565) {L = point(462m, -100m); U = point(462m, 1100m)}; g025C = glyphid(566) {L = point(439m, -100m); U = point(439m, 1100m)}; g1D9F = glyphid(567) {L = point(290m, 725m); U = point(290m, 1450m)}; g1D94 = glyphid(568) {L = point(439m, -500m); U = point(439m, 1100m)}; g025D = glyphid(569) {L = point(440m, -100m); U = point(440m, 1100m)}; g1D08 = glyphid(570) {L = point(414m, -100m); U = point(414m, 1100m)}; g1D4C = glyphid(571) {L = point(274m, 725m); U = point(274m, 1450m)}; g029A = glyphid(572) {L = point(508m, -100m); U = point(508m, 1100m)}; g025E = glyphid(573) {R = point(1016m, 1000m); L = point(508m, -100m); U = point(508m, 1100m)}; gF1A4 = glyphid(574) {L = point(335m, 725m); U = point(335m, 1457m)}; g0511 = glyphid(575) {H = point(535m, 0m); O = point(481m, 0m); R = point(907m, 1000m); L = point(481m, -100m); U = point(481m, 1100m)}; g0437 = glyphid(576) {L = point(435m, -100m); U = point(435m, 1100m)}; g04DF = glyphid(577) {L = point(435m, -100m); U = point(435m, 1500m)}; g0499 = glyphid(578) {L = point(435m, -400m); U = point(435m, 1100m)}; g0507 = glyphid(579) {L = point(443m, -100m); U = point(443m, 1100m)}; g0505 = glyphid(580) {L = point(761m, -100m); U = point(761m, 1100m)}; g0415 = glyphid(581) {L = point(597m, -100m); U = point(597m, 1500m)}; g1D31 = glyphid(582) {L = point(393m, 725m); U = point(393m, 1650m)}; g1D07 = glyphid(583) {L = point(489m, -100m); U = point(489m, 1100m)}; g0400 = glyphid(584) {L = point(597m, -100m); U = point(597m, 1900m)}; g0204 = glyphid(585) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1EBE = glyphid(586) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EBE_vN = glyphid(587) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m)}; g1EC0 = glyphid(588) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EC0_vN = glyphid(589) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m)}; g1EC4 = glyphid(590) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EC4_vN = glyphid(591) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2225m)}; g1EC2 = glyphid(592) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EC2_vN = glyphid(593) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m)}; g1EC6 = glyphid(594) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1900m)}; g0206 = glyphid(595) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__ebreve = glyphid(596) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g04D6 = glyphid(597) {L = point(597m, -100m); U = point(597m, 1935m)}; g__ecaron = glyphid(598) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1EBC = glyphid(599) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__emacron = glyphid(600) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1870m)}; g1E16 = glyphid(601) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2270m)}; g1E14 = glyphid(602) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2270m)}; g0401 = glyphid(603) {L = point(597m, -100m); U = point(597m, 1900m)}; g__edotaccent = glyphid(604) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1EBA = glyphid(605) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1E18 = glyphid(606) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g1E1A = glyphid(607) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g1EB8 = glyphid(608) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g0228 = glyphid(609) {O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g1E1C = glyphid(610) {O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1900m)}; g__eogonek = glyphid(611) {H = point(597m, 0m); L = point(922m, -400m); U = point(597m, 1500m)}; g__eogonek_retro_hook_style = glyphid(612) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g0246 = glyphid(613) {L = point(604m, -100m); U = point(604m, 1500m)}; g04BC = glyphid(614) {O = point(1127m, 0m); L = point(915m, -100m); U = point(915m, 1500m)}; g04BE = glyphid(615) {L = point(1076m, -500m); U = point(915m, 1500m)}; g018E = glyphid(616) {L = point(597m, -100m); U = point(597m, 1500m)}; g1D32 = glyphid(617) {L = point(393m, 725m); U = point(393m, 1650m)}; g018F = glyphid(618) {L = point(678m, -100m); U = point(678m, 1500m)}; g04D8 = glyphid(619) {L = point(678m, -100m); U = point(678m, 1500m)}; g04DA = glyphid(620) {L = point(678m, -100m); U = point(678m, 1900m)}; g0190 = glyphid(621) {L = point(615m, -100m); U = point(615m, 1500m)}; g0510 = glyphid(622) {L = point(578m, -100m); U = point(578m, 1500m)}; g0417 = glyphid(623) {L = point(520m, -100m); U = point(520m, 1500m)}; g04DE = glyphid(624) {L = point(520m, -100m); U = point(520m, 1900m)}; g0498 = glyphid(625) {L = point(559m, -500m); U = point(559m, 1500m)}; g0506 = glyphid(626) {L = point(674m, -500m); U = point(674m, 1500m)}; g0504 = glyphid(627) {L = point(926m, -100m); U = point(926m, 1500m)}; g_f_slant_italic = glyphid(628) {H = point(428m, 0m); L = point(296m, -100m); U = point(506m, 1440m)}; g1DA0 = glyphid(629) {L = point(284m, 725m); U = point(284m, 1700m)}; g1E1F = glyphid(630) {H = point(428m, 0m); L = point(296m, -100m); U = point(506m, 1880m)}; g1D82 = glyphid(631) {L = point(296m, -500m); U = point(428m, 1580m)}; g1D6E = glyphid(632) {L = point(284m, -100m); U = point(414m, 1580m)}; g_f_i = glyphid(633); g_f_i_slant_italic = glyphid(634); g_f_l = glyphid(635); g_f_l_slant_italic = glyphid(636); g_f_f_i = glyphid(637); g_f_f_i_slant_italic = glyphid(638); g_ffi = glyphid(639); g_f_f_l = glyphid(640); g_f_f_l_slant_italic = glyphid(641); g_ffl = glyphid(642); g_f_f = glyphid(643); g_f_f_slant_italic = glyphid(644); g_ff = glyphid(645); g02A9 = glyphid(646) {L = point(870m, -500m); U = point(902m, 1540m)}; g_longs = glyphid(647) {L = point(404m, -100m); U = point(404m, 1540m)}; g1E9B = glyphid(648) {L = point(404m, -100m); U = point(404m, 1940m)}; g0433 = glyphid(649) {L = point(454m, -100m); U = point(454m, 1100m)}; g0453 = glyphid(650) {L = point(454m, -100m); U = point(454m, 1500m)}; g0491 = glyphid(651) {L = point(414m, -100m); U = point(414m, 1100m)}; g04F7 = glyphid(652) {L = point(454m, -500m); U = point(454m, 1100m)}; g0493 = glyphid(653) {L = point(444m, -100m); U = point(444m, 1100m)}; g0493_slantItalic = glyphid(654) {L = point(444m, -100m); U = point(444m, 1100m)}; gF327 = glyphid(655) {L = point(444m, -500m); U = point(444m, 1100m)}; gF327_slantItalic = glyphid(656) {L = point(444m, -500m); U = point(444m, 1100m)}; g04FB = glyphid(657) {L = point(444m, -100m); U = point(444m, 1100m)}; g04FB_slantItalic = glyphid(658) {L = point(444m, -100m); U = point(444m, 1100m)}; g1E1E = glyphid(659) {L = point(549m, -100m); U = point(549m, 1900m)}; g_franc = glyphid(660); g0191 = glyphid(661) {L = point(565m, -500m); U = point(565m, 1500m)}; g0413 = glyphid(662) {L = point(545m, -100m); U = point(545m, 1500m)}; g__gamma = glyphid(663) {L = point(580m, -100m); U = point(580m, 1500m)}; g1D26 = glyphid(664) {L = point(263m, -100m); U = point(263m, 1100m)}; g0403 = glyphid(665) {L = point(545m, -100m); U = point(545m, 1900m)}; g0490 = glyphid(666) {L = point(495m, -100m); U = point(495m, 1500m)}; g04F6 = glyphid(667) {L = point(545m, -500m); U = point(545m, 1500m)}; g0492 = glyphid(668) {L = point(533m, -100m); U = point(533m, 1500m)}; gF326 = glyphid(669) {L = point(323m, -500m); U = point(533m, 1500m)}; g04FA = glyphid(670) {L = point(533m, -100m); U = point(533m, 1500m)}; g1D4D = glyphid(671) {L = point(365m, 485m); U = point(365m, 1450m)}; g01F5 = glyphid(672) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gcircumflex = glyphid(673) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gbreve = glyphid(674) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gcaron = glyphid(675) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g1E21 = glyphid(676) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1470m)}; g_gdotaccent = glyphid(677) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gcommaaccent = glyphid(678) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g01E5_barBowl = glyphid(679) {L = point(520m, -500m); U = point(520m, 1100m)}; g01E5 = glyphid(680) {L = point(546m, -500m); U = point(546m, 1100m)}; g_g_sng_bowl = glyphid(681) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1100m)}; g0261 = glyphid(682) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1100m)}; g1DA2 = glyphid(683) {L = point(343m, 485m); U = point(343m, 1457m)}; g01F5_sngBowl = glyphid(684) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gcircumflex_sng_bowl = glyphid(685) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gbreve_sng_bowl = glyphid(686) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gcaron_sng_bowl = glyphid(687) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g1E21_sngBowl = glyphid(688) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1470m)}; g_gdotaccent_sng_bowl = glyphid(689) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gcommaaccent_sng_bowl = glyphid(690) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g1D83 = glyphid(691) {L = point(534m, -539m); U = point(534m, 1100m)}; g01E5_barBowl_sngBowl = glyphid(692) {L = point(575m, -500m); U = point(575m, 1100m)}; g0260 = glyphid(693) {L = point(596m, -500m); U = point(596m, 1540m)}; g1D77 = glyphid(694) {R = point(1075m, 1000m); L = point(533m, -500m); U = point(515m, 1100m)}; g1D79 = glyphid(695) {R = point(987m, 1000m); L = point(498m, -500m); U = point(498m, 1100m)}; g050D = glyphid(696) {L = point(630m, -100m); U = point(630m, 1100m)}; g1D33 = glyphid(697) {L = point(477m, 725m); U = point(477m, 1650m)}; g0262 = glyphid(698) {R = point(1161m, 1000m); L = point(595m, -100m); U = point(595m, 1100m)}; g01F4 = glyphid(699) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gcircumflex = glyphid(700) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gbreve = glyphid(701) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gcaron = glyphid(702) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g1E20 = glyphid(703) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1870m)}; g__gdotaccent = glyphid(704) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gcommaaccent = glyphid(705) {H = point(766m, 0m); L = point(766m, -500m); U = point(766m, 1500m)}; g01E4 = glyphid(706) {L = point(733m, -100m); U = point(733m, 1500m)}; g0193 = glyphid(707) {L = point(726m, -100m); U = point(726m, 1500m)}; g029B = glyphid(708) {L = point(582m, -100m); U = point(582m, 1300m)}; g20B2 = glyphid(709); g050C = glyphid(710) {L = point(741m, -100m); U = point(741m, 1500m)}; g02B0 = glyphid(711) {L = point(387m, 725m); U = point(387m, 1700m)}; g036A = glyphid(712) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_hcircumflex = glyphid(713) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g021F = glyphid(714) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g1E27 = glyphid(715) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g1E23 = glyphid(716) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g1E2B = glyphid(717) {H = point(712m, 0m); L = point(579m, -500m); U = point(579m, 1540m)}; g1E96 = glyphid(718) {H = point(712m, 0m); L = point(579m, -500m); U = point(579m, 1540m)}; g1E25 = glyphid(719) {H = point(712m, 0m); L = point(579m, -500m); U = point(579m, 1540m)}; g1E29 = glyphid(720) {L = point(712m, -500m); U = point(579m, 1540m)}; g_hbar = glyphid(721) {L = point(579m, -100m); U = point(579m, 1540m)}; g045B = glyphid(722) {L = point(579m, -100m); U = point(579m, 1540m)}; gF1BC = glyphid(723) {L = point(372m, 725m); U = point(372m, 1700m)}; g0452 = glyphid(724) {L = point(567m, -500m); U = point(567m, 1540m)}; g0266 = glyphid(725) {L = point(585m, -100m); U = point(585m, 1540m)}; g02B1 = glyphid(726) {L = point(387m, 725m); U = point(387m, 1700m)}; gF25A = glyphid(727) {L = point(587m, -500m); U = point(587m, 1540m)}; g0267 = glyphid(728) {L = point(517m, -500m); U = point(517m, 1540m)}; g2C68 = glyphid(729) {L = point(579m, -100m); U = point(579m, 1540m)}; g0195 = glyphid(730) {L = point(900m, -100m); U = point(900m, 1100m)}; g2C76 = glyphid(731) {L = point(620m, -100m); U = point(620m, 1100m)}; g0265 = glyphid(732) {L = point(596m, -500m); U = point(596m, 1100m)}; g1DA3 = glyphid(733) {L = point(392m, 485m); U = point(392m, 1450m)}; g02AE = glyphid(734) {L = point(632m, -500m); U = point(632m, 1100m)}; g02AF = glyphid(735) {L = point(731m, -500m); U = point(731m, 1100m)}; g04BB = glyphid(736) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1540m)}; g04BB_uCStyle = glyphid(737) {L = point(540m, -100m); U = point(540m, 1100m)}; g0495 = glyphid(738) {L = point(560m, -500m); U = point(560m, 1100m)}; g043D = glyphid(739) {L = point(610m, -100m); U = point(610m, 1100m)}; g04A5 = glyphid(740) {L = point(700m, -100m); U = point(700m, 1100m)}; g04A3 = glyphid(741) {L = point(610m, -100m); U = point(610m, 1100m)}; g04CA = glyphid(742) {L = point(610m, -100m); U = point(610m, 1100m)}; g045A = glyphid(743) {L = point(788m, -100m); U = point(788m, 1100m)}; g04C8 = glyphid(744) {L = point(610m, -500m); U = point(610m, 1100m)}; g050B = glyphid(745) {L = point(855m, -100m); U = point(855m, 1100m)}; g043F = glyphid(746) {L = point(578m, -100m); U = point(578m, 1100m)}; g04A7 = glyphid(747) {L = point(792m, -100m); U = point(792m, 1100m)}; g045F = glyphid(748) {L = point(578m, -500m); U = point(578m, 1100m)}; g0446 = glyphid(749) {L = point(578m, -100m); U = point(578m, 1100m)}; g0448 = glyphid(750) {L = point(822m, -100m); U = point(822m, 1100m)}; g0449 = glyphid(751) {L = point(822m, -100m); U = point(822m, 1100m)}; g1D28 = glyphid(752) {L = point(601m, -100m); U = point(601m, 1100m)}; g041D = glyphid(753) {L = point(761m, -100m); U = point(761m, 1500m)}; g1D34 = glyphid(754) {L = point(499m, 725m); U = point(499m, 1650m)}; g1D78 = glyphid(755) {L = point(499m, 725m); U = point(499m, 1650m)}; g029C = glyphid(756) {L = point(620m, -100m); U = point(620m, 1100m)}; g__hcircumflex = glyphid(757) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g021E = glyphid(758) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g1E26 = glyphid(759) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g1E22 = glyphid(760) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g1E2A = glyphid(761) {H = point(978m, 0m); L = point(761m, -500m); U = point(761m, 1500m)}; g1E24 = glyphid(762) {H = point(978m, 0m); L = point(761m, -500m); U = point(761m, 1500m)}; g1E28 = glyphid(763) {L = point(978m, -500m); U = point(761m, 1500m)}; g__hbar = glyphid(764) {L = point(761m, -100m); U = point(761m, 1500m)}; g__hbar_vert_strk = glyphid(765) {L = point(761m, -100m); U = point(761m, 1500m)}; g2C67 = glyphid(766) {L = point(761m, -100m); U = point(761m, 1500m)}; g01F6 = glyphid(767) {L = point(990m, -100m); U = point(990m, 1500m)}; g2C75 = glyphid(768) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1500m)}; g04BA = glyphid(769) {L = point(652m, -100m); U = point(652m, 1500m)}; g0494 = glyphid(770) {L = point(627m, -500m); U = point(626m, 1500m)}; g04A4 = glyphid(771) {L = point(761m, -100m); U = point(761m, 1500m)}; g04A2 = glyphid(772) {L = point(761m, -100m); U = point(761m, 1500m)}; g04C9 = glyphid(773) {L = point(761m, -100m); U = point(761m, 1500m)}; g040A = glyphid(774) {L = point(943m, -100m); U = point(943m, 1500m)}; g04C7 = glyphid(775) {L = point(761m, -500m); U = point(761m, 1500m)}; g050A = glyphid(776) {L = point(1062m, -100m); U = point(1062m, 1500m)}; g041F = glyphid(777) {L = point(743m, -100m); U = point(743m, 1500m)}; g04A6 = glyphid(778) {L = point(1014m, -100m); U = point(1051m, 1500m)}; g040F = glyphid(779) {L = point(743m, -500m); U = point(743m, 1500m)}; g0426 = glyphid(780) {L = point(743m, -100m); U = point(743m, 1500m)}; g0428 = glyphid(781) {L = point(992m, -100m); U = point(992m, 1500m)}; g0429 = glyphid(782) {L = point(992m, -100m); U = point(992m, 1500m)}; g_i_slant_italic = glyphid(783) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -100m); U = point(310m, 1100m)}; g0456 = glyphid(784) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -100m); U = point(310m, 1100m)}; g2170 = glyphid(785) {U = point(310m, 1500m)}; g1D62 = glyphid(786) {L = point(206m, -525m); U = point(206m, 400m)}; g2071 = glyphid(787) {R = point(414m, 1000m); L = point(205m, 725m); U = point(205m, 1700m)}; g0365 = glyphid(788) {U = point(-557m, 2100m); UM = point(-557m, 1100m)}; g0209 = glyphid(789) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g020B = glyphid(790) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_ibreve = glyphid(791) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g01D0 = glyphid(792) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_itilde = glyphid(793) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_imacron = glyphid(794) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1470m)}; g0457 = glyphid(795) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g1E2F = glyphid(796) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1900m)}; g1EC9 = glyphid(797) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g1E2D = glyphid(798) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -500m); U = point(310m, 1100m)}; g1ECB = glyphid(799) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -500m); U = point(310m, 1100m)}; g_iogonek = glyphid(800) {H = point(310m, 0m); R = point(621m, 1000m); L = point(408m, -400m); U = point(310m, 1100m)}; g_iogonek_retro_hook_style = glyphid(801) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -500m); U = point(310m, 1100m)}; g1D96 = glyphid(802) {L = point(310m, -500m); U = point(310m, 1500m)}; g0268 = glyphid(803) {H = point(310m, 0m); O = point(363m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g1DA4 = glyphid(804) {L = point(202m, 725m); U = point(202m, 1700m)}; g_i_dotless = glyphid(805) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g_dotlessi_slant_italic = glyphid(806) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g_i_dotless_slant_italic = glyphid(807) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g0456_dotless = glyphid(808) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g1D62_dotless = glyphid(809) {L = point(206m, -525m); U = point(206m, 200m)}; g2071_dotless = glyphid(810) {R = point(403m, 1000m); L = point(206m, 725m); U = point(206m, 1450m)}; g1E2D_dotless = glyphid(811) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -500m); U = point(310m, 1100m)}; g1ECB_dotless = glyphid(812) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -500m); U = point(310m, 1100m)}; g_iogonek_dotless = glyphid(813) {H = point(310m, 0m); R = point(621m, 1000m); L = point(409m, -400m); U = point(310m, 1100m)}; g1D96_dotless = glyphid(814) {L = point(314m, -500m); U = point(314m, 1100m)}; g0268_dotless = glyphid(815) {H = point(310m, 0m); O = point(363m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g1DA4_dotless = glyphid(816) {L = point(202m, 725m); U = point(202m, 1457m)}; g1D09 = glyphid(817) {L = point(295m, -500m); U = point(295m, 1100m)}; g1D4E = glyphid(818) {L = point(197m, 485m); U = point(197m, 1450m)}; g_ij = glyphid(819) {H = point(310m, 0m); O = point(466m, 0m); L = point(758m, -500m); U = point(610m, 1500m)}; g2171 = glyphid(820) {U = point(610m, 1500m)}; g2172 = glyphid(821) {U = point(921m, 1500m)}; g2173 = glyphid(822) {U = point(854m, 1500m)}; g2178 = glyphid(823) {U = point(839m, 1500m)}; g0269 = glyphid(824) {H = point(320m, 0m); O = point(431m, 0m); R = point(674m, 1000m); L = point(320m, -100m); U = point(320m, 1100m)}; g1DA5 = glyphid(825) {L = point(250m, 725m); U = point(250m, 1450m)}; g1D7C = glyphid(826) {H = point(320m, 0m); O = point(431m, 0m); R = point(674m, 1000m); L = point(320m, -100m); U = point(320m, 1100m)}; g044E = glyphid(827) {L = point(746m, -100m); U = point(746m, 1100m)}; g0406 = glyphid(828) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1500m)}; g04C0 = glyphid(829) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1500m)}; g04CF = glyphid(830) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1580m)}; g2160 = glyphid(831) {U = point(338m, 1500m)}; g1D35 = glyphid(832) {L = point(224m, 725m); U = point(224m, 1650m)}; g026A = glyphid(833) {H = point(284m, 0m); O = point(335m, 0m); R = point(569m, 1000m); L = point(284m, -100m); U = point(284m, 1100m)}; g1DA6 = glyphid(834) {L = point(183m, 725m); U = point(183m, 1450m)}; g0208 = glyphid(835) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g020A = glyphid(836) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__ibreve = glyphid(837) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g01CF = glyphid(838) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__itilde = glyphid(839) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__imacron = glyphid(840) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1870m)}; g0407 = glyphid(841) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g1E2E = glyphid(842) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 2300m)}; g__idotaccent = glyphid(843) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g1EC8 = glyphid(844) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g1E2C = glyphid(845) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -500m); U = point(338m, 1500m)}; g1ECA = glyphid(846) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -500m); U = point(338m, 1500m)}; g__iogonek = glyphid(847) {H = point(338m, 0m); L = point(436m, -400m); U = point(338m, 1500m)}; g__iogonek_retro_hook_style = glyphid(848) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -500m); U = point(338m, 1500m)}; g0197 = glyphid(849) {L = point(338m, -100m); U = point(338m, 1500m)}; g1D7B = glyphid(850) {L = point(284m, -100m); U = point(284m, 1100m)}; g1DA7 = glyphid(851) {L = point(180m, 725m); U = point(180m, 1450m)}; g__i_j = glyphid(852) {H = point(338m, 0m); O = point(494m, 0m); L = point(1086m, -100m); U = point(835m, 1500m)}; g2161 = glyphid(853) {U = point(676m, 1500m)}; g2162 = glyphid(854) {U = point(1014m, 1500m)}; g2163 = glyphid(855) {U = point(1031m, 1500m)}; g2168 = glyphid(856) {U = point(999m, 1500m)}; gF258 = glyphid(857) {L = point(335m, -100m); U = point(335m, 1405m)}; g0196 = glyphid(858) {L = point(448m, -100m); U = point(373m, 1500m)}; g042E = glyphid(859) {L = point(986m, -100m); U = point(986m, 1500m)}; g0458 = glyphid(860) {L = point(137m, -500m); U = point(328m, 1100m)}; g02B2 = glyphid(861) {L = point(89m, 485m); U = point(89m, 1650m)}; g_jcircumflex = glyphid(862) {L = point(126m, -500m); U = point(324m, 1500m)}; g01F0 = glyphid(863) {L = point(126m, -500m); U = point(324m, 1500m)}; g0249 = glyphid(864) {L = point(133m, -500m); U = point(323m, 1100m)}; g029D = glyphid(865) {L = point(133m, -500m); U = point(323m, 1100m)}; g1DA8 = glyphid(866) {L = point(155m, 485m); U = point(155m, 1650m)}; g_j_dotless = glyphid(867) {L = point(126m, -500m); U = point(324m, 1100m)}; g0237 = glyphid(868) {L = point(126m, -500m); U = point(324m, 1100m)}; g0458_dotless = glyphid(869) {L = point(126m, -500m); U = point(324m, 1100m)}; g02B2_dotless = glyphid(870) {L = point(87m, 485m); U = point(215m, 1450m)}; g025F = glyphid(871) {R = point(598m, 1000m); L = point(125m, -500m); U = point(323m, 1100m)}; g0249_dotless = glyphid(872) {R = point(598m, 1000m); L = point(125m, -500m); U = point(323m, 1100m)}; g1DA1 = glyphid(873) {L = point(95m, 485m); U = point(213m, 1450m)}; g029D_dotless = glyphid(874) {L = point(231m, -500m); U = point(351m, 1100m)}; g1DA8_dotless = glyphid(875) {L = point(155m, 485m); U = point(232m, 1450m)}; g0284_topSerif = glyphid(876) {L = point(315m, -500m); U = point(315m, 1540m)}; g0284 = glyphid(877) {L = point(315m, -500m); U = point(315m, 1540m)}; g043B = glyphid(878) {L = point(581m, -100m); U = point(710m, 1100m)}; g04C6 = glyphid(879) {L = point(581m, -100m); U = point(710m, 1100m)}; g0459 = glyphid(880) {L = point(751m, -100m); U = point(751m, 1100m)}; g0513 = glyphid(881) {L = point(599m, -500m); U = point(710m, 1100m)}; g0509 = glyphid(882) {L = point(824m, -100m); U = point(824m, 1100m)}; g0434 = glyphid(883) {L = point(566m, -100m); U = point(690m, 1100m)}; g0408 = glyphid(884) {L = point(410m, -100m); U = point(675m, 1500m)}; g1D36 = glyphid(885) {L = point(327m, 725m); U = point(327m, 1650m)}; g1D0A = glyphid(886) {L = point(406m, -100m); U = point(406m, 1100m)}; g__jcircumflex = glyphid(887) {L = point(410m, -100m); U = point(675m, 1900m)}; g0248 = glyphid(888) {L = point(410m, -100m); U = point(675m, 1500m)}; g041B = glyphid(889) {L = point(711m, -100m); U = point(880m, 1500m)}; g1D2B = glyphid(890) {L = point(720m, -100m); U = point(720m, 1100m)}; g04C5 = glyphid(891) {L = point(711m, -360m); U = point(880m, 1500m)}; g0409 = glyphid(892) {L = point(932m, -100m); U = point(932m, 1500m)}; g0512 = glyphid(893) {L = point(711m, -500m); U = point(880m, 1500m)}; g0508 = glyphid(894) {L = point(1005m, -100m); U = point(1005m, 1500m)}; g0414 = glyphid(895) {L = point(706m, -100m); U = point(870m, 1500m)}; g1D4F = glyphid(896) {L = point(370m, 725m); U = point(370m, 1700m)}; g1E31 = glyphid(897) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -100m); U = point(551m, 1940m)}; g01E9 = glyphid(898) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -100m); U = point(551m, 1940m)}; g1E35 = glyphid(899) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -500m); U = point(551m, 1540m)}; g1E33 = glyphid(900) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -500m); U = point(551m, 1540m)}; g_kcommaaccent = glyphid(901) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -500m); U = point(551m, 1540m)}; g1D84 = glyphid(902) {L = point(551m, -500m); U = point(551m, 1540m)}; g0199 = glyphid(903) {L = point(559m, -100m); U = point(559m, 1540m)}; g2C6A = glyphid(904) {L = point(551m, -100m); U = point(551m, 1540m)}; g029E = glyphid(905) {L = point(542m, -500m); U = point(542m, 1100m)}; g_kgreenlandic = glyphid(906) {L = point(562m, -100m); U = point(562m, 1100m)}; g043A = glyphid(907) {L = point(562m, -100m); U = point(562m, 1100m)}; g045C = glyphid(908) {L = point(562m, -100m); U = point(562m, 1500m)}; g049B = glyphid(909) {L = point(562m, -100m); U = point(562m, 1100m)}; g04A1 = glyphid(910) {L = point(649m, -100m); U = point(649m, 1100m)}; g049F = glyphid(911) {L = point(570m, -100m); U = point(535m, 1540m)}; g049D = glyphid(912) {L = point(572m, -100m); U = point(572m, 1100m)}; g04C4 = glyphid(913) {L = point(552m, -500m); U = point(552m, 1100m)}; g0436 = glyphid(914) {L = point(714m, -100m); U = point(714m, 1100m)}; g04C2 = glyphid(915) {L = point(714m, -100m); U = point(714m, 1500m)}; g04DD = glyphid(916) {L = point(714m, -100m); U = point(714m, 1500m)}; g0497 = glyphid(917) {L = point(714m, -100m); U = point(714m, 1100m)}; g1D37 = glyphid(918) {L = point(451m, 725m); U = point(451m, 1650m)}; g1D0B = glyphid(919) {L = point(562m, -100m); U = point(562m, 1100m)}; g1E30 = glyphid(920) {H = point(686m, 0m); L = point(686m, -100m); U = point(686m, 1900m)}; g01E8 = glyphid(921) {H = point(686m, 0m); L = point(686m, -100m); U = point(686m, 1900m)}; g1E34 = glyphid(922) {H = point(686m, 0m); L = point(686m, -500m); U = point(686m, 1500m)}; g1E32 = glyphid(923) {H = point(686m, 0m); L = point(686m, -500m); U = point(686m, 1500m)}; g__kcommaaccent = glyphid(924) {H = point(686m, 0m); L = point(686m, -500m); U = point(686m, 1500m)}; g0198 = glyphid(925) {L = point(746m, -100m); U = point(746m, 1500m)}; g2C69 = glyphid(926) {L = point(645m, -100m); U = point(645m, 1500m)}; g20AD = glyphid(927); g041A = glyphid(928) {L = point(682m, -100m); U = point(682m, 1500m)}; g040C = glyphid(929) {L = point(682m, -100m); U = point(682m, 1900m)}; g049A = glyphid(930) {L = point(682m, -100m); U = point(682m, 1500m)}; g04A0 = glyphid(931) {L = point(770m, -100m); U = point(770m, 1500m)}; g049E = glyphid(932) {L = point(682m, -100m); U = point(682m, 1500m)}; g049C = glyphid(933) {L = point(696m, -100m); U = point(696m, 1500m)}; g04C3 = glyphid(934) {L = point(679m, -500m); U = point(679m, 1500m)}; g0416 = glyphid(935) {L = point(912m, -100m); U = point(912m, 1500m)}; g04C1 = glyphid(936) {L = point(912m, -100m); U = point(912m, 1935m)}; g04DC = glyphid(937) {L = point(912m, -100m); U = point(912m, 1900m)}; g0496 = glyphid(938) {L = point(912m, -100m); U = point(912m, 1500m)}; g_l_slant_italic = glyphid(939) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1580m)}; g217C = glyphid(940) {U = point(303m, 1500m)}; g02E1 = glyphid(941) {L = point(208m, 725m); U = point(208m, 1700m)}; g_lacute = glyphid(942) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1980m)}; g1E3D = glyphid(943) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g1E3B = glyphid(944) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g1E37 = glyphid(945) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g1E39 = glyphid(946) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1950m)}; g_lcommaaccent = glyphid(947) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g_ldot = glyphid(948) {H = point(321m, 0m); L = point(320m, -100m); U = point(320m, 1580m)}; g_lcaron = glyphid(949) {H = point(319m, 0m); L = point(318m, -100m); U = point(318m, 1580m)}; g1D85 = glyphid(950) {L = point(303m, -500m); U = point(303m, 1540m)}; g1DAA = glyphid(951) {L = point(201m, 485m); U = point(201m, 1700m)}; g019A = glyphid(952) {L = point(304m, -100m); U = point(304m, 1540m)}; g2C61 = glyphid(953) {L = point(304m, -100m); U = point(304m, 1540m)}; g026B = glyphid(954) {L = point(372m, -100m); U = point(372m, 1540m)}; g_lslash = glyphid(955) {L = point(305m, -100m); U = point(305m, 1540m)}; g026D = glyphid(956) {L = point(303m, -500m); U = point(303m, 1540m)}; g1DA9 = glyphid(957) {L = point(188m, 485m); U = point(188m, 1763m)}; g0234 = glyphid(958) {L = point(303m, -100m); U = point(303m, 1540m)}; g026C = glyphid(959) {L = point(360m, -100m); U = point(360m, 1540m)}; gF266 = glyphid(960) {L = point(360m, -100m); U = point(360m, 1540m)}; g01C9 = glyphid(961) {H = point(303m, 0m); L = point(745m, -500m); U = point(936m, 1500m)}; g02AA = glyphid(962) {L = point(604m, -100m); U = point(671m, 1580m)}; g02AB = glyphid(963) {L = point(586m, -100m); U = point(640m, 1580m)}; g026E = glyphid(964) {L = point(597m, -500m); U = point(660m, 1580m)}; g20B0 = glyphid(965); g_lira = glyphid(966); g216C = glyphid(967) {U = point(553m, 1500m)}; g1D38 = glyphid(968) {L = point(364m, 725m); U = point(364m, 1650m)}; g029F = glyphid(969) {L = point(460m, -100m); U = point(460m, 1100m)}; g1DAB = glyphid(970) {L = point(304m, 725m); U = point(304m, 1450m)}; gF268 = glyphid(971) {L = point(538m, -100m); U = point(538m, 1100m)}; g__lacute = glyphid(972) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -100m); U = point(553m, 1900m)}; g1E3C = glyphid(973) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g1E3A = glyphid(974) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g1E36 = glyphid(975) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g1E38 = glyphid(976) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1870m)}; g__lcommaaccent = glyphid(977) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g__ldot = glyphid(978) {H = point(556m, 0m); L = point(556m, -100m); U = point(556m, 1500m)}; g__lcaron = glyphid(979) {H = point(553m, 0m); L = point(553m, -100m); U = point(553m, 1500m)}; g023D = glyphid(980) {L = point(525m, -100m); U = point(525m, 1500m)}; g2C60 = glyphid(981) {L = point(525m, -100m); U = point(525m, 1500m)}; g2C62 = glyphid(982) {L = point(700m, -100m); U = point(700m, 1500m)}; g__lslash = glyphid(983) {L = point(535m, -100m); U = point(535m, 1500m)}; g1D0C = glyphid(984) {L = point(547m, -100m); U = point(441m, 1100m)}; g01C8 = glyphid(985) {H = point(553m, 0m); L = point(1224m, -500m); U = point(1415m, 1500m)}; g01C7 = glyphid(986) {H = point(553m, 0m); L = point(1497m, -100m); U = point(1762m, 1500m)}; g217F = glyphid(987) {U = point(868m, 1500m)}; g1D50 = glyphid(988) {L = point(568m, 725m); U = point(568m, 1450m)}; g036B = glyphid(989) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E3F = glyphid(990) {H = point(868m, 0m); L = point(868m, -100m); U = point(868m, 1500m)}; g1E41 = glyphid(991) {H = point(868m, 0m); L = point(868m, -100m); U = point(868m, 1500m)}; g1E43 = glyphid(992) {H = point(868m, 0m); L = point(868m, -500m); U = point(868m, 1100m)}; g1D86 = glyphid(993) {L = point(868m, -100m); U = point(868m, 1100m)}; g1D6F = glyphid(994) {L = point(865m, -100m); U = point(865m, 1100m)}; g20A5 = glyphid(995); g0271 = glyphid(996) {L = point(797m, -500m); U = point(797m, 1100m)}; g1DAC = glyphid(997) {L = point(522m, 485m); U = point(522m, 1450m)}; g026F = glyphid(998) {R = point(1741m, 1000m); L = point(871m, -100m); U = point(871m, 1100m)}; g1D5A = glyphid(999) {L = point(568m, 725m); U = point(568m, 1450m)}; g0270 = glyphid(1000) {L = point(871m, -500m); U = point(871m, 1100m)}; g1DAD = glyphid(1001) {L = point(571m, 725m); U = point(571m, 1457m)}; g1D1F = glyphid(1002) {L = point(576m, -100m); U = point(576m, 1540m)}; g043C = glyphid(1003) {L = point(727m, -100m); U = point(727m, 1100m)}; g04CE = glyphid(1004) {L = point(727m, -100m); U = point(727m, 1100m)}; g041C = glyphid(1005) {L = point(890m, -100m); U = point(890m, 1500m)}; g216F = glyphid(1006) {U = point(895m, 1500m)}; g1D39 = glyphid(1007) {L = point(586m, 725m); U = point(586m, 1650m)}; g1D0D = glyphid(1008) {L = point(721m, -100m); U = point(721m, 1100m)}; g1E3E = glyphid(1009) {L = point(895m, -100m); U = point(895m, 1900m)}; g1E40 = glyphid(1010) {L = point(895m, -100m); U = point(895m, 1900m)}; g1E42 = glyphid(1011) {L = point(895m, -500m); U = point(895m, 1500m)}; gF25B = glyphid(1012) {L = point(897m, -500m); U = point(897m, 1500m)}; g019C = glyphid(1013) {L = point(1101m, -100m); U = point(1101m, 1500m)}; g04CD = glyphid(1014) {L = point(890m, -100m); U = point(890m, 1500m)}; g1D510 = glyphid(1015); g207F = glyphid(1016) {L = point(381m, 725m); U = point(381m, 1450m)}; g_nacute = glyphid(1017) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g01F9 = glyphid(1018) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g_ncaron = glyphid(1019) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g1E45 = glyphid(1020) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g1E4B = glyphid(1021) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g1E49 = glyphid(1022) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g1E47 = glyphid(1023) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g_ncommaaccent = glyphid(1024) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g_napostrophe = glyphid(1025) {H = point(1131m, 0m); L = point(838m, -100m); U = point(838m, 1100m)}; g1D87 = glyphid(1026) {L = point(580m, -500m); U = point(580m, 1100m)}; g1D70 = glyphid(1027) {L = point(583m, -100m); U = point(583m, 1100m)}; g0272 = glyphid(1028) {L = point(607m, -500m); U = point(607m, 1100m)}; g1DAE = glyphid(1029) {L = point(398m, 485m); U = point(398m, 1450m)}; g_eng = glyphid(1030) {L = point(603m, -500m); U = point(603m, 1100m)}; g1D51 = glyphid(1031) {L = point(346m, 485m); U = point(346m, 1450m)}; g0273 = glyphid(1032) {L = point(568m, -500m); U = point(568m, 1100m)}; g1DAF = glyphid(1033) {L = point(458m, 485m); U = point(458m, 1450m)}; g0235 = glyphid(1034) {L = point(580m, -320m); U = point(580m, 1100m)}; g019E = glyphid(1035) {L = point(580m, -500m); U = point(580m, 1100m)}; g01CC = glyphid(1036) {H = point(873m, 0m); L = point(1298m, -500m); U = point(1489m, 1500m)}; g0438 = glyphid(1037) {L = point(618m, -100m); U = point(618m, 1100m)}; g045D = glyphid(1038) {L = point(618m, -100m); U = point(618m, 1500m)}; g0439 = glyphid(1039) {L = point(618m, -100m); U = point(618m, 1500m)}; g048B = glyphid(1040) {L = point(618m, -100m); U = point(618m, 1500m)}; g04E3 = glyphid(1041) {L = point(618m, -100m); U = point(618m, 1470m)}; g04E5 = glyphid(1042) {L = point(618m, -100m); U = point(618m, 1500m)}; g1D3A = glyphid(1043) {L = point(482m, 725m); U = point(482m, 1650m)}; g0274 = glyphid(1044) {L = point(599m, -100m); U = point(599m, 1100m)}; g1DB0 = glyphid(1045) {L = point(391m, 725m); U = point(391m, 1450m)}; g__nacute = glyphid(1046) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g01F8 = glyphid(1047) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g__ncaron = glyphid(1048) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g1E44 = glyphid(1049) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g1E4A = glyphid(1050) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g1E48 = glyphid(1051) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g1E46 = glyphid(1052) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g__ncommaaccent = glyphid(1053) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g20A6 = glyphid(1054); g019D = glyphid(1055) {L = point(734m, -500m); U = point(734m, 1500m)}; g__eng_u_c_style = glyphid(1056) {L = point(737m, -500m); U = point(737m, 1500m)}; g1D0E = glyphid(1057) {L = point(603m, -100m); U = point(603m, 1100m)}; g1D3B = glyphid(1058) {L = point(476m, 725m); U = point(476m, 1650m)}; g019D_lCStyle = glyphid(1059) {L = point(725m, -100m); U = point(725m, 1500m)}; g__eng_baseline_hook = glyphid(1060) {L = point(804m, -100m); U = point(804m, 1500m)}; g__eng = glyphid(1061) {L = point(780m, -500m); U = point(780m, 1500m)}; g0220 = glyphid(1062) {L = point(753m, -500m); U = point(753m, 1500m)}; g__eng_kom = glyphid(1063) {L = point(769m, -100m); U = point(769m, 1500m)}; g01CB = glyphid(1064) {H = point(734m, 0m); L = point(1614m, -500m); U = point(1805m, 1500m)}; g01CA = glyphid(1065) {H = point(734m, 0m); L = point(1887m, -100m); U = point(2152m, 1500m)}; g2116 = glyphid(1066); g0418 = glyphid(1067) {L = point(730m, -100m); U = point(730m, 1500m)}; g040D = glyphid(1068) {L = point(730m, -100m); U = point(730m, 1900m)}; g0419 = glyphid(1069) {L = point(730m, -100m); U = point(730m, 1935m)}; g048A = glyphid(1070) {L = point(730m, -100m); U = point(730m, 1907m)}; g04E4 = glyphid(1071) {L = point(730m, -100m); U = point(730m, 1900m)}; g04E2 = glyphid(1072) {L = point(730m, -100m); U = point(730m, 1870m)}; g043E = glyphid(1073) {L = point(557m, -100m); U = point(557m, 1100m)}; g2092 = glyphid(1074) {L = point(367m, -525m); U = point(367m, 200m)}; g1D52 = glyphid(1075) {L = point(366m, 725m); U = point(366m, 1450m)}; g0366 = glyphid(1076) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_ohungarumlaut = glyphid(1077) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g020D = glyphid(1078) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g1ED1 = glyphid(1079) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED1_vN = glyphid(1080) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m)}; g1ED3 = glyphid(1081) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED3_vN = glyphid(1082) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m)}; g1ED7 = glyphid(1083) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED7_vN = glyphid(1084) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1825m)}; g1ED5 = glyphid(1085) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED5_vN = glyphid(1086) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m)}; g1ED9 = glyphid(1087) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1500m)}; g020F = glyphid(1088) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_obreve = glyphid(1089) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g01D2 = glyphid(1090) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g1E4D = glyphid(1091) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g022D = glyphid(1092) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g1E4F = glyphid(1093) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g_omacron = glyphid(1094) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1470m)}; g1E53 = glyphid(1095) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g1E51 = glyphid(1096) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g04E7 = glyphid(1097) {L = point(557m, -100m); U = point(557m, 1500m)}; g022B = glyphid(1098) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g022F = glyphid(1099) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g0231 = glyphid(1100) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g1ECF = glyphid(1101) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g1ECD = glyphid(1102) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1100m)}; g01EB = glyphid(1103) {H = point(557m, 0m); R = point(1114m, 1000m); L = point(622m, -400m); U = point(557m, 1100m)}; g01ED = glyphid(1104) {H = point(557m, 0m); R = point(1114m, 1000m); L = point(622m, -400m); U = point(557m, 1470m)}; g01EB_retroHookStyle = glyphid(1105) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1100m)}; g01ED_retroHookStyle = glyphid(1106) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1470m)}; g018D = glyphid(1107) {L = point(537m, -500m); U = point(537m, 1100m)}; g0275 = glyphid(1108) {R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g04E9 = glyphid(1109) {R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g1DB1 = glyphid(1110) {L = point(366m, 725m); U = point(366m, 1450m)}; g04EB = glyphid(1111) {R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_theta = glyphid(1112) {L = point(529m, -100m); U = point(529m, 1540m)}; g1DBF = glyphid(1113) {L = point(349m, 725m); U = point(349m, 1700m)}; g0473 = glyphid(1114); gF1AB = glyphid(1115) {L = point(366m, 725m); U = point(366m, 1450m)}; g_oslashacute = glyphid(1116) {H = point(557m, 0m); O = point(608m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_emptyset_slash_zero = glyphid(1117); g_emptyset = glyphid(1118); g_ohorn = glyphid(1119) {L = point(554m, -100m); U = point(554m, 1100m)}; g1EDB = glyphid(1120) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EDD = glyphid(1121) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EE1 = glyphid(1122) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EDF = glyphid(1123) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EE3 = glyphid(1124) {L = point(554m, -500m); U = point(554m, 1100m)}; g_sigma = glyphid(1125) {L = point(545m, -100m); U = point(545m, 1100m)}; g04A9 = glyphid(1126) {L = point(572m, -100m); U = point(572m, 1100m)}; g1D11 = glyphid(1127) {L = point(588m, -100m); U = point(588m, 1100m)}; g1D13 = glyphid(1128) {L = point(559m, -100m); U = point(559m, 1100m)}; gF1AD = glyphid(1129) {L = point(550m, 725m); U = point(550m, 1457m)}; g1D14 = glyphid(1130) {L = point(839m, -100m); U = point(839m, 1100m)}; g01A3 = glyphid(1131) {L = point(778m, -100m); U = point(778m, 1100m)}; g0223 = glyphid(1132) {L = point(525m, -100m); U = point(525m, 1580m)}; g0223_openTop = glyphid(1133) {L = point(544m, -100m); U = point(544m, 1580m)}; g1D17 = glyphid(1134) {L = point(557m, -100m); U = point(557m, 1100m)}; g1D55 = glyphid(1135) {L = point(362m, 725m); U = point(362m, 1450m)}; g1D16 = glyphid(1136) {L = point(557m, -100m); U = point(557m, 1100m)}; g1D54 = glyphid(1137) {L = point(362m, 725m); U = point(362m, 1450m)}; g041E = glyphid(1138) {L = point(748m, -100m); U = point(748m, 1500m)}; g1D3C = glyphid(1139) {L = point(491m, 725m); U = point(491m, 1650m)}; g1D0F = glyphid(1140) {L = point(613m, -100m); U = point(613m, 1100m)}; g__ohungarumlaut = glyphid(1141) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g020C = glyphid(1142) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g1ED0 = glyphid(1143) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED0_vN = glyphid(1144) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m)}; g1ED2 = glyphid(1145) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED2_vN = glyphid(1146) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m)}; g1ED6 = glyphid(1147) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED6_vN = glyphid(1148) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2225m)}; g1ED4 = glyphid(1149) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED4_vN = glyphid(1150) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m)}; g1ED8 = glyphid(1151) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1900m)}; g020E = glyphid(1152) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__obreve = glyphid(1153) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g01D1 = glyphid(1154) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g1E4C = glyphid(1155) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g022C = glyphid(1156) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g1E4E = glyphid(1157) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g__omacron = glyphid(1158) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1870m)}; g1E52 = glyphid(1159) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g1E50 = glyphid(1160) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g04E6 = glyphid(1161) {L = point(748m, -100m); U = point(748m, 1900m)}; g022A = glyphid(1162) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g022E = glyphid(1163) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g0230 = glyphid(1164) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g1ECE = glyphid(1165) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g1ECC = glyphid(1166) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1500m)}; g01EA = glyphid(1167) {H = point(748m, 0m); R = point(1497m, 1000m); L = point(947m, -400m); U = point(748m, 1500m)}; g01EC = glyphid(1168) {H = point(748m, 0m); R = point(1497m, 1000m); L = point(947m, -400m); U = point(748m, 1870m)}; g01EA_retroHookStyle = glyphid(1169) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1500m)}; g01EC_retroHookStyle = glyphid(1170) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1870m)}; g019F = glyphid(1171) {L = point(748m, -100m); U = point(748m, 1500m)}; g04E8 = glyphid(1172) {L = point(748m, -100m); U = point(748m, 1500m)}; g04EA = glyphid(1173) {L = point(748m, -100m); U = point(748m, 1900m)}; g__theta = glyphid(1174) {L = point(735m, -100m); U = point(735m, 1500m)}; g0472 = glyphid(1175); g__oslashacute = glyphid(1176) {L = point(748m, -100m); U = point(748m, 1900m)}; g__ohorn = glyphid(1177) {L = point(748m, -100m); U = point(748m, 1500m)}; g1EDA = glyphid(1178) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EDC = glyphid(1179) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EE0 = glyphid(1180) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EDE = glyphid(1181) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EE2 = glyphid(1182) {L = point(748m, -500m); U = point(748m, 1500m)}; g04A8 = glyphid(1183) {L = point(799m, -100m); U = point(799m, 1500m)}; g0276 = glyphid(1184) {R = point(1679m, 1000m); L = point(840m, -100m); U = point(840m, 1100m)}; gF1AE = glyphid(1185) {L = point(550m, 725m); U = point(550m, 1457m)}; g01A2 = glyphid(1186) {L = point(947m, -100m); U = point(947m, 1500m)}; g0222 = glyphid(1187) {L = point(569m, -100m); U = point(569m, 1585m)}; g0222_openTop = glyphid(1188) {L = point(569m, -100m); U = point(569m, 1500m)}; g1D3D = glyphid(1189) {L = point(394m, 725m); U = point(395m, 1670m)}; g1D3D_openTop = glyphid(1190) {L = point(394m, 725m); U = point(394m, 1670m)}; g1D15 = glyphid(1191) {L = point(461m, -100m); U = point(461m, 1100m)}; g1D15_openTop = glyphid(1192) {L = point(442m, -100m); U = point(442m, 1100m)}; g03A9 = glyphid(1193); g0298 = glyphid(1194) {L = point(794m, -100m); U = point(794m, 1500m)}; g0440 = glyphid(1195) {L = point(559m, -500m); U = point(559m, 1100m)}; g1D56 = glyphid(1196) {L = point(370m, 485m); U = point(370m, 1450m)}; g1E55 = glyphid(1197) {H = point(301m, -435m); R = point(1145m, 1000m); L = point(559m, -500m); U = point(559m, 1500m)}; g1E57 = glyphid(1198) {H = point(301m, -435m); R = point(1145m, 1000m); L = point(559m, -500m); U = point(559m, 1500m)}; g1D88 = glyphid(1199) {L = point(559m, -500m); U = point(559m, 1100m)}; g1D7D = glyphid(1200) {L = point(572m, -500m); U = point(572m, 1100m)}; g048F = glyphid(1201) {L = point(559m, -500m); U = point(559m, 1100m)}; g1D71 = glyphid(1202) {L = point(548m, -500m); U = point(548m, 1100m)}; g_thorn = glyphid(1203) {L = point(559m, -500m); U = point(559m, 1540m)}; g01A5 = glyphid(1204) {L = point(558m, -500m); U = point(558m, 1540m)}; g01A5_bowlHook = glyphid(1205) {L = point(559m, -500m); U = point(559m, 1540m)}; g01BF = glyphid(1206) {L = point(529m, -500m); U = point(529m, 1100m)}; g1D68 = glyphid(1207) {L = point(299m, -525m); U = point(299m, 450m)}; g0278 = glyphid(1208) {L = point(562m, -500m); U = point(562m, 1540m)}; g1DB2 = glyphid(1209) {L = point(370m, 485m); U = point(370m, 1700m)}; g0444 = glyphid(1210) {L = point(742m, -500m); U = point(742m, 1540m)}; g1D69 = glyphid(1211) {L = point(411m, -525m); U = point(411m, 450m)}; g1D60 = glyphid(1212) {L = point(411m, 485m); U = point(411m, 1450m)}; g2C77 = glyphid(1213); g0420 = glyphid(1214) {L = point(578m, -100m); U = point(578m, 1500m)}; g1D3E = glyphid(1215) {L = point(381m, 725m); U = point(381m, 1650m)}; g1D18 = glyphid(1216) {L = point(481m, -100m); U = point(481m, 1100m)}; g1D29 = glyphid(1217) {L = point(481m, -100m); U = point(481m, 1100m)}; g1E54 = glyphid(1218) {L = point(578m, -100m); U = point(578m, 1900m)}; g1E56 = glyphid(1219) {L = point(578m, -100m); U = point(578m, 1900m)}; g048E = glyphid(1220) {L = point(578m, -100m); U = point(578m, 1500m)}; g2C63 = glyphid(1221) {L = point(578m, -100m); U = point(578m, 1500m)}; g01A4 = glyphid(1222) {L = point(610m, -100m); U = point(610m, 1500m)}; g20B1 = glyphid(1223); g_peseta = glyphid(1224); g__thorn = glyphid(1225) {L = point(585m, -100m); U = point(585m, 1500m)}; g01F7 = glyphid(1226) {L = point(591m, -100m); U = point(591m, 1500m)}; g1D513 = glyphid(1227); g0424 = glyphid(1228) {L = point(838m, -100m); U = point(838m, 1500m)}; g1D2A = glyphid(1229) {L = point(673m, -100m); U = point(673m, 1100m)}; g02A0 = glyphid(1230) {L = point(712m, -500m); U = point(712m, 1540m)}; g024B = glyphid(1231) {L = point(706m, -500m); U = point(706m, 1100m)}; g01AA = glyphid(1232) {L = point(646m, -500m); U = point(646m, 1540m)}; g0239 = glyphid(1233) {L = point(861m, -500m); U = point(861m, 1100m)}; g024A = glyphid(1234) {L = point(876m, -500m); U = point(876m, 1500m)}; g1D63 = glyphid(1235) {L = point(274m, -525m); U = point(274m, 200m)}; g1DCA = glyphid(1236) {LM = point(-557m, -100m); L = point(-557m, -765m)}; g02B3 = glyphid(1237) {L = point(273m, 725m); U = point(273m, 1450m)}; g036C = glyphid(1238) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_racute = glyphid(1239) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g0211 = glyphid(1240) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g0213 = glyphid(1241) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g_rcaron = glyphid(1242) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g1E59 = glyphid(1243) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g1E5F = glyphid(1244) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1100m)}; g1E5B = glyphid(1245) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1100m)}; g1E5D = glyphid(1246) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1470m)}; g_rcommaaccent = glyphid(1247) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1100m)}; g1D89 = glyphid(1248) {L = point(413m, -500m); U = point(413m, 1100m)}; g024D = glyphid(1249) {L = point(290m, -100m); U = point(413m, 1100m)}; g1D72 = glyphid(1250) {L = point(290m, -100m); U = point(413m, 1100m)}; g027D = glyphid(1251) {L = point(413m, -500m); U = point(413m, 1100m)}; g027C = glyphid(1252) {L = point(290m, -500m); U = point(413m, 1100m)}; g0279 = glyphid(1253) {L = point(387m, -100m); U = point(387m, 1100m)}; g02B4 = glyphid(1254) {L = point(256m, 725m); U = point(256m, 1450m)}; g027B = glyphid(1255) {L = point(490m, -500m); U = point(490m, 1100m)}; g02B5 = glyphid(1256) {L = point(324m, 485m); U = point(324m, 1450m)}; gF269 = glyphid(1257) {L = point(490m, -500m); U = point(490m, 1540m)}; g027A = glyphid(1258) {L = point(387m, -100m); U = point(387m, 1540m)}; g027E = glyphid(1259) {L = point(290m, -100m); U = point(413m, 1100m)}; g1D73 = glyphid(1260) {L = point(314m, -100m); U = point(450m, 1100m)}; g0285 = glyphid(1261) {L = point(403m, -500m); U = point(403m, 1100m)}; g027F = glyphid(1262) {L = point(410m, -500m); U = point(294m, 1100m)}; g1D3F = glyphid(1263) {L = point(458m, 725m); U = point(458m, 1650m)}; g0280 = glyphid(1264) {L = point(555m, -100m); U = point(555m, 1100m)}; g__racute = glyphid(1265) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g0210 = glyphid(1266) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g0212 = glyphid(1267) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g__rcaron = glyphid(1268) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g1E58 = glyphid(1269) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g1E5E = glyphid(1270) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1500m)}; g1E5A = glyphid(1271) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1500m)}; g1E5C = glyphid(1272) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1870m)}; g__rcommaaccent = glyphid(1273) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1500m)}; g024C = glyphid(1274) {L = point(669m, -100m); U = point(669m, 1500m)}; g2C64 = glyphid(1275) {L = point(696m, -500m); U = point(696m, 1500m)}; g2C64_lCStyle = glyphid(1276) {L = point(493m, -500m); U = point(493m, 1500m)}; g01A6 = glyphid(1277) {L = point(685m, -100m); U = point(685m, 1500m)}; g20A8 = glyphid(1278); g211F = glyphid(1279); g1D1A = glyphid(1280) {L = point(516m, -100m); U = point(516m, 1100m)}; g0281 = glyphid(1281) {L = point(555m, -100m); U = point(555m, 1100m)}; g02B6 = glyphid(1282) {L = point(366m, 725m); U = point(366m, 1450m)}; g042F = glyphid(1283) {L = point(628m, -100m); U = point(628m, 1500m)}; g1D19 = glyphid(1284) {L = point(501m, -100m); U = point(501m, 1100m)}; g044F = glyphid(1285) {L = point(506m, -100m); U = point(506m, 1100m)}; g0455 = glyphid(1286) {L = point(418m, -100m); U = point(418m, 1100m)}; g02E2 = glyphid(1287) {L = point(269m, 725m); U = point(269m, 1450m)}; g_sacute = glyphid(1288) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g1E65 = glyphid(1289) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1900m)}; g_scircumflex = glyphid(1290) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g_scaron = glyphid(1291) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g1E67 = glyphid(1292) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1900m)}; g1E61 = glyphid(1293) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g1E63 = glyphid(1294) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1100m)}; g1E69 = glyphid(1295) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1500m)}; g_scommaaccent = glyphid(1296) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1100m)}; g_scedilla_comma_style = glyphid(1297) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1100m)}; g_scedilla = glyphid(1298) {L = point(407m, -500m); U = point(427m, 1100m)}; g0282 = glyphid(1299) {L = point(407m, -500m); U = point(407m, 1100m)}; g1DB3 = glyphid(1300) {L = point(269m, 485m); U = point(269m, 1450m)}; g1D8A = glyphid(1301) {L = point(407m, -500m); U = point(407m, 1100m)}; g1D74 = glyphid(1302) {L = point(416m, -100m); U = point(416m, 1100m)}; g023F = glyphid(1303) {L = point(442m, -500m); U = point(442m, 1100m)}; g01A8 = glyphid(1304) {L = point(409m, -100m); U = point(409m, 1100m)}; g0283 = glyphid(1305) {L = point(363m, -500m); U = point(363m, 1540m)}; g1DB4 = glyphid(1306) {L = point(166m, 485m); U = point(323m, 1799m)}; g1D98 = glyphid(1307) {L = point(365m, -845m); U = point(365m, 1540m)}; g1D8B = glyphid(1308) {L = point(436m, -500m); U = point(436m, 1540m)}; g0286 = glyphid(1309) {L = point(352m, -500m); U = point(352m, 1540m)}; g0405 = glyphid(1310) {L = point(538m, -100m); U = point(538m, 1500m)}; g__sacute = glyphid(1311) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g1E64 = glyphid(1312) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 2300m)}; g__scircumflex = glyphid(1313) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g__scaron = glyphid(1314) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g1E66 = glyphid(1315) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 2300m)}; g1E60 = glyphid(1316) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g1E62 = glyphid(1317) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1500m)}; g1E68 = glyphid(1318) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1900m)}; g__scommaaccent = glyphid(1319) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1500m)}; g__scedilla_comma_style = glyphid(1320) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1500m)}; g__scedilla = glyphid(1321) {L = point(543m, -500m); U = point(563m, 1500m)}; g01A7 = glyphid(1322) {L = point(535m, -100m); U = point(535m, 1500m)}; g20B4 = glyphid(1323); g1D57 = glyphid(1324) {L = point(245m, 725m); U = point(245m, 1700m)}; g036D = glyphid(1325) {U = point(-557m, 2000m); UM = point(-557m, 1100m)}; g1E97 = glyphid(1326) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1763m)}; g1E6B = glyphid(1327) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1763m)}; g1E71 = glyphid(1328) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g1E6F = glyphid(1329) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g1E6D = glyphid(1330) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g021B = glyphid(1331) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g0163_commaStyle = glyphid(1332) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g_tcaron = glyphid(1333) {H = point(368m, 0m); L = point(368m, -100m); U = point(358m, 1363m)}; g0163 = glyphid(1334) {R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g01AB = glyphid(1335) {L = point(358m, -500m); U = point(358m, 1363m)}; g1DB5 = glyphid(1336) {L = point(244m, 485m); U = point(244m, 1675m)}; g_tbar = glyphid(1337) {L = point(368m, -100m); U = point(368m, 1363m)}; g1D75 = glyphid(1338) {L = point(359m, -100m); U = point(359m, 1363m)}; g2C66 = glyphid(1339) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1363m)}; g01AD = glyphid(1340) {L = point(400m, -100m); U = point(400m, 1540m)}; g0288 = glyphid(1341) {R = point(696m, 1000m); L = point(239m, -500m); U = point(239m, 1363m)}; g0236 = glyphid(1342) {L = point(330m, -100m); U = point(330m, 1363m)}; g1D7A = glyphid(1343) {L = point(962m, -100m); U = point(962m, 1540m)}; g02A8 = glyphid(1344) {L = point(710m, -100m); U = point(781m, 1363m)}; g02A6 = glyphid(1345) {L = point(652m, -100m); U = point(686m, 1363m)}; g02A7 = glyphid(1346) {L = point(616m, -500m); U = point(597m, 1580m)}; g0287 = glyphid(1347) {L = point(326m, -500m); U = point(326m, 1100m)}; g0442 = glyphid(1348) {L = point(502m, -100m); U = point(502m, 1100m)}; g04AD = glyphid(1349) {L = point(502m, -430m); U = point(502m, 1100m)}; g050F = glyphid(1350) {L = point(638m, -100m); U = point(638m, 1100m)}; g04B5 = glyphid(1351) {L = point(658m, -100m); U = point(658m, 1100m)}; g0422 = glyphid(1352) {L = point(613m, -100m); U = point(613m, 1500m)}; g1D40 = glyphid(1353) {L = point(403m, 725m); U = point(403m, 1650m)}; g1D1B = glyphid(1354) {L = point(500m, -100m); U = point(500m, 1100m)}; g__tcaron = glyphid(1355) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1900m)}; g1E6A = glyphid(1356) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1900m)}; g1E70 = glyphid(1357) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g1E6E = glyphid(1358) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g1E6C = glyphid(1359) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g021A = glyphid(1360) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g0162_commaStyle = glyphid(1361) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g0162 = glyphid(1362) {L = point(613m, -500m); U = point(613m, 1500m)}; g__tbar = glyphid(1363) {L = point(613m, -100m); U = point(613m, 1500m)}; g20AE = glyphid(1364); g023E = glyphid(1365) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1500m)}; g01AC = glyphid(1366) {L = point(605m, -100m); U = point(605m, 1500m)}; g01AC_rtHook = glyphid(1367) {L = point(613m, -100m); U = point(613m, 1500m)}; g01AE = glyphid(1368) {L = point(613m, -500m); U = point(613m, 1500m)}; g04AC = glyphid(1369) {L = point(613m, -500m); U = point(613m, 1500m)}; g050E = glyphid(1370) {L = point(752m, -100m); U = point(752m, 1500m)}; g04B4 = glyphid(1371) {L = point(824m, -100m); U = point(824m, 1500m)}; g040B = glyphid(1372) {L = point(725m, -100m); U = point(725m, 1500m)}; g0402 = glyphid(1373) {L = point(714m, -100m); U = point(714m, 1500m)}; g1D64 = glyphid(1374) {L = point(383m, -525m); U = point(383m, 200m)}; g1D58 = glyphid(1375) {L = point(385m, 725m); U = point(385m, 1450m)}; g0367 = glyphid(1376) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_uhungarumlaut = glyphid(1377) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g0215 = glyphid(1378) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g0217 = glyphid(1379) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_ubreve = glyphid(1380) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g01D4 = glyphid(1381) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_utilde = glyphid(1382) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g1E79 = glyphid(1383) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g_umacron = glyphid(1384) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1470m)}; g1E7B = glyphid(1385) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1870m)}; g01D8 = glyphid(1386) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g01DC = glyphid(1387) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g01DA = glyphid(1388) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g01D6 = glyphid(1389) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1870m)}; g_uring = glyphid(1390) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1660m)}; g1EE7 = glyphid(1391) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g1E77 = glyphid(1392) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1E75 = glyphid(1393) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1E73 = glyphid(1394) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1EE5 = glyphid(1395) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g_uogonek = glyphid(1396) {L = point(576m, -400m); U = point(582m, 1100m)}; g_uogonek_retro_hook_style = glyphid(1397) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1D99 = glyphid(1398) {L = point(586m, -100m); U = point(586m, 1100m)}; g0289 = glyphid(1399) {H = point(582m, 0m); O = point(635m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1100m)}; g1DB6 = glyphid(1400) {L = point(385m, 725m); U = point(385m, 1450m)}; g_uhorn = glyphid(1401) {L = point(618m, -100m); U = point(618m, 1100m)}; g1EE9 = glyphid(1402) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EEB = glyphid(1403) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EEF = glyphid(1404) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EED = glyphid(1405) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EF1 = glyphid(1406) {L = point(618m, -500m); U = point(618m, 1100m)}; g1D6B = glyphid(1407) {L = point(894m, -100m); U = point(894m, 1100m)}; g1D1D = glyphid(1408) {L = point(569m, -100m); U = point(569m, 1100m)}; g1D59 = glyphid(1409) {L = point(375m, 725m); U = point(375m, 1450m)}; g1D1E = glyphid(1410) {L = point(775m, -100m); U = point(775m, 1100m)}; g028B = glyphid(1411) {H = point(541m, 0m); O = point(596m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g1DB9 = glyphid(1412) {L = point(357m, 725m); U = point(357m, 1450m)}; g028A = glyphid(1413) {H = point(560m, 0m); O = point(614m, 0m); R = point(1120m, 1000m); L = point(560m, -100m); U = point(560m, 1100m)}; g1DB7 = glyphid(1414) {L = point(368m, 725m); U = point(368m, 1450m)}; g1D7F = glyphid(1415) {L = point(560m, -100m); U = point(560m, 1100m)}; gF259 = glyphid(1416) {L = point(374m, -100m); U = point(374m, 1405m)}; g1D41 = glyphid(1417) {L = point(481m, 725m); U = point(481m, 1650m)}; g1D1C = glyphid(1418) {L = point(575m, -100m); U = point(575m, 1100m)}; g1DB8 = glyphid(1419) {L = point(379m, 725m); U = point(379m, 1450m)}; g__uhungarumlaut = glyphid(1420) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g0214 = glyphid(1421) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g0216 = glyphid(1422) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ubreve = glyphid(1423) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g01D3 = glyphid(1424) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__utilde = glyphid(1425) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g1E78 = glyphid(1426) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g__umacron = glyphid(1427) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1870m)}; g1E7A = glyphid(1428) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2270m)}; g01D7 = glyphid(1429) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g01DB = glyphid(1430) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g01D9 = glyphid(1431) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g01D5 = glyphid(1432) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2270m)}; g__uring = glyphid(1433) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2060m)}; g1EE6 = glyphid(1434) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g1E76 = glyphid(1435) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g1E74 = glyphid(1436) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g1E72 = glyphid(1437) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g1EE4 = glyphid(1438) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g__uogonek = glyphid(1439) {H = point(733m, 0m); R = point(1458m, 1000m); L = point(758m, -400m); U = point(750m, 1500m)}; g__uogonek_retro_hook_style = glyphid(1440) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g0244 = glyphid(1441) {L = point(750m, -100m); U = point(750m, 1500m)}; g1D7E = glyphid(1442) {L = point(575m, -100m); U = point(575m, 1100m)}; gF1CD = glyphid(1443) {L = point(384m, 725m); U = point(384m, 1450m)}; g__uhorn = glyphid(1444) {L = point(750m, -100m); U = point(750m, 1500m)}; g1EE8 = glyphid(1445) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EEA = glyphid(1446) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EEE = glyphid(1447) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EEC = glyphid(1448) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EF0 = glyphid(1449) {L = point(750m, -500m); U = point(750m, 1500m)}; g01B2 = glyphid(1450) {L = point(712m, -100m); U = point(712m, 1500m)}; g01B1 = glyphid(1451) {L = point(699m, -100m); U = point(699m, 1500m)}; g_v_slant_italic = glyphid(1452) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g2174 = glyphid(1453) {U = point(541m, 1500m)}; g1D65 = glyphid(1454) {L = point(357m, -525m); U = point(357m, 200m)}; g1D5B = glyphid(1455) {L = point(351m, 725m); U = point(351m, 1450m)}; g036E = glyphid(1456) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E7D = glyphid(1457) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1500m)}; g1E7F = glyphid(1458) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -500m); U = point(541m, 1100m)}; g1D8C = glyphid(1459) {L = point(541m, -500m); U = point(541m, 1100m)}; gF25F = glyphid(1460) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g028B_straightLft = glyphid(1461) {H = point(497m, 0m); O = point(549m, 0m); L = point(497m, -100m); U = point(497m, 1100m)}; g2C74 = glyphid(1462) {H = point(487m, 0m); O = point(542m, 0m); L = point(487m, -100m); U = point(487m, 1100m)}; g2175 = glyphid(1463) {U = point(845m, 1500m)}; g2176 = glyphid(1464) {U = point(1152m, 1500m)}; g2177 = glyphid(1465) {U = point(1463m, 1500m)}; g028C = glyphid(1466) {H = point(541m, 0m); O = point(594m, 0m); R = point(1083m, 1000m); L = point(541m, -100m); U = point(541m, 1100m)}; g1DBA = glyphid(1467) {L = point(357m, 725m); U = point(357m, 1450m)}; g0264_lrgBowl = glyphid(1468) {R = point(1083m, 1000m); L = point(541m, -100m); U = point(541m, 1100m)}; g0264 = glyphid(1469) {R = point(1178m, 1000m); L = point(588m, -100m); U = point(588m, 1100m)}; gF1B5 = glyphid(1470) {L = point(382m, 725m); U = point(382m, 1450m)}; g0264_gammaStyle = glyphid(1471) {R = point(1122m, 1000m); L = point(600m, -100m); U = point(600m, 1100m)}; g0263 = glyphid(1472) {L = point(630m, -500m); U = point(630m, 1100m)}; g02E0 = glyphid(1473) {L = point(386m, 485m); U = point(386m, 1450m)}; g_gamma = glyphid(1474) {L = point(499m, -500m); U = point(499m, 1100m)}; g1D67 = glyphid(1475) {L = point(329m, -765m); U = point(329m, 200m)}; g1D5E = glyphid(1476) {L = point(329m, 485m); U = point(329m, 1450m)}; g2164 = glyphid(1477) {U = point(681m, 1500m)}; g1D20 = glyphid(1478) {L = point(559m, -100m); U = point(559m, 1100m)}; g1E7C = glyphid(1479) {H = point(705m, 0m); O = point(727m, 0m); L = point(705m, -100m); U = point(705m, 1900m)}; g1E7E = glyphid(1480) {H = point(705m, 0m); O = point(727m, 0m); L = point(705m, -500m); U = point(705m, 1500m)}; g2123 = glyphid(1481); g2165 = glyphid(1482) {U = point(1011m, 1500m)}; g2166 = glyphid(1483) {U = point(1349m, 1500m)}; g2167 = glyphid(1484) {U = point(1678m, 1500m)}; g0245 = glyphid(1485) {L = point(681m, -100m); U = point(681m, 1500m)}; g1D27 = glyphid(1486) {L = point(595m, -100m); U = point(595m, 1100m)}; g0194 = glyphid(1487) {L = point(730m, -100m); U = point(730m, 1500m)}; g02B7 = glyphid(1488) {L = point(526m, 725m); U = point(526m, 1450m)}; g_wacute = glyphid(1489) {L = point(801m, -100m); U = point(830m, 1500m)}; g_wgrave = glyphid(1490) {L = point(801m, -100m); U = point(830m, 1500m)}; g_wcircumflex = glyphid(1491) {L = point(801m, -100m); U = point(830m, 1500m)}; g_wdieresis = glyphid(1492) {L = point(801m, -100m); U = point(830m, 1500m)}; g1E87 = glyphid(1493) {L = point(801m, -100m); U = point(830m, 1500m)}; g1E98 = glyphid(1494) {L = point(801m, -100m); U = point(830m, 1660m)}; g1E89 = glyphid(1495) {L = point(801m, -500m); U = point(830m, 1100m)}; gF21A = glyphid(1496) {L = point(801m, -100m); U = point(801m, 1100m)}; g02AC = glyphid(1497) {L = point(525m, -100m); U = point(525m, 1540m)}; g028D = glyphid(1498) {L = point(801m, -100m); U = point(801m, 1100m)}; g0277 = glyphid(1499) {R = point(1366m, 1000m); L = point(682m, -100m); U = point(682m, 1100m)}; g1D42 = glyphid(1500) {L = point(624m, 725m); U = point(624m, 1650m)}; g1D21 = glyphid(1501) {L = point(776m, -100m); U = point(776m, 1100m)}; g__wacute = glyphid(1502) {L = point(973m, -100m); U = point(983m, 1900m)}; g__wgrave = glyphid(1503) {L = point(973m, -100m); U = point(983m, 1900m)}; g__wcircumflex = glyphid(1504) {L = point(973m, -100m); U = point(983m, 1900m)}; g__wdieresis = glyphid(1505) {L = point(973m, -100m); U = point(983m, 1900m)}; g1E86 = glyphid(1506) {L = point(973m, -100m); U = point(983m, 1900m)}; g1E88 = glyphid(1507) {L = point(973m, -500m); U = point(983m, 1500m)}; gF21B = glyphid(1508) {L = point(953m, -100m); U = point(953m, 1500m)}; g20A9 = glyphid(1509); g0445 = glyphid(1510) {L = point(522m, -100m); U = point(522m, 1100m)}; g2179 = glyphid(1511) {U = point(522m, 1500m)}; g2093 = glyphid(1512) {L = point(344m, -525m); U = point(344m, 200m)}; g02E3 = glyphid(1513) {L = point(339m, 725m); U = point(339m, 1450m)}; g036F = glyphid(1514) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E8D = glyphid(1515) {H = point(785m, 0m); L = point(522m, -100m); U = point(522m, 1500m)}; g1E8B = glyphid(1516) {H = point(785m, 0m); L = point(522m, -100m); U = point(522m, 1500m)}; g1D8D = glyphid(1517) {L = point(522m, -500m); U = point(522m, 1100m)}; g04FF = glyphid(1518) {L = point(522m, -100m); U = point(522m, 1100m)}; g04FD = glyphid(1519) {L = point(517m, -500m); U = point(517m, 1100m)}; g04B3 = glyphid(1520) {L = point(522m, -100m); U = point(522m, 1100m)}; g217A = glyphid(1521) {U = point(818m, 1500m)}; g217B = glyphid(1522) {U = point(1125m, 1500m)}; g_chi = glyphid(1523) {L = point(660m, -500m); U = point(660m, 1100m)}; g1D6A = glyphid(1524) {L = point(434m, -525m); U = point(434m, 450m)}; g1D61 = glyphid(1525) {L = point(434m, 485m); U = point(434m, 1450m)}; g0425 = glyphid(1526) {L = point(649m, -100m); U = point(649m, 1500m)}; g2169 = glyphid(1527) {U = point(649m, 1500m)}; g1E8C = glyphid(1528) {L = point(649m, -100m); U = point(649m, 1900m)}; g1E8A = glyphid(1529) {L = point(649m, -100m); U = point(649m, 1900m)}; g04FE = glyphid(1530) {L = point(649m, -100m); U = point(649m, 1500m)}; g04FC = glyphid(1531) {L = point(640m, -500m); U = point(640m, 1500m)}; g04B2 = glyphid(1532) {L = point(649m, -100m); U = point(649m, 1500m)}; g216A = glyphid(1533) {U = point(979m, 1500m)}; g216B = glyphid(1534) {U = point(1318m, 1500m)}; g0443 = glyphid(1535) {L = point(542m, -500m); U = point(561m, 1100m)}; g02B8 = glyphid(1536) {R = point(705m, 1000m); L = point(357m, 725m); U = point(357m, 1450m)}; g_yacute = glyphid(1537) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g04F3 = glyphid(1538) {L = point(542m, -500m); U = point(561m, 1500m)}; g_ygrave = glyphid(1539) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g_ycircumflex = glyphid(1540) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g045E = glyphid(1541) {L = point(542m, -500m); U = point(561m, 1500m)}; g1EF9 = glyphid(1542) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g0233 = glyphid(1543) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1470m)}; g04EF = glyphid(1544) {L = point(542m, -500m); U = point(561m, 1470m)}; g04F1 = glyphid(1545) {L = point(542m, -500m); U = point(561m, 1500m)}; g1E8F = glyphid(1546) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g1E99 = glyphid(1547) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1660m)}; g1EF7 = glyphid(1548) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g1EF5 = glyphid(1549) {R = point(1085m, 1000m); L = point(542m, -900m); U = point(561m, 1100m)}; g024F = glyphid(1550) {L = point(542m, -500m); U = point(581m, 1100m)}; g01B4 = glyphid(1551) {L = point(542m, -500m); U = point(581m, 1100m)}; g04AF = glyphid(1552) {L = point(579m, -500m); U = point(579m, 1100m)}; g04B1 = glyphid(1553) {L = point(579m, -500m); U = point(579m, 1100m)}; g028E = glyphid(1554) {L = point(542m, -100m); U = point(542m, 1540m)}; gF1CE = glyphid(1555) {L = point(357m, 725m); U = point(357m, 1700m)}; gF267 = glyphid(1556) {L = point(542m, -100m); U = point(542m, 1540m)}; g_lambda = glyphid(1557) {L = point(661m, -100m); U = point(661m, 1540m)}; g019B = glyphid(1558) {L = point(661m, -100m); U = point(661m, 1540m)}; g0447 = glyphid(1559) {L = point(540m, -100m); U = point(540m, 1100m)}; g04F5 = glyphid(1560) {L = point(540m, -100m); U = point(540m, 1500m)}; g04B9 = glyphid(1561) {L = point(570m, -100m); U = point(570m, 1100m)}; g04B7 = glyphid(1562) {L = point(540m, -100m); U = point(540m, 1100m)}; g04CC = glyphid(1563) {L = point(540m, -500m); U = point(540m, 1100m)}; g04AE = glyphid(1564) {L = point(641m, -100m); U = point(641m, 1500m)}; g028F = glyphid(1565) {R = point(1053m, 1000m); L = point(526m, -100m); U = point(526m, 1100m)}; gF1B4 = glyphid(1566) {L = point(336m, 725m); U = point(336m, 1450m)}; g__yacute = glyphid(1567) {L = point(641m, -100m); U = point(641m, 1900m)}; g__ygrave = glyphid(1568) {L = point(641m, -100m); U = point(641m, 1900m)}; g__ycircumflex = glyphid(1569) {L = point(641m, -100m); U = point(641m, 1900m)}; g1EF8 = glyphid(1570) {L = point(641m, -100m); U = point(641m, 1900m)}; g0232 = glyphid(1571) {L = point(641m, -100m); U = point(641m, 1870m)}; g1E8E = glyphid(1572) {L = point(641m, -100m); U = point(641m, 1900m)}; g1EF6 = glyphid(1573) {L = point(641m, -100m); U = point(641m, 1900m)}; g1EF4 = glyphid(1574) {L = point(641m, -500m); U = point(641m, 1500m)}; g024E = glyphid(1575) {L = point(641m, -100m); U = point(641m, 1500m)}; g04B0 = glyphid(1576) {L = point(641m, -100m); U = point(641m, 1500m)}; g01B3 = glyphid(1577) {L = point(680m, -100m); U = point(680m, 1500m)}; g01B3_rtHook = glyphid(1578) {L = point(641m, -100m); U = point(641m, 1500m)}; g0423 = glyphid(1579) {L = point(712m, -100m); U = point(760m, 1500m)}; g04F2 = glyphid(1580) {L = point(712m, -100m); U = point(760m, 1900m)}; g040E = glyphid(1581) {L = point(712m, -100m); U = point(760m, 1935m)}; g04EE = glyphid(1582) {L = point(712m, -100m); U = point(760m, 1870m)}; g04F0 = glyphid(1583) {L = point(712m, -100m); U = point(760m, 1900m)}; g0427 = glyphid(1584) {L = point(673m, -100m); U = point(673m, 1500m)}; g04F4 = glyphid(1585) {L = point(673m, -100m); U = point(673m, 1900m)}; g04B8 = glyphid(1586) {L = point(674m, -100m); U = point(674m, 1500m)}; g04B6 = glyphid(1587) {L = point(673m, -100m); U = point(673m, 1500m)}; g04CB = glyphid(1588) {L = point(673m, -500m); U = point(673m, 1500m)}; g_z_slant_italic = glyphid(1589) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1100m)}; g1DBB = glyphid(1590) {L = point(297m, 725m); U = point(297m, 1450m)}; g_zacute = glyphid(1591) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g1E91 = glyphid(1592) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g_zcaron = glyphid(1593) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g_zdotaccent = glyphid(1594) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g1E95 = glyphid(1595) {H = point(483m, 0m); L = point(483m, -500m); U = point(483m, 1100m)}; g1E93 = glyphid(1596) {H = point(483m, 0m); L = point(483m, -500m); U = point(483m, 1100m)}; g0290 = glyphid(1597) {L = point(483m, -500m); U = point(483m, 1100m)}; g1DBC = glyphid(1598) {L = point(315m, 485m); U = point(315m, 1450m)}; g1D8E = glyphid(1599) {L = point(483m, -500m); U = point(483m, 1100m)}; g01B6 = glyphid(1600) {L = point(483m, -100m); U = point(483m, 1100m)}; g1D76 = glyphid(1601) {L = point(483m, -100m); U = point(483m, 1100m)}; g0291 = glyphid(1602) {L = point(483m, -500m); U = point(483m, 1100m)}; g1DBD = glyphid(1603) {L = point(326m, 485m); U = point(326m, 1457m)}; g0225 = glyphid(1604) {L = point(485m, -100m); U = point(485m, 1100m)}; g2C6C = glyphid(1605) {L = point(483m, -100m); U = point(483m, 1100m)}; g0240 = glyphid(1606) {L = point(502m, -500m); U = point(502m, 1100m)}; g1D22 = glyphid(1607) {L = point(486m, -100m); U = point(486m, 1100m)}; g__zacute = glyphid(1608) {L = point(610m, -100m); U = point(610m, 1900m)}; g1E90 = glyphid(1609) {L = point(610m, -100m); U = point(610m, 1900m)}; g__zcaron = glyphid(1610) {L = point(610m, -100m); U = point(610m, 1900m)}; g__zdotaccent = glyphid(1611) {L = point(610m, -100m); U = point(610m, 1900m)}; g1E94 = glyphid(1612) {L = point(610m, -500m); U = point(610m, 1500m)}; g1E92 = glyphid(1613) {L = point(610m, -500m); U = point(610m, 1500m)}; gF234 = glyphid(1614) {L = point(610m, -500m); U = point(610m, 1500m)}; g01B5 = glyphid(1615) {L = point(610m, -100m); U = point(610m, 1500m)}; g0224 = glyphid(1616) {L = point(610m, -100m); U = point(610m, 1500m)}; g2C6B = glyphid(1617) {L = point(610m, -100m); U = point(610m, 1500m)}; g01A9 = glyphid(1618) {L = point(607m, -100m); U = point(607m, 1500m)}; g01B7_revSigmaStyle = glyphid(1619) {L = point(599m, -100m); U = point(599m, 1500m)}; g04E0_revSigmaStyle = glyphid(1620) {L = point(599m, -100m); U = point(599m, 1500m)}; g0292 = glyphid(1621) {L = point(521m, -500m); U = point(521m, 1100m)}; g04E1 = glyphid(1622) {L = point(521m, -500m); U = point(521m, 1100m)}; g1DBE = glyphid(1623) {L = point(343m, 485m); U = point(343m, 1457m)}; g01EF = glyphid(1624) {L = point(521m, -500m); U = point(521m, 1500m)}; g1D9A = glyphid(1625) {L = point(577m, -845m); U = point(521m, 1100m)}; gF235 = glyphid(1626) {L = point(533m, -500m); U = point(533m, 1100m)}; g0293 = glyphid(1627) {L = point(521m, -500m); U = point(521m, 1100m)}; g0293_lrgBowl = glyphid(1628) {L = point(571m, -500m); U = point(571m, 1100m)}; g01BA = glyphid(1629) {L = point(497m, -500m); U = point(497m, 1100m)}; g01B9 = glyphid(1630) {L = point(544m, -500m); U = point(544m, 1100m)}; gF245 = glyphid(1631); g021D = glyphid(1632) {L = point(434m, -500m); U = point(434m, 1100m)}; g01B7 = glyphid(1633) {L = point(607m, -500m); U = point(607m, 1500m)}; g04E0 = glyphid(1634) {L = point(607m, -500m); U = point(607m, 1500m)}; g1D23 = glyphid(1635) {L = point(494m, -350m); U = point(494m, 1100m)}; g01EE = glyphid(1636) {L = point(607m, -500m); U = point(607m, 1900m)}; g01B8 = glyphid(1637) {L = point(630m, -500m); U = point(630m, 1500m)}; g021C = glyphid(1638) {L = point(540m, -220m); U = point(540m, 1500m)}; g0294 = glyphid(1639) {R = point(954m, 1000m); L = point(477m, -100m); U = point(477m, 1540m)}; g02C0 = glyphid(1640) {L = point(310m, 725m); U = point(310m, 1700m)}; g0242 = glyphid(1641) {L = point(396m, -100m); U = point(396m, 1100m)}; g0241 = glyphid(1642) {L = point(493m, -35m); U = point(493m, 1435m)}; g02A1 = glyphid(1643) {L = point(477m, -100m); U = point(477m, 1540m)}; g0295 = glyphid(1644) {L = point(477m, -100m); U = point(477m, 1540m)}; g02C1 = glyphid(1645) {L = point(311m, 725m); U = point(311m, 1700m)}; g02E4 = glyphid(1646) {L = point(310m, 725m); U = point(310m, 1700m)}; g02A2 = glyphid(1647) {L = point(477m, -100m); U = point(477m, 1540m)}; g0296 = glyphid(1648) {L = point(477m, -100m); U = point(477m, 1540m)}; g01BE = glyphid(1649) {L = point(477m, -100m); U = point(477m, 1540m)}; g1D24 = glyphid(1650) {L = point(467m, -100m); U = point(467m, 1540m)}; g1D25 = glyphid(1651) {L = point(655m, -100m); U = point(655m, 1100m)}; g1D5C = glyphid(1652) {L = point(449m, 725m); U = point(449m, 1450m)}; g20AA = glyphid(1653); g2080 = glyphid(1654); g2070 = glyphid(1655) {L = point(374m, 725m); U = point(374m, 1650m)}; g2081 = glyphid(1656); g_onesuperior = glyphid(1657) {L = point(347m, 725m); U = point(347m, 1650m)}; g2082 = glyphid(1658); g_twosuperior = glyphid(1659) {L = point(374m, 725m); U = point(374m, 1650m)}; g01BB = glyphid(1660) {L = point(602m, -100m); U = point(602m, 1500m)}; g2083 = glyphid(1661); g_threesuperior = glyphid(1662) {L = point(374m, 725m); U = point(374m, 1650m)}; g2084 = glyphid(1663); g2074 = glyphid(1664) {L = point(374m, 725m); U = point(374m, 1650m)}; gF246 = glyphid(1665); g2085 = glyphid(1666); g2075 = glyphid(1667) {L = point(373m, 725m); U = point(373m, 1650m)}; g01BC = glyphid(1668) {L = point(551m, -100m); U = point(551m, 1500m)}; g01BD = glyphid(1669) {L = point(435m, -100m); U = point(435m, 1100m)}; g2086 = glyphid(1670); g2076 = glyphid(1671) {L = point(374m, 725m); U = point(374m, 1650m)}; g2087 = glyphid(1672); g2077 = glyphid(1673) {L = point(374m, 725m); U = point(374m, 1650m)}; g2088 = glyphid(1674); g2078 = glyphid(1675) {L = point(373m, 725m); U = point(373m, 1650m)}; g2089 = glyphid(1676); g2079 = glyphid(1677) {L = point(374m, 725m); U = point(374m, 1650m)}; g215F = glyphid(1678); g_onehalf = glyphid(1679); g_onethird = glyphid(1680); g_onequarter = glyphid(1681); g2155 = glyphid(1682); g2159 = glyphid(1683); g_oneeighth = glyphid(1684); g_twothirds = glyphid(1685); g2156 = glyphid(1686); g_threequarters = glyphid(1687); g2157 = glyphid(1688); g_threeeighths = glyphid(1689); g2158 = glyphid(1690); g215A = glyphid(1691); g_fiveeighths = glyphid(1692); g_seveneighths = glyphid(1693); g01C3 = glyphid(1694) {L = point(236m, -100m); U = point(236m, 1540m)}; gF19E = glyphid(1695); gF19F = glyphid(1696); g_exclamdbl = glyphid(1697); gF26A = glyphid(1698); gF26A_lrg = glyphid(1699); gF21D = glyphid(1700); gF21D_lrg = glyphid(1701); g_onedotenleader = glyphid(1702); g_twodotenleader = glyphid(1703); g02F8 = glyphid(1704); gF1E9 = glyphid(1705); gF1E9_wide = glyphid(1706); g02BB = glyphid(1707); g0312 = glyphid(1708) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g_quotereversed = glyphid(1709); g02BD = glyphid(1710); g0314 = glyphid(1711) {U = point(-557m, 1780m); UM = point(-557m, 1100m)}; g02BC = glyphid(1712); g02BC_lrg = glyphid(1713); g201F = glyphid(1714); g02EE = glyphid(1715); g02D0 = glyphid(1716); g02D1 = glyphid(1717); g_anoteleia = glyphid(1718); g2027 = glyphid(1719); g2219 = glyphid(1720); g208D = glyphid(1721); g207D = glyphid(1722); g208E = glyphid(1723); g207E = glyphid(1724); g27E6 = glyphid(1725); g27E7 = glyphid(1726); g2308 = glyphid(1727); g2309 = glyphid(1728); g230A = glyphid(1729); g230B = glyphid(1730); g01C0 = glyphid(1731) {L = point(226m, -500m); U = point(226m, 1540m)}; g01C1 = glyphid(1732) {L = point(356m, -500m); U = point(356m, 1540m)}; g01C2 = glyphid(1733) {L = point(426m, -500m); U = point(426m, 1540m)}; g2016 = glyphid(1734); g_brokenbar = glyphid(1735); g02CC = glyphid(1736); g02C8 = glyphid(1737); g0337 = glyphid(1738); g0338 = glyphid(1739); g2010 = glyphid(1740) {U = point(327m, 1100m)}; g2011 = glyphid(1741) {U = point(327m, 1100m)}; g00AD = glyphid(1742) {U = point(327m, 1100m)}; g_figuredash = glyphid(1743); g2015 = glyphid(1744); g_minus = glyphid(1745); g02D7 = glyphid(1746) {U = point(327m, 1100m)}; g208B = glyphid(1747); g207B = glyphid(1748); g0320 = glyphid(1749) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0335 = glyphid(1750); g0336 = glyphid(1751); g02CF = glyphid(1752); g0317 = glyphid(1753) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02CA = glyphid(1754) {U = point(179m, 1500m)}; g_acutecomb = glyphid(1755) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g_minute = glyphid(1756); g02B9 = glyphid(1757); g_second = glyphid(1758); g02BA = glyphid(1759); g02F6 = glyphid(1760); g030B = glyphid(1761) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g2034 = glyphid(1762); g2057 = glyphid(1763); g02CE = glyphid(1764) {L = point(237m, -500m)}; g0316 = glyphid(1765) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02F4 = glyphid(1766) {U = point(237m, 1100m)}; g02CB = glyphid(1767) {U = point(294m, 1500m)}; g_gravecomb = glyphid(1768) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g2035 = glyphid(1769); g2036 = glyphid(1770); g02F5 = glyphid(1771) {U = point(437m, 1100m)}; g030F = glyphid(1772) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g2037 = glyphid(1773); g2038 = glyphid(1774); g032D = glyphid(1775) {LM = point(-557m, -100m); L = point(-557m, -500m)}; gF1E7 = glyphid(1776); g0302 = glyphid(1777) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0302_acutecomb_vN = glyphid(1778) {UM = point(480m, 1100m)}; g0302_gravecomb_vN = glyphid(1779) {UM = point(480m, 1100m)}; g0302_tildecomb_vN = glyphid(1780) {UM = point(355m, 1100m); U = point(355m, 1825m)}; g0302_hookabovecomb_vN = glyphid(1781) {UM = point(438m, 1100m)}; g032F = glyphid(1782) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0311 = glyphid(1783) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0311_uU = glyphid(1784) {UM = point(-425m, 1100m); U = point(305m, 1500m)}; g0311_uL = glyphid(1785) {UM = point(-352m, 1100m); U = point(305m, 1500m)}; g0311_lL = glyphid(1786) {UM = point(-140m, 1100m); U = point(305m, 1500m)}; g0352 = glyphid(1787) {U = point(-557m, 1616m); UM = point(-557m, 1100m)}; g2040 = glyphid(1788); g0361 = glyphid(1789) {U = point(0m, 1905m)}; gFE20 = glyphid(1790); gFE21 = glyphid(1791); g032E = glyphid(1792) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0306 = glyphid(1793) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0306_acutecomb_vN = glyphid(1794) {UM = point(305m, 1100m); U = point(424m, 1790m)}; g0306_gravecomb_vN = glyphid(1795) {UM = point(305m, 1100m); U = point(189m, 1790m)}; g0306_tildecomb_vN = glyphid(1796) {UM = point(355m, 1100m); U = point(355m, 1825m)}; g0306_hookabovecomb_vN = glyphid(1797) {UM = point(305m, 1100m); U = point(305m, 1717m)}; g0310 = glyphid(1798) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0306_cyShortMrkAlt = glyphid(1799) {UM = point(289m, 1100m); U = point(289m, 1500m)}; g203F = glyphid(1800); g035C = glyphid(1801) {L = point(0m, -700m)}; g035D = glyphid(1802) {U = point(0m, 1905m)}; g02EC = glyphid(1803) {L = point(335m, -100m)}; g032C = glyphid(1804) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g030C = glyphid(1805) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g1DC7 = glyphid(1806) {UM = point(-557m, 1100m)}; g1DC4 = glyphid(1807) {UM = point(-557m, 1100m)}; g1DC5 = glyphid(1808) {UM = point(-557m, 1100m)}; g1DC6 = glyphid(1809) {UM = point(-557m, 1100m)}; g1DC9 = glyphid(1810) {UM = point(-557m, 1100m)}; g1DC8 = glyphid(1811) {UM = point(-557m, 1100m)}; g02F7 = glyphid(1812); g0330 = glyphid(1813) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0334 = glyphid(1814); g_tildecomb = glyphid(1815) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g034A = glyphid(1816) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g_similar = glyphid(1817); g2053 = glyphid(1818); g034C = glyphid(1819) {U = point(-557m, 1680m); UM = point(-557m, 1100m)}; gF17B = glyphid(1820) {LM = point(-557m, -100m); L = point(-557m, -650m)}; g034B = glyphid(1821) {U = point(-557m, 1980m); UM = point(-557m, 1100m)}; g0360 = glyphid(1822) {U = point(0m, 1905m)}; gFE22 = glyphid(1823); gFE23 = glyphid(1824); g033E = glyphid(1825) {U = point(-557m, 1980m); UM = point(-557m, 1100m)}; g035B = glyphid(1826) {U = point(-557m, 1540m); UM = point(-557m, 1100m)}; g0359 = glyphid(1827) {LM = point(-557m, -100m); L = point(-557m, -600m)}; g0353 = glyphid(1828) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02DF = glyphid(1829); g033D = glyphid(1830) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g_multiply = glyphid(1831); g032B = glyphid(1832) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g033C = glyphid(1833) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02CD = glyphid(1834); g0331 = glyphid(1835) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0331_short = glyphid(1836) {LM = point(243m, -100m); L = point(243m, -500m)}; g02C9 = glyphid(1837) {U = point(343m, 1470m)}; g0304 = glyphid(1838) {U = point(-557m, 1470m); UM = point(-557m, 1100m)}; g0304_short = glyphid(1839) {UM = point(243m, 1100m); U = point(243m, 1470m)}; g035F = glyphid(1840) {L = point(0m, -700m)}; g035E = glyphid(1841) {U = point(0m, 1905m)}; g0332 = glyphid(1842) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0305 = glyphid(1843) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g_underscoredbl = glyphid(1844); g0333 = glyphid(1845) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0347 = glyphid(1846) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g033F = glyphid(1847) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g02ED = glyphid(1848); gF1EA = glyphid(1849); g208C = glyphid(1850); g207C = glyphid(1851); g225F = glyphid(1852); g_equivalence = glyphid(1853); g0324 = glyphid(1854) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0308 = glyphid(1855) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0308_uU = glyphid(1856) {UM = point(-337m, 1100m); U = point(323m, 1500m)}; g0308_lL = glyphid(1857) {UM = point(18m, 1100m); U = point(323m, 1500m)}; g0308_uL = glyphid(1858) {UM = point(21m, 1100m); U = point(323m, 1500m)}; g0308_sup = glyphid(1859) {UM = point(210m, 1450m); U = point(210m, 1650m)}; gF17A = glyphid(1860) {U = point(0m, 1500m)}; g_dotbelowcomb = glyphid(1861) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0307 = glyphid(1862) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0358 = glyphid(1863) {RM = point(0m, 1200m); U = point(114m, 1700m)}; g0326 = glyphid(1864) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0313 = glyphid(1865) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0315 = glyphid(1866) {RM = point(0m, 1200m)}; g031B = glyphid(1867) {RM = point(0m, 1200m)}; g02F3 = glyphid(1868); g0325 = glyphid(1869) {LM = point(-557m, -100m); L = point(-557m, -657m)}; g030A = glyphid(1870) {U = point(-557m, 1660m); UM = point(-557m, 1100m)}; g035A = glyphid(1871) {LM = point(-557m, -100m); L = point(-557m, -642m)}; g031C = glyphid(1872) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D3 = glyphid(1873); g02BF = glyphid(1874) {L = point(310m, -100m); U = point(310m, 1540m)}; g0351 = glyphid(1875) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g0339 = glyphid(1876) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D2 = glyphid(1877); g02BE = glyphid(1878) {L = point(270m, -100m); U = point(270m, 1540m)}; g0357 = glyphid(1879) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g_hookabovecomb = glyphid(1880) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0329 = glyphid(1881) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g030D = glyphid(1882) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0348 = glyphid(1883) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g030E = glyphid(1884) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g208A = glyphid(1885); g031F = glyphid(1886) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D6 = glyphid(1887); g207A = glyphid(1888); g031E = glyphid(1889) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D5 = glyphid(1890); g031D = glyphid(1891) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D4 = glyphid(1892); g0318 = glyphid(1893) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0319 = glyphid(1894) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02EB = glyphid(1895); g02EA = glyphid(1896); g0349 = glyphid(1897) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g031A = glyphid(1898); g02CB_chinantecTn = glyphid(1899); g02C8_chinantecTn = glyphid(1900); g02CA_chinantecTn = glyphid(1901); gA717 = glyphid(1902); gA718 = glyphid(1903); gA719 = glyphid(1904); gA71A = glyphid(1905); g02C9_chinantecTn = glyphid(1906); gA720 = glyphid(1907); gA721 = glyphid(1908); g02FE = glyphid(1909); g02FD = glyphid(1910); g02AD = glyphid(1911) {L = point(507m, -100m); U = point(507m, 1540m)}; g0327 = glyphid(1912) {HM = point(-557m, -100m); L = point(-557m, -600m)}; g0328 = glyphid(1913) {OM = point(-557m, -100m); L = point(-615m, -500m)}; g0328_retroHookStyle = glyphid(1914) {LM = point(190m, -100m); L = point(190m, -500m)}; g_ogonek_retro_hook_style = glyphid(1915); g1DC2 = glyphid(1916) {LM = point(-557m, -100m); L = point(-557m, -815m)}; g032A = glyphid(1917) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0346 = glyphid(1918) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g033A = glyphid(1919) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g2423 = glyphid(1920); g033B = glyphid(1921) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02DE = glyphid(1922) {RM = point(0m, 1000m)}; g02DE02DE = glyphid(1923) {RM = point(535m, 1000m)}; g02E9_rstaff = glyphid(1924) {TML = point(-20m, 57m)}; g02E8_rstaff = glyphid(1925) {TML = point(-20m, 399m)}; g02E7_rstaff = glyphid(1926) {TML = point(-20m, 741m)}; g02E6_rstaff = glyphid(1927) {TML = point(-20m, 1081m)}; g02E5_rstaff = glyphid(1928) {TML = point(-20m, 1423m)}; gA716_lstaff = glyphid(1929) {TL = point(192m, 57m)}; gA715_lstaff = glyphid(1930) {TL = point(192m, 399m)}; gA714_lstaff = glyphid(1931) {TL = point(192m, 741m)}; gA713_lstaff = glyphid(1932) {TL = point(192m, 1081m)}; gA712_lstaff = glyphid(1933) {TL = point(192m, 1423m)}; g02E9_1 = glyphid(1934) {TML = point(147m, 57m); TL = point(596m, 57m)}; g02E9_2 = glyphid(1935) {TML = point(147m, 57m); TL = point(596m, 399m)}; g02E9_3 = glyphid(1936) {TML = point(147m, 57m); TL = point(596m, 741m)}; g02E9_4 = glyphid(1937) {TML = point(147m, 57m); TL = point(596m, 1081m)}; g02E9_5 = glyphid(1938) {TML = point(147m, 57m); TL = point(596m, 1423m)}; g02E8_1 = glyphid(1939) {TML = point(147m, 399m); TL = point(596m, 57m)}; g02E8_2 = glyphid(1940) {TML = point(147m, 399m); TL = point(596m, 399m)}; g02E8_3 = glyphid(1941) {TML = point(147m, 399m); TL = point(596m, 741m)}; g02E8_4 = glyphid(1942) {TML = point(147m, 399m); TL = point(596m, 1081m)}; g02E8_5 = glyphid(1943) {TML = point(147m, 399m); TL = point(596m, 1423m)}; g02E7_1 = glyphid(1944) {TML = point(147m, 741m); TL = point(596m, 57m)}; g02E7_2 = glyphid(1945) {TML = point(147m, 741m); TL = point(596m, 399m)}; g02E7_3 = glyphid(1946) {TML = point(147m, 741m); TL = point(596m, 741m)}; g02E7_4 = glyphid(1947) {TML = point(147m, 741m); TL = point(596m, 1081m)}; g02E7_5 = glyphid(1948) {TML = point(147m, 741m); TL = point(596m, 1423m)}; g02E6_1 = glyphid(1949) {TML = point(147m, 1081m); TL = point(596m, 57m)}; g02E6_2 = glyphid(1950) {TML = point(147m, 1081m); TL = point(596m, 399m)}; g02E6_3 = glyphid(1951) {TML = point(147m, 1081m); TL = point(596m, 741m)}; g02E6_4 = glyphid(1952) {TML = point(147m, 1081m); TL = point(596m, 1081m)}; g02E6_5 = glyphid(1953) {TML = point(147m, 1081m); TL = point(596m, 1423m)}; g02E5_1 = glyphid(1954) {TML = point(147m, 1423m); TL = point(596m, 57m)}; g02E5_2 = glyphid(1955) {TML = point(147m, 1423m); TL = point(596m, 399m)}; g02E5_3 = glyphid(1956) {TML = point(147m, 1423m); TL = point(596m, 741m)}; g02E5_4 = glyphid(1957) {TML = point(147m, 1423m); TL = point(596m, 1081m)}; g02E5_5 = glyphid(1958) {TML = point(147m, 1423m); TL = point(596m, 1423m)}; gA716_1 = glyphid(1959) {TML = point(0m, 57m); TL = point(449m, 57m)}; gA715_1 = glyphid(1960) {TML = point(0m, 57m); TL = point(449m, 399m)}; gA714_1 = glyphid(1961) {TML = point(0m, 57m); TL = point(449m, 741m)}; gA713_1 = glyphid(1962) {TML = point(0m, 57m); TL = point(449m, 1081m)}; gA712_1 = glyphid(1963) {TML = point(0m, 57m); TL = point(449m, 1423m)}; gA716_2 = glyphid(1964) {TML = point(0m, 399m); TL = point(449m, 57m)}; gA715_2 = glyphid(1965) {TML = point(0m, 399m); TL = point(449m, 399m)}; gA714_2 = glyphid(1966) {TML = point(0m, 399m); TL = point(449m, 741m)}; gA713_2 = glyphid(1967) {TML = point(0m, 399m); TL = point(449m, 1081m)}; gA712_2 = glyphid(1968) {TML = point(0m, 399m); TL = point(449m, 1423m)}; gA716_3 = glyphid(1969) {TML = point(0m, 741m); TL = point(449m, 57m)}; gA715_3 = glyphid(1970) {TML = point(0m, 741m); TL = point(449m, 399m)}; gA714_3 = glyphid(1971) {TML = point(0m, 741m); TL = point(449m, 741m)}; gA713_3 = glyphid(1972) {TML = point(0m, 741m); TL = point(449m, 1081m)}; gA712_3 = glyphid(1973) {TML = point(0m, 741m); TL = point(449m, 1423m)}; gA716_4 = glyphid(1974) {TML = point(0m, 1081m); TL = point(449m, 57m)}; gA715_4 = glyphid(1975) {TML = point(0m, 1081m); TL = point(449m, 399m)}; gA714_4 = glyphid(1976) {TML = point(0m, 1081m); TL = point(449m, 741m)}; gA713_4 = glyphid(1977) {TML = point(0m, 1081m); TL = point(449m, 1081m)}; gA712_4 = glyphid(1978) {TML = point(0m, 1081m); TL = point(449m, 1423m)}; gA716_5 = glyphid(1979) {TML = point(0m, 1423m); TL = point(449m, 57m)}; gA715_5 = glyphid(1980) {TML = point(0m, 1423m); TL = point(449m, 399m)}; gA714_5 = glyphid(1981) {TML = point(0m, 1423m); TL = point(449m, 741m)}; gA713_5 = glyphid(1982) {TML = point(0m, 1423m); TL = point(449m, 1081m)}; gA712_5 = glyphid(1983) {TML = point(0m, 1423m); TL = point(449m, 1423m)}; g02E9_rstaffno = glyphid(1984) {TML = point(-20m, 57m)}; g02E8_rstaffno = glyphid(1985) {TML = point(-20m, 399m)}; g02E7_rstaffno = glyphid(1986) {TML = point(-20m, 741m)}; g02E6_rstaffno = glyphid(1987) {TML = point(-20m, 1081m)}; g02E5_rstaffno = glyphid(1988) {TML = point(-20m, 1423m)}; gA716_lstaffno = glyphid(1989) {TL = point(192m, 57m)}; gA715_lstaffno = glyphid(1990) {TL = point(192m, 399m)}; gA714_lstaffno = glyphid(1991) {TL = point(192m, 741m)}; gA713_lstaffno = glyphid(1992) {TL = point(192m, 1081m)}; gA712_lstaffno = glyphid(1993) {TL = point(192m, 1423m)}; g02E9_no = glyphid(1994) {TML = point(147m, 57m)}; g02E8_no = glyphid(1995) {TML = point(147m, 399m)}; g02E7_no = glyphid(1996) {TML = point(147m, 741m)}; g02E6_no = glyphid(1997) {TML = point(147m, 1081m)}; g02E5_no = glyphid(1998) {TML = point(147m, 1423m)}; gA716_no = glyphid(1999) {TL = point(621m, 57m)}; gA715_no = glyphid(2000) {TL = point(621m, 399m)}; gA714_no = glyphid(2001) {TL = point(621m, 741m)}; gA713_no = glyphid(2002) {TL = point(621m, 1081m)}; gA712_no = glyphid(2003) {TL = point(621m, 1423m)}; gA708 = glyphid(2004); gA709 = glyphid(2005); gA70A = glyphid(2006); gA70B = glyphid(2007); gA70C = glyphid(2008); g02E502E9 = glyphid(2009); g02E502E8 = glyphid(2010); g02E502E7 = glyphid(2011); g02E502E6 = glyphid(2012); g02E5 = glyphid(2013); g02E602E9 = glyphid(2014); g02E602E8 = glyphid(2015); g02E602E7 = glyphid(2016); g02E6 = glyphid(2017); g02E602E5 = glyphid(2018); g02E702E9 = glyphid(2019); g02E702E8 = glyphid(2020); g02E7 = glyphid(2021); g02E702E6 = glyphid(2022); g02E702E5 = glyphid(2023); g02E802E9 = glyphid(2024); g02E8 = glyphid(2025); g02E802E7 = glyphid(2026); g02E802E6 = glyphid(2027); g02E802E5 = glyphid(2028); g02E9 = glyphid(2029); g02E902E8 = glyphid(2030); g02E902E7 = glyphid(2031); g02E902E6 = glyphid(2032); g02E902E5 = glyphid(2033); g02E502E902E9 = glyphid(2034); g02E502E902E8 = glyphid(2035); g02E502E902E7 = glyphid(2036); g02E502E902E6 = glyphid(2037); g02E502E902E5 = glyphid(2038); g02E602E902E9 = glyphid(2039); g02E602E902E8 = glyphid(2040); g02E602E902E7 = glyphid(2041); g02E602E902E6 = glyphid(2042); g02E602E902E5 = glyphid(2043); g02E702E902E9 = glyphid(2044); g02E702E902E8 = glyphid(2045); g02E702E902E7 = glyphid(2046); g02E702E902E6 = glyphid(2047); g02E702E902E5 = glyphid(2048); g02E802E902E9 = glyphid(2049); g02E802E902E8 = glyphid(2050); g02E802E902E7 = glyphid(2051); g02E802E902E6 = glyphid(2052); g02E802E902E5 = glyphid(2053); g02E902E9 = glyphid(2054); g02E902E902E8 = glyphid(2055); g02E902E902E7 = glyphid(2056); g02E902E902E6 = glyphid(2057); g02E902E902E5 = glyphid(2058); g02E502E802E9 = glyphid(2059); g02E502E802E8 = glyphid(2060); g02E502E802E7 = glyphid(2061); g02E502E802E6 = glyphid(2062); g02E502E802E5 = glyphid(2063); g02E602E802E9 = glyphid(2064); g02E602E802E8 = glyphid(2065); g02E602E802E7 = glyphid(2066); g02E602E802E6 = glyphid(2067); g02E602E802E5 = glyphid(2068); g02E702E802E9 = glyphid(2069); g02E702E802E8 = glyphid(2070); g02E702E802E7 = glyphid(2071); g02E702E802E6 = glyphid(2072); g02E702E802E5 = glyphid(2073); g02E802E802E9 = glyphid(2074); g02E802E8 = glyphid(2075); g02E802E802E7 = glyphid(2076); g02E802E802E6 = glyphid(2077); g02E802E802E5 = glyphid(2078); g02E902E802E9 = glyphid(2079); g02E902E802E8 = glyphid(2080); g02E902E802E7 = glyphid(2081); g02E902E802E6 = glyphid(2082); g02E902E802E5 = glyphid(2083); g02E502E702E9 = glyphid(2084); g02E502E702E8 = glyphid(2085); g02E502E702E7 = glyphid(2086); g02E502E702E6 = glyphid(2087); g02E502E702E5 = glyphid(2088); g02E602E702E9 = glyphid(2089); g02E602E702E8 = glyphid(2090); g02E602E702E7 = glyphid(2091); g02E602E702E6 = glyphid(2092); g02E602E702E5 = glyphid(2093); g02E702E702E9 = glyphid(2094); g02E702E702E8 = glyphid(2095); g02E702E7 = glyphid(2096); g02E702E702E6 = glyphid(2097); g02E702E702E5 = glyphid(2098); g02E802E702E9 = glyphid(2099); g02E802E702E8 = glyphid(2100); g02E802E702E7 = glyphid(2101); g02E802E702E6 = glyphid(2102); g02E802E702E5 = glyphid(2103); g02E902E702E9 = glyphid(2104); g02E902E702E8 = glyphid(2105); g02E902E702E7 = glyphid(2106); g02E902E702E6 = glyphid(2107); g02E902E702E5 = glyphid(2108); g02E502E602E9 = glyphid(2109); g02E502E602E8 = glyphid(2110); g02E502E602E7 = glyphid(2111); g02E502E602E6 = glyphid(2112); g02E502E602E5 = glyphid(2113); g02E602E602E9 = glyphid(2114); g02E602E602E8 = glyphid(2115); g02E602E602E7 = glyphid(2116); g02E602E6 = glyphid(2117); g02E602E602E5 = glyphid(2118); g02E702E602E9 = glyphid(2119); g02E702E602E8 = glyphid(2120); g02E702E602E7 = glyphid(2121); g02E702E602E6 = glyphid(2122); g02E702E602E5 = glyphid(2123); g02E802E602E9 = glyphid(2124); g02E802E602E8 = glyphid(2125); g02E802E602E7 = glyphid(2126); g02E802E602E6 = glyphid(2127); g02E802E602E5 = glyphid(2128); g02E902E602E9 = glyphid(2129); g02E902E602E8 = glyphid(2130); g02E902E602E7 = glyphid(2131); g02E902E602E6 = glyphid(2132); g02E902E602E5 = glyphid(2133); g02E502E502E9 = glyphid(2134); g02E502E502E8 = glyphid(2135); g02E502E502E7 = glyphid(2136); g02E502E502E6 = glyphid(2137); g02E502E5 = glyphid(2138); g02E602E502E9 = glyphid(2139); g02E602E502E8 = glyphid(2140); g02E602E502E7 = glyphid(2141); g02E602E502E6 = glyphid(2142); g02E602E502E5 = glyphid(2143); g02E702E502E9 = glyphid(2144); g02E702E502E8 = glyphid(2145); g02E702E502E7 = glyphid(2146); g02E702E502E6 = glyphid(2147); g02E702E502E5 = glyphid(2148); g02E802E502E9 = glyphid(2149); g02E802E502E8 = glyphid(2150); g02E802E502E7 = glyphid(2151); g02E802E502E6 = glyphid(2152); g02E802E502E5 = glyphid(2153); g02E902E502E9 = glyphid(2154); g02E902E502E8 = glyphid(2155); g02E902E502E7 = glyphid(2156); g02E902E502E6 = glyphid(2157); g02E902E502E5 = glyphid(2158); g02E902E902E9 = glyphid(2159); g02E802E802E8 = glyphid(2160); g02E702E702E7 = glyphid(2161); g02E602E602E6 = glyphid(2162); g02E502E502E5 = glyphid(2163); gA70D = glyphid(2164); gA70E = glyphid(2165); gA70F = glyphid(2166); gA710 = glyphid(2167); gA711 = glyphid(2168); gA712A716 = glyphid(2169); gA712A715 = glyphid(2170); gA712A714 = glyphid(2171); gA712A713 = glyphid(2172); gA712 = glyphid(2173); gA713A716 = glyphid(2174); gA713A715 = glyphid(2175); gA713A714 = glyphid(2176); gA713 = glyphid(2177); gA713A712 = glyphid(2178); gA714A716 = glyphid(2179); gA714A715 = glyphid(2180); gA714 = glyphid(2181); gA714A713 = glyphid(2182); gA714A712 = glyphid(2183); gA715A716 = glyphid(2184); gA715 = glyphid(2185); gA715A714 = glyphid(2186); gA715A713 = glyphid(2187); gA715A712 = glyphid(2188); gA716 = glyphid(2189); gA716A715 = glyphid(2190); gA716A714 = glyphid(2191); gA716A713 = glyphid(2192); gA716A712 = glyphid(2193); gA712A716A716 = glyphid(2194); gA712A716A715 = glyphid(2195); gA712A716A714 = glyphid(2196); gA712A716A713 = glyphid(2197); gA712A716A712 = glyphid(2198); gA713A716A716 = glyphid(2199); gA713A716A715 = glyphid(2200); gA713A716A714 = glyphid(2201); gA713A716A713 = glyphid(2202); gA713A716A712 = glyphid(2203); gA714A716A716 = glyphid(2204); gA714A716A715 = glyphid(2205); gA714A716A714 = glyphid(2206); gA714A716A713 = glyphid(2207); gA714A716A712 = glyphid(2208); gA715A716A716 = glyphid(2209); gA715A716A715 = glyphid(2210); gA715A716A714 = glyphid(2211); gA715A716A713 = glyphid(2212); gA715A716A712 = glyphid(2213); gA716A716 = glyphid(2214); gA716A716A715 = glyphid(2215); gA716A716A714 = glyphid(2216); gA716A716A713 = glyphid(2217); gA716A716A712 = glyphid(2218); gA712A715A716 = glyphid(2219); gA712A715A715 = glyphid(2220); gA712A715A714 = glyphid(2221); gA712A715A713 = glyphid(2222); gA712A715A712 = glyphid(2223); gA713A715A716 = glyphid(2224); gA713A715A715 = glyphid(2225); gA713A715A714 = glyphid(2226); gA713A715A713 = glyphid(2227); gA713A715A712 = glyphid(2228); gA714A715A716 = glyphid(2229); gA714A715A715 = glyphid(2230); gA714A715A714 = glyphid(2231); gA714A715A713 = glyphid(2232); gA714A715A712 = glyphid(2233); gA715A715A716 = glyphid(2234); gA715A715 = glyphid(2235); gA715A715A714 = glyphid(2236); gA715A715A713 = glyphid(2237); gA715A715A712 = glyphid(2238); gA716A715A716 = glyphid(2239); gA716A715A715 = glyphid(2240); gA716A715A714 = glyphid(2241); gA716A715A713 = glyphid(2242); gA716A715A712 = glyphid(2243); gA712A714A716 = glyphid(2244); gA712A714A715 = glyphid(2245); gA712A714A714 = glyphid(2246); gA712A714A713 = glyphid(2247); gA712A714A712 = glyphid(2248); gA713A714A716 = glyphid(2249); gA713A714A715 = glyphid(2250); gA713A714A714 = glyphid(2251); gA713A714A713 = glyphid(2252); gA713A714A712 = glyphid(2253); gA714A714A716 = glyphid(2254); gA714A714A715 = glyphid(2255); gA714A714 = glyphid(2256); gA714A714A713 = glyphid(2257); gA714A714A712 = glyphid(2258); gA715A714A716 = glyphid(2259); gA715A714A715 = glyphid(2260); gA715A714A714 = glyphid(2261); gA715A714A713 = glyphid(2262); gA715A714A712 = glyphid(2263); gA716A714A716 = glyphid(2264); gA716A714A715 = glyphid(2265); gA716A714A714 = glyphid(2266); gA716A714A713 = glyphid(2267); gA716A714A712 = glyphid(2268); gA712A713A716 = glyphid(2269); gA712A713A715 = glyphid(2270); gA712A713A714 = glyphid(2271); gA712A713A713 = glyphid(2272); gA712A713A712 = glyphid(2273); gA713A713A716 = glyphid(2274); gA713A713A715 = glyphid(2275); gA713A713A714 = glyphid(2276); gA713A713 = glyphid(2277); gA713A713A712 = glyphid(2278); gA714A713A716 = glyphid(2279); gA714A713A715 = glyphid(2280); gA714A713A714 = glyphid(2281); gA714A713A713 = glyphid(2282); gA714A713A712 = glyphid(2283); gA715A713A716 = glyphid(2284); gA715A713A715 = glyphid(2285); gA715A713A714 = glyphid(2286); gA715A713A713 = glyphid(2287); gA715A713A712 = glyphid(2288); gA716A713A716 = glyphid(2289); gA716A713A715 = glyphid(2290); gA716A713A714 = glyphid(2291); gA716A713A713 = glyphid(2292); gA716A713A712 = glyphid(2293); gA712A712A716 = glyphid(2294); gA712A712A715 = glyphid(2295); gA712A712A714 = glyphid(2296); gA712A712A713 = glyphid(2297); gA712A712 = glyphid(2298); gA713A712A716 = glyphid(2299); gA713A712A715 = glyphid(2300); gA713A712A714 = glyphid(2301); gA713A712A713 = glyphid(2302); gA713A712A712 = glyphid(2303); gA714A712A716 = glyphid(2304); gA714A712A715 = glyphid(2305); gA714A712A714 = glyphid(2306); gA714A712A713 = glyphid(2307); gA714A712A712 = glyphid(2308); gA715A712A716 = glyphid(2309); gA715A712A715 = glyphid(2310); gA715A712A714 = glyphid(2311); gA715A712A713 = glyphid(2312); gA715A712A712 = glyphid(2313); gA716A712A716 = glyphid(2314); gA716A712A715 = glyphid(2315); gA716A712A714 = glyphid(2316); gA716A712A713 = glyphid(2317); gA716A712A712 = glyphid(2318); gA716A716A716 = glyphid(2319); gA715A715A715 = glyphid(2320); gA714A714A714 = glyphid(2321); gA713A713A713 = glyphid(2322); gA712A712A712 = glyphid(2323); gF1F1 = glyphid(2324); gF1F1F1F2 = glyphid(2325); gF1F1F1F3 = glyphid(2326); gF1F1F1F4 = glyphid(2327); gF1F1F1F5 = glyphid(2328); gF1F1F1F6 = glyphid(2329); gF1F1F1F7 = glyphid(2330); gF1F1F1F8 = glyphid(2331); gF1F1F1F9 = glyphid(2332); gF1F2F1F1 = glyphid(2333); gF1F2 = glyphid(2334); gF1F2F1F3 = glyphid(2335); gF1F2F1F4 = glyphid(2336); gF1F2F1F5 = glyphid(2337); gF1F2F1F6 = glyphid(2338); gF1F2F1F7 = glyphid(2339); gF1F2F1F8 = glyphid(2340); gF1F2F1F9 = glyphid(2341); gF1F3F1F1 = glyphid(2342); gF1F3F1F2 = glyphid(2343); gF1F3 = glyphid(2344); gF1F3F1F4 = glyphid(2345); gF1F3F1F5 = glyphid(2346); gF1F3F1F6 = glyphid(2347); gF1F3F1F7 = glyphid(2348); gF1F3F1F8 = glyphid(2349); gF1F3F1F9 = glyphid(2350); gF1F4F1F1 = glyphid(2351); gF1F4F1F2 = glyphid(2352); gF1F4F1F3 = glyphid(2353); gF1F4 = glyphid(2354); gF1F4F1F5 = glyphid(2355); gF1F4F1F6 = glyphid(2356); gF1F4F1F7 = glyphid(2357); gF1F4F1F8 = glyphid(2358); gF1F4F1F9 = glyphid(2359); gF1F5F1F1 = glyphid(2360); gF1F5F1F2 = glyphid(2361); gF1F5F1F3 = glyphid(2362); gF1F5F1F4 = glyphid(2363); gF1F5 = glyphid(2364); gF1F5F1F6 = glyphid(2365); gF1F5F1F7 = glyphid(2366); gF1F5F1F8 = glyphid(2367); gF1F5F1F9 = glyphid(2368); gF1F6F1F1 = glyphid(2369); gF1F6F1F2 = glyphid(2370); gF1F6F1F3 = glyphid(2371); gF1F6F1F4 = glyphid(2372); gF1F6F1F5 = glyphid(2373); gF1F6 = glyphid(2374); gF1F6F1F7 = glyphid(2375); gF1F6F1F8 = glyphid(2376); gF1F6F1F9 = glyphid(2377); gF1F7F1F1 = glyphid(2378); gF1F7F1F2 = glyphid(2379); gF1F7F1F3 = glyphid(2380); gF1F7F1F4 = glyphid(2381); gF1F7F1F5 = glyphid(2382); gF1F7F1F6 = glyphid(2383); gF1F7 = glyphid(2384); gF1F7F1F8 = glyphid(2385); gF1F7F1F9 = glyphid(2386); gF1F8F1F1 = glyphid(2387); gF1F8F1F2 = glyphid(2388); gF1F8F1F3 = glyphid(2389); gF1F8F1F4 = glyphid(2390); gF1F8F1F5 = glyphid(2391); gF1F8F1F6 = glyphid(2392); gF1F8F1F7 = glyphid(2393); gF1F8 = glyphid(2394); gF1F8F1F9 = glyphid(2395); gF1F9F1F1 = glyphid(2396); gF1F9F1F2 = glyphid(2397); gF1F9F1F3 = glyphid(2398); gF1F9F1F4 = glyphid(2399); gF1F9F1F5 = glyphid(2400); gF1F9F1F6 = glyphid(2401); gF1F9F1F7 = glyphid(2402); gF1F9F1F8 = glyphid(2403); gF1F9 = glyphid(2404); g_space_lines = glyphid(2405); gF1F1_lines = glyphid(2406); gF1F1F1F2_lines = glyphid(2407); gF1F1F1F3_lines = glyphid(2408); gF1F1F1F4_lines = glyphid(2409); gF1F1F1F5_lines = glyphid(2410); gF1F1F1F6_lines = glyphid(2411); gF1F1F1F7_lines = glyphid(2412); gF1F1F1F8_lines = glyphid(2413); gF1F1F1F9_lines = glyphid(2414); gF1F2F1F1_lines = glyphid(2415); gF1F2_lines = glyphid(2416); gF1F2F1F3_lines = glyphid(2417); gF1F2F1F4_lines = glyphid(2418); gF1F2F1F5_lines = glyphid(2419); gF1F2F1F6_lines = glyphid(2420); gF1F2F1F7_lines = glyphid(2421); gF1F2F1F8_lines = glyphid(2422); gF1F2F1F9_lines = glyphid(2423); gF1F3F1F1_lines = glyphid(2424); gF1F3F1F2_lines = glyphid(2425); gF1F3_lines = glyphid(2426); gF1F3F1F4_lines = glyphid(2427); gF1F3F1F5_lines = glyphid(2428); gF1F3F1F6_lines = glyphid(2429); gF1F3F1F7_lines = glyphid(2430); gF1F3F1F8_lines = glyphid(2431); gF1F3F1F9_lines = glyphid(2432); gF1F4F1F1_lines = glyphid(2433); gF1F4F1F2_lines = glyphid(2434); gF1F4F1F3_lines = glyphid(2435); gF1F4_lines = glyphid(2436); gF1F4F1F5_lines = glyphid(2437); gF1F4F1F6_lines = glyphid(2438); gF1F4F1F7_lines = glyphid(2439); gF1F4F1F8_lines = glyphid(2440); gF1F4F1F9_lines = glyphid(2441); gF1F5F1F1_lines = glyphid(2442); gF1F5F1F2_lines = glyphid(2443); gF1F5F1F3_lines = glyphid(2444); gF1F5F1F4_lines = glyphid(2445); gF1F5_lines = glyphid(2446); gF1F5F1F6_lines = glyphid(2447); gF1F5F1F7_lines = glyphid(2448); gF1F5F1F8_lines = glyphid(2449); gF1F5F1F9_lines = glyphid(2450); gF1F6F1F1_lines = glyphid(2451); gF1F6F1F2_lines = glyphid(2452); gF1F6F1F3_lines = glyphid(2453); gF1F6F1F4_lines = glyphid(2454); gF1F6F1F5_lines = glyphid(2455); gF1F6_lines = glyphid(2456); gF1F6F1F7_lines = glyphid(2457); gF1F6F1F8_lines = glyphid(2458); gF1F6F1F9_lines = glyphid(2459); gF1F7F1F1_lines = glyphid(2460); gF1F7F1F2_lines = glyphid(2461); gF1F7F1F3_lines = glyphid(2462); gF1F7F1F4_lines = glyphid(2463); gF1F7F1F5_lines = glyphid(2464); gF1F7F1F6_lines = glyphid(2465); gF1F7_lines = glyphid(2466); gF1F7F1F8_lines = glyphid(2467); gF1F7F1F9_lines = glyphid(2468); gF1F8F1F1_lines = glyphid(2469); gF1F8F1F2_lines = glyphid(2470); gF1F8F1F3_lines = glyphid(2471); gF1F8F1F4_lines = glyphid(2472); gF1F8F1F5_lines = glyphid(2473); gF1F8F1F6_lines = glyphid(2474); gF1F8F1F7_lines = glyphid(2475); gF1F8_lines = glyphid(2476); gF1F8F1F9_lines = glyphid(2477); gF1F9F1F1_lines = glyphid(2478); gF1F9F1F2_lines = glyphid(2479); gF1F9F1F3_lines = glyphid(2480); gF1F9F1F4_lines = glyphid(2481); gF1F9F1F5_lines = glyphid(2482); gF1F9F1F6_lines = glyphid(2483); gF1F9F1F7_lines = glyphid(2484); gF1F9F1F8_lines = glyphid(2485); gF1F9_lines = glyphid(2486); g274D = glyphid(2487); g2023 = glyphid(2488); g_arrowdown = glyphid(2489); gF19D = glyphid(2490); g_arrowup = glyphid(2491); gF19C = glyphid(2492); g034E = glyphid(2493) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g_arrowupdn = glyphid(2494); g_arrowupdnbse = glyphid(2495); g_arrowleft = glyphid(2496); g20EE = glyphid(2497) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g20ED = glyphid(2498) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02FF = glyphid(2499); g_arrowright = glyphid(2500); g20EF = glyphid(2501) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g20EC = glyphid(2502) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0362 = glyphid(2503) {L = point(27m, -1000m)}; g_arrowboth = glyphid(2504); g034D = glyphid(2505) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g219A = glyphid(2506); g219B = glyphid(2507); g_arrowdbldown = glyphid(2508); g_arrowdblup = glyphid(2509); g21D5 = glyphid(2510); g_arrowdblleft = glyphid(2511); g_arrowdblright = glyphid(2512); g_arrowdblboth = glyphid(2513); g2196 = glyphid(2514); g2198 = glyphid(2515); g2197 = glyphid(2516); g2199 = glyphid(2517); g2713 = glyphid(2518); g2213 = glyphid(2519); g02C5 = glyphid(2520); g02EF = glyphid(2521); g02C4 = glyphid(2522); g02F0 = glyphid(2523); g02C2 = glyphid(2524); g1DFE = glyphid(2525) {U = point(-557m, 1808m); UM = point(-557m, 1100m)}; g0354 = glyphid(2526) {LM = point(-557m, -100m); L = point(-546m, -765m)}; g02F1 = glyphid(2527); g02C3 = glyphid(2528); g0350 = glyphid(2529) {U = point(-557m, 1808m); UM = point(-557m, 1100m)}; g0355 = glyphid(2530) {LM = point(-557m, -100m); L = point(-546m, -750m)}; g02F2 = glyphid(2531); g0356 = glyphid(2532) {LM = point(-557m, -100m); L = point(-557m, -850m)}; g1DFF = glyphid(2533) {LM = point(-557m, -100m); L = point(-557m, -850m)}; gA702 = glyphid(2534); gA700 = glyphid(2535); gA704 = glyphid(2536); gA706 = glyphid(2537); gA703 = glyphid(2538); gA701 = glyphid(2539); gA705 = glyphid(2540); gA707 = glyphid(2541); g00AD_showInv = glyphid(2542) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g034F_showInv = glyphid(2543) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g2061_showInv = glyphid(2544) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g2063_showInv = glyphid(2545) {L11 = point(1200m, 526m); C12 = point(826m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); L33 = point(1750m, 526m); U23 = point(1200m, 1252m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L22 = point(1552m, 526m)}; g2062_showInv = glyphid(2546) {L11 = point(1200m, 526m); C12 = point(826m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); L33 = point(1750m, 526m); U23 = point(1200m, 1252m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L22 = point(1552m, 526m)}; g202A_showInv = glyphid(2547) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g200E_showInv = glyphid(2548) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202D_showInv = glyphid(2549) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202C_showInv = glyphid(2550) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202B_showInv = glyphid(2551) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g200F_showInv = glyphid(2552) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202E_showInv = glyphid(2553) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE00_showInv = glyphid(2554) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE01_showInv = glyphid(2555) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE02_showInv = glyphid(2556) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE03_showInv = glyphid(2557) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE04_showInv = glyphid(2558) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE05_showInv = glyphid(2559) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE06_showInv = glyphid(2560) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE07_showInv = glyphid(2561) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE08_showInv = glyphid(2562) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE09_showInv = glyphid(2563) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0A_showInv = glyphid(2564) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0B_showInv = glyphid(2565) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0C_showInv = glyphid(2566) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0D_showInv = glyphid(2567) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0E_showInv = glyphid(2568) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0F_showInv = glyphid(2569) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; g2060_showInv = glyphid(2570) {L11 = point(1200m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); L33 = point(1750m, 526m); U23 = point(1200m, 1252m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L22 = point(1552m, 526m)}; g200D_showInv = glyphid(2571) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFEFF_showInv = glyphid(2572) {L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); C23 = point(1200m, 900m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m)}; g200C_showInv = glyphid(2573) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; g200B_showInv = glyphid(2574) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; g034F = glyphid(2575) {LM = point(0m, 0m); L = point(0m, 0m); UM = point(0m, 0m); U = point(0m, 0m)}; g2061 = glyphid(2576); g2063 = glyphid(2577); g2062 = glyphid(2578); g202A = glyphid(2579); g200E = glyphid(2580); g202D = glyphid(2581); g202C = glyphid(2582); g202B = glyphid(2583); g200F = glyphid(2584); g202E = glyphid(2585); gFE00 = glyphid(2586); gFE01 = glyphid(2587); gFE02 = glyphid(2588); gFE03 = glyphid(2589); gFE04 = glyphid(2590); gFE05 = glyphid(2591); gFE06 = glyphid(2592); gFE07 = glyphid(2593); gFE08 = glyphid(2594); gFE09 = glyphid(2595); gFE0A = glyphid(2596); gFE0B = glyphid(2597); gFE0C = glyphid(2598); gFE0D = glyphid(2599); gFE0E = glyphid(2600); gFE0F = glyphid(2601); g2060 = glyphid(2602); g200D = glyphid(2603); gFEFF = glyphid(2604); g200C = glyphid(2605); g200B = glyphid(2606); g206D = glyphid(2607); g206B = glyphid(2608); g206C = glyphid(2609); g206A = glyphid(2610); gFFF9 = glyphid(2611); gFFFA = glyphid(2612); gFFFB = glyphid(2613); g2028 = glyphid(2614); g206E = glyphid(2615); g206F = glyphid(2616); gFFFC = glyphid(2617); g2029 = glyphid(2618); g2001 = glyphid(2619) {H = point(985m, 0m); O = point(1036m, 0m); R = point(1971m, 1000m); L = point(985m, -100m); U = point(985m, 1500m)}; g2003 = glyphid(2620) {H = point(1024m, 0m); O = point(1074m, 0m); R = point(2048m, 1000m); L = point(1024m, -100m); U = point(1024m, 1500m)}; g202F = glyphid(2621) {H = point(246m, 0m); O = point(297m, 0m); R = point(493m, 1000m); L = point(246m, -100m); U = point(246m, 1500m)}; g2008 = glyphid(2622) {H = point(286m, 0m); O = point(336m, 0m); R = point(573m, 1000m); L = point(286m, -100m); U = point(286m, 1500m)}; g2006 = glyphid(2623) {H = point(164m, 0m); O = point(214m, 0m); R = point(328m, 1000m); L = point(164m, -100m); U = point(164m, 1500m)}; g2004 = glyphid(2624) {H = point(328m, 0m); O = point(379m, 0m); R = point(657m, 1000m); L = point(328m, -100m); U = point(328m, 1500m)}; g2000 = glyphid(2625) {H = point(492m, 0m); O = point(543m, 0m); R = point(985m, 1000m); L = point(492m, -100m); U = point(492m, 1500m)}; g2002 = glyphid(2626) {H = point(512m, 0m); O = point(562m, 0m); R = point(1024m, 1000m); L = point(512m, -100m); U = point(512m, 1500m)}; g2005 = glyphid(2627) {H = point(246m, 0m); O = point(297m, 0m); R = point(493m, 1000m); L = point(246m, -100m); U = point(246m, 1500m)}; g2007 = glyphid(2628) {H = point(563m, 0m); O = point(613m, 0m); R = point(1126m, 1000m); L = point(563m, -100m); U = point(563m, 1500m)}; g2009 = glyphid(2629) {H = point(256m, 0m); O = point(306m, 0m); R = point(512m, 1000m); L = point(256m, -100m); U = point(256m, 1500m)}; g200A = glyphid(2630) {H = point(20m, 0m); O = point(71m, 0m); R = point(41m, 1000m); L = point(20m, -100m); U = point(20m, 1500m)}; gFFFD = glyphid(2631); gF130 = glyphid(2632); gF131 = glyphid(2633); gF132 = glyphid(2634); gF133 = glyphid(2635); g02F9 = glyphid(2636); g02FB = glyphid(2637); g02FA = glyphid(2638); g02FC = glyphid(2639); g__comb_inv_breve_u_c_ht = glyphid(2640); g__comb_breve_cy_short_mrk_alt_u_c_ht = glyphid(2641); g__lft_paren_sophia = glyphid(2642); g__rt_paren_sophia = glyphid(2643); g__comma_sophia = glyphid(2644); g__digit_zero_sophia = glyphid(2645); g__digit_one_sophia = glyphid(2646); g__digit_two_sophia = glyphid(2647); g__digit_three_sophia = glyphid(2648); g__digit_four_sophia = glyphid(2649); g__digit_five_sophia = glyphid(2650); g__digit_six_sophia = glyphid(2651); g__digit_seven_sophia = glyphid(2652); g__digit_eight_sophia = glyphid(2653); g__digit_nine_sophia = glyphid(2654); g__ltn_cap_c_sophia = glyphid(2655); g__ltn_cap_d_sophia = glyphid(2656); g__ltn_cap_e_sophia = glyphid(2657); g__ltn_cap_f_sophia = glyphid(2658); g__ltn_cap_g_sophia = glyphid(2659); g__ltn_cap_h_sophia = glyphid(2660); g__ltn_cap_j_sophia = glyphid(2661); g__ltn_cap_l_sophia = glyphid(2662); g__ltn_cap_m_sophia = glyphid(2663); g__ltn_cap_n_sophia = glyphid(2664); g__ltn_cap_o_sophia = glyphid(2665); g__ltn_cap_p_sophia = glyphid(2666); g__ltn_cap_r_sophia = glyphid(2667); g__ltn_cap_s_sophia = glyphid(2668); g__ltn_cap_v_sophia = glyphid(2669); g__ltn_cap_w_sophia = glyphid(2670); g__ltn_cap_x_sophia = glyphid(2671); g__ltn_cap_y_sophia = glyphid(2672); g__ltn_cap_z_sophia = glyphid(2673); g__box_dotted = glyphid(2674); /* Classes */ cTakesC11Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC12Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC13Dia = (g2063_showInv, g2062_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC22Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC23Dia = (g2063_showInv, g2062_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC33Dia = (g2063_showInv, g2062_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesHDia = (g_space, g__a, g__c, g__e, g__g, g__h, g__i, g__k, g__l, g__n, g__o, g__r, g__s, g__t, g__u, g__v, g_a, g_b, g_c, g_d, g_e, g_f, g_g, g_h, g_i, g_k, g_l, g_m, g_n, g_o, g_p, g_r, g_s, g_t, g_u, g_v, g_x, g_z, g__adieresis, g__aring, g__eacute, g__ntilde, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_ntilde, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_ae, g_oslash, g00A0, g__agrave, g__atilde, g__otilde, g_oe, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_a_2_story_slant_italic, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g01CE, g_amacron, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0251, g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g0252, g_ae_2_story_slant_italic, g04D5, g_aeacute, g01E3, g0200, g1EA4, g1EA4_vN, g1EA6, g1EA6_vN, g1EAA, g1EAA_vN, g1EA8, g1EA8_vN, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g01CD, g__amacron, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek, g__aogonek_retro_hook_style, g023A, g1E03, g1E07, g1E05, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g0254, g0254_topSerif, g2184, g__cacute, g__ccircumflex, g__ccaron, g__cdotaccent, g023B, g0501, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g_dcaron, g01F3, g01C6, g01F2, g01C5, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g_eogonek_retro_hook_style, g0259, g04D9, g04DB, g025A, g025B, g0511, g0204, g1EBE, g1EBE_vN, g1EC0, g1EC0_vN, g1EC4, g1EC4_vN, g1EC2, g1EC2_vN, g1EC6, g0206, g__ebreve, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g__eogonek, g__eogonek_retro_hook_style, g_f_slant_italic, g1E1F, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01F4, g__gcircumflex, g__gbreve, g__gcaron, g1E20, g__gdotaccent, g__gcommaaccent, g_hcircumflex, g021F, g1E27, g1E23, g1E2B, g1E96, g1E25, g04BB, g__hcircumflex, g021E, g1E26, g1E22, g1E2A, g1E24, g2C75, g_i_slant_italic, g0456, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g0268, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g0268_dotless, g_ij, g0269, g1D7C, g0406, g04C0, g04CF, g026A, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek, g__iogonek_retro_hook_style, g__i_j, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g1E30, g01E8, g1E34, g1E32, g__kcommaaccent, g_l_slant_italic, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g_ldot, g_lcaron, g01C9, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g__ldot, g__lcaron, g01C8, g01C7, g1E3F, g1E41, g1E43, g_nacute, g01F9, g_ncaron, g1E45, g1E4B, g1E49, g1E47, g_ncommaaccent, g_napostrophe, g01CC, g__nacute, g01F8, g__ncaron, g1E44, g1E4A, g1E48, g1E46, g__ncommaaccent, g01CB, g01CA, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g_oslashacute, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g1E55, g1E57, g_racute, g0211, g0213, g_rcaron, g1E59, g1E5F, g1E5B, g1E5D, g_rcommaaccent, g__racute, g0210, g0212, g__rcaron, g1E58, g1E5E, g1E5A, g1E5C, g__rcommaaccent, g_sacute, g1E65, g_scircumflex, g_scaron, g1E67, g1E61, g1E63, g1E69, g_scommaaccent, g_scedilla_comma_style, g__sacute, g1E64, g__scircumflex, g__scaron, g1E66, g1E60, g1E62, g1E68, g__scommaaccent, g__scedilla_comma_style, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g_tcaron, g2C66, g__tcaron, g1E6A, g1E70, g1E6E, g1E6C, g021A, g0162_commaStyle, g023E, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek_retro_hook_style, g0289, g028B, g028A, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g_v_slant_italic, g1E7D, g1E7F, gF25F, g028B_straightLft, g2C74, g028C, g1E7C, g1E7E, g1E8D, g1E8B, g_z_slant_italic, g_zacute, g1E91, g_zcaron, g_zdotaccent, g1E95, g1E93, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesLDia = (g_space, g_zero, g_one, g_two, g_three, g_four, g_five, g_six, g_seven, g_eight, g_nine, g__a, g__b, g__c, g__d, g__e, g__f, g__g, g__h, g__i, g__j, g__k, g__l, g__m, g__n, g__o, g__p, g__q, g__r, g__s, g__t, g__u, g__v, g__w, g__x, g__y, g__z, g_a, g_b, g_c, g_d, g_e, g_f, g_g, g_h, g_i, g_j, g_k, g_l, g_m, g_n, g_o, g_p, g_q, g_r, g_s, g_t, g_u, g_v, g_w, g_x, g_y, g_z, g__adieresis, g__aring, g__ccedilla, g__eacute, g__ntilde, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_ccedilla, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_ntilde, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_germandbls, g__a_e, g__oslash, g_summation, g_pi, g_ae, g_oslash, g_florin, g00A0, g__agrave, g__atilde, g__otilde, g__o_e, g_oe, g_ydieresis, g__ydieresis, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_cedilla, g_ogonek, g_a_2_story_slant_italic, g0430, g2090, g1D43, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g04D1, g01CE, g_amacron, g04D3, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g1D8F, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250, g0250_2StorySlantItalic, g1D44, g0251, g_a_sng_story, g1D45, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g1D90, g0252, g1D9B, g_ae_2_story_slant_italic, g04D5, gF1A1, g_aeacute, g01E3, g1D02, g1D46, g_alpha, gF247, gF248, g0410, g1D2C, g1D00, g0200, g1EA4, g1EA4_vN, g1EA6, g1EA6_vN, g1EAA, g1EAA_vN, g1EA8, g1EA8_vN, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g04D0, g01CD, g__amacron, g04D2, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek, g__aogonek_retro_hook_style, g023A, gF208, gF209, g04D4, g1D2D, g1D01, g__a_eacute, g01E2, g1D47, g1E03, g1E07, g1E05, g1D80, g0180_barBowl, g0180, g1D6C, g0253, g0185, g0183, g0431, g044C, g048D, g044A, g044B, g04F9, g0432, g0412, g1D2E, g0299, g1E02, g1E06, g1E04, g0243, g1D2F, g1D03, g0181, g0184, g0182, g0411, g042C, g048C, g042A, g042B, g04F8, g_beta, g1D66, g1D5D, g0441, g1D9C, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g1E09, g04AB, gF225, g0297, g0188, g0255, g1D9D, g0254, g0254_topSerif, g1D53, g1D53_topSerif, g1D97, g1D97_topSerif, g2184, g1D12, g0454, g044D, g04ED, g044D_mongolStyle, g0421, g1D04, g__cacute, g__ccircumflex, g__ccaron, g__cdotaccent, g1E08, g04AA, g023B, g0187, g0186, g0186_topSerif, g1D10, g1D10_topSerif, g0404, g042D, g04EC, g042D_mongolStyle, g0501, g1D48, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g_dcaron, g1D81, g_dcroat_bar_bowl, g_dcroat, g1D6D, g0257, g0256, g1D91, g0221, g018C, g0238, g01F3, g01C6, g02A3, g02A5, g02A4, g0503, g_delta, g1D5F, g_eth, g1D9E, g1D30, g1D05, g__dcaron, g1E0A, g1E12, g1E0E, g1E0C, g1E10, g__eth, g__dcroat, g0189, g1D06, gF20D, g018A, g018B, g01F2, g01C5, g01F1, g01C4, g0500, g0502, g0435, g2091, g1D49, g0450, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g04D7, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g0451, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek, g_eogonek_retro_hook_style, g1D92, g0247, g04BD, g04BF, g01DD, g0259, g04D9, g2094, g1D4A, g04DB, g1D95, g025A, g0258, gF1A3, g025B, g1D4B, g1D93, g025C, g1D9F, g1D94, g025D, g1D08, g1D4C, g029A, g025E, gF1A4, g0511, g0437, g04DF, g0499, g0507, g0505, g0415, g1D31, g1D07, g0400, g0204, g1EBE, g1EBE_vN, g1EC0, g1EC0_vN, g1EC4, g1EC4_vN, g1EC2, g1EC2_vN, g1EC6, g0206, g__ebreve, g04D6, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g0401, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g0228, g1E1C, g__eogonek, g__eogonek_retro_hook_style, g0246, g04BC, g04BE, g018E, g1D32, g018F, g04D8, g04DA, g0190, g0510, g0417, g04DE, g0498, g0506, g0504, g_f_slant_italic, g1DA0, g1E1F, g1D82, g1D6E, g02A9, g_longs, g1E9B, g0433, g0453, g0491, g04F7, g0493, g0493_slantItalic, gF327, gF327_slantItalic, g04FB, g04FB_slantItalic, g1E1E, g0191, g0413, g__gamma, g1D26, g0403, g0490, g04F6, g0492, gF326, g04FA, g1D4D, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01E5_barBowl, g01E5, g_g_sng_bowl, g0261, g1DA2, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g1D83, g01E5_barBowl_sngBowl, g0260, g1D77, g1D79, g050D, g1D33, g0262, g01F4, g__gcircumflex, g__gbreve, g__gcaron, g1E20, g__gdotaccent, g__gcommaaccent, g01E4, g0193, g029B, g050C, g02B0, g_hcircumflex, g021F, g1E27, g1E23, g1E2B, g1E96, g1E25, g1E29, g_hbar, g045B, gF1BC, g0452, g0266, g02B1, gF25A, g0267, g2C68, g0195, g2C76, g0265, g1DA3, g02AE, g02AF, g04BB, g04BB_uCStyle, g0495, g043D, g04A5, g04A3, g04CA, g045A, g04C8, g050B, g043F, g04A7, g045F, g0446, g0448, g0449, g1D28, g041D, g1D34, g1D78, g029C, g__hcircumflex, g021E, g1E26, g1E22, g1E2A, g1E24, g1E28, g__hbar, g__hbar_vert_strk, g2C67, g01F6, g2C75, g04BA, g0494, g04A4, g04A2, g04C9, g040A, g04C7, g050A, g041F, g04A6, g040F, g0426, g0428, g0429, g_i_slant_italic, g0456, g1D62, g2071, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g1D96, g0268, g1DA4, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1D62_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g1D96_dotless, g0268_dotless, g1DA4_dotless, g1D09, g1D4E, g_ij, g0269, g1DA5, g1D7C, g044E, g0406, g04C0, g04CF, g1D35, g026A, g1DA6, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek, g__iogonek_retro_hook_style, g0197, g1D7B, g1DA7, g__i_j, gF258, g0196, g042E, g0458, g02B2, g_jcircumflex, g01F0, g0249, g029D, g1DA8, g_j_dotless, g0237, g0458_dotless, g02B2_dotless, g025F, g0249_dotless, g1DA1, g029D_dotless, g1DA8_dotless, g0284_topSerif, g0284, g043B, g04C6, g0459, g0513, g0509, g0434, g0408, g1D36, g1D0A, g__jcircumflex, g0248, g041B, g1D2B, g04C5, g0409, g0512, g0508, g0414, g1D4F, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g1D84, g0199, g2C6A, g029E, g_kgreenlandic, g043A, g045C, g049B, g04A1, g049F, g049D, g04C4, g0436, g04C2, g04DD, g0497, g1D37, g1D0B, g1E30, g01E8, g1E34, g1E32, g__kcommaaccent, g0198, g2C69, g041A, g040C, g049A, g04A0, g049E, g049C, g04C3, g0416, g04C1, g04DC, g0496, g_l_slant_italic, g02E1, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g_ldot, g_lcaron, g1D85, g1DAA, g019A, g2C61, g026B, g_lslash, g026D, g1DA9, g0234, g026C, gF266, g01C9, g02AA, g02AB, g026E, g1D38, g029F, g1DAB, gF268, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g__ldot, g__lcaron, g023D, g2C60, g2C62, g__lslash, g1D0C, g01C8, g01C7, g1D50, g1E3F, g1E41, g1E43, g1D86, g1D6F, g0271, g1DAC, g026F, g1D5A, g0270, g1DAD, g1D1F, g043C, g04CE, g041C, g1D39, g1D0D, g1E3E, g1E40, g1E42, gF25B, g019C, g04CD, g207F, g_nacute, g01F9, g_ncaron, g1E45, g1E4B, g1E49, g1E47, g_ncommaaccent, g_napostrophe, g1D87, g1D70, g0272, g1DAE, g_eng, g1D51, g0273, g1DAF, g0235, g019E, g01CC, g0438, g045D, g0439, g048B, g04E3, g04E5, g1D3A, g0274, g1DB0, g__nacute, g01F8, g__ncaron, g1E44, g1E4A, g1E48, g1E46, g__ncommaaccent, g019D, g__eng_u_c_style, g1D0E, g1D3B, g019D_lCStyle, g__eng_baseline_hook, g__eng, g0220, g__eng_kom, g01CB, g01CA, g0418, g040D, g0419, g048A, g04E4, g04E2, g043E, g2092, g1D52, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g04E7, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g018D, g0275, g04E9, g1DB1, g04EB, g_theta, g1DBF, gF1AB, g_oslashacute, g_ohorn, g1EDB, g1EDD, g1EE1, g1EDF, g1EE3, g_sigma, g04A9, g1D11, g1D13, gF1AD, g1D14, g01A3, g0223, g0223_openTop, g1D17, g1D55, g1D16, g1D54, g041E, g1D3C, g1D0F, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g04E6, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g019F, g04E8, g04EA, g__theta, g__oslashacute, g__ohorn, g1EDA, g1EDC, g1EE0, g1EDE, g1EE2, g04A8, g0276, gF1AE, g01A2, g0222, g0222_openTop, g1D3D, g1D3D_openTop, g1D15, g1D15_openTop, g0298, g0440, g1D56, g1E55, g1E57, g1D88, g1D7D, g048F, g1D71, g_thorn, g01A5, g01A5_bowlHook, g01BF, g1D68, g0278, g1DB2, g0444, g1D69, g1D60, g0420, g1D3E, g1D18, g1D29, g1E54, g1E56, g048E, g2C63, g01A4, g__thorn, g01F7, g0424, g1D2A, g02A0, g024B, g01AA, g0239, g024A, g1D63, g1DCA, g02B3, g_racute, g0211, g0213, g_rcaron, g1E59, g1E5F, g1E5B, g1E5D, g_rcommaaccent, g1D89, g024D, g1D72, g027D, g027C, g0279, g02B4, g027B, g02B5, gF269, g027A, g027E, g1D73, g0285, g027F, g1D3F, g0280, g__racute, g0210, g0212, g__rcaron, g1E58, g1E5E, g1E5A, g1E5C, g__rcommaaccent, g024C, g2C64, g2C64_lCStyle, g01A6, g1D1A, g0281, g02B6, g042F, g1D19, g044F, g0455, g02E2, g_sacute, g1E65, g_scircumflex, g_scaron, g1E67, g1E61, g1E63, g1E69, g_scommaaccent, g_scedilla_comma_style, g_scedilla, g0282, g1DB3, g1D8A, g1D74, g023F, g01A8, g0283, g1DB4, g1D98, g1D8B, g0286, g0405, g__sacute, g1E64, g__scircumflex, g__scaron, g1E66, g1E60, g1E62, g1E68, g__scommaaccent, g__scedilla_comma_style, g__scedilla, g01A7, g1D57, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g_tcaron, g0163, g01AB, g1DB5, g_tbar, g1D75, g2C66, g01AD, g0288, g0236, g1D7A, g02A8, g02A6, g02A7, g0287, g0442, g04AD, g050F, g04B5, g0422, g1D40, g1D1B, g__tcaron, g1E6A, g1E70, g1E6E, g1E6C, g021A, g0162_commaStyle, g0162, g__tbar, g023E, g01AC, g01AC_rtHook, g01AE, g04AC, g050E, g04B4, g040B, g0402, g1D64, g1D58, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek, g_uogonek_retro_hook_style, g1D99, g0289, g1DB6, g_uhorn, g1EE9, g1EEB, g1EEF, g1EED, g1EF1, g1D6B, g1D1D, g1D59, g1D1E, g028B, g1DB9, g028A, g1DB7, g1D7F, gF259, g1D41, g1D1C, g1DB8, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g0244, g1D7E, gF1CD, g__uhorn, g1EE8, g1EEA, g1EEE, g1EEC, g1EF0, g01B2, g01B1, g_v_slant_italic, g1D65, g1D5B, g1E7D, g1E7F, g1D8C, gF25F, g028B_straightLft, g2C74, g028C, g1DBA, g0264_lrgBowl, g0264, gF1B5, g0264_gammaStyle, g0263, g02E0, g_gamma, g1D67, g1D5E, g1D20, g1E7C, g1E7E, g0245, g1D27, g0194, g02B7, g_wacute, g_wgrave, g_wcircumflex, g_wdieresis, g1E87, g1E98, g1E89, gF21A, g02AC, g028D, g0277, g1D42, g1D21, g__wacute, g__wgrave, g__wcircumflex, g__wdieresis, g1E86, g1E88, gF21B, g0445, g2093, g02E3, g1E8D, g1E8B, g1D8D, g04FF, g04FD, g04B3, g_chi, g1D6A, g1D61, g0425, g1E8C, g1E8A, g04FE, g04FC, g04B2, g0443, g02B8, g_yacute, g04F3, g_ygrave, g_ycircumflex, g045E, g1EF9, g0233, g04EF, g04F1, g1E8F, g1E99, g1EF7, g1EF5, g024F, g01B4, g04AF, g04B1, g028E, gF1CE, gF267, g_lambda, g019B, g0447, g04F5, g04B9, g04B7, g04CC, g04AE, g028F, gF1B4, g__yacute, g__ygrave, g__ycircumflex, g1EF8, g0232, g1E8E, g1EF6, g1EF4, g024E, g04B0, g01B3, g01B3_rtHook, g0423, g04F2, g040E, g04EE, g04F0, g0427, g04F4, g04B8, g04B6, g04CB, g_z_slant_italic, g1DBB, g_zacute, g1E91, g_zcaron, g_zdotaccent, g1E95, g1E93, g0290, g1DBC, g1D8E, g01B6, g1D76, g0291, g1DBD, g0225, g2C6C, g0240, g1D22, g__zacute, g1E90, g__zcaron, g__zdotaccent, g1E94, g1E92, gF234, g01B5, g0224, g2C6B, g01A9, g01B7_revSigmaStyle, g04E0_revSigmaStyle, g0292, g04E1, g1DBE, g01EF, g1D9A, gF235, g0293, g0293_lrgBowl, g01BA, g01B9, g021D, g01B7, g04E0, g1D23, g01EE, g01B8, g021C, g0294, g02C0, g0242, g0241, g02A1, g0295, g02C1, g02E4, g02A2, g0296, g01BE, g1D24, g1D25, g1D5C, g2070, g_onesuperior, g_twosuperior, g01BB, g_threesuperior, g2074, g2075, g01BC, g01BD, g2076, g2077, g2078, g2079, g01C3, g01C0, g01C1, g01C2, g0320, g0317, g02CE, g0316, g032D, g032F, g032E, g035C, g02EC, g032C, g0330, gF17B, g0359, g0353, g032B, g033C, g0331, g0331_short, g035F, g0332, g0333, g0347, g0324, g_dotbelowcomb, g0326, g0325, g035A, g031C, g02BF, g0339, g02BE, g0329, g0348, g031F, g031E, g031D, g0318, g0319, g0349, g02AD, g0327, g0328, g0328_retroHookStyle, g1DC2, g032A, g033A, g033B, g034E, g20EE, g20ED, g20EF, g20EC, g0362, g034D, g0354, g0355, g0356, g1DFF, g034F, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesL11Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesL12Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv); cTakesL13Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesL22Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv); cTakesL23Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesL33Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesODia = (g_space, g__a, g__e, g__i, g__o, g__u, g__v, g_a, g_e, g_i, g_o, g_u, g_v, g__adieresis, g__aring, g__eacute, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_ae, g_oslash, g00A0, g__agrave, g__atilde, g__otilde, g_oe, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_a_2_story_slant_italic, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g01CE, g_amacron, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek_retro_hook_style, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0251, g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story_retro_hook_style, g0252, g_ae_2_story_slant_italic, g04D5, g_aeacute, g01E3, g0200, g1EA4, g1EA4_vN, g1EA6, g1EA6_vN, g1EAA, g1EAA_vN, g1EA8, g1EA8_vN, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g01CD, g__amacron, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek_retro_hook_style, g023A, g0441, g0254, g0254_topSerif, g0421, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek_retro_hook_style, g04BD, g0259, g04D9, g04DB, g025A, g025B, g0511, g0204, g1EBE, g1EBE_vN, g1EC0, g1EC0_vN, g1EC4, g1EC4_vN, g1EC2, g1EC2_vN, g1EC6, g0206, g__ebreve, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g0228, g1E1C, g__eogonek_retro_hook_style, g04BC, g_i_slant_italic, g0456, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek_retro_hook_style, g0268, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1E2D_dotless, g1ECB_dotless, g0268_dotless, g_ij, g0269, g1D7C, g0406, g04C0, g026A, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek_retro_hook_style, g__i_j, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g022B, g022F, g0231, g1ECF, g1ECD, g01EB_retroHookStyle, g01ED_retroHookStyle, g_oslashacute, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g022A, g022E, g0230, g1ECE, g1ECC, g01EA_retroHookStyle, g01EC_retroHookStyle, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek_retro_hook_style, g0289, g028B, g028A, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek_retro_hook_style, g_v_slant_italic, g1E7D, g1E7F, gF25F, g028B_straightLft, g2C74, g028C, g1E7C, g1E7E, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesRDia = (g_space, g__l, g__o, g__u, g_a, g_b, g_c, g_d, g_e, g_g, g_i, g_k, g_l, g_o, g_p, g_q, g_t, g_u, g_y, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_ccedilla, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_ae, g_oslash, g00A0, g__otilde, g_oe, g_ydieresis, g__oacute, g__ocircumflex, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_a_2_story_slant_italic, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g01CE, g_amacron, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250, g0250_2StorySlantItalic, g0251, g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g0252, g_ae_2_story_slant_italic, g04D5, g_aeacute, g01E3, g1E03, g1E07, g1E05, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g1E09, g0254, g0254_topSerif, g2184, g0501, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g0256, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek_retro_hook_style, g0258, g025B, g025E, g0511, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g_g_sng_bowl, g0261, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g1D77, g1D79, g0262, g_i_slant_italic, g0456, g2071, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g0268, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g0268_dotless, g0269, g1D7C, g04CF, g026A, g025F, g0249_dotless, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g_l_slant_italic, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g026F, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g0275, g04E9, g04EB, g_oslashacute, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g0276, g1E55, g1E57, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g0163, g2C66, g0288, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek_retro_hook_style, g0289, g028A, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g028C, g0264_lrgBowl, g0264, g0264_gammaStyle, g0277, g02B8, g_yacute, g_ygrave, g_ycircumflex, g1EF9, g0233, g1E8F, g1E99, g1EF7, g1EF5, g028F, g0294, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesTLDia = (gA716_lstaff, gA715_lstaff, gA714_lstaff, gA713_lstaff, gA712_lstaff, g02E9_1, g02E9_2, g02E9_3, g02E9_4, g02E9_5, g02E8_1, g02E8_2, g02E8_3, g02E8_4, g02E8_5, g02E7_1, g02E7_2, g02E7_3, g02E7_4, g02E7_5, g02E6_1, g02E6_2, g02E6_3, g02E6_4, g02E6_5, g02E5_1, g02E5_2, g02E5_3, g02E5_4, g02E5_5, gA716_1, gA715_1, gA714_1, gA713_1, gA712_1, gA716_2, gA715_2, gA714_2, gA713_2, gA712_2, gA716_3, gA715_3, gA714_3, gA713_3, gA712_3, gA716_4, gA715_4, gA714_4, gA713_4, gA712_4, gA716_5, gA715_5, gA714_5, gA713_5, gA712_5, gA716_lstaffno, gA715_lstaffno, gA714_lstaffno, gA713_lstaffno, gA712_lstaffno, gA716_no, gA715_no, gA714_no, gA713_no, gA712_no); cTakesUDia = (g_space, g_hyphen, g_zero, g_one, g_two, g_three, g_four, g_five, g_six, g_seven, g_eight, g_nine, g__a, g__b, g__c, g__d, g__e, g__f, g__g, g__h, g__i, g__j, g__k, g__l, g__m, g__n, g__o, g__p, g__q, g__r, g__s, g__t, g__u, g__v, g__w, g__x, g__y, g__z, g_asciicircum, g_grave, g_a, g_b, g_c, g_d, g_e, g_f, g_g, g_h, g_i, g_j, g_k, g_l, g_m, g_n, g_o, g_p, g_q, g_r, g_s, g_t, g_u, g_v, g_w, g_x, g_y, g_z, g__adieresis, g__aring, g__ccedilla, g__eacute, g__ntilde, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_ccedilla, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_ntilde, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_germandbls, g_acute, g_dieresis, g__a_e, g__oslash, g_summation, g_pi, g_ae, g_oslash, g_florin, g00A0, g__agrave, g__atilde, g__otilde, g__o_e, g_oe, g_ydieresis, g__ydieresis, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_breve, g_caron, g_a_2_story_slant_italic, g0430, g2090, g1D43, g0363, g0201, g1EAD, g1EA5, g1EA7, g1EAB, g1EAB_vN, g1EA9, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g04D1, g01CE, g_amacron, g04D3, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g1D8F, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250, g0250_2StorySlantItalic, g1D44, g0251, g_a_sng_story, g1D45, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g1D90, g0252, g1D9B, g_ae_2_story_slant_italic, g04D5, gF1A1, g_aeacute, g01E3, g1D02, g1D46, g_alpha, gF247, gF248, g0410, g1D2C, g1D00, g0200, g1EA4, g1EA6, g1EAA, g1EAA_vN, g1EA8, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g04D0, g01CD, g__amacron, g04D2, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek, g__aogonek_retro_hook_style, g023A, gF208, gF209, g04D4, g1D2D, g1D01, g__a_eacute, g01E2, g1D47, g1E03, g1E07, g1E05, g1D80, g0180_barBowl, g0180, g1D6C, g0253, g0185, g0183, g0431, g044C, g048D, g044A, g044B, g04F9, g0432, g0412, g1D2E, g0299, g1E02, g1E06, g1E04, g0243, g1D2F, g1D03, g0181, g0184, g0182, g0411, g042C, g048C, g042A, g042B, g04F8, g_beta, g1D66, g1D5D, g0441, g217D, g1D9C, g0368, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g1E09, g04AB, gF225, g0297, g0188, g0255, g1D9D, g0254, g0254_topSerif, g1D53, g1D53_topSerif, g1D97, g1D97_topSerif, g2184, g1D12, g0454, g044D, g04ED, g044D_mongolStyle, g0421, g216D, g1D04, g__cacute, g__ccircumflex, g__ccaron, g__cdotaccent, g1E08, g04AA, g023B, g0187, g0186, g0186_topSerif, g1D10, g1D10_topSerif, g0404, g042D, g04EC, g042D_mongolStyle, g0501, g217E, g1D48, g0369, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g_dcaron, g1D81, g_dcroat_bar_bowl, g_dcroat, g1D6D, g0257, g0256, g1D91, g0221, g018C, g0238, g01F3, g01C6, g02A3, g02A5, g02A4, g0503, g_delta, g1D5F, g_eth, g1D9E, g216E, g1D30, g1D05, g__dcaron, g1E0A, g1E12, g1E0E, g1E0C, g1E10, g__eth, g__dcroat, g0189, g1D06, gF20D, g018A, g018B, g01F2, g01C5, g01F1, g01C4, g0500, g0502, g0435, g2091, g1D49, g0364, g0450, g0205, g1EBF, g1EC1, g1EC5, g1EC5_vN, g1EC3, g1EC7, g0207, g_ebreve, g04D7, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g0451, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek, g_eogonek_retro_hook_style, g1D92, g0247, g04BD, g04BF, g01DD, g0259, g04D9, g2094, g1D4A, g04DB, g1D95, g025A, g0258, gF1A3, g025B, g1D4B, g1D93, g025C, g1D9F, g1D94, g025D, g1D08, g1D4C, g029A, g025E, gF1A4, g0511, g0437, g04DF, g0499, g0507, g0505, g0415, g1D31, g1D07, g0400, g0204, g1EBE, g1EC0, g1EC4, g1EC4_vN, g1EC2, g1EC6, g0206, g__ebreve, g04D6, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g0401, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g0228, g1E1C, g__eogonek, g__eogonek_retro_hook_style, g0246, g04BC, g04BE, g018E, g1D32, g018F, g04D8, g04DA, g0190, g0510, g0417, g04DE, g0498, g0506, g0504, g_f_slant_italic, g1DA0, g1E1F, g1D82, g1D6E, g02A9, g_longs, g1E9B, g0433, g0453, g0491, g04F7, g0493, g0493_slantItalic, gF327, gF327_slantItalic, g04FB, g04FB_slantItalic, g1E1E, g0191, g0413, g__gamma, g1D26, g0403, g0490, g04F6, g0492, gF326, g04FA, g1D4D, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01E5_barBowl, g01E5, g_g_sng_bowl, g0261, g1DA2, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g1D83, g01E5_barBowl_sngBowl, g0260, g1D77, g1D79, g050D, g1D33, g0262, g01F4, g__gcircumflex, g__gbreve, g__gcaron, g1E20, g__gdotaccent, g__gcommaaccent, g01E4, g0193, g029B, g050C, g02B0, g036A, g_hcircumflex, g021F, g1E27, g1E23, g1E2B, g1E96, g1E25, g1E29, g_hbar, g045B, gF1BC, g0452, g0266, g02B1, gF25A, g0267, g2C68, g0195, g2C76, g0265, g1DA3, g02AE, g02AF, g04BB, g04BB_uCStyle, g0495, g043D, g04A5, g04A3, g04CA, g045A, g04C8, g050B, g043F, g04A7, g045F, g0446, g0448, g0449, g1D28, g041D, g1D34, g1D78, g029C, g__hcircumflex, g021E, g1E26, g1E22, g1E2A, g1E24, g1E28, g__hbar, g__hbar_vert_strk, g2C67, g01F6, g2C75, g04BA, g0494, g04A4, g04A2, g04C9, g040A, g04C7, g050A, g041F, g04A6, g040F, g0426, g0428, g0429, g_i_slant_italic, g0456, g2170, g1D62, g2071, g0365, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g1D96, g0268, g1DA4, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1D62_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g1D96_dotless, g0268_dotless, g1DA4_dotless, g1D09, g1D4E, g_ij, g2171, g2172, g2173, g2178, g0269, g1DA5, g1D7C, g044E, g0406, g04C0, g04CF, g2160, g1D35, g026A, g1DA6, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek, g__iogonek_retro_hook_style, g0197, g1D7B, g1DA7, g__i_j, g2161, g2162, g2163, g2168, gF258, g0196, g042E, g0458, g02B2, g_jcircumflex, g01F0, g0249, g029D, g1DA8, g_j_dotless, g0237, g0458_dotless, g02B2_dotless, g025F, g0249_dotless, g1DA1, g029D_dotless, g1DA8_dotless, g0284_topSerif, g0284, g043B, g04C6, g0459, g0513, g0509, g0434, g0408, g1D36, g1D0A, g__jcircumflex, g0248, g041B, g1D2B, g04C5, g0409, g0512, g0508, g0414, g1D4F, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g1D84, g0199, g2C6A, g029E, g_kgreenlandic, g043A, g045C, g049B, g04A1, g049F, g049D, g04C4, g0436, g04C2, g04DD, g0497, g1D37, g1D0B, g1E30, g01E8, g1E34, g1E32, g__kcommaaccent, g0198, g2C69, g041A, g040C, g049A, g04A0, g049E, g049C, g04C3, g0416, g04C1, g04DC, g0496, g_l_slant_italic, g217C, g02E1, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g_ldot, g_lcaron, g1D85, g1DAA, g019A, g2C61, g026B, g_lslash, g026D, g1DA9, g0234, g026C, gF266, g01C9, g02AA, g02AB, g026E, g216C, g1D38, g029F, g1DAB, gF268, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g__ldot, g__lcaron, g023D, g2C60, g2C62, g__lslash, g1D0C, g01C8, g01C7, g217F, g1D50, g036B, g1E3F, g1E41, g1E43, g1D86, g1D6F, g0271, g1DAC, g026F, g1D5A, g0270, g1DAD, g1D1F, g043C, g04CE, g041C, g216F, g1D39, g1D0D, g1E3E, g1E40, g1E42, gF25B, g019C, g04CD, g207F, g_nacute, g01F9, g_ncaron, g1E45, g1E4B, g1E49, g1E47, g_ncommaaccent, g_napostrophe, g1D87, g1D70, g0272, g1DAE, g_eng, g1D51, g0273, g1DAF, g0235, g019E, g01CC, g0438, g045D, g0439, g048B, g04E3, g04E5, g1D3A, g0274, g1DB0, g__nacute, g01F8, g__ncaron, g1E44, g1E4A, g1E48, g1E46, g__ncommaaccent, g019D, g__eng_u_c_style, g1D0E, g1D3B, g019D_lCStyle, g__eng_baseline_hook, g__eng, g0220, g__eng_kom, g01CB, g01CA, g0418, g040D, g0419, g048A, g04E4, g04E2, g043E, g2092, g1D52, g0366, g_ohungarumlaut, g020D, g1ED1, g1ED3, g1ED7, g1ED7_vN, g1ED5, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g04E7, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g018D, g0275, g04E9, g1DB1, g04EB, g_theta, g1DBF, gF1AB, g_oslashacute, g_ohorn, g1EDB, g1EDD, g1EE1, g1EDF, g1EE3, g_sigma, g04A9, g1D11, g1D13, gF1AD, g1D14, g01A3, g0223, g0223_openTop, g1D17, g1D55, g1D16, g1D54, g041E, g1D3C, g1D0F, g__ohungarumlaut, g020C, g1ED0, g1ED2, g1ED6, g1ED6_vN, g1ED4, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g04E6, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g019F, g04E8, g04EA, g__theta, g__oslashacute, g__ohorn, g1EDA, g1EDC, g1EE0, g1EDE, g1EE2, g04A8, g0276, gF1AE, g01A2, g0222, g0222_openTop, g1D3D, g1D3D_openTop, g1D15, g1D15_openTop, g0298, g0440, g1D56, g1E55, g1E57, g1D88, g1D7D, g048F, g1D71, g_thorn, g01A5, g01A5_bowlHook, g01BF, g1D68, g0278, g1DB2, g0444, g1D69, g1D60, g0420, g1D3E, g1D18, g1D29, g1E54, g1E56, g048E, g2C63, g01A4, g__thorn, g01F7, g0424, g1D2A, g02A0, g024B, g01AA, g0239, g024A, g1D63, g02B3, g036C, g_racute, g0211, g0213, g_rcaron, g1E59, g1E5F, g1E5B, g1E5D, g_rcommaaccent, g1D89, g024D, g1D72, g027D, g027C, g0279, g02B4, g027B, g02B5, gF269, g027A, g027E, g1D73, g0285, g027F, g1D3F, g0280, g__racute, g0210, g0212, g__rcaron, g1E58, g1E5E, g1E5A, g1E5C, g__rcommaaccent, g024C, g2C64, g2C64_lCStyle, g01A6, g1D1A, g0281, g02B6, g042F, g1D19, g044F, g0455, g02E2, g_sacute, g1E65, g_scircumflex, g_scaron, g1E67, g1E61, g1E63, g1E69, g_scommaaccent, g_scedilla_comma_style, g_scedilla, g0282, g1DB3, g1D8A, g1D74, g023F, g01A8, g0283, g1DB4, g1D98, g1D8B, g0286, g0405, g__sacute, g1E64, g__scircumflex, g__scaron, g1E66, g1E60, g1E62, g1E68, g__scommaaccent, g__scedilla_comma_style, g__scedilla, g01A7, g1D57, g036D, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g_tcaron, g0163, g01AB, g1DB5, g_tbar, g1D75, g2C66, g01AD, g0288, g0236, g1D7A, g02A8, g02A6, g02A7, g0287, g0442, g04AD, g050F, g04B5, g0422, g1D40, g1D1B, g__tcaron, g1E6A, g1E70, g1E6E, g1E6C, g021A, g0162_commaStyle, g0162, g__tbar, g023E, g01AC, g01AC_rtHook, g01AE, g04AC, g050E, g04B4, g040B, g0402, g1D64, g1D58, g0367, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek, g_uogonek_retro_hook_style, g1D99, g0289, g1DB6, g_uhorn, g1EE9, g1EEB, g1EEF, g1EED, g1EF1, g1D6B, g1D1D, g1D59, g1D1E, g028B, g1DB9, g028A, g1DB7, g1D7F, gF259, g1D41, g1D1C, g1DB8, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g0244, g1D7E, gF1CD, g__uhorn, g1EE8, g1EEA, g1EEE, g1EEC, g1EF0, g01B2, g01B1, g_v_slant_italic, g2174, g1D65, g1D5B, g036E, g1E7D, g1E7F, g1D8C, gF25F, g028B_straightLft, g2C74, g2175, g2176, g2177, g028C, g1DBA, g0264_lrgBowl, g0264, gF1B5, g0264_gammaStyle, g0263, g02E0, g_gamma, g1D67, g1D5E, g2164, g1D20, g1E7C, g1E7E, g2165, g2166, g2167, g0245, g1D27, g0194, g02B7, g_wacute, g_wgrave, g_wcircumflex, g_wdieresis, g1E87, g1E98, g1E89, gF21A, g02AC, g028D, g0277, g1D42, g1D21, g__wacute, g__wgrave, g__wcircumflex, g__wdieresis, g1E86, g1E88, gF21B, g0445, g2179, g2093, g02E3, g036F, g1E8D, g1E8B, g1D8D, g04FF, g04FD, g04B3, g217A, g217B, g_chi, g1D6A, g1D61, g0425, g2169, g1E8C, g1E8A, g04FE, g04FC, g04B2, g216A, g216B, g0443, g02B8, g_yacute, g04F3, g_ygrave, g_ycircumflex, g045E, g1EF9, g0233, g04EF, g04F1, g1E8F, g1E99, g1EF7, g1EF5, g024F, g01B4, g04AF, g04B1, g028E, gF1CE, gF267, g_lambda, g019B, g0447, g04F5, g04B9, g04B7, g04CC, g04AE, g028F, gF1B4, g__yacute, g__ygrave, g__ycircumflex, g1EF8, g0232, g1E8E, g1EF6, g1EF4, g024E, g04B0, g01B3, g01B3_rtHook, g0423, g04F2, g040E, g04EE, g04F0, g0427, g04F4, g04B8, g04B6, g04CB, g_z_slant_italic, g1DBB, g_zacute, g1E91, g_zcaron, g_zdotaccent, g1E95, g1E93, g0290, g1DBC, g1D8E, g01B6, g1D76, g0291, g1DBD, g0225, g2C6C, g0240, g1D22, g__zacute, g1E90, g__zcaron, g__zdotaccent, g1E94, g1E92, gF234, g01B5, g0224, g2C6B, g01A9, g01B7_revSigmaStyle, g04E0_revSigmaStyle, g0292, g04E1, g1DBE, g01EF, g1D9A, gF235, g0293, g0293_lrgBowl, g01BA, g01B9, g021D, g01B7, g04E0, g1D23, g01EE, g01B8, g021C, g0294, g02C0, g0242, g0241, g02A1, g0295, g02C1, g02E4, g02A2, g0296, g01BE, g1D24, g1D25, g1D5C, g2070, g_onesuperior, g_twosuperior, g01BB, g_threesuperior, g2074, g2075, g01BC, g01BD, g2076, g2077, g2078, g2079, g01C3, g0312, g0314, g01C0, g01C1, g01C2, g2010, g2011, g00AD, g02D7, g02CA, g_acutecomb, g030B, g02F4, g02CB, g_gravecomb, g02F5, g030F, g0302, g0302_tildecomb_vN, g0311, g0311_uU, g0311_uL, g0311_lL, g0352, g0361, g0306, g0306_acutecomb_vN, g0306_gravecomb_vN, g0306_tildecomb_vN, g0306_hookabovecomb_vN, g0310, g0306_cyShortMrkAlt, g035D, g030C, g_tildecomb, g034A, g034C, g034B, g0360, g033E, g035B, g033D, g02C9, g0304, g0304_short, g035E, g0305, g033F, g0308, g0308_uU, g0308_lL, g0308_uL, g0308_sup, gF17A, g0307, g0358, g0313, g030A, g02BF, g0351, g02BE, g0357, g_hookabovecomb, g030D, g030E, g02AD, g0346, g1DFE, g0350, g034F, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesU11Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesU12Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, g2060_showInv, gFEFF_showInv); cTakesU13Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesU22Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, g2060_showInv, gFEFF_showInv); cTakesU23Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesU33Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cHDia = (g0327); cLDia = (g1DCA, g0320, g0317, g0316, g032D, g032F, g032E, g032C, g0330, gF17B, g0359, g0353, g032B, g033C, g0331, g0331_short, g0332, g0333, g0347, g0324, g_dotbelowcomb, g0326, g0325, g035A, g031C, g0339, g0329, g0348, g031F, g031E, g031D, g0318, g0319, g0349, g0328_retroHookStyle, g1DC2, g032A, g033A, g033B, g034E, g20EE, g20ED, g20EF, g20EC, g034D, g0354, g0355, g0356, g1DFF, g034F); cODia = (g0328); cRDia = (g0358, g0315, g031B, g02DE, g02DE02DE); cTLDia = (g02E9_rstaff, g02E8_rstaff, g02E7_rstaff, g02E6_rstaff, g02E5_rstaff, g02E9_1, g02E9_2, g02E9_3, g02E9_4, g02E9_5, g02E8_1, g02E8_2, g02E8_3, g02E8_4, g02E8_5, g02E7_1, g02E7_2, g02E7_3, g02E7_4, g02E7_5, g02E6_1, g02E6_2, g02E6_3, g02E6_4, g02E6_5, g02E5_1, g02E5_2, g02E5_3, g02E5_4, g02E5_5, gA716_1, gA715_1, gA714_1, gA713_1, gA712_1, gA716_2, gA715_2, gA714_2, gA713_2, gA712_2, gA716_3, gA715_3, gA714_3, gA713_3, gA712_3, gA716_4, gA715_4, gA714_4, gA713_4, gA712_4, gA716_5, gA715_5, gA714_5, gA713_5, gA712_5, g02E9_rstaffno, g02E8_rstaffno, g02E7_rstaffno, g02E6_rstaffno, g02E5_rstaffno, g02E9_no, g02E8_no, g02E7_no, g02E6_no, g02E5_no); cUDia = (g0363, g0368, g0369, g0364, g036A, g0365, g036B, g0366, g036C, g036D, g0367, g036E, g036F, g0312, g0314, g_acutecomb, g030B, g_gravecomb, g030F, g0302, g0302_acutecomb_vN, g0302_gravecomb_vN, g0302_tildecomb_vN, g0302_hookabovecomb_vN, g0311, g0311_uU, g0311_uL, g0311_lL, g0352, g0306, g0306_acutecomb_vN, g0306_gravecomb_vN, g0306_tildecomb_vN, g0306_hookabovecomb_vN, g0310, g0306_cyShortMrkAlt, g030C, g1DC7, g1DC4, g1DC5, g1DC6, g1DC9, g1DC8, g_tildecomb, g034A, g034C, g034B, g033E, g035B, g033D, g0304, g0304_short, g0305, g033F, g0308, g0308_uU, g0308_lL, g0308_uL, g0308_sup, g0307, g0313, g030A, g0351, g0357, g_hookabovecomb, g030D, g030E, g0346, g1DFE, g0350, g034F); c1 = (g02E9_1, g02E8_1, g02E7_1, g02E6_1, g02E5_1, gA716_1, gA715_1, gA714_1, gA713_1, gA712_1); cno_1 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c2 = (g02E9_2, g02E8_2, g02E7_2, g02E6_2, g02E5_2, gA716_2, gA715_2, gA714_2, gA713_2, gA712_2); cno_2 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c2StorySlantItalic = (g_a_2_story_slant_italic, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250_2StorySlantItalic, g_ae_2_story_slant_italic); cno_2StorySlantItalic = (g_a, g_atilde, g1EA1, g0250, g_ae); c3 = (g02E9_3, g02E8_3, g02E7_3, g02E6_3, g02E5_3, gA716_3, gA715_3, gA714_3, gA713_3, gA712_3); cno_3 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c4 = (g02E9_4, g02E8_4, g02E7_4, g02E6_4, g02E5_4, gA716_4, gA715_4, gA714_4, gA713_4, gA712_4); cno_4 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c5 = (g02E9_5, g02E8_5, g02E7_5, g02E6_5, g02E5_5, gA716_5, gA715_5, gA714_5, gA713_5, gA712_5); cno_5 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); cBarBowl = (g0180_barBowl, g_dcroat_bar_bowl, g01E5_barBowl); cno_BarBowl = (g0180, g_dcroat, g01E5); cBaselineHook = (g__eng_baseline_hook); cno_BaselineHook = (g__eng); cBowlHook = (g01A5_bowlHook); cno_BowlHook = (g01A5); cChinantecTn = (g02CB_chinantecTn, g02C8_chinantecTn, g02CA_chinantecTn, g02C9_chinantecTn); cno_ChinantecTn = (g02CB, g02C8, g02CA, g02C9); cCommaStyle = (g_scedilla_comma_style, g__scedilla_comma_style, g0163_commaStyle, g0162_commaStyle); cno_CommaStyle = (g_scedilla, g__scedilla, g0163, g0162); cCyShortMrkAlt = (g0306_cyShortMrkAlt); cno_CyShortMrkAlt = (g0306); cDotless = (g_i_dotless, g0456_dotless, g1D62_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g1D96_dotless, g0268_dotless, g1DA4_dotless, g_j_dotless, g0458_dotless, g02B2_dotless, g0249_dotless, g029D_dotless, g1DA8_dotless); cno_Dotless = (g_i, g0456, g1D62, g2071, g1E2D, g1ECB, g_iogonek, g1D96, g0268, g1DA4, g_j, g0458, g02B2, g0249, g029D, g1DA8); cGammaStyle = (g0264_gammaStyle); cno_GammaStyle = (g0264); cKom = (g__eng_kom); cno_Kom = (g__eng); cLCStyle = (g019D_lCStyle, g2C64_lCStyle); cno_LCStyle = (g019D, g2C64); cLL = (g0311_lL, g0308_lL); cno_LL = (g0311, g0308); cLines = (g_space_lines, gF1F1_lines, gF1F1F1F2_lines, gF1F1F1F3_lines, gF1F1F1F4_lines, gF1F1F1F5_lines, gF1F1F1F6_lines, gF1F1F1F7_lines, gF1F1F1F8_lines, gF1F1F1F9_lines, gF1F2F1F1_lines, gF1F2_lines, gF1F2F1F3_lines, gF1F2F1F4_lines, gF1F2F1F5_lines, gF1F2F1F6_lines, gF1F2F1F7_lines, gF1F2F1F8_lines, gF1F2F1F9_lines, gF1F3F1F1_lines, gF1F3F1F2_lines, gF1F3_lines, gF1F3F1F4_lines, gF1F3F1F5_lines, gF1F3F1F6_lines, gF1F3F1F7_lines, gF1F3F1F8_lines, gF1F3F1F9_lines, gF1F4F1F1_lines, gF1F4F1F2_lines, gF1F4F1F3_lines, gF1F4_lines, gF1F4F1F5_lines, gF1F4F1F6_lines, gF1F4F1F7_lines, gF1F4F1F8_lines, gF1F4F1F9_lines, gF1F5F1F1_lines, gF1F5F1F2_lines, gF1F5F1F3_lines, gF1F5F1F4_lines, gF1F5_lines, gF1F5F1F6_lines, gF1F5F1F7_lines, gF1F5F1F8_lines, gF1F5F1F9_lines, gF1F6F1F1_lines, gF1F6F1F2_lines, gF1F6F1F3_lines, gF1F6F1F4_lines, gF1F6F1F5_lines, gF1F6_lines, gF1F6F1F7_lines, gF1F6F1F8_lines, gF1F6F1F9_lines, gF1F7F1F1_lines, gF1F7F1F2_lines, gF1F7F1F3_lines, gF1F7F1F4_lines, gF1F7F1F5_lines, gF1F7F1F6_lines, gF1F7_lines, gF1F7F1F8_lines, gF1F7F1F9_lines, gF1F8F1F1_lines, gF1F8F1F2_lines, gF1F8F1F3_lines, gF1F8F1F4_lines, gF1F8F1F5_lines, gF1F8F1F6_lines, gF1F8F1F7_lines, gF1F8_lines, gF1F8F1F9_lines, gF1F9F1F1_lines, gF1F9F1F2_lines, gF1F9F1F3_lines, gF1F9F1F4_lines, gF1F9F1F5_lines, gF1F9F1F6_lines, gF1F9F1F7_lines, gF1F9F1F8_lines, gF1F9_lines); cno_Lines = (g_space, gF1F1, gF1F1F1F2, gF1F1F1F3, gF1F1F1F4, gF1F1F1F5, gF1F1F1F6, gF1F1F1F7, gF1F1F1F8, gF1F1F1F9, gF1F2F1F1, gF1F2, gF1F2F1F3, gF1F2F1F4, gF1F2F1F5, gF1F2F1F6, gF1F2F1F7, gF1F2F1F8, gF1F2F1F9, gF1F3F1F1, gF1F3F1F2, gF1F3, gF1F3F1F4, gF1F3F1F5, gF1F3F1F6, gF1F3F1F7, gF1F3F1F8, gF1F3F1F9, gF1F4F1F1, gF1F4F1F2, gF1F4F1F3, gF1F4, gF1F4F1F5, gF1F4F1F6, gF1F4F1F7, gF1F4F1F8, gF1F4F1F9, gF1F5F1F1, gF1F5F1F2, gF1F5F1F3, gF1F5F1F4, gF1F5, gF1F5F1F6, gF1F5F1F7, gF1F5F1F8, gF1F5F1F9, gF1F6F1F1, gF1F6F1F2, gF1F6F1F3, gF1F6F1F4, gF1F6F1F5, gF1F6, gF1F6F1F7, gF1F6F1F8, gF1F6F1F9, gF1F7F1F1, gF1F7F1F2, gF1F7F1F3, gF1F7F1F4, gF1F7F1F5, gF1F7F1F6, gF1F7, gF1F7F1F8, gF1F7F1F9, gF1F8F1F1, gF1F8F1F2, gF1F8F1F3, gF1F8F1F4, gF1F8F1F5, gF1F8F1F6, gF1F8F1F7, gF1F8, gF1F8F1F9, gF1F9F1F1, gF1F9F1F2, gF1F9F1F3, gF1F9F1F4, gF1F9F1F5, gF1F9F1F6, gF1F9F1F7, gF1F9F1F8, gF1F9); cLrg = (gF26A_lrg, gF21D_lrg, g02BC_lrg); cno_Lrg = (gF26A, gF21D, g02BC); cLrgBowl = (g0264_lrgBowl, g0293_lrgBowl); cno_LrgBowl = (g0264, g0293); cMongolStyle = (g044D_mongolStyle, g042D_mongolStyle); cno_MongolStyle = (g044D, g042D); cOpenTop = (g0223_openTop, g0222_openTop, g1D3D_openTop, g1D15_openTop); cno_OpenTop = (g0223, g0222, g1D3D, g1D15); cRetroHookStyle = (g_aogonek_retro_hook_style, g_aogonek_sng_story_retro_hook_style, g__aogonek_retro_hook_style, g_eogonek_retro_hook_style, g__eogonek_retro_hook_style, g_iogonek_retro_hook_style, g__iogonek_retro_hook_style, g01EB_retroHookStyle, g01ED_retroHookStyle, g01EA_retroHookStyle, g01EC_retroHookStyle, g_uogonek_retro_hook_style, g__uogonek_retro_hook_style, g0328_retroHookStyle, g_ogonek_retro_hook_style); cno_RetroHookStyle = (g_aogonek, g_aogonek_sng_story, g__aogonek, g_eogonek, g__eogonek, g_iogonek, g__iogonek, g01EB, g01ED, g01EA, g01EC, g_uogonek, g__uogonek, g0328, g_ogonek); cRevSigmaStyle = (g01B7_revSigmaStyle, g04E0_revSigmaStyle); cno_RevSigmaStyle = (g01B7, g04E0); cRtHook = (g01AC_rtHook, g01B3_rtHook); cno_RtHook = (g01AC, g01B3); cShort = (g0331_short, g0304_short); cno_Short = (g0331, g0304); cShowInv = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cno_ShowInv = (g00AD, g034F, g2061, g2063, g2062, g202A, g200E, g202D, g202C, g202B, g200F, g202E, gFE00, gFE01, gFE02, gFE03, gFE04, gFE05, gFE06, gFE07, gFE08, gFE09, gFE0A, gFE0B, gFE0C, gFE0D, gFE0E, gFE0F, g2060, g200D, gFEFF, g200C, g200B); cSlantItalic = (g_f_slant_italic, g_f_i_slant_italic, g_f_l_slant_italic, g_f_f_i_slant_italic, g_f_f_l_slant_italic, g_f_f_slant_italic, g0493_slantItalic, gF327_slantItalic, g04FB_slantItalic, g_i_slant_italic, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g_l_slant_italic, g_v_slant_italic, g_z_slant_italic); cno_SlantItalic = (g_f, g_f_i, g_f_l, g_f_f_i, g_f_f_l, g_f_f, g0493, gF327, g04FB, g_i, g_dotlessi, g_i_dotless, g_l, g_v, g_z); cSlashZero = (g_emptyset_slash_zero); cno_SlashZero = (g_emptyset); cSngBowl = (g_g_sng_bowl, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g01E5_barBowl_sngBowl); cno_SngBowl = (g_g, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01E5_barBowl); cSngStory = (g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story); cno_SngStory = (g_a, g_aacute, g_agrave, g0201, g_acircumflex, g1EAD, g1EA5, g1EA7, g1EAB, g1EA9, g0203, g_abreve, g1EB7, g1EAF, g1EB1, g1EB5, g1EB3, g01CE, g_atilde, g_amacron, g_adieresis, g01DF, g0227, g01E1, g_aring, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek); cStraightLft = (g028B_straightLft); cno_StraightLft = (g028B); cSup = (g0308_sup); cno_Sup = (g0308); cTopSerif = (g0254_topSerif, g1D53_topSerif, g1D97_topSerif, g0186_topSerif, g1D10_topSerif, g0284_topSerif); cno_TopSerif = (g0254, g1D53, g1D97, g0186, g1D10, g0284); cUCStyle = (g04BB_uCStyle, g__eng_u_c_style); cno_UCStyle = (g04BB, g__eng); cUL = (g0311_uL, g0308_uL); cno_UL = (g0311, g0308); cUU = (g0311_uU, g0308_uU); cno_UU = (g0311, g0308); cVN = (g1EA5_vN, g1EA7_vN, g1EAB_vN, g1EA9_vN, g1EAF_vN, g1EB1_vN, g1EB5_vN, g1EB3_vN, g1EA4_vN, g1EA6_vN, g1EAA_vN, g1EA8_vN, g1EAE_vN, g1EB0_vN, g1EB4_vN, g1EB2_vN, g1EBF_vN, g1EC1_vN, g1EC5_vN, g1EC3_vN, g1EBE_vN, g1EC0_vN, g1EC4_vN, g1EC2_vN, g1ED1_vN, g1ED3_vN, g1ED7_vN, g1ED5_vN, g1ED0_vN, g1ED2_vN, g1ED6_vN, g1ED4_vN); cno_VN = (g1EA5, g1EA7, g1EAB, g1EA9, g1EAF, g1EB1, g1EB5, g1EB3, g1EA4, g1EA6, g1EAA, g1EA8, g1EAE, g1EB0, g1EB4, g1EB2, g1EBF, g1EC1, g1EC5, g1EC3, g1EBE, g1EC0, g1EC4, g1EC2, g1ED1, g1ED3, g1ED7, g1ED5, g1ED0, g1ED2, g1ED6, g1ED4); cVertStrk = (g__hbar_vert_strk); cno_VertStrk = (g__hbar); cWide = (gF1E9_wide); cno_Wide = (gF1E9); clstaff = (gA716_lstaff, gA715_lstaff, gA714_lstaff, gA713_lstaff, gA712_lstaff); cno_lstaff = (gA716, gA715, gA714, gA713, gA712); clstaffno = (gA716_lstaffno, gA715_lstaffno, gA714_lstaffno, gA713_lstaffno, gA712_lstaffno); cno_lstaffno = (gA716, gA715, gA714, gA713, gA712); cno = (g02E9_no, g02E8_no, g02E7_no, g02E6_no, g02E5_no, gA716_no, gA715_no, gA714_no, gA713_no, gA712_no); cno_no = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); cno_rstaff = (g02E9, g02E8, g02E7, g02E6, g02E5); crstaff = (g02E9_rstaff, g02E8_rstaff, g02E7_rstaff, g02E6_rstaff, g02E5_rstaff); cno_rstaffno = (g02E9, g02E8, g02E7, g02E6, g02E5); crstaffno = (g02E9_rstaffno, g02E8_rstaffno, g02E7_rstaffno, g02E6_rstaffno, g02E5_rstaffno); endtable; #define MAXGLYPH 2674 #include "CharisRules.gdh" grcompiler-5.2.1/test/GrcRegressionTest/fonts/CharisPitches.gdh000066400000000000000000000741111411153030700246220ustar00rootroot00000000000000/* Description: GDL Code to handle tone ligatures for Roman fonts. Author: Sharon Correll and Mark Anderson Changes SJC 2007-01-23 9-level pitch tramlines only happen on spaces that are surrounded by pitches SJC 2006-12-15 Added 9-level pitch system SJC/MAA 2005-05-10 Reworked to use attachments rather than ligatures. */ #include "stddef.gdh" ////////////////////////////////////////////////////////////////////////////////////// // // Five-pitch system // // Identical-tone chain handling: #define TLSTATE user1 #define TLSfirst 0 // 0 is the initial value #define TLSchain 1 #define TLSstop 2 // Special handling for identical-tone chain with a left-staff; these are tricky. #define LTFLAG user2 #define LThit 1 #define LTback 2 // To save space, use the same user-defined variables differently for the 9-pitch system. // To mark chains: #define P9SEQ user1 #define P9last 0 #define P9more 1 // For deleting superfluous 9-pitch glyph. #define P9DEL user2 #define P9keep 1 #define P9del 2 // Debuggers: #define BBLEFT user3 #define BBRIGHT user4 table(glyph) // Individual glyph definitions gRightStaff1 = postscript("uni02E9.rstaff") {tone = 1}; gRightStaff2 = postscript("uni02E8.rstaff") {tone = 2}; gRightStaff3 = postscript("uni02E7.rstaff") {tone = 3}; gRightStaff4 = postscript("uni02E6.rstaff") {tone = 4}; gRightStaff5 = postscript("uni02E5.rstaff") {tone = 5}; gRightStaff1_no = postscript("uni02E9.rstaffno") {tone = 1}; gRightStaff2_no = postscript("uni02E8.rstaffno") {tone = 2}; gRightStaff3_no = postscript("uni02E7.rstaffno") {tone = 3}; gRightStaff4_no = postscript("uni02E6.rstaffno") {tone = 4}; gRightStaff5_no = postscript("uni02E5.rstaffno") {tone = 5}; gRightTone1 = postscript("uni02E9") {tone = 1}; gRightTone11 = postscript("uni02E9.1") {tone = 1}; gRightTone12 = postscript("uni02E9.2") {tone = 1}; gRightTone13 = postscript("uni02E9.3") {tone = 1}; gRightTone14 = postscript("uni02E9.4") {tone = 1}; gRightTone15 = postscript("uni02E9.5") {tone = 1}; gRightTone2 = postscript("uni02E8") {tone = 2}; gRightTone21 = postscript("uni02E8.1") {tone = 2}; gRightTone22 = postscript("uni02E8.2") {tone = 2}; gRightTone23 = postscript("uni02E8.3") {tone = 2}; gRightTone24 = postscript("uni02E8.4") {tone = 2}; gRightTone25 = postscript("uni02E8.5") {tone = 2}; gRightTone3 = postscript("uni02E7") {tone = 3}; gRightTone31 = postscript("uni02E7.1") {tone = 3}; gRightTone32 = postscript("uni02E7.2") {tone = 3}; gRightTone33 = postscript("uni02E7.3") {tone = 3}; gRightTone34 = postscript("uni02E7.4") {tone = 3}; gRightTone35 = postscript("uni02E7.5") {tone = 3}; gRightTone4 = postscript("uni02E6") {tone = 4}; gRightTone41 = postscript("uni02E6.1") {tone = 4}; gRightTone42 = postscript("uni02E6.2") {tone = 4}; gRightTone43 = postscript("uni02E6.3") {tone = 4}; gRightTone44 = postscript("uni02E6.4") {tone = 4}; gRightTone45 = postscript("uni02E6.5") {tone = 4}; gRightTone5 = postscript("uni02E5") {tone = 5}; gRightTone51 = postscript("uni02E5.1") {tone = 5}; gRightTone52 = postscript("uni02E5.2") {tone = 5}; gRightTone53 = postscript("uni02E5.3") {tone = 5}; gRightTone54 = postscript("uni02E5.4") {tone = 5}; gRightTone55 = postscript("uni02E5.5") {tone = 5}; gLeftStaff1 = postscript("uniA716.lstaff") {tone = 1}; gLeftStaff2 = postscript("uniA715.lstaff") {tone = 2}; gLeftStaff3 = postscript("uniA714.lstaff") {tone = 3}; gLeftStaff4 = postscript("uniA713.lstaff") {tone = 4}; gLeftStaff5 = postscript("uniA712.lstaff") {tone = 5}; gLeftStaff1_no = postscript("uniA716.lstaffno") {tone = 1}; gLeftStaff2_no = postscript("uniA715.lstaffno") {tone = 2}; gLeftStaff3_no = postscript("uniA714.lstaffno") {tone = 3}; gLeftStaff4_no = postscript("uniA713.lstaffno") {tone = 4}; gLeftStaff5_no = postscript("uniA712.lstaffno") {tone = 5}; /* gLeftTone1 = postscript("uniA716"); gLeftTone2 = postscript("uniA715"); gLeftTone3 = postscript("uniA714"); gLeftTone4 = postscript("uniA713"); gLeftTone5 = postscript("uniA712"); */ gLeftTone1 = U+A716 {tone = 1}; gLeftTone2 = U+A715 {tone = 2}; gLeftTone3 = U+A714 {tone = 3}; gLeftTone4 = U+A713 {tone = 4}; gLeftTone5 = U+A712 {tone = 5}; gLeftTone11 = postscript("uniA716.1") {tone = 1}; gLeftTone12 = postscript("uniA715.1") {tone = 1}; // 1878 gLeftTone13 = postscript("uniA714.1") {tone = 1}; gLeftTone14 = postscript("uniA713.1") {tone = 1}; gLeftTone15 = postscript("uniA712.1") {tone = 1}; gLeftTone21 = postscript("uniA716.2") {tone = 2}; gLeftTone22 = postscript("uniA715.2") {tone = 2}; gLeftTone23 = postscript("uniA714.2") {tone = 2}; gLeftTone24 = postscript("uniA713.2") {tone = 2}; gLeftTone25 = postscript("uniA712.2") {tone = 2}; gLeftTone31 = postscript("uniA716.3") {tone = 3}; gLeftTone32 = postscript("uniA715.3") {tone = 3}; gLeftTone33 = postscript("uniA714.3") {tone = 3}; gLeftTone34 = postscript("uniA713.3") {tone = 3}; gLeftTone35 = postscript("uniA712.3") {tone = 3}; gLeftTone41 = postscript("uniA716.4") {tone = 4}; gLeftTone42 = postscript("uniA715.4") {tone = 4}; gLeftTone43 = postscript("uniA714.4") {tone = 4}; gLeftTone44 = postscript("uniA713.4") {tone = 4}; gLeftTone45 = postscript("uniA712.4") {tone = 4}; gLeftTone51 = postscript("uniA716.5") {tone = 5}; gLeftTone52 = postscript("uniA715.5") {tone = 5}; gLeftTone53 = postscript("uniA714.5") {tone = 5}; gLeftTone54 = postscript("uniA713.5") {tone = 5}; gLeftTone55 = postscript("uniA712.5") {tone = 5}; cSupNum = (g_onesuperior, g_twosuperior, g_threesuperior, g2074, g2075); // Right staff cRightTone1 = (gRightTone1, gRightStaff1, gRightStaff1_no); cRightTone2 = (gRightTone2, gRightStaff2, gRightStaff2_no); cRightTone3 = (gRightTone3, gRightStaff3, gRightStaff3_no); cRightTone4 = (gRightTone4, gRightStaff4, gRightStaff4_no); cRightTone5 = (gRightTone5, gRightStaff5, gRightStaff5_no); // indexed classes: cRightTone = (gRightTone1, gRightTone2, gRightTone3, gRightTone4, gRightTone5); cRightStaff = (gRightStaff1, gRightStaff2, gRightStaff3, gRightStaff4, gRightStaff5); cRightStaff_no = (gRightStaff1_no,gRightStaff2_no,gRightStaff3_no,gRightStaff4_no,gRightStaff5_no); cRightTone1Contour = (gRightTone11, gRightTone12, gRightTone13, gRightTone14, gRightTone15); cRightTone2Contour = (gRightTone21, gRightTone22, gRightTone23, gRightTone24, gRightTone25); cRightTone3Contour = (gRightTone31, gRightTone32, gRightTone33, gRightTone34, gRightTone35); cRightTone4Contour = (gRightTone41, gRightTone42, gRightTone43, gRightTone44, gRightTone45); cRightTone5Contour = (gRightTone51, gRightTone52, gRightTone53, gRightTone54, gRightTone55); cRightToneHoriz = (gRightTone11, gRightTone22, gRightTone33, gRightTone44, gRightTone55); // for positioning: cRightContour = (cRightTone1Contour, cRightTone2Contour, cRightTone3Contour, cRightTone4Contour, cRightTone5Contour); cRightContourOrStaff = (cRightContour, cRightStaff, cRightStaff_no); // Left staff cLeftContourOrStaff1 = (gLeftStaff1, gLeftStaff1_no, gLeftTone11, gLeftTone21, gLeftTone31, gLeftTone41, gLeftTone51); cLeftContourOrStaff2 = (gLeftStaff2, gLeftStaff2_no, gLeftTone12, gLeftTone22, gLeftTone32, gLeftTone42, gLeftTone52); cLeftContourOrStaff3 = (gLeftStaff3, gLeftStaff3_no, gLeftTone13, gLeftTone23, gLeftTone33, gLeftTone43, gLeftTone53); cLeftContourOrStaff4 = (gLeftStaff4, gLeftStaff4_no, gLeftTone14, gLeftTone24, gLeftTone34, gLeftTone44, gLeftTone54); cLeftContourOrStaff5 = (gLeftStaff5, gLeftStaff5_no, gLeftTone15, gLeftTone25, gLeftTone35, gLeftTone45, gLeftTone55); // indexed classes: cLeftTone = (gLeftTone1, gLeftTone2, gLeftTone3, gLeftTone4, gLeftTone5); cLeftStaff = (gLeftStaff1, gLeftStaff2, gLeftStaff3, gLeftStaff4, gLeftStaff5); cLeftStaff_no = (gLeftStaff1_no,gLeftStaff2_no,gLeftStaff3_no,gLeftStaff4_no,gLeftStaff5_no); cLeftTone1Contour = (gLeftTone11, gLeftTone12, gLeftTone13, gLeftTone14, gLeftTone15); cLeftTone2Contour = (gLeftTone21, gLeftTone22, gLeftTone23, gLeftTone24, gLeftTone25); cLeftTone3Contour = (gLeftTone31, gLeftTone32, gLeftTone33, gLeftTone34, gLeftTone35); cLeftTone4Contour = (gLeftTone41, gLeftTone42, gLeftTone43, gLeftTone44, gLeftTone45); cLeftTone5Contour = (gLeftTone51, gLeftTone52, gLeftTone53, gLeftTone54, gLeftTone55); cLeftToneHoriz = (gLeftTone11, gLeftTone22, gLeftTone33, gLeftTone44, gLeftTone55); // for positioning: cLeftContour = (cLeftTone1Contour, cLeftTone2Contour, cLeftTone3Contour, cLeftTone4Contour, cLeftTone5Contour); cLeftContourOrStaff = (cLeftContour, cLeftStaff, cLeftStaff_no); endtable; // glyph table(subs) pass(1) {MaxBackup = 15; MaxRuleLoop = 30} // Right staff if (supernum) // _ cPitch > g207B:3 cSupNum:3 / cSupNum _ _; // include minus sign between digits cRightTone > cSupNum; cLeftTone > cSupNum; //else // NB: The normal algorithm includes this else-clause, but it cannot in this // case because the cSupNum contains encoded characters that should NOT be displayed // as tone bars if the feature happens to be off! // cSupNum > cPitch; endif; // else... // For each of the rules below, if we have an identical-tone chain going, // and the two tones are still equal, continue the chain. Identical-tone chains // need to be handled specially below (in pass 2). #define SETSTATE {TLSTATE = ((@1.tone == @2.tone) && (@1.TLSTATE != TLSstop)) ? TLSchain : TLSstop} if (!supernum && hide_tone_staff) // hidden staves cRightTone1 cRightTone > cRightTone1Contour$2 cRightStaff_no$2 SETSTATE / _ ^ _; cRightTone2 cRightTone > cRightTone2Contour$2 cRightStaff_no$2 SETSTATE / _ ^ _; cRightTone3 cRightTone > cRightTone3Contour$2 cRightStaff_no$2 SETSTATE / _ ^ _; cRightTone4 cRightTone > cRightTone4Contour$2 cRightStaff_no$2 SETSTATE / _ ^ _; cRightTone5 cRightTone > cRightTone5Contour$2 cRightStaff_no$2 SETSTATE / _ ^ _; endif; if (!supernum && !hide_tone_staff) cRightTone1 cRightTone > cRightTone1Contour$2 cRightStaff$2 SETSTATE / _ ^ _; cRightTone2 cRightTone > cRightTone2Contour$2 cRightStaff$2 SETSTATE / _ ^ _; cRightTone3 cRightTone > cRightTone3Contour$2 cRightStaff$2 SETSTATE / _ ^ _; cRightTone4 cRightTone > cRightTone4Contour$2 cRightStaff$2 SETSTATE / _ ^ _; cRightTone5 cRightTone > cRightTone5Contour$2 cRightStaff$2 SETSTATE / _ ^ _; endif; // Left staff if (!supernum && hide_tone_staff) cLeftTone > cLeftStaff_no$1 / ^ _ cLeftTone; endif; if (!supernum && !hide_tone_staff) cLeftTone > cLeftStaff$1 / ^ _ cLeftTone; endif; // These will only fire in the case of !supernum. (It is more efficient to omit // unnecessary constraints.) cLeftContourOrStaff1 cLeftTone > @1 cLeftTone1Contour$2 SETSTATE / _ ^ _; cLeftContourOrStaff2 cLeftTone > @1 cLeftTone2Contour$2 SETSTATE / _ ^ _; cLeftContourOrStaff3 cLeftTone > @1 cLeftTone3Contour$2 SETSTATE / _ ^ _; cLeftContourOrStaff4 cLeftTone > @1 cLeftTone4Contour$2 SETSTATE / _ ^ _; cLeftContourOrStaff5 cLeftTone > @1 cLeftTone5Contour$2 SETSTATE / _ ^ _; endpass; // sub - 1 pass(2) {MaxBackup = 15; MaxRuleLoop = 30} // Identical-tone chains need special handling: the staff needs to be replaced by a staff // plus a horizontal bar. _ cRightStaff > cRightToneHoriz$2:2 @2 / _ _ {TLSTATE == TLSchain}; _ cRightStaff_no > cRightToneHoriz$2:2 @2 / _ _ {TLSTATE == TLSchain}; // Left-staff identical-tone chains are tricky. We have to search backwards from // the end of the chain to be sure they are all the same tone. A proper chain is // marked with TLSTATE == TLSchain all the way through. (An improper chain may have // TLSTATE == TLSchain just at the beginning. // Keep progressing through a chain (till we get to the end): cLeftContourOrStaff { LTFLAG = LThit } / _ { LTFLAG == 0 } cLeftContour {LTFLAG == 0}; // Found the end of the chain; start backing up: cLeftContour { LTFLAG = LTback } / ^ cLeftContourOrStaff {LTFLAG == LThit} // the first item might not have TLSTATE == TLSchain _ {TLSTATE == TLSchain}; // Hit the beginning of the sequence; do the insertion: cLeftStaff _ > @1 cLeftToneHoriz$1:1 / _ _ cLeftContour {LTFLAG == LTback && TLSTATE == TLSchain}; cLeftStaff_no _ > @1 cLeftToneHoriz$1:1 / _ _ cLeftContour {LTFLAG == LTback && TLSTATE == TLSchain}; endpass; // sub - 2 endtable; // subs table(positioning) pass(1) cRightContour {BBLEFT = bb.left; BBRIGHT = bb.right} cRightContourOrStaff { attach {to = @1; at = TL; with = TML }; insert = true; /* BBLEFT = bb.left; BBRIGHT = bb.right */ } / _ ^ _; cLeftContourOrStaff cLeftContour { attach {to = @1; at = TL; with = TML }; insert = true} / _ ^ _; endpass; // pos - 1 endtable; // positioning ////////////////////////////////////////////////////////////////////////////////////// // // Nine-pitch system // table(glyph) g9Pitch1 = postscript("uniF1F1"); g9Pitch2 = postscript("uniF1F2"); g9Pitch3 = postscript("uniF1F3"); g9Pitch4 = postscript("uniF1F4"); g9Pitch5 = postscript("uniF1F5"); g9Pitch6 = postscript("uniF1F6"); g9Pitch7 = postscript("uniF1F7"); g9Pitch8 = postscript("uniF1F8"); g9Pitch9 = postscript("uniF1F9"); g9Pitch11 = pseudo(postscript("uniF1F1")); // process this differently than g9Pitch1--it represents a 1-1 sequence g9Pitch12 = postscript("uniF1F1F1F2"); g9Pitch13 = postscript("uniF1F1F1F3"); g9Pitch14 = postscript("uniF1F1F1F4"); g9Pitch15 = postscript("uniF1F1F1F5"); g9Pitch16 = postscript("uniF1F1F1F6"); g9Pitch17 = postscript("uniF1F1F1F7"); g9Pitch18 = postscript("uniF1F1F1F8"); g9Pitch19 = postscript("uniF1F1F1F9"); g9Pitch21 = postscript("uniF1F2F1F1"); g9Pitch22 = pseudo(postscript("uniF1F2")); // different than g9Pitch2--it represents a 2-2 sequence g9Pitch23 = postscript("uniF1F2F1F3"); g9Pitch24 = postscript("uniF1F2F1F4"); g9Pitch25 = postscript("uniF1F2F1F5"); g9Pitch26 = postscript("uniF1F2F1F6"); g9Pitch27 = postscript("uniF1F2F1F7"); g9Pitch28 = postscript("uniF1F2F1F8"); g9Pitch29 = postscript("uniF1F2F1F9"); g9Pitch31 = postscript("uniF1F3F1F1"); g9Pitch32 = postscript("uniF1F3F1F2"); g9Pitch33 = pseudo(postscript("uniF1F3")); // process this differently than g9Pitch3 g9Pitch34 = postscript("uniF1F3F1F4"); g9Pitch35 = postscript("uniF1F3F1F5"); g9Pitch36 = postscript("uniF1F3F1F6"); g9Pitch37 = postscript("uniF1F3F1F7"); g9Pitch38 = postscript("uniF1F3F1F8"); g9Pitch39 = postscript("uniF1F3F1F9"); g9Pitch41 = postscript("uniF1F4F1F1"); g9Pitch42 = postscript("uniF1F4F1F2"); g9Pitch43 = postscript("uniF1F4F1F3"); g9Pitch44 = pseudo(postscript("uniF1F4")); // process this differently than g9Pitch4 g9Pitch45 = postscript("uniF1F4F1F5"); g9Pitch46 = postscript("uniF1F4F1F6"); g9Pitch47 = postscript("uniF1F4F1F7"); g9Pitch48 = postscript("uniF1F4F1F8"); g9Pitch49 = postscript("uniF1F4F1F9"); g9Pitch51 = postscript("uniF1F5F1F1"); g9Pitch52 = postscript("uniF1F5F1F2"); g9Pitch53 = postscript("uniF1F5F1F3"); g9Pitch54 = postscript("uniF1F5F1F4"); g9Pitch55 = pseudo(postscript("uniF1F5")); // process this differently than g9Pitch5 g9Pitch56 = postscript("uniF1F5F1F6"); g9Pitch57 = postscript("uniF1F5F1F7"); g9Pitch58 = postscript("uniF1F5F1F8"); g9Pitch59 = postscript("uniF1F5F1F9"); g9Pitch61 = postscript("uniF1F6F1F1"); g9Pitch62 = postscript("uniF1F6F1F2"); g9Pitch63 = postscript("uniF1F6F1F3"); g9Pitch64 = postscript("uniF1F6F1F4"); g9Pitch65 = postscript("uniF1F6F1F5"); g9Pitch66 = pseudo(postscript("uniF1F6")); // process this differently than g9Pitch6 g9Pitch67 = postscript("uniF1F6F1F7"); g9Pitch68 = postscript("uniF1F6F1F8"); g9Pitch69 = postscript("uniF1F6F1F9"); g9Pitch71 = postscript("uniF1F7F1F1"); g9Pitch72 = postscript("uniF1F7F1F2"); g9Pitch73 = postscript("uniF1F7F1F3"); g9Pitch74 = postscript("uniF1F7F1F4"); g9Pitch75 = postscript("uniF1F7F1F5"); g9Pitch76 = postscript("uniF1F7F1F6"); g9Pitch77 = pseudo(postscript("uniF1F7")); // process this differently than g9Pitch7 g9Pitch78 = postscript("uniF1F7F1F8"); g9Pitch79 = postscript("uniF1F7F1F9"); g9Pitch81 = postscript("uniF1F8F1F1"); g9Pitch82 = postscript("uniF1F8F1F2"); g9Pitch83 = postscript("uniF1F8F1F3"); g9Pitch84 = postscript("uniF1F8F1F4"); g9Pitch85 = postscript("uniF1F8F1F5"); g9Pitch86 = postscript("uniF1F8F1F6"); g9Pitch87 = postscript("uniF1F8F1F7"); g9Pitch88 = pseudo(postscript("uniF1F8")); // process this differently than g9Pitch8 g9Pitch89 = postscript("uniF1F8F1F9"); g9Pitch91 = postscript("uniF1F9F1F1"); g9Pitch92 = postscript("uniF1F9F1F2"); g9Pitch93 = postscript("uniF1F9F1F3"); g9Pitch94 = postscript("uniF1F9F1F4"); g9Pitch95 = postscript("uniF1F9F1F5"); g9Pitch96 = postscript("uniF1F9F1F6"); g9Pitch97 = postscript("uniF1F9F1F7"); g9Pitch98 = postscript("uniF1F9F1F8"); g9Pitch99 = pseudo(postscript("uniF1F9")); // process this differently than g9Pitch9 // The following 3 groups of classes must correspond. c9PitchX = (g9Pitch1 g9Pitch2 g9Pitch3 g9Pitch4 g9Pitch5 g9Pitch6 g9Pitch7 g9Pitch8 g9Pitch9); c9Pitch1X = (g9Pitch11 g9Pitch12 g9Pitch13 g9Pitch14 g9Pitch15 g9Pitch16 g9Pitch17 g9Pitch18 g9Pitch19); c9Pitch2X = (g9Pitch21 g9Pitch22 g9Pitch23 g9Pitch24 g9Pitch25 g9Pitch26 g9Pitch27 g9Pitch28 g9Pitch29); c9Pitch3X = (g9Pitch31 g9Pitch32 g9Pitch33 g9Pitch34 g9Pitch35 g9Pitch36 g9Pitch37 g9Pitch38 g9Pitch39); c9Pitch4X = (g9Pitch41 g9Pitch42 g9Pitch43 g9Pitch44 g9Pitch45 g9Pitch46 g9Pitch47 g9Pitch48 g9Pitch49); c9Pitch5X = (g9Pitch51 g9Pitch52 g9Pitch53 g9Pitch54 g9Pitch55 g9Pitch56 g9Pitch57 g9Pitch58 g9Pitch59); c9Pitch6X = (g9Pitch61 g9Pitch62 g9Pitch63 g9Pitch64 g9Pitch65 g9Pitch66 g9Pitch67 g9Pitch68 g9Pitch69); c9Pitch7X = (g9Pitch71 g9Pitch72 g9Pitch73 g9Pitch74 g9Pitch75 g9Pitch76 g9Pitch77 g9Pitch78 g9Pitch79); c9Pitch8X = (g9Pitch81 g9Pitch82 g9Pitch83 g9Pitch84 g9Pitch85 g9Pitch86 g9Pitch87 g9Pitch88 g9Pitch89); c9Pitch9X = (g9Pitch91 g9Pitch92 g9Pitch93 g9Pitch94 g9Pitch95 g9Pitch96 g9Pitch97 g9Pitch98 g9Pitch99); c9PitchX1 = (g9Pitch11 g9Pitch21 g9Pitch31 g9Pitch41 g9Pitch51 g9Pitch61 g9Pitch71 g9Pitch81 g9Pitch91); c9PitchX2 = (g9Pitch12 g9Pitch22 g9Pitch32 g9Pitch42 g9Pitch52 g9Pitch62 g9Pitch72 g9Pitch82 g9Pitch92); c9PitchX3 = (g9Pitch13 g9Pitch23 g9Pitch33 g9Pitch43 g9Pitch53 g9Pitch63 g9Pitch73 g9Pitch83 g9Pitch93); c9PitchX4 = (g9Pitch14 g9Pitch24 g9Pitch34 g9Pitch44 g9Pitch54 g9Pitch64 g9Pitch74 g9Pitch84 g9Pitch94); c9PitchX5 = (g9Pitch15 g9Pitch25 g9Pitch35 g9Pitch45 g9Pitch55 g9Pitch65 g9Pitch75 g9Pitch85 g9Pitch95); c9PitchX6 = (g9Pitch16 g9Pitch26 g9Pitch36 g9Pitch46 g9Pitch56 g9Pitch66 g9Pitch76 g9Pitch86 g9Pitch96); c9PitchX7 = (g9Pitch17 g9Pitch27 g9Pitch37 g9Pitch47 g9Pitch57 g9Pitch67 g9Pitch77 g9Pitch87 g9Pitch97); c9PitchX8 = (g9Pitch18 g9Pitch28 g9Pitch38 g9Pitch48 g9Pitch58 g9Pitch68 g9Pitch78 g9Pitch88 g9Pitch98); c9PitchX9 = (g9Pitch19 g9Pitch29 g9Pitch39 g9Pitch49 g9Pitch59 g9Pitch69 g9Pitch79 g9Pitch89 g9Pitch99); ////// c9PitchXX = (c9Pitch1X c9Pitch2X c9Pitch3X c9Pitch4X c9Pitch5X c9Pitch6X c9Pitch7X c9Pitch8X c9Pitch9X) { component.p1 = box(0,-descent, aw/2,ascent); component.p2 = box(aw/2,-descent, aw,ascent) }; // Glyphs with tramlines: g9Pitch1_Lines = postscript("uniF1F1.Lines"); g9Pitch2_Lines = postscript("uniF1F2.Lines"); g9Pitch3_Lines = postscript("uniF1F3.Lines"); g9Pitch4_Lines = postscript("uniF1F4.Lines"); g9Pitch5_Lines = postscript("uniF1F5.Lines"); g9Pitch6_Lines = postscript("uniF1F6.Lines"); g9Pitch7_Lines = postscript("uniF1F7.Lines"); g9Pitch8_Lines = postscript("uniF1F8.Lines"); g9Pitch9_Lines = postscript("uniF1F9.Lines"); g9Pitch11_Lines = postscript("uniF1F1.Lines"); // don't need a pseudo-glyph for these because no further special processing is needed g9Pitch12_Lines = postscript("uniF1F1F1F2.Lines"); g9Pitch13_Lines = postscript("uniF1F1F1F3.Lines"); g9Pitch14_Lines = postscript("uniF1F1F1F4.Lines"); g9Pitch15_Lines = postscript("uniF1F1F1F5.Lines"); g9Pitch16_Lines = postscript("uniF1F1F1F6.Lines"); g9Pitch17_Lines = postscript("uniF1F1F1F7.Lines"); g9Pitch18_Lines = postscript("uniF1F1F1F8.Lines"); g9Pitch19_Lines = postscript("uniF1F1F1F9.Lines"); g9Pitch21_Lines = postscript("uniF1F2F1F1.Lines"); g9Pitch22_Lines = postscript("uniF1F2.Lines"); g9Pitch23_Lines = postscript("uniF1F2F1F3.Lines"); g9Pitch24_Lines = postscript("uniF1F2F1F4.Lines"); g9Pitch25_Lines = postscript("uniF1F2F1F5.Lines"); g9Pitch26_Lines = postscript("uniF1F2F1F6.Lines"); g9Pitch27_Lines = postscript("uniF1F2F1F7.Lines"); g9Pitch28_Lines = postscript("uniF1F2F1F8.Lines"); g9Pitch29_Lines = postscript("uniF1F2F1F9.Lines"); g9Pitch31_Lines = postscript("uniF1F3F1F1.Lines"); g9Pitch32_Lines = postscript("uniF1F3F1F2.Lines"); g9Pitch33_Lines = postscript("uniF1F3.Lines"); g9Pitch34_Lines = postscript("uniF1F3F1F4.Lines"); g9Pitch35_Lines = postscript("uniF1F3F1F5.Lines"); g9Pitch36_Lines = postscript("uniF1F3F1F6.Lines"); g9Pitch37_Lines = postscript("uniF1F3F1F7.Lines"); g9Pitch38_Lines = postscript("uniF1F3F1F8.Lines"); g9Pitch39_Lines = postscript("uniF1F3F1F9.Lines"); g9Pitch41_Lines = postscript("uniF1F4F1F1.Lines"); g9Pitch42_Lines = postscript("uniF1F4F1F2.Lines"); g9Pitch43_Lines = postscript("uniF1F4F1F3.Lines"); g9Pitch44_Lines = postscript("uniF1F4.Lines"); g9Pitch45_Lines = postscript("uniF1F4F1F5.Lines"); g9Pitch46_Lines = postscript("uniF1F4F1F6.Lines"); g9Pitch47_Lines = postscript("uniF1F4F1F7.Lines"); g9Pitch48_Lines = postscript("uniF1F4F1F8.Lines"); g9Pitch49_Lines = postscript("uniF1F4F1F9.Lines"); g9Pitch51_Lines = postscript("uniF1F5F1F1.Lines"); g9Pitch52_Lines = postscript("uniF1F5F1F2.Lines"); g9Pitch53_Lines = postscript("uniF1F5F1F3.Lines"); g9Pitch54_Lines = postscript("uniF1F5F1F4.Lines"); g9Pitch55_Lines = postscript("uniF1F5.Lines"); g9Pitch56_Lines = postscript("uniF1F5F1F6.Lines"); g9Pitch57_Lines = postscript("uniF1F5F1F7.Lines"); g9Pitch58_Lines = postscript("uniF1F5F1F8.Lines"); g9Pitch59_Lines = postscript("uniF1F5F1F9.Lines"); g9Pitch61_Lines = postscript("uniF1F6F1F1.Lines"); g9Pitch62_Lines = postscript("uniF1F6F1F2.Lines"); g9Pitch63_Lines = postscript("uniF1F6F1F3.Lines"); g9Pitch64_Lines = postscript("uniF1F6F1F4.Lines"); g9Pitch65_Lines = postscript("uniF1F6F1F5.Lines"); g9Pitch66_Lines = postscript("uniF1F6.Lines"); g9Pitch67_Lines = postscript("uniF1F6F1F7.Lines"); g9Pitch68_Lines = postscript("uniF1F6F1F8.Lines"); g9Pitch69_Lines = postscript("uniF1F6F1F9.Lines"); g9Pitch71_Lines = postscript("uniF1F7F1F1.Lines"); g9Pitch72_Lines = postscript("uniF1F7F1F2.Lines"); g9Pitch73_Lines = postscript("uniF1F7F1F3.Lines"); g9Pitch74_Lines = postscript("uniF1F7F1F4.Lines"); g9Pitch75_Lines = postscript("uniF1F7F1F5.Lines"); g9Pitch76_Lines = postscript("uniF1F7F1F6.Lines"); g9Pitch77_Lines = postscript("uniF1F7.Lines"); g9Pitch78_Lines = postscript("uniF1F7F1F8.Lines"); g9Pitch79_Lines = postscript("uniF1F7F1F9.Lines"); g9Pitch81_Lines = postscript("uniF1F8F1F1.Lines"); g9Pitch82_Lines = postscript("uniF1F8F1F2.Lines"); g9Pitch83_Lines = postscript("uniF1F8F1F3.Lines"); g9Pitch84_Lines = postscript("uniF1F8F1F4.Lines"); g9Pitch85_Lines = postscript("uniF1F8F1F5.Lines"); g9Pitch86_Lines = postscript("uniF1F8F1F6.Lines"); g9Pitch87_Lines = postscript("uniF1F8F1F7.Lines"); g9Pitch88_Lines = postscript("uniF1F8.Lines"); g9Pitch89_Lines = postscript("uniF1F8F1F9.Lines"); g9Pitch91_Lines = postscript("uniF1F9F1F1.Lines"); g9Pitch92_Lines = postscript("uniF1F9F1F2.Lines"); g9Pitch93_Lines = postscript("uniF1F9F1F3.Lines"); g9Pitch94_Lines = postscript("uniF1F9F1F4.Lines"); g9Pitch95_Lines = postscript("uniF1F9F1F5.Lines"); g9Pitch96_Lines = postscript("uniF1F9F1F6.Lines"); g9Pitch97_Lines = postscript("uniF1F9F1F7.Lines"); g9Pitch98_Lines = postscript("uniF1F9F1F8.Lines"); g9Pitch99_Lines = postscript("uniF1F9.Lines"); g_pitchSpace = pseudo(postscript("space")); // special kind of space that might need tramlines g_noPitchSpace = pseudo(postscript("space")); // space that will not need tramlines after all // The following two classes must correspond. cno_LinesXXX = (g_pitchSpace g9Pitch1 g9Pitch2 g9Pitch3 g9Pitch4 g9Pitch5 g9Pitch6 g9Pitch7 g9Pitch8 g9Pitch9 g9Pitch11 g9Pitch12 g9Pitch13 g9Pitch14 g9Pitch15 g9Pitch16 g9Pitch17 g9Pitch18 g9Pitch19 g9Pitch21 g9Pitch22 g9Pitch23 g9Pitch24 g9Pitch25 g9Pitch26 g9Pitch27 g9Pitch28 g9Pitch29 g9Pitch31 g9Pitch32 g9Pitch33 g9Pitch34 g9Pitch35 g9Pitch36 g9Pitch37 g9Pitch38 g9Pitch39 g9Pitch41 g9Pitch42 g9Pitch43 g9Pitch44 g9Pitch45 g9Pitch46 g9Pitch47 g9Pitch48 g9Pitch49 g9Pitch51 g9Pitch52 g9Pitch53 g9Pitch54 g9Pitch55 g9Pitch56 g9Pitch57 g9Pitch58 g9Pitch59 g9Pitch61 g9Pitch62 g9Pitch63 g9Pitch64 g9Pitch65 g9Pitch66 g9Pitch67 g9Pitch68 g9Pitch69 g9Pitch71 g9Pitch72 g9Pitch73 g9Pitch74 g9Pitch75 g9Pitch76 g9Pitch77 g9Pitch78 g9Pitch79 g9Pitch81 g9Pitch82 g9Pitch83 g9Pitch84 g9Pitch85 g9Pitch86 g9Pitch87 g9Pitch88 g9Pitch89 g9Pitch91 g9Pitch92 g9Pitch93 g9Pitch94 g9Pitch95 g9Pitch96 g9Pitch97 g9Pitch98 g9Pitch99); cLinesXXX = (g_space_lines g9Pitch1_Lines g9Pitch2_Lines g9Pitch3_Lines g9Pitch4_Lines g9Pitch5_Lines g9Pitch6_Lines g9Pitch7_Lines g9Pitch8_Lines g9Pitch9_Lines g9Pitch11_Lines g9Pitch12_Lines g9Pitch13_Lines g9Pitch14_Lines g9Pitch15_Lines g9Pitch16_Lines g9Pitch17_Lines g9Pitch18_Lines g9Pitch19_Lines g9Pitch21_Lines g9Pitch22_Lines g9Pitch23_Lines g9Pitch24_Lines g9Pitch25_Lines g9Pitch26_Lines g9Pitch27_Lines g9Pitch28_Lines g9Pitch29_Lines g9Pitch31_Lines g9Pitch32_Lines g9Pitch33_Lines g9Pitch34_Lines g9Pitch35_Lines g9Pitch36_Lines g9Pitch37_Lines g9Pitch38_Lines g9Pitch39_Lines g9Pitch41_Lines g9Pitch42_Lines g9Pitch43_Lines g9Pitch44_Lines g9Pitch45_Lines g9Pitch46_Lines g9Pitch47_Lines g9Pitch48_Lines g9Pitch49_Lines g9Pitch51_Lines g9Pitch52_Lines g9Pitch53_Lines g9Pitch54_Lines g9Pitch55_Lines g9Pitch56_Lines g9Pitch57_Lines g9Pitch58_Lines g9Pitch59_Lines g9Pitch61_Lines g9Pitch62_Lines g9Pitch63_Lines g9Pitch64_Lines g9Pitch65_Lines g9Pitch66_Lines g9Pitch67_Lines g9Pitch68_Lines g9Pitch69_Lines g9Pitch71_Lines g9Pitch72_Lines g9Pitch73_Lines g9Pitch74_Lines g9Pitch75_Lines g9Pitch76_Lines g9Pitch77_Lines g9Pitch78_Lines g9Pitch79_Lines g9Pitch81_Lines g9Pitch82_Lines g9Pitch83_Lines g9Pitch84_Lines g9Pitch85_Lines g9Pitch86_Lines g9Pitch87_Lines g9Pitch88_Lines g9Pitch89_Lines g9Pitch91_Lines g9Pitch92_Lines g9Pitch93_Lines g9Pitch94_Lines g9Pitch95_Lines g9Pitch96_Lines g9Pitch97_Lines g9Pitch98_Lines g9Pitch99_Lines ) { component.p1 = box(0,-descent, aw/2,ascent); component.p2 = box(aw/2,-descent, aw,ascent) }; endtable; // glyph table(substitution) {MaxBackup = 15; MaxRuleLoop = 30;} pass(1) if (pitch9 < nonLigated) // do the ligation // Only spaces between pitches have the capacity to get tramlines. // space sequence that may need tramlines g_space > g_pitchSpace / (cno_LinesXXX g_pitchSpace) _ (cno_LinesXXX g_space); // end of space sequence followed by a pitch: leave as is (ie, can take tramlines) g_pitchSpace > @1 / _ cno_LinesXXX; // end of space sequence that is NOT followed by a pitch: cannot take tramline, and back up (g_space g_pitchSpace) > g_noPitchSpace / ^ g_pitchSpace _ ; // continue marking no-tramlines after backing up g_pitchSpace > g_noPitchSpace; // Don't need to mark a single item as last: that is the default (0). // Pick the form that ligates with the previous. // During this pass we leave the first item in place, which will end up being superfluous // unless we have a whole chain of identical pitches. (g9Pitch1 c9PitchX1) c9PitchX > @1 {P9SEQ = P9more} c9Pitch1X / _ ^ _; (g9Pitch2 c9PitchX2) c9PitchX > @1 {P9SEQ = P9more} c9Pitch2X / _ ^ _; (g9Pitch3 c9PitchX3) c9PitchX > @1 {P9SEQ = P9more} c9Pitch3X / _ ^ _; (g9Pitch4 c9PitchX4) c9PitchX > @1 {P9SEQ = P9more} c9Pitch4X / _ ^ _; (g9Pitch5 c9PitchX5) c9PitchX > @1 {P9SEQ = P9more} c9Pitch5X / _ ^ _; (g9Pitch6 c9PitchX6) c9PitchX > @1 {P9SEQ = P9more} c9Pitch6X / _ ^ _; (g9Pitch7 c9PitchX7) c9PitchX > @1 {P9SEQ = P9more} c9Pitch7X / _ ^ _; (g9Pitch8 c9PitchX8) c9PitchX > @1 {P9SEQ = P9more} c9Pitch8X / _ ^ _; (g9Pitch9 c9PitchX9) c9PitchX > @1 {P9SEQ = P9more} c9Pitch9X / _ ^ _; endif; endpass; // sub - 1 pass(2) // Note: the reason for the somewhat complicated processing is to allow us to delete the // superfluous first item and do the tramline substitution in one pass, rather than adding // an extra substitution pass. if (pitch9 < nonLigated) // do the ligation // Only one item in the chain: keep it! c9PitchX > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0 && P9SEQ == P9last}; // Unless we have a complete chain of all the same pitch, the first item is superfluous. // If that's the case, mark the first item as one we want to keep. // These rules handle a chain of up to 5 identical items. g9Pitch1 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch11? g9Pitch11]? g9Pitch11 ]? g9Pitch11 {P9SEQ == P9last} ; g9Pitch2 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch22? g9Pitch22]? g9Pitch22 ]? g9Pitch22 {P9SEQ == P9last} ; g9Pitch3 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch33? g9Pitch33]? g9Pitch33 ]? g9Pitch33 {P9SEQ == P9last} ; g9Pitch4 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch44? g9Pitch44]? g9Pitch44 ]? g9Pitch44 {P9SEQ == P9last} ; g9Pitch5 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch55? g9Pitch55]? g9Pitch55 ]? g9Pitch55 {P9SEQ == P9last} ; g9Pitch6 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch66? g9Pitch66]? g9Pitch66 ]? g9Pitch66 {P9SEQ == P9last} ; g9Pitch7 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch77? g9Pitch77]? g9Pitch77 ]? g9Pitch77 {P9SEQ == P9last} ; g9Pitch8 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch88? g9Pitch88]? g9Pitch88 ]? g9Pitch88 {P9SEQ == P9last} ; g9Pitch9 > @1 {P9DEL = P9keep} / ^ _ {P9DEL == 0} [[g9Pitch99? g9Pitch99]? g9Pitch99 ]? g9Pitch99 {P9SEQ == P9last} ; // There isn't a complete chain of identical items, so delete that first item. c9PitchX c9PitchXX > _ @2:(1 2) {comp {p1.ref = @1; p2.ref = @2 }} / _ {P9DEL != P9keep} ^ _ ; endif; // When all other processing has been done, substitute the tramline version. if (pitch9 == tramlines || pitch9 == tramNonLigated) // tramlines or tramNonLigated cno_LinesXXX > cLinesXXX; endif; endpass; // sub - 2 endtable; // subs grcompiler-5.2.1/test/GrcRegressionTest/fonts/CharisRules.gdh000066400000000000000000000564201411153030700243200ustar00rootroot00000000000000/* Title: Roman Font GDL description Author: Martin Hosken & Bob Hallissy Changes: SJC 2007-Jan-26 Cleaned up distinction between Open-O alternates and J-stroke-hook-alternate SJC 2006-Dec-4 Various changes for new version to support Unicode 5.0: Changed VNStyle to vN; added Chinantec tones, Cyrillic cursive italics, open-o serif feature SJC 2006 ?????? Added barred-j modifier to take smaller diacritics; added smallcaps code (turned off) SJC 2006-Apr-6 Allow ogonek and literacy rules to both fire SJC 2006-Mar-21 Handle literacy alternates + Vietnamese diacritics for NFC data SJC 2006-Jan-23 Added Cyrillic shha alternate SJC 2005-Oct-14 Added slant-italic ff, fi, fl ligatures SJC 2005-Oct-13 Made ff, fi, fl true ligatures with components. SJC 2005-Oct-12 Fixed problems with dotted modifier super/subscripts and partial fix for F17A (double diaeresis). SJC 2005-Sep-1 Added slant-italic special forms, diaersis on superscripts, and bridging diacritics. SJC 2005-May-16 Handle features modlowcolon, ltnglottalstop, and ltnjstroke. SJC 2005-May-16 Turn off AutoPseudo. SJC 2005-May-10 Added a few comments. AKW 2005-May-09 Changed gF176 to g035C (PUA character accepted into Unicode). JMW 2004-Sep-02 For now, I will take easy option on fixing Literacy Alts and Romanian, by backing up. Later I may re-write. Input to WP2 is now NFD, necessitating a change. JMW 2004-Jul-21 Comments on Viet, add 4th Eng. RMH 2004-Mar-17 Changed logic for ou alternates due to default is now closed top, and alternate is .OpenType (issue RFS-5WXH4D); added omacron and Omacron to things that can composite with ogonek (related to issue RFS-5X5FKC); renamed cnDia to cDia -- it is a class of all diacritics, not the class of non-diacritics; added cHDia to cBDia, but I think the cBDia and cnBDia classes aren't used...? RMH 2004-Feb-25 removed all smartcode that builds alternates (of composites) by decomposition (we now have real alternates available in the font); in the process, eliminated viet.gdh -- integrating it directly here. RMH 2004-Feb-13 Made explicit associations to quiet new GrCompiler warnings. RMH 2004-Feb-05 Rewrote rules that had been generated by normal_rules() function in makegdl.pl so that (1) only those glyphs that need composition (things with ogonek, cedilla, horn) are actually composed, and (2) now permits other diacritcs to intervene. Similarly added code to permit intevening diacs in rules for .vNStyle diac ligatures. RMH 2004-Feb-04 Changes after B14: implemented logic for retrohookstyle ogonek alternates feature. RMH 2004-Jan-19 Changes after B10: omehow p_hook feature wasn't ever implemented. RMH 10-Oct-2003 Significant rework: added "else" clauses for most features (so this same code works if Feature table and cmap are changed so an "alternate" glyph is the default); added code to handle cedillas that need to be rendered as commaaccent; added DeBuG feature (only compiled in if symbol DEBUG is defined as non-zero). RMH 01-Sep-2003 Reworked all features per PC's design. RMH 15-Aug-2003 Added other Unicode 4.0 double-diacritics; fixed double diacritic positioning so not dependent on glyph's default location (requires double diacritics should NOT have attachment points). RMH 17-Jul-2003 Removed all references to "P" and "_P" attachment points -- it no longer exists; replace refs to U+F177 with U+035E (Unicode 4.0). RMH 10-Jul-2003 Added logic to decompose 1E2D and 1ECB in the context of upper diacritics. MJPH 16-Nov-2002 Move overarch to down by -1200m from -700m. */ #include "stddef.gdh" #define CHARISfont 1 #define DOULOSfont 2 #define GENTIUMfont 3 #define ANDIKAfont 4 // Now turn on the font we want, so we get specific features. (This file is copied from // something like doulos.gdh or charis.gdh by the build process. #include "CharisSpecific.gdh" #define DEBUG 0 // #define DEBUG 1 //jw 7/21/04 Use this to turn on DEBUG #define SMALLCAPS 0 Bidi = 0; // To make double-encoded characters act identically: AutoPseudo = 0; #define DIASTR4(x) [ x [ x [ x x?]?]?]? #define DIASTR5(x) [ x [ x [ x [ x x?]?]?]?]? #define attached user1 #if DEBUG #define DeBuG g__d g_e g__b g_u g__g g_colon #endif ////////////////////////////////////////////////////////////////////////////////////// // // Glyphs // table(glyph); // Classes of double-diacritics above and below: cUDblDia = (g035D g035E g0360 g0361 gF17A); cLDblDia = (g035F g0362 g035C); // Various classes of diacritics: cBDia = (cLDia cODia cHDia); // Below = Lower + Ogonek + Cedilla cnBDia = (cUDia cRDia); // Not Below cnHDia = (cLDia cODia cRDia cUDia); // Not Cedilla cnLDia = (cHDia cODia cRDia cUDia); // Not Lower cnODia = (cHDia cLDia cRDia cUDia); // Not Ogonek cnRDia = (cHDia cLDia cODia cUDia); // Not Horn (right) cnUDia = (cHDia cLDia cODia cRDia ); // Not Upper cDia = (cHDia cLDia cODia cRDia cUDia); // Any (but not double dias) // ff, fi, fl ligatures cfLigC2 = (g_f g_i g_l); cfLig = (g_f_f g_f_i g_f_l); cffLigC3 = (g_i g_l); cffLig = (g_f_f_i g_f_f_l); cfLigC2_slantItalic = (g_f_slant_italic, g_i_slant_italic, g_l_slant_italic); cfLig_slantItalic = (g_f_f_slant_italic, g_f_i_slant_italic, g_f_l_slant_italic); cffLigC3_slantItalic = (g_i_slant_italic, g_l_slant_italic); cffLig_slantItalic = (g_f_f_i_slant_italic, g_f_f_l_slant_italic); cfLig_all = (cfLig cfLig_slantItalic) { component {f1 = box(0, -descent, aw/2, ascent); f2 = box(aw/2, -descent, aw, ascent) }}; cffLig_all = (cffLig cffLig_slantItalic) { component { f1 = box(0, -descent, aw/3, ascent); f2 = box(aw/3, -descent, (2*aw)/3, ascent); f3 = box((2*aw)/3, -descent, aw, ascent) }} cSpecialDotted = (g1E2D g1ECB); cSpecialDottedDia = (g0330 g_dotbelowcomb); // Special class defs for cedilla compositions that are rendered as commaaccent: // Note: tested removal JW 8/28 to see if they are pre-composed by Graphite. No, they are decomposed on the way in, apparently. cCedillaBase = (g__g g_g g__k g_k g__l g_l g__n g_n g__r g_r); cCedillaComposite = (g__gcommaaccent g_gcommaaccent g__kcommaaccent g_kcommaaccent g__lcommaaccent g_lcommaaccent g__ncommaaccent g_ncommaaccent g__rcommaaccent g_rcommaaccent); // Add in other cedilla composites: cCedillaBase += (g__c g_c g__s g_s g__t g_t g__e g_e) cCedillaComposite += (g__ccedilla g_ccedilla g__scedilla g_scedilla g0162 g0163 g0228 g0229) // Ogonek composites: cOgonekBase = (g__a g_a g__e g_e g__u g_u g__o g_o g__omacron g_omacron); cOgonekComposite = (g__aogonek g_aogonek g__eogonek g_eogonek g__uogonek g_uogonek g01EA g01EB g01EC g01ED); // Horn composites: cHornBase = (g__o g_o g__u g_u); cHornComposite = (g__ohorn g_ohorn g__uhorn g_uhorn); // Modifier superscripts that require smaller diacritics: cModSuper = (g02B0 g02B1 g02B2 g02B3 g02B4 g02B5 g02B6 g02B7 g02B8 g02C0 g02C1 g02E0 g02E1 g02E2 g02E3 g02E4 g1D2C g1D2D g1D2E g1D2F g1D30 g1D31 g1D32 g1D33 g1D34 g1D35 g1D36 g1D37 g1D38 g1D39 g1D3A g1D3B g1D3C g1D3D g1D3E g1D3F g1D40 g1D41 g1D42 g1D43 g1D44 g1D45 g1D46 g1D47 g1D48 g1D49 g1D4A g1D4B g1D4C g1D4D g1D4E g1D4F g1D50 g1D51 g1D52 g1D53 g1D54 g1D55 g1D56 g1D57 g1D58 g1D59 g1D5A g1D5B g1D5C g1D5D g1D5E g1D5F g1D60 g1D61 g1D78 g1D9B g1D9C g1D9D g1D9E g1D9F g1DA0 g1DA1 g1DA2 g1DA3 g1DA4 g1DA5 g1DA6 g1DA7 g1DA8 g1DA9 g1DAA g1DAB g1DAC g1DAD g1DAE g1DAF g1DB0 g1DB1 g1DB2 g1DB3 g1DB4 g1DB5 g1DB6 g1DB7 g1DB8 g1DB9 g1DBA g1DBB g1DBC g1DBD g1DBE g1DBF g2071 g207F g2071_dotless g02B2_dotless g1DA4_dotless g1DA8_dotless); // Modifier subscripts that require smaller diacritics: cModSub = (g1D62 g1D63 g1D64 g1D65 g1D66 g1D67 g1D68 g1D69 g1D6A g2090 g2091 g2092 g2093 g2094 g1D62_dotless); cBridgeDiac = (g0308_uU g0308_uL g0308_lL g0311_uU g0311_uL g0311_lL); // Vietnamese diacritic combinations cDiacComb = (g_acutecomb g_gravecomb g_hookabovecomb g_tildecomb); c_g0302DiacComb = (g0302_acutecomb_vN g0302_gravecomb_vN g0302_hookabovecomb_vN g0302_tildecomb_vN); c_g0306DiacComb = (g0306_acutecomb_vN g0306_gravecomb_vN g0306_hookabovecomb_vN g0306_tildecomb_vN); // Vietnamese/literacy combinations // a with stacked diacritics c_aStack_noLit = (g1EA5 g1EA7 g1EA9 g1EAB g1EAF g1EB1 g1EB5 g1EB3); // eg, a+circum+acute c_diacComb_vN = (g0302_acutecomb_vN, g0302_gravecomb_vN, g0302_hookabovecomb_vN, g0302_tildecomb_vN, g0306_acutecomb_vN, g0306_gravecomb_vN, g0306_hookabovecomb_vN, g0306_tildecomb_vN); // The top-serif alternate affects two different features: cTopSerifOpenO = (g0254_topSerif, g1D53_topSerif, g1D97_topSerif, g0186_topSerif, g1D10_topSerif); cno_TopSerifOpenO = (g0254, g1D53, g1D97, g0186, g1D10); cTopSerifJStroke = (g0284_topSerif); cno_TopSerifJStroke = (g0284); #if SMALLCAPS // Lower-to-uppercase mappings for all-caps feature c_lowercaseAC = (g_a, g_agrave, g_abreve, g_acircumflex, g_atilde, g_amacron, g_adieresis, g_aring, g_b, g_c, g_cacute, g_ccircumflex, g_ccaron, g_d, g_e, g_f, g_g, g_h, g_i, g_j, g_k, g_l, g_m, g_n, g_o, g_p, g_q, g_r, g_s, g_t, g_u, g_v, g_w, g_x, g_y, g_z); c_uppercaseAC = (g__a, g__agrave, g__abreve, g__acircumflex, g__atilde, g__amacron, g__adieresis, g__aring, g__b, g__c, g__cacute, g__ccircumflex, g__ccaron, g__d, g__e, g__f, g__g, g__h, g__i, g__j, g__k, g__l, g__m, g__n, g__o, g__p, g__q, g__r, g__s, g__t, g__u, g__v, g__w, g__x, g__y, g__z); // Lower-to-uppercase mappings for small-caps feature c_lowercaseSC = (g_a, g_b, g_c, g_d, g_e, // g_f, - NO F!!! g_g, g_h, g_i, g_j, g_k, g_l, g_m, g_n, g_o, g_p, // g_q, - NO Q! g_r, g_s, g_t, g_u, g_v, g_w, g_x, g_y, g_z); c_uppercaseSC = (glyphid(110), glyphid(183), glyphid(233), glyphid(292), glyphid(391), // NO F! glyphid(512), glyphid(553), glyphid(655), glyphid(714), glyphid(749), glyphid(801), glyphid(841), glyphid(880), glyphid(987), glyphid(1071), // NO Q! glyphid(1122), glyphid(1144), glyphid(1216), glyphid(1288), glyphid(1326), glyphid(1378), glyphid(1387), glyphid(1446), glyphid(1472)); #endif // SMALLCAPS endtable; // glyph ////////////////////////////////////////////////////////////////////////////////////// // // Features // #include "CharisFeatures.gdh" ////////////////////////////////////////////////////////////////////////////////////// // // Rules // table(substitution); pass(1) {MaxBackup = 15; MaxRuleLoop = 30} #if SMALLCAPS if (smallcaps) c_lowercaseSC > c_uppercaseSC / ^ _ ; endif; if (allcaps) c_lowercaseAC > c_uppercaseAC / ^ _ ; endif; #endif // SMALLCAPS // Turn combining half-marks into one double-width combining mark gFE20=d1 gFE21=d2 > g0361:(d1 d2) _ / ^ _ cTakesUDia DIASTR5(cDia) _ ; gFE22=d1 gFE23=d2 > g0360:(d1 d2) _ / ^ _ cTakesUDia DIASTR5(cDia) _ ; // For Chinantec, make the standard Unicode characters look like the special PUA characters if (chinantec_tone == 1) cno_ChinantecTn > cChinantecTn; else cChinantecTn > cno_ChinantecTn; endif; // Handle cedillas (including those that need to look like comma-accent by precomposing them); // back-up needed to also handle rom feature: cCedillaBase g0327 > cCedillaComposite:(b d) _ / ^ _=b DIASTR4(cnHDia) _=d; // force a composite even if // 0-4 diacs intervene // Handle ogoneks; backup needed to also handle literacy feature: cOgonekBase g0328 > cOgonekComposite:(b d) _ / ^ _=b DIASTR4(cnODia) _=d; // Handle horns: cHornBase g031B > cHornComposite:(b d) _ / _=b DIASTR4(cnRDia) _=d; // Handle Vietnamese /* jw comments 2 stacked diacs go to side-by-side unless there is an intervening upper diac. pre-composed base + stacked diacs go to pre-composed base+side-by-side (cVN) */ if (viet == 1) // decompose the stacked form and replace the base 'a' with the literacy form, // the diacritics with the Vietnamese form _ c_aStack_noLit > g_a_sng_story:2 c_diacComb_vN / _ _ {literacy == 1}; g0302 cDiacComb > c_g0302DiacComb$d:(b d) _ / _=b DIASTR4(cnUDia) _=d; g0306 cDiacComb > c_g0306DiacComb$d:(b d) _ / _=b DIASTR4(cnUDia) _=d; cno_VN > cVN; // ie, when literacy == false else cVN > cno_VN; endif; if (bridging_diac) // LL with bridging diaeresis (U+035F is possible intervening bridging underbar) g0308 > g0308_uU / g__l g035F? _ g035F? g__l; g0308 > g0308_uL / g__l g035F? _ g035F? g_l; g0308 > g0308_lL / g_l g035F? _ g035F? g_l; // OU with bridging inverted breve g0311 > g0311_uU / g__o g035F? _ g035F? g__u; g0311 > g0311_uL / g__o g035F? _ g035F? g_u; g0311 > g0311_lL / g_o g035F? _ g035F? g_u; endif; #if DEBUG if (debug == 1) g_question > g_one / DeBuG g_space g_e g_n g_g g_equal _ {eng == 0}; g_question > g_two / DeBuG g_space g_e g_n g_g g_equal _ {eng == 1}; g_question > g_three / DeBuG g_space g_e g_n g_g g_equal _ {eng == 2}; endif; #endif // DEBUG /* # NOTES: # # The rules are designed so that they work correctly no matter how the # default value for a feature is set. While this means the rules don't # demand that the cmap and feature table agree on the default glyph, # the font will be more usable in non-GDL apps if they do agree. # (One exception remaining is vietnamese processing -- so don't # try to build a font with vietnamese on by default) # # If a glyph name extension (which is what drives the class names) is used # within more than one feature (e.g., .LrgBowl is used in the Rams horn alternate # and the Small ezh-curl alternate), then we cannot use the automatically generated # class names (e.g., cLrgBowl and cno_LrgBowl), but rather must explicitly # handle each glyph -- sigh. # # For programmer benefit, these are arranged in order of the feature ID value: */ // Note: we can't use the cUCStyle class because that label has been generalized to apply to // more than just uppercase engs. if (eng == descender) // for fonts with default = base, capital, or short: (cBaselineHook g__eng_u_c_style cKom) > g__eng; endif; if (eng == base) // for fonts with default = descender, capital, or short: (cno_BaselineHook g__eng_u_c_style cKom) > cBaselineHook; endif; if (eng == capital) // for fonts with default = descender, base, or short: (cBaselineHook g__eng cKom) > g__eng_u_c_style; endif; if (eng == short) // for fonts with default = descender, capital, or base: (cBaselineHook g__eng /*cno_Kom*/) > cKom; endif; if (ramshorn == small) // for fonts with default = large or gamma (g0264_lrgBowl g0264_gammaStyle) > g0264; endif; if (ramshorn == large) // for fonts with default = small or gamma (g0264 g0264_gammaStyle) > g0264_lrgBowl; endif; if (ramshorn == gamma) // for fonts with default = small or large (g0264 g0264_lrgBowl) > g0264_gammaStyle; endif // supernum feature dealt with in pitches.gdh if (mongol_e == 1) cno_MongolStyle > cMongolStyle; else cMongolStyle >cno_MongolStyle; endif; #if 1 // FONT != DOULOSfont /**** obsolete feature if (cyr_curs_ital == 1) cno_Cursive > cCursive; else cCursive > cno_Cursive; endif; ****/ #endif // !DOULOSfont if (short_breve == 1) cno_CyShortMrkAlt > cCyShortMrkAlt; else cCyShortMrkAlt > cno_CyShortMrkAlt; endif; // Vietnamese alternates handled above if (invis == 1) cno_ShowInv > cShowInv; endif; // NB: Because 01E5 is affected by two features, barred_bowl and literacy, // these features take special organization of their rules. Specifically, // 01E5 should be displayed as: // if Literacy Alternates then LtnSmGBarredSngBowl (uni01E5.BarBowl.SngBowl) // else if Barred-Bowl Forms then LtnSmGBarredBowl (uni01E5.BarBowl) // else LtnSmGStrk (uni01E5) // Note also that uni01E5 doesn't show up in any class // Note: literacy alternates take precedence over slant-italic feature (below). if (literacy == 1) cno_SngBowl > cSngBowl; // (includes uni01E5.BarBowl > uni01E5.BarBowl.SngBowl) cno_SngStory > cSngStory; g01E5 > g01E5_barBowl_sngBowl; else cSngBowl > cno_SngBowl; // (includes uni01E5.BarBowl.SngBowl > uni01E5.BarBowl) cSngStory > cno_SngStory; endif; // TODO: the code below will have to be extended somewhat to correctly handle the case where // the slant-italic glyphs are the default. #if 1 // FONT != DOULOSfont if (slant_italic == 1) // ff, fi, fl ligatures g_f cfLigC2 > g_f_slant_italic cfLigC2_slantItalic / _ _ cDia; // don't create a ligature, a following diac stops ligature from forming g_f cfLigC2 > _ cfLig_slantItalic:(1 2) {component {f1.ref = @1; f2.ref = @2}}; g_f g_f cffLigC3 > g_f_slant_italic g_f_slant_italic cffLigC3_slantItalic / _ _ _ cDia; // don't create a ligature g_f g_f cffLigC3 > _ _ cffLig_slantItalic:(1 2 3) {component {f1.ref = @1; f2.ref = @2; f3.ref = @3}}; cno_SlantItalic > cSlantItalic; // f, i, l, v cno_2StorySlantItalic > c2StorySlantItalic; // a, ae else #endif // !DOULOSfont // ff, fi, fl ligatures g_f cfLigC2 > @1 @2 / _ _ cDia; // do nothing, a following diac stops ligature from forming g_f cfLigC2 > _ cfLig:(1 2) {component {f1.ref = @1; f2.ref = @2}}; g_f g_f cffLigC3 > @1 @2 @3 / _ _ _ cDia; // do nothing g_f g_f cffLigC3 > _ _ cffLig:(1 2 3) {component {f1.ref = @1; f2.ref = @2; f3.ref = @3}}; #if 1 // FONT != DOULOSfont cSlantItalic > cno_SlantItalic; c2StorySlantItalic > cno_2StorySlantItalic; endif; #endif // !DOULOSfont // The barred_bowl rule must happen *after* the literacy rule if (barred_bowl == 1) // does contain g01E5, no such naming as uni01e5 or // uni anything. That is the Postscript Name from xml file. jw 8/27/04 cno_BarBowl > cBarBowl; // (does NOT include uni01E5 > uni01E5.BarBowl) // g01E5 > g01E5_barBowl; yes it does jw. commented 8/31 // see: cno_BarBowl = (g0180, g_dcroat, g01E5); else cBarBowl > cno_BarBowl; // (does NOT include uni01E5.BarBowl > uni01E5) // g01E5_barBowl > g01E5; yes it does jw endif; if (ltnjstroke == topSerif) cno_TopSerifJStroke > cTopSerifJStroke; else cTopSerifJStroke > cno_TopSerifJStroke; endif; if (open_o == topSerif) cno_TopSerifOpenO > cTopSerifOpenO; else cTopSerifOpenO > cno_TopSerifOpenO; endif; if (v_hook == 1) cno_StraightLft > cStraightLft; else cStraightLft > cno_StraightLft; endif; if (y_hook == 1) g01B3 > g01B3_rtHook; else g01B3_rtHook > g01B3; endif; if (n_hook == 1) g019D > g019D_lCStyle; else g019D_lCStyle > g019D; endif; if (ezh_curl == 1) g0293 > g0293_lrgBowl; else g0293_lrgBowl > g0293; endif; if (t_hook == 1) g01AC > g01AC_rtHook; else g01AC_rtHook > g01AC; endif; if (h_stroke == 1) cno_VertStrk > cVertStrk; else cVertStrk > cno_VertStrk; endif; if (r_tail == 1) g2C64 > g2C64_lCStyle; else g2C64_lCStyle > g2C64; endif; if (p_hook == 1) cno_BowlHook > cBowlHook; else cBowlHook > cno_BowlHook; endif; if (rom == 1) cno_CommaStyle > cCommaStyle; else cCommaStyle > cno_CommaStyle; endif; if (ezh == 1) cno_RevSigmaStyle > cRevSigmaStyle; else cRevSigmaStyle > cno_RevSigmaStyle; endif; // ogonek processing must be in pass 2 if (apostrophe == 1) cno_Lrg > cLrg; else cLrg > cno_Lrg; endif; if (ou == 1) cno_OpenTop > cOpenTop; else cOpenTop > cno_OpenTop; endif; if (emptyset == 1) cno_SlashZero > cSlashZero; else cSlashZero > cno_SlashZero; endif; if (modlowcolon == wide) gF1E9 > gF1E9_wide; else gF1E9_wide > gF1E9; endif; /*************** Obsolete feature: if (ltnglottalstop == capHeight) g0294_lC > g0294; else g0294 > g0294_lC; endif; ***************/ if (cyrillic_shha == 1) g04BB > g04BB_uCStyle; else g04BB_uCStyle > g04BB; endif; endpass; // sub - 1 pass(2) {MaxBackup = 15; MaxRuleLoop = 30} // substitution // Convert i to dotless i when followed by upper diacritic // decomposed sequences: cno_Dotless > cDotless / _ DIASTR4(cnUDia) cUDia; // precomposed chars with i are done by decomposition: cSpecialDotted _ > g_i_dotless cSpecialDottedDia$1:1 / _ _ DIASTR4(cnUDia) cUDia; // Now that ogonek has been composed with its vowels, do retrohook style if wanted: if (ogonek == americanist) cno_RetroHookStyle > cRetroHookStyle; else cRetroHookStyle > cno_RetroHookStyle; endif; // g__aogonek > g__a g0328_retroHookStyle:1; // g_aogonek > g_a g0328_retroHookStyle:1; // g__eogonek > g__e g0328_retroHookStyle:1; // g_eogonek > g_e g0328_retroHookStyle:1; // g__iogonek > g__i g0328_retroHookStyle:1; // g_iogonek_dotless > g_i_dotless g0328_retroHookStyle:1; // g_iogonek > g_i g0328_retroHookStyle:1; // g__uogonek > g__u g0328_retroHookStyle:1; // g_uogonek > g_u g0328_retroHookStyle:1; // g01EA > g__o g0328_retroHookStyle:1; // g01EB > g_o g0328_retroHookStyle:1; // g01EC > g__omacron g0328_retroHookStyle:1; // g01ED > g_omacron g0328_retroHookStyle:1; // g_ogonek > g_ogonek_retro_hook_style:1; // g0328 > g0328_retroHookStyle:1; //endif; // Handle superscript/subscript diacritics; currently the only one of interest is a diaeresis: cno_Sup > cSup / (cModSuper cModSub) _; endpass; // sub - 2 endtable; // substitution #include "CharisPitches.gdh" table(positioning) {MUnits = 1000}; // Handle attachments pass(1) #define pos_rule(t, x, a, w, n) t x {attach {to = @1; at = a; with = w}; attached = 1} / ^ _ DIASTR4(n) _{attached == 0} #define pos_ruleSD(t, x, a, w, n) t x {attach {to = @1; at = a; with = w}; insert = 1; attached = 1} / ^ _ DIASTR4(n) _{attached == 0} if (select_diac) pos_ruleSD(cTakesHDia, cHDia, H, HM, cnHDia); pos_ruleSD(cTakesLDia, cLDia, L, LM, cnLDia); pos_ruleSD(cTakesODia, cODia, O, OM, cnODia); pos_ruleSD(cTakesRDia, cRDia, R, RM, cnRDia); pos_ruleSD(cTakesUDia, cUDia, U, UM, cnUDia); else pos_rule(cTakesHDia, cHDia, H, HM, cnHDia); pos_rule(cTakesLDia, cLDia, L, LM, cnLDia); pos_rule(cTakesODia, cODia, O, OM, cnODia); pos_rule(cTakesRDia, cRDia, R, RM, cnRDia); pos_rule(cTakesUDia, cUDia, U, UM, cnUDia); endif; // Bridge diacritics handled by attachment need to have zero advance width, // otherwise they push the second character out and away. (This wouldn't work if above // we didn't reprocess attached diacritics using the ^ mechanism.) cBridgeDiac {advance.x = 0}; endpass; // pos - 1 // Handle double-diacritics pass(2) // positioning // Double-diacritics above: the ".1" gives the bounding box of the attached cluster of // base + diacritics. // Something on both sides: cUDblDia {shift.y = max(@B.boundingbox.top.1, @A.boundingbox.top.1) - @D.boundingbox.bottom + 100m ; shift.x = (@A.boundingbox.width.1 - @B.boundingbox.width.1)/2; insert = 1} / cTakesUDia=B DIASTR5(cDia) _=D cTakesUDia=A; // Begining of line: cUDblDia {shift.y = @B.boundingbox.top.1 - @D.boundingbox.bottom + 100m ; insert = 1} / cTakesUDia=B DIASTR5(cDia) _=D; // End of line: cUDblDia {shift.y = @A.boundingbox.top.1 - @D.boundingbox.bottom + 100m ; insert = 1} / DIASTR5(cDia) _=D cTakesUDia=A; endpass; // pos - 2 pass(3) // Double-diacritics below: // Special case for two bridging diacritics: g035F {shift.y = min(@B.boundingbox.bottom.1, @A.boundingbox.bottom.1) - @D.boundingbox.top -100m ; shift.x = (@A.boundingbox.width - @B.boundingbox.width)/2; insert = 1} / cTakesLDia=B DIASTR5(cDia) _=D cTakesLDia=A; cLDblDia {shift.y = min(@B.boundingbox.bottom.1, @A.boundingbox.bottom.1) - @D.boundingbox.top -100m ; shift.x = (@A.boundingbox.width.1 - @B.boundingbox.width.1)/2; insert = 1} / cTakesLDia=B DIASTR5(cDia) _=D cTakesLDia=A; cLDblDia {shift.y = @B.boundingbox.bottom.1 - @D.boundingbox.top -100m ; insert = 1} / cTakesLDia=B DIASTR5(cDia) _=D ; cLDblDia {shift.y = @A.boundingbox.bottom.1 - @D.boundingbox.top -100m ; insert = 1} / DIASTR5(cDia) _=D cTakesLDia=A ; endpass; // pos - 3 endtable; // positioning grcompiler-5.2.1/test/GrcRegressionTest/fonts/CharisSpecific.gdh000066400000000000000000000002561411153030700247470ustar00rootroot00000000000000/* Font-specific stuff for Charis This file gets copied to fontSpecific.gdh as part of the build process, and thus is #included in main.gdh. */ #define FONT CHARISfont grcompiler-5.2.1/test/GrcRegressionTest/fonts/PadaukBenchmark_v3.ttf000066400000000000000000004347701411153030700255670ustar00rootroot000000000000000Feat9Glatk rGloc{3 0OS/2e<`Silf3PuSill9cmap+|cvt /&fpgmY7@sgasp glyf_Xnheadj@1^46hhea ^l$hmtx!E M^>locau` b$maxpAId nameeMpostpuidprep<q ,,4SIL @ % H4 ~!4Od    `"`% #6Z    `"`%TMG ڞZ|koqsuz|~    4 ~!4Od    `"`% #6Z    `"`%TMG ڞZ|koqsuz|~    3'N93'7jX:,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-7a//и/ EX/>YEX/ >Y01!!/3m53e7- 5t6/-+4+6 AaqA0@PqAc4q7EX/ >Y Ahq017#"&54632'#"'&&&&&&54545465466632$%%$3 *!!""z@Tada+   +bdaT@=T7EX/>YEX/>Yи01#3#3?6^5_7ظ /!/ + +++++!и A$]/// /+++++ +и  и и013#3##7##7#537#53733737#NUdj3x3MSbi3xxx3x33x3x/:CG5 ++& '+;'&9;/Az;;]A ;;);9;I;Y;i;] ии и*и0A55&565F5V5f5]Au55]:9@//EX/ >YEX/ >Y0+ !и!/'0*к@9AиA/01%#5"&&&5335&&&&546663532#4&#"4&&&'66 6F%-2J1Z ) &E40G.--@(Z!-B=+&( $&523D+QO5I--! %=2$?.HG0>!5'&GC"$) *S+=OP/Q/> F+, 4+P Q AT]>FAu,],4"A"] /'//EX/>YA]Aw]A]A ]'19C K01#"&&&5466632#"&&&54666324&&&#"32666%4&&&#"32666it*",-""-,"?",-""-,"1  +   +  # -""-."".-""-."". ,  , 4=M]8V +F F9AVV&V6VFVVVfV]AuVV]EX/>YEX/ >YEX / >Y 9- 9[A[['[7[G[W[g[w[[ ]A[[]= [9CA CCqA!CC(C8CHCXChCxCCCCCCCCC]01!&'&&'#"&&&546667&&&&7666632666&'36&&&#"6666&&'326& !L/,P<#)2  (7"$<+*1&(, ] / ".& J5d-"#1)R 3I,,>+ "(.,! ."4' +*,)&.#7>E%,!*3 .k6&-+&u/EX/>Y01#36]K>T8// +01#&&&&546667T7Q4dr3;Q34Q9KmIbfO7JA4//  +01#654&&&'j9Q53R;3re5Q7OfbIMmK7//++A"]A(]A%]A; ] A< ] A< ] A>]//A:]A(]и01'7'7537'#53Z-YZ+XW+ZY-Z] G / /+ +    ++0173533##5#]333(f0/ EX/ >Y017'665454'#&&54632  $ !)#1  %%7%//+017!!73(c 0 / EX/ >Y 017#"&54632$%%$*!!""7,-.//017[%&%-+),//Az]A )9IYi] ,и/" A""&"6"F"V"f"]Au""]-EX/>YEX/ >YA]A(8HXhx ]'A''''7'G'W'g'w'' ]A'']01#"&&&&&54666324&&&#"32666-B..B- *QEEQ* V.''//''.N&QME44EMQ&9s[::[s94ZB&&BZ44bM..MbsQM +   9EX / >YEX/ >Y 901356676732 2Z I %}7  +Az]A )9IYi]и"EX/>YEX/ >Y A ]A  ( 8 H X h x ] 0135666654&#"#666632!7oy8 *60/[.F2/F.$@aF!RU}Z?975;(D2 2>17>K[8E(6- +- 2-9-8EX(/(>YEX/ >Y+ A'7GWgw ]A](!A!!]A!!(!8!H!X!h!x!! ]($2901%#"&&&533266654춮&&&#"#66328M.7N2_ ),!#!/# $8 k +и иEX/>YEX/ >Y+к 9 01%#5!5333R aPԜ]dK.&ϻ +Az]A )9IYi]EX/>YEX/ >Y"+ A  ' 7 G W g w ]A ]""901%#"&533266654&#"#!#666632"7E"dp_<.).:-9O T (!+A--P=$YO20&8%ET7&wK  #YEX/ >Y$,+A]A(8HXhx ]92A22'272G2W2g2w22 ]A22]01%#"&&&5466632#&&#"6666324&#"326-N=JU+ /UF,?*V0)(  *?K( Z4=>44>=4H?**QwN>|d?)>)8('1YEX/ >Y013#!5!b;HZ''7C> + (+Az((]A (()(9(I(Y(i(]8(98/Az88]A 88)898I8Y8i8]  9A>>&>6>F>V>f>]Au>>] >9/# 9. EX/>YEX/ >Y3;+;39#;39+A++]A++(+8+H+X+h+x++ ]AAAA'A7AGAWAgAwAA ]AAA]01%#"&&&546767&'&&54666324&#"326664&#"326(=K##J=(%##7E!"E7#!#'d:54:() ?=;C;CD82C**C22C <,(<&&<(,< C 2882((6EE66HH*&21- + '+ AJ'Z']A '')'9']A--&-6-F-V-f-]Au--]EX"/">YEX/ >Y0+ A  ' 7 G W g w ]A ]"9"*A**]A**(*8*H*X*h*x** ]01#"&'33266676'#"&&&5466632'4&#"326/VEXQ W2)(  )?J( ,N=JV+ c2?>22>?2Q>~d?TS8*'0*)Qw$BFFBBGG( [/ ииEX/>YEX/ >Y 017#"&54632#"&54632$%%$$%%$+##!!M""##('[(/  и "и)EX%/%>YEX/ >Y %01666655&&#"3267#"&54632Z &$ %M$%%$e#) ## /##"""//90175%#9787oM?/ /и++017!!5!!7//33"//90175%%5#"879 n- 67/45+++ +7A-]AM]A}]A<] Ap]8EX/ >Y&+Aw] A5]017#"&54632467666654&&&#"#5466632#5#$$#T ,,"$--#3/A((B.#.0 3*!!""N# '9)-$!&81!3? 6C+ 4aE}Ma!/ D+X + N+ %+N9Nи/Az%%]A %%)%9%I%Y%i%]A//&/6/F/V/f/]Au//]9и9/AXX&X6XFXVXfX]AuXX]4?+I*+] +S+ и/S9и/01#"&'#"&&&546663253766654&&&#"322667#"&&&54666324&&&#"32666E0B'*9<4":++:"!' Q,QqE3lY:'OwO%!!# KtHBlIZi9 %% %%  1YD),)'* 8L-0M6  5  $E8RpEFsUN}W/I '_zZa3/^x3&'27++7  @EX/>YEX/ >YEX/ >Y +01!'!#331GF\ cx}H"#,) + +Az]A )9IYi]$ 9$/Az$$]A $$)$9$I$Y$i$] 9)EX/>YEX/ >Y'+'9)01%#!!2'4&&&##326664&##326" 6F&'F5#%*k 4((5 RPFX'A/'<)*4 @#$5:=4(&'// ' и / A&6FVf]Au]%и%/(EX/>YEX/ >YA]A(8HXhx ] A  ' 7 G W g w ]A ]%01%#"&&&5466632#4&#"3266653( >fL=W8Z@LWX-?)6'Z&D26[xAAz_93C%99Hc= +HL / /Az ]A  ) 9 I Y i ] и/ EX/>YEX/ >Y01##324&##326LIz[[zIYyiqqiyB;s[96Zt=w|~H U + EX/>YEX/ >Y+ 013!!!!!H,>NLNH K +EX/>YEX/ >Y+01!!#! Xu5LN4b-! #+ + и/A  & 6 F V f ]Au ]-и-//EX(/(>YEX/ >Y+((A]A(8HXhx ]A'7GWgw ]A]014&&&#"3267675#53#"&&&5466632'6"=V72S=!9A?8f~E+QtH@]<!#?U16eM/N  Ci=AqS0"4<H1 // и/ ии EX/>YEX / >YEX/ >YEX/ >Y+01!!#3!3XX5\#}H/ +EX/>YEX/ >Y0133HX}4//  и / иEX/>YEX/ >Y A'7GWgw ]A]01%#"&&&5332666534I+*E0Y%%Z.L61D) ) 0 =H: m +EX/>YEX/>YEX/ >YEX/ >Y9901!#33XX o2SH5 +EX/>YEX/ >Y0133!HXNH // и/   9EX/>YEX / >YEX/ >YEX/ >YEX/ >Y99 901!##33FX.)}H= // и/  EX/>YEX/>YEX/ >YEX/ >Y9901!#33X~Z}4|')(//Az]A )9IYi] ( и / A&6FVf]Au])EX/>YEX/ >YA]A(8HXhx ]#A##'#7#G#W#g#w## ]A##]01#"&&&54666324&&&#"32666|#HnJJnI$$InJJnH#]-M:;M--M;:M-NE~`99`~EEuV11VuE3XB&&BX33`K..K`H//Az]A )9IYi] и/ иEX / >YEX/ >Y+ 01###324&##326+FY.]X.YF+VNQ``QN=H'  'I=<0.4+ ,//,и/Az]A )9IYi] и/" A""&"6"F"V"f"]Au""]-EX / >YEX/ >YEX/ >Y A]A(8HXhx ]'01!#"&&&546663234&&&#"32666'JnI$$InJJnH#00-M:;M--M;:M-9`~EEuV11VuET+=N3XB&&BX33`K..K`H !,̸-/"/- и / Az""]A "")"9"I"Y"i"]"  9"и/ (и.EX/>YEX/ >YEX / >Y* + *9'01!&&&&'&&&&###324&&&##326 "6-NXrw!+   j%5!qqAO!'28Nc)" 8CN(& *491 +& '+& A11&161F1V1f1]Au11]1 и /&;EX!/!>YEX/ >Y A'7GWgw ]A]!&!,A,,]A,,(,8,H,X,h,x,, ]01%#"&&&533266654&&&&&5466632#4&&&#"1N`/-N9!\,@7%9VdV9)?N%+RA(Z)4-"!6EHE6!8J,6L/."*%30"GE*A-(C1!& '&)AA +EX/>YEX/ >Yи01##5!>Z55NNHI//  и / иEX / >YEX/>YEX/ >YA'7GWgw ]A]01#"&&&533266653I?aCD`?X.="!<.ZPrH""HrPeHW/.WIe 8@EX/>YEX/>YEX/ >Y901!#33Tced T vEX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!##333QO_k_\ [EX/>YEX/>YEX/ >YEX/ >Y9901!#373귴jriW, CT +9EX/>YEX/>YEX/ >Y901#33TXne5( 9EX/>YEX/ >Y0135!5!!(jraNc.N^O@ + EX/>Y+013#3^XX4.'-7,-&//017&Z&%^OD + EX/>Y+0153#53^YY-.ecL//йA]AL]A]+01'7+w@ +01!!@V3 //01'3f}ZY+7G@ +0 8+8и/8и/A@@&@6@F@V@f@]Au@@] @9 / 0.и03и0IEX%/%>YEX/ >YEX/ >Y;+%9и/%A qA!(8HXhx]%CA!CC'C7CGCWCgCwCCCCCCCCC]ACCq7C901!&&'#"&&&546663236&&&#"#466632'&&#"32666h&<2 .GV'*#S3@!41' ^  <6&4$*3   0!3?$ * '3  &* N., %%*/>=*B+//Az]A )9IYi] + и /# и /#и/ #9,EX / >YEX/>YEX/ >YEX / >Y  9 9 A]&A!&&'&7&G&W&g&w&&&&&&&&&]A&&q01%#"&'&'#36666324&&&#"32666"6C"#7QN %1 7I,W /#!1 @?.">^@! 4  ,BK'!?01> []0D-$- +A&6FVf]Au]EX / >YEX/ >Y  A qA!(8HXhx]A!'7GWgw]Aq#01%#"&54632#6&&&#"3266653*E2d`Wd3H-O!+&=8& P;-uuvt(7!#)C0`N#-,6-//и/- и /и/ # A##&#6#F#V#f#]Au##].EX/>YEX/>YEX/ >YEX/ >Y(A!(('(7(G(W(g(w(((((((((]A((q(9A]01!5#"&&&54666323'4&&&#"326661'J;#+F4-; OR%3 - "0!03 "YEX/ >Y%+ A!  ' 7 G W g w ]A  q *A **qA!**(*8*H*X*h*x*********]01%!3266673#"&&&54666326&&&#" . ) U-K98M00P;AN* X/$!+  #;-!50",ES&*SC*,?G 0%(. & +  и иEX/>YEX/>YEX/>YEX / >YA qA!(8HXhx]  и01&&#&3###535466632&  &!kkQXX#3!#A#,A:}:D*6 B-O+=>/,/ ,и/>и/,)и)/6 A66&666F6V6f6]Au66]?EX*/*>YEX$/$>Y +9+$1A 11qA!11(181H1X1h1x111111111]01%#"&&&53326665#"&&&5466632534&&&#"326667Q57F'S (-"/>M*2D*+4QR 3$#. >?#1+J6 -0  0N: +CO$/P;!  1$<,,;"L\.<=// и / и  9EX/>YEX/>YEX/ >YEX / >YA]901!4&&&#"#3676632o" 1"QQ 4)YM." V^:b +и/и/EX/>YEX/>YEX/ >Y01533:WTQ1RRCDc +и/и/EX/>YEX/>Y +0153#"&&&'732653oT (  3  Q1RR*!  3 %#= w +EX/>YEX/>YEX/ >YEX/ >Y99901!'#373?QQd=/ +EX/>YEX/ >Y0133=Q}=, + +, +к,9# 9,.EX/>YEX/>YEX&/&>YEX/ >YEX / >YEX/ >Y&A qA!(8HXhx]к9#901!4&#"#4&&&#"#36632663204*Q%, QQ@, /# H*6B#  3=!' )!(= ( *$ 2;=// и / и  9EX/>YEX/>YEX/ >YEX / >YAIYqA!(8HXhx]A (8q901!4&&&#"#3666632q(* QQ.%7C% '(*90:-'a(//Az]A )9IYi] ( и / A&6FVf]Au])EX/>YEX/ >YA qA!(8HXhx]#A!##'#7#G#W#g#w#########]A##q01%#"&&&54666324&&&#"32666#;P-.P;"";P.-P;#T!3#$4!!4$#3!33>=O(f)//Az]A )9IYi] ) и / к 9 и*EX / >YEX/>YEX/ >Y$A!$$'$7$G$W$g$w$$$$$$$$$]A$$q  9A qA!(8HXhx]01%#"&'#366324&&&#"326662N9-BQQ ?-9N2V 1#$1  1$#1 1V@%%n9'%?U1"@22@"#?22?-O(v)//и/) и /  9и/  A&6FVf]Au]*EX/>YEX/>YEX/ >Y$A!$$'$7$G$W$g$w$$$$$$$$$]A$$q9A qA!(8HXhx]015#"&&&5466632534&&&#"32666C-8N00N8-AQP 1#$22$#1 %%@V11U?%'9"@22@"#?22?=2x + к9 EX/>YEX / >YEX/ >Y  901"#3666632WMQQ $7+uC9=H-3G- +$ %+$ A--&-6-F-V-f-]Au--]$5EX/>YEX/ >Y A!'7GWgw]Aq$*A **qA!**(*8*H*X*h*x*********]01%#"&&&533266654&&&&&5466632#4&&&#""7F$";,Q4(%'-Q#"2(;E;()6!!6'/$  50," 4( % 17 + и и и /EX/>YEX / >YEX/ >Yик 901!#&5#53573#7667#:7QQQbb 9J9Y!z9*9=//и/ и EX/>YEX/>YEX/ >YEX/ >Y9A!'7GWgw]A '7qAFVq01!5#"&533266653o?6[PQ'+ Q9(UN&(+C @EX/>YEX/>YEX/ >Y901!#33Q]U\  vEX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!##3331PvxPViijikTq\\ [EX/>YEX/>YEX/ >YEX/ >Y9901!'#7'373o~]eus]֠ J3/EX/>YEX/>Y901#"&'77267733#+;?   ]Wc ,%! 3P-t 9EX/>YEX/ >Y0135#5!3-7I5?I=FE_|)_*/+/%++*A]A]+  +  +0173"&&&54&&&54666546663"y"*"/'&))+ 0"D 3,% $!  ]Ez I / /Ai]и   ++A]017''7'uv&wu$uu%uuxuw&vu$uu%uu(NZ/0/1/A] A< ] A;]A>]AM]A\]A]AV ]0)# +&+A ]AH]A&]01663#"&5546667663#"&5546667*+$ # &  ! T=  ##*".   ##*"(PZ3H4/5/4  AL]5-' +!*+01665454'#"&546327665454'#"&54632L "    !" 1  ""+"1  ""+#(Z#/ +01663#"&5546667v$ #  T2  ""+"(Z#/  +01665454'#"&54632L# !  /  ""+"%//+015!!/38%//+015!!834I//A)]Aq и++01!73#!!'7#537#7#z'Zgjӄ#b_jM$d3x3&o3x6D'/7?GOW_gow]8<+(,+ $+++ и /AJZqA! )9IYiy]A )9qAJZqA! )9IYiy]A )9qA!  & 6 F V f v ]A   & 6 qAE U qA!((&(6(F(V(f(v(((((((((]A ((&(6(qAE(U(qA!88&868F8V8f8v888888888]A 88&868qAE8U8q8084и4/8Hи<Lи0Pи8TиT/(Xи,\и `и$dиhиlиpиtиxи|и|/EXZ/Z >YEX`/` >YEXd/d >YEXj/j >Yfb+&"++NJ+ ++и/*и.и2и6и6/ :и>иBиFиZRA!RR'R7RGRWRgRwRRRRRRRRR]A RR'R7RqAFRVRqVR^иnиrиr/VvиJzиN~01%#"5432'#"5432'#"5432'#"5432#"5432#"5432#"5432#"5432#"'632#"5432#"5432#"5432#"5432#"54327#"54327#"5432D3N\ZN44NZ\N3C6*LertfK*67GH/I/ ++AX ]AG]AV]HAK]AL]I.A(<]>AHA]EX!/!>YEX3/3 >YEX/ >YEX/ >Y!!)и39AX@]C01%'6654&&&#"&&&&5466632666632#"&'73266654&&&#"##)3D&&D3*#$%AV1Ht,4>!/U?%%?U/$%B22B%%C3(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W01VA%. 3D&&D3'>M7>Fû+ +,=+A]A]A ]$ 9A 4(484H4X4]AD],H81+!+A H X h x ]A ]A(]!'иB01'6654&&&#"&&&&54666326632#"&'73266654&&&#"  '44'" 2C&8YS3%A11A%   3''33&0& !@-$:)):$-@! (3 +H4961>1B&&C2$'44'/;7>D+r//,3+ +A'7G]"A-"]A"]A<"]!F=!XйiEXK/K>YEX]/] >YEXA/A >YEX/// >Y+~v+v~'/0K8A@KSи]d8n016632654&&&#"'6666323'#"&&&'6654&&&#"&&&&5466632666632#"&'73266654&&&#"&&'&#"326!7%1*'3)J! %.3%B23A$-B+ 7)"*3D&&D3+"$%AV1Hs,5=!0T?%%?T0$  %B22B%%C22%K(% "*;4'+*'1C&2%-M  $& 7>|Nre//#+ib+H+N+{+Rf+A']6-XOAb]Ai]//EX;/;>YEXe/e>YEXS/S>YEX1/1 >YEX/ >YEX/ >YEX]/] >Y ;(и 10;CиSRef]nv01%#"&'73266654&&&#"'6654&&&#"&&&&54666326666324&'7#"&&&546732666&&#"3"&&&5466632D $%B22B%%C3##)3D&&D3*#$%AV1Hr,4>!/U?%?68)##%AV11VA%5-#*3D&&D3;2($00 @7%2@#-JQk . 3D&&D3'>M&(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W0Dk7<9U +*4A)9^C%%C^9Rd#+ U9-K66K_#&5!)9#'0F.(D0*#7%34/5/Aiq A&qA'.]A5.]EX/>YEX!/! >YA7]1,йAfqA#]AjqA]A]01766326654&&&#"'6632#"&&&&&'&&#"3267*H)5!@1E&4`+}C2UA%%AU2:V7<5*8Z3+ -'B'%E2;4DE&@W02UA%'69M&%0+ 7>&4P5/ +56++A]A*]A,]016632654&&&#"'666632#"&&&&&'&#"3267!7%1*'3)J! %.3%B22B%-B+2%K(% "*;4'+*'1C&&C2*,:  $& 7%&/'/& и /A ]A']Ahq'A]A(]AHX]AG#W#]EX/>YEX/ >YEX/ >YAmqA]AsqAX]!017&&&&5466632'6654&&&#"j*#$%AV11VA%##)3D&&D39U +)4A*9^C%%C^9*A4)+ U9-K66K7>/ /+A]Am]A]и/ A]]A]A]Af] +Af]AXh]01&&5466632'6654&#"^#!*1B'&C2*! T;YEX/>YEX4/4>YEXF/F >YEX>/> >YF>$4.U0123266654&&&'73266654&&&#"'632#"&&&'#"&&&546666654&#"'6666&$+D0,E0-5 5D$%B22B%  "%/U?%%?U/!?6,sH5U< $#  ,,  ,-"#;N,6*+#dR#H;&3D&&D3/&@W01VA%&5 DM#5A+%  7>XY/Z/+A qAqYH Z8'A 0(080H0X0]C+="+,3+R+0123266654&&&'73266654&&&#"'6632#"&'#"&&&546666654&#"'66{ /!4&"6$!,(43&&3   $A11A$2VY8)A.!*W.,!"-<"*!!N?8-'44'%1B&&C2@05;*1! 7%&/'/&A7GW]Adq' AdqAG#]AW$]EX/>YEX/ >YAW]A]A]AqATqA]A qAZqAX]A]!0173267#"&&&5466632&&#"j3D&6_,0;C!1VA%%AV1!C;0,_6&D3&D396"3"%AV10W@&"3"5:3D@[263/!+A]A!&6FVfv]A&6FVfv qAqи3й!',+++Aj]A\]A]A]AH ]A]A]AU]AI0]01"32&&#"3267#"&&&5467&&5466632&&]$#/!   ( !@$$#%  4#%  #4$) ) %3G[n\/R4+(+"+\>йH-+++CW+M9+A]01"32&&#"3267#"&&&5467&&5466632&&466632#"&&&%4&&&#"32666%$/!   ( !/$$#% o1A$%A11A%$A1>&32&&23&a#%  #$) ) %%C22C%&C11C&4''44''4'5iøj/ +9^+jA| ]A'777qAC7qAW8q9Iи^XAgq+3,+6c+D=+SL+OA+3,#Ahgxg]01#"&&&54666324&&&#"66326&&&&#"326"32&&#"3267#"&&&5467&&5466632&&1A%$A11A$%A1'&32& B F   >> #JrK/'+!+K3й?Eй9AX9] ,+++6H+B<+01"32&&#"3267#"&&&5467&&5466632&&#"&546324&#"326$#/!   ( !@$$#%  -,,-4#%  #4$) ) % -- --745/6/56 A - ]A]A]#AC#]A2#] .A0]EX/>YEX/ >YA])A0]3017466632#"&&&6654&'3266654&&&#"7$?T02U?$$?T01V?$w''&$N))!&C22@&$0W@&&@W02UA%%AU^'OQ'M+,K#(Z**Z)1D'%E27>34/5/4A0]5 A? ]AM ] ]й#Ag#]Au#] -2+(+A7]01466632#"&&&6654&'73266654&&&#"71A%$A11A$%A1_; 3&&3&C11C&&C22CK<@=##= E !F '44'71?S T/U/J +TAS]U"A4]@AIC]AFG]A[R]A9RIR]EX/>YEX-/- >Y=7йAW]A]A]A]A*]AY]A9]и-'AHC]Eи=O01766326654&&&#"'66326632#"&'#"&&&&&'&#"326%4&&&#"326667*H)%/!@1E&4`+}CEqoD.V?%%?V.DoqE'N?+95!0Z3+2B%&B11B&%B2 -'B'%E2;4DEH99H&@W02UA%H99H-=9&%  /+ %E22E%'D11D7>2FTU/V/= +UV#3B(++L+A\]A *:J]и(.и8A^L]BR016632654&&&#"'6666326632#"&'#"&&&%4&&&#"32666&&'&#"3267!9%/*'4)G$ %.35WS5%A11A%5SW5<0"{'33&&33'|2&L'% "+:4'+*'8--81C&&C28,,8#/R4''44''4`  $& 78<JnK/L/H +;+AKqA_qA]A:qK.L$ܹ#A66]A8]AKB[BqAB]EX3/3>YEX)/) >Y=E+A=]=A.]A<]EA5E]A]A#]AbqAHqA]A7qAm3qA]3]3) A'#7#]Av##]AB]01%&&'#"&&&54632&&&&#"3267#"&&&5466632'26667&&#"?!%60!-'C10B&,@#!')/3T>"$?T0.I4&( #. !,83D$(D2 ( %AV10VA&1D'?M7>5@A/B/> +B4AH qA'A6qA<qA<<q,+"+A6 F qA % qA6qA<qA<qA<<q01&&'#"&54632&&#"3267#"&&&5466632'267&&#"  //(& 1/4&&3#/<,'B/1B%$8' # '$##+ ''45&2C&%C2&32< ' 7>/=ʸ>/?/+>A]?A,] A( ]80ܹ&AS&]A2&B&]EX/>YEX/ >Y +AX5]AW;]0174666323%#"&&&%4&&&#"32666'4&&&'667$?T01V?$?63 2U?$1B% ')%&C1 %$)0W@&&@W0Dm7j,89/0+06й&й A ]A ]A7 ]AF ]9:EX/>Y++!+A ' ]014666323'#"&&&73266654&&&#"6654&'t0A%%A1{38 %A0  3&&37&C11C&8+!<72CG !E '44'>@;##=7>HI/J/Iи/AX]AH]A8]AX]J-ܹAHX]#Ag#q6EX(/(>YEX2/2 >Y@+A]AW]2(AY"]A"]Aj#qAM5qA[5q01#!"&'&&&&573266654&&&#"'666632#"&'3!2676655 #6e--_6&D33D&6_-0;C!1V@&&@V1-Z# ...-'-4512693D&&D3:5"3"&@W01VA% /1/ "7>oRp/q/K+gf+pAT qAK]AX]AX]иq0A(9]@AZB]AIB]A'H]AHSqTAWY]A7Y]EX!/!>YEXP/P >Y^+A ]AV ]AX qP !AY]A]!+иP5и ;AXB]EAMSqA<Sq01"&'&&&&5732666774&&&#"'666632666632#"&'73266654&&&#"#"&'3!26766553#!A6e--_6$?13D&6_-0;C!$B9+-6>!/U?%%?U/$%B22B%#@3#)>Q--Z# ...3#>-451269,<"&D3:5"3"'54'&@W01VA%. 3D&&D3"6F$,L7 /1/ "-' 7>uv/w/lk+vAH]A*']Aj)qA()]AV*]AZ1]A81H1]wD3A(:]AXVqWEX$/$>YEXS/S >Ya+A ]AV ]S $AY]A] .и8и$?иSIAZVq01"&'&&&&57326665454'&&&&#"'6666323266654&&&#"'6632#"&&&'#"&'3!2676666553#!A6e--_6&D31?$6_-0;C!/U@'#3@#%B22B%  $/U?%%?U/!>6,,9B$-Z# ...3>-4512693D& "<-:5"3"%@T.$E6!3D&&D3/ &@W01VA%&4 4% /1/ -< 7>[\/]//%+\ и]?/REX / >YEXN/N >YZY+ Q+ +N   *и4и :иND01"&&&'&&573266654&&&#"'6666323266654&&&#"'632#"&&&'#"&'33#)"-_6)D24C$6_-0;C!/VA'"3?#%B22B%  "%/U?%%?U/!>6,,9B$-Z#1-:> B'694C$(E1:5"3"%?T/$E6!3D&&D3/&@W01VA%&4 4% 537>UUW/V/Wи"A)()]0AY1qV9Cи9LEX>/>>YEX4/4 >Y ++ &A'*]A*]-A[1qAD]AXD]>G4QAT]AWT]01"&'326667326667#"'&&55#"&'532675#"&&&5466632&&#"32673n<)O$IS'<3-+(U-7k-0c<-T)#Z-1VA%%AV1!C;0,_6&D33D&6_,Y #O&  1 l  %m %AV10W@&"3"5:3D&&D3967>>&:;/YEX/ >Y-4+AZqA)qAX]"AW%]A'1]A1]AG:]01%#"&&&5466632&&#"3267##"&'53266670;C!1VA%%AV1!C;0,_6&D33D&6_,=&H-7i/0c<311y"3"%AV10W@&"3"5:3D&&D3963G9% 7>-4'C(/)/( )'+"++01#5#"##"&&&5466632&&'"3267-Z%%%%;&##e'F##!   R7>S%7apb/c/BS+_8+7(+bAGW]AH]c Aj] AG#]AW$]A*]A6N]EX/>YEX/ >Y3,+&'+`a+=F+AW]A)qAY]!A8)]Aw)]A{,,]A /'/7/G/]Aw/]A3]A3]FN=X0173267#"&&&5466632&&#"5##"&'3267'5#"&&&5466637&&#"32326735j3D&6_,0;C!1VA%%AV1!C;0,_6&D3R6l;8_R`/a/'++A:]a9`CAC]AHq9MAXN]A(NqAGS]AWT]CVAGXWX]AH]]9^Aj^]A^]EXH/H>YEX>/> >Y+2+++A<]A?]A7/]AHqA.NqAYN]HQ>[AV^]A^q01##"&&&5466632&#"33266676655#"&'5326667#"&&&5466632&&#"3267")& ))"   $J-7i/0c<3110;C!1VA%%AV1!C;0,_6&D33D&6_,'@ %$' " 59% "3"%AV10W@&"3"5:3D&&D3967>MN/O/+OLA]'N0L:A;]0CLKAIK]EX5/5>YEX+/+ >Y+ +A ]A;]A ]A<]AY;]A;]5>+HAK]AVK]01##"&&&5466632&#"3326667665#"&&&5466632&&#"3267!)& *)"   #Z-1VA%%AV1!C;0,_6&D33D&6_,'@ %$' " 59 %AV10W@&"3"5:3D&&D396t7>J,K/L/E(+K йA]A%]L2A7]A7]A8]AH8]A8]Ah8]A(8]A8];A>qA>]ABqAB]AH]AGH] +@-+$+A]A-]A7qA7]A97qA7]A8]01"&'&&&&554632'6654&#"33&&5466632'6654&&&#"!1 0 1 (2B&&C1')-'54'-)> &(,)  i D#&B22B&3.% !J)4''4)J!7>#67/8/4+7 AF ]AHX]8$AX]AI]A,]Al,qA,qA,]EX/>YEX)/) >Y0+65+A ]AV f ]At ]) AY]A]Ak,qA,qA3]01#&&'573266654&&&#"'666632#"&'32673#C'? # 693D&&D3:5"3"&@W01VA% m"37>AD<_=/>//+'+>=8*/4++* й!012#"&&&'32673#5#"&&&'53266654&&&#"'6666&!"&(3 -K  9  3#!&I9d     7>56sʸt/u/4+<d+SP+\G+A/]A-]t AX ]AG ]u$A$/$]AJ$]AlqA,qA,,]A%,qA,]A2]A2]A3/3]A4/4]7/+ )+65+RQ+0+A ]AV ]AY]AkqAn,]A,]A|0]A000]7j`A`]A`]AKAO]WASW]01#&&'573266654&&&#"'666632#"&'326732#"&&&'32673#5#"&&&'53266654&&&##"'6666&O'E# 693D&&D3:5"3"&@W01VA% m$3&I9d     7> [\/]/+:)+AVq]AO]A-]A]A]AH]A]AX]\$A;]?AGA]AWBgB]AB]AKG[GqAINqEX7/7>YEX/>YEX/ >YEX/ >YKQ++KAZ] Ak]AX]A(]A]7,Ag2]DQW01%#666654&'73#&&&&5466654&#"'666632&&'532654&#"5632":,*#-5!9M-S/L5&/&   ,-*&/&%:*  ')  '  '!5G*9U +#dR6ZB(3&4<,;*  7( )'.#() #%,) !7 ;YEX/>YEX"/" >Y10123266654&'7#"&&&546666654&#"'6666&$+D0&D3*#-5%@W15U< $#  ,,  ,-"6K-9U +#dR9^C%#5A+%  7|}/~/+A]A]A]A]A[]A ]AH ]AG$]A$]AW%]}8A]8]'A*]A7/]AW/]AG0]A0'0]A5]~NA>N]AN]AV]AHV]A(V]AXW]A\]A8]]A^]_AXa]AHb]AGf]AWg]iAn]An]Ax]Ax]EX=/=>YEX3/3 >YA], A]="и=CиIи3sиSи ZиdAn]013266654&&&5467&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666. '  ,-&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* }C\ ## !! -Q! &D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7>s"t/u/+t3"Ag%]AV)f)v)]A)]A4)]AB)]A&*]uGAG]AKP]A?P]AP]AyP]AYP]A+S]AhU]Xb8+.'+' иAw)]8=иBи.jиLи Sи]0132654&547&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666V$#$  ,0!+ $:)+>&4',#B-%>+':$ ,!/,/* 2G 2G2 4''44'$2C&&C11C&&C2$'44''4 $6! 7>G//+%<+1.+HAZJ]AHK]AGO]cA\c]RAGZ]AX[]A['[]yAy]A]]A]A(]AH]A]AY]AH]AG]AV]EXh/h>YEX^/^ >Y A+7*+0/+^W иhMAGZ]A`]hnиtи^и~и и013266654&&&5467&&#"&&#"32673#5#"&&&54666324&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666. '  ,,m9.-#"-,ABi <0/=!% }&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* }C\ ## !! .O"  !" }(u 2&$1  (w&D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7>6S//K9++-&+43+-A(]& AW]A'7]A]AY1i1]A81]9TA[V]AW\]o^Ae]AGf]A'g]A>]A]A(]A]AI]AX]A8]AX]AU]KEXt/t>YEXj/j >Y!+52+*+A]A(]A]As!]jcAиtYQиtzиA]jииAиQ01#'6654&&&#"&&&&5466632366554&'!53#3266654&&&5467&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666t2),'43',)' 2A&&C1T '. '  ,,&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* /?ZO!H)4''4)H! %.3&C11C&#DA#*H7^(C\ ## !! .O" &D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7KCL/M/.+AY]AG]A]AW]A]L8 AG W ]A ]A ]A]AK]AX]MA]A(]$AY&]AI']A']A'+]AE+qEX=/=>YEX3/3 >YAX]=A ]33ии)и=G01%4&&&#"32666%#"&'73266654&&&#"#"&&&54666326666320B'&C21B%(D0%@U/#&B22B&.G0;V82U?$$?T0$B8+-6= /U@%'E53D&&D33A'1VA%. 3D&&D3/@D MD.%AV10W@&&54'&@W(>HI/J//+I9 JA,]A8]A*]A]AXh]%>+4+4ии*и>D014&&&#"32666%#"&'73266654&&&#"#"&&&54666326632f%33&&34$m1A%   3&&3#6%-B+%A11A%7XT2%A14('44'(2&C2$'44'$23<4#2C&&C1=1/?1C9> JZ[/\/)K++Ax]Aw]Av]Ax]\@A@]A.@]A=@]![1A21]A!1]A1]SP6+.X+ ++A ]A ]XиP%A81]6;и.D0132654&&&#"466632#"&76654&#"#"&5466632632#"&'732'4&&&#"366#"  $  '. &1W%%  $)8$)4#5) Y  &  *"$  $!7$4'+  #:)$-%(:C  )  &73GVH/I/*4+IA3]AR]A]AV ]HAV]A1] AI#]A#]A']A-]A1]AI2]A7]AF;]A;]AW<]A<]>AW@]AF@]AA]AE]EX/>YEX / >Yии9%A-] C/A1]01%#"&'#"&&&546663266324&&&#"32666%4&&&#"32666%?U/DokD2U?$$?T0EmoD/U?%32B%&B22B&%B2b1B%&C21B%&C11VA%G::G%AV10W@&H99H&@W0&D33D&&D33D&&D33D&&D33D7>3GظH/I/*4+IA,]HA] Ah"]Ay#]Ai2]Ax2]Ah7]Af;v;]>Aw@]AgA]AiE]9+ C+ ии9%иC/01#"&'#"&&&546663266324&&&#"32666%4&&&#"326661A%5SR6%B11B%6RS5%A1-%33&&33%&34&&43&&C28,,82C&&C18--81C&4''44''44''44''4734/5/A]A]A]A]4$EX/>YEX!/! >Y2+A]Arq !(01%666654&&&#'4632#"&57266654&&&'50,-:MX/lh7P4,((,4P7hl/XM:-,0! -3:I%3#88#2&I93- !37>~/0/1/0A]1A-]A<]A] и) +.+$+A ]A, ]A,]A$]A!$]01266654&&&#"'4632#"&57266654&&&'5 %"#--,-,>8,'$ '734/5/45 A]A]A](AY+]AH+]AG/]AV/]2EX/>YEX/ >Yй#-017466632#"&&&&&#"326%6632654&&&#"7$?T02U?$$?T01V?$w'LN)I*,K'X'*Y' 2@&'B10W@&&@W02UA%%AU@''!%'N''!$%E22E%&7>4^5/6/56 (2-++#A"#]01466632#"&&&&&#"326'6632654&&&#"71A%$A11A$%A1#=9 4('6C D &33&&C11C&&C22C.!!94''4 7>7CB>+.++'+A$ qAC S qAm qA qA qA0 qAn qA# qAW#]$и$/8и8/E!/EX3/3>YEX/ >YAX]A3]A;3]3A qA7 qAh qA ]A=!]Aj$q!;A7;]C01&&'"##"#"&&&546326654&&&&&5466632&&#"3`, *=J=*W:3$B3H9?J'9*=J=*'-8!K0&/%/~  '7)LD F ,"'>\@-3''$ '+D 7<J`K/L/3+)@+A]A qA7 qAo qA qAT qA@ qLA~]A]A>]A]]Av]K!A''],A},]A</qA.0qA9;]!FEX8/8>YEX/ >YC$+/ +A8]A;8]8A7 ]A]A7']Aw)]=01&&'"&&'#"&&&546326654&&&&&5466632267&&#"_+ *>I>*"$ '#R'$B2E;896 *>I>*'- 7!r<+]!!,'-~  '7)"3$ $ ' ,"'>!, ! ''$ ' '< 7:HI/J/A qA qA7 qA qA(]A']I A4 ]A" ]*A';] DA7D]6+;+A#+A)qAHX]Ai]A9qA qA& 6 qA qA#]AG"]Av%]A(]A";]01&&#"&&'#"&&&54632654&&&&&5466632267&&#"# 080  $?3'5.*+* 080 #)W-#F"$ +2# % !/!  , >U6He//Xu+Q|+?'+7++AS]A=]Al]A,]A\X]jAVr]A6r]AOyqA,qA[qEX/>YEXe/e >Ym+:,+"D+" иDи:и,2A]LAL]A6m]Ar]AHyqAy]e013'#"'73266654&&&#"#"&&&546663266324&#"32666&&'"&&'#"&&&546326654&&&&&5466632267&&#"s35H3%%3"6&-D+$B00B$6ZV1&@0O<3%%33$i, *=J=* $ "S'$B1E:796 *=J=*'-8!r<,]!!+'-/'<44 $ )35($35<3$2B'%D1>0/?1D(!, ! ''$ ' '< F>Hkw//lI+fr+U`+++GF++AC]A]A"2]!A!]"AF/]1AF5]AF]AG]AsU]AU]EX/>YEX/ >Y+)+ :+uL+io++A # ]AS ]A2 B ]AB:]A:]A!:1:]AQ:]LRиiXиo]иucA]{01##"&'&&&&54666766332#4&'&&##"3326667666655346326632#"'732654&#"#"&732654&#"&&'"&&'#"&&&546326654&&&&&5466632267&&#"+h4`5g,  ,g5`4h+#3'd*6*c)  &`(<00/ 3F2"862FF2 #33#3F02F"3#'-2"#3, *=J=*#$ '"S'$B1E:796 *=J=*'-8!r<,]!!+'-135--531k354,-#R@%%.0/.2.% .2.HZ3F""F32H !4#"56#1GH2#47!#351  '7)"3$ $ ' ,"'>!, ! ''$ ' '< 7#$/%/A/]A]$EX/>YEX/>YEX / >Y 01%4&'7#"&&&54666732666)#,5%AV11VA%$#*3D&&D39U +#dR9^C%%C^9)A4*+ U9-K66K7>! "/#/+#AoqA qA]A\]Aq]AhqAx ]"A]A)qAm}]A'qA]Aw]AW]Ag]Ah]Ax ]AX ] +AiqA']AgqA']014&'7#"&&&546732666} !*1C&&C2+ "'44'-A"N?,H44H,?N"A-#:)):7 -.///Af]AL]A8]A:]. A" ]A ]Ai#]Ag$]'A ']EX#/#>YEX/>YEX/ >YA]AE]AK]AZ]A#]#$,016654&&&5467#"&&&546732H*+,!5-$%AU21V@&8*#*2C'Bz#=X6?$+B$V?*f4(5B(9_C$$C_9Re"+ U9-K67> 01/2/AN]A]A.]A]A] A]ATqAy]A]Ai]A]1#A#]A #0#@#P#`#]A%qA&]A5&]AS&]AY']A&']A6'F'qAV(q*/+'&++Ay]A]A]A]A]A]A]A]A(]A]A%qA'&]016654&&&546667#"&&&546732D  $#"1C&&C2+ "'403#<*)!9C0&'( )2,H44H,?N"A-#:)734/5/AI]4AE]A7 ]A8&](AV+qA1qEX/>YEX / >YEX/ >Y.+AG]A]# +A^+qA +qA.]1A_1qA 1q01326667#"&&&546663266654&'#"&' !+,! # &@W00VA& #3C&&C3I32I)  )1>H%1VA%%AV1%H>1&D33D&0D $++$ D7>/0/1/AO_qA]A]AWqAFq 0 $AW-q*++AXqAq]AZqAHqAZ-qAp-]01326667#"&&&5463266654&'#"&' !" $$2B%%C2$'44'6('8 V!!c;&C22C&;c5''5'1!!37@A/B/*+BA)]A!3EX6/6>YEX/ >Yи% и6/и6<01%#"'73266654&&&#"#"&'73266654&&&#"'66326632%?V.' %B22B%$D4 FG/H/A( ]Ax]Av]ADqG7%A).q3<+ )+ и) и3A%%%]A)7]A7]<B01#"&'73266654&&&#"#"&&&'73266654&&&#"'66663266321B%  4&&44)-C-4.% #J)5&&5)J# %.4:WQ2%B1&C2$'44'/992#')-'34(+*'=1/?1C7 ,-/./A]A]A] A]A]A]A]-A]A ]A ]A ]A ]#EX/>YEX/>YEX/ >Y(+A]A] A ]A(]017327&&#"%4&'7#"&&&546766326J+Z6(NN!*"+6%AU21V@&8*#*(Y()Z'i!$F'_9U +"eR9_C$$C_9Re"+ U9,-' '*7> /0/1/!+A q1 A]AU]0A_!]An!~!]A!]$ +AW!] *013267&&#"74&'7#"&&&5467663266~6'$9<;!!*1C&&C2+ "D D"C-A"N?,H44H,?N"A-#!7EF/G/"++FAO ]A. ]A+]AI]AS]G<,A(5]EX / >YEX/>YEX7/7>YEX/ >Y 'и71A01%#"&&&5466673266654&'73266654&&&#"'632#"&&&rH1VA%$#*3D&&D3)#5,1@$&B22B&  !%/U@%%@U/ ;3*BL%C^9)A4*+ U9-K66K-9U +,g?&L<%3D&&D3/&@W01VA%'31>j /+ EX/>Y+A]A]A?qAqA]AqA-qA]A]01%3j3Q7<t>j,./ +#+A]AA ]A ! ]AP ` ]A0 ].A#]A{]Av ]Af!]AW#]A#]A%]Av&]Af']A{+]-EX/>Y+(+A8 ]A ]014666323'#"&&&%4&&&#"32666t0A%%A1{38 %A0>&32&&23&&C11C&8+!<72C%5''55''5>j01/1йA]'й A]A(]2EX/>Y"+,+++013'#"&&&''776632'4&&&#"32666730&#>0Iif!N6$@1 &32&&23&<7+:"uP":6/1C&$+c5''55''5?>j T/+ EX/>Y+ +0173%5?H,3~.+7g 9Q:/;/4+A1A]:A]A 0@]A7]; A)$]AA)]+A54E4]A$4]A5]A e5u5555qA5]A 55&565F5V5qA25]A!5]A@5]EX/>YEX / >Y+2+++A8] &017327&&'&&#""&&&54666323#4&&&#"63232pbC-,#1V@&&@V12W@'S4E&%B2 3B:$YEX/ >Y(!+1+AgqAgqArq+Ag1]017#"&&&5466632#4&&&#"632323267&&'&&#"C;291V@&&@V12W@'34E&%B2 3tbC  .,$#cE%AU20UA%$C_9-M60@$ - 7>'506/7/AFV]Av]A%qAcq6 A ]A ]7AO]A>] !A{.qAJ.qAi.]AL0]EX/>YEX/ >Y(!+1+A]AHX]A(qA ]A8]A'!]+AH0]017#"&&&5466632#4&&&#"632323267&&'&&#"C;291V@&&@V12W@'34E&%B2 3tbC  .,$#cE%AU20UA%$C_9t-M60@$ - F>QER/J ܹ 7й6S+A*+0132#4&&&'&&&&##"33266676666553##"&'&&&&54666766P`5f+3 -0/6/0.  /0/300. 3,f5`6e-,g-''#    /2/.10  01.HZ244--442k344,F>@LA/'A7"G"]'B>ܹ?+3+01##"&'&&&&5466676633#"33266676666553,f5`6e-,g5 *.  /0/300. 3244--442h344,3 /1/.10  01.HZF>_@?A/5 B!ܹ" ?++?>+01"3!266676666553#!"&'&&&&546667663!!n------12/ 3*f56Y**Y6f /2./20  /1/HZ145,)452k354(3F>_QER/Aܹ.й-S I+7"+01#4&&&'&&&&#!"3!266676666553#!"&'&&&&546667663!2_3 -00.---,.-00. 3-e66Y**Y66e+    /20.20  /1.9K154-'562k243(-''#F>Kc]d/B/VLйd4!ܹ 4e)+QG+_+01##"&'&&&&54666766332#4&'&&&&##"3&&54666324&&&#"32326660A%6e-,g5`5g- 3.007/0.  ,--1A%%A0'%33&0'  3%&C2-442k344,-('# A  /1..1/ B(&C11C&5''5-F%2F>_La]b/C/WMйb4!ܹ 4c*+RH+?+01#!"&'&&&&546667663!2#4&'&&&&#!"3!&&54666324&&&#"326661A$6Y**Y66e+ 3.00.------1A%$A1'&34&1' 3&&C2)452k354(-''# A  /2./20 B(&C11C&5''5-F%2F>:R`S/1/E;йAG]S#ܸ#T+@6+M+01##"&'&&&&5466676633"3&&54666324&&&#"32326660A%6e-,g5,00  ,--1A%%A0'%33&0'  3%&C2-442k344,3 /1..1/ B(&C11C&5''5-F%2F><Q`R/3/G=йAG]R$ܸ$S+B8+M+01#!"&'&&&&546667663!!"3!&&54666324&&&#"326661A$6Y**Y6f------1A%$A1'&34&1' 3&&C2)452k354(3 /2./20 B(&C11C&5''5-F%2F>G]H/.//йH@ܹ I+7&++015##32#4&'&&##"3326766553##"&'&&&&54666766S3a5f+#!3%f*6*c)  .0'0 3 @>0B ,g>30}-#RD'%.2..00 $< !$542k354,F>nU]V/:/;йVN%ܹ%W+D1++015##!2#4&&&'&&&&#!"3!2666766553#!"&'&&&&54666766nS3h6e+ 3 -00.------k% 3.!h6Y**Y>30}-''#    /20/20   ,5  )452k354(F>?`@/8A&ܹ'й A'] ++/+015##30"3326766553##"&'&&&&54666766S3-/.   "'/ 3 @>0A,g>30}3 /2/.00  %< !$450k344,F>nFSG/?H+ܹ,й +5"+ +015##!"!"3!2666766553#!"&'&&&&54666766nS3hf------k% 3.!h6Y**Y>30}  /20/20   ,5  )452k354(7EF/G/A+AG]FA7 ]A ]A& ]AF ]AQ ]AX%]AH&]G7(A 0)090I0]AZC]EX/>YEX/ >Y A' ]AX ]#и-A0]2и<01"327#"&&&54666323266654&&&#"'632#"&&&'&&&&%?//?%&0R<##HI/J/D+AqAqIAqAqA ]Av ]A 7 G W g ]A& ]A ]A"qA&qA&qJ:)A ,,qA*2]A2]AY2i2]A92]+ +AX ] $и/и4и?01"327#"&&&54666323266654&&&#"'6632#"&&&'&&&&2$$2%@..@%%;+!-2$$2  %@..@%$:,!-}'44'$2C&&C12C%4''44'"1C&&C22C%4'7'e(/)/() EX/>YEX/ >Y#017466632#"&&&%4&&&#"326667$?T02U?$$?T01V?$2@&'B11A%&C20W@&&@W02UA%%AU2%E22E%'D11D>'(/)/() AqA]Ahx]Av]Ag]A]AqAv ]A ]Af!]A!]A!qA%qA%]Ai%]Ay&]+#+A!q01466632#"&&&%4&&&#"326661A%$A11A$%A1>&33&&33&&C11C&&C22C&5''55''5>*]+/,/+ܹ,  A9*]A*(*]+%++013266654&&&#"'776632#"&&&'&43$&23(pif!O5&A/1@$#>05''55'&5P":6/1C&&C2+:"@()/*/A]AqA6qA]Aq  )+%++AqA!]A]A]A"%]A%]013266654&&&#"'776632#"&''((& XeEN<*4''54N ))();(*%'56(C87@ȸA/B/ +AA(]AX]A'"]A8(H(]B9ܹ*A2]A(2]EX/>YEX/ >Y AX] %и/и4и>01%#"&'73266654&&&#"'66323266654&&&#"'632#"&tID|-`5*E0 4B$5`-|D+TD(4E)%B22B% '.V?%%?V.Ap?OEC5:4G($B0;4DE#:P+!H>(1D'%E2 /&@W02UA%R7>BC/D/ +CиD;A;]A,;]*A,*]Ax3]A)3]A83]AX3]+ +A]A] %и/и6и@01#"&'73266654&&&#"'66323266654&&&#"'6632#"&X94`$I* 5%)3*I$`4!B3 '54&&4  %A11A%2U0=54),)6 2%+*45.<"80'54'$2C%&C1@F>_H//I+:+0++++]A(p]tAt]sAs]A#]EX+/+>YEX/ >Yи+"5и"?и+DAR]AYRqA~]A"~]01%#"&&&'#"&&&'73266654&&&#"'6666323266654&&&#"'6324&'&&&&#!"3!266676666553#!"&'&&&&546667663!2"&'73266654&&&#"#"&&&54666326632"3266654&&&P%?U0!=6,,9C$!C;/+_5*E1 4C#5_+/;C!+UC)3E)&B22B&!%0U?%$.00.---,.-00. 3-e66Y**Y66e+   )  )- '9$ 8**8 /IF* 8**8)**)1VA%'3 4%"3"694F)%A1:5"3"#;N,!H>(3D&&D3 /&@WA  /2..20  /1.9K154-'562k243(-''# %++ +1/)+:!!9*1''1*9!!:+ ++  ++ 7L_1`/a/.+G8+a`A(]&A'0]A86]A@]AO]A(O8O]QA+TqAY]EX)/)>YEX/ >Y иA]AV]A)])"AY&]A&]3и"=и)Bи3LA8O]=VиB[01%#"&'#"&'#"&'73266654&&&#"'66323266654&&&#"'6323266654&&&#"'632L$?V0Cl!rHAp tID|-`5(D13D%5`-|D0UB&/H0'C00D( '4V=!/F0&B11B&'0V?$2UA%O??ORYEX;/;>YEXA/A>YEX/ >Yи2 AA]AA)])*Ai+]A;];:01%#"&'73266654&&&#"#"&&&5466673266654&'76632%?U/$%B22B%'D1!/+01533S3>30++0177KP0_1(> 7 /и/ й ++0133!5333SS3>c330(># j/ ܹйй  ++A]A<]Ag]A%qA ]0133!3!5333R3S3>c3c307>[O\/]//+#+][A,[]A-]A]A/]6\?A?]AA][IA-I]AGO]A'O]AO]?RAT]AGT]AIY][ZA+Z]EXD/D>YEX:/: >Y3+'++AD]AYJ]DMAHO]:WAVZ]01"&'33266654&#"'6632##"&&&'&&5532675#"&&&5466632&&#"32673n<)O$  r  " "),4)"0c<-T)#Z-1VA%%AV1!C;0,_6&D33D&6_,Y #5    ' $,; B'%m %AV10W@&"3"5:3D&&D3967uN\߸]/^/2+'+A]A)9]A ]^HA H] A ]];A;]EX>/>>YEX/ >YMйZUйA]A]>7и">C01%666676324&&&#"#"&57266654&&&'5666654&&&#'4632632#"7&&#"326 !0#09  4D%2[*$'-cphl/XM;-,00,-;MX/lhR_In1V@&)BX/4 $-- ?c!<3*$@030 09"9QI93- !3" -39J-#P&?W15W?" <,K7>P]I^/_/3+A8]A)]Ax]AX]_JAJ-J=J]AOJ]AlJ|JJ]AZJ] A ]и^<и3(A9QIQq8?+#+-.+V+A[]A]8A' ]A ]A;]A(<]?EиOA8QHQqA]V]#[01666676632&&&&#"#"&57266654&&&'5666654&&&#"'46326632#"7&#"326$*'4&G "NUOU$E;-""% %""-;E$UO?JH)%B24C$) #" 0NP.'!  1%'$%,,>9+'$ ' #(+:# 1C&)C0.!97>8rs/t/+DE+t A(]AW]s) AT]^/d/S/m/EX./.>YEX$/$ >YEX/ >YA;.].и$#.4иd>^KSTmn01%'6654&&&#"#54&&&#"&&&&546663266324&&&#"#54&&&#"&&&&546663266323#566##)3D&&D333D&&D3*#$%AV1EppE1VA%'44'''44' 2A&6VV6&B2I&*A4)+ U9-K66K-ll-K66K-9U +)4A*9^C%H??H%C^$:)):$TT$:)):$-@! (3 +H470074H+28'!B7>ee//"+V+m+fGܹA]A[%q5,A0]Ax]EX:/:>YEX0/0 >YEX/ >Y{r+dY+Q+A:]:'A']и0/:BA,_]A_]A9_]013!266676654&&&#"'6654&&&#"&&&&5466632666632#!"&&&54632&&&&#"4&&&&&5466632&&#"#j ?  2B%%C3##)3D&&D3*#$%AV1Ht,4>!/U?%")* ~AiO5 -B[@$7?7$1B%, /2/#$7?7$3 5&D3'>M&(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W0'@  #LG $  *:.(.<,%A0#."1*(4E2H7>FG/H//<;+G  AG ]H%AZ]AI] и.EX / >YEX*/* >Y4+A ]AV ]*  A]01"&&&'&&573266654&&&#"'666632#"&'332676553##)"-_6&D33D&6_-0;C!1V@&&@V1-Z#13  > B'693D&&D3:5"3"&@W01VA% 5 08  7>"7FG/H/A]AqAqA)qA]A%qA]AqAqA)qA"qAiqAqG'A*]Ah,q/и':Af?qAZ@]AUE]EX,/,>YEX"/" >YB2+Ao,qA,],A22]A2qA2]2 AS ]AKB]BAL]AN]"A5qA5qAd5qA\=]A=qAi@qA@q01&&#"326&&#"3267#"&&&5466632#"&'&'667632[/'1 -*!1-*2W[ %8K01V@&&@V1M{Q9(B2 H**3)B,* * (!*:6+%AU20W@&PH 'BJ%'H#17>YZ/[/ +A=][U*й ZKAK#K]AK]4A]Ax]A]EXP/P>YEX/ >Y +E:+A ]A}]A]A]%P/A/]AI/]AK]01"&&&5466654&#"'6666323266654&&&#"3266653#"&&&5466632P( "*"#,&"*" 0%2@ &D33D&'B.3 _"7>8"#@##6n#f$/%/$ A(]EX/>YEX/ >Y 01%#"&'73266654&&&#"'666632n&?U/1 * &B11B&=e:!69@*/U?&2UA% .1D'%E2D0-,!&@W)yw/  +A ]A ]A ]A ]A ]EX/ >Y +012#4&'"#46/NZ3?65@3V][6K9=HRf)"#/$/+$A']A6]#"A#"3"]!EX!/! >Y + иA(]014&#"#4632666632#4&#"#F?65@3VR*! !+RT3>5+ 3K:=HRf  fRH= 3%6'Y(/)/(и/) ܹAqA! )9IYiy]A )9IYiy qA!&6FVfv]A&6FVfv qAq#++01466632#"&&&%4&&&#"326660B$&@00@&$B0>%33&&33%%D11D%'B22B'5((53))3'3?E.(+ ++Ab ]A]AZ]AT]Ag]Ag ]AT ]AY&](4A4]A7].:Al:]AZ:]A:]Ay;]AX<]+#+Ag]A1]A1]A7]AL7]A?7]A7]A7]A7]Ay7]A<]AW<]A0=]01466632#"&&&%4&&&#"326667#"&546324&#"3261A$%A11A%$A1>&32&&23&-,,-&C11C&&C22C&5''55''5-- --!5A4+ *+//++%01466632#"&&&&&&&#"326'6632654&&&#"1A$%A11A%$A1$  >> #<B F &32&&C11C&&C22C0  #=5''5(></EX/>Y+0133(3S>~37>///+013#jS_3c(>A g /и/  EX/>YEX/>YAEqA]0133!33Q3>~3~7>Q [ /и/  //+A]ADq0133!33R3>c3c7&45/6/'/6Ak]5 AE ]A ]A'7]AV]A]A]A)qA']AB']'A]-A-]AX-]A3]A4]EX/>YEX/ >YA]A]A]A]AJ]A]A*]A9]AYi]Ax]A(q*2й!Ae!qAT!]A$]A-]01%#"&&&5466632&&#"66766323267&#"8U;1V@&&@V1D|,`5'C2A!*(H,3Z01496'%AU20W@&ED4;2E%'B'/ u +0%bp3/+й++01%7+b!3GH/>й  йй*AE*]4+%AI%]A(%]Ah%]9$/Ag/]A'/]AE/]C01466632#"&&&74&#"32674&&&#"32666%466632#"&&&!" #!   S%33&%23&0A%&B00@%&B1$ $$ %""!!4''44''4%B22B%&C11CbrC//++01%,!jH E/+й + +AbqApq01&&546324&#"326-",,-..--jh 3/+й + +01#"&546324&#"326-,,-..,,7 #/)0/1/0A]A%q1A]A#qA%q A qA qA qAqAqAqAqAqAqAqA#qA qA!qA$qA$qA&qA'qA*qA*qA-q'+!-++ +Ac]A qA qAqAqAqAqASc]AqAqAqA!qA!qA!qA'qA'qA'qA'qA-qA-qA-q0174632#"&74&#"3264632#"&74&#"3267,--,yy,--,yK ,, ,,F ++ -- 3/+й+ +01&&#"3"&&&5466632=2'$.0A6%1A!.K"#%6!)9$'0G-(D0*#?'/7?GOW_gow4<+A!44&464F4V4f4v444444444]A 44&464qAE4U4q48и8/4HиH/<Lи4T01#"5432'#"5432'#"5432'#"5432#"5432#"5432#"5432#"5432#"'632#"5432#"5432#"5432#"5432#"54327#"54327#"5432 $7@?7$  $7?@7$.%6GPRG5%7'e(/)/() EX/>YEX/ >Y#017466632#"&&&%4&&&#"326667$?T01V?$$?T02U?$1B%&C21B%&C10W@&&@W01VA%%AV1&D33D&&D33D:!"/+" и#EX / >YEX/ >YA(] AY]A  ]A]AV]A7]A' ]01%4&&&#"'6632#"&'7326662E%5`,|D1V@&&@V1D|,`5%E2%E2;4DE&@W02UA%EC5:1D7>N// EX/>Y+01#"&5332666531J1cb3)45(3!<-dQ$3 2"&:>%&/+A]&A]'EX / >YEX/ >YA(] A]!A'$]01%4&&&#"'6632#"'#&'7326662E%5`,|D1V@&&@V1*2=,`5%E2%E2;4DE&@W02UA%=5:1D<>%&/'/ +&'  EX/>YEX/ >YA']AW]AV]A]AY]A]!AX#]A($]0173267##"&&&5466632&&#"o1D'4`+ >1*2UA%%AU2C}+`4'D1'D1:5%AU20W@&ED4;2E7>5AC/B/9 +?+AW ]CB +AG3]AF3qEX/>Y%+6+<+A7]0012#"&55666632#"&&&533266654&&&#"66"32654&.AA.-A";R38X>>X84T;!30@'&E11E&-I !#$#MA+-DD- (Q?)*DU*J,RD(*CT*!B4!1E)(D1,"3!$$!7~6BC/D/4@+:.+DC A ]A" ]A0 ]йA]A#3]A] !A#&#]A3#]A+]A+]EX1/1>YEX/ >Y+,=+&1701%#"&&&5466632#4&&&#"326667'&54632'"32654&!:V39W= =W93V:!30A''C22C'!9- Z@--A'G""!!(TD+(DR,*UD**DT*!B5!1D(M)E1)60Q-AA-4 !$$!7>3c4/5// +5(4AG]EX#/#>Y+#01267#"&&&546666654&&&#"#466632P "&$- %7A7%$7@+C.3:W8&RE-%7A7%q % $11*_caYK3G,#6B'SF-YEX/ >YEX%/% >YAg]A]A(%]%&.0176654&'&&&&5466632'6654&&&#"%#*,+!4,$&@V12UA%6+"*1E&C/@#=/E?$+B.$S?*i4)4B*9_C$$C_9Tc"+ U9-K6(7>2>?/@/6<+6<A' ]A[ ]Ai ]Ax ]A^ ]AK ]AF]?(A#(3(]A(]@/EX-/->Y"+9 +A]A= ]A, ]Ag ]-3A3]A>9]A,9]01%#"&5477&&#"32653#"&&&54666322654&#"'A--@Z ]H'C22C'Nc3!:V39W= =W95T<!#"!"2-@@-S.Qb1D(M)E1sc9aG(*CT,*TC))Fb9""""7jK/EX/>YEX/ >Yи013373D7/и/ EX/>YEX/>YEX/ >YEX/ >Yиии0133#333DD7>[wvx/y/'++do+A7]x/0AF1]Ae1]AH6]yK8AH;]/AA'A]ASqA%SqAS]A+T]Aeb]AGe]EXF/F>YEXP/P >Y_t+ji++W+++A;]A<]A'0]Ag0]A0]AV0]P3F=AY@]A@]Ahb]01##"&&&5466632&#"33266676655#&&'573266654&&&#"'666632#"&'3267&&#"3"&&&5466632! )& ))" y! &O'Jrt//B/++A7]IAI]A,I](AP]A6PFPVP]AvP]AeP]AP]WAW]A W](aA^a]A+a]dWnA&s]A:{qEX\/\>YEXR/R >Y=4+p+ ++A?]A>]AXW]AW]A\]\iAi]RxA8{q01#!"&&&5466632&#"3!266676654&&&&&5466632&&#"#"&&&5466632#4&&&#"6323267&&'&&#"")& *)" ?  $7?7$1B$-!/1/#$7?7$D".! 0;1VA%%AV11WB&34E&%B24t"/;!  -,# '@ %$' " 5*:.(.<,%A0#."1*(4E2g*2<"%AV10U@&%C^9.L61@$,4%+= 7>&'/(/%&й' %и %$Aj$]EX/>YEX/ >YAYi]!AW$]01#"&&&5466632&&#"3267#Z-1VA%%AV1!C;0,_6&D33D&6_,> %AV10W@&"3"5:3D&&D3967X9Zgvw/x/PA+Af]AS]w xXYܹAUqAE!qA&!qAe!qA!]A)]Ag)q ,A'9]EX/>YEX/>YEX/ >YMF+5$+A]A]A]AXqA!]A$]AR$]AU']A)]A)]Ac)qAm/qAL5]5^AG`]ekAUq]$tAt]01%#"&&&54666326632#4&#"#"&'&'6676632%4&&&&&5466632&&#"#&&#"3267&&#"326 %8K01V@&&@V1QB<4G3),!Q9(B2 >+3)$6@6$2@&9? .15L$6@6$3* $1-*2W[/'1 -6+%AU20W@&0;Q?0)!& 'BJ%'H#* *:-).<,%A0:I6#0*(3G1z  (!*,* *7>#u7>*Z+/,/( +,#AL#\#l#]+++01267#"&&&5466654&&&#"#466632 % 2   $ q-81&    #./.7>@LٸM/ A ]1A1]#йJDй@йA1]Av]A6]NEX/>YEX@/@>YEX/ >Y@и,&йGAйAI]6Af9]01%#"&&&5466632&&'#"&&&54632&&#"3267267&&#" #3T>"$?T0.J3&(?!%60 A:'C10B&,@#!.#Qj%AV10VA&1D'?. !-7 33D$(D2 (7<!s>j EF/йй+8йFDEGEXD/D>Y3+=++(.DE01267&&#"'#"&&&5466632&&'#"&54632&&#"3266673# '2%'B02A '   //(& 0/4&&33 ' 62C&%C2&32$##+ ''4 4&  )<73GH/4*йй AF ]A ]AT ] й>A>]IEX9/9>YEXC/C >Y9%иC/и017466632#"&&&74&#"32674&&&#"32666%466632#"&&&$,,#.,$))))l1B%&C21B%&C1b$?T01V?$$?T01U?%/  /-$ 0,,!++!&D33D&&D33D&0W@&&@W01VA%%AV6>3GH/I/H4*иI>Ao>q  й%9+++C/+Ac]A]Ar]A]A]Al]A{]A]01466632#"&&&74&#"32674&&&#"32666%466632#"&&&!" #!   S%33&%23&0A%&B00@%&B1$ $$ %""!!4''44''4%B22B%&C11C7> OP/Q/+QIAI]Jй(P1A1]A5'5]8IBAE(E]EX4/4>YEXF/F>YEX,/, >Y "++,и45=A7=]AF=]AU=]FE017327&&#""&&&5466632&#"3326665#"&&&54676632654&'7#J+Z6(N !&(& *)" $3!!d51VA%8*#*(Y(*Y'*"+61C%i!$F'%$' "(/T-.$C^:Re"+ U9+.' ').9U +"eR)C2)>~'K(/+( и"и)#++0134&&'#"&&&5466673265533#= 6'1*,!0:q (!_k k2( 1(%0 } l)>t!D"/+" !#+ +AG ]01&#"32675#"&&&54666353*$#)K% %L0:6&%583 "2,(2 i>3//++01339>c37>-;YEX / >Y+:++ A* ]" 101533#"&&&5466632#4&&&#"632323267&&'&&#"S3C;291V@&&@V12W@'34E&%B2 3tbC  .,$>30#cE%AU20UA%$C_9t-M60@$ - (Q/ܹEX/>YEX/ >Y013#53}3D7>&'/(/'A]"й!EX/>YEX / >YA]AW]012#"&'#73266654&&&#"'66661V@&&@V1-Z#3,_6&D33D&6_, )8G&@W01VA% ;693D&&D3:52%(W/йий EX/>YEX/>YEX/ >YEX/ >Y013#533}3w3_<rD%8 o>8@7z7=7p4HuK7 7:](7(7-s7(.*3'*(({@7{ {4 XH^4HHH4wHH4PHHHH4+H41HM4"HF a sR %(`^7`^@+ =---&  -=:====-=-B=-8=   -F3727]x(x(((8@4|677{77@77I7777877@777@7777a777t877778787G787,787+787x787A7A7737777(97777@77777FH77I77I7777I7771t?L7L7L7FFFFFFFFFFFF77?77 g@77F777z7(L(G777778787@7@7Fo7))777(7'(67@77777jj777@7@:7@:@<@7@7@7I7@776787787787 77s?76H77)7)7L7(87(FFFFQEdg 0 #  > q V .`|6q(^,'7iHz8K^|J ) !"n"#*###$%s&a'R(L())**+"+g++,H,_,--N-.R...//J223567278X89:;J<0<=>?4?@ABCpD3DEGH;IJ JKNLMNOPQRSTV8WhYZ\\]^_`W`abcd:e5fhi"ijklm!mn|oLopqqrvrstuv%vw+wxyCyz{,{|i|}~PpĂA`Dd 1%Pj؏؏g6!!0su-̙)ŝӟB!-wިNx(_ެ77777 ]V-->Ec t  % Z "Q s < "  0 % ' - JE 4 "  Copyright (c) SIL, 2003. All rights reserved.Padauk GrcRegTestRegularSIL:Padauk GrcRegTest:20-6-106Padauk GrcRegTestVersion 2.0PadaukGrcRegTest-Regular SILDebbi HoskenReleased under the Open Font License.http://scripts.sil.org/OFLPadauk GrcRegTestCopyright (c) SIL, 2003. All rights reserved.Padauk GrcRegTestRegularSIL:Padauk GrcRegTest:20-6-106Padauk GrcRegTestVersion 2.0PadaukGrcRegTest-Regular SILDebbi HoskenReleased under the Open Font License.http://scripts.sil.org/OFLPadauk GrcRegTestNoNameNoName2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ circledashu1000 u1000.medu1000_u1001_u103Bu1000_u103B_u1015_u103Au1001 u1001.medu1002 u1002.medu1003 u1003.medu1004 u1004.medu1004.med_u102Du1004.med_u102Eu1004.med_u1036u1005 u1005.medu1006 u1006.medu1007 u1007.medu1008 u1008.medu1009 u1009_u102Cu100A u100A.altu100B u100B.alt u100B.med u100B_u100B u100B_u100Cu100C u100C.medu100D u100D.med u100D_u100D u100D_u100Eu100Eu100F u100F.med u100F_u100B u100F_u100Du1010 u1010.medu1010_u103D.medu1011 u1011.medu1012 u1012.medu1013 u1013.medu1014 u1014.alt u1014.medu1014_u1010_u103Bu1014_u1010_u103Cu1015 u1015.medu1016 u1016.medu1017 u1017.medu1018 u1018.medu1019 u1019.medu101Au103B u103B_u103Du103B_u103D_u103E u103B_u103Eu101B u101B.alt u101B.longu103Cu103C.alt.narru103C.alt.wide u103C.wideu103C_u103D.narru103C_u103D.wideu103C_u103D.alt.narru103C_u103D.alt.wideu103C_u102F.narru103C_u102F.wideu103C_u102F.alt.narru103C_u102F.alt.wideu101C u101C.medu101Du103D u103D_u103Eu103D_u103E.smallu101E u101E.medu101E_u1010_u103Cu103Fu101Fu103E u103E.alt u103E_u102F u103E_u1030u1020u1021 u1021.medu1023u1024u1025u1026u1027u1028u1029u102Au102Cu102B u102B_u103Au102D u102D_u1036u102Eu102F u102F.medu1030 u1030.medu1031u1032u1033u1034u1036u1037u1038u103Au1039u1040u1041u1042u1043u1044u1045u1046u1047u1048u1049u104Au104Bu104Cu104Du104Eu104Fu105A u105A.medu105B u105B.medu105C u105C.medu105Du105Eu105Fu1060u1061u1062u1063u1064u200Bu200Cu200Du2060+++o[G3+w\B+gTB/+ 6,"+ @5)+ bP>-+ & +o[G3+w\B+I<.!+cQ?-+& + + E}iDt  ,/  >  >>&  v  v "%     ,  , '*$  $$5  5 '*  s  s "%$  $$,/,/,/ ,/    ,  , '*  m  m "%      '**  *%   1&4   '  '      $<S S $$    '*  $  $  $   "%S S d    '*s  s  s        "%  t T  T   c  c "%+  + '*  m  m "%       '*    ,  , '*         '*  I  I$  $$5  5 '*$  $$  5'*$  $$5  5 '*  j  j "%&  &$5  5 '*     14   1&4   1&4  o O14W  '$ \  $W $  $W I  I 6>I  I 6>   6>   6>  6>  ) 6>  6>  ) 6>   ' 6>   6>   ' 6>   6>  U  U "w%     'N*b  b ' *'i*  j  j "%  c  cc    = '*I  I -'*   '*8Na  a '&*8Z  $  j  j "%     $  $$$  $$:j  jj 6  `  `7`  `7,M/,/,J/  C    'Q*8      '*8+$  $$,@/,M/,v/ ,/ 9< ,/   'N*$  $$      )  ))  $  $;:  $  $$   p  p   $  $$x  x '*      1&4  ,  , '*&  &$  = '*  = '*9L<W  '$        C "&*.26<FJNRVZ^bfjnrvz~ &*.26:>BFJNRVZ^bfjnrvz~:`hBbr6V|(Pp$Jx,Rx:`  0 V v  4 Z  D r . `  > ^ Dj4Lt<\"Btx Jj Bb"BJjnr&Fl6Vv|*F&e)!+]We61rx~  0@lprt{}xwyyvj koqsz|~ v =4!   bccddeeffgijjkkllmmnnooppqqrrssttuuvyzz{{||}}~~                !"#$     +AVj} '/7?G         ! &#&&%%&$&$$&%&&$&"'&  54446657775(58)(559**::*+,-./012;3<58)(5(558)(58)(5954446657775(58)(559**-./012;33< #0 #0##0##0##0##0##0##0##0##0##0##0##1##1#1#1#1(#0#0#1#1#1(#1 P#3#3#4yAPh@(ijjkklnooppqqrrssttuuvyzz{{||}}~~         !"#$%&'()*+,-./023456789:;<=>?@ABCDEFGHIJKLMNOPQR((96    4I8MO78)*+,-./35AEGHKNL=012?C@DFJ';<>B%&:#$!"     5Oh&>Ul.Jf ;Uo .<JXiz*5@JValv   ))))*))+A,BCDEFHIJKLM!!PQ !""R"S##TU#V-----------%%W$%XY&&Z[&\]^_((a(bcd0000000gGNO....`/`'.1111e2e1ff3333h4h35555i6i5jj7777k8k7ll9999m:m9nn;;;;o<o;ppq=qrr>>>>s?s>ttuuv@vwwxx   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0 83!1;!  1; !  1; !  1; !  1; !  1; !  1;!  1;!   1;!   1;!   1;!  1;! 1; 1;! 1;! 1;! 1;! 1 831 831 831 83111111111;! 1;! 1;! 1;! 1;! 1;! 1;! 1;! 1;! 1;! 1+++R@ijklnooppqqrrssttuuvyzz{{||}}~~    !7"<0"<<<0"<"<00;!!0;!!0 WXXX{g'ijjkkllmnooppqqrrssttuuvvwyzz{{||}}~~      ! "##$%&&&     !#$&'(*+,-./013456789:;<=>?@ABCDFGHIKLMNOPQRSTUWXYZ[\]_`abcdeghijklmnopqrstIIII04KJJJ:9::99;8.26UA@F?AT>@CIISEJJ8HV2/3 *B OQ(,RD=67G1-1) $MNP&&''+<5 ""##L% !  *;KZl} *8EXj|+=Oar ':L^ov}  %4BIPW^elsz                           d{||}}~{~||~~||||}""""""""""##''$$%kk&&&j'lmm))nnnkkoooo)(*+--pqriistuv-,..##$$$kk/01222ii364555ii377ef!!gggiihhhh! ;;;;;;;;?@@AAAAAAAABB9Bxx9999;;;;;;;;CC;;;;;;;;yCCCC;;;;;;;;yCCHHII88989999IIII::9:ww9999II?99999999HH88989999::9:ww9999;;;;;;;;?KKKwwLLLMMMMMMMMMMMMMMMMMMMMMMMMQQQQQQQQRRRRRRRRSSSSSSSSTTTTTTTTMMMMMMMMYYYYYYYYZZZZZZZZ[[[[[[[[\\\\\\\\]]]]]]]]^^^^^^^^________````````aaaaaaaabbbbbbbbccccccccef!!gggiihhhh! 88989999::9:ww9999;;;;;;;;;;;;;;;;<><=>>DDDDEGEFGGHHBB9Bxx9999;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JJ;;;;;;;zJJ;;;;;;;;JJ;;;;;;;zJJJJ;;;;;;;zJJJJ;;;;;;;zJJNPNOPPUWUVWWXXXXQQQQQQQQ;1! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 0! 0! 0! 0! 081! 081! 081! 081! 0;0;0;0;0;0;0;0;0;000820820;!82!0;!82!0;!82!0;!82!0;184! 184! 1;0;0;0;0;0;0;0;0;0;0;0; 0; 1;! 13+@AABijjkkllmmnnooppqqrrssttuuvxyy zz{{||}}~~     !"#$#$%"&'(    )  *         "#$&'()*,-./0135679:;<=>ABEFGHIMNOPQSTUVWYZ[\]`abcdefghiklmnoqtxyz{|}~*".*))."".$&)."".&)))).2".$&""$&)&")$&"2)))..)).))))).).)))).))!--(!!-#%((#%-!(((((!(-(((---,'''''',,,"&*2!% #10 /  ++  "-8CNYdoz *5@KValw'2V#k?[.uIa2wH  ` . r S ( m     9:      9:  ?EC@@CCBCC@CA@D?KIFFIIHIIFIGFJLTUMMCQQRBRCOVPNSLWRMM C RBRCOVPMS?YZFF!IIHIIFIGXJ?\]@@"C^^CBCC@CA[D`WR__ C RBRCaVb_SeKIddIIHIIdIcdJe\]gg"C^^CBCCgCfhDeECggCCBCCgCDgDe\]gg"C^^CBCCgCDhDeKIddIIHIIdIJdJeYZdd!IIHIIdIJiJ<==jECkkCCBCCkClkDjKImmIIHIImInmJoTUppCQQRBRCrVsqSoWRpp C RBRCrVspSjYZmm!IIHIImIntJj\]kk"C^^CBCCkCluD###$$%%v%w%%w&##&&#$$&&~}{yy{(({z{{y{|'y|~((((((((((((~{yy{(({z{{y{|'y|~(((((((((((((*),+.*),+*//11100112222233333333554554665547777788;;;;;;<==>>>>>><==###$$%%v%w%%w%%v%w%%w&##&&#$$&&~}{yy{(({z{{y{x'y|~}{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~((((((((((((~}{yy{(({z{{y{|'y|~((((((((((((~{yy{(({z{{y{x'y|~{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~(((((((((((((~{yy{(({z{{y{|'y|~(((((((((((((~}{yy{(({z{{y'y|~}{yy{(({z{{y'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|*),+*~((((((((-((~}{{(({z{{'|~((((((((-((~((((((((-((~(((((((((((~((((((((-((~{yy{(({z{{y{x'y|~(((((((((((((~(((((((((((((~}{yy{(({z{{y{x'y|~((((((((((((~((((((((((((~}{yy{(({z{{y'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{'y|~{yy{(({z{{y{|'y|~}{yy{(({z{{y'y|~}{yy{(({z{{y'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{'y|~}{yy{(({z{{y{'y|33333333333333333333334434334333334333333".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70<6#370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#=#= #=#=!#<9#<<# <;# <=# 370&#=#= #=#=!#<9#<<# <;# <=# 370&#=#= #=#=!#<9#<<# <;# <=# 370&=#=#=#=#<,#</# <.# <0# 37#0&=#=#=#=#<,#</# <.# <0# 37#0&=#=#=#=#<,#</# <.# <0# 37#0&#=#= #= #= #<'#<*# <)# <+# 370&#=#= #= #= #<'#<*# <)# <+# 370&#=#=#=#=#<"#<%# <$# <&# 370&#=#=#=#=#<"#<%# <$# <&# 370&#=#= #= #= #<"#<%# <$# <&# 370&#=#= #= #= #<"#<%# <$# <&# 370&#=#=#=#=#=#<,#</# <.# <0# 370&#=#=#=#=#=#<,#</# <.# <0# 370&#=#=#=#=#=#<,#</# <.# <0# 370&#=>#=A#=@#=B#<#<# <# <# 37#0&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#= #=#=#=#<9#<<# <;# <=# 370&#370&#370&#370&#370 x@8@AABijjkkllmnooppqqrrssttuuvyzz{{||}}~~              %@BD[r    <8 #*<8 #<8 #1<7 #*<7 #111<7 #*<7 #1<7 #*<7 #1*(( ((#1#1grcompiler-5.2.1/test/GrcRegressionTest/fonts/PadaukGlyphs.gdh000066400000000000000000001127751411153030700244760ustar00rootroot00000000000000/* Glyph information for font Padauk at Sat Jul 22 16:40:59 2006 */ table(glyph) {MUnits = 1024}; g__notdef = glyphid(0) {order=0}; g__null = glyphid(1) {order=0}; g_nonmarkingreturn = glyphid(2) {order=0}; g_space = glyphid(3) {order=1}; g_exclam = glyphid(4) {order=0}; g_quotedbl = glyphid(5) {order=0}; g_numbersign = glyphid(6) {order=0}; g_dollar = glyphid(7) {order=0}; g_percent = glyphid(8) {order=0}; g_ampersand = glyphid(9) {order=0}; g_quotesingle = glyphid(10) {order=0}; g_parenleft = glyphid(11) {order=0}; g_parenright = glyphid(12) {order=1}; g_asterisk = glyphid(13) {order=0}; g_plus = glyphid(14) {order=0}; g_comma = glyphid(15) {order=0}; g_hyphen = glyphid(16) {order=0}; g_period = glyphid(17) {order=0}; g_slash = glyphid(18) {order=0}; g_zero = glyphid(19) {order=0}; g_one = glyphid(20) {order=0}; g_two = glyphid(21) {order=0}; g_three = glyphid(22) {order=0}; g_four = glyphid(23) {order=0}; g_five = glyphid(24) {order=0}; g_six = glyphid(25) {order=0}; g_seven = glyphid(26) {order=0}; g_eight = glyphid(27) {order=0}; g_nine = glyphid(28) {order=0}; g_colon = glyphid(29) {order=0}; g_semicolon = glyphid(30) {order=0}; g_less = glyphid(31) {order=0}; g_equal = glyphid(32) {order=0}; g_greater = glyphid(33) {order=0}; g_question = glyphid(34) {order=0}; g_at = glyphid(35) {order=0}; g__a = glyphid(36) {order=0}; g__b = glyphid(37) {order=0}; g__c = glyphid(38) {order=0}; g__d = glyphid(39) {order=0}; g__e = glyphid(40) {order=0}; g__f = glyphid(41) {order=0}; g__g = glyphid(42) {order=0}; g__h = glyphid(43) {order=0}; g__i = glyphid(44) {order=0}; g__j = glyphid(45) {order=0}; g__k = glyphid(46) {order=0}; g__l = glyphid(47) {order=0}; g__m = glyphid(48) {order=0}; g__n = glyphid(49) {order=0}; g__o = glyphid(50) {order=0}; g__p = glyphid(51) {order=0}; g__q = glyphid(52) {order=0}; g__r = glyphid(53) {order=0}; g__s = glyphid(54) {order=0}; g__t = glyphid(55) {order=0}; g__u = glyphid(56) {order=0}; g__v = glyphid(57) {order=0}; g__w = glyphid(58) {order=0}; g__x = glyphid(59) {order=0}; g__y = glyphid(60) {order=0}; g__z = glyphid(61) {order=0}; g_bracketleft = glyphid(62) {order=0}; g_backslash = glyphid(63) {order=0}; g_bracketright = glyphid(64) {order=0}; g_asciicircum = glyphid(65) {UM = point(226m, 495m); order=0}; g_underscore = glyphid(66) {order=0}; g_grave = glyphid(67) {order=0}; g_a = glyphid(68) {order=0}; g_b = glyphid(69) {order=0}; g_c = glyphid(70) {order=0}; g_d = glyphid(71) {order=0}; g_e = glyphid(72) {order=0}; g_f = glyphid(73) {order=0}; g_g = glyphid(74) {order=0}; g_h = glyphid(75) {order=0}; g_i = glyphid(76) {order=0}; g_j = glyphid(77) {order=0}; g_k = glyphid(78) {order=0}; g_l = glyphid(79) {order=0}; g_m = glyphid(80) {order=0}; g_n = glyphid(81) {order=0}; g_o = glyphid(82) {order=0}; g_p = glyphid(83) {order=0}; g_q = glyphid(84) {order=0}; g_r = glyphid(85) {order=0}; g_s = glyphid(86) {order=0}; g_t = glyphid(87) {order=0}; g_u = glyphid(88) {order=0}; g_v = glyphid(89) {order=0}; g_w = glyphid(90) {order=0}; g_x = glyphid(91) {order=0}; g_y = glyphid(92) {order=0}; g_z = glyphid(93) {order=0}; g_braceleft = glyphid(94) {order=0}; g_bar = glyphid(95) {order=0}; g_braceright = glyphid(96) {order=0}; g_asciitilde = glyphid(97) {order=0}; g_multiply = glyphid(98) {order=0}; g_quotedblleft = glyphid(99) {order=0}; g_quotedblright = glyphid(100) {order=0}; g_quoteleft = glyphid(101) {order=0}; g_quoteright = glyphid(102) {order=0}; g_endash = glyphid(103) {order=0}; g_emdash = glyphid(104) {order=0}; g_notequal = glyphid(105) {order=0}; g_circledash = glyphid(106) {RM = point(0m, 0m); BSS = point(318m, -53m); LS = point(318m, -53m); US = point(318m, 495m); order=1}; g1000 = glyphid(107) {RM = point(0m, 0m); BSS = point(714m, -53m); LS = point(714m, -53m); US = point(714m, 495m); BDS = point(508m, -53m); order=1}; g1000_med = glyphid(108) {BDM = point(400m, -53m); BSS = point(886m, -53m); LLS = point(-74m, -53m); LS = point(886m, -53m); order=2}; g1000_1001_103b = glyphid(109) {RM = point(0m, 0m); BSS = point(1236m, -53m); LLS = point(394m, -53m); LS = point(1236m, -53m); US = point(940m, 495m); order=1}; g1000_103b_1015_103a = glyphid(110) {RM = point(0m, 0m); order=1}; g1001 = glyphid(111) {RM = point(0m, 0m); BSS = point(283m, -53m); LS = point(283m, -53m); US = point(283m, 495m); order=1}; g1001_med = glyphid(112) {BSM = point(231m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g1002 = glyphid(113) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1002_med = glyphid(114) {BSM = point(238m, -53m); BSS = point(565m, -53m); LLS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g1003 = glyphid(115) {RM = point(0m, 0m); BSS = point(712m, -53m); LS = point(712m, -53m); US = point(712m, 495m); BDS = point(495m, -53m); order=1}; g1003_med = glyphid(116) {BDM = point(394m, -53m); BSS = point(883m, -53m); LLS = point(-89m, -53m); LS = point(883m, -53m); order=2}; g1004 = glyphid(117) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1004_med = glyphid(118) {UM = point(-92m, 466m); order=8}; g1004_med_102d = glyphid(119) {UM = point(-296m, 466m); order=8}; g1004_med_102e = glyphid(120) {UM = point(-296m, 466m); order=8}; g1004_med_1036 = glyphid(121) {UM = point(-258m, 466m); order=10}; g1005 = glyphid(122) {RM = point(0m, 0m); BSS = point(288m, -53m); LS = point(288m, -53m); US = point(288m, 495m); order=1}; g1005_med = glyphid(123) {BSM = point(234m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g1006 = glyphid(124) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); US = point(702m, 495m); BDS = point(495m, -53m); order=1}; g1006_med = glyphid(125) {BDM = point(394m, -53m); BSS = point(877m, -53m); LLS = point(-89m, -53m); LS = point(877m, -53m); order=2}; g1007 = glyphid(126) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(288m, 495m); order=1}; g1007_med = glyphid(127) {BSM = point(235m, -53m); BSS = point(532m, -53m); LLS = point(-89m, -53m); LS = point(532m, -53m); order=2}; g1008 = glyphid(128) {RM = point(0m, 0m); BSS = point(810m, -53m); LLS = point(208m, -53m); LS = point(810m, -53m); US = point(549m, 486m); order=1}; g1008_med = glyphid(129) {BSS = point(250m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(0m, 0m); order=2}; g1009 = glyphid(130) {RM = point(0m, 0m); BSS = point(450m, -53m); LLS = point(724m, -53m); LS = point(276m, -53m); US = point(276m, 495m); order=1}; g1009_102c = glyphid(131) {RM = point(0m, 0m); BSS = point(1063m, -53m); LS = point(702m, -53m); US = point(702m, 495m); order=1}; g100a = glyphid(132) {RM = point(0m, 0m); BSS = point(1063m, -53m); LS = point(702m, -53m); US = point(702m, 495m); order=1}; g100a_alt = glyphid(133) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); BDS = point(486m, -53m); US = point(702m, 495m); order=1}; g100b = glyphid(134) {RM = point(0m, 0m); BSS = point(657m, -53m); LS = point(657m, -53m); US = point(292m, 495m); order=1}; g100b_alt = glyphid(135) {RM = point(0m, 0m); BSS = point(207m, -173m); LLS = point(292m, -53m); LS = point(642m, -53m); US = point(292m, 495m); BDS = point(60m, -173m); order=1}; g100b_med = glyphid(136) {BSM = point(166m, -53m); BSS = point(415m, -53m); LLS = point(-89m, -53m); LS = point(415m, -53m); order=2}; g100b_100b = glyphid(137) {RM = point(0m, 0m); BSS = point(657m, -53m); LS = point(657m, -53m); US = point(292m, 495m); order=1}; g100b_100c = glyphid(138) {RM = point(0m, 0m); BSS = point(642m, -53m); LS = point(642m, -53m); US = point(292m, 495m); order=1}; g100c = glyphid(139) {RM = point(0m, 0m); BSS = point(657m, -53m); LS = point(657m, -53m); US = point(292m, 495m); order=1}; g100c_med = glyphid(140) {BDM = point(406m, -53m); BSS = point(900m, -53m); LLS = point(-89m, -53m); LS = point(900m, -53m); order=2}; g100d = glyphid(141) {RM = point(0m, 0m); BSS = point(168m, -173m); LS = point(612m, -53m); LLS = point(280m, -51m); US = point(276m, 495m); BDS = point(30m, -173m); order=1}; g100d_med = glyphid(142) {BSM = point(172m, -53m); BSS = point(426m, -53m); LLS = point(-89m, -53m); LS = point(426m, -53m); order=2}; g100d_100d = glyphid(143) {RM = point(0m, 0m); BSS = point(627m, -53m); LS = point(627m, -53m); US = point(276m, 495m); order=1}; g100d_100e = glyphid(144) {RM = point(0m, 0m); BSS = point(454m, -53m); LLS = point(115m, -53m); LS = point(454m, -53m); US = point(285m, 495m); order=1}; g100e = glyphid(145) {RM = point(0m, 0m); BSS = point(285m, -53m); LS = point(285m, -53m); US = point(285m, 495m); order=1}; g100f = glyphid(146) {RM = point(0m, 0m); BSS = point(759m, -53m); LS = point(759m, -53m); BDS = point(516m, -53m); US = point(759m, 495m); order=1}; g100f_med = glyphid(147) {BDM = point(409m, -53m); BSS = point(907m, -53m); LLS = point(-89m, -53m); LS = point(907m, -53m); order=2}; g100f_100b = glyphid(148) {RM = point(0m, 0m); BSS = point(963m, -53m); LLS = point(372m, -53m); LS = point(963m, -53m); US = point(759m, 495m); order=1}; g100f_100d = glyphid(149) {RM = point(0m, 0m); BSS = point(84m, -53m); LLS = point(30m, -53m); LS = point(84m, -53m); US = point(759m, 495m); order=1}; g1010 = glyphid(150) {RM = point(0m, 0m); BSS = point(709m, -53m); LS = point(709m, -53m); US = point(709m, 495m); BDS = point(501m, -53m); order=1}; g1010_med = glyphid(151) {BDM = point(384m, -53m); BSS = point(867m, -53m); LLS = point(-104m, -53m); LS = point(867m, -53m); order=2}; g1010_103d_med = glyphid(152) {BSM = point(235m, -53m); BSS = point(555m, -53m); LLS = point(-87m, -53m); LS = point(555m, -53m); order=2}; g1011 = glyphid(153) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); US = point(702m, 495m); BDS = point(495m, -53m); order=1}; g1011_med = glyphid(154) {BDM = point(394m, -53m); BSS = point(877m, -53m); LS = point(-89m, -53m); LLS = point(877m, -53m); order=2}; g1012 = glyphid(155) {RM = point(0m, 0m); BSS = point(267m, -53m); LS = point(267m, -53m); US = point(267m, 495m); order=1}; g1012_med = glyphid(156) {BSM = point(219m, -53m); BSS = point(526m, -53m); LLS = point(-89m, -53m); LS = point(526m, -53m); order=2}; g1013 = glyphid(157) {RM = point(0m, 0m); BSS = point(288m, -53m); LS = point(288m, -53m); US = point(288m, 495m); order=1}; g1013_med = glyphid(158) {BSM = point(234m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g1014 = glyphid(159) {RM = point(12m, 0m); BSS = point(474m, -53m); LS = point(474m, -53m); US = point(273m, 495m); order=1}; g1014_alt = glyphid(160) {RM = point(0m, 0m); BSS = point(271m, -53m); LS = point(271m, -53m); US = point(271m, 495m); order=1}; g1014_med = glyphid(161) {BSM = point(223m, -53m); BSS = point(522m, -53m); LLS = point(-89m, -53m); LS = point(522m, -53m); order=2}; g1014_1010_103b = glyphid(162) {RM = point(0m, 0m); BSS = point(997m, -53m); LS = point(997m, -53m); US = point(765m, 495m); order=1}; g1014_1010_103c = glyphid(163) {RM = point(0m, 0m); BSS = point(841m, -53m); LS = point(841m, -53m); order=1}; g1015 = glyphid(164) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1015_med = glyphid(165) {BSM = point(238m, -53m); BSS = point(565m, -53m); LLS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g1016 = glyphid(166) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1016_med = glyphid(167) {BSM = point(238m, -53m); BSS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g1017 = glyphid(168) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1017_med = glyphid(169) {BSM = point(237m, -53m); BSS = point(565m, -53m); LLS = point(-90m, -53m); LS = point(565m, -53m); order=2}; g1018 = glyphid(170) {RM = point(0m, 0m); BSS = point(699m, -53m); LS = point(699m, -53m); US = point(699m, 495m); BDS = point(492m, -53m); order=1}; g1018_med = glyphid(171) {BDM = point(393m, -53m); BSS = point(874m, -53m); LLS = point(-89m, -53m); LS = point(874m, -53m); order=2}; g1019 = glyphid(172) {RM = point(0m, 0m); BSS = point(294m, -53m); LS = point(294m, -53m); US = point(292m, 495m); order=1}; g1019_med = glyphid(173) {BSM = point(238m, -53m); BSS = point(565m, -53m); LLS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g101a = glyphid(174) {RM = point(0m, 0m); BSS = point(706m, -53m); LS = point(706m, -53m); BDS = point(504m, -53m); US = point(706m, 495m); order=1}; g103b = glyphid(175) {BSS = point(250m, -53m); dotS = point(-248m, -53m); LLS = point(-351m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=3}; g103b_103d = glyphid(176) {BSS = point(250m, -53m); LLS = point(-540m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=3}; g103b_103d_103e = glyphid(177) {BSS = point(250m, -53m); LLS = point(-540m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=3}; g103b_103e = glyphid(178) {BSS = point(250m, -53m); LS = point(250m, -53m); dotS = point(-263m, -53m); LLS = point(-401m, 79m); US = point(-36m, 495m); order=3}; g101b = glyphid(179) {RM = point(0m, 0m); BSS = point(247m, -53m); LLS = point(292m, -53m); LS = point(646m, -53m); US = point(295m, 495m); BDS = point(87m, -53m); order=1}; g101b_alt = glyphid(180) {RM = point(3m, 0m); BSS = point(348m, -53m); LS = point(676m, -53m); LLS = point(87m, -53m); US = point(292m, 495m); BDS = point(247m, -53m); order=1}; g101b_long = glyphid(181) {RM = point(3m, 0m); BSS = point(292m, -53m); LS = point(676m, -53m); LLS = point(87m, -53m); US = point(292m, 495m); BDS = point(247m, -53m); order=1}; g103c = glyphid(182) {RS = point(172m, 0m); BSS = point(841m, -53m); LLS = point(502m, -53m); LS = point(841m, -53m); order=4; advx=753m}; g103c_alt_narr = glyphid(183) {RS = point(172m, 0m); BSS = point(841m, -53m); LLS = point(502m, -53m); LS = point(841m, -53m); order=4; advx=753m}; g103c_alt_wide = glyphid(184) {RS = point(172m, 0m); BSS = point(1263m, -53m); LLS = point(924m, -53m); LS = point(1263m, -53m); order=4; advx=1174m}; g103c_wide = glyphid(185) {RS = point(172m, 0m); BSS = point(1263m, -53m); LLS = point(924m, -53m); LS = point(1263m, -53m); order=4; advx=1174m}; g103c_103d_narr = glyphid(186) {RS = point(172m, 0m); BSS = point(796m, -53m); LS = point(796m, -53m); order=4; advx=753m}; g103c_103d_wide = glyphid(187) {RS = point(172m, 0m); BSS = point(1198m, -53m); LLS = point(553m, -53m); LS = point(1198m, -53m); order=4; advx=1174m}; g103c_103d_alt_narr = glyphid(188) {RS = point(172m, 0m); BSS = point(796m, -53m); LS = point(796m, -53m); order=4; advx=753m}; g103c_103d_alt_wide = glyphid(189) {RS = point(172m, 0m); BSS = point(1198m, -53m); LLS = point(553m, -53m); LS = point(1198m, -53m); order=4; advx=1174m}; g103c_102f_narr = glyphid(190) {RS = point(172m, 0m); BSS = point(781m, -53m); LLS = point(295m, -53m); LS = point(781m, -53m); order=4; advx=753m}; g103c_102f_wide = glyphid(191) {RS = point(172m, 0m); BSS = point(1195m, -53m); LLS = point(709m, -53m); LS = point(1195m, -53m); order=4; advx=1174m}; g103c_102f_alt_narr = glyphid(192) {RS = point(172m, 0m); BSS = point(781m, -53m); LLS = point(295m, -53m); LS = point(781m, -53m); order=4; advx=753m}; g103c_102f_alt_wide = glyphid(193) {RS = point(172m, 0m); BSS = point(1195m, -53m); LLS = point(709m, -53m); LS = point(1195m, -53m); order=4; advx=1174m}; g101c = glyphid(194) {RM = point(0m, 0m); BSS = point(679m, -53m); LS = point(679m, -53m); US = point(679m, 495m); BDS = point(480m, -53m); order=1}; g101c_med = glyphid(195) {BDM = point(375m, -53m); BSS = point(853m, -53m); LLS = point(-89m, -53m); LS = point(853m, -53m); order=2}; g101d = glyphid(196) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(286m, 495m); order=1}; g103d = glyphid(197) {BSM = point(-178m, -53m); BSS = point(144m, -53m); LLS = point(-501m, -53m); LS = point(144m, -53m); order=5}; g103d_103e = glyphid(198) {BSM = point(288m, -53m); BSS = point(610m, -53m); LLS = point(-89m, -53m); LS = point(610m, -53m); order=5}; g103d_103e_small = glyphid(199) {BSM = point(361m, -53m); order=5}; g101e = glyphid(200) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); BDS = point(492m, -53m); US = point(702m, 495m); order=1}; g101e_med = glyphid(201) {BDM = point(393m, -53m); BSS = point(874m, -53m); LS = point(874m, -53m); LLS = point(-89m, -53m); order=2}; g101e_1010_103c = glyphid(202) {RM = point(0m, 0m); BSS = point(1263m, -53m); LS = point(1263m, -53m); order=1}; g103f = glyphid(203) {RM = point(0m, 0m); BSS = point(1123m, -53m); LS = point(1123m, -53m); BDS = point(702m, -53m); US = point(1123m, 495m); order=1}; g101f = glyphid(204) {RM = point(0m, 0m); BSS = point(714m, -53m); LS = point(714m, -53m); US = point(714m, 495m); BDS = point(504m, -53m); order=1}; g103e = glyphid(205) {BSM = point(-26m, -53m); BSS = point(144m, -53m); LLS = point(-195m, -53m); LS = point(144m, -53m); order=6}; g103e_alt = glyphid(206) {BSM = point(-33m, -53m); BSS = point(73m, -53m); LLS = point(-263m, 45m); LS = point(73m, -53m); order=6}; g103e_102f = glyphid(207) {BSM = point(222m, -53m); BSS = point(466m, -53m); LLS = point(-21m, -53m); LS = point(466m, -53m); order=6; rkern=78m}; g103e_1030 = glyphid(208) {BSM = point(294m, -53m); BSS = point(609m, -53m); LLS = point(-21m, -53m); LS = point(609m, -53m); order=6; rkern=90m}; g1020 = glyphid(209) {RM = point(0m, 0m); BSS = point(654m, -53m); LS = point(654m, -53m); US = point(292m, 495m); order=1}; g1021 = glyphid(210) {RM = point(0m, 0m); BSS = point(648m, -53m); LS = point(648m, -53m); US = point(648m, 495m); BDS = point(465m, -53m); order=1}; g1021_med = glyphid(211) {BDM = point(393m, -53m); BSS = point(874m, -53m); LLS = point(-89m, -53m); LS = point(874m, -53m); order=2}; g1023 = glyphid(212) {BSS = point(993m, -53m); LLS = point(15m, -53m); LS = point(993m, -53m); US = point(715m, 495m); order=0}; g1024 = glyphid(213) {order=0}; g1025 = glyphid(214) {BSS = point(276m, 0m); LS = point(276m, -53m); US = point(276m, 495m); order=1}; g1026 = glyphid(215) {BSS = point(276m, 0m); LS = point(276m, -53m); order=1}; g1027 = glyphid(216) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1028 = glyphid(217) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 570m); order=1}; g1029 = glyphid(218) {BSS = point(874m, -53m); LLS = point(924m, -53m); LS = point(874m, -53m); US = point(874m, 495m); BDS = point(664m, -53m); order=1; advx=1174m}; g102a = glyphid(219) {order=0}; g102c = glyphid(220) {RM = point(0m, 0m); BSS = point(133m, -53m); LS = point(133m, -53m); US = point(133m, 495m); order=1}; g102b = glyphid(221) {BSS = point(96m, -53m); LS = point(96m, -53m); xkern=270m; order=1}; g102b_103a = glyphid(222) {BSS = point(96m, -53m); LS = point(96m, -53m); xkern=270m; order=1}; g102d = glyphid(223) {UM = point(-179m, 495m); order=8}; g102d_1036 = glyphid(224) {UM = point(-269m, 495m); order=8}; g102e = glyphid(225) {UM = point(-182m, 495m); order=8}; g102f = glyphid(226) {BSS = point(235m, -53m); LS = point(235m, -53m); US = point(67m, 496m); order=9}; g102f_med = glyphid(227) {BSM = point(81m, -53m); BSS = point(250m, -53m); LLS = point(-89m, -53m); LS = point(250m, -53m); order=9; rkern=2m}; g1030 = glyphid(228) {BSS = point(384m, -53m); LS = point(384m, -53m); US = point(214m, 495m); order=9}; g1030_med = glyphid(229) {BSM = point(154m, -53m); BSS = point(399m, -53m); LLS = point(-89m, -53m); LS = point(399m, -53m); order=9; rkern=43m}; g1031 = glyphid(230) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=7}; g1032 = glyphid(231) {UM = point(-192m, 504m); order=8}; g1033 = glyphid(232) {UM = point(-179m, 495m); order=8}; g1034 = glyphid(233) {UM = point(-138m, 532m); order=8}; g1036 = glyphid(234) {UM = point(-74m, 495m); order=10}; g1037 = glyphid(235) {LM = point(-74m, -53m); order=13}; g1038 = glyphid(236) {order=14}; g103a = glyphid(237) {UM = point(-231m, 477m); order=12}; g1039 = glyphid(238) {BSM = point(-178m, -53m); BSS = point(144m, -53m); LLS = point(-501m, -53m); LS = point(144m, -53m); order=5}; g1040 = glyphid(239) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1041 = glyphid(240) {RM = point(0m, 0m); BSS = point(418m, -80m); LS = point(418m, -80m); US = point(418m, 742m); order=1}; g1042 = glyphid(241) {BSS = point(252m, -53m); LS = point(252m, -53m); US = point(252m, 495m); order=1}; g1043 = glyphid(242) {BSS = point(279m, -53m); LS = point(279m, -53m); US = point(279m, 495m); order=1}; g1044 = glyphid(243) {BSS = point(297m, -53m); LS = point(297m, -53m); US = point(297m, 495m); order=1}; g1045 = glyphid(244) {BSS = point(283m, -53m); LS = point(283m, -53m); US = point(283m, 495m); order=1}; g1046 = glyphid(245) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(315m, 570m); order=1}; g1047 = glyphid(246) {BSS = point(286m, -53m); LS = point(286m, -53m); US = point(286m, 495m); order=1}; g1048 = glyphid(247) {order=1}; g1049 = glyphid(248) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g104a = glyphid(249) {order=0}; g104b = glyphid(250) {order=0}; g104c = glyphid(251) {BSS = point(624m, -53m); LS = point(624m, -53m); order=0}; g104d = glyphid(252) {order=0}; g104e = glyphid(253) {order=0}; g104f = glyphid(254) {order=0}; g105a = glyphid(255) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g105a_med = glyphid(256) {BSM = point(142m, -53m); BSS = point(376m, -53m); LLS = point(-89m, -53m); LS = point(376m, -53m); order=2}; g105b = glyphid(257) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(288m, 495m); order=1}; g105b_med = glyphid(258) {BSS = point(250m, -53m); LLS = point(-540m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=2}; g105c = glyphid(259) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(286m, 495m); order=1}; g105c_med = glyphid(260) {BSM = point(234m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g105d = glyphid(261) {RM = point(0m, 0m); BSS = point(294m, -53m); LS = point(294m, -53m); US = point(292m, 495m); order=1}; g105e = glyphid(262) {BSM = point(-25m, -53m); BSS = point(144m, -53m); LLS = point(-195m, -53m); LS = point(144m, -53m); order=2}; g105f = glyphid(263) {BSM = point(-25m, -53m); BSS = point(144m, -53m); LLS = point(-195m, -53m); LS = point(144m, -53m); order=2}; g1060 = glyphid(264) {LM = point(-180m, -63m); order=2}; g1061 = glyphid(265) {RM = point(0m, 0m); BSS = point(247m, -53m); LLS = point(292m, -53m); LS = point(646m, -53m); US = point(295m, 495m); BDS = point(87m, -53m); order=1}; g1062 = glyphid(266) {BSS = point(192m, -53m); LS = point(192m, -53m); US = point(192m, 495m); order=1}; g1063 = glyphid(267) {RM = point(0m, 0m); BSS = point(276m, -53m); LS = point(276m, -53m); US = point(276m, 495m); order=1}; g1064 = glyphid(268) {BSS = point(192m, -53m); LS = point(192m, -53m); US = point(192m, 495m); order=1}; g200b = glyphid(269) {order=0}; g200c = glyphid(270) {order=0}; g200d = glyphid(271) {order=0}; g2060 = glyphid(272) {order=0}; /* Classes */ cTakesBDDia = (g1000, g1003, g1006, g100a_alt, g100b_alt, g100d, g100f, g1010, g1011, g1018, g101a, g101b, g101b_alt, g101b_long, g101c, g101e, g103f, g101f, g1021, g1029, g1061); cnTakesBDDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cTakesBSDia = (g_circledash, g1000, g1000_med, g1000_1001_103b, g1001, g1001_med, g1002, g1002_med, g1003, g1003_med, g1004, g1005, g1005_med, g1006, g1006_med, g1007, g1007_med, g1008, g1008_med, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_med, g100b_100b, g100b_100c, g100c, g100c_med, g100d, g100d_med, g100d_100d, g100d_100e, g100e, g100f, g100f_med, g100f_100b, g100f_100d, g1010, g1010_med, g1010_103d_med, g1011, g1011_med, g1012, g1012_med, g1013, g1013_med, g1014, g1014_alt, g1014_med, g1014_1010_103b, g1014_1010_103c, g1015, g1015_med, g1016, g1016_med, g1017, g1017_med, g1018, g1018_med, g1019, g1019_med, g101a, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c, g101c_med, g101d, g103d, g103d_103e, g101e, g101e_med, g101e_1010_103c, g103f, g101f, g103e, g103e_alt, g103e_102f, g103e_1030, g1020, g1021, g1021_med, g1023, g1025, g1026, g1027, g1028, g1029, g102c, g102b, g102b_103a, g102f, g102f_med, g1030, g1030_med, g1031, g1039, g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1049, g104c, g105a, g105a_med, g105b, g105b_med, g105c, g105c_med, g105d, g105e, g105f, g1061, g1062, g1063, g1064); cnTakesBSDia = (g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g103d_103e_small, g102d, g102d_1036, g102e, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1060); cTakesLDia = (g_circledash, g1000, g1000_med, g1000_1001_103b, g1001, g1001_med, g1002, g1002_med, g1003, g1003_med, g1004, g1005, g1005_med, g1006, g1006_med, g1007, g1007_med, g1008, g1008_med, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_med, g100b_100b, g100b_100c, g100c, g100c_med, g100d, g100d_med, g100d_100d, g100d_100e, g100e, g100f, g100f_med, g100f_100b, g100f_100d, g1010, g1010_med, g1010_103d_med, g1011, g1011_med, g1012, g1012_med, g1013, g1013_med, g1014, g1014_alt, g1014_med, g1014_1010_103b, g1014_1010_103c, g1015, g1015_med, g1016, g1016_med, g1017, g1017_med, g1018, g1018_med, g1019, g1019_med, g101a, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c, g101c_med, g101d, g103d, g103d_103e, g101e, g101e_med, g101e_1010_103c, g103f, g101f, g103e, g103e_alt, g103e_102f, g103e_1030, g1020, g1021, g1021_med, g1023, g1025, g1026, g1027, g1028, g1029, g102c, g102b, g102b_103a, g102f, g102f_med, g1030, g1030_med, g1031, g1039, g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1049, g104c, g105a, g105a_med, g105b, g105b_med, g105c, g105c_med, g105d, g105e, g105f, g1061, g1062, g1063, g1064); cnTakesLDia = (g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g103d_103e_small, g102d, g102d_1036, g102e, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1060); cTakesLLDia = (g1000_med, g1000_1001_103b, g1001_med, g1002_med, g1003_med, g1005_med, g1006_med, g1007_med, g1008, g1009, g100b_alt, g100b_med, g100c_med, g100d, g100d_med, g100d_100e, g100f_med, g100f_100b, g100f_100d, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_wide, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g1023, g1029, g102f_med, g1030_med, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1061); cnTakesLLDia = (g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1008_med, g1016_med, g103c_103d_narr, g103c_103d_alt_narr, g103d_103e_small, g102d, g102d_1036, g102e, g102f, g1030, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1060); cTakesRDia = (g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide); cnTakesRDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cTakesUDia = (g_circledash, g1000, g1000_1001_103b, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g1008_med, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_100b, g100b_100c, g100c, g100d, g100d_100d, g100d_100e, g100e, g100f, g100f_100b, g100f_100d, g1010, g1011, g1012, g1013, g1014, g1014_alt, g1014_1010_103b, g1015, g1016, g1017, g1018, g1019, g101a, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g101c, g101d, g101e, g103f, g101f, g1020, g1021, g1023, g1025, g1027, g1028, g1029, g102c, g102f, g1030, g1031, g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1049, g105a, g105b, g105b_med, g105c, g105d, g1061, g1062, g1063, g1064); cnTakesUDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f_med, g1030_med, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105c_med, g105e, g105f, g1060); cBDDia = (g1000_med, g1003_med, g1006_med, g100c_med, g100f_med, g1010_med, g1011_med, g1018_med, g101c_med, g101e_med, g1021_med); cnBDDia = (g1001_med, g1002_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1007_med, g1008_med, g100b_med, g100d_med, g1010_103d_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g103d, g103d_103e, g103d_103e_small, g103e, g103e_alt, g103e_102f, g103e_1030, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cBSDia = (g1001_med, g1002_med, g1005_med, g1007_med, g100b_med, g100d_med, g1010_103d_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1019_med, g103d, g103d_103e, g103d_103e_small, g103e, g103e_alt, g103e_102f, g103e_1030, g102f_med, g1030_med, g1039, g105a_med, g105c_med, g105e, g105f); cnBSDia = (g1000_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1006_med, g1008_med, g100c_med, g100f_med, g1010_med, g1011_med, g1018_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g101e_med, g1021_med, g102d, g102d_1036, g102e, g102f, g1030, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g105b_med, g1060); cLDia = (g1037, g1060); cnLDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f); cRDia = (g_circledash, g1000, g1000_1001_103b, g1000_103b_1015_103a, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_100b, g100b_100c, g100c, g100d, g100d_100d, g100d_100e, g100e, g100f, g100f_100b, g100f_100d, g1010, g1011, g1012, g1013, g1014, g1014_alt, g1014_1010_103b, g1014_1010_103c, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101b_alt, g101b_long, g101c, g101d, g101e, g101e_1010_103c, g103f, g101f, g1020, g1021, g102c, g1031, g1041, g105a, g105b, g105c, g105d, g1061, g1063); cnRDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cUDia = (g_asciicircum, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g102d, g102d_1036, g102e, g1032, g1033, g1034, g1036, g103a); cnUDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102f, g102f_med, g1030, g1030_med, g1031, g1037, g1038, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cTakesdotDia = (g1008_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g105b_med); cnTakesdotDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105c_med, g105e, g105f, g1060); calt = (g100a_alt, g100b_alt, g1014_alt, g101b_alt, g103e_alt); clong = (g101b_long); cmed = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g101c_med, g101e_med, g1021_med, g102f_med, g1030_med, g105a_med, g105b_med, g105c_med); cno_alt = (g100a, g100b, g1014, g101b, g103e); cno_long = (g101b); cno_med = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g100b, g100c, g100d, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101c, g101e, g1021, g102f, g1030, g105a, g105b, g105c); cno_small = (g103d_103e); cno_wide = (g103c); csmall = (g103d_103e_small); cwide = (g103c_wide); endtable; #define MAXGLYPH 272 grcompiler-5.2.1/test/GrcRegressionTest/fonts/PadaukInput.ttf000066400000000000000000002710241411153030700243530ustar00rootroot00000000000000`OS/2e`cmap+L|cvt /&fpgmY7sgasp dglyf_tXnheadj@1]6hhea ^$hmtx!E M^@>locau` b$maxpAId nameRd#postpuhprep<q ,,4SIL @ % H4 ~!4Od    `"`% #6Z    `"`%TMG ڞZ|koqsuz|~    4 ~!4Od    `"`% #6Z    `"`%TMG ڞZ|koqsuz|~    3'N93'7jX:,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-7a//и/ EX/>YEX/ >Y01!!/3m53e7- 5t6/-+4+6 AaqA0@PqAc4q7EX/ >Y Ahq017#"&54632'#"'&&&&&&54545465466632$%%$3 *!!""z@Tada+   +bdaT@=T7EX/>YEX/>Yи01#3#3?6^5_7ظ /!/ + +++++!и A$]/// /+++++ +и  и и013#3##7##7#537#53733737#NUdj3x3MSbi3xxx3x33x3x/:CG5 ++& '+;'&9;/Az;;]A ;;);9;I;Y;i;] ии и*и0A55&565F5V5f5]Au55]:9@//EX/ >YEX/ >Y0+ !и!/'0*к@9AиA/01%#5"&&&5335&&&&546663532#4&#"4&&&'66 6F%-2J1Z ) &E40G.--@(Z!-B=+&( $&523D+QO5I--! %=2$?.HG0>!5'&GC"$) *S+=OP/Q/> F+, 4+P Q AT]>FAu,],4"A"] /'//EX/>YA]Aw]A]A ]'19C K01#"&&&5466632#"&&&54666324&&&#"32666%4&&&#"32666it*",-""-,"?",-""-,"1  +   +  # -""-."".-""-."". ,  , 4=M]8V +F F9AVV&V6VFVVVfV]AuVV]EX/>YEX/ >YEX / >Y 9- 9[A[['[7[G[W[g[w[[ ]A[[]= [9CA CCqA!CC(C8CHCXChCxCCCCCCCCC]01!&'&&'#"&&&546667&&&&7666632666&'36&&&#"6666&&'326& !L/,P<#)2  (7"$<+*1&(, ] / ".& J5d-"#1)R 3I,,>+ "(.,! ."4' +*,)&.#7>E%,!*3 .k6&-+&u/EX/>Y01#36]K>T8// +01#&&&&546667T7Q4dr3;Q34Q9KmIbfO7JA4//  +01#654&&&'j9Q53R;3re5Q7OfbIMmK7//++A"]A(]A%]A; ] A< ] A< ] A>]//A:]A(]и01'7'7537'#53Z-YZ+XW+ZY-Z] G / /+ +    ++0173533##5#]333(f0/ EX/ >Y017'665454'#&&54632  $ !)#1  %%7%//+017!!73(c 0 / EX/ >Y 017#"&54632$%%$*!!""7,-.//017[%&%-+),//Az]A )9IYi] ,и/" A""&"6"F"V"f"]Au""]-EX/>YEX/ >YA]A(8HXhx ]'A''''7'G'W'g'w'' ]A'']01#"&&&&&54666324&&&#"32666-B..B- *QEEQ* V.''//''.N&QME44EMQ&9s[::[s94ZB&&BZ44bM..MbsQM +   9EX / >YEX/ >Y 901356676732 2Z I %}7  +Az]A )9IYi]и"EX/>YEX/ >Y A ]A  ( 8 H X h x ] 0135666654&#"#666632!7oy8 *60/[.F2/F.$@aF!RU}Z?975;(D2 2>17>K[8E(6- +- 2-9-8EX(/(>YEX/ >Y+ A'7GWgw ]A](!A!!]A!!(!8!H!X!h!x!! ]($2901%#"&&&533266654춮&&&#"#66328M.7N2_ ),!#!/# $8 k +и иEX/>YEX/ >Y+к 9 01%#5!5333R aPԜ]dK.&ϻ +Az]A )9IYi]EX/>YEX/ >Y"+ A  ' 7 G W g w ]A ]""901%#"&533266654&#"#!#666632"7E"dp_<.).:-9O T (!+A--P=$YO20&8%ET7&wK  #YEX/ >Y$,+A]A(8HXhx ]92A22'272G2W2g2w22 ]A22]01%#"&&&5466632#&&#"6666324&#"326-N=JU+ /UF,?*V0)(  *?K( Z4=>44>=4H?**QwN>|d?)>)8('1YEX/ >Y013#!5!b;HZ''7C> + (+Az((]A (()(9(I(Y(i(]8(98/Az88]A 88)898I8Y8i8]  9A>>&>6>F>V>f>]Au>>] >9/# 9. EX/>YEX/ >Y3;+;39#;39+A++]A++(+8+H+X+h+x++ ]AAAA'A7AGAWAgAwAA ]AAA]01%#"&&&546767&'&&54666324&#"326664&#"326(=K##J=(%##7E!"E7#!#'d:54:() ?=;C;CD82C**C22C <,(<&&<(,< C 2882((6EE66HH*&21- + '+ AJ'Z']A '')'9']A--&-6-F-V-f-]Au--]EX"/">YEX/ >Y0+ A  ' 7 G W g w ]A ]"9"*A**]A**(*8*H*X*h*x** ]01#"&'33266676'#"&&&5466632'4&#"326/VEXQ W2)(  )?J( ,N=JV+ c2?>22>?2Q>~d?TS8*'0*)Qw$BFFBBGG( [/ ииEX/>YEX/ >Y 017#"&54632#"&54632$%%$$%%$+##!!M""##('[(/  и "и)EX%/%>YEX/ >Y %01666655&&#"3267#"&54632Z &$ %M$%%$e#) ## /##"""//90175%#9787oM?/ /и++017!!5!!7//33"//90175%%5#"879 n- 67/45+++ +7A-]AM]A}]A<] Ap]8EX/ >Y&+Aw] A5]017#"&54632467666654&&&#"#5466632#5#$$#T ,,"$--#3/A((B.#.0 3*!!""N# '9)-$!&81!3? 6C+ 4aE}Ma!/ D+X + N+ %+N9Nи/Az%%]A %%)%9%I%Y%i%]A//&/6/F/V/f/]Au//]9и9/AXX&X6XFXVXfX]AuXX]4?+I*+] +S+ и/S9и/01#"&'#"&&&546663253766654&&&#"322667#"&&&54666324&&&#"32666E0B'*9<4":++:"!' Q,QqE3lY:'OwO%!!# KtHBlIZi9 %% %%  1YD),)'* 8L-0M6  5  $E8RpEFsUN}W/I '_zZa3/^x3&'27++7  @EX/>YEX/ >YEX/ >Y +01!'!#331GF\ cx}H"#,) + +Az]A )9IYi]$ 9$/Az$$]A $$)$9$I$Y$i$] 9)EX/>YEX/ >Y'+'9)01%#!!2'4&&&##326664&##326" 6F&'F5#%*k 4((5 RPFX'A/'<)*4 @#$5:=4(&'// ' и / A&6FVf]Au]%и%/(EX/>YEX/ >YA]A(8HXhx ] A  ' 7 G W g w ]A ]%01%#"&&&5466632#4&#"3266653( >fL=W8Z@LWX-?)6'Z&D26[xAAz_93C%99Hc= +HL / /Az ]A  ) 9 I Y i ] и/ EX/>YEX/ >Y01##324&##326LIz[[zIYyiqqiyB;s[96Zt=w|~H U + EX/>YEX/ >Y+ 013!!!!!H,>NLNH K +EX/>YEX/ >Y+01!!#! Xu5LN4b-! #+ + и/A  & 6 F V f ]Au ]-и-//EX(/(>YEX/ >Y+((A]A(8HXhx ]A'7GWgw ]A]014&&&#"3267675#53#"&&&5466632'6"=V72S=!9A?8f~E+QtH@]<!#?U16eM/N  Ci=AqS0"4<H1 // и/ ии EX/>YEX / >YEX/ >YEX/ >Y+01!!#3!3XX5\#}H/ +EX/>YEX/ >Y0133HX}4//  и / иEX/>YEX/ >Y A'7GWgw ]A]01%#"&&&5332666534I+*E0Y%%Z.L61D) ) 0 =H: m +EX/>YEX/>YEX/ >YEX/ >Y9901!#33XX o2SH5 +EX/>YEX/ >Y0133!HXNH // и/   9EX/>YEX / >YEX/ >YEX/ >YEX/ >Y99 901!##33FX.)}H= // и/  EX/>YEX/>YEX/ >YEX/ >Y9901!#33X~Z}4|')(//Az]A )9IYi] ( и / A&6FVf]Au])EX/>YEX/ >YA]A(8HXhx ]#A##'#7#G#W#g#w## ]A##]01#"&&&54666324&&&#"32666|#HnJJnI$$InJJnH#]-M:;M--M;:M-NE~`99`~EEuV11VuE3XB&&BX33`K..K`H//Az]A )9IYi] и/ иEX / >YEX/ >Y+ 01###324&##326+FY.]X.YF+VNQ``QN=H'  'I=<0.4+ ,//,и/Az]A )9IYi] и/" A""&"6"F"V"f"]Au""]-EX / >YEX/ >YEX/ >Y A]A(8HXhx ]'01!#"&&&546663234&&&#"32666'JnI$$InJJnH#00-M:;M--M;:M-9`~EEuV11VuET+=N3XB&&BX33`K..K`H !,̸-/"/- и / Az""]A "")"9"I"Y"i"]"  9"и/ (и.EX/>YEX/ >YEX / >Y* + *9'01!&&&&'&&&&###324&&&##326 "6-NXrw!+   j%5!qqAO!'28Nc)" 8CN(& *491 +& '+& A11&161F1V1f1]Au11]1 и /&;EX!/!>YEX/ >Y A'7GWgw ]A]!&!,A,,]A,,(,8,H,X,h,x,, ]01%#"&&&533266654&&&&&5466632#4&&&#"1N`/-N9!\,@7%9VdV9)?N%+RA(Z)4-"!6EHE6!8J,6L/."*%30"GE*A-(C1!& '&)AA +EX/>YEX/ >Yи01##5!>Z55NNHI//  и / иEX / >YEX/>YEX/ >YA'7GWgw ]A]01#"&&&533266653I?aCD`?X.="!<.ZPrH""HrPeHW/.WIe 8@EX/>YEX/>YEX/ >Y901!#33Tced T vEX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!##333QO_k_\ [EX/>YEX/>YEX/ >YEX/ >Y9901!#373귴jriW, CT +9EX/>YEX/>YEX/ >Y901#33TXne5( 9EX/>YEX/ >Y0135!5!!(jraNc.N^O@ + EX/>Y+013#3^XX4.'-7,-&//017&Z&%^OD + EX/>Y+0153#53^YY-.ecL//йA]AL]A]+01'7+w@ +01!!@V3 //01'3f}ZY+7G@ +0 8+8и/8и/A@@&@6@F@V@f@]Au@@] @9 / 0.и03и0IEX%/%>YEX/ >YEX/ >Y;+%9и/%A qA!(8HXhx]%CA!CC'C7CGCWCgCwCCCCCCCCC]ACCq7C901!&&'#"&&&546663236&&&#"#466632'&&#"32666h&<2 .GV'*#S3@!41' ^  <6&4$*3   0!3?$ * '3  &* N., %%*/>=*B+//Az]A )9IYi] + и /# и /#и/ #9,EX / >YEX/>YEX/ >YEX / >Y  9 9 A]&A!&&'&7&G&W&g&w&&&&&&&&&]A&&q01%#"&'&'#36666324&&&#"32666"6C"#7QN %1 7I,W /#!1 @?.">^@! 4  ,BK'!?01> []0D-$- +A&6FVf]Au]EX / >YEX/ >Y  A qA!(8HXhx]A!'7GWgw]Aq#01%#"&54632#6&&&#"3266653*E2d`Wd3H-O!+&=8& P;-uuvt(7!#)C0`N#-,6-//и/- и /и/ # A##&#6#F#V#f#]Au##].EX/>YEX/>YEX/ >YEX/ >Y(A!(('(7(G(W(g(w(((((((((]A((q(9A]01!5#"&&&54666323'4&&&#"326661'J;#+F4-; OR%3 - "0!03 "YEX/ >Y%+ A!  ' 7 G W g w ]A  q *A **qA!**(*8*H*X*h*x*********]01%!3266673#"&&&54666326&&&#" . ) U-K98M00P;AN* X/$!+  #;-!50",ES&*SC*,?G 0%(. & +  и иEX/>YEX/>YEX/>YEX / >YA qA!(8HXhx]  и01&&#&3###535466632&  &!kkQXX#3!#A#,A:}:D*6 B-O+=>/,/ ,и/>и/,)и)/6 A66&666F6V6f6]Au66]?EX*/*>YEX$/$>Y +9+$1A 11qA!11(181H1X1h1x111111111]01%#"&&&53326665#"&&&5466632534&&&#"326667Q57F'S (-"/>M*2D*+4QR 3$#. >?#1+J6 -0  0N: +CO$/P;!  1$<,,;"L\.<=// и / и  9EX/>YEX/>YEX/ >YEX / >YA]901!4&&&#"#3676632o" 1"QQ 4)YM." V^:b +и/и/EX/>YEX/>YEX/ >Y01533:WTQ1RRCDc +и/и/EX/>YEX/>Y +0153#"&&&'732653oT (  3  Q1RR*!  3 %#= w +EX/>YEX/>YEX/ >YEX/ >Y99901!'#373?QQd=/ +EX/>YEX/ >Y0133=Q}=, + +, +к,9# 9,.EX/>YEX/>YEX&/&>YEX/ >YEX / >YEX/ >Y&A qA!(8HXhx]к9#901!4&#"#4&&&#"#36632663204*Q%, QQ@, /# H*6B#  3=!' )!(= ( *$ 2;=// и / и  9EX/>YEX/>YEX/ >YEX / >YAIYqA!(8HXhx]A (8q901!4&&&#"#3666632q(* QQ.%7C% '(*90:-'a(//Az]A )9IYi] ( и / A&6FVf]Au])EX/>YEX/ >YA qA!(8HXhx]#A!##'#7#G#W#g#w#########]A##q01%#"&&&54666324&&&#"32666#;P-.P;"";P.-P;#T!3#$4!!4$#3!33>=O(f)//Az]A )9IYi] ) и / к 9 и*EX / >YEX/>YEX/ >Y$A!$$'$7$G$W$g$w$$$$$$$$$]A$$q  9A qA!(8HXhx]01%#"&'#366324&&&#"326662N9-BQQ ?-9N2V 1#$1  1$#1 1V@%%n9'%?U1"@22@"#?22?-O(v)//и/) и /  9и/  A&6FVf]Au]*EX/>YEX/>YEX/ >Y$A!$$'$7$G$W$g$w$$$$$$$$$]A$$q9A qA!(8HXhx]015#"&&&5466632534&&&#"32666C-8N00N8-AQP 1#$22$#1 %%@V11U?%'9"@22@"#?22?=2x + к9 EX/>YEX / >YEX/ >Y  901"#3666632WMQQ $7+uC9=H-3G- +$ %+$ A--&-6-F-V-f-]Au--]$5EX/>YEX/ >Y A!'7GWgw]Aq$*A **qA!**(*8*H*X*h*x*********]01%#"&&&533266654&&&&&5466632#4&&&#""7F$";,Q4(%'-Q#"2(;E;()6!!6'/$  50," 4( % 17 + и и и /EX/>YEX / >YEX/ >Yик 901!#&5#53573#7667#:7QQQbb 9J9Y!z9*9=//и/ и EX/>YEX/>YEX/ >YEX/ >Y9A!'7GWgw]A '7qAFVq01!5#"&533266653o?6[PQ'+ Q9(UN&(+C @EX/>YEX/>YEX/ >Y901!#33Q]U\  vEX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!##3331PvxPViijikTq\\ [EX/>YEX/>YEX/ >YEX/ >Y9901!'#7'373o~]eus]֠ J3/EX/>YEX/>Y901#"&'77267733#+;?   ]Wc ,%! 3P-t 9EX/>YEX/ >Y0135#5!3-7I5?I=FE_|)_*/+/%++*A]A]+  +  +0173"&&&54&&&54666546663"y"*"/'&))+ 0"D 3,% $!  ]Ez I / /Ai]и   ++A]017''7'uv&wu$uu%uuxuw&vu$uu%uu(NZ/0/1/A] A< ] A;]A>]AM]A\]A]AV ]0)# +&+A ]AH]A&]01663#"&5546667663#"&5546667*+$ # &  ! T=  ##*".   ##*"(PZ3H4/5/4  AL]5-' +!*+01665454'#"&546327665454'#"&54632L "    !" 1  ""+"1  ""+#(Z#/ +01663#"&5546667v$ #  T2  ""+"(Z#/  +01665454'#"&54632L# !  /  ""+"%//+015!!/38%//+015!!834I//A)]Aq и++01!73#!!'7#537#7#z'Zgjӄ#b_jM$d3x3&o3x6D'/7?GOW_gow]8<+(,+ $+++ и /AJZqA! )9IYiy]A )9qAJZqA! )9IYiy]A )9qA!  & 6 F V f v ]A   & 6 qAE U qA!((&(6(F(V(f(v(((((((((]A ((&(6(qAE(U(qA!88&868F8V8f8v888888888]A 88&868qAE8U8q8084и4/8Hи<Lи0Pи8TиT/(Xи,\и `и$dиhиlиpиtиxи|и|/EXZ/Z >YEX`/` >YEXd/d >YEXj/j >Yfb+&"++NJ+ ++и/*и.и2и6и6/ :и>иBиFиZRA!RR'R7RGRWRgRwRRRRRRRRR]A RR'R7RqAFRVRqVR^иnиrиr/VvиJzиN~01%#"5432'#"5432'#"5432'#"5432#"5432#"5432#"5432#"5432#"'632#"5432#"5432#"5432#"5432#"54327#"54327#"5432D3N\ZN44NZ\N3C6*LertfK*67GH/I/ ++AX ]AG]AV]HAK]AL]I.A(<]>AHA]EX!/!>YEX3/3 >YEX/ >YEX/ >Y!!)и39AX@]C01%'6654&&&#"&&&&5466632666632#"&'73266654&&&#"##)3D&&D3*#$%AV1Ht,4>!/U?%%?U/$%B22B%%C3(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W01VA%. 3D&&D3'>M7>Fû+ +,=+A]A]A ]$ 9A 4(484H4X4]AD],H81+!+A H X h x ]A ]A(]!'иB01'6654&&&#"&&&&54666326632#"&'73266654&&&#"  '44'" 2C&8YS3%A11A%   3''33&0& !@-$:)):$-@! (3 +H4961>1B&&C2$'44'/;7>D+r//,3+ +A'7G]"A-"]A"]A<"]!F=!XйiEXK/K>YEX]/] >YEXA/A >YEX/// >Y+~v+v~'/0K8A@KSи]d8n016632654&&&#"'6666323'#"&&&'6654&&&#"&&&&5466632666632#"&'73266654&&&#"&&'&#"326!7%1*'3)J! %.3%B23A$-B+ 7)"*3D&&D3+"$%AV1Hs,5=!0T?%%?T0$  %B22B%%C22%K(% "*;4'+*'1C&2%-M  $& 7>|Nre//#+ib+H+N+{+Rf+A']6-XOAb]Ai]//EX;/;>YEXe/e>YEXS/S>YEX1/1 >YEX/ >YEX/ >YEX]/] >Y ;(и 10;CиSRef]nv01%#"&'73266654&&&#"'6654&&&#"&&&&54666326666324&'7#"&&&546732666&&#"3"&&&5466632D $%B22B%%C3##)3D&&D3*#$%AV1Hr,4>!/U?%?68)##%AV11VA%5-#*3D&&D3;2($00 @7%2@#-JQk . 3D&&D3'>M&(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W0Dk7<9U +*4A)9^C%%C^9Rd#+ U9-K66K_#&5!)9#'0F.(D0*#7%34/5/Aiq A&qA'.]A5.]EX/>YEX!/! >YA7]1,йAfqA#]AjqA]A]01766326654&&&#"'6632#"&&&&&'&&#"3267*H)5!@1E&4`+}C2UA%%AU2:V7<5*8Z3+ -'B'%E2;4DE&@W02UA%'69M&%0+ 7>&4P5/ +56++A]A*]A,]016632654&&&#"'666632#"&&&&&'&#"3267!7%1*'3)J! %.3%B22B%-B+2%K(% "*;4'+*'1C&&C2*,:  $& 7%&/'/& и /A ]A']Ahq'A]A(]AHX]AG#W#]EX/>YEX/ >YEX/ >YAmqA]AsqAX]!017&&&&5466632'6654&&&#"j*#$%AV11VA%##)3D&&D39U +)4A*9^C%%C^9*A4)+ U9-K66K7>/ /+A]Am]A]и/ A]]A]A]Af] +Af]AXh]01&&5466632'6654&#"^#!*1B'&C2*! T;YEX/>YEX4/4>YEXF/F >YEX>/> >YF>$4.U0123266654&&&'73266654&&&#"'632#"&&&'#"&&&546666654&#"'6666&$+D0,E0-5 5D$%B22B%  "%/U?%%?U/!?6,sH5U< $#  ,,  ,-"#;N,6*+#dR#H;&3D&&D3/&@W01VA%&5 DM#5A+%  7>XY/Z/+A qAqYH Z8'A 0(080H0X0]C+="+,3+R+0123266654&&&'73266654&&&#"'6632#"&'#"&&&546666654&#"'66{ /!4&"6$!,(43&&3   $A11A$2VY8)A.!*W.,!"-<"*!!N?8-'44'%1B&&C2@05;*1! 7%&/'/&A7GW]Adq' AdqAG#]AW$]EX/>YEX/ >YAW]A]A]AqATqA]A qAZqAX]A]!0173267#"&&&5466632&&#"j3D&6_,0;C!1VA%%AV1!C;0,_6&D3&D396"3"%AV10W@&"3"5:3D@[263/!+A]A!&6FVfv]A&6FVfv qAqи3й!',+++Aj]A\]A]A]AH ]A]A]AU]AI0]01"32&&#"3267#"&&&5467&&5466632&&]$#/!   ( !@$$#%  4#%  #4$) ) %3G[n\/R4+(+"+\>йH-+++CW+M9+A]01"32&&#"3267#"&&&5467&&5466632&&466632#"&&&%4&&&#"32666%$/!   ( !/$$#% o1A$%A11A%$A1>&32&&23&a#%  #$) ) %%C22C%&C11C&4''44''4'5iøj/ +9^+jA| ]A'777qAC7qAW8q9Iи^XAgq+3,+6c+D=+SL+OA+3,#Ahgxg]01#"&&&54666324&&&#"66326&&&&#"326"32&&#"3267#"&&&5467&&5466632&&1A%$A11A$%A1'&32& B F   >> #JrK/'+!+K3й?Eй9AX9] ,+++6H+B<+01"32&&#"3267#"&&&5467&&5466632&&#"&546324&#"326$#/!   ( !@$$#%  -,,-4#%  #4$) ) % -- --745/6/56 A - ]A]A]#AC#]A2#] .A0]EX/>YEX/ >YA])A0]3017466632#"&&&6654&'3266654&&&#"7$?T02U?$$?T01V?$w''&$N))!&C22@&$0W@&&@W02UA%%AU^'OQ'M+,K#(Z**Z)1D'%E27>34/5/4A0]5 A? ]AM ] ]й#Ag#]Au#] -2+(+A7]01466632#"&&&6654&'73266654&&&#"71A%$A11A$%A1_; 3&&3&C11C&&C22CK<@=##= E !F '44'71?S T/U/J +TAS]U"A4]@AIC]AFG]A[R]A9RIR]EX/>YEX-/- >Y=7йAW]A]A]A]A*]AY]A9]и-'AHC]Eи=O01766326654&&&#"'66326632#"&'#"&&&&&'&#"326%4&&&#"326667*H)%/!@1E&4`+}CEqoD.V?%%?V.DoqE'N?+95!0Z3+2B%&B11B&%B2 -'B'%E2;4DEH99H&@W02UA%H99H-=9&%  /+ %E22E%'D11D7>2FTU/V/= +UV#3B(++L+A\]A *:J]и(.и8A^L]BR016632654&&&#"'6666326632#"&'#"&&&%4&&&#"32666&&'&#"3267!9%/*'4)G$ %.35WS5%A11A%5SW5<0"{'33&&33'|2&L'% "+:4'+*'8--81C&&C28,,8#/R4''44''4`  $& 78<JnK/L/H +;+AKqA_qA]A:qK.L$ܹ#A66]A8]AKB[BqAB]EX3/3>YEX)/) >Y=E+A=]=A.]A<]EA5E]A]A#]AbqAHqA]A7qAm3qA]3]3) A'#7#]Av##]AB]01%&&'#"&&&54632&&&&#"3267#"&&&5466632'26667&&#"?!%60!-'C10B&,@#!')/3T>"$?T0.I4&( #. !,83D$(D2 ( %AV10VA&1D'?M7>5@A/B/> +B4AH qA'A6qA<qA<<q,+"+A6 F qA % qA6qA<qA<qA<<q01&&'#"&54632&&#"3267#"&&&5466632'267&&#"  //(& 1/4&&3#/<,'B/1B%$8' # '$##+ ''45&2C&%C2&32< ' 7>/=ʸ>/?/+>A]?A,] A( ]80ܹ&AS&]A2&B&]EX/>YEX/ >Y +AX5]AW;]0174666323%#"&&&%4&&&#"32666'4&&&'667$?T01V?$?63 2U?$1B% ')%&C1 %$)0W@&&@W0Dm7j,89/0+06й&й A ]A ]A7 ]AF ]9:EX/>Y++!+A ' ]014666323'#"&&&73266654&&&#"6654&'t0A%%A1{38 %A0  3&&37&C11C&8+!<72CG !E '44'>@;##=7>HI/J/Iи/AX]AH]A8]AX]J-ܹAHX]#Ag#q6EX(/(>YEX2/2 >Y@+A]AW]2(AY"]A"]Aj#qAM5qA[5q01#!"&'&&&&573266654&&&#"'666632#"&'3!2676655 #6e--_6&D33D&6_-0;C!1V@&&@V1-Z# ...-'-4512693D&&D3:5"3"&@W01VA% /1/ "7>oRp/q/K+gf+pAT qAK]AX]AX]иq0A(9]@AZB]AIB]A'H]AHSqTAWY]A7Y]EX!/!>YEXP/P >Y^+A ]AV ]AX qP !AY]A]!+иP5и ;AXB]EAMSqA<Sq01"&'&&&&5732666774&&&#"'666632666632#"&'73266654&&&#"#"&'3!26766553#!A6e--_6$?13D&6_-0;C!$B9+-6>!/U?%%?U/$%B22B%#@3#)>Q--Z# ...3#>-451269,<"&D3:5"3"'54'&@W01VA%. 3D&&D3"6F$,L7 /1/ "-' 7>uv/w/lk+vAH]A*']Aj)qA()]AV*]AZ1]A81H1]wD3A(:]AXVqWEX$/$>YEXS/S >Ya+A ]AV ]S $AY]A] .и8и$?иSIAZVq01"&'&&&&57326665454'&&&&#"'6666323266654&&&#"'6632#"&&&'#"&'3!2676666553#!A6e--_6&D31?$6_-0;C!/U@'#3@#%B22B%  $/U?%%?U/!>6,,9B$-Z# ...3>-4512693D& "<-:5"3"%@T.$E6!3D&&D3/ &@W01VA%&4 4% /1/ -< 7>[\/]//%+\ и]?/REX / >YEXN/N >YZY+ Q+ +N   *и4и :иND01"&&&'&&573266654&&&#"'6666323266654&&&#"'632#"&&&'#"&'33#)"-_6)D24C$6_-0;C!/VA'"3?#%B22B%  "%/U?%%?U/!>6,,9B$-Z#1-:> B'694C$(E1:5"3"%?T/$E6!3D&&D3/&@W01VA%&4 4% 537>UUW/V/Wи"A)()]0AY1qV9Cи9LEX>/>>YEX4/4 >Y ++ &A'*]A*]-A[1qAD]AXD]>G4QAT]AWT]01"&'326667326667#"'&&55#"&'532675#"&&&5466632&&#"32673n<)O$IS'<3-+(U-7k-0c<-T)#Z-1VA%%AV1!C;0,_6&D33D&6_,Y #O&  1 l  %m %AV10W@&"3"5:3D&&D3967>>&:;/YEX/ >Y-4+AZqA)qAX]"AW%]A'1]A1]AG:]01%#"&&&5466632&&#"3267##"&'53266670;C!1VA%%AV1!C;0,_6&D33D&6_,=&H-7i/0c<311y"3"%AV10W@&"3"5:3D&&D3963G9% 7>-4'C(/)/( )'+"++01#5#"##"&&&5466632&&'"3267-Z%%%%;&##e'F##!   R7>S%7apb/c/BS+_8+7(+bAGW]AH]c Aj] AG#]AW$]A*]A6N]EX/>YEX/ >Y3,+&'+`a+=F+AW]A)qAY]!A8)]Aw)]A{,,]A /'/7/G/]Aw/]A3]A3]FN=X0173267#"&&&5466632&&#"5##"&'3267'5#"&&&5466637&&#"32326735j3D&6_,0;C!1VA%%AV1!C;0,_6&D3R6l;8_R`/a/'++A:]a9`CAC]AHq9MAXN]A(NqAGS]AWT]CVAGXWX]AH]]9^Aj^]A^]EXH/H>YEX>/> >Y+2+++A<]A?]A7/]AHqA.NqAYN]HQ>[AV^]A^q01##"&&&5466632&#"33266676655#"&'5326667#"&&&5466632&&#"3267")& ))"   $J-7i/0c<3110;C!1VA%%AV1!C;0,_6&D33D&6_,'@ %$' " 59% "3"%AV10W@&"3"5:3D&&D3967>MN/O/+OLA]'N0L:A;]0CLKAIK]EX5/5>YEX+/+ >Y+ +A ]A;]A ]A<]AY;]A;]5>+HAK]AVK]01##"&&&5466632&#"3326667665#"&&&5466632&&#"3267!)& *)"   #Z-1VA%%AV1!C;0,_6&D33D&6_,'@ %$' " 59 %AV10W@&"3"5:3D&&D396t7>J,K/L/E(+K йA]A%]L2A7]A7]A8]AH8]A8]Ah8]A(8]A8];A>qA>]ABqAB]AH]AGH] +@-+$+A]A-]A7qA7]A97qA7]A8]01"&'&&&&554632'6654&#"33&&5466632'6654&&&#"!1 0 1 (2B&&C1')-'54'-)> &(,)  i D#&B22B&3.% !J)4''4)J!7>#67/8/4+7 AF ]AHX]8$AX]AI]A,]Al,qA,qA,]EX/>YEX)/) >Y0+65+A ]AV f ]At ]) AY]A]Ak,qA,qA3]01#&&'573266654&&&#"'666632#"&'32673#C'? # 693D&&D3:5"3"&@W01VA% m"37>AD<_=/>//+'+>=8*/4++* й!012#"&&&'32673#5#"&&&'53266654&&&#"'6666&!"&(3 -K  9  3#!&I9d     7>56sʸt/u/4+<d+SP+\G+A/]A-]t AX ]AG ]u$A$/$]AJ$]AlqA,qA,,]A%,qA,]A2]A2]A3/3]A4/4]7/+ )+65+RQ+0+A ]AV ]AY]AkqAn,]A,]A|0]A000]7j`A`]A`]AKAO]WASW]01#&&'573266654&&&#"'666632#"&'326732#"&&&'32673#5#"&&&'53266654&&&##"'6666&O'E# 693D&&D3:5"3"&@W01VA% m$3&I9d     7> [\/]/+:)+AVq]AO]A-]A]A]AH]A]AX]\$A;]?AGA]AWBgB]AB]AKG[GqAINqEX7/7>YEX/>YEX/ >YEX/ >YKQ++KAZ] Ak]AX]A(]A]7,Ag2]DQW01%#666654&'73#&&&&5466654&#"'666632&&'532654&#"5632":,*#-5!9M-S/L5&/&   ,-*&/&%:*  ')  '  '!5G*9U +#dR6ZB(3&4<,;*  7( )'.#() #%,) !7 ;YEX/>YEX"/" >Y10123266654&'7#"&&&546666654&#"'6666&$+D0&D3*#-5%@W15U< $#  ,,  ,-"6K-9U +#dR9^C%#5A+%  7|}/~/+A]A]A]A]A[]A ]AH ]AG$]A$]AW%]}8A]8]'A*]A7/]AW/]AG0]A0'0]A5]~NA>N]AN]AV]AHV]A(V]AXW]A\]A8]]A^]_AXa]AHb]AGf]AWg]iAn]An]Ax]Ax]EX=/=>YEX3/3 >YA], A]="и=CиIи3sиSи ZиdAn]013266654&&&5467&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666. '  ,-&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* }C\ ## !! -Q! &D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7>s"t/u/+t3"Ag%]AV)f)v)]A)]A4)]AB)]A&*]uGAG]AKP]A?P]AP]AyP]AYP]A+S]AhU]Xb8+.'+' иAw)]8=иBи.jиLи Sи]0132654&547&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666V$#$  ,0!+ $:)+>&4',#B-%>+':$ ,!/,/* 2G 2G2 4''44'$2C&&C11C&&C2$'44''4 $6! 7>G//+%<+1.+HAZJ]AHK]AGO]cA\c]RAGZ]AX[]A['[]yAy]A]]A]A(]AH]A]AY]AH]AG]AV]EXh/h>YEX^/^ >Y A+7*+0/+^W иhMAGZ]A`]hnиtи^и~и и013266654&&&5467&&#"&&#"32673#5#"&&&54666324&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666. '  ,,m9.-#"-,ABi <0/=!% }&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* }C\ ## !! .O"  !" }(u 2&$1  (w&D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7>6S//K9++-&+43+-A(]& AW]A'7]A]AY1i1]A81]9TA[V]AW\]o^Ae]AGf]A'g]A>]A]A(]A]AI]AX]A8]AX]AU]KEXt/t>YEXj/j >Y!+52+*+A]A(]A]As!]jcAиtYQиtzиA]jииAиQ01#'6654&&&#"&&&&5466632366554&'!53#3266654&&&5467&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666t2),'43',)' 2A&&C1T '. '  ,,&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* /?ZO!H)4''4)H! %.3&C11C&#DA#*H7^(C\ ## !! .O" &D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7KCL/M/.+AY]AG]A]AW]A]L8 AG W ]A ]A ]A]AK]AX]MA]A(]$AY&]AI']A']A'+]AE+qEX=/=>YEX3/3 >YAX]=A ]33ии)и=G01%4&&&#"32666%#"&'73266654&&&#"#"&&&54666326666320B'&C21B%(D0%@U/#&B22B&.G0;V82U?$$?T0$B8+-6= /U@%'E53D&&D33A'1VA%. 3D&&D3/@D MD.%AV10W@&&54'&@W(>HI/J//+I9 JA,]A8]A*]A]AXh]%>+4+4ии*и>D014&&&#"32666%#"&'73266654&&&#"#"&&&54666326632f%33&&34$m1A%   3&&3#6%-B+%A11A%7XT2%A14('44'(2&C2$'44'$23<4#2C&&C1=1/?1C9> JZ[/\/)K++Ax]Aw]Av]Ax]\@A@]A.@]A=@]![1A21]A!1]A1]SP6+.X+ ++A ]A ]XиP%A81]6;и.D0132654&&&#"466632#"&76654&#"#"&5466632632#"&'732'4&&&#"366#"  $  '. &1W%%  $)8$)4#5) Y  &  *"$  $!7$4'+  #:)$-%(:C  )  &73GVH/I/*4+IA3]AR]A]AV ]HAV]A1] AI#]A#]A']A-]A1]AI2]A7]AF;]A;]AW<]A<]>AW@]AF@]AA]AE]EX/>YEX / >Yии9%A-] C/A1]01%#"&'#"&&&546663266324&&&#"32666%4&&&#"32666%?U/DokD2U?$$?T0EmoD/U?%32B%&B22B&%B2b1B%&C21B%&C11VA%G::G%AV10W@&H99H&@W0&D33D&&D33D&&D33D&&D33D7>3GظH/I/*4+IA,]HA] Ah"]Ay#]Ai2]Ax2]Ah7]Af;v;]>Aw@]AgA]AiE]9+ C+ ии9%иC/01#"&'#"&&&546663266324&&&#"32666%4&&&#"326661A%5SR6%B11B%6RS5%A1-%33&&33%&34&&43&&C28,,82C&&C18--81C&4''44''44''44''4734/5/A]A]A]A]4$EX/>YEX!/! >Y2+A]Arq !(01%666654&&&#'4632#"&57266654&&&'50,-:MX/lh7P4,((,4P7hl/XM:-,0! -3:I%3#88#2&I93- !37>~/0/1/0A]1A-]A<]A] и) +.+$+A ]A, ]A,]A$]A!$]01266654&&&#"'4632#"&57266654&&&'5 %"#--,-,>8,'$ '734/5/45 A]A]A](AY+]AH+]AG/]AV/]2EX/>YEX/ >Yй#-017466632#"&&&&&#"326%6632654&&&#"7$?T02U?$$?T01V?$w'LN)I*,K'X'*Y' 2@&'B10W@&&@W02UA%%AU@''!%'N''!$%E22E%&7>4^5/6/56 (2-++#A"#]01466632#"&&&&&#"326'6632654&&&#"71A%$A11A$%A1#=9 4('6C D &33&&C11C&&C22C.!!94''4 7>7CB>+.++'+A$ qAC S qAm qA qA qA0 qAn qA# qAW#]$и$/8и8/E!/EX3/3>YEX/ >YAX]A3]A;3]3A qA7 qAh qA ]A=!]Aj$q!;A7;]C01&&'"##"#"&&&546326654&&&&&5466632&&#"3`, *=J=*W:3$B3H9?J'9*=J=*'-8!K0&/%/~  '7)LD F ,"'>\@-3''$ '+D 7<J`K/L/3+)@+A]A qA7 qAo qA qAT qA@ qLA~]A]A>]A]]Av]K!A''],A},]A</qA.0qA9;]!FEX8/8>YEX/ >YC$+/ +A8]A;8]8A7 ]A]A7']Aw)]=01&&'"&&'#"&&&546326654&&&&&5466632267&&#"_+ *>I>*"$ '#R'$B2E;896 *>I>*'- 7!r<+]!!,'-~  '7)"3$ $ ' ,"'>!, ! ''$ ' '< 7:HI/J/A qA qA7 qA qA(]A']I A4 ]A" ]*A';] DA7D]6+;+A#+A)qAHX]Ai]A9qA qA& 6 qA qA#]AG"]Av%]A(]A";]01&&#"&&'#"&&&54632654&&&&&5466632267&&#"# 080  $?3'5.*+* 080 #)W-#F"$ +2# % !/!  , >U6He//Xu+Q|+?'+7++AS]A=]Al]A,]A\X]jAVr]A6r]AOyqA,qA[qEX/>YEXe/e >Ym+:,+"D+" иDи:и,2A]LAL]A6m]Ar]AHyqAy]e013'#"'73266654&&&#"#"&&&546663266324&#"32666&&'"&&'#"&&&546326654&&&&&5466632267&&#"s35H3%%3"6&-D+$B00B$6ZV1&@0O<3%%33$i, *=J=* $ "S'$B1E:796 *=J=*'-8!r<,]!!+'-/'<44 $ )35($35<3$2B'%D1>0/?1D(!, ! ''$ ' '< F>Hkw//lI+fr+U`+++GF++AC]A]A"2]!A!]"AF/]1AF5]AF]AG]AsU]AU]EX/>YEX/ >Y+)+ :+uL+io++A # ]AS ]A2 B ]AB:]A:]A!:1:]AQ:]LRиiXиo]иucA]{01##"&'&&&&54666766332#4&'&&##"3326667666655346326632#"'732654&#"#"&732654&#"&&'"&&'#"&&&546326654&&&&&5466632267&&#"+h4`5g,  ,g5`4h+#3'd*6*c)  &`(<00/ 3F2"862FF2 #33#3F02F"3#'-2"#3, *=J=*#$ '"S'$B1E:796 *=J=*'-8!r<,]!!+'-135--531k354,-#R@%%.0/.2.% .2.HZ3F""F32H !4#"56#1GH2#47!#351  '7)"3$ $ ' ,"'>!, ! ''$ ' '< 7#$/%/A/]A]$EX/>YEX/>YEX / >Y 01%4&'7#"&&&54666732666)#,5%AV11VA%$#*3D&&D39U +#dR9^C%%C^9)A4*+ U9-K66K7>! "/#/+#AoqA qA]A\]Aq]AhqAx ]"A]A)qAm}]A'qA]Aw]AW]Ag]Ah]Ax ]AX ] +AiqA']AgqA']014&'7#"&&&546732666} !*1C&&C2+ "'44'-A"N?,H44H,?N"A-#:)):7 -.///Af]AL]A8]A:]. A" ]A ]Ai#]Ag$]'A ']EX#/#>YEX/>YEX/ >YA]AE]AK]AZ]A#]#$,016654&&&5467#"&&&546732H*+,!5-$%AU21V@&8*#*2C'Bz#=X6?$+B$V?*f4(5B(9_C$$C_9Re"+ U9-K67> 01/2/AN]A]A.]A]A] A]ATqAy]A]Ai]A]1#A#]A #0#@#P#`#]A%qA&]A5&]AS&]AY']A&']A6'F'qAV(q*/+'&++Ay]A]A]A]A]A]A]A]A(]A]A%qA'&]016654&&&546667#"&&&546732D  $#"1C&&C2+ "'403#<*)!9C0&'( )2,H44H,?N"A-#:)734/5/AI]4AE]A7 ]A8&](AV+qA1qEX/>YEX / >YEX/ >Y.+AG]A]# +A^+qA +qA.]1A_1qA 1q01326667#"&&&546663266654&'#"&' !+,! # &@W00VA& #3C&&C3I32I)  )1>H%1VA%%AV1%H>1&D33D&0D $++$ D7>/0/1/AO_qA]A]AWqAFq 0 $AW-q*++AXqAq]AZqAHqAZ-qAp-]01326667#"&&&5463266654&'#"&' !" $$2B%%C2$'44'6('8 V!!c;&C22C&;c5''5'1!!37@A/B/*+BA)]A!3EX6/6>YEX/ >Yи% и6/и6<01%#"'73266654&&&#"#"&'73266654&&&#"'66326632%?V.' %B22B%$D4 FG/H/A( ]Ax]Av]ADqG7%A).q3<+ )+ и) и3A%%%]A)7]A7]<B01#"&'73266654&&&#"#"&&&'73266654&&&#"'66663266321B%  4&&44)-C-4.% #J)5&&5)J# %.4:WQ2%B1&C2$'44'/992#')-'34(+*'=1/?1C7 ,-/./A]A]A] A]A]A]A]-A]A ]A ]A ]A ]#EX/>YEX/>YEX/ >Y(+A]A] A ]A(]017327&&#"%4&'7#"&&&546766326J+Z6(NN!*"+6%AU21V@&8*#*(Y()Z'i!$F'_9U +"eR9_C$$C_9Re"+ U9,-' '*7> /0/1/!+A q1 A]AU]0A_!]An!~!]A!]$ +AW!] *013267&&#"74&'7#"&&&5467663266~6'$9<;!!*1C&&C2+ "D D"C-A"N?,H44H,?N"A-#!7EF/G/"++FAO ]A. ]A+]AI]AS]G<,A(5]EX / >YEX/>YEX7/7>YEX/ >Y 'и71A01%#"&&&5466673266654&'73266654&&&#"'632#"&&&rH1VA%$#*3D&&D3)#5,1@$&B22B&  !%/U@%%@U/ ;3*BL%C^9)A4*+ U9-K66K-9U +,g?&L<%3D&&D3/&@W01VA%'31>j /+ EX/>Y+A]A]A?qAqA]AqA-qA]A]01%3j3Q7<t>j,./ +#+A]AA ]A ! ]AP ` ]A0 ].A#]A{]Av ]Af!]AW#]A#]A%]Av&]Af']A{+]-EX/>Y+(+A8 ]A ]014666323'#"&&&%4&&&#"32666t0A%%A1{38 %A0>&32&&23&&C11C&8+!<72C%5''55''5>j01/1йA]'й A]A(]2EX/>Y"+,+++013'#"&&&''776632'4&&&#"32666730&#>0Iif!N6$@1 &32&&23&<7+:"uP":6/1C&$+c5''55''5?>j T/+ EX/>Y+ +0173%5?H,3~.+7g 9Q:/;/4+A1A]:A]A 0@]A7]; A)$]AA)]+A54E4]A$4]A5]A e5u5555qA5]A 55&565F5V5qA25]A!5]A@5]EX/>YEX / >Y+2+++A8] &017327&&'&&#""&&&54666323#4&&&#"63232pbC-,#1V@&&@V12W@'S4E&%B2 3B:$YEX/ >Y(!+1+AgqAgqArq+Ag1]017#"&&&5466632#4&&&#"632323267&&'&&#"C;291V@&&@V12W@'34E&%B2 3tbC  .,$#cE%AU20UA%$C_9-M60@$ - 7>'506/7/AFV]Av]A%qAcq6 A ]A ]7AO]A>] !A{.qAJ.qAi.]AL0]EX/>YEX/ >Y(!+1+A]AHX]A(qA ]A8]A'!]+AH0]017#"&&&5466632#4&&&#"632323267&&'&&#"C;291V@&&@V12W@'34E&%B2 3tbC  .,$#cE%AU20UA%$C_9t-M60@$ - F>QER/J ܹ 7й6S+A*+0132#4&&&'&&&&##"33266676666553##"&'&&&&54666766P`5f+3 -0/6/0.  /0/300. 3,f5`6e-,g-''#    /2/.10  01.HZ244--442k344,F>@LA/'A7"G"]'B>ܹ?+3+01##"&'&&&&5466676633#"33266676666553,f5`6e-,g5 *.  /0/300. 3244--442h344,3 /1/.10  01.HZF>_@?A/5 B!ܹ" ?++?>+01"3!266676666553#!"&'&&&&546667663!!n------12/ 3*f56Y**Y6f /2./20  /1/HZ145,)452k354(3F>_QER/Aܹ.й-S I+7"+01#4&&&'&&&&#!"3!266676666553#!"&'&&&&546667663!2_3 -00.---,.-00. 3-e66Y**Y66e+    /20.20  /1.9K154-'562k243(-''#F>Kc]d/B/VLйd4!ܹ 4e)+QG+_+01##"&'&&&&54666766332#4&'&&&&##"3&&54666324&&&#"32326660A%6e-,g5`5g- 3.007/0.  ,--1A%%A0'%33&0'  3%&C2-442k344,-('# A  /1..1/ B(&C11C&5''5-F%2F>_La]b/C/WMйb4!ܹ 4c*+RH+?+01#!"&'&&&&546667663!2#4&'&&&&#!"3!&&54666324&&&#"326661A$6Y**Y66e+ 3.00.------1A%$A1'&34&1' 3&&C2)452k354(-''# A  /2./20 B(&C11C&5''5-F%2F>:R`S/1/E;йAG]S#ܸ#T+@6+M+01##"&'&&&&5466676633"3&&54666324&&&#"32326660A%6e-,g5,00  ,--1A%%A0'%33&0'  3%&C2-442k344,3 /1..1/ B(&C11C&5''5-F%2F><Q`R/3/G=йAG]R$ܸ$S+B8+M+01#!"&'&&&&546667663!!"3!&&54666324&&&#"326661A$6Y**Y6f------1A%$A1'&34&1' 3&&C2)452k354(3 /2./20 B(&C11C&5''5-F%2F>G]H/.//йH@ܹ I+7&++015##32#4&'&&##"3326766553##"&'&&&&54666766S3a5f+#!3%f*6*c)  .0'0 3 @>0B ,g>30}-#RD'%.2..00 $< !$542k354,F>nU]V/:/;йVN%ܹ%W+D1++015##!2#4&&&'&&&&#!"3!2666766553#!"&'&&&&54666766nS3h6e+ 3 -00.------k% 3.!h6Y**Y>30}-''#    /20/20   ,5  )452k354(F>?`@/8A&ܹ'й A'] ++/+015##30"3326766553##"&'&&&&54666766S3-/.   "'/ 3 @>0A,g>30}3 /2/.00  %< !$450k344,F>nFSG/?H+ܹ,й +5"+ +015##!"!"3!2666766553#!"&'&&&&54666766nS3hf------k% 3.!h6Y**Y>30}  /20/20   ,5  )452k354(7EF/G/A+AG]FA7 ]A ]A& ]AF ]AQ ]AX%]AH&]G7(A 0)090I0]AZC]EX/>YEX/ >Y A' ]AX ]#и-A0]2и<01"327#"&&&54666323266654&&&#"'632#"&&&'&&&&%?//?%&0R<##HI/J/D+AqAqIAqAqA ]Av ]A 7 G W g ]A& ]A ]A"qA&qA&qJ:)A ,,qA*2]A2]AY2i2]A92]+ +AX ] $и/и4и?01"327#"&&&54666323266654&&&#"'6632#"&&&'&&&&2$$2%@..@%%;+!-2$$2  %@..@%$:,!-}'44'$2C&&C12C%4''44'"1C&&C22C%4'7'e(/)/() EX/>YEX/ >Y#017466632#"&&&%4&&&#"326667$?T02U?$$?T01V?$2@&'B11A%&C20W@&&@W02UA%%AU2%E22E%'D11D>'(/)/() AqA]Ahx]Av]Ag]A]AqAv ]A ]Af!]A!]A!qA%qA%]Ai%]Ay&]+#+A!q01466632#"&&&%4&&&#"326661A%$A11A$%A1>&33&&33&&C11C&&C22C&5''55''5>*]+/,/+ܹ,  A9*]A*(*]+%++013266654&&&#"'776632#"&&&'&43$&23(pif!O5&A/1@$#>05''55'&5P":6/1C&&C2+:"@()/*/A]AqA6qA]Aq  )+%++AqA!]A]A]A"%]A%]013266654&&&#"'776632#"&''((& XeEN<*4''54N ))();(*%'56(C87@ȸA/B/ +AA(]AX]A'"]A8(H(]B9ܹ*A2]A(2]EX/>YEX/ >Y AX] %и/и4и>01%#"&'73266654&&&#"'66323266654&&&#"'632#"&tID|-`5*E0 4B$5`-|D+TD(4E)%B22B% '.V?%%?V.Ap?OEC5:4G($B0;4DE#:P+!H>(1D'%E2 /&@W02UA%R7>BC/D/ +CиD;A;]A,;]*A,*]Ax3]A)3]A83]AX3]+ +A]A] %и/и6и@01#"&'73266654&&&#"'66323266654&&&#"'6632#"&X94`$I* 5%)3*I$`4!B3 '54&&4  %A11A%2U0=54),)6 2%+*45.<"80'54'$2C%&C1@F>_H//I+:+0++++]A(p]tAt]sAs]A#]EX+/+>YEX/ >Yи+"5и"?и+DAR]AYRqA~]A"~]01%#"&&&'#"&&&'73266654&&&#"'6666323266654&&&#"'6324&'&&&&#!"3!266676666553#!"&'&&&&546667663!2"&'73266654&&&#"#"&&&54666326632"3266654&&&P%?U0!=6,,9C$!C;/+_5*E1 4C#5_+/;C!+UC)3E)&B22B&!%0U?%$.00.---,.-00. 3-e66Y**Y66e+   )  )- '9$ 8**8 /IF* 8**8)**)1VA%'3 4%"3"694F)%A1:5"3"#;N,!H>(3D&&D3 /&@WA  /2..20  /1.9K154-'562k243(-''# %++ +1/)+:!!9*1''1*9!!:+ ++  ++ 7L_1`/a/.+G8+a`A(]&A'0]A86]A@]AO]A(O8O]QA+TqAY]EX)/)>YEX/ >Y иA]AV]A)])"AY&]A&]3и"=и)Bи3LA8O]=VиB[01%#"&'#"&'#"&'73266654&&&#"'66323266654&&&#"'6323266654&&&#"'632L$?V0Cl!rHAp tID|-`5(D13D%5`-|D0UB&/H0'C00D( '4V=!/F0&B11B&'0V?$2UA%O??ORYEX;/;>YEXA/A>YEX/ >Yи2 AA]AA)])*Ai+]A;];:01%#"&'73266654&&&#"#"&&&5466673266654&'76632%?U/$%B22B%'D1!/+01533S3>30++0177KP0_1(> 7 /и/ й ++0133!5333SS3>c330(># j/ ܹйй  ++A]A<]Ag]A%qA ]0133!3!5333R3S3>c3c307>[O\/]//+#+][A,[]A-]A]A/]6\?A?]AA][IA-I]AGO]A'O]AO]?RAT]AGT]AIY][ZA+Z]EXD/D>YEX:/: >Y3+'++AD]AYJ]DMAHO]:WAVZ]01"&'33266654&#"'6632##"&&&'&&5532675#"&&&5466632&&#"32673n<)O$  r  " "),4)"0c<-T)#Z-1VA%%AV1!C;0,_6&D33D&6_,Y #5    ' $,; B'%m %AV10W@&"3"5:3D&&D3967uN\߸]/^/2+'+A]A)9]A ]^HA H] A ]];A;]EX>/>>YEX/ >YMйZUйA]A]>7и">C01%666676324&&&#"#"&57266654&&&'5666654&&&#'4632632#"7&&#"326 !0#09  4D%2[*$'-cphl/XM;-,00,-;MX/lhR_In1V@&)BX/4 $-- ?c!<3*$@030 09"9QI93- !3" -39J-#P&?W15W?" <,K7>P]I^/_/3+A8]A)]Ax]AX]_JAJ-J=J]AOJ]AlJ|JJ]AZJ] A ]и^<и3(A9QIQq8?+#+-.+V+A[]A]8A' ]A ]A;]A(<]?EиOA8QHQqA]V]#[01666676632&&&&#"#"&57266654&&&'5666654&&&#"'46326632#"7&#"326$*'4&G "NUOU$E;-""% %""-;E$UO?JH)%B24C$) #" 0NP.'!  1%'$%,,>9+'$ ' #(+:# 1C&)C0.!97>8rs/t/+DE+t A(]AW]s) AT]^/d/S/m/EX./.>YEX$/$ >YEX/ >YA;.].и$#.4иd>^KSTmn01%'6654&&&#"#54&&&#"&&&&546663266324&&&#"#54&&&#"&&&&546663266323#566##)3D&&D333D&&D3*#$%AV1EppE1VA%'44'''44' 2A&6VV6&B2I&*A4)+ U9-K66K-ll-K66K-9U +)4A*9^C%H??H%C^$:)):$TT$:)):$-@! (3 +H470074H+28'!B7>ee//"+V+m+fGܹA]A[%q5,A0]Ax]EX:/:>YEX0/0 >YEX/ >Y{r+dY+Q+A:]:'A']и0/:BA,_]A_]A9_]013!266676654&&&#"'6654&&&#"&&&&5466632666632#!"&&&54632&&&&#"4&&&&&5466632&&#"#j ?  2B%%C3##)3D&&D3*#$%AV1Ht,4>!/U?%")* ~AiO5 -B[@$7?7$1B%, /2/#$7?7$3 5&D3'>M&(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W0'@  #LG $  *:.(.<,%A0#."1*(4E2H7>FG/H//<;+G  AG ]H%AZ]AI] и.EX / >YEX*/* >Y4+A ]AV ]*  A]01"&&&'&&573266654&&&#"'666632#"&'332676553##)"-_6&D33D&6_-0;C!1V@&&@V1-Z#13  > B'693D&&D3:5"3"&@W01VA% 5 08  7>"7FG/H/A]AqAqA)qA]A%qA]AqAqA)qA"qAiqAqG'A*]Ah,q/и':Af?qAZ@]AUE]EX,/,>YEX"/" >YB2+Ao,qA,],A22]A2qA2]2 AS ]AKB]BAL]AN]"A5qA5qAd5qA\=]A=qAi@qA@q01&&#"326&&#"3267#"&&&5466632#"&'&'667632[/'1 -*!1-*2W[ %8K01V@&&@V1M{Q9(B2 H**3)B,* * (!*:6+%AU20W@&PH 'BJ%'H#17>YZ/[/ +A=][U*й ZKAK#K]AK]4A]Ax]A]EXP/P>YEX/ >Y +E:+A ]A}]A]A]%P/A/]AI/]AK]01"&&&5466654&#"'6666323266654&&&#"3266653#"&&&5466632P( "*"#,&"*" 0%2@ &D33D&'B.3 _"7>8"#@##6n#f$/%/$ A(]EX/>YEX/ >Y 01%#"&'73266654&&&#"'666632n&?U/1 * &B11B&=e:!69@*/U?&2UA% .1D'%E2D0-,!&@W)yw/  +A ]A ]A ]A ]A ]EX/ >Y +012#4&'"#46/NZ3?65@3V][6K9=HRf)"#/$/+$A']A6]#"A#"3"]!EX!/! >Y + иA(]014&#"#4632666632#4&#"#F?65@3VR*! !+RT3>5+ 3K:=HRf  fRH= 3%6'Y(/)/(и/) ܹAqA! )9IYiy]A )9IYiy qA!&6FVfv]A&6FVfv qAq#++01466632#"&&&%4&&&#"326660B$&@00@&$B0>%33&&33%%D11D%'B22B'5((53))3'3?E.(+ ++Ab ]A]AZ]AT]Ag]Ag ]AT ]AY&](4A4]A7].:Al:]AZ:]A:]Ay;]AX<]+#+Ag]A1]A1]A7]AL7]A?7]A7]A7]A7]Ay7]A<]AW<]A0=]01466632#"&&&%4&&&#"326667#"&546324&#"3261A$%A11A%$A1>&32&&23&-,,-&C11C&&C22C&5''55''5-- --!5A4+ *+//++%01466632#"&&&&&&&#"326'6632654&&&#"1A$%A11A%$A1$  >> #<B F &32&&C11C&&C22C0  #=5''5(></EX/>Y+0133(3S>~37>///+013#jS_3c(>A g /и/  EX/>YEX/>YAEqA]0133!33Q3>~3~7>Q [ /и/  //+A]ADq0133!33R3>c3c7&45/6/'/6Ak]5 AE ]A ]A'7]AV]A]A]A)qA']AB']'A]-A-]AX-]A3]A4]EX/>YEX/ >YA]A]A]A]AJ]A]A*]A9]AYi]Ax]A(q*2й!Ae!qAT!]A$]A-]01%#"&&&5466632&&#"66766323267&#"8U;1V@&&@V1D|,`5'C2A!*(H,3Z01496'%AU20W@&ED4;2E%'B'/ u +0%bp3/+й++01%7+b!3GH/>й  йй*AE*]4+%AI%]A(%]Ah%]9$/Ag/]A'/]AE/]C01466632#"&&&74&#"32674&&&#"32666%466632#"&&&!" #!   S%33&%23&0A%&B00@%&B1$ $$ %""!!4''44''4%B22B%&C11CbrC//++01%,!jH E/+й + +AbqApq01&&546324&#"326-",,-..--jh 3/+й + +01#"&546324&#"326-,,-..,,7 #/)0/1/0A]A%q1A]A#qA%q A qA qA qAqAqAqAqAqAqAqA#qA qA!qA$qA$qA&qA'qA*qA*qA-q'+!-++ +Ac]A qA qAqAqAqAqASc]AqAqAqA!qA!qA!qA'qA'qA'qA'qA-qA-qA-q0174632#"&74&#"3264632#"&74&#"3267,--,yy,--,yK ,, ,,F ++ -- 3/+й+ +01&&#"3"&&&5466632=2'$.0A6%1A!.K"#%6!)9$'0G-(D0*#?'/7?GOW_gow4<+A!44&464F4V4f4v444444444]A 44&464qAE4U4q48и8/4HиH/<Lи4T01#"5432'#"5432'#"5432'#"5432#"5432#"5432#"5432#"5432#"'632#"5432#"5432#"5432#"5432#"54327#"54327#"5432 $7@?7$  $7?@7$.%6GPRG5%7'e(/)/() EX/>YEX/ >Y#017466632#"&&&%4&&&#"326667$?T01V?$$?T02U?$1B%&C21B%&C10W@&&@W01VA%%AV1&D33D&&D33D:!"/+" и#EX / >YEX/ >YA(] AY]A  ]A]AV]A7]A' ]01%4&&&#"'6632#"&'7326662E%5`,|D1V@&&@V1D|,`5%E2%E2;4DE&@W02UA%EC5:1D7>N// EX/>Y+01#"&5332666531J1cb3)45(3!<-dQ$3 2"&:>%&/+A]&A]'EX / >YEX/ >YA(] A]!A'$]01%4&&&#"'6632#"'#&'7326662E%5`,|D1V@&&@V1*2=,`5%E2%E2;4DE&@W02UA%=5:1D<>%&/'/ +&'  EX/>YEX/ >YA']AW]AV]A]AY]A]!AX#]A($]0173267##"&&&5466632&&#"o1D'4`+ >1*2UA%%AU2C}+`4'D1'D1:5%AU20W@&ED4;2E7>5AC/B/9 +?+AW ]CB +AG3]AF3qEX/>Y%+6+<+A7]0012#"&55666632#"&&&533266654&&&#"66"32654&.AA.-A";R38X>>X84T;!30@'&E11E&-I !#$#MA+-DD- (Q?)*DU*J,RD(*CT*!B4!1E)(D1,"3!$$!7~6BC/D/4@+:.+DC A ]A" ]A0 ]йA]A#3]A] !A#&#]A3#]A+]A+]EX1/1>YEX/ >Y+,=+&1701%#"&&&5466632#4&&&#"326667'&54632'"32654&!:V39W= =W93V:!30A''C22C'!9- Z@--A'G""!!(TD+(DR,*UD**DT*!B5!1D(M)E1)60Q-AA-4 !$$!7>3c4/5// +5(4AG]EX#/#>Y+#01267#"&&&546666654&&&#"#466632P "&$- %7A7%$7@+C.3:W8&RE-%7A7%q % $11*_caYK3G,#6B'SF-YEX/ >YEX%/% >YAg]A]A(%]%&.0176654&'&&&&5466632'6654&&&#"%#*,+!4,$&@V12UA%6+"*1E&C/@#=/E?$+B.$S?*i4)4B*9_C$$C_9Tc"+ U9-K6(7>2>?/@/6<+6<A' ]A[ ]Ai ]Ax ]A^ ]AK ]AF]?(A#(3(]A(]@/EX-/->Y"+9 +A]A= ]A, ]Ag ]-3A3]A>9]A,9]01%#"&5477&&#"32653#"&&&54666322654&#"'A--@Z ]H'C22C'Nc3!:V39W= =W95T<!#"!"2-@@-S.Qb1D(M)E1sc9aG(*CT,*TC))Fb9""""7jK/EX/>YEX/ >Yи013373D7/и/ EX/>YEX/>YEX/ >YEX/ >Yиии0133#333DD7>[wvx/y/'++do+A7]x/0AF1]Ae1]AH6]yK8AH;]/AA'A]ASqA%SqAS]A+T]Aeb]AGe]EXF/F>YEXP/P >Y_t+ji++W+++A;]A<]A'0]Ag0]A0]AV0]P3F=AY@]A@]Ahb]01##"&&&5466632&#"33266676655#&&'573266654&&&#"'666632#"&'3267&&#"3"&&&5466632! )& ))" y! &O'Jrt//B/++A7]IAI]A,I](AP]A6PFPVP]AvP]AeP]AP]WAW]A W](aA^a]A+a]dWnA&s]A:{qEX\/\>YEXR/R >Y=4+p+ ++A?]A>]AXW]AW]A\]\iAi]RxA8{q01#!"&&&5466632&#"3!266676654&&&&&5466632&&#"#"&&&5466632#4&&&#"6323267&&'&&#"")& *)" ?  $7?7$1B$-!/1/#$7?7$D".! 0;1VA%%AV11WB&34E&%B24t"/;!  -,# '@ %$' " 5*:.(.<,%A0#."1*(4E2g*2<"%AV10U@&%C^9.L61@$,4%+= 7>&'/(/%&й' %и %$Aj$]EX/>YEX/ >YAYi]!AW$]01#"&&&5466632&&#"3267#Z-1VA%%AV1!C;0,_6&D33D&6_,> %AV10W@&"3"5:3D&&D3967X9Zgvw/x/PA+Af]AS]w xXYܹAUqAE!qA&!qAe!qA!]A)]Ag)q ,A'9]EX/>YEX/>YEX/ >YMF+5$+A]A]A]AXqA!]A$]AR$]AU']A)]A)]Ac)qAm/qAL5]5^AG`]ekAUq]$tAt]01%#"&&&54666326632#4&#"#"&'&'6676632%4&&&&&5466632&&#"#&&#"3267&&#"326 %8K01V@&&@V1QB<4G3),!Q9(B2 >+3)$6@6$2@&9? .15L$6@6$3* $1-*2W[/'1 -6+%AU20W@&0;Q?0)!& 'BJ%'H#* *:-).<,%A0:I6#0*(3G1z  (!*,* *7>#u7>*Z+/,/( +,#AL#\#l#]+++01267#"&&&5466654&&&#"#466632 % 2   $ q-81&    #./.7>@LٸM/ A ]1A1]#йJDй@йA1]Av]A6]NEX/>YEX@/@>YEX/ >Y@и,&йGAйAI]6Af9]01%#"&&&5466632&&'#"&&&54632&&#"3267267&&#" #3T>"$?T0.J3&(?!%60 A:'C10B&,@#!.#Qj%AV10VA&1D'?. !-7 33D$(D2 (7<!s>j EF/йй+8йFDEGEXD/D>Y3+=++(.DE01267&&#"'#"&&&5466632&&'#"&54632&&#"3266673# '2%'B02A '   //(& 0/4&&33 ' 62C&%C2&32$##+ ''4 4&  )<73GH/4*йй AF ]A ]AT ] й>A>]IEX9/9>YEXC/C >Y9%иC/и017466632#"&&&74&#"32674&&&#"32666%466632#"&&&$,,#.,$))))l1B%&C21B%&C1b$?T01V?$$?T01U?%/  /-$ 0,,!++!&D33D&&D33D&0W@&&@W01VA%%AV6>3GH/I/H4*иI>Ao>q  й%9+++C/+Ac]A]Ar]A]A]Al]A{]A]01466632#"&&&74&#"32674&&&#"32666%466632#"&&&!" #!   S%33&%23&0A%&B00@%&B1$ $$ %""!!4''44''4%B22B%&C11C7> OP/Q/+QIAI]Jй(P1A1]A5'5]8IBAE(E]EX4/4>YEXF/F>YEX,/, >Y "++,и45=A7=]AF=]AU=]FE017327&&#""&&&5466632&#"3326665#"&&&54676632654&'7#J+Z6(N !&(& *)" $3!!d51VA%8*#*(Y(*Y'*"+61C%i!$F'%$' "(/T-.$C^:Re"+ U9+.' ').9U +"eR)C2)>~'K(/+( и"и)#++0134&&'#"&&&5466673265533#= 6'1*,!0:q (!_k k2( 1(%0 } l)>t!D"/+" !#+ +AG ]01&#"32675#"&&&54666353*$#)K% %L0:6&%583 "2,(2 i>3//++01339>c37>-;YEX / >Y+:++ A* ]" 101533#"&&&5466632#4&&&#"632323267&&'&&#"S3C;291V@&&@V12W@'34E&%B2 3tbC  .,$>30#cE%AU20UA%$C_9t-M60@$ - (Q/ܹEX/>YEX/ >Y013#53}3D7>&'/(/'A]"й!EX/>YEX / >YA]AW]012#"&'#73266654&&&#"'66661V@&&@V1-Z#3,_6&D33D&6_, )8G&@W01VA% ;693D&&D3:52%(W/йий EX/>YEX/>YEX/ >YEX/ >Y013#533}3w3_<rD%8 o>8@7z7=7p4HuK7 7:](7(7-s7(.*3'*(({@7{ {4 XH^4HHH4wHH4PHHHH4+H41HM4"HF a sR %(`^7`^@+ =---&  -=:====-=-B=-8=   -F3727]x(x(((8@4|677{77@77I7777877@777@7777a777t877778787G787,787+787x787A7A7737777(97777@77777FH77I77I7777I7771t?L7L7L7FFFFFFFFFFFF77?77 g@77F777z7(L(G777778787@7@7Fo7))777(7'(67@77777jj777@7@:7@:@<@7@7@7I7@776787787787 77s?76H77)7)7L7(87(FFFFQEdg 0 #  > q V .`|6q(^,'7iHz8K^|J ) !"n"#*###$%s&a'R(L())**+"+g++,H,_,--N-.R...//J223567278X89:;J<0<=>?4?@ABCpD3DEGH;IJ JKNLMNOPQRSTV8WhYZ\\]^_`W`abcd:e5fhi"ijklm!mn|oLopqqrvrstuv%vw+wxyCyz{,{|i|}~PpĂA`Dd 1%Pj؏؏g6!!0su-̙)ŝӟB!-wިNx(_ެ77777 ]>-->Ec t  % Z "Q s < "  0 % ' - JE 4 "Copyright (c) SIL, 2003. All rights reserved.Padauk GrcRegTestRegularSIL:Padauk GrcRegTest:20-6-106Padauk GrcRegTestVersion 2.0PadaukGrcRegTest-Regular SILDebbi HoskenReleased under the Open Font License.http://scripts.sil.org/OFLPadauk GrcRegTestCopyright (c) SIL, 2003. All rights reserved.Padauk GrcRegTestRegularSIL:Padauk GrcRegTest:20-6-106Padauk GrcRegTestVersion 2.0PadaukGrcRegTest-Regular SILDebbi HoskenReleased under the Open Font License.http://scripts.sil.org/OFLPadauk GrcRegTest2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ circledashu1000 u1000.medu1000_u1001_u103Bu1000_u103B_u1015_u103Au1001 u1001.medu1002 u1002.medu1003 u1003.medu1004 u1004.medu1004.med_u102Du1004.med_u102Eu1004.med_u1036u1005 u1005.medu1006 u1006.medu1007 u1007.medu1008 u1008.medu1009 u1009_u102Cu100A u100A.altu100B u100B.alt u100B.med u100B_u100B u100B_u100Cu100C u100C.medu100D u100D.med u100D_u100D u100D_u100Eu100Eu100F u100F.med u100F_u100B u100F_u100Du1010 u1010.medu1010_u103D.medu1011 u1011.medu1012 u1012.medu1013 u1013.medu1014 u1014.alt u1014.medu1014_u1010_u103Bu1014_u1010_u103Cu1015 u1015.medu1016 u1016.medu1017 u1017.medu1018 u1018.medu1019 u1019.medu101Au103B u103B_u103Du103B_u103D_u103E u103B_u103Eu101B u101B.alt u101B.longu103Cu103C.alt.narru103C.alt.wide u103C.wideu103C_u103D.narru103C_u103D.wideu103C_u103D.alt.narru103C_u103D.alt.wideu103C_u102F.narru103C_u102F.wideu103C_u102F.alt.narru103C_u102F.alt.wideu101C u101C.medu101Du103D u103D_u103Eu103D_u103E.smallu101E u101E.medu101E_u1010_u103Cu103Fu101Fu103E u103E.alt u103E_u102F u103E_u1030u1020u1021 u1021.medu1023u1024u1025u1026u1027u1028u1029u102Au102Cu102B u102B_u103Au102D u102D_u1036u102Eu102F u102F.medu1030 u1030.medu1031u1032u1033u1034u1036u1037u1038u103Au1039u1040u1041u1042u1043u1044u1045u1046u1047u1048u1049u104Au104Bu104Cu104Du104Eu104Fu105A u105A.medu105B u105B.medu105C u105C.medu105Du105Eu105Fu1060u1061u1062u1063u1064u200Bu200Cu200Du2060+++o[G3+w\B+gTB/+ 6,"+ @5)+ bP>-+ & +o[G3+w\B+I<.!+cQ?-+& + + E}iDtgrcompiler-5.2.1/test/GrcRegressionTest/fonts/PadaukMain.gdl000066400000000000000000001044001411153030700241020ustar00rootroot00000000000000/* Title: Myanmar.GDL Author: M. Hosken, K.R. Stribley Description: Unicode Myanmar Graphite description License: Open Font License 1.0 0.01 MJPH 22-JUN-2001 Original 0.90 MJPH 10-JUN-2003 Add documentation, first candidate release 0.92 MJPH 4-AUG-2003 Improve line breaking algorithm 1.00 MJPH 7-AUG-2003 Release - no changes 1.01 MJPH 16-SEP-2003 Latest ZWJ and ZWNJ usages, Start to finesse: centre clusters in wraps, narrow cons with wide diacritics take a wide wrap. 1.02 MJPH 8-OCT-2003 Add u1004.med_u102F 1.03 MJPH 28-OCT-2003 Add support for contractions (reduplication) killer order 1.04 KRS 31-MAY-2004 Fixed some ligature issues with kinzi 1.05 KRS 09-JUN-2004 Added breakweights for section markers Fixed tall yecha for 1012 + wasway Swapped order of U+100E/U+100D stacked ligature 1.06 KRS 14-JUL-2004 Made yecha tall with U+1001 etc and Kinzi Moved lower dot to right of U+101B when hatto is present U+102D is now always above the consonant in a wrap even if there is a u/uu vowel present U+101B is short when there is a Yapin present 1.07 KRS 31-AUG-2004 Yecha is tall when U+1012 has a stacked consonant 1.08 KRS 04-SEP-2004 Numbers can now take upper diacritics for abbreviations U+1004 U+1039 is now always Kinzi as per myanmar_uni.pdf U+1004 U+200D U+1039 U+101d etc is used to prevent kinzi 1.09 KRS 06-DEC-2004 Yecha is tall when U+1002 has a stacked consonant NLP propose using U+200D differently to UTN 11 Comment out the g101a, g101b, g101d, g101f, line in the tKinzi class to give this behaviour 1.10 MJPH 13-MAY-2005 no break between sign and section, tidy up font, remove hack rules, add docs for APs add necessary associations to insertion rules 1.11 MJPH 2-AUG-2005 Fix kern on killed tall 102C preceding 1031 glyph 1.12 MJPH 27-OCT-2005 Apply KRS changes to handle 'I', section breaks. Use new breakweights. Change syllable break from 20 to 15 2.00 MJPH 15-APR-2006 Unicode 5.1 - remove tall-a logic, change to disunified medials, etc. 2.01 MJPH 24-APR-2006 Attach y-medials 2.02 MJPH 16-MAY-2006 udia over y-medial loses advance to stop -u from spacing 2.03 MJPH 14-JUN-2006 U+101E U+1039 U+101E was ligating as U+103F, now it stacks 2.04 MJPH 16-JUN-2006 no U103C_102F if following a stack, U+100A U+102D U+102F handled 2.05 MJPH 10-JUL-2006 Add left ldot class for Sgaw, 1018 added to cConsWide */ #include "PadaukGlyphs.gdh" /* @doc

Myanmar GDL Code

This file contains the font independent GDL for rendering Myanmar from Unicode. It is designed to be used in conjunction with and included by the font specific GDL code that is created automatically from the .ttf font and .xml attachment point database. This font specific code creates glyph definitions for each glyph, including all the attachment points, order attribute and possibly some kerning values. The order and kerning values are entered as part of the font design itself and propagate through the AP database to the GDL code. In addition the font specific GDL code contains various automatically generated classes dependent populated by glyphs dependent upon which attachment points they have. For more details on this process see the documentation for make_gdl.pl

Definitions

Since the GDL is passed through a C preprocessor, we can define various shortcuts to make life easier in the rest of the description. The first set of definitions provide a standard way of specifying optional slot sequences. Usually the sequence consists of only one element (usually a glyph class). But it can be a sequence if necessary. We build up to allow for 0 to 4 occurrences of the sequence. @enddoc */ #define opt(x) [x]? #define opt2(x) [opt(x) x]? #define opt3(x) [opt2(x) x]? #define opt4(x) [opt3(x) x]? #ifdef NO_MON #define x1(a) #define x2(a, b) #define x3(a, b, c) #define x4(a, b, c, d) #define x5(a, b, c, d, e) #define x6(a, b, c, d, e, f) #define x7(a, b, c, d, e, f, g) #else #define x1(a) a #define x2(a, b) a, b #define x3(a, b, c) a, b, c #define x4(a, b, c, d) a, b, c, d #define x5(a, b, c, d, e) a, b, c, d, e #define x6(a, b, c, d, e, f) a, b, c, d, e, f #define x7(a, b, c, d, e, f, g) a, b, c, d, e, f, g #endif /* @doc GDL allows for 16 user slot attributes that we can use for just about anything. Here we give the ones we intend to use sensible names for use later on. Notice that these differ from the user glyph attributes which do not have to have a special name. @enddoc */ #define attached user1 #define hasadv user2 /* @doc We assign names to the various types of breakweight. @enddoc */ #define BW_WORD 10 #define BW_SYLL 15 #define BW_CHAR 30 #define BW_CLIP 40 #define BW_NEVER 50 /* @doc For clarity we also give each of the substitution passes a name. This was originally done because I didn't know if I was going to have to insert a pass into the sequence and wanted to be able to re-allocate pass numbers quickly and easily @enddoc */ #define pass_medial 1 #define pass_insert 2 #define pass_front 3 #define pass_tidy 4 /* @doc There are a few glyph names that I prefer to rename. I do that here just by defining my name to be the correct name @enddoc */ #define g25cc g_circledash #define gKill g1039 #define g200C g200c #define zwsp g200b #define wj g2060 #define gSpace g_space /* @doc ANY is a special name in GDL and includes no glyph. I want to define ANY to require a glyph so I redifine the name (well mask it via #define) and then create a class later of all glyphs. @enddoc */ #define ANY ANYGlyph /* @doc Setup various global constants in GDL. This is left to right only script. Also let's have a little extra space above, just to prove it can be done! @enddoc */ Bidi = 0; //ExtraAscent = 100m; //ExtraDescent = 500m; AutoPseudo = 1; /* @doc

Glyph Table

Most of the glyph table is defined in the font specific file which is autogenerated from the font and attachment point database. Here we list all the behaviour specific classes that we hand craft as part of this description. @enddoc */ table(glyph); /* @doc MAXGLYPH comes from the font specific file and tells us how many glyphs there are in the font. We use this to make a class of all glyphs. And while we are about it, set all glyphs to have a default line-breaking behaviour of not wanting a break before the glyph. Our line-breaking model is based on what happens before a glyph rather than after it. @enddoc */ ANY = (glyphid(0 .. MAXGLYPH)){breakweight = -BW_CHAR}; // what about pseudo glyphs? /* @doc Set various default line-breaking weights for particular glyphs. We like breaking after whitespace and we never break before a killer (U+1039) @enddoc */ zwsp {breakweight = BW_WORD}; // assume zero width gSpace {breakweight = BW_WORD}; cSection = (g104a, g104b) {breakweight = BW_WORD}; gKill {breakweight = -BW_NEVER}; //g200d {breakweight = -5}; wj {breakweight = -BW_CHAR}; // encourage breaking after signs cSigns = (g104c, g104d, g104e, g104f) {breakweight = BW_WORD}; cNum = (g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1048, g1049) {breakweight = -BW_CHAR}; // discourage breaking inside quotes cLQuote = (g_parenleft, g_quotedblleft, g_quoteleft) {breakweight = -BW_SYLL}; cRQuote = (g_parenright, g_quotedblright, g_quoteright) {breakweight = BW_WORD}; /* @doc List all consonants. We include U+1021 as a consonant since it behaves like one for all intents and purposes. We allow line-breaking before a consonant since the default is that it starts a new syllable. We have rules for the cases when it does not. We also list consonants by shape: narrow or wide (for the wrap) 25cc added to allow display teaching documents as narrow consonant @enddoc */ cCons = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g1009, g100a, g100b, g100c, g100d, g100e, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101c, g101d, g101e, g101f, g1020, g1021, g1025, g1027, g25cc, g103f x7(, g1028, g105a, g105b, g105c, g105d, g1061)){breakweight = -BW_SYLL}; cConsNar = (g1001, g1002, g1004, g1005, g1007, g100b, g100c, g100d, g100e, g1012, g1013, g1014, g1015, g1016, g1017, g1019, g101b, g101d, g25cc, g1014_alt, g1027 x7(, g1028, g105a, g105b, g105c, g105d, g1061)); cConsWide = (g1000, g1003, g1006, g1008, g1009, g100a, g100f, g1010, g1011, g1018, g101a, g101c, g101e, g101f, g1020, g1021, g103f); /* @doc This class lists all the consonants that take the short form of -u and -uu (U+102F, U+1030) @enddoc */ cConsSVowel = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g100e, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101c, g101d, g101e, g101f, g1021, g1027, g25cc, g100a_alt, g101b_alt, g1014_alt, g103f x2(, g105c)); /* @doc Lists all the consonants that require a medial h to slant @enddoc */ cConsSlantH = (g1009, g100a x4(, g105a, g105b, g105d)); /* @doc Here we list all the medial forms of glyphs that don't have special behaviour when medialised. We list the medial forms, those that are single width and the base forms that lead to the medial forms we have listed. This is the list of all stacked consonants as opposed to true medials. Yes, the naming could do with some revision! 25cc added as base to allow display of stacked glyphs in teaching documents @enddoc */ cMed = (g1000_med, g1001_med, g1002_med, g1003_med, g1005_med, g1006_med, g1007_med, g1008_med, g100c_med, g100d_med, g100f_med, g1010_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g101c_med, g101e_med, g1021_med x4(, g105a_med, g105b_med, g105c_med)); cMedNar = (g1001_med, g1002_med, g1005_med, g1007_med, g100c_med, g100d_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1019_med x3(, g105a_med, g105c_med)); cMedBase = (g1000, g1001, g1002, g1003, g1005, g1006, g1007, g1008, g100c, g100d, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101c, g101e, g1021 x4(, g105a, g105b, g105c)); /* @doc A list of all the forms that U+101B can take when not medialised @enddoc */ c101b = (g101b, g101b_alt, g101b_long); /* @doc Cluster characters are what I call those characters that are included as part of a syllable when medialised. I.e. are true medials. Whereas the other characters indicate syllable chaining when medialised. @enddoc */ cClusMed = (g103b, g103c, g103d, g103e x4(, g105e, g105f, g1060)); cClusDia = (g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103d, g103d_103e, g103e, g103e_102f, g103e_1030 x4(, g105e, g105f, g1060)); /* @doc y-medials are diacritics, but they don't have attachment points to attach to the base character with. So we need to write a special rule to attach them so that inter character spacing and cursors cannot occur between the base and the diacritic. @enddoc */ cYMed = (g103b, g103b_103d, g103b_103d_103e, g103b_103e); /* @doc The lower vowels must occur in a particular place in the order. (See the section on ensuring correct ordering). They may be rendered as full height, or short form (overloading medial again!). Then there is the combined medial form with -h. Finally we create a class that includes all of them in whatever form. @enddoc */ cLVowel = (g102f, g1030); cLVowelM = (g102f_med, g1030_med); cLVowelh = (g103e_102f, g103e_1030); cLVowelAll = (cLVowel, cLVowelh, cLVowelM); /* @doc We must never break a line before an upper vowel. Upper vowels are made more complicated by the existence of kinzi ligatures. We include upper dot as an upper vowel. This breaks the strict interpretation of the character ordering in a cluster, but we get away with it since we are being looser than the standard and this would be the rendering behaviour we would want if the sequence: cons U+1036 U+102C were to occur. @enddoc */ cUVowel = (g103a, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g102d, g102e, g1032 x3(, g1033, g1034)){breakweight = -BW_NEVER}; cUSpace = (g103a, g102d, g102e, g1004_med_102e, g1004_med_102d, g1004_med, g1004_med_1036 x2(, g1033)); cUVowelNga = (g102e, g102d, g1036); cNgaUVowel = (g1004_med_102e, g1004_med_102d, g1004_med_1036); cUTakesMa = (g102d, g1004_med); cUWithMa = (g102d_1036, g1004_med_1036); c1036 = (g1036, g1004_med_1036, g102d_1036); /* @doc Create a general below diacritic class consisting of single and double width below diacritics. @enddoc */ cBDia = (cBSDia, cBDDia); /* @doc Create classes for base characters that change shape when they have a below diacritic @enddoc */ cLDiaMod = (g100a, g1014, g101b); cLDiaModed = (g100a_alt, g1014_alt, g101b_alt); /* @doc For each medialised cluster glyph we list all the forms it may take, including when it ligates with another medial. @enddoc */ c103b = (g103b, g103b_103e, g103b_103d); c103d = (g103d, g103d_103e, g103b_103d); c103e = (g103e, g103e_102f, g103e_1030, g103d_103e, g103b_103e); /* @doc U+1039 U+101B (wrap) takes numerous forms depending on context. We list various sets of these forms here. First we separate the non-ligating forms and the ligating forms. Then we list by width: narrow and wide. And then we also list be normal and alternate forms. Alternate forms are those with a gap at the top for a spacing upper vowel. The last set is of the various forms of the medialised U+101F in its non-ligating form. @enddoc */ c103c_only = (g103c, g103c_wide, g103c_alt_narr, g103c_alt_wide); c103c_mix = (g103c_103d_narr, g103c_103d_wide, g103c_102f_narr, g103c_102f_wide, g103c_103d_alt_narr, g103c_102f_alt_narr, g103c_103d_alt_wide, g103c_102f_alt_wide); c103c = (c103c_only, c103c_mix); c103c_nar = (g103c, g103c_103d_narr, g103c_102f_narr); c103c_naralt = (g103c_alt_narr, g103c_103d_alt_narr, g103c_102f_alt_narr); c103c_wide = (g103c_wide, g103c_103d_wide, g103c_102f_wide); c103c_widalt = (g103c_alt_wide, g103c_103d_alt_wide, g103c_102f_alt_wide); c103e_dia = (g103e, g103e_alt); /* @doc Then we list yet more combinations of the wrap as needed by various rules. And we also create a list of everything that can go underneath something, calling it a lower diacritic. We also list all the forms of the tall form of U+102C. @enddoc */ c103c_compl = (g103c_102f_narr, g103c_102f_wide); c103c_compr = (g103c_103d_narr, g103c_103d_wide); c103c_medn = (g103c, g103c_wide, g103c_alt_narr, g103c_alt_wide); c103c_in = (g103e_alt, g103d, g103d_103e, cMed); cLowDia = (g103d, g103d_103e, g103e, g103e_102f, g103e_1030, cMed, cLVowelAll); c102b = (g102b, g102b_103a); /* @doc We separate out the rules for each base character that changes shape when it has other diacritics to interact with it (usually underneath). These classes list the various diacritics that cause the particular base character to change shape. @enddoc */ t1014 = (cMed, c103d, c103e, cLVowelAll, c103b); t100a = (t1014); /* @doc A list of glyphs that move the ldot to the left, particular for Sgaw @enddoc */ cLeftLDot = (g103b, g1061); /* @doc Finally we have a list of glyphs that require special kerning when interacting with U+101B as a base character @enddoc */ cHasRkern = (g103e_102f, g103e_1030, g1030_med, g102f_med); endtable; // glyph table /* @doc

Linebreaking

The basic linebreaking algorithm states that a linebreak may occur if the glyph before has a breakweight of 0 or a +ve breakweight <= to the breakweight we are testing for, or if the following glyph has a breakweight of 0 or a -ve breakweight with absolute value <= to the breakweight we are testing for. Put in negative terms, to stop a linebreak happening, both the previous glyph must either have a -ve breakweight or a breakweight > the test breakweight, and the following glyph must either have a +ve breakweight or a breakweight with absolute value > the test breakweight. Either way it's mind boggling! For all this, we can actually do syllable based line-breaking in Myanmar very simply. The main rule is: If a consonant has a killer (but not just a medial), then it is part of the previous syllable and you can't line-break before it (unless you are desparate). There is another rule in this table that ensure that the default linebreak that can occur before a consonant is disabled when that consonant is medialised (i.e. follows a U+1039). @enddoc */ table(linebreak) // encourage breaks between section and consonant cSection {breakweight = BW_WORD} / _ ^ cCons; gSpace {breakweight = BW_WORD} / _ ^ cCons; // no line breaks before visibly killed char cTakesUDia {breakweight = -BW_CHAR} g103a {breakweight = -BW_NEVER} / _ ^ [gKill cMed]? opt4(cnTakesUDia) _ ; // g1004 {breakweight = -5} gKill {breakweight = -5} / g200d _ ^; // no line breaks before a syllable chained consonant cCons {breakweight = -BW_CHAR} cMedBase {breakweight = -BW_NEVER} / _ gKill _ ; cCons {breakweight = -BW_CHAR} cClusMed {breakweight = -BW_NEVER}; // no line breaks before virama cCons {breakweight = -BW_NEVER} / gKill _ ; // no line break before WJ cCons {breakweight = -BW_CHAR} / wj _ ; // discourage breaks after aa before another cons cCons {breakweight = -BW_CHAR} / g1021 _; // discourage breaks around quotes ANY {breakweight = +BW_CLIP} / cLQuote ^ _; ANY {breakweight = -BW_CLIP} / _ ^ cRQuote; // discourage breaks within numbers cSection {breakweight = +BW_CHAR} / _ cNum; // encourage breaks between consonants and numbers cNum {breakweight = -BW_SYLL} / cCons _; cSigns {breakweight = -BW_SYLL} / cSection _; // discourage break between sign and a section cSigns {breakweight = +BW_CLIP} / _ cSection; endtable; // linebreak table /* @doc

Substitution

The substitution table is where most of the work is done. We break the process into 3 passes. The purpose of the first pass is to get everything down to single glyphs wherever possible. This means we are trying to remove any gKills from the slot stream. We also try to do as much as we can here, in terms of dealing with kinzi and simple ligatures. We don't do any re-ordering (apart from kinzi which is so wierd that it's best if we get it out of the way as soon as we can). By the end of this pass, there should be no gKills left in the slot stream, likewise g200C. Notice the explicit declaration of underlying to surface associations. @enddoc */ table(substitution); pass(pass_medial); // Note: if 200D is present this rule will not match in accordance with UTN 11 g1004 g103a gKill _ > _ _ _ g1004_med:(1 2 3) / _ _ _ ^ (cCons, cNum, g104e) [gKill cMedBase]? opt4(cClusMed) g1031? _; // need opt4() here for opt() g1004 g103a gKill cUVowelNga > _ _ _ cNgaUVowel:(1 2 3 4) / _ _ _ ^ (cCons, cNum, g104e) [gKill cMedBase]? opt4(cClusMed) g1031? _; gKill cMedBase > _ cMed; // lots of ligatures, as many as we can do adjacently gKill g1010 g103d > g1010_103d_med:(1 2 3) _ _; g100b gKill g100b > g100b_100b:(1 2 3) _ _; g100b gKill g100c > g100b_100c:(1 2 3) _ _; g100d gKill g100d > g100d_100d:(1 2 3) _ _; g100e gKill g100d > g100d_100e:(1 2 3) _ _; // name wrong way around g100f gKill g100b > g100f_100b:(1 2 3) _ _; g100f gKill g100d > g100f_100d:(1 2 3) _ _; g1014 gKill g1010 g103c > g1014_1010_103c:(1 2 3 4) _ _ _; g1014 gKill g1010 g103c > g1014_1010_103c:(1 2 3 4) _ _ _; g101e gKill g1010 g103c > g101e_1010_103c:(1 2 3 4) _ _ _; g103b g103d g103e > g103b_103d_103e:(1 2 3) _ _; g103b g103e > g103b_103e:(1 2) _; g103c g103d g103e > @1 g103d_103e _; g103c g103d > g103c_103d_narr:(1 2) _; g103d g103e > g103d_103e_small:(2 3) _ / g103c _ _ ; g103d g103e > g103d_103e:(1 2) _; g103b g103d > g103b_103d:(1 2) _; gKill cMedBase g103c g102f > _ cMed @r @u / _ _ _=r g1031? cUVowel? _=u; g103c g103e g102f > @r @h @u / _=r _=h g1031? cUVowel? _=u; g103c g103e g1030 > @r @h @u / _=r _=h g1031? cUVowel? _=u; g103c g102f > g103c_102f_narr:(1 4) _ / _ g1031? cUVowel? _; g103e g102f > g103e_102f:(1 4) _ / _ g1031? cUVowel? _; g103e g1030 > g103e_1030:(1 3) _ / _ g1031? _; // there should be no gKill left now // gKill > _; // The compiler has been changed to require at least two slots in order to do a deletion, // so I'm just getting rid of these rules. /*** g200C > _; g200d > _; wj > _; ***/ endpass; /* @doc

Ensuring Correct Ordering

The following pass contains a standard idiom, that can be used for any script where glyph ordering is considered important. Each glyph contains a glyph attribute called order. The order value of a glyph specifies its required order in relation to those around it. The purpose of this pass is to highlight where glyphs are ordered incorrectly in the slot stream (and so, in the underlying text) by inserting a dotted circle before the offending diacritic. A glyph with order == 0 is considered not to be playing. I.e. it isn't a base character and it isn't a diacritic. Such glyphs may not take diacritics and if a diacritic occurs following one of these glyphs, a dotted circle is inserted. A glyph with order == 1 is considered to be a base character and may take diacritics. Any glyph with order > 1 is considered to be a diacritic and must not occur following a glyph with an order greater than the order of the glyph we are interested in. For example we can't have glyphs in the order 1, 7, 5. but 1, 5, 7 is OK. All this in two rules! Mind you the two rules do check every glyph. @enddoc */ #if (1) pass(pass_insert); /* @doc A special rule to handle contractions (reduplications). It allows a killer directly after a consonant and for any diacritic to follow that killer. Notice that the rule needs to be length 3, longer than the other rules to take priority. @enddoc */ ANY > @3 / cCons g103a ^ _{order > 1}; // these rules have sort length 3 which is awkward for any ligature processing _ > g25cc:1 / ANY _ ^ ANY{order > 1 && order <= @1.order}; _ > g25cc:1 / ANY{order == 0} _ ^ ANY{order > 1}; endpass; #endif /* @doc

Main Pass

Now we have single glyphs all in the right order (at least in storage terms, excepting kinzi). We now need to re-order everything and get the right contextual form and generally sort everything out. Notice that we don't advance the cursor beyond a base char, we leave that to the fallback rule. This ensures that we have the maximum opportunity to re-order things before the base character. @enddoc */ pass(pass_front); /* @doc U+1014 takes the short tail form when wrapped @enddoc */ g1014 > g1014_alt / (c103c_nar, c103c_naralt) _ ; /* @doc Moves the -e vowel to the front. Leave cursor where it was (the rule will not rematch, because we have removed the -e). @enddoc */ _ g1031 > @e:e _ / _ ^ c103c? cCons cMed? opt4(cClusDia) _=e; /* @doc Here we get the right wrap into the right place. We start with a narrow form. Usually the glyph is g103c, but ligatures can occur in the first pass to create the other forms in that class. Each rule, therefore, maps from c101b_nar. The different rules match according to which corresponding class the wrap glyphs should be mapped to. We also move the wrap to the front (after -e if it is there) and rematch the consonant. @enddoc */ // suboptimal matches all around here _ c103c_nar > c103c_wide:r$r _ / ^ _ cConsWide cMed? c103b? _=r; _ c103c_nar > c103c_naralt:r$r _ / ^ _ cConsNar cMedNar? _=r c103d? c103e? cUSpace; _ c103c_nar > c103c_widalt:r$r _ / ^ _ cConsWide cMed? _=r c103d? c103e? cUSpace; _ c103c_nar > c103c_naralt:r$r _ / ^ _ cConsNar g103a cMedNar? _=r; _ c103c_nar > c103c_widalt:r$r _ / ^ _ cConsWide g103a cMed? _=r; _ c103c_nar > @r:r _ / ^ _ cConsNar cMedNar? c103b? _=r; _ c103c_nar > c103c_wide:r$r _ / ^ _ cConsNar cMed? c103b? _=r; /* @doc Rules to handle U+101B in its base form (not as a wrap). Whether we need a short leg form or a full length leg with no foot. @enddoc */ g101b > g101b_alt / ^ _ c103e? cUVowel? cLVowelAll; g101b > g101b_alt / ^ _ c103d; g101b > g101b_alt / ^ _ c103b; g101b > g101b_long / ^ _ g103e; g101b > g101b_long / ^ _ cMed cUVowel? cLVowel; /* @doc Map full height lower vowels into short form, if appropriate. Also handle special glyphs when inside a wrap. @enddoc */ // krs the next rule is to prevent medial being substitued with wrap // (wrap is by now in front of consonant) g1030 > @u / c103c_only cConsSVowel cUVowel? _=u ^; cLVowel > cLVowelM / ^ cConsSVowel cUVowel? _; g1014 cLVowel > g1014_alt:(1) cLVowelM:(3) / ^ _ cUVowel? _; g100a cLVowel > g100a_alt:(1) cLVowelM:(3) / ^ _ cUVowel? _; g103d_103e > g103d_103e_small / c103c cCons _; cUTakesMa g1036 > cUWithMa:(1 3) _ / _ cLVowel? _; /* @doc Glyphs that take an alternate form with certain diacritics. @enddoc */ g1014 > g1014_alt / ^ _ t1014; g100a > g100a_alt / ^ _ t100a; g1009 > g1025 / ^ _ g103a; // is this the rule? g1009 > g1025 / ^ _ c103e? g1031? cUVowel? cCons; /* @doc When does the -h slant? Inside a wrap and after a consonant that forces it to slant. @enddoc */ g103e > g103e_alt / ^ c103c cConsSVowel _; g103e > g103e_alt / cConsSlantH _; /* @doc Tall -a vowel ligature @enddoc */ g102b g103a > g102b_103a:(1 2) _; endpass; endtable; // substitution table /* @doc

Positioning

The positioning process is done in two passes. The first passes attaches diacritics to their base character. This is complicated by the lower dot (U+1037) which is attached contextually. Each rule in the first pass follows a standard idiom: base dia {attach {to = @1; at = APS; with = APM}; attached = 1} / ^ _ opt3(nBase) _{attached == 0}; base is the class of things that dia can attach to. The aim of the rule is to match a dia with the most immediate glyph it can attach to. Thus base should include everything that dia can attach to. In some cases the base class includes the contents of the dia class, when diacritics can stack. When the rule matches, we attach the dia to the base using the attachment point APS on the base and the APM attachment point on the dia. Notice it is the dia that moves to attach to the base and not the other way around. Because we need to match the same base multiple times for the multiple dias that can attach to it, we need to keep the cursor in front of the base until everything is attached and we can move on. So that we do not keep rematching and reattaching the same dia we mark each glyph we attach as being attached, using the attached slot attribute (which resolves to user1). Thus we only want to match dias with attached of zero. Thus the environment is the base followed by everything that cannot be a base or dia followed by a dia with attached == 0. By using the attached slot attribute, we can have multiple types of diacritics that attach to a base character at and with different attachment points. Thus multiple of the above rules can be used together and interact correctly. The rendering approach here is not necessarily the best that can be used, but it does show that different approaches to solving the same problem can be used very easily with Graphite. The attachment points have the following names:
BSS
attach single width lower diacritic to here
BDS
attach double width lower diacritic to here
BDM
attach lower double width diacritic using this AP
BSM
attach lower single width diacritic using this AP
LS
attach lower dot to here
LLS
attach left moving lower dot to here
LM
use this AP when attaching lower dot
RM
use when attaching base to wrap
RL
attach base to wrap here
US
attach upper diacritic to here
UM
use this AP when attaching upper diacritic
@enddoc */ table(positioning); pass(1); /* @doc The normal advance width for a wrap is just beyond the left hand stem. Since we actually attach the base character to the wrap, we need to change the advance of the wrap to be the full width of the wrap. We do this here. @enddoc */ c103c {advance.x = advx; hasadv = 1} / ^ _{hasadv == 0}; /* @doc First we address the lower dot (U+1037) and decide which glyph is its base character. In different contexts it takes a different base character. We describe them all in the environments. The final fallback is to treat g1037 as a simple cBSDia in a later rule, so we only need the specials here. @enddoc */ // This lot is a bit messy. We could probably simplify this, but at least it works! cConsSVowel g1037 {attach {to = @2; at = LS; with = LM}; attached = 1} \ / ^ c103c_only? _ cUDia? _{attached == 0}; c103c g1037 {attach {to = @1; at = LS; with = LM}; attached = 1} \ / ^ _ cConsSVowel cMed c103e_dia? cUDia? _{attached == 0}; c103c g1037 {attach {to = @1; at = LS; with = LM}; attached = 1} \ / ^ _ cConsSVowel cMed? c103e_dia cUDia? _{attached == 0}; c103c_mix g1037 {attach {to = @1; at = LS; with = LM}; attached = 1} \ / ^ _ cConsSVowel cUDia? _{attached == 0}; c101b g1037 {attach {to = @1; at = LS; with = LM}; attached = 1} \ / ^ _ (cMed, cClusDia) cUVowel? cLVowelM? c1036? _{attached == 0}; c101b g1037 {attach {to = @1; at = LS; with = LM}; attached = 1} \ / ^ _ cUVowel? cLVowelM c1036? _{attached == 0}; c101b g1037 {attach {to = @1; at = LLS; with = LM}; attached = 1} \ / ^ _ cUDia? _{attached == 0}; cLeftLDot g1037 {attach {to = @1; at = LLS; with = LM}; attached = 1} \ / ^ _ _ {attached == 0}; // rearrange 102d when there is a full height u/uu so that it goes on top of consonant //cCons cUDia {attach {to = @a; at = US; with = UM}; attached = 1} \ // / ^ _=a c103e_dia? cLVowel _{attached == 0}; // take precedence over default udia attachment rule cTakesUDia cUDia {attach {to = @u; at = US; with = UM}; attached = 1} cLVowel \ / ^ _ opt2(cnTakesUDia) _{attached == 0} _=u; /* @doc Now we do the standard attachment rules. Notice that we first try to attach a wide lower diacritic to its corresponding AP on the base character. Failing that we fall back to using the same AP as the narrow diacritics. This is controlled by the contents of the cTakes classes which are automatically generated as part of generating the font specific GDL, based on which APs a glyph has. @enddoc */ cTakesBSDia cBSDia {attach {to = @1; at = BSS; with = BSM}; attached = 1} \ / ^ _ opt(cnTakesBSDia) _{attached == 0}; cTakesBDDia cBDDia {attach {to = @1; at = BDS; with = BDM}; attached = 1} \ / ^ _ opt(cnTakesBDDia) _{attached == 0}; cTakesBSDia cBDDia {attach {to = @1; at = BSS; with = BDM}; attached = 1} \ / ^ _ opt(cnTakesBSDia) _{attached == 0}; cTakesUDia cUDia {attach {to = @1; at = US; with = UM}; attached = 1} \ / ^ _ opt2(cnTakesUDia) _{attached == 0}; /* @doc Attaching the base character to the wrap is a radical way of ensuring that the user cannot insert a cursor between the base character and the wrap. @enddoc */ cTakesRDia cRDia {attach {to = @1; at = RS; with = RM}; attached = 1; insert = 1} / ^ _ _=r{attached == 0}; /* @doc More lower dot (U+1037 which is the contents of cLDia) rules. Getting these things right is a major part of the testing. @enddoc */ // c101b_med cLDia {attach {to = @l; at = LS; with = LM}; attached = 1} \ // / ^ cCons cMed? opt2(cLowDia) _=l cUDia? _{attached == 0}; // cTakesLLDia cLDia {attach {to = @1; at = LLS; with = LM}; attached = 1} \ // / ^ _ opt3(cnTakesLLDia) _{attached == 0}; // According to official rules, lower dot should be to right with h medial, so disable this rule //g101f_med cLDia {attach {to = @1; at = LLS; with = LM}; attached = 1} \ // / ^ _ opt3(cnTakesLDia) _{attached == 0}; cTakesLDia cLDia {attach {to = @1; at = LS; with = LM}; attached = 1} \ / ^ _ opt3(cnTakesLDia) _{attached == 0}; /* @doc Attach the non-attached @enddoc */ cCons cYMed {attach.to = @1; attached = 1} / ^ _ cMed? g103a? _{attached == 0}; endpass; /* @doc

Kerning

There is very little kerning to be done. We need to kern a diacritic in relation to U+101B if necessary. We also kern the next glyph following a killed tall -a towards the tall -a if it is not tall enough to hit the killer. We also centre a cluster within its wrap. This is probably done more easily by using a centred attachment point in the wrap and the BDS on the consonant. But we don't have that information in the font. @enddoc */ pass(2); g101b_alt {kern.x = @2.rkern + 10m} cHasRkern {shift.x = -rkern}; // c102c_tall {kern.x = -xkern} / cCons cLowDia? _; c102b {kern.x = xkern / 2} / cUDia _; cConsNar / g102b_103a=a _ cLowDia? cUDia; cCons {kern.x = -@a.xkern} / g102b_103a=a _; g1031 {kern.x = -@a.xkern} / g102b_103a=a _; cRDia {shift.x = (@r.advancewidth + @r.advance.x - advance.x) / 2 + @r.position.x - position.x} / cTakesRDia=r _; cUVowel {advance.x = 0m} / c103b _ ; // KRS try shifting 102D when it accompanies 1036 - it might be better to have a ligature for this // the kern values have been set manually in the font gdl file, so will be lost when it is regenerated //g102d {shift.x = -@1.xkern} g1036 {kern.x = @1.xkern + @2.xkern} / _ _; //g102d g1036 {kern.x = @1.xkern + @2.xkern} / _ _; endpass; endtable; // positioning table grcompiler-5.2.1/test/GrcRegressionTest/fonts/PigLatinBenchmark_v2.ttf000066400000000000000000001631401411153030700260560ustar00rootroot00000000000000 Feat0Glat!8~Gloc{߸OS/2R},VSilfyxSillLcmapwwfcvt fpgm3Oglyfv2headG<'6hhea $hmtxؖ0dlocaNz͔hmaxp nameAUxpost0c1mٔprepʵh2MACR@ "\@ ~Sax & 0 :!"" R`x  0 9!""  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ua%41N`'Immq&FJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ@,vE %E#ah#h`D-?V@ @ Fv/7?#0@ *: % Fv/7?<2/AD4.k %4=AB40tRKW%!/' eSNV:G:"ZRNHVL0 FQ`MRM& 1<Hw@3II@JA;1'&=-"&%('C92/ G5 Fv/7?+# %* 616!,99* X `@( @    Fv/7? >   > 8ReE@@  Fv/7??///<<10IhIha@RX878Y567654#"#"54632ϗ+# 6' t5 !&/9!0C@@Fv/7/ ! >DsI%RF!X@!""@#!  Fv/7?A#V)JBiTN)tG1J04Qw (+)X@"**@+(&" "Fv/7??//......10Ih*Iha@RX87*8Y%#"5463232654'&'567654'&#"'67632}wW%0Qd*;-+E(*O53QW+]k7/L:r*-Q<T>98(,JQ/ {@8@       Fv/7?*6Z@$77@8/'#+ 14 Fv/7??/////..10Ih7Iha@RX8778Y%#"'&547&'&5476324#"6764'&'326(6j[83A,96Nb3$1?G8Xo1C#O3;45TH74E?0@71A^_860'~8<--HaCL9*'V@!((@)  # Fv/7?Wc?9`-(21!E9H N_{4@:SjHE\TRhA:(,K_uIX F@@   Fv/7??/<<10IhIha@RX878Y#"&54632#"&54632""!!#"$$ ! l!!WR T@ !!@"     Fv/7??////<<10Ih!Iha@RX87!8Y#"&54632567654#"#"54632""!!+# 6'  ! ;t5 !&/9!' 1j@,@Fv/7//.ć........10IhIha@RX878Y-5%  X'>> S@@ Fv/7/>' 1j@,@Fv/7//.ć........10IhIha@RX878Y5-5 X >>/".\@%//@0#)  ,& & Fv/7??///...10Ih/Iha@RX87/8Y#67654'&#"#"'&547632#"&54632O??0'!.-3 /3UTj###" OYG/AviPGF& *= +<*,V! 1>M@<NN@O>$"$"# #$%$$%@'.6FB J:*2 Fv/7?//</////.........10IhNIha@RX87N8Y%#"'&547632#"547#"&547632?327654'&#"32767$54#"3276`}odkvMxP%6`^YIO:0FCMa\~bmuM.?EGA073WgYx}Y_J.@5zwtG8 ˨XdWSҦq~jEi3S~sL";6@P@       Fv/7?7F|%1u@322@3&,+"! .)$Fv/7?7Y30T62:A4'*>(+ GV)&% S@!!@"    Fv/7??<t ;o?EGDwG05;ibjn00RWQN S!e@)""@# Fv/7?falz,,ٶZU&?$=@\>>@?  =0/7.-('87&%  =<10-,!  '&/.Fv/7?Iha@RX87>8Y)53276=!;!5327654'&+5!#"!54'&+5!#";* *) )''A%'&  ,=@?>?B  ,C=Al@0@   Fv/7?>,. 5_M: =@X>>@?% +8789 8 /.10-=%$ =.-! 0/Fv/7?Iha@RX87>8Y)5276/;!5327654'.+5!#"6767654+53"4( ,* &%%%8' .)-ri?,(0 (=@B%B 49ri>fi@,@    Fv/7?9A8??&@M''@(  &%$ $# &%Fv/7?\dg˦KX[MR)y@7**@+   %$   "'  Fv/7?(t:58f3V>-A v@1@      Fv/7?}I(J$->|>/5@y66@7" 1%  101""#2!!2 101""#2!!2112  0 112  0 #""#*),+55,)+*Fv/7?' jz 74"4<<. 4(%oK$( AY2 0@Q11@2'.*$&' '('&'( / 0.    0/ Fv/7?>> XB@@Fv/7/' * ( /5$%/(8/+:CCadNW'VI 8L) +$'58Wh:1&U@ @   Fv/7??/<</<....10IhIha@RX878Y%#"&54632!7'4'&#" 26LUvx`Nd30G]+Z&$+BJ5:lufWd>:pC!B:&&@?''@(    $$  $  Fv/7?,# ,o|/D8/ '\@$((@)$"% '   '&Fv/7??9 ,DKn 80@N11@2) )()*  %$#"00 %"#$# Fv/7?= 10'&A#  /;50/"!.Fv/7?54'&'&'736324'&#"326;<^@/ 68 %@VLbQ(#;(7*&$O.9f 8hh 3p+m@.,,@-"!'   #"%!  Fv/7??).   )&3$+.4PGH _XNKku5OD'$($2K@,6F==$#2"je@*@  Fv/7???'&'&'53&7654#53.`e.%'bX%#'BE%,%?t %  "45 hd $3V+ (@I))@*!$ ! !"! !"'&(& ('Fv/7??<</<--@.+#$ + $  ) !& Fv/7????/(:  Fv/7?6I8H(>\ ~'T0"(B.66RA+00' i=5?)vy0C I@*RH,':'@N((@)   " %Fv/7?U<0$* &"7hO#*p?4+14M(8(0/O:`@%$N@Q!4*5BM:-68hDK9C*">2.$ 04$(!#< ? 5.C !'-5 1@!;7 ?@@  Fv/7/# ;D@?EE@F;810%$'&CB ,+ <6C;'$&%@21 Fv/7??/ > Xf>\> SV@@   Fv/7/#:!29& /W> C\@P!.#e 0$3X"-0;% 7@ @ Fv/7/*-! O@ @  Fv/7?7F %(@U))@* '& ! !&(&' '(! !((&'&' % (%  (&   Fv/7?7F"%@Y&&@'$#   #%#$ $%%%#$#$ "%" %#Fv/7?7Fv.1@\22@30/  *))*/1/0 01*))*11/0/0(''(.1! #".#   1/)("!"Fv/7?7Fa 36@\77@854#  /../4645 56/../664  545!-,,-36&%(' 3(% 64  .-'&'Fv/7?7F '36@]77@8 54 #""#4645 56#""#664545! ! ' 6.(' 164+ "!  Fv/7?7F;##"%;>@h??@@;> >>< =<= $,)+*=< 21%$,+#076>< =$#10&%*)Fv/7?t ;o?EGDwG05;6#(/! ,%^b^jn00RWQN Sd7@F88@9 7 '& .- ('#,  32 ! -,&%  Fv/7?++@,$# &%"!  %$  #"(Fv/7?_'"ޜdg˦KX[MR$ #Q@$$@%    Fv/7??///....10Ih$Iha@RX87$8Y#7632#"'&54632'&76**"_bƓsgr8:hf;>_"Ӝdg˦KX[MR$ Y@"!!@"  Fv/7??/<//.......10Ih!Iha@RX87!8Y#'#73#"'&54632'&76$$A,_bƓsgr8:hf;>lldg˦KX[MR$v,]@%--@. %   )"Fv/7??/<//<<//..10Ih-Iha@RX87-8Y#"&#"#632327#"'&54632'&76$!*'O $ZO< _bƓsgr8:hf;>v, #0j.3dg˦KX[MR$a $1\@%22@3*%  .'" "Fv/7??/<<////10Ih2Iha@RX8728Y#"&54632#"&54632#"'&54632'&76! _bƓsgr8:hf;>-    dg˦KX[MR: @G @        Fv/7/ae:A]kgIQSiLRTkO\gRvYs\RYGP8@>99@: "!' 8 760('1065#"   ,87! Fv/7??(t:58f3V>-A 9@>::@; #"(! 9 871)(2176$#   !-98"! Fv/7??(t:58f3V>-A6@B77@8 %6 54.&%/. 43! *65Fv/7??(t:58f3V>-Aa G@EHH@I106/.(GFE? 76)(@?ED21.-/ ;$ GF0/$.Fv/7??(t:58f3V>-A  :@V;;@< 184.01 12  10129: )('&8*)&  ':9('&Fv/7?5432.0M*7*(Lmb-(Qba[>C.$,( &^$:y[Jd('%3=p@/>>@? 531" 3 954-, $< (( Fv/7?Iha@RX87>8Y#'&5432#"5#"&5476754&#"#"547632327'5.*- "/966@#2=/9*-%,+40F^#)l%)&_'"LL2 A69'15A8 015 +!R<)*$'$0% 4>p@/??@@ 642#4 :65.- !%= )) Fv/7?#"76)*.  F&22Fv/7?&%3-/" Fv/7?O5/"$ 4RD1B*!<.e21+!&==dZ{,;pz!;.U-%3%5# 3z@344@53'% -1 *"" Fv/7??/////...........10Ih4Iha@RX8748Y%632#"'73254'&'7&'&547632#"&#"327 iC%Q5&.!=&&J/1B?]EY03 B8B'*F_1Qk5#(/! ,%Z @DelFDI&+y_JW;@v&%_@%&&@'  % %" Fv/7??//<</<........10Ih&Iha@RX87&8Y#'&5432#"&54632!7'4'&#"B*- " 26LUvx`Nd30G]+Z&$+B_'"J5:lufWd>:pC!B:& &_@%''@(  &&#Fv/7??//<</<........10Ih'Iha@RX87'8Y#7632#"&54632!7'4'&#"**" 26LUvx`Nd30G]+Z&$+B_"J5:lufWd>:pC!B:&#j@+$$@%# #  Fv/7?:pC!B:& ,4j@,55@6,-%4& * 4-&%1" "Fv/7??/</<<<///<....10Ih5Iha@RX8758Y#"&54632#"&54632#"&54632!7'4'&#"!  26LUvx`Nd30G]+Z&$+Bo    &J5:lufWd>:pC!B:e@(@      Fv/7?""##$@B%%@&     #  Fv/7??////.ć.ć...........10Ih %Iha@RX87%8Y#"''7&'&76327&#"74'32D5:AkKFDH6t0%rMEY`JU;NQ@b]IQ8KPBCC;E/# (@8))@* (&  "!#  $#! #" Fv/7?<@3210 ( >301 %  @?21 0Fv/7??(. &<d@.XTSb1"$0l@-11@2%$+ /$ ) Fv/7?<]g84[NZNBS'S/!L #Be#$;h0$RlrGDPQeWexn1 (":vDHmFIB 9{@5::@;(,+3" -,%  0%+*% "Fv/7?<).   )&3$+.4PGH _XNKkkk5OD'$($2K@,6F==$#2 f H@]II@J?FB<>? ?@.--.?>?@%$'&,G#H7654 -,F8745('$#%  HG65&%4Fv/7?!%.(( @!r@<,  ~%F! >c& F@@@Fv/7?C>In//0 !=3/#D4.!=3/#D4.}$6&!46YtRKW%!-tRKW%!-0 TP_/(>aFAF.9"YRQ(VLI"[TM(VL# SH?Z<?@@Fv/7??@@Fv/7?*);:-,43A@?Fv/7?*"X"W/1%{B$Z{$B$BBy  {ZT!Z'%#"&Z&! !!)#"d3!oRh6,Zs@X;O7#K l(#F@2n nd;M? nT}! c T V'%{{{{ZZZ Z$$$$$% B%%%%%%%#&&&&!!!!"#####&"BB% FZZ^ZaZb"a"3G,#vJZ<Z>#|||Jjl\  ` j RttF*n> ", b!$!#@$%N&d''()*+,-.0r12^23<34D45667h8\9:;Jl^ * <~TTvjXj<l(2c@ +=J*8ZF*6  _t-{l)D( D *R | Z *  6   Version 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrRegTest V2RegularUnknown Vendor: PigLatin GrRegTest V2: 3-8-97PigLatin GrRegTest V2Macromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrRegTestV2-RegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrRegTest V2RegularUnknown Vendor: PigLatin GrRegTest V2: 3-8-97PigLatin GrRegTest V2Macromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrRegTestV2-RegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrRegTest V2RegularUnknown Vendor: PigLatin GrRegTest V2: 3-8-97PigLatin GrRegTest V2Macromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrRegTestV2-RegularNoNameNoName{  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~@G&&%%$$##""!!  EhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDF+F+EhDEhD  "&*.4:>BFJNRVZ^bfjnrvz~"&*.26:>BFJNRVZ^bfjnrvz~ "&*.26:>BFJNRVZ^bfjnrvz~ "&*.26:>BFJNRVZ^bfjnrvz~ r<prt@DEFHIJLMNOPRSTUVXYZ[\#'+17$%&()*,-./02345689:;<C[$%&()*,-./ 0 2 3 4 5689:;< CDEFGHI J KL M N OPQRSTUVWXYZ[\  ##$&''(*++,01126778<CCDFGGHJKKLPQQRVWWX\ &>In(H`~            ".7" .7.7" .7.70".7" .7.70".70" .7.7" .7.7".70" .7.7".70".70".7".7".70".7".70".70!!3737370!!37370!!370373737037370370!!1!!1!!1grcompiler-5.2.1/test/GrcRegressionTest/fonts/PigLatinBenchmark_v3.ttf000066400000000000000000001635741411153030700260720ustar00rootroot00000000000000 FeatLGlat ;Gloc"OS/2R},VSilfbbhSillhcmapwwfcvt fpgm3Oglyfv2headG<'6hhea $hmtxؖ0dlocaNz͔hmaxp namevpost0c1m$prepʵ2MACR@ "\@ ~Sax & 0 :!"" R`x  0 9!""  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ua%41N`'Immq&FJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ@,vE %E#ah#h`D-?V@ @ Fv/7?#0@ *: % Fv/7?<2/AD4.k %4=AB40tRKW%!/' eSNV:G:"ZRNHVL0 FQ`MRM& 1<Hw@3II@JA;1'&=-"&%('C92/ G5 Fv/7?+# %* 616!,99* X `@( @    Fv/7? >   > 8ReE@@  Fv/7??///<<10IhIha@RX878Y567654#"#"54632ϗ+# 6' t5 !&/9!0C@@Fv/7/ ! >DsI%RF!X@!""@#!  Fv/7?A#V)JBiTN)tG1J04Qw (+)X@"**@+(&" "Fv/7??//......10Ih*Iha@RX87*8Y%#"5463232654'&'567654'&#"'67632}wW%0Qd*;-+E(*O53QW+]k7/L:r*-Q<T>98(,JQ/ {@8@       Fv/7?*6Z@$77@8/'#+ 14 Fv/7??/////..10Ih7Iha@RX8778Y%#"'&547&'&5476324#"6764'&'326(6j[83A,96Nb3$1?G8Xo1C#O3;45TH74E?0@71A^_860'~8<--HaCL9*'V@!((@)  # Fv/7?Wc?9`-(21!E9H N_{4@:SjHE\TRhA:(,K_uIX F@@   Fv/7??/<<10IhIha@RX878Y#"&54632#"&54632""!!#"$$ ! l!!WR T@ !!@"     Fv/7??////<<10Ih!Iha@RX87!8Y#"&54632567654#"#"54632""!!+# 6'  ! ;t5 !&/9!' 1j@,@Fv/7//.ć........10IhIha@RX878Y-5%  X'>> S@@ Fv/7/>' 1j@,@Fv/7//.ć........10IhIha@RX878Y5-5 X >>/".\@%//@0#)  ,& & Fv/7??///...10Ih/Iha@RX87/8Y#67654'&#"#"'&547632#"&54632O??0'!.-3 /3UTj###" OYG/AviPGF& *= +<*,V! 1>M@<NN@O>$"$"# #$%$$%@'.6FB J:*2 Fv/7?//</////.........10IhNIha@RX87N8Y%#"'&547632#"547#"&547632?327654'&#"32767$54#"3276`}odkvMxP%6`^YIO:0FCMa\~bmuM.?EGA073WgYx}Y_J.@5zwtG8 ˨XdWSҦq~jEi3S~sL";6@P@       Fv/7?7F|%1u@322@3&,+"! .)$Fv/7?7Y30T62:A4'*>(+ GV)&% S@!!@"    Fv/7??<t ;o?EGDwG05;ibjn00RWQN S!e@)""@# Fv/7?falz,,ٶZU&?$=@\>>@?  =0/7.-('87&%  =<10-,!  '&/.Fv/7?Iha@RX87>8Y)53276=!;!5327654'&+5!#"!54'&+5!#";* *) )''A%'&  ,=@?>?B  ,C=Al@0@   Fv/7?>,. 5_M: =@X>>@?% +8789 8 /.10-=%$ =.-! 0/Fv/7?Iha@RX87>8Y)5276/;!5327654'.+5!#"6767654+53"4( ,* &%%%8' .)-ri?,(0 (=@B%B 49ri>fi@,@    Fv/7?9A8??&@M''@(  &%$ $# &%Fv/7?\dg˦KX[MR)y@7**@+   %$   "'  Fv/7?(t:58f3V>-A v@1@      Fv/7?}I(J$->|>/5@y66@7" 1%  101""#2!!2 101""#2!!2112  0 112  0 #""#*),+55,)+*Fv/7?' jz 74"4<<. 4(%oK$( AY2 0@Q11@2'.*$&' '('&'( / 0.    0/ Fv/7?>> XB@@Fv/7/' * ( /5$%/(8/+:CCadNW'VI 8L) +$'58Wh:1&U@ @   Fv/7??/<</<....10IhIha@RX878Y%#"&54632!7'4'&#" 26LUvx`Nd30G]+Z&$+BJ5:lufWd>:pC!B:&&@?''@(    $$  $  Fv/7?,# ,o|/D8/ '\@$((@)$"% '   '&Fv/7??9 ,DKn 80@N11@2) )()*  %$#"00 %"#$# Fv/7?= 10'&A#  /;50/"!.Fv/7?54'&'&'736324'&#"326;<^@/ 68 %@VLbQ(#;(7*&$O.9f 8hh 3p+m@.,,@-"!'   #"%!  Fv/7??).   )&3$+.4PGH _XNKku5OD'$($2K@,6F==$#2"je@*@  Fv/7???'&'&'53&7654#53.`e.%'bX%#'BE%,%?t %  "45 hd $3V+ (@I))@*!$ ! !"! !"'&(& ('Fv/7??<</<--@.+#$ + $  ) !& Fv/7????/(:  Fv/7?6I8H(>\ ~'T0"(B.66RA+00' i=5?)vy0C I@*RH,':'@N((@)   " %Fv/7?U<0$* &"7hO#*p?4+14M(8(0/O:`@%$N@Q!4*5BM:-68hDK9C*">2.$ 04$(!#< ? 5.C !'-5 1@!;7 ?@@  Fv/7/# ;D@?EE@F;810%$'&CB ,+ <6C;'$&%@21 Fv/7??/ > Xf>\> SV@@   Fv/7/#:!29& /W> C\@P!.#e 0$3X"-0;% 7@ @ Fv/7/*-! O@ @  Fv/7?7F %(@U))@* '& ! !&(&' '(! !((&'&' % (%  (&   Fv/7?7F"%@Y&&@'$#   #%#$ $%%%#$#$ "%" %#Fv/7?7Fv.1@\22@30/  *))*/1/0 01*))*11/0/0(''(.1! #".#   1/)("!"Fv/7?7Fa 36@\77@854#  /../4645 56/../664  545!-,,-36&%(' 3(% 64  .-'&'Fv/7?7F '36@]77@8 54 #""#4645 56#""#664545! ! ' 6.(' 164+ "!  Fv/7?7F;##"%;>@h??@@;> >>< =<= $,)+*=< 21%$,+#076>< =$#10&%*)Fv/7?t ;o?EGDwG05;6#(/! ,%^b^jn00RWQN Sd7@F88@9 7 '& .- ('#,  32 ! -,&%  Fv/7?++@,$# &%"!  %$  #"(Fv/7?_'"ޜdg˦KX[MR$ #Q@$$@%    Fv/7??///....10Ih$Iha@RX87$8Y#7632#"'&54632'&76**"_bƓsgr8:hf;>_"Ӝdg˦KX[MR$ Y@"!!@"  Fv/7??/<//.......10Ih!Iha@RX87!8Y#'#73#"'&54632'&76$$A,_bƓsgr8:hf;>lldg˦KX[MR$v,]@%--@. %   )"Fv/7??/<//<<//..10Ih-Iha@RX87-8Y#"&#"#632327#"'&54632'&76$!*'O $ZO< _bƓsgr8:hf;>v, #0j.3dg˦KX[MR$a $1\@%22@3*%  .'" "Fv/7??/<<////10Ih2Iha@RX8728Y#"&54632#"&54632#"'&54632'&76! _bƓsgr8:hf;>-    dg˦KX[MR: @G @        Fv/7/ae:A]kgIQSiLRTkO\gRvYs\RYGP8@>99@: "!' 8 760('1065#"   ,87! Fv/7??(t:58f3V>-A 9@>::@; #"(! 9 871)(2176$#   !-98"! Fv/7??(t:58f3V>-A6@B77@8 %6 54.&%/. 43! *65Fv/7??(t:58f3V>-Aa G@EHH@I106/.(GFE? 76)(@?ED21.-/ ;$ GF0/$.Fv/7??(t:58f3V>-A  :@V;;@< 184.01 12  10129: )('&8*)&  ':9('&Fv/7?5432.0M*7*(Lmb-(Qba[>C.$,( &^$:y[Jd('%3=p@/>>@? 531" 3 954-, $< (( Fv/7?Iha@RX87>8Y#'&5432#"5#"&5476754&#"#"547632327'5.*- "/966@#2=/9*-%,+40F^#)l%)&_'"LL2 A69'15A8 015 +!R<)*$'$0% 4>p@/??@@ 642#4 :65.- !%= )) Fv/7?#"76)*.  F&22Fv/7?&%3-/" Fv/7?O5/"$ 4RD1B*!<.e21+!&==dZ{,;pz!;.U-%3%5# 3z@344@53'% -1 *"" Fv/7??/////...........10Ih4Iha@RX8748Y%632#"'73254'&'7&'&547632#"&#"327 iC%Q5&.!=&&J/1B?]EY03 B8B'*F_1Qk5#(/! ,%Z @DelFDI&+y_JW;@v&%_@%&&@'  % %" Fv/7??//<</<........10Ih&Iha@RX87&8Y#'&5432#"&54632!7'4'&#"B*- " 26LUvx`Nd30G]+Z&$+B_'"J5:lufWd>:pC!B:& &_@%''@(  &&#Fv/7??//<</<........10Ih'Iha@RX87'8Y#7632#"&54632!7'4'&#"**" 26LUvx`Nd30G]+Z&$+B_"J5:lufWd>:pC!B:&#j@+$$@%# #  Fv/7?:pC!B:& ,4j@,55@6,-%4& * 4-&%1" "Fv/7??/</<<<///<....10Ih5Iha@RX8758Y#"&54632#"&54632#"&54632!7'4'&#"!  26LUvx`Nd30G]+Z&$+Bo    &J5:lufWd>:pC!B:e@(@      Fv/7?""##$@B%%@&     #  Fv/7??////.ć.ć...........10Ih %Iha@RX87%8Y#"''7&'&76327&#"74'32D5:AkKFDH6t0%rMEY`JU;NQ@b]IQ8KPBCC;E/# (@8))@* (&  "!#  $#! #" Fv/7?<@3210 ( >301 %  @?21 0Fv/7??(. &<d@.XTSb1"$0l@-11@2%$+ /$ ) Fv/7?<]g84[NZNBS'S/!L #Be#$;h0$RlrGDPQeWexn1 (":vDHmFIB 9{@5::@;(,+3" -,%  0%+*% "Fv/7?<).   )&3$+.4PGH _XNKkkk5OD'$($2K@,6F==$#2 f H@]II@J?FB<>? ?@.--.?>?@%$'&,G#H7654 -,F8745('$#%  HG65&%4Fv/7?!%.(( @!r@<,  ~%F! >c& F@@@Fv/7?C>In//0 !=3/#D4.!=3/#D4.}$6&!46YtRKW%!-tRKW%!-0 TP_/(>aFAF.9"YRQ(VLI"[TM(VL# SH?Z<?@@Fv/7??@@Fv/7?*);:-,43A@?Fv/7?*"X"W/1%{B$Z{$B$BBy  {ZT!Z'%#"&Z&! !!)#"d3!oRh6,Zs@X;O7#K l(#F@2n nd;M? nT}! c T V'%{{{{ZZZ Z$$$$$% B%%%%%%%#&&&&!!!!"#####&"BB% FZZ^ZaZb"a"3G,#vJZ<Z>#|||Jjl\  ` j RttF*n> ", b!$!#@$%N&d''()*+,-.0r12^23<34D45667h8\9:;Jl^ * <~TTvjXj<l(2c@ +=J&46B&x4v  1DKfly  &  3 6A &w  4u   Version 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrcRegTestRegular:PigLatin GrcRegTest:3-8-97PigLatin GrcRegTestMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrcRegTest-RegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrcRegTestRegular:PigLatin GrcRegTest:3-8-97PigLatin GrcRegTestMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrcRegTest-RegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrcRegTestRegular:PigLatin GrcRegTest:3-8-97PigLatin GrcRegTestMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrcRegTest-RegularNoNameNoName{  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~@G&&%%$$##""!!  EhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDF+F+EhDEhD  $*06<BJRX^djpv|  $(,04:>BFJNV\djpv| "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz*2 J~NDEFHIJLMNOPRSTUVXYZ[\#'+17$%&()*,-./02345689:;<C[$%&()*,-./ 0 2 3 4 5689:;< CDEFGHI J KL M N OPQRSTUVWXYZ[\    ##$&''(*++,01126778<CCDFGGHJKKLPQQRVWWX\ &>In,Pl            ".7" .7.7" .7.70".7" .7.70".70" .7.7" .7.7".70" .7.7".70".70".7".7".70".7".70".708!8!37373708!8!373708!8!370373737037370370;!;!1;!;!1;!;!1grcompiler-5.2.1/test/GrcRegressionTest/fonts/PigLatinInput.gdl000066400000000000000000000062021411153030700246200ustar00rootroot00000000000000 /********************************************************************************* File: piglatin.gdl Sample GDL file for rendering Pig Latin. Compile with Std SILDoulos (stddr.ttf). *********************************************************************************/ #include "stddef.gdh" Bidi = false; // We use the following user-defined slot attribute to mark the members of the // consonant cluster that we are moving towards the end of the word: #define u_InitialCons user1 table(glyph) clsVowelUC = codepoint("AEIOU"); clsVowelLC = codepoint("aeiou"); clsVowel = (clsVowelUC clsVowelLC); clsConsUC = codepoint("BCDFGHJKLMNPQRSTVWXYZ"); clsConsLC = codepoint("bcdfghjklmnpqrstvwxyz"); clsCons = (clsConsUC, clsConsLC); // word-forming letters clsWfUC = (clsVowelUC clsConsUC); clsWfLC = (clsVowelLC clsConsLC); clsWf = (clsWfUC clsWfLC); // "a" and "y" to insert g_aIns = codepoint("a"); g_yIns = codepoint("y"); endtable; // glyph table(sub) // Note that the consonant cluster to be moved to the end of the word can be at most 3 letters long. // The following three rules handle an upper case consonant (and possibly a consonant cluster) followed by a lower-case // letter at the beginning of the word (the consonant cluster has not yet been marked with u_InitialCons). // We need to not only switch the order but also switch the capitalization. clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 {u_InitialCons = true} @2 {u_InitialCons = true} @3 {u_InitialCons = true} / _ {u_InitialCons == false} ^ _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == @1.u_InitialCons} _; clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 {u_InitialCons = true} @2 {u_InitialCons = true} / _ {u_InitialCons == false} ^ _ {u_InitialCons == @1.u_InitialCons} _; clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 {u_InitialCons = true} / _ {u_InitialCons == false} ^ _; // We have found a consonant or cluster followed by a word-forming letter. Switch the order, moving the consonant(s) // toward the end of the word. Mark the members of the word-initial cluster. clsCons clsCons clsCons clsWf > @4 @1 {u_InitialCons = true} @2 {u_InitialCons = true} @3 {u_InitialCons = true} / _ ^ _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == false}; clsCons clsCons clsWf > @3 @1 { u_InitialCons = true } @2 {u_InitialCons = true} / _ ^ _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == false}; clsCons clsWf > @2 @1 { u_InitialCons = true } / _ ^ _ {u_InitialCons == false}; // Here we have hit the end of the word--the word-initial consonant or cluster is not followed by another word-forming letter. // Insert the "ay" at the end of the word, and associate them with the last letter of the cluster. clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _ {u_InitialCons == true} _ {u_InitialCons == true} _ {u_InitialCons == true} _ _; clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _ {u_InitialCons == true} _ {u_InitialCons == true} _ _; clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _ {u_InitialCons == true} _ _; endtable; grcompiler-5.2.1/test/GrcRegressionTest/fonts/PigLatinInput.ttf000066400000000000000000001555001411153030700246550ustar00rootroot00000000000000 POS/2R}Vcmapww4fcvt fpgm3O<glyfvP2headG<'Ʉ6hheaɼ$hmtxؖdlocaNzDhmaxpЬ name|s post0c1m؜prepʵp2MACR@ "\@ ~Sax & 0 :!"" R`x  0 9!""  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ua%41N`'Immq&FJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ@,vE %E#ah#h`D-?V@ @ Fv/7?#0@ *: % Fv/7?<2/AD4.k %4=AB40tRKW%!/' eSNV:G:"ZRNHVL0 FQ`MRM& 1<Hw@3II@JA;1'&=-"&%('C92/ G5 Fv/7?+# %* 616!,99* X `@( @    Fv/7? >   > 8ReE@@  Fv/7??///<<10IhIha@RX878Y567654#"#"54632ϗ+# 6' t5 !&/9!0C@@Fv/7/ ! >DsI%RF!X@!""@#!  Fv/7?A#V)JBiTN)tG1J04Qw (+)X@"**@+(&" "Fv/7??//......10Ih*Iha@RX87*8Y%#"5463232654'&'567654'&#"'67632}wW%0Qd*;-+E(*O53QW+]k7/L:r*-Q<T>98(,JQ/ {@8@       Fv/7?*6Z@$77@8/'#+ 14 Fv/7??/////..10Ih7Iha@RX8778Y%#"'&547&'&5476324#"6764'&'326(6j[83A,96Nb3$1?G8Xo1C#O3;45TH74E?0@71A^_860'~8<--HaCL9*'V@!((@)  # Fv/7?Wc?9`-(21!E9H N_{4@:SjHE\TRhA:(,K_uIX F@@   Fv/7??/<<10IhIha@RX878Y#"&54632#"&54632""!!#"$$ ! l!!WR T@ !!@"     Fv/7??////<<10Ih!Iha@RX87!8Y#"&54632567654#"#"54632""!!+# 6'  ! ;t5 !&/9!' 1j@,@Fv/7//.ć........10IhIha@RX878Y-5%  X'>> S@@ Fv/7/>' 1j@,@Fv/7//.ć........10IhIha@RX878Y5-5 X >>/".\@%//@0#)  ,& & Fv/7??///...10Ih/Iha@RX87/8Y#67654'&#"#"'&547632#"&54632O??0'!.-3 /3UTj###" OYG/AviPGF& *= +<*,V! 1>M@<NN@O>$"$"# #$%$$%@'.6FB J:*2 Fv/7?//</////.........10IhNIha@RX87N8Y%#"'&547632#"547#"&547632?327654'&#"32767$54#"3276`}odkvMxP%6`^YIO:0FCMa\~bmuM.?EGA073WgYx}Y_J.@5zwtG8 ˨XdWSҦq~jEi3S~sL";6@P@       Fv/7?7F|%1u@322@3&,+"! .)$Fv/7?7Y30T62:A4'*>(+ GV)&% S@!!@"    Fv/7??<t ;o?EGDwG05;ibjn00RWQN S!e@)""@# Fv/7?falz,,ٶZU&?$=@\>>@?  =0/7.-('87&%  =<10-,!  '&/.Fv/7?Iha@RX87>8Y)53276=!;!5327654'&+5!#"!54'&+5!#";* *) )''A%'&  ,=@?>?B  ,C=Al@0@   Fv/7?>,. 5_M: =@X>>@?% +8789 8 /.10-=%$ =.-! 0/Fv/7?Iha@RX87>8Y)5276/;!5327654'.+5!#"6767654+53"4( ,* &%%%8' .)-ri?,(0 (=@B%B 49ri>fi@,@    Fv/7?9A8??&@M''@(  &%$ $# &%Fv/7?\dg˦KX[MR)y@7**@+   %$   "'  Fv/7?(t:58f3V>-A v@1@      Fv/7?}I(J$->|>/5@y66@7" 1%  101""#2!!2 101""#2!!2112  0 112  0 #""#*),+55,)+*Fv/7?' jz 74"4<<. 4(%oK$( AY2 0@Q11@2'.*$&' '('&'( / 0.    0/ Fv/7?>> XB@@Fv/7/' * ( /5$%/(8/+:CCadNW'VI 8L) +$'58Wh:1&U@ @   Fv/7??/<</<....10IhIha@RX878Y%#"&54632!7'4'&#" 26LUvx`Nd30G]+Z&$+BJ5:lufWd>:pC!B:&&@?''@(    $$  $  Fv/7?,# ,o|/D8/ '\@$((@)$"% '   '&Fv/7??9 ,DKn 80@N11@2) )()*  %$#"00 %"#$# Fv/7?= 10'&A#  /;50/"!.Fv/7?54'&'&'736324'&#"326;<^@/ 68 %@VLbQ(#;(7*&$O.9f 8hh 3p+m@.,,@-"!'   #"%!  Fv/7??).   )&3$+.4PGH _XNKku5OD'$($2K@,6F==$#2"je@*@  Fv/7???'&'&'53&7654#53.`e.%'bX%#'BE%,%?t %  "45 hd $3V+ (@I))@*!$ ! !"! !"'&(& ('Fv/7??<</<--@.+#$ + $  ) !& Fv/7????/(:  Fv/7?6I8H(>\ ~'T0"(B.66RA+00' i=5?)vy0C I@*RH,':'@N((@)   " %Fv/7?U<0$* &"7hO#*p?4+14M(8(0/O:`@%$N@Q!4*5BM:-68hDK9C*">2.$ 04$(!#< ? 5.C !'-5 1@!;7 ?@@  Fv/7/# ;D@?EE@F;810%$'&CB ,+ <6C;'$&%@21 Fv/7??/ > Xf>\> SV@@   Fv/7/#:!29& /W> C\@P!.#e 0$3X"-0;% 7@ @ Fv/7/*-! O@ @  Fv/7?7F %(@U))@* '& ! !&(&' '(! !((&'&' % (%  (&   Fv/7?7F"%@Y&&@'$#   #%#$ $%%%#$#$ "%" %#Fv/7?7Fv.1@\22@30/  *))*/1/0 01*))*11/0/0(''(.1! #".#   1/)("!"Fv/7?7Fa 36@\77@854#  /../4645 56/../664  545!-,,-36&%(' 3(% 64  .-'&'Fv/7?7F '36@]77@8 54 #""#4645 56#""#664545! ! ' 6.(' 164+ "!  Fv/7?7F;##"%;>@h??@@;> >>< =<= $,)+*=< 21%$,+#076>< =$#10&%*)Fv/7?t ;o?EGDwG05;6#(/! ,%^b^jn00RWQN Sd7@F88@9 7 '& .- ('#,  32 ! -,&%  Fv/7?++@,$# &%"!  %$  #"(Fv/7?_'"ޜdg˦KX[MR$ #Q@$$@%    Fv/7??///....10Ih$Iha@RX87$8Y#7632#"'&54632'&76**"_bƓsgr8:hf;>_"Ӝdg˦KX[MR$ Y@"!!@"  Fv/7??/<//.......10Ih!Iha@RX87!8Y#'#73#"'&54632'&76$$A,_bƓsgr8:hf;>lldg˦KX[MR$v,]@%--@. %   )"Fv/7??/<//<<//..10Ih-Iha@RX87-8Y#"&#"#632327#"'&54632'&76$!*'O $ZO< _bƓsgr8:hf;>v, #0j.3dg˦KX[MR$a $1\@%22@3*%  .'" "Fv/7??/<<////10Ih2Iha@RX8728Y#"&54632#"&54632#"'&54632'&76! _bƓsgr8:hf;>-    dg˦KX[MR: @G @        Fv/7/ae:A]kgIQSiLRTkO\gRvYs\RYGP8@>99@: "!' 8 760('1065#"   ,87! Fv/7??(t:58f3V>-A 9@>::@; #"(! 9 871)(2176$#   !-98"! Fv/7??(t:58f3V>-A6@B77@8 %6 54.&%/. 43! *65Fv/7??(t:58f3V>-Aa G@EHH@I106/.(GFE? 76)(@?ED21.-/ ;$ GF0/$.Fv/7??(t:58f3V>-A  :@V;;@< 184.01 12  10129: )('&8*)&  ':9('&Fv/7?5432.0M*7*(Lmb-(Qba[>C.$,( &^$:y[Jd('%3=p@/>>@? 531" 3 954-, $< (( Fv/7?Iha@RX87>8Y#'&5432#"5#"&5476754&#"#"547632327'5.*- "/966@#2=/9*-%,+40F^#)l%)&_'"LL2 A69'15A8 015 +!R<)*$'$0% 4>p@/??@@ 642#4 :65.- !%= )) Fv/7?#"76)*.  F&22Fv/7?&%3-/" Fv/7?O5/"$ 4RD1B*!<.e21+!&==dZ{,;pz!;.U-%3%5# 3z@344@53'% -1 *"" Fv/7??/////...........10Ih4Iha@RX8748Y%632#"'73254'&'7&'&547632#"&#"327 iC%Q5&.!=&&J/1B?]EY03 B8B'*F_1Qk5#(/! ,%Z @DelFDI&+y_JW;@v&%_@%&&@'  % %" Fv/7??//<</<........10Ih&Iha@RX87&8Y#'&5432#"&54632!7'4'&#"B*- " 26LUvx`Nd30G]+Z&$+B_'"J5:lufWd>:pC!B:& &_@%''@(  &&#Fv/7??//<</<........10Ih'Iha@RX87'8Y#7632#"&54632!7'4'&#"**" 26LUvx`Nd30G]+Z&$+B_"J5:lufWd>:pC!B:&#j@+$$@%# #  Fv/7?:pC!B:& ,4j@,55@6,-%4& * 4-&%1" "Fv/7??/</<<<///<....10Ih5Iha@RX8758Y#"&54632#"&54632#"&54632!7'4'&#"!  26LUvx`Nd30G]+Z&$+Bo    &J5:lufWd>:pC!B:e@(@      Fv/7?""##$@B%%@&     #  Fv/7??////.ć.ć...........10Ih %Iha@RX87%8Y#"''7&'&76327&#"74'32D5:AkKFDH6t0%rMEY`JU;NQ@b]IQ8KPBCC;E/# (@8))@* (&  "!#  $#! #" Fv/7?<@3210 ( >301 %  @?21 0Fv/7??(. &<d@.XTSb1"$0l@-11@2%$+ /$ ) Fv/7?<]g84[NZNBS'S/!L #Be#$;h0$RlrGDPQeWexn1 (":vDHmFIB 9{@5::@;(,+3" -,%  0%+*% "Fv/7?<).   )&3$+.4PGH _XNKkkk5OD'$($2K@,6F==$#2 f H@]II@J?FB<>? ?@.--.?>?@%$'&,G#H7654 -,F8745('$#%  HG65&%4Fv/7?!%.(( @!r@<,  ~%F! >c& F@@@Fv/7?C>In//0 !=3/#D4.!=3/#D4.}$6&!46YtRKW%!-tRKW%!-0 TP_/(>aFAF.9"YRQ(VLI"[TM(VL# SH?Z<?@@Fv/7??@@Fv/7?*);:-,43A@?Fv/7?*"X"W/1%{B$Z{$B$BBy  {ZT!Z'%#"&Z&! !!)#"d3!oRh6,Zs@X;O7#K l(#F@2n nd;M? nT}! c T V'%{{{{ZZZ Z$$$$$% B%%%%%%%#&&&&!!!!"#####&"BB% FZZ^ZaZb"a"3G,#vJZ<Z>#|||Jjl\  ` j RttF*n> ", b!$!#@$%N&d''()*+,-.0r12^23<34D45667h8\9:;Jl^ * <~TTvjXj<l(2c@ +=&&46B&x4v1DKfly  &  3 6A &w  4u Version 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrcRegTestRegular:PigLatin GrcRegTest:3-8-97PigLatin GrcRegTestMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrcRegTest-RegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrcRegTestRegular:PigLatin GrcRegTest:3-8-97PigLatin GrcRegTestMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrcRegTest-RegularVersion 3.0 (c) Copyright 1994-1997 Summer Institute of Linguistics, 7500 W. Camp Wisdom Rd., Dallas, TX 75236 USA (972) 708-7495 RWEPigLatin GrcRegTestRegular:PigLatin GrcRegTest:3-8-97PigLatin GrcRegTestMacromedia Fontographer 4.1 9/3/97 Compiled by TCTT.DLL 2.0 - the SIL Encore Font Compiler 09/27/00 13:40:08PigLatinGrcRegTest-Regular{  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~@G&&%%$$##""!!  EhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDF+F+EhDEhDgrcompiler-5.2.1/test/GrcRegressionTest/fonts/PigLatinMain.gdl000066400000000000000000000062021411153030700244050ustar00rootroot00000000000000 /********************************************************************************* File: piglatin.gdl Sample GDL file for rendering Pig Latin. Compile with Std SILDoulos (stddr.ttf). *********************************************************************************/ #include "stddef.gdh" Bidi = false; // We use the following user-defined slot attribute to mark the members of the // consonant cluster that we are moving towards the end of the word: #define u_InitialCons user1 table(glyph) clsVowelUC = codepoint("AEIOU"); clsVowelLC = codepoint("aeiou"); clsVowel = (clsVowelUC clsVowelLC); clsConsUC = codepoint("BCDFGHJKLMNPQRSTVWXYZ"); clsConsLC = codepoint("bcdfghjklmnpqrstvwxyz"); clsCons = (clsConsUC, clsConsLC); // word-forming letters clsWfUC = (clsVowelUC clsConsUC); clsWfLC = (clsVowelLC clsConsLC); clsWf = (clsWfUC clsWfLC); // "a" and "y" to insert g_aIns = codepoint("a"); g_yIns = codepoint("y"); endtable; // glyph table(sub) // Note that the consonant cluster to be moved to the end of the word can be at most 3 letters long. // The following three rules handle an upper case consonant (and possibly a consonant cluster) followed by a lower-case // letter at the beginning of the word (the consonant cluster has not yet been marked with u_InitialCons). // We need to not only switch the order but also switch the capitalization. clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 {u_InitialCons = true} @2 {u_InitialCons = true} @3 {u_InitialCons = true} / _ {u_InitialCons == false} ^ _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == @1.u_InitialCons} _; clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 {u_InitialCons = true} @2 {u_InitialCons = true} / _ {u_InitialCons == false} ^ _ {u_InitialCons == @1.u_InitialCons} _; clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 {u_InitialCons = true} / _ {u_InitialCons == false} ^ _; // We have found a consonant or cluster followed by a word-forming letter. Switch the order, moving the consonant(s) // toward the end of the word. Mark the members of the word-initial cluster. clsCons clsCons clsCons clsWf > @4 @1 {u_InitialCons = true} @2 {u_InitialCons = true} @3 {u_InitialCons = true} / _ ^ _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == false}; clsCons clsCons clsWf > @3 @1 { u_InitialCons = true } @2 {u_InitialCons = true} / _ ^ _ {u_InitialCons == @1.u_InitialCons} _ {u_InitialCons == false}; clsCons clsWf > @2 @1 { u_InitialCons = true } / _ ^ _ {u_InitialCons == false}; // Here we have hit the end of the word--the word-initial consonant or cluster is not followed by another word-forming letter. // Insert the "ay" at the end of the word, and associate them with the last letter of the cluster. clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _ {u_InitialCons == true} _ {u_InitialCons == true} _ {u_InitialCons == true} _ _; clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _ {u_InitialCons == true} _ {u_InitialCons == true} _ _; clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _ {u_InitialCons == true} _ _; endtable; grcompiler-5.2.1/test/GrcRegressionTest/fonts/SchAPClasses.gdh000066400000000000000000001241561411153030700243520ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////// // // File: SchAPClasses.gdh // // Classes based on which glyphs have which attachment points // //////////////////////////////////////////////////////////////////////////////////////////// table(glyph) // Bases cHasDiaA = ( absAlefMaddaAbove absAlefHamzaAbove absAlefHamzaBelow absAlef absAlefWavyHamzaAbove absAlefWavyHamzaBelow absHighHamzaAlef absAlefWasla absWawHamzaAbove absWaw absHighHamzaWaw absUHamzaAbove absWawRing absKirghizOe absOe absU absYu absKirghizYu absWawTwoDotsAbove absVe absWawDotAbove absWawDotBelow absDal absThal absDdal absDalRing absDalDotBelow absDalDotBelowSmallTah absDahal absDdahal absDul absDalThreeDotsAboveDownwards absDalFourDotsAbove absDalHat absDalTwoVertBelowSmallTah absDalInvSmallVBelow absReh absZain absRreh absRehSmallV absRehRing absRehDotBelow absRehSmallVBelow absRehDotBelowDotAbove absRehTwoDotsAbove absJeh absRehFourDotsAbove absRehTwoVertAbove absRehHamzaAbove absJehRetro1 absJehRetro2 absJeh__dotHat absRehHat absRehBar absYehBarree absYehBarreeHamzaAbove absYehHamzaAbove absYeh absYeh__noDots absHighHamzaYeh absFarsiYeh absYehSmallV absE absYehThreeDotsBelow absYehTail absAlefMaksura absBehNoDots absBeh absTeh absTheh absTteh absTteheh absBeeh absTehRing absTehThreeDotsAboveDownwards absPeh absTeheh absBeheh absBehThreeDotsHorizBelow absBehThreeDotsAboveDotBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehSmallVAbove absJeem absHah absKhah absHahHamzaAbove absHahTwoDotsVerticalAbove absNyeh absDyeh absHahThreeDotsAbove absTcheh absTcheheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3 absHahTwoDotsAbove absHahThreeDotsUpwardBelow absSeen absSheen absSeenDotBelowDotAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSheenDotBelow absSheenRetro1 absSheenRetro2 absSeenFourDotsAbove absSeenTwoVertAbove absSad absDad absSadTwoDotsBelow absSadThreeDotsAbove absDadDotBelow absTah absZah absTahThreeDotsAbove absAin absGhain absAinThreeDotsAbove absGhainDotBelow absAinTwoDotsAbove absAinThreeDotsDownAbove absAinTwoDotsVertAbove absFeh absDotlessFeh absFehDotMovedBelow absFehDotBelow absVeh absFehThreeDotsBelow absPeheh absFehTwoDotsBelow absFehThreeDotsUpwardBelow absQafNoDots absQaf absQafDotAbove absQafThreeDotsAbove absKaf absKafDotAbove absNg absKafThreeDotsBelow absKeheh absKafRing absGaf absGafRing absNgoeh absGafTwoDotsBelow absGueh absGafThreeDotsAbove absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absSwashKaf absLam absLamSmallV absLamDotAbove absLamThreeDotsAbove absLamThreeDotsBelow absLamRetro absLamBar absMeem absMeem__sindhi absMeemDotAbove absMeemDotBelow absNoon absNoonDotBelow absNoonGhunna absRnoon absNoonRing absNoonThreeDotsAbove absNoonTwoDotsBelow absNoonRetro absNoonSmallV absHehDoachashmee absHehHat absHeh absHeh__knotted absAe absTehMarbuta absHehYehAbove absHehGoal absHehGoalHamzaAbove absTehMarbutaGoal absHamza absSignSindhiAmpers absSignSindhiPostpositionMen absTatweel absAlefMaddaAboveFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin absHighHamzaAlefFin absAlefWaslaFin absWawHamzaAboveFin absWawFin absHighHamzaWawFin absUHamzaAboveFin absWawRingFin absKirghizOeFin absOeFin absUFin absYuFin absKirghizYuFin absWawTwoDotsAboveFin absVeFin absWawDotAboveFin absWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFin absDalDotBelowFin absDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFin absDalFourDotsAboveFin absDalHatFin absDalTwoVertBelowSmallTahFin absDalInvSmallVBelowFin absRehFin absZainFin absRrehFin absRehSmallVFin absRehRingFin absRehDotBelowFin absRehSmallVBelowFin absRehDotBelowDotAboveFin absRehTwoDotsAboveFin absJehFin absRehFourDotsAboveFin absRehTwoVertAboveFin absRehHamzaAboveFin absJehRetro1Fin absJehRetro2Fin absJehFin__dotHat absRehHatFin absRehBarFin absYehBarreeFin absYehBarreeHamzaAboveFin absYehHamzaAboveFin absYehFin absYehFin__noDots absHighHamzaYehFin absFarsiYehFin absYehSmallVFin absEFin absYehThreeDotsBelowFin absYehTailFin absAlefMaksuraFin absBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFin absBehThreeDotsHorizBelowFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehSmallVAboveFin absJeemFin absHahFin absKhahFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin absSeenFin absSheenFin absSeenDotBelowDotAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSeenFourDotsAboveFin absSeenTwoVertAboveFin absSadFin absDadFin absSadTwoDotsBelowFin absSadThreeDotsAboveFin absDadDotBelowFin absTahFin absZahFin absTahThreeDotsAboveFin absAinFin absGhainFin absAinThreeDotsAboveFin absGhainDotBelowFin absAinTwoDotsAboveFin absAinThreeDotsDownAboveFin absAinTwoDotsVertAboveFin absFehFin absDotlessFehFin absFehDotMovedBelowFin absFehDotBelowFin absVehFin absFehThreeDotsBelowFin absPehehFin absFehTwoDotsBelowFin absFehThreeDotsUpwardBelowFin absQafNoDotsFin absQafFin absQafDotAboveFin absQafThreeDotsAboveFin absKafFin absKafDotAboveFin absNgFin absKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absSwashKafFin absLamFin absLamSmallVFin absLamDotAboveFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absLamRetroFin absLamBarFin absMeemFin absMeemFin__sindhi absMeemDotAboveFin absMeemDotBelowFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absRnoonFin absNoonRingFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNoonRetroFin absNoonSmallVFin absHehDoachashmeeFin absHehHatFin absHehFin absHehFin__knottedFlat absHehFin__knottedHigh absHehFin__hooked absAeFin absTehMarbutaFin absHehYehAboveFin absHehGoalFin absHehGoalHamzaAboveFin absTehMarbutaGoalFin absYehHamzaAboveMed absYehMed absYehMed__noDots absHighHamzaYehMed absFarsiYehMed absYehSmallVMed absEMed absYehThreeDotsBelowMed absAlefMaksuraMed absBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMed absBehThreeDotsHorizBelowMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehSmallVAboveMed absJeemMed absHahMed absKhahMed absHahHamzaAboveMed absHahTwoDotsVerticalAboveMed absNyehMed absDyehMed absHahThreeDotsAboveMed absTchehMed absTchehehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absHahTwoDotsAboveMed absHahThreeDotsUpwardBelowMed absSeenMed absSheenMed absSeenDotBelowDotAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSeenFourDotsAboveMed absSeenTwoVertAboveMed absSadMed absDadMed absSadTwoDotsBelowMed absSadThreeDotsAboveMed absDadDotBelowMed absTahMed absZahMed absTahThreeDotsAboveMed absAinMed absGhainMed absAinThreeDotsAboveMed absGhainDotBelowMed absAinTwoDotsAboveMed absAinThreeDotsDownAboveMed absAinTwoDotsVertAboveMed absFehMed absDotlessFehMed absFehDotMovedBelowMed absFehDotBelowMed absVehMed absFehThreeDotsBelowMed absPehehMed absFehTwoDotsBelowMed absFehThreeDotsUpwardBelowMed absQafNoDotsMed absQafMed absQafDotAboveMed absQafThreeDotsAboveMed absKafMed absKafDotAboveMed absNgMed absKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMed absGafTwoDotsBelowMed absGuehMed absGafThreeDotsAboveMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absSwashKafMed absLamMed absLamSmallVMed absLamDotAboveMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absLamRetroMed absLamBarMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absRnoonMed absNoonRingMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNoonRetroMed absNoonSmallVMed absHehDoachashmeeMed absHehHatMed absHehMed absHehMed__hooked absHehMed__knottedHigh absHehYehAboveMed absHehGoalMed absHehGoalHamzaAboveMed absYehHamzaAboveIni absYehIni absYehIni__noDots absHighHamzaYehIni absFarsiYehIni absYehSmallVIni absEIni absYehThreeDotsBelowIni absAlefMaksuraIni absBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIni absBehThreeDotsHorizBelowIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehSmallVAboveIni absJeemIni absHahIni absKhahIni absHahHamzaAboveIni absHahTwoDotsVerticalAboveIni absNyehIni absDyehIni absHahThreeDotsAboveIni absTchehIni absTchehehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absHahTwoDotsAboveIni absHahThreeDotsUpwardBelowIni absSeenIni absSheenIni absSeenDotBelowDotAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSeenFourDotsAboveIni absSeenTwoVertAboveIni absSadIni absDadIni absSadTwoDotsBelowIni absSadThreeDotsAboveIni absDadDotBelowIni absTahIni absZahIni absTahThreeDotsAboveIni absAinIni absGhainIni absAinThreeDotsAboveIni absGhainDotBelowIni absAinTwoDotsAboveIni absAinThreeDotsDownAboveIni absAinTwoDotsVertAboveIni absFehIni absDotlessFehIni absFehDotMovedBelowIni absFehDotBelowIni absVehIni absFehThreeDotsBelowIni absPehehIni absFehTwoDotsBelowIni absFehThreeDotsUpwardBelowIni absQafNoDotsIni absQafIni absQafDotAboveIni absQafThreeDotsAboveIni absKafIni absKafDotAboveIni absNgIni absKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIni absGafTwoDotsBelowIni absGuehIni absGafThreeDotsAboveIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absSwashKafIni absLamIni absLamSmallVIni absLamDotAboveIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absLamRetroIni absLamBarIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absRnoonIni absNoonRingIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNoonRetroIni absNoonSmallVIni absHehDoachashmeeIni absHehHatIni absHehIni absHehIni__hooked absHehYehAboveIni absHehGoalIni absHehGoalHamzaAboveIni absHighHamza absFathatan absDammatan absFatha absDamma absShadda absSukun absMaddahAbove absHamzaAbove absUltaPesh absNoonGhunnaMark absZwarakay absVowelSmallV absVowelInvSmallV absReversedDamma absFathaTwoDots absSuperscriptAlef absSuperscriptAlef__large absSmallHighDotlessHeadOfKhah absAfghaniSign absComma absComma__downward absMisraSign absSemicolon absSemicolon__downward absQuestionMark absFivePointedStar absFullStop absPlaceOfSajdah absShaddaFathatan absShaddaDammatan absShaddaKasratan absShaddaFatha absShaddaDamma absShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlef absSukun__leftOpen absSukun__downOpen absDammatan__sixNine absAutoKashida absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed cDiaDigitAbove // Constructed Unicode 5.X characters ); cHasDiaB = ( absAlefMaddaAbove absAlefHamzaAbove absAlefHamzaBelow absAlef absAlefWavyHamzaAbove absAlefWavyHamzaBelow absHighHamzaAlef absAlefWasla absWawHamzaAbove absWaw absHighHamzaWaw absUHamzaAbove absWawRing absKirghizOe absOe absU absYu absKirghizYu absWawTwoDotsAbove absVe absWawDotAbove absWawDotBelow absDal absThal absDdal absDalRing absDalDotBelow absDalDotBelowSmallTah absDahal absDdahal absDul absDalThreeDotsAboveDownwards absDalFourDotsAbove absDalHat absDalTwoVertBelowSmallTah absDalInvSmallVBelow absReh absZain absRreh absRehSmallV absRehRing absRehDotBelow absRehSmallVBelow absRehDotBelowDotAbove absRehTwoDotsAbove absJeh absRehFourDotsAbove absRehTwoVertAbove absRehHamzaAbove absJehRetro1 absJehRetro2 absJeh__dotHat absRehHat absRehBar absYehBarree absYehBarreeHamzaAbove absYehHamzaAbove absYeh absYeh__noDots absHighHamzaYeh absFarsiYeh absYehSmallV absE absYehThreeDotsBelow absYehTail absAlefMaksura absBehNoDots absBeh absTeh absTheh absTteh absTteheh absBeeh absTehRing absTehThreeDotsAboveDownwards absPeh absTeheh absBeheh absBehThreeDotsHorizBelow absBehThreeDotsAboveDotBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehSmallVAbove absJeem absHah absKhah absHahHamzaAbove absHahTwoDotsVerticalAbove absNyeh absDyeh absHahThreeDotsAbove absTcheh absTcheheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3 absHahTwoDotsAbove absHahThreeDotsUpwardBelow absSeen absSheen absSeenDotBelowDotAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSheenDotBelow absSheenRetro1 absSheenRetro2 absSeenFourDotsAbove absSeenTwoVertAbove absSad absDad absSadTwoDotsBelow absSadThreeDotsAbove absDadDotBelow absTah absZah absTahThreeDotsAbove absAin absGhain absAinThreeDotsAbove absGhainDotBelow absAinTwoDotsAbove absAinThreeDotsDownAbove absAinTwoDotsVertAbove absFeh absDotlessFeh absFehDotMovedBelow absFehDotBelow absVeh absFehThreeDotsBelow absPeheh absFehTwoDotsBelow absFehThreeDotsUpwardBelow absQafNoDots absQaf absQafDotAbove absQafThreeDotsAbove absKaf absKafDotAbove absNg absKafThreeDotsBelow absKeheh absKafRing absGaf absGafRing absNgoeh absGafTwoDotsBelow absGueh absGafThreeDotsAbove absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absSwashKaf absLam absLamSmallV absLamDotAbove absLamThreeDotsAbove absLamThreeDotsBelow absLamRetro absLamBar absMeem absMeem__sindhi absMeemDotAbove absMeemDotBelow absNoon absNoonDotBelow absNoonGhunna absRnoon absNoonRing absNoonThreeDotsAbove absNoonTwoDotsBelow absNoonRetro absNoonSmallV absHehDoachashmee absHehHat absHeh absHeh__knotted absAe absTehMarbuta absHehYehAbove absHehGoal absHehGoalHamzaAbove absTehMarbutaGoal absHamza absSignSindhiAmpers absSignSindhiPostpositionMen absTatweel absAlefMaddaAboveFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin absHighHamzaAlefFin absAlefWaslaFin absWawHamzaAboveFin absWawFin absHighHamzaWawFin absUHamzaAboveFin absWawRingFin absKirghizOeFin absOeFin absUFin absYuFin absKirghizYuFin absWawTwoDotsAboveFin absVeFin absWawDotAboveFin absWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFin absDalDotBelowFin absDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFin absDalFourDotsAboveFin absDalHatFin absDalTwoVertBelowSmallTahFin absDalInvSmallVBelowFin absRehFin absZainFin absRrehFin absRehSmallVFin absRehRingFin absRehDotBelowFin absRehSmallVBelowFin absRehDotBelowDotAboveFin absRehTwoDotsAboveFin absJehFin absRehFourDotsAboveFin absRehTwoVertAboveFin absRehHamzaAboveFin absJehRetro1Fin absJehRetro2Fin absJehFin__dotHat absRehHatFin absRehBarFin absYehBarreeFin absYehBarreeHamzaAboveFin absYehHamzaAboveFin absYehFin absYehFin__noDots absHighHamzaYehFin absFarsiYehFin absYehSmallVFin absEFin absYehThreeDotsBelowFin absYehTailFin absAlefMaksuraFin absBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFin absBehThreeDotsHorizBelowFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehSmallVAboveFin absJeemFin absHahFin absKhahFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin absSeenFin absSheenFin absSeenDotBelowDotAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSeenFourDotsAboveFin absSeenTwoVertAboveFin absSadFin absDadFin absSadTwoDotsBelowFin absSadThreeDotsAboveFin absDadDotBelowFin absTahFin absZahFin absTahThreeDotsAboveFin absAinFin absGhainFin absAinThreeDotsAboveFin absGhainDotBelowFin absAinTwoDotsAboveFin absAinThreeDotsDownAboveFin absAinTwoDotsVertAboveFin absFehFin absDotlessFehFin absFehDotMovedBelowFin absFehDotBelowFin absVehFin absFehThreeDotsBelowFin absPehehFin absFehTwoDotsBelowFin absFehThreeDotsUpwardBelowFin absQafNoDotsFin absQafFin absQafDotAboveFin absQafThreeDotsAboveFin absKafFin absKafDotAboveFin absNgFin absKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absSwashKafFin absLamFin absLamSmallVFin absLamDotAboveFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absLamRetroFin absLamBarFin absMeemFin absMeemFin__sindhi absMeemDotAboveFin absMeemDotBelowFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absRnoonFin absNoonRingFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNoonRetroFin absNoonSmallVFin absHehDoachashmeeFin absHehHatFin absHehFin absHehFin__knottedFlat absHehFin__knottedHigh absHehFin__hooked absAeFin absTehMarbutaFin absHehYehAboveFin absHehGoalFin absHehGoalHamzaAboveFin absTehMarbutaGoalFin absYehHamzaAboveMed absYehMed absYehMed__noDots absHighHamzaYehMed absFarsiYehMed absYehSmallVMed absEMed absYehThreeDotsBelowMed absAlefMaksuraMed absBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMed absBehThreeDotsHorizBelowMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehSmallVAboveMed absJeemMed absHahMed absKhahMed absHahHamzaAboveMed absHahTwoDotsVerticalAboveMed absNyehMed absDyehMed absHahThreeDotsAboveMed absTchehMed absTchehehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absHahTwoDotsAboveMed absHahThreeDotsUpwardBelowMed absSeenMed absSheenMed absSeenDotBelowDotAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSeenFourDotsAboveMed absSeenTwoVertAboveMed absSadMed absDadMed absSadTwoDotsBelowMed absSadThreeDotsAboveMed absDadDotBelowMed absTahMed absZahMed absTahThreeDotsAboveMed absAinMed absGhainMed absAinThreeDotsAboveMed absGhainDotBelowMed absAinTwoDotsAboveMed absAinThreeDotsDownAboveMed absAinTwoDotsVertAboveMed absFehMed absDotlessFehMed absFehDotMovedBelowMed absFehDotBelowMed absVehMed absFehThreeDotsBelowMed absPehehMed absFehTwoDotsBelowMed absFehThreeDotsUpwardBelowMed absQafNoDotsMed absQafMed absQafDotAboveMed absQafThreeDotsAboveMed absKafMed absKafDotAboveMed absNgMed absKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMed absGafTwoDotsBelowMed absGuehMed absGafThreeDotsAboveMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absSwashKafMed absLamMed absLamSmallVMed absLamDotAboveMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absLamRetroMed absLamBarMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absRnoonMed absNoonRingMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNoonRetroMed absNoonSmallVMed absHehDoachashmeeMed absHehHatMed absHehMed absHehMed__hooked absHehMed__knottedHigh absHehYehAboveMed absHehGoalMed absHehGoalHamzaAboveMed absYehHamzaAboveIni absYehIni absYehIni__noDots absHighHamzaYehIni absFarsiYehIni absYehSmallVIni absEIni absYehThreeDotsBelowIni absAlefMaksuraIni absBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIni absBehThreeDotsHorizBelowIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehSmallVAboveIni absJeemIni absHahIni absKhahIni absHahHamzaAboveIni absHahTwoDotsVerticalAboveIni absNyehIni absDyehIni absHahThreeDotsAboveIni absTchehIni absTchehehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absHahTwoDotsAboveIni absHahThreeDotsUpwardBelowIni absSeenIni absSheenIni absSeenDotBelowDotAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSeenFourDotsAboveIni absSeenTwoVertAboveIni absSadIni absDadIni absSadTwoDotsBelowIni absSadThreeDotsAboveIni absDadDotBelowIni absTahIni absZahIni absTahThreeDotsAboveIni absAinIni absGhainIni absAinThreeDotsAboveIni absGhainDotBelowIni absAinTwoDotsAboveIni absAinThreeDotsDownAboveIni absAinTwoDotsVertAboveIni absFehIni absDotlessFehIni absFehDotMovedBelowIni absFehDotBelowIni absVehIni absFehThreeDotsBelowIni absPehehIni absFehTwoDotsBelowIni absFehThreeDotsUpwardBelowIni absQafNoDotsIni absQafIni absQafDotAboveIni absQafThreeDotsAboveIni absKafIni absKafDotAboveIni absNgIni absKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIni absGafTwoDotsBelowIni absGuehIni absGafThreeDotsAboveIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absSwashKafIni absLamIni absLamSmallVIni absLamDotAboveIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absLamRetroIni absLamBarIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absRnoonIni absNoonRingIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNoonRetroIni absNoonSmallVIni absHehDoachashmeeIni absHehHatIni absHehIni absHehIni__hooked absHehYehAboveIni absHehGoalIni absHehGoalHamzaAboveIni absHighHamza absKasratan absKasra absHamzaBelow absSubscriptAlef absVowelDotBelow absAfghaniSign absComma absComma__downward absMisraSign absSemicolon absSemicolon__downward absQuestionMark absFivePointedStar absFullStop absPlaceOfSajdah absAutoKashida absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed cDiaDigitBelow // Constructed Unicode 5.X characters ); cHasAlef = ( absWawHamzaAbove absWaw absHighHamzaWaw absUHamzaAbove absWawRing absKirghizOe absOe absU absYu absKirghizYu absWawTwoDotsAbove absVe absWawDotAbove absWawDotBelow absDal absThal absDdal absDalRing absDalDotBelow absDalDotBelowSmallTah absDahal absDdahal absDul absDalThreeDotsAboveDownwards absDalFourDotsAbove absDalHat absDalTwoVertBelowSmallTah absDalInvSmallVBelow absReh absZain absRreh absRehSmallV absRehRing absRehDotBelow absRehSmallVBelow absRehDotBelowDotAbove absRehTwoDotsAbove absJeh absRehFourDotsAbove absRehTwoVertAbove absRehHamzaAbove absJehRetro1 absJehRetro2 absJeh__dotHat absRehHat absRehBar absBehNoDots absBeh absTeh absTheh absTteh absTteheh absBeeh absTehRing absTehThreeDotsAboveDownwards absPeh absTeheh absBeheh absBehThreeDotsHorizBelow absBehThreeDotsAboveDotBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehSmallVAbove absJeem absHah absKhah absHahHamzaAbove absHahTwoDotsVerticalAbove absNyeh absDyeh absHahThreeDotsAbove absTcheh absTcheheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3 absHahTwoDotsAbove absHahThreeDotsUpwardBelow absTah absZah absTahThreeDotsAbove absFeh absDotlessFeh absFehDotMovedBelow absFehDotBelow absVeh absFehThreeDotsBelow absPeheh absFehTwoDotsBelow absFehThreeDotsUpwardBelow absKaf absKafDotAbove absNg absKafThreeDotsBelow absKeheh absKafRing absGaf absGafRing absNgoeh absGafTwoDotsBelow absGueh absGafThreeDotsAbove absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absLam absLamSmallV absLamDotAbove absLamThreeDotsAbove absLamThreeDotsBelow absLamRetro absLamBar absRnoon absNoonRetro absWawHamzaAboveFin absWawFin absHighHamzaWawFin absWawRingFin absKirghizOeFin absOeFin absUFin absYuFin absKirghizYuFin absWawTwoDotsAboveFin absVeFin absWawDotAboveFin absWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFin absDalDotBelowFin absDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFin absDalFourDotsAboveFin absDalHatFin absDalTwoVertBelowSmallTahFin absDalInvSmallVBelowFin absRehFin absZainFin absRrehFin absRehSmallVFin absRehRingFin absRehDotBelowFin absRehSmallVBelowFin absRehDotBelowDotAboveFin absRehTwoDotsAboveFin absJehFin absRehFourDotsAboveFin absRehTwoVertAboveFin absRehHamzaAboveFin absJehRetro1Fin absJehRetro2Fin absJehFin__dotHat absRehHatFin absRehBarFin absBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFin absBehThreeDotsHorizBelowFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehSmallVAboveFin absJeemFin absHahFin absKhahFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin absTahFin absZahFin absTahThreeDotsAboveFin absFehFin absDotlessFehFin absFehDotMovedBelowFin absFehDotBelowFin absVehFin absFehThreeDotsBelowFin absPehehFin absFehTwoDotsBelowFin absFehThreeDotsUpwardBelowFin absKafFin absKafDotAboveFin absNgFin absKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absLamFin absLamSmallVFin absLamDotAboveFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absLamRetroFin absLamBarFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absRnoonFin absNoonRingFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNoonRetroFin absNoonSmallVFin absYehHamzaAboveMed absYehMed absYehMed__noDots absHighHamzaYehMed absFarsiYehMed absYehSmallVMed absEMed absYehThreeDotsBelowMed absAlefMaksuraMed absBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMed absBehThreeDotsHorizBelowMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehSmallVAboveMed absJeemMed absHahMed absKhahMed absHahHamzaAboveMed absHahTwoDotsVerticalAboveMed absNyehMed absDyehMed absHahThreeDotsAboveMed absTchehMed absTchehehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absHahTwoDotsAboveMed absHahThreeDotsUpwardBelowMed absSeenMed absSheenMed absSeenDotBelowDotAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSeenFourDotsAboveMed absSeenTwoVertAboveMed absSadMed absDadMed absSadTwoDotsBelowMed absSadThreeDotsAboveMed absDadDotBelowMed absTahMed absZahMed absTahThreeDotsAboveMed absFehMed absDotlessFehMed absFehDotMovedBelowMed absFehDotBelowMed absVehMed absFehThreeDotsBelowMed absPehehMed absFehTwoDotsBelowMed absFehThreeDotsUpwardBelowMed absQafNoDotsMed absQafMed absQafDotAboveMed absQafThreeDotsAboveMed absKafMed absKafDotAboveMed absNgMed absKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMed absGafTwoDotsBelowMed absGuehMed absGafThreeDotsAboveMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absSwashKafMed absLamMed absLamSmallVMed absLamDotAboveMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absLamRetroMed absLamBarMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absRnoonMed absNoonRingMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNoonRetroMed absNoonSmallVMed absHehDoachashmeeMed absHehMed absHehMed__knottedHigh absHehYehAboveMed absYehHamzaAboveIni absYehIni absYehIni__noDots absHighHamzaYehIni absFarsiYehIni absYehSmallVIni absEIni absYehThreeDotsBelowIni absAlefMaksuraIni absBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIni absBehThreeDotsHorizBelowIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehSmallVAboveIni absJeemIni absHahIni absKhahIni absHahHamzaAboveIni absHahTwoDotsVerticalAboveIni absNyehIni absDyehIni absHahThreeDotsAboveIni absTchehIni absTchehehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absHahTwoDotsAboveIni absHahThreeDotsUpwardBelowIni absSeenIni absSheenIni absSeenDotBelowDotAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSeenFourDotsAboveIni absSeenTwoVertAboveIni absSadIni absDadIni absSadTwoDotsBelowIni absSadThreeDotsAboveIni absDadDotBelowIni absTahIni absZahIni absTahThreeDotsAboveIni absKafIni absKafDotAboveIni absNgIni absKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIni absGafTwoDotsBelowIni absGuehIni absGafThreeDotsAboveIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absSwashKafIni absLamIni absLamSmallVIni absLamDotAboveIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absLamRetroIni absLamBarIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absRnoonIni absNoonRingIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNoonRetroIni absNoonSmallVIni absHehDoachashmeeIni absHehHatIni absHehIni absHehIni__hooked absHehYehAboveIni absHehGoalIni absHehGoalHamzaAboveIni absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed); cHasDigit = ( absNumberSign absYearSign absFootnoteSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMedium absThreeMedium absFourMedium absFiveMedium absSixMedium absSevenMedium absEightMedium absNineMedium absEasternZeroMedium absEasternOneMedium absEasternTwoMedium absEasternThreeMedium absEasternFourMedium absEasternFourMedium__urdu absEasternFiveMedium absEasternSixMedium absEasternSixMedium__urdu absEasternSevenMedium absEasternSevenMedium__urdu absEasternEightMedium absEasternNineMedium zeroSmall oneSmall twoSmall threeSmall fourSmall fiveSmall sixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmall absEasternZeroSmall absEasternOneSmall absEasternTwoSmall absEasternThreeSmall absEasternFourSmall absEasternFourSmall__urdu absEasternFiveSmall absEasternSixSmall absEasternSixSmall__urdu absEasternSevenSmall absEasternSevenSmall__urdu absEasternEightSmall absEasternNineSmall absEndOfAyah__2 absEndOfAyah__3 absEndOfAyah__alt__2 absEndOfAyah__alt__3 absEndOfAyah__altB__2 absEndOfAyah__altB__3 absNumberSign__2 absNumberSign__3 absYearSign__2 absYearSign__3 absYearSign__4 absFootnoteSign__2 absPageSign__2 absPageSign__3); cHasEntry = (absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed); cHasExit = (absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef); cHasDia2B = (absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed); // Attachees cMatchesDiaA = (absFathatan absDammatan absFatha absDamma absShadda absSukun absMaddahAbove absHamzaAbove absUltaPesh absNoonGhunnaMark absZwarakay absVowelSmallV absVowelInvSmallV absReversedDamma absFathaTwoDots absSuperscriptAlef absSuperscriptAlef__large absSmallHighSadLamAlefMaksura absSmallHighQafLamAlefMaksura absSmallHighMeemInitialForm absSmallHighLamAlef absSmallHighJeem absSmallHighThreeDots absSmallHighSeen absSmallHighRoundedZero absSmallHighUprightRectangularZero absSmallHighDotlessHeadOfKhah absSmallHighMeemIsolatedForm absSmallHighMadda absSmallHighYeh absSmallHighNoon absEmptyCentreHighStop absRoundedHighStopFilledCentre absSmallHighSadMark absSmallHighAinMark absSmallHighRehHahMark absSmallHighRehDadMark absNameMarker absSmallHighTah absShaddaFathatan absShaddaDammatan absShaddaKasratan absShaddaFatha absShaddaDamma absShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlef absSukun__leftOpen absSukun__downOpen absDammatan__sixNine r_comma // for testing non-canonical ordering ); cMatchesDiaB = (absKasratan absKasra absHamzaBelow absSubscriptAlef absVowelDotBelow absSmallLowSeen absEmptyCentreLowStop absSmallLowMeem); cMatchesDia2B = (absHamzaBelow absSmallLowSeen absEmptyCentreLowStop absSmallLowMeem); cMatchesAlef = (absSuperscriptAlef); cMatchesDigit = (zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMedium absThreeMedium absFourMedium absFiveMedium absSixMedium absSevenMedium absEightMedium absNineMedium absEasternZeroMedium absEasternOneMedium absEasternTwoMedium absEasternThreeMedium absEasternFourMedium absEasternFourMedium__urdu absEasternFiveMedium absEasternSixMedium absEasternSixMedium__urdu absEasternSevenMedium absEasternSevenMedium__urdu absEasternEightMedium absEasternNineMedium zeroSmall oneSmall twoSmall threeSmall fourSmall fiveSmall sixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmall absEasternZeroSmall absEasternOneSmall absEasternTwoSmall absEasternThreeSmall absEasternFourSmall absEasternFourSmall__urdu absEasternFiveSmall absEasternSixSmall absEasternSixSmall__urdu absEasternSevenSmall absEasternSevenSmall__urdu absEasternEightSmall absEasternNineSmall); // Not needed by Graphite (only by AAT): /*** cHasAbove = ( absAlef absWaw absDal absReh absYehBarree absYeh__noDots absBehNoDots absHah absSeen absSad absTah absAin absDotlessFeh absQafNoDots absKaf absKeheh absLam absMeem absMeem__sindhi absNoonGhunna absHehDoachashmee absAe absHamza absLamAlef absAlefFin absWawFin absDalFin absRehFin absYehBarreeFin absYehFin__noDots absBehNoDotsFin absHahFin absSeenFin absSadFin absTahFin absAinFin absDotlessFehFin absQafNoDotsFin absKafFin absKehehFin absLamFin absMeemFin absMeemFin__sindhi absNoonGhunnaFin absHehDoachashmeeFin absHehFin__knottedHigh absAeFin absHehGoalFin absLamAlefFin absBehNoDotsMed absHahMed absSeenMed absSadMed absTahMed absAinMed absDotlessFehMed absKafMed absLamMed absMeemMed absHehDoachashmeeMed absHehMed__knottedHigh absBehNoDotsIni absHahIni absSeenIni absSadIni absTahIni absAinIni absDotlessFehIni absKafIni absLamIni absMeemIni absHehDoachashmeeIni absMisraSign absLamIni__preAlef absAlefFin__postLamIni absLamMed__preAlef absAlefFin__postLamMed); cHasBelow = ( absAlef absWaw absDal absReh absYehBarree absYeh__noDots absBehNoDots absSeen absSad absTah absAin absDotlessFeh absQafNoDots absKaf absKeheh absLam absMeem absMeem__sindhi absNoonGhunna absHehDoachashmee absAe absHamza absLamAlef absAlefFin absWawFin absDalFin absRehFin absYehBarreeFin absYehFin__noDots absBehNoDotsFin absSeenFin absSadFin absTahFin absAinFin absDotlessFehFin absQafNoDotsFin absKafFin absKehehFin absLamFin absMeemFin absMeemFin__sindhi absNoonGhunnaFin absHehDoachashmeeFin absHehFin__knottedHigh absAeFin absHehGoalFin absLamAlefFin absBehNoDotsMed absHahMed absSeenMed absSadMed absTahMed absAinMed absDotlessFehMed absKafMed absLamMed absMeemMed absHehDoachashmeeMed absHehMed__knottedHigh absBehNoDotsIni absHahIni absSeenIni absSadIni absTahIni absAinIni absDotlessFehIni absKafIni absLamIni absMeemIni absHehDoachashmeeIni absMisraSign absLamIni__preAlef absAlefFin__postLamIni absLamMed__preAlef absAlefFin__postLamMed); cHasCenter = (absWaw absReh absHah absWawFin absRehFin absHahFin); cHasRing = (absWaw absDal absReh absBehNoDots absKeheh absNoonGhunna absWawFin absDalFin absRehFin absBehNoDotsFin absKehehFin absNoonGhunnaFin absBehNoDotsMed absKafMed absBehNoDotsIni absKafIni); cHasThrough = (absWaw absReh absLam absLamAlef absWawFin absRehFin absLamFin absLamAlefFin absLamMed absLamIni); cHasAbove2 = (absLamAlef); cHasBelow2 = (absLamAlef); cHasDiaA1 = (absLamAlef absLamSmallVAlef absLamDotAboveAlef absLamThreeDotsAboveAlef absLamThreeDotsBelowAlef absLamRetroAlef absLamBarAlef absLamAlefFin absLamSmallVAlefFin absLamDotAboveAlefFin absLamThreeDotsAboveAlefFin absLamThreeDotsBelowAlefFin absLamRetroAlefFin absLamBarAlefFin); cHasDiaA2 = (cHasDiaA1); cHasDiaB1 = (cHasDiaA1); cHasDiaB2 = (cHasDiaA1); cHasDia2B2 = (cHasDiaA1); cHasAlef1 = (cHasDiaA1); cHasAlef2 = (cHasDiaA1); cMatchesAbove = (absZwarakay absSmallHighSadMark absSmallHighAinMark absSmallHighRehHahMark absSmallHighRehDadMark ring caron _dot1 _dot1_tah _dot1_smallV _dot1_hat _dot2h _dot2h_tah _dot2v _dot3u _dot3u_tah _dot3d _dot3h _dot4 _tah _madda _hamza _highHamza _wavyHamza _wasla _hamzaDamma _smallV _invSmallV _damma _vline _hat _gafBar _gafBar_dot2h _gafBar_dot3u _gafBarShort _gafBarShort_dot2h _gafBarShort_dot3u0; cMatchesBelow = (_dot1 _dot1_tah _dot1_smallV _dot1_hat _dot2h _dot2h_tah _dot2v _dot3u _dot3u_tah _dot3d _dot3h _dot4 _tah _hamza _wavyHamza _wasla _smallV _invSmallV _hat _lines); cMatchesCenter = (_dot1 _dot2h _dot2h_tah _dot2v _dot3u _dot3u_tah _dot3d _dot3h _dot4 _tah _bar); cMatchesRing = (_ring); cMatchesThrough = (_bar); ***/ endtable; // glyph grcompiler-5.2.1/test/GrcRegressionTest/fonts/SchBenchmark.ttf000066400000000000000000011132141411153030700244530ustar00rootroot00000000000000`Feat@$TGlatxZjSGlocFD LTSH>KlOS/2n `SilfKHSilloxVDMX[ccmap7o `cvt 5`fpgm2Psi|bgasp glyfhdmxm6Pkheadb->-6hheav-$hmtxb.loca@maxp S nameSpost\Y!4lIprepu,jLL;LL+/"DLD;L"/L77LL77DLL"D73D/L/DDD;DXXXX SIL@ JA       !"#$ % &!'"(#)$*%+&,&-'.(/)0*1+2,3-4-5.6/708192:3;3<4=5>6?7@8A9B9C:D;E<F=G>H?I?J@KALBMCNDOEPFQFRGSHTIUJVKWLXLYMZN[O\P]Q^R_R`SaTbUcVdWeXfYgYhZi[j\k]l^m_n_o`paqbrcsdteuevfwgxhyizj{k|k}l~mnopqrrstuvwxxyz{|}~~& $%&'()*+,-./0123456789:;<=>DEFGHIJKLMNOPQRSTUVWXYZ[\]^b6ACSTU"#efoptuwx~?7ID[$+4lv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiulv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiu*w#5,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-<3Bci+EX/ >YEX0/0 >YEX;/; >YEX>/> >Yn+nX01#".54>32#"&/&#"#".54>3232767>32#".'+#".54>3232>7>54.54>32>76332654.54>32!%!!#  C        b %<^t8&=* !/6;7/# 2*    "   u       3,  "jG,; ?4 #. ,   @0+#.   8m0H+A]A )9IYiy ]9/A! )9IYiy]A! )9IYiyqA! )9IYiyr и/)и)//$/01"&54.'.54632#".54>32j    0#&0 &3FBS"-'*=[EE[=*'-"SBGHH 3d^!"/#/ܸ A ]A  ) 9 I Y i y ]"и/A&6FVfv ]A]//EX/ >YEX/ >Y01#.54632#.54632 %",#( !+#),[\Z*"Y_]%)1-""ei]'W[Z)'3-EX/ >YEX/ >YEX / >YEX/ >YEX/ >YEX/>YEX/>Y+ии и ܸ иииии01#!##53#533333#3!F=EG@F5E//EX/ >YEX/ >YEX/>YEX/>Yܸ(ܸ.к89>9?01%#5.'53.54>753#.'4.'>1Sk:1D?!zg._L1-J`31"><= gk-hY;7(+5#5>&A0>cG)^^jl ?M`>8X>#FF  g GTf#4#"<3*Z&?5,k3Cu7Mg'^)+N+D +A ]A  ) 9 I Y i y ])D9A!&6FVfv]A!&6FVfvqA!&6FVfvrи/NQиQ/A^^&^6^F^V^f^v^^^ ]A^^]6/EX./. >YEX/>YEX/>Ya$+a=и=/ܺ6969GAGG'G7GGGWGgGwGGG ]AGG]01#"&54>32##"&'#".54>32326734.#"32>4&'.#"32>$4CS0h\8]yB#<,J.^2' 0VsD3F+7]xB)42:.Fx,J)#>5)-3%B7,  '" ,.*6&B7+)]ZR?%qd@hB.>G)=tL 8O.?kC 29^.$&?PRN1;"9INL(!#9I1A#:JPN9Pdvpm+[+&Q+&8и8/AQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ rA[[&[6[F[V[f[v[[[ ]A[[]Amm&m6mFmVmfmvmmm ]Amm]EX!/! >YEX/>YEX/>YMAMM'M7MGMWMgMwMMM ]AMM]P!9!VAVV]AVV(V8VHVXVhVxVVV ]rArr'r7rGrWrgrwrrr ]Arr]01%#".'#".54>7.54>32>54.#5!"32674.#">.'32> (:M/(JC<%INX33aL/;[p4'(F`8*J8!/IX(-c9/& >  "J+2:?!9DH+1$  #C4 FAk3$A22F+962,M8 *5 7'9V8Ao\I3v99\@".D,5SA2RJ?EI#  $)(J,)J7 #?^/EX / >Y01#'.54632 )!) %#& F9-?/+L`%M +A&6FVfv ]A]//01.'.54>7>76>?%D33D%?>6 Ac####cA ".7)\mMMl\(8." ?wD"MXd9:eYM"DtA+`%M+A]A )9IYiy ]/ /01%'>7>54.'.'73D&A=7 Ac#$$#cA 7=A&D3Mm\)7." AtD"MYe:9dXM"Dw? ".8(\l 9/?O_o +A!&6FVfv]A!&6FVfvqA&6FVfv rAr`иf/c/-#+#Uи-[01'&>7>'#".54632#".54>32%.'.76&'.76%#"&54632#"&54>32''&67>B 43(%1  !(*?;));?*((45 /$ 1%(34*;?+''+?;*l  Z$/ 54( .$ (34>;**;>,&&   $. 43( 33( $.  ,&&,>;**;>(33 .$ %hH ?+и// +и 01#!5!3!=}=@}@T3`//EX/>YEX / >YEX / >YEX/>YEX/>Y01567>54#"#"54676323>/  P '2$)L#1?" T '/=` +0175!=rrm /EX/>Y01%#".54>32m3& B&3 B //01#7=^?77J8/9/ܸ8и/A]A )9IYiy ]*A**&*6*F*V*f*v*]A**]A**]EX/ >YEX/>Y#A##]A##(#8#H#X#h#x### ]1A11'171G1W1g1w111 ]A11]01#".54>324.#"32> 3KcA<`H3  4Jc>>aI2  (<+,=)  )<+/?) 3wwpU43Tmus01vwqW43SmusXcbO1;^tqaZegR3=awtdH-+EX/ >YEX/>Y01352>546.#"'73316 ( 41 ";-@85'z,:##+ +A ]A  ) 9 I Y i y ]-EX/ >YEX/>YA]A(8HXhx ]$01)5>54.#"#>32!2>73{*hkeO04J/Xm+HfB:iP0(?M%9s= %<4/'`nx|~=,Q>$\P>iM,'Gc=9qka(=9"!?<A5"+A""]A "")"9"I"Y"i"y""" ]"59/A]A )9IYiy ]EX0/0 >YEX/>YA'7GWgw ]A]0'A'']A''('8'H'X'h'x''' ]:0901#".5463232>54.'5>54.#"'>32@oS=8(&15;"(F3.Pl>.S@&,>&A_#2AS8.VB('1]aRXY- !7H'Da?'>S0%?.G6 .O;!5M3#@:3" i+и иEX/ >YEX/>Y+к 9 01#!533 !F}PRg_ekgJ%c+ArA! )9IYiy]A! )9IYiyqA )9IYiy r'EX$/$ >YEX / >Y$$#ܺ$#9 A'7GWgw ]A]01!#".5463232>54.'!dEMvHBoP=6&,/6!/Q;"SKm}=dTRh;(%?S/Y}P'D!:);/YEX/>Y'+96A66'676G6W6g6w666 ]A66]01#".54>;>324.#"32>.VxJ6ZG4#(JiR+]rN1n<>`B",M;+*(  ,;$.@(XEf=$>R]c/N{[4M{U"*3Ul.o`A  *Q)GID6 .FT9 /EX / >YEX/>Y 01#!"'7!hQ1-A3*c  0'\'8J/ +(+A((]A (()(9(I(Y(i(y((( ]9(99/A99]A 99)999I9Y9i9y999 ]ܸ и/# 9A//&/6/F/V/f/v/]A//]A//]/AиA/EX/ >YEX/>Y#9*A**]A**(*8*H*X*h*x*** ]FAFF'F7FGFWFgFwFFF ]AFF]01%#".54>7.54>324#">4.'32>0Rl;6jT3'J"'SC,">0(=F1&3JT"9B/F/$@1@bA!"A];-RG; 8R8-L?3DO\%8%*I>515@1WLB1}M+M9"':=!8-9/:/ܸ9и/9"A""]A "")"9"I"Y"i"y""" ],A,,&,6,F,V,f,v,,, ]A,,]"6и6/EX/ >YEX/>Y1+9'A'']A''('8'H'X'h'x''' ]01+5>7#".54>324.#"32>7>(JiS+\rN0m:?aC",SvK6ZH6$/M9.@&*H802*  oN|\4M}S .3Vn:Dg@$>T]c,rhG/FT&+naB &M?!]+A&6FVfv ]A]и //01#"&54632#".54632%33% 3% 3%&2  %3 b)m/EX / >YEX/>YEX/>YEX / >YEX/>YEX/>Y01#"'&547632567654#"#"547632?"###?03 P&0$+u"  &]L#17FT('.)9B//9015 ){]V]]%h5++015!5!%CC??@@)9B//901%5 5){9](']]Fq.<=/>/ܸA]A )9IYiy ]=%и%/A!&6FVfv]A!&6FVfvqA&6FVfv rAr и /EX / >YEX*/* >YEX2/2>Y*A]A(8HXhx ]01#>7>54.#"#".54>32#"&54>32q(=H?,5/(+A-2+!  0Ma27fO/1##3#1'9[RNXhC[M3q>(J:# &$#! &#*8R4:Y#0.% 3Jh/^vɻT +k++H+! 94 96 9AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rA!TT&T6TFTVTfTvTTTTTTTTT]A!TT&T6TFTVTfTvTTTTTTTTTqATT&T6TFTVTfTvTTTTT rATTrAkk&k6kFkVkfkvkkk ]Akk]xEXM/M >YEX/>Yp&+d+pи/&к!M9d5и5/6d9@ܸYAYY'Y7YGYWYgYwYYY ]AYY]01%#".546$32#"&5467#".54>32?32>7>54.#"32>74.#"32>hjbjvƏP.F\tE7;DPT)#3!8M[h6mw#'!# :3,<5KgcqM)Uۅjx*>%%KC:*  *OE9)kxAg sGy<~vhM-485JB-2=1uuoU3hR Ww{_ %/NakyA7a]ݟY;l_,#3Sgi`!&/Mbe_ J),>EX!/! >YEX/>YEX/>Y, +01!52>54.'!!5>73!$t &(&5% ic&6*`HLB%/42* !1<I#;--`&7HoA+'+A'']A '')'9'I'Y'i'y''' ]8'98/A88]A 88)898I8Y8i8y888 ]ܺ"9A/EX/ >YEX/>Y3=+"=39,A,,]A,,(,8,H,X,h,x,,, ]=@и@/DADD'D7DGDWDgDwDDD ]ADD]01#!52>54.#5!24.#"32>4.#*32>&BWae/09 :1/d`VA&2D'3T>"3Qe3#E"$I#5dN/:[r8 F ,V-3cO1' !;.0;" &=W;+H9* %;SYEX / >YEX/ >YEX/>Y A]A(8HXhx ]+A++'+7+G+W+g+w+++ ]A++]01%#".54>322>73#.#"32>7EѐrFKu'C?>" ;SnGFkQ7!,]e@aOD"|PorǕV  @kN,)H`ow:[|H7O1) */+/ܸ* и /A]A )9IYiy ] "EX/ >YEX/>YA]A(8HXhx ]%A%%'%7%G%W%g%w%%% ]A%%]01#!52>54.#5!24.#"32>V{809 :1_5ie(M''Q(dg5@ !;/0YEX/ >YEX/>Y&+ܸ-01)52>54.#5!#.#!32>73#.+;2>73309 :1  'C9/9#"90$!CV?2  !;/0: 1A&l !9--:#+0M6-X$+EX / >YEX+/+ >YEX/>Y++01.+32>73#4.+3!52>54.#5!$4I3&/ 3& ;1J1: :0 2A&n$4"$6$/;!  !;..;# 5F=,>/?/ܸ>и/"и"/-A--&-6-F-V-f-v--- ]A--]5EX / >YEX/ >YEX / >Y A]A(8HXhx ](и 2A22'272G2W2g2w222 ]A22]01"#".54>32232>73#.#"32674.'5!F*.R`uΙYSs2a0!  cG&NYYY)*8";;{YEX-/- >YEX/>YEX/>Y&+01!52>5!3!52>54.#5!"!4.#5!"30; " ;1J1: :00:!  ;0-9!  9- !;.:/;!  !;//;"  ";/%/;"  7-T.8 '-+EX / >YEX/>Y01352>54.#5!"3'1::10: :2 !;./;"  ";/j.;! !P&m+EX%/% >YEX / >YA'7GWgw ]A]01"#".543232>54.#5!P1: YEX7/7 >YEX/>YEX/>Y*"901!52>54.'3!52>54.#5!">54."#5!"  - :0N1991/9 IX\L0 y7mbT{ ?DM0 3-/;!  !;/.;#  ";/AR[VG=W\ !9*"3+EX/ >YEX/>Y01)52>54.#5!";2>77$8%%8$%8& 2&fJdI8 2)(2  2(_&1 /UD=0 +*+!*9*2EX/ >YEX"/" >YEX/>YEX/>YEX/>Y9 9!901!52>5#3!52>54.#5! !"309 tu 9008 7+ sm"0: 90 !:.\V/:!  !:.)9# !:.d/:! F'(/)/ܸ(и/ и/EX/ >YEX&/& >YEX/>YEX/>Y9901"#3!52>5.#534.#5!F0: \ :009 !%0#q 90e !:.70:  !:.'N.:! 5/J0/1/ܸ0 и /A]A )9IYiy ] "A""&"6"F"V"f"v"]A""]A""]EX/ >YEX/>YA]A(8HXhx ])A))')7)G)W)g)w))) ]A))]01#".54>324.#"32>HrrFKqoF 0JgF@aH0 0Hb@CeJ1 mĕWVnoSUt8tl^F))F^io43plbJ,(E]iq%"34/5/ܸ4и/ ܸ#A##]A ##)#9#I#Y#i#y### ] +EX/ >YEX/>Y/+и/(A((]A((((8(H(X(h(x((( ]01#"&'3!52>54.#5!24.#"32>%9bI A" :0L0991tEuK7Q43> -G2Sm@/;!  !;/0;" ?nd1W@& P%=O567/8/ܸ и /7и/A]A )9IYiy ]+A++&+6+F+V+f+v+++ ]A++]EX/ >Y2 +$A$$]A$$($8$H$X$h$x$$$ ]01.'&54>324.#"32>4aWL[m@R7JrpF 1IdCAdH0 1Hc@bK[e5]H-/Mh=AoSV~6socJ,)G^jp54pk`I+T-<=/>/=и/ܸ>!ܺ&!9.A..]A ..).9.I.Y.i.y... ]6EX/ >YEX/>YEX / >Y&93A33]A33(383H3X3h3x333 ]6и6/01!"'3!52>54.#5!24.#"32>9 ;0J1::1-_[R>$&C\54YEX*/* >YEX4/4 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и4/A//]A//(/8/H/X/h/x/// ]<01#".#"#332>54.54>3232>73#.#"6Yt>)RI<  .LkD%I9$/LbebL/1Rk;#E?4  *GdA"@30OdidO0CjJ(  aAlM+*?*,G=78>K[:?dE$ L]%?+EX/ >YEX / >Yи01.+3!52>5#"#7!h X[90P08 {0H1# P WY/:!  !:. (D3L4+,+6EX/ >YEX3/3 >YEX / >Y$A$$'$7$G$W$g$w$$$ ]A$$]01"#".54.#5!"3267>54.#5!L.: '[q}X5-,4 9iUE~3 :0k&=,`ir=>wo*:%%:*AGa9,0KSS0;" H&@EX/ >YEX%/% >YEX/>Y901#.'5!>54.'5!H 0$ #2%'# !&<&1s 0"6#R !  =vEX/ >YEX%/% >YEXYEX/>YEX / >Y990901"# #.#5!".#5!">54.#5!(4"  2*y# Ȫ ,A0'  !&/%9DrR!=0  " %]R8 K5 "!  HR[EX(/( >YEXC/C >YEX/>YEX/>Y (96(901!52>54.'3!5>7.'5!>54.'5!$ 091# "'H@75?L3%!'/+!&390$% j-C6/0:G.  =OVJ2  0;3''E4! 5AF=,+>HC7 .;!#H<)F7R+*9EX/ >YEX6/6 >YEX / >Y* 901"3!52>=.#5!">54.#5!F-@3) 90N08%,6")$%9B9( $e0?!}/:!  !:.4+ J]eU:;  7EX / >YEX/>Y ܸ 01)5!"#!!2>7T9I- `;N5$.L6?7O2?+//01%%)(O//EX/>Y013uBnF =+//01'7'7NXO)bj///901% #3\V\V{R +015!77V //01'&5432wD/(2*:27BRRH+7R+R иRAHH&H6HFHVHfHvHHH ]AHH],H9,/&ܸ7TEX1/1 >YEX/>YEX/>Y 191!A!!]A!!(!8!H!X!h!x!!! ]=A=='=7=G=W=g=w=== ]A==]B19C19M01%#".5#".54>754.#"#"&54>3232>732>7#)026:"'=*'@RVR 2*")&#2KX'AY6  "ZO7()'$d)!!((!0A&*F:/% #A3#/"&( /B*9YA@%3D--$ /1%2/3/ܸ2и/*ܸк9A]A )9IYiy ]/EX/ >YEX/>Y9$A$$]A$$($8$H$X$h$x$$$ ]-A--'-7-G-W-g-w--- ]A--]01#"&'46.#"'73>324.#"32>3]QE7 #/6>#DdA/J6+'$ S05H,uLnC4'@@/R 3'=axg,`Q5c"*YEX/>YA]A(8HXhx ]A]A(8HXhx ](A(('(7(G(W(g(w((( ]A((]01#".54>32#".#"32>7{ 0Kb;KoI$.VzL#RF0' " **2E*6U<*B3'6fP1AiBHf<*>)"(/(/JY*3n\;0?"3 /*=H>/?/ܸ=ܸи> и / 9=и 5A55&565F5V5f5v555 ]A55]/EX/ >YEX/>YEX/>Y990A00]A00(080H0X0h0x000 ]:A::':7:G:W:g:w::: ]A::]01#5#".54>32546.#"'7332674.#"32679 *eYEX/>Y +A'7GWgw ]A]%A%%]A%%(%8%H%X%h%x%%% ]01%#".54>32!32>7'4.#"0Ja9JqL&'OyQ>bD$#>_A(?1% %8''<+6cL.>fCKf=*Kg=8t_=-=##B3 3C#9/1f#+и#'EX/ >YEX&/& >YEX/>Y- +ܸ$и%01#".#"3#3!52>5#5354>32  &(1$'  "?4`-4$HlHB:)  *3*0<>817;4= %:)7/By\7!0-Ma|!q*+N+b+и/ANN]A NN)N9NINYNiNyNNN ]N9Aqq&q6qFqVqfqvqqq ]Aqq]>*q9>/ܸ>4и4/9*9>XAbbrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA bb)b9bIbYbibybbbbb r~EXC/C >YEX#/#>Y#C99#C9xAxx'x7xGxWxgxwxxx ]Axx]01&##"&'2#".54>7.54>7.54>32326324.#"32>4.'.'32>+/-Lb55%-I^b^I-$> ( ":,&3 #;-'2  doj# /;:4"[R9uI#:W;*#>3.L=, )971 /,& ,7?!:]@##SH0!3@ $RF.2?  #%"  ":/=>/?/7ܸܸ>и/ܸ+к,79*/EX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ],*901!52>54.#"3!52>54.#"'73>323"+ .+0,&+$!*  #09C%BI#(! +" H=)$",  + $!R5'=\n1+ / %I+и/и/ /EX/ >YEX / >Y01#"&5463252>54.#"'733/, -- -"*   !)" .," +,C +!q # T!+ - .} #+ и/ /EX-/- >YEX/>YA'7GWgw ]A]01#"&54632#".5463232>4546.#"'73-. ,-/ @hM.+$'!!  ! .,",,QC}a;'->@<:+ T  /C^ + &%/EX1/1 >YEX/>YEX/>Y %9'%901!52>54&'3!52>5464.#"'737>54&'5!23  -('-   #%+ 3,)$&, +    $1  0& "((!R^  .*$-/ +/EX/>Y01352>546.#"'7339$)  !-% /:9)Rm#0 ^ +8++X++DкE8X9M9X`EXC/C >YEXJ/J >YEXR/R >YEX/>YEX/>YEX1/1>YR A ]A  ( 8 H X h x ]%и%/>кEC9MC901!52>54.#"3!52>54.#"3!52>546.#"'73>32>323V(- -$1-(-')- .$1-'.'%)  !5:B'JU3:D(8H()$ 1$+;0"$1  1%+<0#$1 0!;;+T4*ME4)-H\/ 0=Ǹ>/?/7ܸܸ>и/ܸ+к,79EX*/* >YEX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ]%к,*901!52>54.#"3!52>546.#"'73>323'-,&2-'-'&*  3:B#8G(,% 1%@5"$$1 0!BB2T4*.K\/!03+J,/-/ܸ, и /A]A )9IYiy ]  A  & 6 F V f v ]A ]A ]EX/ >YEX/>YA]A(8HXhx ]'A''''7'G'W'g'w''' ]A'']01#".54>324.#"32>/X~OKyU//X|MK{W/ 0A+3B& !0A*6B$ fKi?=dFIg>7`!PQK;#3M\)!PRM<$3O^+@YA/B/ܸAи/ ܸ!к"9,A,,]A ,,),9,I,Y,i,y,,, ] 6EX / >YEX'/' >YEX/>YEX/>Y'9 A]A(8HXhx ]"'91и546.#"'73>324.#"32>(PwO.S"/(*0 ,7A'Db?y,M=.)# "?68L.sFpG &2 4)*% V;.?by0o`@#(+O=$3Pa3#4I5/6/ܸܸ5и/и/$и,A,,&,6,F,V,f,v,,, ]A,,]EX/ >YEX/ >YEX/>YEX / >Y9'A'']A''('8'H'X'h'x''' ] 1A11'171G1W1g1w111 ]A11]0152>5#".54>3267334&#"3267&,39@#Aa@ 1[T%L.(-%HR:O02O:-L 0$+4)?cw9NmA#0 8MX6Se01fS52 0P+&EX%/% >YEX,/, >YEX/>Y'%901#".#"3!52>54.'&#"'73>32) 2G'+  $-5$s*'& BA 1$ 04.  T6/ L#CD/E/ܸD#и#/и/A]A )9IYiy ]#=A!==&=6=F=V=f=v=========]A!==&=6=F=V=f=v=========qA==&=6=F=V=f=v===== rA==rEX(/( >YEX0/0 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и(8A88]A88(888H8X8h8x888 ]01%#".#"#5332>54.54>3232673#.#"#*BS)30+ "5G-+!5P\P5&>Q*&&% ,?*/'9UcU9-H4 )L;# &0A2-9M90E.  %E6!$2?/*7Q  S +/EX/ >YEX/>Y9 ܸи01%#".5#5>733#3267 -7 (5 m'A5)"( 6*3B#8GN$33(##0ø1/2/(ܸܸи1 и / (9EX/ >YEX&/& >YEX/>YEX/>Y9A'7GWgw ]A]-01#5#".54.#5332>74.#533275#4;A$8F' - -#0,' +  4+2N`-5"*38,# ' $!  $@EX/ >YEX#/# >YEX/>Y901#.'5!">54.#53   $F    !J" !N8vEX/ >YEX/ >YEX7/7 >YEX/>YEX/>Y99-901# #.'5!".'5!>54.#53N%/ "#& .*J!!(%  /#EF# sC$?0 >VaYE }! M[EX)/) >YEX?/? >YEX/>YEX/>Y )94)901!52>54.'3#5>?'.'5!#&>54.#53  #"$&  )% $/!F#!%&  (MD8 %- #/4/% $-1.$  (,+  081 172 >SW-$<EX&/& >YEX;/; >YEX / >YA'7GWgw ]A]1 &901#".5463232>7.'5!">54.#53 -YEX/>Yܸ 01732>73!5#"#7!5># +8"D3 #>2b 7,H/6̺3+A33&363F3V3f3v333 ]A33] 39 /A ]A  ) 9 I Y i y ]ии3#и .ܸ(/EX/>Y+901.54>54.'5>54.54>7H7eN/ 2>>2 0Pe4OY q^_p YO1Md9999!9+'*8!<<<8aI/aS444g"#i333Tay/"+/EX/>Y013yA}=/8к+A&6FVfv ]A]9/A]A )9IYiy ] ܸ и%и .и3)/EX/>Y)9015>54.54>7.54>54&'5=>1 /Ne6NZ 6L/^q ZN5eN0 1>^+9!9999dM1aT3335TC1"g444Sa/Ia8<<<!8*+//+ +01#".#"'>3232>7+*5@&/ZZY.0' )'3@*+``Z%1( ;.#)#*27 @3$+$&1DEX/ >YEX#/# >YEX/>Y  +++A++]A++(+8+H+X+h+x+++ ]0к192и 9к:9 ;иAAAA'A7AGAWAgAwAAA ]AAA]01%#".'#73&45465#73>32>73#.#"!!!!3267@NeDTrNqIjVOwZ?Z  3CR/NmG%8w /OqLV{57T9//EX/>YEX/>YEX/>Y01!5>54&#"#".54>32w3H+,% $0"0M;* !'/ ! *6L /EXH/H >Y01#"&54654&#"3##"&5463232>7>7>7#7>7>32 %  G# #-9G,#7! '/ !" "0E1%"  +DRNA1!TYVC)(&% ,=?MNca1@PUG. 3;/#/EX/>YEX/>YEX/>YEX/>YEX./.>YEX1/1>YA'7GWgw ]A]7015>54&#"#"&54>325>54.#"#"&546323H+,%  +$0#4H,,& "*<'0"0L:+! '. / ! +60M;* !'/ 0*/*6\ #EX/>YEX/>YEX/>Y A  ' 7 G W g w ]A ]и!01%#"&54632#"&54632#"&54632\/%%-/##11#%/1##1/%%-/##1?#33#$00$#33#$00$#33#$00L!Fk:2+A::&:6:F:V:f:v::: ]A::]5//D+ иD(и(/01#".'#.'>7#"&54>324.54632>32-!567 "(654&( 269+) 975 0#%3] dfec'*0"& #?>?$&:"!@?A"*h/{nV?+AVV&V6VFVVVfVvVVV ]AVV](?V9(/A((]A (()(9(I(Y(i(y((( ]ܸVкK?V9K/Qܸ и /Kи/(и? и /(0к8?V9(Fи^иVfиVnиVtN/EX/>Yy+[a+иy#к8a[9a=и=/[Aкfa[901#".'#".54>7"#"546323.'>54&'>7#"5432.54632>32#".'>32H/12*" 40-F'#./0 &$+ 111BB123+#( 211 $( 110 %#"&"101+ F877".7:;B% !6B>{0#BA986"00&49<!"" #6|A?z56+$//EX/ >Y01'#35`D%Kaw\;+L+X +b+n+A ]A  ) 9 I Y i y ]';9(;9-;9K;9A! LL)L9LILYLiLyLLLLLLLLL]A! LL)L9LILYLiLyLLLLLLLLLqA! LL)L9LILYLiLyLLLLLLLLLrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA! bb)b9bIbYbibybbbbbbbbbrAnn&n6nFnVnfnvnnn ]Ann]A&6FVfv ]A]@/J/EX/>YEX/>YEX&/&>Y6+Q+!к(&J9-&J9[A[['[7[G[W[g[w[[[ ]A[[]Qgи[q01#"&54>32#"&54>32##"'#".54>3232>734.#"32>%4.#"32>4&'.'32>D$4DS1g[7]yC#<,)OrHg[7\yB$=,JV&]3;6.5)1/%A6,0-E0":0$ )]ZR?%qd@hB.>#>yPqd@hB.>E#%%UUO=$%>P+YEX/>Y01 3}#)dc\%EX/ >YEX/>Y01#3))#be917PQ/R/Q и /Rܸ8ܸи/+и DADD&D6DFDVDfDvDDD ]ADD]EX/ >YEX/ >YEX/ >YEX/ >YEX"/" >YEX/>YEX/>Y*+ܸи1A11'171G1W1g1w111 ]A11]KAKK'K7KGKWKgKwKKK ]AKK]01)"#".54>;$3#.+32653#.+632>734.#"32>5;v;mw>@zrm 'D:PO$;-(?.>YE5<5?_D- .D]<9? WflR6B$ n?S-:#31/L9,H4+Jajm21jg]F*!9O._&>^ Js!/EX/ >Y01#".54>732632s$0#4H,,&    *60M;* '/ w/EX/ >Y015>54.#"#"&54>32w4H,,&  ,$1"0L;*! '. 1   *53?E///+и/%и%/8и8/;и;/01#".54>732632#".54>732632$0#3I+,&  ,$0"3H+,%    +60L:+! '. 0  *60M;+! '. ?/%/EX/ >YEX;/; >YA]A(8HXhx ]и0и0/3015>54.#"#"&54>325>54.#"#"&54>323H,,&  *$1"4H,,&  ,$1"}0L:+! '. / ! +60L;*! '. 1   *53NM +A&6FVfv ]A]+01#".54>32.>#$?..?$#>.$?..?$#>..>T +015!!T99T +015!T99P3//+ ии/01#".#"#>323267+9!*4,/%(*9$.,.%= ;/  !:*'%1P8E+ 2+++ !E+92OиO/+R///>/EX/ >YEX"/" >YEXN/N >Y9 9!97ܸFиG0152>5#3#52>54.#533#&3.#!5>5#"#7!$' """s(:E !7!/# -  &t ( &f% R&& *+L&  # ) E*&W^E3)-8PQ/R/#ܸ9ܺ#99Qи/#99#8иEAEE&E6EFEVEfEvEEE ]AEE]EX/ >YEX/ >YEX/>YEX / >Y.!+(A(('(7(G(W(g(w((( ]A((](993A33]A33(383H3X3h3x333 ]@и@/ LALL'L7LGLWLgLwLLL ]ALL]01#"&'#".54>32>32!32>7'4.#"4.#"32>) &=X=Al-zJMuP((PxPHx+%iE>\?b1Q:%9- } 3&"1 p,?,3; *<(3&D`9!0iV8-< A4 #6? RUR?'5OZ&OSQ@'1KY&^^F)&=8@W$ +A ]A  ) 9 I Y i y ]и/ и/ и"и"//EX/>Y01#".54>32#".54673V 2&DA   !}37 + c^0; 8+A88&868F8V8f8v888 ]A88] 89 //EX/ >YEX/ >YEX/>Y' 9+A++'+7+G+W+g+w+++ ]A++]3A33]A33(383H3X3h3x333 ]; 901#"&'#.54>323#".'32>7&#" 0Kb;4g5q(8".VzL!k5n+$' 8*B3'$2E*+6fP1 6GR[0Hf<&&-" (30?"u/JY*?~3-O\J@$+$и/$!и!/$=ܸ@CEX)/) >YEX/>YEX/>Y!+)1A11]A11(181H1X1h1x111 ])8A88]A88(888H8X8h8x888 ]!@иBиMAMM'M7MGMWMgMwMMM ]AMM]01%#".'#"&54632>54&'#53.54>32#".#"3#327&#"32>!6L1%@<8 ",.*G6! %GiC"D7""%',6  AGB}#& & +YF-#+,#4,8?  AAG%K&>u[7(9&(&.&(=J#8p6G+QON)yk# $-N#78/9/8 и /9ܹ$A$$rA! $$)$9$I$Y$i$y$$$$$$$$$]A! $$)$9$I$Y$i$y$$$$$$$$$qA $$)$9$I$Y$i$y$$$$$ r .A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..r//EX/ >YEX/ >Y3+)+01%'#"&''7.5467'7>3274.#"32>(`68c*5 %5*d54^(5" #>Q/1T?$$?T1/R=##" %5)a55e(7""7*d65a)X/S?$#>T00T>#$?SE+ии/,9BEX/ >YEX6/6 >YEX/>Y+ܸCиܸиCк,9>и@иCD013!52>=!5!5'!5!.'5!>54.'5!"!!!40z254  %N &+(  ( 3 R+;$"<-R8l5w'  ?\k_E} !*5x8F%+и//0133KKKRRuWmP],+@I+AII]A II)I9IIIYIiIyIII ]%I@9%/A%%rA! %%)%9%I%Y%i%y%%%%%%%%%]A! %%)%9%I%Y%i%y%%%%%%%%%qA %%)%9%I%Y%i%y%%%%% rA!]]&]6]F]V]f]v]]]]]]]]]]A!]]&]6]F]V]f]v]]]]]]]]]qA]]&]6]F]V]f]v]]]]] rA]]r]6и6/Qи/IFиF/iиi/@o /EX;/; >Y01#".5463232>54.54>7.54>32#"&54654&#"%>54.-<$$7 :N/$D4  /&9VeV9-<$!":N+%F6  % .&0#9UcU9*.;<8* ;T\j+K@5&`8.O9!-=&)(*",1QLLUe?+J?5.25,M:"+>('"$( #01OIHSc"*1'?6/-,"*21ZQEP +и 01#"&54>32#"&54>32 / - - / / , / ,3b'O +H0++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArAHH&H6HFHVHfHvHHH ]AHH]EX/ >YEX/>YM++A]A(8HXhx ]#A##'#7#G#W#g#w### ]A##]:A::]A::(:8:H:X:h:x::: ]C01#".54>324.#"32>#".54>3232673#.#"327bSqqÐSSqrĐR/LgfKKfgL5[H_7Y5$945$995$901#"&5#"&54>754&#"#"54>3232>75!67<9#!+!6AYEX/ >YEX/>YEX/>Y01 3! 3)+%)dcdc1 GEX/ >YEX / >YEX/>YEX/>Y01#3 #3))%++)bebe;^q#+/+015!5!7#Z=! +015!=!pp3b'O] ++8+EP++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArJ 9APP]A PP)P9PIPYPiPyPPP ]+XEX/ >YEX/>YA]A(8HXhx ]#A ##'#7#G#W#]A g#w###]A##]03и>J93Nи>UиU/01#".54>324.#"32>#3!52>546.#5!24.#"2>bSqqÐSSqrĐR/LgfKKfgL9  #'PA).=!.*8 !#M@)pÑSSqrÏRRrgLLffKK2  &&)@-&8)("6% 5P +015!PTTP +015!PTTJ-'ٸ(/)/ܸ( и /ArA! )9IYiy]A! )9IYiyqA )9IYiy r A!&6FVfv]A!&6FVfvqA&6FVfv rAr#++01#".54>324.#"32>,;##<,,<##;,;&&&&";,,;"#;--;#&&&&){ V+и/EX / >Y +и и  01#!5!3!5!\q\{ ] ]\\( +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r*"++01!5>54.#"#>323:>73OIMK;$(59Q kX#K>'"8GHD)&#9AILN& 1"17YU(=)"IKHB7)}<3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/EX./. >Y'A'']A''('8'H'X'h'x''' ]8.901#".5463232>54.'5>54.#"'>326Tg2 *)#&*1'&=L&;1",-FcE<2 #1$T;R3   -.<"#2!' (#;F/"(# '3X //01#7>32  >/   ^1Aڻ'+74+4 и'*ܸ7CEX(/( >YEX5/5 >YEX/>YEX/>YEX/>Y (9/A//'/7/G/W/g/w/// ]A//]/9<01%#".'#"'#".5467>5332>7332>71"7(+5YEX/>YEX/>Yܸи01###.54>3!Z78Gd<7]{Et#AlRLlD)3P / /01#"&546323%%33%%3&22&%113PV /EX/>YEX/>Y901#"'732>54&#"'73>32V(?1/ ( @7'  .$$1 1"d (}+//0152>546.#"'733% $%Z "H%+  +,/-/ܸ, и /и/и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r "A!""&"6"F"V"f"v"""""""""]A!""&"6"F"V"f"v"""""""""qA""&"6"F"V"f"v""""" rA""rEX/ >Y'+01#".54>325!4.#"32> =[=4W>#!>Y96X?")^(9$,$):$,7(RB)#YEX / >YEX/>YEX / >Y+к) 9*01%#5!533#352>546.#"'733%3K 1RJF   ٠7l?{!b " J$}'(,FkG/H/ܸи/ A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rG3и3/!39,39@EX+/+ >YEX>/> >YEX/>YEX)/)>Y+!01!5>54.#"#>323:>73#352>546.#"'733?A>0 -4B+>(#@0;T^#$ IH   :BHLM&1&71%?/+<&5ni_% }{!b " J$% IL׻B1++A!BB&B6BFBVBfBvBBBBBBBBB]A!BB&B6BFBVBfBvBBBBBBBBBqABB&B6BFBVBfBvBBBBB rABBr&1B9&/JкK19NEX / >YEX=/= >YEX/>YEX / >Y+!+и=4A44]A44(484H4X4h4x444 ]G 9J 9K01%#5!533#3#".5463232>54.'5>54&#"'>323L!3RLF'BX2 %#!#+ 1C'4'6/(:'3#4(7;۠7l?H6Q6   !++;%&2-<, 0$ /&$ P:dG/+A//&/6/F/V/f/v/// ]A//] /EX/>Y4A44'474G4W4g4w444 ]A44]01#".54>32#".54>7>7332>54.54>324"#EfB=hK*#)(;( 02 !3?$6#  %0   *O<$ >X8+J>3-GFO4ZS5<>9O2##"  . Je&%DJ Je&%HJ JT&%j9@ J?&%x*J J)&%9@ J|&%]J2NQ?+?.иOEX5/5 >YEX%/% >YEX/>YEX/>YQ+0=+%-ܸG01)53276=!!527>7>54.'5!#.+32>73#.+;2>73 !%>^ I! #8 2(F  (E9,<&";1 @\E6D%\֯'8'  '9(D6J  5A% l#8)-:! , 2L67&'!e&)DJ!e&)J!T&)j@!)&)@'e&-DJ'e&-JT&-j@)&-@3-4/5/ܸ4 и /иA]A )9IYiy ] ,ܸ'EX/ >YEX/>Y +$A$$]A$$($8$H$X$h$x$$$ ](и *и/A//'/7/G/W/g/w/// ]A//]01#!532765#5354'&+5!24.#"!!3>@ؘ6&C 8&r9`E&=m\!L-+0P Xm>lQ*XJV] 6VsXjv? VL ?wF?&2x&J5e&3DJ5e&3GJ5T&3j8@5?&3x)J5)&38@h ////01% ' 7  --+h+--7 '5W6/7/ܸ6и/%A%%&%6%F%V%f%v%%% ]A%%]'9(A((]A (()(9(I(Y(i(y((( ]-9/// / A ]A  ( 8 H X h x ]' 9- 91A11'171G1W1g1w111 ]A11]01#".''7&54>327&#"4.'32> Qb%RQN#`-dNjc-g)9$W^~L7Y 4tEFyZ4vǑQ )y${nQqz!}+U\dUQ'EHO0J:3oLe&9D JLe&9NJLT&9j?@L)&9?@Fe&=GJ!5EɸF/G/ܸFи/ ܸи/ 'и'/ ,и6A66]A 66)696I6Y6i6y666 ] ?EX/ >YEX/>YA+>ܸ.ܸ@01+;!5327654'.+5!#"324&'.+32>!-%.LuZ6? LH 8* 9D^E24G+*&=3$"KiB9b%!._ *[X   2$mM7]  =#>T1Fպ-4++A]A )9IYiy ]ܺ"9"/A""]A "")"9"I"Y"i"y""" ]?ܺD9EX/>YEX-/->Y:'+01#"&'&6322654.'52>54.#"#5>54>32#B^;?P! 2>6T9&<*'5 3$' #DdB@wZ6D6$  !efM}Z4+0N:3H.4_K 6+1\R'$@[6;607&ED*7&Em7 &Ej^7&ExO7&E^72&E]7DOdM[+7+6E+A[[&[6[F[V[f[v[[[ ]A[[]([9(/ ܺ0797OиUкV696fEX-/- >YEX3/3 >YEX/>YEX/>YE6+-A]A(8HXhx ]E%и%/0-9JиJ/V-901%#".'#".54>754&#""&54>32>32!32>7'.#".=2>-D\=469!3BP-#=.(Xe<418%>`B^^%bCpQ'** 2>By%25(\ *WE, ,$/3_I,0+)'/@$4LAA(ESC/"'/+<2 3(3(]v%"D>0E,-D.,39C$0@+0% 3{&G9&IDQ9&I9 &Ij9&I&D/& &j&31*>?/@/ܸ? и / 9 95A 55&565]A F5V5f5v555]A55]и/5 и /+A++]A ++)+9+I+Y+i+y+++ ]$и$/& 9 /$/EX/ >YEX/>Y0A00]A00(080H0X0h0x000 ]09 9& 9:A::':7:G:W:g:w::: ]A::]01#".54>32.''7.'774.#"32>.W~PEwX2/UuE"F+".\1ElJ&9P0!=/;R3#<,eHjA6_LHg>>n2g*c !:#h*b>Va5>gMKa8=_&Rx3&SD[3&S3 &Sj3&Sx3&S)w#g+A&6FVfv ]A]и //+01#".54>325!#".54>32?2&!!&2{2&!!&2%3 !5]]%3  3!/<=/>/ܸ=и/и/ и /,A,,&,6,F,V,f,v,,, ]A,,]/90A00]A 00)090I0Y0i0y000 ]29 //EX/ >YEX!/! >YEX/>YEX/>Y'A'']A''('8'H'X'h'x''' ]/ 92 98A88'878G8W8g8w888 ]A88]01#".''7.'4>327.#"%4'32>&*)UV535e#j ,W}Q644d"&')%@.d$',$>-O3uB@nG "t!x:AB?kC o ". >cG.c4cYe#/ ?h&YD]&Y &Yj&Y&]1.FTG/H/ܸGи/ ܸ$к%9/A//]A //)/9/I/Y/i/y/// ] 9и =и=/#/EX*/* >YEX/>YEX/>Y #9%#9*4A44]A44(484H4X4h4x444 ]BABB'B7BGBWBgBwBBB ]ABB]01".'!5>54.'.'73>324.#"3>-RuH'&(/)(0  $#56:9_D&0D*#0$'5!*D0sQk> )2  4."( U.>&4[|BoQ-)%*6'&Hg&]/-+EX/ >YEX/>Y01352>54.#"'7339"*   !)" +!q # T!+ ';&2>JVbn!+A!&6FVfv]A!&6FVfvqA&6FVfv rAr'и!-и3и!9и?и!EиKи!QиWи!]иcи!iиp//EXf/f>Yf9 f9f9f901.''#'7'>7'77#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546323`6 5`26pF!Fp8"!!!"1>  >1X          'y)5AMYeq\$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr*и$0и6и$<иBи$HиNи$TиZи$`иfи$lиsEXi/i>Y+012.#"&'.5>#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546325VH;;BL00LB;;HVVy$--$          d//9015FdF//9017dd=! +015!=!pp=! +015!=!pp`,+/EX/ >Y9015#335Bk)BdF#EZZ`)4+ /EX/ >Y901'733BddB)ZFZZEZ- 1+ // 9  9013#53#7>>FZZ))ddo*6BNZ` +A!&6FVfv]A!&6FVfvqA&6FVfv rArи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR9015#535#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632BdE'FX          Z*6BNZ` +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR901'73#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632Bddp=EZXF'           #/;GS_k *6BNZfr~[+++ArA! )9IYiy]A! )9IYiyqA )9IYiy r9/ܸ и /ии$и$/0и6иHиNи`иfиnиn/uиu/иии/и/A6FVfv qA&6FVfv rA ]A&6FVfv ]A]A&qArиииии/ии и /+и1иCиIи[иaиsиyк999EX/>YEX/>YEX/>YEX:/:>YEXR/R>YEXj/j>YEXv/v>Y +++и и'и -и?и EиKиK/Wи ]иcиA'7GWgw ]A]и ииии иA'7GWgw ]A]ииии/иии/!и!/'и'/.и./@иFи@Xи^иXpи|к9и/901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%"54;#"54;2+32##"&54632#"&54632+"54;5#"=46;2+32#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323        +  @    X   )) f ))     `       }    { {    X   +y- ym  =  +        7j          /               o     /   ^ww / R  2        q #/;GS_k~ %1=ILi||+e++ArA! )9IYiy]A! )9IYiyqA )9IYiy rZe9Z/iܸ и /ииe$и$/0и6иHиNи`иfииA!&6FVfv]A!&6FVfvqA&6FVfv rArииииiи/ииeи/ииии&и,и>иDкJe9Ke9Le9ZSиS/iaиa/}9~99EX/>YEX/>YEX/>YEX/>YEX/>YEX5/5>YEXA/A>Y +fP++K+и и'и -иK9и9/?и EиKиK/Wи ]иfcии иA'7GWgw ]A]и иA'7GWgw ]A]иfиPи/Kи/ии/ иfи #и)и#;иGи)UиVиWи^иcиPlиl/Psиs/yиy/}9~и~/Pf901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323+"54;5#"=46;2+32#"/##"=6323        +  @    X   +x0 wm}    }    }    { {    X    =  +        7j!  I +y- ymw7j          /      ww /      o     /     2          ww / %h +015!%C@@DD #/;GS_kw--//EX!/! >YEXu/u >Y01#"&54632'#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632'#"&54632D          `  H  `          #  L    Vo       oV    L T&l &m X&mP/EX/>Y017#"54654.54>7   +6;0 9-r`A<,9ZH&oZQH&oP&nC &q3 b&m3 1=u(+A((]A (()(9(I(Y(i(y((( ](9-//+-901%#".5463232>54&'#".54>32'.#"326 1CQZ//UA''( 2d\O;")!,/0)w    }=vY5  'BXaf.!  ,'\Q6)Qw+3d&n3&rB3 &t13B&s3!&u3 &w3 &x3I&y~{3&c~3&f3 &_~w] &_~L'V-q'/)/EX/>YEX / >YA'7GWgw ]A]01%#"&54>3232>7.'.54>32' QU37 $b]I ?T[" EhF$"!6( -3* 0Q>'-.$WlzL']&_7 L'&kQ#L'V&t7L'V&_7DL'&'kQ#_7DL'p&c7L'V&c79L'&f9mL'"&h8L'&j9iL'&y7LC'&'kQ#e8L'V&v<*qX+ /'/////01%#".546323267>54.54>74G'64.>5#"# 9JBF 15qj]   DE>p%@E; &)!"MLKqa&"_uqQ&"k'q&"uz,X&"tTX&"_ucX&"uzX&"'_u_@qt&"cuq"&"fwqq &"jwmq&"evfq&"mv7>7>32.#"32>32.TuG>~b_qyoZ $9IKF0e\L #  &$(4F1+=FI;%;i_xO u "  CCA6* %3F59:+/:91) &( &;KIB  %  ;c&4m5q&8m5{&8cT5{UѸV/W/ܸV"и"/0A!00&060F0V0f0v000000000]A!00&060F0V0f0v000000000qA00&060F0V0f0v00000 rA00rFAFFrA! FF)F9FIFYFiFyFFFFFFFFF]A! FF)F9FIFYFiFyFFFFFFFFFqA FF)F9FIFYFiFyFFFFF rP/5+01.#"#".54>3232>54.'.54>7>32!"$`W<-==-% .%/vNK|Y0!'#$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA%VVP=% :Sa,AW4'$ -"?CC5' 5s&8n5{85 &8u5^{&8e5F{&8hV{`۸a/b/ܸa"и"/'"9;A!;;&;6;F;V;f;v;;;;;;;;;]A!;;&;6;F;V;f;v;;;;;;;;;qA;;&;6;F;V;f;v;;;;; rA;;rQAQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ r[/@+01.#"#".54>7"547>763232>54.'.54>7>32!"$`W<,;>-% .%/vNK|Y0!"N0 ;g5$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA"POG  ;0:Sa,AW4'$ -"?CC5' 5{8V8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr4/# +01#".54>3232>54.54>7 0'9Tdj7#   !7IQU'Jj>  R=?; 6&:W9LB, &"6(&)+ $$ "$ 053V&@_V&@c(V2&@fV&@k7V&@evV&@eV&@'c(tcV6&@hV&@hV0&@j}V &@jV&@iV2&@'f_V&@fV&@'c(fVq&@'_ cV&@vV&@u<+)&T_9+)L?+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r?и/%//K/F+%901#".54>7.#"4>7>327>32#32>321K[S@ JqR/2\P -0* "T  2=-[Z[-,X*"_+3vukS14ZwA%VRG  $=[{R]t.       &;OcuCNuU7! +)&T_ A+),&Tm m+)?&Te +)&Tc 9+)&Te 9+)S&Tf +)&Th+)&Tj9+)&T'_ Ah+)&T'k%Xh+)&Td?+)&Tk(+)&T'k%X_9+)&Tk%X+)&Tc I+)&TfPi,+A!,,&,6,F,V,f,v,,,,,,,,,]A!,,&,6,F,V,f,v,,,,,,,,,qA,,&,6,F,V,f,v,,,,, rA,,re/1+01#".'+#".54>3232>7>54.54>3>76332>54.54>321",! %09!hF:^A# (%2IS +ZTH5% &L?, #++    3ME/4. !+$$iH(DY10bO2$7G(2C( #bJ/B-"&' 6G' )  &+#!#Y&ef&e'_G_g&eh^Y&e'fh^Y&e'f_gy&egR&edOW&ejE&ee_p7*+A!77&767F7V7f7v777777777]A!77&767F7V7f7v777777777qA77&767F7V7f7v77777 rA77r<%+[e+j+и/jQиQ/jVиV/01.54>7*.'#".54>3232>7>54.54>3227>324.#"2>Eo.   hF:^A# (%2IS +ZTH5% (0. %mE%3 J#00icU7tnbI+T>aI2 $*)   !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'6pK /6T !;S2!"&o_D&oc;V&of&o'_D_;$L[{> + 9и9/A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r>CиC///EX/>YEX / >YHR+ A'7GWgw ]A]и/C/9W01#".'.54323267>54.'.54>32>324.#">HxO+/$ +)+Dh%     2hd]&$6%J'.)[]],w8\@eM6"!($&*)$ 5TLJ*,TH6 +)$,%"Qeo18>=3[D(*7^ 1WE.4+&t_&tf"-3_R +A!RR&R6RFRVRfRvRRRRRRRRR]A!RR&R6RFRVRfRvRRRRRRRRRqARR&R6RFRVRfRvRRRRR rARRrRи/ /#//^/Y+ 9, 901#".54>7.54>7>32#"3267>3232>321K[S@ oԧf+CP%=5$$&!  X<$1):?!5::."6"Pd94ZwA%VRG  $]zNn""/Y!A!!'!7!G!W!g!w!!! ]A!!]-<901#".54>3232>54.'#".54>32'.#"326P@;08~jF$"8IPP"kθq? E )! #&"!  /  "QiA:(9\D1WA&,?+1&0;:2+< - 189-(52ej  X$P&_NxX$P&'__NxXP&fX_P&hOoXP&jXP&cNmXcP&fPuZ;IA +0+A!&6FVfv]A!&6FVfvqA&6FVfv rArA00]A 00)090I0Y0i0y000 ]*09!+7-+*-7901#".54>3232>54'#"&54>32'.#"32> * [oFDtT/  $C_:2jf\E(%N&5B $*<8(#!+?;-O:!>]?$PME5/EQ$5N3%38+)A4:=:.2^Q  uZ&c[uZ&_SuZe&fN\F:d4++;O+A++rA! ++)+9+I+Y+i+y+++++++++]A! ++)+9+I+Y+i+y+++++++++qA ++)+9+I+Y+i+y+++++ rA;;&;6;F;V;f;v;;; ]A;;]4f0/EX / >YA'7GWgw ]A]@E 0901%#".54>7632>7>54.54>7#".'>54.54>7\ FlSEgD" 7dO?tX  %   N,;!)*( IC0(1(,=% ! %690 '&"   yv ##o-%Up%=3    !FF>  N\G&_N\&fWN$\F&h4Hy^1"+A!11&161F1V1f1v111111111]A!11&161F1V1f1v111111111qA11&161F1V1f1v11111 rA11r/\/6+01#".54>323:>7>54.'.'.5467>7>32 [ktodL,!5D"!=.mx`( '\plnG'4 ,253,  P\c_T NQ?'  &*,,(" %>JU.K[1:]D&/3+" 1L3 11, *)-9 331*! Hy&tcHyv&}Hyv&'}tcHy&~H^v&'}c)Hv&'}e*nHy&Hy&_#9HyK&f%H&f+edCD/E/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rD'и'/8'9@A!@@&@6@F@V@f@v@@@@@@@@@]A!@@&@6@F@V@f@v@@@@@@@@@qA@@&@6@F@V@f@v@@@@@ rA@@rEX / >Y.;+!+ 012#!"&'.54767!2>54.#!".54>32.#"3}5'?mTnV8]B%!--,"&@U]_+ $ -_N22""6&KyU-73 "-##5#4aVG3 %"4C$ &NPF+A!&6FVfv]A!&6FVfvqA&6FVfv rAr9/  +01%#".54>3232>7>54.'.54>7 -##DKW6(YJ1 ($ *@N%5m^I     (  yEC>% 4O67>7.#"#"&54>7>32 ;Fl55(   ,) 7U>     $/G@+!";#8RehdO3W-#,(6)  ).DN&1C&5467>7>7>32#".'#"&32654.#"8L9."P+ #).00  *$;806Kb? ,1" f N>9@A4!.97. G?, '  :  -*"D}&_'D}&_Q`&&_`&&'__`8 +A!&6FVfv]A!&6FVfvqA&6FVfv rArEX4/4 >Y+01#".54>3232>7>54.'.54>7 B^xJ3aK.!-ES'#QPH  % - '(D#2W@%=]@)aT8"6C$-C,#39;;*A!$,jlg`&k`&&'_tg`&f6`&&'_c`&``o&a!Z0AU)*/ / *9 *9; *901%#"&'#"&5463232>7.54>7.#"&54>32.'32'4.#">+5<}?1i*PF $,./""%  !GNM=&) '02  ;C=  " AH$*:  $>?8 +'%>PVW@74, ('% # !&yYL!ZL*Z +A&6FVfv ]A]/EX/>Y01%#".5467>324.#"32>8P3#6$# $F8";&6;  '/)5YA$/?%b?8+/NcO(#&,  L&cL&mLL&mL&cmK///'6+01%#"'&546767>7.54>32#".#"3267>32 $:I'&F7"/6F)#06; !(%,)#!'$$  !$;@@2" !#  &=q&&J} EX/>Y01#"&5463!2#"(''(3{V`BH+AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rH и /bR/EX/>YEX/>YEX/>YER9YR9\R901#""#".67>7>7.'#".'.54>32>54.54>724'2>3( ! '>4,%4H0Vck6   ( X{j0  0%' qV2{> -2- ,.#'.' FIA7  @+," TXK.-+ +.+ #l +8 T&uM3&_1QC&f+3{&h;&kH{&s H&lu&mP^&mP*/EX/>Y#01!".'.'.54>32;2#R!=1!   %&%%& &B5(grv7/VJ:#& 8a '(N&oW&oP&n&q7&mv?7Z:E //EX/>YEX/>YEX/>YEX!/!>Y +!-A--'-7-G-W-g-w--- ]A--]23и4и;и;/01!*##".5463232>7.54>32;2#'4.#"#  +7 5f6NF0!&+YVN@+0O9!#, 1'&%%& A"Y^\%;2 4FT\0 % /68-/DM'(!7&nw7[&r7Z&tJ7Z&se7&uz/7R&w;7L&xzj7&yu7w&cu7%&fwt7d&_uaZ&_u=QB6./EX/>Y +.9;01!".'#".54>3232>5.54>32;2#4@+ . -l86, 0#.ZF, :%&%%&4O6-C  $*-#   !@9/[TJ ') 1noiYB'(=Q&_=Q^&k=1Q&t"=Q&_L=Q^&'k_L=Q&c=Q&cA=Q&f=Q&hp=Q&j=Q;&y=KQ^&'ke=Q&v2P?79 /,////EX/>YEX/>Y01!"&##".5463232>7>54.54>73;2# -"&dEE<)  HPR(!+  1 %&%%&*SRQ*.: $8( @5%#&!$"('(P?&_[xP?"&kuP?&u`?&tChz?&_[D?&u`z?&'_[_P?&c[P?&f]P?&j]P?v&e\P?c&m\P?&dcP?&g]P?&b^xP?&y[|P?&s@]')}U0L/S/EX-/->YL -&01#".'.54>7>7>7>;2+"32>32)&-5%6+^V'();BB    ')&mV&mV}&c!V}N *+A!**&*6*F*V*f*v*********]A!**&*6*F*V*f*v*********qA**&*6*F*V*f*v***** rA**rD/G/EX/>YEX/>Y/+01!#"#".54>3232>54&'.5467>7>;2#?"*!:3"3Uoww3LxT,&# ?cw9P^aO3?B=3  %b9'%&%%& ) ,+MA3$)LlD7oY8)AP*JW. 5AK'(V&nAV}VN&uV+}&eV}&h#}Y5+A!55&565F5V5f5v555555555]A!55&565F5V5f5v555555555qA55&565F5V5f5v55555 rA55r!59O/R/EX/>YEX/>Y:+01!"#".54>7"547>763232>54&'.5467>7>;2#u?"*!:3"3Uoww3LxT,  W- ;g1?cw9P^aO3?B=3  &a:'%&%%& ) ,+MA3$)LlD;95  60)AP*JW. 5AK'(V}P8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//EX/>Y! +11901!".'#".54>3232>7>32;2#H1' !zXqA  =qaT'   B#'&%%&%%@/ CgF'O@("*3R8 +'(P&_CP&cP&fP\&kP&eP&eDP&'ct3VP&hnP&hDP&jP&jEP&iCP&'f_CP&fEP&'cfEP&'_cCPo&vHP9&u)'(&_)'(k_+A!__&_6_F_V_f_v_________]A!__&_6_F_V_f_v_________qA__&_6_F_V_f_v_____ rA__r_"и"/,//i/EXM/M>YEXO/O>Yd +O1A11'171G1W1g1w111 ]A11]O196и6/MFZO1901"#".54>7.#"#"5&>7>322>32#;2+"&'.54>732>32&;HD6 %! <}wiO.2^U,a"$$ '5:(TY[.,00"Q#DtZ%&%%&%?Kt'(!dRD1gW;";Z}SR}.  "  ) '( 2 ! X|QRc7  )'(&_=)'((&m i)'(;&e )'(&c)'(&e)'(O&f )'(&hv)'(&j)'(&'_=hv)'(&'k"Thv)'(&d")'(&k")'(&'k"T_)'(&k"T)'(&cE)'(&f3i.!+A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..rM/Z/EX/>Y3+HAHH'H7HGHWHgHwHHH ]AHH]UU9и/ H9&и&/EZ9Hbиb/cиc/01!"&'#".'##".54>3232>7>54.54>32>3232>32;2#f3K#$,"( %1&hF:^A# (%2IS +ZTH5% DU4 $-#0%&%%&RN1$ & !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'/8/ $+$ .- '(&+f4$&+'__ =&+h 4&+'f4h 4&+'f4_ =&+g;&+d&+j0&+e)l}6)+A!66&666F6V6f6v666666666]A!66&666F6V6f6v666666666qA66&666F6V6f6v66666 rA66rEX/>YEX/>YEX/>YEX/>Y;$+Zr+SASS'S7SGSWSgSwSSS ]ASS]S9PAPP'P7PGPWPgPwPPP ]APP]Sbиeиe/fиf/wиw/01!"&#*#".54>7".'#".54>3232>7>54.54>327>32>;2#4.#"2>HuwYEX/>Y@[+ A  ' 7 G W g w ]A ]и/;)9J 9MиNиOи`и`/01)".'.54323267>54.'.54>32>32>;2#4.#">++/$ +)+Dh%     2hd]&$6%3H+Dw#'&%%&'.)[]],w8!($&))$ 5TKJ+,TG6+*$,% /-Qfo08>=3[D(*8'D<2 '( 1WE.4+&:_&:f-J>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r/C/H/EX3/3>YC'C93,01#".54>7.54>32;2+".'32>323M\R=E~lP-/Ph:+&4L23K1 '6>I-%&%%&%-JP]@7q[9Sԁ+TMA  !;`^Ns0  34')' & '("HAVj|EX]0-&=_u-&=fw-&='_u_u~-&=cu-&=hv=-&=evZs &E_Zs H\+A!&6FVfv]A!&6FVfvqA&6FVfv rAr2/EX/>YEX!/!>Y A!HиH/01!".##".54>33267>?.54>32;2#4.#">4YC)PY?qJ#  '>OQKXS/[&%*+-&  -3&&%%& &$ "$$E6!:fOCE5 #&%%9)$ "*YEX,/,>YEX./.>YEX1/1>Y" +1;A;;';7;G;W;g;w;;; ]A;;]@A@@'@7@G@W@g@w@@@ ]A@@]CиDиKиK/01!##".54>3232>7>7""#".54>322;2#'.#"H4  \vN+WD+#,%  -H[.-b_T  2)*6(   %&%%&#'))(0WB( >[:AoP- ';K'0C+"0$$" "LI5&8@'(y  #sG&Mc#s4&M_#s&MfDH{T#+Uk+A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##rAUU&U6UFUVUfUvUUU ]AUU]_U9>/EX/>YEX(/(>YZܺ(Z9(M(TиT/_>901!".'#".54>3232>7>54.54>32;2##".'>54.54>7/<& vlW]0 0YN%bmqgW'!   ,$'&%%&\-% !  $ &=L&..) A4!9\D&/3+" 1I0$W.3oO%"muX1I0'(>3!     FE?  H{&Q_'H{&Qf)H&Qh% H_ p* +A!  & 6 F V f v ]A!  & 6 F V f v qA  & 6 F V f v rA rEXO/O >YEXR/R >YEX/>Y% +O9i01!".'#".54>3232>7>54.'.'.5467>7>32;2#0GM_Hmx`( '\plnG'4 ,253,  P\c_T -57.  ){MM=Bp`R$$&%%&)Ha8!K[19^D%/3* " 1L5 11+ +: 430*!  '! ,6<81  &\03bM.'(H_ &UtH_&U}H_&U'}tH_&U~H_&U'}c,&H0_&U'}e-H_e&UH_ &U_#H_&Uf%H_ &Uf.dTeU/V/HܹArA! )9IYiy]A! )9IYiyqA )9IYiy rH9U(и(/9(H9AA!AA&A6AFAVAfAvAAAAAAAAA]A!AA&A6AFAVAfAvAAAAAAAAAqAAA&A6AFAVAfAvAAAAA rAAArEX/>YEX/>Y/<+E"+A'7GWgw ]A]и/ииMиN01!".'#!"&'&547673!2>54.#!".54>32.#"3!2;2#,:$0|nV ,("F8]B%!--,"&@U]_+ $ -_N22";P /('&%%&3@"V^73 "-##5#4aVG3 %"4C$ &?H0M6'(T4U/V/ܸи/ и /Uи/#A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##r7A77rA! 77)797I7Y7i7y777777777]A! 77)797I7Y7i7y777777777qA 77)797I7Y7i7y77777 r-и-/A/EX/>YEX/>YEX/>Y(+MM901!".'#".54>3232>7>54.'.54>32;2#9!+  /ĕ2ZC(%#'@U-&`\N    (%&%%&$8l8I(mn:bI.bQ5):D0C+#/ dJN}@+)3Vso) $'( &auR&a_M&afOU&ahe/&akg&asZZ?1M!H0#/:/EX/>YAA9 01!".'#".'#".'.=4>7>32;2#,F>: 0$?1     !B:"(;WtL%&%%&  -*,!3KT +!Yq|pW"*9!FT[O< #'XVQ %*%'(?QZ///=/EX / >YEX%/%>YEX./.>Y%+%901&5467>7>7>32;2+".'#".'#"&32654.#"8L9."P+ #).00'%%&%%&%'';806Kb? ,1" f N>9@A4!0EL&'( ," '  :  -*"?1M*&h_?1M!&h_u T&n_ T&n'__Y E +A!&6FVfv]A!&6FVfvqA&6FVfv rAr7/EX/>YEX/>Y$ +01!"&'#".54>3232>7>54&'.54>32;2#\#    7fo6_G*")%2Qg68hZE  &%&%%&#\_Y!63%#YEX/>YEX/>YEX/>YZ +;6;9K.901!"#".'.'."#".54632>7>3267>;2#4&#">4.'32>0l3  &:)'#  :0 FHAILK  UO85-a"P&%%&1,$ -L8 :Z?(7!  '#MB+#+ IA2   NrE*.X3  '(1&3IR1/)./.' HA- zX&yy`9m{ruzARf=//EX / >YEX/>YEX/>YEX"/">YEX%/%>Y=9*=92=9L=901%;2+"&'#".'#"&5463232>7.54>7.#"&54>32.'32'4.#">%%&%%&%&- (!DB=1i*PF $,./"!&  !!UWO '02  ;C=  " #> '(  *:  $??7 +'/Lb74, ('% # ~9m3Cj/EX/>Y9 A  ' 7 G W g w ]A ],и-01!".'#".54>7>7.7>32;2#.'326&4&$) 21%%"L%    "%&%%& %:&!+( !,QC  /67#4 %/'4-`T;  '(H (' 9&{c5-9&{m6Q).//EX/>Y+"01!"&'.#"#"5467>32;2#))  9.#   &9L0%&%%&"  "9I'  8t^<  "'(&~m&~c1UaKP//EX/>YEX/>Y P9HP9Z01!".'.'#"&54>7>54.#"#".'.54>32654>32;2#/9" (2E3 9HPG7 0K^-'E4)@MI;   "/  art/$0#,  !1(%&%%&/>"'`jp7sm3  $141, PSO=& ".# '%0Nc2&FB?o .'>jPYEX / >Y 9 и!01!"&'.'+"&546;2>32;2#V& $,7%%&%%&%DQ0 '&%%& )&(')1)" '(&_L&c&fb&k&eK&e@&'ct&ht3&hC&j9&j&iA&'f_L7&f7&'cf &'_cA&v2?&ul&_Lla}7/EX/>YEX/>Y(+(AиA/ #(9A-и-/ NиN/Zи[01!"&'.5467&+"&546;2>7>7.#"#"54>7>3232+;2#}# >hZM$$CGK+%&%%&%2RH?$F&@LT($#0SXX#(DJW;#->BB%&%%&+&&'('   '" '&  '(l&_lj&m l}&e l&cAKl&e l&f 3l&h C9l&j 3l&'_h C3l)&'k"h Cl&dGl&k" l)&'k"_Ll)&k"l&c7l&f QM1/>/EX/>YEX/>YEX/>Y9+99 99,ии/,FиF/GиG/01!"&'#".'#"&'+"&546;2>3232>3232>32;2#5R %,!( &]J0K&^4%&%%&%,@. )"DU4 $-#1 %&%%&YE1$ 4;/79/('#!/8/ $+$ .*'(Q&f4Q$&'__L3Q&hC3Q&'f4hCQ&'f4_LQ&gQ;&dQ&j0Q&e)sPa /EX/>YEX/>YEX/>YEX/>YEX/>Y>V+&&96и6/7и7/FиF/IиJи[01!"&#*#".54>7".'+"&546;2>32;>32>;2#4.#"2>uxYEX/>YEX/>YB_+=-9LиL/QиRиSиd01)&'.5467+"&546;267>7>54&'.54>3>322>;2#4.#"2>V=   M%&%%&%&:  N    *elm2!5%!4@ (27H'&%%&%5 2`XP"^S $()>"('&*+T+QQ>=5*$o#Jdb,10*^O3+8-E4''( !:O/"/2o!&_o!&f/K/EX/>YEX / >Y9%9(и)01!".'+"&546;267.54>32;2#5*RH8@FK&%&%%&%"a9BC5YC$G8"7>2R*%&%%&&33 5.('," 56)#-7 ('(&_+&f--&'_+_%L0&c+&h,&e,"8&_y1EA /EX/>YEX / >Y( 9*и+01!".'+"&546;267&654>7>32;2#4.#">7+EBB(+A:9#%&%%&%%T"$#I'))EF%&%%&$ '%/$  (' !08;.6(9</e&'(!  &_&L8&'_y_&L&f{H3&h'C&j{D&c&A7&f(K&cy8&_y&f{H [3EX/>YEX/>YTиU01!".'+"&546;2>54.'.'.54>7>32;2##98=MdC,h%&%%&%FyM/;&A  3}Q Rj=%$*UQJKs]M&&&%%&+YEX / >YEX / >Y+8+A+ иIиJ01!".'#!#"&546;!2>54.#!".54>32.#"3!2;2#,:$K^p>%&%%&%18]B%!--,"&@U]_+ $ -_N22";N 1+'&%%&3@"+C.('"-##5#4aVG3 %"4C$ &?H)K9"'(6%+A!%%&%6%F%V%f%v%%%%%%%%%]A!%%&%6%F%V%f%v%%%%%%%%%qA%%&%6%F%V%f%v%%%%% rA%%r%9%9/ArA! )9IYiy]A! )9IYiyqA )9IYiy r,EX"/" >YEX/>YEX / >Y"9/и001!".'+"&546;267>54.54>32;2#y,6& &1#%&%%&%+ ".    ?5'&%%&0C*/D-('P5a< ("'lx~sa dZ'(@&u &_&f3&hCc&k&sYX5IZ$/EX / >YEX/>YEX/>Y9.и/иEиE/01!".'#".'+"&546;267>32;2#%4.#"32>4!7219=A"'1:!%&%%&%YEX/>YEX/>YEX/>YW +!9и:и;кJ*901!"#".'.'.+"&546;267>322>;2#4&#">4.'32>0l3  &9)'#  )T+%&%%&%3[ !GE@  SQ0=?<+%&%%&/*! k`9Y>'7"  '#MB+#+ IA2 (' Ja9*.X3'(1&(YEX%/%>Y  9,и-к0989M9012;2+".'#".'+"&546;267.54>7.#"&54>.'32'4.#">BHH>-,*'&%%&'(  ;GIE25<'%&%%&%.<"%   I '/3  ;D=  ! F 6GOQ%$'(&2*"('&??8 +'`74, ('% # &mmWh>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r#>9C9/6/EX/>YEX / >YEX&/&>YK+&-#&-9Pи.кC69PQ01!".#"#".54>7+"&546;267>32>7>32;2#' 41+ %%&%%&%7! #+#%')^C#( '&%%&   Y9 .! )E[2.++(' $  ;N[*6=;/:'(m&ma3i&m&ctAk&n&ctAI&'uctAK&eu3&huC/EX/>Y 01+"&546;267>54.54>7#Y8'+@ + и/" @9@,и,/01#".#+"&546;2>7>7.#"#"54>7>232 IF;M0)RSU,%&%%&%&D@@"&X*"AAA!*"AED5N0A-$//'(' !   $" ! &$_j&$m}&$e&$cAK&$e&$f3&$hC9&$j3&$'_hC3)&$'khC&$dG&$k )&$'k_L)&$k&$c7&$f/NGJ/EX/>YEX/>Y J99+01#".'#"&'+"&546;2>323>7>3232>54.54>32/ 1"+"'/8 0K&^4%&%%&%,@. )"&B3!#,+    'ME/ 6-/79/('#!2D' )  &+# "/E&5f/&5'_3_Q8/&5hH8/E&5'fhH/E&5'f_Q/e&5g>/&5d;/C&5j/1&5e{TARl /EX/>YEX/>YEX / >Y=G+ ' '97и7/8и8/L01".54>7".'+"&546;2>32;>324.#"2>TEo.   &C8-$-7"%&%%&%@R2$29)%nE%4!J$0/hcV7unbJ+P>aH3  $)(  ,)( ('*3* 5qL /7T "Y@H+ ; '9M01+"&546;267>7>54.54>32>324&#">!5'GO%&%%&%#'     $_nt9 0 NI>(RW]4nFX=:5%0 (' -f0:zvkU: *'")% *M`b -1,%[P6*8c,1UB'1-#&D_#&Df&VK((/EX/>Y(901+"&546;267.54>7>32#".#"32>32 6I,VTQ(%&%%&%&A( 3@"#D%& $[+!(&9B<=<2$\ < +%('  (QK@    3,_&G_H &GfJo_&G'_H_HLr&GcH$&GhI &GeIduQ&O_uH/?0EX / >Y++ +901+"&546;2>54&'#".54>32'4.#"32>u 8N`5%&%%&%?pU1+& #<7&  (*()#('%)+%!, -8;16Xo<  ! uH&O_LuQ&O'__Lu&Ofa3uH&OhCu&Oj]uH&OcA7uH&OfuHOud&OcuQ&O_u&OfaD!I"/G/EX/>Y$01+"&546;267>54.'.'.5467>7>32D [ktpdL-"6D# =/>q]%&%%&%Sy+'4! -144+  ./OQ?(  &*,,(" %=JU/IX/(' 01, *++9 &PG9D!&[_ZD&[f\5D!&[hED![D!&[tD&[}D&['}tD&[~D&['}cCMD&['}e~D|&[D!&[_ZD&[f\9D!&[fd@ A/B/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rAи/098A!88&868F8V8f8v888888888]A!88&868F8V8f8v888888888qA88&868F8V8f8v88888 rA88rEX/>YEX/>Y&3+<+ 01#!#"&546;!2>54.#!".54>32.#"3!2?mT%&%%&%18]B%!--,"&@U]_+ $ -_N22"5'FKyU-('"-##5#4aVG3 %"4C$ &"6%3ʻ-++ArA! )9IYiy]A! )9IYiyqA )9IYiy rArA! )9IYiy]A! )9IYiyqA )9IYiy r#/EX / >Y01+"&546;2>54.54>32*PD%&%%&%?6$    X'(&E<((' ) c|%*'%.(&MY`ZOd&ku{.&k_v&kfx>3%&khwCR&kkL%&ks+=$/EX/>Y01%#".'+"&546;2>7>32'4.#"32 177"!!%&%%&%+@3*!!  i    ,*.*$ (''>K%+"560  &r_*&r_A~&_~&'_~_tL&_~(&k1&'_~t3&huC&'_~ctA*&`~q&a~Z1BV<+/EX / >Y +9 +9< +901%#".'+"&546;267.54>7.#"&54>32.'32'4.#">.4GIE8PVW@74, ('% # &~y!Z~y&~m!y!<*+A**]A **)*9*I*Y*i*y*** ]*9"и"/7*9/'/EX/>Y 7'9017+"&546;267>54.54>7#"&54>7>32!:N.%&%%&%+C    '&  ?W5(' $(!# # -2(G@;>>;%5$&me/D //01#"&54>7>7.54>7>32#".#">32/ ")1/       !& +      %  *5&//&901#".543232>54&'#".54>32'.#"3263B#+ %J;%     =9.gW9  *@M"   /(); H E /!/01%#".'.54>7>7>32.#"32632*:#E?1 RZP&5:3.%     +$  54(@jGz   4/% # ** (68   Z7'//&/)///5/ / /01#"&5467>?>32#"&5467>?>32  & "  & "M d  i  d  i RhFQg5+A55]A 55)595I5Y5i5y555 ]?и?/:/ //- :901#".'#"&54>54.#"#"&54>32>7.54>32'>.#"R  ?80    ";  ,  V  `  4$$  /- !"B .3)  #T RD5%/'///01#"5467>?>32#"5467>?>32D  $  #  $  # e  h  e  j  / ///01#"&5467>?>32  & " d  i (4 // 901#"&'#"&'>7.54>32'4&#">)4Z"% 650)  N FD  "'+%93#!7 f&D / ///01#"5467>?>32D  $  # e  h VB7 3/ /01#"'#"&54>763232>763232>5>32V ')  "2    !B6! =6!" %+%$+%$-7/  !M+A&6FVfv ]A] +01#"&54>324.#"32>)9!/2%5(1!'5# !;,FL7+)04 *! F&9%// + и / и / и/01#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1 !$ /D //01#"54>7>7.54>7>32#".#">72  "(1/      !%       # )/fD //01#"54>7>7.54>7>32#".#">72/  "(1/      !%       # 8// /014.54>7#"5S   %"HB651$- 7:- +i+A&6FVfv ]A]9/ /// 901#"&54>7>32 ,"+  D(890TLE""IIE$=/ /+0132>7#".') +,"->&(6!94$-9"TI1/DM3s'//// / //01+"#"&547>7>732632,    ` %///"//01+"&'.5473232>;2 -2 ;3. #!&!"&!/;= >;-##%////"/014>7>;2#".#"+"& -1 :2. !&""&"/<= =<.##>zvO+A&6FVfv ]A] +01%#"&54>32"/)+ -!1%:>0$") \(3 1+014>7.54>32#"&'#"&'.7>54#"  ) 166 &#Z3(N 6 !#39%,'!CGm % 'C //01#".54>32#".54>327#"&5467>?>329       & "     d  i V///01#"=4.54>7    7:- :#GB651$m94 / /01#"54654.54>7(    7"+/' +$WiqbG 51$ YO/"4+w+w и /"'и'/[иfиf/wкw9014&#"2>"&'32>32#".'.54>7>7>54&54>3232>323>32"&5467"&'(41+*XI/L'$  $#'MTa:D?/,32::OPG  A"   '7AG"#7GGA * 9 )0,$      ! ,a< %Y]S#  @9& 1$ =+'Q/6+~и/01#"&'&'&#".54>32?>32#".'.54>7>7>54&54>3232>54&'#"&54>32#".'32>324.#"326         t,23:9OPF B"  8<.    (..   $"'MS`;D>.  b        ! ,a< Y]S#  $$)+!-7- "$    , P$0>//EX / >YEX / >YEX!/! >Y01#".54632>7>32#"&'74&#"3 ! /*"     !4  5! (,  %(  @  #EO)/E/:E9LE9OE901+"&5463267>7.'#".'.54>32>54&54>7>54&'     #+26   Xw/ X 9++>CиC/01#".5467.#"4>7>327263232>32'#".54>32%-)7kT3`P*-.-, 0'[O59Wj1+)#    %  .P=^/    $Y01#".54>32#"&'&'&#".54>32?>32   3           Y      g_9,+A99&969F9V9f9v999 ]A99]9ic//Cc901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CM#/  $)-*#    &   m("    4B% ".0'#!  0&! $   J //01#"&54632J++++5**++;y //01#5;vy15/01#".'+53267>7.#"#"5467>2322%# &A)**&=","? ' !"!E(!u  >    '   j>:///01+"#"5.5467>7.#"#"&567>7>32j#5  *   !$;  +0*  +=0*    #'y;f8++A88&868F8V8f8v888 ]A88]8h/b/0///$/&/EX=/=>YEXE/E>YBb901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CL$.  %)-*$    ' '#   4B% "-0'$"  /'!   $    my!///01#"&'&'"#".5463232>32/@B # =*?+   }D!/EX / >Y01#*.'.54>7>7>32.#"32632}*:#F>1 SZP&693.%   ,$  55(AjGy?  " 4/& # ,+ (68  ^H//D901#".54>32#".54>3232>7>54&'.54>7   ]K1& "))'#     !3C . 2*"!   > 664/q //01'7'7qqqqTTT/qppTTTTq //01'7'7qqqqTTTqppTTTTfO+A&6FVfv ]A] +01#"&54>32f;++;&&R+;;+$$<'8///*/5/'///2//01+"#"5.5467>7.#"#"&5467>32%4  +   ## T !+1*  ,=0)    "'5_0)/#+#(и(/#*и*/0132>32# '&547>32>767254> %  #C*^&3JU]-iu-3.-F7*.; ( (/`VD JK /3/+01!2>7>7>32#".'.'#".#"&'>323267>ժ:U?4  5ZOY3,EGA'3ER[++AI++и/+и/(%и%/<:и:/<N01".5467".'#".5433267>7>3327>324&#"2>/Mac]#   Jfbk'"[@(    + #  Y?3+#%.3?901#"=4.54>7+532>54&'#".54>32'4.#"32>#".54>32>    8N`5oo?pU1+& #<7&  !  7:- :"HB651$(*()#}%)+%!, -8;16Xo<  ! ##$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//01%#".5467>732>329+)=( (,)*(  $,;)BR)9#D8(#0@P- $$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/"/EX / >Y01%#".#".'.54>32$  (*),( (=)+9G$ -P@0#(8D#9)RB);B8 //01#"'>767632M)k_.SMA%x&%A &H"q=49p'+01#"&'&'5476323276&'&#"eEuDRY" Ws)"2<5L15(+ !9@7GU B"$%!24@*&lW//и/fܺf9YA!YY&Y6YFYVYfYvYYYYYYYYY]A!YY&Y6YFYVYfYvYYYYYYYYYqAYY&Y6YFYVYfYvYYYYY rAYYrи/f9Yи/1f9\f9frArrrA! rr)r9rIrYriryrrrrrrrrr]A! rr)r9rIrYriryrrrrrrrrrqA rr)r9rIrYriryrrrrr r// /%/(/m+aw+m9%91%9\%901"&'#"54767.54>7.54>7>32#"3267>32>3272>54.#"g:%8/8!+BP%<6$%'!  V=$2):?!4::. 7!Pd9)#3mqt:@Z9":OX^ 0eS45V>3d^W' LRS EO<%-)/ /  9 9( 901".57"'6&'547633676327"67654  .  ?DB8Z %,!N-=18LL*X D /'/ '9 '901#"'654'.54>3327&54>32#"'.#"3267632 19d"/0   "0"-   #57  i $&,$''* (     6p?n//$/EX/ >YEX/ >YEX/ >YEX / >YEX#/# >Y&901#"'&543327654'&54767'47&#"4?6763236732#K'" 2 AOJ(. f1*aS^0."0! 1""2 B   D>(QA[6;< YEX/ >YEX/ >YEX / >YEX7/7 >Y2$9@$9O$901#"'&543327654'&54767%"'&547632"57"'6&'5476336327"27654#K'" 2 AOJ(. r   .  rjBnT`]7AIB  D>(QA[6;<%,!N-LL*X dw'/!++01#"&'#"&/326732654&'.@&8A#pJ=NC1K_U35w,XF+5>  B   )&9BNqo?N%&/J+JиJи/01#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -./A]< 2%  + ($#-F%06 ."->  +#$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/и//*//01#".5467>732>32#".54>32;+(=( (+)+'  $ &3;+;,DP%:#D9(#0AP- $ 3$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr-и-//2/EX / >Y01%#".#".'.54>32#".54>32$  '+)+( (=(+;3& K$ -PA0#(9D#:%QC,;%3 6';/-//01#".54>32#".54>327#".54>32P!&#%d!&#%!&#%^%) $' %) $' %) $' J-?Q6+,+A,,rA! ,,),9,I,Y,i,y,,,,,,,,,]A! ,,),9,I,Y,i,y,,,,,,,,,qA ,,),9,I,Y,i,y,,,,, r,9/A]A )9IYiy ]ܹ A&6FVfv ]A],'и'/E/;+;01#"&54>54.#"#"&54>54.'.54>32#".54632-#-#-!'!&6(',' &8*+I`60O:   3% $7'3## ! %3 >GQ_pB " &0$!9AN37bI*%=P%3 j''/EX/ >Y01#".54>32#3#".54>32   %3%HFN3% T 3%3 H9'#/+01%#".546;2>7>54.54>7=<U-.!F950 dk6 *"''# %)!1157y'>54&#.54>32y+<%)#$& T"NMF%)28  %0F1` #// /9901'%d$RP%eN }EX/>Y01373}} ;}K+;JVe# &+A&&]A &&)&9&I&Y&i&y&&& ] & 93& 9Y& 9& 9 Kи&Q3/ /EX/>YEX/>YEXYEX^/^>Y}+<A'7GWgw ]A]и/^A'7GWgw ]A]#}9&}9@}9C}9I 39L}9Y 39f}9}sии/ии/и/иииии/^9^9 3901%.'.'.'>7.5467.'>7>7>7.'.'.'>732>32>32326764&'"&'#".#".#"#"&'#6>3232>732>32>>&.#"#".'#".#".>7>7>'.'.>'#"&54632.7>76.67>762#"&54632''&'&>2*1&'!Dw9'3&&3'9wD!'&2+=#0220#=+2&'!Dw9'3&&3'9xC!'&1*<#0220#<0'$"Ap6 1&  &1 6pA"$'+** )6 ,$!!$- 6) *+++42% #',"*! *#,&# $1551$ #&,#* !*",'# %24+U* )6 -$!!$, 6) *T,'$"Ap6 1&  &1 6pA"$' I4  8T((((4I T8 5q  4I ((((  q5 I#8< *4!!4* <8#"/G[]G."#5> )5""5) >5#".G][G/ 68  ''  86        ]E  !!  E][G !! G  !  !  59 && 95_ (   -7''))B ( -  1?  & _((&&  ? &,;*9/ /)/0132>54.#"4>32#".J`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..Stx/ #//01"3!2>54.#52#!".54>3E$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 DP'w/WKZ//Z9Z9Z9Z9$Z9,Z94Z9<Z9DZ9LZ9TZ9`Z9hZ9pZ9{Z9Z9Z9Z9Z9Z9Z9Z9Z9Z90Z9DZ9cZ9xZ9Z9Z9Z9Z901.&'.'.7'.>&'&67.'.'>7>7.7>.'676&67>7>>7.7.>7677>7>%>.'.'>7.767>7.'&>&'>7>.'>7.'&7>'676>4.#"32>&>&'.'&&'.'7>.'.>7.''&'.'67676>7.'&'&67.'>7>&%.''.6&'&7>7.'667>#".54>32#.$!3  *)/&.=&,+-/),%=/&0')   2"$-##-$"2   )'0&/=%-*.-+-%=.&/)*  3!$.=<5     ""$(&$!     '&& 1)  !!  # '0!5-#; 1)     x$=S//R>##>R//S=$ 1)    !4-%91"" ''&& 2) # #       !$&($"      "><5 8(##(8 " &%=.%0)*  -Y76vA@x57Y-  *)0%.=%& " #&%=/&/')  .Y76w??w67Y.  )'/&/=%&# *%9 0(    *4NGH-G G-HGN4""   " /0%    ))&=( ><5       /R>##>R//R=##=R=<5    &=(  ) //%      r#   #3NGH-E E-HGNB     *%9 0C(6"#6mL*Slm/и/[[ܸ[A@[]A[]A []A[]A[]A`[]$ܺ[$93[$9DиD/$KиK/$TиT/[ZܸZܸaиa/[dиd/g[$9Zjиj/$n/EX/>Y[G+39g9013>7>5.54>7>?4.'.'!.'.5>'##".5467>7m0  )#;8 8<#(  -/&84#&  w  H  "+ *"   ""!! c;<<9D`9G`9]bиb/]rиr/]tиt/]wи]A]A )9IYiy ]]9]9и/]и/`9к`9]и/]и/и/!и!/39]XиX/j]9uиu/и/9]9`9`9`9`9ии/9и/и/ и /и/M//M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901.'.'.5#"&#">54&547.'.'>7>7&54654&'32632>7>7>?6323267.#"#"'7>&547#"&#"#"&#>323277>54'>54.'>3&54>72.#"632#"&'72>%.#"#"&'>7.54654'32632>4.#"32>.54654'.'&#"#"&'32632.#"3267&'#".'>7>32>7.'5##.547"'>54&'.'#"&#"654&5467.'6232327>7#"&546324&#"326-^XN   #        "    MY],/1YK< "        # 39D`9G`9]bиb/]rиr/]tиt/]wи]A&6FVfv ]A]]9]9и/]и/`9`9]и/]и/и/3!и!/339]XиX/j]9uиu/3и/39]9`9`9`9к`9ии/393и/и/ и /и//M/M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901>76323267.#"#"'.'>7#"&#">54&547.'.'>7>7&54654&'32632.'>7.'.5632326323>7'#"&#"654&5467.'>54&'#.547"&%3267.'#".'>32>7'."32632&54654'.'&#"#"&''32>54.#"'>7.54654'32632>7.#"#"32>7.#">32#"'3467>7.63&54>72>54.'>323277>54&5<7"#"&#"4632#"&732654&#"S-^XO   #        "    NY],/1YK< "        # YEX / >YEX/>YEX/>Y99 A'7GWgw ]A]5иO01!".'#".'#".54>7>7.7>3232654.54>322>54.54>32#"54654.54>7%#"'#"&54>7>3232>7>3232>5>32'#".'.'.54632.'326'!$+)%$) 21%%"L%    2-(  $     AC    ')  "2    H"   $  %:&!+( !"9*'7#-Q@  /67#4 %/'4-`S;&WMGxu< (";y01G.'c|%*'%.(&UfmfX/1.8=T+6;0 9-r`A<,!B6! =6!" %-%$+%$-7/    5R%# LH8H (' :q#PFq}++A!&6FVfv]A!&6FVfvqA&6FVfv rArGиG/A]A )9IYiy ][и[/и/99/|/w////|99|9901%#".54>3232>7>54.'.54>7#".#".54>32767>327#".546323267>54.54>7'#".'.'.54>3232>54.54>7 * 6>L2(P?' ($  5E%0YJ:     (       4G'64.>5#"$ 9JBF *8:.   .& $ yBA?% 4O6p%@E; &)!"MLKKe>%B4(grv7-VK;#& 8a%).'%(#2[-;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'sE< +A!<<&<6<F<V<f<v<<<<<<<<<]A!<<&<6<F<V<f<v<<<<<<<<<qA<<&<6<F<V<f<v<<<<< rA<<r<./"/01%#".54>54.5467>322s >JN@)$*$+1+762-$  +$.5..5.0<<3 ,1)  #E?6* ]A1$%   *4:5+  5/1- +#+01#".54>7>324.#"32>" (/3 H=(&&*'UG/75NW"%5I,2=" P'D9+  $6#$0?,/<" %=Qz?A1)79# ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆ho7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   -;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'fySI///=+=903=9A=9S=901#"&'#"&54.54>323267.54>32.#"32>7CHH "1   #4>4#  '+.'J%% (77 # ',  "QNE$DCC"svQ+%+#%/) &,"/@   5^+A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >YEX/ >YEX / >Y$ 9'A'']A''('8'H'X'h'x''' ]101.54>32>32.#".#"%/21 3X?$-@(8>"%4 *  ( 6?B<0 +.) 0z6#RE.%$   !,9>:/;/ܸ:и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&rEX/ >YEX/>YEX / >Y+A++'+7+G+W+g+w+++ ]A++]501%#"&'#".54>74.'32>732>-?)8>""2!1Rk93X?$8)=G--*    ( #RE.0;C-0z.PSI )2896#   !,{sI?!+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r//+/+901#"&54>7.54>7>32##32>7s $('#:2.%/1-A9'  "'-')  :#*9:552(,$ !#$)KNV4FOUMB/;<7%  #( " ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆hA!~$////!901%#".'.'"54767>767>32JK !:/^Q ## a56!Wq㿖l ! '56HN  HWA4o7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   !1ϸ2/3/ܸ2и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&r//01#".54>324.#"32>,:%#8*-K76I-V#$,&& EF@21?CB,nbC@^k49:.#7DB9ZX@$9GD:kU+//01752>546.#"'733t  #P  I"+ +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r-%++01%!5>54.#"#>3232>73t>?.);$!C>8#K"'w9ǻ3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/.%+01#".5463232>54.'5>54&#"'>32w%@U0 "! ")0A%3&7+(9 %1"3&nU4N4   !*(9$$1,7) /"/&" ' Q+и и//+к 9 01#5#533 3UI1N,8z@f,%+ArA! )9IYiy]A! )9IYiyqA )9IYiy r' +%+#+01##".5463232>54.'73f*-WE*&@W0 "  .#0K\,tM$;>324.#"32>2F+0E.4[{G7XB. @"$8'N ,#3-% X)L;#-FV)DlC-G[11@SB9& 3B;))1! / +017##"'7!1& <>7'6F-+(+и/ и / 9# 9A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( rA-]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v-- rA--&-6-F-V-f-v--------]A---rA--r7-?и?/H//9#901#".54>7.54>324#">4.'3260?# =0#*(!.; 9.$,1(Ma'<#( ,2"')->&8&%6#0)" #'/#6%!0!-% '/6:_*,)$  &2,'I.-#.'45/6/ܸ5и/и/ 9ArA! )9IYiy]A! )9IYiyqA )9IYiy r(A!((&(6(F(V(f(v(((((((((]A!((&(6(F(V(f(v(((((((((qA((&(6(F(V(f(v((((( rA((r2и2/-++ 901+5>7#".54>324.#"32>7>5\}H5WC- ?#%8%/E+0G0U -!% +"DkC-H\02?!(N=&/HXD<**1@9' - //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+a8 //01%#".54>54.547>32#2a  >@1#!)!=   $+$%22 " #E6#-U!$   $&$ ]iP- //01#".54>7>324.#"32>i  9'" /( ,1  ?2"/'  %  + ( *6S +,!&&  To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO     //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+:tE;///3/39)39739E3901#"&'#"54.54>323267.54>32.#"3267 $()  *1*  1+    $ 4  9713[0{}B&+#! - !  ,  A1 ///$ 901.54>32>32.#".#"f !  ":*+$)"  & & +23/& "$&_fd+?6$"Nz3r+A&6FVfv ]A],9/ /EX/ >Y,901#"&'#".54>74.'326732>z #   /< 1#"'($     f92!"*0mj^ "V[\!8:4 2;>   YwaB1///'/'9.'9B'901#"4'&54>7".54>7>32#32>7a  2  '* %  - !!  -179;" SXO "(+((    To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF%///901#2'&'"546767>32SciZ'm;> jalT-(- Gbhj`-"@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO    )z+M +A&6FVfv ]A]//01#".54>324.#"32>4) 5(&4 6'&4 =  NC..BJNE0.CL><,'0/( @>.(20)Lz+///01752>=46.#"'733R  f    4 %z'+ArA! )9IYiy]A! )9IYiyqA )9IYiy r)/!+01%#5>54&#"#>3232>73F>+.&%- *,!/n AJP%&7&",!)/,(5  z3+ArA! )9IYiy]A! )9IYiyqA )9IYiy r,//2,901#".5463232>54.'5>54&#"'>32 -<"  ".):'( "'<&NU%7% (  5*'!-+2 )z O+и и//+к 9 01#5#533'34#7k8pp'-o%+A! )9IYiy]A! )9IYiyqA! )9IYiyr' /$/ $9# $901##".5463232>54.'73 =1.="  !"5A R:7*9#":+  #%4!'z2q +A&6FVfv ]A]и/ 9///901#".54>;>324.#"32>'#2"1 %@W3'>/ .'7 $  W6* 2=0aL0  3@##-;.)$.*##o / +017##"'73#u +} d 'z'4B#C/D/ܸCи/ и / 9и/# 9(A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( r-A!--&-6-F-V-f-v---------]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v----- rA--r(5и5/-=и=///9#901#".54>7.54>32'4#">4.'326"-," +(!"6E*   #(&-,( &" !& "  !'C *$ 4 #5!%z4q+A&6FVfv ]A]и/ 9/// 901+5>7#".54>324.#"32>7>%%AY3&=0 -( "0"2"<0`L/  3A" #-7+!4> 0+#-(  y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 54.547>32#: ,-#+'"$$  1'  =$ $($ B) //01#".54>7>324.#"32> )  "#  -# &8  -'; ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 323267.54632.#"3267    $ "#      ((" %@"WY/' *"    .`/# ///" 9( 901.54>32>32.#".#"H!$)       47/ CHH,'    7 S/e+A]A )9IYiy ]*9// /*901#"&'#".54>74.'3267326   !+"   a)# "MKC=A@()% $*+  "?k:' ///#/#9*#901#"=4>7".54>7>32#32>7 $ $       #)M0 ;?8     $   ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2)* ////901#"&'.'"547676767632)#%G M*KF.S&<,EJ KE-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# }m}}l;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..StM/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 k/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 L/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 -@,=)/0+05и5/07и7/0132>32#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD\J{J"JAJ#m~msD@c_bER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>b/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  763232>763232>5>32&5>7>?>32&5>7>?>32V ')  "2    %        $    #!B6! =6!" %+%$+%$-7/    c j  b kV7}w8l+8и/All]A ll)l9lIlYlilylll ]8vиv/8q/ /d q901#"'#"&54>763232>763232>5>32'#".'#"&54>54.#"#"&54>32>7.54>32'>.#"V ')  "2    Au$     "<  , V  !B6! =6!" %+%$+%$-7/  ) AJ$   .,!!#  . 2)  #U V7Qk0/3/\/^/01#"'#"&54>763232>763232>5>32#"5467>?>32#"5467>?>32V ')  "2      $ $  $ $ X!B6! =6!" $,$$+%%-70 d  k  d  i V7R8/P/ /01#"'#"&54>763232>763232>5>32'#"5467>?>32V ')  "2      $  #!B6! =6!" %+%$+%$-7/   b  kV7^jT/ /G T9h T901#"'#"&54>763232>763232>5>32'#"&'#"&'>7.54>32'4&#">V ')  "2    '4X"$640($  O!B6! =6!" %+%$+%$-7/  FD !'+&83#7%9 e $V7Q0/3/B/D/01#"'#"&54>7623232>7>3232>5>32#"5467>?>32V '*  "2      $ $ !B6!!=6!" %-%%+%$,7/   d  i $D]E/[/ // [901#"54>7>7.54>7>32#".#">72#"5467>?>32  "(1/      !%   $ #      #  b   kDkw-a/ // a9T a9u a901#"54>7>7.54>7>32#".#">72#"&'#"&'>7.54>32'4&#">  "(1/      !%  '4X"$640($  O      # ZFD !'+&83#7%9 e $VT /)/01#".'.'.54632#"'#"&54>763232>763232>5>32H"   $ ')  "2    o  5R%# MH8!B6! =6!" %+%$+%$-7/  +ArA! )9IYiy]A! )9IYiyqA )9IYiy r/ /01'>54.'-D9%*DU+#:*(0 .)"7' =/ /+01.#"'4>32!*-"-?&)5!94%-:"SI2/DM[(4]iA/ / A9D A901#"&'#"&'>7.54>32'4&#">%467>32>32#".5467.32654&')4Z"% 650)  N )4Z"% 650)  N FD  "'+%93#!7 f&dFD  !',%83$!7 f&}EX/>Y01153}} 2% + A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >Y+01#".54>324.#"32> (34*(53(4!&8"! 5&&5 5&%6!" 3)" ")/EX/ >YEX/ >Y01#373#a66QQ //017#".54>32Q! ##Sb3/:/^+^"и^'и'/L:9017#".54>32#".54323267>54.'.54>32>324.#">R  $;LOM    42/#''  ,//A]< " #I 2%  + )$#-F '06  .",>  +#49/%/'/6//017#".54>32+"&'.5473232>;2R  s,2 9 1. #!&!"%" " #/<= ><.##7d9 //017#".54>32%4>7>;2#".#"+"4R  ,2 9 1. #!&!"%" " #/<= ><.##d\, /(/017#"&'&'&#".54>32767>32     # # `,hw3/S/s4+s;иs@и@/aS9017#"&'&'&#".54>322767>32#".54323267>54.'.54>32>324.#">    )$;LOM    42/#''  ,//A]< # #  2%  + "-2 L17.",>  +#VT- //01#".54>7>'.54>32T      J" #cKA/&/EX0/0>Y017#".54>32#"&'&'&#".54>32767>328!f    n #" # " 'A}3&/h/I+PиUиU/v&h9017#".54>32#"&'&'&#".54>326767>32#".54323267>54.'.54>32>324.#">9!h   !$;LOM    42/#''  ,//A]<# #" #  2%  + "-2 L17.",>  +#bZ,@ 2/(/017#"&'&'&#".54>32?>32#".54>32 !  F! #  " &"#ZL//#/-/:/H/017#"&'&'&#.'./&#".54>32767>;767>32       !     !   ZO-Z>)/@/EX/>YEXJ/J>YEXV/V>Y017#"&'&'&#".54>32767>32#"&'&'&#".54>32?>32 !     !n# #  # # &?N%&/J+JиJи/017#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -/.A]<? 2%  + ($#-F%06 ."->  ,"k&9/%/ + и / и / и/01%#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1R !$ w@ //017#"&54>7>7.5467>32#".#">32 I(1/   +   !&   ? %  $49s@ //01%#"&54>7>7.5467>32#".#">329 I(1/   +   !&   ? %  O //017#".#"#"&54>3232>7.5467>32#".#">32 I(1?!)   +   !&      ? %  o1~"/X///EX/>YEX/>YEX+/+>Y + и /017#".#"#"54>7>3>324&#"2>%9''/+   6!(#5 )#& !  ."(2   .}Bit O/R/01%#"&54>7>7.54>7>32#".#">36#"&'#"&'>7.54>32'4&#">. I(1/       !& )4X"$660)#   P     %  r ED "',%83$9%7 f $J+- / ///////01&'&+"&'&'7;2     !9b#M+A&6FVfv ]A] +017#"&54>324.#"32>)8!03&5 '9#  !;,EJ8+)04 (  ]k$////!/017+"'.5473232>;2$ 9 %c.;= ?<- '  ' Kj%///"//014>7>;2#".#"+"4%+ 9 +&# !i/<= ><.##wa&1 ///017#"&'#"&'>7.54>32'4&#">a)4X"$660)#   P% ED "',%83$9%7 f $U"+//017"JJ~-`-:%////"/014>7>;2#".#"+"4,2 9 1. #!&!"%"P/<= ><.##$>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32%n~l% +kuz9 -7:1"6BLIB)QLG   },Q>L/N/EX7/7>YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32%#"54>7>7>32(    %n~l% +kuz9 -7:1"# # 6BLIB)QLG   he@e:/EXK/K>YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !/%n~l% +kuz9 -7:1"" ## # &:6BLIB)QLG   $>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32)sw^ ]lp2 3>C8&{ 0YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32#"54>7>7>32(    )sw^ ]lp2 3>C8&# # ! 0YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !)sw^ ]lp2 3>C8&" ## # & 032#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD J J J;cm3(ER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  YEX/>Y1901"#".67>7>7>54.54>720<: 4G1 *  (%/'.' FI0uR.-+ +.+ # qV!]jqj]"8$,&@=&uM@&_1@:C&f@+{&hs;@v&kH@k{&s &l&m-SWN&mN::/EX1/1>YEX3/3>YEX6/6>Y01%2>54&'.'#".'.54>32##"#".69/ ![hq8   ( ['% z ,,J8  @+," =8/ ,.#$.'&o.LPN&o&n.&qN a>A2/ /EX/>YEX+/+>Y&2 901>54>32;2+".'.'#"&54>7>  !1(%&%%&%/9" (2E3 9HPG7 0K^-0C1(1<|R.'>jP"'`jp7sm3  $119La &ua&_a&f!a&h1a,&ka&s&l&m/Q17P&m1P,/01%4.#"#".'.54>32&q*BOJ<   "/  art/$6' "TUQ?& ".# '%0Nc2&OJ@%&o0J10P&o1&n0&qP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                $         $$$                                                                      '          '''                                                             +            +++ !                                 !!                       ,            ,,,! %                                    %%                     2              "222% *              !                **    !!!!! !      !!!!! #      8!    !           &888!* .      !!  ! !       # %   ! "      !    ! ..    !!$$$$$ ###########$       %%%%%!!!!!!!!!###########&   #  "  > $    $            *>>> $- 2 !    $$" !$ $      & ( "  $ %      $  "  $ 22   $$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'''''#########&&&&&&&&&&&(    """""""""""""""""""""""""""""((((($$$$$$$$$!!!!&&&&&&&&&&&*   '    % "C#'  !!!'"          !!!!!!".CCC#'1 6#   ''&%& '   ) +$ '(    ' $ ' 66 ''$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*****&&&&&&&&&)))))))))))+    $$$$$$$$$$$$$$$$$$$%%%%%%%%%%+++++&&&&&&&&&####)))))))))))-    *     '   %H&*#$$$* $          $$$$$$%1HHH&*5  : &"  **)   '   )  *  "   ,.' *+    ! ! * """'   * :: ** &&&&&&&&&&&&&&&&&&&&&&&&&&&&&-----))))))))),,,,,,,,,,,. '''''''''''''''''''((((((((((.....)))))))))&&&&,,,,,,,,,,,0   """""-   """"" *    (N)-&'''-"'     ''''''(5NNN)-9 C%,'  11/$!"$$$$-$$$"$$0$$1($ 35-12$$&&1 '''$$$$$$-"%$$$$$$%$$$$$"1"C"C """ 00%%%%%%%%%%,,,,,,,,,,,,,,,,,,,"""""""""""""""""",,,,,,,,,,44444$$$!!!!!!!/////////!!!!333333333335 !!------------------- ..........55555$$$000000000,,,,333333333338!!!!!!! """"""""""""""""""!!!!!!!!!!(((((4   (((((1    .Z/4+!---4'-      %%  ------.=ZZZ/4B K*1, "6"65)%&)#)))#3)))&"))5))#6,) #9<2#68))!+!+6  ,,+))))))2&####)))))))"))))))&6&K&K &&"& 66))))))))))2222222222222222222''''''''''''''''''1111111111;;;;;(((%%%%%%%555555555%%%%""""99999999999;  "!!!!!! %%""""""""""2222222222222222222$$$$$$$$$$$$$$$$$$4444444444<<<<<(((555555555 111199999999999>" %%%%%%% &&&&&&&&&&&&&&&&&&%%%%%%%%%%,,,,, ###############:  $$$$$$$$$$$$$$$$$$"""""""""",,,,,7    4d4;1%! 222:+2      *"*" !  2222224Dddd4;J_<BDA  J A o<+udR7u9?#L#+ %T=B7#?JD9\=)%)FJV 7Z!ZZ5Z'Z!Z^ZZ5ZZ5Zb%ZZZ ZbDV73399-/ - 33ZL  Z5yH3 Lh^ZbZ\^933ZEZ3Z^-{-u3&/1;=3J))Xj^33j}6+}:V V V V V V ^7!!!!''\ZZ5Z5Z5Z5Z5\7ZZZZZ[777777739999/333333)/V!?==ZoZ%D)T) ) )P)Z)Z)P)==============mLmLmLmLmLmLmLmLmLmLmLmLmLmL;;j5j5j5j5j5j5j5j5jj5HVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHV++++++++++++++++++DDDDDDDDDDBBBBBDDD-------XXXXXXXXXuuuuNNNNHHHHHHHHHHHVuNuNuNuNuNuNuNFDYFDFDH`H`H`H`H`H`H`H`H`LLLLLLL''YjHjjPjPjNjjPj============================''VVVVVVVVVbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbP))))))))))))))))))`````DDDZZZZZZZZZ`#`#`#`#5H5H5H5HHHHHHHHHHHHRRRRRRR???u u u u u u u u u $)9$)9)9)91111111ooooooooooooooooooooooooooooqqqNNNNNNNPPPPPPPPPPPPP+ooooooooohhhhhhhhhhhhhhhhhhhhhhhhhhhhHHH============~===PPPPPPPBBBhhhhhhhhh999LF8+> mP'1m^5 ;@3;7B09&>N 6sJj)H)wFX;X,Xx1DmJJ$%S:!-!!!`!!!!f!o!!-!!!`!f!!!!!f A!o!!k',)!7'V7]T:@cV7:ANYT:%@c??L??? ????'??y?^?=?'?Z?B?;?)?-?F?y?^?=?'?)@.?7???;?)@?-?F0OO@y"Ay2s[ 47dcbZw$1J]K:}h}hX;X;X,X,XxXx5H9   ;@3(v@v@v@v@v@v@v@       1111444440d `P,@(p"P$$%& &L&(,-/1x334678D9 :\:< =$>@lBCFFGH|IJKLXLLM MPMtMOQS@U8VxWhZ\4\]_ _|abdfhil8ln8np q4rdrtHtuvtx8xy{| }<0 $p, DD\ <|<t,||<0H`x(@Xp”¬ $|xŐŨx(@XpɈɠ0H`x̨̐4Ld|ϔϬМ,D\tՔլ(((((((((((((lۘdp(4Ld4Lh(@Xp|,D\t\t $<Tl $<,  ( @ ` x       0 P h   l        , L l     <Tt<Tl,DTld|4Ld!!!0!H#,#D#\#|####$$$4&((((() )$)****+,,,,--4-L.`.x../p/////0001@333334 4$4<4T4l55545L5d5|677747L7d7|777778 899(9@9X9x99999::(:@;;,;D;\;t;;;;;< <$<<?@ @@4@L@dBlB|D(D@DXDpDDDDDEE E8EPEpEEEEEFHHHHII(I@IXIpIIIIJJJ0JHLM M,MDMdMMMMMQQ(Q@QXQxTT0THV$V<VTVtVVVVXYY Y8YPYhYY\<\T\l\_T_l__abbb<bTbtbbbbbf@iTiliiiiijll(l@lXlxn<nTntnnnnpTplp|pr,r<shsst@tXtpuuuvvv4vLvdv|vvvvvw wwwxxx0xHx`xxxxxxyy0yPypyyy{8{P{h{{{{{{||8|P|h||||~,~D~d~|~~~~$ 8Phh(@Xp<Tt4Tl $D\t,DTld|,D\t4L\t<\t(H`Ld| $D\t4D\tx 8Xx 8PhD\t4Ld,l<8Xl XtX``¼$ǠȬɼʔ@ddаѐҀPxִPڰۘD| 0PhL\|LX L!!"##$D%&(*,./|04012t454699;==@C\CDEFGdGHIJhKHKKMNOPPQXRDS STTU(VVW<XZZ\] ]L`,a4aabc`cde(efXggdgh`i@j,jklmHmndooooopqqr<rsdsdsdsdsxst`t`t`t`ttttttttttttttuv@v@v@v@wyz{|}xP8t(@HDhHX84T,P$(8H0H`x4L8Phf  |tv??V1]      2 >KZbhv~     "'+<A EP X d p! " #$%&'() ~ .2 ` bn . $ <" "^ "  &X .~  .    .  ,   $ > \  l x        0         : D ` (|       "    * 2 H X p  , ! " #& $  % &2 ' J (T ) \Copyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTestCopyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTestShadda+kasra placementRaised kasraLowered kasraMeem alternatesStandardSindhiHeh alternatesStandardKurdishSindhiUrduEastern digit alternatesStandardSindhiUrduSukun alternatesSukunJasm open downJasm open leftDotless head of khahStandardJasm open leftDownward commaFalseTrueSix-nine dammatanFalseTrueEnd of ayahStandardSimplified ASimplified BKasra-tcheh adjustmentLower kasraRaise kasraDiacritic selectionFalseTrueShow invisible charactersFalseTrueNoNameShadda+kasra placementRaised kasraLowered kasraMeem alternatesStandardSindhiHeh alternatesStandardKurdishSindhiUrduEastern digit alternatesStandardSindhiUrduSukun alternatesSukunJasm open downJasm open leftDotless head of khahStandardJasm open leftDownward commaFalseTrueSix-nine dammatanFalseTrueEnd of ayahStandardSimplified ASimplified BKasra-tcheh adjustmentLower kasraRaise kasraDiacritic selectionFalseTrueShow invisible charactersFalseTrueNoName   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a   bcdefghjikmlnoqprsutvwxzy{}|~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.nulltab hyphenminusEuro nobreakspace sfthyphenuni02C9microperiodcentereduni2219enQuademQuadenSpaceemSpacethreePerEmSpacefourPerEmSpace sixPerEmSpace figureSpacepunctuationSpace thinSpace hairSpace zerospace zeronojoinzerojoinleftToRightMarkrightToLeftMark noBreakHyphenleftToRightEmbeddingrightToLeftEmbeddingpopDirectionalFormattingleftToRightOverriderightToLeftOverride wordJoinerinhibitArabicFormShapingactivateArabicFormShaping circledashzeroWidthNoBreakSpaceabsAlefMaddaAboveabsAlefHamzaAboveabsAlefHamzaBelowabsAlefabsAlefWavyHamzaAboveabsAlefWavyHamzaBelowabsHighHamzaAlef absAlefWaslaabsWawHamzaAboveabsWawabsHighHamzaWawabsUHamzaAbove absWawRing absKirghizOeabsOeabsUabsYu absKirghizYuabsWawTwoDotsAboveabsVeabsWawDotAboveabsWawDotBelowabsDalabsThalabsDdal absDalRingabsDalDotBelowabsDalDotBelowSmallTahabsDahal absDdahalabsDulabsDalThreeDotsAboveDownwardsabsDalFourDotsAbove absDalHatabsDalTwoVertBelowSmallTahabsDalInvSmallVBelowabsRehabsZainabsRreh absRehSmallV absRehRingabsRehDotBelowabsRehSmallVBelowabsRehDotBelowDotAboveabsRehTwoDotsAboveabsJehabsRehFourDotsAboveabsRehTwoVertAboveabsRehHamzaAbove absJehRetro1 absJehRetro2 absJeh.dotHat absRehHat absRehBar absYehBarreeabsYehBarreeHamzaAboveabsYehHamzaAboveabsYeh absYeh.noDotsabsHighHamzaYeh absFarsiYeh absYehSmallVabsEabsYehThreeDotsBelow absYehTailabsAlefMaksura absBehNoDotsabsBehabsTehabsThehabsTteh absTtehehabsBeeh absTehRingabsTehThreeDotsAboveDownwardsabsPehabsTehehabsBehehabsBehThreeDotsHorizBelowabsBehThreeDotsAboveDotBelowabsBehThreeDotsUpwardBelow&absBehTwoDotsAboveThreeDotsUpwardBelowabsBehDotAboveTwoDotsBelowabsBehInvSmallVBelowabsBehSmallVAboveabsJeemabsHahabsKhahabsHahHamzaAboveabsHahTwoDotsVerticalAboveabsNyehabsDyehabsHahThreeDotsAboveabsTcheh absTchehehabsTchehDotAboveabsTchehRetro1absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3absHahTwoDotsAboveabsHahThreeDotsUpwardBelowabsSeenabsSheenabsSeenDotBelowDotAboveabsSeenThreeDotsBelow#absSeenThreeDotsBelowThreeDotsAboveabsSheenDotBelowabsSheenRetro1absSheenRetro2absSeenFourDotsAboveabsSeenTwoVertAboveabsSadabsDadabsSadTwoDotsBelowabsSadThreeDotsAboveabsDadDotBelowabsTahabsZahabsTahThreeDotsAboveabsAinabsGhainabsAinThreeDotsAboveabsGhainDotBelowabsAinTwoDotsAboveabsAinThreeDotsDownAboveabsAinTwoDotsVertAboveabsFeh absDotlessFehabsFehDotMovedBelowabsFehDotBelowabsVehabsFehThreeDotsBelowabsPehehabsFehTwoDotsBelowabsFehThreeDotsUpwardBelow absQafNoDotsabsQafabsQafDotAboveabsQafThreeDotsAboveabsKafabsKafDotAboveabsNgabsKafThreeDotsBelowabsKeheh absKafRingabsGaf absGafRingabsNgoehabsGafTwoDotsBelowabsGuehabsGafThreeDotsAboveabsKehehDotAboveabsKehehThreeDotsAboveabsKehehThreeDotsUpwardBelow absSwashKafabsLam absLamSmallVabsLamDotAboveabsLamThreeDotsAboveabsLamThreeDotsBelow absLamRetro absLamBarabsMeemabsMeem.sindhiabsMeemDotAboveabsMeemDotBelowabsNoonabsNoonDotBelow absNoonGhunnaabsRnoon absNoonRingabsNoonThreeDotsAboveabsNoonTwoDotsBelow absNoonRetro absNoonSmallVabsHehDoachashmee absHehHatabsHehabsHeh.knottedabsAe absTehMarbutaabsHehYehAbove absHehGoalabsHehGoalHamzaAboveabsTehMarbutaGoalabsHamzaabsSignSindhiAmpersabsSignSindhiPostpositionMen absTatweel absLamAlefabsLamSmallVAlefabsLamDotAboveAlefabsLamThreeDotsAboveAlefabsLamThreeDotsBelowAlefabsLamRetroAlef absLamBarAlefabsAlefMaddaAboveFinabsAlefHamzaAboveFinabsAlefHamzaBelowFin absAlefFinabsAlefWavyHamzaAboveFinabsAlefWavyHamzaBelowFinabsHighHamzaAlefFinabsAlefWaslaFinabsWawHamzaAboveFin absWawFinabsHighHamzaWawFinabsUHamzaAboveFin absWawRingFinabsKirghizOeFinabsOeFinabsUFinabsYuFinabsKirghizYuFinabsWawTwoDotsAboveFinabsVeFinabsWawDotAboveFinabsWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFinabsDalDotBelowFinabsDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFinabsDalFourDotsAboveFin absDalHatFinabsDalTwoVertBelowSmallTahFinabsDalInvSmallVBelowFin absRehFin absZainFin absRrehFinabsRehSmallVFin absRehRingFinabsRehDotBelowFinabsRehSmallVBelowFinabsRehDotBelowDotAboveFinabsRehTwoDotsAboveFin absJehFinabsRehFourDotsAboveFinabsRehTwoVertAboveFinabsRehHamzaAboveFinabsJehRetro1FinabsJehRetro2FinabsJehFin.dotHat absRehHatFin absRehBarFinabsYehBarreeFinabsYehBarreeHamzaAboveFinabsYehHamzaAboveFin absYehFinabsYehFin.noDotsabsHighHamzaYehFinabsFarsiYehFinabsYehSmallVFinabsEFinabsYehThreeDotsBelowFin absYehTailFinabsAlefMaksuraFinabsBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFinabsBehThreeDotsHorizBelowFinabsBehThreeDotsAboveDotBelowFinabsBehThreeDotsUpwardBelowFin)absBehTwoDotsAboveThreeDotsUpwardBelowFinabsBehDotAboveTwoDotsBelowFinabsBehInvSmallVBelowFinabsBehSmallVAboveFin absJeemFin absHahFin absKhahFinabsHahHamzaAboveFinabsHahTwoDotsVerticalAboveFin absNyehFin absDyehFinabsHahThreeDotsAboveFin absTchehFin absTchehehFinabsTchehDotAboveFinabsTchehRetro1FinabsTchehRetro2FinabsJeemRetro1FinabsJeemRetro2FinabsJeemRetro3FinabsHahTwoDotsAboveFinabsHahThreeDotsUpwardBelowFin absSeenFin absSheenFinabsSeenDotBelowDotAboveFinabsSeenThreeDotsBelowFin&absSeenThreeDotsBelowThreeDotsAboveFinabsSheenDotBelowFinabsSheenRetro1FinabsSheenRetro2FinabsSeenFourDotsAboveFinabsSeenTwoVertAboveFin absSadFin absDadFinabsSadTwoDotsBelowFinabsSadThreeDotsAboveFinabsDadDotBelowFin absTahFin absZahFinabsTahThreeDotsAboveFin absAinFin absGhainFinabsAinThreeDotsAboveFinabsGhainDotBelowFinabsAinTwoDotsAboveFinabsAinThreeDotsDownAboveFinabsAinTwoDotsVertAboveFin absFehFinabsDotlessFehFinabsFehDotMovedBelowFinabsFehDotBelowFin absVehFinabsFehThreeDotsBelowFin absPehehFinabsFehTwoDotsBelowFinabsFehThreeDotsUpwardBelowFinabsQafNoDotsFin absQafFinabsQafDotAboveFinabsQafThreeDotsAboveFin absKafFinabsKafDotAboveFinabsNgFinabsKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFinabsGafTwoDotsBelowFin absGuehFinabsGafThreeDotsAboveFinabsKehehDotAboveFinabsKehehThreeDotsAboveFinabsKehehThreeDotsUpwardBelowFinabsSwashKafFin absLamFinabsLamSmallVFinabsLamDotAboveFinabsLamThreeDotsAboveFinabsLamThreeDotsBelowFinabsLamRetroFin absLamBarFin absMeemFinabsMeemFin.sindhiabsMeemDotAboveFinabsMeemDotBelowFin absNoonFinabsNoonDotBelowFinabsNoonGhunnaFin absRnoonFinabsNoonRingFinabsNoonThreeDotsAboveFinabsNoonTwoDotsBelowFinabsNoonRetroFinabsNoonSmallVFinabsHehDoachashmeeFin absHehHatFin absHehFinabsHehFin.knottedFlatabsHehFin.knottedHighabsHehFin.hookedabsAeFinabsTehMarbutaFinabsHehYehAboveFin absHehGoalFinabsHehGoalHamzaAboveFinabsTehMarbutaGoalFin absLamAlefFinabsLamSmallVAlefFinabsLamDotAboveAlefFinabsLamThreeDotsAboveAlefFinabsLamThreeDotsBelowAlefFinabsLamRetroAlefFinabsLamBarAlefFinabsYehHamzaAboveMed absYehMedabsYehMed.noDotsabsHighHamzaYehMedabsFarsiYehMedabsYehSmallVMedabsEMedabsYehThreeDotsBelowMedabsAlefMaksuraMedabsBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMedabsBehThreeDotsHorizBelowMedabsBehThreeDotsAboveDotBelowMedabsBehThreeDotsUpwardBelowMed)absBehTwoDotsAboveThreeDotsUpwardBelowMedabsBehDotAboveTwoDotsBelowMedabsBehInvSmallVBelowMedabsBehSmallVAboveMed absJeemMed absHahMed absKhahMedabsHahHamzaAboveMedabsHahTwoDotsVerticalAboveMed absNyehMed absDyehMedabsHahThreeDotsAboveMed absTchehMed absTchehehMedabsTchehDotAboveMedabsTchehRetro1MedabsTchehRetro2MedabsJeemRetro1MedabsJeemRetro2MedabsJeemRetro3MedabsHahTwoDotsAboveMedabsHahThreeDotsUpwardBelowMed absSeenMed absSheenMedabsSeenDotBelowDotAboveMedabsSeenThreeDotsBelowMed&absSeenThreeDotsBelowThreeDotsAboveMedabsSheenDotBelowMedabsSheenRetro1MedabsSheenRetro2MedabsSeenFourDotsAboveMedabsSeenTwoVertAboveMed absSadMed absDadMedabsSadTwoDotsBelowMedabsSadThreeDotsAboveMedabsDadDotBelowMed absTahMed absZahMedabsTahThreeDotsAboveMed absAinMed absGhainMedabsAinThreeDotsAboveMedabsGhainDotBelowMedabsAinTwoDotsAboveMedabsAinThreeDotsDownAboveMedabsAinTwoDotsVertAboveMed absFehMedabsDotlessFehMedabsFehDotMovedBelowMedabsFehDotBelowMed absVehMedabsFehThreeDotsBelowMed absPehehMedabsFehTwoDotsBelowMedabsFehThreeDotsUpwardBelowMedabsQafNoDotsMed absQafMedabsQafDotAboveMedabsQafThreeDotsAboveMed absKafMedabsKafDotAboveMedabsNgMedabsKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMedabsGafTwoDotsBelowMed absGuehMedabsGafThreeDotsAboveMedabsKehehDotAboveMedabsKehehThreeDotsAboveMedabsKehehThreeDotsUpwardBelowMedabsSwashKafMed absLamMedabsLamSmallVMedabsLamDotAboveMedabsLamThreeDotsAboveMedabsLamThreeDotsBelowMedabsLamRetroMed absLamBarMed absMeemMedabsMeemDotAboveMedabsMeemDotBelowMed absNoonMedabsNoonDotBelowMedabsNoonGhunnaMed absRnoonMedabsNoonRingMedabsNoonThreeDotsAboveMedabsNoonTwoDotsBelowMedabsNoonRetroMedabsNoonSmallVMedabsHehDoachashmeeMed absHehHatMed absHehMedabsHehMed.hookedabsHehMed.knottedHighabsHehYehAboveMed absHehGoalMedabsHehGoalHamzaAboveMedabsYehHamzaAboveIni absYehIniabsYehIni.noDotsabsHighHamzaYehIniabsFarsiYehIniabsYehSmallVIniabsEIniabsYehThreeDotsBelowIniabsAlefMaksuraIniabsBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIniabsBehThreeDotsHorizBelowIniabsBehThreeDotsAboveDotBelowIniabsBehThreeDotsUpwardBelowIni)absBehTwoDotsAboveThreeDotsUpwardBelowIniabsBehDotAboveTwoDotsBelowIniabsBehInvSmallVBelowIniabsBehSmallVAboveIni absJeemIni absHahIni absKhahIniabsHahHamzaAboveIniabsHahTwoDotsVerticalAboveIni absNyehIni absDyehIniabsHahThreeDotsAboveIni absTchehIni absTchehehIniabsTchehDotAboveIniabsTchehRetro1IniabsTchehRetro2IniabsJeemRetro1IniabsJeemRetro2IniabsJeemRetro3IniabsHahTwoDotsAboveIniabsHahThreeDotsUpwardBelowIni absSeenIni absSheenIniabsSeenDotBelowDotAboveIniabsSeenThreeDotsBelowIni&absSeenThreeDotsBelowThreeDotsAboveIniabsSheenDotBelowIniabsSheenRetro1IniabsSheenRetro2IniabsSeenFourDotsAboveIniabsSeenTwoVertAboveIni absSadIni absDadIniabsSadTwoDotsBelowIniabsSadThreeDotsAboveIniabsDadDotBelowIni absTahIni absZahIniabsTahThreeDotsAboveIni absAinIni absGhainIniabsAinThreeDotsAboveIniabsGhainDotBelowIniabsAinTwoDotsAboveIniabsAinThreeDotsDownAboveIniabsAinTwoDotsVertAboveIni absFehIniabsDotlessFehIniabsFehDotMovedBelowIniabsFehDotBelowIni absVehIniabsFehThreeDotsBelowIni absPehehIniabsFehTwoDotsBelowIniabsFehThreeDotsUpwardBelowIniabsQafNoDotsIni absQafIniabsQafDotAboveIniabsQafThreeDotsAboveIni absKafIniabsKafDotAboveIniabsNgIniabsKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIniabsGafTwoDotsBelowIni absGuehIniabsGafThreeDotsAboveIniabsKehehDotAboveIniabsKehehThreeDotsAboveIniabsKehehThreeDotsUpwardBelowIniabsSwashKafIni absLamIniabsLamSmallVIniabsLamDotAboveIniabsLamThreeDotsAboveIniabsLamThreeDotsBelowIniabsLamRetroIni absLamBarIni absMeemIniabsMeemDotAboveIniabsMeemDotBelowIni absNoonIniabsNoonDotBelowIniabsNoonGhunnaIni absRnoonIniabsNoonRingIniabsNoonThreeDotsAboveIniabsNoonTwoDotsBelowIniabsNoonRetroIniabsNoonSmallVIniabsHehDoachashmeeIni absHehHatIni absHehIniabsHehIni.hookedabsHehYehAboveIni absHehGoalIniabsHehGoalHamzaAboveIni absHighHamza absSmallWaw absSmallYeh absFathatan absDammatan absKasratanabsFathaabsDammaabsKasra absShaddaabsSukunabsMaddahAbove absHamzaAbove absHamzaBelowabsSubscriptAlef absUltaPeshabsNoonGhunnaMark absZwarakayabsVowelSmallVabsVowelInvSmallVabsVowelDotBelowabsReversedDammaabsFathaTwoDotsabsSuperscriptAlefabsSuperscriptAlef.largeabsSmallHighSadLamAlefMaksuraabsSmallHighQafLamAlefMaksuraabsSmallHighMeemInitialFormabsSmallHighLamAlefabsSmallHighJeemabsSmallHighThreeDotsabsSmallHighSeenabsSmallHighRoundedZero"absSmallHighUprightRectangularZeroabsSmallHighDotlessHeadOfKhahabsSmallHighMeemIsolatedFormabsSmallLowSeenabsSmallHighMaddaabsSmallHighYehabsSmallHighNoonabsEmptyCentreLowStopabsEmptyCentreHighStopabsRoundedHighStopFilledCentreabsSmallLowMeem absNumberSign absYearSignabsFootnoteSign absPageSignabsAfghaniSignabsCommaabsComma.downwardabsDateSeparator absVerseSign absMisraSignabsSmallHighSadMarkabsSmallHighAinMarkabsSmallHighRehHahMarkabsSmallHighRehDadMark absNameMarkerabsSmallHighTah absSemicolonabsSemicolon.downwardabsTripleDotPunctabsQuestionMarkabsPercentSignabsDecimalSeparatorabsThousandsSeparatorabsFivePointedStar absFullStop absEndOfAyahabsEndOfAyah.altabsEndOfAyah.altBabsStartOfRubElHizbabsPlaceOfSajdahornateLeftParenornateRightParenabsLigatureAllah absRialSignabsZeroabsOneabsTwoabsThreeabsFourabsFiveabsSixabsSevenabsEightabsNineabsEasternZero absEasternOne absEasternTwoabsEasternThreeabsEasternFourabsEasternFour.urduabsEasternFive absEasternSixabsEasternSix.urduabsEasternSevenabsEasternSeven.urduabsEasternEightabsEasternNine zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMediumabsThreeMedium absFourMedium absFiveMedium absSixMediumabsSevenMediumabsEightMedium absNineMediumabsEasternZeroMediumabsEasternOneMediumabsEasternTwoMediumabsEasternThreeMediumabsEasternFourMediumabsEasternFourMedium.urduabsEasternFiveMediumabsEasternSixMediumabsEasternSixMedium.urduabsEasternSevenMediumabsEasternSevenMedium.urduabsEasternEightMediumabsEasternNineMedium zeroSmalloneSmalltwoSmall threeSmall fourSmall fiveSmallsixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmallabsEasternZeroSmallabsEasternOneSmallabsEasternTwoSmallabsEasternThreeSmallabsEasternFourSmallabsEasternFourSmall.urduabsEasternFiveSmallabsEasternSixSmallabsEasternSixSmall.urduabsEasternSevenSmallabsEasternSevenSmall.urduabsEasternEightSmallabsEasternNineSmallabsEndOfAyah.aat1absEndOfAyah.aat2absEndOfAyah.aat3absEndOfAyah.alt.aat1absEndOfAyah.alt.aat2absEndOfAyah.alt.aat3absEndOfAyah.altB.aat1absEndOfAyah.altB.aat2absEndOfAyah.altB.aat3absEndOfAyah.sp1absEndOfAyah.sp2absEndOfAyah.sp3absNumberSign.aat1absNumberSign.aat2absNumberSign.aat3absNumberSign.sp1absNumberSign.sp2absNumberSign.sp3absYearSign.aat1absYearSign.aat2absYearSign.aat3absYearSign.aat4absYearSign.sp1absYearSign.sp2absYearSign.sp3absYearSign.sp4absFootnoteSign.aat1absFootnoteSign.aat2absFootnoteSign.sp1absFootnoteSign.sp2absPageSign.aat1absPageSign.aat2absPageSign.aat3absPageSign.sp1absPageSign.sp2absPageSign.sp3absShaddaFathatanabsShaddaDammatanabsShaddaKasratanabsShaddaFathaabsShaddaDammaabsShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlefabsSukun.leftOpenabsSukun.downOpenabsDammatan.sixNineabsAutoKashida_dot1 _dot1_tah _dot1_smallV _dot1_hat_dot2h _dot2h_tah_dot2v_dot3u _dot3u_tah_dot3d_dot3h_dot4_tah_madda_hamza _highHamza _wavyHamza _wavyHamza.b_wasla _hamzaDamma_bar_ring_smallV _invSmallV_damma_vline_hat_gafBar _gafBar_dot2h _gafBar_dot3u _gafBarShort_gafBarShort_dot2h_gafBarShort_dot3u_linesabsEndOfAyah.2absEndOfAyah.3absEndOfAyah.alt.2absEndOfAyah.alt.3absEndOfAyah.altB.2absEndOfAyah.altB.3absNumberSign.2absNumberSign.3 absYearSign.2 absYearSign.3 absYearSign.4absFootnoteSign.2 absPageSign.2 absPageSign.3absLamIni.preAlefabsLamSmallVIni.preAlefabsLamDotAboveIni.preAlefabsLamThreeDotsAboveIni.preAlefabsLamThreeDotsBelowIni.preAlefabsLamRetroIni.preAlefabsLamBarIni.preAlefabsAlefMaddaAboveFin.postLamIniabsAlefHamzaAboveFin.postLamIniabsAlefHamzaBelowFin.postLamIniabsAlefFin.postLamIni#absAlefWavyHamzaAboveFin.postLamIni#absAlefWavyHamzaBelowFin.postLamIniabsHighHamzaAlefFin.postLamIniabsAlefWaslaFin.postLamIniabsLamMed.preAlefabsLamSmallVMed.preAlefabsLamDotAboveMed.preAlefabsLamThreeDotsAboveMed.preAlefabsLamThreeDotsBelowMed.preAlefabsLamRetroMed.preAlefabsLamBarMed.preAlefabsAlefMaddaAboveFin.postLamMedabsAlefHamzaAboveFin.postLamMedabsAlefHamzaBelowFin.postLamMedabsAlefFin.postLamMed#absAlefWavyHamzaAboveFin.postLamMed#absAlefWavyHamzaBelowFin.postLamMedabsHighHamzaAlefFin.postLamMedabsAlefWaslaFin.postLamMed+++D Y+a:+_H8)+PH8)++ E}iD   ." +B)BB'B*BB1B*BBA?T&P_w7ya_TnmTT T\                    8 xsdLxdLxLd xLdLxLxdLxLd ZdLZdL"& 3 =b=L$ 3kkg,:$g6$ek$gg$gc $}k#$}a\$c$c $$gi$ag $y gR$g99 [L$y ,P;FL$qSL$XPp$y T>$y c>$XL$yW>$y L$q:L$ujL$qj FL$mD$e_ $y wwo$u,m:@LH$u$y$uD$uD$u$uD$u$mP$my$i$qq$y($y$qj[$yf$m$u YpYIp"&  jqOgpEVIjpEpE8pp%ppI$*G,| IU$*GZ$*V$*E}$&X$"I$*GV}VL$"X$"I$*GX$"I}{$*GIt&$*G_3$"Ip$*Gl_p$"p_p$"Il$*G$"$ $8 8$$$ $$L$ $$$$$$$$ $ $ ,c+,,,g',k',E,89,<c,<x,=,,,X,,; L$L$L$&g,L,,S,[,, ,X.$VPX.$VX.$VZ/$VX.$VE$VX.$VX.$VR$VZJJJp;.$/u.$\.$;L$%+G I$, I$I$I$JI$p$p$;I$E$I$ Zj$X.Uw,$ <$$$T$; $ $,t$)"SIElX(X8 lRl.+Ox,f.,U.$+s.+ ^.$h^.[[hW,=J.T=LhW,=0LL"& @ @hL="& @ @lLL eLwoD< .X9C X^yMX@X9CFX^y:MX@X9CFX^yMX@X9CFX^ygMX@X9CFtoMto@CFX^yIMX@CFX^yMXdsMZMd iMi<MKiUMZM"& 37 =3=8p$ ww744,:fd $4$4$4$0/$/$4$ 4$4$/$/g$.,L$,;[,L$]',L$,p$xn$'|f$,L$c]$,L$2,L$y,L$g,L$'$j8|f$]]PX$e,\:<@\$e$m;W$aoXC$eX !$eX$eX $e $e+$iW$ey$m[[$a$m B$e$a,$iX$e -ww"& C CvIrAIrIvIvI8v4vIIIvIv,E|I$.G,LI0$.Gx4$.Gg$.G'$.Gx$.GI8$.GxA?$.Gt$.GI8]$.Gp$.GI+]$.GI#3$.G_#&$.GIj$.GxAj$.Gx('$.GI#$.GA$.G$ $8$$$$$ $$$$$$$$$$$ M R MII4R'Rw^W^x4^k8^m,#,,,#,27L$L$L$ww,,,~,'@[8SX$J'/;sX$J'V$J'R$J'X$J'X$J'X$J'Z$J'R$J']shx|xt))& X$ [X$ X$  Rv$ %. XL$ ,W XL$ XL$ XL$ XL$ _n$ $ EXL$ XL$ o=XL$  $ XLO, ^$<ZZ^$X^$X^$XJ $~$J$ Ss-XpWV$V|$}Z$,X+A$V$M$V|$8 ^$g^$j)/d ^,=,L bKVh ,=77,LLL"&  ))oL*O"& q q,<@XCF ^y /@XCF ^y/@XCF ^y`+@XCF ^y/@XCF @U +@U@FCF ^ypv/@:CF ^y 3"& Q oQo$< X>$<WX$<W$<WX>X<W8>_>$<X$<WX$<WX$<W2X$<W,jX>$<WW$<$< gF%$<X$<WR$<$< X$<W$< X$<WXb$<Wn$< X$<WN$<WP$<Xs$<W[$<s$  7$877$7$L7$f$$~7$0$$$$L $ Y$s$]c7$T7$$ MX7XS7$ $S$S$w$o7$ x7$07$7$S $S$S Y$S$S$S/7$  7$  7$  -F'777]7N7=7' 7$y{a('R7$y+WY$y/ ]$u7$y'J$y'7$e+W?$y'[$y'[7$y' 7$uL' 7$}'7$}dTj$e,7j$xj$g$ej$ej$ej$Tj$XZj$ ?$X$Xrj$ j$xj$K$eXj$3l7$< 7$d7$dr7$lv$<7$7$p#+7$y[#9+7$u#|j$y[N$<N>$<R$<b %R$<$<WNU$<U %J$,/[d^,>$/ 'Y^,>$/ &{&  'Y$e"&  Z,>$ "& #m #, "& ! hi!hxb7$\$(i$(M i$(\(8\\$($($(i$(vi$(,[xb$(i$(Ti$$ki$Li$|$(|$(i(i$ $(Li$$x$(on$(5ow$k$(o$ kP$,m^U$(i$ $j$8jj$j$Lj$($$~j$T$$$c$P $ L$c$Dcj$Lj$ $ &7&'7$ p$'=$'$p$c7$fc7$7$7$U $'$' $'$'$'?|j%j%j%JJJ4j=4j4j=4sF4j4j4jNjzNjRbNbjRjRYRRjLjLjj\Q$0,iQ$fqQ$$0Q$0Q$0Q$$ Q$$ dxQ$K]$$ $$ 2Q$Q$ng\Q$$0Xj$dxWxxdj$<x dj$xdj$xdj$x$dj$dj$C,j$XO,j$L,$XOxi$$]xsY$(ixi$(]^i$Hx$$PNg$(xoY$(]Mi$JsKi$#;,W'Y$('Y$0H'Y$(7$("& g g9'Y$07$("& } 9$}97$,4UuZ.xZ.} 16Z .xi.} 6U.Z.xZ.xV<.x >4ii \6\x.x .Z .Tn..} -6j.i'.i.Vvp............}4dj7j...}5j78..}5j70000,#`#j=}&h,.T.T.T.T. .- =F',,=^000,0000000000000000000000000000000000?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?x.Z.*.LVLVZ.Z.Z.*.VVZ.>.x,.xZ.(.(..oD*000000000090X00K0KtA$A9< !A$A9A$A9}A$A9y$A9IFA$A$B$x@$x2%2.%x@$xx%$x$xx $d<Rx$dRE$dR$R $dR}$PR $d5R!$,f7$,f/%0/%,f$$,f/%!$,f%$,f`_l/b###########![X"cX#X#o Z$`X$ Z`^ $*08@HNT`lrz "(6>LTbjrz&4@FRX^jx&.<DLTbp| $*0<BJRZbjpx"(.4@HPV\bhpx &.6>FNV^fnv~$,4<DLT\drz&.6>FV^p * \ t   4 L d z  0 H ` x  8 P h  ( > T j 0L^p,D\t4Ld|4Ld|2Pbt,>Pp&>^v 2DVv,D\t $<Tl4L^p&Pb,V(8HXt(8Ndz8Ndz*@V4J`v  & N ^ v !!*!@!V!l!!!!!!"""2"H"^"t"""""###4#J#`#v######$$&$<$X$h$x$$$$$$$%%% %0%@%^%t%%%%%%%&&&6&L&b&x&&&&&&'''6'L'b'x'''''( ( (6(L(b(x((((()))0)H)`)p))))))**(*>*T*l*|******++*+R+b+++,,D,n,,,,--$-:-P-f-|-----. .".8.N.d.z......//*/@/d/z//////00*0@0V0l00000011&1<1R1h1~111112 2 2>2T2j2222222233,3B3X3n33333344,4B4X4n44444455545J5`5v55555666<6R6h6~66666777*7H7X7n7~77788.8D8Z8p888889 9 969L9b9x999999::(:>:T:j::::::;;(;>;T;j;;;;;;<<<0>>(>8>H>X>p>>>>>>>>??? ?D?Z?p??????@ @ @6@L@b@x@@@@@A A A6ATAjAAAAAABBB0BFBdBzBBBBCC(C0C8CLC`CtCCCCCCDDD,D@DTDnDDDDDDDE EE(E6EDERE`EnE|EEEEEEEEFFF"F.F:FFFXFjFzFFFFFFFFG GG.G6GHGPGXG`GrGGGGGGGGGGGGGGGHHHHH&H.H6H>HFHNHVH^HfHnHvH~HHHHHHHHHHHHHI II"I.I:IFIRI^IjIvIIIIIIIIIIIJJJJ$J.J8JBJLJVJ`JjJvJJJJJJJJJJJKKKK*K6KBKNKZKfKrK~KKKKKKKKKKKKKKKKKKKKKLLLLLL L&L,L2L8L>LDLJLPLVLhLzLLLLMMM(M:MLM\MrMxM~MMMMMMMMMMMMMMMMMMMMMNNNNNN N&N,N2N8N>NDNJNTN^NhNrN|NNNNNNNNNNOO&O6:;<jDF+-./,R E=?BAC 69EDGFILKWX\Z>@[ *)wu~v}&'(QRVTU]^_agcfbdehjkSYlmnsptqrJNOMPo587+-3./4,012`:<!#$%"    H;{|\   !"#$%&'()*+#')$')yyzriYUR[ZY`_l/b:::44Te6}  "?A_az6y7x91:;z<={?@ ABpCtDuEvFGrHsITJqK LMNOP Q R S2T%U>V&W*XSYZ'[k\o]l^m_n`3a4b5c)d(e^fdg_haibjekflgm`nco[pq]r\stiu|vjwx"yz#{|}~wUXVWY67I9:8J!$ ;<=h?CADEB@FGHKLMZOQRNP,/+0-.      !"#$%&'()*+,-./0123456789:;<=}>?~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmnopqrstuvw}~>~      !"#$&')*+,-./0123456y7x91:;z<={>?@ ABpCtDuEvFGrHsITJqK LMNOP Q R S2T%U>V&W*XSYZ'[k\o]l^m_n`3a4b5c)d(e^fdg_haibjekflgm`nco[pq]r\stiu|vjwx"yz#{|}~wUXVWY67I9:8J!$ ;<=h?CADEB@FGHKLMZOQRNP,/+}0-.      #&(   abcdefg7w~        whr@@A  ""??AA__aa+38; 18<!8<"!1;!8.18*1   P[ !0AQ`q       ! 0! 0! 0! 0! 0! 0! 0! 0! 0 &++ 0++ 0 86!' '1 86!19! % $&')5679=>>?`aghhjw}   P[   "#%&')*     3Kbx/BTi}$3"!"" "#"" """"  %$%% &&&&%'%%%%%%*)**++++*,******0/0011110200000054556666575555558888( -.384378-084378-084378-084378-084378-083378-083378-083378-083378-083378-08+8,08+8,08+8,08+8,08+8,08+8,08+8,08+8,08+8,08+8,0;8/ 8/ 8/ 8/ 1898/ 8/ 8/ 18:8/ 8/ 8/ 1888/ 8/ 1878/ 1|| [@677889:;;<?@dest*+9:ghhivwwx}~~ qrrs      "##$%&&''(()    &-4;BIMQX_d+3;CKS[`ejrw      + 0+ 0+0+0+0+0+0+0+0+0+0+0+0+0+0+ 0;185#!'' 185#! 18?18>18>18>180 180 1;1;1;18= 1;1811811;$(#1### $  ++[[__aaP[      -:FVes      "!!#";!1;!1;!1;!1;!1;!1;!1;!1;!1;!1;!1;!1;!1;!1;!1../ @)~@>34459::;?@deefstvw}~*++,9:<=CDLMPQ_``aghkltu    4556FGZ[        +P[\\  !#%&'      "-86k/iN&UzAj ##### $),,,,,*+,,,,,*,-,,,,,.,,,,,,,,,,+,,,,,,%/0&&&&&&011111112111113111145''''''566666667666668 6666!9"""""""":(("((("(:;;;;;;;<;;;;;=;;;;>?0045"""""""":?".70".70".70".70".7037&#=R#=S#<(#<)# #037&#=R#=S#<(#<)# #037&#=R#=S#<(#<)# #037&#=R#=S#<(#<)# #037&#=R#=S#<(#<)# #0&#=$#=%#<V#<W# #0&#=#=P###<.#</# + #0&#=#=P###<.#</# + #0&#=#=P###<.#</# + #0&#=#=P###<.#</# + #0&#=(#=P###<.#</# + #0&#=(#=P###<.#</# + #0&#=(#=P###<.#</# + #0&#=(#=P###<.#</# + #0&#="#=##<X#<Y# 0&#=#=#<.#</# + #0&#=#=#<.#</# + #0&#=#=#<.#</# + #0&#=#=#<.#</# + #0&=0#=1#<2#<3# ##&=0#=1#<2#<3# ##&=0#=1#<2#<3# ##&#=0#=1#<2#<3# #1&=0#=1#<2#<3# ##&=0#=1#<2#<3# ##&#=0#=1#<2#<3# #1&=0#=1#<2#<3# ##&#=0#=1#<2#<3# #1&#=0#=1#<2#<3# #1666 2 9::;STTU    #$$%P[\\ ,S             &#=&#='#<4#<5# + #0&#=8#=9#<Z#<[# 0&#= #=!#<6#<7# + #0&#= #=!#<6#<7# + #0&#= #=!#<6#<7# + #0&#= #=!#<6#<7# + #0 Qyyyp m@-#$$%    * +PQQ RTU_ `mnno    *++,Z[[\^__``aabghhivwwxOP[\\]  !"$%&'()*+,-./12469:;<=>?@ABCDFGIKNOQSVX[^bcdefghijlmopsuwx{}-2P '( ",!#K$1%&O +FJFJ0N *AEAEIAIEIAEI/M )<@<@D<D@D<@DH<H@H<@HDH<DH@DH<@DH.L 77;;7??7;?;?7CC7;C;C7?C?C7;?C;?C7GG7;G;G7?G?G7;?G;?G7CGCG7;CG;CG7?CG?CG7;?CG;?CG66::6>>6:>:>6BB6:B:B6>B>B6:>B:>B55995==59=9=44883   &Ko#Fh2G[n(6ET^hr 4H[m5Lb{/CZp     "#! "#"%&$%%&%'''''''((((((()*******+,,,,,,,-.0....../.0....../121111113333333/4044444456555655655565565556578777879:999:99:999:99:999:9;<;;;<;=>===>==>===>=?@???@?AAAAAAABBBBBBBCDDDDDDDEFFFFFFFGHJHHHHHHIKLKKKKKKMMMMMMMINJNNNNNNOPOOOPOQRQQQRQSTSSSTSUVUUUVUWXWWWXWYZYYYZY[\[[[\[]^]]]^]_`___`_abaaabacdcccdcefeeefeggggggghhhhhhhi  jjjjjjjk lllllllm n pnnnnnno  qrqqqqqqsssssssotpttttttuvuuuvuwxwwwxwyzyyyzy{|{{{|{}~}}}~} !"#$%&'()*+,-./ /!/"/#/$/%/&/'/(/)/*/+/,/-/./ !"#$%&'()*+,-.021132456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno+ 0+ 0+ 0+ 0#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1#1#1#1#1#1#1#1#1#1#1#1j#1#}#1##1#8#1#~#1#1#1#1~##*#1#F#*F#12#*2#12#*2#12#*2#12#*2#12#*2#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1 cv62܀cv44cv48cv82 cv78cv92cv84cv72$cv80,ktch8 dsel@#invsH&P)    "!%$'( bdhlckbtkmr|kurplksclsdsdhsndururdcv48cv48cv48cv48cv92cv92cv44cv48cv82cv62cv48cv44cv48cv82cv62cv48cv82cv62cv48cv82cv62grcompiler-5.2.1/test/GrcRegressionTest/fonts/SchFeatures.gdh000066400000000000000000000131261411153030700243040ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////// // // File: SchFeatures.gdl // // Graphite feature definitions for Scheherazade. // //////////////////////////////////////////////////////////////////////////////////////////// /* Change history: SJC 2006-June File created. */ #include "stddef.gdh" //------------------------------------------------------------------------------------------ // // Feature definitions // table(feature) // Note that the order in which the features are listed below is how they will // be presented in the combo-box in WorldPad. shaddaKasra { id = "cv62"; // 2001; name.1033 = string("Shadda+kasra placement"); settings { std { value = 0; name.1033 = string("Raised kasra"); } sindhiUrdu { value = 1; name.1033 = string("Lowered kasra"); } } default = std; } meemAlt { id = "cv44"; // 2002; name.1033 = string("Meem alternates"); settings { std { value = 0; name.1033 = string("Standard"); } sindhi { value = 1; name.1033 = string("Sindhi"); } } default = std; } hehAlt { id = "cv48"; // 2003; name.1033 = string("Heh alternates"); settings { std { value = 0; name.1033 = string("Standard"); } kurdish { value = 1; name.1033 = string("Kurdish"); } sindhi { value = 2; name.1033 = string("Sindhi"); } urdu { value = 3; name.1033 = string("Urdu"); } } default = std; } easternDigits { id = "cv82"; // 2004; name.1033 = string("Eastern digit alternates"); settings { std { value = 0; name.1033 = string("Standard"); } sindhi { value = 1; name.1033 = string("Sindhi"); } urdu { value = 2; name.1033 = string("Urdu"); } } default = std; } sukunAlt { id = "cv78"; // 2005; name.1033 = string("Sukun alternates"); settings { std { value = 0; name.1033 = string("Sukun"); } jasmDown { value = 1; name.1033 = string("Jasm open down"); } jasmLeft { value = 2; name.1033 = string("Jasm open left"); } } default = std; } headOfKhahAlt { id = "cv92"; // 2009; name.1033 = string("Dotless head of khah"); settings { std { value = 0; name.1033 = string("Standard"); } openLeft { value = 1; name.1033 = string("Jasm open left"); } } default = std; } commaAlt { id = "cv84"; // 2006; name.1033 = string("Downward comma"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = off; } dammatanAlt { id = "cv72"; // 2007; name.1033 = string("Six-nine dammatan"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = off; } endOfAyah { id = "cv80"; // 2008; name.1033 = string("End of ayah"); settings { std { value = 0; name.1033 = string("Standard"); } circle { value = 1; name.1033 = string("Simplified A"); } square { value = 2; name.1033 = string("Simplified B"); } } default = std; } kasraTcheh { // temporary - different ways of handling collisions id = "ktch"; // 3000; name.1033 = string("Kasra-tcheh adjustment"); settings { raise { value = 2; name.1033 = string("Raise kasra"); } lower { value = 1; name.1033 = string("Lower kasra"); } } default = raise; } selectDiac { id = "dsel"; // 1051; name.1033 = string("Diacritic selection"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = on; } invis { id = "invs"; // 1030; name.1033 = string("Show invisible characters"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = off; } endtable; // feature //------------------------------------------------------------------------------------------ // // Language-specific assignments // table(language) sindhi { languages = ( "snd", "sd" ); // Sindhi meemAlt = sindhi; hehAlt = sindhi; easternDigits = sindhi; shaddaKasra = sindhiUrdu; }; kurdish { languages = ( "bdh", // Behdini - obsolete "ckb", // Central Kurdish "kmr", // Northern Kurdish/Behdini "kur", // Kurmanji "sdh" // Southern Kurdish/Sorani ); hehAlt = kurdish; }; urdu { languages = ( "urd", "ur" ); // Urdu hehAlt = urdu; easternDigits = urdu; shaddaKasra = sindhiUrdu; }; shina { languages = ( "scl", // Shina "plk" // Shina, Kohistani ); headOfKhahAlt = openLeft; }; endtable; // language grcompiler-5.2.1/test/GrcRegressionTest/fonts/SchGlyphs.gdh000066400000000000000000004472211411153030700240030ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////// // // File: SchGlyphs.gdh // // Glyph definitions and attachment points for Scheherazade // //////////////////////////////////////////////////////////////////////////////////////////// environment {AttributeOverride = true}; table(glyph) //------------------------------------------------------------------------------------------ // // Glyphs // r__a = postscript("A") { above = point(555m, 1090m) }; r__c = postscript("C") { below = point(553m, -72m) }; r__e = postscript("E") { above = point(471m, 1090m) }; r__i = postscript("I") { above = point(258m, 1090m) }; r__n = postscript("N") { above = point(551m, 1090m) }; r__o = postscript("O") { above = point(554m, 1090m) }; r__s = postscript("S") { above = point(437m, 1090m) }; r__u = postscript("U") { above = point(561m, 1090m) }; r__y = postscript("Y") { above = point(554m, 1090m) }; r__z = postscript("Z") { above = point(511m, 1090m) }; r_a = postscript("a") { above = point(336m, 760m) }; r_c = postscript("c") { below = point(351m, -65m) }; r_e = postscript("e") { above = point(375m, 760m) }; r_n = postscript("n") { above = point(389m, 760m) }; r_o = postscript("o") { above = point(385m, 760m) }; r_s = postscript("s") { above = point(311m, 760m) }; r_u = postscript("u") { above = point(387m, 760m) }; r_y = postscript("y") { above = point(420m, 760m) }; r_z = postscript("z") { above = point(377m, 760m) }; r_grave = postscript("grave") { above_ = point(294m, 760m) }; r_circumflex = postscript("circumflex") { above_ = point(242m, 770m) }; r_tilde = postscript("tilde") { above_ = point(257m, 760m) }; r_dieresis = postscript("dieresis") { above_ = point(242m, 770m) }; r_acute = postscript("acute") { above_ = point(227m, 760m) }; r_cedilla = postscript("cedilla") { below_ = point(154m, -50m) }; r_dotlessi = postscript("dotlessi") { above = point(221m, 760m) }; r_circledash = postscript("circledash") { diaA = point(520m, 1080m); diaB = point(520m, -120m) }; gbraceleft = postscript("braceleft"); gbraceright = postscript("braceright"); gbracketleft = postscript("bracketleft"); gbracketright = postscript("bracketright"); gless = postscript("less"); ggreater = postscript("greater"); gparenleft = postscript("parenleft"); gparenright = postscript("parenright"); // 254 absAlefMaddaAbove = postscript("absAlefMaddaAbove") { diaB = point(100m, -180m); diaA = point(120m, 1395m) }; absAlefHamzaAbove = postscript("absAlefHamzaAbove") { diaB = point(100m, -180m); diaA = point(120m, 1470m) }; absAlefHamzaBelow = postscript("absAlefHamzaBelow") { diaB = point(100m, -495m); diaA = point(120m, 1100m) }; absAlef = postscript("absAlef") { above = point(148m, 1039m); below = point(148m, -56m); diaA = point(120m, 1100m); diaB = point(100m, -180m) }; absAlefWavyHamzaAbove = postscript("absAlefWavyHamzaAbove") { diaB = point(100m, -180m); diaA = point(120m, 1455m) }; absAlefWavyHamzaBelow = postscript("absAlefWavyHamzaBelow") { diaB = point(100m, -500m); diaA = point(120m, 1100m) }; // 260 absHighHamzaAlef = postscript("absHighHamzaAlef") { diaB = point(100m, -180m); diaA = point(90m, 1215m) }; absAlefWasla = postscript("absAlefWasla") { diaB = point(100m, -180m); diaA = point(135m, 1370m) }; absWawHamzaAbove = postscript("absWawHamzaAbove") { diaB = point(250m, -600m); diaA = point(332m, 988m); alef = point(141m, 740m) }; absWaw = postscript("absWaw") { above = point(384m, 497m); below = point(384m, -461m); ring = point(246m, -67m); through = point(383m, -129m); center = point(383m, -129m); diaA = point(363m, 691m); diaB = point(250m, -600m); alef = point(133m, 615m) }; absHighHamzaWaw = postscript("absHighHamzaWaw") { diaB = point(250m, -600m); diaA = point(225m, 900m); alef = point(133m, 615m) }; absUHamzaAbove = postscript("absUHamzaAbove") { diaB = point(250m, -600m); diaA = point(258m, 1078m); alef = point(101m, 953m) }; absWawRing = postscript("absWawRing") { diaB = point(250m, -600m); diaA = point(363m, 691m); alef = point(133m, 615m) }; absKirghizOe = postscript("absKirghizOe") { diaB = point(250m, -600m); diaA = point(359m, 691m); alef = point(133m, 615m) }; absOe = postscript("absOe") { diaB = point(250m, -600m); diaA = point(355m, 1035m); alef = point(125m, 941m) }; absU = postscript("absU") { diaB = point(250m, -600m); diaA = point(363m, 1059m); alef = point(125m, 865m) }; // 270 absYu = postscript("absYu") { diaB = point(250m, -600m); diaA = point(348m, 1039m); alef = point(137m, 756m) }; absKirghizYu = postscript("absKirghizYu") { diaB = point(250m, -600m); diaA = point(355m, 1031m); alef = point(129m, 796m) }; absWawTwoDotsAbove = postscript("absWawTwoDotsAbove") { diaB = point(250m, -600m); diaA = point(355m, 1035m); alef = point(133m, 804m) }; absVe = postscript("absVe") { diaB = point(250m, -600m); diaA = point(359m, 1129m); alef = point(129m, 865m) }; absWawDotAbove = postscript("absWawDotAbove") { diaB = point(250m, -600m); diaA = point(359m, 1035m); alef = point(121m, 800m) }; absWawDotBelow = postscript("absWawDotBelow") { diaB = point(338m, -795m); diaA = point(359m, 687m); alef = point(133m, 615m) }; absDal = postscript("absDal") { above = point(313m, 646m); below = point(313m, -58m); ring = point(336m, 59m); diaA = point(266m, 859m); diaB = point(250m, -180m); alef = point(121m, 800m) }; absThal = postscript("absThal") { diaB = point(250m, -180m); diaA = point(258m, 1094m); alef = point(113m, 961m) }; absDdal = postscript("absDdal") { diaB = point(250m, -180m); diaA = point(234m, 1363m); alef = point(88m, 977m) }; absDalRing = postscript("absDalRing") { diaB = point(250m, -400m); diaA = point(262m, 848m); alef = point(121m, 800m) }; // 280 absDalDotBelow = postscript("absDalDotBelow") { diaB = point(250m, -450m); diaA = point(262m, 852m); alef = point(121m, 800m) }; absDalDotBelowSmallTah = postscript("absDalDotBelowSmallTah") { diaB = point(250m, -450m); diaA = point(234m, 1379m); alef = point(88m, 989m) }; absDahal = postscript("absDahal") { diaB = point(250m, -180m); diaA = point(258m, 1176m); alef = point(121m, 1045m) }; absDdahal = postscript("absDdahal") { diaB = point(250m, -450m); diaA = point(258m, 855m); alef = point(121m, 800m) }; absDul = postscript("absDul") { diaB = point(250m, -180m); diaA = point(258m, 1211m); alef = point(113m, 1082m) }; absDalThreeDotsAboveDownwards = postscript("absDalThreeDotsAboveDownwards") { diaB = point(250m, -180m); diaA = point(258m, 1203m); alef = point(117m, 1130m) }; absDalFourDotsAbove = postscript("absDalFourDotsAbove") { diaB = point(250m, -180m); diaA = point(262m, 1199m); alef = point(113m, 1130m) }; absDalHat = postscript("absDalHat") { diaB = point(250m, -180m); diaA = point(266m, 1094m); alef = point(109m, 1017m) }; absDalTwoVertBelowSmallTah = postscript("absDalTwoVertBelowSmallTah") { diaB = point(261m, -564m); diaA = point(234m, 1348m); alef = point(101m, 989m) }; absDalInvSmallVBelow = postscript("absDalInvSmallVBelow") { diaB = point(261m, -500m); diaA = point(256m, 863m); alef = point(121m, 800m) }; // 290 absReh = postscript("absReh") { above = point(375m, 394m); below = point(375m, -401m); ring = point(365m, -226m); center = point(176m, 64m); through = point(332m, -113m); diaA = point(224m, 750m); diaB = point(150m, -530m); alef = point(117m, 684m) }; absZain = postscript("absZain") { diaB = point(150m, -530m); diaA = point(210m, 840m); alef = point(117m, 772m) }; absRreh = postscript("absRreh") { diaB = point(150m, -530m); diaA = point(210m, 1200m); alef = point(121m, 744m) }; absRehSmallV = postscript("absRehSmallV") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(117m, 836m) }; absRehRing = postscript("absRehRing") { diaB = point(175m, -628m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehDotBelow = postscript("absRehDotBelow") { diaB = point(200m, -700m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehSmallVBelow = postscript("absRehSmallVBelow") { diaB = point(222m, -837m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehDotBelowDotAbove = postscript("absRehDotBelowDotAbove") { diaB = point(200m, -700m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehTwoDotsAbove = postscript("absRehTwoDotsAbove") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(109m, 848m) }; absJeh = postscript("absJeh") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(109m, 889m) }; // 300 absRehFourDotsAbove = postscript("absRehFourDotsAbove") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(105m, 901m) }; absRehTwoVertAbove = postscript("absRehTwoVertAbove") { diaB = point(150m, -530m); diaA = point(280m, 1020m); alef = point(113m, 881m) }; absRehHamzaAbove = postscript("absRehHamzaAbove") { diaB = point(150m, -530m); diaA = point(280m, 960m); alef = point(121m, 796m) }; absJehRetro1 = postscript("absJehRetro1") { diaB = point(150m, -530m); diaA = point(231m, 1320m); alef = point(121m, 945m) }; absJehRetro2 = postscript("absJehRetro2") { diaB = point(150m, -530m); diaA = point(192m, 1487m); alef = point(113m, 1130m) }; absJeh__dotHat = postscript("absJeh.dotHat") { diaB = point(150m, -530m); diaA = point(226m, 1115m); alef = point(121m, 933m) }; absRehHat = postscript("absRehHat") { diaB = point(150m, -530m); diaA = point(255m, 870m); alef = point(109m, 796m) }; absRehBar = postscript("absRehBar") { diaB = point(150m, -530m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absYehBarree = postscript("absYehBarree") { above = point(394m, 498m); below = point(745m, -306m); diaA = point(345m, 645m); diaB = point(500m, -400m) }; absYehBarreeHamzaAbove = postscript("absYehBarreeHamzaAbove") { diaB = point(500m, -400m); diaA = point(329m, 944m) }; // 310 absYehHamzaAbove = postscript("absYehHamzaAbove") { diaB = point(450m, -400m); diaA = point(359m, 1008m) }; absYeh = postscript("absYeh") { diaB = point(342m, -620m); diaA = point(325m, 709m) }; absYeh__noDots = postscript("absYeh.noDots") { above = point(410m, 512m); below = point(410m, -287m); diaA = point(329m, 705m); diaB = point(453m, -406m) }; absHighHamzaYeh = postscript("absHighHamzaYeh") { diaB = point(450m, -400m); diaA = point(179m, 692m) }; absFarsiYeh = postscript("absFarsiYeh") { diaB = point(450m, -400m); diaA = point(325m, 706m) }; absYehSmallV = postscript("absYehSmallV") { diaB = point(450m, -400m); diaA = point(402m, 1030m) }; absE = postscript("absE") { diaB = point(385m, -731m); diaA = point(420m, 705m) }; absYehThreeDotsBelow = postscript("absYehThreeDotsBelow") { diaB = point(385m, -782m); diaA = point(420m, 705m) }; absYehTail = postscript("absYehTail") { diaA = point(389m, 739m); diaB = point(400m, -400m) }; absAlefMaksura = postscript("absAlefMaksura") { diaB = point(400m, -400m); diaA = point(495m, 675m) }; // 320 absBehNoDots = postscript("absBehNoDots") { above = point(662m, 410m); below = point(657m, -98m); ring = point(636m, 12m); diaA = point(660m, 585m); diaB = point(651m, -310m); alef = point(298m, 583m) }; absBeh = postscript("absBeh") { diaB = point(645m, -427m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absTeh = postscript("absTeh") { diaB = point(651m, -310m); diaA = point(602m, 906m); alef = point(298m, 684m) }; absTheh = postscript("absTheh") { diaB = point(651m, -310m); diaA = point(598m, 1030m); alef = point(298m, 684m) }; absTteh = postscript("absTteh") { diaB = point(651m, -310m); diaA = point(581m, 1149m); alef = point(294m, 684m) }; absTteheh = postscript("absTteheh") { diaB = point(651m, -310m); diaA = point(600m, 1000m); alef = point(290m, 684m) }; absBeeh = postscript("absBeeh") { diaB = point(645m, -598m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absTehRing = postscript("absTehRing") { diaB = point(598m, -436m); diaA = point(598m, 893m); alef = point(290m, 684m) }; absTehThreeDotsAboveDownwards = postscript("absTehThreeDotsAboveDownwards") { diaB = point(651m, -310m); diaA = point(600m, 1000m); alef = point(290m, 684m) }; absPeh = postscript("absPeh") { diaB = point(654m, -628m); diaA = point(660m, 585m); alef = point(298m, 583m) }; // 330 absTeheh = postscript("absTeheh") { diaB = point(651m, -310m); diaA = point(600m, 1000m); alef = point(290m, 684m) }; absBeheh = postscript("absBeheh") { diaB = point(637m, -645m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehThreeDotsHorizBelow = postscript("absBehThreeDotsHorizBelow") { diaB = point(628m, -474m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehThreeDotsAboveDotBelow = postscript("absBehThreeDotsAboveDotBelow") { diaB = point(641m, -461m); diaA = point(607m, 1021m); alef = point(290m, 684m) }; absBehThreeDotsUpwardBelow = postscript("absBehThreeDotsUpwardBelow") { diaB = point(624m, -628m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehTwoDotsAboveThreeDotsUpwardBelow = postscript("absBehTwoDotsAboveThreeDotsUpwardBelow") { diaB = point(624m, -624m); diaA = point(620m, 863m); alef = point(290m, 684m) }; absBehDotAboveTwoDotsBelow = postscript("absBehDotAboveTwoDotsBelow") { diaB = point(624m, -487m); diaA = point(624m, 863m); alef = point(290m, 684m) }; absBehInvSmallVBelow = postscript("absBehInvSmallVBelow") { diaB = point(620m, -521m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehSmallVAbove = postscript("absBehSmallVAbove") { diaB = point(651m, -310m); diaA = point(658m, 914m); alef = point(290m, 684m) }; absJeem = postscript("absJeem") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(201m, 684m) }; // 340 absHah = postscript("absHah") { above = point(525m, 443m); center = point(526m, -200m); diaA = point(400m, 750m); diaB = point(400m, -825m); alef = point(201m, 684m) }; absKhah = postscript("absKhah") { diaB = point(400m, -825m); diaA = point(400m, 900m); alef = point(201m, 684m) }; absHahHamzaAbove = postscript("absHahHamzaAbove") { diaB = point(400m, -825m); diaA = point(400m, 950m); alef = point(201m, 684m) }; absHahTwoDotsVerticalAbove = postscript("absHahTwoDotsVerticalAbove") { diaB = point(400m, -825m); diaA = point(400m, 1020m); alef = point(201m, 800m) }; absNyeh = postscript("absNyeh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absDyeh = postscript("absDyeh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absHahThreeDotsAbove = postscript("absHahThreeDotsAbove") { diaB = point(400m, -825m); diaA = point(400m, 1100m); alef = point(201m, 800m) }; absTcheh = postscript("absTcheh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absTcheheh = postscript("absTcheheh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absTchehDotAbove = postscript("absTchehDotAbove") { diaB = point(400m, -825m); diaA = point(400m, 900m); alef = point(201m, 684m) }; // 350 absTchehRetro1 = postscript("absTchehRetro1") { diaB = point(400m, -825m); diaA = point(393m, 1192m); alef = point(197m, 788m) }; absTchehRetro2 = postscript("absTchehRetro2") { diaB = point(400m, -825m); diaA = point(480m, 660m); alef = point(201m, 684m) }; absJeemRetro1 = postscript("absJeemRetro1") { diaB = point(400m, -825m); diaA = point(480m, 660m); alef = point(201m, 684m) }; absJeemRetro2 = postscript("absJeemRetro2") { diaB = point(400m, -825m); diaA = point(402m, 1196m); alef = point(205m, 788m) }; absJeemRetro3 = postscript("absJeemRetro3") { diaB = point(400m, -825m); diaA = point(402m, 1192m); alef = point(201m, 780m) }; absHahTwoDotsAbove = postscript("absHahTwoDotsAbove") { diaB = point(400m, -825m); diaA = point(436m, 970m); alef = point(201m, 800m) }; absHahThreeDotsUpwardBelow = postscript("absHahThreeDotsUpwardBelow") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absSeen = postscript("absSeen") { above = point(927m, 449m); below = point(1004m, -23m); diaA = point(400m, 450m); diaB = point(300m, -600m) }; absSheen = postscript("absSheen") { diaB = point(300m, -600m); diaA = point(355m, 555m) }; absSeenDotBelowDotAbove = postscript("absSeenDotBelowDotAbove") { diaB = point(300m, -600m); diaA = point(400m, 450m) }; // 360 absSeenThreeDotsBelow = postscript("absSeenThreeDotsBelow") { diaB = point(300m, -600m); diaA = point(400m, 450m) }; absSeenThreeDotsBelowThreeDotsAbove = postscript("absSeenThreeDotsBelowThreeDotsAbove") { diaB = point(300m, -600m); diaA = point(359m, 551m) }; absSheenDotBelow = postscript("absSheenDotBelow") { diaB = point(300m, -600m); diaA = point(363m, 551m) }; absSheenRetro1 = postscript("absSheenRetro1") { diaB = point(300m, -600m); diaA = point(325m, 996m) }; absSheenRetro2 = postscript("absSheenRetro2") { diaB = point(300m, -600m); diaA = point(312m, 825m) }; absSeenFourDotsAbove = postscript("absSeenFourDotsAbove") { diaB = point(300m, -600m); diaA = point(316m, 611m) }; absSeenTwoVertAbove = postscript("absSeenTwoVertAbove") { diaB = point(300m, -600m); diaA = point(316m, 632m) }; absSad = postscript("absSad") { above = point(972m, 446m); below = point(1085m, -90m); diaA = point(397m, 496m); diaB = point(300m, -600m) }; // 370 absDad = postscript("absDad") { diaB = point(300m, -600m); diaA = point(400m, 500m) }; absSadTwoDotsBelow = postscript("absSadTwoDotsBelow") { diaB = point(300m, -600m); diaA = point(400m, 500m) }; absSadThreeDotsAbove = postscript("absSadThreeDotsAbove") { diaB = point(300m, -600m); diaA = point(400m, 600m) }; absDadDotBelow = postscript("absDadDotBelow") { diaB = point(300m, -600m); diaA = point(393m, 500m) }; absTah = postscript("absTah") { above = point(759m, 571m); below = point(524m, -48m); diaA = point(389m, 1231m); diaB = point(500m, -180m); alef = point(201m, 684m) }; absZah = postscript("absZah") { diaB = point(500m, -180m); diaA = point(389m, 1231m); alef = point(201m, 684m) }; absTahThreeDotsAbove = postscript("absTahThreeDotsAbove") { diaB = point(500m, -180m); diaA = point(389m, 1235m); alef = point(201m, 684m) }; absAin = postscript("absAin") { above = point(294m, 691m); below = point(455m, 103m); diaA = point(270m, 900m); diaB = point(300m, -840m) }; absGhain = postscript("absGhain") { diaB = point(300m, -840m); diaA = point(270m, 1100m) }; absAinThreeDotsAbove = postscript("absAinThreeDotsAbove") { diaB = point(300m, -840m); diaA = point(222m, 1282m) }; absGhainDotBelow = postscript("absGhainDotBelow") { diaB = point(300m, -840m); diaA = point(261m, 1107m) }; absAinTwoDotsAbove = postscript("absAinTwoDotsAbove") { diaB = point(300m, -840m); diaA = point(256m, 1115m) }; // 380 absAinThreeDotsDownAbove = postscript("absAinThreeDotsDownAbove") { diaB = point(300m, -840m); diaA = point(252m, 1273m) }; absAinTwoDotsVertAbove = postscript("absAinTwoDotsVertAbove") { diaB = point(300m, -840m); diaA = point(252m, 1290m) }; absFeh = postscript("absFeh") { diaB = point(600m, -210m); diaA = point(479m, 917m); alef = point(342m, 740m) }; absDotlessFeh = postscript("absDotlessFeh") { above = point(1162m, 785m); below = point(1104m, -6m); diaA = point(480m, 900m); diaB = point(600m, -210m); alef = point(342m, 740m) }; absFehDotMovedBelow = postscript("absFehDotMovedBelow") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absFehDotBelow = postscript("absFehDotBelow") { diaB = point(602m, -209m); diaA = point(479m, 921m); alef = point(342m, 740m) }; absVeh = postscript("absVeh") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absFehThreeDotsBelow = postscript("absFehThreeDotsBelow") { diaB = point(581m, -329m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absPeheh = postscript("absPeheh") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absFehTwoDotsBelow = postscript("absFehTwoDotsBelow") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; // 390 absFehThreeDotsUpwardBelow = postscript("absFehThreeDotsUpwardBelow") { diaB = point(594m, -252m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absQafNoDots = postscript("absQafNoDots") { above = point(762m, 717m); below = point(762m, -166m); diaA = point(405m, 795m); diaB = point(400m, -300m) }; absQaf = postscript("absQaf") { diaB = point(400m, -300m); diaA = point(330m, 1020m) }; absQafDotAbove = postscript("absQafDotAbove") { diaB = point(400m, -300m); diaA = point(330m, 1020m) }; absQafThreeDotsAbove = postscript("absQafThreeDotsAbove") { diaB = point(400m, -300m); diaA = point(330m, 1020m) }; absKaf = postscript("absKaf") { above = point(662m, 1136m); below = point(662m, -65m); diaA = point(315m, 1155m); diaB = point(400m, -210m); alef = point(161m, 961m) }; absKafDotAbove = postscript("absKafDotAbove") { diaB = point(400m, -210m); diaA = point(303m, 1141m); alef = point(161m, 961m) }; absNg = postscript("absNg") { diaB = point(400m, -210m); diaA = point(256m, 1372m); alef = point(161m, 961m) }; absKafThreeDotsBelow = postscript("absKafThreeDotsBelow") { diaB = point(414m, -513m); diaA = point(315m, 1100m); alef = point(161m, 961m) }; absKeheh = postscript("absKeheh") { above = point(805m, 691m); below = point(811m, -185m); ring = point(1212m, 752m); diaA = point(510m, 800m); diaB = point(585m, -299m); alef = point(241m, 684m) }; // 400 absKafRing = postscript("absKafRing") { diaB = point(585m, -299m); diaA = point(510m, 800m); alef = point(241m, 684m) }; absGaf = postscript("absGaf") { diaB = point(585m, -299m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absGafRing = postscript("absGafRing") { diaB = point(585m, -299m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absNgoeh = postscript("absNgoeh") { diaB = point(585m, -299m); diaA = point(330m, 1200m); alef = point(241m, 684m) }; absGafTwoDotsBelow = postscript("absGafTwoDotsBelow") { diaB = point(400m, -400m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absGueh = postscript("absGueh") { diaB = point(400m, -400m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absGafThreeDotsAbove = postscript("absGafThreeDotsAbove") { diaB = point(585m, -299m); diaA = point(315m, 1200m); alef = point(241m, 684m) }; absKehehDotAbove = postscript("absKehehDotAbove") { diaB = point(581m, -299m); diaA = point(436m, 906m); alef = point(241m, 684m) }; absKehehThreeDotsAbove = postscript("absKehehThreeDotsAbove") { diaB = point(585m, -299m); diaA = point(389m, 961m); alef = point(241m, 684m) }; absKehehThreeDotsUpwardBelow = postscript("absKehehThreeDotsUpwardBelow") { diaB = point(346m, -406m); diaA = point(510m, 800m); alef = point(241m, 684m) }; // 410 absSwashKaf = postscript("absSwashKaf") { diaA = point(390m, 1000m); diaB = point(600m, -210m) }; absLam = postscript("absLam") { above = point(597m, 1143m); below = point(668m, -236m); through = point(648m, 691m); diaA = point(300m, 900m); diaB = point(400m, -330m); alef = point(460m, 800m) }; absLamSmallV = postscript("absLamSmallV") { diaB = point(400m, -330m); diaA = point(538m, 1572m); alef = point(460m, 700m) }; absLamDotAbove = postscript("absLamDotAbove") { diaB = point(400m, -330m); diaA = point(453m, 1470m); alef = point(460m, 650m) }; absLamThreeDotsAbove = postscript("absLamThreeDotsAbove") { diaB = point(400m, -330m); diaA = point(390m, 1620m); alef = point(460m, 650m) }; absLamThreeDotsBelow = postscript("absLamThreeDotsBelow") { diaB = point(250m, -500m); diaA = point(315m, 900m); alef = point(460m, 800m) }; absLamRetro = postscript("absLamRetro") { diaB = point(400m, -330m); diaA = point(436m, 1769m); alef = point(460m, 540m) }; absLamBar = postscript("absLamBar") { diaB = point(400m, -330m); diaA = point(300m, 1140m); alef = point(460m, 915m) }; absMeem = postscript("absMeem") { above = point(297m, 546m); below = point(339m, 73m); diaA = point(192m, 837m); diaB = point(165m, -660m) }; absMeem__sindhi = postscript("absMeem.sindhi") { above = point(600m, 552m); below = point(600m, -100m); diaA = point(500m, 700m); diaB = point(400m, -200m) }; // 420 absMeemDotAbove = postscript("absMeemDotAbove") { diaB = point(165m, -660m); diaA = point(188m, 1034m) }; absMeemDotBelow = postscript("absMeemDotBelow") { diaB = point(165m, -660m); diaA = point(188m, 850m) }; absNoon = postscript("absNoon") { diaB = point(400m, -210m); diaA = point(251m, 999m) }; absNoonDotBelow = postscript("absNoonDotBelow") { diaB = point(406m, -487m); diaA = point(299m, 999m) }; absNoonGhunna = postscript("absNoonGhunna") { above = point(407m, 591m); below = point(426m, -136m); ring = point(437m, -13m); diaA = point(300m, 870m); diaB = point(400m, -210m) }; absRnoon = postscript("absRnoon") { diaB = point(400m, -210m); diaA = point(270m, 1365m); alef = point(161m, 924m) }; absNoonRing = postscript("absNoonRing") { diaB = point(397m, -397m); diaA = point(299m, 999m) }; absNoonThreeDotsAbove = postscript("absNoonThreeDotsAbove") { diaB = point(400m, -210m); diaA = point(285m, 1245m) }; absNoonTwoDotsBelow = postscript("absNoonTwoDotsBelow") { diaB = point(400m, -500m); diaA = point(299m, 999m) }; absNoonRetro = postscript("absNoonRetro") { diaB = point(350m, -210m); diaA = point(286m, 1478m); alef = point(161m, 1188m) }; // 430 absNoonSmallV = postscript("absNoonSmallV") { diaB = point(350m, -210m); diaA = point(360m, 1275m) }; absHehDoachashmee = postscript("absHehDoachashmee") { above = point(347m, 652m); below = point(347m, -17m); diaA = point(360m, 855m); diaB = point(300m, -195m) }; absHehHat = postscript("absHehHat") { diaB = point(340m, -195m); diaA = point(330m, 1070m) }; absHeh = postscript("absHeh") { diaB = point(200m, -180m); diaA = point(261m, 769m) }; absHeh__knotted = postscript("absHeh.knotted") { diaB = point(300m, -195m); diaA = point(360m, 855m) }; absAe = postscript("absAe") { above = point(256m, 560m); below = point(256m, -60m); diaA = point(261m, 769m); diaB = point(200m, -180m) }; absTehMarbuta = postscript("absTehMarbuta") { diaB = point(200m, -180m); diaA = point(210m, 1000m) }; absHehYehAbove = postscript("absHehYehAbove") { diaB = point(200m, -180m); diaA = point(209m, 1128m) }; absHehGoal = postscript("absHehGoal") { diaB = point(200m, -195m); diaA = point(261m, 769m) }; absHehGoalHamzaAbove = postscript("absHehGoalHamzaAbove") { diaB = point(200m, -180m); diaA = point(218m, 1132m) }; // 440 absTehMarbutaGoal = postscript("absTehMarbutaGoal") { diaB = point(200m, -180m); diaA = point(210m, 1000m) }; absHamza = postscript("absHamza") { above = point(260m, 472m); below = point(265m, -155m); diaA = point(210m, 540m); diaB = point(210m, -180m) }; absSignSindhiAmpers = postscript("absSignSindhiAmpers") { diaB = point(244m, -649m); diaA = point(210m, 540m) }; absSignSindhiPostpositionMen = postscript("absSignSindhiPostpositionMen") { diaA = point(500m, 700m); diaB = point(512m, -547m) }; absTatweel = postscript("absTatweel") { diaA = point(150m, 790m); diaB = point(111m, -188m) }; absLamAlef = postscript("absLamAlef") { above = point(691m, 1195m); below = point(651m, -58m); through = point(703m, 777m); above2 = point(46m, 1185m); below2 = point(446m, -57m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaA1 = point(714m, 1278m); diaA2 = point(0m, 1218m); diaB1 = point(600m, -100m); diaB2 = point(420m, -100m); alef1 = point(600m, 825m); alef2 = point(0m, 1155m) }; absLamSmallVAlef = postscript("absLamSmallVAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(600m, 825m); diaB2 = point(420m, -100m); diaA1 = point(667m, 1594m) }; absLamDotAboveAlef = postscript("absLamDotAboveAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(600m, 825m); diaB2 = point(420m, -100m); diaA1 = point(658m, 1560m) }; absLamThreeDotsAboveAlef = postscript("absLamThreeDotsAboveAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(600m, 825m); diaB2 = point(420m, -100m); diaA1 = point(615m, 1722m) }; absLamThreeDotsBelowAlef = postscript("absLamThreeDotsBelowAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(628m, -555m); dia2B2 = point(256m, -145m); diaB1 = point(628m, -555m); alef1 = point(600m, 825m); diaB2 = point(256m, -145m); diaA1 = point(714m, 1278m) }; // 450 absLamRetroAlef = postscript("absLamRetroAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(480m, 1455m); diaB2 = point(420m, -100m); diaA1 = point(585m, 1786m) }; absLamBarAlef = postscript("absLamBarAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(540m, 930m); diaB2 = point(420m, -100m); diaA1 = point(714m, 1278m) }; absAlefMaddaAboveFin = postscript("absAlefMaddaAboveFin") { diaB = point(179m, -179m); diaA = point(100m, 1395m) }; absAlefHamzaAboveFin = postscript("absAlefHamzaAboveFin") { diaB = point(179m, -179m); diaA = point(90m, 1445m) }; absAlefHamzaBelowFin = postscript("absAlefHamzaBelowFin") { diaB = point(192m, -491m); diaA = point(100m, 1175m) }; absAlefFin = postscript("absAlefFin") { above = point(136m, 1043m); below = point(227m, -50m); diaA = point(105m, 1175m); diaB = point(179m, -179m) }; absAlefWavyHamzaAboveFin = postscript("absAlefWavyHamzaAboveFin") { diaB = point(179m, -179m); diaA = point(60m, 1485m) }; absAlefWavyHamzaBelowFin = postscript("absAlefWavyHamzaBelowFin") { diaB = point(158m, -513m); diaA = point(75m, 1185m) }; absHighHamzaAlefFin = postscript("absHighHamzaAlefFin") { diaB = point(179m, -179m); diaA = point(105m, 1365m) }; absAlefWaslaFin = postscript("absAlefWaslaFin") { diaB = point(179m, -179m); diaA = point(135m, 1370m) }; // 460 absWawHamzaAboveFin = postscript("absWawHamzaAboveFin") { diaB = point(250m, -600m); diaA = point(312m, 880m); alef = point(141m, 684m) }; absWawFin = postscript("absWawFin") { above = point(375m, 397m); below = point(375m, -457m); ring = point(231m, -42m); through = point(383m, -156m); diaA = point(308m, 684m); diaB = point(250m, -600m); center = point(383m, -154m); alef = point(141m, 684m) }; absHighHamzaWawFin = postscript("absHighHamzaWawFin") { diaB = point(250m, -600m); diaA = point(269m, 910m); alef = point(141m, 684m) }; absUHamzaAboveFin = postscript("absUHamzaAboveFin") { diaB = point(250m, -600m); diaA = point(225m, 1000m) }; absWawRingFin = postscript("absWawRingFin") { diaB = point(250m, -600m); diaA = point(308m, 684m); alef = point(141m, 684m) }; absKirghizOeFin = postscript("absKirghizOeFin") { diaB = point(250m, -600m); diaA = point(308m, 684m); alef = point(141m, 684m) }; absOeFin = postscript("absOeFin") { diaB = point(250m, -600m); diaA = point(308m, 923m); alef = point(137m, 816m) }; absUFin = postscript("absUFin") { diaB = point(250m, -600m); diaA = point(303m, 1038m); alef = point(141m, 684m) }; absYuFin = postscript("absYuFin") { diaB = point(250m, -600m); diaA = point(303m, 978m); alef = point(141m, 684m) }; absKirghizYuFin = postscript("absKirghizYuFin") { diaB = point(250m, -600m); diaA = point(308m, 966m); alef = point(141m, 780m) }; // 470 absWawTwoDotsAboveFin = postscript("absWawTwoDotsAboveFin") { diaB = point(250m, -600m); diaA = point(308m, 936m); alef = point(141m, 736m) }; absVeFin = postscript("absVeFin") { diaB = point(250m, -600m); diaA = point(308m, 1008m); alef = point(137m, 764m) }; absWawDotAboveFin = postscript("absWawDotAboveFin") { diaB = point(250m, -600m); diaA = point(303m, 936m); alef = point(141m, 684m) }; absWawDotBelowFin = postscript("absWawDotBelowFin") { diaB = point(359m, -765m); diaA = point(303m, 684m); alef = point(141m, 684m) }; absDalFin = postscript("absDalFin") { above = point(468m, 814m); below = point(417m, -50m); ring = point(315m, 91m); diaA = point(256m, 1000m); diaB = point(300m, -180m); alef = point(141m, 684m) }; absThalFin = postscript("absThalFin") { diaB = point(300m, -180m); diaA = point(256m, 1196m); alef = point(137m, 861m) }; absDdalFin = postscript("absDdalFin") { diaB = point(300m, -180m); diaA = point(295m, 1500m); alef = point(157m, 1154m) }; absDalRingFin = postscript("absDalRingFin") { diaB = point(300m, -400m); diaA = point(256m, 1000m); alef = point(141m, 684m) }; absDalDotBelowFin = postscript("absDalDotBelowFin") { diaB = point(376m, -402m); diaA = point(256m, 1000m); alef = point(141m, 684m) }; absDalDotBelowSmallTahFin = postscript("absDalDotBelowSmallTahFin") { diaB = point(380m, -410m); diaA = point(295m, 1500m); alef = point(145m, 1154m) }; // 480 absDahalFin = postscript("absDahalFin") { diaB = point(300m, -180m); diaA = point(256m, 1260m); alef = point(137m, 921m) }; absDdahalFin = postscript("absDdahalFin") { diaB = point(355m, -419m); diaA = point(256m, 1000m); alef = point(141m, 684m) }; absDulFin = postscript("absDulFin") { diaB = point(300m, -180m); diaA = point(256m, 1303m); alef = point(133m, 945m) }; absDalThreeDotsAboveDownwardsFin = postscript("absDalThreeDotsAboveDownwardsFin") { diaB = point(300m, -180m); diaA = point(225m, 1330m); alef = point(121m, 941m) }; absDalFourDotsAboveFin = postscript("absDalFourDotsAboveFin") { diaB = point(300m, -180m); diaA = point(225m, 1300m); alef = point(145m, 929m) }; absDalHatFin = postscript("absDalHatFin") { diaB = point(300m, -180m); diaA = point(359m, 1256m); alef = point(141m, 921m) }; absDalTwoVertBelowSmallTahFin = postscript("absDalTwoVertBelowSmallTahFin") { diaB = point(385m, -560m); diaA = point(295m, 1500m); alef = point(149m, 1130m) }; absDalInvSmallVBelowFin = postscript("absDalInvSmallVBelowFin") { diaB = point(380m, -410m); diaA = point(312m, 992m); alef = point(141m, 684m) }; absRehFin = postscript("absRehFin") { above = point(349m, 242m); below = point(349m, -432m); ring = point(348m, -268m); center = point(145m, 0m); through = point(320m, -164m); diaA = point(225m, 600m); diaB = point(200m, -540m); alef = point(101m, 450m) }; absZainFin = postscript("absZainFin") { diaB = point(200m, -540m); diaA = point(244m, 799m); alef = point(101m, 450m) }; // 490 absRrehFin = postscript("absRrehFin") { diaB = point(200m, -540m); diaA = point(214m, 953m); alef = point(109m, 571m) }; absRehSmallVFin = postscript("absRehSmallVFin") { diaB = point(200m, -540m); diaA = point(248m, 855m); alef = point(97m, 623m) }; absRehRingFin = postscript("absRehRingFin") { diaB = point(248m, -701m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehDotBelowFin = postscript("absRehDotBelowFin") { diaB = point(265m, -735m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehSmallVBelowFin = postscript("absRehSmallVBelowFin") { diaB = point(261m, -816m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehDotBelowDotAboveFin = postscript("absRehDotBelowDotAboveFin") { diaB = point(278m, -756m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehTwoDotsAboveFin = postscript("absRehTwoDotsAboveFin") { diaB = point(200m, -540m); diaA = point(225m, 800m); alef = point(101m, 555m) }; absJehFin = postscript("absJehFin") { diaB = point(200m, -540m); diaA = point(235m, 927m); alef = point(105m, 599m) }; absRehFourDotsAboveFin = postscript("absRehFourDotsAboveFin") { diaB = point(200m, -540m); diaA = point(235m, 923m); alef = point(101m, 659m) }; absRehTwoVertAboveFin = postscript("absRehTwoVertAboveFin") { diaB = point(200m, -540m); diaA = point(261m, 889m); alef = point(109m, 603m) }; // 500 absRehHamzaAboveFin = postscript("absRehHamzaAboveFin") { diaB = point(200m, -540m); diaA = point(239m, 859m); alef = point(97m, 507m) }; absJehRetro1Fin = postscript("absJehRetro1Fin") { diaB = point(200m, -540m); diaA = point(218m, 1171m); alef = point(109m, 780m) }; absJehRetro2Fin = postscript("absJehRetro2Fin") { diaB = point(200m, -540m); diaA = point(179m, 1346m); alef = point(101m, 981m) }; absJehFin__dotHat = postscript("absJehFin.dotHat") { diaB = point(201m, -538m); diaA = point(239m, 1021m); alef = point(97m, 684m) }; absRehHatFin = postscript("absRehHatFin") { diaB = point(200m, -540m); diaA = point(244m, 812m); alef = point(105m, 515m) }; absRehBarFin = postscript("absRehBarFin") { diaB = point(200m, -540m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absYehBarreeFin = postscript("absYehBarreeFin") { above = point(494m, 45m); below = point(680m, -787m); diaA = point(375m, 220m); diaB = point(500m, -850m) }; absYehBarreeHamzaAboveFin = postscript("absYehBarreeHamzaAboveFin") { diaB = point(500m, -850m); diaA = point(410m, 500m) }; absYehHamzaAboveFin = postscript("absYehHamzaAboveFin") { diaB = point(450m, -650m); diaA = point(385m, 530m) }; absYehFin = postscript("absYehFin") { diaB = point(419m, -910m); diaA = point(389m, 329m) }; // 510 absYehFin__noDots = postscript("absYehFin.noDots") { above = point(458m, 65m); below = point(446m, -594m); diaA = point(389m, 329m); diaB = point(453m, -654m) }; absHighHamzaYehFin = postscript("absHighHamzaYehFin") { diaB = point(450m, -650m); diaA = point(261m, 329m) }; absFarsiYehFin = postscript("absFarsiYehFin") { diaB = point(450m, -650m); diaA = point(389m, 329m) }; absYehSmallVFin = postscript("absYehSmallVFin") { diaB = point(450m, -650m); diaA = point(406m, 564m) }; absEFin = postscript("absEFin") { diaB = point(427m, -1047m); diaA = point(389m, 329m) }; absYehThreeDotsBelowFin = postscript("absYehThreeDotsBelowFin") { diaB = point(444m, -1094m); diaA = point(389m, 329m) }; absYehTailFin = postscript("absYehTailFin") { diaA = point(389m, 329m); diaB = point(400m, -650m) }; absAlefMaksuraFin = postscript("absAlefMaksuraFin") { diaB = point(450m, -650m); diaA = point(389m, 329m) }; absBehNoDotsFin = postscript("absBehNoDotsFin") { above = point(649m, 300m); below = point(581m, -132m); ring = point(588m, -30m); diaA = point(660m, 585m); diaB = point(659m, -310m); alef = point(302m, 583m) }; absBehFin = postscript("absBehFin") { diaB = point(560m, -496m); diaA = point(660m, 585m); alef = point(302m, 583m) }; // 520 absTehFin = postscript("absTehFin") { diaB = point(659m, -310m); diaA = point(632m, 820m); alef = point(302m, 583m) }; absThehFin = postscript("absThehFin") { diaB = point(659m, -310m); diaA = point(615m, 953m); alef = point(302m, 583m) }; absTtehFin = postscript("absTtehFin") { diaB = point(659m, -310m); diaA = point(551m, 1030m); alef = point(302m, 583m) }; absTtehehFin = postscript("absTtehehFin") { diaB = point(659m, -310m); diaA = point(632m, 931m); alef = point(302m, 583m) }; absBeehFin = postscript("absBeehFin") { diaB = point(568m, -620m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absTehRingFin = postscript("absTehRingFin") { diaB = point(534m, -449m); diaA = point(632m, 833m); alef = point(302m, 583m) }; absTehThreeDotsAboveDownwardsFin = postscript("absTehThreeDotsAboveDownwardsFin") { diaB = point(659m, -310m); diaA = point(628m, 970m); alef = point(302m, 583m) }; absPehFin = postscript("absPehFin") { diaB = point(568m, -675m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absTehehFin = postscript("absTehehFin") { diaB = point(659m, -310m); diaA = point(624m, 953m); alef = point(302m, 583m) }; absBehehFin = postscript("absBehehFin") { diaB = point(555m, -675m); diaA = point(660m, 585m); alef = point(302m, 583m) }; // 530 absBehThreeDotsHorizBelowFin = postscript("absBehThreeDotsHorizBelowFin") { diaB = point(547m, -461m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absBehThreeDotsAboveDotBelowFin = postscript("absBehThreeDotsAboveDotBelowFin") { diaB = point(547m, -474m); diaA = point(607m, 927m); alef = point(302m, 583m) }; absBehThreeDotsUpwardBelowFin = postscript("absBehThreeDotsUpwardBelowFin") { diaB = point(538m, -662m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absBehTwoDotsAboveThreeDotsUpwardBelowFin = postscript("absBehTwoDotsAboveThreeDotsUpwardBelowFin") { diaB = point(530m, -662m); diaA = point(632m, 833m); alef = point(302m, 583m) }; absBehDotAboveTwoDotsBelowFin = postscript("absBehDotAboveTwoDotsBelowFin") { diaB = point(551m, -521m); diaA = point(632m, 808m); alef = point(302m, 583m) }; absBehInvSmallVBelowFin = postscript("absBehInvSmallVBelowFin") { diaB = point(547m, -521m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absBehSmallVAboveFin = postscript("absBehSmallVAboveFin") { diaB = point(659m, -310m); diaA = point(641m, 833m); alef = point(302m, 583m) }; absJeemFin = postscript("absJeemFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahFin = postscript("absHahFin") { above = point(522m, 439m); center = point(520m, -229m); diaA = point(400m, 750m); diaB = point(400m, -840m); alef = point(149m, 684m) }; absKhahFin = postscript("absKhahFin") { diaB = point(400m, -840m); diaA = point(400m, 900m); alef = point(149m, 684m) }; // 540 absHahHamzaAboveFin = postscript("absHahHamzaAboveFin") { diaB = point(400m, -840m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absHahTwoDotsVerticalAboveFin = postscript("absHahTwoDotsVerticalAboveFin") { diaB = point(400m, -840m); diaA = point(400m, 1020m); alef = point(149m, 684m) }; absNyehFin = postscript("absNyehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absDyehFin = postscript("absDyehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahThreeDotsAboveFin = postscript("absHahThreeDotsAboveFin") { diaB = point(400m, -840m); diaA = point(427m, 1034m); alef = point(149m, 684m) }; absTchehFin = postscript("absTchehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehehFin = postscript("absTchehehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehDotAboveFin = postscript("absTchehDotAboveFin") { diaB = point(400m, -840m); diaA = point(400m, 900m); alef = point(149m, 684m) }; absTchehRetro1Fin = postscript("absTchehRetro1Fin") { diaB = point(400m, -840m); diaA = point(402m, 1171m); alef = point(149m, 684m) }; absTchehRetro2Fin = postscript("absTchehRetro2Fin") { diaB = point(400m, -840m); diaA = point(480m, 660m); alef = point(149m, 684m) }; // 550 absJeemRetro1Fin = postscript("absJeemRetro1Fin") { diaB = point(400m, -840m); diaA = point(480m, 660m); alef = point(149m, 684m) }; absJeemRetro2Fin = postscript("absJeemRetro2Fin") { diaB = point(400m, -840m); diaA = point(397m, 1166m); alef = point(149m, 684m) }; absJeemRetro3Fin = postscript("absJeemRetro3Fin") { diaB = point(400m, -840m); diaA = point(397m, 1171m); alef = point(149m, 684m) }; absHahTwoDotsAboveFin = postscript("absHahTwoDotsAboveFin") { diaB = point(400m, -840m); diaA = point(406m, 906m); alef = point(149m, 684m) }; absHahThreeDotsUpwardBelowFin = postscript("absHahThreeDotsUpwardBelowFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absSeenFin = postscript("absSeenFin") { above = point(969m, 333m); below = point(1036m, -65m); diaA = point(400m, 450m); diaB = point(338m, -602m) }; absSheenFin = postscript("absSheenFin") { diaB = point(333m, -602m); diaA = point(400m, 450m) }; absSeenDotBelowDotAboveFin = postscript("absSeenDotBelowDotAboveFin") { diaB = point(329m, -602m); diaA = point(400m, 450m) }; absSeenThreeDotsBelowFin = postscript("absSeenThreeDotsBelowFin") { diaB = point(329m, -602m); diaA = point(400m, 450m) }; absSeenThreeDotsBelowThreeDotsAboveFin = postscript("absSeenThreeDotsBelowThreeDotsAboveFin") { diaB = point(338m, -602m); diaA = point(402m, 564m) }; // 560 absSheenDotBelowFin = postscript("absSheenDotBelowFin") { diaB = point(338m, -607m); diaA = point(402m, 551m) }; absSheenRetro1Fin = postscript("absSheenRetro1Fin") { diaB = point(350m, -600m); diaA = point(375m, 975m) }; absSheenRetro2Fin = postscript("absSheenRetro2Fin") { diaB = point(350m, -600m); diaA = point(405m, 855m) }; absSeenFourDotsAboveFin = postscript("absSeenFourDotsAboveFin") { diaB = point(350m, -600m); diaA = point(376m, 564m) }; absSeenTwoVertAboveFin = postscript("absSeenTwoVertAboveFin") { diaB = point(350m, -600m); diaA = point(363m, 568m) }; absSadFin = postscript("absSadFin") { above = point(1001m, 429m); below = point(1133m, -90m); diaA = point(400m, 450m); diaB = point(300m, -600m) }; absDadFin = postscript("absDadFin") { diaB = point(300m, -600m); diaA = point(397m, 547m) }; absSadTwoDotsBelowFin = postscript("absSadTwoDotsBelowFin") { diaB = point(300m, -600m); diaA = point(400m, 450m) }; absSadThreeDotsAboveFin = postscript("absSadThreeDotsAboveFin") { diaB = point(300m, -600m); diaA = point(393m, 662m) }; absDadDotBelowFin = postscript("absDadDotBelowFin") { diaB = point(300m, -600m); diaA = point(397m, 547m) }; // 570 absTahFin = postscript("absTahFin") { above = point(743m, 562m); below = point(567m, -50m); diaA = point(390m, 1240m); diaB = point(500m, -180m); alef = point(189m, 684m) }; absZahFin = postscript("absZahFin") { diaB = point(500m, -180m); diaA = point(390m, 1240m); alef = point(189m, 684m) }; absTahThreeDotsAboveFin = postscript("absTahThreeDotsAboveFin") { diaB = point(500m, -180m); diaA = point(390m, 1240m); alef = point(189m, 684m) }; absAinFin = postscript("absAinFin") { above = point(375m, 507m); below = point(375m, 0m); diaA = point(300m, 670m); diaB = point(400m, -800m) }; absGhainFin = postscript("absGhainFin") { diaB = point(400m, -800m); diaA = point(300m, 955m) }; absAinThreeDotsAboveFin = postscript("absAinThreeDotsAboveFin") { diaB = point(400m, -800m); diaA = point(300m, 1150m) }; absGhainDotBelowFin = postscript("absGhainDotBelowFin") { diaB = point(400m, -800m); diaA = point(300m, 970m) }; absAinTwoDotsAboveFin = postscript("absAinTwoDotsAboveFin") { diaB = point(400m, -800m); diaA = point(295m, 961m) }; absAinThreeDotsDownAboveFin = postscript("absAinThreeDotsDownAboveFin") { diaB = point(400m, -800m); diaA = point(320m, 1115m) }; absAinTwoDotsVertAboveFin = postscript("absAinTwoDotsVertAboveFin") { diaB = point(400m, -800m); diaA = point(312m, 1107m) }; // 580 absFehFin = postscript("absFehFin") { diaB = point(600m, -250m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absDotlessFehFin = postscript("absDotlessFehFin") { above = point(1182m, 559m); below = point(1083m, -141m); diaA = point(496m, 684m); diaB = point(600m, -250m); alef = point(330m, 551m) }; absFehDotMovedBelowFin = postscript("absFehDotMovedBelowFin") { diaB = point(598m, -291m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absFehDotBelowFin = postscript("absFehDotBelowFin") { diaB = point(594m, -295m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absVehFin = postscript("absVehFin") { diaB = point(600m, -250m); diaA = point(496m, 773m); alef = point(330m, 551m) }; absFehThreeDotsBelowFin = postscript("absFehThreeDotsBelowFin") { diaB = point(600m, -350m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absPehehFin = postscript("absPehehFin") { diaB = point(600m, -250m); diaA = point(496m, 769m); alef = point(330m, 551m) }; absFehTwoDotsBelowFin = postscript("absFehTwoDotsBelowFin") { diaB = point(602m, -299m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absFehThreeDotsUpwardBelowFin = postscript("absFehThreeDotsUpwardBelowFin") { diaB = point(594m, -376m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absQafNoDotsFin = postscript("absQafNoDotsFin") { above = point(652m, 349m); below = point(646m, -397m); diaA = point(360m, 510m); diaB = point(376m, -594m) }; // 590 absQafFin = postscript("absQafFin") { diaB = point(380m, -594m); diaA = point(248m, 684m) }; absQafDotAboveFin = postscript("absQafDotAboveFin") { diaB = point(376m, -598m); diaA = point(248m, 684m) }; absQafThreeDotsAboveFin = postscript("absQafThreeDotsAboveFin") { diaB = point(372m, -598m); diaA = point(248m, 765m) }; absKafFin = postscript("absKafFin") { above = point(1065m, 1065m); below = point(1062m, -107m); diaA = point(466m, 1034m); diaB = point(600m, -300m); alef = point(261m, 800m) }; absKafDotAboveFin = postscript("absKafDotAboveFin") { diaB = point(600m, -300m); diaA = point(466m, 1115m); alef = point(261m, 800m) }; absNgFin = postscript("absNgFin") { diaB = point(600m, -300m); diaA = point(466m, 1282m); alef = point(261m, 800m) }; absKafThreeDotsBelowFin = postscript("absKafThreeDotsBelowFin") { diaB = point(850m, -650m); diaA = point(466m, 1034m); alef = point(261m, 800m) }; absKehehFin = postscript("absKehehFin") { above = point(805m, 768m); below = point(814m, -77m); ring = point(1212m, 855m); diaA = point(510m, 800m); diaB = point(600m, -180m); alef = point(261m, 800m) }; absKafRingFin = postscript("absKafRingFin") { diaB = point(600m, -180m); diaA = point(510m, 800m); alef = point(261m, 800m) }; absGafFin = postscript("absGafFin") { diaB = point(600m, -180m); diaA = point(510m, 900m); alef = point(261m, 800m) }; // 600 absGafRingFin = postscript("absGafRingFin") { diaB = point(600m, -180m); diaA = point(510m, 900m); alef = point(261m, 800m) }; absNgoehFin = postscript("absNgoehFin") { diaB = point(600m, -180m); diaA = point(414m, 1282m); alef = point(261m, 800m) }; absGafTwoDotsBelowFin = postscript("absGafTwoDotsBelowFin") { diaB = point(607m, -402m); diaA = point(510m, 900m); alef = point(261m, 800m) }; absGuehFin = postscript("absGuehFin") { diaB = point(765m, -555m); diaA = point(510m, 900m); alef = point(261m, 800m) }; absGafThreeDotsAboveFin = postscript("absGafThreeDotsAboveFin") { diaB = point(600m, -180m); diaA = point(325m, 1282m); alef = point(261m, 800m) }; absKehehDotAboveFin = postscript("absKehehDotAboveFin") { diaB = point(600m, -180m); diaA = point(466m, 983m); alef = point(261m, 800m) }; absKehehThreeDotsAboveFin = postscript("absKehehThreeDotsAboveFin") { diaB = point(600m, -180m); diaA = point(367m, 1085m); alef = point(261m, 800m) }; absKehehThreeDotsUpwardBelowFin = postscript("absKehehThreeDotsUpwardBelowFin") { diaB = point(701m, -602m); diaA = point(510m, 800m); alef = point(261m, 800m) }; absSwashKafFin = postscript("absSwashKafFin") { diaA = point(390m, 1000m); diaB = point(600m, -180m) }; absLamFin = postscript("absLamFin") { above = point(591m, 1023m); below = point(649m, -528m); through = point(602m, 602m); diaA = point(300m, 800m); diaB = point(350m, -600m); alef = point(460m, 700m) }; // 610 absLamSmallVFin = postscript("absLamSmallVFin") { diaB = point(350m, -600m); diaA = point(526m, 1470m); alef = point(460m, 600m) }; absLamDotAboveFin = postscript("absLamDotAboveFin") { diaB = point(350m, -600m); diaA = point(508m, 1440m); alef = point(460m, 600m) }; absLamThreeDotsAboveFin = postscript("absLamThreeDotsAboveFin") { diaB = point(350m, -600m); diaA = point(440m, 1564m); alef = point(460m, 600m) }; absLamThreeDotsBelowFin = postscript("absLamThreeDotsBelowFin") { diaB = point(250m, -800m); diaA = point(330m, 800m); alef = point(460m, 700m) }; absLamRetroFin = postscript("absLamRetroFin") { diaB = point(400m, -600m); diaA = point(474m, 1662m); alef = point(460m, 400m) }; absLamBarFin = postscript("absLamBarFin") { diaB = point(400m, -600m); diaA = point(330m, 1005m); alef = point(460m, 800m) }; absMeemFin = postscript("absMeemFin") { above = point(416m, 339m); below = point(407m, -265m); diaA = point(273m, 684m); diaB = point(170m, -750m) }; absMeemFin__sindhi = postscript("absMeemFin.sindhi") { above = point(627m, 557m); below = point(649m, -168m); diaA = point(500m, 679m); diaB = point(400m, -400m) }; absMeemDotAboveFin = postscript("absMeemDotAboveFin") { diaB = point(170m, -750m); diaA = point(273m, 855m) }; absMeemDotBelowFin = postscript("absMeemDotBelowFin") { diaB = point(170m, -750m); diaA = point(273m, 684m) }; // 620 absNoonFin = postscript("absNoonFin") { diaB = point(400m, -600m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonDotBelowFin = postscript("absNoonDotBelowFin") { diaB = point(450m, -900m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonGhunnaFin = postscript("absNoonGhunnaFin") { above = point(420m, 125m); below = point(410m, -549m); ring = point(397m, -424m); diaA = point(346m, 491m); diaB = point(400m, -600m); alef = point(225m, 499m) }; absRnoonFin = postscript("absRnoonFin") { diaB = point(400m, -600m); diaA = point(299m, 833m); alef = point(181m, 474m) }; absNoonRingFin = postscript("absNoonRingFin") { diaB = point(400m, -800m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonThreeDotsAboveFin = postscript("absNoonThreeDotsAboveFin") { diaB = point(400m, -600m); diaA = point(333m, 782m); alef = point(165m, 495m) }; absNoonTwoDotsBelowFin = postscript("absNoonTwoDotsBelowFin") { diaB = point(450m, -900m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonRetroFin = postscript("absNoonRetroFin") { diaB = point(350m, -600m); diaA = point(312m, 1034m); alef = point(187m, 703m) }; absNoonSmallVFin = postscript("absNoonSmallVFin") { diaB = point(350m, -600m); diaA = point(359m, 897m); alef = point(106m, 532m) }; absHehDoachashmeeFin = postscript("absHehDoachashmeeFin") { above = point(553m, 559m); below = point(402m, -412m); diaA = point(450m, 700m); diaB = point(400m, -500m) }; // 630 absHehHatFin = postscript("absHehHatFin") { diaB = point(300m, -195m); diaA = point(350m, 961m) }; absHehFin = postscript("absHehFin") { diaB = point(250m, -180m); diaA = point(300m, 790m) }; absHehFin__knottedFlat = postscript("absHehFin.knottedFlat") { diaB = point(400m, -500m); diaA = point(450m, 700m) }; absHehFin__knottedHigh = postscript("absHehFin.knottedHigh") { diaA = point(360m, 780m); diaB = point(300m, -195m); above = point(354m, 587m); below = point(342m, -125m) }; absHehFin__hooked = postscript("absHehFin.hooked") { diaB = point(200m, -300m); diaA = point(180m, 645m) }; absAeFin = postscript("absAeFin") { above = point(311m, 671m); below = point(311m, -50m); diaA = point(300m, 790m); diaB = point(250m, -180m) }; absTehMarbutaFin = postscript("absTehMarbutaFin") { diaB = point(200m, -180m); diaA = point(225m, 1100m) }; absHehYehAboveFin = postscript("absHehYehAboveFin") { diaB = point(200m, -180m); diaA = point(210m, 1135m) }; absHehGoalFin = postscript("absHehGoalFin") { above = point(244m, 298m); below = point(244m, -177m); diaA = point(180m, 645m); diaB = point(200m, -300m) }; absHehGoalHamzaAboveFin = postscript("absHehGoalHamzaAboveFin") { diaB = point(200m, -250m); diaA = point(188m, 812m) }; // 640 absTehMarbutaGoalFin = postscript("absTehMarbutaGoalFin") { diaB = point(200m, -250m); diaA = point(192m, 790m) }; absLamAlefFin = postscript("absLamAlefFin") { above = point(730m, 1020m); below = point(755m, -68m); through = point(723m, 644m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaA1 = point(720m, 1035m); diaA2 = point(47m, 949m); diaB1 = point(750m, -100m); diaB2 = point(420m, -100m); alef1 = point(600m, 700m); alef2 = point(0m, 1020m) }; absLamSmallVAlefFin = postscript("absLamSmallVAlefFin") { diaA2 = point(47m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(420m, -100m); diaA1 = point(705m, 1448m) }; absLamDotAboveAlefFin = postscript("absLamDotAboveAlefFin") { diaA2 = point(43m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(420m, -100m); diaA1 = point(679m, 1376m) }; absLamThreeDotsAboveAlefFin = postscript("absLamThreeDotsAboveAlefFin") { diaA2 = point(47m, 936m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(420m, -100m); diaA1 = point(654m, 1530m) }; absLamThreeDotsBelowAlefFin = postscript("absLamThreeDotsBelowAlefFin") { diaA2 = point(43m, 940m); dia2B1 = point(731m, -564m); dia2B2 = point(320m, -171m); diaB1 = point(726m, -564m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(320m, -171m); diaA1 = point(720m, 1035m) }; absLamRetroAlefFin = postscript("absLamRetroAlefFin") { diaA2 = point(47m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(480m, 1350m); diaB2 = point(420m, -100m); diaA1 = point(624m, 1654m) }; absLamBarAlefFin = postscript("absLamBarAlefFin") { diaA2 = point(51m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(570m, 795m); diaB2 = point(420m, -100m); diaA1 = point(720m, 1035m) }; absYehHamzaAboveMed = postscript("absYehHamzaAboveMed") { diaB = point(153m, -249m); diaA = point(200m, 900m); alef = point(60m, 800m) }; absYehMed = postscript("absYehMed") { diaB = point(150m, -450m); diaA = point(200m, 600m); alef = point(60m, 599m) }; // 650 absYehMed__noDots = postscript("absYehMed.noDots") { diaB = point(153m, -249m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absHighHamzaYehMed = postscript("absHighHamzaYehMed") { diaB = point(153m, -249m); diaA = point(158m, 953m); alef = point(60m, 599m) }; absFarsiYehMed = postscript("absFarsiYehMed") { diaB = point(150m, -450m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absYehSmallVMed = postscript("absYehSmallVMed") { diaB = point(150m, -450m); diaA = point(154m, 863m); alef = point(60m, 720m) }; absEMed = postscript("absEMed") { diaB = point(150m, -550m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absYehThreeDotsBelowMed = postscript("absYehThreeDotsBelowMed") { diaB = point(150m, -600m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absAlefMaksuraMed = postscript("absAlefMaksuraMed") { diaB = point(153m, -249m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehNoDotsMed = postscript("absBehNoDotsMed") { above = point(184m, 306m); below = point(184m, -50m); ring = point(215m, 106m); diaA = point(200m, 600m); diaB = point(153m, -249m); alef = point(60m, 599m) }; absBehMed = postscript("absBehMed") { diaB = point(150m, -450m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absTehMed = postscript("absTehMed") { diaB = point(153m, -249m); diaA = point(175m, 855m); alef = point(60m, 720m) }; // 660 absThehMed = postscript("absThehMed") { diaB = point(153m, -249m); diaA = point(150m, 957m); alef = point(60m, 800m) }; absTtehMed = postscript("absTtehMed") { diaB = point(153m, -249m); diaA = point(103m, 1094m); alef = point(0m, 684m) }; absTtehehMed = postscript("absTtehehMed") { diaB = point(153m, -249m); diaA = point(158m, 957m); alef = point(60m, 760m) }; absBeehMed = postscript("absBeehMed") { diaB = point(150m, -550m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absTehRingMed = postscript("absTehRingMed") { diaB = point(162m, -299m); diaA = point(179m, 850m); alef = point(60m, 720m) }; absTehThreeDotsAboveDownwardsMed = postscript("absTehThreeDotsAboveDownwardsMed") { diaB = point(153m, -249m); diaA = point(175m, 949m); alef = point(60m, 800m) }; absPehMed = postscript("absPehMed") { diaB = point(150m, -600m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absTehehMed = postscript("absTehehMed") { diaB = point(153m, -249m); diaA = point(171m, 974m); alef = point(60m, 800m) }; absBehehMed = postscript("absBehehMed") { diaB = point(150m, -600m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehThreeDotsHorizBelowMed = postscript("absBehThreeDotsHorizBelowMed") { diaB = point(145m, -414m); diaA = point(200m, 600m); alef = point(60m, 599m) }; // 670 absBehThreeDotsAboveDotBelowMed = postscript("absBehThreeDotsAboveDotBelowMed") { diaB = point(154m, -402m); diaA = point(154m, 936m); alef = point(60m, 800m) }; absBehThreeDotsUpwardBelowMed = postscript("absBehThreeDotsUpwardBelowMed") { diaB = point(145m, -581m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehTwoDotsAboveThreeDotsUpwardBelowMed = postscript("absBehTwoDotsAboveThreeDotsUpwardBelowMed") { diaB = point(150m, -594m); diaA = point(179m, 846m); alef = point(60m, 684m) }; absBehDotAboveTwoDotsBelowMed = postscript("absBehDotAboveTwoDotsBelowMed") { diaB = point(154m, -432m); diaA = point(175m, 855m); alef = point(60m, 684m) }; absBehInvSmallVBelowMed = postscript("absBehInvSmallVBelowMed") { diaB = point(141m, -397m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehSmallVAboveMed = postscript("absBehSmallVAboveMed") { diaB = point(153m, -249m); diaA = point(175m, 859m); alef = point(60m, 684m) }; absJeemMed = postscript("absJeemMed") { diaB = point(470m, -397m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahMed = postscript("absHahMed") { above = point(522m, 505m); below = point(522m, -50m); diaA = point(400m, 750m); diaB = point(449m, -201m); alef = point(149m, 684m) }; absKhahMed = postscript("absKhahMed") { diaB = point(449m, -201m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absHahHamzaAboveMed = postscript("absHahHamzaAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 1000m); alef = point(149m, 684m) }; // 680 absHahTwoDotsVerticalAboveMed = postscript("absHahTwoDotsVerticalAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 1100m); alef = point(149m, 684m) }; absNyehMed = postscript("absNyehMed") { diaB = point(449m, -410m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absDyehMed = postscript("absDyehMed") { diaB = point(479m, -517m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahThreeDotsAboveMed = postscript("absHahThreeDotsAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 1150m); alef = point(149m, 816m) }; absTchehMed = postscript("absTchehMed") { diaB = point(479m, -564m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehehMed = postscript("absTchehehMed") { diaB = point(466m, -573m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehDotAboveMed = postscript("absTchehDotAboveMed") { diaB = point(479m, -581m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absTchehRetro1Med = postscript("absTchehRetro1Med") { diaB = point(461m, -590m); diaA = point(406m, 1239m); alef = point(153m, 844m) }; absTchehRetro2Med = postscript("absTchehRetro2Med") { diaB = point(466m, -859m); diaA = point(400m, 800m); alef = point(149m, 684m) }; absJeemRetro1Med = postscript("absJeemRetro1Med") { diaB = point(470m, -679m); diaA = point(400m, 800m); alef = point(149m, 684m) }; // 690 absJeemRetro2Med = postscript("absJeemRetro2Med") { diaB = point(474m, -397m); diaA = point(414m, 1239m); alef = point(157m, 861m) }; absJeemRetro3Med = postscript("absJeemRetro3Med") { diaB = point(449m, -201m); diaA = point(355m, 1265m); alef = point(149m, 852m) }; absHahTwoDotsAboveMed = postscript("absHahTwoDotsAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahThreeDotsUpwardBelowMed = postscript("absHahThreeDotsUpwardBelowMed") { diaB = point(474m, -568m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absSeenMed = postscript("absSeenMed") { above = point(509m, 333m); below = point(509m, -50m); diaA = point(400m, 600m); diaB = point(449m, -201m); alef = point(149m, 595m) }; absSheenMed = postscript("absSheenMed") { diaB = point(449m, -201m); diaA = point(410m, 978m); alef = point(149m, 663m) }; absSeenDotBelowDotAboveMed = postscript("absSeenDotBelowDotAboveMed") { diaB = point(496m, -372m); diaA = point(480m, 800m); alef = point(149m, 595m) }; absSeenThreeDotsBelowMed = postscript("absSeenThreeDotsBelowMed") { diaB = point(496m, -538m); diaA = point(480m, 735m); alef = point(149m, 595m) }; absSeenThreeDotsBelowThreeDotsAboveMed = postscript("absSeenThreeDotsBelowThreeDotsAboveMed") { diaB = point(487m, -538m); diaA = point(414m, 966m); alef = point(149m, 667m) }; absSheenDotBelowMed = postscript("absSheenDotBelowMed") { diaB = point(496m, -393m); diaA = point(419m, 970m); alef = point(149m, 667m) }; // 700 absSheenRetro1Med = postscript("absSheenRetro1Med") { diaB = point(449m, -201m); diaA = point(367m, 1410m); alef = point(161m, 1033m) }; absSheenRetro2Med = postscript("absSheenRetro2Med") { diaB = point(449m, -201m); diaA = point(376m, 1222m); alef = point(153m, 816m) }; absSeenFourDotsAboveMed = postscript("absSeenFourDotsAboveMed") { diaB = point(449m, -201m); diaA = point(430m, 980m); alef = point(149m, 667m) }; absSeenTwoVertAboveMed = postscript("absSeenTwoVertAboveMed") { diaB = point(449m, -201m); diaA = point(430m, 980m); alef = point(149m, 595m) }; absSadMed = postscript("absSadMed") { above = point(639m, 489m); below = point(681m, -87m); diaA = point(500m, 800m); diaB = point(406m, -312m); alef = point(149m, 595m) }; absDadMed = postscript("absDadMed") { diaB = point(402m, -303m); diaA = point(500m, 900m); alef = point(149m, 595m) }; absSadTwoDotsBelowMed = postscript("absSadTwoDotsBelowMed") { diaB = point(406m, -423m); diaA = point(500m, 800m); alef = point(149m, 595m) }; absSadThreeDotsAboveMed = postscript("absSadThreeDotsAboveMed") { diaB = point(402m, -312m); diaA = point(500m, 1050m); alef = point(149m, 595m) }; absDadDotBelowMed = postscript("absDadDotBelowMed") { diaB = point(402m, -380m); diaA = point(500m, 900m); alef = point(149m, 595m) }; absTahMed = postscript("absTahMed") { above = point(497m, 559m); below = point(442m, -77m); diaA = point(175m, 1235m); diaB = point(402m, -201m); alef = point(12m, 800m) }; // 710 absZahMed = postscript("absZahMed") { diaB = point(402m, -201m); diaA = point(175m, 1231m); alef = point(12m, 800m) }; absTahThreeDotsAboveMed = postscript("absTahThreeDotsAboveMed") { diaB = point(402m, -201m); diaA = point(175m, 1231m); alef = point(12m, 800m) }; absAinMed = postscript("absAinMed") { above = point(301m, 582m); below = point(295m, -50m); diaA = point(270m, 687m); diaB = point(248m, -201m) }; absGhainMed = postscript("absGhainMed") { diaB = point(248m, -201m); diaA = point(222m, 961m) }; absAinThreeDotsAboveMed = postscript("absAinThreeDotsAboveMed") { diaB = point(248m, -201m); diaA = point(200m, 1170m) }; absGhainDotBelowMed = postscript("absGhainDotBelowMed") { diaB = point(261m, -419m); diaA = point(222m, 961m) }; absAinTwoDotsAboveMed = postscript("absAinTwoDotsAboveMed") { diaB = point(248m, -201m); diaA = point(222m, 991m) }; absAinThreeDotsDownAboveMed = postscript("absAinThreeDotsDownAboveMed") { diaB = point(248m, -201m); diaA = point(231m, 1102m) }; absAinTwoDotsVertAboveMed = postscript("absAinTwoDotsVertAboveMed") { diaB = point(248m, -201m); diaA = point(248m, 1085m) }; absFehMed = postscript("absFehMed") { diaB = point(248m, -201m); diaA = point(295m, 1034m); alef = point(121m, 744m) }; // 720 absDotlessFehMed = postscript("absDotlessFehMed") { above = point(379m, 609m); below = point(296m, -50m); diaA = point(295m, 850m); diaB = point(248m, -201m); alef = point(121m, 684m) }; absFehDotMovedBelowMed = postscript("absFehDotMovedBelowMed") { diaB = point(256m, -423m); diaA = point(299m, 855m); alef = point(121m, 684m) }; absFehDotBelowMed = postscript("absFehDotBelowMed") { diaB = point(252m, -419m); diaA = point(303m, 1034m); alef = point(117m, 748m) }; absVehMed = postscript("absVehMed") { diaB = point(248m, -201m); diaA = point(282m, 1196m); alef = point(121m, 929m) }; absFehThreeDotsBelowMed = postscript("absFehThreeDotsBelowMed") { diaB = point(250m, -600m); diaA = point(295m, 842m); alef = point(121m, 684m) }; absPehehMed = postscript("absPehehMed") { diaB = point(248m, -201m); diaA = point(295m, 1213m); alef = point(101m, 941m) }; absFehTwoDotsBelowMed = postscript("absFehTwoDotsBelowMed") { diaB = point(261m, -449m); diaA = point(299m, 855m); alef = point(121m, 684m) }; absFehThreeDotsUpwardBelowMed = postscript("absFehThreeDotsUpwardBelowMed") { diaB = point(256m, -594m); diaA = point(295m, 859m); alef = point(121m, 684m) }; absQafNoDotsMed = postscript("absQafNoDotsMed") { diaB = point(248m, -201m); diaA = point(295m, 859m); alef = point(121m, 684m) }; absQafMed = postscript("absQafMed") { diaB = point(248m, -201m); diaA = point(295m, 1034m); alef = point(117m, 844m) }; // 730 absQafDotAboveMed = postscript("absQafDotAboveMed") { diaB = point(248m, -201m); diaA = point(295m, 1034m); alef = point(125m, 748m) }; absQafThreeDotsAboveMed = postscript("absQafThreeDotsAboveMed") { diaB = point(248m, -201m); diaA = point(295m, 1213m); alef = point(125m, 941m) }; absKafMed = postscript("absKafMed") { above = point(100m, 852m); below = point(139m, -48m); ring = point(533m, 981m); diaA = point(195m, 1200m); diaB = point(200m, -150m); alef = point(101m, 1001m) }; absKafDotAboveMed = postscript("absKafDotAboveMed") { diaB = point(200m, -150m); diaA = point(135m, 1335m); alef = point(16m, 1194m) }; absNgMed = postscript("absNgMed") { diaB = point(200m, -150m); diaA = point(120m, 1485m); alef = point(24m, 1383m) }; absKafThreeDotsBelowMed = postscript("absKafThreeDotsBelowMed") { diaB = point(162m, -611m); diaA = point(197m, 1192m); alef = point(101m, 1001m) }; absKehehMed = postscript("absKehehMed") { diaB = point(200m, -150m); diaA = point(205m, 1201m); alef = point(101m, 1001m) }; absKafRingMed = postscript("absKafRingMed") { diaB = point(200m, -150m); diaA = point(201m, 1196m); alef = point(101m, 1001m) }; absGafMed = postscript("absGafMed") { diaB = point(200m, -150m); diaA = point(162m, 1248m); alef = point(84m, 1166m) }; absGafRingMed = postscript("absGafRingMed") { diaB = point(200m, -150m); diaA = point(162m, 1248m); alef = point(88m, 1170m) }; // 740 absNgoehMed = postscript("absNgoehMed") { diaB = point(200m, -150m); diaA = point(90m, 1500m); alef = point(12m, 1427m) }; absGafTwoDotsBelowMed = postscript("absGafTwoDotsBelowMed") { diaB = point(150m, -449m); diaA = point(158m, 1252m); alef = point(88m, 1174m) }; absGuehMed = postscript("absGuehMed") { diaB = point(162m, -564m); diaA = point(158m, 1256m); alef = point(88m, 1174m) }; absGafThreeDotsAboveMed = postscript("absGafThreeDotsAboveMed") { diaB = point(200m, -150m); diaA = point(30m, 1650m); alef = point(-60m, 1568m) }; absKehehDotAboveMed = postscript("absKehehDotAboveMed") { diaB = point(200m, -150m); diaA = point(167m, 1226m); alef = point(24m, 1198m) }; absKehehThreeDotsAboveMed = postscript("absKehehThreeDotsAboveMed") { diaB = point(200m, -150m); diaA = point(120m, 1419m); alef = point(24m, 1355m) }; absKehehThreeDotsUpwardBelowMed = postscript("absKehehThreeDotsUpwardBelowMed") { diaB = point(162m, -594m); diaA = point(195m, 1200m); alef = point(101m, 1001m) }; absSwashKafMed = postscript("absSwashKafMed") { diaA = point(390m, 1000m); diaB = point(600m, -150m); alef = point(169m, 901m) }; absLamMed = postscript("absLamMed") { above = point(165m, 1075m); below = point(202m, -50m); through = point(160m, 687m); diaA = point(137m, 1132m); diaB = point(150m, -201m); alef = point(30m, 750m) }; absLamSmallVMed = postscript("absLamSmallVMed") { diaB = point(150m, -201m); diaA = point(135m, 1545m); alef = point(30m, 650m) }; // 750 absLamDotAboveMed = postscript("absLamDotAboveMed") { diaB = point(150m, -201m); diaA = point(100m, 1450m); alef = point(30m, 650m) }; absLamThreeDotsAboveMed = postscript("absLamThreeDotsAboveMed") { diaB = point(150m, -201m); diaA = point(100m, 1650m); alef = point(30m, 650m) }; absLamThreeDotsBelowMed = postscript("absLamThreeDotsBelowMed") { diaB = point(200m, -650m); diaA = point(141m, 1132m); alef = point(30m, 750m) }; absLamRetroMed = postscript("absLamRetroMed") { diaB = point(150m, -201m); diaA = point(60m, 1675m); alef = point(30m, 450m) }; absLamBarMed = postscript("absLamBarMed") { diaB = point(150m, -201m); diaA = point(150m, 1154m); alef = point(15m, 950m) }; absMeemMed = postscript("absMeemMed") { above = point(368m, 394m); below = point(385m, -70m); diaA = point(291m, 688m); diaB = point(299m, -201m); alef = point(121m, 603m) }; absMeemDotAboveMed = postscript("absMeemDotAboveMed") { diaB = point(299m, -201m); diaA = point(291m, 825m); alef = point(117m, 688m) }; absMeemDotBelowMed = postscript("absMeemDotBelowMed") { diaB = point(380m, -406m); diaA = point(291m, 684m); alef = point(121m, 603m) }; absNoonMed = postscript("absNoonMed") { diaB = point(153m, -249m); diaA = point(179m, 846m); alef = point(60m, 684m) }; absNoonDotBelowMed = postscript("absNoonDotBelowMed") { diaB = point(200m, -450m); diaA = point(184m, 846m); alef = point(60m, 684m) }; // 760 absNoonGhunnaMed = postscript("absNoonGhunnaMed") { diaB = point(153m, -249m); diaA = point(179m, 850m); alef = point(60m, 684m) }; absRnoonMed = postscript("absRnoonMed") { diaB = point(153m, -249m); diaA = point(98m, 1034m); alef = point(0m, 651m) }; absNoonRingMed = postscript("absNoonRingMed") { diaB = point(158m, -342m); diaA = point(175m, 850m); alef = point(60m, 684m) }; absNoonThreeDotsAboveMed = postscript("absNoonThreeDotsAboveMed") { diaB = point(171m, -564m); diaA = point(179m, 684m); alef = point(60m, 599m) }; absNoonTwoDotsBelowMed = postscript("absNoonTwoDotsBelowMed") { diaB = point(175m, -427m); diaA = point(179m, 846m); alef = point(60m, 684m) }; absNoonRetroMed = postscript("absNoonRetroMed") { diaB = point(153m, -249m); diaA = point(85m, 1290m); alef = point(0m, 909m) }; absNoonSmallVMed = postscript("absNoonSmallVMed") { diaB = point(153m, -249m); diaA = point(145m, 1098m); alef = point(44m, 977m) }; absHehDoachashmeeMed = postscript("absHehDoachashmeeMed") { above = point(423m, 559m); below = point(347m, -412m); diaA = point(350m, 700m); diaB = point(300m, -450m); alef = point(153m, 559m) }; absHehHatMed = postscript("absHehHatMed") { diaB = point(295m, -167m); diaA = point(269m, 1001m) }; absHehMed = postscript("absHehMed") { diaB = point(300m, -450m); diaA = point(350m, 700m); alef = point(153m, 559m) }; // 770 absHehMed__hooked = postscript("absHehMed.hooked") { diaB = point(150m, -500m); diaA = point(195m, 495m) }; absHehMed__knottedHigh = postscript("absHehMed.knottedHigh") { diaB = point(295m, -167m); diaA = point(269m, 800m); above = point(294m, 635m); below = point(294m, -80m); alef = point(101m, 740m) }; absHehYehAboveMed = postscript("absHehYehAboveMed") { diaB = point(300m, -450m); diaA = point(346m, 1000m); alef = point(200m, 900m) }; absHehGoalMed = postscript("absHehGoalMed") { diaA = point(195m, 495m); diaB = point(150m, -500m) }; absHehGoalHamzaAboveMed = postscript("absHehGoalHamzaAboveMed") { diaA = point(300m, 800m); diaB = point(150m, -500m) }; absYehHamzaAboveIni = postscript("absYehHamzaAboveIni") { diaB = point(98m, -201m); diaA = point(120m, 1020m); alef = point(8m, 925m) }; absYehIni = postscript("absYehIni") { diaB = point(130m, -420m); diaA = point(175m, 684m); alef = point(40m, 684m) }; absYehIni__noDots = postscript("absYehIni.noDots") { diaB = point(105m, -249m); diaA = point(184m, 688m); alef = point(40m, 684m) }; absHighHamzaYehIni = postscript("absHighHamzaYehIni") { diaB = point(105m, -249m); diaA = point(77m, 1034m); alef = point(40m, 684m) }; absFarsiYehIni = postscript("absFarsiYehIni") { diaB = point(130m, -420m); diaA = point(184m, 684m); alef = point(40m, 684m) }; // 780 absYehSmallVIni = postscript("absYehSmallVIni") { diaB = point(130m, -420m); diaA = point(150m, 1000m); alef = point(40m, 901m) }; absEIni = postscript("absEIni") { diaB = point(141m, -577m); diaA = point(179m, 684m); alef = point(40m, 684m) }; absYehThreeDotsBelowIni = postscript("absYehThreeDotsBelowIni") { diaB = point(137m, -594m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absAlefMaksuraIni = postscript("absAlefMaksuraIni") { diaB = point(105m, -249m); diaA = point(175m, 684m); alef = point(40m, 684m) }; absBehNoDotsIni = postscript("absBehNoDotsIni") { above = point(168m, 504m); below = point(118m, -50m); ring = point(176m, 91m); diaA = point(175m, 688m); diaB = point(105m, -249m); alef = point(40m, 684m) }; absBehIni = postscript("absBehIni") { diaB = point(120m, -414m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absTehIni = postscript("absTehIni") { diaB = point(105m, -249m); diaA = point(150m, 950m); alef = point(40m, 852m) }; absThehIni = postscript("absThehIni") { diaB = point(105m, -249m); diaA = point(150m, 1050m); alef = point(36m, 1049m) }; absTtehIni = postscript("absTtehIni") { diaB = point(105m, -249m); diaA = point(107m, 1248m); alef = point(-48m, 844m) }; absTtehehIni = postscript("absTtehehIni") { diaB = point(105m, -249m); diaA = point(150m, 1050m); alef = point(4m, 961m) }; // 790 absBeehIni = postscript("absBeehIni") { diaB = point(124m, -577m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absTehRingIni = postscript("absTehRingIni") { diaB = point(124m, -342m); diaA = point(145m, 949m); alef = point(40m, 873m) }; absTehThreeDotsAboveDownwardsIni = postscript("absTehThreeDotsAboveDownwardsIni") { diaB = point(105m, -249m); diaA = point(150m, 1064m); alef = point(28m, 1033m) }; absPehIni = postscript("absPehIni") { diaB = point(128m, -568m); diaA = point(179m, 684m); alef = point(40m, 684m) }; absTehehIni = postscript("absTehehIni") { diaB = point(105m, -249m); diaA = point(150m, 1100m); alef = point(36m, 1049m) }; absBehehIni = postscript("absBehehIni") { diaB = point(120m, -564m); diaA = point(175m, 684m); alef = point(40m, 684m) }; absBehThreeDotsHorizBelowIni = postscript("absBehThreeDotsHorizBelowIni") { diaB = point(111m, -402m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absBehThreeDotsAboveDotBelowIni = postscript("absBehThreeDotsAboveDotBelowIni") { diaB = point(111m, -393m); diaA = point(132m, 1077m); alef = point(28m, 1045m) }; absBehThreeDotsUpwardBelowIni = postscript("absBehThreeDotsUpwardBelowIni") { diaB = point(107m, -590m); diaA = point(179m, 684m); alef = point(40m, 684m) }; absBehTwoDotsAboveThreeDotsUpwardBelowIni = postscript("absBehTwoDotsAboveThreeDotsUpwardBelowIni") { diaB = point(111m, -585m); diaA = point(150m, 944m); alef = point(32m, 913m) }; // 800 absBehDotAboveTwoDotsBelowIni = postscript("absBehDotAboveTwoDotsBelowIni") { diaB = point(107m, -432m); diaA = point(154m, 936m); alef = point(44m, 877m) }; absBehInvSmallVBelowIni = postscript("absBehInvSmallVBelowIni") { diaB = point(94m, -427m); diaA = point(175m, 688m); alef = point(40m, 684m) }; absBehSmallVAboveIni = postscript("absBehSmallVAboveIni") { diaB = point(105m, -249m); diaA = point(145m, 949m); alef = point(32m, 913m) }; absJeemIni = postscript("absJeemIni") { diaB = point(427m, -363m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahIni = postscript("absHahIni") { above = point(441m, 505m); below = point(441m, -50m); diaA = point(400m, 750m); diaB = point(450m, -150m); alef = point(149m, 684m) }; absKhahIni = postscript("absKhahIni") { diaB = point(450m, -150m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absHahHamzaAboveIni = postscript("absHahHamzaAboveIni") { diaB = point(450m, -150m); diaA = point(400m, 1000m); alef = point(145m, 776m) }; absHahTwoDotsVerticalAboveIni = postscript("absHahTwoDotsVerticalAboveIni") { diaB = point(450m, -150m); diaA = point(400m, 1100m); alef = point(145m, 808m) }; absNyehIni = postscript("absNyehIni") { diaB = point(423m, -376m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absDyehIni = postscript("absDyehIni") { diaB = point(432m, -521m); diaA = point(400m, 750m); alef = point(149m, 684m) }; // 810 absHahThreeDotsAboveIni = postscript("absHahThreeDotsAboveIni") { diaB = point(450m, -150m); diaA = point(400m, 1150m); alef = point(145m, 852m) }; absTchehIni = postscript("absTchehIni") { diaB = point(423m, -526m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehehIni = postscript("absTchehehIni") { diaB = point(423m, -530m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehDotAboveIni = postscript("absTchehDotAboveIni") { diaB = point(427m, -530m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absTchehRetro1Ini = postscript("absTchehRetro1Ini") { diaB = point(432m, -555m); diaA = point(355m, 1265m); alef = point(145m, 848m) }; absTchehRetro2Ini = postscript("absTchehRetro2Ini") { diaB = point(423m, -859m); diaA = point(400m, 800m); alef = point(149m, 684m) }; absJeemRetro1Ini = postscript("absJeemRetro1Ini") { diaB = point(402m, -692m); diaA = point(400m, 800m); alef = point(149m, 684m) }; absJeemRetro2Ini = postscript("absJeemRetro2Ini") { diaB = point(423m, -376m); diaA = point(355m, 1265m); alef = point(149m, 836m) }; absJeemRetro3Ini = postscript("absJeemRetro3Ini") { diaB = point(450m, -150m); diaA = point(355m, 1265m); alef = point(153m, 844m) }; absHahTwoDotsAboveIni = postscript("absHahTwoDotsAboveIni") { diaB = point(450m, -150m); diaA = point(410m, 949m); alef = point(141m, 780m) }; // 820 absHahThreeDotsUpwardBelowIni = postscript("absHahThreeDotsUpwardBelowIni") { diaB = point(406m, -594m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absSeenIni = postscript("absSeenIni") { above = point(500m, 429m); below = point(504m, -45m); diaA = point(390m, 550m); diaB = point(449m, -201m); alef = point(149m, 551m) }; absSheenIni = postscript("absSheenIni") { diaB = point(449m, -201m); diaA = point(420m, 1020m); alef = point(153m, 768m) }; absSeenDotBelowDotAboveIni = postscript("absSeenDotBelowDotAboveIni") { diaB = point(500m, -400m); diaA = point(450m, 800m); alef = point(149m, 551m) }; absSeenThreeDotsBelowIni = postscript("absSeenThreeDotsBelowIni") { diaB = point(500m, -600m); diaA = point(402m, 573m); alef = point(149m, 551m) }; absSeenThreeDotsBelowThreeDotsAboveIni = postscript("absSeenThreeDotsBelowThreeDotsAboveIni") { diaB = point(500m, -600m); diaA = point(410m, 1000m); alef = point(145m, 784m) }; absSheenDotBelowIni = postscript("absSheenDotBelowIni") { diaB = point(500m, -400m); diaA = point(410m, 1000m); alef = point(145m, 772m) }; absSheenRetro1Ini = postscript("absSheenRetro1Ini") { diaB = point(449m, -201m); diaA = point(355m, 1490m); alef = point(145m, 1126m) }; absSheenRetro2Ini = postscript("absSheenRetro2Ini") { diaB = point(449m, -201m); diaA = point(355m, 1265m); alef = point(145m, 917m) }; absSeenFourDotsAboveIni = postscript("absSeenFourDotsAboveIni") { diaB = point(449m, -201m); diaA = point(402m, 983m); alef = point(149m, 772m) }; // 830 absSeenTwoVertAboveIni = postscript("absSeenTwoVertAboveIni") { diaB = point(449m, -201m); diaA = point(402m, 974m); alef = point(149m, 712m) }; absSadIni = postscript("absSadIni") { above = point(597m, 465m); below = point(688m, -77m); diaA = point(500m, 800m); diaB = point(402m, -295m); alef = point(149m, 551m) }; absDadIni = postscript("absDadIni") { diaB = point(402m, -295m); diaA = point(500m, 900m); alef = point(149m, 551m) }; absSadTwoDotsBelowIni = postscript("absSadTwoDotsBelowIni") { diaB = point(402m, -380m); diaA = point(500m, 800m); alef = point(149m, 551m) }; absSadThreeDotsAboveIni = postscript("absSadThreeDotsAboveIni") { diaB = point(402m, -295m); diaA = point(500m, 1050m); alef = point(149m, 551m) }; absDadDotBelowIni = postscript("absDadDotBelowIni") { diaB = point(402m, -359m); diaA = point(500m, 900m); alef = point(149m, 551m) }; absTahIni = postscript("absTahIni") { above = point(491m, 575m); below = point(380m, -50m); diaA = point(154m, 1248m); diaB = point(397m, -150m); alef = point(0m, 684m) }; absZahIni = postscript("absZahIni") { diaB = point(397m, -150m); diaA = point(154m, 1235m); alef = point(0m, 684m) }; absTahThreeDotsAboveIni = postscript("absTahThreeDotsAboveIni") { diaB = point(397m, -150m); diaA = point(154m, 1235m); alef = point(0m, 684m) }; absAinIni = postscript("absAinIni") { above = point(330m, 648m); below = point(330m, -50m); diaA = point(256m, 842m); diaB = point(308m, -150m) }; // 840 absGhainIni = postscript("absGhainIni") { diaB = point(308m, -150m); diaA = point(256m, 1085m) }; absAinThreeDotsAboveIni = postscript("absAinThreeDotsAboveIni") { diaB = point(308m, -150m); diaA = point(200m, 1305m) }; absGhainDotBelowIni = postscript("absGhainDotBelowIni") { diaB = point(308m, -397m); diaA = point(256m, 1085m) }; absAinTwoDotsAboveIni = postscript("absAinTwoDotsAboveIni") { diaB = point(308m, -150m); diaA = point(226m, 1094m) }; absAinThreeDotsDownAboveIni = postscript("absAinThreeDotsDownAboveIni") { diaB = point(308m, -150m); diaA = point(235m, 1213m) }; absAinTwoDotsVertAboveIni = postscript("absAinTwoDotsVertAboveIni") { diaB = point(308m, -150m); diaA = point(252m, 1205m) }; absFehIni = postscript("absFehIni") { diaB = point(154m, -150m); diaA = point(132m, 1102m) }; absDotlessFehIni = postscript("absDotlessFehIni") { above = point(180m, 634m); below = point(180m, -50m); diaA = point(137m, 846m); diaB = point(154m, -150m) }; absFehDotMovedBelowIni = postscript("absFehDotMovedBelowIni") { diaB = point(175m, -414m); diaA = point(132m, 850m) }; absFehDotBelowIni = postscript("absFehDotBelowIni") { diaB = point(162m, -414m); diaA = point(132m, 1102m) }; // 850 absVehIni = postscript("absVehIni") { diaB = point(150m, -150m); diaA = point(150m, 1200m) }; absFehThreeDotsBelowIni = postscript("absFehThreeDotsBelowIni") { diaB = point(171m, -573m); diaA = point(132m, 850m) }; absPehehIni = postscript("absPehehIni") { diaB = point(150m, -150m); diaA = point(150m, 1250m) }; absFehTwoDotsBelowIni = postscript("absFehTwoDotsBelowIni") { diaB = point(158m, -423m); diaA = point(132m, 850m) }; absFehThreeDotsUpwardBelowIni = postscript("absFehThreeDotsUpwardBelowIni") { diaB = point(150m, -560m); diaA = point(132m, 850m) }; absQafNoDotsIni = postscript("absQafNoDotsIni") { diaB = point(150m, -150m); diaA = point(128m, 850m) }; absQafIni = postscript("absQafIni") { diaB = point(150m, -150m); diaA = point(150m, 1100m) }; absQafDotAboveIni = postscript("absQafDotAboveIni") { diaB = point(150m, -150m); diaA = point(150m, 1100m) }; absQafThreeDotsAboveIni = postscript("absQafThreeDotsAboveIni") { diaB = point(150m, -150m); diaA = point(150m, 1200m) }; absKafIni = postscript("absKafIni") { above = point(92m, 791m); below = point(158m, -48m); ring = point(473m, 873m); diaA = point(150m, 1050m); diaB = point(175m, -175m); alef = point(48m, 929m) }; // 860 absKafDotAboveIni = postscript("absKafDotAboveIni") { diaB = point(175m, -175m); diaA = point(150m, 1231m); alef = point(24m, 1126m) }; absNgIni = postscript("absNgIni") { diaB = point(175m, -175m); diaA = point(141m, 1393m); alef = point(4m, 1299m) }; absKafThreeDotsBelowIni = postscript("absKafThreeDotsBelowIni") { diaB = point(154m, -590m); diaA = point(150m, 1050m); alef = point(48m, 929m) }; absKehehIni = postscript("absKehehIni") { diaB = point(175m, -175m); diaA = point(162m, 1051m); alef = point(48m, 929m) }; absKafRingIni = postscript("absKafRingIni") { diaB = point(175m, -175m); diaA = point(179m, 1047m); alef = point(48m, 929m) }; absGafIni = postscript("absGafIni") { diaB = point(175m, -175m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; absGafRingIni = postscript("absGafRingIni") { diaB = point(175m, -175m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; absNgoehIni = postscript("absNgoehIni") { diaB = point(175m, -175m); diaA = point(100m, 1400m); alef = point(-4m, 1355m) }; absGafTwoDotsBelowIni = postscript("absGafTwoDotsBelowIni") { diaB = point(154m, -419m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; absGuehIni = postscript("absGuehIni") { diaB = point(158m, -547m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; // 870 absGafThreeDotsAboveIni = postscript("absGafThreeDotsAboveIni") { diaB = point(175m, -175m); diaA = point(50m, 1530m); alef = point(-72m, 1480m) }; absKehehDotAboveIni = postscript("absKehehDotAboveIni") { diaB = point(175m, -175m); diaA = point(141m, 1218m); alef = point(28m, 1134m) }; absKehehThreeDotsAboveIni = postscript("absKehehThreeDotsAboveIni") { diaB = point(175m, -175m); diaA = point(103m, 1372m); alef = point(20m, 1307m) }; absKehehThreeDotsUpwardBelowIni = postscript("absKehehThreeDotsUpwardBelowIni") { diaB = point(132m, -560m); diaA = point(150m, 1050m); alef = point(48m, 917m) }; absSwashKafIni = postscript("absSwashKafIni") { diaA = point(390m, 1000m); diaB = point(600m, -150m); alef = point(169m, 868m) }; absLamIni = postscript("absLamIni") { above = point(120m, 1111m); below = point(120m, -50m); through = point(137m, 691m); diaA = point(120m, 1209m); diaB = point(100m, -150m); alef = point(30m, 750m) }; absLamSmallVIni = postscript("absLamSmallVIni") { diaB = point(100m, -150m); diaA = point(120m, 1545m); alef = point(30m, 650m) }; absLamDotAboveIni = postscript("absLamDotAboveIni") { diaB = point(100m, -150m); diaA = point(120m, 1530m); alef = point(30m, 650m) }; absLamThreeDotsAboveIni = postscript("absLamThreeDotsAboveIni") { diaB = point(100m, -150m); diaA = point(120m, 1710m); alef = point(30m, 650m) }; absLamThreeDotsBelowIni = postscript("absLamThreeDotsBelowIni") { diaB = point(120m, -594m); diaA = point(128m, 1201m); alef = point(30m, 750m) }; // 880 absLamRetroIni = postscript("absLamRetroIni") { diaB = point(100m, -150m); diaA = point(30m, 1718m); alef = point(30m, 500m) }; absLamBarIni = postscript("absLamBarIni") { diaB = point(100m, -150m); diaA = point(132m, 1213m); alef = point(30m, 950m) }; absMeemIni = postscript("absMeemIni") { above = point(243m, 509m); below = point(323m, 0m); diaA = point(248m, 684m); diaB = point(300m, -150m); alef = point(88m, 591m) }; absMeemDotAboveIni = postscript("absMeemDotAboveIni") { diaB = point(300m, -150m); diaA = point(218m, 944m); alef = point(76m, 764m) }; absMeemDotBelowIni = postscript("absMeemDotBelowIni") { diaB = point(300m, -300m); diaA = point(248m, 684m); alef = point(88m, 591m) }; absNoonIni = postscript("absNoonIni") { diaB = point(105m, -249m); diaA = point(120m, 1000m); alef = point(36m, 861m) }; absNoonDotBelowIni = postscript("absNoonDotBelowIni") { diaB = point(115m, -423m); diaA = point(120m, 1000m); alef = point(40m, 873m) }; absNoonGhunnaIni = postscript("absNoonGhunnaIni") { diaB = point(105m, -249m); diaA = point(120m, 1000m); alef = point(40m, 861m) }; absRnoonIni = postscript("absRnoonIni") { diaB = point(105m, -249m); diaA = point(94m, 1248m); alef = point(-16m, 840m) }; absNoonRingIni = postscript("absNoonRingIni") { diaB = point(128m, -299m); diaA = point(120m, 1000m); alef = point(36m, 848m) }; // 890 absNoonThreeDotsAboveIni = postscript("absNoonThreeDotsAboveIni") { diaB = point(103m, -564m); diaA = point(167m, 846m); alef = point(40m, 684m) }; absNoonTwoDotsBelowIni = postscript("absNoonTwoDotsBelowIni") { diaB = point(111m, -423m); diaA = point(120m, 1000m); alef = point(40m, 861m) }; absNoonRetroIni = postscript("absNoonRetroIni") { diaB = point(105m, -249m); diaA = point(77m, 1474m); alef = point(-16m, 1098m) }; absNoonSmallVIni = postscript("absNoonSmallVIni") { diaB = point(105m, -249m); diaA = point(115m, 1355m); alef = point(24m, 1214m) }; absHehDoachashmeeIni = postscript("absHehDoachashmeeIni") { above = point(291m, 655m); below = point(315m, -50m); diaA = point(300m, 855m); diaB = point(295m, -167m); alef = point(40m, 684m) }; absHehHatIni = postscript("absHehHatIni") { diaB = point(295m, -167m); diaA = point(240m, 1050m); alef = point(48m, 925m) }; absHehIni = postscript("absHehIni") { diaB = point(295m, -167m); diaA = point(270m, 840m); alef = point(40m, 684m) }; absHehIni__hooked = postscript("absHehIni.hooked") { diaA = point(157m, 684m); diaB = point(145m, -457m); alef = point(40m, 684m) }; absHehYehAboveIni = postscript("absHehYehAboveIni") { diaB = point(295m, -167m); diaA = point(248m, 1081m); alef = point(48m, 925m) }; absHehGoalIni = postscript("absHehGoalIni") { diaA = point(157m, 684m); diaB = point(145m, -457m); alef = point(40m, 684m) }; // 900 absHehGoalHamzaAboveIni = postscript("absHehGoalHamzaAboveIni") { diaA = point(149m, 900m); diaB = point(145m, -457m); alef = point(44m, 820m) }; absHighHamza = postscript("absHighHamza") { diaA = point(135m, 1365m); diaB = point(150m, 885m) }; // absSmallWaw // absSmallYeh // 904 absFathatan = postscript("absFathatan") { diaA_ = point(120m, 1020m); diaA = point(90m, 1425m) }; absDammatan = postscript("absDammatan") { diaA_ = point(180m, 1005m); diaA = point(90m, 1455m) }; absKasratan = postscript("absKasratan") { diaB_ = point(141m, -560m); diaB = point(165m, -975m) }; absFatha = postscript("absFatha") { diaA_ = point(120m, 1020m); diaA = point(90m, 1290m) }; absDamma = postscript("absDamma") { diaA_ = point(150m, 1020m); diaA = point(105m, 1515m) }; absKasra = postscript("absKasra") { diaB_ = point(145m, -560m); diaB = point(165m, -810m) }; // 910 absShadda = postscript("absShadda") { diaA_ = point(195m, 960m); diaA = point(150m, 1365m) }; absSukun = postscript("absSukun") { diaA_ = point(120m, 930m); diaA = point(90m, 1425m) }; absMaddahAbove = postscript("absMaddahAbove") { diaA_ = point(120m, 1110m); diaA = point(90m, 1305m) }; absHamzaAbove = postscript("absHamzaAbove") { diaA_ = point(120m, 1020m); diaA = point(60m, 1410m) }; absHamzaBelow = postscript("absHamzaBelow") { diaB_ = point(105m, -120m); diaB = point(135m, -450m); dia2B_ = point(105m, -120m) }; absSubscriptAlef = postscript("absSubscriptAlef") { diaB_ = point(92m, -18m); diaB = point(92m, -591m) }; absUltaPesh = postscript("absUltaPesh") { diaA_ = point(120m, 930m); diaA = point(120m, 1450m) }; absNoonGhunnaMark = postscript("absNoonGhunnaMark") { diaA_ = point(160m, 900m); diaA = point(160m, 1290m) }; absZwarakay = postscript("absZwarakay") { diaA_ = point(207m, 969m); diaA = point(90m, 1290m); above_ = point(110m, 1018m) }; absVowelSmallV = postscript("absVowelSmallV") { diaA_ = point(203m, 941m); diaA = point(197m, 1275m) }; // 920 absVowelInvSmallV = postscript("absVowelInvSmallV") { diaA_ = point(207m, 949m); diaA = point(209m, 1271m) }; absVowelDotBelow = postscript("absVowelDotBelow") { diaB_ = point(164m, 203m); diaB = point(164m, -211m) }; absReversedDamma = postscript("absReversedDamma") { diaA_ = point(150m, 1020m); diaA = point(106m, 1516m) }; absFathaTwoDots = postscript("absFathaTwoDots") { diaA_ = point(105m, 945m); diaA = point(105m, 1319m) }; absSuperscriptAlef = postscript("absSuperscriptAlef") { diaA_ = point(180m, 660m); diaA = point(180m, 1230m); alef_ = point(180m, 630m) }; absSuperscriptAlef__large = postscript("absSuperscriptAlef.large") { diaA_ = point(450m, 510m); diaA = point(389m, 1136m) }; absSmallHighSadLamAlefMaksura = postscript("absSmallHighSadLamAlefMaksura") { diaA_ = point(-15m, 915m) }; absSmallHighQafLamAlefMaksura = postscript("absSmallHighQafLamAlefMaksura") { diaA_ = point(-15m, 915m) }; absSmallHighMeemInitialForm = postscript("absSmallHighMeemInitialForm") { diaA_ = point(-15m, 915m) }; absSmallHighLamAlef = postscript("absSmallHighLamAlef") { diaA_ = point(-15m, 915m) }; // 930 absSmallHighJeem = postscript("absSmallHighJeem") { diaA_ = point(-15m, 915m) }; absSmallHighThreeDots = postscript("absSmallHighThreeDots") { diaA_ = point(-15m, 915m) }; absSmallHighSeen = postscript("absSmallHighSeen") { diaA_ = point(-15m, 915m) }; absSmallHighRoundedZero = postscript("absSmallHighRoundedZero") { diaA_ = point(-15m, 915m) }; absSmallHighUprightRectangularZero = postscript("absSmallHighUprightRectangularZero") { diaA_ = point(-15m, 915m) }; absSmallHighDotlessHeadOfKhah = postscript("absSmallHighDotlessHeadOfKhah") { diaA_ = point(-15m, 915m); diaA = point(-15m, 1270m) }; absSmallHighMeemIsolatedForm = postscript("absSmallHighMeemIsolatedForm") { diaA_ = point(-15m, 1020m) }; absSmallLowSeen = postscript("absSmallLowSeen") { diaB_ = point(0m, -150m); dia2B_ = point(100m, -150m) }; absSmallHighMadda = postscript("absSmallHighMadda") { diaA_ = point(-15m, 915m) }; absSmallHighYeh = postscript("absSmallHighYeh") { diaA_ = point(-15m, 915m) }; // 940 absSmallHighNoon = postscript("absSmallHighNoon") { diaA_ = point(-15m, 915m) }; absEmptyCentreLowStop = postscript("absEmptyCentreLowStop") { diaB_ = point(0m, -200m); dia2B_ = point(0m, -150m) }; absEmptyCentreHighStop = postscript("absEmptyCentreHighStop") { diaA_ = point(-15m, 915m) }; absRoundedHighStopFilledCentre = postscript("absRoundedHighStopFilledCentre") { diaA_ = point(-15m, 915m) }; absSmallLowMeem = postscript("absSmallLowMeem") { diaB_ = point(0m, -280m); dia2B_ = point(0m, -150m) }; absNumberSign = postscript("absNumberSign") { digit = point(425m, 0m); directionality = DIR_ARABIC }; absYearSign = postscript("absYearSign") { digit = point(1275m, 0m); directionality = DIR_ARABIC }; absFootnoteSign = postscript("absFootnoteSign") { digit = point(700m, 0m); directionality = DIR_ARABIC }; absPageSign = postscript("absPageSign") { digit = point(300m, 0m); directionality = DIR_ARABIC }; absAfghaniSign = postscript("absAfghaniSign") { diaA = point(291m, 1120m); diaB = point(291m, -150m) }; // 950 absComma = postscript("absComma") { diaA = point(270m, 660m); diaB = point(270m, -195m) }; absComma__downward = postscript("absComma.downward") { diaA = point(275m, 381m); diaB = point(281m, -497m) }; // absVerseSign // 954 absMisraSign = postscript("absMisraSign") { above = point(294m, 692m); below = point(456m, 104m); diaA = point(270m, 900m); diaB = point(300m, -840m) }; absSmallHighSadMark = postscript("absSmallHighSadMark") { diaA_ = point(540m, 998m); above_ = point(540m, 998m) }; absSmallHighAinMark = postscript("absSmallHighAinMark") { diaA_ = point(514m, 996m); above_ = point(514m, 996m) }; absSmallHighRehHahMark = postscript("absSmallHighRehHahMark") { diaA_ = point(526m, 978m); above_ = point(526m, 978m) }; absSmallHighRehDadMark = postscript("absSmallHighRehDadMark") { diaA_ = point(508m, 986m); above_ = point(508m, 986m) }; absNameMarker = postscript("absNameMarker") { diaA_ = point(270m, 1035m) }; // 960 absSmallHighTah = postscript("absSmallHighTah") { diaA_ = point(301m, 1035m) }; absSemicolon = postscript("absSemicolon") { diaA = point(270m, 930m); diaB = point(270m, -195m) }; absSemicolon__downward = postscript("absSemicolon.downward") { diaA = point(275m, 582m); diaB = point(272m, -473m) }; // absTripleDotPunct absQuestionMark = postscript("absQuestionMark") { diaA = point(300m, 1185m); diaB = point(300m, -195m) }; // absPercentSign // absDecimalSeparator // absThousandsSeparator absFivePointedStar = postscript("absFivePointedStar") { diaA = point(435m, 990m); diaB = point(420m, -120m) }; absFullStop = postscript("absFullStop") { diaA = point(350m, 790m); diaB = point(250m, -120m) }; // 970 absEndOfAyah = postscript("absEndOfAyah") { digit = point(465m, 0m) }; absEndOfAyah__alt = postscript("absEndOfAyah.alt") { digit = point(465m, 0m) }; absEndOfAyah__altB = postscript("absEndOfAyah.altB") { digit = point(465m, 0m) }; // absStartOfRubEIHuzb absPlaceOfSajdah = postscript("absPlaceOfSajdah") { diaA = point(390m, 1200m); diaB = point(300m, -120m) }; // 979 absZero = postscript("absZero"); absOne = postscript("absOne"); absTwo = postscript("absTwo"); absThree= postscript("absThree"); absFour = postscript("absFour"); absFive = postscript("absFive"); absSix = postscript("absSix"); absSeven= postscript("absSeven"); absEight= postscript("absEight"); absNine = postscript("absNine"); // 989 absEasternZero = postscript("absEasternZero"); absEasternOne = postscript("absEasternOne"); absEasternTwo = postscript("absEasternTwo"); absEasternThree = postscript("absEasternThree"); absEasternFour = postscript("absEasternFour"); absEasternFour__urdu = postscript("absEasternFour.urdu") { directionality = DIR_ARABICNUMBER }; absEasternFive = postscript("absEasternFive"); absEasternSix = postscript("absEasternSix"); absEasternSix__urdu = postscript("absEasternSix.urdu") { directionality = DIR_ARABICNUMBER }; absEasternSeven = postscript("absEasternSeven"); absEasternSeven__urdu = postscript("absEasternSeven.urdu") { directionality = DIR_ARABICNUMBER }; absEasternEight = postscript("absEasternEight"); absEasternNine = postscript("absEasternNine"); // 1002 zeroMedium = postscript("zeroMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; oneMedium = postscript("oneMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; twoMedium = postscript("twoMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; threeMedium = postscript("threeMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; fourMedium = postscript("fourMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; fiveMedium = postscript("fiveMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; sixMedium = postscript("sixMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; sevenMedium = postscript("sevenMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; eightMedium = postscript("eightMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; nineMedium = postscript("nineMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; // 1012 absZeroMedium = postscript("absZeroMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absOneMedium = postscript("absOneMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absTwoMedium = postscript("absTwoMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absThreeMedium = postscript("absThreeMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absFourMedium = postscript("absFourMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absFiveMedium = postscript("absFiveMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absSixMedium = postscript("absSixMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absSevenMedium = postscript("absSevenMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEightMedium = postscript("absEightMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absNineMedium = postscript("absNineMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; // 1022 absEasternZeroMedium = postscript("absEasternZeroMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternOneMedium = postscript("absEasternOneMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternTwoMedium = postscript("absEasternTwoMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternThreeMedium = postscript("absEasternThreeMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternFourMedium = postscript("absEasternFourMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternFourMedium__urdu = postscript("absEasternFourMedium.urdu") { digit = point(451m, 0m); digit_ = point(0m, 0m) }; absEasternFiveMedium = postscript("absEasternFiveMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSixMedium = postscript("absEasternSixMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSixMedium__urdu = postscript("absEasternSixMedium.urdu") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSevenMedium = postscript("absEasternSevenMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSevenMedium__urdu = postscript("absEasternSevenMedium.urdu") { digit = point(451m, 0m); digit_ = point(0m, 0m) }; absEasternEightMedium = postscript("absEasternEightMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternNineMedium = postscript("absEasternNineMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; // 1035 zeroSmall = postscript("zeroSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; oneSmall = postscript("oneSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; twoSmall = postscript("twoSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; threeSmall = postscript("threeSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; fourSmall = postscript("fourSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; fiveSmall = postscript("fiveSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; sixSmall = postscript("sixSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; sevenSmall = postscript("sevenSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; eightSmall = postscript("eightSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; nineSmall = postscript("nineSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; // 1045 absZeroSmall = postscript("absZeroSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absOneSmall = postscript("absOneSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absTwoSmall = postscript("absTwoSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absThreeSmall = postscript("absThreeSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absFourSmall = postscript("absFourSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absFiveSmall = postscript("absFiveSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absSixSmall = postscript("absSixSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absSevenSmall = postscript("absSevenSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEightSmall = postscript("absEightSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absNineSmall = postscript("absNineSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; // 1055 absEasternZeroSmall = postscript("absEasternZeroSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternOneSmall = postscript("absEasternOneSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternTwoSmall = postscript("absEasternTwoSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternThreeSmall = postscript("absEasternThreeSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternFourSmall = postscript("absEasternFourSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternFourSmall__urdu = postscript("absEasternFourSmall.urdu") { digit = point(320m, 0m); digit_ = point(0m, 0m) }; absEasternFiveSmall = postscript("absEasternFiveSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSixSmall = postscript("absEasternSixSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSixSmall__urdu = postscript("absEasternSixSmall.urdu") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSevenSmall = postscript("absEasternSevenSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSevenSmall__urdu = postscript("absEasternSevenSmall.urdu") { digit = point(320m, 0m); digit_ = point(0m, 0m) }; absEasternEightSmall = postscript("absEasternEightSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternNineSmall = postscript("absEasternNineSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; // 1104 absShaddaFathatan = postscript("absShaddaFathatan") { diaA_ = point(165m, 990m); diaA = point(120m, 1710m) }; absShaddaDammatan = postscript("absShaddaDammatan") { diaA_ = point(165m, 990m); diaA = point(90m, 1740m) }; absShaddaKasratan = postscript("absShaddaKasratan") { diaA_ = point(135m, 1020m); diaA = point(90m, 1740m) }; absShaddaFatha = postscript("absShaddaFatha") { diaA_ = point(165m, 990m); diaA = point(90m, 1530m) }; absShaddaDamma = postscript("absShaddaDamma") { diaA_ = point(165m, 990m); diaA = point(90m, 1695m) }; absShaddaKasra = postscript("absShaddaKasra") { diaA_ = point(150m, 975m); diaA = point(90m, 1560m) }; // 1110 absHamzaFatha = postscript("absHamzaFatha") { diaA_ = point(120m, 1020m); diaA = point(62m, 1534m) }; absHamzaDamma = postscript("absHamzaDamma") { diaA_ = point(120m, 1020m); diaA = point(44m, 1744m) }; absShaddaAlef = postscript("absShaddaAlef") { diaA_ = point(180m, 975m); diaA = point(90m, 1710m) }; absSukun__leftOpen = postscript("absSukun.leftOpen") { diaA_ = point(160m, 900m); diaA = point(160m, 1320m) }; absSukun__downOpen = postscript("absSukun.downOpen") { diaA_ = point(160m, 930m); diaA = point(160m, 1320m) }; absDammatan__sixNine = postscript("absDammatan.sixNine") { diaA_ = point(150m, 1020m); diaA = point(0m, 1540m) }; absAutoKashida = postscript("absAutoKashida") { diaA = point(150m, 790m); diaB = point(111m, -188m) }; // Not needed for Graphite: /*** // 1117 ring = postscript("ring") { above_ = point(144m, 760m) }; caron = postscript("caron") { above_ = point(242m, 760m) }; _dot1 = postscript("_dot1") { below_ = point(2m, 131m); above_ = point(2m, -134m); _center = point(0m, 0m) }; _dot1_tah = postscript("_dot1_tah") { below_ = point(-7m, 734m); above_ = point(-7m, -134m) }; _dot1_smallV = postscript("_dot1_smallV") { below_ = point(-4m, 460m); above_ = point(-4m, -134m) }; // 1122 _dot1_hat = postscript("_dot1_hat") { below_ = point(-1m, 406m); above_ = point(-1m, -134m) }; _dot2h = postscript("_dot2h") { below_ = point(2m, 142m); above_ = point(2m, -142m); _center = point(2m, 0m) }; _dot2h_tah = postscript("_dot2h_tah") { below_ = point(-5m, 648m); above_ = point(-6m, -142m); _center = point(0m, 250m) }; _dot2v = postscript("_dot2v") { below_ = point(1m, 218m); above_ = point(1m, -220m); _center = point(1m, 0m) }; _dot3u = postscript("_dot3u") { below_ = point(0m, 227m); above_ = point(0m, -231m); _center = point(0m, -23m) }; _dot3u_tah = postscript("_dot3u_tah") { below_ = point(-56m, 832m); above_ = point(0m, -145m); _center = point(-31m, 311m) }; _dot3d = postscript("_dot3d") { below_ = point(1m, 140m); above_ = point(1m, -322m); _center = point(0m, -90m) }; _dot3h = postscript("_dot3h") { below_ = point(2m, 142m); above_ = point(2m, -142m); _center = point(2m, 0m) }; // 1130 _dot4 = postscript("_dot4") { below_ = point(0m, 229m); above_ = point(0m, -227m); _center = point(0m, 0m) }; _tah = postscript("_tah") { below_ = point(-24m, 453m); above_ = point(-24m, -157m); _center = point(-26m, 155m) }; _madda = postscript("_madda") { above_ = point(19m, -119m) }; _hamza = postscript("_hamza") { below_ = point(1m, 241m); above_ = point(1m, -178m) }; _highHamza = postscript("_highHamza") { above_ = point(0m, 0m) }; _wavyHamza = postscript("_wavyHamza") { below_ = point(0m, 252m); above_ = point(0m, -171m) }; // _wavyHamza__b _wasla = postscript("_wasla") { below_ = point(-32m, 176m); above_ = point(-32m, -127m) }; _hamzaDamma = postscript("_hamzaDamma") { above_ = point(-26m, -81m) }; _bar = postscript("_bar") { _through = point(0m, 0m); _center = point(0m, 0m) }; // 1140 _ring = postscript("_ring") { _ring = point(25m, 141m) }; _smallV = postscript("_smallV") { below_ = point(-3m, 157m); above_ = point(-3m, -162m) }; _invSmallV = postscript("_invSmallV") { below_ = point(-3m, 157m); above_ = point(-3m, -162m) }; _damma = postscript("_damma") { above_ = point(-19m, -174m) }; _vline = postscript("_vline") { above_ = point(-3m, -221m) }; _hat = postscript("_hat") { below_ = point(2m, 181m); above_ = point(2m, -138m) }; // 1146 _gafBar = postscript("_gafBar") { above_ = point(70m, 0m) }; _gafBar_dot2h = postscript("_gafBar_dot2h") { above_ = point(70m, 0m) }; _gafBar_dot3u = postscript("_gafBar_dot3u") { above_ = point(70m, 0m) }; _gafBarShort = postscript("_gafBarShort") { above_ = point(70m, 0m) }; _gafBarShort_dot2h = postscript("_gafBarShort_dot2h") { above_ = point(70m, 0m) }; _gafBarShort_dot3u = postscript("_gafBarShort_dot3u") { above_ = point(70m, 0m) }; _lines = postscript("_lines") { below_ = point(91m, 297m) }; ***/ // 1153 absEndOfAyah__2 = postscript("absEndOfAyah.2") { digit = point(245m, 0m) }; absEndOfAyah__3 = postscript("absEndOfAyah.3") { digit = point(206m, 0m) }; absEndOfAyah__alt__2 = postscript("absEndOfAyah.alt.2") { digit = point(245m, 0m) }; absEndOfAyah__alt__3 = postscript("absEndOfAyah.alt.3") { digit = point(206m, 0m) }; absEndOfAyah__altB__2 = postscript("absEndOfAyah.altB.2") { digit = point(245m, 0m) }; absEndOfAyah__altB__3 = postscript("absEndOfAyah.altB.3") { digit = point(206m, 0m) }; absNumberSign__2 = postscript("absNumberSign.2") { digit = point(200m, 0m) }; // 1160 absNumberSign__3 = postscript("absNumberSign.3") { digit = point(200m, 0m) }; absYearSign__2 = postscript("absYearSign.2") { digit = point(1050m, 0m) }; absYearSign__3 = postscript("absYearSign.3") { digit = point(825m, 0m) }; absYearSign__4 = postscript("absYearSign.4") { digit = point(600m, 0m) }; absFootnoteSign__2 = postscript("absFootnoteSign.2") { digit = point(475m, 0m) }; absPageSign__2 = postscript("absPageSign.2") { digit = point(75m, 0m) }; absPageSign__3 = postscript("absPageSign.3") { digit = point(75m, 0m) }; absLamIni__preAlef = postscript("absLamIni.preAlef") { above = point(156m, 1195m); below = point(116m, -58m); through = point(168m, 777m); diaA = point(179m, 1278m); diaB = point(65m, -100m); alef = point(65m, 825m); exit = point(0m, 0m) }; absLamSmallVIni__preAlef = postscript("absLamSmallVIni.preAlef") { diaB = point(65m, -100m); diaA = point(154m, 1569m); exit = point(0m, 0m); alef = point(65m, 825m) }; absLamDotAboveIni__preAlef = postscript("absLamDotAboveIni.preAlef") { diaB = point(65m, -100m); diaA = point(150m, 1540m); exit = point(0m, 0m); alef = point(65m, 825m) }; // 1170 absLamThreeDotsAboveIni__preAlef = postscript("absLamThreeDotsAboveIni.preAlef") { diaB = point(65m, -100m); diaA = point(125m, 1700m); exit = point(0m, 0m); alef = point(65m, 825m) }; absLamThreeDotsBelowIni__preAlef = postscript("absLamThreeDotsBelowIni.preAlef") { diaB = point(121m, -568m); diaA = point(179m, 1278m); exit = point(0m, 0m); alef = point(65m, 825m) }; absLamRetroIni__preAlef = postscript("absLamRetroIni.preAlef") { diaB = point(65m, -100m); diaA = point(73m, 1862m); exit = point(0m, 0m); alef = point(-55m, 1514m) }; absLamBarIni__preAlef = postscript("absLamBarIni.preAlef") { diaB = point(65m, -100m); diaA = point(179m, 1278m); exit = point(0m, 0m); alef = point(66m, 931m) }; absAlefMaddaAboveFin__postLamIni = postscript("absAlefMaddaAboveFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1459m); alef = point(-26m, 1437m); dia2B = point(200m, -136m) }; absAlefHamzaAboveFin__postLamIni = postscript("absAlefHamzaAboveFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1600m); alef = point(-128m, 1500m); dia2B = point(200m, -136m) }; absAlefHamzaBelowFin__postLamIni = postscript("absAlefHamzaBelowFin.postLamIni") { diaB = point(455m, -462m); entry = point(535m, 0m); diaA = point(0m, 1218m); alef = point(0m, 1155m); dia2B = point(455m, -462m) }; absAlefFin__postLamIni = postscript("absAlefFin.postLamIni") { above = point(46m, 1185m); below = point(446m, -57m); dia2B = point(200m, -136m); diaA = point(0m, 1218m); diaB = point(420m, -100m); alef = point(0m, 1155m); entry = point(535m, 0m) }; absAlefWavyHamzaAboveFin__postLamIni = postscript("absAlefWavyHamzaAboveFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1600m); alef = point(-136m, 1423m); dia2B = point(200m, -136m) }; absAlefWavyHamzaBelowFin__postLamIni = postscript("absAlefWavyHamzaBelowFin.postLamIni") { diaB = point(462m, -484m); entry = point(535m, 0m); diaA = point(0m, 1218m); alef = point(0m, 1155m); dia2B = point(462m, -484m) }; // 1180 absHighHamzaAlefFin__postLamIni = postscript("absHighHamzaAlefFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(18m, 1551m); alef = point(-40m, 1300m); dia2B = point(200m, -136m) }; absAlefWaslaFin__postLamIni = postscript("absAlefWaslaFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1500m); alef = point(-100m, 1400m); dia2B = point(200m, -136m) }; absLamMed__preAlef = postscript("absLamMed.preAlef") { above = point(230m, 1020m); below = point(255m, -68m); through = point(223m, 644m); diaA = point(220m, 1035m); diaB = point(250m, -100m); alef = point(100m, 700m); exit = point(150m, 250m) }; absLamSmallVMed__preAlef = postscript("absLamSmallVMed.preAlef") { diaB = point(250m, -100m); diaA = point(235m, 1400m); exit = point(150m, 250m); alef = point(100m, 700m) }; absLamDotAboveMed__preAlef = postscript("absLamDotAboveMed.preAlef") { diaB = point(250m, -100m); diaA = point(216m, 1349m); exit = point(150m, 250m); alef = point(100m, 700m) }; absLamThreeDotsAboveMed__preAlef = postscript("absLamThreeDotsAboveMed.preAlef") { diaB = point(250m, -100m); diaA = point(183m, 1532m); exit = point(150m, 250m); alef = point(18m, 1239m) }; absLamThreeDotsBelowMed__preAlef = postscript("absLamThreeDotsBelowMed.preAlef") { diaB = point(253m, -572m); diaA = point(220m, 1035m); exit = point(150m, 250m); alef = point(100m, 700m) }; absLamRetroMed__preAlef = postscript("absLamRetroMed.preAlef") { diaB = point(250m, -100m); diaA = point(143m, 1661m); exit = point(150m, 250m); alef = point(15m, 1360m) }; absLamBarMed__preAlef = postscript("absLamBarMed.preAlef") { diaB = point(250m, -100m); diaA = point(220m, 1035m); exit = point(150m, 250m); alef = point(100m, 821m) }; absAlefMaddaAboveFin__postLamMed = postscript("absAlefMaddaAboveFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(33m, 1173m); alef = point(-84m, 1166m); dia2B = point(300m, -154m) }; // 1190 absAlefHamzaAboveFin__postLamMed = postscript("absAlefHamzaAboveFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(0m, 1335m); alef = point(-100m, 1280m); dia2B = point(300m, -154m) }; absAlefHamzaBelowFin__postLamMed = postscript("absAlefHamzaBelowFin.postLamMed") { diaB = point(455m, -484m); entry = point(650m, 250m); diaA = point(47m, 949m); alef = point(0m, 1020m); dia2B = point(455m, -484m) }; absAlefFin__postLamMed = postscript("absAlefFin.postLamMed") { dia2B = point(300m, -154m); diaA = point(47m, 949m); diaB = point(420m, -100m); alef = point(0m, 1020m); entry = point(650m, 250m); above = point(48m, 927m); below = point(438m, -89m) }; absAlefWavyHamzaAboveFin__postLamMed = postscript("absAlefWavyHamzaAboveFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(26m, 1316m); alef = point(-100m, 1200m); dia2B = point(300m, -154m) }; absAlefWavyHamzaBelowFin__postLamMed = postscript("absAlefWavyHamzaBelowFin.postLamMed") { diaB = point(480m, -521m); entry = point(650m, 250m); diaA = point(47m, 949m); alef = point(0m, 1020m); dia2B = point(480m, -521m) }; absHighHamzaAlefFin__postLamMed = postscript("absHighHamzaAlefFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(33m, 1236m); alef = point(-40m, 1200m); dia2B = point(300m, -154m) }; absAlefWaslaFin__postLamMed = postscript("absAlefWaslaFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(37m, 1243m); alef = point(-84m, 1159m); dia2B = point(300m, -154m) }; /*** NEW CHARACTERS ****** absSmallHighAlefLamYeh // U+0616 absSeenInvV // U+063B absKafTwoDotsAbove // U+063C absKehehTwoDotsAbove // U+063D absKehehThreeDotsBelow // U+063E absFarsiYehInvV // U+063F absFarsiYehTwoDotsAbove // U+077E absFarsiYehThreeDotsAbove // U+077F absSmallHighZain // U+0617 absSmallFatha // U+0618 absSmallDamma // U+0619 absSmallKasra // U+0620 ****************************/ //------------------------------------------------------------------------------------------ // // Unencoded forms // #if EXPER_UNICODE5x uniJeemRetro1 = pseudo(postscript("absJeemRetro1"), 0x076E); uniTchehRetro2 = pseudo(postscript("absTchehRetro2"), 0x076F); uniSheenRetro2 = pseudo(postscript("absSheenRetro2"), 0x0770); uniJehRetro1 = pseudo(postscript("absJehRetro1"), 0x0771); uniJeemRetro3 = pseudo(postscript("absJeemRetro3"), 0x0772); cUnencodedChar = (uniJeemRetro1 uniTchehRetro2 uniSheenRetro2 uniJehRetro1 uniJeemRetro3); cUnencodedGlyph = (absJeemRetro1 absTchehRetro2 absSheenRetro2 absJehRetro1 absJeemRetro3); #endif // EXPER_UNICODE5x /***** Constructed Unicode 5.X characters *****/ uniAlefEasternTwoAbove = pseudo(postscript("question"), 0x0773); uniAlefEasternThreeAbove = pseudo(postscript("question"), 0x0774); uniFarsiYehEasternTwoAbove = pseudo(postscript("question"), 0x0775); uniFarsiYehEasternThreeAbove = pseudo(postscript("question"), 0x0776); uniFarsiYehEasternFourBelow = pseudo(postscript("question"), 0x0777); uniWawEasternTwoAbove = pseudo(postscript("question"), 0x0778); uniWawEasternThreeAbove = pseudo(postscript("question"), 0x0779); uniYehBarreeEasternTwoAbove = pseudo(postscript("question"), 0x077A); uniYehBarreeEasternThreeAbove = pseudo(postscript("question"), 0x077B); uniHahEasternFourBelow = pseudo(postscript("question"), 0x077C); uniSeenEasternFourBelow = pseudo(postscript("question"), 0x077D); // These "look" the same as the small digits, but conceptually and behaviorally they are different // since they function as diacritics: absTwoDiaDigitAbove = pseudo(postscript("absEasternTwoSmall")); absThreeDiaDigitAbove = pseudo(postscript("absEasternThreeSmall")); absFourDiaDigitAbove = pseudo(postscript("absEasternFourSmall")); absFourDiaDigitBelow = pseudo(postscript("absEasternFourSmall")); absFourDiaDigitAbove__urdu = pseudo(postscript("absEasternFourSmall.urdu")); absFourDiaDigitBelow__urdu = pseudo(postscript("absEasternFourSmall.urdu")); // The following three classes must match for substitution: cUnencodedChar2Parts = (uniAlefEasternTwoAbove uniAlefEasternThreeAbove uniFarsiYehEasternTwoAbove uniFarsiYehEasternThreeAbove uniFarsiYehEasternFourBelow uniWawEasternTwoAbove uniWawEasternThreeAbove uniYehBarreeEasternTwoAbove uniYehBarreeEasternThreeAbove uniHahEasternFourBelow uniSeenEasternFourBelow); cUnencodedGlyphPart1 = (absAlef absAlef absFarsiYeh absFarsiYeh absFarsiYeh absWaw absWaw absYehBarree absYehBarree absHah absSeen); cUnencodedGlyphPart2 = (absTwoDiaDigitAbove absThreeDiaDigitAbove absTwoDiaDigitAbove absThreeDiaDigitAbove absFourDiaDigitBelow absTwoDiaDigitAbove absThreeDiaDigitAbove absTwoDiaDigitAbove absThreeDiaDigitAbove absFourDiaDigitBelow absFourDiaDigitAbove); // The following two classes are for positioning: cDiaDigitAbove = (absTwoDiaDigitAbove absThreeDiaDigitAbove absFourDiaDigitAbove absFourDiaDigitAbove__urdu) { diaDigitA_ = point(bb.left + bb.width/2, bb.bottom); diaA = point(bb.left + bb.width/2, bb.top) }; cDiaDigitBelow = (absFourDiaDigitBelow absFourDiaDigitBelow__urdu) { diaDigitB_ = point(bb.left + bb.width/2, bb.top); diaB = point(bb.left + bb.width/2, bb.bottom) }; cDiaDigit = (cDiaDigitAbove cDiaDigitBelow); absAlef { diaDigitA = point(120m, 1100m) }; absAlefFin { diaDigitA = point(105m, 1175m) }; absFarsiYeh { diaDigitB = point(450m, -400m); diaDigitA = point(325m, 706m) }; absFarsiYehIni { diaDigitB = point(130m, -420m); diaDigitA = point(184m, 684m) }; absFarsiYehMed { diaDigitB = point(150m, -450m); diaDigitA = point(200m, 600m) }; absFarsiYehFin { diaDigitB = point(450m, -650m); diaDigitA = point(389m, 329m) }; absWaw { diaDigitA = point(363m, 691m) }; absWawFin { diaDigitA = point(308m, 684m) }; absYehBarree { diaDigitA = point(345m, 645m) }; absYehBarreeFin { diaDigitA = point(375m, 220m) }; absHah { diaDigitB = point(525m, -20m) }; // (400m, -825m) is under tail absHahIni { diaDigitB = point(450m, -150m) }; absHahMed { diaDigitB = point(449m, -201m) }; absHahFin { diaDigitB = point(500m, -50m) }; // (400m, -840m) is under tail absSeen { diaDigitA = point(400m, 450m) }; absSeenIni { diaDigitA = point(390m, 550m) }; absSeenMed { diaDigitA = point(400m, 600m) }; absSeenFin { diaDigitA = point(800m, 450m) }; // (400m, 450m) is over bowl cTakesDiaDigitA = (absAlef absAlefFin absFarsiYeh absFarsiYehIni absFarsiYehMed absFarsiYehFin absWaw absWawFin absYehBarree absYehBarreeFin absSeen absSeenIni absSeenMed absSeenFin); cTakesDiaDigitB = (absFarsiYeh absFarsiYehIni absFarsiYehMed absFarsiYehFin absHah absHah absHahIni absHahMed absHahFin); /********************************************************/ //------------------------------------------------------------------------------------------ // // Contextual forms // zeroWidthJoiner = postscript("zerojoin"); cDualLinkIso = (zeroWidthJoiner absAin absAinThreeDotsAbove absAinThreeDotsDownAbove absAinTwoDotsAbove absAinTwoDotsVertAbove absAlefMaksura absBeeh absBeh absBeheh absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehNoDots absBehSmallVAbove absBehThreeDotsAboveDotBelow absBehThreeDotsHorizBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absDad absDadDotBelow absDotlessFeh absDyeh absE absFarsiYeh absFeh absFehDotBelow absFehDotMovedBelow absFehThreeDotsBelow absFehThreeDotsUpwardBelow absFehTwoDotsBelow absGaf absGafRing absGafThreeDotsAbove absGafTwoDotsBelow absGhain absGhainDotBelow absGueh absHah absHahHamzaAbove absHahThreeDotsAbove absHahThreeDotsUpwardBelow absHahTwoDotsAbove absHahTwoDotsVerticalAbove absHeh absHehDoachashmee absHehGoal absHehGoalHamzaAbove absHehHat absHehYehAbove absHighHamzaYeh absJeem absJeemRetro1 absJeemRetro2 absJeemRetro3 absKaf absKafDotAbove absKafRing absKafThreeDotsBelow absKeheh absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absKhah absLam absLamBar absLamDotAbove absLamRetro absLamSmallV absLamThreeDotsAbove absLamThreeDotsBelow absMeem absMeemDotAbove absMeemDotBelow absNg absNgoeh absNoon absNoonDotBelow absNoonGhunna absNoonRetro absNoonRing absNoonSmallV absNoonThreeDotsAbove absNoonTwoDotsBelow absNyeh absPeh absPeheh absQaf absQafDotAbove absQafNoDots absQafThreeDotsAbove absRnoon absSad absSadThreeDotsAbove absSadTwoDotsBelow absSeen absSeenDotBelowDotAbove absSeenFourDotsAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSeenTwoVertAbove absSheen absSheenDotBelow absSheenRetro1 absSheenRetro2 absSwashKaf absTah absTahThreeDotsAbove absTcheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absTcheheh absTeh absTeheh absTehRing absTehThreeDotsAboveDownwards absTheh absTteh absTteheh absVeh absYeh absYehHamzaAbove absYehSmallV absYehThreeDotsBelow absZah ); // ADD absSeenInvV, absKafTwoDotsAbove, absKehehTwoDotsAbove, absKehehThreeDotsBelow, // absFarsiYehInvV, absFarsiYehTwoDotsAbove, absFarsiYehThreeDotsBelow cDualLinkIni = (zeroWidthJoiner absAinIni absAinThreeDotsAboveIni absAinThreeDotsDownAboveIni absAinTwoDotsAboveIni absAinTwoDotsVertAboveIni absAlefMaksuraIni absBeehIni absBehIni absBehehIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehNoDotsIni absBehSmallVAboveIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsHorizBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absDadIni absDadDotBelowIni absDotlessFehIni absDyehIni absEIni absFarsiYehIni absFehIni absFehDotBelowIni absFehDotMovedBelowIni absFehThreeDotsBelowIni absFehThreeDotsUpwardBelowIni absFehTwoDotsBelowIni absGafIni absGafRingIni absGafThreeDotsAboveIni absGafTwoDotsBelowIni absGhainIni absGhainDotBelowIni absGuehIni absHahIni absHahHamzaAboveIni absHahThreeDotsAboveIni absHahThreeDotsUpwardBelowIni absHahTwoDotsAboveIni absHahTwoDotsVerticalAboveIni absHehIni absHehDoachashmeeIni absHehGoalIni absHehGoalHamzaAboveIni absHehHatIni absHehYehAboveIni absHighHamzaYehIni absJeemIni absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absKafIni absKafDotAboveIni absKafRingIni absKafThreeDotsBelowIni absKehehIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absKhahIni absLamIni absLamBarIni absLamDotAboveIni absLamRetroIni absLamSmallVIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNgIni absNgoehIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absNoonRetroIni absNoonRingIni absNoonSmallVIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNyehIni absPehIni absPehehIni absQafIni absQafDotAboveIni absQafNoDotsIni absQafThreeDotsAboveIni absRnoonIni absSadIni absSadThreeDotsAboveIni absSadTwoDotsBelowIni absSeenIni absSeenDotBelowDotAboveIni absSeenFourDotsAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSeenTwoVertAboveIni absSheenIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSwashKafIni absTahIni absTahThreeDotsAboveIni absTchehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absTchehehIni absTehIni absTehehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absThehIni absTtehIni absTtehehIni absVehIni absYehIni absYehHamzaAboveIni absYehSmallVIni absYehThreeDotsBelowIni absZahIni ); cDualLinkMed = (zeroWidthJoiner absAinMed absAinThreeDotsAboveMed absAinThreeDotsDownAboveMed absAinTwoDotsAboveMed absAinTwoDotsVertAboveMed absAlefMaksuraMed absBeehMed absBehMed absBehehMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehNoDotsMed absBehSmallVAboveMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsHorizBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absDadMed absDadDotBelowMed absDotlessFehMed absDyehMed absEMed absFarsiYehMed absFehMed absFehDotBelowMed absFehDotMovedBelowMed absFehThreeDotsBelowMed absFehThreeDotsUpwardBelowMed absFehTwoDotsBelowMed absGafMed absGafRingMed absGafThreeDotsAboveMed absGafTwoDotsBelowMed absGhainMed absGhainDotBelowMed absGuehMed absHahMed absHahHamzaAboveMed absHahThreeDotsAboveMed absHahThreeDotsUpwardBelowMed absHahTwoDotsAboveMed absHahTwoDotsVerticalAboveMed absHehMed absHehDoachashmeeMed absHehGoalMed absHehGoalHamzaAboveMed absHehHatMed absHehYehAboveMed absHighHamzaYehMed absJeemMed absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absKafMed absKafDotAboveMed absKafRingMed absKafThreeDotsBelowMed absKehehMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absKhahMed absLamMed absLamBarMed absLamDotAboveMed absLamRetroMed absLamSmallVMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNgMed absNgoehMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absNoonRetroMed absNoonRingMed absNoonSmallVMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNyehMed absPehMed absPehehMed absQafMed absQafDotAboveMed absQafNoDotsMed absQafThreeDotsAboveMed absRnoonMed absSadMed absSadThreeDotsAboveMed absSadTwoDotsBelowMed absSeenMed absSeenDotBelowDotAboveMed absSeenFourDotsAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSeenTwoVertAboveMed absSheenMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSwashKafMed absTahMed absTahThreeDotsAboveMed absTchehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absTchehehMed absTehMed absTehehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absThehMed absTtehMed absTtehehMed absVehMed absYehMed absYehHamzaAboveMed absYehSmallVMed absYehThreeDotsBelowMed absZahMed ); cDualLinkFin = (zeroWidthJoiner absAinFin absAinThreeDotsAboveFin absAinThreeDotsDownAboveFin absAinTwoDotsAboveFin absAinTwoDotsVertAboveFin absAlefMaksuraFin absBeehFin absBehFin absBehehFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehNoDotsFin absBehSmallVAboveFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsHorizBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absDadFin absDadDotBelowFin absDotlessFehFin absDyehFin absEFin absFarsiYehFin absFehFin absFehDotBelowFin absFehDotMovedBelowFin absFehThreeDotsBelowFin absFehThreeDotsUpwardBelowFin absFehTwoDotsBelowFin absGafFin absGafRingFin absGafThreeDotsAboveFin absGafTwoDotsBelowFin absGhainFin absGhainDotBelowFin absGuehFin absHahFin absHahHamzaAboveFin absHahThreeDotsAboveFin absHahThreeDotsUpwardBelowFin absHahTwoDotsAboveFin absHahTwoDotsVerticalAboveFin absHehFin absHehDoachashmeeFin absHehGoalFin absHehGoalHamzaAboveFin absHehHatFin absHehYehAboveFin absHighHamzaYehFin absJeemFin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absKafFin absKafDotAboveFin absKafRingFin absKafThreeDotsBelowFin absKehehFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absKhahFin absLamFin absLamBarFin absLamDotAboveFin absLamRetroFin absLamSmallVFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absMeemFin absMeemDotAboveFin absMeemDotBelowFin absNgFin absNgoehFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absNoonRetroFin absNoonRingFin absNoonSmallVFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNyehFin absPehFin absPehehFin absQafFin absQafDotAboveFin absQafNoDotsFin absQafThreeDotsAboveFin absRnoonFin absSadFin absSadThreeDotsAboveFin absSadTwoDotsBelowFin absSeenFin absSeenDotBelowDotAboveFin absSeenFourDotsAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSeenTwoVertAboveFin absSheenFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSwashKafFin absTahFin absTahThreeDotsAboveFin absTchehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absTchehehFin absTehFin absTehehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absThehFin absTtehFin absTtehehFin absVehFin absYehFin absYehHamzaAboveFin absYehSmallVFin absYehThreeDotsBelowFin absZahFin ); cRightLinkIso = (zeroWidthJoiner absAe absAlef absAlefHamzaAbove absAlefHamzaBelow absAlefMaddaAbove absAlefWasla absAlefWavyHamzaAbove absAlefWavyHamzaBelow absDahal absDal absDalDotBelow absDalFourDotsAbove absDalHat absDalInvSmallVBelow absDalRing absDalThreeDotsAboveDownwards absDalTwoVertBelowSmallTah absDdahal absDdal absDul absHighHamzaAlef absHighHamzaWaw absJeh absJeh__dotHat absJehRetro1 absJehRetro2 absKirghizOe absKirghizYu absLamAlef absLamBarAlef absLamDotAboveAlef absLamRetroAlef absLamSmallVAlef absLamThreeDotsAboveAlef absLamThreeDotsBelowAlef absOe absReh absRehBar absRehDotBelow absRehDotBelowDotAbove absRehFourDotsAbove absRehHamzaAbove absRehHat absRehRing absRehTwoDotsAbove absRehTwoVertAbove absRreh absTehMarbuta absTehMarbutaGoal absThal absU absUHamzaAbove absVe absWaw absWawDotAbove absWawDotBelow absWawHamzaAbove absWawRing absWawTwoDotsAbove absYehBarree absYehBarreeHamzaAbove absYehTail absYu absZain ); cRightLinkFin = (zeroWidthJoiner absAeFin absAlefFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefMaddaAboveFin absAlefWaslaFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin absDahalFin absDalFin absDalDotBelowFin absDalFourDotsAboveFin absDalHatFin absDalInvSmallVBelowFin absDalRingFin absDalThreeDotsAboveDownwardsFin absDalTwoVertBelowSmallTahFin absDdahalFin absDdalFin absDulFin absHighHamzaAlefFin absHighHamzaWawFin absJehFin absJehFin__dotHat absJehRetro1Fin absJehRetro2Fin absKirghizOeFin absKirghizYuFin absLamAlefFin absLamBarAlefFin absLamDotAboveAlefFin absLamRetroAlefFin absLamSmallVAlefFin absLamThreeDotsAboveAlefFin absLamThreeDotsBelowAlefFin absOeFin absRehFin absRehBarFin absRehDotBelowFin absRehDotBelowDotAboveFin absRehFourDotsAboveFin absRehHamzaAboveFin absRehHatFin absRehRingFin absRehTwoDotsAboveFin absRehTwoVertAboveFin absRrehFin absTehMarbutaFin absTehMarbutaGoalFin absThalFin absUFin absUHamzaAboveFin absVeFin absWawFin absWawDotAboveFin absWawDotBelowFin absWawHamzaAboveFin absWawRingFin absWawTwoDotsAboveFin absYehBarreeFin absYehBarreeHamzaAboveFin absYehTailFin absYuFin absZainFin ); // Lam-alef ligatures cLamIso = (absLam absLamBar absLamDotAbove absLamRetro absLamSmallV absLamThreeDotsAbove absLamThreeDotsBelow ); cLamIni = (absLamIni absLamBarIni absLamDotAboveIni absLamRetroIni absLamSmallVIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni ); cLamMed = (absLamMed absLamBarMed absLamDotAboveMed absLamRetroMed absLamSmallVMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed ); cLamFin = (absLamFin absLamBarFin absLamDotAboveFin absLamRetroFin absLamSmallVFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin ); cLamIniPreAlef = (absLamIni__preAlef absLamBarIni__preAlef absLamDotAboveIni__preAlef absLamRetroIni__preAlef absLamSmallVIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef ); cLamMedPreAlef = (absLamMed__preAlef absLamBarMed__preAlef absLamDotAboveMed__preAlef absLamRetroMed__preAlef absLamSmallVMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef ); cAlefIso = (absAlef absHighHamzaAlef absAlefHamzaAbove absAlefHamzaBelow absAlefMaddaAbove absAlefWasla absAlefWavyHamzaAbove absAlefWavyHamzaBelow ); cAlefFin = (absAlefFin absHighHamzaAlefFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefMaddaAboveFin absAlefWaslaFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin ); cAlefFinPostLamIni = (absAlefFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefMaddaAboveFin__postLamIni absAlefWaslaFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni ); cAlefFinPostLamMed = (absAlefFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefMaddaAboveFin__postLamMed absAlefWaslaFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed ); // not used in Graphite: /*** cLam = (absLam absLamIni absLamMed absLamFin absLamBar absLamBarIni absLamBarMed absLamBarFin absLamDotAbove absLamDotAboveIni absLamDotAboveMed absLamDotAboveFin absLamRetro absLamRetroIni absLamRetroMed absLamRetroFin absLamSmallV absLamSmallVIni absLamSmallVMed absLamSmallVFin absLamThreeDotsAbove absLamThreeDotsAboveIni absLamThreeDotsAboveMed absLamThreeDotsAboveFin absLamThreeDotsBelow absLamThreeDotsBelowIni absLamThreeDotsBelowMed absLamThreeDotsBelowFin ); cLamAlef = (absLamAlef absLamAlefFin absLamBarAlef absLamBarAlefFin absLamDotAboveAlef absLamDotAboveAlefFin absLamRetroAlef absLamRetroAlefFin absLamSmallVAlef absLamSmallVAlefFin absLamThreeDotsAboveAlef absLamThreeDotsAboveAlefFin absLamThreeDotsBelowAlef absLamThreeDotsBelowAlefFin ); // Place holder for the alef in lamalef ligature rules - rendered as zero-width space: gAlefPlaceholder = pseudo(unicode(0x200B)) {dir=DIR_ARABIC} ; ***/ // Decomposition // QUESTION: are there more things that need to be decomposed? cAlefPlusMark = (absAlefMaddaAbove absAlefHamzaAbove absAlefHamzaBelow); cAlefMark = (absMaddahAbove absHamzaAbove absHamzaBelow); // Dagger-alef // OT: DaggerAlefToLarge cNeedsLargeDaggerAlef = (absYeh absHighHamzaYeh absFarsiYeh absE absYehThreeDotsBelow absYehTail absAlefMaksura absSeen absSheen absSeenDotBelowDotAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSheenDotBelow absSheenRetro1 absSheenRetro2 absSeenFourDotsAbove absSeenTwoVertAbove absSad absDad absSadTwoDotsBelow absSadThreeDotsAbove absDadDotBelow absYehFin absHighHamzaYehFin absFarsiYehFin absEFin absYehThreeDotsBelowFin absYehTailFin absAlefMaksuraFin absSeenFin absSheenFin absSeenDotBelowDotAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSeenFourDotsAboveFin absSeenTwoVertAboveFin absSadFin absDadFin absSadTwoDotsBelowFin absSadThreeDotsAboveFin absDadDotBelowFin); // Lowered hamza cNeedsLoweredHamza = ( absWaw absYeh absHeh absHehGoal absWawFin absYehFin absHehFin absHehGoalFin absYehMed absHehMed absHehGoalMed absYehIni absHehIni absHehGoalIni); cWithLoweredHamza = ( absWawHamzaAbove absYehHamzaAbove absHehYehAbove absHehGoalHamzaAbove absWawHamzaAboveFin absYehHamzaAboveFin absHehYehAboveFin absHehGoalHamzaAboveFin absYehHamzaAboveMed absHehYehAboveMed absHehGoalHamzaAboveMed absYehHamzaAboveIni absHehYehAboveIni absHehGoalHamzaAboveIni) { component { base = box(0, bb.bottom, aw, bb.bottom + (bb.height*5)/8); hamza = box(0, bb.bottom + (bb.height*5)/8, aw, bb.top) }}; // slight adjustments to components: absWawHamzaAbove { component { base.top = bb.bottom + (bb.height*3)/4; hamza.bottom = bb.bottom + (bb.height*3)/4 }}; absYehHamzaAbove { component.hamza.right = aw*3/4 }; absYehHamzaAboveMed { component { base.top = bb.bottom + bb.height/2; hamza.bottom = bb.bottom + bb.height/2 }}; absYehHamzaAboveFin { component.hamza.right = aw*3/4 }; // Subtending marks cSignTakes4 = (absYearSign); // medium cSignTakes3Medium = (absYearSign absNumberSign absPageSign); cSignTakes3Small = (absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB); cSignTakes2 = (absYearSign absNumberSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB absFootnoteSign); // medium cSignTakes1 = (absYearSign absNumberSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB absFootnoteSign); // medium cSign4 = (absYearSign__4); cSign3Medium = (absYearSign__3 absNumberSign__3 absPageSign__3); cSign3Small = (absEndOfAyah__3 absEndOfAyah__alt__3 absEndOfAyah__altB__3); cSign3 = (cSign3Medium cSign3Small); cSign2 = (absYearSign__2 absNumberSign__2 absPageSign__2 absEndOfAyah__2 absEndOfAyah__alt__2 absEndOfAyah__altB__2 absFootnoteSign); cSign1 = (absYearSign absNumberSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB absFootnoteSign); cSignAll = (cSign1 cSign2 cSign3 cSign4); // The next three class must match for substitution: cDigitNormal = (absZero absOne absTwo absThree absFour absFive absSix absSeven absEight absNine absEasternZero absEasternOne absEasternTwo absEasternThree absEasternFour absEasternFour__urdu absEasternFive absEasternSix absEasternSix__urdu absEasternSeven absEasternSeven__urdu absEasternEight absEasternNine); cDigitMedium = (absZeroMedium absOneMedium absTwoMedium absThreeMedium absFourMedium absFiveMedium absSixMedium absSevenMedium absEightMedium absNineMedium absEasternZeroMedium absEasternOneMedium absEasternTwoMedium absEasternThreeMedium absEasternFourMedium absEasternFourMedium__urdu absEasternFiveMedium absEasternSixMedium absEasternSixMedium__urdu absEasternSevenMedium absEasternSevenMedium__urdu absEasternEightMedium absEasternNineMedium); cDigitSmall = (absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmall absEasternZeroSmall absEasternOneSmall absEasternTwoSmall absEasternThreeSmall absEasternFourSmall absEasternFourSmall__urdu absEasternFiveSmall absEasternSixSmall absEasternSixSmall__urdu absEasternSevenSmall absEasternSevenSmall__urdu absEasternEightSmall absEasternNineSmall); cSignDigit = (cDigitMedium cDigitSmall) { directionality = DIR_ARABICNUMBER }; //------------------------------------------------------------------------------------------ // // Feature-related variants // cDownward = (absComma__downward absSemicolon__downward); cno_Downward = (absComma absSemicolon); cSixNine = (absDammatan__sixNine); cno_SixNine = (absDammatan); cDotHat = (absJeh__dotHat absJehFin__dotHat); cno_DotHat = (absJeh absJehFin); cno_Sukun = (absSukun); cSukunDownOpen = (absSukun__downOpen); cSukunLeftOpen = (absSukun__leftOpen); cno_OpenLeft = (absSmallHighDotlessHeadOfKhah); cOpenLeft = (absSukun__leftOpen); cLargeAlef = (absSuperscriptAlef__large); cno_LargeAlef = (absSuperscriptAlef); cNoDots = (absYeh__noDots absYehIni__noDots absYehMed__noDots absYehFin__noDots); cno_NoDots = (absYeh absYehIni absYehMed absYehFin); // The next three class must match for substitution: cEasternDigit = ( absEasternFour absEasternSix absEasternSeven absEasternFourMedium absEasternSixMedium absEasternSevenMedium absEasternFourSmall absEasternSixSmall absEasternSevenSmall absFourDiaDigitAbove absFourDiaDigitBelow ); cEasternDigitUrdu = ( absEasternFour__urdu absEasternSix__urdu absEasternSeven__urdu absEasternFourMedium__urdu absEasternSixMedium__urdu absEasternSevenMedium__urdu absEasternFourSmall__urdu absEasternSixSmall__urdu absEasternSevenSmall__urdu absFourDiaDigitAbove__urdu absFourDiaDigitBelow__urdu ); cEasternDigitSindhi = ( absEasternFour absEasternSix__urdu absEasternSeven__urdu absEasternFourMedium absEasternSixMedium__urdu absEasternSevenMedium__urdu absEasternFourSmall absEasternSixSmall__urdu absEasternSevenSmall__urdu absFourDiaDigitAbove absFourDiaDigitBelow ); /**** cKnotted = (absHeh__knotted); cno_Knotted = (absHeh); cHooked = (absHehIni__hooked absHehMed__hooked absHehFin__hooked); cno_Hooked = (absHehIni absHehMed absHehFin); cKnottedFlat = (absHehFin__knottedFlat); cno_KnottedFlat = (absHehFin); cKnottedHigh = (absHehMed__knottedHigh absHehFin__knottedHigh); cno_KnottedHigh = (absHehMed absHehFin); ****/ cno_Heh = (absHeh absHehIni absHehMed absHehFin); cHehKurdish = (absHeh__knotted absHehIni absHehMed absHehFin__knottedHigh); cHehSindhi = (absHeh__knotted absHehIni absHehMed__knottedHigh absHehFin__knottedHigh); cHehUrdu = (absHeh absHehIni__hooked absHehMed__hooked absHehFin__hooked); cno_Meem = (absMeem absMeemIni absMeemMed absMeemFin); cMeemSindhi = (absMeem__sindhi absMeemIni absMeemMed absMeemFin__sindhi); cShaddaKasraMarks = (absKasra absKasratan); cShaddaKasraLigatures = (absShaddaKasra absShaddaKasratan); cEndOfAyah = (absEndOfAyah absEndOfAyah__2 absEndOfAyah__3); cEndOfAyahCircle = (absEndOfAyah__alt absEndOfAyah__alt__2 absEndOfAyah__alt__3); cEndOfAyahSquare = (absEndOfAyah__altB absEndOfAyah__altB__2 absEndOfAyah__altB__3); //zeroWidthJoiner = postscript("zerojoin"); zeroWidthNonJoiner = postscript("zeronojoin"); leftToRightMark = postscript("leftToRightMark") {dir = DIR_LEFT}; rightToLeftMark = postscript("rightToLeftMark") {dir = DIR_RIGHT}; leftToRightEmbedding = postscript("leftToRightEmbedding") {dir = DIR_LRE}; rightToLeftEmbedding = postscript("rightToLeftEmbedding") {dir = DIR_RLE}; popDirectionalFormatting = postscript("popDirectionalFormatting") {dir = DIR_PDF}; leftToRightOverride = postscript("leftToRightOverride") {dir = DIR_LRO}; rightToLeftOverride = postscript("rightToLeftOverride") {dir = DIR_RLO}; cInvisible = (zeroWidthJoiner zeroWidthNonJoiner leftToRightMark rightToLeftMark leftToRightEmbedding rightToLeftEmbedding popDirectionalFormatting leftToRightOverride rightToLeftOverride); zeroWidthSpace = postscript("zerospace"); //------------------------------------------------------------------------------------------ // // Marks // // marks that can combine with vowel marks: cMark1Above = (absHamzaAbove absShadda); cMark1Below = (absHamzaBelow); // vowels cMark2Above = (absFathatan absDammatan absFatha absDamma absSukun absUltaPesh absNoonGhunnaMark absZwarakay absVowelSmallV absVowelInvSmallV absVowelDotBelow absReversedDamma absFathaTwoDots absSuperscriptAlef absSuperscriptAlef__large absSmallHighDotlessHeadOfKhah absShaddaFathatan absShaddaDammatan absShaddaKasratan absShaddaFatha absShaddaDamma absShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlef absSukun__leftOpen absSukun__downOpen absDammatan__sixNine); cMark2Below = (absKasra absKasratan); // Maddah is different from hamza and shadda in that it goes above the vowels, but below the quranic // marks. However, Jonathan warns that this behavior may need to change someday. cMark3Above = (absMaddahAbove); // (no marks below that behave like maddah) // quranic marks cMark4Above = (absSmallHighSadLamAlefMaksura absSmallHighQafLamAlefMaksura absSmallHighMeemInitialForm absSmallHighLamAlef absSmallHighJeem absSmallHighThreeDots absSmallHighSeen absSmallHighRoundedZero absSmallHighUprightRectangularZero absSmallHighMeemIsolatedForm absSmallHighMadda absSmallHighYeh absSmallHighNoon absEmptyCentreHighStop absRoundedHighStopFilledCentre absSmallHighSadMark absSmallHighAinMark absSmallHighRehHahMark absSmallHighRehDadMark absNameMarker absSmallHighTah); cMark4Below = (absSmallLowSeen absEmptyCentreLowStop absSmallLowMeem); // For testing non-canonical ordering: r_comma = postscript("comma") { diaA_ = point(aw/2, bb.bottom) }; cMark4Above += (r_comma); cMark1 = (cMark1Above cMark1Below); cMark2 = (cMark2Above cMark2Below); cMark3 = (cMark3Above); cMark4 = (cMark4Above cMark4Below); cAnyMarks = (cMark1 cMark2 cMark3 cMark4); cAnyMarksAbove = (cMark1Above cMark2Above cMark3Above cMark4Above); cAnyMarksBelow = (cMark1Below cMark2Below cMark4Below); cMark234 = (cMark2 cMark3 cMark4); cMark34 = (cMark3 cMark4); // Not used by Graphite: /*** // OT mark classes: cOtMark1Above = (absFathatan absDammatan absFatha absDamma absShadda absSukun absMaddahAbove absHamzaAbove absUltaPesh absNoonGhunnaMark absZwarakay absVowelSmallV absVowelInvSmallV absReversedDamma absFathaTwoDots absSuperscriptAlef absSuperscriptAlef__large absSmallHighDotlessHeadOfKhah absShaddaFathatan absShaddaDammatan absShaddaKasratan absShaddaFatha absShaddaDamma absShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlef absSukun__leftOpen absSukun__downOpen absDammatan__sixNine); cOtMark1Below = (absKasratan absKasra absHamzaBelow absSubscriptAlef absVowelDotBelow); cOtMark2Above = (absSmallHighSadLamAlefMaksura absSmallHighQafLamAlefMaksura absSmallHighMeemInitialForm absSmallHighLamAlef absSmallHighJeem absSmallHighThreeDots absSmallHighSeen absSmallHighRoundedZero absSmallHighUprightRectangularZero absSmallHighMeemIsolatedForm absSmallHighMadda absSmallHighYeh absSmallHighNoon absEmptyCentreHighStop absRoundedHighStopFilledCentre absSmallHighSadMark absSmallHighAinMark absSmallHighRehHahMark absSmallHighRehDadMark absNameMarker absSmallHighTah); cOtMark2Below = (absSmallLowSeen absEmptyCentreLowStop absSmallLowMeem); // TODO: define the components for these ligatures cShaddaMarks = (absFathatan absDammatan absFatha absDamma absSuperscriptAlef); cShaddaLigatures = (absShaddaFathatan absShaddaDammatan absShaddaFatha absShaddaDamma absShaddaAlef); cHamzaMarks = (absDamma absFatha); cHamzaLigatures = (absHamzaDamma absHamzaFatha); ***/ endtable; // glyph endenvironment; grcompiler-5.2.1/test/GrcRegressionTest/fonts/SchInput.ttf000066400000000000000000007264141411153030700236730ustar00rootroot00000000000000LTSH>KOS/2n`VDMX[c0cmap7o cvt 5fpgm2Psi,bgasp glyfhdmxm6Pkheadb->-p6hheav-$hmtxb-loca@maxp S8 name*SXpost\Y!4bIprepujLL;LL+/"DLD;L"/L77LL77DLL"D73D/L/DDD;DXXXX SIL@ JA       !"#$ % &!'"(#)$*%+&,&-'.(/)0*1+2,3-4-5.6/708192:3;3<4=5>6?7@8A9B9C:D;E<F=G>H?I?J@KALBMCNDOEPFQFRGSHTIUJVKWLXLYMZN[O\P]Q^R_R`SaTbUcVdWeXfYgYhZi[j\k]l^m_n_o`paqbrcsdteuevfwgxhyizj{k|k}l~mnopqrrstuvwxxyz{|}~~& $%&'()*+,-./0123456789:;<=>DEFGHIJKLMNOPQRSTUVWXYZ[\]^b6ACSTU"#efoptuwx~?7ID[$+4lv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiulv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiu*w#5,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-<3Bci+EX/ >YEX0/0 >YEX;/; >YEX>/> >Yn+nX01#".54>32#"&/&#"#".54>3232767>32#".'+#".54>3232>7>54.54>32>76332654.54>32!%!!#  C        b %<^t8&=* !/6;7/# 2*    "   u       3,  "jG,; ?4 #. ,   @0+#.   8m0H+A]A )9IYiy ]9/A! )9IYiy]A! )9IYiyqA! )9IYiyr и/)и)//$/01"&54.'.54632#".54>32j    0#&0 &3FBS"-'*=[EE[=*'-"SBGHH 3d^!"/#/ܸ A ]A  ) 9 I Y i y ]"и/A&6FVfv ]A]//EX/ >YEX/ >Y01#.54632#.54632 %",#( !+#),[\Z*"Y_]%)1-""ei]'W[Z)'3-EX/ >YEX/ >YEX / >YEX/ >YEX/ >YEX/>YEX/>Y+ии и ܸ иииии01#!##53#533333#3!F=EG@F5E//EX/ >YEX/ >YEX/>YEX/>Yܸ(ܸ.к89>9?01%#5.'53.54>753#.'4.'>1Sk:1D?!zg._L1-J`31"><= gk-hY;7(+5#5>&A0>cG)^^jl ?M`>8X>#FF  g GTf#4#"<3*Z&?5,k3Cu7Mg'^)+N+D +A ]A  ) 9 I Y i y ])D9A!&6FVfv]A!&6FVfvqA!&6FVfvrи/NQиQ/A^^&^6^F^V^f^v^^^ ]A^^]6/EX./. >YEX/>YEX/>Ya$+a=и=/ܺ6969GAGG'G7GGGWGgGwGGG ]AGG]01#"&54>32##"&'#".54>32326734.#"32>4&'.#"32>$4CS0h\8]yB#<,J.^2' 0VsD3F+7]xB)42:.Fx,J)#>5)-3%B7,  '" ,.*6&B7+)]ZR?%qd@hB.>G)=tL 8O.?kC 29^.$&?PRN1;"9INL(!#9I1A#:JPN9Pdvpm+[+&Q+&8и8/AQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ rA[[&[6[F[V[f[v[[[ ]A[[]Amm&m6mFmVmfmvmmm ]Amm]EX!/! >YEX/>YEX/>YMAMM'M7MGMWMgMwMMM ]AMM]P!9!VAVV]AVV(V8VHVXVhVxVVV ]rArr'r7rGrWrgrwrrr ]Arr]01%#".'#".54>7.54>32>54.#5!"32674.#">.'32> (:M/(JC<%INX33aL/;[p4'(F`8*J8!/IX(-c9/& >  "J+2:?!9DH+1$  #C4 FAk3$A22F+962,M8 *5 7'9V8Ao\I3v99\@".D,5SA2RJ?EI#  $)(J,)J7 #?^/EX / >Y01#'.54632 )!) %#& F9-?/+L`%M +A&6FVfv ]A]//01.'.54>7>76>?%D33D%?>6 Ac####cA ".7)\mMMl\(8." ?wD"MXd9:eYM"DtA+`%M+A]A )9IYiy ]/ /01%'>7>54.'.'73D&A=7 Ac#$$#cA 7=A&D3Mm\)7." AtD"MYe:9dXM"Dw? ".8(\l 9/?O_o +A!&6FVfv]A!&6FVfvqA&6FVfv rAr`иf/c/-#+#Uи-[01'&>7>'#".54632#".54>32%.'.76&'.76%#"&54632#"&54>32''&67>B 43(%1  !(*?;));?*((45 /$ 1%(34*;?+''+?;*l  Z$/ 54( .$ (34>;**;>,&&   $. 43( 33( $.  ,&&,>;**;>(33 .$ %hH ?+и// +и 01#!5!3!=}=@}@T3`//EX/>YEX / >YEX / >YEX/>YEX/>Y01567>54#"#"54676323>/  P '2$)L#1?" T '/=` +0175!=rrm /EX/>Y01%#".54>32m3& B&3 B //01#7=^?77J8/9/ܸ8и/A]A )9IYiy ]*A**&*6*F*V*f*v*]A**]A**]EX/ >YEX/>Y#A##]A##(#8#H#X#h#x### ]1A11'171G1W1g1w111 ]A11]01#".54>324.#"32> 3KcA<`H3  4Jc>>aI2  (<+,=)  )<+/?) 3wwpU43Tmus01vwqW43SmusXcbO1;^tqaZegR3=awtdH-+EX/ >YEX/>Y01352>546.#"'73316 ( 41 ";-@85'z,:##+ +A ]A  ) 9 I Y i y ]-EX/ >YEX/>YA]A(8HXhx ]$01)5>54.#"#>32!2>73{*hkeO04J/Xm+HfB:iP0(?M%9s= %<4/'`nx|~=,Q>$\P>iM,'Gc=9qka(=9"!?<A5"+A""]A "")"9"I"Y"i"y""" ]"59/A]A )9IYiy ]EX0/0 >YEX/>YA'7GWgw ]A]0'A'']A''('8'H'X'h'x''' ]:0901#".5463232>54.'5>54.#"'>32@oS=8(&15;"(F3.Pl>.S@&,>&A_#2AS8.VB('1]aRXY- !7H'Da?'>S0%?.G6 .O;!5M3#@:3" i+и иEX/ >YEX/>Y+к 9 01#!533 !F}PRg_ekgJ%c+ArA! )9IYiy]A! )9IYiyqA )9IYiy r'EX$/$ >YEX / >Y$$#ܺ$#9 A'7GWgw ]A]01!#".5463232>54.'!dEMvHBoP=6&,/6!/Q;"SKm}=dTRh;(%?S/Y}P'D!:);/YEX/>Y'+96A66'676G6W6g6w666 ]A66]01#".54>;>324.#"32>.VxJ6ZG4#(JiR+]rN1n<>`B",M;+*(  ,;$.@(XEf=$>R]c/N{[4M{U"*3Ul.o`A  *Q)GID6 .FT9 /EX / >YEX/>Y 01#!"'7!hQ1-A3*c  0'\'8J/ +(+A((]A (()(9(I(Y(i(y((( ]9(99/A99]A 99)999I9Y9i9y999 ]ܸ и/# 9A//&/6/F/V/f/v/]A//]A//]/AиA/EX/ >YEX/>Y#9*A**]A**(*8*H*X*h*x*** ]FAFF'F7FGFWFgFwFFF ]AFF]01%#".54>7.54>324#">4.'32>0Rl;6jT3'J"'SC,">0(=F1&3JT"9B/F/$@1@bA!"A];-RG; 8R8-L?3DO\%8%*I>515@1WLB1}M+M9"':=!8-9/:/ܸ9и/9"A""]A "")"9"I"Y"i"y""" ],A,,&,6,F,V,f,v,,, ]A,,]"6и6/EX/ >YEX/>Y1+9'A'']A''('8'H'X'h'x''' ]01+5>7#".54>324.#"32>7>(JiS+\rN0m:?aC",SvK6ZH6$/M9.@&*H802*  oN|\4M}S .3Vn:Dg@$>T]c,rhG/FT&+naB &M?!]+A&6FVfv ]A]и //01#"&54632#".54632%33% 3% 3%&2  %3 b)m/EX / >YEX/>YEX/>YEX / >YEX/>YEX/>Y01#"'&547632567654#"#"547632?"###?03 P&0$+u"  &]L#17FT('.)9B//9015 ){]V]]%h5++015!5!%CC??@@)9B//901%5 5){9](']]Fq.<=/>/ܸA]A )9IYiy ]=%и%/A!&6FVfv]A!&6FVfvqA&6FVfv rAr и /EX / >YEX*/* >YEX2/2>Y*A]A(8HXhx ]01#>7>54.#"#".54>32#"&54>32q(=H?,5/(+A-2+!  0Ma27fO/1##3#1'9[RNXhC[M3q>(J:# &$#! &#*8R4:Y#0.% 3Jh/^vɻT +k++H+! 94 96 9AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rA!TT&T6TFTVTfTvTTTTTTTTT]A!TT&T6TFTVTfTvTTTTTTTTTqATT&T6TFTVTfTvTTTTT rATTrAkk&k6kFkVkfkvkkk ]Akk]xEXM/M >YEX/>Yp&+d+pи/&к!M9d5и5/6d9@ܸYAYY'Y7YGYWYgYwYYY ]AYY]01%#".546$32#"&5467#".54>32?32>7>54.#"32>74.#"32>hjbjvƏP.F\tE7;DPT)#3!8M[h6mw#'!# :3,<5KgcqM)Uۅjx*>%%KC:*  *OE9)kxAg sGy<~vhM-485JB-2=1uuoU3hR Ww{_ %/NakyA7a]ݟY;l_,#3Sgi`!&/Mbe_ J),>EX!/! >YEX/>YEX/>Y, +01!52>54.'!!5>73!$t &(&5% ic&6*`HLB%/42* !1<I#;--`&7HoA+'+A'']A '')'9'I'Y'i'y''' ]8'98/A88]A 88)898I8Y8i8y888 ]ܺ"9A/EX/ >YEX/>Y3=+"=39,A,,]A,,(,8,H,X,h,x,,, ]=@и@/DADD'D7DGDWDgDwDDD ]ADD]01#!52>54.#5!24.#"32>4.#*32>&BWae/09 :1/d`VA&2D'3T>"3Qe3#E"$I#5dN/:[r8 F ,V-3cO1' !;.0;" &=W;+H9* %;SYEX / >YEX/ >YEX/>Y A]A(8HXhx ]+A++'+7+G+W+g+w+++ ]A++]01%#".54>322>73#.#"32>7EѐrFKu'C?>" ;SnGFkQ7!,]e@aOD"|PorǕV  @kN,)H`ow:[|H7O1) */+/ܸ* и /A]A )9IYiy ] "EX/ >YEX/>YA]A(8HXhx ]%A%%'%7%G%W%g%w%%% ]A%%]01#!52>54.#5!24.#"32>V{809 :1_5ie(M''Q(dg5@ !;/0YEX/ >YEX/>Y&+ܸ-01)52>54.#5!#.#!32>73#.+;2>73309 :1  'C9/9#"90$!CV?2  !;/0: 1A&l !9--:#+0M6-X$+EX / >YEX+/+ >YEX/>Y++01.+32>73#4.+3!52>54.#5!$4I3&/ 3& ;1J1: :0 2A&n$4"$6$/;!  !;..;# 5F=,>/?/ܸ>и/"и"/-A--&-6-F-V-f-v--- ]A--]5EX / >YEX/ >YEX / >Y A]A(8HXhx ](и 2A22'272G2W2g2w222 ]A22]01"#".54>32232>73#.#"32674.'5!F*.R`uΙYSs2a0!  cG&NYYY)*8";;{YEX-/- >YEX/>YEX/>Y&+01!52>5!3!52>54.#5!"!4.#5!"30; " ;1J1: :00:!  ;0-9!  9- !;.:/;!  !;//;"  ";/%/;"  7-T.8 '-+EX / >YEX/>Y01352>54.#5!"3'1::10: :2 !;./;"  ";/j.;! !P&m+EX%/% >YEX / >YA'7GWgw ]A]01"#".543232>54.#5!P1: YEX7/7 >YEX/>YEX/>Y*"901!52>54.'3!52>54.#5!">54."#5!"  - :0N1991/9 IX\L0 y7mbT{ ?DM0 3-/;!  !;/.;#  ";/AR[VG=W\ !9*"3+EX/ >YEX/>Y01)52>54.#5!";2>77$8%%8$%8& 2&fJdI8 2)(2  2(_&1 /UD=0 +*+!*9*2EX/ >YEX"/" >YEX/>YEX/>YEX/>Y9 9!901!52>5#3!52>54.#5! !"309 tu 9008 7+ sm"0: 90 !:.\V/:!  !:.)9# !:.d/:! F'(/)/ܸ(и/ и/EX/ >YEX&/& >YEX/>YEX/>Y9901"#3!52>5.#534.#5!F0: \ :009 !%0#q 90e !:.70:  !:.'N.:! 5/J0/1/ܸ0 и /A]A )9IYiy ] "A""&"6"F"V"f"v"]A""]A""]EX/ >YEX/>YA]A(8HXhx ])A))')7)G)W)g)w))) ]A))]01#".54>324.#"32>HrrFKqoF 0JgF@aH0 0Hb@CeJ1 mĕWVnoSUt8tl^F))F^io43plbJ,(E]iq%"34/5/ܸ4и/ ܸ#A##]A ##)#9#I#Y#i#y### ] +EX/ >YEX/>Y/+и/(A((]A((((8(H(X(h(x((( ]01#"&'3!52>54.#5!24.#"32>%9bI A" :0L0991tEuK7Q43> -G2Sm@/;!  !;/0;" ?nd1W@& P%=O567/8/ܸ и /7и/A]A )9IYiy ]+A++&+6+F+V+f+v+++ ]A++]EX/ >Y2 +$A$$]A$$($8$H$X$h$x$$$ ]01.'&54>324.#"32>4aWL[m@R7JrpF 1IdCAdH0 1Hc@bK[e5]H-/Mh=AoSV~6socJ,)G^jp54pk`I+T-<=/>/=и/ܸ>!ܺ&!9.A..]A ..).9.I.Y.i.y... ]6EX/ >YEX/>YEX / >Y&93A33]A33(383H3X3h3x333 ]6и6/01!"'3!52>54.#5!24.#"32>9 ;0J1::1-_[R>$&C\54YEX*/* >YEX4/4 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и4/A//]A//(/8/H/X/h/x/// ]<01#".#"#332>54.54>3232>73#.#"6Yt>)RI<  .LkD%I9$/LbebL/1Rk;#E?4  *GdA"@30OdidO0CjJ(  aAlM+*?*,G=78>K[:?dE$ L]%?+EX/ >YEX / >Yи01.+3!52>5#"#7!h X[90P08 {0H1# P WY/:!  !:. (D3L4+,+6EX/ >YEX3/3 >YEX / >Y$A$$'$7$G$W$g$w$$$ ]A$$]01"#".54.#5!"3267>54.#5!L.: '[q}X5-,4 9iUE~3 :0k&=,`ir=>wo*:%%:*AGa9,0KSS0;" H&@EX/ >YEX%/% >YEX/>Y901#.'5!>54.'5!H 0$ #2%'# !&<&1s 0"6#R !  =vEX/ >YEX%/% >YEXYEX/>YEX / >Y990901"# #.#5!".#5!">54.#5!(4"  2*y# Ȫ ,A0'  !&/%9DrR!=0  " %]R8 K5 "!  HR[EX(/( >YEXC/C >YEX/>YEX/>Y (96(901!52>54.'3!5>7.'5!>54.'5!$ 091# "'H@75?L3%!'/+!&390$% j-C6/0:G.  =OVJ2  0;3''E4! 5AF=,+>HC7 .;!#H<)F7R+*9EX/ >YEX6/6 >YEX / >Y* 901"3!52>=.#5!">54.#5!F-@3) 90N08%,6")$%9B9( $e0?!}/:!  !:.4+ J]eU:;  7EX / >YEX/>Y ܸ 01)5!"#!!2>7T9I- `;N5$.L6?7O2?+//01%%)(O//EX/>Y013uBnF =+//01'7'7NXO)bj///901% #3\V\V{R +015!77V //01'&5432wD/(2*:27BRRH+7R+R иRAHH&H6HFHVHfHvHHH ]AHH],H9,/&ܸ7TEX1/1 >YEX/>YEX/>Y 191!A!!]A!!(!8!H!X!h!x!!! ]=A=='=7=G=W=g=w=== ]A==]B19C19M01%#".5#".54>754.#"#"&54>3232>732>7#)026:"'=*'@RVR 2*")&#2KX'AY6  "ZO7()'$d)!!((!0A&*F:/% #A3#/"&( /B*9YA@%3D--$ /1%2/3/ܸ2и/*ܸк9A]A )9IYiy ]/EX/ >YEX/>Y9$A$$]A$$($8$H$X$h$x$$$ ]-A--'-7-G-W-g-w--- ]A--]01#"&'46.#"'73>324.#"32>3]QE7 #/6>#DdA/J6+'$ S05H,uLnC4'@@/R 3'=axg,`Q5c"*YEX/>YA]A(8HXhx ]A]A(8HXhx ](A(('(7(G(W(g(w((( ]A((]01#".54>32#".#"32>7{ 0Kb;KoI$.VzL#RF0' " **2E*6U<*B3'6fP1AiBHf<*>)"(/(/JY*3n\;0?"3 /*=H>/?/ܸ=ܸи> и / 9=и 5A55&565F5V5f5v555 ]A55]/EX/ >YEX/>YEX/>Y990A00]A00(080H0X0h0x000 ]:A::':7:G:W:g:w::: ]A::]01#5#".54>32546.#"'7332674.#"32679 *eYEX/>Y +A'7GWgw ]A]%A%%]A%%(%8%H%X%h%x%%% ]01%#".54>32!32>7'4.#"0Ja9JqL&'OyQ>bD$#>_A(?1% %8''<+6cL.>fCKf=*Kg=8t_=-=##B3 3C#9/1f#+и#'EX/ >YEX&/& >YEX/>Y- +ܸ$и%01#".#"3#3!52>5#5354>32  &(1$'  "?4`-4$HlHB:)  *3*0<>817;4= %:)7/By\7!0-Ma|!q*+N+b+и/ANN]A NN)N9NINYNiNyNNN ]N9Aqq&q6qFqVqfqvqqq ]Aqq]>*q9>/ܸ>4и4/9*9>XAbbrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA bb)b9bIbYbibybbbbb r~EXC/C >YEX#/#>Y#C99#C9xAxx'x7xGxWxgxwxxx ]Axx]01&##"&'2#".54>7.54>7.54>32326324.#"32>4.'.'32>+/-Lb55%-I^b^I-$> ( ":,&3 #;-'2  doj# /;:4"[R9uI#:W;*#>3.L=, )971 /,& ,7?!:]@##SH0!3@ $RF.2?  #%"  ":/=>/?/7ܸܸ>и/ܸ+к,79*/EX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ],*901!52>54.#"3!52>54.#"'73>323"+ .+0,&+$!*  #09C%BI#(! +" H=)$",  + $!R5'=\n1+ / %I+и/и/ /EX/ >YEX / >Y01#"&5463252>54.#"'733/, -- -"*   !)" .," +,C +!q # T!+ - .} #+ и/ /EX-/- >YEX/>YA'7GWgw ]A]01#"&54632#".5463232>4546.#"'73-. ,-/ @hM.+$'!!  ! .,",,QC}a;'->@<:+ T  /C^ + &%/EX1/1 >YEX/>YEX/>Y %9'%901!52>54&'3!52>5464.#"'737>54&'5!23  -('-   #%+ 3,)$&, +    $1  0& "((!R^  .*$-/ +/EX/>Y01352>546.#"'7339$)  !-% /:9)Rm#0 ^ +8++X++DкE8X9M9X`EXC/C >YEXJ/J >YEXR/R >YEX/>YEX/>YEX1/1>YR A ]A  ( 8 H X h x ]%и%/>кEC9MC901!52>54.#"3!52>54.#"3!52>546.#"'73>32>323V(- -$1-(-')- .$1-'.'%)  !5:B'JU3:D(8H()$ 1$+;0"$1  1%+<0#$1 0!;;+T4*ME4)-H\/ 0=Ǹ>/?/7ܸܸ>и/ܸ+к,79EX*/* >YEX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ]%к,*901!52>54.#"3!52>546.#"'73>323'-,&2-'-'&*  3:B#8G(,% 1%@5"$$1 0!BB2T4*.K\/!03+J,/-/ܸ, и /A]A )9IYiy ]  A  & 6 F V f v ]A ]A ]EX/ >YEX/>YA]A(8HXhx ]'A''''7'G'W'g'w''' ]A'']01#".54>324.#"32>/X~OKyU//X|MK{W/ 0A+3B& !0A*6B$ fKi?=dFIg>7`!PQK;#3M\)!PRM<$3O^+@YA/B/ܸAи/ ܸ!к"9,A,,]A ,,),9,I,Y,i,y,,, ] 6EX / >YEX'/' >YEX/>YEX/>Y'9 A]A(8HXhx ]"'91и546.#"'73>324.#"32>(PwO.S"/(*0 ,7A'Db?y,M=.)# "?68L.sFpG &2 4)*% V;.?by0o`@#(+O=$3Pa3#4I5/6/ܸܸ5и/и/$и,A,,&,6,F,V,f,v,,, ]A,,]EX/ >YEX/ >YEX/>YEX / >Y9'A'']A''('8'H'X'h'x''' ] 1A11'171G1W1g1w111 ]A11]0152>5#".54>3267334&#"3267&,39@#Aa@ 1[T%L.(-%HR:O02O:-L 0$+4)?cw9NmA#0 8MX6Se01fS52 0P+&EX%/% >YEX,/, >YEX/>Y'%901#".#"3!52>54.'&#"'73>32) 2G'+  $-5$s*'& BA 1$ 04.  T6/ L#CD/E/ܸD#и#/и/A]A )9IYiy ]#=A!==&=6=F=V=f=v=========]A!==&=6=F=V=f=v=========qA==&=6=F=V=f=v===== rA==rEX(/( >YEX0/0 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и(8A88]A88(888H8X8h8x888 ]01%#".#"#5332>54.54>3232673#.#"#*BS)30+ "5G-+!5P\P5&>Q*&&% ,?*/'9UcU9-H4 )L;# &0A2-9M90E.  %E6!$2?/*7Q  S +/EX/ >YEX/>Y9 ܸи01%#".5#5>733#3267 -7 (5 m'A5)"( 6*3B#8GN$33(##0ø1/2/(ܸܸи1 и / (9EX/ >YEX&/& >YEX/>YEX/>Y9A'7GWgw ]A]-01#5#".54.#5332>74.#533275#4;A$8F' - -#0,' +  4+2N`-5"*38,# ' $!  $@EX/ >YEX#/# >YEX/>Y901#.'5!">54.#53   $F    !J" !N8vEX/ >YEX/ >YEX7/7 >YEX/>YEX/>Y99-901# #.'5!".'5!>54.#53N%/ "#& .*J!!(%  /#EF# sC$?0 >VaYE }! M[EX)/) >YEX?/? >YEX/>YEX/>Y )94)901!52>54.'3#5>?'.'5!#&>54.#53  #"$&  )% $/!F#!%&  (MD8 %- #/4/% $-1.$  (,+  081 172 >SW-$<EX&/& >YEX;/; >YEX / >YA'7GWgw ]A]1 &901#".5463232>7.'5!">54.#53 -YEX/>Yܸ 01732>73!5#"#7!5># +8"D3 #>2b 7,H/6̺3+A33&363F3V3f3v333 ]A33] 39 /A ]A  ) 9 I Y i y ]ии3#и .ܸ(/EX/>Y+901.54>54.'5>54.54>7H7eN/ 2>>2 0Pe4OY q^_p YO1Md9999!9+'*8!<<<8aI/aS444g"#i333Tay/"+/EX/>Y013yA}=/8к+A&6FVfv ]A]9/A]A )9IYiy ] ܸ и%и .и3)/EX/>Y)9015>54.54>7.54>54&'5=>1 /Ne6NZ 6L/^q ZN5eN0 1>^+9!9999dM1aT3335TC1"g444Sa/Ia8<<<!8*+//+ +01#".#"'>3232>7+*5@&/ZZY.0' )'3@*+``Z%1( ;.#)#*27 @3$+$&1DEX/ >YEX#/# >YEX/>Y  +++A++]A++(+8+H+X+h+x+++ ]0к192и 9к:9 ;иAAAA'A7AGAWAgAwAAA ]AAA]01%#".'#73&45465#73>32>73#.#"!!!!3267@NeDTrNqIjVOwZ?Z  3CR/NmG%8w /OqLV{57T9//EX/>YEX/>YEX/>Y01!5>54&#"#".54>32w3H+,% $0"0M;* !'/ ! *6L /EXH/H >Y01#"&54654&#"3##"&5463232>7>7>7#7>7>32 %  G# #-9G,#7! '/ !" "0E1%"  +DRNA1!TYVC)(&% ,=?MNca1@PUG. 3;/#/EX/>YEX/>YEX/>YEX/>YEX./.>YEX1/1>YA'7GWgw ]A]7015>54&#"#"&54>325>54.#"#"&546323H+,%  +$0#4H,,& "*<'0"0L:+! '. / ! +60M;* !'/ 0*/*6\ #EX/>YEX/>YEX/>Y A  ' 7 G W g w ]A ]и!01%#"&54632#"&54632#"&54632\/%%-/##11#%/1##1/%%-/##1?#33#$00$#33#$00$#33#$00L!Fk:2+A::&:6:F:V:f:v::: ]A::]5//D+ иD(и(/01#".'#.'>7#"&54>324.54632>32-!567 "(654&( 269+) 975 0#%3] dfec'*0"& #?>?$&:"!@?A"*h/{nV?+AVV&V6VFVVVfVvVVV ]AVV](?V9(/A((]A (()(9(I(Y(i(y((( ]ܸVкK?V9K/Qܸ и /Kи/(и? и /(0к8?V9(Fи^иVfиVnиVtN/EX/>Yy+[a+иy#к8a[9a=и=/[Aкfa[901#".'#".54>7"#"546323.'>54&'>7#"5432.54632>32#".'>32H/12*" 40-F'#./0 &$+ 111BB123+#( 211 $( 110 %#"&"101+ F877".7:;B% !6B>{0#BA986"00&49<!"" #6|A?z56+$//EX/ >Y01'#35`D%Kaw\;+L+X +b+n+A ]A  ) 9 I Y i y ]';9(;9-;9K;9A! LL)L9LILYLiLyLLLLLLLLL]A! LL)L9LILYLiLyLLLLLLLLLqA! LL)L9LILYLiLyLLLLLLLLLrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA! bb)b9bIbYbibybbbbbbbbbrAnn&n6nFnVnfnvnnn ]Ann]A&6FVfv ]A]@/J/EX/>YEX/>YEX&/&>Y6+Q+!к(&J9-&J9[A[['[7[G[W[g[w[[[ ]A[[]Qgи[q01#"&54>32#"&54>32##"'#".54>3232>734.#"32>%4.#"32>4&'.'32>D$4DS1g[7]yC#<,)OrHg[7\yB$=,JV&]3;6.5)1/%A6,0-E0":0$ )]ZR?%qd@hB.>#>yPqd@hB.>E#%%UUO=$%>P+YEX/>Y01 3}#)dc\%EX/ >YEX/>Y01#3))#be917PQ/R/Q и /Rܸ8ܸи/+и DADD&D6DFDVDfDvDDD ]ADD]EX/ >YEX/ >YEX/ >YEX/ >YEX"/" >YEX/>YEX/>Y*+ܸи1A11'171G1W1g1w111 ]A11]KAKK'K7KGKWKgKwKKK ]AKK]01)"#".54>;$3#.+32653#.+632>734.#"32>5;v;mw>@zrm 'D:PO$;-(?.>YE5<5?_D- .D]<9? WflR6B$ n?S-:#31/L9,H4+Jajm21jg]F*!9O._&>^ Js!/EX/ >Y01#".54>732632s$0#4H,,&    *60M;* '/ w/EX/ >Y015>54.#"#"&54>32w4H,,&  ,$1"0L;*! '. 1   *53?E///+и/%и%/8и8/;и;/01#".54>732632#".54>732632$0#3I+,&  ,$0"3H+,%    +60L:+! '. 0  *60M;+! '. ?/%/EX/ >YEX;/; >YA]A(8HXhx ]и0и0/3015>54.#"#"&54>325>54.#"#"&54>323H,,&  *$1"4H,,&  ,$1"}0L:+! '. / ! +60L;*! '. 1   *53NM +A&6FVfv ]A]+01#".54>32.>#$?..?$#>.$?..?$#>..>T +015!!T99T +015!T99P3//+ ии/01#".#"#>323267+9!*4,/%(*9$.,.%= ;/  !:*'%1P8E+ 2+++ !E+92OиO/+R///>/EX/ >YEX"/" >YEXN/N >Y9 9!97ܸFиG0152>5#3#52>54.#533#&3.#!5>5#"#7!$' """s(:E !7!/# -  &t ( &f% R&& *+L&  # ) E*&W^E3)-8PQ/R/#ܸ9ܺ#99Qи/#99#8иEAEE&E6EFEVEfEvEEE ]AEE]EX/ >YEX/ >YEX/>YEX / >Y.!+(A(('(7(G(W(g(w((( ]A((](993A33]A33(383H3X3h3x333 ]@и@/ LALL'L7LGLWLgLwLLL ]ALL]01#"&'#".54>32>32!32>7'4.#"4.#"32>) &=X=Al-zJMuP((PxPHx+%iE>\?b1Q:%9- } 3&"1 p,?,3; *<(3&D`9!0iV8-< A4 #6? RUR?'5OZ&OSQ@'1KY&^^F)&=8@W$ +A ]A  ) 9 I Y i y ]и/ и/ и"и"//EX/>Y01#".54>32#".54673V 2&DA   !}37 + c^0; 8+A88&868F8V8f8v888 ]A88] 89 //EX/ >YEX/ >YEX/>Y' 9+A++'+7+G+W+g+w+++ ]A++]3A33]A33(383H3X3h3x333 ]; 901#"&'#.54>323#".'32>7&#" 0Kb;4g5q(8".VzL!k5n+$' 8*B3'$2E*+6fP1 6GR[0Hf<&&-" (30?"u/JY*?~3-O\J@$+$и/$!и!/$=ܸ@CEX)/) >YEX/>YEX/>Y!+)1A11]A11(181H1X1h1x111 ])8A88]A88(888H8X8h8x888 ]!@иBиMAMM'M7MGMWMgMwMMM ]AMM]01%#".'#"&54632>54&'#53.54>32#".#"3#327&#"32>!6L1%@<8 ",.*G6! %GiC"D7""%',6  AGB}#& & +YF-#+,#4,8?  AAG%K&>u[7(9&(&.&(=J#8p6G+QON)yk# $-N#78/9/8 и /9ܹ$A$$rA! $$)$9$I$Y$i$y$$$$$$$$$]A! $$)$9$I$Y$i$y$$$$$$$$$qA $$)$9$I$Y$i$y$$$$$ r .A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..r//EX/ >YEX/ >Y3+)+01%'#"&''7.5467'7>3274.#"32>(`68c*5 %5*d54^(5" #>Q/1T?$$?T1/R=##" %5)a55e(7""7*d65a)X/S?$#>T00T>#$?SE+ии/,9BEX/ >YEX6/6 >YEX/>Y+ܸCиܸиCк,9>и@иCD013!52>=!5!5'!5!.'5!>54.'5!"!!!40z254  %N &+(  ( 3 R+;$"<-R8l5w'  ?\k_E} !*5x8F%+и//0133KKKRRuWmP],+@I+AII]A II)I9IIIYIiIyIII ]%I@9%/A%%rA! %%)%9%I%Y%i%y%%%%%%%%%]A! %%)%9%I%Y%i%y%%%%%%%%%qA %%)%9%I%Y%i%y%%%%% rA!]]&]6]F]V]f]v]]]]]]]]]]A!]]&]6]F]V]f]v]]]]]]]]]qA]]&]6]F]V]f]v]]]]] rA]]r]6и6/Qи/IFиF/iиi/@o /EX;/; >Y01#".5463232>54.54>7.54>32#"&54654&#"%>54.-<$$7 :N/$D4  /&9VeV9-<$!":N+%F6  % .&0#9UcU9*.;<8* ;T\j+K@5&`8.O9!-=&)(*",1QLLUe?+J?5.25,M:"+>('"$( #01OIHSc"*1'?6/-,"*21ZQEP +и 01#"&54>32#"&54>32 / - - / / , / ,3b'O +H0++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArAHH&H6HFHVHfHvHHH ]AHH]EX/ >YEX/>YM++A]A(8HXhx ]#A##'#7#G#W#g#w### ]A##]:A::]A::(:8:H:X:h:x::: ]C01#".54>324.#"32>#".54>3232673#.#"327bSqqÐSSqrĐR/LgfKKfgL5[H_7Y5$945$995$901#"&5#"&54>754&#"#"54>3232>75!67<9#!+!6AYEX/ >YEX/>YEX/>Y01 3! 3)+%)dcdc1 GEX/ >YEX / >YEX/>YEX/>Y01#3 #3))%++)bebe;^q#+/+015!5!7#Z=! +015!=!pp3b'O] ++8+EP++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArJ 9APP]A PP)P9PIPYPiPyPPP ]+XEX/ >YEX/>YA]A(8HXhx ]#A ##'#7#G#W#]A g#w###]A##]03и>J93Nи>UиU/01#".54>324.#"32>#3!52>546.#5!24.#"2>bSqqÐSSqrĐR/LgfKKfgL9  #'PA).=!.*8 !#M@)pÑSSqrÏRRrgLLffKK2  &&)@-&8)("6% 5P +015!PTTP +015!PTTJ-'ٸ(/)/ܸ( и /ArA! )9IYiy]A! )9IYiyqA )9IYiy r A!&6FVfv]A!&6FVfvqA&6FVfv rAr#++01#".54>324.#"32>,;##<,,<##;,;&&&&";,,;"#;--;#&&&&){ V+и/EX / >Y +и и  01#!5!3!5!\q\{ ] ]\\( +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r*"++01!5>54.#"#>323:>73OIMK;$(59Q kX#K>'"8GHD)&#9AILN& 1"17YU(=)"IKHB7)}<3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/EX./. >Y'A'']A''('8'H'X'h'x''' ]8.901#".5463232>54.'5>54.#"'>326Tg2 *)#&*1'&=L&;1",-FcE<2 #1$T;R3   -.<"#2!' (#;F/"(# '3X //01#7>32  >/   ^1Aڻ'+74+4 и'*ܸ7CEX(/( >YEX5/5 >YEX/>YEX/>YEX/>Y (9/A//'/7/G/W/g/w/// ]A//]/9<01%#".'#"'#".5467>5332>7332>71"7(+5YEX/>YEX/>Yܸи01###.54>3!Z78Gd<7]{Et#AlRLlD)3P / /01#"&546323%%33%%3&22&%113PV /EX/>YEX/>Y901#"'732>54&#"'73>32V(?1/ ( @7'  .$$1 1"d (}+//0152>546.#"'733% $%Z "H%+  +,/-/ܸ, и /и/и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r "A!""&"6"F"V"f"v"""""""""]A!""&"6"F"V"f"v"""""""""qA""&"6"F"V"f"v""""" rA""rEX/ >Y'+01#".54>325!4.#"32> =[=4W>#!>Y96X?")^(9$,$):$,7(RB)#YEX / >YEX/>YEX / >Y+к) 9*01%#5!533#352>546.#"'733%3K 1RJF   ٠7l?{!b " J$}'(,FkG/H/ܸи/ A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rG3и3/!39,39@EX+/+ >YEX>/> >YEX/>YEX)/)>Y+!01!5>54.#"#>323:>73#352>546.#"'733?A>0 -4B+>(#@0;T^#$ IH   :BHLM&1&71%?/+<&5ni_% }{!b " J$% IL׻B1++A!BB&B6BFBVBfBvBBBBBBBBB]A!BB&B6BFBVBfBvBBBBBBBBBqABB&B6BFBVBfBvBBBBB rABBr&1B9&/JкK19NEX / >YEX=/= >YEX/>YEX / >Y+!+и=4A44]A44(484H4X4h4x444 ]G 9J 9K01%#5!533#3#".5463232>54.'5>54&#"'>323L!3RLF'BX2 %#!#+ 1C'4'6/(:'3#4(7;۠7l?H6Q6   !++;%&2-<, 0$ /&$ P:dG/+A//&/6/F/V/f/v/// ]A//] /EX/>Y4A44'474G4W4g4w444 ]A44]01#".54>32#".54>7>7332>54.54>324"#EfB=hK*#)(;( 02 !3?$6#  %0   *O<$ >X8+J>3-GFO4ZS5<>9O2##"  . Je&%DJ Je&%HJ JT&%j9@ J?&%x*J J)&%9@ J|&%]J2NQ?+?.иOEX5/5 >YEX%/% >YEX/>YEX/>YQ+0=+%-ܸG01)53276=!!527>7>54.'5!#.+32>73#.+;2>73 !%>^ I! #8 2(F  (E9,<&";1 @\E6D%\֯'8'  '9(D6J  5A% l#8)-:! , 2L67&'!e&)DJ!e&)J!T&)j@!)&)@'e&-DJ'e&-JT&-j@)&-@3-4/5/ܸ4 и /иA]A )9IYiy ] ,ܸ'EX/ >YEX/>Y +$A$$]A$$($8$H$X$h$x$$$ ](и *и/A//'/7/G/W/g/w/// ]A//]01#!532765#5354'&+5!24.#"!!3>@ؘ6&C 8&r9`E&=m\!L-+0P Xm>lQ*XJV] 6VsXjv? VL ?wF?&2x&J5e&3DJ5e&3GJ5T&3j8@5?&3x)J5)&38@h ////01% ' 7  --+h+--7 '5W6/7/ܸ6и/%A%%&%6%F%V%f%v%%% ]A%%]'9(A((]A (()(9(I(Y(i(y((( ]-9/// / A ]A  ( 8 H X h x ]' 9- 91A11'171G1W1g1w111 ]A11]01#".''7&54>327&#"4.'32> Qb%RQN#`-dNjc-g)9$W^~L7Y 4tEFyZ4vǑQ )y${nQqz!}+U\dUQ'EHO0J:3oLe&9D JLe&9NJLT&9j?@L)&9?@Fe&=GJ!5EɸF/G/ܸFи/ ܸи/ 'и'/ ,и6A66]A 66)696I6Y6i6y666 ] ?EX/ >YEX/>YA+>ܸ.ܸ@01+;!5327654'.+5!#"324&'.+32>!-%.LuZ6? LH 8* 9D^E24G+*&=3$"KiB9b%!._ *[X   2$mM7]  =#>T1Fպ-4++A]A )9IYiy ]ܺ"9"/A""]A "")"9"I"Y"i"y""" ]?ܺD9EX/>YEX-/->Y:'+01#"&'&6322654.'52>54.#"#5>54>32#B^;?P! 2>6T9&<*'5 3$' #DdB@wZ6D6$  !efM}Z4+0N:3H.4_K 6+1\R'$@[6;607&ED*7&Em7 &Ej^7&ExO7&E^72&E]7DOdM[+7+6E+A[[&[6[F[V[f[v[[[ ]A[[]([9(/ ܺ0797OиUкV696fEX-/- >YEX3/3 >YEX/>YEX/>YE6+-A]A(8HXhx ]E%и%/0-9JиJ/V-901%#".'#".54>754&#""&54>32>32!32>7'.#".=2>-D\=469!3BP-#=.(Xe<418%>`B^^%bCpQ'** 2>By%25(\ *WE, ,$/3_I,0+)'/@$4LAA(ESC/"'/+<2 3(3(]v%"D>0E,-D.,39C$0@+0% 3{&G9&IDQ9&I9 &Ij9&I&D/& &j&31*>?/@/ܸ? и / 9 95A 55&565]A F5V5f5v555]A55]и/5 и /+A++]A ++)+9+I+Y+i+y+++ ]$и$/& 9 /$/EX/ >YEX/>Y0A00]A00(080H0X0h0x000 ]09 9& 9:A::':7:G:W:g:w::: ]A::]01#".54>32.''7.'774.#"32>.W~PEwX2/UuE"F+".\1ElJ&9P0!=/;R3#<,eHjA6_LHg>>n2g*c !:#h*b>Va5>gMKa8=_&Rx3&SD[3&S3 &Sj3&Sx3&S)w#g+A&6FVfv ]A]и //+01#".54>325!#".54>32?2&!!&2{2&!!&2%3 !5]]%3  3!/<=/>/ܸ=и/и/ и /,A,,&,6,F,V,f,v,,, ]A,,]/90A00]A 00)090I0Y0i0y000 ]29 //EX/ >YEX!/! >YEX/>YEX/>Y'A'']A''('8'H'X'h'x''' ]/ 92 98A88'878G8W8g8w888 ]A88]01#".''7.'4>327.#"%4'32>&*)UV535e#j ,W}Q644d"&')%@.d$',$>-O3uB@nG "t!x:AB?kC o ". >cG.c4cYe#/ ?h&YD]&Y &Yj&Y&]1.FTG/H/ܸGи/ ܸ$к%9/A//]A //)/9/I/Y/i/y/// ] 9и =и=/#/EX*/* >YEX/>YEX/>Y #9%#9*4A44]A44(484H4X4h4x444 ]BABB'B7BGBWBgBwBBB ]ABB]01".'!5>54.'.'73>324.#"3>-RuH'&(/)(0  $#56:9_D&0D*#0$'5!*D0sQk> )2  4."( U.>&4[|BoQ-)%*6'&Hg&]/-+EX/ >YEX/>Y01352>54.#"'7339"*   !)" +!q # T!+ ';&2>JVbn!+A!&6FVfv]A!&6FVfvqA&6FVfv rAr'и!-и3и!9и?и!EиKи!QиWи!]иcи!iиp//EXf/f>Yf9 f9f9f901.''#'7'>7'77#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546323`6 5`26pF!Fp8"!!!"1>  >1X          'y)5AMYeq\$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr*и$0и6и$<иBи$HиNи$TиZи$`иfи$lиsEXi/i>Y+012.#"&'.5>#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546325VH;;BL00LB;;HVVy$--$          d//9015FdF//9017dd=! +015!=!pp=! +015!=!pp`,+/EX/ >Y9015#335Bk)BdF#EZZ`)4+ /EX/ >Y901'733BddB)ZFZZEZ- 1+ // 9  9013#53#7>>FZZ))ddo*6BNZ` +A!&6FVfv]A!&6FVfvqA&6FVfv rArи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR9015#535#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632BdE'FX          Z*6BNZ` +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR901'73#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632Bddp=EZXF'           #/;GS_k *6BNZfr~[+++ArA! )9IYiy]A! )9IYiyqA )9IYiy r9/ܸ и /ии$и$/0и6иHиNи`иfиnиn/uиu/иии/и/A6FVfv qA&6FVfv rA ]A&6FVfv ]A]A&qArиииии/ии и /+и1иCиIи[иaиsиyк999EX/>YEX/>YEX/>YEX:/:>YEXR/R>YEXj/j>YEXv/v>Y +++и и'и -и?и EиKиK/Wи ]иcиA'7GWgw ]A]и ииии иA'7GWgw ]A]ииии/иии/!и!/'и'/.и./@иFи@Xи^иXpи|к9и/901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%"54;#"54;2+32##"&54632#"&54632+"54;5#"=46;2+32#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323        +  @    X   )) f ))     `       }    { {    X   +y- ym  =  +        7j          /               o     /   ^ww / R  2        q #/;GS_k~ %1=ILi||+e++ArA! )9IYiy]A! )9IYiyqA )9IYiy rZe9Z/iܸ и /ииe$и$/0и6иHиNи`иfииA!&6FVfv]A!&6FVfvqA&6FVfv rArииииiи/ииeи/ииии&и,и>иDкJe9Ke9Le9ZSиS/iaиa/}9~99EX/>YEX/>YEX/>YEX/>YEX/>YEX5/5>YEXA/A>Y +fP++K+и и'и -иK9и9/?и EиKиK/Wи ]иfcии иA'7GWgw ]A]и иA'7GWgw ]A]иfиPи/Kи/ии/ иfи #и)и#;иGи)UиVиWи^иcиPlиl/Psиs/yиy/}9~и~/Pf901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323+"54;5#"=46;2+32#"/##"=6323        +  @    X   +x0 wm}    }    }    { {    X    =  +        7j!  I +y- ymw7j          /      ww /      o     /     2          ww / %h +015!%C@@DD #/;GS_kw--//EX!/! >YEXu/u >Y01#"&54632'#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632'#"&54632D          `  H  `          #  L    Vo       oV    L T&l &m X&mP/EX/>Y017#"54654.54>7   +6;0 9-r`A<,9ZH&oZQH&oP&nC &q3 b&m3 1=u(+A((]A (()(9(I(Y(i(y((( ](9-//+-901%#".5463232>54&'#".54>32'.#"326 1CQZ//UA''( 2d\O;")!,/0)w    }=vY5  'BXaf.!  ,'\Q6)Qw+3d&n3&rB3 &t13B&s3!&u3 &w3 &x3I&y~{3&c~3&f3 &_~w] &_~L'V-q'/)/EX/>YEX / >YA'7GWgw ]A]01%#"&54>3232>7.'.54>32' QU37 $b]I ?T[" EhF$"!6( -3* 0Q>'-.$WlzL']&_7 L'&kQ#L'V&t7L'V&_7DL'&'kQ#_7DL'p&c7L'V&c79L'&f9mL'"&h8L'&j9iL'&y7LC'&'kQ#e8L'V&v<*qX+ /'/////01%#".546323267>54.54>74G'64.>5#"# 9JBF 15qj]   DE>p%@E; &)!"MLKqa&"_uqQ&"k'q&"uz,X&"tTX&"_ucX&"uzX&"'_u_@qt&"cuq"&"fwqq &"jwmq&"evfq&"mv7>7>32.#"32>32.TuG>~b_qyoZ $9IKF0e\L #  &$(4F1+=FI;%;i_xO u "  CCA6* %3F59:+/:91) &( &;KIB  %  ;c&4m5q&8m5{&8cT5{UѸV/W/ܸV"и"/0A!00&060F0V0f0v000000000]A!00&060F0V0f0v000000000qA00&060F0V0f0v00000 rA00rFAFFrA! FF)F9FIFYFiFyFFFFFFFFF]A! FF)F9FIFYFiFyFFFFFFFFFqA FF)F9FIFYFiFyFFFFF rP/5+01.#"#".54>3232>54.'.54>7>32!"$`W<-==-% .%/vNK|Y0!'#$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA%VVP=% :Sa,AW4'$ -"?CC5' 5s&8n5{85 &8u5^{&8e5F{&8hV{`۸a/b/ܸa"и"/'"9;A!;;&;6;F;V;f;v;;;;;;;;;]A!;;&;6;F;V;f;v;;;;;;;;;qA;;&;6;F;V;f;v;;;;; rA;;rQAQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ r[/@+01.#"#".54>7"547>763232>54.'.54>7>32!"$`W<,;>-% .%/vNK|Y0!"N0 ;g5$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA"POG  ;0:Sa,AW4'$ -"?CC5' 5{8V8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr4/# +01#".54>3232>54.54>7 0'9Tdj7#   !7IQU'Jj>  R=?; 6&:W9LB, &"6(&)+ $$ "$ 053V&@_V&@c(V2&@fV&@k7V&@evV&@eV&@'c(tcV6&@hV&@hV0&@j}V &@jV&@iV2&@'f_V&@fV&@'c(fVq&@'_ cV&@vV&@u<+)&T_9+)L?+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r?и/%//K/F+%901#".54>7.#"4>7>327>32#32>321K[S@ JqR/2\P -0* "T  2=-[Z[-,X*"_+3vukS14ZwA%VRG  $=[{R]t.       &;OcuCNuU7! +)&T_ A+),&Tm m+)?&Te +)&Tc 9+)&Te 9+)S&Tf +)&Th+)&Tj9+)&T'_ Ah+)&T'k%Xh+)&Td?+)&Tk(+)&T'k%X_9+)&Tk%X+)&Tc I+)&TfPi,+A!,,&,6,F,V,f,v,,,,,,,,,]A!,,&,6,F,V,f,v,,,,,,,,,qA,,&,6,F,V,f,v,,,,, rA,,re/1+01#".'+#".54>3232>7>54.54>3>76332>54.54>321",! %09!hF:^A# (%2IS +ZTH5% &L?, #++    3ME/4. !+$$iH(DY10bO2$7G(2C( #bJ/B-"&' 6G' )  &+#!#Y&ef&e'_G_g&eh^Y&e'fh^Y&e'f_gy&egR&edOW&ejE&ee_p7*+A!77&767F7V7f7v777777777]A!77&767F7V7f7v777777777qA77&767F7V7f7v77777 rA77r<%+[e+j+и/jQиQ/jVиV/01.54>7*.'#".54>3232>7>54.54>3227>324.#"2>Eo.   hF:^A# (%2IS +ZTH5% (0. %mE%3 J#00icU7tnbI+T>aI2 $*)   !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'6pK /6T !;S2!"&o_D&oc;V&of&o'_D_;$L[{> + 9и9/A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r>CиC///EX/>YEX / >YHR+ A'7GWgw ]A]и/C/9W01#".'.54323267>54.'.54>32>324.#">HxO+/$ +)+Dh%     2hd]&$6%J'.)[]],w8\@eM6"!($&*)$ 5TLJ*,TH6 +)$,%"Qeo18>=3[D(*7^ 1WE.4+&t_&tf"-3_R +A!RR&R6RFRVRfRvRRRRRRRRR]A!RR&R6RFRVRfRvRRRRRRRRRqARR&R6RFRVRfRvRRRRR rARRrRи/ /#//^/Y+ 9, 901#".54>7.54>7>32#"3267>3232>321K[S@ oԧf+CP%=5$$&!  X<$1):?!5::."6"Pd94ZwA%VRG  $]zNn""/Y!A!!'!7!G!W!g!w!!! ]A!!]-<901#".54>3232>54.'#".54>32'.#"326P@;08~jF$"8IPP"kθq? E )! #&"!  /  "QiA:(9\D1WA&,?+1&0;:2+< - 189-(52ej  X$P&_NxX$P&'__NxXP&fX_P&hOoXP&jXP&cNmXcP&fPuZ;IA +0+A!&6FVfv]A!&6FVfvqA&6FVfv rArA00]A 00)090I0Y0i0y000 ]*09!+7-+*-7901#".54>3232>54'#"&54>32'.#"32> * [oFDtT/  $C_:2jf\E(%N&5B $*<8(#!+?;-O:!>]?$PME5/EQ$5N3%38+)A4:=:.2^Q  uZ&c[uZ&_SuZe&fN\F:d4++;O+A++rA! ++)+9+I+Y+i+y+++++++++]A! ++)+9+I+Y+i+y+++++++++qA ++)+9+I+Y+i+y+++++ rA;;&;6;F;V;f;v;;; ]A;;]4f0/EX / >YA'7GWgw ]A]@E 0901%#".54>7632>7>54.54>7#".'>54.54>7\ FlSEgD" 7dO?tX  %   N,;!)*( IC0(1(,=% ! %690 '&"   yv ##o-%Up%=3    !FF>  N\G&_N\&fWN$\F&h4Hy^1"+A!11&161F1V1f1v111111111]A!11&161F1V1f1v111111111qA11&161F1V1f1v11111 rA11r/\/6+01#".54>323:>7>54.'.'.5467>7>32 [ktodL,!5D"!=.mx`( '\plnG'4 ,253,  P\c_T NQ?'  &*,,(" %>JU.K[1:]D&/3+" 1L3 11, *)-9 331*! Hy&tcHyv&}Hyv&'}tcHy&~H^v&'}c)Hv&'}e*nHy&Hy&_#9HyK&f%H&f+edCD/E/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rD'и'/8'9@A!@@&@6@F@V@f@v@@@@@@@@@]A!@@&@6@F@V@f@v@@@@@@@@@qA@@&@6@F@V@f@v@@@@@ rA@@rEX / >Y.;+!+ 012#!"&'.54767!2>54.#!".54>32.#"3}5'?mTnV8]B%!--,"&@U]_+ $ -_N22""6&KyU-73 "-##5#4aVG3 %"4C$ &NPF+A!&6FVfv]A!&6FVfvqA&6FVfv rAr9/  +01%#".54>3232>7>54.'.54>7 -##DKW6(YJ1 ($ *@N%5m^I     (  yEC>% 4O67>7.#"#"&54>7>32 ;Fl55(   ,) 7U>     $/G@+!";#8RehdO3W-#,(6)  ).DN&1C&5467>7>7>32#".'#"&32654.#"8L9."P+ #).00  *$;806Kb? ,1" f N>9@A4!.97. G?, '  :  -*"D}&_'D}&_Q`&&_`&&'__`8 +A!&6FVfv]A!&6FVfvqA&6FVfv rArEX4/4 >Y+01#".54>3232>7>54.'.54>7 B^xJ3aK.!-ES'#QPH  % - '(D#2W@%=]@)aT8"6C$-C,#39;;*A!$,jlg`&k`&&'_tg`&f6`&&'_c`&``o&a!Z0AU)*/ / *9 *9; *901%#"&'#"&5463232>7.54>7.#"&54>32.'32'4.#">+5<}?1i*PF $,./""%  !GNM=&) '02  ;C=  " AH$*:  $>?8 +'%>PVW@74, ('% # !&yYL!ZL*Z +A&6FVfv ]A]/EX/>Y01%#".5467>324.#"32>8P3#6$# $F8";&6;  '/)5YA$/?%b?8+/NcO(#&,  L&cL&mLL&mL&cmK///'6+01%#"'&546767>7.54>32#".#"3267>32 $:I'&F7"/6F)#06; !(%,)#!'$$  !$;@@2" !#  &=q&&J} EX/>Y01#"&5463!2#"(''(3{V`BH+AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rH и /bR/EX/>YEX/>YEX/>YER9YR9\R901#""#".67>7>7.'#".'.54>32>54.54>724'2>3( ! '>4,%4H0Vck6   ( X{j0  0%' qV2{> -2- ,.#'.' FIA7  @+," TXK.-+ +.+ #l +8 T&uM3&_1QC&f+3{&h;&kH{&s H&lu&mP^&mP*/EX/>Y#01!".'.'.54>32;2#R!=1!   %&%%& &B5(grv7/VJ:#& 8a '(N&oW&oP&n&q7&mv?7Z:E //EX/>YEX/>YEX/>YEX!/!>Y +!-A--'-7-G-W-g-w--- ]A--]23и4и;и;/01!*##".5463232>7.54>32;2#'4.#"#  +7 5f6NF0!&+YVN@+0O9!#, 1'&%%& A"Y^\%;2 4FT\0 % /68-/DM'(!7&nw7[&r7Z&tJ7Z&se7&uz/7R&w;7L&xzj7&yu7w&cu7%&fwt7d&_uaZ&_u=QB6./EX/>Y +.9;01!".'#".54>3232>5.54>32;2#4@+ . -l86, 0#.ZF, :%&%%&4O6-C  $*-#   !@9/[TJ ') 1noiYB'(=Q&_=Q^&k=1Q&t"=Q&_L=Q^&'k_L=Q&c=Q&cA=Q&f=Q&hp=Q&j=Q;&y=KQ^&'ke=Q&v2P?79 /,////EX/>YEX/>Y01!"&##".5463232>7>54.54>73;2# -"&dEE<)  HPR(!+  1 %&%%&*SRQ*.: $8( @5%#&!$"('(P?&_[xP?"&kuP?&u`?&tChz?&_[D?&u`z?&'_[_P?&c[P?&f]P?&j]P?v&e\P?c&m\P?&dcP?&g]P?&b^xP?&y[|P?&s@]')}U0L/S/EX-/->YL -&01#".'.54>7>7>7>;2+"32>32)&-5%6+^V'();BB    ')&mV&mV}&c!V}N *+A!**&*6*F*V*f*v*********]A!**&*6*F*V*f*v*********qA**&*6*F*V*f*v***** rA**rD/G/EX/>YEX/>Y/+01!#"#".54>3232>54&'.5467>7>;2#?"*!:3"3Uoww3LxT,&# ?cw9P^aO3?B=3  %b9'%&%%& ) ,+MA3$)LlD7oY8)AP*JW. 5AK'(V&nAV}VN&uV+}&eV}&h#}Y5+A!55&565F5V5f5v555555555]A!55&565F5V5f5v555555555qA55&565F5V5f5v55555 rA55r!59O/R/EX/>YEX/>Y:+01!"#".54>7"547>763232>54&'.5467>7>;2#u?"*!:3"3Uoww3LxT,  W- ;g1?cw9P^aO3?B=3  &a:'%&%%& ) ,+MA3$)LlD;95  60)AP*JW. 5AK'(V}P8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//EX/>Y! +11901!".'#".54>3232>7>32;2#H1' !zXqA  =qaT'   B#'&%%&%%@/ CgF'O@("*3R8 +'(P&_CP&cP&fP\&kP&eP&eDP&'ct3VP&hnP&hDP&jP&jEP&iCP&'f_CP&fEP&'cfEP&'_cCPo&vHP9&u)'(&_)'(k_+A!__&_6_F_V_f_v_________]A!__&_6_F_V_f_v_________qA__&_6_F_V_f_v_____ rA__r_"и"/,//i/EXM/M>YEXO/O>Yd +O1A11'171G1W1g1w111 ]A11]O196и6/MFZO1901"#".54>7.#"#"5&>7>322>32#;2+"&'.54>732>32&;HD6 %! <}wiO.2^U,a"$$ '5:(TY[.,00"Q#DtZ%&%%&%?Kt'(!dRD1gW;";Z}SR}.  "  ) '( 2 ! X|QRc7  )'(&_=)'((&m i)'(;&e )'(&c)'(&e)'(O&f )'(&hv)'(&j)'(&'_=hv)'(&'k"Thv)'(&d")'(&k")'(&'k"T_)'(&k"T)'(&cE)'(&f3i.!+A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..rM/Z/EX/>Y3+HAHH'H7HGHWHgHwHHH ]AHH]UU9и/ H9&и&/EZ9Hbиb/cиc/01!"&'#".'##".54>3232>7>54.54>32>3232>32;2#f3K#$,"( %1&hF:^A# (%2IS +ZTH5% DU4 $-#0%&%%&RN1$ & !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'/8/ $+$ .- '(&+f4$&+'__ =&+h 4&+'f4h 4&+'f4_ =&+g;&+d&+j0&+e)l}6)+A!66&666F6V6f6v666666666]A!66&666F6V6f6v666666666qA66&666F6V6f6v66666 rA66rEX/>YEX/>YEX/>YEX/>Y;$+Zr+SASS'S7SGSWSgSwSSS ]ASS]S9PAPP'P7PGPWPgPwPPP ]APP]Sbиeиe/fиf/wиw/01!"&#*#".54>7".'#".54>3232>7>54.54>327>32>;2#4.#"2>HuwYEX/>Y@[+ A  ' 7 G W g w ]A ]и/;)9J 9MиNиOи`и`/01)".'.54323267>54.'.54>32>32>;2#4.#">++/$ +)+Dh%     2hd]&$6%3H+Dw#'&%%&'.)[]],w8!($&))$ 5TKJ+,TG6+*$,% /-Qfo08>=3[D(*8'D<2 '( 1WE.4+&:_&:f-J>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r/C/H/EX3/3>YC'C93,01#".54>7.54>32;2+".'32>323M\R=E~lP-/Ph:+&4L23K1 '6>I-%&%%&%-JP]@7q[9Sԁ+TMA  !;`^Ns0  34')' & '("HAVj|EX]0-&=_u-&=fw-&='_u_u~-&=cu-&=hv=-&=evZs &E_Zs H\+A!&6FVfv]A!&6FVfvqA&6FVfv rAr2/EX/>YEX!/!>Y A!HиH/01!".##".54>33267>?.54>32;2#4.#">4YC)PY?qJ#  '>OQKXS/[&%*+-&  -3&&%%& &$ "$$E6!:fOCE5 #&%%9)$ "*YEX,/,>YEX./.>YEX1/1>Y" +1;A;;';7;G;W;g;w;;; ]A;;]@A@@'@7@G@W@g@w@@@ ]A@@]CиDиKиK/01!##".54>3232>7>7""#".54>322;2#'.#"H4  \vN+WD+#,%  -H[.-b_T  2)*6(   %&%%&#'))(0WB( >[:AoP- ';K'0C+"0$$" "LI5&8@'(y  #sG&Mc#s4&M_#s&MfDH{T#+Uk+A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##rAUU&U6UFUVUfUvUUU ]AUU]_U9>/EX/>YEX(/(>YZܺ(Z9(M(TиT/_>901!".'#".54>3232>7>54.54>32;2##".'>54.54>7/<& vlW]0 0YN%bmqgW'!   ,$'&%%&\-% !  $ &=L&..) A4!9\D&/3+" 1I0$W.3oO%"muX1I0'(>3!     FE?  H{&Q_'H{&Qf)H&Qh% H_ p* +A!  & 6 F V f v ]A!  & 6 F V f v qA  & 6 F V f v rA rEXO/O >YEXR/R >YEX/>Y% +O9i01!".'#".54>3232>7>54.'.'.5467>7>32;2#0GM_Hmx`( '\plnG'4 ,253,  P\c_T -57.  ){MM=Bp`R$$&%%&)Ha8!K[19^D%/3* " 1L5 11+ +: 430*!  '! ,6<81  &\03bM.'(H_ &UtH_&U}H_&U'}tH_&U~H_&U'}c,&H0_&U'}e-H_e&UH_ &U_#H_&Uf%H_ &Uf.dTeU/V/HܹArA! )9IYiy]A! )9IYiyqA )9IYiy rH9U(и(/9(H9AA!AA&A6AFAVAfAvAAAAAAAAA]A!AA&A6AFAVAfAvAAAAAAAAAqAAA&A6AFAVAfAvAAAAA rAAArEX/>YEX/>Y/<+E"+A'7GWgw ]A]и/ииMиN01!".'#!"&'&547673!2>54.#!".54>32.#"3!2;2#,:$0|nV ,("F8]B%!--,"&@U]_+ $ -_N22";P /('&%%&3@"V^73 "-##5#4aVG3 %"4C$ &?H0M6'(T4U/V/ܸи/ и /Uи/#A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##r7A77rA! 77)797I7Y7i7y777777777]A! 77)797I7Y7i7y777777777qA 77)797I7Y7i7y77777 r-и-/A/EX/>YEX/>YEX/>Y(+MM901!".'#".54>3232>7>54.'.54>32;2#9!+  /ĕ2ZC(%#'@U-&`\N    (%&%%&$8l8I(mn:bI.bQ5):D0C+#/ dJN}@+)3Vso) $'( &auR&a_M&afOU&ahe/&akg&asZZ?1M!H0#/:/EX/>YAA9 01!".'#".'#".'.=4>7>32;2#,F>: 0$?1     !B:"(;WtL%&%%&  -*,!3KT +!Yq|pW"*9!FT[O< #'XVQ %*%'(?QZ///=/EX / >YEX%/%>YEX./.>Y%+%901&5467>7>7>32;2+".'#".'#"&32654.#"8L9."P+ #).00'%%&%%&%'';806Kb? ,1" f N>9@A4!0EL&'( ," '  :  -*"?1M*&h_?1M!&h_u T&n_ T&n'__Y E +A!&6FVfv]A!&6FVfvqA&6FVfv rAr7/EX/>YEX/>Y$ +01!"&'#".54>3232>7>54&'.54>32;2#\#    7fo6_G*")%2Qg68hZE  &%&%%&#\_Y!63%#YEX/>YEX/>YEX/>YZ +;6;9K.901!"#".'.'."#".54632>7>3267>;2#4&#">4.'32>0l3  &:)'#  :0 FHAILK  UO85-a"P&%%&1,$ -L8 :Z?(7!  '#MB+#+ IA2   NrE*.X3  '(1&3IR1/)./.' HA- zX&yy`9m{ruzARf=//EX / >YEX/>YEX/>YEX"/">YEX%/%>Y=9*=92=9L=901%;2+"&'#".'#"&5463232>7.54>7.#"&54>32.'32'4.#">%%&%%&%&- (!DB=1i*PF $,./"!&  !!UWO '02  ;C=  " #> '(  *:  $??7 +'/Lb74, ('% # ~9m3Cj/EX/>Y9 A  ' 7 G W g w ]A ],и-01!".'#".54>7>7.7>32;2#.'326&4&$) 21%%"L%    "%&%%& %:&!+( !,QC  /67#4 %/'4-`T;  '(H (' 9&{c5-9&{m6Q).//EX/>Y+"01!"&'.#"#"5467>32;2#))  9.#   &9L0%&%%&"  "9I'  8t^<  "'(&~m&~c1UaKP//EX/>YEX/>Y P9HP9Z01!".'.'#"&54>7>54.#"#".'.54>32654>32;2#/9" (2E3 9HPG7 0K^-'E4)@MI;   "/  art/$0#,  !1(%&%%&/>"'`jp7sm3  $141, PSO=& ".# '%0Nc2&FB?o .'>jPYEX / >Y 9 и!01!"&'.'+"&546;2>32;2#V& $,7%%&%%&%DQ0 '&%%& )&(')1)" '(&_L&c&fb&k&eK&e@&'ct&ht3&hC&j9&j&iA&'f_L7&f7&'cf &'_cA&v2?&ul&_Lla}7/EX/>YEX/>Y(+(AиA/ #(9A-и-/ NиN/Zи[01!"&'.5467&+"&546;2>7>7.#"#"54>7>3232+;2#}# >hZM$$CGK+%&%%&%2RH?$F&@LT($#0SXX#(DJW;#->BB%&%%&+&&'('   '" '&  '(l&_lj&m l}&e l&cAKl&e l&f 3l&h C9l&j 3l&'_h C3l)&'k"h Cl&dGl&k" l)&'k"_Ll)&k"l&c7l&f QM1/>/EX/>YEX/>YEX/>Y9+99 99,ии/,FиF/GиG/01!"&'#".'#"&'+"&546;2>3232>3232>32;2#5R %,!( &]J0K&^4%&%%&%,@. )"DU4 $-#1 %&%%&YE1$ 4;/79/('#!/8/ $+$ .*'(Q&f4Q$&'__L3Q&hC3Q&'f4hCQ&'f4_LQ&gQ;&dQ&j0Q&e)sPa /EX/>YEX/>YEX/>YEX/>YEX/>Y>V+&&96и6/7и7/FиF/IиJи[01!"&#*#".54>7".'+"&546;2>32;>32>;2#4.#"2>uxYEX/>YEX/>YB_+=-9LиL/QиRиSиd01)&'.5467+"&546;267>7>54&'.54>3>322>;2#4.#"2>V=   M%&%%&%&:  N    *elm2!5%!4@ (27H'&%%&%5 2`XP"^S $()>"('&*+T+QQ>=5*$o#Jdb,10*^O3+8-E4''( !:O/"/2o!&_o!&f/K/EX/>YEX / >Y9%9(и)01!".'+"&546;267.54>32;2#5*RH8@FK&%&%%&%"a9BC5YC$G8"7>2R*%&%%&&33 5.('," 56)#-7 ('(&_+&f--&'_+_%L0&c+&h,&e,"8&_y1EA /EX/>YEX / >Y( 9*и+01!".'+"&546;267&654>7>32;2#4.#">7+EBB(+A:9#%&%%&%%T"$#I'))EF%&%%&$ '%/$  (' !08;.6(9</e&'(!  &_&L8&'_y_&L&f{H3&h'C&j{D&c&A7&f(K&cy8&_y&f{H [3EX/>YEX/>YTиU01!".'+"&546;2>54.'.'.54>7>32;2##98=MdC,h%&%%&%FyM/;&A  3}Q Rj=%$*UQJKs]M&&&%%&+YEX / >YEX / >Y+8+A+ иIиJ01!".'#!#"&546;!2>54.#!".54>32.#"3!2;2#,:$K^p>%&%%&%18]B%!--,"&@U]_+ $ -_N22";N 1+'&%%&3@"+C.('"-##5#4aVG3 %"4C$ &?H)K9"'(6%+A!%%&%6%F%V%f%v%%%%%%%%%]A!%%&%6%F%V%f%v%%%%%%%%%qA%%&%6%F%V%f%v%%%%% rA%%r%9%9/ArA! )9IYiy]A! )9IYiyqA )9IYiy r,EX"/" >YEX/>YEX / >Y"9/и001!".'+"&546;267>54.54>32;2#y,6& &1#%&%%&%+ ".    ?5'&%%&0C*/D-('P5a< ("'lx~sa dZ'(@&u &_&f3&hCc&k&sYX5IZ$/EX / >YEX/>YEX/>Y9.и/иEиE/01!".'#".'+"&546;267>32;2#%4.#"32>4!7219=A"'1:!%&%%&%YEX/>YEX/>YEX/>YW +!9и:и;кJ*901!"#".'.'.+"&546;267>322>;2#4&#">4.'32>0l3  &9)'#  )T+%&%%&%3[ !GE@  SQ0=?<+%&%%&/*! k`9Y>'7"  '#MB+#+ IA2 (' Ja9*.X3'(1&(YEX%/%>Y  9,и-к0989M9012;2+".'#".'+"&546;267.54>7.#"&54>.'32'4.#">BHH>-,*'&%%&'(  ;GIE25<'%&%%&%.<"%   I '/3  ;D=  ! F 6GOQ%$'(&2*"('&??8 +'`74, ('% # &mmWh>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r#>9C9/6/EX/>YEX / >YEX&/&>YK+&-#&-9Pи.кC69PQ01!".#"#".54>7+"&546;267>32>7>32;2#' 41+ %%&%%&%7! #+#%')^C#( '&%%&   Y9 .! )E[2.++(' $  ;N[*6=;/:'(m&ma3i&m&ctAk&n&ctAI&'uctAK&eu3&huC/EX/>Y 01+"&546;267>54.54>7#Y8'+@ + и/" @9@,и,/01#".#+"&546;2>7>7.#"#"54>7>232 IF;M0)RSU,%&%%&%&D@@"&X*"AAA!*"AED5N0A-$//'(' !   $" ! &$_j&$m}&$e&$cAK&$e&$f3&$hC9&$j3&$'_hC3)&$'khC&$dG&$k )&$'k_L)&$k&$c7&$f/NGJ/EX/>YEX/>Y J99+01#".'#"&'+"&546;2>323>7>3232>54.54>32/ 1"+"'/8 0K&^4%&%%&%,@. )"&B3!#,+    'ME/ 6-/79/('#!2D' )  &+# "/E&5f/&5'_3_Q8/&5hH8/E&5'fhH/E&5'f_Q/e&5g>/&5d;/C&5j/1&5e{TARl /EX/>YEX/>YEX / >Y=G+ ' '97и7/8и8/L01".54>7".'+"&546;2>32;>324.#"2>TEo.   &C8-$-7"%&%%&%@R2$29)%nE%4!J$0/hcV7unbJ+P>aH3  $)(  ,)( ('*3* 5qL /7T "Y@H+ ; '9M01+"&546;267>7>54.54>32>324&#">!5'GO%&%%&%#'     $_nt9 0 NI>(RW]4nFX=:5%0 (' -f0:zvkU: *'")% *M`b -1,%[P6*8c,1UB'1-#&D_#&Df&VK((/EX/>Y(901+"&546;267.54>7>32#".#"32>32 6I,VTQ(%&%%&%&A( 3@"#D%& $[+!(&9B<=<2$\ < +%('  (QK@    3,_&G_H &GfJo_&G'_H_HLr&GcH$&GhI &GeIduQ&O_uH/?0EX / >Y++ +901+"&546;2>54&'#".54>32'4.#"32>u 8N`5%&%%&%?pU1+& #<7&  (*()#('%)+%!, -8;16Xo<  ! uH&O_LuQ&O'__Lu&Ofa3uH&OhCu&Oj]uH&OcA7uH&OfuHOud&OcuQ&O_u&OfaD!I"/G/EX/>Y$01+"&546;267>54.'.'.5467>7>32D [ktpdL-"6D# =/>q]%&%%&%Sy+'4! -144+  ./OQ?(  &*,,(" %=JU/IX/(' 01, *++9 &PG9D!&[_ZD&[f\5D!&[hED![D!&[tD&[}D&['}tD&[~D&['}cCMD&['}e~D|&[D!&[_ZD&[f\9D!&[fd@ A/B/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rAи/098A!88&868F8V8f8v888888888]A!88&868F8V8f8v888888888qA88&868F8V8f8v88888 rA88rEX/>YEX/>Y&3+<+ 01#!#"&546;!2>54.#!".54>32.#"3!2?mT%&%%&%18]B%!--,"&@U]_+ $ -_N22"5'FKyU-('"-##5#4aVG3 %"4C$ &"6%3ʻ-++ArA! )9IYiy]A! )9IYiyqA )9IYiy rArA! )9IYiy]A! )9IYiyqA )9IYiy r#/EX / >Y01+"&546;2>54.54>32*PD%&%%&%?6$    X'(&E<((' ) c|%*'%.(&MY`ZOd&ku{.&k_v&kfx>3%&khwCR&kkL%&ks+=$/EX/>Y01%#".'+"&546;2>7>32'4.#"32 177"!!%&%%&%+@3*!!  i    ,*.*$ (''>K%+"560  &r_*&r_A~&_~&'_~_tL&_~(&k1&'_~t3&huC&'_~ctA*&`~q&a~Z1BV<+/EX / >Y +9 +9< +901%#".'+"&546;267.54>7.#"&54>32.'32'4.#">.4GIE8PVW@74, ('% # &~y!Z~y&~m!y!<*+A**]A **)*9*I*Y*i*y*** ]*9"и"/7*9/'/EX/>Y 7'9017+"&546;267>54.54>7#"&54>7>32!:N.%&%%&%+C    '&  ?W5(' $(!# # -2(G@;>>;%5$&me/D //01#"&54>7>7.54>7>32#".#">32/ ")1/       !& +      %  *5&//&901#".543232>54&'#".54>32'.#"3263B#+ %J;%     =9.gW9  *@M"   /(); H E /!/01%#".'.54>7>7>32.#"32632*:#E?1 RZP&5:3.%     +$  54(@jGz   4/% # ** (68   Z7'//&/)///5/ / /01#"&5467>?>32#"&5467>?>32  & "  & "M d  i  d  i RhFQg5+A55]A 55)595I5Y5i5y555 ]?и?/:/ //- :901#".'#"&54>54.#"#"&54>32>7.54>32'>.#"R  ?80    ";  ,  V  `  4$$  /- !"B .3)  #T RD5%/'///01#"5467>?>32#"5467>?>32D  $  #  $  # e  h  e  j  / ///01#"&5467>?>32  & " d  i (4 // 901#"&'#"&'>7.54>32'4&#">)4Z"% 650)  N FD  "'+%93#!7 f&D / ///01#"5467>?>32D  $  # e  h VB7 3/ /01#"'#"&54>763232>763232>5>32V ')  "2    !B6! =6!" %+%$+%$-7/  !M+A&6FVfv ]A] +01#"&54>324.#"32>)9!/2%5(1!'5# !;,FL7+)04 *! F&9%// + и / и / и/01#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1 !$ /D //01#"54>7>7.54>7>32#".#">72  "(1/      !%       # )/fD //01#"54>7>7.54>7>32#".#">72/  "(1/      !%       # 8// /014.54>7#"5S   %"HB651$- 7:- +i+A&6FVfv ]A]9/ /// 901#"&54>7>32 ,"+  D(890TLE""IIE$=/ /+0132>7#".') +,"->&(6!94$-9"TI1/DM3s'//// / //01+"#"&547>7>732632,    ` %///"//01+"&'.5473232>;2 -2 ;3. #!&!"&!/;= >;-##%////"/014>7>;2#".#"+"& -1 :2. !&""&"/<= =<.##>zvO+A&6FVfv ]A] +01%#"&54>32"/)+ -!1%:>0$") \(3 1+014>7.54>32#"&'#"&'.7>54#"  ) 166 &#Z3(N 6 !#39%,'!CGm % 'C //01#".54>32#".54>327#"&5467>?>329       & "     d  i V///01#"=4.54>7    7:- :#GB651$m94 / /01#"54654.54>7(    7"+/' +$WiqbG 51$ YO/"4+w+w и /"'и'/[иfиf/wкw9014&#"2>"&'32>32#".'.54>7>7>54&54>3232>323>32"&5467"&'(41+*XI/L'$  $#'MTa:D?/,32::OPG  A"   '7AG"#7GGA * 9 )0,$      ! ,a< %Y]S#  @9& 1$ =+'Q/6+~и/01#"&'&'&#".54>32?>32#".'.54>7>7>54&54>3232>54&'#"&54>32#".'32>324.#"326         t,23:9OPF B"  8<.    (..   $"'MS`;D>.  b        ! ,a< Y]S#  $$)+!-7- "$    , P$0>//EX / >YEX / >YEX!/! >Y01#".54632>7>32#"&'74&#"3 ! /*"     !4  5! (,  %(  @  #EO)/E/:E9LE9OE901+"&5463267>7.'#".'.54>32>54&54>7>54&'     #+26   Xw/ X 9++>CиC/01#".5467.#"4>7>327263232>32'#".54>32%-)7kT3`P*-.-, 0'[O59Wj1+)#    %  .P=^/    $Y01#".54>32#"&'&'&#".54>32?>32   3           Y      g_9,+A99&969F9V9f9v999 ]A99]9ic//Cc901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CM#/  $)-*#    &   m("    4B% ".0'#!  0&! $   J //01#"&54632J++++5**++;y //01#5;vy15/01#".'+53267>7.#"#"5467>2322%# &A)**&=","? ' !"!E(!u  >    '   j>:///01+"#"5.5467>7.#"#"&567>7>32j#5  *   !$;  +0*  +=0*    #'y;f8++A88&868F8V8f8v888 ]A88]8h/b/0///$/&/EX=/=>YEXE/E>YBb901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CL$.  %)-*$    ' '#   4B% "-0'$"  /'!   $    my!///01#"&'&'"#".5463232>32/@B # =*?+   }D!/EX / >Y01#*.'.54>7>7>32.#"32632}*:#F>1 SZP&693.%   ,$  55(AjGy?  " 4/& # ,+ (68  ^H//D901#".54>32#".54>3232>7>54&'.54>7   ]K1& "))'#     !3C . 2*"!   > 664/q //01'7'7qqqqTTT/qppTTTTq //01'7'7qqqqTTTqppTTTTfO+A&6FVfv ]A] +01#"&54>32f;++;&&R+;;+$$<'8///*/5/'///2//01+"#"5.5467>7.#"#"&5467>32%4  +   ## T !+1*  ,=0)    "'5_0)/#+#(и(/#*и*/0132>32# '&547>32>767254> %  #C*^&3JU]-iu-3.-F7*.; ( (/`VD JK /3/+01!2>7>7>32#".'.'#".#"&'>323267>ժ:U?4  5ZOY3,EGA'3ER[++AI++и/+и/(%и%/<:и:/<N01".5467".'#".5433267>7>3327>324&#"2>/Mac]#   Jfbk'"[@(    + #  Y?3+#%.3?901#"=4.54>7+532>54&'#".54>32'4.#"32>#".54>32>    8N`5oo?pU1+& #<7&  !  7:- :"HB651$(*()#}%)+%!, -8;16Xo<  ! ##$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//01%#".5467>732>329+)=( (,)*(  $,;)BR)9#D8(#0@P- $$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/"/EX / >Y01%#".#".'.54>32$  (*),( (=)+9G$ -P@0#(8D#9)RB);B8 //01#"'>767632M)k_.SMA%x&%A &H"q=49p'+01#"&'&'5476323276&'&#"eEuDRY" Ws)"2<5L15(+ !9@7GU B"$%!24@*&lW//и/fܺf9YA!YY&Y6YFYVYfYvYYYYYYYYY]A!YY&Y6YFYVYfYvYYYYYYYYYqAYY&Y6YFYVYfYvYYYYY rAYYrи/f9Yи/1f9\f9frArrrA! rr)r9rIrYriryrrrrrrrrr]A! rr)r9rIrYriryrrrrrrrrrqA rr)r9rIrYriryrrrrr r// /%/(/m+aw+m9%91%9\%901"&'#"54767.54>7.54>7>32#"3267>32>3272>54.#"g:%8/8!+BP%<6$%'!  V=$2):?!4::. 7!Pd9)#3mqt:@Z9":OX^ 0eS45V>3d^W' LRS EO<%-)/ /  9 9( 901".57"'6&'547633676327"67654  .  ?DB8Z %,!N-=18LL*X D /'/ '9 '901#"'654'.54>3327&54>32#"'.#"3267632 19d"/0   "0"-   #57  i $&,$''* (     6p?n//$/EX/ >YEX/ >YEX/ >YEX / >YEX#/# >Y&901#"'&543327654'&54767'47&#"4?6763236732#K'" 2 AOJ(. f1*aS^0."0! 1""2 B   D>(QA[6;< YEX/ >YEX/ >YEX / >YEX7/7 >Y2$9@$9O$901#"'&543327654'&54767%"'&547632"57"'6&'5476336327"27654#K'" 2 AOJ(. r   .  rjBnT`]7AIB  D>(QA[6;<%,!N-LL*X dw'/!++01#"&'#"&/326732654&'.@&8A#pJ=NC1K_U35w,XF+5>  B   )&9BNqo?N%&/J+JиJи/01#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -./A]< 2%  + ($#-F%06 ."->  +#$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/и//*//01#".5467>732>32#".54>32;+(=( (+)+'  $ &3;+;,DP%:#D9(#0AP- $ 3$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr-и-//2/EX / >Y01%#".#".'.54>32#".54>32$  '+)+( (=(+;3& K$ -PA0#(9D#:%QC,;%3 6';/-//01#".54>32#".54>327#".54>32P!&#%d!&#%!&#%^%) $' %) $' %) $' J-?Q6+,+A,,rA! ,,),9,I,Y,i,y,,,,,,,,,]A! ,,),9,I,Y,i,y,,,,,,,,,qA ,,),9,I,Y,i,y,,,,, r,9/A]A )9IYiy ]ܹ A&6FVfv ]A],'и'/E/;+;01#"&54>54.#"#"&54>54.'.54>32#".54632-#-#-!'!&6(',' &8*+I`60O:   3% $7'3## ! %3 >GQ_pB " &0$!9AN37bI*%=P%3 j''/EX/ >Y01#".54>32#3#".54>32   %3%HFN3% T 3%3 H9'#/+01%#".546;2>7>54.54>7=<U-.!F950 dk6 *"''# %)!1157y'>54&#.54>32y+<%)#$& T"NMF%)28  %0F1` #// /9901'%d$RP%eN }EX/>Y01373}} ;}K+;JVe# &+A&&]A &&)&9&I&Y&i&y&&& ] & 93& 9Y& 9& 9 Kи&Q3/ /EX/>YEX/>YEXYEX^/^>Y}+<A'7GWgw ]A]и/^A'7GWgw ]A]#}9&}9@}9C}9I 39L}9Y 39f}9}sии/ии/и/иииии/^9^9 3901%.'.'.'>7.5467.'>7>7>7.'.'.'>732>32>32326764&'"&'#".#".#"#"&'#6>3232>732>32>>&.#"#".'#".#".>7>7>'.'.>'#"&54632.7>76.67>762#"&54632''&'&>2*1&'!Dw9'3&&3'9wD!'&2+=#0220#=+2&'!Dw9'3&&3'9xC!'&1*<#0220#<0'$"Ap6 1&  &1 6pA"$'+** )6 ,$!!$- 6) *+++42% #',"*! *#,&# $1551$ #&,#* !*",'# %24+U* )6 -$!!$, 6) *T,'$"Ap6 1&  &1 6pA"$' I4  8T((((4I T8 5q  4I ((((  q5 I#8< *4!!4* <8#"/G[]G."#5> )5""5) >5#".G][G/ 68  ''  86        ]E  !!  E][G !! G  !  !  59 && 95_ (   -7''))B ( -  1?  & _((&&  ? &,;*9/ /)/0132>54.#"4>32#".J`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..Stx/ #//01"3!2>54.#52#!".54>3E$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 DP'w/WKZ//Z9Z9Z9Z9$Z9,Z94Z9<Z9DZ9LZ9TZ9`Z9hZ9pZ9{Z9Z9Z9Z9Z9Z9Z9Z9Z9Z90Z9DZ9cZ9xZ9Z9Z9Z9Z901.&'.'.7'.>&'&67.'.'>7>7.7>.'676&67>7>>7.7.>7677>7>%>.'.'>7.767>7.'&>&'>7>.'>7.'&7>'676>4.#"32>&>&'.'&&'.'7>.'.>7.''&'.'67676>7.'&'&67.'>7>&%.''.6&'&7>7.'667>#".54>32#.$!3  *)/&.=&,+-/),%=/&0')   2"$-##-$"2   )'0&/=%-*.-+-%=.&/)*  3!$.=<5     ""$(&$!     '&& 1)  !!  # '0!5-#; 1)     x$=S//R>##>R//S=$ 1)    !4-%91"" ''&& 2) # #       !$&($"      "><5 8(##(8 " &%=.%0)*  -Y76vA@x57Y-  *)0%.=%& " #&%=/&/')  .Y76w??w67Y.  )'/&/=%&# *%9 0(    *4NGH-G G-HGN4""   " /0%    ))&=( ><5       /R>##>R//R=##=R=<5    &=(  ) //%      r#   #3NGH-E E-HGNB     *%9 0C(6"#6mL*Slm/и/[[ܸ[A@[]A[]A []A[]A[]A`[]$ܺ[$93[$9DиD/$KиK/$TиT/[ZܸZܸaиa/[dиd/g[$9Zjиj/$n/EX/>Y[G+39g9013>7>5.54>7>?4.'.'!.'.5>'##".5467>7m0  )#;8 8<#(  -/&84#&  w  H  "+ *"   ""!! c;<<9D`9G`9]bиb/]rиr/]tиt/]wи]A]A )9IYiy ]]9]9и/]и/`9к`9]и/]и/и/!и!/39]XиX/j]9uиu/и/9]9`9`9`9`9ии/9и/и/ и /и/M//M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901.'.'.5#"&#">54&547.'.'>7>7&54654&'32632>7>7>?6323267.#"#"'7>&547#"&#"#"&#>323277>54'>54.'>3&54>72.#"632#"&'72>%.#"#"&'>7.54654'32632>4.#"32>.54654'.'&#"#"&'32632.#"3267&'#".'>7>32>7.'5##.547"'>54&'.'#"&#"654&5467.'6232327>7#"&546324&#"326-^XN   #        "    MY],/1YK< "        # 39D`9G`9]bиb/]rиr/]tиt/]wи]A&6FVfv ]A]]9]9и/]и/`9`9]и/]и/и/3!и!/339]XиX/j]9uиu/3и/39]9`9`9`9к`9ии/393и/и/ и /и//M/M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901>76323267.#"#"'.'>7#"&#">54&547.'.'>7>7&54654&'32632.'>7.'.5632326323>7'#"&#"654&5467.'>54&'#.547"&%3267.'#".'>32>7'."32632&54654'.'&#"#"&''32>54.#"'>7.54654'32632>7.#"#"32>7.#">32#"'3467>7.63&54>72>54.'>323277>54&5<7"#"&#"4632#"&732654&#"S-^XO   #        "    NY],/1YK< "        # YEX / >YEX/>YEX/>Y99 A'7GWgw ]A]5иO01!".'#".'#".54>7>7.7>3232654.54>322>54.54>32#"54654.54>7%#"'#"&54>7>3232>7>3232>5>32'#".'.'.54632.'326'!$+)%$) 21%%"L%    2-(  $     AC    ')  "2    H"   $  %:&!+( !"9*'7#-Q@  /67#4 %/'4-`S;&WMGxu< (";y01G.'c|%*'%.(&UfmfX/1.8=T+6;0 9-r`A<,!B6! =6!" %-%$+%$-7/    5R%# LH8H (' :q#PFq}++A!&6FVfv]A!&6FVfvqA&6FVfv rArGиG/A]A )9IYiy ][и[/и/99/|/w////|99|9901%#".54>3232>7>54.'.54>7#".#".54>32767>327#".546323267>54.54>7'#".'.'.54>3232>54.54>7 * 6>L2(P?' ($  5E%0YJ:     (       4G'64.>5#"$ 9JBF *8:.   .& $ yBA?% 4O6p%@E; &)!"MLKKe>%B4(grv7-VK;#& 8a%).'%(#2[-;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'sE< +A!<<&<6<F<V<f<v<<<<<<<<<]A!<<&<6<F<V<f<v<<<<<<<<<qA<<&<6<F<V<f<v<<<<< rA<<r<./"/01%#".54>54.5467>322s >JN@)$*$+1+762-$  +$.5..5.0<<3 ,1)  #E?6* ]A1$%   *4:5+  5/1- +#+01#".54>7>324.#"32>" (/3 H=(&&*'UG/75NW"%5I,2=" P'D9+  $6#$0?,/<" %=Qz?A1)79# ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆ho7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   -;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'fySI///=+=903=9A=9S=901#"&'#"&54.54>323267.54>32.#"32>7CHH "1   #4>4#  '+.'J%% (77 # ',  "QNE$DCC"svQ+%+#%/) &,"/@   5^+A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >YEX/ >YEX / >Y$ 9'A'']A''('8'H'X'h'x''' ]101.54>32>32.#".#"%/21 3X?$-@(8>"%4 *  ( 6?B<0 +.) 0z6#RE.%$   !,9>:/;/ܸ:и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&rEX/ >YEX/>YEX / >Y+A++'+7+G+W+g+w+++ ]A++]501%#"&'#".54>74.'32>732>-?)8>""2!1Rk93X?$8)=G--*    ( #RE.0;C-0z.PSI )2896#   !,{sI?!+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r//+/+901#"&54>7.54>7>32##32>7s $('#:2.%/1-A9'  "'-')  :#*9:552(,$ !#$)KNV4FOUMB/;<7%  #( " ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆hA!~$////!901%#".'.'"54767>767>32JK !:/^Q ## a56!Wq㿖l ! '56HN  HWA4o7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   !1ϸ2/3/ܸ2и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&r//01#".54>324.#"32>,:%#8*-K76I-V#$,&& EF@21?CB,nbC@^k49:.#7DB9ZX@$9GD:kU+//01752>546.#"'733t  #P  I"+ +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r-%++01%!5>54.#"#>3232>73t>?.);$!C>8#K"'w9ǻ3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/.%+01#".5463232>54.'5>54&#"'>32w%@U0 "! ")0A%3&7+(9 %1"3&nU4N4   !*(9$$1,7) /"/&" ' Q+и и//+к 9 01#5#533 3UI1N,8z@f,%+ArA! )9IYiy]A! )9IYiyqA )9IYiy r' +%+#+01##".5463232>54.'73f*-WE*&@W0 "  .#0K\,tM$;>324.#"32>2F+0E.4[{G7XB. @"$8'N ,#3-% X)L;#-FV)DlC-G[11@SB9& 3B;))1! / +017##"'7!1& <>7'6F-+(+и/ и / 9# 9A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( rA-]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v-- rA--&-6-F-V-f-v--------]A---rA--r7-?и?/H//9#901#".54>7.54>324#">4.'3260?# =0#*(!.; 9.$,1(Ma'<#( ,2"')->&8&%6#0)" #'/#6%!0!-% '/6:_*,)$  &2,'I.-#.'45/6/ܸ5и/и/ 9ArA! )9IYiy]A! )9IYiyqA )9IYiy r(A!((&(6(F(V(f(v(((((((((]A!((&(6(F(V(f(v(((((((((qA((&(6(F(V(f(v((((( rA((r2и2/-++ 901+5>7#".54>324.#"32>7>5\}H5WC- ?#%8%/E+0G0U -!% +"DkC-H\02?!(N=&/HXD<**1@9' - //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+a8 //01%#".54>54.547>32#2a  >@1#!)!=   $+$%22 " #E6#-U!$   $&$ ]iP- //01#".54>7>324.#"32>i  9'" /( ,1  ?2"/'  %  + ( *6S +,!&&  To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO     //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+:tE;///3/39)39739E3901#"&'#"54.54>323267.54>32.#"3267 $()  *1*  1+    $ 4  9713[0{}B&+#! - !  ,  A1 ///$ 901.54>32>32.#".#"f !  ":*+$)"  & & +23/& "$&_fd+?6$"Nz3r+A&6FVfv ]A],9/ /EX/ >Y,901#"&'#".54>74.'326732>z #   /< 1#"'($     f92!"*0mj^ "V[\!8:4 2;>   YwaB1///'/'9.'9B'901#"4'&54>7".54>7>32#32>7a  2  '* %  - !!  -179;" SXO "(+((    To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF%///901#2'&'"546767>32SciZ'm;> jalT-(- Gbhj`-"@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO    )z+M +A&6FVfv ]A]//01#".54>324.#"32>4) 5(&4 6'&4 =  NC..BJNE0.CL><,'0/( @>.(20)Lz+///01752>=46.#"'733R  f    4 %z'+ArA! )9IYiy]A! )9IYiyqA )9IYiy r)/!+01%#5>54&#"#>3232>73F>+.&%- *,!/n AJP%&7&",!)/,(5  z3+ArA! )9IYiy]A! )9IYiyqA )9IYiy r,//2,901#".5463232>54.'5>54&#"'>32 -<"  ".):'( "'<&NU%7% (  5*'!-+2 )z O+и и//+к 9 01#5#533'34#7k8pp'-o%+A! )9IYiy]A! )9IYiyqA! )9IYiyr' /$/ $9# $901##".5463232>54.'73 =1.="  !"5A R:7*9#":+  #%4!'z2q +A&6FVfv ]A]и/ 9///901#".54>;>324.#"32>'#2"1 %@W3'>/ .'7 $  W6* 2=0aL0  3@##-;.)$.*##o / +017##"'73#u +} d 'z'4B#C/D/ܸCи/ и / 9и/# 9(A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( r-A!--&-6-F-V-f-v---------]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v----- rA--r(5и5/-=и=///9#901#".54>7.54>32'4#">4.'326"-," +(!"6E*   #(&-,( &" !& "  !'C *$ 4 #5!%z4q+A&6FVfv ]A]и/ 9/// 901+5>7#".54>324.#"32>7>%%AY3&=0 -( "0"2"<0`L/  3A" #-7+!4> 0+#-(  y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 54.547>32#: ,-#+'"$$  1'  =$ $($ B) //01#".54>7>324.#"32> )  "#  -# &8  -'; ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 323267.54632.#"3267    $ "#      ((" %@"WY/' *"    .`/# ///" 9( 901.54>32>32.#".#"H!$)       47/ CHH,'    7 S/e+A]A )9IYiy ]*9// /*901#"&'#".54>74.'3267326   !+"   a)# "MKC=A@()% $*+  "?k:' ///#/#9*#901#"=4>7".54>7>32#32>7 $ $       #)M0 ;?8     $   ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2)* ////901#"&'.'"547676767632)#%G M*KF.S&<,EJ KE-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# }m}}l;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..StM/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 k/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 L/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 -@,=)/0+05и5/07и7/0132>32#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD\J{J"JAJ#m~msD@c_bER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>b/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  763232>763232>5>32&5>7>?>32&5>7>?>32V ')  "2    %        $    #!B6! =6!" %+%$+%$-7/    c j  b kV7}w8l+8и/All]A ll)l9lIlYlilylll ]8vиv/8q/ /d q901#"'#"&54>763232>763232>5>32'#".'#"&54>54.#"#"&54>32>7.54>32'>.#"V ')  "2    Au$     "<  , V  !B6! =6!" %+%$+%$-7/  ) AJ$   .,!!#  . 2)  #U V7Qk0/3/\/^/01#"'#"&54>763232>763232>5>32#"5467>?>32#"5467>?>32V ')  "2      $ $  $ $ X!B6! =6!" $,$$+%%-70 d  k  d  i V7R8/P/ /01#"'#"&54>763232>763232>5>32'#"5467>?>32V ')  "2      $  #!B6! =6!" %+%$+%$-7/   b  kV7^jT/ /G T9h T901#"'#"&54>763232>763232>5>32'#"&'#"&'>7.54>32'4&#">V ')  "2    '4X"$640($  O!B6! =6!" %+%$+%$-7/  FD !'+&83#7%9 e $V7Q0/3/B/D/01#"'#"&54>7623232>7>3232>5>32#"5467>?>32V '*  "2      $ $ !B6!!=6!" %-%%+%$,7/   d  i $D]E/[/ // [901#"54>7>7.54>7>32#".#">72#"5467>?>32  "(1/      !%   $ #      #  b   kDkw-a/ // a9T a9u a901#"54>7>7.54>7>32#".#">72#"&'#"&'>7.54>32'4&#">  "(1/      !%  '4X"$640($  O      # ZFD !'+&83#7%9 e $VT /)/01#".'.'.54632#"'#"&54>763232>763232>5>32H"   $ ')  "2    o  5R%# MH8!B6! =6!" %+%$+%$-7/  +ArA! )9IYiy]A! )9IYiyqA )9IYiy r/ /01'>54.'-D9%*DU+#:*(0 .)"7' =/ /+01.#"'4>32!*-"-?&)5!94%-:"SI2/DM[(4]iA/ / A9D A901#"&'#"&'>7.54>32'4&#">%467>32>32#".5467.32654&')4Z"% 650)  N )4Z"% 650)  N FD  "'+%93#!7 f&dFD  !',%83$!7 f&}EX/>Y01153}} 2% + A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >Y+01#".54>324.#"32> (34*(53(4!&8"! 5&&5 5&%6!" 3)" ")/EX/ >YEX/ >Y01#373#a66QQ //017#".54>32Q! ##Sb3/:/^+^"и^'и'/L:9017#".54>32#".54323267>54.'.54>32>324.#">R  $;LOM    42/#''  ,//A]< " #I 2%  + )$#-F '06  .",>  +#49/%/'/6//017#".54>32+"&'.5473232>;2R  s,2 9 1. #!&!"%" " #/<= ><.##7d9 //017#".54>32%4>7>;2#".#"+"4R  ,2 9 1. #!&!"%" " #/<= ><.##d\, /(/017#"&'&'&#".54>32767>32     # # `,hw3/S/s4+s;иs@и@/aS9017#"&'&'&#".54>322767>32#".54323267>54.'.54>32>324.#">    )$;LOM    42/#''  ,//A]< # #  2%  + "-2 L17.",>  +#VT- //01#".54>7>'.54>32T      J" #cKA/&/EX0/0>Y017#".54>32#"&'&'&#".54>32767>328!f    n #" # " 'A}3&/h/I+PиUиU/v&h9017#".54>32#"&'&'&#".54>326767>32#".54323267>54.'.54>32>324.#">9!h   !$;LOM    42/#''  ,//A]<# #" #  2%  + "-2 L17.",>  +#bZ,@ 2/(/017#"&'&'&#".54>32?>32#".54>32 !  F! #  " &"#ZL//#/-/:/H/017#"&'&'&#.'./&#".54>32767>;767>32       !     !   ZO-Z>)/@/EX/>YEXJ/J>YEXV/V>Y017#"&'&'&#".54>32767>32#"&'&'&#".54>32?>32 !     !n# #  # # &?N%&/J+JиJи/017#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -/.A]<? 2%  + ($#-F%06 ."->  ,"k&9/%/ + и / и / и/01%#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1R !$ w@ //017#"&54>7>7.5467>32#".#">32 I(1/   +   !&   ? %  $49s@ //01%#"&54>7>7.5467>32#".#">329 I(1/   +   !&   ? %  O //017#".#"#"&54>3232>7.5467>32#".#">32 I(1?!)   +   !&      ? %  o1~"/X///EX/>YEX/>YEX+/+>Y + и /017#".#"#"54>7>3>324&#"2>%9''/+   6!(#5 )#& !  ."(2   .}Bit O/R/01%#"&54>7>7.54>7>32#".#">36#"&'#"&'>7.54>32'4&#">. I(1/       !& )4X"$660)#   P     %  r ED "',%83$9%7 f $J+- / ///////01&'&+"&'&'7;2     !9b#M+A&6FVfv ]A] +017#"&54>324.#"32>)8!03&5 '9#  !;,EJ8+)04 (  ]k$////!/017+"'.5473232>;2$ 9 %c.;= ?<- '  ' Kj%///"//014>7>;2#".#"+"4%+ 9 +&# !i/<= ><.##wa&1 ///017#"&'#"&'>7.54>32'4&#">a)4X"$660)#   P% ED "',%83$9%7 f $U"+//017"JJ~-`-:%////"/014>7>;2#".#"+"4,2 9 1. #!&!"%"P/<= ><.##$>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32%n~l% +kuz9 -7:1"6BLIB)QLG   },Q>L/N/EX7/7>YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32%#"54>7>7>32(    %n~l% +kuz9 -7:1"# # 6BLIB)QLG   he@e:/EXK/K>YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !/%n~l% +kuz9 -7:1"" ## # &:6BLIB)QLG   $>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32)sw^ ]lp2 3>C8&{ 0YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32#"54>7>7>32(    )sw^ ]lp2 3>C8&# # ! 0YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !)sw^ ]lp2 3>C8&" ## # & 032#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD J J J;cm3(ER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  YEX/>Y1901"#".67>7>7>54.54>720<: 4G1 *  (%/'.' FI0uR.-+ +.+ # qV!]jqj]"8$,&@=&uM@&_1@:C&f@+{&hs;@v&kH@k{&s &l&m-SWN&mN::/EX1/1>YEX3/3>YEX6/6>Y01%2>54&'.'#".'.54>32##"#".69/ ![hq8   ( ['% z ,,J8  @+," =8/ ,.#$.'&o.LPN&o&n.&qN a>A2/ /EX/>YEX+/+>Y&2 901>54>32;2+".'.'#"&54>7>  !1(%&%%&%/9" (2E3 9HPG7 0K^-0C1(1<|R.'>jP"'`jp7sm3  $119La &ua&_a&f!a&h1a,&ka&s&l&m/Q17P&m1P,/01%4.#"#".'.54>32&q*BOJ<   "/  art/$6' "TUQ?& ".# '%0Nc2&OJ@%&o0J10P&o1&n0&qP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                $         $$$                                                                      '          '''                                                             +            +++ !                                 !!                       ,            ,,,! %                                    %%                     2              "222% *              !                **    !!!!! !      !!!!! #      8!    !           &888!* .      !!  ! !       # %   ! "      !    ! ..    !!$$$$$ ###########$       %%%%%!!!!!!!!!###########&   #  "  > $    $            *>>> $- 2 !    $$" !$ $      & ( "  $ %      $  "  $ 22   $$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'''''#########&&&&&&&&&&&(    """""""""""""""""""""""""""""((((($$$$$$$$$!!!!&&&&&&&&&&&*   '    % "C#'  !!!'"          !!!!!!".CCC#'1 6#   ''&%& '   ) +$ '(    ' $ ' 66 ''$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*****&&&&&&&&&)))))))))))+    $$$$$$$$$$$$$$$$$$$%%%%%%%%%%+++++&&&&&&&&&####)))))))))))-    *     '   %H&*#$$$* $          $$$$$$%1HHH&*5  : &"  **)   '   )  *  "   ,.' *+    ! ! * """'   * :: ** &&&&&&&&&&&&&&&&&&&&&&&&&&&&&-----))))))))),,,,,,,,,,,. '''''''''''''''''''((((((((((.....)))))))))&&&&,,,,,,,,,,,0   """""-   """"" *    (N)-&'''-"'     ''''''(5NNN)-9 C%,'  11/$!"$$$$-$$$"$$0$$1($ 35-12$$&&1 '''$$$$$$-"%$$$$$$%$$$$$"1"C"C """ 00%%%%%%%%%%,,,,,,,,,,,,,,,,,,,"""""""""""""""""",,,,,,,,,,44444$$$!!!!!!!/////////!!!!333333333335 !!------------------- ..........55555$$$000000000,,,,333333333338!!!!!!! """"""""""""""""""!!!!!!!!!!(((((4   (((((1    .Z/4+!---4'-      %%  ------.=ZZZ/4B K*1, "6"65)%&)#)))#3)))&"))5))#6,) #9<2#68))!+!+6  ,,+))))))2&####)))))))"))))))&6&K&K &&"& 66))))))))))2222222222222222222''''''''''''''''''1111111111;;;;;(((%%%%%%%555555555%%%%""""99999999999;  "!!!!!! %%""""""""""2222222222222222222$$$$$$$$$$$$$$$$$$4444444444<<<<<(((555555555 111199999999999>" %%%%%%% &&&&&&&&&&&&&&&&&&%%%%%%%%%%,,,,, ###############:  $$$$$$$$$$$$$$$$$$"""""""""",,,,,7    4d4;1%! 222:+2      *"*" !  2222224Dddd4;JQe_<BDA  J A o<+udR7u9?#L#+ %T=B7#?JD9\=)%)FJV 7Z!ZZ5Z'Z!Z^ZZ5ZZ5Zb%ZZZ ZbDV73399-/ - 33ZL  Z5yH3 Lh^ZbZ\^933ZEZ3Z^-{-u3&/1;=3J))Xj^33j}6+}:V V V V V V ^7!!!!''\ZZ5Z5Z5Z5Z5\7ZZZZZ[777777739999/333333)/V!?==ZoZ%D)T) ) )P)Z)Z)P)==============mLmLmLmLmLmLmLmLmLmLmLmLmLmL;;j5j5j5j5j5j5j5j5jj5HVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHV++++++++++++++++++DDDDDDDDDDBBBBBDDD-------XXXXXXXXXuuuuNNNNHHHHHHHHHHHVuNuNuNuNuNuNuNFDYFDFDH`H`H`H`H`H`H`H`H`LLLLLLL''YjHjjPjPjNjjPj============================''VVVVVVVVVbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbP))))))))))))))))))`````DDDZZZZZZZZZ`#`#`#`#5H5H5H5HHHHHHHHHHHHRRRRRRR???u u u u u u u u u $)9$)9)9)91111111ooooooooooooooooooooooooooooqqqNNNNNNNPPPPPPPPPPPPP+ooooooooohhhhhhhhhhhhhhhhhhhhhhhhhhhhHHH============~===PPPPPPPBBBhhhhhhhhh999LF8+> mP'1m^5 ;@3;7B09&>N 6sJj)H)wFX;X,Xx1DmJJ$%S:!-!!!`!!!!f!o!!-!!!`!f!!!!!f A!o!!k',)!7'V7]T:@cV7:ANYT:%@c??L??? ????'??y?^?=?'?Z?B?;?)?-?F?y?^?=?'?)@.?7???;?)@?-?F0OO@y"Ay2s[ 47dcbZw$1J]K:}h}hX;X;X,X,XxXx5H9   ;@3(v@v@v@v@v@v@v@       1111444440d `P,@(p"P$$%& &L&(,-/1x334678D9 :\:< =$>@lBCFFGH|IJKLXLLM MPMtMOQS@U8VxWhZ\4\]_ _|abdfhil8ln8np q4rdrtHtuvtx8xy{| }<0 $p, DD\ <|<t,||<0H`x(@Xp”¬ $|xŐŨx(@XpɈɠ0H`x̨̐4Ld|ϔϬМ,D\tՔլ(((((((((((((lۘdp(4Ld4Lh(@Xp|,D\t\t $<Tl $<,  ( @ ` x       0 P h   l        , L l     <Tt<Tl,DTld|4Ld!!!0!H#,#D#\#|####$$$4&((((() )$)****+,,,,--4-L.`.x../p/////0001@333334 4$4<4T4l55545L5d5|677747L7d7|777778 899(9@9X9x99999::(:@;;,;D;\;t;;;;;< <$<<?@ @@4@L@dBlB|D(D@DXDpDDDDDEE E8EPEpEEEEEFHHHHII(I@IXIpIIIIJJJ0JHLM M,MDMdMMMMMQQ(Q@QXQxTT0THV$V<VTVtVVVVXYY Y8YPYhYY\<\T\l\_T_l__abbb<bTbtbbbbbf@iTiliiiiijll(l@lXlxn<nTntnnnnpTplp|pr,r<shsst@tXtpuuuvvv4vLvdv|vvvvvw wwwxxx0xHx`xxxxxxyy0yPypyyy{8{P{h{{{{{{||8|P|h||||~,~D~d~|~~~~$ 8Phh(@Xp<Tt4Tl $D\t,DTld|,D\t4L\t<\t(H`Ld| $D\t4D\tx 8Xx 8PhD\t4Ld,l<8Xl XtX``¼$ǠȬɼʔ@ddаѐҀPxִPڰۘD| 0PhL\|LX L!!"##$D%&(*,./|04012t454699;==@C\CDEFGdGHIJhKHKKMNOPPQXRDS STTU(VVW<XZZ\] ]L`,a4aabc`cde(efXggdgh`i@j,jklmHmndooooopqqr<rsdsdsdsdsxst`t`t`t`ttttttttttttttuv@v@v@v@wyz{|}xP8t(@HDhHX84T,P$(8H0H`x4L8Phf  | ??V1]      ~ .2 ` bn . $ <" "^ "  &X .~  .    . Copyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTestCopyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTest   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a   bcdefghjikmlnoqprsutvwxzy{}|~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.nulltab hyphenminusEuro nobreakspace sfthyphenuni02C9microperiodcentereduni2219enQuademQuadenSpaceemSpacethreePerEmSpacefourPerEmSpace sixPerEmSpace figureSpacepunctuationSpace thinSpace hairSpace zerospace zeronojoinzerojoinleftToRightMarkrightToLeftMark noBreakHyphenleftToRightEmbeddingrightToLeftEmbeddingpopDirectionalFormattingleftToRightOverriderightToLeftOverride wordJoinerinhibitArabicFormShapingactivateArabicFormShaping circledashzeroWidthNoBreakSpaceabsAlefMaddaAboveabsAlefHamzaAboveabsAlefHamzaBelowabsAlefabsAlefWavyHamzaAboveabsAlefWavyHamzaBelowabsHighHamzaAlef absAlefWaslaabsWawHamzaAboveabsWawabsHighHamzaWawabsUHamzaAbove absWawRing absKirghizOeabsOeabsUabsYu absKirghizYuabsWawTwoDotsAboveabsVeabsWawDotAboveabsWawDotBelowabsDalabsThalabsDdal absDalRingabsDalDotBelowabsDalDotBelowSmallTahabsDahal absDdahalabsDulabsDalThreeDotsAboveDownwardsabsDalFourDotsAbove absDalHatabsDalTwoVertBelowSmallTahabsDalInvSmallVBelowabsRehabsZainabsRreh absRehSmallV absRehRingabsRehDotBelowabsRehSmallVBelowabsRehDotBelowDotAboveabsRehTwoDotsAboveabsJehabsRehFourDotsAboveabsRehTwoVertAboveabsRehHamzaAbove absJehRetro1 absJehRetro2 absJeh.dotHat absRehHat absRehBar absYehBarreeabsYehBarreeHamzaAboveabsYehHamzaAboveabsYeh absYeh.noDotsabsHighHamzaYeh absFarsiYeh absYehSmallVabsEabsYehThreeDotsBelow absYehTailabsAlefMaksura absBehNoDotsabsBehabsTehabsThehabsTteh absTtehehabsBeeh absTehRingabsTehThreeDotsAboveDownwardsabsPehabsTehehabsBehehabsBehThreeDotsHorizBelowabsBehThreeDotsAboveDotBelowabsBehThreeDotsUpwardBelow&absBehTwoDotsAboveThreeDotsUpwardBelowabsBehDotAboveTwoDotsBelowabsBehInvSmallVBelowabsBehSmallVAboveabsJeemabsHahabsKhahabsHahHamzaAboveabsHahTwoDotsVerticalAboveabsNyehabsDyehabsHahThreeDotsAboveabsTcheh absTchehehabsTchehDotAboveabsTchehRetro1absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3absHahTwoDotsAboveabsHahThreeDotsUpwardBelowabsSeenabsSheenabsSeenDotBelowDotAboveabsSeenThreeDotsBelow#absSeenThreeDotsBelowThreeDotsAboveabsSheenDotBelowabsSheenRetro1absSheenRetro2absSeenFourDotsAboveabsSeenTwoVertAboveabsSadabsDadabsSadTwoDotsBelowabsSadThreeDotsAboveabsDadDotBelowabsTahabsZahabsTahThreeDotsAboveabsAinabsGhainabsAinThreeDotsAboveabsGhainDotBelowabsAinTwoDotsAboveabsAinThreeDotsDownAboveabsAinTwoDotsVertAboveabsFeh absDotlessFehabsFehDotMovedBelowabsFehDotBelowabsVehabsFehThreeDotsBelowabsPehehabsFehTwoDotsBelowabsFehThreeDotsUpwardBelow absQafNoDotsabsQafabsQafDotAboveabsQafThreeDotsAboveabsKafabsKafDotAboveabsNgabsKafThreeDotsBelowabsKeheh absKafRingabsGaf absGafRingabsNgoehabsGafTwoDotsBelowabsGuehabsGafThreeDotsAboveabsKehehDotAboveabsKehehThreeDotsAboveabsKehehThreeDotsUpwardBelow absSwashKafabsLam absLamSmallVabsLamDotAboveabsLamThreeDotsAboveabsLamThreeDotsBelow absLamRetro absLamBarabsMeemabsMeem.sindhiabsMeemDotAboveabsMeemDotBelowabsNoonabsNoonDotBelow absNoonGhunnaabsRnoon absNoonRingabsNoonThreeDotsAboveabsNoonTwoDotsBelow absNoonRetro absNoonSmallVabsHehDoachashmee absHehHatabsHehabsHeh.knottedabsAe absTehMarbutaabsHehYehAbove absHehGoalabsHehGoalHamzaAboveabsTehMarbutaGoalabsHamzaabsSignSindhiAmpersabsSignSindhiPostpositionMen absTatweel absLamAlefabsLamSmallVAlefabsLamDotAboveAlefabsLamThreeDotsAboveAlefabsLamThreeDotsBelowAlefabsLamRetroAlef absLamBarAlefabsAlefMaddaAboveFinabsAlefHamzaAboveFinabsAlefHamzaBelowFin absAlefFinabsAlefWavyHamzaAboveFinabsAlefWavyHamzaBelowFinabsHighHamzaAlefFinabsAlefWaslaFinabsWawHamzaAboveFin absWawFinabsHighHamzaWawFinabsUHamzaAboveFin absWawRingFinabsKirghizOeFinabsOeFinabsUFinabsYuFinabsKirghizYuFinabsWawTwoDotsAboveFinabsVeFinabsWawDotAboveFinabsWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFinabsDalDotBelowFinabsDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFinabsDalFourDotsAboveFin absDalHatFinabsDalTwoVertBelowSmallTahFinabsDalInvSmallVBelowFin absRehFin absZainFin absRrehFinabsRehSmallVFin absRehRingFinabsRehDotBelowFinabsRehSmallVBelowFinabsRehDotBelowDotAboveFinabsRehTwoDotsAboveFin absJehFinabsRehFourDotsAboveFinabsRehTwoVertAboveFinabsRehHamzaAboveFinabsJehRetro1FinabsJehRetro2FinabsJehFin.dotHat absRehHatFin absRehBarFinabsYehBarreeFinabsYehBarreeHamzaAboveFinabsYehHamzaAboveFin absYehFinabsYehFin.noDotsabsHighHamzaYehFinabsFarsiYehFinabsYehSmallVFinabsEFinabsYehThreeDotsBelowFin absYehTailFinabsAlefMaksuraFinabsBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFinabsBehThreeDotsHorizBelowFinabsBehThreeDotsAboveDotBelowFinabsBehThreeDotsUpwardBelowFin)absBehTwoDotsAboveThreeDotsUpwardBelowFinabsBehDotAboveTwoDotsBelowFinabsBehInvSmallVBelowFinabsBehSmallVAboveFin absJeemFin absHahFin absKhahFinabsHahHamzaAboveFinabsHahTwoDotsVerticalAboveFin absNyehFin absDyehFinabsHahThreeDotsAboveFin absTchehFin absTchehehFinabsTchehDotAboveFinabsTchehRetro1FinabsTchehRetro2FinabsJeemRetro1FinabsJeemRetro2FinabsJeemRetro3FinabsHahTwoDotsAboveFinabsHahThreeDotsUpwardBelowFin absSeenFin absSheenFinabsSeenDotBelowDotAboveFinabsSeenThreeDotsBelowFin&absSeenThreeDotsBelowThreeDotsAboveFinabsSheenDotBelowFinabsSheenRetro1FinabsSheenRetro2FinabsSeenFourDotsAboveFinabsSeenTwoVertAboveFin absSadFin absDadFinabsSadTwoDotsBelowFinabsSadThreeDotsAboveFinabsDadDotBelowFin absTahFin absZahFinabsTahThreeDotsAboveFin absAinFin absGhainFinabsAinThreeDotsAboveFinabsGhainDotBelowFinabsAinTwoDotsAboveFinabsAinThreeDotsDownAboveFinabsAinTwoDotsVertAboveFin absFehFinabsDotlessFehFinabsFehDotMovedBelowFinabsFehDotBelowFin absVehFinabsFehThreeDotsBelowFin absPehehFinabsFehTwoDotsBelowFinabsFehThreeDotsUpwardBelowFinabsQafNoDotsFin absQafFinabsQafDotAboveFinabsQafThreeDotsAboveFin absKafFinabsKafDotAboveFinabsNgFinabsKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFinabsGafTwoDotsBelowFin absGuehFinabsGafThreeDotsAboveFinabsKehehDotAboveFinabsKehehThreeDotsAboveFinabsKehehThreeDotsUpwardBelowFinabsSwashKafFin absLamFinabsLamSmallVFinabsLamDotAboveFinabsLamThreeDotsAboveFinabsLamThreeDotsBelowFinabsLamRetroFin absLamBarFin absMeemFinabsMeemFin.sindhiabsMeemDotAboveFinabsMeemDotBelowFin absNoonFinabsNoonDotBelowFinabsNoonGhunnaFin absRnoonFinabsNoonRingFinabsNoonThreeDotsAboveFinabsNoonTwoDotsBelowFinabsNoonRetroFinabsNoonSmallVFinabsHehDoachashmeeFin absHehHatFin absHehFinabsHehFin.knottedFlatabsHehFin.knottedHighabsHehFin.hookedabsAeFinabsTehMarbutaFinabsHehYehAboveFin absHehGoalFinabsHehGoalHamzaAboveFinabsTehMarbutaGoalFin absLamAlefFinabsLamSmallVAlefFinabsLamDotAboveAlefFinabsLamThreeDotsAboveAlefFinabsLamThreeDotsBelowAlefFinabsLamRetroAlefFinabsLamBarAlefFinabsYehHamzaAboveMed absYehMedabsYehMed.noDotsabsHighHamzaYehMedabsFarsiYehMedabsYehSmallVMedabsEMedabsYehThreeDotsBelowMedabsAlefMaksuraMedabsBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMedabsBehThreeDotsHorizBelowMedabsBehThreeDotsAboveDotBelowMedabsBehThreeDotsUpwardBelowMed)absBehTwoDotsAboveThreeDotsUpwardBelowMedabsBehDotAboveTwoDotsBelowMedabsBehInvSmallVBelowMedabsBehSmallVAboveMed absJeemMed absHahMed absKhahMedabsHahHamzaAboveMedabsHahTwoDotsVerticalAboveMed absNyehMed absDyehMedabsHahThreeDotsAboveMed absTchehMed absTchehehMedabsTchehDotAboveMedabsTchehRetro1MedabsTchehRetro2MedabsJeemRetro1MedabsJeemRetro2MedabsJeemRetro3MedabsHahTwoDotsAboveMedabsHahThreeDotsUpwardBelowMed absSeenMed absSheenMedabsSeenDotBelowDotAboveMedabsSeenThreeDotsBelowMed&absSeenThreeDotsBelowThreeDotsAboveMedabsSheenDotBelowMedabsSheenRetro1MedabsSheenRetro2MedabsSeenFourDotsAboveMedabsSeenTwoVertAboveMed absSadMed absDadMedabsSadTwoDotsBelowMedabsSadThreeDotsAboveMedabsDadDotBelowMed absTahMed absZahMedabsTahThreeDotsAboveMed absAinMed absGhainMedabsAinThreeDotsAboveMedabsGhainDotBelowMedabsAinTwoDotsAboveMedabsAinThreeDotsDownAboveMedabsAinTwoDotsVertAboveMed absFehMedabsDotlessFehMedabsFehDotMovedBelowMedabsFehDotBelowMed absVehMedabsFehThreeDotsBelowMed absPehehMedabsFehTwoDotsBelowMedabsFehThreeDotsUpwardBelowMedabsQafNoDotsMed absQafMedabsQafDotAboveMedabsQafThreeDotsAboveMed absKafMedabsKafDotAboveMedabsNgMedabsKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMedabsGafTwoDotsBelowMed absGuehMedabsGafThreeDotsAboveMedabsKehehDotAboveMedabsKehehThreeDotsAboveMedabsKehehThreeDotsUpwardBelowMedabsSwashKafMed absLamMedabsLamSmallVMedabsLamDotAboveMedabsLamThreeDotsAboveMedabsLamThreeDotsBelowMedabsLamRetroMed absLamBarMed absMeemMedabsMeemDotAboveMedabsMeemDotBelowMed absNoonMedabsNoonDotBelowMedabsNoonGhunnaMed absRnoonMedabsNoonRingMedabsNoonThreeDotsAboveMedabsNoonTwoDotsBelowMedabsNoonRetroMedabsNoonSmallVMedabsHehDoachashmeeMed absHehHatMed absHehMedabsHehMed.hookedabsHehMed.knottedHighabsHehYehAboveMed absHehGoalMedabsHehGoalHamzaAboveMedabsYehHamzaAboveIni absYehIniabsYehIni.noDotsabsHighHamzaYehIniabsFarsiYehIniabsYehSmallVIniabsEIniabsYehThreeDotsBelowIniabsAlefMaksuraIniabsBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIniabsBehThreeDotsHorizBelowIniabsBehThreeDotsAboveDotBelowIniabsBehThreeDotsUpwardBelowIni)absBehTwoDotsAboveThreeDotsUpwardBelowIniabsBehDotAboveTwoDotsBelowIniabsBehInvSmallVBelowIniabsBehSmallVAboveIni absJeemIni absHahIni absKhahIniabsHahHamzaAboveIniabsHahTwoDotsVerticalAboveIni absNyehIni absDyehIniabsHahThreeDotsAboveIni absTchehIni absTchehehIniabsTchehDotAboveIniabsTchehRetro1IniabsTchehRetro2IniabsJeemRetro1IniabsJeemRetro2IniabsJeemRetro3IniabsHahTwoDotsAboveIniabsHahThreeDotsUpwardBelowIni absSeenIni absSheenIniabsSeenDotBelowDotAboveIniabsSeenThreeDotsBelowIni&absSeenThreeDotsBelowThreeDotsAboveIniabsSheenDotBelowIniabsSheenRetro1IniabsSheenRetro2IniabsSeenFourDotsAboveIniabsSeenTwoVertAboveIni absSadIni absDadIniabsSadTwoDotsBelowIniabsSadThreeDotsAboveIniabsDadDotBelowIni absTahIni absZahIniabsTahThreeDotsAboveIni absAinIni absGhainIniabsAinThreeDotsAboveIniabsGhainDotBelowIniabsAinTwoDotsAboveIniabsAinThreeDotsDownAboveIniabsAinTwoDotsVertAboveIni absFehIniabsDotlessFehIniabsFehDotMovedBelowIniabsFehDotBelowIni absVehIniabsFehThreeDotsBelowIni absPehehIniabsFehTwoDotsBelowIniabsFehThreeDotsUpwardBelowIniabsQafNoDotsIni absQafIniabsQafDotAboveIniabsQafThreeDotsAboveIni absKafIniabsKafDotAboveIniabsNgIniabsKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIniabsGafTwoDotsBelowIni absGuehIniabsGafThreeDotsAboveIniabsKehehDotAboveIniabsKehehThreeDotsAboveIniabsKehehThreeDotsUpwardBelowIniabsSwashKafIni absLamIniabsLamSmallVIniabsLamDotAboveIniabsLamThreeDotsAboveIniabsLamThreeDotsBelowIniabsLamRetroIni absLamBarIni absMeemIniabsMeemDotAboveIniabsMeemDotBelowIni absNoonIniabsNoonDotBelowIniabsNoonGhunnaIni absRnoonIniabsNoonRingIniabsNoonThreeDotsAboveIniabsNoonTwoDotsBelowIniabsNoonRetroIniabsNoonSmallVIniabsHehDoachashmeeIni absHehHatIni absHehIniabsHehIni.hookedabsHehYehAboveIni absHehGoalIniabsHehGoalHamzaAboveIni absHighHamza absSmallWaw absSmallYeh absFathatan absDammatan absKasratanabsFathaabsDammaabsKasra absShaddaabsSukunabsMaddahAbove absHamzaAbove absHamzaBelowabsSubscriptAlef absUltaPeshabsNoonGhunnaMark absZwarakayabsVowelSmallVabsVowelInvSmallVabsVowelDotBelowabsReversedDammaabsFathaTwoDotsabsSuperscriptAlefabsSuperscriptAlef.largeabsSmallHighSadLamAlefMaksuraabsSmallHighQafLamAlefMaksuraabsSmallHighMeemInitialFormabsSmallHighLamAlefabsSmallHighJeemabsSmallHighThreeDotsabsSmallHighSeenabsSmallHighRoundedZero"absSmallHighUprightRectangularZeroabsSmallHighDotlessHeadOfKhahabsSmallHighMeemIsolatedFormabsSmallLowSeenabsSmallHighMaddaabsSmallHighYehabsSmallHighNoonabsEmptyCentreLowStopabsEmptyCentreHighStopabsRoundedHighStopFilledCentreabsSmallLowMeem absNumberSign absYearSignabsFootnoteSign absPageSignabsAfghaniSignabsCommaabsComma.downwardabsDateSeparator absVerseSign absMisraSignabsSmallHighSadMarkabsSmallHighAinMarkabsSmallHighRehHahMarkabsSmallHighRehDadMark absNameMarkerabsSmallHighTah absSemicolonabsSemicolon.downwardabsTripleDotPunctabsQuestionMarkabsPercentSignabsDecimalSeparatorabsThousandsSeparatorabsFivePointedStar absFullStop absEndOfAyahabsEndOfAyah.altabsEndOfAyah.altBabsStartOfRubElHizbabsPlaceOfSajdahornateLeftParenornateRightParenabsLigatureAllah absRialSignabsZeroabsOneabsTwoabsThreeabsFourabsFiveabsSixabsSevenabsEightabsNineabsEasternZero absEasternOne absEasternTwoabsEasternThreeabsEasternFourabsEasternFour.urduabsEasternFive absEasternSixabsEasternSix.urduabsEasternSevenabsEasternSeven.urduabsEasternEightabsEasternNine zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMediumabsThreeMedium absFourMedium absFiveMedium absSixMediumabsSevenMediumabsEightMedium absNineMediumabsEasternZeroMediumabsEasternOneMediumabsEasternTwoMediumabsEasternThreeMediumabsEasternFourMediumabsEasternFourMedium.urduabsEasternFiveMediumabsEasternSixMediumabsEasternSixMedium.urduabsEasternSevenMediumabsEasternSevenMedium.urduabsEasternEightMediumabsEasternNineMedium zeroSmalloneSmalltwoSmall threeSmall fourSmall fiveSmallsixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmallabsEasternZeroSmallabsEasternOneSmallabsEasternTwoSmallabsEasternThreeSmallabsEasternFourSmallabsEasternFourSmall.urduabsEasternFiveSmallabsEasternSixSmallabsEasternSixSmall.urduabsEasternSevenSmallabsEasternSevenSmall.urduabsEasternEightSmallabsEasternNineSmallabsEndOfAyah.aat1absEndOfAyah.aat2absEndOfAyah.aat3absEndOfAyah.alt.aat1absEndOfAyah.alt.aat2absEndOfAyah.alt.aat3absEndOfAyah.altB.aat1absEndOfAyah.altB.aat2absEndOfAyah.altB.aat3absEndOfAyah.sp1absEndOfAyah.sp2absEndOfAyah.sp3absNumberSign.aat1absNumberSign.aat2absNumberSign.aat3absNumberSign.sp1absNumberSign.sp2absNumberSign.sp3absYearSign.aat1absYearSign.aat2absYearSign.aat3absYearSign.aat4absYearSign.sp1absYearSign.sp2absYearSign.sp3absYearSign.sp4absFootnoteSign.aat1absFootnoteSign.aat2absFootnoteSign.sp1absFootnoteSign.sp2absPageSign.aat1absPageSign.aat2absPageSign.aat3absPageSign.sp1absPageSign.sp2absPageSign.sp3absShaddaFathatanabsShaddaDammatanabsShaddaKasratanabsShaddaFathaabsShaddaDammaabsShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlefabsSukun.leftOpenabsSukun.downOpenabsDammatan.sixNineabsAutoKashida_dot1 _dot1_tah _dot1_smallV _dot1_hat_dot2h _dot2h_tah_dot2v_dot3u _dot3u_tah_dot3d_dot3h_dot4_tah_madda_hamza _highHamza _wavyHamza _wavyHamza.b_wasla _hamzaDamma_bar_ring_smallV _invSmallV_damma_vline_hat_gafBar _gafBar_dot2h _gafBar_dot3u _gafBarShort_gafBarShort_dot2h_gafBarShort_dot3u_linesabsEndOfAyah.2absEndOfAyah.3absEndOfAyah.alt.2absEndOfAyah.alt.3absEndOfAyah.altB.2absEndOfAyah.altB.3absNumberSign.2absNumberSign.3 absYearSign.2 absYearSign.3 absYearSign.4absFootnoteSign.2 absPageSign.2 absPageSign.3absLamIni.preAlefabsLamSmallVIni.preAlefabsLamDotAboveIni.preAlefabsLamThreeDotsAboveIni.preAlefabsLamThreeDotsBelowIni.preAlefabsLamRetroIni.preAlefabsLamBarIni.preAlefabsAlefMaddaAboveFin.postLamIniabsAlefHamzaAboveFin.postLamIniabsAlefHamzaBelowFin.postLamIniabsAlefFin.postLamIni#absAlefWavyHamzaAboveFin.postLamIni#absAlefWavyHamzaBelowFin.postLamIniabsHighHamzaAlefFin.postLamIniabsAlefWaslaFin.postLamIniabsLamMed.preAlefabsLamSmallVMed.preAlefabsLamDotAboveMed.preAlefabsLamThreeDotsAboveMed.preAlefabsLamThreeDotsBelowMed.preAlefabsLamRetroMed.preAlefabsLamBarMed.preAlefabsAlefMaddaAboveFin.postLamMedabsAlefHamzaAboveFin.postLamMedabsAlefHamzaBelowFin.postLamMedabsAlefFin.postLamMed#absAlefWavyHamzaAboveFin.postLamMed#absAlefWavyHamzaBelowFin.postLamMedabsHighHamzaAlefFin.postLamMedabsAlefWaslaFin.postLamMed+++D Y+a:+_H8)+PH8)++ E}iDgrcompiler-5.2.1/test/GrcRegressionTest/fonts/SchMain.gdl000066400000000000000000000367751411153030700234350ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////// // // File: Scheherazade.gdl // // Main Graphite code file for Scheherazade, including all rules. // //////////////////////////////////////////////////////////////////////////////////////////// /* Change history: SJC 2007-May Based on Scheherazade Graphite Alpha */ // Do the experimental stuff: #define EXPER_UNICODE5x 1 #include "stddef.gdh" ScriptDirection = HORIZONTAL_RIGHT_TO_LEFT; Bidi = true; environment {MUnits=2048}; #if 0 // DESIGN NOTES One of the complex issues is mark attachment. Problems stem from the following issues: 1) Do we require marks to be in a particular order? The typical sequence of marks is shadda or hamza, followed by vowel, followed by quranic mark. Windows Arabic uses this order, but a canonical Unicode string will not always be in this order. Further, non-canonical Unicode strings can have the marks in any order. Decision: We need to support any order. 2) Do we visually identify illogical mark sequences? While the order of the marks on a given base is variable, certain marks should not occur simultaneously. For example, no more than one vowel mark should occur. If two vowels occur on the same base, we can visually identify this error by inserting a dotted circle between them which will then act as a base for the second vowel. But detecting this if we allow any order vowels (see 1) is a bit tricky. Decision: We want to provide this valuable feedback. 3) Exactly what marks are mutually exclusive? Seems clear that the vowels (kasra, fatha, damma, kasratan, fathatan, dammatan, and sukoon) are mutually exclusive with each other. For Arabic shadda, hamza above, hamza below, and maddah are also mutually exclusive, but I don't know about other languages. I also don't know about the remaining (i.e., quranic) marks. Decision: assume shadda, hamza a/b and maddah are mutually exclusive, and the quranic marks are mutually exclusive. 4) However, Jonathan says that (for now anyway) maddah works differently from shadda and hamza in that it is placed above the vowel rather than below. He's not sure this is right, but it's the way the OT code is working. To accomplish all this, the design we use is to reorder the marks to a logical order based on 4 classes: cMark1 class contains shadda and hamza cMark2 class contains the vowels cMark3 class contains maddah cMark4 class contains quranic marks Only cMark2 and cMark4 can have duplicates. Except right now there are no outer attachment points for the quranic marks, so multiples don't work right. #endif // Glyph definitions #include "SchGlyphs.gdh" #include "SchAPClasses.gdh" // Features #include "SchFeatures.gdh" #define alefAttached user1 // Now add additional classes we need: table(glyph) cMirrorOpen = (gparenleft gless gbracketleft gbraceleft ); cMirrorClose = (gparenright ggreater gbracketright gbraceright); // Not needed, since we aren't using these ligatures: /*** absLamAlef { component.lam = box(7 * advancewidth / 10, bb.bottom, advancewidth, bb.top); component.alef= box( 0, bb.bottom, 7 * advancewidth / 10, bb.top) }; absLamAlefFin { component.lam = box(6 * advancewidth / 10, bb.bottom, advancewidth, bb.top); component.alef= box( 0, bb.bottom, 6 * advancewidth / 10, bb.top) }; ***/ cShaddaKasraLigatures { component.shadda = box(bb.left, bb.bottom, bb.right, bb.bottom + bb.height/2); component.kasra = box(bb.left, bb.bottom + bb.height/2, bb.right, bb.top) }; endtable; // glyph // Allow a sequence of up to 4 marks. #define MARKS [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? #define MARKSBELOW [ cAnyMarksBelow [ cAnyMarksBelow cAnyMarksBelow? ]? ]? #define MARKSABOVE [ cAnyMarksAbove [ cAnyMarksAbove cAnyMarksAbove? ]? ]? table(substitution) pass(1) // Encoding, decomposition, mirroring #if EXPER_UNICODE5x // Handle unencoded glyphs: cUnencodedChar > cUnencodedGlyph; // Constructed Unicode 5.X characters: cUnencodedChar2Parts _ > cUnencodedGlyphPart1 cUnencodedGlyphPart2$1:1; #endif // QUESTION: are there more things that need to be decomposed? _ cAlefPlusMark > absAlef:2 cAlefMark ; (cMirrorOpen cMirrorClose) > (cMirrorClose cMirrorOpen); endpass; // 1 pass(2) // Reorder marks to "logical" order (this allows for canonical order input, // as Unicode got the canonical order wrong!) // NB: Only cMark2 (vowel marks) and cMark4 (quranic marks) can have multiples. // The rules below allow for up to 3 vowel marks and up to 3 quranic marks, // with a total of 4 marks. // We don't swap the glyphs, because that would mess up the original order, // rather we delete and insert. _ cMark234 cMark1 > @5:5 @2 _ / _ _ ^ [ cMark234 cMark234? ]? _; _ cMark34 cMark2 > @5:5 @2 _ / _ _ ^ [ cMark34 cMark34? ]? _; _ cMark4 cMark3 > @5:5 @2 _ / _ _ ^ [ cMark4 cMark4? ]? _; // Note: Jonathan says inserting circles is a bad idea for minority language support. endpass; // 2 pass(3) // ligature diacritics if (shaddaKasra == std) if (selectDiac) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) { comp.shadda.ref = @1; comp.kasra.ref = @2 }; else absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2); endif; endif; // QUESTION: do we really need these if we're doing the reordering above? // TODO: if we use them, make them into real ligatures //absShadda cShaddaMarks > _ cShaddaLigatures:(1 2); //absHamzaAbove cHamzaMarks > _ cHamzaLigatures:(1 2); endpass; // 3 table(glyph) // Avoid including zeroWidthJoiner twice in contextual form rules below. cDualLinkFinAux = cDualLinkFin; cDualLinkFinAux -= zeroWidthJoiner; cDualLinkMedAux = cDualLinkMed; cDualLinkMedAux -= zeroWidthJoiner; cRightLinkIsoAux = cRightLinkIso; cRightLinkIsoAux -= zeroWidthJoiner; cRightLinkFinAux = cRightLinkFin; cRightLinkFinAux -= zeroWidthJoiner; endtable; pass(4) // Contextual forms, lam-alef ligature, subtending marks // Lam-alef // Here is JK's elegant solution to contextual forms using a ligature glyph... // (absLam absLamFin)=L absAlef=A > // (absLamAlef absLamAlefFin):(L A) {component {lam.ref = @L; alef.ref=@A } } gAlefPlaceholder // / _ MARKS _ MARKS ^; // ...but we're using two separate glyphs, because of all the combinations. cLamIso cAlefIso > cLamIniPreAlef {alefAttached = false} cAlefFinPostLamIni / _ MARKS ^ _ ; cLamFin cAlefIso > cLamMedPreAlef {alefAttached = false} cAlefFinPostLamMed / _ MARKS ^ _ ; // All other contextual forms (cDualLinkIso cDualLinkFinAux absTatweel) (cDualLinkIso cRightLinkIsoAux absTatweel) > (cDualLinkIni cDualLinkMedAux absTatweel) (cDualLinkFin cRightLinkFinAux absTatweel) / _ cDiaDigit? MARKS ^ _ ; // Unicode 5.X // Subtending marks cSignTakes4 cDigitNormal cDigitNormal cDigitNormal cDigitNormal > cSign4 cDigitMedium cDigitMedium cDigitMedium cDigitMedium; cSignTakes3Medium cDigitNormal cDigitNormal cDigitNormal > cSign3Medium cDigitMedium cDigitMedium cDigitMedium; cSignTakes3Small cDigitNormal cDigitNormal cDigitNormal > cSign3Small cDigitSmall cDigitSmall cDigitSmall; cSignTakes2 cDigitNormal cDigitNormal > cSign2 cDigitMedium cDigitMedium; cSignTakes1 cDigitNormal > cSign1 cDigitMedium; endpass; // 4 pass(5) // Features, special behaviors absSuperscriptAlef > absSuperscriptAlef__large / cNeedsLargeDaggerAlef _; if (selectDiac) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(1 2) { component { base.ref = @1; hamza.ref = @2 }} _; else cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(1 2) _; endif; // Features if (meemAlt == sindhi) cno_Meem > cMeemSindhi; endif; if (hehAlt == kurdish) cno_Heh > cHehKurdish; endif; if (hehAlt == sindhi) cno_Heh > cHehSindhi; endif; if (hehAlt == urdu) cno_Heh > cHehUrdu; endif; if (easternDigits == sindhi) cEasternDigit > cEasternDigitSindhi; endif; if (easternDigits == urdu) cEasternDigit > cEasternDigitUrdu; endif; if (sukunAlt == jasmDown) cno_Sukun > cSukunDownOpen; endif; if (sukunAlt == jasmLeft) cno_Sukun > cSukunLeftOpen; endif; if (headOfKhahAlt == openLeft) cno_OpenLeft > cOpenLeft; endif; if (commaAlt) cno_Downward > cDownward; endif; if (dammatanAlt) cno_SixNine > cSixNine; endif; if (endOfAyah == circle) cEndOfAyah > cEndOfAyahCircle; endif; if (endOfAyah == square) cEndOfAyah > cEndOfAyahSquare; endif; if (!invis) // Note that substitution changes the directionality to the defaults for the // substituted glyph. :-( So be sure to fix it: cInvisible > zeroWidthSpace {directionality = @1.directionality}; endif; endpass; // 5 endtable; // sub table (positioning) // Must allow for at least cMark1Below and/or cMark2Below to intervene between base and marks above. // The code below is more general. pass(1) // Lam-alef components: cHasExit=L {alefAttached = true} cHasEntry=A {attach {to=@L; at=exit; with=entry}; insert=true} / ^ _ {alefAttached == false} MARKS _; // Marks above // QUESTION: the superscript-alef has both the alef and diaA att pts; the ordering of these // rules assumes the alef AP should be used if there are no intervening marks. cHasAlef=B cMatchesAlef {attach {to=@B; at=alef; with=alef_}; insert = true} / _ ^ _ ; // Special case: cozy up these diacritics a little, so they look more like the built-in ligatures: absShadda=S (absFatha absDamma absFathatan absDammatan) {attach {to=@S; at=point(diaA.x,diaA.y-80m); with=diaA_}; insert = selectDiac} / _ ^ MARKSBELOW _; absHamzaAbove=H (absFatha absDamma absFathatan absDammatan) {attach {to=@H; at=point(diaA.x+40m,diaA.y-80m); with=diaA_}; insert = selectDiac} / _ ^ MARKSBELOW _; #if EXPER_UNICODE5x // Constructed Unicode 5.X characters: cTakesDiaDigitA=B cDiaDigitAbove {attach {to=@B; at=diaDigitA; with=diaDigitA_}} / _ ^ _; #endif // Normal case: cHasDiaA=B cMatchesDiaA {attach {to=@B; at=diaA; with=diaA_}; insert = selectDiac} / _ ^ MARKSBELOW _; // Subtending marks; NB: at this point digits are in visual order, right to left, // so we attach the left-most (logically first) to the sign, and proceed to the right. cSign4=S cSignDigit=D4 { attach {to=@D3; at=digit; with=digit_ }; insert = true} cSignDigit=D3 { attach {to=@D2; at=digit; with=digit_ }; insert = true} cSignDigit=D2 { attach {to=@D1; at=digit; with=digit_ }; insert = true} cSignDigit=D1 { attach {to=@S; at=digit; with=digit_ }; insert = true}; cSign3=S cSignDigit=D3 { attach {to=@D2; at=digit; with=digit_ }; insert = true} cSignDigit=D2 { attach {to=@D1; at=digit; with=digit_ }; insert = true} cSignDigit=D1 { attach {to=@S; at=digit; with=digit_ }; insert = true}; cSign2=S cSignDigit=D2 { attach {to=@D1; at=digit; with=digit_ }; insert = true} cSignDigit=D1 { attach {to=@S; at=digit; with=digit_ }; insert = true}; cSign1=S cSignDigit { attach {to=@S; at=digit; with=digit_ }; insert = true}; endpass; // 1 pass(2) // Marks below // Special attachment points for lam-alef ligatures, to avoid collisions: cHasDia2B=B cMatchesDia2B {attach {to=@B; at=dia2B; with=dia2B_}; insert = selectDiac} / _ ^ _ ; #if EXPER_UNICODE5x // Constructed Unicode 5.X characters: cTakesDiaDigitB=B cDiaDigitBelow {attach {to=@B; at=diaDigitB; with=diaDigitB_}} / _ ^ _; #endif // Normal case: cHasDiaB=B cMatchesDiaB {attach {to=@B; at=diaB; with=diaB_}; insert = selectDiac} / _ ^ MARKSABOVE _; endpass; // 2 table(glyph) // classes for collision handling cNoonGhunna = (absNoonGhunna absNoonGhunnaIni absNoonGhunnaMed absNoonGhunnaFin); cKafLikeIniMed = (absKafIni absKafMed absKehehIni absKehehMed); cBehLikeIniMed = (absBehIni absBehMed); // one dot below cTehLikeIniMed = // no dots below (absTehIni absThehIni absTtehIni absTtehehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absTehehIni absTehMed absThehMed absTtehMed absTtehehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absTehehMed); cPehLikeIniMed = // multiple dots below (absPehIni absBehehIni absBeehIni absPehMed absBehehMed absBeehMed); cTchehLikeFin = (absTchehFin absHahFin absJeemFin absKafFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin); cKehehLikeFin = (absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin); absAutoKashida {dbgAw = aw; dbgBbW = bb.width}; endtable; // glyph table(subs) pass(6) // insert kashidas to handle collisions; however, the kashida we're inserting is // 250m, wider than we really need, so below we kern out some of the extra space cKafLikeIniMed _ > @1 absAutoKashida:R / _ MARKS _ absRnoonMed=R; absFarsiYehIni _ > @1 absAutoKashida:Y / _ MARKS _ (absYehFin absYehHamzaAboveFin)=Y; (absKehehIni absTchehIni absTchehMed absGafIni absNoonMed absAlef) _ > @1 absAutoKashida:R / _ MARKS _ absRrehFin=R ; endpass; // 6 endtable; // sub pass(3) // Collisions and adjustments // NOTE: If we add "constructed" characters (eg, those with digit-diacritics) we may need to // extend some of these rules to include optional cDiaDigit items. // Kashidas // kaf-rnoon cKafLikeIniMed MARKS absAutoKashida {kern.x = -30m} absRnoonMed {kern.x = -30m}; // farsiYeh-yeh absFarsiYehIni MARKS absAutoKashida {kern.x = -30m} (absYehFin absYehHamzaAboveFin) {kern.x = -30m}; // keheh-rreh (absKehehIni absTchehIni absTchehMed absGafIni absNoonMed absAlef) MARKS absAutoKashida {kern.x = -40m} absRrehFin {kern.x = -40m }; // Simple adjustments // alef-rreh absAlef MARKS absRreh {kern.x = 70m} ; // alef-nameMarker (absAlef absAlefFin) MARKS (absHeh absHehGoal absHehGoalIni) absNameMarker {shift.y = 220m}; // or: {shift.x = 250m}; #if EXPER_UNICODE5x // alefDigit-heh-nameMarker (absAlef absAlefFin) cDiaDigitAbove MARKS (absHeh absHehGoal absHehGoalIni) absNameMarker {shift.x = 275m}; #endif // noonGhunna-vowelInvSmallV cNoonGhunna (absNoonGhunnaMark absVowelInvSmallV) {shift.y = -75m} / (absKafIni absKafMed absKehehIni absKehehMed) _ _; cNoonGhunna (absNoonGhunnaMark absVowelInvSmallV) {shift.y = -150m}; // beh-kasra-tcheh if (kasraTcheh == raise) cBehLikeIniMed absKasra {shift.x = -60m; shift.y = 125m} cTchehLikeFin; cBehLikeIniMed absKasratan {shift.x = -100m; shift.y = 30m} cTchehLikeFin; endif; if (kasraTcheh == lower) cBehLikeIniMed absKasra {shift.x = -40m; shift.y = -200m} cTchehLikeFin; cBehLikeIniMed absKasratan {shift.x = -60m; shift.y = -130m} cTchehLikeFin; endif; cPehLikeIniMed absKasra {shift.y = -50m} cTchehLikeFin; cPehLikeIniMed absKasratan {shift.x = -50m} cTchehLikeFin; cTehLikeIniMed absKasratan {shift.x = -80m} cTchehLikeFin; // alef-maddah-gaf absAlef absMaddahAbove {shift.x = -130m} absGaf {kern.x = 30m}; absAlef absMaddahAbove {shift.x = -120m} absGafIni {kern.x = 70m}; // beh-rehBar cBehLikeIniMed MARKS absRehBarFin {kern.x = 50m}; cPehLikeIniMed MARKS absRehBarFin {kern.x = 70m}; // beh-fatha-jehRetro (cBehLikeIniMed cPehLikeIniMed cTehLikeIniMed) MARKS cMark2Above MARKS absJehRetro1Fin {kern.x = 65m}; // kehehDots-keheh (absKehehThreeDotsAboveIni absKehehThreeDotsAboveMed) MARKS cKehehLikeFin {kern.x = 70m}; endpass; endtable; // pos endenvironment; grcompiler-5.2.1/test/GrcRegressionTest/fonts/benchmark_test.png000066400000000000000000000507521411153030700251110ustar00rootroot00000000000000PNG  IHDR^%sRGBgAMA a cHRMz&u0`:pQ<QhIDATx^흉*\588- fڿSF_ @}  @7C @J@)? @@?(~,  MA_ @?}^}z_6I{82ʆɨ`)1 kB ĸue݌VC:jRv%bq0k-T4םU1 @` p>,<>7b2Q0RK˫/U+jW=ӌh4sSYlB[d.4~M{i"k:@ٶXL³#_c+fZY&^.Rρw@~( et(Tϲ|XUz$}1ۙ)"ƍ ziI;~vk#S\Juiv Uu32Lf/kֹa+^IyFMX.Nib֑oiAi:u-Y*_c{=a'z bN[|† =-fXA/:6Cy%o %|': W[&[~~,e9;;FA' ;^ \7 `ߴ݃WdDfts}:UzaA!S$52=o7S16&Ш0%9 pvZ`t906_x-/$t#MjƜ^dcS=q }{ʚi}1C&j/u C0ipvn f?}d1F@[cuSێʥjTNXޜLM{柴Yf%| d\SM8E!F3u+}9nX's|:c 2q)TH2(Cf9Eg%TϜ  [y+FZӵru6KϹ0k-b䑣(|! zIZI@1LS[aub#5QFo%RYY33ߴ_B\""\<\M2lZ]r A`;uK#Qjnp|[g]{_|X|Ip﫜HIž cˆK rY t Iw;KN79ˑF:CuU #w6kF7t~KON.Րݽ*E&hO!uN1k+,AjUn]*ˎlwfK0w0nn+e J°WH Fk uRf(ǖz2"K᪣Tݣ ^◡1[UbPmasbᗍeClv\2-h;Ԍ`1~ͱ|t/&՘&jhl_}쀁 ΆGC=M١^slCڍ- .Ð:9T:QpdA\cia JBKlrXi|~@ʪj[ Λ3=@B蝏ńYwd.*kD :$J^*۲C'sͱvFk°vAc7pKUZU4ө‘($3CYZM\}m^e&XKoPZOeJM-.NcC8sVkHYo7Mf+)왽і5gOIq6]CPs3^//86,j 6sDf;gUuJ6Gr`>;1 žjDxsUUC<-wlࢲŠ92$ta$]Estz׾gȗp-tPy3CkX(3E}:;h={zM|t'4AI{FXjc_D*'f]&@^2Ae_mw3cjN5-7Wv=f]cN+3y* ,''Q c^ ,U.̥?\AGӎuiTU~e!+>0 Wg =2VvKtK.^c{&MˡcCȱEHN;,aqRomLo[ұVg ;J,Kl e>˔I$֥H siVCT u<=MoNB 3B }}p4u5Y.k̛A.]ži#s.7gs`2|G[ӖsuZW:HXB Ad*YO92"#ֺ3l5ן1q, /4˅^2{rξ._$lxIEh_l[^¿MWt9831ⵜz՝y+9,%PVǐSZ3}=s.]#}Ũ"!k}!܉})dpd!tDm}Ο&%%ߧ0vْm>^E92RUXڱЏ]Uu.h>ZN'NUva,.KӟW]1SmɑLaL׿Ě}C1 }~VMt;L;Hܱ,ܻyRߏAZ|z0"vDLBlF^\ "1mк};ۭIXo83̥T`ExB}:+m98{۷* cwͦ(0 N)q-3y2X$Ꙏmd_El}ujWg`'^WcG)mGY+&蹐 b^@dK)yƌ8bXVi>% meR'9elzP1 vIQ ;F*FvnОSr åtɤȵI<^loPV1@i4Rn6ìo]eujئkٞsNC9K( rnOLv/&؉#u=5ul6/6R~ju}F9dxy i\:ʍR^D/Q۲2"Qx?iZ5}XɉHvt24\,f]|v0tYgbd1ks=lV|V6@wٓס\1dCoBfjHIDritVBY5 +_n&۲}o[d~0fNݒe#Zyt$5˯zw'inC^w*QJZ9 CL2hZ<,\?k~ʄg : ^й +)Ni.0|bp9Tbe1SA;Lܶ==\pV{[3h6ݚA v[v%@7M?888|i8z<8h1V G@a<:8@؈ c#T @x4FfDS?:8@؈! c^rl Ɨbw @&p¨||udzj<@B)a)3 ˶_ACLqw/20}.{kyBaDv_Me٠LRas3%x@O 5K}Q;# #q@!Ԍ\36D g@+6!@'^Q,wt^,4o)μTdOW 6u:(tzv/rw_GΆ?p!%٦SתFzqxa  ÏqnM pz(0D,ɖ;w`  @ A ' w@ П ?Sj @A @?F@ >@@(L } PR# @(  @ 03F@P@@agJ 0 'ϔ!@@a @Oџ)5B  @ П@Na>>=}3o:> @˜Vؘ JV@ cxRaA pP#@c,Kl+52lMQp, @]dBiן9+-TA@I ٚU]"K% # Fr c\͘ВBװ1 ő!@PɢlŠ)lUT$Ael]* E ,Ic 0tefD)Qv!@Nk*w/m~O;ho]c)yc et ,A%SG \ 㢁l@ 0N \ 㢁l@ 0N \ 㢁l@ 0N \ 㢁l@ 0N \ 㢁l@ 0y ɩA0x%is[_> jo'5BvVJ_|!#_AVsT[sUKE pS* M;ɋ?;g>jw-jһuMH@x}Ɣl7o'QRRSkV(s$ \ YK@W-Z py;+?1. ܁ ce @Qw_ (gWKy-hW<hdkCVқҘ Vas&Jn¶\_u)Y@hwar1ݱ@@xM((ԇ`+!TI]tq,ِRRQRGk0wU0! Da1Y c67L:`y׌5@x,sfve#?.GaUJ_Z SW1ң] (+ 3QrcX/0L  `8DaTQ+Rl c^ *TN[0@$Ba^kM fI00xIϥ0~kt<`Ic̔a@@"¸(T#o] #aB[ai, b1 'i>c It!ϧXJ;6+˂}S+ڝҨK}ioƐ3%\zh=F.EtJ/% CLC*:;|~[0~Hl\1"̔BQKa\aʭdV;?Ա8}_0bh+2/rK+4FtB=4 ܝ@7m}㳁?+ ú5DDx;yXagjv ]`>u+@bJQ9wҭ #}oޟmwm!;Ka^cs|ݑDe NfJrg)C#P0OFoFEQ!fDb(3S «ܼ"*N$uv)]w@|VlkY@N07 )Ȁ7Q04o:(1/j߭Z[G0RvH@i U'Jž]ɗN, #v?ݤ0;;W!"Mk0t׌S# C\y"Q!\> ^h }voGϨ0 _bê')q6Wѧ7J5LyA&7u0SRJ CH88,I>!Ĉ T#|}gI잝TE#fFjҌ  V( {I`Jb0 RDlͽ$ l+,a1)qi U'c}i P!t"ȥiS%;_STפ\yʉۙ7,T ̃qS01)tRQ   vR5F=?ܥ%BFSTf IZaG\oqnRak*6:@GKa8;^)a1!;eG+DvK['L i6́"\ Lj~=7>>G\[hx:XV [>陃?{[qo{H}$[nJn^ >ݕMomsH/Y ={\'(O| C?C؎@Jay#۷vERgQEHkb1*d u]mt%.PX}Fx<;s=m^1Xz7#ϿNz  @@-F-1C '3 @P.?b/Hx4@"¸ZeVR[Ay5n @@a˻Ck$* @F;amY>lb-}*vgsiHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k( S? @PO:>C&ؚ0CHĨ3 @`k1y/i=ڬ(?fA p,Ƭ@Z X ?bA p(BQ&1Q ơq@f =aM(5}/ /fPg.(i.Y XVc(9*Ea,Q_VeKi g=HĿQ2Lw.Q-$ C Н@ ;a!) LRa$ݝB@v&P0wCae,aRj!ɨ^336 @ Ih? gC/|3Iw =1<1׼k3(Ղ B.M==/>  㤁,@ 0.>  㤁,@ 0.>  㤁,@ OaZ_c_.QGr?ԼCҝ!@Τ0NɧK=ũYK ПY3/(1%O&Kuꔎ@$ptC@7mas&GL p%gP*Cˋ pQcPqtרK üCs$c _,ўШ O üCے۩J9 ;8^aW_. FCN0evX X&qUys $ 0Vu*| @%X[*| @%X[*| @%X[*| @%X[*| @%X[*| @%X[*| @%P0WHMIzQj?Rll2d|]K\scAx2aJl'vST~yjTa4+n?1;GG-4?:P @6*_7. p  $M/-?,i4f|\VVv[MU56Aij9Q}?V1[~ߡe^a$ <@VaTM3E#?K fqE_rTh$=U Ȯ p)1't*TeA䍹X[,/xUׄd^^5zVSU"җTX@x H'Ѕ23]7 ȅ`aR9ASvOj&Ԭ6D O @ TS"2baeшA(fMGlfN\s$S@5zVB3 FI,"sN<I[NX4FY:[8氆3{*^CFNu_"EFFiZ30}4򬇠}DS|ԧZ ]b- ܔ@z67f vШc0%8B}Z8Sʗ @=KRVպ?=KRx*&9S,ʥV5]v.Y2(r pO(aLyUZ6mu #L4 " (N~,WjSbVYi&C4FP PQ˳:3:a@;@aW%f:hlQ IFc.~tu R>bGջKxѺ73#Hn0䗹t'w0p* %p1*F3VgIF Gfgm=uJjmwx@@''P:K^{,4 jCų$@JB* auR -S( i#02!(fH= 8H,X*@pC1q]hv T@h"p1_tѺD%liDusp @;3)ٹhI;(BX=T@،fR1 @@a솚 @"xPq ni (W!@@a솚 @"xPq ni (W!@@a솚 @"xPq ni (W!@@a솚 @"xPq ni (W!@@a솚 @"xPq ni (W!@@a솚 @"xPq ni (W!@@a솚 @"xPq }^7}C*_j:rk* A PN 51kIJ(0ˊb`U(R\['(o% @h$P0\QV[ # cr  #J)J) 렩21|~S6No ӟ.5BJ 0:[9{Sr "]ς~_3gd ^La~00ڵ%WE\aAv'hEHBA5Jq@C SPy/ RQ7 RVjF0&rm@V* %<4Ԕ#E0 yzzV)'S MCOh? {}~pJ-^yF \q^ p=+%Ya1 @u c~lBA7 @` Na;Y$r@A`x$ @ !@( (D@* 0*Q (H @ !@( (D@* 0/Qy ൰pnWyG lD 0}XI| ]Mӿ68ݽNxH#{Wxk=a\1 y a&'<hGam@ֽNxH#3( @O;IIC&WIm ׽NxH+8 IK_..Z(_uҊE8aP1 y )ߡ"vV; 㼧!A! C&8CAa! @1P 5 1Q@g 8Cv f @7}Wv%y2\Z<n%oU_$Y߸vآD6[0|CJOj* k#s\ @`-^ #l*( 1ILCvQ .7un$s #$~nv;a2Y=8zaLa10ݪ,fp0]/^m'5#VJT*v˒{jФq3ɦDt!STg,@@7c+ 7Bb|sKNT%_QU{F:."^svVQ ZΜ1"ߩAM-V\a'Lk77f5"-85XBzG\ @+1u)0#I䑩%Mc4̐[RDdbJUhE~VT@}$eN0ՊPd %s')HH]؝?@LFҬtO"Os[je ^7gcr$fa5c/'w:@8H2UaH4 $0_+q%圩>,[`sP\ @3*:N4[F,doψ5K+-10-8 @` 1dYP9DPL|jy;^0I4^q01Pq+lyD{e8s- 6PCT0 ubV՛x ~\_-ƽ(d#0>^Fbm5ԈX@F}+tQawݲ4Q+hZa-lxxm?<(0KO-C &!|"_])hUg@LDa$٬"tHJ~ohIU(>:]`y6LZͯDbZ'Z!O- p dZ]H%ٻy?*/wnhE_/BUݲkM,ql^a=K&OىNHï@@BaH%^ae uuOI)AI6t*m?72+ RotNB;ΌgŸ1G)@ath U" 2  S uX q 09CŠUw!+@a :Ύ#!lE@[/8-d FC IQO[xf}Q7@@;@a4|> @PMAlT'9+JB8 4 @5ƭËs 0O [@a:8@8 4 @5ƭËs 0O [@a:8@8 4 @5ƭËs 0O [@a:8@8 4 @5ƭËs 0O [@a:8@8 4 @5ƭËs 0O [@a:8@8 4 @5ƭËs 0O [@a:8@8 4 @5}^7_ "eUF,B Haz*sϲXX-}>JU"4F9% @(T(BaE"vo*&R)@@Pa1 =P?⨄°ϒ`{~S6Nod YL/P9t@z+ $,?%s7+"]ς~_3gd  WW@@. ßԦ->GG-F GAWUtHQ@<ƲtVyOZ`CF@8y͛8! K`4DbcN4Ԕ#E0 mW)Ɓ @"P=:aV:,#̾rAk_ {a^9~g֏ g^>!b=b9@aܫ  \==GIxFaJ@)a|$Yvh @) {' 6:y1 # cGKi  @a\'VX @ub @a\'VX @ub @a\'VX @ub Ka_Uy[9w]gc) K 0խ׊| ]Mӿ6^a '<Ke/' @\ 0 JFKlU(@r^BjM#3vd[m8@x g |ld C5۽{tV,q({t  c| hQCmнNxH+} A$@%P0oYa,v9o,CaT0 #YaƠ0(>00ݡ Q@!¸LXK!@@7}Wv%y2\Z<n%oU_$Y߸vxTG6[0|CJOj* k#sE!@@$KaD"\0T!<8}i(ծ4T5΍$xNa/}n:L#9 . Ї@1e-0t6Y,Fa-G_OjF L%*ETe=5hҿdSLYJ":ܐةUt3`}N*j @Hm_a{DD\bdvʈ.+*yը"AǥTbP$5^2t\ @#J%d CgΘr60"Eۊ+t ['6 n8N($0ޑdz @z #:FJ'̑I䑩%td0F I.EHf,)AeL#^؊s5 a 6~$6z( wctI$kN"ST(Y7;A@:RM'1?2Jax4Z`5~7gcr$fa5f%Q@@g0RvR[^Y* )fwFke6α((LfߢtCw>N08IEahAhX9 CipO\_cSAs) PC&Kdħ 1ܑzOꈃь逖ɤvKlaMz~xQ`أ 2(H՞Q/3M $BtE&4SиΚ^ @Da$ddc:M~M%7A{*EYd҃" = \:ԈƼ N\-0b#vQ[_|^oX ,cѶXg-@x~0 ,zE攲ͱfv%_lYa@Ts{ZfS?L4I$4yDGI@ؙ@:M9@.Oq @P' &A.Oq @P' &A.Oq @P' &A.Oq @P' &A.Oq @P' &A.Oq @P' &A*A`  @w^K -U[/>Xi@O ^7@ha8\6FaL_}K *FBad -ϊ0 KjnJjșS0SDyT'S = GjL`: f] ˌ)U;,[i0=#@7'0/\Vcl}WlI Dgo˪/+:O;Ϻ@@euլ5ZQaG8A: @/vt19]I{#(A0bv~ @a#X\V>V>\^_$8[\W]{ض(r̆D`%{u&'eHq!p0l.M݊*7T=Zg|]0{з1σ0 ܜvs ʡڳ-[l;QPqElaMis_jӍ$ƞmG .{-7kIPŽ 0) =*lb_`Bg#Ub3Ύ؃E;\ŧIzYة7x(雔O <^=Bb֪& KkLTlt^؂ C)+ 쳯uS@ʮ|/zzmݬ/f%%̔L\ƔvHp.u-Q^)ӗ1y )^YO5oc@a:8x!7R=lk]o71O pseHy%Y>SQEah}}[tIBUP=3 s[P~)g[ 8rܘ|uWE:pv*5l^nVH-|hЭ{z(|)<@CoasV:vn\凘qSnK&ꨚP p16r ~Aϻ¨G>-zSl+i<ڰ샨 Q⊻iᚎpACcUY #d)Q:ffo,ԎT'Ǝ¨8) <@5]᩟ h+} N ?y*=}Mg\݉|ZʎN衏)i8%:0U|*&},\VݪHxד+]Pϻ`1 PN@X.*jW߳jXpmQ ٦@JRzqd~mS}{\VyHeL2+Su\2/ MzօUsiNfOrJW DzѪ5^?uǶJn([' ԮۣVZ׭Ƞ/=z2NV)F52G j=X`' A Ga3@ܿQnۮ'Vj71̼y%c[ӺzYء.Q{ځ pϻΧdٓ[Ml[Mp}=zy+c&]J!4x@/k English Eng 1051=0 Times New Roman Arial Charis SIL Courier New <?xml version="1.0" encoding="utf-16"?> <ValidCharacters> <WordForming>aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ-'</WordForming> <Numeric>0123456789</Numeric> <Other>U+0020–,;:!?.‘’"“”()[]{}/&amp;</Other> </ValidCharacters> <?xml version="1.0" encoding="utf-16"?> <MatchedPairs> <pair open="(" close=")" permitParaSpanning="false" /> <pair open="[" close="]" permitParaSpanning="true" /> <pair open="{" close="}" permitParaSpanning="false" /> </MatchedPairs> <?xml version="1.0" encoding="utf-16"?> <PunctuationPatterns> <pattern value=", " context="WordFinal" valid="true" /> <pattern value=". " context="WordFinal" valid="true" /> <pattern value=" “" context="WordInitial" valid="true" /> <pattern value="; " context="WordFinal" valid="true" /> <pattern value=".” " context="WordFinal" valid="true" /> <pattern value="&#x27;" context="WordMedial" valid="true" /> <pattern value=": " context="WordFinal" valid="true" /> <pattern value="? " context="WordFinal" valid="true" /> <pattern value=" ‘" context="WordInitial" valid="true" /> <pattern value="–" context="WordMedial" valid="true" /> <pattern value="! " context="WordFinal" valid="true" /> <pattern value="-" context="WordMedial" valid="true" /> <pattern value="?” " context="WordFinal" valid="true" /> <pattern value=",” " context="WordFinal" valid="true" /> <pattern value=" (" context="WordInitial" valid="true" /> <pattern value=".’ " context="WordFinal" valid="true" /> <pattern value="– " context="WordFinal" valid="true" /> <pattern value=" “ " context="Isolated" valid="false" /> <pattern value="!” " context="WordFinal" valid="true" /> <pattern value=") " context="WordFinal" valid="true" /> <pattern value=" ” " context="Isolated" valid="false" /> <pattern value="," context="WordMedial" valid="false" /> <pattern value=",’ " context="WordFinal" valid="true" /> <pattern value=" / " context="Isolated" valid="false" /> <pattern value=".”" context="WordMedial" valid="false" /> <pattern value="?’ " context="WordFinal" valid="true" /> <pattern value="&#x27; " context="WordFinal" valid="true" /> <pattern value=".) " context="WordFinal" valid="true" /> <pattern value="); " context="WordFinal" valid="true" /> <pattern value="!’ " context="WordFinal" valid="true" /> <pattern value=" ); " context="Isolated" valid="true" /> <pattern value=".’" context="WordMedial" valid="false" /> <pattern value="), " context="WordFinal" valid="true" /> <pattern value="/" context="WordMedial" valid="false" /> <pattern value="” " context="WordFinal" valid="true" /> <pattern value=" . " context="Isolated" valid="false" /> <pattern value="). " context="WordFinal" valid="true" /> <pattern value=";" context="WordMedial" valid="false" /> <pattern value=" ; " context="Isolated" valid="false" /> <pattern value=" ) " context="Isolated" valid="false" /> <pattern value=" , " context="Isolated" valid="false" /> <pattern value="’? " context="WordFinal" valid="true" /> <pattern value="’ " context="WordFinal" valid="true" /> <pattern value=" ’ " context="Isolated" valid="false" /> <pattern value="?" context="WordMedial" valid="false" /> <pattern value=" ”" context="WordInitial" valid="false" /> <pattern value=" // " context="Isolated" valid="false" /> <pattern value=",”" context="WordMedial" valid="false" /> <pattern value="’?” " context="WordFinal" valid="true" /> <pattern value="’" context="WordMedial" valid="false" /> <pattern value="”; " context="WordFinal" valid="false" /> <pattern value=" ? " context="Isolated" valid="false" /> <pattern value="): " context="WordFinal" valid="true" /> <pattern value="”–" context="WordMedial" valid="true" /> <pattern value="’–" context="WordMedial" valid="true" /> <pattern value=":" context="WordMedial" valid="false" /> <pattern value="”? " context="WordFinal" valid="true" /> <pattern value="’; " context="WordFinal" valid="true" /> <pattern value="?”" context="WordMedial" valid="false" /> <pattern value="”– " context="WordFinal" valid="true" /> <pattern value=",’" context="WordMedial" valid="false" /> <pattern value=" –" context="WordInitial" valid="true" /> <pattern value=" ’" context="WordInitial" valid="false" /> <pattern value="”" context="WordMedial" valid="false" /> <pattern value="!”" context="WordMedial" valid="false" /> <pattern value=" ). " context="Isolated" valid="false" /> <pattern value="?’" context="WordMedial" valid="false" /> <pattern value=")– " context="WordFinal" valid="true" /> <pattern value="–“" context="WordMedial" valid="true" /> <pattern value=" //" context="WordInitial" valid="false" /> <pattern value=" ! " context="Isolated" valid="false" /> <pattern value=" – " context="Isolated" valid="false" /> <pattern value="., " context="WordFinal" valid="false" /> <pattern value="!" context="WordMedial" valid="false" /> <pattern value="’– " context="WordFinal" valid="true" /> <pattern value=" : " context="Isolated" valid="false" /> <pattern value=" ?” " context="Isolated" valid="false" /> <pattern value=" ‘ " context="Isolated" valid="false" /> <pattern value=" .” " context="Isolated" valid="false" /> <pattern value="?”– " context="WordFinal" valid="true" /> <pattern value="....” " context="WordFinal" valid="true" /> <pattern value=".)" context="WordMedial" valid="false" /> <pattern value=",, " context="WordFinal" valid="false" /> <pattern value=".”) " context="WordFinal" valid="true" /> <pattern value="!’" context="WordMedial" valid="false" /> <pattern value=" ), " context="Isolated" valid="true" /> <pattern value=" ," context="WordInitial" valid="false" /> <pattern value=" [" context="WordInitial" valid="true" /> <pattern value=".] " context="WordFinal" valid="true" /> <pattern value=" ( " context="Isolated" valid="true" /> <pattern value="!’: " context="WordFinal" valid="false" /> <pattern value="!– " context="WordFinal" valid="false" /> <pattern value=" )/ " context="Isolated" valid="false" /> <pattern value=" “(" context="WordInitial" valid="false" /> <pattern value=")–" context="WordMedial" valid="false" /> <pattern value=")" context="WordMedial" valid="false" /> <pattern value="’!” " context="WordFinal" valid="false" /> <pattern value=")," context="WordMedial" valid="false" /> <pattern value="?”) " context="WordFinal" valid="true" /> <pattern value=" ." context="WordInitial" valid="false" /> <pattern value="–‘" context="WordMedial" valid="false" /> <pattern value="?”–" context="WordMedial" valid="true" /> <pattern value="?’– " context="WordFinal" valid="false" /> <pattern value="’. " context="WordFinal" valid="false" /> <pattern value="!”–" context="WordMedial" valid="false" /> <pattern value=" (“" context="WordInitial" valid="true" /> <pattern value="?– " context="WordFinal" valid="false" /> <pattern value="- " context="WordFinal" valid="false" /> <pattern value=" “. " context="Isolated" valid="false" /> <pattern value=" !’ " context="Isolated" valid="false" /> <pattern value="?) " context="WordFinal" valid="true" /> <pattern value=".)” " context="WordFinal" valid="true" /> <pattern value=" &#x27;" context="WordInitial" valid="false" /> <pattern value="!”? " context="WordFinal" valid="false" /> <pattern value=".)– " context="WordFinal" valid="false" /> <pattern value="”), " context="WordFinal" valid="true" /> <pattern value="”: " context="WordFinal" valid="true" /> <pattern value=";) " context="WordFinal" valid="false" /> </PunctuationPatterns> <?xml version="1.0" encoding="utf-16"?> <QuotationMarks LangUsedFrom="en" ContinuationType="RequireAll" ContinuationMark="Opening"> <Levels> <Pair Opening="“" Closing="”" /> <Pair Opening="‘" Closing="’" /> </Levels> </QuotationMarks> en en standard Default Collation Latin1_General_CI_AI Charis SIL Scheherazade Demo Charis SIL Scheherazade Demo eabs eabs keyman Arabic Demo Latin1_General_CI_AI Normal Normal Bulleted List Normal Bulleted List Heading 1 Normal Heading 1 Heading 2 Normal Heading 2 Heading 3 Normal Heading 3 Numbered List Normal Numbered List External Link Normal External Link This is a file to test that the GrcRegressionTest benchmark fonts are basically functional. Ideally this file should be enhanced to actually test all the behavior of each font. For now we just test that the file loads and does some basic things. Charis: Ħ ə̌̊ l ̈ l o wor̫l͝d. ꜓꜔꜒꜔꜕꜖꜒꜕ Padauk: တစြရုနူဃြ့ Pig Latin v2: Hello world. Pig Latin v3: Hello world. Scheherazade: ڇڇَڇڶڟڇَڇ ٯٯۜٯ ٯ ِ ّ ٯ ِ ّ benchmark_test.wpx &[page],&[date] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/000077500000000000000000000000001411153030700234265ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/$_temp.gdl000066400000000000000000011160161411153030700252740ustar00rootroot00000000000000#line 1 "CharisMain.gdl" #line 5 table(glyph) {MUnits = 2048}; ANY{order = 0}; g__notdef = glyphid(0); g__null = glyphid(1); g_nonmarkingreturn = glyphid(2); g_space = glyphid(3) {H = point(300m, 0m); O = point(350m, 0m); R = point(600m, 1000m); L = point(300m, -100m); U = point(300m, 1500m)}; g_exclam = glyphid(4); g_quotedbl = glyphid(5); g_numbersign = glyphid(6); g_dollar = glyphid(7); g_percent = glyphid(8); g_ampersand = glyphid(9); g_quotesingle = glyphid(10); g_parenleft = glyphid(11); g_parenright = glyphid(12); g_asterisk = glyphid(13); g_plus = glyphid(14); g_comma = glyphid(15); g_hyphen = glyphid(16) {U = point(327m, 1100m)}; g_period = glyphid(17); g_slash = glyphid(18); g_zero = glyphid(19) {L = point(576m, -100m); U = point(576m, 1500m)}; g_one = glyphid(20) {L = point(576m, -100m); U = point(576m, 1500m)}; g_two = glyphid(21) {L = point(576m, -100m); U = point(576m, 1500m)}; g_three = glyphid(22) {L = point(576m, -100m); U = point(576m, 1500m)}; g_four = glyphid(23) {L = point(576m, -100m); U = point(576m, 1500m)}; g_five = glyphid(24) {L = point(575m, -100m); U = point(575m, 1500m)}; g_six = glyphid(25) {L = point(576m, -100m); U = point(576m, 1500m)}; g_seven = glyphid(26) {L = point(576m, -100m); U = point(576m, 1500m)}; g_eight = glyphid(27) {L = point(575m, -100m); U = point(575m, 1500m)}; g_nine = glyphid(28) {L = point(576m, -100m); U = point(576m, 1500m)}; g_colon = glyphid(29); g_semicolon = glyphid(30); g_less = glyphid(31); g_equal = glyphid(32); g_greater = glyphid(33); g_question = glyphid(34); g_at = glyphid(35); g__a = glyphid(36) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1500m)}; g__b = glyphid(37) {L = point(612m, -100m); U = point(612m, 1500m)}; g__c = glyphid(38) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1500m)}; g__d = glyphid(39) {L = point(690m, -100m); U = point(690m, 1500m)}; g__e = glyphid(40) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1500m)}; g__f = glyphid(41) {L = point(549m, -100m); U = point(549m, 1500m)}; g__g = glyphid(42) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1500m)}; g__h = glyphid(43) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1500m)}; g__i = glyphid(44) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1500m)}; g__j = glyphid(45) {L = point(410m, -100m); U = point(675m, 1500m)}; g__k = glyphid(46) {H = point(686m, 0m); L = point(686m, -100m); U = point(686m, 1500m)}; g__l = glyphid(47) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -100m); U = point(553m, 1500m)}; g__m = glyphid(48) {L = point(895m, -100m); U = point(895m, 1500m)}; g__n = glyphid(49) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1500m)}; g__o = glyphid(50) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1500m)}; g__p = glyphid(51) {L = point(578m, -100m); U = point(578m, 1500m)}; g__q = glyphid(52) {L = point(757m, -270m); U = point(757m, 1500m)}; g__r = glyphid(53) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1500m)}; g__s = glyphid(54) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1500m)}; g__t = glyphid(55) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1500m)}; g__u = glyphid(56) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1500m)}; g__v = glyphid(57) {H = point(705m, 0m); O = point(727m, 0m); L = point(705m, -100m); U = point(705m, 1500m)}; g__w = glyphid(58) {L = point(973m, -100m); U = point(983m, 1500m)}; g__x = glyphid(59) {L = point(649m, -100m); U = point(649m, 1500m)}; g__y = glyphid(60) {L = point(641m, -100m); U = point(641m, 1500m)}; g__z = glyphid(61) {L = point(610m, -100m); U = point(610m, 1500m)}; g_bracketleft = glyphid(62); g_backslash = glyphid(63); g_bracketright = glyphid(64); g_asciicircum = glyphid(65) {U = point(335m, 1500m)}; g_underscore = glyphid(66); g_grave = glyphid(67) {U = point(294m, 1500m)}; g_a = glyphid(68) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1100m)}; g_b = glyphid(69) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -100m); U = point(600m, 1540m)}; g_c = glyphid(70) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1100m)}; g_d = glyphid(71) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -100m); U = point(586m, 1540m)}; g_e = glyphid(72) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1100m)}; g_f = glyphid(73) {H = point(428m, 0m); L = point(296m, -100m); U = point(506m, 1480m)}; g_g = glyphid(74) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1100m)}; g_h = glyphid(75) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1540m)}; g_i = glyphid(76) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -100m); U = point(310m, 1100m)}; g_j = glyphid(77) {L = point(137m, -500m); U = point(328m, 1100m)}; g_k = glyphid(78) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -100m); U = point(551m, 1540m)}; g_l = glyphid(79) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1580m)}; g_m = glyphid(80) {H = point(868m, 0m); L = point(868m, -100m); U = point(868m, 1100m)}; g_n = glyphid(81) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1100m)}; g_o = glyphid(82) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g_p = glyphid(83) {H = point(301m, -435m); R = point(1145m, 1000m); L = point(559m, -500m); U = point(559m, 1100m)}; g_q = glyphid(84) {R = point(1124m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g_r = glyphid(85) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1100m)}; g_s = glyphid(86) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1100m)}; g_t = glyphid(87) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1363m)}; g_u = glyphid(88) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1100m)}; g_v = glyphid(89) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g_w = glyphid(90) {L = point(801m, -100m); U = point(830m, 1100m)}; g_x = glyphid(91) {H = point(785m, 0m); L = point(522m, -100m); U = point(522m, 1100m)}; g_y = glyphid(92) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1100m)}; g_z = glyphid(93) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1100m)}; g_braceleft = glyphid(94); g_bar = glyphid(95); g_braceright = glyphid(96); g_asciitilde = glyphid(97); g__adieresis = glyphid(98) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__aring = glyphid(99) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2060m)}; g__ccedilla = glyphid(100) {L = point(730m, -500m); U = point(750m, 1500m)}; g__eacute = glyphid(101) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__ntilde = glyphid(102) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g__odieresis = glyphid(103) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__udieresis = glyphid(104) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g_aacute = glyphid(105) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_agrave = glyphid(106) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_acircumflex = glyphid(107) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_adieresis = glyphid(108) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_atilde = glyphid(109) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_aring = glyphid(110) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1660m)}; g_ccedilla = glyphid(111) {R = point(954m, 1000m); L = point(525m, -500m); U = point(550m, 1100m)}; g_eacute = glyphid(112) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_egrave = glyphid(113) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_ecircumflex = glyphid(114) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_edieresis = glyphid(115) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_iacute = glyphid(116) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_igrave = glyphid(117) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_icircumflex = glyphid(118) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_idieresis = glyphid(119) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_ntilde = glyphid(120) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g_oacute = glyphid(121) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_ograve = glyphid(122) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_ocircumflex = glyphid(123) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_odieresis = glyphid(124) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_otilde = glyphid(125) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_uacute = glyphid(126) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_ugrave = glyphid(127) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_ucircumflex = glyphid(128) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_udieresis = glyphid(129) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_dagger = glyphid(130); g_degree = glyphid(131); g_cent = glyphid(132); g_sterling = glyphid(133); g_section = glyphid(134); g_bullet = glyphid(135); g_paragraph = glyphid(136); g_germandbls = glyphid(137) {L = point(631m, -100m); U = point(631m, 1540m)}; g_registered = glyphid(138); g_copyright = glyphid(139); g_trademark = glyphid(140); g_acute = glyphid(141) {U = point(421m, 1500m)}; g_dieresis = glyphid(142) {U = point(323m, 1500m)}; g_notequal = glyphid(143); g__a_e = glyphid(144) {L = point(1100m, -100m); U = point(1100m, 1500m)}; g__oslash = glyphid(145) {L = point(748m, -100m); U = point(748m, 1500m)}; g_infinity = glyphid(146); g_plusminus = glyphid(147); g_lessequal = glyphid(148); g_greaterequal = glyphid(149); g_yen = glyphid(150); g_mu = glyphid(151); g_partialdiff = glyphid(152); g_summation = glyphid(153) {L = point(607m, -100m); U = point(607m, 1500m)}; g_product = glyphid(154); g_pi = glyphid(155) {L = point(608m, -100m); U = point(608m, 1100m)}; g_integral = glyphid(156); g_ordfeminine = glyphid(157); g_ordmasculine = glyphid(158); g__omega = glyphid(159); g_ae = glyphid(160) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1100m)}; g_oslash = glyphid(161) {H = point(557m, 0m); O = point(608m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g_questiondown = glyphid(162); g_exclamdown = glyphid(163); g_logicalnot = glyphid(164); g_radical = glyphid(165); g_florin = glyphid(166) {L = point(299m, -500m); U = point(299m, 1540m)}; g_approxequal = glyphid(167); g__delta = glyphid(168); g_guillemotleft = glyphid(169); g_guillemotright = glyphid(170); g_ellipsis = glyphid(171); g00A0 = glyphid(172) {H = point(300m, 0m); O = point(350m, 0m); R = point(600m, 1000m); L = point(300m, -100m); U = point(300m, 1500m)}; g__agrave = glyphid(173) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__atilde = glyphid(174) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__otilde = glyphid(175) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__o_e = glyphid(176) {L = point(1030m, -100m); U = point(1030m, 1500m)}; g_oe = glyphid(177) {H = point(840m, 0m); O = point(897m, 0m); R = point(1679m, 1000m); L = point(840m, -100m); U = point(840m, 1100m)}; g_endash = glyphid(178); g_emdash = glyphid(179); g_quotedblleft = glyphid(180); g_quotedblright = glyphid(181); g_quoteleft = glyphid(182); g_quoteright = glyphid(183); g_divide = glyphid(184); g_lozenge = glyphid(185); g_ydieresis = glyphid(186) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g__ydieresis = glyphid(187) {L = point(641m, -100m); U = point(641m, 1900m)}; g_fraction = glyphid(188); g_currency = glyphid(189); g_guilsinglleft = glyphid(190); g_guilsinglright = glyphid(191); g_fi = glyphid(192); g_fl = glyphid(193); g_daggerdbl = glyphid(194); g_periodcentered = glyphid(195); g_quotesinglbase = glyphid(196); g_quotedblbase = glyphid(197); g_perthousand = glyphid(198); g__acircumflex = glyphid(199) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__ecircumflex = glyphid(200) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__aacute = glyphid(201) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__edieresis = glyphid(202) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__egrave = glyphid(203) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__iacute = glyphid(204) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__icircumflex = glyphid(205) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__idieresis = glyphid(206) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__igrave = glyphid(207) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__oacute = glyphid(208) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__ocircumflex = glyphid(209) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g25CC = glyphid(210) {H = point(533m, 0m); O = point(583m, 0m); L = point(533m, -100m); U = point(533m, 1100m)}; g__ograve = glyphid(211) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__uacute = glyphid(212) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ucircumflex = glyphid(213) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ugrave = glyphid(214) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g_dotlessi = glyphid(215) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g_circumflex = glyphid(216); g_tilde = glyphid(217); g_macron = glyphid(218); g_breve = glyphid(219) {U = point(305m, 1500m)}; g_dotaccent = glyphid(220); g_ring = glyphid(221); g_cedilla = glyphid(222) {L = point(235m, -500m)}; g_hungarumlaut = glyphid(223); g_ogonek = glyphid(224) {L = point(279m, -400m)}; g_caron = glyphid(225) {U = point(335m, 1500m)}; g_a_2_story_slant_italic = glyphid(226) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(487m, -100m); U = point(487m, 1100m)}; g0430 = glyphid(227) {L = point(510m, -100m); U = point(510m, 1100m)}; g2090 = glyphid(228) {L = point(355m, -525m); U = point(355m, 200m)}; g1D43 = glyphid(229) {L = point(360m, 750m); U = point(360m, 1450m)}; g0363 = glyphid(230) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g0201 = glyphid(231) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g1EAD = glyphid(232) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1500m)}; g1EA5 = glyphid(233) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EA5_vN = glyphid(234) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m)}; g1EA7 = glyphid(235) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EA7_vN = glyphid(236) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m)}; g1EAB = glyphid(237) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EAB_vN = glyphid(238) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1825m)}; g1EA9 = glyphid(239) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EA9_vN = glyphid(240) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m)}; g0203 = glyphid(241) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_abreve = glyphid(242) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g1EB7 = glyphid(243) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1500m)}; g1EAF = glyphid(244) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EAF_vN = glyphid(245) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(629m, 1790m)}; g1EB1 = glyphid(246) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EB1_vN = glyphid(247) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(394m, 1790m)}; g1EB5 = glyphid(248) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EB5_vN = glyphid(249) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1825m)}; g1EB3 = glyphid(250) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1900m)}; g1EB3_vN = glyphid(251) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1717m)}; g04D1 = glyphid(252) {L = point(510m, -100m); U = point(510m, 1500m)}; g01CE = glyphid(253) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g_amacron = glyphid(254) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1470m)}; g04D3 = glyphid(255) {L = point(510m, -100m); U = point(510m, 1500m)}; g01DF = glyphid(256) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1870m)}; g0227 = glyphid(257) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g01E1 = glyphid(258) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1905m)}; g_aringacute = glyphid(259) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 2060m)}; g1E9A = glyphid(260) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1580m)}; g1EA3 = glyphid(261) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1500m)}; g1EA1 = glyphid(262) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1100m)}; g1E01 = glyphid(263) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -657m); U = point(510m, 1100m)}; g_aogonek = glyphid(264) {H = point(761m, 0m); R = point(1042m, 1000m); L = point(846m, -400m); U = point(510m, 1100m)}; g_aogonek_retro_hook_style = glyphid(265) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -500m); U = point(510m, 1100m)}; g1D8F = glyphid(266) {L = point(510m, -100m); U = point(510m, 1100m)}; g2C65 = glyphid(267) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(510m, -100m); U = point(510m, 1100m)}; g_atilde_2_story_slant_italic = glyphid(268) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(487m, -100m); U = point(487m, 1500m)}; g1EA1_2StorySlantItalic = glyphid(269) {H = point(761m, 0m); O = point(904m, 0m); R = point(1042m, 1000m); L = point(487m, -500m); U = point(487m, 1100m)}; g0250 = glyphid(270) {R = point(1042m, 1000m); L = point(504m, -100m); U = point(504m, 1100m)}; g0250_2StorySlantItalic = glyphid(271) {R = point(1042m, 1000m); L = point(504m, -100m); U = point(504m, 1100m)}; g1D44 = glyphid(272) {L = point(332m, 725m); U = point(332m, 1457m)}; g0251 = glyphid(273) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1100m)}; g_a_sng_story = glyphid(274) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1100m)}; g1D45 = glyphid(275) {L = point(386m, 725m); U = point(386m, 1457m)}; g_aacute_sng_story = glyphid(276) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_agrave_sng_story = glyphid(277) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g0201_sngStory = glyphid(278) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_acircumflex_sng_story = glyphid(279) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g1EAD_sngStory = glyphid(280) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1500m)}; g1EA5_sngStory = glyphid(281) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EA7_sngStory = glyphid(282) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EAB_sngStory = glyphid(283) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EA9_sngStory = glyphid(284) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g0203_sngStory = glyphid(285) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_abreve_sng_story = glyphid(286) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g1EB7_sngStory = glyphid(287) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1500m)}; g1EAF_sngStory = glyphid(288) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EB1_sngStory = glyphid(289) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EB5_sngStory = glyphid(290) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g1EB3_sngStory = glyphid(291) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1900m)}; g01CE_sngStory = glyphid(292) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_atilde_sng_story = glyphid(293) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g_amacron_sng_story = glyphid(294) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1470m)}; g_adieresis_sng_story = glyphid(295) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g01DF_sngStory = glyphid(296) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1870m)}; g0227_sngStory = glyphid(297) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g01E1_sngStory = glyphid(298) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1870m)}; g_aring_sng_story = glyphid(299) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1660m)}; g_aringacute_sng_story = glyphid(300) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 2060m)}; g1E9A_sngStory = glyphid(301) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1580m)}; g1EA3_sngStory = glyphid(302) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -100m); U = point(587m, 1500m)}; g1EA1_sngStory = glyphid(303) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1100m)}; g1E01_sngStory = glyphid(304) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -657m); U = point(587m, 1100m)}; g_aogonek_sng_story = glyphid(305) {H = point(587m, 0m); R = point(1155m, 1000m); L = point(920m, -400m); U = point(587m, 1100m)}; g_aogonek_sng_story_retro_hook_style = glyphid(306) {H = point(587m, 0m); O = point(978m, 0m); R = point(1155m, 1000m); L = point(587m, -500m); U = point(587m, 1100m)}; g1D90 = glyphid(307) {L = point(588m, -100m); U = point(588m, 1100m)}; g0252 = glyphid(308) {H = point(568m, 0m); O = point(621m, 0m); R = point(1155m, 1000m); L = point(568m, -100m); U = point(568m, 1100m)}; g1D9B = glyphid(309) {L = point(374m, 725m); U = point(374m, 1457m)}; g_ae_2_story_slant_italic = glyphid(310) {H = point(738m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(738m, -100m); U = point(738m, 1100m)}; g04D5 = glyphid(311) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1100m)}; gF1A1 = glyphid(312) {L = point(485m, 725m); U = point(485m, 1450m)}; g_aeacute = glyphid(313) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1500m)}; g01E3 = glyphid(314) {H = point(770m, 0m); O = point(792m, 0m); R = point(1477m, 1000m); L = point(770m, -100m); U = point(770m, 1500m)}; g1D02 = glyphid(315) {L = point(738m, -100m); U = point(738m, 1100m)}; g1D46 = glyphid(316) {L = point(485m, 725m); U = point(485m, 1450m)}; g_alpha = glyphid(317) {L = point(641m, -100m); U = point(641m, 1100m)}; gF247 = glyphid(318) {L = point(867m, -500m); U = point(867m, 1500m)}; gF248 = glyphid(319) {L = point(948m, -500m); U = point(948m, 1540m)}; g0410 = glyphid(320) {L = point(683m, -100m); U = point(683m, 1500m)}; g1D2C = glyphid(321) {L = point(454m, 725m); U = point(454m, 1650m)}; g1D00 = glyphid(322) {L = point(561m, -100m); U = point(561m, 1100m)}; g0200 = glyphid(323) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g1EA4 = glyphid(324) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EA4_vN = glyphid(325) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m)}; g1EA6 = glyphid(326) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EA6_vN = glyphid(327) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m)}; g1EAA = glyphid(328) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EAA_vN = glyphid(329) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2225m)}; g1EA8 = glyphid(330) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EA8_vN = glyphid(331) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m)}; g1EAC = glyphid(332) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1900m)}; g0202 = glyphid(333) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__abreve = glyphid(334) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g1EAE = glyphid(335) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EAE_vN = glyphid(336) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(802m, 2190m)}; g1EB0 = glyphid(337) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EB0_vN = glyphid(338) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(567m, 2190m)}; g1EB4 = glyphid(339) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EB4_vN = glyphid(340) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2225m)}; g1EB2 = glyphid(341) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2300m)}; g1EB2_vN = glyphid(342) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2117m)}; g1EB6 = glyphid(343) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1900m)}; g04D0 = glyphid(344) {L = point(683m, -100m); U = point(683m, 1935m)}; g01CD = glyphid(345) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g__amacron = glyphid(346) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1870m)}; g04D2 = glyphid(347) {L = point(683m, -100m); U = point(683m, 1900m)}; g01DE = glyphid(348) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2270m)}; g0226 = glyphid(349) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g01E0 = glyphid(350) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2305m)}; g__aringacute = glyphid(351) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 2460m)}; g1EA2 = glyphid(352) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -100m); U = point(683m, 1900m)}; g1EA0 = glyphid(353) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1500m)}; g1E00 = glyphid(354) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -657m); U = point(683m, 1500m)}; g__aogonek = glyphid(355) {H = point(1109m, 0m); L = point(1209m, -400m); U = point(683m, 1500m)}; g__aogonek_retro_hook_style = glyphid(356) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(683m, -500m); U = point(683m, 1500m)}; g023A = glyphid(357) {H = point(1109m, 0m); O = point(1267m, 0m); L = point(690m, -100m); U = point(690m, 1500m)}; g20B3 = glyphid(358); gF208 = glyphid(359) {L = point(721m, -100m); U = point(721m, 1500m)}; gF209 = glyphid(360) {L = point(707m, -100m); U = point(707m, 1500m)}; g04D4 = glyphid(361) {L = point(1100m, -100m); U = point(1100m, 1500m)}; g1D2D = glyphid(362) {L = point(715m, 725m); U = point(715m, 1650m)}; g1D01 = glyphid(363) {L = point(759m, -100m); U = point(753m, 1100m)}; g__a_eacute = glyphid(364) {L = point(1100m, -100m); U = point(1100m, 1900m)}; g01E2 = glyphid(365) {L = point(1100m, -100m); U = point(1100m, 1870m)}; g1D47 = glyphid(366) {L = point(372m, 725m); U = point(372m, 1700m)}; g1E03 = glyphid(367) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -100m); U = point(600m, 1940m)}; g1E07 = glyphid(368) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -500m); U = point(600m, 1540m)}; g1E05 = glyphid(369) {H = point(600m, 0m); R = point(1137m, 1000m); L = point(600m, -500m); U = point(600m, 1540m)}; g1D80 = glyphid(370) {L = point(600m, -500m); U = point(600m, 1540m)}; g0180_barBowl = glyphid(371) {L = point(600m, -100m); U = point(600m, 1540m)}; g0180 = glyphid(372) {L = point(600m, -100m); U = point(600m, 1540m)}; g1D6C = glyphid(373) {L = point(600m, -100m); U = point(600m, 1540m)}; g0253 = glyphid(374) {L = point(600m, -100m); U = point(600m, 1540m)}; g0185 = glyphid(375) {L = point(548m, -100m); U = point(548m, 1540m)}; g0183 = glyphid(376) {L = point(625m, -100m); U = point(625m, 1540m)}; g0431 = glyphid(377) {L = point(547m, -100m); U = point(547m, 1540m)}; g044C = glyphid(378) {L = point(481m, -100m); U = point(481m, 1100m)}; g048D = glyphid(379) {L = point(461m, -100m); U = point(461m, 1500m)}; g044A = glyphid(380) {L = point(550m, -100m); U = point(550m, 1100m)}; g044B = glyphid(381) {L = point(702m, -100m); U = point(702m, 1100m)}; g04F9 = glyphid(382) {L = point(702m, -100m); U = point(702m, 1500m)}; g0432 = glyphid(383) {L = point(510m, -100m); U = point(510m, 1100m)}; g0412 = glyphid(384) {L = point(612m, -100m); U = point(612m, 1500m)}; g1D2E = glyphid(385) {L = point(403m, 725m); U = point(403m, 1650m)}; g0299 = glyphid(386) {L = point(509m, -100m); U = point(509m, 1100m)}; g1E02 = glyphid(387) {L = point(612m, -100m); U = point(612m, 1900m)}; g1E06 = glyphid(388) {L = point(612m, -500m); U = point(612m, 1500m)}; g1E04 = glyphid(389) {L = point(612m, -500m); U = point(612m, 1500m)}; g0243 = glyphid(390) {L = point(597m, -100m); U = point(597m, 1500m)}; g1D2F = glyphid(391) {L = point(406m, 725m); U = point(406m, 1650m)}; g1D03 = glyphid(392) {L = point(630m, -100m); U = point(509m, 1100m)}; g0181 = glyphid(393) {L = point(637m, -100m); U = point(637m, 1500m)}; g0184 = glyphid(394) {L = point(604m, -100m); U = point(604m, 1500m)}; g0182 = glyphid(395) {L = point(604m, -100m); U = point(604m, 1500m)}; g0411 = glyphid(396) {L = point(578m, -100m); U = point(578m, 1500m)}; g042C = glyphid(397) {L = point(580m, -100m); U = point(580m, 1500m)}; g048C = glyphid(398) {L = point(564m, -100m); U = point(564m, 1540m)}; g042A = glyphid(399) {L = point(650m, -100m); U = point(650m, 1500m)}; g042B = glyphid(400) {L = point(856m, -100m); U = point(856m, 1500m)}; g04F8 = glyphid(401) {L = point(856m, -100m); U = point(856m, 1900m)}; g_beta = glyphid(402) {L = point(620m, -100m); U = point(620m, 1540m)}; g1D66 = glyphid(403) {L = point(367m, -765m); U = point(367m, 450m)}; g1D5D = glyphid(404) {L = point(408m, 485m); U = point(367m, 1757m)}; g0441 = glyphid(405) {O = point(535m, 0m); L = point(535m, -100m); U = point(550m, 1100m)}; g217D = glyphid(406) {U = point(550m, 1500m)}; g1D9C = glyphid(407) {L = point(314m, 725m); U = point(314m, 1450m)}; g0368 = glyphid(408) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_cacute = glyphid(409) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g_ccircumflex = glyphid(410) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g_ccaron = glyphid(411) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g_cdotaccent = glyphid(412) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1500m)}; g1E09 = glyphid(413) {R = point(954m, 1000m); L = point(525m, -500m); U = point(550m, 1500m)}; g04AB = glyphid(414) {L = point(477m, -400m); U = point(550m, 1100m)}; gF225 = glyphid(415) {L = point(550m, -500m); U = point(550m, 1100m)}; g023C = glyphid(416); g0297 = glyphid(417) {L = point(535m, -500m); U = point(550m, 1100m)}; g0188 = glyphid(418) {L = point(535m, -100m); U = point(550m, 1100m)}; g0255 = glyphid(419) {L = point(535m, -320m); U = point(550m, 1100m)}; g1D9D = glyphid(420) {L = point(319m, 725m); U = point(319m, 1457m)}; g0254 = glyphid(421) {H = point(477m, 0m); O = point(530m, 0m); R = point(954m, 1000m); L = point(477m, -100m); U = point(477m, 1100m)}; g0254_topSerif = glyphid(422) {H = point(477m, 0m); O = point(530m, 0m); R = point(954m, 1000m); L = point(477m, -100m); U = point(477m, 1100m)}; g1D53 = glyphid(423) {L = point(315m, 725m); U = point(315m, 1457m)}; g1D53_topSerif = glyphid(424) {L = point(315m, 725m); U = point(315m, 1457m)}; g1D97 = glyphid(425) {L = point(477m, -500m); U = point(477m, 1100m)}; g1D97_topSerif = glyphid(426) {L = point(477m, -500m); U = point(477m, 1100m)}; g2184 = glyphid(427) {H = point(525m, 0m); R = point(954m, 1000m); L = point(535m, -100m); U = point(550m, 1100m)}; g1D12 = glyphid(428) {L = point(588m, -100m); U = point(588m, 1100m)}; g0454 = glyphid(429) {L = point(525m, -100m); U = point(525m, 1100m)}; g044D = glyphid(430) {L = point(440m, -100m); U = point(440m, 1100m)}; g04ED = glyphid(431) {L = point(440m, -100m); U = point(440m, 1500m)}; g044D_mongolStyle = glyphid(432) {L = point(440m, -100m); U = point(440m, 1100m)}; g0421 = glyphid(433) {O = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1500m)}; g216D = glyphid(434) {U = point(642m, 1500m)}; g1D04 = glyphid(435) {L = point(620m, -100m); U = point(620m, 1100m)}; g__cacute = glyphid(436) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ccircumflex = glyphid(437) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ccaron = glyphid(438) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g__cdotaccent = glyphid(439) {H = point(730m, 0m); L = point(750m, -100m); U = point(750m, 1900m)}; g1E08 = glyphid(440) {L = point(730m, -500m); U = point(750m, 1900m)}; g04AA = glyphid(441) {L = point(679m, -500m); U = point(750m, 1500m)}; g023B = glyphid(442) {H = point(645m, 0m); L = point(693m, -100m); U = point(693m, 1500m)}; g0187 = glyphid(443) {L = point(720m, -100m); U = point(720m, 1500m)}; g__euro = glyphid(444); g_colonmonetary = glyphid(445); g20A0 = glyphid(446); g20A2 = glyphid(447); g20B5 = glyphid(448); g0186 = glyphid(449) {L = point(615m, -100m); U = point(615m, 1500m)}; g0186_topSerif = glyphid(450) {L = point(615m, -100m); U = point(615m, 1500m)}; g1D10 = glyphid(451) {L = point(530m, -100m); U = point(530m, 1100m)}; g1D10_topSerif = glyphid(452) {L = point(530m, -100m); U = point(530m, 1100m)}; g2183 = glyphid(453); g0404 = glyphid(454) {L = point(720m, -100m); U = point(720m, 1500m)}; g042D = glyphid(455) {L = point(600m, -100m); U = point(600m, 1500m)}; g04EC = glyphid(456) {L = point(600m, -100m); U = point(600m, 1900m)}; g042D_mongolStyle = glyphid(457) {L = point(600m, -100m); U = point(600m, 1500m)}; g0501 = glyphid(458) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -100m); U = point(586m, 1540m)}; g217E = glyphid(459) {U = point(586m, 1500m)}; g1D48 = glyphid(460) {L = point(390m, 725m); U = point(390m, 1700m)}; g0369 = glyphid(461) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E0B = glyphid(462) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -100m); U = point(586m, 1940m)}; g1E13 = glyphid(463) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g1E0F = glyphid(464) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g1E0D = glyphid(465) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g1E11 = glyphid(466) {H = point(586m, 0m); R = point(1101m, 1000m); L = point(586m, -500m); U = point(586m, 1540m)}; g_dcaron = glyphid(467) {H = point(614m, 0m); L = point(614m, -100m); U = point(611m, 1540m)}; g1D81 = glyphid(468) {L = point(586m, -500m); U = point(586m, 1540m)}; g_dcroat_bar_bowl = glyphid(469) {L = point(577m, -100m); U = point(577m, 1540m)}; g_dcroat = glyphid(470) {L = point(586m, -100m); U = point(586m, 1540m)}; g_dong = glyphid(471); g1D6D = glyphid(472) {L = point(586m, -100m); U = point(586m, 1540m)}; g0257 = glyphid(473) {L = point(586m, -100m); U = point(586m, 1540m)}; g0256 = glyphid(474) {R = point(1188m, 1000m); L = point(586m, -475m); U = point(586m, 1540m)}; g1D91 = glyphid(475) {L = point(586m, -500m); U = point(586m, 1540m)}; g0221 = glyphid(476) {L = point(698m, -320m); U = point(698m, 1540m)}; g018C = glyphid(477) {L = point(586m, -100m); U = point(586m, 1540m)}; g0238 = glyphid(478) {L = point(866m, -100m); U = point(866m, 1540m)}; g01F3 = glyphid(479) {H = point(1638m, 0m); L = point(1638m, -100m); U = point(1638m, 1100m)}; g01C6 = glyphid(480) {H = point(1638m, 0m); L = point(1638m, -100m); U = point(1638m, 1500m)}; g02A3 = glyphid(481) {L = point(827m, -100m); U = point(843m, 1580m)}; g02A5 = glyphid(482) {L = point(839m, -100m); U = point(839m, 1580m)}; g02A4 = glyphid(483) {L = point(856m, -500m); U = point(844m, 1580m)}; g0503 = glyphid(484) {L = point(870m, -100m); U = point(870m, 1540m)}; g_delta = glyphid(485) {L = point(542m, -100m); U = point(542m, 1540m)}; g1D5F = glyphid(486) {L = point(361m, 725m); U = point(361m, 1775m)}; g_eth = glyphid(487) {L = point(552m, -100m); U = point(552m, 1540m)}; g1D9E = glyphid(488) {L = point(363m, 725m); U = point(363m, 1700m)}; g216E = glyphid(489) {U = point(706m, 1500m)}; g1D30 = glyphid(490) {L = point(464m, 725m); U = point(464m, 1650m)}; g1D05 = glyphid(491) {L = point(579m, -100m); U = point(579m, 1100m)}; g__dcaron = glyphid(492) {L = point(690m, -100m); U = point(690m, 1900m)}; g1E0A = glyphid(493) {L = point(690m, -100m); U = point(690m, 1900m)}; g1E12 = glyphid(494) {L = point(690m, -500m); U = point(690m, 1500m)}; g1E0E = glyphid(495) {L = point(690m, -500m); U = point(690m, 1500m)}; g1E0C = glyphid(496) {L = point(690m, -500m); U = point(690m, 1500m)}; g1E10 = glyphid(497) {L = point(690m, -500m); U = point(690m, 1500m)}; g__eth = glyphid(498) {L = point(690m, -100m); U = point(690m, 1500m)}; g__dcroat = glyphid(499) {L = point(690m, -100m); U = point(690m, 1500m)}; g0189 = glyphid(500) {L = point(690m, -100m); U = point(690m, 1500m)}; g1D06 = glyphid(501) {L = point(703m, -100m); U = point(564m, 1100m)}; gF20D = glyphid(502) {L = point(730m, -100m); U = point(730m, 1500m)}; g018A = glyphid(503) {L = point(730m, -100m); U = point(730m, 1500m)}; g018B = glyphid(504) {L = point(634m, -100m); U = point(634m, 1500m)}; g01F2 = glyphid(505) {H = point(1908m, 0m); L = point(1908m, -100m); U = point(1908m, 1100m)}; g01C5 = glyphid(506) {H = point(1908m, 0m); L = point(1908m, -100m); U = point(1908m, 1500m)}; g01F1 = glyphid(507) {L = point(2035m, -100m); U = point(2035m, 1500m)}; g01C4 = glyphid(508) {L = point(2035m, -100m); U = point(2035m, 1900m)}; g0500 = glyphid(509) {L = point(580m, -100m); U = point(580m, 1500m)}; g0502 = glyphid(510) {L = point(850m, -100m); U = point(850m, 1500m)}; g0394 = glyphid(511); g2181 = glyphid(512); g2180 = glyphid(513); g2182 = glyphid(514); g20AF = glyphid(515); g0435 = glyphid(516) {L = point(535m, -100m); U = point(535m, 1100m)}; g2091 = glyphid(517) {L = point(331m, -525m); U = point(331m, 200m)}; g1D49 = glyphid(518) {L = point(335m, 725m); U = point(335m, 1450m)}; g0364 = glyphid(519) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g0450 = glyphid(520) {L = point(535m, -100m); U = point(535m, 1500m)}; g0205 = glyphid(521) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1EBF = glyphid(522) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EBF_vN = glyphid(523) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m)}; g1EC1 = glyphid(524) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EC1_vN = glyphid(525) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m)}; g1EC5 = glyphid(526) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EC5_vN = glyphid(527) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1825m)}; g1EC3 = glyphid(528) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1900m)}; g1EC3_vN = glyphid(529) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m)}; g1EC7 = glyphid(530) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1500m)}; g0207 = glyphid(531) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_ebreve = glyphid(532) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g04D7 = glyphid(533) {L = point(535m, -100m); U = point(535m, 1500m)}; g_ecaron = glyphid(534) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1EBD = glyphid(535) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g_emacron = glyphid(536) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1470m)}; g1E17 = glyphid(537) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1870m)}; g1E15 = glyphid(538) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1870m)}; g0451 = glyphid(539) {L = point(535m, -100m); U = point(535m, 1500m)}; g_edotaccent = glyphid(540) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1EBB = glyphid(541) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -100m); U = point(535m, 1500m)}; g1E19 = glyphid(542) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g1E1B = glyphid(543) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g1EB9 = glyphid(544) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g0229 = glyphid(545) {O = point(557m, 0m); R = point(1004m, 1000m); L = point(502m, -500m); U = point(535m, 1100m)}; g1E1D = glyphid(546) {O = point(557m, 0m); R = point(1004m, 1000m); L = point(502m, -500m); U = point(535m, 1500m)}; g_eogonek = glyphid(547) {L = point(525m, -500m); U = point(525m, 1100m)}; g_eogonek_retro_hook_style = glyphid(548) {H = point(502m, 0m); O = point(557m, 0m); R = point(1004m, 1000m); L = point(535m, -500m); U = point(535m, 1100m)}; g1D92 = glyphid(549) {L = point(525m, -100m); U = point(525m, 1100m)}; g0247 = glyphid(550) {L = point(525m, -100m); U = point(525m, 1100m)}; g04BD = glyphid(551) {O = point(957m, 0m); L = point(724m, -100m); U = point(724m, 1100m)}; g04BF = glyphid(552) {L = point(899m, -400m); U = point(724m, 1100m)}; g01DD = glyphid(553) {L = point(480m, -100m); U = point(480m, 1100m)}; g0259 = glyphid(554) {H = point(480m, 0m); O = point(557m, 0m); L = point(480m, -100m); U = point(480m, 1100m)}; g04D9 = glyphid(555) {H = point(480m, 0m); O = point(557m, 0m); L = point(480m, -100m); U = point(480m, 1100m)}; g2094 = glyphid(556) {L = point(331m, -525m); U = point(331m, 200m)}; g1D4A = glyphid(557) {L = point(335m, 725m); U = point(335m, 1450m)}; g04DB = glyphid(558) {H = point(480m, 0m); O = point(557m, 0m); L = point(480m, -100m); U = point(480m, 1500m)}; g1D95 = glyphid(559) {L = point(514m, -100m); U = point(514m, 1100m)}; g025A = glyphid(560) {H = point(500m, 0m); O = point(550m, 0m); L = point(525m, -100m); U = point(502m, 1100m)}; g0258 = glyphid(561) {R = point(1034m, 1000m); L = point(517m, -100m); U = point(517m, 1100m)}; gF1A3 = glyphid(562) {L = point(341m, 725m); U = point(341m, 1457m)}; g025B = glyphid(563) {H = point(460m, 0m); O = point(512m, 0m); R = point(899m, 1000m); L = point(490m, -100m); U = point(490m, 1100m)}; g1D4B = glyphid(564) {L = point(303m, 725m); U = point(303m, 1457m)}; g1D93 = glyphid(565) {L = point(462m, -100m); U = point(462m, 1100m)}; g025C = glyphid(566) {L = point(439m, -100m); U = point(439m, 1100m)}; g1D9F = glyphid(567) {L = point(290m, 725m); U = point(290m, 1450m)}; g1D94 = glyphid(568) {L = point(439m, -500m); U = point(439m, 1100m)}; g025D = glyphid(569) {L = point(440m, -100m); U = point(440m, 1100m)}; g1D08 = glyphid(570) {L = point(414m, -100m); U = point(414m, 1100m)}; g1D4C = glyphid(571) {L = point(274m, 725m); U = point(274m, 1450m)}; g029A = glyphid(572) {L = point(508m, -100m); U = point(508m, 1100m)}; g025E = glyphid(573) {R = point(1016m, 1000m); L = point(508m, -100m); U = point(508m, 1100m)}; gF1A4 = glyphid(574) {L = point(335m, 725m); U = point(335m, 1457m)}; g0511 = glyphid(575) {H = point(535m, 0m); O = point(481m, 0m); R = point(907m, 1000m); L = point(481m, -100m); U = point(481m, 1100m)}; g0437 = glyphid(576) {L = point(435m, -100m); U = point(435m, 1100m)}; g04DF = glyphid(577) {L = point(435m, -100m); U = point(435m, 1500m)}; g0499 = glyphid(578) {L = point(435m, -400m); U = point(435m, 1100m)}; g0507 = glyphid(579) {L = point(443m, -100m); U = point(443m, 1100m)}; g0505 = glyphid(580) {L = point(761m, -100m); U = point(761m, 1100m)}; g0415 = glyphid(581) {L = point(597m, -100m); U = point(597m, 1500m)}; g1D31 = glyphid(582) {L = point(393m, 725m); U = point(393m, 1650m)}; g1D07 = glyphid(583) {L = point(489m, -100m); U = point(489m, 1100m)}; g0400 = glyphid(584) {L = point(597m, -100m); U = point(597m, 1900m)}; g0204 = glyphid(585) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1EBE = glyphid(586) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EBE_vN = glyphid(587) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m)}; g1EC0 = glyphid(588) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EC0_vN = glyphid(589) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m)}; g1EC4 = glyphid(590) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EC4_vN = glyphid(591) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2225m)}; g1EC2 = glyphid(592) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2300m)}; g1EC2_vN = glyphid(593) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m)}; g1EC6 = glyphid(594) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1900m)}; g0206 = glyphid(595) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__ebreve = glyphid(596) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g04D6 = glyphid(597) {L = point(597m, -100m); U = point(597m, 1935m)}; g__ecaron = glyphid(598) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1EBC = glyphid(599) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g__emacron = glyphid(600) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1870m)}; g1E16 = glyphid(601) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2270m)}; g1E14 = glyphid(602) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 2270m)}; g0401 = glyphid(603) {L = point(597m, -100m); U = point(597m, 1900m)}; g__edotaccent = glyphid(604) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1EBA = glyphid(605) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -100m); U = point(597m, 1900m)}; g1E18 = glyphid(606) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g1E1A = glyphid(607) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g1EB8 = glyphid(608) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g0228 = glyphid(609) {O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g1E1C = glyphid(610) {O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1900m)}; g__eogonek = glyphid(611) {H = point(597m, 0m); L = point(922m, -400m); U = point(597m, 1500m)}; g__eogonek_retro_hook_style = glyphid(612) {H = point(597m, 0m); O = point(980m, 0m); L = point(597m, -500m); U = point(597m, 1500m)}; g0246 = glyphid(613) {L = point(604m, -100m); U = point(604m, 1500m)}; g04BC = glyphid(614) {O = point(1127m, 0m); L = point(915m, -100m); U = point(915m, 1500m)}; g04BE = glyphid(615) {L = point(1076m, -500m); U = point(915m, 1500m)}; g018E = glyphid(616) {L = point(597m, -100m); U = point(597m, 1500m)}; g1D32 = glyphid(617) {L = point(393m, 725m); U = point(393m, 1650m)}; g018F = glyphid(618) {L = point(678m, -100m); U = point(678m, 1500m)}; g04D8 = glyphid(619) {L = point(678m, -100m); U = point(678m, 1500m)}; g04DA = glyphid(620) {L = point(678m, -100m); U = point(678m, 1900m)}; g0190 = glyphid(621) {L = point(615m, -100m); U = point(615m, 1500m)}; g0510 = glyphid(622) {L = point(578m, -100m); U = point(578m, 1500m)}; g0417 = glyphid(623) {L = point(520m, -100m); U = point(520m, 1500m)}; g04DE = glyphid(624) {L = point(520m, -100m); U = point(520m, 1900m)}; g0498 = glyphid(625) {L = point(559m, -500m); U = point(559m, 1500m)}; g0506 = glyphid(626) {L = point(674m, -500m); U = point(674m, 1500m)}; g0504 = glyphid(627) {L = point(926m, -100m); U = point(926m, 1500m)}; g_f_slant_italic = glyphid(628) {H = point(428m, 0m); L = point(296m, -100m); U = point(506m, 1440m)}; g1DA0 = glyphid(629) {L = point(284m, 725m); U = point(284m, 1700m)}; g1E1F = glyphid(630) {H = point(428m, 0m); L = point(296m, -100m); U = point(506m, 1880m)}; g1D82 = glyphid(631) {L = point(296m, -500m); U = point(428m, 1580m)}; g1D6E = glyphid(632) {L = point(284m, -100m); U = point(414m, 1580m)}; g_f_i = glyphid(633); g_f_i_slant_italic = glyphid(634); g_f_l = glyphid(635); g_f_l_slant_italic = glyphid(636); g_f_f_i = glyphid(637); g_f_f_i_slant_italic = glyphid(638); g_ffi = glyphid(639); g_f_f_l = glyphid(640); g_f_f_l_slant_italic = glyphid(641); g_ffl = glyphid(642); g_f_f = glyphid(643); g_f_f_slant_italic = glyphid(644); g_ff = glyphid(645); g02A9 = glyphid(646) {L = point(870m, -500m); U = point(902m, 1540m)}; g_longs = glyphid(647) {L = point(404m, -100m); U = point(404m, 1540m)}; g1E9B = glyphid(648) {L = point(404m, -100m); U = point(404m, 1940m)}; g0433 = glyphid(649) {L = point(454m, -100m); U = point(454m, 1100m)}; g0453 = glyphid(650) {L = point(454m, -100m); U = point(454m, 1500m)}; g0491 = glyphid(651) {L = point(414m, -100m); U = point(414m, 1100m)}; g04F7 = glyphid(652) {L = point(454m, -500m); U = point(454m, 1100m)}; g0493 = glyphid(653) {L = point(444m, -100m); U = point(444m, 1100m)}; g0493_slantItalic = glyphid(654) {L = point(444m, -100m); U = point(444m, 1100m)}; gF327 = glyphid(655) {L = point(444m, -500m); U = point(444m, 1100m)}; gF327_slantItalic = glyphid(656) {L = point(444m, -500m); U = point(444m, 1100m)}; g04FB = glyphid(657) {L = point(444m, -100m); U = point(444m, 1100m)}; g04FB_slantItalic = glyphid(658) {L = point(444m, -100m); U = point(444m, 1100m)}; g1E1E = glyphid(659) {L = point(549m, -100m); U = point(549m, 1900m)}; g_franc = glyphid(660); g0191 = glyphid(661) {L = point(565m, -500m); U = point(565m, 1500m)}; g0413 = glyphid(662) {L = point(545m, -100m); U = point(545m, 1500m)}; g__gamma = glyphid(663) {L = point(580m, -100m); U = point(580m, 1500m)}; g1D26 = glyphid(664) {L = point(263m, -100m); U = point(263m, 1100m)}; g0403 = glyphid(665) {L = point(545m, -100m); U = point(545m, 1900m)}; g0490 = glyphid(666) {L = point(495m, -100m); U = point(495m, 1500m)}; g04F6 = glyphid(667) {L = point(545m, -500m); U = point(545m, 1500m)}; g0492 = glyphid(668) {L = point(533m, -100m); U = point(533m, 1500m)}; gF326 = glyphid(669) {L = point(323m, -500m); U = point(533m, 1500m)}; g04FA = glyphid(670) {L = point(533m, -100m); U = point(533m, 1500m)}; g1D4D = glyphid(671) {L = point(365m, 485m); U = point(365m, 1450m)}; g01F5 = glyphid(672) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gcircumflex = glyphid(673) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gbreve = glyphid(674) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gcaron = glyphid(675) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g1E21 = glyphid(676) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1470m)}; g_gdotaccent = glyphid(677) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g_gcommaaccent = glyphid(678) {H = point(505m, -432m); R = point(1075m, 1000m); L = point(505m, -500m); U = point(505m, 1500m)}; g01E5_barBowl = glyphid(679) {L = point(520m, -500m); U = point(520m, 1100m)}; g01E5 = glyphid(680) {L = point(546m, -500m); U = point(546m, 1100m)}; g_g_sng_bowl = glyphid(681) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1100m)}; g0261 = glyphid(682) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1100m)}; g1DA2 = glyphid(683) {L = point(343m, 485m); U = point(343m, 1457m)}; g01F5_sngBowl = glyphid(684) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gcircumflex_sng_bowl = glyphid(685) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gbreve_sng_bowl = glyphid(686) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gcaron_sng_bowl = glyphid(687) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g1E21_sngBowl = glyphid(688) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1470m)}; g_gdotaccent_sng_bowl = glyphid(689) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g_gcommaaccent_sng_bowl = glyphid(690) {R = point(1133m, 1000m); L = point(596m, -500m); U = point(596m, 1500m)}; g1D83 = glyphid(691) {L = point(534m, -539m); U = point(534m, 1100m)}; g01E5_barBowl_sngBowl = glyphid(692) {L = point(575m, -500m); U = point(575m, 1100m)}; g0260 = glyphid(693) {L = point(596m, -500m); U = point(596m, 1540m)}; g1D77 = glyphid(694) {R = point(1075m, 1000m); L = point(533m, -500m); U = point(515m, 1100m)}; g1D79 = glyphid(695) {R = point(987m, 1000m); L = point(498m, -500m); U = point(498m, 1100m)}; g050D = glyphid(696) {L = point(630m, -100m); U = point(630m, 1100m)}; g1D33 = glyphid(697) {L = point(477m, 725m); U = point(477m, 1650m)}; g0262 = glyphid(698) {R = point(1161m, 1000m); L = point(595m, -100m); U = point(595m, 1100m)}; g01F4 = glyphid(699) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gcircumflex = glyphid(700) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gbreve = glyphid(701) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gcaron = glyphid(702) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g1E20 = glyphid(703) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1870m)}; g__gdotaccent = glyphid(704) {H = point(766m, 0m); L = point(766m, -100m); U = point(766m, 1900m)}; g__gcommaaccent = glyphid(705) {H = point(766m, 0m); L = point(766m, -500m); U = point(766m, 1500m)}; g01E4 = glyphid(706) {L = point(733m, -100m); U = point(733m, 1500m)}; g0193 = glyphid(707) {L = point(726m, -100m); U = point(726m, 1500m)}; g029B = glyphid(708) {L = point(582m, -100m); U = point(582m, 1300m)}; g20B2 = glyphid(709); g050C = glyphid(710) {L = point(741m, -100m); U = point(741m, 1500m)}; g02B0 = glyphid(711) {L = point(387m, 725m); U = point(387m, 1700m)}; g036A = glyphid(712) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_hcircumflex = glyphid(713) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g021F = glyphid(714) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g1E27 = glyphid(715) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g1E23 = glyphid(716) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1940m)}; g1E2B = glyphid(717) {H = point(712m, 0m); L = point(579m, -500m); U = point(579m, 1540m)}; g1E96 = glyphid(718) {H = point(712m, 0m); L = point(579m, -500m); U = point(579m, 1540m)}; g1E25 = glyphid(719) {H = point(712m, 0m); L = point(579m, -500m); U = point(579m, 1540m)}; g1E29 = glyphid(720) {L = point(712m, -500m); U = point(579m, 1540m)}; g_hbar = glyphid(721) {L = point(579m, -100m); U = point(579m, 1540m)}; g045B = glyphid(722) {L = point(579m, -100m); U = point(579m, 1540m)}; gF1BC = glyphid(723) {L = point(372m, 725m); U = point(372m, 1700m)}; g0452 = glyphid(724) {L = point(567m, -500m); U = point(567m, 1540m)}; g0266 = glyphid(725) {L = point(585m, -100m); U = point(585m, 1540m)}; g02B1 = glyphid(726) {L = point(387m, 725m); U = point(387m, 1700m)}; gF25A = glyphid(727) {L = point(587m, -500m); U = point(587m, 1540m)}; g0267 = glyphid(728) {L = point(517m, -500m); U = point(517m, 1540m)}; g2C68 = glyphid(729) {L = point(579m, -100m); U = point(579m, 1540m)}; g0195 = glyphid(730) {L = point(900m, -100m); U = point(900m, 1100m)}; g2C76 = glyphid(731) {L = point(620m, -100m); U = point(620m, 1100m)}; g0265 = glyphid(732) {L = point(596m, -500m); U = point(596m, 1100m)}; g1DA3 = glyphid(733) {L = point(392m, 485m); U = point(392m, 1450m)}; g02AE = glyphid(734) {L = point(632m, -500m); U = point(632m, 1100m)}; g02AF = glyphid(735) {L = point(731m, -500m); U = point(731m, 1100m)}; g04BB = glyphid(736) {H = point(712m, 0m); L = point(579m, -100m); U = point(579m, 1540m)}; g04BB_uCStyle = glyphid(737) {L = point(540m, -100m); U = point(540m, 1100m)}; g0495 = glyphid(738) {L = point(560m, -500m); U = point(560m, 1100m)}; g043D = glyphid(739) {L = point(610m, -100m); U = point(610m, 1100m)}; g04A5 = glyphid(740) {L = point(700m, -100m); U = point(700m, 1100m)}; g04A3 = glyphid(741) {L = point(610m, -100m); U = point(610m, 1100m)}; g04CA = glyphid(742) {L = point(610m, -100m); U = point(610m, 1100m)}; g045A = glyphid(743) {L = point(788m, -100m); U = point(788m, 1100m)}; g04C8 = glyphid(744) {L = point(610m, -500m); U = point(610m, 1100m)}; g050B = glyphid(745) {L = point(855m, -100m); U = point(855m, 1100m)}; g043F = glyphid(746) {L = point(578m, -100m); U = point(578m, 1100m)}; g04A7 = glyphid(747) {L = point(792m, -100m); U = point(792m, 1100m)}; g045F = glyphid(748) {L = point(578m, -500m); U = point(578m, 1100m)}; g0446 = glyphid(749) {L = point(578m, -100m); U = point(578m, 1100m)}; g0448 = glyphid(750) {L = point(822m, -100m); U = point(822m, 1100m)}; g0449 = glyphid(751) {L = point(822m, -100m); U = point(822m, 1100m)}; g1D28 = glyphid(752) {L = point(601m, -100m); U = point(601m, 1100m)}; g041D = glyphid(753) {L = point(761m, -100m); U = point(761m, 1500m)}; g1D34 = glyphid(754) {L = point(499m, 725m); U = point(499m, 1650m)}; g1D78 = glyphid(755) {L = point(499m, 725m); U = point(499m, 1650m)}; g029C = glyphid(756) {L = point(620m, -100m); U = point(620m, 1100m)}; g__hcircumflex = glyphid(757) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g021E = glyphid(758) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g1E26 = glyphid(759) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g1E22 = glyphid(760) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1900m)}; g1E2A = glyphid(761) {H = point(978m, 0m); L = point(761m, -500m); U = point(761m, 1500m)}; g1E24 = glyphid(762) {H = point(978m, 0m); L = point(761m, -500m); U = point(761m, 1500m)}; g1E28 = glyphid(763) {L = point(978m, -500m); U = point(761m, 1500m)}; g__hbar = glyphid(764) {L = point(761m, -100m); U = point(761m, 1500m)}; g__hbar_vert_strk = glyphid(765) {L = point(761m, -100m); U = point(761m, 1500m)}; g2C67 = glyphid(766) {L = point(761m, -100m); U = point(761m, 1500m)}; g01F6 = glyphid(767) {L = point(990m, -100m); U = point(990m, 1500m)}; g2C75 = glyphid(768) {H = point(978m, 0m); L = point(761m, -100m); U = point(761m, 1500m)}; g04BA = glyphid(769) {L = point(652m, -100m); U = point(652m, 1500m)}; g0494 = glyphid(770) {L = point(627m, -500m); U = point(626m, 1500m)}; g04A4 = glyphid(771) {L = point(761m, -100m); U = point(761m, 1500m)}; g04A2 = glyphid(772) {L = point(761m, -100m); U = point(761m, 1500m)}; g04C9 = glyphid(773) {L = point(761m, -100m); U = point(761m, 1500m)}; g040A = glyphid(774) {L = point(943m, -100m); U = point(943m, 1500m)}; g04C7 = glyphid(775) {L = point(761m, -500m); U = point(761m, 1500m)}; g050A = glyphid(776) {L = point(1062m, -100m); U = point(1062m, 1500m)}; g041F = glyphid(777) {L = point(743m, -100m); U = point(743m, 1500m)}; g04A6 = glyphid(778) {L = point(1014m, -100m); U = point(1051m, 1500m)}; g040F = glyphid(779) {L = point(743m, -500m); U = point(743m, 1500m)}; g0426 = glyphid(780) {L = point(743m, -100m); U = point(743m, 1500m)}; g0428 = glyphid(781) {L = point(992m, -100m); U = point(992m, 1500m)}; g0429 = glyphid(782) {L = point(992m, -100m); U = point(992m, 1500m)}; g_i_slant_italic = glyphid(783) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -100m); U = point(310m, 1100m)}; g0456 = glyphid(784) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -100m); U = point(310m, 1100m)}; g2170 = glyphid(785) {U = point(310m, 1500m)}; g1D62 = glyphid(786) {L = point(206m, -525m); U = point(206m, 400m)}; g2071 = glyphid(787) {R = point(414m, 1000m); L = point(205m, 725m); U = point(205m, 1700m)}; g0365 = glyphid(788) {U = point(-557m, 2100m); UM = point(-557m, 1100m)}; g0209 = glyphid(789) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g020B = glyphid(790) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_ibreve = glyphid(791) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g01D0 = glyphid(792) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_itilde = glyphid(793) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g_imacron = glyphid(794) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1470m)}; g0457 = glyphid(795) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g1E2F = glyphid(796) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1900m)}; g1EC9 = glyphid(797) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1500m)}; g1E2D = glyphid(798) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -500m); U = point(310m, 1100m)}; g1ECB = glyphid(799) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -500m); U = point(310m, 1100m)}; g_iogonek = glyphid(800) {H = point(310m, 0m); R = point(621m, 1000m); L = point(408m, -400m); U = point(310m, 1100m)}; g_iogonek_retro_hook_style = glyphid(801) {H = point(310m, 0m); O = point(466m, 0m); R = point(621m, 1000m); L = point(316m, -500m); U = point(310m, 1100m)}; g1D96 = glyphid(802) {L = point(310m, -500m); U = point(310m, 1500m)}; g0268 = glyphid(803) {H = point(310m, 0m); O = point(363m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g1DA4 = glyphid(804) {L = point(202m, 725m); U = point(202m, 1700m)}; g_i_dotless = glyphid(805) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g_dotlessi_slant_italic = glyphid(806) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g_i_dotless_slant_italic = glyphid(807) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g0456_dotless = glyphid(808) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g1D62_dotless = glyphid(809) {L = point(206m, -525m); U = point(206m, 200m)}; g2071_dotless = glyphid(810) {R = point(403m, 1000m); L = point(206m, 725m); U = point(206m, 1450m)}; g1E2D_dotless = glyphid(811) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -500m); U = point(310m, 1100m)}; g1ECB_dotless = glyphid(812) {H = point(310m, 0m); O = point(467m, 0m); R = point(621m, 1000m); L = point(310m, -500m); U = point(310m, 1100m)}; g_iogonek_dotless = glyphid(813) {H = point(310m, 0m); R = point(621m, 1000m); L = point(409m, -400m); U = point(310m, 1100m)}; g1D96_dotless = glyphid(814) {L = point(314m, -500m); U = point(314m, 1100m)}; g0268_dotless = glyphid(815) {H = point(310m, 0m); O = point(363m, 0m); R = point(621m, 1000m); L = point(310m, -100m); U = point(310m, 1100m)}; g1DA4_dotless = glyphid(816) {L = point(202m, 725m); U = point(202m, 1457m)}; g1D09 = glyphid(817) {L = point(295m, -500m); U = point(295m, 1100m)}; g1D4E = glyphid(818) {L = point(197m, 485m); U = point(197m, 1450m)}; g_ij = glyphid(819) {H = point(310m, 0m); O = point(466m, 0m); L = point(758m, -500m); U = point(610m, 1500m)}; g2171 = glyphid(820) {U = point(610m, 1500m)}; g2172 = glyphid(821) {U = point(921m, 1500m)}; g2173 = glyphid(822) {U = point(854m, 1500m)}; g2178 = glyphid(823) {U = point(839m, 1500m)}; g0269 = glyphid(824) {H = point(320m, 0m); O = point(431m, 0m); R = point(674m, 1000m); L = point(320m, -100m); U = point(320m, 1100m)}; g1DA5 = glyphid(825) {L = point(250m, 725m); U = point(250m, 1450m)}; g1D7C = glyphid(826) {H = point(320m, 0m); O = point(431m, 0m); R = point(674m, 1000m); L = point(320m, -100m); U = point(320m, 1100m)}; g044E = glyphid(827) {L = point(746m, -100m); U = point(746m, 1100m)}; g0406 = glyphid(828) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1500m)}; g04C0 = glyphid(829) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1500m)}; g04CF = glyphid(830) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1580m)}; g2160 = glyphid(831) {U = point(338m, 1500m)}; g1D35 = glyphid(832) {L = point(224m, 725m); U = point(224m, 1650m)}; g026A = glyphid(833) {H = point(284m, 0m); O = point(335m, 0m); R = point(569m, 1000m); L = point(284m, -100m); U = point(284m, 1100m)}; g1DA6 = glyphid(834) {L = point(183m, 725m); U = point(183m, 1450m)}; g0208 = glyphid(835) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g020A = glyphid(836) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__ibreve = glyphid(837) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g01CF = glyphid(838) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__itilde = glyphid(839) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g__imacron = glyphid(840) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1870m)}; g0407 = glyphid(841) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g1E2E = glyphid(842) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 2300m)}; g__idotaccent = glyphid(843) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g1EC8 = glyphid(844) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -100m); U = point(338m, 1900m)}; g1E2C = glyphid(845) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -500m); U = point(338m, 1500m)}; g1ECA = glyphid(846) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -500m); U = point(338m, 1500m)}; g__iogonek = glyphid(847) {H = point(338m, 0m); L = point(436m, -400m); U = point(338m, 1500m)}; g__iogonek_retro_hook_style = glyphid(848) {H = point(338m, 0m); O = point(494m, 0m); L = point(338m, -500m); U = point(338m, 1500m)}; g0197 = glyphid(849) {L = point(338m, -100m); U = point(338m, 1500m)}; g1D7B = glyphid(850) {L = point(284m, -100m); U = point(284m, 1100m)}; g1DA7 = glyphid(851) {L = point(180m, 725m); U = point(180m, 1450m)}; g__i_j = glyphid(852) {H = point(338m, 0m); O = point(494m, 0m); L = point(1086m, -100m); U = point(835m, 1500m)}; g2161 = glyphid(853) {U = point(676m, 1500m)}; g2162 = glyphid(854) {U = point(1014m, 1500m)}; g2163 = glyphid(855) {U = point(1031m, 1500m)}; g2168 = glyphid(856) {U = point(999m, 1500m)}; gF258 = glyphid(857) {L = point(335m, -100m); U = point(335m, 1405m)}; g0196 = glyphid(858) {L = point(448m, -100m); U = point(373m, 1500m)}; g042E = glyphid(859) {L = point(986m, -100m); U = point(986m, 1500m)}; g0458 = glyphid(860) {L = point(137m, -500m); U = point(328m, 1100m)}; g02B2 = glyphid(861) {L = point(89m, 485m); U = point(89m, 1650m)}; g_jcircumflex = glyphid(862) {L = point(126m, -500m); U = point(324m, 1500m)}; g01F0 = glyphid(863) {L = point(126m, -500m); U = point(324m, 1500m)}; g0249 = glyphid(864) {L = point(133m, -500m); U = point(323m, 1100m)}; g029D = glyphid(865) {L = point(133m, -500m); U = point(323m, 1100m)}; g1DA8 = glyphid(866) {L = point(155m, 485m); U = point(155m, 1650m)}; g_j_dotless = glyphid(867) {L = point(126m, -500m); U = point(324m, 1100m)}; g0237 = glyphid(868) {L = point(126m, -500m); U = point(324m, 1100m)}; g0458_dotless = glyphid(869) {L = point(126m, -500m); U = point(324m, 1100m)}; g02B2_dotless = glyphid(870) {L = point(87m, 485m); U = point(215m, 1450m)}; g025F = glyphid(871) {R = point(598m, 1000m); L = point(125m, -500m); U = point(323m, 1100m)}; g0249_dotless = glyphid(872) {R = point(598m, 1000m); L = point(125m, -500m); U = point(323m, 1100m)}; g1DA1 = glyphid(873) {L = point(95m, 485m); U = point(213m, 1450m)}; g029D_dotless = glyphid(874) {L = point(231m, -500m); U = point(351m, 1100m)}; g1DA8_dotless = glyphid(875) {L = point(155m, 485m); U = point(232m, 1450m)}; g0284_topSerif = glyphid(876) {L = point(315m, -500m); U = point(315m, 1540m)}; g0284 = glyphid(877) {L = point(315m, -500m); U = point(315m, 1540m)}; g043B = glyphid(878) {L = point(581m, -100m); U = point(710m, 1100m)}; g04C6 = glyphid(879) {L = point(581m, -100m); U = point(710m, 1100m)}; g0459 = glyphid(880) {L = point(751m, -100m); U = point(751m, 1100m)}; g0513 = glyphid(881) {L = point(599m, -500m); U = point(710m, 1100m)}; g0509 = glyphid(882) {L = point(824m, -100m); U = point(824m, 1100m)}; g0434 = glyphid(883) {L = point(566m, -100m); U = point(690m, 1100m)}; g0408 = glyphid(884) {L = point(410m, -100m); U = point(675m, 1500m)}; g1D36 = glyphid(885) {L = point(327m, 725m); U = point(327m, 1650m)}; g1D0A = glyphid(886) {L = point(406m, -100m); U = point(406m, 1100m)}; g__jcircumflex = glyphid(887) {L = point(410m, -100m); U = point(675m, 1900m)}; g0248 = glyphid(888) {L = point(410m, -100m); U = point(675m, 1500m)}; g041B = glyphid(889) {L = point(711m, -100m); U = point(880m, 1500m)}; g1D2B = glyphid(890) {L = point(720m, -100m); U = point(720m, 1100m)}; g04C5 = glyphid(891) {L = point(711m, -360m); U = point(880m, 1500m)}; g0409 = glyphid(892) {L = point(932m, -100m); U = point(932m, 1500m)}; g0512 = glyphid(893) {L = point(711m, -500m); U = point(880m, 1500m)}; g0508 = glyphid(894) {L = point(1005m, -100m); U = point(1005m, 1500m)}; g0414 = glyphid(895) {L = point(706m, -100m); U = point(870m, 1500m)}; g1D4F = glyphid(896) {L = point(370m, 725m); U = point(370m, 1700m)}; g1E31 = glyphid(897) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -100m); U = point(551m, 1940m)}; g01E9 = glyphid(898) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -100m); U = point(551m, 1940m)}; g1E35 = glyphid(899) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -500m); U = point(551m, 1540m)}; g1E33 = glyphid(900) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -500m); U = point(551m, 1540m)}; g_kcommaaccent = glyphid(901) {H = point(816m, 0m); R = point(1094m, 1000m); L = point(551m, -500m); U = point(551m, 1540m)}; g1D84 = glyphid(902) {L = point(551m, -500m); U = point(551m, 1540m)}; g0199 = glyphid(903) {L = point(559m, -100m); U = point(559m, 1540m)}; g2C6A = glyphid(904) {L = point(551m, -100m); U = point(551m, 1540m)}; g029E = glyphid(905) {L = point(542m, -500m); U = point(542m, 1100m)}; g_kgreenlandic = glyphid(906) {L = point(562m, -100m); U = point(562m, 1100m)}; g043A = glyphid(907) {L = point(562m, -100m); U = point(562m, 1100m)}; g045C = glyphid(908) {L = point(562m, -100m); U = point(562m, 1500m)}; g049B = glyphid(909) {L = point(562m, -100m); U = point(562m, 1100m)}; g04A1 = glyphid(910) {L = point(649m, -100m); U = point(649m, 1100m)}; g049F = glyphid(911) {L = point(570m, -100m); U = point(535m, 1540m)}; g049D = glyphid(912) {L = point(572m, -100m); U = point(572m, 1100m)}; g04C4 = glyphid(913) {L = point(552m, -500m); U = point(552m, 1100m)}; g0436 = glyphid(914) {L = point(714m, -100m); U = point(714m, 1100m)}; g04C2 = glyphid(915) {L = point(714m, -100m); U = point(714m, 1500m)}; g04DD = glyphid(916) {L = point(714m, -100m); U = point(714m, 1500m)}; g0497 = glyphid(917) {L = point(714m, -100m); U = point(714m, 1100m)}; g1D37 = glyphid(918) {L = point(451m, 725m); U = point(451m, 1650m)}; g1D0B = glyphid(919) {L = point(562m, -100m); U = point(562m, 1100m)}; g1E30 = glyphid(920) {H = point(686m, 0m); L = point(686m, -100m); U = point(686m, 1900m)}; g01E8 = glyphid(921) {H = point(686m, 0m); L = point(686m, -100m); U = point(686m, 1900m)}; g1E34 = glyphid(922) {H = point(686m, 0m); L = point(686m, -500m); U = point(686m, 1500m)}; g1E32 = glyphid(923) {H = point(686m, 0m); L = point(686m, -500m); U = point(686m, 1500m)}; g__kcommaaccent = glyphid(924) {H = point(686m, 0m); L = point(686m, -500m); U = point(686m, 1500m)}; g0198 = glyphid(925) {L = point(746m, -100m); U = point(746m, 1500m)}; g2C69 = glyphid(926) {L = point(645m, -100m); U = point(645m, 1500m)}; g20AD = glyphid(927); g041A = glyphid(928) {L = point(682m, -100m); U = point(682m, 1500m)}; g040C = glyphid(929) {L = point(682m, -100m); U = point(682m, 1900m)}; g049A = glyphid(930) {L = point(682m, -100m); U = point(682m, 1500m)}; g04A0 = glyphid(931) {L = point(770m, -100m); U = point(770m, 1500m)}; g049E = glyphid(932) {L = point(682m, -100m); U = point(682m, 1500m)}; g049C = glyphid(933) {L = point(696m, -100m); U = point(696m, 1500m)}; g04C3 = glyphid(934) {L = point(679m, -500m); U = point(679m, 1500m)}; g0416 = glyphid(935) {L = point(912m, -100m); U = point(912m, 1500m)}; g04C1 = glyphid(936) {L = point(912m, -100m); U = point(912m, 1935m)}; g04DC = glyphid(937) {L = point(912m, -100m); U = point(912m, 1900m)}; g0496 = glyphid(938) {L = point(912m, -100m); U = point(912m, 1500m)}; g_l_slant_italic = glyphid(939) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1580m)}; g217C = glyphid(940) {U = point(303m, 1500m)}; g02E1 = glyphid(941) {L = point(208m, 725m); U = point(208m, 1700m)}; g_lacute = glyphid(942) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -100m); U = point(303m, 1980m)}; g1E3D = glyphid(943) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g1E3B = glyphid(944) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g1E37 = glyphid(945) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g1E39 = glyphid(946) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1950m)}; g_lcommaaccent = glyphid(947) {H = point(303m, 0m); R = point(508m, 1000m); L = point(303m, -500m); U = point(303m, 1580m)}; g_ldot = glyphid(948) {H = point(321m, 0m); L = point(320m, -100m); U = point(320m, 1580m)}; g_lcaron = glyphid(949) {H = point(319m, 0m); L = point(318m, -100m); U = point(318m, 1580m)}; g1D85 = glyphid(950) {L = point(303m, -500m); U = point(303m, 1540m)}; g1DAA = glyphid(951) {L = point(201m, 485m); U = point(201m, 1700m)}; g019A = glyphid(952) {L = point(304m, -100m); U = point(304m, 1540m)}; g2C61 = glyphid(953) {L = point(304m, -100m); U = point(304m, 1540m)}; g026B = glyphid(954) {L = point(372m, -100m); U = point(372m, 1540m)}; g_lslash = glyphid(955) {L = point(305m, -100m); U = point(305m, 1540m)}; g026D = glyphid(956) {L = point(303m, -500m); U = point(303m, 1540m)}; g1DA9 = glyphid(957) {L = point(188m, 485m); U = point(188m, 1763m)}; g0234 = glyphid(958) {L = point(303m, -100m); U = point(303m, 1540m)}; g026C = glyphid(959) {L = point(360m, -100m); U = point(360m, 1540m)}; gF266 = glyphid(960) {L = point(360m, -100m); U = point(360m, 1540m)}; g01C9 = glyphid(961) {H = point(303m, 0m); L = point(745m, -500m); U = point(936m, 1500m)}; g02AA = glyphid(962) {L = point(604m, -100m); U = point(671m, 1580m)}; g02AB = glyphid(963) {L = point(586m, -100m); U = point(640m, 1580m)}; g026E = glyphid(964) {L = point(597m, -500m); U = point(660m, 1580m)}; g20B0 = glyphid(965); g_lira = glyphid(966); g216C = glyphid(967) {U = point(553m, 1500m)}; g1D38 = glyphid(968) {L = point(364m, 725m); U = point(364m, 1650m)}; g029F = glyphid(969) {L = point(460m, -100m); U = point(460m, 1100m)}; g1DAB = glyphid(970) {L = point(304m, 725m); U = point(304m, 1450m)}; gF268 = glyphid(971) {L = point(538m, -100m); U = point(538m, 1100m)}; g__lacute = glyphid(972) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -100m); U = point(553m, 1900m)}; g1E3C = glyphid(973) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g1E3A = glyphid(974) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g1E36 = glyphid(975) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g1E38 = glyphid(976) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1870m)}; g__lcommaaccent = glyphid(977) {H = point(553m, 0m); R = point(587m, 1000m); L = point(553m, -500m); U = point(553m, 1500m)}; g__ldot = glyphid(978) {H = point(556m, 0m); L = point(556m, -100m); U = point(556m, 1500m)}; g__lcaron = glyphid(979) {H = point(553m, 0m); L = point(553m, -100m); U = point(553m, 1500m)}; g023D = glyphid(980) {L = point(525m, -100m); U = point(525m, 1500m)}; g2C60 = glyphid(981) {L = point(525m, -100m); U = point(525m, 1500m)}; g2C62 = glyphid(982) {L = point(700m, -100m); U = point(700m, 1500m)}; g__lslash = glyphid(983) {L = point(535m, -100m); U = point(535m, 1500m)}; g1D0C = glyphid(984) {L = point(547m, -100m); U = point(441m, 1100m)}; g01C8 = glyphid(985) {H = point(553m, 0m); L = point(1224m, -500m); U = point(1415m, 1500m)}; g01C7 = glyphid(986) {H = point(553m, 0m); L = point(1497m, -100m); U = point(1762m, 1500m)}; g217F = glyphid(987) {U = point(868m, 1500m)}; g1D50 = glyphid(988) {L = point(568m, 725m); U = point(568m, 1450m)}; g036B = glyphid(989) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E3F = glyphid(990) {H = point(868m, 0m); L = point(868m, -100m); U = point(868m, 1500m)}; g1E41 = glyphid(991) {H = point(868m, 0m); L = point(868m, -100m); U = point(868m, 1500m)}; g1E43 = glyphid(992) {H = point(868m, 0m); L = point(868m, -500m); U = point(868m, 1100m)}; g1D86 = glyphid(993) {L = point(868m, -100m); U = point(868m, 1100m)}; g1D6F = glyphid(994) {L = point(865m, -100m); U = point(865m, 1100m)}; g20A5 = glyphid(995); g0271 = glyphid(996) {L = point(797m, -500m); U = point(797m, 1100m)}; g1DAC = glyphid(997) {L = point(522m, 485m); U = point(522m, 1450m)}; g026F = glyphid(998) {R = point(1741m, 1000m); L = point(871m, -100m); U = point(871m, 1100m)}; g1D5A = glyphid(999) {L = point(568m, 725m); U = point(568m, 1450m)}; g0270 = glyphid(1000) {L = point(871m, -500m); U = point(871m, 1100m)}; g1DAD = glyphid(1001) {L = point(571m, 725m); U = point(571m, 1457m)}; g1D1F = glyphid(1002) {L = point(576m, -100m); U = point(576m, 1540m)}; g043C = glyphid(1003) {L = point(727m, -100m); U = point(727m, 1100m)}; g04CE = glyphid(1004) {L = point(727m, -100m); U = point(727m, 1100m)}; g041C = glyphid(1005) {L = point(890m, -100m); U = point(890m, 1500m)}; g216F = glyphid(1006) {U = point(895m, 1500m)}; g1D39 = glyphid(1007) {L = point(586m, 725m); U = point(586m, 1650m)}; g1D0D = glyphid(1008) {L = point(721m, -100m); U = point(721m, 1100m)}; g1E3E = glyphid(1009) {L = point(895m, -100m); U = point(895m, 1900m)}; g1E40 = glyphid(1010) {L = point(895m, -100m); U = point(895m, 1900m)}; g1E42 = glyphid(1011) {L = point(895m, -500m); U = point(895m, 1500m)}; gF25B = glyphid(1012) {L = point(897m, -500m); U = point(897m, 1500m)}; g019C = glyphid(1013) {L = point(1101m, -100m); U = point(1101m, 1500m)}; g04CD = glyphid(1014) {L = point(890m, -100m); U = point(890m, 1500m)}; g1D510 = glyphid(1015); g207F = glyphid(1016) {L = point(381m, 725m); U = point(381m, 1450m)}; g_nacute = glyphid(1017) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g01F9 = glyphid(1018) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g_ncaron = glyphid(1019) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g1E45 = glyphid(1020) {H = point(873m, 0m); L = point(580m, -100m); U = point(580m, 1500m)}; g1E4B = glyphid(1021) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g1E49 = glyphid(1022) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g1E47 = glyphid(1023) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g_ncommaaccent = glyphid(1024) {H = point(873m, 0m); L = point(580m, -500m); U = point(580m, 1100m)}; g_napostrophe = glyphid(1025) {H = point(1131m, 0m); L = point(838m, -100m); U = point(838m, 1100m)}; g1D87 = glyphid(1026) {L = point(580m, -500m); U = point(580m, 1100m)}; g1D70 = glyphid(1027) {L = point(583m, -100m); U = point(583m, 1100m)}; g0272 = glyphid(1028) {L = point(607m, -500m); U = point(607m, 1100m)}; g1DAE = glyphid(1029) {L = point(398m, 485m); U = point(398m, 1450m)}; g_eng = glyphid(1030) {L = point(603m, -500m); U = point(603m, 1100m)}; g1D51 = glyphid(1031) {L = point(346m, 485m); U = point(346m, 1450m)}; g0273 = glyphid(1032) {L = point(568m, -500m); U = point(568m, 1100m)}; g1DAF = glyphid(1033) {L = point(458m, 485m); U = point(458m, 1450m)}; g0235 = glyphid(1034) {L = point(580m, -320m); U = point(580m, 1100m)}; g019E = glyphid(1035) {L = point(580m, -500m); U = point(580m, 1100m)}; g01CC = glyphid(1036) {H = point(873m, 0m); L = point(1298m, -500m); U = point(1489m, 1500m)}; g0438 = glyphid(1037) {L = point(618m, -100m); U = point(618m, 1100m)}; g045D = glyphid(1038) {L = point(618m, -100m); U = point(618m, 1500m)}; g0439 = glyphid(1039) {L = point(618m, -100m); U = point(618m, 1500m)}; g048B = glyphid(1040) {L = point(618m, -100m); U = point(618m, 1500m)}; g04E3 = glyphid(1041) {L = point(618m, -100m); U = point(618m, 1470m)}; g04E5 = glyphid(1042) {L = point(618m, -100m); U = point(618m, 1500m)}; g1D3A = glyphid(1043) {L = point(482m, 725m); U = point(482m, 1650m)}; g0274 = glyphid(1044) {L = point(599m, -100m); U = point(599m, 1100m)}; g1DB0 = glyphid(1045) {L = point(391m, 725m); U = point(391m, 1450m)}; g__nacute = glyphid(1046) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g01F8 = glyphid(1047) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g__ncaron = glyphid(1048) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g1E44 = glyphid(1049) {H = point(734m, 0m); L = point(734m, -100m); U = point(734m, 1900m)}; g1E4A = glyphid(1050) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g1E48 = glyphid(1051) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g1E46 = glyphid(1052) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g__ncommaaccent = glyphid(1053) {H = point(734m, 0m); L = point(734m, -500m); U = point(734m, 1500m)}; g20A6 = glyphid(1054); g019D = glyphid(1055) {L = point(734m, -500m); U = point(734m, 1500m)}; g__eng_u_c_style = glyphid(1056) {L = point(737m, -500m); U = point(737m, 1500m)}; g1D0E = glyphid(1057) {L = point(603m, -100m); U = point(603m, 1100m)}; g1D3B = glyphid(1058) {L = point(476m, 725m); U = point(476m, 1650m)}; g019D_lCStyle = glyphid(1059) {L = point(725m, -100m); U = point(725m, 1500m)}; g__eng_baseline_hook = glyphid(1060) {L = point(804m, -100m); U = point(804m, 1500m)}; g__eng = glyphid(1061) {L = point(780m, -500m); U = point(780m, 1500m)}; g0220 = glyphid(1062) {L = point(753m, -500m); U = point(753m, 1500m)}; g__eng_kom = glyphid(1063) {L = point(769m, -100m); U = point(769m, 1500m)}; g01CB = glyphid(1064) {H = point(734m, 0m); L = point(1614m, -500m); U = point(1805m, 1500m)}; g01CA = glyphid(1065) {H = point(734m, 0m); L = point(1887m, -100m); U = point(2152m, 1500m)}; g2116 = glyphid(1066); g0418 = glyphid(1067) {L = point(730m, -100m); U = point(730m, 1500m)}; g040D = glyphid(1068) {L = point(730m, -100m); U = point(730m, 1900m)}; g0419 = glyphid(1069) {L = point(730m, -100m); U = point(730m, 1935m)}; g048A = glyphid(1070) {L = point(730m, -100m); U = point(730m, 1907m)}; g04E4 = glyphid(1071) {L = point(730m, -100m); U = point(730m, 1900m)}; g04E2 = glyphid(1072) {L = point(730m, -100m); U = point(730m, 1870m)}; g043E = glyphid(1073) {L = point(557m, -100m); U = point(557m, 1100m)}; g2092 = glyphid(1074) {L = point(367m, -525m); U = point(367m, 200m)}; g1D52 = glyphid(1075) {L = point(366m, 725m); U = point(366m, 1450m)}; g0366 = glyphid(1076) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_ohungarumlaut = glyphid(1077) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g020D = glyphid(1078) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g1ED1 = glyphid(1079) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED1_vN = glyphid(1080) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m)}; g1ED3 = glyphid(1081) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED3_vN = glyphid(1082) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m)}; g1ED7 = glyphid(1083) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED7_vN = glyphid(1084) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1825m)}; g1ED5 = glyphid(1085) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g1ED5_vN = glyphid(1086) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m)}; g1ED9 = glyphid(1087) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1500m)}; g020F = glyphid(1088) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_obreve = glyphid(1089) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g01D2 = glyphid(1090) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g1E4D = glyphid(1091) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g022D = glyphid(1092) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g1E4F = glyphid(1093) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1900m)}; g_omacron = glyphid(1094) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1470m)}; g1E53 = glyphid(1095) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g1E51 = glyphid(1096) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g04E7 = glyphid(1097) {L = point(557m, -100m); U = point(557m, 1500m)}; g022B = glyphid(1098) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g022F = glyphid(1099) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g0231 = glyphid(1100) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1870m)}; g1ECF = glyphid(1101) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g1ECD = glyphid(1102) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1100m)}; g01EB = glyphid(1103) {H = point(557m, 0m); R = point(1114m, 1000m); L = point(622m, -400m); U = point(557m, 1100m)}; g01ED = glyphid(1104) {H = point(557m, 0m); R = point(1114m, 1000m); L = point(622m, -400m); U = point(557m, 1470m)}; g01EB_retroHookStyle = glyphid(1105) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1100m)}; g01ED_retroHookStyle = glyphid(1106) {H = point(557m, 0m); O = point(783m, 0m); R = point(1114m, 1000m); L = point(557m, -500m); U = point(557m, 1470m)}; g018D = glyphid(1107) {L = point(537m, -500m); U = point(537m, 1100m)}; g0275 = glyphid(1108) {R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g04E9 = glyphid(1109) {R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1100m)}; g1DB1 = glyphid(1110) {L = point(366m, 725m); U = point(366m, 1450m)}; g04EB = glyphid(1111) {R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_theta = glyphid(1112) {L = point(529m, -100m); U = point(529m, 1540m)}; g1DBF = glyphid(1113) {L = point(349m, 725m); U = point(349m, 1700m)}; g0473 = glyphid(1114); gF1AB = glyphid(1115) {L = point(366m, 725m); U = point(366m, 1450m)}; g_oslashacute = glyphid(1116) {H = point(557m, 0m); O = point(608m, 0m); R = point(1114m, 1000m); L = point(557m, -100m); U = point(557m, 1500m)}; g_emptyset_slash_zero = glyphid(1117); g_emptyset = glyphid(1118); g_ohorn = glyphid(1119) {L = point(554m, -100m); U = point(554m, 1100m)}; g1EDB = glyphid(1120) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EDD = glyphid(1121) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EE1 = glyphid(1122) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EDF = glyphid(1123) {L = point(554m, -100m); U = point(554m, 1500m)}; g1EE3 = glyphid(1124) {L = point(554m, -500m); U = point(554m, 1100m)}; g_sigma = glyphid(1125) {L = point(545m, -100m); U = point(545m, 1100m)}; g04A9 = glyphid(1126) {L = point(572m, -100m); U = point(572m, 1100m)}; g1D11 = glyphid(1127) {L = point(588m, -100m); U = point(588m, 1100m)}; g1D13 = glyphid(1128) {L = point(559m, -100m); U = point(559m, 1100m)}; gF1AD = glyphid(1129) {L = point(550m, 725m); U = point(550m, 1457m)}; g1D14 = glyphid(1130) {L = point(839m, -100m); U = point(839m, 1100m)}; g01A3 = glyphid(1131) {L = point(778m, -100m); U = point(778m, 1100m)}; g0223 = glyphid(1132) {L = point(525m, -100m); U = point(525m, 1580m)}; g0223_openTop = glyphid(1133) {L = point(544m, -100m); U = point(544m, 1580m)}; g1D17 = glyphid(1134) {L = point(557m, -100m); U = point(557m, 1100m)}; g1D55 = glyphid(1135) {L = point(362m, 725m); U = point(362m, 1450m)}; g1D16 = glyphid(1136) {L = point(557m, -100m); U = point(557m, 1100m)}; g1D54 = glyphid(1137) {L = point(362m, 725m); U = point(362m, 1450m)}; g041E = glyphid(1138) {L = point(748m, -100m); U = point(748m, 1500m)}; g1D3C = glyphid(1139) {L = point(491m, 725m); U = point(491m, 1650m)}; g1D0F = glyphid(1140) {L = point(613m, -100m); U = point(613m, 1100m)}; g__ohungarumlaut = glyphid(1141) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g020C = glyphid(1142) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g1ED0 = glyphid(1143) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED0_vN = glyphid(1144) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m)}; g1ED2 = glyphid(1145) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED2_vN = glyphid(1146) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m)}; g1ED6 = glyphid(1147) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED6_vN = glyphid(1148) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2225m)}; g1ED4 = glyphid(1149) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g1ED4_vN = glyphid(1150) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m)}; g1ED8 = glyphid(1151) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1900m)}; g020E = glyphid(1152) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g__obreve = glyphid(1153) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g01D1 = glyphid(1154) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g1E4C = glyphid(1155) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g022C = glyphid(1156) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g1E4E = glyphid(1157) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2300m)}; g__omacron = glyphid(1158) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1870m)}; g1E52 = glyphid(1159) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g1E50 = glyphid(1160) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g04E6 = glyphid(1161) {L = point(748m, -100m); U = point(748m, 1900m)}; g022A = glyphid(1162) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g022E = glyphid(1163) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g0230 = glyphid(1164) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 2270m)}; g1ECE = glyphid(1165) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -100m); U = point(748m, 1900m)}; g1ECC = glyphid(1166) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1500m)}; g01EA = glyphid(1167) {H = point(748m, 0m); R = point(1497m, 1000m); L = point(947m, -400m); U = point(748m, 1500m)}; g01EC = glyphid(1168) {H = point(748m, 0m); R = point(1497m, 1000m); L = point(947m, -400m); U = point(748m, 1870m)}; g01EA_retroHookStyle = glyphid(1169) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1500m)}; g01EC_retroHookStyle = glyphid(1170) {H = point(748m, 0m); O = point(1005m, 0m); R = point(1497m, 1000m); L = point(748m, -500m); U = point(748m, 1870m)}; g019F = glyphid(1171) {L = point(748m, -100m); U = point(748m, 1500m)}; g04E8 = glyphid(1172) {L = point(748m, -100m); U = point(748m, 1500m)}; g04EA = glyphid(1173) {L = point(748m, -100m); U = point(748m, 1900m)}; g__theta = glyphid(1174) {L = point(735m, -100m); U = point(735m, 1500m)}; g0472 = glyphid(1175); g__oslashacute = glyphid(1176) {L = point(748m, -100m); U = point(748m, 1900m)}; g__ohorn = glyphid(1177) {L = point(748m, -100m); U = point(748m, 1500m)}; g1EDA = glyphid(1178) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EDC = glyphid(1179) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EE0 = glyphid(1180) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EDE = glyphid(1181) {L = point(748m, -100m); U = point(748m, 1900m)}; g1EE2 = glyphid(1182) {L = point(748m, -500m); U = point(748m, 1500m)}; g04A8 = glyphid(1183) {L = point(799m, -100m); U = point(799m, 1500m)}; g0276 = glyphid(1184) {R = point(1679m, 1000m); L = point(840m, -100m); U = point(840m, 1100m)}; gF1AE = glyphid(1185) {L = point(550m, 725m); U = point(550m, 1457m)}; g01A2 = glyphid(1186) {L = point(947m, -100m); U = point(947m, 1500m)}; g0222 = glyphid(1187) {L = point(569m, -100m); U = point(569m, 1585m)}; g0222_openTop = glyphid(1188) {L = point(569m, -100m); U = point(569m, 1500m)}; g1D3D = glyphid(1189) {L = point(394m, 725m); U = point(395m, 1670m)}; g1D3D_openTop = glyphid(1190) {L = point(394m, 725m); U = point(394m, 1670m)}; g1D15 = glyphid(1191) {L = point(461m, -100m); U = point(461m, 1100m)}; g1D15_openTop = glyphid(1192) {L = point(442m, -100m); U = point(442m, 1100m)}; g03A9 = glyphid(1193); g0298 = glyphid(1194) {L = point(794m, -100m); U = point(794m, 1500m)}; g0440 = glyphid(1195) {L = point(559m, -500m); U = point(559m, 1100m)}; g1D56 = glyphid(1196) {L = point(370m, 485m); U = point(370m, 1450m)}; g1E55 = glyphid(1197) {H = point(301m, -435m); R = point(1145m, 1000m); L = point(559m, -500m); U = point(559m, 1500m)}; g1E57 = glyphid(1198) {H = point(301m, -435m); R = point(1145m, 1000m); L = point(559m, -500m); U = point(559m, 1500m)}; g1D88 = glyphid(1199) {L = point(559m, -500m); U = point(559m, 1100m)}; g1D7D = glyphid(1200) {L = point(572m, -500m); U = point(572m, 1100m)}; g048F = glyphid(1201) {L = point(559m, -500m); U = point(559m, 1100m)}; g1D71 = glyphid(1202) {L = point(548m, -500m); U = point(548m, 1100m)}; g_thorn = glyphid(1203) {L = point(559m, -500m); U = point(559m, 1540m)}; g01A5 = glyphid(1204) {L = point(558m, -500m); U = point(558m, 1540m)}; g01A5_bowlHook = glyphid(1205) {L = point(559m, -500m); U = point(559m, 1540m)}; g01BF = glyphid(1206) {L = point(529m, -500m); U = point(529m, 1100m)}; g1D68 = glyphid(1207) {L = point(299m, -525m); U = point(299m, 450m)}; g0278 = glyphid(1208) {L = point(562m, -500m); U = point(562m, 1540m)}; g1DB2 = glyphid(1209) {L = point(370m, 485m); U = point(370m, 1700m)}; g0444 = glyphid(1210) {L = point(742m, -500m); U = point(742m, 1540m)}; g1D69 = glyphid(1211) {L = point(411m, -525m); U = point(411m, 450m)}; g1D60 = glyphid(1212) {L = point(411m, 485m); U = point(411m, 1450m)}; g2C77 = glyphid(1213); g0420 = glyphid(1214) {L = point(578m, -100m); U = point(578m, 1500m)}; g1D3E = glyphid(1215) {L = point(381m, 725m); U = point(381m, 1650m)}; g1D18 = glyphid(1216) {L = point(481m, -100m); U = point(481m, 1100m)}; g1D29 = glyphid(1217) {L = point(481m, -100m); U = point(481m, 1100m)}; g1E54 = glyphid(1218) {L = point(578m, -100m); U = point(578m, 1900m)}; g1E56 = glyphid(1219) {L = point(578m, -100m); U = point(578m, 1900m)}; g048E = glyphid(1220) {L = point(578m, -100m); U = point(578m, 1500m)}; g2C63 = glyphid(1221) {L = point(578m, -100m); U = point(578m, 1500m)}; g01A4 = glyphid(1222) {L = point(610m, -100m); U = point(610m, 1500m)}; g20B1 = glyphid(1223); g_peseta = glyphid(1224); g__thorn = glyphid(1225) {L = point(585m, -100m); U = point(585m, 1500m)}; g01F7 = glyphid(1226) {L = point(591m, -100m); U = point(591m, 1500m)}; g1D513 = glyphid(1227); g0424 = glyphid(1228) {L = point(838m, -100m); U = point(838m, 1500m)}; g1D2A = glyphid(1229) {L = point(673m, -100m); U = point(673m, 1100m)}; g02A0 = glyphid(1230) {L = point(712m, -500m); U = point(712m, 1540m)}; g024B = glyphid(1231) {L = point(706m, -500m); U = point(706m, 1100m)}; g01AA = glyphid(1232) {L = point(646m, -500m); U = point(646m, 1540m)}; g0239 = glyphid(1233) {L = point(861m, -500m); U = point(861m, 1100m)}; g024A = glyphid(1234) {L = point(876m, -500m); U = point(876m, 1500m)}; g1D63 = glyphid(1235) {L = point(274m, -525m); U = point(274m, 200m)}; g1DCA = glyphid(1236) {LM = point(-557m, -100m); L = point(-557m, -765m)}; g02B3 = glyphid(1237) {L = point(273m, 725m); U = point(273m, 1450m)}; g036C = glyphid(1238) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_racute = glyphid(1239) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g0211 = glyphid(1240) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g0213 = glyphid(1241) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g_rcaron = glyphid(1242) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g1E59 = glyphid(1243) {H = point(290m, 0m); L = point(290m, -100m); U = point(443m, 1500m)}; g1E5F = glyphid(1244) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1100m)}; g1E5B = glyphid(1245) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1100m)}; g1E5D = glyphid(1246) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1470m)}; g_rcommaaccent = glyphid(1247) {H = point(290m, 0m); L = point(290m, -500m); U = point(443m, 1100m)}; g1D89 = glyphid(1248) {L = point(413m, -500m); U = point(413m, 1100m)}; g024D = glyphid(1249) {L = point(290m, -100m); U = point(413m, 1100m)}; g1D72 = glyphid(1250) {L = point(290m, -100m); U = point(413m, 1100m)}; g027D = glyphid(1251) {L = point(413m, -500m); U = point(413m, 1100m)}; g027C = glyphid(1252) {L = point(290m, -500m); U = point(413m, 1100m)}; g0279 = glyphid(1253) {L = point(387m, -100m); U = point(387m, 1100m)}; g02B4 = glyphid(1254) {L = point(256m, 725m); U = point(256m, 1450m)}; g027B = glyphid(1255) {L = point(490m, -500m); U = point(490m, 1100m)}; g02B5 = glyphid(1256) {L = point(324m, 485m); U = point(324m, 1450m)}; gF269 = glyphid(1257) {L = point(490m, -500m); U = point(490m, 1540m)}; g027A = glyphid(1258) {L = point(387m, -100m); U = point(387m, 1540m)}; g027E = glyphid(1259) {L = point(290m, -100m); U = point(413m, 1100m)}; g1D73 = glyphid(1260) {L = point(314m, -100m); U = point(450m, 1100m)}; g0285 = glyphid(1261) {L = point(403m, -500m); U = point(403m, 1100m)}; g027F = glyphid(1262) {L = point(410m, -500m); U = point(294m, 1100m)}; g1D3F = glyphid(1263) {L = point(458m, 725m); U = point(458m, 1650m)}; g0280 = glyphid(1264) {L = point(555m, -100m); U = point(555m, 1100m)}; g__racute = glyphid(1265) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g0210 = glyphid(1266) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g0212 = glyphid(1267) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g__rcaron = glyphid(1268) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g1E58 = glyphid(1269) {H = point(603m, 0m); L = point(603m, -100m); U = point(603m, 1900m)}; g1E5E = glyphid(1270) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1500m)}; g1E5A = glyphid(1271) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1500m)}; g1E5C = glyphid(1272) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1870m)}; g__rcommaaccent = glyphid(1273) {H = point(603m, 0m); L = point(603m, -500m); U = point(603m, 1500m)}; g024C = glyphid(1274) {L = point(669m, -100m); U = point(669m, 1500m)}; g2C64 = glyphid(1275) {L = point(696m, -500m); U = point(696m, 1500m)}; g2C64_lCStyle = glyphid(1276) {L = point(493m, -500m); U = point(493m, 1500m)}; g01A6 = glyphid(1277) {L = point(685m, -100m); U = point(685m, 1500m)}; g20A8 = glyphid(1278); g211F = glyphid(1279); g1D1A = glyphid(1280) {L = point(516m, -100m); U = point(516m, 1100m)}; g0281 = glyphid(1281) {L = point(555m, -100m); U = point(555m, 1100m)}; g02B6 = glyphid(1282) {L = point(366m, 725m); U = point(366m, 1450m)}; g042F = glyphid(1283) {L = point(628m, -100m); U = point(628m, 1500m)}; g1D19 = glyphid(1284) {L = point(501m, -100m); U = point(501m, 1100m)}; g044F = glyphid(1285) {L = point(506m, -100m); U = point(506m, 1100m)}; g0455 = glyphid(1286) {L = point(418m, -100m); U = point(418m, 1100m)}; g02E2 = glyphid(1287) {L = point(269m, 725m); U = point(269m, 1450m)}; g_sacute = glyphid(1288) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g1E65 = glyphid(1289) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1900m)}; g_scircumflex = glyphid(1290) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g_scaron = glyphid(1291) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g1E67 = glyphid(1292) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1900m)}; g1E61 = glyphid(1293) {H = point(407m, 0m); L = point(407m, -100m); U = point(427m, 1500m)}; g1E63 = glyphid(1294) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1100m)}; g1E69 = glyphid(1295) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1500m)}; g_scommaaccent = glyphid(1296) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1100m)}; g_scedilla_comma_style = glyphid(1297) {H = point(407m, 0m); L = point(407m, -500m); U = point(427m, 1100m)}; g_scedilla = glyphid(1298) {L = point(407m, -500m); U = point(427m, 1100m)}; g0282 = glyphid(1299) {L = point(407m, -500m); U = point(407m, 1100m)}; g1DB3 = glyphid(1300) {L = point(269m, 485m); U = point(269m, 1450m)}; g1D8A = glyphid(1301) {L = point(407m, -500m); U = point(407m, 1100m)}; g1D74 = glyphid(1302) {L = point(416m, -100m); U = point(416m, 1100m)}; g023F = glyphid(1303) {L = point(442m, -500m); U = point(442m, 1100m)}; g01A8 = glyphid(1304) {L = point(409m, -100m); U = point(409m, 1100m)}; g0283 = glyphid(1305) {L = point(363m, -500m); U = point(363m, 1540m)}; g1DB4 = glyphid(1306) {L = point(166m, 485m); U = point(323m, 1799m)}; g1D98 = glyphid(1307) {L = point(365m, -845m); U = point(365m, 1540m)}; g1D8B = glyphid(1308) {L = point(436m, -500m); U = point(436m, 1540m)}; g0286 = glyphid(1309) {L = point(352m, -500m); U = point(352m, 1540m)}; g0405 = glyphid(1310) {L = point(538m, -100m); U = point(538m, 1500m)}; g__sacute = glyphid(1311) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g1E64 = glyphid(1312) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 2300m)}; g__scircumflex = glyphid(1313) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g__scaron = glyphid(1314) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g1E66 = glyphid(1315) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 2300m)}; g1E60 = glyphid(1316) {H = point(543m, 0m); L = point(543m, -100m); U = point(563m, 1900m)}; g1E62 = glyphid(1317) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1500m)}; g1E68 = glyphid(1318) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1900m)}; g__scommaaccent = glyphid(1319) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1500m)}; g__scedilla_comma_style = glyphid(1320) {H = point(543m, 0m); L = point(543m, -500m); U = point(563m, 1500m)}; g__scedilla = glyphid(1321) {L = point(543m, -500m); U = point(563m, 1500m)}; g01A7 = glyphid(1322) {L = point(535m, -100m); U = point(535m, 1500m)}; g20B4 = glyphid(1323); g1D57 = glyphid(1324) {L = point(245m, 725m); U = point(245m, 1700m)}; g036D = glyphid(1325) {U = point(-557m, 2000m); UM = point(-557m, 1100m)}; g1E97 = glyphid(1326) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1763m)}; g1E6B = glyphid(1327) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1763m)}; g1E71 = glyphid(1328) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g1E6F = glyphid(1329) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g1E6D = glyphid(1330) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g021B = glyphid(1331) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g0163_commaStyle = glyphid(1332) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g_tcaron = glyphid(1333) {H = point(368m, 0m); L = point(368m, -100m); U = point(358m, 1363m)}; g0163 = glyphid(1334) {R = point(696m, 1000m); L = point(368m, -500m); U = point(358m, 1363m)}; g01AB = glyphid(1335) {L = point(358m, -500m); U = point(358m, 1363m)}; g1DB5 = glyphid(1336) {L = point(244m, 485m); U = point(244m, 1675m)}; g_tbar = glyphid(1337) {L = point(368m, -100m); U = point(368m, 1363m)}; g1D75 = glyphid(1338) {L = point(359m, -100m); U = point(359m, 1363m)}; g2C66 = glyphid(1339) {H = point(368m, 0m); R = point(696m, 1000m); L = point(368m, -100m); U = point(358m, 1363m)}; g01AD = glyphid(1340) {L = point(400m, -100m); U = point(400m, 1540m)}; g0288 = glyphid(1341) {R = point(696m, 1000m); L = point(239m, -500m); U = point(239m, 1363m)}; g0236 = glyphid(1342) {L = point(330m, -100m); U = point(330m, 1363m)}; g1D7A = glyphid(1343) {L = point(962m, -100m); U = point(962m, 1540m)}; g02A8 = glyphid(1344) {L = point(710m, -100m); U = point(781m, 1363m)}; g02A6 = glyphid(1345) {L = point(652m, -100m); U = point(686m, 1363m)}; g02A7 = glyphid(1346) {L = point(616m, -500m); U = point(597m, 1580m)}; g0287 = glyphid(1347) {L = point(326m, -500m); U = point(326m, 1100m)}; g0442 = glyphid(1348) {L = point(502m, -100m); U = point(502m, 1100m)}; g04AD = glyphid(1349) {L = point(502m, -430m); U = point(502m, 1100m)}; g050F = glyphid(1350) {L = point(638m, -100m); U = point(638m, 1100m)}; g04B5 = glyphid(1351) {L = point(658m, -100m); U = point(658m, 1100m)}; g0422 = glyphid(1352) {L = point(613m, -100m); U = point(613m, 1500m)}; g1D40 = glyphid(1353) {L = point(403m, 725m); U = point(403m, 1650m)}; g1D1B = glyphid(1354) {L = point(500m, -100m); U = point(500m, 1100m)}; g__tcaron = glyphid(1355) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1900m)}; g1E6A = glyphid(1356) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1900m)}; g1E70 = glyphid(1357) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g1E6E = glyphid(1358) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g1E6C = glyphid(1359) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g021A = glyphid(1360) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g0162_commaStyle = glyphid(1361) {H = point(613m, 0m); L = point(613m, -500m); U = point(613m, 1500m)}; g0162 = glyphid(1362) {L = point(613m, -500m); U = point(613m, 1500m)}; g__tbar = glyphid(1363) {L = point(613m, -100m); U = point(613m, 1500m)}; g20AE = glyphid(1364); g023E = glyphid(1365) {H = point(613m, 0m); L = point(613m, -100m); U = point(613m, 1500m)}; g01AC = glyphid(1366) {L = point(605m, -100m); U = point(605m, 1500m)}; g01AC_rtHook = glyphid(1367) {L = point(613m, -100m); U = point(613m, 1500m)}; g01AE = glyphid(1368) {L = point(613m, -500m); U = point(613m, 1500m)}; g04AC = glyphid(1369) {L = point(613m, -500m); U = point(613m, 1500m)}; g050E = glyphid(1370) {L = point(752m, -100m); U = point(752m, 1500m)}; g04B4 = glyphid(1371) {L = point(824m, -100m); U = point(824m, 1500m)}; g040B = glyphid(1372) {L = point(725m, -100m); U = point(725m, 1500m)}; g0402 = glyphid(1373) {L = point(714m, -100m); U = point(714m, 1500m)}; g1D64 = glyphid(1374) {L = point(383m, -525m); U = point(383m, 200m)}; g1D58 = glyphid(1375) {L = point(385m, 725m); U = point(385m, 1450m)}; g0367 = glyphid(1376) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g_uhungarumlaut = glyphid(1377) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g0215 = glyphid(1378) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g0217 = glyphid(1379) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_ubreve = glyphid(1380) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g01D4 = glyphid(1381) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g_utilde = glyphid(1382) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g1E79 = glyphid(1383) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g_umacron = glyphid(1384) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1470m)}; g1E7B = glyphid(1385) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1870m)}; g01D8 = glyphid(1386) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g01DC = glyphid(1387) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g01DA = glyphid(1388) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1900m)}; g01D6 = glyphid(1389) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1870m)}; g_uring = glyphid(1390) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1660m)}; g1EE7 = glyphid(1391) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1500m)}; g1E77 = glyphid(1392) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1E75 = glyphid(1393) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1E73 = glyphid(1394) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1EE5 = glyphid(1395) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g_uogonek = glyphid(1396) {L = point(576m, -400m); U = point(582m, 1100m)}; g_uogonek_retro_hook_style = glyphid(1397) {H = point(526m, 0m); O = point(634m, 0m); R = point(1165m, 1000m); L = point(582m, -500m); U = point(582m, 1100m)}; g1D99 = glyphid(1398) {L = point(586m, -100m); U = point(586m, 1100m)}; g0289 = glyphid(1399) {H = point(582m, 0m); O = point(635m, 0m); R = point(1165m, 1000m); L = point(582m, -100m); U = point(582m, 1100m)}; g1DB6 = glyphid(1400) {L = point(385m, 725m); U = point(385m, 1450m)}; g_uhorn = glyphid(1401) {L = point(618m, -100m); U = point(618m, 1100m)}; g1EE9 = glyphid(1402) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EEB = glyphid(1403) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EEF = glyphid(1404) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EED = glyphid(1405) {L = point(618m, -100m); U = point(618m, 1500m)}; g1EF1 = glyphid(1406) {L = point(618m, -500m); U = point(618m, 1100m)}; g1D6B = glyphid(1407) {L = point(894m, -100m); U = point(894m, 1100m)}; g1D1D = glyphid(1408) {L = point(569m, -100m); U = point(569m, 1100m)}; g1D59 = glyphid(1409) {L = point(375m, 725m); U = point(375m, 1450m)}; g1D1E = glyphid(1410) {L = point(775m, -100m); U = point(775m, 1100m)}; g028B = glyphid(1411) {H = point(541m, 0m); O = point(596m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g1DB9 = glyphid(1412) {L = point(357m, 725m); U = point(357m, 1450m)}; g028A = glyphid(1413) {H = point(560m, 0m); O = point(614m, 0m); R = point(1120m, 1000m); L = point(560m, -100m); U = point(560m, 1100m)}; g1DB7 = glyphid(1414) {L = point(368m, 725m); U = point(368m, 1450m)}; g1D7F = glyphid(1415) {L = point(560m, -100m); U = point(560m, 1100m)}; gF259 = glyphid(1416) {L = point(374m, -100m); U = point(374m, 1405m)}; g1D41 = glyphid(1417) {L = point(481m, 725m); U = point(481m, 1650m)}; g1D1C = glyphid(1418) {L = point(575m, -100m); U = point(575m, 1100m)}; g1DB8 = glyphid(1419) {L = point(379m, 725m); U = point(379m, 1450m)}; g__uhungarumlaut = glyphid(1420) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g0214 = glyphid(1421) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g0216 = glyphid(1422) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__ubreve = glyphid(1423) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g01D3 = glyphid(1424) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g__utilde = glyphid(1425) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g1E78 = glyphid(1426) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g__umacron = glyphid(1427) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1870m)}; g1E7A = glyphid(1428) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2270m)}; g01D7 = glyphid(1429) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g01DB = glyphid(1430) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g01D9 = glyphid(1431) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2300m)}; g01D5 = glyphid(1432) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2270m)}; g__uring = glyphid(1433) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 2060m)}; g1EE6 = glyphid(1434) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -100m); U = point(750m, 1900m)}; g1E76 = glyphid(1435) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g1E74 = glyphid(1436) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g1E72 = glyphid(1437) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g1EE4 = glyphid(1438) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g__uogonek = glyphid(1439) {H = point(733m, 0m); R = point(1458m, 1000m); L = point(758m, -400m); U = point(750m, 1500m)}; g__uogonek_retro_hook_style = glyphid(1440) {H = point(733m, 0m); O = point(816m, 0m); R = point(1458m, 1000m); L = point(750m, -500m); U = point(750m, 1500m)}; g0244 = glyphid(1441) {L = point(750m, -100m); U = point(750m, 1500m)}; g1D7E = glyphid(1442) {L = point(575m, -100m); U = point(575m, 1100m)}; gF1CD = glyphid(1443) {L = point(384m, 725m); U = point(384m, 1450m)}; g__uhorn = glyphid(1444) {L = point(750m, -100m); U = point(750m, 1500m)}; g1EE8 = glyphid(1445) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EEA = glyphid(1446) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EEE = glyphid(1447) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EEC = glyphid(1448) {L = point(750m, -100m); U = point(750m, 1900m)}; g1EF0 = glyphid(1449) {L = point(750m, -500m); U = point(750m, 1500m)}; g01B2 = glyphid(1450) {L = point(712m, -100m); U = point(712m, 1500m)}; g01B1 = glyphid(1451) {L = point(699m, -100m); U = point(699m, 1500m)}; g_v_slant_italic = glyphid(1452) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g2174 = glyphid(1453) {U = point(541m, 1500m)}; g1D65 = glyphid(1454) {L = point(357m, -525m); U = point(357m, 200m)}; g1D5B = glyphid(1455) {L = point(351m, 725m); U = point(351m, 1450m)}; g036E = glyphid(1456) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E7D = glyphid(1457) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1500m)}; g1E7F = glyphid(1458) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -500m); U = point(541m, 1100m)}; g1D8C = glyphid(1459) {L = point(541m, -500m); U = point(541m, 1100m)}; gF25F = glyphid(1460) {H = point(555m, 0m); O = point(655m, 0m); L = point(541m, -100m); U = point(541m, 1100m)}; g028B_straightLft = glyphid(1461) {H = point(497m, 0m); O = point(549m, 0m); L = point(497m, -100m); U = point(497m, 1100m)}; g2C74 = glyphid(1462) {H = point(487m, 0m); O = point(542m, 0m); L = point(487m, -100m); U = point(487m, 1100m)}; g2175 = glyphid(1463) {U = point(845m, 1500m)}; g2176 = glyphid(1464) {U = point(1152m, 1500m)}; g2177 = glyphid(1465) {U = point(1463m, 1500m)}; g028C = glyphid(1466) {H = point(541m, 0m); O = point(594m, 0m); R = point(1083m, 1000m); L = point(541m, -100m); U = point(541m, 1100m)}; g1DBA = glyphid(1467) {L = point(357m, 725m); U = point(357m, 1450m)}; g0264_lrgBowl = glyphid(1468) {R = point(1083m, 1000m); L = point(541m, -100m); U = point(541m, 1100m)}; g0264 = glyphid(1469) {R = point(1178m, 1000m); L = point(588m, -100m); U = point(588m, 1100m)}; gF1B5 = glyphid(1470) {L = point(382m, 725m); U = point(382m, 1450m)}; g0264_gammaStyle = glyphid(1471) {R = point(1122m, 1000m); L = point(600m, -100m); U = point(600m, 1100m)}; g0263 = glyphid(1472) {L = point(630m, -500m); U = point(630m, 1100m)}; g02E0 = glyphid(1473) {L = point(386m, 485m); U = point(386m, 1450m)}; g_gamma = glyphid(1474) {L = point(499m, -500m); U = point(499m, 1100m)}; g1D67 = glyphid(1475) {L = point(329m, -765m); U = point(329m, 200m)}; g1D5E = glyphid(1476) {L = point(329m, 485m); U = point(329m, 1450m)}; g2164 = glyphid(1477) {U = point(681m, 1500m)}; g1D20 = glyphid(1478) {L = point(559m, -100m); U = point(559m, 1100m)}; g1E7C = glyphid(1479) {H = point(705m, 0m); O = point(727m, 0m); L = point(705m, -100m); U = point(705m, 1900m)}; g1E7E = glyphid(1480) {H = point(705m, 0m); O = point(727m, 0m); L = point(705m, -500m); U = point(705m, 1500m)}; g2123 = glyphid(1481); g2165 = glyphid(1482) {U = point(1011m, 1500m)}; g2166 = glyphid(1483) {U = point(1349m, 1500m)}; g2167 = glyphid(1484) {U = point(1678m, 1500m)}; g0245 = glyphid(1485) {L = point(681m, -100m); U = point(681m, 1500m)}; g1D27 = glyphid(1486) {L = point(595m, -100m); U = point(595m, 1100m)}; g0194 = glyphid(1487) {L = point(730m, -100m); U = point(730m, 1500m)}; g02B7 = glyphid(1488) {L = point(526m, 725m); U = point(526m, 1450m)}; g_wacute = glyphid(1489) {L = point(801m, -100m); U = point(830m, 1500m)}; g_wgrave = glyphid(1490) {L = point(801m, -100m); U = point(830m, 1500m)}; g_wcircumflex = glyphid(1491) {L = point(801m, -100m); U = point(830m, 1500m)}; g_wdieresis = glyphid(1492) {L = point(801m, -100m); U = point(830m, 1500m)}; g1E87 = glyphid(1493) {L = point(801m, -100m); U = point(830m, 1500m)}; g1E98 = glyphid(1494) {L = point(801m, -100m); U = point(830m, 1660m)}; g1E89 = glyphid(1495) {L = point(801m, -500m); U = point(830m, 1100m)}; gF21A = glyphid(1496) {L = point(801m, -100m); U = point(801m, 1100m)}; g02AC = glyphid(1497) {L = point(525m, -100m); U = point(525m, 1540m)}; g028D = glyphid(1498) {L = point(801m, -100m); U = point(801m, 1100m)}; g0277 = glyphid(1499) {R = point(1366m, 1000m); L = point(682m, -100m); U = point(682m, 1100m)}; g1D42 = glyphid(1500) {L = point(624m, 725m); U = point(624m, 1650m)}; g1D21 = glyphid(1501) {L = point(776m, -100m); U = point(776m, 1100m)}; g__wacute = glyphid(1502) {L = point(973m, -100m); U = point(983m, 1900m)}; g__wgrave = glyphid(1503) {L = point(973m, -100m); U = point(983m, 1900m)}; g__wcircumflex = glyphid(1504) {L = point(973m, -100m); U = point(983m, 1900m)}; g__wdieresis = glyphid(1505) {L = point(973m, -100m); U = point(983m, 1900m)}; g1E86 = glyphid(1506) {L = point(973m, -100m); U = point(983m, 1900m)}; g1E88 = glyphid(1507) {L = point(973m, -500m); U = point(983m, 1500m)}; gF21B = glyphid(1508) {L = point(953m, -100m); U = point(953m, 1500m)}; g20A9 = glyphid(1509); g0445 = glyphid(1510) {L = point(522m, -100m); U = point(522m, 1100m)}; g2179 = glyphid(1511) {U = point(522m, 1500m)}; g2093 = glyphid(1512) {L = point(344m, -525m); U = point(344m, 200m)}; g02E3 = glyphid(1513) {L = point(339m, 725m); U = point(339m, 1450m)}; g036F = glyphid(1514) {U = point(-557m, 1850m); UM = point(-557m, 1100m)}; g1E8D = glyphid(1515) {H = point(785m, 0m); L = point(522m, -100m); U = point(522m, 1500m)}; g1E8B = glyphid(1516) {H = point(785m, 0m); L = point(522m, -100m); U = point(522m, 1500m)}; g1D8D = glyphid(1517) {L = point(522m, -500m); U = point(522m, 1100m)}; g04FF = glyphid(1518) {L = point(522m, -100m); U = point(522m, 1100m)}; g04FD = glyphid(1519) {L = point(517m, -500m); U = point(517m, 1100m)}; g04B3 = glyphid(1520) {L = point(522m, -100m); U = point(522m, 1100m)}; g217A = glyphid(1521) {U = point(818m, 1500m)}; g217B = glyphid(1522) {U = point(1125m, 1500m)}; g_chi = glyphid(1523) {L = point(660m, -500m); U = point(660m, 1100m)}; g1D6A = glyphid(1524) {L = point(434m, -525m); U = point(434m, 450m)}; g1D61 = glyphid(1525) {L = point(434m, 485m); U = point(434m, 1450m)}; g0425 = glyphid(1526) {L = point(649m, -100m); U = point(649m, 1500m)}; g2169 = glyphid(1527) {U = point(649m, 1500m)}; g1E8C = glyphid(1528) {L = point(649m, -100m); U = point(649m, 1900m)}; g1E8A = glyphid(1529) {L = point(649m, -100m); U = point(649m, 1900m)}; g04FE = glyphid(1530) {L = point(649m, -100m); U = point(649m, 1500m)}; g04FC = glyphid(1531) {L = point(640m, -500m); U = point(640m, 1500m)}; g04B2 = glyphid(1532) {L = point(649m, -100m); U = point(649m, 1500m)}; g216A = glyphid(1533) {U = point(979m, 1500m)}; g216B = glyphid(1534) {U = point(1318m, 1500m)}; g0443 = glyphid(1535) {L = point(542m, -500m); U = point(561m, 1100m)}; g02B8 = glyphid(1536) {R = point(705m, 1000m); L = point(357m, 725m); U = point(357m, 1450m)}; g_yacute = glyphid(1537) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g04F3 = glyphid(1538) {L = point(542m, -500m); U = point(561m, 1500m)}; g_ygrave = glyphid(1539) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g_ycircumflex = glyphid(1540) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g045E = glyphid(1541) {L = point(542m, -500m); U = point(561m, 1500m)}; g1EF9 = glyphid(1542) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g0233 = glyphid(1543) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1470m)}; g04EF = glyphid(1544) {L = point(542m, -500m); U = point(561m, 1470m)}; g04F1 = glyphid(1545) {L = point(542m, -500m); U = point(561m, 1500m)}; g1E8F = glyphid(1546) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g1E99 = glyphid(1547) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1660m)}; g1EF7 = glyphid(1548) {R = point(1085m, 1000m); L = point(542m, -500m); U = point(561m, 1500m)}; g1EF5 = glyphid(1549) {R = point(1085m, 1000m); L = point(542m, -900m); U = point(561m, 1100m)}; g024F = glyphid(1550) {L = point(542m, -500m); U = point(581m, 1100m)}; g01B4 = glyphid(1551) {L = point(542m, -500m); U = point(581m, 1100m)}; g04AF = glyphid(1552) {L = point(579m, -500m); U = point(579m, 1100m)}; g04B1 = glyphid(1553) {L = point(579m, -500m); U = point(579m, 1100m)}; g028E = glyphid(1554) {L = point(542m, -100m); U = point(542m, 1540m)}; gF1CE = glyphid(1555) {L = point(357m, 725m); U = point(357m, 1700m)}; gF267 = glyphid(1556) {L = point(542m, -100m); U = point(542m, 1540m)}; g_lambda = glyphid(1557) {L = point(661m, -100m); U = point(661m, 1540m)}; g019B = glyphid(1558) {L = point(661m, -100m); U = point(661m, 1540m)}; g0447 = glyphid(1559) {L = point(540m, -100m); U = point(540m, 1100m)}; g04F5 = glyphid(1560) {L = point(540m, -100m); U = point(540m, 1500m)}; g04B9 = glyphid(1561) {L = point(570m, -100m); U = point(570m, 1100m)}; g04B7 = glyphid(1562) {L = point(540m, -100m); U = point(540m, 1100m)}; g04CC = glyphid(1563) {L = point(540m, -500m); U = point(540m, 1100m)}; g04AE = glyphid(1564) {L = point(641m, -100m); U = point(641m, 1500m)}; g028F = glyphid(1565) {R = point(1053m, 1000m); L = point(526m, -100m); U = point(526m, 1100m)}; gF1B4 = glyphid(1566) {L = point(336m, 725m); U = point(336m, 1450m)}; g__yacute = glyphid(1567) {L = point(641m, -100m); U = point(641m, 1900m)}; g__ygrave = glyphid(1568) {L = point(641m, -100m); U = point(641m, 1900m)}; g__ycircumflex = glyphid(1569) {L = point(641m, -100m); U = point(641m, 1900m)}; g1EF8 = glyphid(1570) {L = point(641m, -100m); U = point(641m, 1900m)}; g0232 = glyphid(1571) {L = point(641m, -100m); U = point(641m, 1870m)}; g1E8E = glyphid(1572) {L = point(641m, -100m); U = point(641m, 1900m)}; g1EF6 = glyphid(1573) {L = point(641m, -100m); U = point(641m, 1900m)}; g1EF4 = glyphid(1574) {L = point(641m, -500m); U = point(641m, 1500m)}; g024E = glyphid(1575) {L = point(641m, -100m); U = point(641m, 1500m)}; g04B0 = glyphid(1576) {L = point(641m, -100m); U = point(641m, 1500m)}; g01B3 = glyphid(1577) {L = point(680m, -100m); U = point(680m, 1500m)}; g01B3_rtHook = glyphid(1578) {L = point(641m, -100m); U = point(641m, 1500m)}; g0423 = glyphid(1579) {L = point(712m, -100m); U = point(760m, 1500m)}; g04F2 = glyphid(1580) {L = point(712m, -100m); U = point(760m, 1900m)}; g040E = glyphid(1581) {L = point(712m, -100m); U = point(760m, 1935m)}; g04EE = glyphid(1582) {L = point(712m, -100m); U = point(760m, 1870m)}; g04F0 = glyphid(1583) {L = point(712m, -100m); U = point(760m, 1900m)}; g0427 = glyphid(1584) {L = point(673m, -100m); U = point(673m, 1500m)}; g04F4 = glyphid(1585) {L = point(673m, -100m); U = point(673m, 1900m)}; g04B8 = glyphid(1586) {L = point(674m, -100m); U = point(674m, 1500m)}; g04B6 = glyphid(1587) {L = point(673m, -100m); U = point(673m, 1500m)}; g04CB = glyphid(1588) {L = point(673m, -500m); U = point(673m, 1500m)}; g_z_slant_italic = glyphid(1589) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1100m)}; g1DBB = glyphid(1590) {L = point(297m, 725m); U = point(297m, 1450m)}; g_zacute = glyphid(1591) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g1E91 = glyphid(1592) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g_zcaron = glyphid(1593) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g_zdotaccent = glyphid(1594) {H = point(483m, 0m); L = point(483m, -100m); U = point(483m, 1500m)}; g1E95 = glyphid(1595) {H = point(483m, 0m); L = point(483m, -500m); U = point(483m, 1100m)}; g1E93 = glyphid(1596) {H = point(483m, 0m); L = point(483m, -500m); U = point(483m, 1100m)}; g0290 = glyphid(1597) {L = point(483m, -500m); U = point(483m, 1100m)}; g1DBC = glyphid(1598) {L = point(315m, 485m); U = point(315m, 1450m)}; g1D8E = glyphid(1599) {L = point(483m, -500m); U = point(483m, 1100m)}; g01B6 = glyphid(1600) {L = point(483m, -100m); U = point(483m, 1100m)}; g1D76 = glyphid(1601) {L = point(483m, -100m); U = point(483m, 1100m)}; g0291 = glyphid(1602) {L = point(483m, -500m); U = point(483m, 1100m)}; g1DBD = glyphid(1603) {L = point(326m, 485m); U = point(326m, 1457m)}; g0225 = glyphid(1604) {L = point(485m, -100m); U = point(485m, 1100m)}; g2C6C = glyphid(1605) {L = point(483m, -100m); U = point(483m, 1100m)}; g0240 = glyphid(1606) {L = point(502m, -500m); U = point(502m, 1100m)}; g1D22 = glyphid(1607) {L = point(486m, -100m); U = point(486m, 1100m)}; g__zacute = glyphid(1608) {L = point(610m, -100m); U = point(610m, 1900m)}; g1E90 = glyphid(1609) {L = point(610m, -100m); U = point(610m, 1900m)}; g__zcaron = glyphid(1610) {L = point(610m, -100m); U = point(610m, 1900m)}; g__zdotaccent = glyphid(1611) {L = point(610m, -100m); U = point(610m, 1900m)}; g1E94 = glyphid(1612) {L = point(610m, -500m); U = point(610m, 1500m)}; g1E92 = glyphid(1613) {L = point(610m, -500m); U = point(610m, 1500m)}; gF234 = glyphid(1614) {L = point(610m, -500m); U = point(610m, 1500m)}; g01B5 = glyphid(1615) {L = point(610m, -100m); U = point(610m, 1500m)}; g0224 = glyphid(1616) {L = point(610m, -100m); U = point(610m, 1500m)}; g2C6B = glyphid(1617) {L = point(610m, -100m); U = point(610m, 1500m)}; g01A9 = glyphid(1618) {L = point(607m, -100m); U = point(607m, 1500m)}; g01B7_revSigmaStyle = glyphid(1619) {L = point(599m, -100m); U = point(599m, 1500m)}; g04E0_revSigmaStyle = glyphid(1620) {L = point(599m, -100m); U = point(599m, 1500m)}; g0292 = glyphid(1621) {L = point(521m, -500m); U = point(521m, 1100m)}; g04E1 = glyphid(1622) {L = point(521m, -500m); U = point(521m, 1100m)}; g1DBE = glyphid(1623) {L = point(343m, 485m); U = point(343m, 1457m)}; g01EF = glyphid(1624) {L = point(521m, -500m); U = point(521m, 1500m)}; g1D9A = glyphid(1625) {L = point(577m, -845m); U = point(521m, 1100m)}; gF235 = glyphid(1626) {L = point(533m, -500m); U = point(533m, 1100m)}; g0293 = glyphid(1627) {L = point(521m, -500m); U = point(521m, 1100m)}; g0293_lrgBowl = glyphid(1628) {L = point(571m, -500m); U = point(571m, 1100m)}; g01BA = glyphid(1629) {L = point(497m, -500m); U = point(497m, 1100m)}; g01B9 = glyphid(1630) {L = point(544m, -500m); U = point(544m, 1100m)}; gF245 = glyphid(1631); g021D = glyphid(1632) {L = point(434m, -500m); U = point(434m, 1100m)}; g01B7 = glyphid(1633) {L = point(607m, -500m); U = point(607m, 1500m)}; g04E0 = glyphid(1634) {L = point(607m, -500m); U = point(607m, 1500m)}; g1D23 = glyphid(1635) {L = point(494m, -350m); U = point(494m, 1100m)}; g01EE = glyphid(1636) {L = point(607m, -500m); U = point(607m, 1900m)}; g01B8 = glyphid(1637) {L = point(630m, -500m); U = point(630m, 1500m)}; g021C = glyphid(1638) {L = point(540m, -220m); U = point(540m, 1500m)}; g0294 = glyphid(1639) {R = point(954m, 1000m); L = point(477m, -100m); U = point(477m, 1540m)}; g02C0 = glyphid(1640) {L = point(310m, 725m); U = point(310m, 1700m)}; g0242 = glyphid(1641) {L = point(396m, -100m); U = point(396m, 1100m)}; g0241 = glyphid(1642) {L = point(493m, -35m); U = point(493m, 1435m)}; g02A1 = glyphid(1643) {L = point(477m, -100m); U = point(477m, 1540m)}; g0295 = glyphid(1644) {L = point(477m, -100m); U = point(477m, 1540m)}; g02C1 = glyphid(1645) {L = point(311m, 725m); U = point(311m, 1700m)}; g02E4 = glyphid(1646) {L = point(310m, 725m); U = point(310m, 1700m)}; g02A2 = glyphid(1647) {L = point(477m, -100m); U = point(477m, 1540m)}; g0296 = glyphid(1648) {L = point(477m, -100m); U = point(477m, 1540m)}; g01BE = glyphid(1649) {L = point(477m, -100m); U = point(477m, 1540m)}; g1D24 = glyphid(1650) {L = point(467m, -100m); U = point(467m, 1540m)}; g1D25 = glyphid(1651) {L = point(655m, -100m); U = point(655m, 1100m)}; g1D5C = glyphid(1652) {L = point(449m, 725m); U = point(449m, 1450m)}; g20AA = glyphid(1653); g2080 = glyphid(1654); g2070 = glyphid(1655) {L = point(374m, 725m); U = point(374m, 1650m)}; g2081 = glyphid(1656); g_onesuperior = glyphid(1657) {L = point(347m, 725m); U = point(347m, 1650m)}; g2082 = glyphid(1658); g_twosuperior = glyphid(1659) {L = point(374m, 725m); U = point(374m, 1650m)}; g01BB = glyphid(1660) {L = point(602m, -100m); U = point(602m, 1500m)}; g2083 = glyphid(1661); g_threesuperior = glyphid(1662) {L = point(374m, 725m); U = point(374m, 1650m)}; g2084 = glyphid(1663); g2074 = glyphid(1664) {L = point(374m, 725m); U = point(374m, 1650m)}; gF246 = glyphid(1665); g2085 = glyphid(1666); g2075 = glyphid(1667) {L = point(373m, 725m); U = point(373m, 1650m)}; g01BC = glyphid(1668) {L = point(551m, -100m); U = point(551m, 1500m)}; g01BD = glyphid(1669) {L = point(435m, -100m); U = point(435m, 1100m)}; g2086 = glyphid(1670); g2076 = glyphid(1671) {L = point(374m, 725m); U = point(374m, 1650m)}; g2087 = glyphid(1672); g2077 = glyphid(1673) {L = point(374m, 725m); U = point(374m, 1650m)}; g2088 = glyphid(1674); g2078 = glyphid(1675) {L = point(373m, 725m); U = point(373m, 1650m)}; g2089 = glyphid(1676); g2079 = glyphid(1677) {L = point(374m, 725m); U = point(374m, 1650m)}; g215F = glyphid(1678); g_onehalf = glyphid(1679); g_onethird = glyphid(1680); g_onequarter = glyphid(1681); g2155 = glyphid(1682); g2159 = glyphid(1683); g_oneeighth = glyphid(1684); g_twothirds = glyphid(1685); g2156 = glyphid(1686); g_threequarters = glyphid(1687); g2157 = glyphid(1688); g_threeeighths = glyphid(1689); g2158 = glyphid(1690); g215A = glyphid(1691); g_fiveeighths = glyphid(1692); g_seveneighths = glyphid(1693); g01C3 = glyphid(1694) {L = point(236m, -100m); U = point(236m, 1540m)}; gF19E = glyphid(1695); gF19F = glyphid(1696); g_exclamdbl = glyphid(1697); gF26A = glyphid(1698); gF26A_lrg = glyphid(1699); gF21D = glyphid(1700); gF21D_lrg = glyphid(1701); g_onedotenleader = glyphid(1702); g_twodotenleader = glyphid(1703); g02F8 = glyphid(1704); gF1E9 = glyphid(1705); gF1E9_wide = glyphid(1706); g02BB = glyphid(1707); g0312 = glyphid(1708) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g_quotereversed = glyphid(1709); g02BD = glyphid(1710); g0314 = glyphid(1711) {U = point(-557m, 1780m); UM = point(-557m, 1100m)}; g02BC = glyphid(1712); g02BC_lrg = glyphid(1713); g201F = glyphid(1714); g02EE = glyphid(1715); g02D0 = glyphid(1716); g02D1 = glyphid(1717); g_anoteleia = glyphid(1718); g2027 = glyphid(1719); g2219 = glyphid(1720); g208D = glyphid(1721); g207D = glyphid(1722); g208E = glyphid(1723); g207E = glyphid(1724); g27E6 = glyphid(1725); g27E7 = glyphid(1726); g2308 = glyphid(1727); g2309 = glyphid(1728); g230A = glyphid(1729); g230B = glyphid(1730); g01C0 = glyphid(1731) {L = point(226m, -500m); U = point(226m, 1540m)}; g01C1 = glyphid(1732) {L = point(356m, -500m); U = point(356m, 1540m)}; g01C2 = glyphid(1733) {L = point(426m, -500m); U = point(426m, 1540m)}; g2016 = glyphid(1734); g_brokenbar = glyphid(1735); g02CC = glyphid(1736); g02C8 = glyphid(1737); g0337 = glyphid(1738); g0338 = glyphid(1739); g2010 = glyphid(1740) {U = point(327m, 1100m)}; g2011 = glyphid(1741) {U = point(327m, 1100m)}; g00AD = glyphid(1742) {U = point(327m, 1100m)}; g_figuredash = glyphid(1743); g2015 = glyphid(1744); g_minus = glyphid(1745); g02D7 = glyphid(1746) {U = point(327m, 1100m)}; g208B = glyphid(1747); g207B = glyphid(1748); g0320 = glyphid(1749) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0335 = glyphid(1750); g0336 = glyphid(1751); g02CF = glyphid(1752); g0317 = glyphid(1753) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02CA = glyphid(1754) {U = point(179m, 1500m)}; g_acutecomb = glyphid(1755) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g_minute = glyphid(1756); g02B9 = glyphid(1757); g_second = glyphid(1758); g02BA = glyphid(1759); g02F6 = glyphid(1760); g030B = glyphid(1761) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g2034 = glyphid(1762); g2057 = glyphid(1763); g02CE = glyphid(1764) {L = point(237m, -500m)}; g0316 = glyphid(1765) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02F4 = glyphid(1766) {U = point(237m, 1100m)}; g02CB = glyphid(1767) {U = point(294m, 1500m)}; g_gravecomb = glyphid(1768) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g2035 = glyphid(1769); g2036 = glyphid(1770); g02F5 = glyphid(1771) {U = point(437m, 1100m)}; g030F = glyphid(1772) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g2037 = glyphid(1773); g2038 = glyphid(1774); g032D = glyphid(1775) {LM = point(-557m, -100m); L = point(-557m, -500m)}; gF1E7 = glyphid(1776); g0302 = glyphid(1777) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0302_acutecomb_vN = glyphid(1778) {UM = point(480m, 1100m)}; g0302_gravecomb_vN = glyphid(1779) {UM = point(480m, 1100m)}; g0302_tildecomb_vN = glyphid(1780) {UM = point(355m, 1100m); U = point(355m, 1825m)}; g0302_hookabovecomb_vN = glyphid(1781) {UM = point(438m, 1100m)}; g032F = glyphid(1782) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0311 = glyphid(1783) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0311_uU = glyphid(1784) {UM = point(-425m, 1100m); U = point(305m, 1500m)}; g0311_uL = glyphid(1785) {UM = point(-352m, 1100m); U = point(305m, 1500m)}; g0311_lL = glyphid(1786) {UM = point(-140m, 1100m); U = point(305m, 1500m)}; g0352 = glyphid(1787) {U = point(-557m, 1616m); UM = point(-557m, 1100m)}; g2040 = glyphid(1788); g0361 = glyphid(1789) {U = point(0m, 1905m)}; gFE20 = glyphid(1790); gFE21 = glyphid(1791); g032E = glyphid(1792) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0306 = glyphid(1793) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0306_acutecomb_vN = glyphid(1794) {UM = point(305m, 1100m); U = point(424m, 1790m)}; g0306_gravecomb_vN = glyphid(1795) {UM = point(305m, 1100m); U = point(189m, 1790m)}; g0306_tildecomb_vN = glyphid(1796) {UM = point(355m, 1100m); U = point(355m, 1825m)}; g0306_hookabovecomb_vN = glyphid(1797) {UM = point(305m, 1100m); U = point(305m, 1717m)}; g0310 = glyphid(1798) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0306_cyShortMrkAlt = glyphid(1799) {UM = point(289m, 1100m); U = point(289m, 1500m)}; g203F = glyphid(1800); g035C = glyphid(1801) {L = point(0m, -700m)}; g035D = glyphid(1802) {U = point(0m, 1905m)}; g02EC = glyphid(1803) {L = point(335m, -100m)}; g032C = glyphid(1804) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g030C = glyphid(1805) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g1DC7 = glyphid(1806) {UM = point(-557m, 1100m)}; g1DC4 = glyphid(1807) {UM = point(-557m, 1100m)}; g1DC5 = glyphid(1808) {UM = point(-557m, 1100m)}; g1DC6 = glyphid(1809) {UM = point(-557m, 1100m)}; g1DC9 = glyphid(1810) {UM = point(-557m, 1100m)}; g1DC8 = glyphid(1811) {UM = point(-557m, 1100m)}; g02F7 = glyphid(1812); g0330 = glyphid(1813) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0334 = glyphid(1814); g_tildecomb = glyphid(1815) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g034A = glyphid(1816) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g_similar = glyphid(1817); g2053 = glyphid(1818); g034C = glyphid(1819) {U = point(-557m, 1680m); UM = point(-557m, 1100m)}; gF17B = glyphid(1820) {LM = point(-557m, -100m); L = point(-557m, -650m)}; g034B = glyphid(1821) {U = point(-557m, 1980m); UM = point(-557m, 1100m)}; g0360 = glyphid(1822) {U = point(0m, 1905m)}; gFE22 = glyphid(1823); gFE23 = glyphid(1824); g033E = glyphid(1825) {U = point(-557m, 1980m); UM = point(-557m, 1100m)}; g035B = glyphid(1826) {U = point(-557m, 1540m); UM = point(-557m, 1100m)}; g0359 = glyphid(1827) {LM = point(-557m, -100m); L = point(-557m, -600m)}; g0353 = glyphid(1828) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02DF = glyphid(1829); g033D = glyphid(1830) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g_multiply = glyphid(1831); g032B = glyphid(1832) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g033C = glyphid(1833) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02CD = glyphid(1834); g0331 = glyphid(1835) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0331_short = glyphid(1836) {LM = point(243m, -100m); L = point(243m, -500m)}; g02C9 = glyphid(1837) {U = point(343m, 1470m)}; g0304 = glyphid(1838) {U = point(-557m, 1470m); UM = point(-557m, 1100m)}; g0304_short = glyphid(1839) {UM = point(243m, 1100m); U = point(243m, 1470m)}; g035F = glyphid(1840) {L = point(0m, -700m)}; g035E = glyphid(1841) {U = point(0m, 1905m)}; g0332 = glyphid(1842) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0305 = glyphid(1843) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g_underscoredbl = glyphid(1844); g0333 = glyphid(1845) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0347 = glyphid(1846) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g033F = glyphid(1847) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g02ED = glyphid(1848); gF1EA = glyphid(1849); g208C = glyphid(1850); g207C = glyphid(1851); g225F = glyphid(1852); g_equivalence = glyphid(1853); g0324 = glyphid(1854) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0308 = glyphid(1855) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0308_uU = glyphid(1856) {UM = point(-337m, 1100m); U = point(323m, 1500m)}; g0308_lL = glyphid(1857) {UM = point(18m, 1100m); U = point(323m, 1500m)}; g0308_uL = glyphid(1858) {UM = point(21m, 1100m); U = point(323m, 1500m)}; g0308_sup = glyphid(1859) {UM = point(210m, 1450m); U = point(210m, 1650m)}; gF17A = glyphid(1860) {U = point(0m, 1500m)}; g_dotbelowcomb = glyphid(1861) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0307 = glyphid(1862) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0358 = glyphid(1863) {RM = point(0m, 1200m); U = point(114m, 1700m)}; g0326 = glyphid(1864) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0313 = glyphid(1865) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0315 = glyphid(1866) {RM = point(0m, 1200m)}; g031B = glyphid(1867) {RM = point(0m, 1200m)}; g02F3 = glyphid(1868); g0325 = glyphid(1869) {LM = point(-557m, -100m); L = point(-557m, -657m)}; g030A = glyphid(1870) {U = point(-557m, 1660m); UM = point(-557m, 1100m)}; g035A = glyphid(1871) {LM = point(-557m, -100m); L = point(-557m, -642m)}; g031C = glyphid(1872) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D3 = glyphid(1873); g02BF = glyphid(1874) {L = point(310m, -100m); U = point(310m, 1540m)}; g0351 = glyphid(1875) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g0339 = glyphid(1876) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D2 = glyphid(1877); g02BE = glyphid(1878) {L = point(270m, -100m); U = point(270m, 1540m)}; g0357 = glyphid(1879) {U = point(-557m, 1580m); UM = point(-557m, 1100m)}; g_hookabovecomb = glyphid(1880) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0329 = glyphid(1881) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g030D = glyphid(1882) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g0348 = glyphid(1883) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g030E = glyphid(1884) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g208A = glyphid(1885); g031F = glyphid(1886) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D6 = glyphid(1887); g207A = glyphid(1888); g031E = glyphid(1889) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D5 = glyphid(1890); g031D = glyphid(1891) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02D4 = glyphid(1892); g0318 = glyphid(1893) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0319 = glyphid(1894) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02EB = glyphid(1895); g02EA = glyphid(1896); g0349 = glyphid(1897) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g031A = glyphid(1898); g02CB_chinantecTn = glyphid(1899); g02C8_chinantecTn = glyphid(1900); g02CA_chinantecTn = glyphid(1901); gA717 = glyphid(1902); gA718 = glyphid(1903); gA719 = glyphid(1904); gA71A = glyphid(1905); g02C9_chinantecTn = glyphid(1906); gA720 = glyphid(1907); gA721 = glyphid(1908); g02FE = glyphid(1909); g02FD = glyphid(1910); g02AD = glyphid(1911) {L = point(507m, -100m); U = point(507m, 1540m)}; g0327 = glyphid(1912) {HM = point(-557m, -100m); L = point(-557m, -600m)}; g0328 = glyphid(1913) {OM = point(-557m, -100m); L = point(-615m, -500m)}; g0328_retroHookStyle = glyphid(1914) {LM = point(190m, -100m); L = point(190m, -500m)}; g_ogonek_retro_hook_style = glyphid(1915); g1DC2 = glyphid(1916) {LM = point(-557m, -100m); L = point(-557m, -815m)}; g032A = glyphid(1917) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0346 = glyphid(1918) {U = point(-557m, 1500m); UM = point(-557m, 1100m)}; g033A = glyphid(1919) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g2423 = glyphid(1920); g033B = glyphid(1921) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02DE = glyphid(1922) {RM = point(0m, 1000m)}; g02DE02DE = glyphid(1923) {RM = point(535m, 1000m)}; g02E9_rstaff = glyphid(1924) {TML = point(-20m, 57m)}; g02E8_rstaff = glyphid(1925) {TML = point(-20m, 399m)}; g02E7_rstaff = glyphid(1926) {TML = point(-20m, 741m)}; g02E6_rstaff = glyphid(1927) {TML = point(-20m, 1081m)}; g02E5_rstaff = glyphid(1928) {TML = point(-20m, 1423m)}; gA716_lstaff = glyphid(1929) {TL = point(192m, 57m)}; gA715_lstaff = glyphid(1930) {TL = point(192m, 399m)}; gA714_lstaff = glyphid(1931) {TL = point(192m, 741m)}; gA713_lstaff = glyphid(1932) {TL = point(192m, 1081m)}; gA712_lstaff = glyphid(1933) {TL = point(192m, 1423m)}; g02E9_1 = glyphid(1934) {TML = point(147m, 57m); TL = point(596m, 57m)}; g02E9_2 = glyphid(1935) {TML = point(147m, 57m); TL = point(596m, 399m)}; g02E9_3 = glyphid(1936) {TML = point(147m, 57m); TL = point(596m, 741m)}; g02E9_4 = glyphid(1937) {TML = point(147m, 57m); TL = point(596m, 1081m)}; g02E9_5 = glyphid(1938) {TML = point(147m, 57m); TL = point(596m, 1423m)}; g02E8_1 = glyphid(1939) {TML = point(147m, 399m); TL = point(596m, 57m)}; g02E8_2 = glyphid(1940) {TML = point(147m, 399m); TL = point(596m, 399m)}; g02E8_3 = glyphid(1941) {TML = point(147m, 399m); TL = point(596m, 741m)}; g02E8_4 = glyphid(1942) {TML = point(147m, 399m); TL = point(596m, 1081m)}; g02E8_5 = glyphid(1943) {TML = point(147m, 399m); TL = point(596m, 1423m)}; g02E7_1 = glyphid(1944) {TML = point(147m, 741m); TL = point(596m, 57m)}; g02E7_2 = glyphid(1945) {TML = point(147m, 741m); TL = point(596m, 399m)}; g02E7_3 = glyphid(1946) {TML = point(147m, 741m); TL = point(596m, 741m)}; g02E7_4 = glyphid(1947) {TML = point(147m, 741m); TL = point(596m, 1081m)}; g02E7_5 = glyphid(1948) {TML = point(147m, 741m); TL = point(596m, 1423m)}; g02E6_1 = glyphid(1949) {TML = point(147m, 1081m); TL = point(596m, 57m)}; g02E6_2 = glyphid(1950) {TML = point(147m, 1081m); TL = point(596m, 399m)}; g02E6_3 = glyphid(1951) {TML = point(147m, 1081m); TL = point(596m, 741m)}; g02E6_4 = glyphid(1952) {TML = point(147m, 1081m); TL = point(596m, 1081m)}; g02E6_5 = glyphid(1953) {TML = point(147m, 1081m); TL = point(596m, 1423m)}; g02E5_1 = glyphid(1954) {TML = point(147m, 1423m); TL = point(596m, 57m)}; g02E5_2 = glyphid(1955) {TML = point(147m, 1423m); TL = point(596m, 399m)}; g02E5_3 = glyphid(1956) {TML = point(147m, 1423m); TL = point(596m, 741m)}; g02E5_4 = glyphid(1957) {TML = point(147m, 1423m); TL = point(596m, 1081m)}; g02E5_5 = glyphid(1958) {TML = point(147m, 1423m); TL = point(596m, 1423m)}; gA716_1 = glyphid(1959) {TML = point(0m, 57m); TL = point(449m, 57m)}; gA715_1 = glyphid(1960) {TML = point(0m, 57m); TL = point(449m, 399m)}; gA714_1 = glyphid(1961) {TML = point(0m, 57m); TL = point(449m, 741m)}; gA713_1 = glyphid(1962) {TML = point(0m, 57m); TL = point(449m, 1081m)}; gA712_1 = glyphid(1963) {TML = point(0m, 57m); TL = point(449m, 1423m)}; gA716_2 = glyphid(1964) {TML = point(0m, 399m); TL = point(449m, 57m)}; gA715_2 = glyphid(1965) {TML = point(0m, 399m); TL = point(449m, 399m)}; gA714_2 = glyphid(1966) {TML = point(0m, 399m); TL = point(449m, 741m)}; gA713_2 = glyphid(1967) {TML = point(0m, 399m); TL = point(449m, 1081m)}; gA712_2 = glyphid(1968) {TML = point(0m, 399m); TL = point(449m, 1423m)}; gA716_3 = glyphid(1969) {TML = point(0m, 741m); TL = point(449m, 57m)}; gA715_3 = glyphid(1970) {TML = point(0m, 741m); TL = point(449m, 399m)}; gA714_3 = glyphid(1971) {TML = point(0m, 741m); TL = point(449m, 741m)}; gA713_3 = glyphid(1972) {TML = point(0m, 741m); TL = point(449m, 1081m)}; gA712_3 = glyphid(1973) {TML = point(0m, 741m); TL = point(449m, 1423m)}; gA716_4 = glyphid(1974) {TML = point(0m, 1081m); TL = point(449m, 57m)}; gA715_4 = glyphid(1975) {TML = point(0m, 1081m); TL = point(449m, 399m)}; gA714_4 = glyphid(1976) {TML = point(0m, 1081m); TL = point(449m, 741m)}; gA713_4 = glyphid(1977) {TML = point(0m, 1081m); TL = point(449m, 1081m)}; gA712_4 = glyphid(1978) {TML = point(0m, 1081m); TL = point(449m, 1423m)}; gA716_5 = glyphid(1979) {TML = point(0m, 1423m); TL = point(449m, 57m)}; gA715_5 = glyphid(1980) {TML = point(0m, 1423m); TL = point(449m, 399m)}; gA714_5 = glyphid(1981) {TML = point(0m, 1423m); TL = point(449m, 741m)}; gA713_5 = glyphid(1982) {TML = point(0m, 1423m); TL = point(449m, 1081m)}; gA712_5 = glyphid(1983) {TML = point(0m, 1423m); TL = point(449m, 1423m)}; g02E9_rstaffno = glyphid(1984) {TML = point(-20m, 57m)}; g02E8_rstaffno = glyphid(1985) {TML = point(-20m, 399m)}; g02E7_rstaffno = glyphid(1986) {TML = point(-20m, 741m)}; g02E6_rstaffno = glyphid(1987) {TML = point(-20m, 1081m)}; g02E5_rstaffno = glyphid(1988) {TML = point(-20m, 1423m)}; gA716_lstaffno = glyphid(1989) {TL = point(192m, 57m)}; gA715_lstaffno = glyphid(1990) {TL = point(192m, 399m)}; gA714_lstaffno = glyphid(1991) {TL = point(192m, 741m)}; gA713_lstaffno = glyphid(1992) {TL = point(192m, 1081m)}; gA712_lstaffno = glyphid(1993) {TL = point(192m, 1423m)}; g02E9_no = glyphid(1994) {TML = point(147m, 57m)}; g02E8_no = glyphid(1995) {TML = point(147m, 399m)}; g02E7_no = glyphid(1996) {TML = point(147m, 741m)}; g02E6_no = glyphid(1997) {TML = point(147m, 1081m)}; g02E5_no = glyphid(1998) {TML = point(147m, 1423m)}; gA716_no = glyphid(1999) {TL = point(621m, 57m)}; gA715_no = glyphid(2000) {TL = point(621m, 399m)}; gA714_no = glyphid(2001) {TL = point(621m, 741m)}; gA713_no = glyphid(2002) {TL = point(621m, 1081m)}; gA712_no = glyphid(2003) {TL = point(621m, 1423m)}; gA708 = glyphid(2004); gA709 = glyphid(2005); gA70A = glyphid(2006); gA70B = glyphid(2007); gA70C = glyphid(2008); g02E502E9 = glyphid(2009); g02E502E8 = glyphid(2010); g02E502E7 = glyphid(2011); g02E502E6 = glyphid(2012); g02E5 = glyphid(2013); g02E602E9 = glyphid(2014); g02E602E8 = glyphid(2015); g02E602E7 = glyphid(2016); g02E6 = glyphid(2017); g02E602E5 = glyphid(2018); g02E702E9 = glyphid(2019); g02E702E8 = glyphid(2020); g02E7 = glyphid(2021); g02E702E6 = glyphid(2022); g02E702E5 = glyphid(2023); g02E802E9 = glyphid(2024); g02E8 = glyphid(2025); g02E802E7 = glyphid(2026); g02E802E6 = glyphid(2027); g02E802E5 = glyphid(2028); g02E9 = glyphid(2029); g02E902E8 = glyphid(2030); g02E902E7 = glyphid(2031); g02E902E6 = glyphid(2032); g02E902E5 = glyphid(2033); g02E502E902E9 = glyphid(2034); g02E502E902E8 = glyphid(2035); g02E502E902E7 = glyphid(2036); g02E502E902E6 = glyphid(2037); g02E502E902E5 = glyphid(2038); g02E602E902E9 = glyphid(2039); g02E602E902E8 = glyphid(2040); g02E602E902E7 = glyphid(2041); g02E602E902E6 = glyphid(2042); g02E602E902E5 = glyphid(2043); g02E702E902E9 = glyphid(2044); g02E702E902E8 = glyphid(2045); g02E702E902E7 = glyphid(2046); g02E702E902E6 = glyphid(2047); g02E702E902E5 = glyphid(2048); g02E802E902E9 = glyphid(2049); g02E802E902E8 = glyphid(2050); g02E802E902E7 = glyphid(2051); g02E802E902E6 = glyphid(2052); g02E802E902E5 = glyphid(2053); g02E902E9 = glyphid(2054); g02E902E902E8 = glyphid(2055); g02E902E902E7 = glyphid(2056); g02E902E902E6 = glyphid(2057); g02E902E902E5 = glyphid(2058); g02E502E802E9 = glyphid(2059); g02E502E802E8 = glyphid(2060); g02E502E802E7 = glyphid(2061); g02E502E802E6 = glyphid(2062); g02E502E802E5 = glyphid(2063); g02E602E802E9 = glyphid(2064); g02E602E802E8 = glyphid(2065); g02E602E802E7 = glyphid(2066); g02E602E802E6 = glyphid(2067); g02E602E802E5 = glyphid(2068); g02E702E802E9 = glyphid(2069); g02E702E802E8 = glyphid(2070); g02E702E802E7 = glyphid(2071); g02E702E802E6 = glyphid(2072); g02E702E802E5 = glyphid(2073); g02E802E802E9 = glyphid(2074); g02E802E8 = glyphid(2075); g02E802E802E7 = glyphid(2076); g02E802E802E6 = glyphid(2077); g02E802E802E5 = glyphid(2078); g02E902E802E9 = glyphid(2079); g02E902E802E8 = glyphid(2080); g02E902E802E7 = glyphid(2081); g02E902E802E6 = glyphid(2082); g02E902E802E5 = glyphid(2083); g02E502E702E9 = glyphid(2084); g02E502E702E8 = glyphid(2085); g02E502E702E7 = glyphid(2086); g02E502E702E6 = glyphid(2087); g02E502E702E5 = glyphid(2088); g02E602E702E9 = glyphid(2089); g02E602E702E8 = glyphid(2090); g02E602E702E7 = glyphid(2091); g02E602E702E6 = glyphid(2092); g02E602E702E5 = glyphid(2093); g02E702E702E9 = glyphid(2094); g02E702E702E8 = glyphid(2095); g02E702E7 = glyphid(2096); g02E702E702E6 = glyphid(2097); g02E702E702E5 = glyphid(2098); g02E802E702E9 = glyphid(2099); g02E802E702E8 = glyphid(2100); g02E802E702E7 = glyphid(2101); g02E802E702E6 = glyphid(2102); g02E802E702E5 = glyphid(2103); g02E902E702E9 = glyphid(2104); g02E902E702E8 = glyphid(2105); g02E902E702E7 = glyphid(2106); g02E902E702E6 = glyphid(2107); g02E902E702E5 = glyphid(2108); g02E502E602E9 = glyphid(2109); g02E502E602E8 = glyphid(2110); g02E502E602E7 = glyphid(2111); g02E502E602E6 = glyphid(2112); g02E502E602E5 = glyphid(2113); g02E602E602E9 = glyphid(2114); g02E602E602E8 = glyphid(2115); g02E602E602E7 = glyphid(2116); g02E602E6 = glyphid(2117); g02E602E602E5 = glyphid(2118); g02E702E602E9 = glyphid(2119); g02E702E602E8 = glyphid(2120); g02E702E602E7 = glyphid(2121); g02E702E602E6 = glyphid(2122); g02E702E602E5 = glyphid(2123); g02E802E602E9 = glyphid(2124); g02E802E602E8 = glyphid(2125); g02E802E602E7 = glyphid(2126); g02E802E602E6 = glyphid(2127); g02E802E602E5 = glyphid(2128); g02E902E602E9 = glyphid(2129); g02E902E602E8 = glyphid(2130); g02E902E602E7 = glyphid(2131); g02E902E602E6 = glyphid(2132); g02E902E602E5 = glyphid(2133); g02E502E502E9 = glyphid(2134); g02E502E502E8 = glyphid(2135); g02E502E502E7 = glyphid(2136); g02E502E502E6 = glyphid(2137); g02E502E5 = glyphid(2138); g02E602E502E9 = glyphid(2139); g02E602E502E8 = glyphid(2140); g02E602E502E7 = glyphid(2141); g02E602E502E6 = glyphid(2142); g02E602E502E5 = glyphid(2143); g02E702E502E9 = glyphid(2144); g02E702E502E8 = glyphid(2145); g02E702E502E7 = glyphid(2146); g02E702E502E6 = glyphid(2147); g02E702E502E5 = glyphid(2148); g02E802E502E9 = glyphid(2149); g02E802E502E8 = glyphid(2150); g02E802E502E7 = glyphid(2151); g02E802E502E6 = glyphid(2152); g02E802E502E5 = glyphid(2153); g02E902E502E9 = glyphid(2154); g02E902E502E8 = glyphid(2155); g02E902E502E7 = glyphid(2156); g02E902E502E6 = glyphid(2157); g02E902E502E5 = glyphid(2158); g02E902E902E9 = glyphid(2159); g02E802E802E8 = glyphid(2160); g02E702E702E7 = glyphid(2161); g02E602E602E6 = glyphid(2162); g02E502E502E5 = glyphid(2163); gA70D = glyphid(2164); gA70E = glyphid(2165); gA70F = glyphid(2166); gA710 = glyphid(2167); gA711 = glyphid(2168); gA712A716 = glyphid(2169); gA712A715 = glyphid(2170); gA712A714 = glyphid(2171); gA712A713 = glyphid(2172); gA712 = glyphid(2173); gA713A716 = glyphid(2174); gA713A715 = glyphid(2175); gA713A714 = glyphid(2176); gA713 = glyphid(2177); gA713A712 = glyphid(2178); gA714A716 = glyphid(2179); gA714A715 = glyphid(2180); gA714 = glyphid(2181); gA714A713 = glyphid(2182); gA714A712 = glyphid(2183); gA715A716 = glyphid(2184); gA715 = glyphid(2185); gA715A714 = glyphid(2186); gA715A713 = glyphid(2187); gA715A712 = glyphid(2188); gA716 = glyphid(2189); gA716A715 = glyphid(2190); gA716A714 = glyphid(2191); gA716A713 = glyphid(2192); gA716A712 = glyphid(2193); gA712A716A716 = glyphid(2194); gA712A716A715 = glyphid(2195); gA712A716A714 = glyphid(2196); gA712A716A713 = glyphid(2197); gA712A716A712 = glyphid(2198); gA713A716A716 = glyphid(2199); gA713A716A715 = glyphid(2200); gA713A716A714 = glyphid(2201); gA713A716A713 = glyphid(2202); gA713A716A712 = glyphid(2203); gA714A716A716 = glyphid(2204); gA714A716A715 = glyphid(2205); gA714A716A714 = glyphid(2206); gA714A716A713 = glyphid(2207); gA714A716A712 = glyphid(2208); gA715A716A716 = glyphid(2209); gA715A716A715 = glyphid(2210); gA715A716A714 = glyphid(2211); gA715A716A713 = glyphid(2212); gA715A716A712 = glyphid(2213); gA716A716 = glyphid(2214); gA716A716A715 = glyphid(2215); gA716A716A714 = glyphid(2216); gA716A716A713 = glyphid(2217); gA716A716A712 = glyphid(2218); gA712A715A716 = glyphid(2219); gA712A715A715 = glyphid(2220); gA712A715A714 = glyphid(2221); gA712A715A713 = glyphid(2222); gA712A715A712 = glyphid(2223); gA713A715A716 = glyphid(2224); gA713A715A715 = glyphid(2225); gA713A715A714 = glyphid(2226); gA713A715A713 = glyphid(2227); gA713A715A712 = glyphid(2228); gA714A715A716 = glyphid(2229); gA714A715A715 = glyphid(2230); gA714A715A714 = glyphid(2231); gA714A715A713 = glyphid(2232); gA714A715A712 = glyphid(2233); gA715A715A716 = glyphid(2234); gA715A715 = glyphid(2235); gA715A715A714 = glyphid(2236); gA715A715A713 = glyphid(2237); gA715A715A712 = glyphid(2238); gA716A715A716 = glyphid(2239); gA716A715A715 = glyphid(2240); gA716A715A714 = glyphid(2241); gA716A715A713 = glyphid(2242); gA716A715A712 = glyphid(2243); gA712A714A716 = glyphid(2244); gA712A714A715 = glyphid(2245); gA712A714A714 = glyphid(2246); gA712A714A713 = glyphid(2247); gA712A714A712 = glyphid(2248); gA713A714A716 = glyphid(2249); gA713A714A715 = glyphid(2250); gA713A714A714 = glyphid(2251); gA713A714A713 = glyphid(2252); gA713A714A712 = glyphid(2253); gA714A714A716 = glyphid(2254); gA714A714A715 = glyphid(2255); gA714A714 = glyphid(2256); gA714A714A713 = glyphid(2257); gA714A714A712 = glyphid(2258); gA715A714A716 = glyphid(2259); gA715A714A715 = glyphid(2260); gA715A714A714 = glyphid(2261); gA715A714A713 = glyphid(2262); gA715A714A712 = glyphid(2263); gA716A714A716 = glyphid(2264); gA716A714A715 = glyphid(2265); gA716A714A714 = glyphid(2266); gA716A714A713 = glyphid(2267); gA716A714A712 = glyphid(2268); gA712A713A716 = glyphid(2269); gA712A713A715 = glyphid(2270); gA712A713A714 = glyphid(2271); gA712A713A713 = glyphid(2272); gA712A713A712 = glyphid(2273); gA713A713A716 = glyphid(2274); gA713A713A715 = glyphid(2275); gA713A713A714 = glyphid(2276); gA713A713 = glyphid(2277); gA713A713A712 = glyphid(2278); gA714A713A716 = glyphid(2279); gA714A713A715 = glyphid(2280); gA714A713A714 = glyphid(2281); gA714A713A713 = glyphid(2282); gA714A713A712 = glyphid(2283); gA715A713A716 = glyphid(2284); gA715A713A715 = glyphid(2285); gA715A713A714 = glyphid(2286); gA715A713A713 = glyphid(2287); gA715A713A712 = glyphid(2288); gA716A713A716 = glyphid(2289); gA716A713A715 = glyphid(2290); gA716A713A714 = glyphid(2291); gA716A713A713 = glyphid(2292); gA716A713A712 = glyphid(2293); gA712A712A716 = glyphid(2294); gA712A712A715 = glyphid(2295); gA712A712A714 = glyphid(2296); gA712A712A713 = glyphid(2297); gA712A712 = glyphid(2298); gA713A712A716 = glyphid(2299); gA713A712A715 = glyphid(2300); gA713A712A714 = glyphid(2301); gA713A712A713 = glyphid(2302); gA713A712A712 = glyphid(2303); gA714A712A716 = glyphid(2304); gA714A712A715 = glyphid(2305); gA714A712A714 = glyphid(2306); gA714A712A713 = glyphid(2307); gA714A712A712 = glyphid(2308); gA715A712A716 = glyphid(2309); gA715A712A715 = glyphid(2310); gA715A712A714 = glyphid(2311); gA715A712A713 = glyphid(2312); gA715A712A712 = glyphid(2313); gA716A712A716 = glyphid(2314); gA716A712A715 = glyphid(2315); gA716A712A714 = glyphid(2316); gA716A712A713 = glyphid(2317); gA716A712A712 = glyphid(2318); gA716A716A716 = glyphid(2319); gA715A715A715 = glyphid(2320); gA714A714A714 = glyphid(2321); gA713A713A713 = glyphid(2322); gA712A712A712 = glyphid(2323); gF1F1 = glyphid(2324); gF1F1F1F2 = glyphid(2325); gF1F1F1F3 = glyphid(2326); gF1F1F1F4 = glyphid(2327); gF1F1F1F5 = glyphid(2328); gF1F1F1F6 = glyphid(2329); gF1F1F1F7 = glyphid(2330); gF1F1F1F8 = glyphid(2331); gF1F1F1F9 = glyphid(2332); gF1F2F1F1 = glyphid(2333); gF1F2 = glyphid(2334); gF1F2F1F3 = glyphid(2335); gF1F2F1F4 = glyphid(2336); gF1F2F1F5 = glyphid(2337); gF1F2F1F6 = glyphid(2338); gF1F2F1F7 = glyphid(2339); gF1F2F1F8 = glyphid(2340); gF1F2F1F9 = glyphid(2341); gF1F3F1F1 = glyphid(2342); gF1F3F1F2 = glyphid(2343); gF1F3 = glyphid(2344); gF1F3F1F4 = glyphid(2345); gF1F3F1F5 = glyphid(2346); gF1F3F1F6 = glyphid(2347); gF1F3F1F7 = glyphid(2348); gF1F3F1F8 = glyphid(2349); gF1F3F1F9 = glyphid(2350); gF1F4F1F1 = glyphid(2351); gF1F4F1F2 = glyphid(2352); gF1F4F1F3 = glyphid(2353); gF1F4 = glyphid(2354); gF1F4F1F5 = glyphid(2355); gF1F4F1F6 = glyphid(2356); gF1F4F1F7 = glyphid(2357); gF1F4F1F8 = glyphid(2358); gF1F4F1F9 = glyphid(2359); gF1F5F1F1 = glyphid(2360); gF1F5F1F2 = glyphid(2361); gF1F5F1F3 = glyphid(2362); gF1F5F1F4 = glyphid(2363); gF1F5 = glyphid(2364); gF1F5F1F6 = glyphid(2365); gF1F5F1F7 = glyphid(2366); gF1F5F1F8 = glyphid(2367); gF1F5F1F9 = glyphid(2368); gF1F6F1F1 = glyphid(2369); gF1F6F1F2 = glyphid(2370); gF1F6F1F3 = glyphid(2371); gF1F6F1F4 = glyphid(2372); gF1F6F1F5 = glyphid(2373); gF1F6 = glyphid(2374); gF1F6F1F7 = glyphid(2375); gF1F6F1F8 = glyphid(2376); gF1F6F1F9 = glyphid(2377); gF1F7F1F1 = glyphid(2378); gF1F7F1F2 = glyphid(2379); gF1F7F1F3 = glyphid(2380); gF1F7F1F4 = glyphid(2381); gF1F7F1F5 = glyphid(2382); gF1F7F1F6 = glyphid(2383); gF1F7 = glyphid(2384); gF1F7F1F8 = glyphid(2385); gF1F7F1F9 = glyphid(2386); gF1F8F1F1 = glyphid(2387); gF1F8F1F2 = glyphid(2388); gF1F8F1F3 = glyphid(2389); gF1F8F1F4 = glyphid(2390); gF1F8F1F5 = glyphid(2391); gF1F8F1F6 = glyphid(2392); gF1F8F1F7 = glyphid(2393); gF1F8 = glyphid(2394); gF1F8F1F9 = glyphid(2395); gF1F9F1F1 = glyphid(2396); gF1F9F1F2 = glyphid(2397); gF1F9F1F3 = glyphid(2398); gF1F9F1F4 = glyphid(2399); gF1F9F1F5 = glyphid(2400); gF1F9F1F6 = glyphid(2401); gF1F9F1F7 = glyphid(2402); gF1F9F1F8 = glyphid(2403); gF1F9 = glyphid(2404); g_space_lines = glyphid(2405); gF1F1_lines = glyphid(2406); gF1F1F1F2_lines = glyphid(2407); gF1F1F1F3_lines = glyphid(2408); gF1F1F1F4_lines = glyphid(2409); gF1F1F1F5_lines = glyphid(2410); gF1F1F1F6_lines = glyphid(2411); gF1F1F1F7_lines = glyphid(2412); gF1F1F1F8_lines = glyphid(2413); gF1F1F1F9_lines = glyphid(2414); gF1F2F1F1_lines = glyphid(2415); gF1F2_lines = glyphid(2416); gF1F2F1F3_lines = glyphid(2417); gF1F2F1F4_lines = glyphid(2418); gF1F2F1F5_lines = glyphid(2419); gF1F2F1F6_lines = glyphid(2420); gF1F2F1F7_lines = glyphid(2421); gF1F2F1F8_lines = glyphid(2422); gF1F2F1F9_lines = glyphid(2423); gF1F3F1F1_lines = glyphid(2424); gF1F3F1F2_lines = glyphid(2425); gF1F3_lines = glyphid(2426); gF1F3F1F4_lines = glyphid(2427); gF1F3F1F5_lines = glyphid(2428); gF1F3F1F6_lines = glyphid(2429); gF1F3F1F7_lines = glyphid(2430); gF1F3F1F8_lines = glyphid(2431); gF1F3F1F9_lines = glyphid(2432); gF1F4F1F1_lines = glyphid(2433); gF1F4F1F2_lines = glyphid(2434); gF1F4F1F3_lines = glyphid(2435); gF1F4_lines = glyphid(2436); gF1F4F1F5_lines = glyphid(2437); gF1F4F1F6_lines = glyphid(2438); gF1F4F1F7_lines = glyphid(2439); gF1F4F1F8_lines = glyphid(2440); gF1F4F1F9_lines = glyphid(2441); gF1F5F1F1_lines = glyphid(2442); gF1F5F1F2_lines = glyphid(2443); gF1F5F1F3_lines = glyphid(2444); gF1F5F1F4_lines = glyphid(2445); gF1F5_lines = glyphid(2446); gF1F5F1F6_lines = glyphid(2447); gF1F5F1F7_lines = glyphid(2448); gF1F5F1F8_lines = glyphid(2449); gF1F5F1F9_lines = glyphid(2450); gF1F6F1F1_lines = glyphid(2451); gF1F6F1F2_lines = glyphid(2452); gF1F6F1F3_lines = glyphid(2453); gF1F6F1F4_lines = glyphid(2454); gF1F6F1F5_lines = glyphid(2455); gF1F6_lines = glyphid(2456); gF1F6F1F7_lines = glyphid(2457); gF1F6F1F8_lines = glyphid(2458); gF1F6F1F9_lines = glyphid(2459); gF1F7F1F1_lines = glyphid(2460); gF1F7F1F2_lines = glyphid(2461); gF1F7F1F3_lines = glyphid(2462); gF1F7F1F4_lines = glyphid(2463); gF1F7F1F5_lines = glyphid(2464); gF1F7F1F6_lines = glyphid(2465); gF1F7_lines = glyphid(2466); gF1F7F1F8_lines = glyphid(2467); gF1F7F1F9_lines = glyphid(2468); gF1F8F1F1_lines = glyphid(2469); gF1F8F1F2_lines = glyphid(2470); gF1F8F1F3_lines = glyphid(2471); gF1F8F1F4_lines = glyphid(2472); gF1F8F1F5_lines = glyphid(2473); gF1F8F1F6_lines = glyphid(2474); gF1F8F1F7_lines = glyphid(2475); gF1F8_lines = glyphid(2476); gF1F8F1F9_lines = glyphid(2477); gF1F9F1F1_lines = glyphid(2478); gF1F9F1F2_lines = glyphid(2479); gF1F9F1F3_lines = glyphid(2480); gF1F9F1F4_lines = glyphid(2481); gF1F9F1F5_lines = glyphid(2482); gF1F9F1F6_lines = glyphid(2483); gF1F9F1F7_lines = glyphid(2484); gF1F9F1F8_lines = glyphid(2485); gF1F9_lines = glyphid(2486); g274D = glyphid(2487); g2023 = glyphid(2488); g_arrowdown = glyphid(2489); gF19D = glyphid(2490); g_arrowup = glyphid(2491); gF19C = glyphid(2492); g034E = glyphid(2493) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g_arrowupdn = glyphid(2494); g_arrowupdnbse = glyphid(2495); g_arrowleft = glyphid(2496); g20EE = glyphid(2497) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g20ED = glyphid(2498) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g02FF = glyphid(2499); g_arrowright = glyphid(2500); g20EF = glyphid(2501) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g20EC = glyphid(2502) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g0362 = glyphid(2503) {L = point(27m, -1000m)}; g_arrowboth = glyphid(2504); g034D = glyphid(2505) {LM = point(-557m, -100m); L = point(-557m, -500m)}; g219A = glyphid(2506); g219B = glyphid(2507); g_arrowdbldown = glyphid(2508); g_arrowdblup = glyphid(2509); g21D5 = glyphid(2510); g_arrowdblleft = glyphid(2511); g_arrowdblright = glyphid(2512); g_arrowdblboth = glyphid(2513); g2196 = glyphid(2514); g2198 = glyphid(2515); g2197 = glyphid(2516); g2199 = glyphid(2517); g2713 = glyphid(2518); g2213 = glyphid(2519); g02C5 = glyphid(2520); g02EF = glyphid(2521); g02C4 = glyphid(2522); g02F0 = glyphid(2523); g02C2 = glyphid(2524); g1DFE = glyphid(2525) {U = point(-557m, 1808m); UM = point(-557m, 1100m)}; g0354 = glyphid(2526) {LM = point(-557m, -100m); L = point(-546m, -765m)}; g02F1 = glyphid(2527); g02C3 = glyphid(2528); g0350 = glyphid(2529) {U = point(-557m, 1808m); UM = point(-557m, 1100m)}; g0355 = glyphid(2530) {LM = point(-557m, -100m); L = point(-546m, -750m)}; g02F2 = glyphid(2531); g0356 = glyphid(2532) {LM = point(-557m, -100m); L = point(-557m, -850m)}; g1DFF = glyphid(2533) {LM = point(-557m, -100m); L = point(-557m, -850m)}; gA702 = glyphid(2534); gA700 = glyphid(2535); gA704 = glyphid(2536); gA706 = glyphid(2537); gA703 = glyphid(2538); gA701 = glyphid(2539); gA705 = glyphid(2540); gA707 = glyphid(2541); g00AD_showInv = glyphid(2542) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g034F_showInv = glyphid(2543) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g2061_showInv = glyphid(2544) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g2063_showInv = glyphid(2545) {L11 = point(1200m, 526m); C12 = point(826m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); L33 = point(1750m, 526m); U23 = point(1200m, 1252m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L22 = point(1552m, 526m)}; g2062_showInv = glyphid(2546) {L11 = point(1200m, 526m); C12 = point(826m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); L33 = point(1750m, 526m); U23 = point(1200m, 1252m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L22 = point(1552m, 526m)}; g202A_showInv = glyphid(2547) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g200E_showInv = glyphid(2548) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202D_showInv = glyphid(2549) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202C_showInv = glyphid(2550) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202B_showInv = glyphid(2551) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g200F_showInv = glyphid(2552) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; g202E_showInv = glyphid(2553) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE00_showInv = glyphid(2554) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE01_showInv = glyphid(2555) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE02_showInv = glyphid(2556) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE03_showInv = glyphid(2557) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE04_showInv = glyphid(2558) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE05_showInv = glyphid(2559) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE06_showInv = glyphid(2560) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE07_showInv = glyphid(2561) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE08_showInv = glyphid(2562) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFE09_showInv = glyphid(2563) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0A_showInv = glyphid(2564) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0B_showInv = glyphid(2565) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0C_showInv = glyphid(2566) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0D_showInv = glyphid(2567) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0E_showInv = glyphid(2568) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; gFE0F_showInv = glyphid(2569) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; g2060_showInv = glyphid(2570) {L11 = point(1200m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); L23 = point(1200m, 526m); U12 = point(826m, 1252m); L33 = point(1750m, 526m); U23 = point(1200m, 1252m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L22 = point(1552m, 526m)}; g200D_showInv = glyphid(2571) {U23 = point(1200m, 1252m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); C23 = point(1200m, 900m); L23 = point(1200m, 526m); C22 = point(1552m, 900m); L22 = point(1552m, 526m); L33 = point(1750m, 526m)}; gFEFF_showInv = glyphid(2572) {L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); L12 = point(826m, 526m); U22 = point(1552m, 1252m); C11 = point(1200m, 900m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); C23 = point(1200m, 900m); U12 = point(826m, 1252m); C22 = point(1552m, 900m); L22 = point(1552m, 526m)}; g200C_showInv = glyphid(2573) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; g200B_showInv = glyphid(2574) {U23 = point(1200m, 1252m); L11 = point(1200m, 526m); C12 = point(826m, 900m); C33 = point(1750m, 900m); C11 = point(1200m, 900m); U13 = point(650m, 1252m); U11 = point(1200m, 1252m); C13 = point(650m, 900m); L13 = point(650m, 526m); U33 = point(1750m, 1252m); L23 = point(1200m, 526m); C23 = point(1200m, 900m); C22 = point(1552m, 900m); L33 = point(1750m, 526m)}; g034F = glyphid(2575) {LM = point(0m, 0m); L = point(0m, 0m); UM = point(0m, 0m); U = point(0m, 0m)}; g2061 = glyphid(2576); g2063 = glyphid(2577); g2062 = glyphid(2578); g202A = glyphid(2579); g200E = glyphid(2580); g202D = glyphid(2581); g202C = glyphid(2582); g202B = glyphid(2583); g200F = glyphid(2584); g202E = glyphid(2585); gFE00 = glyphid(2586); gFE01 = glyphid(2587); gFE02 = glyphid(2588); gFE03 = glyphid(2589); gFE04 = glyphid(2590); gFE05 = glyphid(2591); gFE06 = glyphid(2592); gFE07 = glyphid(2593); gFE08 = glyphid(2594); gFE09 = glyphid(2595); gFE0A = glyphid(2596); gFE0B = glyphid(2597); gFE0C = glyphid(2598); gFE0D = glyphid(2599); gFE0E = glyphid(2600); gFE0F = glyphid(2601); g2060 = glyphid(2602); g200D = glyphid(2603); gFEFF = glyphid(2604); g200C = glyphid(2605); g200B = glyphid(2606); g206D = glyphid(2607); g206B = glyphid(2608); g206C = glyphid(2609); g206A = glyphid(2610); gFFF9 = glyphid(2611); gFFFA = glyphid(2612); gFFFB = glyphid(2613); g2028 = glyphid(2614); g206E = glyphid(2615); g206F = glyphid(2616); gFFFC = glyphid(2617); g2029 = glyphid(2618); g2001 = glyphid(2619) {H = point(985m, 0m); O = point(1036m, 0m); R = point(1971m, 1000m); L = point(985m, -100m); U = point(985m, 1500m)}; g2003 = glyphid(2620) {H = point(1024m, 0m); O = point(1074m, 0m); R = point(2048m, 1000m); L = point(1024m, -100m); U = point(1024m, 1500m)}; g202F = glyphid(2621) {H = point(246m, 0m); O = point(297m, 0m); R = point(493m, 1000m); L = point(246m, -100m); U = point(246m, 1500m)}; g2008 = glyphid(2622) {H = point(286m, 0m); O = point(336m, 0m); R = point(573m, 1000m); L = point(286m, -100m); U = point(286m, 1500m)}; g2006 = glyphid(2623) {H = point(164m, 0m); O = point(214m, 0m); R = point(328m, 1000m); L = point(164m, -100m); U = point(164m, 1500m)}; g2004 = glyphid(2624) {H = point(328m, 0m); O = point(379m, 0m); R = point(657m, 1000m); L = point(328m, -100m); U = point(328m, 1500m)}; g2000 = glyphid(2625) {H = point(492m, 0m); O = point(543m, 0m); R = point(985m, 1000m); L = point(492m, -100m); U = point(492m, 1500m)}; g2002 = glyphid(2626) {H = point(512m, 0m); O = point(562m, 0m); R = point(1024m, 1000m); L = point(512m, -100m); U = point(512m, 1500m)}; g2005 = glyphid(2627) {H = point(246m, 0m); O = point(297m, 0m); R = point(493m, 1000m); L = point(246m, -100m); U = point(246m, 1500m)}; g2007 = glyphid(2628) {H = point(563m, 0m); O = point(613m, 0m); R = point(1126m, 1000m); L = point(563m, -100m); U = point(563m, 1500m)}; g2009 = glyphid(2629) {H = point(256m, 0m); O = point(306m, 0m); R = point(512m, 1000m); L = point(256m, -100m); U = point(256m, 1500m)}; g200A = glyphid(2630) {H = point(20m, 0m); O = point(71m, 0m); R = point(41m, 1000m); L = point(20m, -100m); U = point(20m, 1500m)}; gFFFD = glyphid(2631); gF130 = glyphid(2632); gF131 = glyphid(2633); gF132 = glyphid(2634); gF133 = glyphid(2635); g02F9 = glyphid(2636); g02FB = glyphid(2637); g02FA = glyphid(2638); g02FC = glyphid(2639); g__comb_inv_breve_u_c_ht = glyphid(2640); g__comb_breve_cy_short_mrk_alt_u_c_ht = glyphid(2641); g__lft_paren_sophia = glyphid(2642); g__rt_paren_sophia = glyphid(2643); g__comma_sophia = glyphid(2644); g__digit_zero_sophia = glyphid(2645); g__digit_one_sophia = glyphid(2646); g__digit_two_sophia = glyphid(2647); g__digit_three_sophia = glyphid(2648); g__digit_four_sophia = glyphid(2649); g__digit_five_sophia = glyphid(2650); g__digit_six_sophia = glyphid(2651); g__digit_seven_sophia = glyphid(2652); g__digit_eight_sophia = glyphid(2653); g__digit_nine_sophia = glyphid(2654); g__ltn_cap_c_sophia = glyphid(2655); g__ltn_cap_d_sophia = glyphid(2656); g__ltn_cap_e_sophia = glyphid(2657); g__ltn_cap_f_sophia = glyphid(2658); g__ltn_cap_g_sophia = glyphid(2659); g__ltn_cap_h_sophia = glyphid(2660); g__ltn_cap_j_sophia = glyphid(2661); g__ltn_cap_l_sophia = glyphid(2662); g__ltn_cap_m_sophia = glyphid(2663); g__ltn_cap_n_sophia = glyphid(2664); g__ltn_cap_o_sophia = glyphid(2665); g__ltn_cap_p_sophia = glyphid(2666); g__ltn_cap_r_sophia = glyphid(2667); g__ltn_cap_s_sophia = glyphid(2668); g__ltn_cap_v_sophia = glyphid(2669); g__ltn_cap_w_sophia = glyphid(2670); g__ltn_cap_x_sophia = glyphid(2671); g__ltn_cap_y_sophia = glyphid(2672); g__ltn_cap_z_sophia = glyphid(2673); g__box_dotted = glyphid(2674); cTakesC11Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC12Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC13Dia = (g2063_showInv, g2062_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC22Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC23Dia = (g2063_showInv, g2062_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesC33Dia = (g2063_showInv, g2062_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesHDia = (g_space, g__a, g__c, g__e, g__g, g__h, g__i, g__k, g__l, g__n, g__o, g__r, g__s, g__t, g__u, g__v, g_a, g_b, g_c, g_d, g_e, g_f, g_g, g_h, g_i, g_k, g_l, g_m, g_n, g_o, g_p, g_r, g_s, g_t, g_u, g_v, g_x, g_z, g__adieresis, g__aring, g__eacute, g__ntilde, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_ntilde, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_ae, g_oslash, g00A0, g__agrave, g__atilde, g__otilde, g_oe, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_a_2_story_slant_italic, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g01CE, g_amacron, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0251, g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g0252, g_ae_2_story_slant_italic, g04D5, g_aeacute, g01E3, g0200, g1EA4, g1EA4_vN, g1EA6, g1EA6_vN, g1EAA, g1EAA_vN, g1EA8, g1EA8_vN, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g01CD, g__amacron, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek, g__aogonek_retro_hook_style, g023A, g1E03, g1E07, g1E05, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g0254, g0254_topSerif, g2184, g__cacute, g__ccircumflex, g__ccaron, g__cdotaccent, g023B, g0501, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g_dcaron, g01F3, g01C6, g01F2, g01C5, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g_eogonek_retro_hook_style, g0259, g04D9, g04DB, g025A, g025B, g0511, g0204, g1EBE, g1EBE_vN, g1EC0, g1EC0_vN, g1EC4, g1EC4_vN, g1EC2, g1EC2_vN, g1EC6, g0206, g__ebreve, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g__eogonek, g__eogonek_retro_hook_style, g_f_slant_italic, g1E1F, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01F4, g__gcircumflex, g__gbreve, g__gcaron, g1E20, g__gdotaccent, g__gcommaaccent, g_hcircumflex, g021F, g1E27, g1E23, g1E2B, g1E96, g1E25, g04BB, g__hcircumflex, g021E, g1E26, g1E22, g1E2A, g1E24, g2C75, g_i_slant_italic, g0456, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g0268, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g0268_dotless, g_ij, g0269, g1D7C, g0406, g04C0, g04CF, g026A, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek, g__iogonek_retro_hook_style, g__i_j, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g1E30, g01E8, g1E34, g1E32, g__kcommaaccent, g_l_slant_italic, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g_ldot, g_lcaron, g01C9, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g__ldot, g__lcaron, g01C8, g01C7, g1E3F, g1E41, g1E43, g_nacute, g01F9, g_ncaron, g1E45, g1E4B, g1E49, g1E47, g_ncommaaccent, g_napostrophe, g01CC, g__nacute, g01F8, g__ncaron, g1E44, g1E4A, g1E48, g1E46, g__ncommaaccent, g01CB, g01CA, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g_oslashacute, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g1E55, g1E57, g_racute, g0211, g0213, g_rcaron, g1E59, g1E5F, g1E5B, g1E5D, g_rcommaaccent, g__racute, g0210, g0212, g__rcaron, g1E58, g1E5E, g1E5A, g1E5C, g__rcommaaccent, g_sacute, g1E65, g_scircumflex, g_scaron, g1E67, g1E61, g1E63, g1E69, g_scommaaccent, g_scedilla_comma_style, g__sacute, g1E64, g__scircumflex, g__scaron, g1E66, g1E60, g1E62, g1E68, g__scommaaccent, g__scedilla_comma_style, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g_tcaron, g2C66, g__tcaron, g1E6A, g1E70, g1E6E, g1E6C, g021A, g0162_commaStyle, g023E, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek_retro_hook_style, g0289, g028B, g028A, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g_v_slant_italic, g1E7D, g1E7F, gF25F, g028B_straightLft, g2C74, g028C, g1E7C, g1E7E, g1E8D, g1E8B, g_z_slant_italic, g_zacute, g1E91, g_zcaron, g_zdotaccent, g1E95, g1E93, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesLDia = (g_space, g_zero, g_one, g_two, g_three, g_four, g_five, g_six, g_seven, g_eight, g_nine, g__a, g__b, g__c, g__d, g__e, g__f, g__g, g__h, g__i, g__j, g__k, g__l, g__m, g__n, g__o, g__p, g__q, g__r, g__s, g__t, g__u, g__v, g__w, g__x, g__y, g__z, g_a, g_b, g_c, g_d, g_e, g_f, g_g, g_h, g_i, g_j, g_k, g_l, g_m, g_n, g_o, g_p, g_q, g_r, g_s, g_t, g_u, g_v, g_w, g_x, g_y, g_z, g__adieresis, g__aring, g__ccedilla, g__eacute, g__ntilde, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_ccedilla, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_ntilde, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_germandbls, g__a_e, g__oslash, g_summation, g_pi, g_ae, g_oslash, g_florin, g00A0, g__agrave, g__atilde, g__otilde, g__o_e, g_oe, g_ydieresis, g__ydieresis, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_cedilla, g_ogonek, g_a_2_story_slant_italic, g0430, g2090, g1D43, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g04D1, g01CE, g_amacron, g04D3, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g1D8F, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250, g0250_2StorySlantItalic, g1D44, g0251, g_a_sng_story, g1D45, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g1D90, g0252, g1D9B, g_ae_2_story_slant_italic, g04D5, gF1A1, g_aeacute, g01E3, g1D02, g1D46, g_alpha, gF247, gF248, g0410, g1D2C, g1D00, g0200, g1EA4, g1EA4_vN, g1EA6, g1EA6_vN, g1EAA, g1EAA_vN, g1EA8, g1EA8_vN, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g04D0, g01CD, g__amacron, g04D2, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek, g__aogonek_retro_hook_style, g023A, gF208, gF209, g04D4, g1D2D, g1D01, g__a_eacute, g01E2, g1D47, g1E03, g1E07, g1E05, g1D80, g0180_barBowl, g0180, g1D6C, g0253, g0185, g0183, g0431, g044C, g048D, g044A, g044B, g04F9, g0432, g0412, g1D2E, g0299, g1E02, g1E06, g1E04, g0243, g1D2F, g1D03, g0181, g0184, g0182, g0411, g042C, g048C, g042A, g042B, g04F8, g_beta, g1D66, g1D5D, g0441, g1D9C, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g1E09, g04AB, gF225, g0297, g0188, g0255, g1D9D, g0254, g0254_topSerif, g1D53, g1D53_topSerif, g1D97, g1D97_topSerif, g2184, g1D12, g0454, g044D, g04ED, g044D_mongolStyle, g0421, g1D04, g__cacute, g__ccircumflex, g__ccaron, g__cdotaccent, g1E08, g04AA, g023B, g0187, g0186, g0186_topSerif, g1D10, g1D10_topSerif, g0404, g042D, g04EC, g042D_mongolStyle, g0501, g1D48, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g_dcaron, g1D81, g_dcroat_bar_bowl, g_dcroat, g1D6D, g0257, g0256, g1D91, g0221, g018C, g0238, g01F3, g01C6, g02A3, g02A5, g02A4, g0503, g_delta, g1D5F, g_eth, g1D9E, g1D30, g1D05, g__dcaron, g1E0A, g1E12, g1E0E, g1E0C, g1E10, g__eth, g__dcroat, g0189, g1D06, gF20D, g018A, g018B, g01F2, g01C5, g01F1, g01C4, g0500, g0502, g0435, g2091, g1D49, g0450, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g04D7, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g0451, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek, g_eogonek_retro_hook_style, g1D92, g0247, g04BD, g04BF, g01DD, g0259, g04D9, g2094, g1D4A, g04DB, g1D95, g025A, g0258, gF1A3, g025B, g1D4B, g1D93, g025C, g1D9F, g1D94, g025D, g1D08, g1D4C, g029A, g025E, gF1A4, g0511, g0437, g04DF, g0499, g0507, g0505, g0415, g1D31, g1D07, g0400, g0204, g1EBE, g1EBE_vN, g1EC0, g1EC0_vN, g1EC4, g1EC4_vN, g1EC2, g1EC2_vN, g1EC6, g0206, g__ebreve, g04D6, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g0401, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g0228, g1E1C, g__eogonek, g__eogonek_retro_hook_style, g0246, g04BC, g04BE, g018E, g1D32, g018F, g04D8, g04DA, g0190, g0510, g0417, g04DE, g0498, g0506, g0504, g_f_slant_italic, g1DA0, g1E1F, g1D82, g1D6E, g02A9, g_longs, g1E9B, g0433, g0453, g0491, g04F7, g0493, g0493_slantItalic, gF327, gF327_slantItalic, g04FB, g04FB_slantItalic, g1E1E, g0191, g0413, g__gamma, g1D26, g0403, g0490, g04F6, g0492, gF326, g04FA, g1D4D, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01E5_barBowl, g01E5, g_g_sng_bowl, g0261, g1DA2, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g1D83, g01E5_barBowl_sngBowl, g0260, g1D77, g1D79, g050D, g1D33, g0262, g01F4, g__gcircumflex, g__gbreve, g__gcaron, g1E20, g__gdotaccent, g__gcommaaccent, g01E4, g0193, g029B, g050C, g02B0, g_hcircumflex, g021F, g1E27, g1E23, g1E2B, g1E96, g1E25, g1E29, g_hbar, g045B, gF1BC, g0452, g0266, g02B1, gF25A, g0267, g2C68, g0195, g2C76, g0265, g1DA3, g02AE, g02AF, g04BB, g04BB_uCStyle, g0495, g043D, g04A5, g04A3, g04CA, g045A, g04C8, g050B, g043F, g04A7, g045F, g0446, g0448, g0449, g1D28, g041D, g1D34, g1D78, g029C, g__hcircumflex, g021E, g1E26, g1E22, g1E2A, g1E24, g1E28, g__hbar, g__hbar_vert_strk, g2C67, g01F6, g2C75, g04BA, g0494, g04A4, g04A2, g04C9, g040A, g04C7, g050A, g041F, g04A6, g040F, g0426, g0428, g0429, g_i_slant_italic, g0456, g1D62, g2071, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g1D96, g0268, g1DA4, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1D62_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g1D96_dotless, g0268_dotless, g1DA4_dotless, g1D09, g1D4E, g_ij, g0269, g1DA5, g1D7C, g044E, g0406, g04C0, g04CF, g1D35, g026A, g1DA6, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek, g__iogonek_retro_hook_style, g0197, g1D7B, g1DA7, g__i_j, gF258, g0196, g042E, g0458, g02B2, g_jcircumflex, g01F0, g0249, g029D, g1DA8, g_j_dotless, g0237, g0458_dotless, g02B2_dotless, g025F, g0249_dotless, g1DA1, g029D_dotless, g1DA8_dotless, g0284_topSerif, g0284, g043B, g04C6, g0459, g0513, g0509, g0434, g0408, g1D36, g1D0A, g__jcircumflex, g0248, g041B, g1D2B, g04C5, g0409, g0512, g0508, g0414, g1D4F, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g1D84, g0199, g2C6A, g029E, g_kgreenlandic, g043A, g045C, g049B, g04A1, g049F, g049D, g04C4, g0436, g04C2, g04DD, g0497, g1D37, g1D0B, g1E30, g01E8, g1E34, g1E32, g__kcommaaccent, g0198, g2C69, g041A, g040C, g049A, g04A0, g049E, g049C, g04C3, g0416, g04C1, g04DC, g0496, g_l_slant_italic, g02E1, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g_ldot, g_lcaron, g1D85, g1DAA, g019A, g2C61, g026B, g_lslash, g026D, g1DA9, g0234, g026C, gF266, g01C9, g02AA, g02AB, g026E, g1D38, g029F, g1DAB, gF268, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g__ldot, g__lcaron, g023D, g2C60, g2C62, g__lslash, g1D0C, g01C8, g01C7, g1D50, g1E3F, g1E41, g1E43, g1D86, g1D6F, g0271, g1DAC, g026F, g1D5A, g0270, g1DAD, g1D1F, g043C, g04CE, g041C, g1D39, g1D0D, g1E3E, g1E40, g1E42, gF25B, g019C, g04CD, g207F, g_nacute, g01F9, g_ncaron, g1E45, g1E4B, g1E49, g1E47, g_ncommaaccent, g_napostrophe, g1D87, g1D70, g0272, g1DAE, g_eng, g1D51, g0273, g1DAF, g0235, g019E, g01CC, g0438, g045D, g0439, g048B, g04E3, g04E5, g1D3A, g0274, g1DB0, g__nacute, g01F8, g__ncaron, g1E44, g1E4A, g1E48, g1E46, g__ncommaaccent, g019D, g__eng_u_c_style, g1D0E, g1D3B, g019D_lCStyle, g__eng_baseline_hook, g__eng, g0220, g__eng_kom, g01CB, g01CA, g0418, g040D, g0419, g048A, g04E4, g04E2, g043E, g2092, g1D52, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g04E7, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g018D, g0275, g04E9, g1DB1, g04EB, g_theta, g1DBF, gF1AB, g_oslashacute, g_ohorn, g1EDB, g1EDD, g1EE1, g1EDF, g1EE3, g_sigma, g04A9, g1D11, g1D13, gF1AD, g1D14, g01A3, g0223, g0223_openTop, g1D17, g1D55, g1D16, g1D54, g041E, g1D3C, g1D0F, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g04E6, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g019F, g04E8, g04EA, g__theta, g__oslashacute, g__ohorn, g1EDA, g1EDC, g1EE0, g1EDE, g1EE2, g04A8, g0276, gF1AE, g01A2, g0222, g0222_openTop, g1D3D, g1D3D_openTop, g1D15, g1D15_openTop, g0298, g0440, g1D56, g1E55, g1E57, g1D88, g1D7D, g048F, g1D71, g_thorn, g01A5, g01A5_bowlHook, g01BF, g1D68, g0278, g1DB2, g0444, g1D69, g1D60, g0420, g1D3E, g1D18, g1D29, g1E54, g1E56, g048E, g2C63, g01A4, g__thorn, g01F7, g0424, g1D2A, g02A0, g024B, g01AA, g0239, g024A, g1D63, g1DCA, g02B3, g_racute, g0211, g0213, g_rcaron, g1E59, g1E5F, g1E5B, g1E5D, g_rcommaaccent, g1D89, g024D, g1D72, g027D, g027C, g0279, g02B4, g027B, g02B5, gF269, g027A, g027E, g1D73, g0285, g027F, g1D3F, g0280, g__racute, g0210, g0212, g__rcaron, g1E58, g1E5E, g1E5A, g1E5C, g__rcommaaccent, g024C, g2C64, g2C64_lCStyle, g01A6, g1D1A, g0281, g02B6, g042F, g1D19, g044F, g0455, g02E2, g_sacute, g1E65, g_scircumflex, g_scaron, g1E67, g1E61, g1E63, g1E69, g_scommaaccent, g_scedilla_comma_style, g_scedilla, g0282, g1DB3, g1D8A, g1D74, g023F, g01A8, g0283, g1DB4, g1D98, g1D8B, g0286, g0405, g__sacute, g1E64, g__scircumflex, g__scaron, g1E66, g1E60, g1E62, g1E68, g__scommaaccent, g__scedilla_comma_style, g__scedilla, g01A7, g1D57, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g_tcaron, g0163, g01AB, g1DB5, g_tbar, g1D75, g2C66, g01AD, g0288, g0236, g1D7A, g02A8, g02A6, g02A7, g0287, g0442, g04AD, g050F, g04B5, g0422, g1D40, g1D1B, g__tcaron, g1E6A, g1E70, g1E6E, g1E6C, g021A, g0162_commaStyle, g0162, g__tbar, g023E, g01AC, g01AC_rtHook, g01AE, g04AC, g050E, g04B4, g040B, g0402, g1D64, g1D58, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek, g_uogonek_retro_hook_style, g1D99, g0289, g1DB6, g_uhorn, g1EE9, g1EEB, g1EEF, g1EED, g1EF1, g1D6B, g1D1D, g1D59, g1D1E, g028B, g1DB9, g028A, g1DB7, g1D7F, gF259, g1D41, g1D1C, g1DB8, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g0244, g1D7E, gF1CD, g__uhorn, g1EE8, g1EEA, g1EEE, g1EEC, g1EF0, g01B2, g01B1, g_v_slant_italic, g1D65, g1D5B, g1E7D, g1E7F, g1D8C, gF25F, g028B_straightLft, g2C74, g028C, g1DBA, g0264_lrgBowl, g0264, gF1B5, g0264_gammaStyle, g0263, g02E0, g_gamma, g1D67, g1D5E, g1D20, g1E7C, g1E7E, g0245, g1D27, g0194, g02B7, g_wacute, g_wgrave, g_wcircumflex, g_wdieresis, g1E87, g1E98, g1E89, gF21A, g02AC, g028D, g0277, g1D42, g1D21, g__wacute, g__wgrave, g__wcircumflex, g__wdieresis, g1E86, g1E88, gF21B, g0445, g2093, g02E3, g1E8D, g1E8B, g1D8D, g04FF, g04FD, g04B3, g_chi, g1D6A, g1D61, g0425, g1E8C, g1E8A, g04FE, g04FC, g04B2, g0443, g02B8, g_yacute, g04F3, g_ygrave, g_ycircumflex, g045E, g1EF9, g0233, g04EF, g04F1, g1E8F, g1E99, g1EF7, g1EF5, g024F, g01B4, g04AF, g04B1, g028E, gF1CE, gF267, g_lambda, g019B, g0447, g04F5, g04B9, g04B7, g04CC, g04AE, g028F, gF1B4, g__yacute, g__ygrave, g__ycircumflex, g1EF8, g0232, g1E8E, g1EF6, g1EF4, g024E, g04B0, g01B3, g01B3_rtHook, g0423, g04F2, g040E, g04EE, g04F0, g0427, g04F4, g04B8, g04B6, g04CB, g_z_slant_italic, g1DBB, g_zacute, g1E91, g_zcaron, g_zdotaccent, g1E95, g1E93, g0290, g1DBC, g1D8E, g01B6, g1D76, g0291, g1DBD, g0225, g2C6C, g0240, g1D22, g__zacute, g1E90, g__zcaron, g__zdotaccent, g1E94, g1E92, gF234, g01B5, g0224, g2C6B, g01A9, g01B7_revSigmaStyle, g04E0_revSigmaStyle, g0292, g04E1, g1DBE, g01EF, g1D9A, gF235, g0293, g0293_lrgBowl, g01BA, g01B9, g021D, g01B7, g04E0, g1D23, g01EE, g01B8, g021C, g0294, g02C0, g0242, g0241, g02A1, g0295, g02C1, g02E4, g02A2, g0296, g01BE, g1D24, g1D25, g1D5C, g2070, g_onesuperior, g_twosuperior, g01BB, g_threesuperior, g2074, g2075, g01BC, g01BD, g2076, g2077, g2078, g2079, g01C3, g01C0, g01C1, g01C2, g0320, g0317, g02CE, g0316, g032D, g032F, g032E, g035C, g02EC, g032C, g0330, gF17B, g0359, g0353, g032B, g033C, g0331, g0331_short, g035F, g0332, g0333, g0347, g0324, g_dotbelowcomb, g0326, g0325, g035A, g031C, g02BF, g0339, g02BE, g0329, g0348, g031F, g031E, g031D, g0318, g0319, g0349, g02AD, g0327, g0328, g0328_retroHookStyle, g1DC2, g032A, g033A, g033B, g034E, g20EE, g20ED, g20EF, g20EC, g0362, g034D, g0354, g0355, g0356, g1DFF, g034F, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesL11Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesL12Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv); cTakesL13Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesL22Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv); cTakesL23Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesL33Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesODia = (g_space, g__a, g__e, g__i, g__o, g__u, g__v, g_a, g_e, g_i, g_o, g_u, g_v, g__adieresis, g__aring, g__eacute, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_ae, g_oslash, g00A0, g__agrave, g__atilde, g__otilde, g_oe, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_a_2_story_slant_italic, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g01CE, g_amacron, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek_retro_hook_style, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0251, g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story_retro_hook_style, g0252, g_ae_2_story_slant_italic, g04D5, g_aeacute, g01E3, g0200, g1EA4, g1EA4_vN, g1EA6, g1EA6_vN, g1EAA, g1EAA_vN, g1EA8, g1EA8_vN, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g01CD, g__amacron, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek_retro_hook_style, g023A, g0441, g0254, g0254_topSerif, g0421, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek_retro_hook_style, g04BD, g0259, g04D9, g04DB, g025A, g025B, g0511, g0204, g1EBE, g1EBE_vN, g1EC0, g1EC0_vN, g1EC4, g1EC4_vN, g1EC2, g1EC2_vN, g1EC6, g0206, g__ebreve, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g0228, g1E1C, g__eogonek_retro_hook_style, g04BC, g_i_slant_italic, g0456, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek_retro_hook_style, g0268, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1E2D_dotless, g1ECB_dotless, g0268_dotless, g_ij, g0269, g1D7C, g0406, g04C0, g026A, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek_retro_hook_style, g__i_j, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g022B, g022F, g0231, g1ECF, g1ECD, g01EB_retroHookStyle, g01ED_retroHookStyle, g_oslashacute, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g022A, g022E, g0230, g1ECE, g1ECC, g01EA_retroHookStyle, g01EC_retroHookStyle, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek_retro_hook_style, g0289, g028B, g028A, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek_retro_hook_style, g_v_slant_italic, g1E7D, g1E7F, gF25F, g028B_straightLft, g2C74, g028C, g1E7C, g1E7E, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesRDia = (g_space, g__l, g__o, g__u, g_a, g_b, g_c, g_d, g_e, g_g, g_i, g_k, g_l, g_o, g_p, g_q, g_t, g_u, g_y, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_ccedilla, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_ae, g_oslash, g00A0, g__otilde, g_oe, g_ydieresis, g__oacute, g__ocircumflex, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_a_2_story_slant_italic, g0201, g1EAD, g1EA5, g1EA5_vN, g1EA7, g1EA7_vN, g1EAB, g1EAB_vN, g1EA9, g1EA9_vN, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g01CE, g_amacron, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250, g0250_2StorySlantItalic, g0251, g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g0252, g_ae_2_story_slant_italic, g04D5, g_aeacute, g01E3, g1E03, g1E07, g1E05, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g1E09, g0254, g0254_topSerif, g2184, g0501, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g0256, g0205, g1EBF, g1EBF_vN, g1EC1, g1EC1_vN, g1EC5, g1EC5_vN, g1EC3, g1EC3_vN, g1EC7, g0207, g_ebreve, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek_retro_hook_style, g0258, g025B, g025E, g0511, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g_g_sng_bowl, g0261, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g1D77, g1D79, g0262, g_i_slant_italic, g0456, g2071, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g0268, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g0268_dotless, g0269, g1D7C, g04CF, g026A, g025F, g0249_dotless, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g_l_slant_italic, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g026F, g_ohungarumlaut, g020D, g1ED1, g1ED1_vN, g1ED3, g1ED3_vN, g1ED7, g1ED7_vN, g1ED5, g1ED5_vN, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g0275, g04E9, g04EB, g_oslashacute, g__ohungarumlaut, g020C, g1ED0, g1ED0_vN, g1ED2, g1ED2_vN, g1ED6, g1ED6_vN, g1ED4, g1ED4_vN, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g0276, g1E55, g1E57, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g0163, g2C66, g0288, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek_retro_hook_style, g0289, g028A, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g028C, g0264_lrgBowl, g0264, g0264_gammaStyle, g0277, g02B8, g_yacute, g_ygrave, g_ycircumflex, g1EF9, g0233, g1E8F, g1E99, g1EF7, g1EF5, g028F, g0294, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesTLDia = (gA716_lstaff, gA715_lstaff, gA714_lstaff, gA713_lstaff, gA712_lstaff, g02E9_1, g02E9_2, g02E9_3, g02E9_4, g02E9_5, g02E8_1, g02E8_2, g02E8_3, g02E8_4, g02E8_5, g02E7_1, g02E7_2, g02E7_3, g02E7_4, g02E7_5, g02E6_1, g02E6_2, g02E6_3, g02E6_4, g02E6_5, g02E5_1, g02E5_2, g02E5_3, g02E5_4, g02E5_5, gA716_1, gA715_1, gA714_1, gA713_1, gA712_1, gA716_2, gA715_2, gA714_2, gA713_2, gA712_2, gA716_3, gA715_3, gA714_3, gA713_3, gA712_3, gA716_4, gA715_4, gA714_4, gA713_4, gA712_4, gA716_5, gA715_5, gA714_5, gA713_5, gA712_5, gA716_lstaffno, gA715_lstaffno, gA714_lstaffno, gA713_lstaffno, gA712_lstaffno, gA716_no, gA715_no, gA714_no, gA713_no, gA712_no); cTakesUDia = (g_space, g_hyphen, g_zero, g_one, g_two, g_three, g_four, g_five, g_six, g_seven, g_eight, g_nine, g__a, g__b, g__c, g__d, g__e, g__f, g__g, g__h, g__i, g__j, g__k, g__l, g__m, g__n, g__o, g__p, g__q, g__r, g__s, g__t, g__u, g__v, g__w, g__x, g__y, g__z, g_asciicircum, g_grave, g_a, g_b, g_c, g_d, g_e, g_f, g_g, g_h, g_i, g_j, g_k, g_l, g_m, g_n, g_o, g_p, g_q, g_r, g_s, g_t, g_u, g_v, g_w, g_x, g_y, g_z, g__adieresis, g__aring, g__ccedilla, g__eacute, g__ntilde, g__odieresis, g__udieresis, g_aacute, g_agrave, g_acircumflex, g_adieresis, g_atilde, g_aring, g_ccedilla, g_eacute, g_egrave, g_ecircumflex, g_edieresis, g_iacute, g_igrave, g_icircumflex, g_idieresis, g_ntilde, g_oacute, g_ograve, g_ocircumflex, g_odieresis, g_otilde, g_uacute, g_ugrave, g_ucircumflex, g_udieresis, g_germandbls, g_acute, g_dieresis, g__a_e, g__oslash, g_summation, g_pi, g_ae, g_oslash, g_florin, g00A0, g__agrave, g__atilde, g__otilde, g__o_e, g_oe, g_ydieresis, g__ydieresis, g__acircumflex, g__ecircumflex, g__aacute, g__edieresis, g__egrave, g__iacute, g__icircumflex, g__idieresis, g__igrave, g__oacute, g__ocircumflex, g25CC, g__ograve, g__uacute, g__ucircumflex, g__ugrave, g_dotlessi, g_breve, g_caron, g_a_2_story_slant_italic, g0430, g2090, g1D43, g0363, g0201, g1EAD, g1EA5, g1EA7, g1EAB, g1EAB_vN, g1EA9, g0203, g_abreve, g1EB7, g1EAF, g1EAF_vN, g1EB1, g1EB1_vN, g1EB5, g1EB5_vN, g1EB3, g1EB3_vN, g04D1, g01CE, g_amacron, g04D3, g01DF, g0227, g01E1, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek, g_aogonek_retro_hook_style, g1D8F, g2C65, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250, g0250_2StorySlantItalic, g1D44, g0251, g_a_sng_story, g1D45, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story, g_aogonek_sng_story_retro_hook_style, g1D90, g0252, g1D9B, g_ae_2_story_slant_italic, g04D5, gF1A1, g_aeacute, g01E3, g1D02, g1D46, g_alpha, gF247, gF248, g0410, g1D2C, g1D00, g0200, g1EA4, g1EA6, g1EAA, g1EAA_vN, g1EA8, g1EAC, g0202, g__abreve, g1EAE, g1EAE_vN, g1EB0, g1EB0_vN, g1EB4, g1EB4_vN, g1EB2, g1EB2_vN, g1EB6, g04D0, g01CD, g__amacron, g04D2, g01DE, g0226, g01E0, g__aringacute, g1EA2, g1EA0, g1E00, g__aogonek, g__aogonek_retro_hook_style, g023A, gF208, gF209, g04D4, g1D2D, g1D01, g__a_eacute, g01E2, g1D47, g1E03, g1E07, g1E05, g1D80, g0180_barBowl, g0180, g1D6C, g0253, g0185, g0183, g0431, g044C, g048D, g044A, g044B, g04F9, g0432, g0412, g1D2E, g0299, g1E02, g1E06, g1E04, g0243, g1D2F, g1D03, g0181, g0184, g0182, g0411, g042C, g048C, g042A, g042B, g04F8, g_beta, g1D66, g1D5D, g0441, g217D, g1D9C, g0368, g_cacute, g_ccircumflex, g_ccaron, g_cdotaccent, g1E09, g04AB, gF225, g0297, g0188, g0255, g1D9D, g0254, g0254_topSerif, g1D53, g1D53_topSerif, g1D97, g1D97_topSerif, g2184, g1D12, g0454, g044D, g04ED, g044D_mongolStyle, g0421, g216D, g1D04, g__cacute, g__ccircumflex, g__ccaron, g__cdotaccent, g1E08, g04AA, g023B, g0187, g0186, g0186_topSerif, g1D10, g1D10_topSerif, g0404, g042D, g04EC, g042D_mongolStyle, g0501, g217E, g1D48, g0369, g1E0B, g1E13, g1E0F, g1E0D, g1E11, g_dcaron, g1D81, g_dcroat_bar_bowl, g_dcroat, g1D6D, g0257, g0256, g1D91, g0221, g018C, g0238, g01F3, g01C6, g02A3, g02A5, g02A4, g0503, g_delta, g1D5F, g_eth, g1D9E, g216E, g1D30, g1D05, g__dcaron, g1E0A, g1E12, g1E0E, g1E0C, g1E10, g__eth, g__dcroat, g0189, g1D06, gF20D, g018A, g018B, g01F2, g01C5, g01F1, g01C4, g0500, g0502, g0435, g2091, g1D49, g0364, g0450, g0205, g1EBF, g1EC1, g1EC5, g1EC5_vN, g1EC3, g1EC7, g0207, g_ebreve, g04D7, g_ecaron, g1EBD, g_emacron, g1E17, g1E15, g0451, g_edotaccent, g1EBB, g1E19, g1E1B, g1EB9, g0229, g1E1D, g_eogonek, g_eogonek_retro_hook_style, g1D92, g0247, g04BD, g04BF, g01DD, g0259, g04D9, g2094, g1D4A, g04DB, g1D95, g025A, g0258, gF1A3, g025B, g1D4B, g1D93, g025C, g1D9F, g1D94, g025D, g1D08, g1D4C, g029A, g025E, gF1A4, g0511, g0437, g04DF, g0499, g0507, g0505, g0415, g1D31, g1D07, g0400, g0204, g1EBE, g1EC0, g1EC4, g1EC4_vN, g1EC2, g1EC6, g0206, g__ebreve, g04D6, g__ecaron, g1EBC, g__emacron, g1E16, g1E14, g0401, g__edotaccent, g1EBA, g1E18, g1E1A, g1EB8, g0228, g1E1C, g__eogonek, g__eogonek_retro_hook_style, g0246, g04BC, g04BE, g018E, g1D32, g018F, g04D8, g04DA, g0190, g0510, g0417, g04DE, g0498, g0506, g0504, g_f_slant_italic, g1DA0, g1E1F, g1D82, g1D6E, g02A9, g_longs, g1E9B, g0433, g0453, g0491, g04F7, g0493, g0493_slantItalic, gF327, gF327_slantItalic, g04FB, g04FB_slantItalic, g1E1E, g0191, g0413, g__gamma, g1D26, g0403, g0490, g04F6, g0492, gF326, g04FA, g1D4D, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01E5_barBowl, g01E5, g_g_sng_bowl, g0261, g1DA2, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g1D83, g01E5_barBowl_sngBowl, g0260, g1D77, g1D79, g050D, g1D33, g0262, g01F4, g__gcircumflex, g__gbreve, g__gcaron, g1E20, g__gdotaccent, g__gcommaaccent, g01E4, g0193, g029B, g050C, g02B0, g036A, g_hcircumflex, g021F, g1E27, g1E23, g1E2B, g1E96, g1E25, g1E29, g_hbar, g045B, gF1BC, g0452, g0266, g02B1, gF25A, g0267, g2C68, g0195, g2C76, g0265, g1DA3, g02AE, g02AF, g04BB, g04BB_uCStyle, g0495, g043D, g04A5, g04A3, g04CA, g045A, g04C8, g050B, g043F, g04A7, g045F, g0446, g0448, g0449, g1D28, g041D, g1D34, g1D78, g029C, g__hcircumflex, g021E, g1E26, g1E22, g1E2A, g1E24, g1E28, g__hbar, g__hbar_vert_strk, g2C67, g01F6, g2C75, g04BA, g0494, g04A4, g04A2, g04C9, g040A, g04C7, g050A, g041F, g04A6, g040F, g0426, g0428, g0429, g_i_slant_italic, g0456, g2170, g1D62, g2071, g0365, g0209, g020B, g_ibreve, g01D0, g_itilde, g_imacron, g0457, g1E2F, g1EC9, g1E2D, g1ECB, g_iogonek, g_iogonek_retro_hook_style, g1D96, g0268, g1DA4, g_i_dotless, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g0456_dotless, g1D62_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g1D96_dotless, g0268_dotless, g1DA4_dotless, g1D09, g1D4E, g_ij, g2171, g2172, g2173, g2178, g0269, g1DA5, g1D7C, g044E, g0406, g04C0, g04CF, g2160, g1D35, g026A, g1DA6, g0208, g020A, g__ibreve, g01CF, g__itilde, g__imacron, g0407, g1E2E, g__idotaccent, g1EC8, g1E2C, g1ECA, g__iogonek, g__iogonek_retro_hook_style, g0197, g1D7B, g1DA7, g__i_j, g2161, g2162, g2163, g2168, gF258, g0196, g042E, g0458, g02B2, g_jcircumflex, g01F0, g0249, g029D, g1DA8, g_j_dotless, g0237, g0458_dotless, g02B2_dotless, g025F, g0249_dotless, g1DA1, g029D_dotless, g1DA8_dotless, g0284_topSerif, g0284, g043B, g04C6, g0459, g0513, g0509, g0434, g0408, g1D36, g1D0A, g__jcircumflex, g0248, g041B, g1D2B, g04C5, g0409, g0512, g0508, g0414, g1D4F, g1E31, g01E9, g1E35, g1E33, g_kcommaaccent, g1D84, g0199, g2C6A, g029E, g_kgreenlandic, g043A, g045C, g049B, g04A1, g049F, g049D, g04C4, g0436, g04C2, g04DD, g0497, g1D37, g1D0B, g1E30, g01E8, g1E34, g1E32, g__kcommaaccent, g0198, g2C69, g041A, g040C, g049A, g04A0, g049E, g049C, g04C3, g0416, g04C1, g04DC, g0496, g_l_slant_italic, g217C, g02E1, g_lacute, g1E3D, g1E3B, g1E37, g1E39, g_lcommaaccent, g_ldot, g_lcaron, g1D85, g1DAA, g019A, g2C61, g026B, g_lslash, g026D, g1DA9, g0234, g026C, gF266, g01C9, g02AA, g02AB, g026E, g216C, g1D38, g029F, g1DAB, gF268, g__lacute, g1E3C, g1E3A, g1E36, g1E38, g__lcommaaccent, g__ldot, g__lcaron, g023D, g2C60, g2C62, g__lslash, g1D0C, g01C8, g01C7, g217F, g1D50, g036B, g1E3F, g1E41, g1E43, g1D86, g1D6F, g0271, g1DAC, g026F, g1D5A, g0270, g1DAD, g1D1F, g043C, g04CE, g041C, g216F, g1D39, g1D0D, g1E3E, g1E40, g1E42, gF25B, g019C, g04CD, g207F, g_nacute, g01F9, g_ncaron, g1E45, g1E4B, g1E49, g1E47, g_ncommaaccent, g_napostrophe, g1D87, g1D70, g0272, g1DAE, g_eng, g1D51, g0273, g1DAF, g0235, g019E, g01CC, g0438, g045D, g0439, g048B, g04E3, g04E5, g1D3A, g0274, g1DB0, g__nacute, g01F8, g__ncaron, g1E44, g1E4A, g1E48, g1E46, g__ncommaaccent, g019D, g__eng_u_c_style, g1D0E, g1D3B, g019D_lCStyle, g__eng_baseline_hook, g__eng, g0220, g__eng_kom, g01CB, g01CA, g0418, g040D, g0419, g048A, g04E4, g04E2, g043E, g2092, g1D52, g0366, g_ohungarumlaut, g020D, g1ED1, g1ED3, g1ED7, g1ED7_vN, g1ED5, g1ED9, g020F, g_obreve, g01D2, g1E4D, g022D, g1E4F, g_omacron, g1E53, g1E51, g04E7, g022B, g022F, g0231, g1ECF, g1ECD, g01EB, g01ED, g01EB_retroHookStyle, g01ED_retroHookStyle, g018D, g0275, g04E9, g1DB1, g04EB, g_theta, g1DBF, gF1AB, g_oslashacute, g_ohorn, g1EDB, g1EDD, g1EE1, g1EDF, g1EE3, g_sigma, g04A9, g1D11, g1D13, gF1AD, g1D14, g01A3, g0223, g0223_openTop, g1D17, g1D55, g1D16, g1D54, g041E, g1D3C, g1D0F, g__ohungarumlaut, g020C, g1ED0, g1ED2, g1ED6, g1ED6_vN, g1ED4, g1ED8, g020E, g__obreve, g01D1, g1E4C, g022C, g1E4E, g__omacron, g1E52, g1E50, g04E6, g022A, g022E, g0230, g1ECE, g1ECC, g01EA, g01EC, g01EA_retroHookStyle, g01EC_retroHookStyle, g019F, g04E8, g04EA, g__theta, g__oslashacute, g__ohorn, g1EDA, g1EDC, g1EE0, g1EDE, g1EE2, g04A8, g0276, gF1AE, g01A2, g0222, g0222_openTop, g1D3D, g1D3D_openTop, g1D15, g1D15_openTop, g0298, g0440, g1D56, g1E55, g1E57, g1D88, g1D7D, g048F, g1D71, g_thorn, g01A5, g01A5_bowlHook, g01BF, g1D68, g0278, g1DB2, g0444, g1D69, g1D60, g0420, g1D3E, g1D18, g1D29, g1E54, g1E56, g048E, g2C63, g01A4, g__thorn, g01F7, g0424, g1D2A, g02A0, g024B, g01AA, g0239, g024A, g1D63, g02B3, g036C, g_racute, g0211, g0213, g_rcaron, g1E59, g1E5F, g1E5B, g1E5D, g_rcommaaccent, g1D89, g024D, g1D72, g027D, g027C, g0279, g02B4, g027B, g02B5, gF269, g027A, g027E, g1D73, g0285, g027F, g1D3F, g0280, g__racute, g0210, g0212, g__rcaron, g1E58, g1E5E, g1E5A, g1E5C, g__rcommaaccent, g024C, g2C64, g2C64_lCStyle, g01A6, g1D1A, g0281, g02B6, g042F, g1D19, g044F, g0455, g02E2, g_sacute, g1E65, g_scircumflex, g_scaron, g1E67, g1E61, g1E63, g1E69, g_scommaaccent, g_scedilla_comma_style, g_scedilla, g0282, g1DB3, g1D8A, g1D74, g023F, g01A8, g0283, g1DB4, g1D98, g1D8B, g0286, g0405, g__sacute, g1E64, g__scircumflex, g__scaron, g1E66, g1E60, g1E62, g1E68, g__scommaaccent, g__scedilla_comma_style, g__scedilla, g01A7, g1D57, g036D, g1E97, g1E6B, g1E71, g1E6F, g1E6D, g021B, g0163_commaStyle, g_tcaron, g0163, g01AB, g1DB5, g_tbar, g1D75, g2C66, g01AD, g0288, g0236, g1D7A, g02A8, g02A6, g02A7, g0287, g0442, g04AD, g050F, g04B5, g0422, g1D40, g1D1B, g__tcaron, g1E6A, g1E70, g1E6E, g1E6C, g021A, g0162_commaStyle, g0162, g__tbar, g023E, g01AC, g01AC_rtHook, g01AE, g04AC, g050E, g04B4, g040B, g0402, g1D64, g1D58, g0367, g_uhungarumlaut, g0215, g0217, g_ubreve, g01D4, g_utilde, g1E79, g_umacron, g1E7B, g01D8, g01DC, g01DA, g01D6, g_uring, g1EE7, g1E77, g1E75, g1E73, g1EE5, g_uogonek, g_uogonek_retro_hook_style, g1D99, g0289, g1DB6, g_uhorn, g1EE9, g1EEB, g1EEF, g1EED, g1EF1, g1D6B, g1D1D, g1D59, g1D1E, g028B, g1DB9, g028A, g1DB7, g1D7F, gF259, g1D41, g1D1C, g1DB8, g__uhungarumlaut, g0214, g0216, g__ubreve, g01D3, g__utilde, g1E78, g__umacron, g1E7A, g01D7, g01DB, g01D9, g01D5, g__uring, g1EE6, g1E76, g1E74, g1E72, g1EE4, g__uogonek, g__uogonek_retro_hook_style, g0244, g1D7E, gF1CD, g__uhorn, g1EE8, g1EEA, g1EEE, g1EEC, g1EF0, g01B2, g01B1, g_v_slant_italic, g2174, g1D65, g1D5B, g036E, g1E7D, g1E7F, g1D8C, gF25F, g028B_straightLft, g2C74, g2175, g2176, g2177, g028C, g1DBA, g0264_lrgBowl, g0264, gF1B5, g0264_gammaStyle, g0263, g02E0, g_gamma, g1D67, g1D5E, g2164, g1D20, g1E7C, g1E7E, g2165, g2166, g2167, g0245, g1D27, g0194, g02B7, g_wacute, g_wgrave, g_wcircumflex, g_wdieresis, g1E87, g1E98, g1E89, gF21A, g02AC, g028D, g0277, g1D42, g1D21, g__wacute, g__wgrave, g__wcircumflex, g__wdieresis, g1E86, g1E88, gF21B, g0445, g2179, g2093, g02E3, g036F, g1E8D, g1E8B, g1D8D, g04FF, g04FD, g04B3, g217A, g217B, g_chi, g1D6A, g1D61, g0425, g2169, g1E8C, g1E8A, g04FE, g04FC, g04B2, g216A, g216B, g0443, g02B8, g_yacute, g04F3, g_ygrave, g_ycircumflex, g045E, g1EF9, g0233, g04EF, g04F1, g1E8F, g1E99, g1EF7, g1EF5, g024F, g01B4, g04AF, g04B1, g028E, gF1CE, gF267, g_lambda, g019B, g0447, g04F5, g04B9, g04B7, g04CC, g04AE, g028F, gF1B4, g__yacute, g__ygrave, g__ycircumflex, g1EF8, g0232, g1E8E, g1EF6, g1EF4, g024E, g04B0, g01B3, g01B3_rtHook, g0423, g04F2, g040E, g04EE, g04F0, g0427, g04F4, g04B8, g04B6, g04CB, g_z_slant_italic, g1DBB, g_zacute, g1E91, g_zcaron, g_zdotaccent, g1E95, g1E93, g0290, g1DBC, g1D8E, g01B6, g1D76, g0291, g1DBD, g0225, g2C6C, g0240, g1D22, g__zacute, g1E90, g__zcaron, g__zdotaccent, g1E94, g1E92, gF234, g01B5, g0224, g2C6B, g01A9, g01B7_revSigmaStyle, g04E0_revSigmaStyle, g0292, g04E1, g1DBE, g01EF, g1D9A, gF235, g0293, g0293_lrgBowl, g01BA, g01B9, g021D, g01B7, g04E0, g1D23, g01EE, g01B8, g021C, g0294, g02C0, g0242, g0241, g02A1, g0295, g02C1, g02E4, g02A2, g0296, g01BE, g1D24, g1D25, g1D5C, g2070, g_onesuperior, g_twosuperior, g01BB, g_threesuperior, g2074, g2075, g01BC, g01BD, g2076, g2077, g2078, g2079, g01C3, g0312, g0314, g01C0, g01C1, g01C2, g2010, g2011, g00AD, g02D7, g02CA, g_acutecomb, g030B, g02F4, g02CB, g_gravecomb, g02F5, g030F, g0302, g0302_tildecomb_vN, g0311, g0311_uU, g0311_uL, g0311_lL, g0352, g0361, g0306, g0306_acutecomb_vN, g0306_gravecomb_vN, g0306_tildecomb_vN, g0306_hookabovecomb_vN, g0310, g0306_cyShortMrkAlt, g035D, g030C, g_tildecomb, g034A, g034C, g034B, g0360, g033E, g035B, g033D, g02C9, g0304, g0304_short, g035E, g0305, g033F, g0308, g0308_uU, g0308_lL, g0308_uL, g0308_sup, gF17A, g0307, g0358, g0313, g030A, g02BF, g0351, g02BE, g0357, g_hookabovecomb, g030D, g030E, g02AD, g0346, g1DFE, g0350, g034F, g2001, g2003, g202F, g2008, g2006, g2004, g2000, g2002, g2005, g2007, g2009, g200A); cTakesU11Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cTakesU12Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, g2060_showInv, gFEFF_showInv); cTakesU13Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesU22Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, g2060_showInv, gFEFF_showInv); cTakesU23Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cTakesU33Dia = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, g200C_showInv, g200B_showInv); cHDia = (g0327); cLDia = (g1DCA, g0320, g0317, g0316, g032D, g032F, g032E, g032C, g0330, gF17B, g0359, g0353, g032B, g033C, g0331, g0331_short, g0332, g0333, g0347, g0324, g_dotbelowcomb, g0326, g0325, g035A, g031C, g0339, g0329, g0348, g031F, g031E, g031D, g0318, g0319, g0349, g0328_retroHookStyle, g1DC2, g032A, g033A, g033B, g034E, g20EE, g20ED, g20EF, g20EC, g034D, g0354, g0355, g0356, g1DFF, g034F); cODia = (g0328); cRDia = (g0358, g0315, g031B, g02DE, g02DE02DE); cTLDia = (g02E9_rstaff, g02E8_rstaff, g02E7_rstaff, g02E6_rstaff, g02E5_rstaff, g02E9_1, g02E9_2, g02E9_3, g02E9_4, g02E9_5, g02E8_1, g02E8_2, g02E8_3, g02E8_4, g02E8_5, g02E7_1, g02E7_2, g02E7_3, g02E7_4, g02E7_5, g02E6_1, g02E6_2, g02E6_3, g02E6_4, g02E6_5, g02E5_1, g02E5_2, g02E5_3, g02E5_4, g02E5_5, gA716_1, gA715_1, gA714_1, gA713_1, gA712_1, gA716_2, gA715_2, gA714_2, gA713_2, gA712_2, gA716_3, gA715_3, gA714_3, gA713_3, gA712_3, gA716_4, gA715_4, gA714_4, gA713_4, gA712_4, gA716_5, gA715_5, gA714_5, gA713_5, gA712_5, g02E9_rstaffno, g02E8_rstaffno, g02E7_rstaffno, g02E6_rstaffno, g02E5_rstaffno, g02E9_no, g02E8_no, g02E7_no, g02E6_no, g02E5_no); cUDia = (g0363, g0368, g0369, g0364, g036A, g0365, g036B, g0366, g036C, g036D, g0367, g036E, g036F, g0312, g0314, g_acutecomb, g030B, g_gravecomb, g030F, g0302, g0302_acutecomb_vN, g0302_gravecomb_vN, g0302_tildecomb_vN, g0302_hookabovecomb_vN, g0311, g0311_uU, g0311_uL, g0311_lL, g0352, g0306, g0306_acutecomb_vN, g0306_gravecomb_vN, g0306_tildecomb_vN, g0306_hookabovecomb_vN, g0310, g0306_cyShortMrkAlt, g030C, g1DC7, g1DC4, g1DC5, g1DC6, g1DC9, g1DC8, g_tildecomb, g034A, g034C, g034B, g033E, g035B, g033D, g0304, g0304_short, g0305, g033F, g0308, g0308_uU, g0308_lL, g0308_uL, g0308_sup, g0307, g0313, g030A, g0351, g0357, g_hookabovecomb, g030D, g030E, g0346, g1DFE, g0350, g034F); c1 = (g02E9_1, g02E8_1, g02E7_1, g02E6_1, g02E5_1, gA716_1, gA715_1, gA714_1, gA713_1, gA712_1); cno_1 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c2 = (g02E9_2, g02E8_2, g02E7_2, g02E6_2, g02E5_2, gA716_2, gA715_2, gA714_2, gA713_2, gA712_2); cno_2 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c2StorySlantItalic = (g_a_2_story_slant_italic, g_atilde_2_story_slant_italic, g1EA1_2StorySlantItalic, g0250_2StorySlantItalic, g_ae_2_story_slant_italic); cno_2StorySlantItalic = (g_a, g_atilde, g1EA1, g0250, g_ae); c3 = (g02E9_3, g02E8_3, g02E7_3, g02E6_3, g02E5_3, gA716_3, gA715_3, gA714_3, gA713_3, gA712_3); cno_3 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c4 = (g02E9_4, g02E8_4, g02E7_4, g02E6_4, g02E5_4, gA716_4, gA715_4, gA714_4, gA713_4, gA712_4); cno_4 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); c5 = (g02E9_5, g02E8_5, g02E7_5, g02E6_5, g02E5_5, gA716_5, gA715_5, gA714_5, gA713_5, gA712_5); cno_5 = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); cBarBowl = (g0180_barBowl, g_dcroat_bar_bowl, g01E5_barBowl); cno_BarBowl = (g0180, g_dcroat, g01E5); cBaselineHook = (g__eng_baseline_hook); cno_BaselineHook = (g__eng); cBowlHook = (g01A5_bowlHook); cno_BowlHook = (g01A5); cChinantecTn = (g02CB_chinantecTn, g02C8_chinantecTn, g02CA_chinantecTn, g02C9_chinantecTn); cno_ChinantecTn = (g02CB, g02C8, g02CA, g02C9); cCommaStyle = (g_scedilla_comma_style, g__scedilla_comma_style, g0163_commaStyle, g0162_commaStyle); cno_CommaStyle = (g_scedilla, g__scedilla, g0163, g0162); cCyShortMrkAlt = (g0306_cyShortMrkAlt); cno_CyShortMrkAlt = (g0306); cDotless = (g_i_dotless, g0456_dotless, g1D62_dotless, g2071_dotless, g1E2D_dotless, g1ECB_dotless, g_iogonek_dotless, g1D96_dotless, g0268_dotless, g1DA4_dotless, g_j_dotless, g0458_dotless, g02B2_dotless, g0249_dotless, g029D_dotless, g1DA8_dotless); cno_Dotless = (g_i, g0456, g1D62, g2071, g1E2D, g1ECB, g_iogonek, g1D96, g0268, g1DA4, g_j, g0458, g02B2, g0249, g029D, g1DA8); cGammaStyle = (g0264_gammaStyle); cno_GammaStyle = (g0264); cKom = (g__eng_kom); cno_Kom = (g__eng); cLCStyle = (g019D_lCStyle, g2C64_lCStyle); cno_LCStyle = (g019D, g2C64); cLL = (g0311_lL, g0308_lL); cno_LL = (g0311, g0308); cLines = (g_space_lines, gF1F1_lines, gF1F1F1F2_lines, gF1F1F1F3_lines, gF1F1F1F4_lines, gF1F1F1F5_lines, gF1F1F1F6_lines, gF1F1F1F7_lines, gF1F1F1F8_lines, gF1F1F1F9_lines, gF1F2F1F1_lines, gF1F2_lines, gF1F2F1F3_lines, gF1F2F1F4_lines, gF1F2F1F5_lines, gF1F2F1F6_lines, gF1F2F1F7_lines, gF1F2F1F8_lines, gF1F2F1F9_lines, gF1F3F1F1_lines, gF1F3F1F2_lines, gF1F3_lines, gF1F3F1F4_lines, gF1F3F1F5_lines, gF1F3F1F6_lines, gF1F3F1F7_lines, gF1F3F1F8_lines, gF1F3F1F9_lines, gF1F4F1F1_lines, gF1F4F1F2_lines, gF1F4F1F3_lines, gF1F4_lines, gF1F4F1F5_lines, gF1F4F1F6_lines, gF1F4F1F7_lines, gF1F4F1F8_lines, gF1F4F1F9_lines, gF1F5F1F1_lines, gF1F5F1F2_lines, gF1F5F1F3_lines, gF1F5F1F4_lines, gF1F5_lines, gF1F5F1F6_lines, gF1F5F1F7_lines, gF1F5F1F8_lines, gF1F5F1F9_lines, gF1F6F1F1_lines, gF1F6F1F2_lines, gF1F6F1F3_lines, gF1F6F1F4_lines, gF1F6F1F5_lines, gF1F6_lines, gF1F6F1F7_lines, gF1F6F1F8_lines, gF1F6F1F9_lines, gF1F7F1F1_lines, gF1F7F1F2_lines, gF1F7F1F3_lines, gF1F7F1F4_lines, gF1F7F1F5_lines, gF1F7F1F6_lines, gF1F7_lines, gF1F7F1F8_lines, gF1F7F1F9_lines, gF1F8F1F1_lines, gF1F8F1F2_lines, gF1F8F1F3_lines, gF1F8F1F4_lines, gF1F8F1F5_lines, gF1F8F1F6_lines, gF1F8F1F7_lines, gF1F8_lines, gF1F8F1F9_lines, gF1F9F1F1_lines, gF1F9F1F2_lines, gF1F9F1F3_lines, gF1F9F1F4_lines, gF1F9F1F5_lines, gF1F9F1F6_lines, gF1F9F1F7_lines, gF1F9F1F8_lines, gF1F9_lines); cno_Lines = (g_space, gF1F1, gF1F1F1F2, gF1F1F1F3, gF1F1F1F4, gF1F1F1F5, gF1F1F1F6, gF1F1F1F7, gF1F1F1F8, gF1F1F1F9, gF1F2F1F1, gF1F2, gF1F2F1F3, gF1F2F1F4, gF1F2F1F5, gF1F2F1F6, gF1F2F1F7, gF1F2F1F8, gF1F2F1F9, gF1F3F1F1, gF1F3F1F2, gF1F3, gF1F3F1F4, gF1F3F1F5, gF1F3F1F6, gF1F3F1F7, gF1F3F1F8, gF1F3F1F9, gF1F4F1F1, gF1F4F1F2, gF1F4F1F3, gF1F4, gF1F4F1F5, gF1F4F1F6, gF1F4F1F7, gF1F4F1F8, gF1F4F1F9, gF1F5F1F1, gF1F5F1F2, gF1F5F1F3, gF1F5F1F4, gF1F5, gF1F5F1F6, gF1F5F1F7, gF1F5F1F8, gF1F5F1F9, gF1F6F1F1, gF1F6F1F2, gF1F6F1F3, gF1F6F1F4, gF1F6F1F5, gF1F6, gF1F6F1F7, gF1F6F1F8, gF1F6F1F9, gF1F7F1F1, gF1F7F1F2, gF1F7F1F3, gF1F7F1F4, gF1F7F1F5, gF1F7F1F6, gF1F7, gF1F7F1F8, gF1F7F1F9, gF1F8F1F1, gF1F8F1F2, gF1F8F1F3, gF1F8F1F4, gF1F8F1F5, gF1F8F1F6, gF1F8F1F7, gF1F8, gF1F8F1F9, gF1F9F1F1, gF1F9F1F2, gF1F9F1F3, gF1F9F1F4, gF1F9F1F5, gF1F9F1F6, gF1F9F1F7, gF1F9F1F8, gF1F9); cLrg = (gF26A_lrg, gF21D_lrg, g02BC_lrg); cno_Lrg = (gF26A, gF21D, g02BC); cLrgBowl = (g0264_lrgBowl, g0293_lrgBowl); cno_LrgBowl = (g0264, g0293); cMongolStyle = (g044D_mongolStyle, g042D_mongolStyle); cno_MongolStyle = (g044D, g042D); cOpenTop = (g0223_openTop, g0222_openTop, g1D3D_openTop, g1D15_openTop); cno_OpenTop = (g0223, g0222, g1D3D, g1D15); cRetroHookStyle = (g_aogonek_retro_hook_style, g_aogonek_sng_story_retro_hook_style, g__aogonek_retro_hook_style, g_eogonek_retro_hook_style, g__eogonek_retro_hook_style, g_iogonek_retro_hook_style, g__iogonek_retro_hook_style, g01EB_retroHookStyle, g01ED_retroHookStyle, g01EA_retroHookStyle, g01EC_retroHookStyle, g_uogonek_retro_hook_style, g__uogonek_retro_hook_style, g0328_retroHookStyle, g_ogonek_retro_hook_style); cno_RetroHookStyle = (g_aogonek, g_aogonek_sng_story, g__aogonek, g_eogonek, g__eogonek, g_iogonek, g__iogonek, g01EB, g01ED, g01EA, g01EC, g_uogonek, g__uogonek, g0328, g_ogonek); cRevSigmaStyle = (g01B7_revSigmaStyle, g04E0_revSigmaStyle); cno_RevSigmaStyle = (g01B7, g04E0); cRtHook = (g01AC_rtHook, g01B3_rtHook); cno_RtHook = (g01AC, g01B3); cShort = (g0331_short, g0304_short); cno_Short = (g0331, g0304); cShowInv = (g00AD_showInv, g034F_showInv, g2061_showInv, g2063_showInv, g2062_showInv, g202A_showInv, g200E_showInv, g202D_showInv, g202C_showInv, g202B_showInv, g200F_showInv, g202E_showInv, gFE00_showInv, gFE01_showInv, gFE02_showInv, gFE03_showInv, gFE04_showInv, gFE05_showInv, gFE06_showInv, gFE07_showInv, gFE08_showInv, gFE09_showInv, gFE0A_showInv, gFE0B_showInv, gFE0C_showInv, gFE0D_showInv, gFE0E_showInv, gFE0F_showInv, g2060_showInv, g200D_showInv, gFEFF_showInv, g200C_showInv, g200B_showInv); cno_ShowInv = (g00AD, g034F, g2061, g2063, g2062, g202A, g200E, g202D, g202C, g202B, g200F, g202E, gFE00, gFE01, gFE02, gFE03, gFE04, gFE05, gFE06, gFE07, gFE08, gFE09, gFE0A, gFE0B, gFE0C, gFE0D, gFE0E, gFE0F, g2060, g200D, gFEFF, g200C, g200B); cSlantItalic = (g_f_slant_italic, g_f_i_slant_italic, g_f_l_slant_italic, g_f_f_i_slant_italic, g_f_f_l_slant_italic, g_f_f_slant_italic, g0493_slantItalic, gF327_slantItalic, g04FB_slantItalic, g_i_slant_italic, g_dotlessi_slant_italic, g_i_dotless_slant_italic, g_l_slant_italic, g_v_slant_italic, g_z_slant_italic); cno_SlantItalic = (g_f, g_f_i, g_f_l, g_f_f_i, g_f_f_l, g_f_f, g0493, gF327, g04FB, g_i, g_dotlessi, g_i_dotless, g_l, g_v, g_z); cSlashZero = (g_emptyset_slash_zero); cno_SlashZero = (g_emptyset); cSngBowl = (g_g_sng_bowl, g01F5_sngBowl, g_gcircumflex_sng_bowl, g_gbreve_sng_bowl, g_gcaron_sng_bowl, g1E21_sngBowl, g_gdotaccent_sng_bowl, g_gcommaaccent_sng_bowl, g01E5_barBowl_sngBowl); cno_SngBowl = (g_g, g01F5, g_gcircumflex, g_gbreve, g_gcaron, g1E21, g_gdotaccent, g_gcommaaccent, g01E5_barBowl); cSngStory = (g_a_sng_story, g_aacute_sng_story, g_agrave_sng_story, g0201_sngStory, g_acircumflex_sng_story, g1EAD_sngStory, g1EA5_sngStory, g1EA7_sngStory, g1EAB_sngStory, g1EA9_sngStory, g0203_sngStory, g_abreve_sng_story, g1EB7_sngStory, g1EAF_sngStory, g1EB1_sngStory, g1EB5_sngStory, g1EB3_sngStory, g01CE_sngStory, g_atilde_sng_story, g_amacron_sng_story, g_adieresis_sng_story, g01DF_sngStory, g0227_sngStory, g01E1_sngStory, g_aring_sng_story, g_aringacute_sng_story, g1E9A_sngStory, g1EA3_sngStory, g1EA1_sngStory, g1E01_sngStory, g_aogonek_sng_story); cno_SngStory = (g_a, g_aacute, g_agrave, g0201, g_acircumflex, g1EAD, g1EA5, g1EA7, g1EAB, g1EA9, g0203, g_abreve, g1EB7, g1EAF, g1EB1, g1EB5, g1EB3, g01CE, g_atilde, g_amacron, g_adieresis, g01DF, g0227, g01E1, g_aring, g_aringacute, g1E9A, g1EA3, g1EA1, g1E01, g_aogonek); cStraightLft = (g028B_straightLft); cno_StraightLft = (g028B); cSup = (g0308_sup); cno_Sup = (g0308); cTopSerif = (g0254_topSerif, g1D53_topSerif, g1D97_topSerif, g0186_topSerif, g1D10_topSerif, g0284_topSerif); cno_TopSerif = (g0254, g1D53, g1D97, g0186, g1D10, g0284); cUCStyle = (g04BB_uCStyle, g__eng_u_c_style); cno_UCStyle = (g04BB, g__eng); cUL = (g0311_uL, g0308_uL); cno_UL = (g0311, g0308); cUU = (g0311_uU, g0308_uU); cno_UU = (g0311, g0308); cVN = (g1EA5_vN, g1EA7_vN, g1EAB_vN, g1EA9_vN, g1EAF_vN, g1EB1_vN, g1EB5_vN, g1EB3_vN, g1EA4_vN, g1EA6_vN, g1EAA_vN, g1EA8_vN, g1EAE_vN, g1EB0_vN, g1EB4_vN, g1EB2_vN, g1EBF_vN, g1EC1_vN, g1EC5_vN, g1EC3_vN, g1EBE_vN, g1EC0_vN, g1EC4_vN, g1EC2_vN, g1ED1_vN, g1ED3_vN, g1ED7_vN, g1ED5_vN, g1ED0_vN, g1ED2_vN, g1ED6_vN, g1ED4_vN); cno_VN = (g1EA5, g1EA7, g1EAB, g1EA9, g1EAF, g1EB1, g1EB5, g1EB3, g1EA4, g1EA6, g1EAA, g1EA8, g1EAE, g1EB0, g1EB4, g1EB2, g1EBF, g1EC1, g1EC5, g1EC3, g1EBE, g1EC0, g1EC4, g1EC2, g1ED1, g1ED3, g1ED7, g1ED5, g1ED0, g1ED2, g1ED6, g1ED4); cVertStrk = (g__hbar_vert_strk); cno_VertStrk = (g__hbar); cWide = (gF1E9_wide); cno_Wide = (gF1E9); clstaff = (gA716_lstaff, gA715_lstaff, gA714_lstaff, gA713_lstaff, gA712_lstaff); cno_lstaff = (gA716, gA715, gA714, gA713, gA712); clstaffno = (gA716_lstaffno, gA715_lstaffno, gA714_lstaffno, gA713_lstaffno, gA712_lstaffno); cno_lstaffno = (gA716, gA715, gA714, gA713, gA712); cno = (g02E9_no, g02E8_no, g02E7_no, g02E6_no, g02E5_no, gA716_no, gA715_no, gA714_no, gA713_no, gA712_no); cno_no = (g02E9, g02E8, g02E7, g02E6, g02E5, gA716, gA715, gA714, gA713, gA712); cno_rstaff = (g02E9, g02E8, g02E7, g02E6, g02E5); crstaff = (g02E9_rstaff, g02E8_rstaff, g02E7_rstaff, g02E6_rstaff, g02E5_rstaff); cno_rstaffno = (g02E9, g02E8, g02E7, g02E6, g02E5); crstaffno = (g02E9_rstaffno, g02E8_rstaffno, g02E7_rstaffno, g02E6_rstaffno, g02E5_rstaffno); endtable; #line 69 "CharisRules.gdh" Bidi = 0; AutoPseudo = 0; #line 88 table(glyph); cUDblDia = (g035D g035E g0360 g0361 gF17A); cLDblDia = (g035F g0362 g035C); cBDia = (cLDia cODia cHDia); cnBDia = (cUDia cRDia); cnHDia = (cLDia cODia cRDia cUDia); cnLDia = (cHDia cODia cRDia cUDia); cnODia = (cHDia cLDia cRDia cUDia); cnRDia = (cHDia cLDia cODia cUDia); cnUDia = (cHDia cLDia cODia cRDia ); cDia = (cHDia cLDia cODia cRDia cUDia); cfLigC2 = (g_f g_i g_l); cfLig = (g_f_f g_f_i g_f_l); cffLigC3 = (g_i g_l); cffLig = (g_f_f_i g_f_f_l); cfLigC2_slantItalic = (g_f_slant_italic, g_i_slant_italic, g_l_slant_italic); cfLig_slantItalic = (g_f_f_slant_italic, g_f_i_slant_italic, g_f_l_slant_italic); cffLigC3_slantItalic = (g_i_slant_italic, g_l_slant_italic); cffLig_slantItalic = (g_f_f_i_slant_italic, g_f_f_l_slant_italic); cfLig_all = (cfLig cfLig_slantItalic) { component {f1 = box(0, -descent, advancewidth/2, ascent); f2 = box(advancewidth/2, -descent, advancewidth, ascent) }}; cffLig_all = (cffLig cffLig_slantItalic) { component { f1 = box(0, -descent, advancewidth/3, ascent); f2 = box(advancewidth/3, -descent, (2*advancewidth)/3, ascent); f3 = box((2*advancewidth)/3, -descent, advancewidth, ascent) }} cSpecialDotted = (g1E2D g1ECB); cSpecialDottedDia = (g0330 g_dotbelowcomb); cCedillaBase = (g__g g_g g__k g_k g__l g_l g__n g_n g__r g_r); cCedillaComposite = (g__gcommaaccent g_gcommaaccent g__kcommaaccent g_kcommaaccent g__lcommaaccent g_lcommaaccent g__ncommaaccent g_ncommaaccent g__rcommaaccent g_rcommaaccent); cCedillaBase += (g__c g_c g__s g_s g__t g_t g__e g_e) cCedillaComposite += (g__ccedilla g_ccedilla g__scedilla g_scedilla g0162 g0163 g0228 g0229) cOgonekBase = (g__a g_a g__e g_e g__u g_u g__o g_o g__omacron g_omacron); cOgonekComposite = (g__aogonek g_aogonek g__eogonek g_eogonek g__uogonek g_uogonek g01EA g01EB g01EC g01ED); cHornBase = (g__o g_o g__u g_u); cHornComposite = (g__ohorn g_ohorn g__uhorn g_uhorn); cModSuper = (g02B0 g02B1 g02B2 g02B3 g02B4 g02B5 g02B6 g02B7 g02B8 g02C0 g02C1 g02E0 g02E1 g02E2 g02E3 g02E4 g1D2C g1D2D g1D2E g1D2F g1D30 g1D31 g1D32 g1D33 g1D34 g1D35 g1D36 g1D37 g1D38 g1D39 g1D3A g1D3B g1D3C g1D3D g1D3E g1D3F g1D40 g1D41 g1D42 g1D43 g1D44 g1D45 g1D46 g1D47 g1D48 g1D49 g1D4A g1D4B g1D4C g1D4D g1D4E g1D4F g1D50 g1D51 g1D52 g1D53 g1D54 g1D55 g1D56 g1D57 g1D58 g1D59 g1D5A g1D5B g1D5C g1D5D g1D5E g1D5F g1D60 g1D61 g1D78 g1D9B g1D9C g1D9D g1D9E g1D9F g1DA0 g1DA1 g1DA2 g1DA3 g1DA4 g1DA5 g1DA6 g1DA7 g1DA8 g1DA9 g1DAA g1DAB g1DAC g1DAD g1DAE g1DAF g1DB0 g1DB1 g1DB2 g1DB3 g1DB4 g1DB5 g1DB6 g1DB7 g1DB8 g1DB9 g1DBA g1DBB g1DBC g1DBD g1DBE g1DBF g2071 g207F g2071_dotless g02B2_dotless g1DA4_dotless g1DA8_dotless); cModSub = (g1D62 g1D63 g1D64 g1D65 g1D66 g1D67 g1D68 g1D69 g1D6A g2090 g2091 g2092 g2093 g2094 g1D62_dotless); cBridgeDiac = (g0308_uU g0308_uL g0308_lL g0311_uU g0311_uL g0311_lL); cDiacComb = (g_acutecomb g_gravecomb g_hookabovecomb g_tildecomb); c_g0302DiacComb = (g0302_acutecomb_vN g0302_gravecomb_vN g0302_hookabovecomb_vN g0302_tildecomb_vN); c_g0306DiacComb = (g0306_acutecomb_vN g0306_gravecomb_vN g0306_hookabovecomb_vN g0306_tildecomb_vN); #line 181 c_aStack_noLit = (g1EA5 g1EA7 g1EA9 g1EAB g1EAF g1EB1 g1EB5 g1EB3); c_diacComb_vN = (g0302_acutecomb_vN, g0302_gravecomb_vN, g0302_hookabovecomb_vN, g0302_tildecomb_vN, g0306_acutecomb_vN, g0306_gravecomb_vN, g0306_hookabovecomb_vN, g0306_tildecomb_vN); cTopSerifOpenO = (g0254_topSerif, g1D53_topSerif, g1D97_topSerif, g0186_topSerif, g1D10_topSerif); cno_TopSerifOpenO = (g0254, g1D53, g1D97, g0186, g1D10); cTopSerifJStroke = (g0284_topSerif); cno_TopSerifJStroke = (g0284); #line 233 endtable; #line 63 "CharisFeatures.gdh" table(feature) supernum { id = "tone"; name.1033 = string("Tone numbers"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 70 } hide_tone_staff { id = "tstv"; name.1033 = string("Hide tone contour staves"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 76 } pitch9 { id = "pit9"; name.1033 = string("9-level pitches"); default = 0; settings { ligated { value = 0; name.1033 = string("Ligated"); } tramlines { value = 1; name.x409 = string("Show tramlines"); } nonLigated { value = 2; name.1033 = string("Non-ligated"); } tramNonLigated { value = 3; name.1033 = string("Show tramlines, non-ligated"); } } } viet { id = "viet"; name.x409 = string("Vietnamese-style diacritics"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 106 } rom { id = "romn"; name.1033 = string("Romanian-style diacritics"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 112 } chinantec_tone { id = "chtn"; name.1033 = string("Chinantec tones"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 118 } bridging_diac { id = "brig"; name.1033 = string("Bridging diacritics"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 124 } barred_bowl { id = "bowl"; name.1033 = string("Barred-bowl forms"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 130 } literacy { id = "litr"; name.1033 = string("Literacy alternates"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 138 } slant_italic { id = "ital"; name.1033 = string("Slant italic specials"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 145 } eng { id = "Engs"; name.1033 = string("Uppercase Eng alternates"); default = descender; settings { descender { value = 0; name.1033 = string("Large eng with descender"); } base { value = 1; name.1033 = string("Large eng on baseline"); } short { value = 3; name.1033 = string("Large eng with short stem"); } capital { value = 2; name.1033 = string("Capital N with tail"); } } } ramshorn { id = "ramh"; name.1033 = string("Rams horn alternates"); default = small; settings { small { value = 0; name.1033 = string("Small bowl"); } large { value = 1; name.1033 = string("Large bowl"); } gamma { value = 2; name.1033 = string("Small gamma"); } } } ogonek { id = "ogon"; name.1033 = string("Ogonek alternate"); default = ipa; settings { ipa { value = 0; name.1033 = string("Curved"); } americanist { value = 1; name.1033 = string("Straight"); } } } h_stroke { id = "Hstk"; name.1033 = string("Capital H-stroke alternate"); default = horizontal; settings { horizontal { value = 0; name.1033 = string("Horizontal stroke"); } vertical { value = 1; name.1033 = string("Vertical stroke"); } } } ltnjstroke { id = "Jstk"; name.1033 = string("J stroke hook alternate"); default = noSerif; settings { noSerif { value = 0; name.1033 = string("No serif"); } topSerif { value = 1; name.1033 = string("Top serif"); } } } n_hook { id = "N_hk"; name.1033 = string("Capital N-left-hook alternate"); default = ucStyle; settings { ucStyle { value = 0; name.1033 = string("Uppercase style"); } lcStyle { value = 1; name.1033 = string("Lowercase style"); } } } open_o { id = "opnO"; name.1033 = string("Open-O alternate"); default = bottomSerif; settings { bottomSerif { value = 0; name.1033 = string("Bottom serif"); } topSerif { value = 1; name.1033 = string("Top serif"); } } } p_hook { id = "p_hk"; name.1033 = string("Small p-hook alternate"); default = left_hook; settings { left_hook { value = 0; name.1033 = string("Left hook"); } right_hook { value = 1; name.1033 = string("Right hook"); } } } r_tail { id = "R_tl"; name.1033 = string("Capital R-tail alternate"); default = UCstyle; settings { UCstyle { value = 0; name.1033 = string("Uppercase style"); } LCstyle { value = 1; name.1033 = string("Lowercase style"); } } } t_hook { id = "t_hk"; name.1033 = string("Capital T-hook alternate"); default = left_hook; settings { left_hook { value = 0; name.1033 = string("Left hook"); } right_hook { value = 1; name.1033 = string("Right hook"); } } } v_hook { id = "v_hk"; name.1033 = string("Small v-hook alternate"); default = curved; settings { curved { value = 0; name.1033 = string("Curved"); } straight { value = 1; name.1033 = string("Straight"); } } } y_hook { id = "Y_hk"; name.1033 = string("Capital Y-hook alternate"); default = right_hook; settings { left_hook { value = 0; name.1033 = string("Left hook"); } right_hook { value = 1; name.1033 = string("Right hook"); } } } ezh_curl { id = "ezhc"; name.1033 = string("Small ezh-curl alternate"); default = small; settings { small { value = 0; name.1033 = string("Small bowl"); } large { value = 1; name.1033 = string("Large bowl"); } } } ezh { id = "Ezhr"; name.1033 = string("Capital Ezh alternates"); default = ipa; settings { ipa { value = 0; name.1033 = string("Normal"); } rev_sigma { value = 1; name.1033 = string("Reversed sigma"); } } } ou { id = "opOU"; name.1033 = string("OU alternates"); default = closed; settings { closed { value = 0; name.1033 = string("Closed"); } open { value = 1; name.1033 = string("Open"); } } } mongol_e { id = "mone"; name.1033 = string("Cyrillic E alternates"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 404 } #line 416 apostrophe { id = "apos"; name.1033 = string("Modifier apostrophe alternates"); default = small; settings { small { value = 0; name.1033 = string("Small"); } large { value = 1; name.1033 = string("Large"); } } } #line 451 modlowcolon { id = "coln"; name.1033 = string("Modifier colon alternate"); default = tight; settings { tight { value = 0; name.1033 = string("Tight"); } wide { value = 1; name.1033 = string("Wide"); } } } short_breve { id = "sbrv"; name.1033 = string("Combining breve Cyrillic form"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 471 } cyrillic_shha { id = "shha"; name.1033 = string("Cyrillic shha alternate"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 477 } emptyset { id = "empt"; name.1033 = string("Empty set alternates"); default = circle; settings { circle { value = 0; name.1033 = string("Circle"); } zero { value = 1; name.1033 = string("Zero"); } } } invis { id = "invs"; name.1033 = string("Show invisible characters"); default = ffalse; settings { ffalse { value = 0; name.0x0409 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 499 } select_diac { id = "dsel"; name.1033 = string("Diacritic selection"); default = ftrue; settings { ffalse { value = 0; name.1033 = string("False"); } ftrue { value = 1; name.1033 = string("True"); } } #line 505 } #line 531 endtable; #line 539 table(language) chinantec { languages = ( "chz" ); chinantec_tone = true; }; romanian { languages = ( "ron" ); rom = true; }; vietnamese { languages = ( "vie" ); viet = true; }; bridgeDiacs { languages = ( "tfr", "kxw" ); bridging_diac = true; }; endtable; #line 249 "CharisRules.gdh" table(substitution); pass(1) {MaxBackup = 15; MaxRuleLoop = 30} #line 264 gFE20=d1 gFE21=d2 > g0361:(d1 d2) _ / ^ _ cTakesUDia [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _ ; gFE22=d1 gFE23=d2 > g0360:(d1 d2) _ / ^ _ cTakesUDia [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _ ; if (chinantec_tone == 1) cno_ChinantecTn > cChinantecTn; else cChinantecTn > cno_ChinantecTn; endif; cCedillaBase g0327 > cCedillaComposite:(b d) _ / ^ _=b [ cnHDia [ cnHDia [ cnHDia cnHDia?]?]?]? _=d; cOgonekBase g0328 > cOgonekComposite:(b d) _ / ^ _=b [ cnODia [ cnODia [ cnODia cnODia?]?]?]? _=d; cHornBase g031B > cHornComposite:(b d) _ / _=b [ cnRDia [ cnRDia [ cnRDia cnRDia?]?]?]? _=d; #line 289 if (viet == 1) _ c_aStack_noLit > g_a_sng_story:2 c_diacComb_vN / _ _ {literacy == 1}; g0302 cDiacComb > c_g0302DiacComb$d:(b d) _ / _=b [ cnUDia [ cnUDia [ cnUDia cnUDia?]?]?]? _=d; g0306 cDiacComb > c_g0306DiacComb$d:(b d) _ / _=b [ cnUDia [ cnUDia [ cnUDia cnUDia?]?]?]? _=d; cno_VN > cVN; else cVN > cno_VN; endif; if (bridging_diac) g0308 > g0308_uU / g__l g035F? _ g035F? g__l; g0308 > g0308_uL / g__l g035F? _ g035F? g_l; g0308 > g0308_lL / g_l g035F? _ g035F? g_l; g0311 > g0311_uU / g__o g035F? _ g035F? g__u; g0311 > g0311_uL / g__o g035F? _ g035F? g_u; g0311 > g0311_lL / g_o g035F? _ g035F? g_u; endif; #line 348 if (eng == descender) (cBaselineHook g__eng_u_c_style cKom) > g__eng; endif; if (eng == base) (cno_BaselineHook g__eng_u_c_style cKom) > cBaselineHook; endif; if (eng == capital) (cBaselineHook g__eng cKom) > g__eng_u_c_style; endif; if (eng == short) (cBaselineHook g__eng ) > cKom; endif; if (ramshorn == small) (g0264_lrgBowl g0264_gammaStyle) > g0264; endif; if (ramshorn == large) (g0264 g0264_gammaStyle) > g0264_lrgBowl; endif; if (ramshorn == gamma) (g0264 g0264_lrgBowl) > g0264_gammaStyle; endif if (mongol_e == 1) cno_MongolStyle > cMongolStyle; else cMongolStyle >cno_MongolStyle; endif; #line 397 if (short_breve == 1) cno_CyShortMrkAlt > cCyShortMrkAlt; else cCyShortMrkAlt > cno_CyShortMrkAlt; endif; if (invis == 1) cno_ShowInv > cShowInv; endif; #line 419 if (literacy == 1) cno_SngBowl > cSngBowl; cno_SngStory > cSngStory; g01E5 > g01E5_barBowl_sngBowl; else cSngBowl > cno_SngBowl; cSngStory > cno_SngStory; endif; if (slant_italic == 1) g_f cfLigC2 > g_f_slant_italic cfLigC2_slantItalic / _ _ cDia; g_f cfLigC2 > _ cfLig_slantItalic:(1 2) {component {f1.reference = @1; f2.reference = @2}}; g_f g_f cffLigC3 > g_f_slant_italic g_f_slant_italic cffLigC3_slantItalic / _ _ _ cDia; g_f g_f cffLigC3 > _ _ cffLig_slantItalic:(1 2 3) {component {f1.reference = @1; f2.reference = @2; f3.reference = @3}}; cno_SlantItalic > cSlantItalic; cno_2StorySlantItalic > c2StorySlantItalic; else g_f cfLigC2 > @1 @2 / _ _ cDia; g_f cfLigC2 > _ cfLig:(1 2) {component {f1.reference = @1; f2.reference = @2}}; g_f g_f cffLigC3 > @1 @2 @3 / _ _ _ cDia; g_f g_f cffLigC3 > _ _ cffLig:(1 2 3) {component {f1.reference = @1; f2.reference = @2; f3.reference = @3}}; cSlantItalic > cno_SlantItalic; c2StorySlantItalic > cno_2StorySlantItalic; endif; if (barred_bowl == 1) cno_BarBowl > cBarBowl; else cBarBowl > cno_BarBowl; endif; if (ltnjstroke == topSerif) cno_TopSerifJStroke > cTopSerifJStroke; else cTopSerifJStroke > cno_TopSerifJStroke; endif; if (open_o == topSerif) cno_TopSerifOpenO > cTopSerifOpenO; else cTopSerifOpenO > cno_TopSerifOpenO; endif; if (v_hook == 1) cno_StraightLft > cStraightLft; else cStraightLft > cno_StraightLft; endif; if (y_hook == 1) g01B3 > g01B3_rtHook; else g01B3_rtHook > g01B3; endif; if (n_hook == 1) g019D > g019D_lCStyle; else g019D_lCStyle > g019D; endif; if (ezh_curl == 1) g0293 > g0293_lrgBowl; else g0293_lrgBowl > g0293; endif; if (t_hook == 1) g01AC > g01AC_rtHook; else g01AC_rtHook > g01AC; endif; if (h_stroke == 1) cno_VertStrk > cVertStrk; else cVertStrk > cno_VertStrk; endif; if (r_tail == 1) g2C64 > g2C64_lCStyle; else g2C64_lCStyle > g2C64; endif; if (p_hook == 1) cno_BowlHook > cBowlHook; else cBowlHook > cno_BowlHook; endif; if (rom == 1) cno_CommaStyle > cCommaStyle; else cCommaStyle > cno_CommaStyle; endif; if (ezh == 1) cno_RevSigmaStyle > cRevSigmaStyle; else cRevSigmaStyle > cno_RevSigmaStyle; endif; if (apostrophe == 1) cno_Lrg > cLrg; else cLrg > cno_Lrg; endif; if (ou == 1) cno_OpenTop > cOpenTop; else cOpenTop > cno_OpenTop; endif; if (emptyset == 1) cno_SlashZero > cSlashZero; else cSlashZero > cno_SlashZero; endif; if (modlowcolon == wide) gF1E9 > gF1E9_wide; else gF1E9_wide > gF1E9; endif; #line 574 if (cyrillic_shha == 1) g04BB > g04BB_uCStyle; else g04BB_uCStyle > g04BB; endif; endpass; pass(2) {MaxBackup = 15; MaxRuleLoop = 30} cno_Dotless > cDotless / _ [ cnUDia [ cnUDia [ cnUDia cnUDia?]?]?]? cUDia; cSpecialDotted _ > g_i_dotless cSpecialDottedDia$1:1 / _ _ [ cnUDia [ cnUDia [ cnUDia cnUDia?]?]?]? cUDia; if (ogonek == americanist) cno_RetroHookStyle > cRetroHookStyle; else cRetroHookStyle > cno_RetroHookStyle; endif; #line 618 cno_Sup > cSup / (cModSuper cModSub) _; endpass; endtable; #line 47 "CharisPitches.gdh" table(glyph) gRightStaff1 = postscript("uni02E9.rstaff") {tone = 1}; gRightStaff2 = postscript("uni02E8.rstaff") {tone = 2}; gRightStaff3 = postscript("uni02E7.rstaff") {tone = 3}; gRightStaff4 = postscript("uni02E6.rstaff") {tone = 4}; gRightStaff5 = postscript("uni02E5.rstaff") {tone = 5}; gRightStaff1_no = postscript("uni02E9.rstaffno") {tone = 1}; gRightStaff2_no = postscript("uni02E8.rstaffno") {tone = 2}; gRightStaff3_no = postscript("uni02E7.rstaffno") {tone = 3}; gRightStaff4_no = postscript("uni02E6.rstaffno") {tone = 4}; gRightStaff5_no = postscript("uni02E5.rstaffno") {tone = 5}; gRightTone1 = postscript("uni02E9") {tone = 1}; gRightTone11 = postscript("uni02E9.1") {tone = 1}; gRightTone12 = postscript("uni02E9.2") {tone = 1}; gRightTone13 = postscript("uni02E9.3") {tone = 1}; gRightTone14 = postscript("uni02E9.4") {tone = 1}; gRightTone15 = postscript("uni02E9.5") {tone = 1}; gRightTone2 = postscript("uni02E8") {tone = 2}; gRightTone21 = postscript("uni02E8.1") {tone = 2}; gRightTone22 = postscript("uni02E8.2") {tone = 2}; gRightTone23 = postscript("uni02E8.3") {tone = 2}; gRightTone24 = postscript("uni02E8.4") {tone = 2}; gRightTone25 = postscript("uni02E8.5") {tone = 2}; gRightTone3 = postscript("uni02E7") {tone = 3}; gRightTone31 = postscript("uni02E7.1") {tone = 3}; gRightTone32 = postscript("uni02E7.2") {tone = 3}; gRightTone33 = postscript("uni02E7.3") {tone = 3}; gRightTone34 = postscript("uni02E7.4") {tone = 3}; gRightTone35 = postscript("uni02E7.5") {tone = 3}; gRightTone4 = postscript("uni02E6") {tone = 4}; gRightTone41 = postscript("uni02E6.1") {tone = 4}; gRightTone42 = postscript("uni02E6.2") {tone = 4}; gRightTone43 = postscript("uni02E6.3") {tone = 4}; gRightTone44 = postscript("uni02E6.4") {tone = 4}; gRightTone45 = postscript("uni02E6.5") {tone = 4}; gRightTone5 = postscript("uni02E5") {tone = 5}; gRightTone51 = postscript("uni02E5.1") {tone = 5}; gRightTone52 = postscript("uni02E5.2") {tone = 5}; gRightTone53 = postscript("uni02E5.3") {tone = 5}; gRightTone54 = postscript("uni02E5.4") {tone = 5}; gRightTone55 = postscript("uni02E5.5") {tone = 5}; gLeftStaff1 = postscript("uniA716.lstaff") {tone = 1}; gLeftStaff2 = postscript("uniA715.lstaff") {tone = 2}; gLeftStaff3 = postscript("uniA714.lstaff") {tone = 3}; gLeftStaff4 = postscript("uniA713.lstaff") {tone = 4}; gLeftStaff5 = postscript("uniA712.lstaff") {tone = 5}; gLeftStaff1_no = postscript("uniA716.lstaffno") {tone = 1}; gLeftStaff2_no = postscript("uniA715.lstaffno") {tone = 2}; gLeftStaff3_no = postscript("uniA714.lstaffno") {tone = 3}; gLeftStaff4_no = postscript("uniA713.lstaffno") {tone = 4}; gLeftStaff5_no = postscript("uniA712.lstaffno") {tone = 5}; #line 113 gLeftTone1 = U+A716 {tone = 1}; gLeftTone2 = U+A715 {tone = 2}; gLeftTone3 = U+A714 {tone = 3}; gLeftTone4 = U+A713 {tone = 4}; gLeftTone5 = U+A712 {tone = 5}; gLeftTone11 = postscript("uniA716.1") {tone = 1}; gLeftTone12 = postscript("uniA715.1") {tone = 1}; gLeftTone13 = postscript("uniA714.1") {tone = 1}; gLeftTone14 = postscript("uniA713.1") {tone = 1}; gLeftTone15 = postscript("uniA712.1") {tone = 1}; gLeftTone21 = postscript("uniA716.2") {tone = 2}; gLeftTone22 = postscript("uniA715.2") {tone = 2}; gLeftTone23 = postscript("uniA714.2") {tone = 2}; gLeftTone24 = postscript("uniA713.2") {tone = 2}; gLeftTone25 = postscript("uniA712.2") {tone = 2}; gLeftTone31 = postscript("uniA716.3") {tone = 3}; gLeftTone32 = postscript("uniA715.3") {tone = 3}; gLeftTone33 = postscript("uniA714.3") {tone = 3}; gLeftTone34 = postscript("uniA713.3") {tone = 3}; gLeftTone35 = postscript("uniA712.3") {tone = 3}; gLeftTone41 = postscript("uniA716.4") {tone = 4}; gLeftTone42 = postscript("uniA715.4") {tone = 4}; gLeftTone43 = postscript("uniA714.4") {tone = 4}; gLeftTone44 = postscript("uniA713.4") {tone = 4}; gLeftTone45 = postscript("uniA712.4") {tone = 4}; gLeftTone51 = postscript("uniA716.5") {tone = 5}; gLeftTone52 = postscript("uniA715.5") {tone = 5}; gLeftTone53 = postscript("uniA714.5") {tone = 5}; gLeftTone54 = postscript("uniA713.5") {tone = 5}; gLeftTone55 = postscript("uniA712.5") {tone = 5}; cSupNum = (g_onesuperior, g_twosuperior, g_threesuperior, g2074, g2075); cRightTone1 = (gRightTone1, gRightStaff1, gRightStaff1_no); cRightTone2 = (gRightTone2, gRightStaff2, gRightStaff2_no); cRightTone3 = (gRightTone3, gRightStaff3, gRightStaff3_no); cRightTone4 = (gRightTone4, gRightStaff4, gRightStaff4_no); cRightTone5 = (gRightTone5, gRightStaff5, gRightStaff5_no); cRightTone = (gRightTone1, gRightTone2, gRightTone3, gRightTone4, gRightTone5); cRightStaff = (gRightStaff1, gRightStaff2, gRightStaff3, gRightStaff4, gRightStaff5); cRightStaff_no = (gRightStaff1_no,gRightStaff2_no,gRightStaff3_no,gRightStaff4_no,gRightStaff5_no); cRightTone1Contour = (gRightTone11, gRightTone12, gRightTone13, gRightTone14, gRightTone15); cRightTone2Contour = (gRightTone21, gRightTone22, gRightTone23, gRightTone24, gRightTone25); cRightTone3Contour = (gRightTone31, gRightTone32, gRightTone33, gRightTone34, gRightTone35); cRightTone4Contour = (gRightTone41, gRightTone42, gRightTone43, gRightTone44, gRightTone45); cRightTone5Contour = (gRightTone51, gRightTone52, gRightTone53, gRightTone54, gRightTone55); cRightToneHoriz = (gRightTone11, gRightTone22, gRightTone33, gRightTone44, gRightTone55); cRightContour = (cRightTone1Contour, cRightTone2Contour, cRightTone3Contour, cRightTone4Contour, cRightTone5Contour); cRightContourOrStaff = (cRightContour, cRightStaff, cRightStaff_no); cLeftContourOrStaff1 = (gLeftStaff1, gLeftStaff1_no, gLeftTone11, gLeftTone21, gLeftTone31, gLeftTone41, gLeftTone51); cLeftContourOrStaff2 = (gLeftStaff2, gLeftStaff2_no, gLeftTone12, gLeftTone22, gLeftTone32, gLeftTone42, gLeftTone52); cLeftContourOrStaff3 = (gLeftStaff3, gLeftStaff3_no, gLeftTone13, gLeftTone23, gLeftTone33, gLeftTone43, gLeftTone53); cLeftContourOrStaff4 = (gLeftStaff4, gLeftStaff4_no, gLeftTone14, gLeftTone24, gLeftTone34, gLeftTone44, gLeftTone54); cLeftContourOrStaff5 = (gLeftStaff5, gLeftStaff5_no, gLeftTone15, gLeftTone25, gLeftTone35, gLeftTone45, gLeftTone55); cLeftTone = (gLeftTone1, gLeftTone2, gLeftTone3, gLeftTone4, gLeftTone5); cLeftStaff = (gLeftStaff1, gLeftStaff2, gLeftStaff3, gLeftStaff4, gLeftStaff5); cLeftStaff_no = (gLeftStaff1_no,gLeftStaff2_no,gLeftStaff3_no,gLeftStaff4_no,gLeftStaff5_no); cLeftTone1Contour = (gLeftTone11, gLeftTone12, gLeftTone13, gLeftTone14, gLeftTone15); cLeftTone2Contour = (gLeftTone21, gLeftTone22, gLeftTone23, gLeftTone24, gLeftTone25); cLeftTone3Contour = (gLeftTone31, gLeftTone32, gLeftTone33, gLeftTone34, gLeftTone35); cLeftTone4Contour = (gLeftTone41, gLeftTone42, gLeftTone43, gLeftTone44, gLeftTone45); cLeftTone5Contour = (gLeftTone51, gLeftTone52, gLeftTone53, gLeftTone54, gLeftTone55); cLeftToneHoriz = (gLeftTone11, gLeftTone22, gLeftTone33, gLeftTone44, gLeftTone55); cLeftContour = (cLeftTone1Contour, cLeftTone2Contour, cLeftTone3Contour, cLeftTone4Contour, cLeftTone5Contour); cLeftContourOrStaff = (cLeftContour, cLeftStaff, cLeftStaff_no); endtable; table(substitution) pass(1) {MaxBackup = 15; MaxRuleLoop = 30} if (supernum) cRightTone > cSupNum; cLeftTone > cSupNum; #line 226 endif; #line 235 if (!supernum && hide_tone_staff) cRightTone1 cRightTone > cRightTone1Contour$2 cRightStaff_no$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone2 cRightTone > cRightTone2Contour$2 cRightStaff_no$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone3 cRightTone > cRightTone3Contour$2 cRightStaff_no$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone4 cRightTone > cRightTone4Contour$2 cRightStaff_no$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone5 cRightTone > cRightTone5Contour$2 cRightStaff_no$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; endif; if (!supernum && !hide_tone_staff) cRightTone1 cRightTone > cRightTone1Contour$2 cRightStaff$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone2 cRightTone > cRightTone2Contour$2 cRightStaff$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone3 cRightTone > cRightTone3Contour$2 cRightStaff$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone4 cRightTone > cRightTone4Contour$2 cRightStaff$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cRightTone5 cRightTone > cRightTone5Contour$2 cRightStaff$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; endif; if (!supernum && hide_tone_staff) cLeftTone > cLeftStaff_no$1 / ^ _ cLeftTone; endif; if (!supernum && !hide_tone_staff) cLeftTone > cLeftStaff$1 / ^ _ cLeftTone; endif; cLeftContourOrStaff1 cLeftTone > @1 cLeftTone1Contour$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cLeftContourOrStaff2 cLeftTone > @1 cLeftTone2Contour$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cLeftContourOrStaff3 cLeftTone > @1 cLeftTone3Contour$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cLeftContourOrStaff4 cLeftTone > @1 cLeftTone4Contour$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; cLeftContourOrStaff5 cLeftTone > @1 cLeftTone5Contour$2 {user1 = ((@1.tone == @2.tone) && (@1.user1 != 2)) ? 1 : 2} / _ ^ _; endpass; pass(2) {MaxBackup = 15; MaxRuleLoop = 30} _ cRightStaff > cRightToneHoriz$2:2 @2 / _ _ {user1 == 1}; _ cRightStaff_no > cRightToneHoriz$2:2 @2 / _ _ {user1 == 1}; #line 286 cLeftContourOrStaff { user2 = 1 } / _ { user2 == 0 } cLeftContour {user2 == 0}; cLeftContour { user2 = 2 } / ^ cLeftContourOrStaff {user2 == 1} _ {user1 == 1}; cLeftStaff _ > @1 cLeftToneHoriz$1:1 / _ _ cLeftContour {user2 == 2 && user1 == 1}; cLeftStaff_no _ > @1 cLeftToneHoriz$1:1 / _ _ cLeftContour {user2 == 2 && user1 == 1}; endpass; endtable; table(positioning) pass(1) cRightContour {user3 = boundingbox.left; user4 = boundingbox.right} cRightContourOrStaff { attach {to = @1; at = TL; with = TML }; insert = true; } / _ ^ _; cLeftContourOrStaff cLeftContour { attach {to = @1; at = TL; with = TML }; insert = true} / _ ^ _; endpass; endtable; #line 325 table(glyph) g9Pitch1 = postscript("uniF1F1"); g9Pitch2 = postscript("uniF1F2"); g9Pitch3 = postscript("uniF1F3"); g9Pitch4 = postscript("uniF1F4"); g9Pitch5 = postscript("uniF1F5"); g9Pitch6 = postscript("uniF1F6"); g9Pitch7 = postscript("uniF1F7"); g9Pitch8 = postscript("uniF1F8"); g9Pitch9 = postscript("uniF1F9"); g9Pitch11 = pseudo(postscript("uniF1F1")); g9Pitch12 = postscript("uniF1F1F1F2"); g9Pitch13 = postscript("uniF1F1F1F3"); g9Pitch14 = postscript("uniF1F1F1F4"); g9Pitch15 = postscript("uniF1F1F1F5"); g9Pitch16 = postscript("uniF1F1F1F6"); g9Pitch17 = postscript("uniF1F1F1F7"); g9Pitch18 = postscript("uniF1F1F1F8"); g9Pitch19 = postscript("uniF1F1F1F9"); g9Pitch21 = postscript("uniF1F2F1F1"); g9Pitch22 = pseudo(postscript("uniF1F2")); g9Pitch23 = postscript("uniF1F2F1F3"); g9Pitch24 = postscript("uniF1F2F1F4"); g9Pitch25 = postscript("uniF1F2F1F5"); g9Pitch26 = postscript("uniF1F2F1F6"); g9Pitch27 = postscript("uniF1F2F1F7"); g9Pitch28 = postscript("uniF1F2F1F8"); g9Pitch29 = postscript("uniF1F2F1F9"); g9Pitch31 = postscript("uniF1F3F1F1"); g9Pitch32 = postscript("uniF1F3F1F2"); g9Pitch33 = pseudo(postscript("uniF1F3")); g9Pitch34 = postscript("uniF1F3F1F4"); g9Pitch35 = postscript("uniF1F3F1F5"); g9Pitch36 = postscript("uniF1F3F1F6"); g9Pitch37 = postscript("uniF1F3F1F7"); g9Pitch38 = postscript("uniF1F3F1F8"); g9Pitch39 = postscript("uniF1F3F1F9"); g9Pitch41 = postscript("uniF1F4F1F1"); g9Pitch42 = postscript("uniF1F4F1F2"); g9Pitch43 = postscript("uniF1F4F1F3"); g9Pitch44 = pseudo(postscript("uniF1F4")); g9Pitch45 = postscript("uniF1F4F1F5"); g9Pitch46 = postscript("uniF1F4F1F6"); g9Pitch47 = postscript("uniF1F4F1F7"); g9Pitch48 = postscript("uniF1F4F1F8"); g9Pitch49 = postscript("uniF1F4F1F9"); g9Pitch51 = postscript("uniF1F5F1F1"); g9Pitch52 = postscript("uniF1F5F1F2"); g9Pitch53 = postscript("uniF1F5F1F3"); g9Pitch54 = postscript("uniF1F5F1F4"); g9Pitch55 = pseudo(postscript("uniF1F5")); g9Pitch56 = postscript("uniF1F5F1F6"); g9Pitch57 = postscript("uniF1F5F1F7"); g9Pitch58 = postscript("uniF1F5F1F8"); g9Pitch59 = postscript("uniF1F5F1F9"); g9Pitch61 = postscript("uniF1F6F1F1"); g9Pitch62 = postscript("uniF1F6F1F2"); g9Pitch63 = postscript("uniF1F6F1F3"); g9Pitch64 = postscript("uniF1F6F1F4"); g9Pitch65 = postscript("uniF1F6F1F5"); g9Pitch66 = pseudo(postscript("uniF1F6")); g9Pitch67 = postscript("uniF1F6F1F7"); g9Pitch68 = postscript("uniF1F6F1F8"); g9Pitch69 = postscript("uniF1F6F1F9"); g9Pitch71 = postscript("uniF1F7F1F1"); g9Pitch72 = postscript("uniF1F7F1F2"); g9Pitch73 = postscript("uniF1F7F1F3"); g9Pitch74 = postscript("uniF1F7F1F4"); g9Pitch75 = postscript("uniF1F7F1F5"); g9Pitch76 = postscript("uniF1F7F1F6"); g9Pitch77 = pseudo(postscript("uniF1F7")); g9Pitch78 = postscript("uniF1F7F1F8"); g9Pitch79 = postscript("uniF1F7F1F9"); g9Pitch81 = postscript("uniF1F8F1F1"); g9Pitch82 = postscript("uniF1F8F1F2"); g9Pitch83 = postscript("uniF1F8F1F3"); g9Pitch84 = postscript("uniF1F8F1F4"); g9Pitch85 = postscript("uniF1F8F1F5"); g9Pitch86 = postscript("uniF1F8F1F6"); g9Pitch87 = postscript("uniF1F8F1F7"); g9Pitch88 = pseudo(postscript("uniF1F8")); g9Pitch89 = postscript("uniF1F8F1F9"); g9Pitch91 = postscript("uniF1F9F1F1"); g9Pitch92 = postscript("uniF1F9F1F2"); g9Pitch93 = postscript("uniF1F9F1F3"); g9Pitch94 = postscript("uniF1F9F1F4"); g9Pitch95 = postscript("uniF1F9F1F5"); g9Pitch96 = postscript("uniF1F9F1F6"); g9Pitch97 = postscript("uniF1F9F1F7"); g9Pitch98 = postscript("uniF1F9F1F8"); g9Pitch99 = pseudo(postscript("uniF1F9")); c9PitchX = (g9Pitch1 g9Pitch2 g9Pitch3 g9Pitch4 g9Pitch5 g9Pitch6 g9Pitch7 g9Pitch8 g9Pitch9); c9Pitch1X = (g9Pitch11 g9Pitch12 g9Pitch13 g9Pitch14 g9Pitch15 g9Pitch16 g9Pitch17 g9Pitch18 g9Pitch19); c9Pitch2X = (g9Pitch21 g9Pitch22 g9Pitch23 g9Pitch24 g9Pitch25 g9Pitch26 g9Pitch27 g9Pitch28 g9Pitch29); c9Pitch3X = (g9Pitch31 g9Pitch32 g9Pitch33 g9Pitch34 g9Pitch35 g9Pitch36 g9Pitch37 g9Pitch38 g9Pitch39); c9Pitch4X = (g9Pitch41 g9Pitch42 g9Pitch43 g9Pitch44 g9Pitch45 g9Pitch46 g9Pitch47 g9Pitch48 g9Pitch49); c9Pitch5X = (g9Pitch51 g9Pitch52 g9Pitch53 g9Pitch54 g9Pitch55 g9Pitch56 g9Pitch57 g9Pitch58 g9Pitch59); c9Pitch6X = (g9Pitch61 g9Pitch62 g9Pitch63 g9Pitch64 g9Pitch65 g9Pitch66 g9Pitch67 g9Pitch68 g9Pitch69); c9Pitch7X = (g9Pitch71 g9Pitch72 g9Pitch73 g9Pitch74 g9Pitch75 g9Pitch76 g9Pitch77 g9Pitch78 g9Pitch79); c9Pitch8X = (g9Pitch81 g9Pitch82 g9Pitch83 g9Pitch84 g9Pitch85 g9Pitch86 g9Pitch87 g9Pitch88 g9Pitch89); c9Pitch9X = (g9Pitch91 g9Pitch92 g9Pitch93 g9Pitch94 g9Pitch95 g9Pitch96 g9Pitch97 g9Pitch98 g9Pitch99); c9PitchX1 = (g9Pitch11 g9Pitch21 g9Pitch31 g9Pitch41 g9Pitch51 g9Pitch61 g9Pitch71 g9Pitch81 g9Pitch91); c9PitchX2 = (g9Pitch12 g9Pitch22 g9Pitch32 g9Pitch42 g9Pitch52 g9Pitch62 g9Pitch72 g9Pitch82 g9Pitch92); c9PitchX3 = (g9Pitch13 g9Pitch23 g9Pitch33 g9Pitch43 g9Pitch53 g9Pitch63 g9Pitch73 g9Pitch83 g9Pitch93); c9PitchX4 = (g9Pitch14 g9Pitch24 g9Pitch34 g9Pitch44 g9Pitch54 g9Pitch64 g9Pitch74 g9Pitch84 g9Pitch94); c9PitchX5 = (g9Pitch15 g9Pitch25 g9Pitch35 g9Pitch45 g9Pitch55 g9Pitch65 g9Pitch75 g9Pitch85 g9Pitch95); c9PitchX6 = (g9Pitch16 g9Pitch26 g9Pitch36 g9Pitch46 g9Pitch56 g9Pitch66 g9Pitch76 g9Pitch86 g9Pitch96); c9PitchX7 = (g9Pitch17 g9Pitch27 g9Pitch37 g9Pitch47 g9Pitch57 g9Pitch67 g9Pitch77 g9Pitch87 g9Pitch97); c9PitchX8 = (g9Pitch18 g9Pitch28 g9Pitch38 g9Pitch48 g9Pitch58 g9Pitch68 g9Pitch78 g9Pitch88 g9Pitch98); c9PitchX9 = (g9Pitch19 g9Pitch29 g9Pitch39 g9Pitch49 g9Pitch59 g9Pitch69 g9Pitch79 g9Pitch89 g9Pitch99); c9PitchXX = (c9Pitch1X c9Pitch2X c9Pitch3X c9Pitch4X c9Pitch5X c9Pitch6X c9Pitch7X c9Pitch8X c9Pitch9X) { component.p1 = box(0,-descent, advancewidth/2,ascent); component.p2 = box(advancewidth/2,-descent, advancewidth,ascent) }; g9Pitch1_Lines = postscript("uniF1F1.Lines"); g9Pitch2_Lines = postscript("uniF1F2.Lines"); g9Pitch3_Lines = postscript("uniF1F3.Lines"); g9Pitch4_Lines = postscript("uniF1F4.Lines"); g9Pitch5_Lines = postscript("uniF1F5.Lines"); g9Pitch6_Lines = postscript("uniF1F6.Lines"); g9Pitch7_Lines = postscript("uniF1F7.Lines"); g9Pitch8_Lines = postscript("uniF1F8.Lines"); g9Pitch9_Lines = postscript("uniF1F9.Lines"); g9Pitch11_Lines = postscript("uniF1F1.Lines"); g9Pitch12_Lines = postscript("uniF1F1F1F2.Lines"); g9Pitch13_Lines = postscript("uniF1F1F1F3.Lines"); g9Pitch14_Lines = postscript("uniF1F1F1F4.Lines"); g9Pitch15_Lines = postscript("uniF1F1F1F5.Lines"); g9Pitch16_Lines = postscript("uniF1F1F1F6.Lines"); g9Pitch17_Lines = postscript("uniF1F1F1F7.Lines"); g9Pitch18_Lines = postscript("uniF1F1F1F8.Lines"); g9Pitch19_Lines = postscript("uniF1F1F1F9.Lines"); g9Pitch21_Lines = postscript("uniF1F2F1F1.Lines"); g9Pitch22_Lines = postscript("uniF1F2.Lines"); g9Pitch23_Lines = postscript("uniF1F2F1F3.Lines"); g9Pitch24_Lines = postscript("uniF1F2F1F4.Lines"); g9Pitch25_Lines = postscript("uniF1F2F1F5.Lines"); g9Pitch26_Lines = postscript("uniF1F2F1F6.Lines"); g9Pitch27_Lines = postscript("uniF1F2F1F7.Lines"); g9Pitch28_Lines = postscript("uniF1F2F1F8.Lines"); g9Pitch29_Lines = postscript("uniF1F2F1F9.Lines"); g9Pitch31_Lines = postscript("uniF1F3F1F1.Lines"); g9Pitch32_Lines = postscript("uniF1F3F1F2.Lines"); g9Pitch33_Lines = postscript("uniF1F3.Lines"); g9Pitch34_Lines = postscript("uniF1F3F1F4.Lines"); g9Pitch35_Lines = postscript("uniF1F3F1F5.Lines"); g9Pitch36_Lines = postscript("uniF1F3F1F6.Lines"); g9Pitch37_Lines = postscript("uniF1F3F1F7.Lines"); g9Pitch38_Lines = postscript("uniF1F3F1F8.Lines"); g9Pitch39_Lines = postscript("uniF1F3F1F9.Lines"); g9Pitch41_Lines = postscript("uniF1F4F1F1.Lines"); g9Pitch42_Lines = postscript("uniF1F4F1F2.Lines"); g9Pitch43_Lines = postscript("uniF1F4F1F3.Lines"); g9Pitch44_Lines = postscript("uniF1F4.Lines"); g9Pitch45_Lines = postscript("uniF1F4F1F5.Lines"); g9Pitch46_Lines = postscript("uniF1F4F1F6.Lines"); g9Pitch47_Lines = postscript("uniF1F4F1F7.Lines"); g9Pitch48_Lines = postscript("uniF1F4F1F8.Lines"); g9Pitch49_Lines = postscript("uniF1F4F1F9.Lines"); g9Pitch51_Lines = postscript("uniF1F5F1F1.Lines"); g9Pitch52_Lines = postscript("uniF1F5F1F2.Lines"); g9Pitch53_Lines = postscript("uniF1F5F1F3.Lines"); g9Pitch54_Lines = postscript("uniF1F5F1F4.Lines"); g9Pitch55_Lines = postscript("uniF1F5.Lines"); g9Pitch56_Lines = postscript("uniF1F5F1F6.Lines"); g9Pitch57_Lines = postscript("uniF1F5F1F7.Lines"); g9Pitch58_Lines = postscript("uniF1F5F1F8.Lines"); g9Pitch59_Lines = postscript("uniF1F5F1F9.Lines"); g9Pitch61_Lines = postscript("uniF1F6F1F1.Lines"); g9Pitch62_Lines = postscript("uniF1F6F1F2.Lines"); g9Pitch63_Lines = postscript("uniF1F6F1F3.Lines"); g9Pitch64_Lines = postscript("uniF1F6F1F4.Lines"); g9Pitch65_Lines = postscript("uniF1F6F1F5.Lines"); g9Pitch66_Lines = postscript("uniF1F6.Lines"); g9Pitch67_Lines = postscript("uniF1F6F1F7.Lines"); g9Pitch68_Lines = postscript("uniF1F6F1F8.Lines"); g9Pitch69_Lines = postscript("uniF1F6F1F9.Lines"); g9Pitch71_Lines = postscript("uniF1F7F1F1.Lines"); g9Pitch72_Lines = postscript("uniF1F7F1F2.Lines"); g9Pitch73_Lines = postscript("uniF1F7F1F3.Lines"); g9Pitch74_Lines = postscript("uniF1F7F1F4.Lines"); g9Pitch75_Lines = postscript("uniF1F7F1F5.Lines"); g9Pitch76_Lines = postscript("uniF1F7F1F6.Lines"); g9Pitch77_Lines = postscript("uniF1F7.Lines"); g9Pitch78_Lines = postscript("uniF1F7F1F8.Lines"); g9Pitch79_Lines = postscript("uniF1F7F1F9.Lines"); g9Pitch81_Lines = postscript("uniF1F8F1F1.Lines"); g9Pitch82_Lines = postscript("uniF1F8F1F2.Lines"); g9Pitch83_Lines = postscript("uniF1F8F1F3.Lines"); g9Pitch84_Lines = postscript("uniF1F8F1F4.Lines"); g9Pitch85_Lines = postscript("uniF1F8F1F5.Lines"); g9Pitch86_Lines = postscript("uniF1F8F1F6.Lines"); g9Pitch87_Lines = postscript("uniF1F8F1F7.Lines"); g9Pitch88_Lines = postscript("uniF1F8.Lines"); g9Pitch89_Lines = postscript("uniF1F8F1F9.Lines"); g9Pitch91_Lines = postscript("uniF1F9F1F1.Lines"); g9Pitch92_Lines = postscript("uniF1F9F1F2.Lines"); g9Pitch93_Lines = postscript("uniF1F9F1F3.Lines"); g9Pitch94_Lines = postscript("uniF1F9F1F4.Lines"); g9Pitch95_Lines = postscript("uniF1F9F1F5.Lines"); g9Pitch96_Lines = postscript("uniF1F9F1F6.Lines"); g9Pitch97_Lines = postscript("uniF1F9F1F7.Lines"); g9Pitch98_Lines = postscript("uniF1F9F1F8.Lines"); g9Pitch99_Lines = postscript("uniF1F9.Lines"); g_pitchSpace = pseudo(postscript("space")); g_noPitchSpace = pseudo(postscript("space")); cno_LinesXXX = (g_pitchSpace g9Pitch1 g9Pitch2 g9Pitch3 g9Pitch4 g9Pitch5 g9Pitch6 g9Pitch7 g9Pitch8 g9Pitch9 g9Pitch11 g9Pitch12 g9Pitch13 g9Pitch14 g9Pitch15 g9Pitch16 g9Pitch17 g9Pitch18 g9Pitch19 g9Pitch21 g9Pitch22 g9Pitch23 g9Pitch24 g9Pitch25 g9Pitch26 g9Pitch27 g9Pitch28 g9Pitch29 g9Pitch31 g9Pitch32 g9Pitch33 g9Pitch34 g9Pitch35 g9Pitch36 g9Pitch37 g9Pitch38 g9Pitch39 g9Pitch41 g9Pitch42 g9Pitch43 g9Pitch44 g9Pitch45 g9Pitch46 g9Pitch47 g9Pitch48 g9Pitch49 g9Pitch51 g9Pitch52 g9Pitch53 g9Pitch54 g9Pitch55 g9Pitch56 g9Pitch57 g9Pitch58 g9Pitch59 g9Pitch61 g9Pitch62 g9Pitch63 g9Pitch64 g9Pitch65 g9Pitch66 g9Pitch67 g9Pitch68 g9Pitch69 g9Pitch71 g9Pitch72 g9Pitch73 g9Pitch74 g9Pitch75 g9Pitch76 g9Pitch77 g9Pitch78 g9Pitch79 g9Pitch81 g9Pitch82 g9Pitch83 g9Pitch84 g9Pitch85 g9Pitch86 g9Pitch87 g9Pitch88 g9Pitch89 g9Pitch91 g9Pitch92 g9Pitch93 g9Pitch94 g9Pitch95 g9Pitch96 g9Pitch97 g9Pitch98 g9Pitch99); cLinesXXX = (g_space_lines g9Pitch1_Lines g9Pitch2_Lines g9Pitch3_Lines g9Pitch4_Lines g9Pitch5_Lines g9Pitch6_Lines g9Pitch7_Lines g9Pitch8_Lines g9Pitch9_Lines g9Pitch11_Lines g9Pitch12_Lines g9Pitch13_Lines g9Pitch14_Lines g9Pitch15_Lines g9Pitch16_Lines g9Pitch17_Lines g9Pitch18_Lines g9Pitch19_Lines g9Pitch21_Lines g9Pitch22_Lines g9Pitch23_Lines g9Pitch24_Lines g9Pitch25_Lines g9Pitch26_Lines g9Pitch27_Lines g9Pitch28_Lines g9Pitch29_Lines g9Pitch31_Lines g9Pitch32_Lines g9Pitch33_Lines g9Pitch34_Lines g9Pitch35_Lines g9Pitch36_Lines g9Pitch37_Lines g9Pitch38_Lines g9Pitch39_Lines g9Pitch41_Lines g9Pitch42_Lines g9Pitch43_Lines g9Pitch44_Lines g9Pitch45_Lines g9Pitch46_Lines g9Pitch47_Lines g9Pitch48_Lines g9Pitch49_Lines g9Pitch51_Lines g9Pitch52_Lines g9Pitch53_Lines g9Pitch54_Lines g9Pitch55_Lines g9Pitch56_Lines g9Pitch57_Lines g9Pitch58_Lines g9Pitch59_Lines g9Pitch61_Lines g9Pitch62_Lines g9Pitch63_Lines g9Pitch64_Lines g9Pitch65_Lines g9Pitch66_Lines g9Pitch67_Lines g9Pitch68_Lines g9Pitch69_Lines g9Pitch71_Lines g9Pitch72_Lines g9Pitch73_Lines g9Pitch74_Lines g9Pitch75_Lines g9Pitch76_Lines g9Pitch77_Lines g9Pitch78_Lines g9Pitch79_Lines g9Pitch81_Lines g9Pitch82_Lines g9Pitch83_Lines g9Pitch84_Lines g9Pitch85_Lines g9Pitch86_Lines g9Pitch87_Lines g9Pitch88_Lines g9Pitch89_Lines g9Pitch91_Lines g9Pitch92_Lines g9Pitch93_Lines g9Pitch94_Lines g9Pitch95_Lines g9Pitch96_Lines g9Pitch97_Lines g9Pitch98_Lines g9Pitch99_Lines ) { component.p1 = box(0,-descent, advancewidth/2,ascent); component.p2 = box(advancewidth/2,-descent, advancewidth,ascent) }; endtable; table(substitution) {MaxBackup = 15; MaxRuleLoop = 30;} pass(1) if (pitch9 < nonLigated) g_space > g_pitchSpace / (cno_LinesXXX g_pitchSpace) _ (cno_LinesXXX g_space); g_pitchSpace > @1 / _ cno_LinesXXX; (g_space g_pitchSpace) > g_noPitchSpace / ^ g_pitchSpace _ ; g_pitchSpace > g_noPitchSpace; #line 617 (g9Pitch1 c9PitchX1) c9PitchX > @1 {user1 = 1} c9Pitch1X / _ ^ _; (g9Pitch2 c9PitchX2) c9PitchX > @1 {user1 = 1} c9Pitch2X / _ ^ _; (g9Pitch3 c9PitchX3) c9PitchX > @1 {user1 = 1} c9Pitch3X / _ ^ _; (g9Pitch4 c9PitchX4) c9PitchX > @1 {user1 = 1} c9Pitch4X / _ ^ _; (g9Pitch5 c9PitchX5) c9PitchX > @1 {user1 = 1} c9Pitch5X / _ ^ _; (g9Pitch6 c9PitchX6) c9PitchX > @1 {user1 = 1} c9Pitch6X / _ ^ _; (g9Pitch7 c9PitchX7) c9PitchX > @1 {user1 = 1} c9Pitch7X / _ ^ _; (g9Pitch8 c9PitchX8) c9PitchX > @1 {user1 = 1} c9Pitch8X / _ ^ _; (g9Pitch9 c9PitchX9) c9PitchX > @1 {user1 = 1} c9Pitch9X / _ ^ _; endif; endpass; pass(2) if (pitch9 < nonLigated) c9PitchX > @1 {user2 = 1} / ^ _ {user2 == 0 && user1 == 0}; g9Pitch1 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch11? g9Pitch11]? g9Pitch11 ]? g9Pitch11 {user1 == 0} ; g9Pitch2 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch22? g9Pitch22]? g9Pitch22 ]? g9Pitch22 {user1 == 0} ; g9Pitch3 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch33? g9Pitch33]? g9Pitch33 ]? g9Pitch33 {user1 == 0} ; g9Pitch4 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch44? g9Pitch44]? g9Pitch44 ]? g9Pitch44 {user1 == 0} ; g9Pitch5 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch55? g9Pitch55]? g9Pitch55 ]? g9Pitch55 {user1 == 0} ; g9Pitch6 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch66? g9Pitch66]? g9Pitch66 ]? g9Pitch66 {user1 == 0} ; g9Pitch7 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch77? g9Pitch77]? g9Pitch77 ]? g9Pitch77 {user1 == 0} ; g9Pitch8 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch88? g9Pitch88]? g9Pitch88 ]? g9Pitch88 {user1 == 0} ; g9Pitch9 > @1 {user2 = 1} / ^ _ {user2 == 0} [[g9Pitch99? g9Pitch99]? g9Pitch99 ]? g9Pitch99 {user1 == 0} ; c9PitchX c9PitchXX > _ @2:(1 2) {component {p1.reference = @1; p2.reference = @2 }} / _ {user2 != 1} ^ _ ; endif; if (pitch9 == tramlines || pitch9 == tramNonLigated) cno_LinesXXX > cLinesXXX; endif; endpass; endtable; #line 629 "CharisRules.gdh" table(positioning) {MUnits = 1000}; pass(1) if (select_diac) cTakesHDia cHDia {attach {to = @1; at = H; with = HM}; insert = 1; user1 = 1} / ^ _ [ cnHDia [ cnHDia [ cnHDia cnHDia?]?]?]? _{user1 == 0}; cTakesLDia cLDia {attach {to = @1; at = L; with = LM}; insert = 1; user1 = 1} / ^ _ [ cnLDia [ cnLDia [ cnLDia cnLDia?]?]?]? _{user1 == 0}; cTakesODia cODia {attach {to = @1; at = O; with = OM}; insert = 1; user1 = 1} / ^ _ [ cnODia [ cnODia [ cnODia cnODia?]?]?]? _{user1 == 0}; cTakesRDia cRDia {attach {to = @1; at = R; with = RM}; insert = 1; user1 = 1} / ^ _ [ cnRDia [ cnRDia [ cnRDia cnRDia?]?]?]? _{user1 == 0}; cTakesUDia cUDia {attach {to = @1; at = U; with = UM}; insert = 1; user1 = 1} / ^ _ [ cnUDia [ cnUDia [ cnUDia cnUDia?]?]?]? _{user1 == 0}; else cTakesHDia cHDia {attach {to = @1; at = H; with = HM}; user1 = 1} / ^ _ [ cnHDia [ cnHDia [ cnHDia cnHDia?]?]?]? _{user1 == 0}; cTakesLDia cLDia {attach {to = @1; at = L; with = LM}; user1 = 1} / ^ _ [ cnLDia [ cnLDia [ cnLDia cnLDia?]?]?]? _{user1 == 0}; cTakesODia cODia {attach {to = @1; at = O; with = OM}; user1 = 1} / ^ _ [ cnODia [ cnODia [ cnODia cnODia?]?]?]? _{user1 == 0}; cTakesRDia cRDia {attach {to = @1; at = R; with = RM}; user1 = 1} / ^ _ [ cnRDia [ cnRDia [ cnRDia cnRDia?]?]?]? _{user1 == 0}; cTakesUDia cUDia {attach {to = @1; at = U; with = UM}; user1 = 1} / ^ _ [ cnUDia [ cnUDia [ cnUDia cnUDia?]?]?]? _{user1 == 0}; endif; cBridgeDiac {advance.x = 0}; endpass; pass(2) #line 668 cUDblDia {shift.y = max(@B.boundingbox.top.1, @A.boundingbox.top.1) - @D.boundingbox.bottom + 100m ; shift.x = (@A.boundingbox.width.1 - @B.boundingbox.width.1)/2; insert = 1} / cTakesUDia=B [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _=D cTakesUDia=A; cUDblDia {shift.y = @B.boundingbox.top.1 - @D.boundingbox.bottom + 100m ; insert = 1} / cTakesUDia=B [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _=D; cUDblDia {shift.y = @A.boundingbox.top.1 - @D.boundingbox.bottom + 100m ; insert = 1} / [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _=D cTakesUDia=A; endpass; pass(3) g035F {shift.y = min(@B.boundingbox.bottom.1, @A.boundingbox.bottom.1) - @D.boundingbox.top -100m ; shift.x = (@A.boundingbox.width - @B.boundingbox.width)/2; insert = 1} / cTakesLDia=B [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _=D cTakesLDia=A; cLDblDia {shift.y = min(@B.boundingbox.bottom.1, @A.boundingbox.bottom.1) - @D.boundingbox.top -100m ; shift.x = (@A.boundingbox.width.1 - @B.boundingbox.width.1)/2; insert = 1} / cTakesLDia=B [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _=D cTakesLDia=A; cLDblDia {shift.y = @B.boundingbox.bottom.1 - @D.boundingbox.top -100m ; insert = 1} / cTakesLDia=B [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _=D ; cLDblDia {shift.y = @A.boundingbox.bottom.1 - @D.boundingbox.top -100m ; insert = 1} / [ cDia [ cDia [ cDia [ cDia cDia?]?]?]?]? _=D cTakesLDia=A ; endpass; endtable; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/dbg_classes.txt000066400000000000000000000462371411153030700264540ustar00rootroot00000000000000LINEAR (OUTPUT) CLASSES Class #0: c2StorySlantItalic 0: 0x00e2 0x010c 0x010d 0x010f 0x0136 Class #1: c9Pitch1X 0: 0x0a74 0x0915 0x0916 0x0917 0x0918 0x0919 0x091a 0x091b 0x091c Class #2: c9Pitch2X 0: 0x091d 0x0a75 0x091f 0x0920 0x0921 0x0922 0x0923 0x0924 0x0925 Class #3: c9Pitch3X 0: 0x0926 0x0927 0x0a76 0x0929 0x092a 0x092b 0x092c 0x092d 0x092e Class #4: c9Pitch4X 0: 0x092f 0x0930 0x0931 0x0a77 0x0933 0x0934 0x0935 0x0936 0x0937 Class #5: c9Pitch5X 0: 0x0938 0x0939 0x093a 0x093b 0x0a78 0x093d 0x093e 0x093f 0x0940 Class #6: c9Pitch6X 0: 0x0941 0x0942 0x0943 0x0944 0x0945 0x0a79 0x0947 0x0948 0x0949 Class #7: c9Pitch7X 0: 0x094a 0x094b 0x094c 0x094d 0x094e 0x094f 0x0a7a 0x0951 0x0952 Class #8: c9Pitch8X 0: 0x0953 0x0954 0x0955 0x0956 0x0957 0x0958 0x0959 0x0a7b 0x095b Class #9: c9Pitch9X 0: 0x095c 0x095d 0x095e 0x095f 0x0960 0x0961 0x0962 0x0963 0x0a7c Class #10: cBarBowl 0: 0x0173 0x01d5 0x02a7 Class #11: cBaselineHook 0: 0x0424 Class #12: cBowlHook 0: 0x04b5 Class #13: cCedillaComposite 0: 0x02c1 0x02a6 0x039c 0x0385 0x03d1 0x03b3 0x041d 0x0400 0x04f9 0x04df 10: 0x0064 0x006f 0x0529 0x0512 0x0552 0x0536 0x0261 0x0221 Class #14: cChinantecTn 0: 0x076b 0x076c 0x076d 0x0772 Class #15: cCommaStyle 0: 0x0511 0x0528 0x0534 0x0551 Class #16: cCyShortMrkAlt 0: 0x0707 Class #17: cDotless 0: 0x0325 0x0328 0x0329 0x032a 0x032b 0x032c 0x032d 0x032e 0x032f 0x0330 10: 0x0363 0x0365 0x0366 0x0368 0x036a 0x036b Class #18: cHornComposite 0: 0x0499 0x045f 0x05a4 0x0579 Class #19: cKom 0: 0x0427 Class #20: cLeftStaff 0: 0x0789 0x078a 0x078b 0x078c 0x078d Class #21: cLeftStaff_no 0: 0x07c5 0x07c6 0x07c7 0x07c8 0x07c9 Class #22: cLeftTone1Contour 0: 0x07a7 0x07a8 0x07a9 0x07aa 0x07ab Class #23: cLeftTone2Contour 0: 0x07ac 0x07ad 0x07ae 0x07af 0x07b0 Class #24: cLeftTone3Contour 0: 0x07b1 0x07b2 0x07b3 0x07b4 0x07b5 Class #25: cLeftTone4Contour 0: 0x07b6 0x07b7 0x07b8 0x07b9 0x07ba Class #26: cLeftTone5Contour 0: 0x07bb 0x07bc 0x07bd 0x07be 0x07bf Class #27: cLeftToneHoriz 0: 0x07a7 0x07ad 0x07b3 0x07b9 0x07bf Class #28: cLinesXXX 0: 0x0965 0x0966 0x0970 0x097a 0x0984 0x098e 0x0998 0x09a2 0x09ac 0x09b6 10: 0x0966 0x0967 0x0968 0x0969 0x096a 0x096b 0x096c 0x096d 0x096e 0x096f 20: 0x0970 0x0971 0x0972 0x0973 0x0974 0x0975 0x0976 0x0977 0x0978 0x0979 30: 0x097a 0x097b 0x097c 0x097d 0x097e 0x097f 0x0980 0x0981 0x0982 0x0983 40: 0x0984 0x0985 0x0986 0x0987 0x0988 0x0989 0x098a 0x098b 0x098c 0x098d 50: 0x098e 0x098f 0x0990 0x0991 0x0992 0x0993 0x0994 0x0995 0x0996 0x0997 60: 0x0998 0x0999 0x099a 0x099b 0x099c 0x099d 0x099e 0x099f 0x09a0 0x09a1 70: 0x09a2 0x09a3 0x09a4 0x09a5 0x09a6 0x09a7 0x09a8 0x09a9 0x09aa 0x09ab 80: 0x09ac 0x09ad 0x09ae 0x09af 0x09b0 0x09b1 0x09b2 0x09b3 0x09b4 0x09b5 90: 0x09b6 Class #29: cLrg 0: 0x06a3 0x06a5 0x06b1 Class #30: cMongolStyle 0: 0x01b0 0x01c9 Class #31: cOgonekComposite 0: 0x0163 0x0108 0x0263 0x0223 0x059f 0x0574 0x048f 0x044f 0x0490 0x0450 Class #32: cOpenTop 0: 0x046d 0x04a4 0x04a6 0x04a8 Class #33: cRetroHookStyle 0: 0x0109 0x0132 0x0164 0x0224 0x0264 0x0321 0x0350 0x0451 0x0452 0x0491 10: 0x0492 0x0575 0x05a0 0x077a 0x077b Class #34: cRevSigmaStyle 0: 0x0653 0x0654 Class #35: cRightStaff 0: 0x0784 0x0785 0x0786 0x0787 0x0788 Class #36: cRightStaff_no 0: 0x07c0 0x07c1 0x07c2 0x07c3 0x07c4 Class #37: cRightTone1Contour 0: 0x078e 0x078f 0x0790 0x0791 0x0792 Class #38: cRightTone2Contour 0: 0x0793 0x0794 0x0795 0x0796 0x0797 Class #39: cRightTone3Contour 0: 0x0798 0x0799 0x079a 0x079b 0x079c Class #40: cRightTone4Contour 0: 0x079d 0x079e 0x079f 0x07a0 0x07a1 Class #41: cRightTone5Contour 0: 0x07a2 0x07a3 0x07a4 0x07a5 0x07a6 Class #42: cRightToneHoriz 0: 0x078e 0x0794 0x079a 0x07a0 0x07a6 Class #43: cShowInv 0: 0x09ee 0x09ef 0x09f0 0x09f1 0x09f2 0x09f3 0x09f4 0x09f5 0x09f6 0x09f7 10: 0x09f8 0x09f9 0x09fa 0x09fb 0x09fc 0x09fd 0x09fe 0x09ff 0x0a00 0x0a01 20: 0x0a02 0x0a03 0x0a04 0x0a05 0x0a06 0x0a07 0x0a08 0x0a09 0x0a0a 0x0a0b 30: 0x0a0c 0x0a0d 0x0a0e Class #44: cSlantItalic 0: 0x0274 0x027a 0x027c 0x027e 0x0281 0x0284 0x028e 0x0290 0x0292 0x030f 10: 0x0326 0x0327 0x03ab 0x05ac 0x0635 Class #45: cSlashZero 0: 0x045d Class #46: cSngBowl 0: 0x02a9 0x02ac 0x02ad 0x02ae 0x02af 0x02b0 0x02b1 0x02b2 0x02b4 Class #47: cSngStory 0: 0x0112 0x0114 0x0115 0x0116 0x0117 0x0118 0x0119 0x011a 0x011b 0x011c 10: 0x011d 0x011e 0x011f 0x0120 0x0121 0x0122 0x0123 0x0124 0x0125 0x0126 20: 0x0127 0x0128 0x0129 0x012a 0x012b 0x012c 0x012d 0x012e 0x012f 0x0130 30: 0x0131 Class #48: cSpecialDottedDia 0: 0x0715 0x0745 Class #49: cStraightLft 0: 0x05b5 Class #50: cSup 0: 0x0743 Class #51: cSupNum 0: 0x0679 0x067b 0x067e 0x0680 0x0683 Class #52: cTopSerifJStroke 0: 0x036c Class #53: cTopSerifOpenO 0: 0x01a6 0x01a8 0x01aa 0x01c2 0x01c4 Class #54: cVN 0: 0x00ea 0x00ec 0x00ee 0x00f0 0x00f5 0x00f7 0x00f9 0x00fb 0x0145 0x0147 10: 0x0149 0x014b 0x0150 0x0152 0x0154 0x0156 0x020b 0x020d 0x020f 0x0211 20: 0x024b 0x024d 0x024f 0x0251 0x0438 0x043a 0x043c 0x043e 0x0478 0x047a 30: 0x047c 0x047e Class #55: cVertStrk 0: 0x02fd Class #56: c_diacComb_vN 0: 0x06f2 0x06f3 0x06f5 0x06f4 0x0702 0x0703 0x0705 0x0704 Class #57: c_g0302DiacComb 0: 0x06f2 0x06f3 0x06f5 0x06f4 Class #58: c_g0306DiacComb 0: 0x0702 0x0703 0x0705 0x0704 Class #59: cfLig 0: 0x0283 0x0279 0x027b Class #60: cfLigC2_slantItalic 0: 0x0274 0x030f 0x03ab Class #61: cfLig_slantItalic 0: 0x0284 0x027a 0x027c Class #62: cffLig 0: 0x027d 0x0280 Class #63: cffLigC3_slantItalic 0: 0x030f 0x03ab Class #64: cffLig_slantItalic 0: 0x027e 0x0281 Class #65: cno_2StorySlantItalic 0: 0x0044 0x006d 0x0106 0x010e 0x00a0 Class #66: cno_BarBowl 0: 0x0174 0x01d6 0x02a8 Class #67: cno_BowlHook 0: 0x04b4 Class #68: cno_ChinantecTn 0: 0x06e7 0x06c9 0x06da 0x072d Class #69: cno_CommaStyle 0: 0x0512 0x0529 0x0536 0x0552 Class #70: cno_CyShortMrkAlt 0: 0x0701 Class #71: cno_Lrg 0: 0x06a2 0x06a4 0x06b0 Class #72: cno_MongolStyle 0: 0x01ae 0x01c7 Class #73: cno_OpenTop 0: 0x046c 0x04a3 0x04a5 0x04a7 Class #74: cno_RetroHookStyle 0: 0x0108 0x0131 0x0163 0x0223 0x0263 0x0320 0x034f 0x044f 0x0450 0x048f 10: 0x0490 0x0574 0x059f 0x0779 0x00e0 Class #75: cno_RevSigmaStyle 0: 0x0661 0x0662 Class #76: cno_SlantItalic 0: 0x0049 0x0279 0x027b 0x027d 0x0280 0x0283 0x028d 0x028f 0x0291 0x004c 10: 0x00d7 0x0325 0x004f 0x0059 0x005d Class #77: cno_SlashZero 0: 0x045e Class #78: cno_SngBowl 0: 0x004a 0x02a0 0x02a1 0x02a2 0x02a3 0x02a4 0x02a5 0x02a6 0x02a7 Class #79: cno_SngStory 0: 0x0044 0x0069 0x006a 0x00e7 0x006b 0x00e8 0x00e9 0x00eb 0x00ed 0x00ef 10: 0x00f1 0x00f2 0x00f3 0x00f4 0x00f6 0x00f8 0x00fa 0x00fd 0x006d 0x00fe 20: 0x006c 0x0100 0x0101 0x0102 0x006e 0x0103 0x0104 0x0105 0x0106 0x0107 30: 0x0108 Class #80: cno_StraightLft 0: 0x0583 Class #81: cno_TopSerifJStroke 0: 0x036d Class #82: cno_TopSerifOpenO 0: 0x01a5 0x01a7 0x01a9 0x01c1 0x01c3 Class #83: cno_VN 0: 0x00e9 0x00eb 0x00ed 0x00ef 0x00f4 0x00f6 0x00f8 0x00fa 0x0144 0x0146 10: 0x0148 0x014a 0x014f 0x0151 0x0153 0x0155 0x020a 0x020c 0x020e 0x0210 20: 0x024a 0x024c 0x024e 0x0250 0x0437 0x0439 0x043b 0x043d 0x0477 0x0479 30: 0x047b 0x047d Class #84: cno_VertStrk 0: 0x02fc Class #85: g019D 0: 0x041f Class #86: g019D_lCStyle 0: 0x0423 Class #87: g01AC 0: 0x0556 Class #88: g01AC_rtHook 0: 0x0557 Class #89: g01B3 0: 0x0629 Class #90: g01B3_rtHook 0: 0x062a Class #91: g01E5_barBowl_sngBowl 0: 0x02b4 Class #92: g0264 0: 0x05bd Class #93: g0264_gammaStyle 0: 0x05bf Class #94: g0264_lrgBowl 0: 0x05bc Class #95: g0293 0: 0x065b Class #96: g0293_lrgBowl 0: 0x065c Class #97: g0308_lL 0: 0x0741 Class #98: g0308_uL 0: 0x0742 Class #99: g0308_uU 0: 0x0740 Class #100: g0311_lL 0: 0x06fa Class #101: g0311_uL 0: 0x06f9 Class #102: g0311_uU 0: 0x06f8 Class #103: g0360 0: 0x071e Class #104: g0361 0: 0x06fd Class #105: g04BB 0: 0x02e0 Class #106: g04BB_uCStyle 0: 0x02e1 Class #107: g2C64 0: 0x04fb Class #108: g2C64_lCStyle 0: 0x04fc Class #109: gF1E9 0: 0x06a9 Class #110: gF1E9_wide 0: 0x06aa Class #111: g__eng 0: 0x0425 Class #112: g__eng_u_c_style 0: 0x0420 Class #113: g_a_sng_story 0: 0x0112 Class #114: g_f_slant_italic 0: 0x0274 Class #115: g_i_dotless 0: 0x0325 Class #116: g_noPitchSpace 0: 0x0a7e Class #117: g_pitchSpace 0: 0x0a7d Class #118: cno_Sup 0: 0x073f Class #119: g01E5 0: 0x02a8 Class #120: g0308 0: 0x073f Class #121: g0311 0: 0x06f7 Class #122: gFE20 0: 0x06fe Class #123: gFE22 0: 0x071f Class #124: g_f 0: 0x0049 Class #125: g_space 0: 0x0003 INDEXED (INPUT) CLASSES Class #126: *GC0* 0x0420 : 1 0x0424 : 0 0x0427 : 2 Class #127: *GC1* 0x0420 : 1 0x0425 : 0 0x0427 : 2 Class #128: *GC10* 0x0003 : 0 0x0a7d : 1 Class #129: *GC2* 0x0424 : 0 0x0425 : 1 0x0427 : 2 Class #130: *GC3* 0x0424 : 0 0x0425 : 1 Class #131: *GC4* 0x05bc : 0 0x05bf : 1 Class #132: *GC5* 0x05bd : 0 0x05bf : 1 Class #133: *GC6* 0x05bc : 1 0x05bd : 0 Class #134: c2StorySlantItalic 0x00e2 : 0 0x010c : 1 0x010d : 2 0x010f : 3 0x0136 : 4 Class #135: c9PitchX 0x0914 : 0 0x091e : 1 0x0928 : 2 0x0932 : 3 0x093c : 4 0x0946 : 5 0x0950 : 6 0x095a : 7 0x0964 : 8 Class #136: cBarBowl 0x0173 : 0 0x01d5 : 1 0x02a7 : 2 Class #137: cCedillaBase 0x0026 : 10 0x0028 : 16 0x002a : 0 0x002e : 2 0x002f : 4 0x0031 : 6 0x0035 : 8 0x0036 : 12 0x0037 : 14 0x0046 : 11 0x0048 : 17 0x004a : 1 0x004e : 3 0x004f : 5 0x0051 : 7 0x0055 : 9 0x0056 : 13 0x0057 : 15 Class #138: cChinantecTn 0x076b : 0 0x076c : 1 0x076d : 2 0x0772 : 3 Class #139: cCommaStyle 0x0511 : 0 0x0528 : 1 0x0534 : 2 0x0551 : 3 Class #140: cDiacComb 0x06db : 0 0x06e8 : 1 0x0717 : 3 0x0758 : 2 Class #141: cHornBase 0x0032 : 0 0x0038 : 2 0x0052 : 1 0x0058 : 3 Class #142: cLeftStaff 0x0789 : 0 0x078a : 1 0x078b : 2 0x078c : 3 0x078d : 4 Class #143: cLeftStaff_no 0x07c5 : 0 0x07c6 : 1 0x07c7 : 2 0x07c8 : 3 0x07c9 : 4 Class #144: cLeftTone 0x087d : 4 0x0881 : 3 0x0885 : 2 0x0889 : 1 0x088d : 0 Class #145: cLrg 0x06a3 : 0 0x06a5 : 1 0x06b1 : 2 Class #146: cMongolStyle 0x01b0 : 0 0x01c9 : 1 Class #147: cOgonekBase 0x0024 : 0 0x0028 : 2 0x0032 : 6 0x0038 : 4 0x0044 : 1 0x0048 : 3 0x0052 : 7 0x0058 : 5 0x0446 : 9 0x0486 : 8 Class #148: cOpenTop 0x046d : 0 0x04a4 : 1 0x04a6 : 2 0x04a8 : 3 Class #149: cRetroHookStyle 0x0109 : 0 0x0132 : 1 0x0164 : 2 0x0224 : 3 0x0264 : 4 0x0321 : 5 0x0350 : 6 0x0451 : 7 0x0452 : 8 0x0491 : 9 0x0492 : 10 0x0575 : 11 0x05a0 : 12 0x077a : 13 0x077b : 14 Class #150: cRevSigmaStyle 0x0653 : 0 0x0654 : 1 Class #151: cRightStaff 0x0784 : 0 0x0785 : 1 0x0786 : 2 0x0787 : 3 0x0788 : 4 Class #152: cRightStaff_no 0x07c0 : 0 0x07c1 : 1 0x07c2 : 2 0x07c3 : 3 0x07c4 : 4 Class #153: cRightTone 0x07dd : 4 0x07e1 : 3 0x07e5 : 2 0x07e9 : 1 0x07ed : 0 Class #154: cSlantItalic 0x0274 : 0 0x027a : 1 0x027c : 2 0x027e : 3 0x0281 : 4 0x0284 : 5 0x028e : 6 0x0290 : 7 0x0292 : 8 0x030f : 9 0x0326 : 10 0x0327 : 11 0x03ab : 12 0x05ac : 13 0x0635 : 14 Class #155: cSngBowl 0x02a9 : 0 0x02ac : 1 0x02ad : 2 0x02ae : 3 0x02af : 4 0x02b0 : 5 0x02b1 : 6 0x02b2 : 7 0x02b4 : 8 Class #156: cSngStory 0x0112 : 0 0x0114 : 1 0x0115 : 2 0x0116 : 3 0x0117 : 4 0x0118 : 5 0x0119 : 6 0x011a : 7 0x011b : 8 0x011c : 9 0x011d : 10 0x011e : 11 0x011f : 12 0x0120 : 13 0x0121 : 14 0x0122 : 15 0x0123 : 16 0x0124 : 17 0x0125 : 18 0x0126 : 19 0x0127 : 20 0x0128 : 21 0x0129 : 22 0x012a : 23 0x012b : 24 0x012c : 25 0x012d : 26 0x012e : 27 0x012f : 28 0x0130 : 29 0x0131 : 30 Class #157: cSpecialDotted 0x031e : 0 0x031f : 1 Class #158: cTopSerifOpenO 0x01a6 : 0 0x01a8 : 1 0x01aa : 2 0x01c2 : 3 0x01c4 : 4 Class #159: cVN 0x00ea : 0 0x00ec : 1 0x00ee : 2 0x00f0 : 3 0x00f5 : 4 0x00f7 : 5 0x00f9 : 6 0x00fb : 7 0x0145 : 8 0x0147 : 9 0x0149 : 10 0x014b : 11 0x0150 : 12 0x0152 : 13 0x0154 : 14 0x0156 : 15 0x020b : 16 0x020d : 17 0x020f : 18 0x0211 : 19 0x024b : 20 0x024d : 21 0x024f : 22 0x0251 : 23 0x0438 : 24 0x043a : 25 0x043c : 26 0x043e : 27 0x0478 : 28 0x047a : 29 0x047c : 30 0x047e : 31 Class #160: c_aStack_noLit 0x00e9 : 0 0x00eb : 1 0x00ed : 3 0x00ef : 2 0x00f4 : 4 0x00f6 : 5 0x00f8 : 6 0x00fa : 7 Class #161: cfLigC2 0x0049 : 0 0x004c : 1 0x004f : 2 Class #162: cffLigC3 0x004c : 0 0x004f : 1 Class #163: cno_2StorySlantItalic 0x0044 : 0 0x006d : 1 0x00a0 : 4 0x0106 : 2 0x010e : 3 Class #164: cno_BarBowl 0x0174 : 0 0x01d6 : 1 0x02a8 : 2 Class #165: cno_ChinantecTn 0x06c9 : 1 0x06da : 2 0x06e7 : 0 0x072d : 3 Class #166: cno_CommaStyle 0x0512 : 0 0x0529 : 1 0x0536 : 2 0x0552 : 3 Class #167: cno_Dotless 0x004c : 0 0x004d : 10 0x0310 : 1 0x0312 : 2 0x0313 : 3 0x031e : 4 0x031f : 5 0x0320 : 6 0x0322 : 7 0x0323 : 8 0x0324 : 9 0x035c : 11 0x035d : 12 0x0360 : 13 0x0361 : 14 0x0362 : 15 Class #168: cno_LinesXXX 0x0914 : 1 0x0915 : 11 0x0916 : 12 0x0917 : 13 0x0918 : 14 0x0919 : 15 0x091a : 16 0x091b : 17 0x091c : 18 0x091d : 19 0x091e : 2 0x091f : 21 0x0920 : 22 0x0921 : 23 0x0922 : 24 0x0923 : 25 0x0924 : 26 0x0925 : 27 0x0926 : 28 0x0927 : 29 0x0928 : 3 0x0929 : 31 0x092a : 32 0x092b : 33 0x092c : 34 0x092d : 35 0x092e : 36 0x092f : 37 0x0930 : 38 0x0931 : 39 0x0932 : 4 0x0933 : 41 0x0934 : 42 0x0935 : 43 0x0936 : 44 0x0937 : 45 0x0938 : 46 0x0939 : 47 0x093a : 48 0x093b : 49 0x093c : 5 0x093d : 51 0x093e : 52 0x093f : 53 0x0940 : 54 0x0941 : 55 0x0942 : 56 0x0943 : 57 0x0944 : 58 0x0945 : 59 0x0946 : 6 0x0947 : 61 0x0948 : 62 0x0949 : 63 0x094a : 64 0x094b : 65 0x094c : 66 0x094d : 67 0x094e : 68 0x094f : 69 0x0950 : 7 0x0951 : 71 0x0952 : 72 0x0953 : 73 0x0954 : 74 0x0955 : 75 0x0956 : 76 0x0957 : 77 0x0958 : 78 0x0959 : 79 0x095a : 8 0x095b : 81 0x095c : 82 0x095d : 83 0x095e : 84 0x095f : 85 0x0960 : 86 0x0961 : 87 0x0962 : 88 0x0963 : 89 0x0964 : 9 0x0a74 : 10 0x0a75 : 20 0x0a76 : 30 0x0a77 : 40 0x0a78 : 50 0x0a79 : 60 0x0a7a : 70 0x0a7b : 80 0x0a7c : 90 0x0a7d : 0 Class #169: cno_Lrg 0x06a2 : 0 0x06a4 : 1 0x06b0 : 2 Class #170: cno_MongolStyle 0x01ae : 0 0x01c7 : 1 Class #171: cno_OpenTop 0x046c : 0 0x04a3 : 1 0x04a5 : 2 0x04a7 : 3 Class #172: cno_RetroHookStyle 0x00e0 : 14 0x0108 : 0 0x0131 : 1 0x0163 : 2 0x0223 : 3 0x0263 : 4 0x0320 : 5 0x034f : 6 0x044f : 7 0x0450 : 8 0x048f : 9 0x0490 : 10 0x0574 : 11 0x059f : 12 0x0779 : 13 Class #173: cno_RevSigmaStyle 0x0661 : 0 0x0662 : 1 Class #174: cno_ShowInv 0x06ce : 0 0x0a0f : 1 0x0a10 : 2 0x0a11 : 3 0x0a12 : 4 0x0a13 : 5 0x0a14 : 6 0x0a15 : 7 0x0a16 : 8 0x0a17 : 9 0x0a18 : 10 0x0a19 : 11 0x0a1a : 12 0x0a1b : 13 0x0a1c : 14 0x0a1d : 15 0x0a1e : 16 0x0a1f : 17 0x0a20 : 18 0x0a21 : 19 0x0a22 : 20 0x0a23 : 21 0x0a24 : 22 0x0a25 : 23 0x0a26 : 24 0x0a27 : 25 0x0a28 : 26 0x0a29 : 27 0x0a2a : 28 0x0a2b : 29 0x0a2c : 30 0x0a2d : 31 0x0a2e : 32 Class #175: cno_SlantItalic 0x0049 : 0 0x004c : 9 0x004f : 12 0x0059 : 13 0x005d : 14 0x00d7 : 10 0x0279 : 1 0x027b : 2 0x027d : 3 0x0280 : 4 0x0283 : 5 0x028d : 6 0x028f : 7 0x0291 : 8 0x0325 : 11 Class #176: cno_SngBowl 0x004a : 0 0x02a0 : 1 0x02a1 : 2 0x02a2 : 3 0x02a3 : 4 0x02a4 : 5 0x02a5 : 6 0x02a6 : 7 0x02a7 : 8 Class #177: cno_SngStory 0x0044 : 0 0x0069 : 1 0x006a : 2 0x006b : 4 0x006c : 20 0x006d : 18 0x006e : 24 0x00e7 : 3 0x00e8 : 5 0x00e9 : 6 0x00eb : 7 0x00ed : 8 0x00ef : 9 0x00f1 : 10 0x00f2 : 11 0x00f3 : 12 0x00f4 : 13 0x00f6 : 14 0x00f8 : 15 0x00fa : 16 0x00fd : 17 0x00fe : 19 0x0100 : 21 0x0101 : 22 0x0102 : 23 0x0103 : 25 0x0104 : 26 0x0105 : 27 0x0106 : 28 0x0107 : 29 0x0108 : 30 Class #178: cno_TopSerifOpenO 0x01a5 : 0 0x01a7 : 1 0x01a9 : 2 0x01c1 : 3 0x01c3 : 4 Class #179: cno_VN 0x00e9 : 0 0x00eb : 1 0x00ed : 2 0x00ef : 3 0x00f4 : 4 0x00f6 : 5 0x00f8 : 6 0x00fa : 7 0x0144 : 8 0x0146 : 9 0x0148 : 10 0x014a : 11 0x014f : 12 0x0151 : 13 0x0153 : 14 0x0155 : 15 0x020a : 16 0x020c : 17 0x020e : 18 0x0210 : 19 0x024a : 20 0x024c : 21 0x024e : 22 0x0250 : 23 0x0437 : 24 0x0439 : 25 0x043b : 26 0x043d : 27 0x0477 : 28 0x0479 : 29 0x047b : 30 0x047d : 31 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/dbg_cmap.txt000066400000000000000000003335311411153030700257330ustar00rootroot00000000000000UNICODE => GLYPH ID MAPPINGS U+00000020 => 3 (0x0003) U+00000021 => 4 (0x0004) U+00000022 => 5 (0x0005) U+00000023 => 6 (0x0006) U+00000024 => 7 (0x0007) U+00000025 => 8 (0x0008) U+00000026 => 9 (0x0009) U+00000027 => 10 (0x000a) U+00000028 => 11 (0x000b) U+00000029 => 12 (0x000c) U+0000002A => 13 (0x000d) U+0000002B => 14 (0x000e) U+0000002C => 15 (0x000f) U+0000002D => 16 (0x0010) U+0000002E => 17 (0x0011) U+0000002F => 18 (0x0012) U+00000030 => 19 (0x0013) U+00000031 => 20 (0x0014) U+00000032 => 21 (0x0015) U+00000033 => 22 (0x0016) U+00000034 => 23 (0x0017) U+00000035 => 24 (0x0018) U+00000036 => 25 (0x0019) U+00000037 => 26 (0x001a) U+00000038 => 27 (0x001b) U+00000039 => 28 (0x001c) U+0000003A => 29 (0x001d) U+0000003B => 30 (0x001e) U+0000003C => 31 (0x001f) U+0000003D => 32 (0x0020) U+0000003E => 33 (0x0021) U+0000003F => 34 (0x0022) U+00000040 => 35 (0x0023) U+00000041 => 36 (0x0024) U+00000042 => 37 (0x0025) U+00000043 => 38 (0x0026) U+00000044 => 39 (0x0027) U+00000045 => 40 (0x0028) U+00000046 => 41 (0x0029) U+00000047 => 42 (0x002a) U+00000048 => 43 (0x002b) U+00000049 => 44 (0x002c) U+0000004A => 45 (0x002d) U+0000004B => 46 (0x002e) U+0000004C => 47 (0x002f) U+0000004D => 48 (0x0030) U+0000004E => 49 (0x0031) U+0000004F => 50 (0x0032) U+00000050 => 51 (0x0033) U+00000051 => 52 (0x0034) U+00000052 => 53 (0x0035) U+00000053 => 54 (0x0036) U+00000054 => 55 (0x0037) U+00000055 => 56 (0x0038) U+00000056 => 57 (0x0039) U+00000057 => 58 (0x003a) U+00000058 => 59 (0x003b) U+00000059 => 60 (0x003c) U+0000005A => 61 (0x003d) U+0000005B => 62 (0x003e) U+0000005C => 63 (0x003f) U+0000005D => 64 (0x0040) U+0000005E => 65 (0x0041) U+0000005F => 66 (0x0042) U+00000060 => 67 (0x0043) U+00000061 => 68 (0x0044) U+00000062 => 69 (0x0045) U+00000063 => 70 (0x0046) U+00000064 => 71 (0x0047) U+00000065 => 72 (0x0048) U+00000066 => 73 (0x0049) U+00000067 => 74 (0x004a) U+00000068 => 75 (0x004b) U+00000069 => 76 (0x004c) U+0000006A => 77 (0x004d) U+0000006B => 78 (0x004e) U+0000006C => 79 (0x004f) U+0000006D => 80 (0x0050) U+0000006E => 81 (0x0051) U+0000006F => 82 (0x0052) U+00000070 => 83 (0x0053) U+00000071 => 84 (0x0054) U+00000072 => 85 (0x0055) U+00000073 => 86 (0x0056) U+00000074 => 87 (0x0057) U+00000075 => 88 (0x0058) U+00000076 => 89 (0x0059) U+00000077 => 90 (0x005a) U+00000078 => 91 (0x005b) U+00000079 => 92 (0x005c) U+0000007A => 93 (0x005d) U+0000007B => 94 (0x005e) U+0000007C => 95 (0x005f) U+0000007D => 96 (0x0060) U+0000007E => 97 (0x0061) U+000000A0 => 172 (0x00ac) U+000000A1 => 163 (0x00a3) U+000000A2 => 132 (0x0084) U+000000A3 => 133 (0x0085) U+000000A4 => 189 (0x00bd) U+000000A5 => 150 (0x0096) U+000000A6 => 1735 (0x06c7) U+000000A7 => 134 (0x0086) U+000000A8 => 142 (0x008e) U+000000A9 => 139 (0x008b) U+000000AA => 157 (0x009d) U+000000AB => 169 (0x00a9) U+000000AC => 164 (0x00a4) U+000000AD => 1742 (0x06ce) U+000000AE => 138 (0x008a) U+000000AF => 218 (0x00da) U+000000B0 => 131 (0x0083) U+000000B1 => 147 (0x0093) U+000000B2 => 1659 (0x067b) U+000000B3 => 1662 (0x067e) U+000000B4 => 141 (0x008d) U+000000B5 => 151 (0x0097) U+000000B6 => 136 (0x0088) U+000000B7 => 195 (0x00c3) U+000000B8 => 222 (0x00de) U+000000B9 => 1657 (0x0679) U+000000BA => 158 (0x009e) U+000000BB => 170 (0x00aa) U+000000BC => 1681 (0x0691) U+000000BD => 1679 (0x068f) U+000000BE => 1687 (0x0697) U+000000BF => 162 (0x00a2) U+000000C0 => 173 (0x00ad) U+000000C1 => 201 (0x00c9) U+000000C2 => 199 (0x00c7) U+000000C3 => 174 (0x00ae) U+000000C4 => 98 (0x0062) U+000000C5 => 99 (0x0063) U+000000C6 => 144 (0x0090) U+000000C7 => 100 (0x0064) U+000000C8 => 203 (0x00cb) U+000000C9 => 101 (0x0065) U+000000CA => 200 (0x00c8) U+000000CB => 202 (0x00ca) U+000000CC => 207 (0x00cf) U+000000CD => 204 (0x00cc) U+000000CE => 205 (0x00cd) U+000000CF => 206 (0x00ce) U+000000D0 => 498 (0x01f2) U+000000D1 => 102 (0x0066) U+000000D2 => 211 (0x00d3) U+000000D3 => 208 (0x00d0) U+000000D4 => 209 (0x00d1) U+000000D5 => 175 (0x00af) U+000000D6 => 103 (0x0067) U+000000D7 => 1831 (0x0727) U+000000D8 => 145 (0x0091) U+000000D9 => 214 (0x00d6) U+000000DA => 212 (0x00d4) U+000000DB => 213 (0x00d5) U+000000DC => 104 (0x0068) U+000000DD => 1567 (0x061f) U+000000DE => 1225 (0x04c9) U+000000DF => 137 (0x0089) U+000000E0 => 106 (0x006a) U+000000E1 => 105 (0x0069) U+000000E2 => 107 (0x006b) U+000000E3 => 109 (0x006d) U+000000E4 => 108 (0x006c) U+000000E5 => 110 (0x006e) U+000000E6 => 160 (0x00a0) U+000000E7 => 111 (0x006f) U+000000E8 => 113 (0x0071) U+000000E9 => 112 (0x0070) U+000000EA => 114 (0x0072) U+000000EB => 115 (0x0073) U+000000EC => 117 (0x0075) U+000000ED => 116 (0x0074) U+000000EE => 118 (0x0076) U+000000EF => 119 (0x0077) U+000000F0 => 487 (0x01e7) U+000000F1 => 120 (0x0078) U+000000F2 => 122 (0x007a) U+000000F3 => 121 (0x0079) U+000000F4 => 123 (0x007b) U+000000F5 => 125 (0x007d) U+000000F6 => 124 (0x007c) U+000000F7 => 184 (0x00b8) U+000000F8 => 161 (0x00a1) U+000000F9 => 127 (0x007f) U+000000FA => 126 (0x007e) U+000000FB => 128 (0x0080) U+000000FC => 129 (0x0081) U+000000FD => 1537 (0x0601) U+000000FE => 1203 (0x04b3) U+000000FF => 186 (0x00ba) U+00000100 => 346 (0x015a) U+00000101 => 254 (0x00fe) U+00000102 => 334 (0x014e) U+00000103 => 242 (0x00f2) U+00000104 => 355 (0x0163) U+00000105 => 264 (0x0108) U+00000106 => 436 (0x01b4) U+00000107 => 409 (0x0199) U+00000108 => 437 (0x01b5) U+00000109 => 410 (0x019a) U+0000010A => 439 (0x01b7) U+0000010B => 412 (0x019c) U+0000010C => 438 (0x01b6) U+0000010D => 411 (0x019b) U+0000010E => 492 (0x01ec) U+0000010F => 467 (0x01d3) U+00000110 => 499 (0x01f3) U+00000111 => 470 (0x01d6) U+00000112 => 600 (0x0258) U+00000113 => 536 (0x0218) U+00000114 => 596 (0x0254) U+00000115 => 532 (0x0214) U+00000116 => 604 (0x025c) U+00000117 => 540 (0x021c) U+00000118 => 611 (0x0263) U+00000119 => 547 (0x0223) U+0000011A => 598 (0x0256) U+0000011B => 534 (0x0216) U+0000011C => 700 (0x02bc) U+0000011D => 673 (0x02a1) U+0000011E => 701 (0x02bd) U+0000011F => 674 (0x02a2) U+00000120 => 704 (0x02c0) U+00000121 => 677 (0x02a5) U+00000122 => 705 (0x02c1) U+00000123 => 678 (0x02a6) U+00000124 => 757 (0x02f5) U+00000125 => 713 (0x02c9) U+00000126 => 764 (0x02fc) U+00000127 => 721 (0x02d1) U+00000128 => 839 (0x0347) U+00000129 => 793 (0x0319) U+0000012A => 840 (0x0348) U+0000012B => 794 (0x031a) U+0000012C => 837 (0x0345) U+0000012D => 791 (0x0317) U+0000012E => 847 (0x034f) U+0000012F => 800 (0x0320) U+00000130 => 843 (0x034b) U+00000131 => 215 (0x00d7) U+00000132 => 852 (0x0354) U+00000133 => 819 (0x0333) U+00000134 => 887 (0x0377) U+00000135 => 862 (0x035e) U+00000136 => 924 (0x039c) U+00000137 => 901 (0x0385) U+00000138 => 906 (0x038a) U+00000139 => 972 (0x03cc) U+0000013A => 942 (0x03ae) U+0000013B => 977 (0x03d1) U+0000013C => 947 (0x03b3) U+0000013D => 979 (0x03d3) U+0000013E => 949 (0x03b5) U+0000013F => 978 (0x03d2) U+00000140 => 948 (0x03b4) U+00000141 => 983 (0x03d7) U+00000142 => 955 (0x03bb) U+00000143 => 1046 (0x0416) U+00000144 => 1017 (0x03f9) U+00000145 => 1053 (0x041d) U+00000146 => 1024 (0x0400) U+00000147 => 1048 (0x0418) U+00000148 => 1019 (0x03fb) U+00000149 => 1025 (0x0401) U+0000014A => 1061 (0x0425) U+0000014B => 1030 (0x0406) U+0000014C => 1158 (0x0486) U+0000014D => 1094 (0x0446) U+0000014E => 1153 (0x0481) U+0000014F => 1089 (0x0441) U+00000150 => 1141 (0x0475) U+00000151 => 1077 (0x0435) U+00000152 => 176 (0x00b0) U+00000153 => 177 (0x00b1) U+00000154 => 1265 (0x04f1) U+00000155 => 1239 (0x04d7) U+00000156 => 1273 (0x04f9) U+00000157 => 1247 (0x04df) U+00000158 => 1268 (0x04f4) U+00000159 => 1242 (0x04da) U+0000015A => 1311 (0x051f) U+0000015B => 1288 (0x0508) U+0000015C => 1313 (0x0521) U+0000015D => 1290 (0x050a) U+0000015E => 1321 (0x0529) U+0000015F => 1298 (0x0512) U+00000160 => 1314 (0x0522) U+00000161 => 1291 (0x050b) U+00000162 => 1362 (0x0552) U+00000163 => 1334 (0x0536) U+00000164 => 1355 (0x054b) U+00000165 => 1333 (0x0535) U+00000166 => 1363 (0x0553) U+00000167 => 1337 (0x0539) U+00000168 => 1425 (0x0591) U+00000169 => 1382 (0x0566) U+0000016A => 1427 (0x0593) U+0000016B => 1384 (0x0568) U+0000016C => 1423 (0x058f) U+0000016D => 1380 (0x0564) U+0000016E => 1433 (0x0599) U+0000016F => 1390 (0x056e) U+00000170 => 1420 (0x058c) U+00000171 => 1377 (0x0561) U+00000172 => 1439 (0x059f) U+00000173 => 1396 (0x0574) U+00000174 => 1504 (0x05e0) U+00000175 => 1491 (0x05d3) U+00000176 => 1569 (0x0621) U+00000177 => 1540 (0x0604) U+00000178 => 187 (0x00bb) U+00000179 => 1608 (0x0648) U+0000017A => 1591 (0x0637) U+0000017B => 1611 (0x064b) U+0000017C => 1594 (0x063a) U+0000017D => 1610 (0x064a) U+0000017E => 1593 (0x0639) U+0000017F => 647 (0x0287) U+00000180 => 372 (0x0174) U+00000181 => 393 (0x0189) U+00000182 => 395 (0x018b) U+00000183 => 376 (0x0178) U+00000184 => 394 (0x018a) U+00000185 => 375 (0x0177) U+00000186 => 449 (0x01c1) U+00000187 => 443 (0x01bb) U+00000188 => 418 (0x01a2) U+00000189 => 500 (0x01f4) U+0000018A => 503 (0x01f7) U+0000018B => 504 (0x01f8) U+0000018C => 477 (0x01dd) U+0000018D => 1107 (0x0453) U+0000018E => 616 (0x0268) U+0000018F => 618 (0x026a) U+00000190 => 621 (0x026d) U+00000191 => 661 (0x0295) U+00000192 => 166 (0x00a6) U+00000193 => 707 (0x02c3) U+00000194 => 1487 (0x05cf) U+00000195 => 730 (0x02da) U+00000196 => 858 (0x035a) U+00000197 => 849 (0x0351) U+00000198 => 925 (0x039d) U+00000199 => 903 (0x0387) U+0000019A => 952 (0x03b8) U+0000019B => 1558 (0x0616) U+0000019C => 1013 (0x03f5) U+0000019D => 1055 (0x041f) U+0000019E => 1035 (0x040b) U+0000019F => 1171 (0x0493) U+000001A0 => 1177 (0x0499) U+000001A1 => 1119 (0x045f) U+000001A2 => 1186 (0x04a2) U+000001A3 => 1131 (0x046b) U+000001A4 => 1222 (0x04c6) U+000001A5 => 1204 (0x04b4) U+000001A6 => 1277 (0x04fd) U+000001A7 => 1322 (0x052a) U+000001A8 => 1304 (0x0518) U+000001A9 => 1618 (0x0652) U+000001AA => 1232 (0x04d0) U+000001AB => 1335 (0x0537) U+000001AC => 1366 (0x0556) U+000001AD => 1340 (0x053c) U+000001AE => 1368 (0x0558) U+000001AF => 1444 (0x05a4) U+000001B0 => 1401 (0x0579) U+000001B1 => 1451 (0x05ab) U+000001B2 => 1450 (0x05aa) U+000001B3 => 1578 (0x062a) U+000001B4 => 1551 (0x060f) U+000001B5 => 1615 (0x064f) U+000001B6 => 1600 (0x0640) U+000001B7 => 1633 (0x0661) U+000001B8 => 1637 (0x0665) U+000001B9 => 1630 (0x065e) U+000001BA => 1629 (0x065d) U+000001BB => 1660 (0x067c) U+000001BC => 1668 (0x0684) U+000001BD => 1669 (0x0685) U+000001BE => 1649 (0x0671) U+000001BF => 1206 (0x04b6) U+000001C0 => 1731 (0x06c3) U+000001C1 => 1732 (0x06c4) U+000001C2 => 1733 (0x06c5) U+000001C3 => 1694 (0x069e) U+000001C4 => 508 (0x01fc) U+000001C5 => 506 (0x01fa) U+000001C6 => 480 (0x01e0) U+000001C7 => 986 (0x03da) U+000001C8 => 985 (0x03d9) U+000001C9 => 961 (0x03c1) U+000001CA => 1065 (0x0429) U+000001CB => 1064 (0x0428) U+000001CC => 1036 (0x040c) U+000001CD => 345 (0x0159) U+000001CE => 253 (0x00fd) U+000001CF => 838 (0x0346) U+000001D0 => 792 (0x0318) U+000001D1 => 1154 (0x0482) U+000001D2 => 1090 (0x0442) U+000001D3 => 1424 (0x0590) U+000001D4 => 1381 (0x0565) U+000001D5 => 1432 (0x0598) U+000001D6 => 1389 (0x056d) U+000001D7 => 1429 (0x0595) U+000001D8 => 1386 (0x056a) U+000001D9 => 1431 (0x0597) U+000001DA => 1388 (0x056c) U+000001DB => 1430 (0x0596) U+000001DC => 1387 (0x056b) U+000001DD => 553 (0x0229) U+000001DE => 348 (0x015c) U+000001DF => 256 (0x0100) U+000001E0 => 350 (0x015e) U+000001E1 => 258 (0x0102) U+000001E2 => 365 (0x016d) U+000001E3 => 314 (0x013a) U+000001E4 => 706 (0x02c2) U+000001E5 => 680 (0x02a8) U+000001E6 => 702 (0x02be) U+000001E7 => 675 (0x02a3) U+000001E8 => 921 (0x0399) U+000001E9 => 898 (0x0382) U+000001EA => 1167 (0x048f) U+000001EB => 1103 (0x044f) U+000001EC => 1168 (0x0490) U+000001ED => 1104 (0x0450) U+000001EE => 1636 (0x0664) U+000001EF => 1624 (0x0658) U+000001F0 => 863 (0x035f) U+000001F1 => 507 (0x01fb) U+000001F2 => 505 (0x01f9) U+000001F3 => 479 (0x01df) U+000001F4 => 699 (0x02bb) U+000001F5 => 672 (0x02a0) U+000001F6 => 767 (0x02ff) U+000001F7 => 1226 (0x04ca) U+000001F8 => 1047 (0x0417) U+000001F9 => 1018 (0x03fa) U+000001FA => 351 (0x015f) U+000001FB => 259 (0x0103) U+000001FC => 364 (0x016c) U+000001FD => 313 (0x0139) U+000001FE => 1176 (0x0498) U+000001FF => 1116 (0x045c) U+00000200 => 323 (0x0143) U+00000201 => 231 (0x00e7) U+00000202 => 333 (0x014d) U+00000203 => 241 (0x00f1) U+00000204 => 585 (0x0249) U+00000205 => 521 (0x0209) U+00000206 => 595 (0x0253) U+00000207 => 531 (0x0213) U+00000208 => 835 (0x0343) U+00000209 => 789 (0x0315) U+0000020A => 836 (0x0344) U+0000020B => 790 (0x0316) U+0000020C => 1142 (0x0476) U+0000020D => 1078 (0x0436) U+0000020E => 1152 (0x0480) U+0000020F => 1088 (0x0440) U+00000210 => 1266 (0x04f2) U+00000211 => 1240 (0x04d8) U+00000212 => 1267 (0x04f3) U+00000213 => 1241 (0x04d9) U+00000214 => 1421 (0x058d) U+00000215 => 1378 (0x0562) U+00000216 => 1422 (0x058e) U+00000217 => 1379 (0x0563) U+00000218 => 1319 (0x0527) U+00000219 => 1296 (0x0510) U+0000021A => 1360 (0x0550) U+0000021B => 1331 (0x0533) U+0000021C => 1638 (0x0666) U+0000021D => 1632 (0x0660) U+0000021E => 758 (0x02f6) U+0000021F => 714 (0x02ca) U+00000220 => 1062 (0x0426) U+00000221 => 476 (0x01dc) U+00000222 => 1187 (0x04a3) U+00000223 => 1132 (0x046c) U+00000224 => 1616 (0x0650) U+00000225 => 1604 (0x0644) U+00000226 => 349 (0x015d) U+00000227 => 257 (0x0101) U+00000228 => 609 (0x0261) U+00000229 => 545 (0x0221) U+0000022A => 1162 (0x048a) U+0000022B => 1098 (0x044a) U+0000022C => 1156 (0x0484) U+0000022D => 1092 (0x0444) U+0000022E => 1163 (0x048b) U+0000022F => 1099 (0x044b) U+00000230 => 1164 (0x048c) U+00000231 => 1100 (0x044c) U+00000232 => 1571 (0x0623) U+00000233 => 1543 (0x0607) U+00000234 => 958 (0x03be) U+00000235 => 1034 (0x040a) U+00000236 => 1342 (0x053e) U+00000237 => 868 (0x0364) U+00000238 => 478 (0x01de) U+00000239 => 1233 (0x04d1) U+0000023A => 357 (0x0165) U+0000023B => 442 (0x01ba) U+0000023C => 416 (0x01a0) U+0000023D => 980 (0x03d4) U+0000023E => 1365 (0x0555) U+0000023F => 1303 (0x0517) U+00000240 => 1606 (0x0646) U+00000241 => 1642 (0x066a) U+00000242 => 1641 (0x0669) U+00000243 => 390 (0x0186) U+00000244 => 1441 (0x05a1) U+00000245 => 1485 (0x05cd) U+00000246 => 613 (0x0265) U+00000247 => 550 (0x0226) U+00000248 => 888 (0x0378) U+00000249 => 864 (0x0360) U+0000024A => 1234 (0x04d2) U+0000024B => 1231 (0x04cf) U+0000024C => 1274 (0x04fa) U+0000024D => 1249 (0x04e1) U+0000024E => 1575 (0x0627) U+0000024F => 1550 (0x060e) U+00000250 => 270 (0x010e) U+00000251 => 273 (0x0111) U+00000252 => 308 (0x0134) U+00000253 => 374 (0x0176) U+00000254 => 421 (0x01a5) U+00000255 => 419 (0x01a3) U+00000256 => 474 (0x01da) U+00000257 => 473 (0x01d9) U+00000258 => 561 (0x0231) U+00000259 => 554 (0x022a) U+0000025A => 560 (0x0230) U+0000025B => 563 (0x0233) U+0000025C => 566 (0x0236) U+0000025D => 569 (0x0239) U+0000025E => 573 (0x023d) U+0000025F => 871 (0x0367) U+00000260 => 693 (0x02b5) U+00000261 => 682 (0x02aa) U+00000262 => 698 (0x02ba) U+00000263 => 1472 (0x05c0) U+00000264 => 1469 (0x05bd) U+00000265 => 732 (0x02dc) U+00000266 => 725 (0x02d5) U+00000267 => 728 (0x02d8) U+00000268 => 803 (0x0323) U+00000269 => 824 (0x0338) U+0000026A => 833 (0x0341) U+0000026B => 954 (0x03ba) U+0000026C => 959 (0x03bf) U+0000026D => 956 (0x03bc) U+0000026E => 964 (0x03c4) U+0000026F => 998 (0x03e6) U+00000270 => 1000 (0x03e8) U+00000271 => 996 (0x03e4) U+00000272 => 1028 (0x0404) U+00000273 => 1032 (0x0408) U+00000274 => 1044 (0x0414) U+00000275 => 1108 (0x0454) U+00000276 => 1184 (0x04a0) U+00000277 => 1499 (0x05db) U+00000278 => 1208 (0x04b8) U+00000279 => 1253 (0x04e5) U+0000027A => 1258 (0x04ea) U+0000027B => 1255 (0x04e7) U+0000027C => 1252 (0x04e4) U+0000027D => 1251 (0x04e3) U+0000027E => 1259 (0x04eb) U+0000027F => 1262 (0x04ee) U+00000280 => 1264 (0x04f0) U+00000281 => 1281 (0x0501) U+00000282 => 1299 (0x0513) U+00000283 => 1305 (0x0519) U+00000284 => 877 (0x036d) U+00000285 => 1261 (0x04ed) U+00000286 => 1309 (0x051d) U+00000287 => 1347 (0x0543) U+00000288 => 1341 (0x053d) U+00000289 => 1399 (0x0577) U+0000028A => 1413 (0x0585) U+0000028B => 1411 (0x0583) U+0000028C => 1466 (0x05ba) U+0000028D => 1498 (0x05da) U+0000028E => 1554 (0x0612) U+0000028F => 1565 (0x061d) U+00000290 => 1597 (0x063d) U+00000291 => 1602 (0x0642) U+00000292 => 1621 (0x0655) U+00000293 => 1627 (0x065b) U+00000294 => 1639 (0x0667) U+00000295 => 1644 (0x066c) U+00000296 => 1648 (0x0670) U+00000297 => 417 (0x01a1) U+00000298 => 1194 (0x04aa) U+00000299 => 386 (0x0182) U+0000029A => 572 (0x023c) U+0000029B => 708 (0x02c4) U+0000029C => 756 (0x02f4) U+0000029D => 865 (0x0361) U+0000029E => 905 (0x0389) U+0000029F => 969 (0x03c9) U+000002A0 => 1230 (0x04ce) U+000002A1 => 1643 (0x066b) U+000002A2 => 1647 (0x066f) U+000002A3 => 481 (0x01e1) U+000002A4 => 483 (0x01e3) U+000002A5 => 482 (0x01e2) U+000002A6 => 1345 (0x0541) U+000002A7 => 1346 (0x0542) U+000002A8 => 1344 (0x0540) U+000002A9 => 646 (0x0286) U+000002AA => 962 (0x03c2) U+000002AB => 963 (0x03c3) U+000002AC => 1497 (0x05d9) U+000002AD => 1911 (0x0777) U+000002AE => 734 (0x02de) U+000002AF => 735 (0x02df) U+000002B0 => 711 (0x02c7) U+000002B1 => 726 (0x02d6) U+000002B2 => 861 (0x035d) U+000002B3 => 1237 (0x04d5) U+000002B4 => 1254 (0x04e6) U+000002B5 => 1256 (0x04e8) U+000002B6 => 1282 (0x0502) U+000002B7 => 1488 (0x05d0) U+000002B8 => 1536 (0x0600) U+000002B9 => 1757 (0x06dd) U+000002BA => 1759 (0x06df) U+000002BB => 1707 (0x06ab) U+000002BC => 1712 (0x06b0) U+000002BD => 1710 (0x06ae) U+000002BE => 1878 (0x0756) U+000002BF => 1874 (0x0752) U+000002C0 => 1640 (0x0668) U+000002C1 => 1645 (0x066d) U+000002C2 => 2524 (0x09dc) U+000002C3 => 2528 (0x09e0) U+000002C4 => 2522 (0x09da) U+000002C5 => 2520 (0x09d8) U+000002C6 => 216 (0x00d8) U+000002C7 => 225 (0x00e1) U+000002C8 => 1737 (0x06c9) U+000002C9 => 1837 (0x072d) U+000002CA => 1754 (0x06da) U+000002CB => 1767 (0x06e7) U+000002CC => 1736 (0x06c8) U+000002CD => 1834 (0x072a) U+000002CE => 1764 (0x06e4) U+000002CF => 1752 (0x06d8) U+000002D0 => 1716 (0x06b4) U+000002D1 => 1717 (0x06b5) U+000002D2 => 1877 (0x0755) U+000002D3 => 1873 (0x0751) U+000002D4 => 1892 (0x0764) U+000002D5 => 1890 (0x0762) U+000002D6 => 1887 (0x075f) U+000002D7 => 1746 (0x06d2) U+000002D8 => 219 (0x00db) U+000002D9 => 220 (0x00dc) U+000002DA => 221 (0x00dd) U+000002DB => 224 (0x00e0) U+000002DC => 217 (0x00d9) U+000002DD => 223 (0x00df) U+000002DE => 1922 (0x0782) U+000002DF => 1829 (0x0725) U+000002E0 => 1473 (0x05c1) U+000002E1 => 941 (0x03ad) U+000002E2 => 1287 (0x0507) U+000002E3 => 1513 (0x05e9) U+000002E4 => 1646 (0x066e) U+000002E5 => 2013 (0x07dd) U+000002E6 => 2017 (0x07e1) U+000002E7 => 2021 (0x07e5) U+000002E8 => 2025 (0x07e9) U+000002E9 => 2029 (0x07ed) U+000002EA => 1896 (0x0768) U+000002EB => 1895 (0x0767) U+000002EC => 1803 (0x070b) U+000002ED => 1848 (0x0738) U+000002EE => 1715 (0x06b3) U+000002EF => 2521 (0x09d9) U+000002F0 => 2523 (0x09db) U+000002F1 => 2527 (0x09df) U+000002F2 => 2531 (0x09e3) U+000002F3 => 1868 (0x074c) U+000002F4 => 1766 (0x06e6) U+000002F5 => 1771 (0x06eb) U+000002F6 => 1760 (0x06e0) U+000002F7 => 1812 (0x0714) U+000002F8 => 1704 (0x06a8) U+000002F9 => 2636 (0x0a4c) U+000002FA => 2638 (0x0a4e) U+000002FB => 2637 (0x0a4d) U+000002FC => 2639 (0x0a4f) U+000002FD => 1910 (0x0776) U+000002FE => 1909 (0x0775) U+000002FF => 2499 (0x09c3) U+00000300 => 1768 (0x06e8) U+00000301 => 1755 (0x06db) U+00000302 => 1777 (0x06f1) U+00000303 => 1815 (0x0717) U+00000304 => 1838 (0x072e) U+00000305 => 1843 (0x0733) U+00000306 => 1793 (0x0701) U+00000307 => 1862 (0x0746) U+00000308 => 1855 (0x073f) U+00000309 => 1880 (0x0758) U+0000030A => 1870 (0x074e) U+0000030B => 1761 (0x06e1) U+0000030C => 1805 (0x070d) U+0000030D => 1882 (0x075a) U+0000030E => 1884 (0x075c) U+0000030F => 1772 (0x06ec) U+00000310 => 1798 (0x0706) U+00000311 => 1783 (0x06f7) U+00000312 => 1708 (0x06ac) U+00000313 => 1865 (0x0749) U+00000314 => 1711 (0x06af) U+00000315 => 1866 (0x074a) U+00000316 => 1765 (0x06e5) U+00000317 => 1753 (0x06d9) U+00000318 => 1893 (0x0765) U+00000319 => 1894 (0x0766) U+0000031A => 1898 (0x076a) U+0000031B => 1867 (0x074b) U+0000031C => 1872 (0x0750) U+0000031D => 1891 (0x0763) U+0000031E => 1889 (0x0761) U+0000031F => 1886 (0x075e) U+00000320 => 1749 (0x06d5) U+00000323 => 1861 (0x0745) U+00000324 => 1854 (0x073e) U+00000325 => 1869 (0x074d) U+00000326 => 1864 (0x0748) U+00000327 => 1912 (0x0778) U+00000328 => 1913 (0x0779) U+00000329 => 1881 (0x0759) U+0000032A => 1917 (0x077d) U+0000032B => 1832 (0x0728) U+0000032C => 1804 (0x070c) U+0000032D => 1775 (0x06ef) U+0000032E => 1792 (0x0700) U+0000032F => 1782 (0x06f6) U+00000330 => 1813 (0x0715) U+00000331 => 1835 (0x072b) U+00000332 => 1842 (0x0732) U+00000333 => 1845 (0x0735) U+00000334 => 1814 (0x0716) U+00000335 => 1750 (0x06d6) U+00000336 => 1751 (0x06d7) U+00000337 => 1738 (0x06ca) U+00000338 => 1739 (0x06cb) U+00000339 => 1876 (0x0754) U+0000033A => 1919 (0x077f) U+0000033B => 1921 (0x0781) U+0000033C => 1833 (0x0729) U+0000033D => 1830 (0x0726) U+0000033E => 1825 (0x0721) U+0000033F => 1847 (0x0737) U+00000346 => 1918 (0x077e) U+00000347 => 1846 (0x0736) U+00000348 => 1883 (0x075b) U+00000349 => 1897 (0x0769) U+0000034A => 1816 (0x0718) U+0000034B => 1821 (0x071d) U+0000034C => 1819 (0x071b) U+0000034D => 2505 (0x09c9) U+0000034E => 2493 (0x09bd) U+0000034F => 2575 (0x0a0f) U+00000350 => 2529 (0x09e1) U+00000351 => 1875 (0x0753) U+00000352 => 1787 (0x06fb) U+00000353 => 1828 (0x0724) U+00000354 => 2526 (0x09de) U+00000355 => 2530 (0x09e2) U+00000356 => 2532 (0x09e4) U+00000357 => 1879 (0x0757) U+00000358 => 1863 (0x0747) U+00000359 => 1827 (0x0723) U+0000035A => 1871 (0x074f) U+0000035B => 1826 (0x0722) U+0000035C => 1801 (0x0709) U+0000035D => 1802 (0x070a) U+0000035E => 1841 (0x0731) U+0000035F => 1840 (0x0730) U+00000360 => 1822 (0x071e) U+00000361 => 1789 (0x06fd) U+00000362 => 2503 (0x09c7) U+00000363 => 230 (0x00e6) U+00000364 => 519 (0x0207) U+00000365 => 788 (0x0314) U+00000366 => 1076 (0x0434) U+00000367 => 1376 (0x0560) U+00000368 => 408 (0x0198) U+00000369 => 461 (0x01cd) U+0000036A => 712 (0x02c8) U+0000036B => 989 (0x03dd) U+0000036C => 1238 (0x04d6) U+0000036D => 1325 (0x052d) U+0000036E => 1456 (0x05b0) U+0000036F => 1514 (0x05ea) U+00000387 => 1718 (0x06b6) U+00000393 => 663 (0x0297) U+00000394 => 511 (0x01ff) U+00000398 => 1174 (0x0496) U+000003A9 => 1193 (0x04a9) U+000003B1 => 317 (0x013d) U+000003B2 => 402 (0x0192) U+000003B3 => 1474 (0x05c2) U+000003B4 => 485 (0x01e5) U+000003B8 => 1112 (0x0458) U+000003BB => 1557 (0x0615) U+000003C0 => 155 (0x009b) U+000003C3 => 1125 (0x0465) U+000003C7 => 1523 (0x05f3) U+00000400 => 584 (0x0248) U+00000401 => 603 (0x025b) U+00000402 => 1373 (0x055d) U+00000403 => 665 (0x0299) U+00000404 => 454 (0x01c6) U+00000405 => 1310 (0x051e) U+00000406 => 828 (0x033c) U+00000407 => 841 (0x0349) U+00000408 => 884 (0x0374) U+00000409 => 892 (0x037c) U+0000040A => 774 (0x0306) U+0000040B => 1372 (0x055c) U+0000040C => 929 (0x03a1) U+0000040D => 1068 (0x042c) U+0000040E => 1581 (0x062d) U+0000040F => 779 (0x030b) U+00000410 => 320 (0x0140) U+00000411 => 396 (0x018c) U+00000412 => 384 (0x0180) U+00000413 => 662 (0x0296) U+00000414 => 895 (0x037f) U+00000415 => 581 (0x0245) U+00000416 => 935 (0x03a7) U+00000417 => 623 (0x026f) U+00000418 => 1067 (0x042b) U+00000419 => 1069 (0x042d) U+0000041A => 928 (0x03a0) U+0000041B => 889 (0x0379) U+0000041C => 1005 (0x03ed) U+0000041D => 753 (0x02f1) U+0000041E => 1138 (0x0472) U+0000041F => 777 (0x0309) U+00000420 => 1214 (0x04be) U+00000421 => 433 (0x01b1) U+00000422 => 1352 (0x0548) U+00000423 => 1579 (0x062b) U+00000424 => 1228 (0x04cc) U+00000425 => 1526 (0x05f6) U+00000426 => 780 (0x030c) U+00000427 => 1584 (0x0630) U+00000428 => 781 (0x030d) U+00000429 => 782 (0x030e) U+0000042A => 399 (0x018f) U+0000042B => 400 (0x0190) U+0000042C => 397 (0x018d) U+0000042D => 455 (0x01c7) U+0000042E => 859 (0x035b) U+0000042F => 1283 (0x0503) U+00000430 => 227 (0x00e3) U+00000431 => 377 (0x0179) U+00000432 => 383 (0x017f) U+00000433 => 649 (0x0289) U+00000434 => 883 (0x0373) U+00000435 => 516 (0x0204) U+00000436 => 914 (0x0392) U+00000437 => 576 (0x0240) U+00000438 => 1037 (0x040d) U+00000439 => 1039 (0x040f) U+0000043A => 907 (0x038b) U+0000043B => 878 (0x036e) U+0000043C => 1003 (0x03eb) U+0000043D => 739 (0x02e3) U+0000043E => 1073 (0x0431) U+0000043F => 746 (0x02ea) U+00000440 => 1195 (0x04ab) U+00000441 => 405 (0x0195) U+00000442 => 1348 (0x0544) U+00000443 => 1535 (0x05ff) U+00000444 => 1210 (0x04ba) U+00000445 => 1510 (0x05e6) U+00000446 => 749 (0x02ed) U+00000447 => 1559 (0x0617) U+00000448 => 750 (0x02ee) U+00000449 => 751 (0x02ef) U+0000044A => 380 (0x017c) U+0000044B => 381 (0x017d) U+0000044C => 378 (0x017a) U+0000044D => 430 (0x01ae) U+0000044E => 827 (0x033b) U+0000044F => 1285 (0x0505) U+00000450 => 520 (0x0208) U+00000451 => 539 (0x021b) U+00000452 => 724 (0x02d4) U+00000453 => 650 (0x028a) U+00000454 => 429 (0x01ad) U+00000455 => 1286 (0x0506) U+00000456 => 784 (0x0310) U+00000457 => 795 (0x031b) U+00000458 => 860 (0x035c) U+00000459 => 880 (0x0370) U+0000045A => 743 (0x02e7) U+0000045B => 722 (0x02d2) U+0000045C => 908 (0x038c) U+0000045D => 1038 (0x040e) U+0000045E => 1541 (0x0605) U+0000045F => 748 (0x02ec) U+00000472 => 1175 (0x0497) U+00000473 => 1114 (0x045a) U+0000048A => 1070 (0x042e) U+0000048B => 1040 (0x0410) U+0000048C => 398 (0x018e) U+0000048D => 379 (0x017b) U+0000048E => 1220 (0x04c4) U+0000048F => 1201 (0x04b1) U+00000490 => 666 (0x029a) U+00000491 => 651 (0x028b) U+00000492 => 668 (0x029c) U+00000493 => 653 (0x028d) U+00000494 => 770 (0x0302) U+00000495 => 738 (0x02e2) U+00000496 => 938 (0x03aa) U+00000497 => 917 (0x0395) U+00000498 => 625 (0x0271) U+00000499 => 578 (0x0242) U+0000049A => 930 (0x03a2) U+0000049B => 909 (0x038d) U+0000049C => 933 (0x03a5) U+0000049D => 912 (0x0390) U+0000049E => 932 (0x03a4) U+0000049F => 911 (0x038f) U+000004A0 => 931 (0x03a3) U+000004A1 => 910 (0x038e) U+000004A2 => 772 (0x0304) U+000004A3 => 741 (0x02e5) U+000004A4 => 771 (0x0303) U+000004A5 => 740 (0x02e4) U+000004A6 => 778 (0x030a) U+000004A7 => 747 (0x02eb) U+000004A8 => 1183 (0x049f) U+000004A9 => 1126 (0x0466) U+000004AA => 441 (0x01b9) U+000004AB => 414 (0x019e) U+000004AC => 1369 (0x0559) U+000004AD => 1349 (0x0545) U+000004AE => 1564 (0x061c) U+000004AF => 1552 (0x0610) U+000004B0 => 1576 (0x0628) U+000004B1 => 1553 (0x0611) U+000004B2 => 1532 (0x05fc) U+000004B3 => 1520 (0x05f0) U+000004B4 => 1371 (0x055b) U+000004B5 => 1351 (0x0547) U+000004B6 => 1587 (0x0633) U+000004B7 => 1562 (0x061a) U+000004B8 => 1586 (0x0632) U+000004B9 => 1561 (0x0619) U+000004BA => 769 (0x0301) U+000004BB => 736 (0x02e0) U+000004BC => 614 (0x0266) U+000004BD => 551 (0x0227) U+000004BE => 615 (0x0267) U+000004BF => 552 (0x0228) U+000004C0 => 829 (0x033d) U+000004C1 => 936 (0x03a8) U+000004C2 => 915 (0x0393) U+000004C3 => 934 (0x03a6) U+000004C4 => 913 (0x0391) U+000004C5 => 891 (0x037b) U+000004C6 => 879 (0x036f) U+000004C7 => 775 (0x0307) U+000004C8 => 744 (0x02e8) U+000004C9 => 773 (0x0305) U+000004CA => 742 (0x02e6) U+000004CB => 1588 (0x0634) U+000004CC => 1563 (0x061b) U+000004CD => 1014 (0x03f6) U+000004CE => 1004 (0x03ec) U+000004CF => 830 (0x033e) U+000004D0 => 344 (0x0158) U+000004D1 => 252 (0x00fc) U+000004D2 => 347 (0x015b) U+000004D3 => 255 (0x00ff) U+000004D4 => 361 (0x0169) U+000004D5 => 311 (0x0137) U+000004D6 => 597 (0x0255) U+000004D7 => 533 (0x0215) U+000004D8 => 619 (0x026b) U+000004D9 => 555 (0x022b) U+000004DA => 620 (0x026c) U+000004DB => 558 (0x022e) U+000004DC => 937 (0x03a9) U+000004DD => 916 (0x0394) U+000004DE => 624 (0x0270) U+000004DF => 577 (0x0241) U+000004E0 => 1634 (0x0662) U+000004E1 => 1622 (0x0656) U+000004E2 => 1072 (0x0430) U+000004E3 => 1041 (0x0411) U+000004E4 => 1071 (0x042f) U+000004E5 => 1042 (0x0412) U+000004E6 => 1161 (0x0489) U+000004E7 => 1097 (0x0449) U+000004E8 => 1172 (0x0494) U+000004E9 => 1109 (0x0455) U+000004EA => 1173 (0x0495) U+000004EB => 1111 (0x0457) U+000004EC => 456 (0x01c8) U+000004ED => 431 (0x01af) U+000004EE => 1582 (0x062e) U+000004EF => 1544 (0x0608) U+000004F0 => 1583 (0x062f) U+000004F1 => 1545 (0x0609) U+000004F2 => 1580 (0x062c) U+000004F3 => 1538 (0x0602) U+000004F4 => 1585 (0x0631) U+000004F5 => 1560 (0x0618) U+000004F6 => 667 (0x029b) U+000004F7 => 652 (0x028c) U+000004F8 => 401 (0x0191) U+000004F9 => 382 (0x017e) U+000004FA => 670 (0x029e) U+000004FB => 657 (0x0291) U+000004FC => 1531 (0x05fb) U+000004FD => 1519 (0x05ef) U+000004FE => 1530 (0x05fa) U+000004FF => 1518 (0x05ee) U+00000500 => 509 (0x01fd) U+00000501 => 458 (0x01ca) U+00000502 => 510 (0x01fe) U+00000503 => 484 (0x01e4) U+00000504 => 627 (0x0273) U+00000505 => 580 (0x0244) U+00000506 => 626 (0x0272) U+00000507 => 579 (0x0243) U+00000508 => 894 (0x037e) U+00000509 => 882 (0x0372) U+0000050A => 776 (0x0308) U+0000050B => 745 (0x02e9) U+0000050C => 710 (0x02c6) U+0000050D => 696 (0x02b8) U+0000050E => 1370 (0x055a) U+0000050F => 1350 (0x0546) U+00000510 => 622 (0x026e) U+00000511 => 575 (0x023f) U+00000512 => 893 (0x037d) U+00000513 => 881 (0x0371) U+00001D00 => 322 (0x0142) U+00001D01 => 363 (0x016b) U+00001D02 => 315 (0x013b) U+00001D03 => 392 (0x0188) U+00001D04 => 435 (0x01b3) U+00001D05 => 491 (0x01eb) U+00001D06 => 501 (0x01f5) U+00001D07 => 583 (0x0247) U+00001D08 => 570 (0x023a) U+00001D09 => 817 (0x0331) U+00001D0A => 886 (0x0376) U+00001D0B => 919 (0x0397) U+00001D0C => 984 (0x03d8) U+00001D0D => 1008 (0x03f0) U+00001D0E => 1057 (0x0421) U+00001D0F => 1140 (0x0474) U+00001D10 => 451 (0x01c3) U+00001D11 => 1127 (0x0467) U+00001D12 => 428 (0x01ac) U+00001D13 => 1128 (0x0468) U+00001D14 => 1130 (0x046a) U+00001D15 => 1191 (0x04a7) U+00001D16 => 1136 (0x0470) U+00001D17 => 1134 (0x046e) U+00001D18 => 1216 (0x04c0) U+00001D19 => 1284 (0x0504) U+00001D1A => 1280 (0x0500) U+00001D1B => 1354 (0x054a) U+00001D1C => 1418 (0x058a) U+00001D1D => 1408 (0x0580) U+00001D1E => 1410 (0x0582) U+00001D1F => 1002 (0x03ea) U+00001D20 => 1478 (0x05c6) U+00001D21 => 1501 (0x05dd) U+00001D22 => 1607 (0x0647) U+00001D23 => 1635 (0x0663) U+00001D24 => 1650 (0x0672) U+00001D25 => 1651 (0x0673) U+00001D26 => 664 (0x0298) U+00001D27 => 1486 (0x05ce) U+00001D28 => 752 (0x02f0) U+00001D29 => 1217 (0x04c1) U+00001D2A => 1229 (0x04cd) U+00001D2B => 890 (0x037a) U+00001D2C => 321 (0x0141) U+00001D2D => 362 (0x016a) U+00001D2E => 385 (0x0181) U+00001D2F => 391 (0x0187) U+00001D30 => 490 (0x01ea) U+00001D31 => 582 (0x0246) U+00001D32 => 617 (0x0269) U+00001D33 => 697 (0x02b9) U+00001D34 => 754 (0x02f2) U+00001D35 => 832 (0x0340) U+00001D36 => 885 (0x0375) U+00001D37 => 918 (0x0396) U+00001D38 => 968 (0x03c8) U+00001D39 => 1007 (0x03ef) U+00001D3A => 1043 (0x0413) U+00001D3B => 1058 (0x0422) U+00001D3C => 1139 (0x0473) U+00001D3D => 1189 (0x04a5) U+00001D3E => 1215 (0x04bf) U+00001D3F => 1263 (0x04ef) U+00001D40 => 1353 (0x0549) U+00001D41 => 1417 (0x0589) U+00001D42 => 1500 (0x05dc) U+00001D43 => 229 (0x00e5) U+00001D44 => 272 (0x0110) U+00001D45 => 275 (0x0113) U+00001D46 => 316 (0x013c) U+00001D47 => 366 (0x016e) U+00001D48 => 460 (0x01cc) U+00001D49 => 518 (0x0206) U+00001D4A => 557 (0x022d) U+00001D4B => 564 (0x0234) U+00001D4C => 571 (0x023b) U+00001D4D => 671 (0x029f) U+00001D4E => 818 (0x0332) U+00001D4F => 896 (0x0380) U+00001D50 => 988 (0x03dc) U+00001D51 => 1031 (0x0407) U+00001D52 => 1075 (0x0433) U+00001D53 => 423 (0x01a7) U+00001D54 => 1137 (0x0471) U+00001D55 => 1135 (0x046f) U+00001D56 => 1196 (0x04ac) U+00001D57 => 1324 (0x052c) U+00001D58 => 1375 (0x055f) U+00001D59 => 1409 (0x0581) U+00001D5A => 999 (0x03e7) U+00001D5B => 1455 (0x05af) U+00001D5C => 1652 (0x0674) U+00001D5D => 404 (0x0194) U+00001D5E => 1476 (0x05c4) U+00001D5F => 486 (0x01e6) U+00001D60 => 1212 (0x04bc) U+00001D61 => 1525 (0x05f5) U+00001D62 => 786 (0x0312) U+00001D63 => 1235 (0x04d3) U+00001D64 => 1374 (0x055e) U+00001D65 => 1454 (0x05ae) U+00001D66 => 403 (0x0193) U+00001D67 => 1475 (0x05c3) U+00001D68 => 1207 (0x04b7) U+00001D69 => 1211 (0x04bb) U+00001D6A => 1524 (0x05f4) U+00001D6B => 1407 (0x057f) U+00001D6C => 373 (0x0175) U+00001D6D => 472 (0x01d8) U+00001D6E => 632 (0x0278) U+00001D6F => 994 (0x03e2) U+00001D70 => 1027 (0x0403) U+00001D71 => 1202 (0x04b2) U+00001D72 => 1250 (0x04e2) U+00001D73 => 1260 (0x04ec) U+00001D74 => 1302 (0x0516) U+00001D75 => 1338 (0x053a) U+00001D76 => 1601 (0x0641) U+00001D77 => 694 (0x02b6) U+00001D78 => 755 (0x02f3) U+00001D79 => 695 (0x02b7) U+00001D7A => 1343 (0x053f) U+00001D7B => 850 (0x0352) U+00001D7C => 826 (0x033a) U+00001D7D => 1200 (0x04b0) U+00001D7E => 1442 (0x05a2) U+00001D7F => 1415 (0x0587) U+00001D80 => 370 (0x0172) U+00001D81 => 468 (0x01d4) U+00001D82 => 631 (0x0277) U+00001D83 => 691 (0x02b3) U+00001D84 => 902 (0x0386) U+00001D85 => 950 (0x03b6) U+00001D86 => 993 (0x03e1) U+00001D87 => 1026 (0x0402) U+00001D88 => 1199 (0x04af) U+00001D89 => 1248 (0x04e0) U+00001D8A => 1301 (0x0515) U+00001D8B => 1308 (0x051c) U+00001D8C => 1459 (0x05b3) U+00001D8D => 1517 (0x05ed) U+00001D8E => 1599 (0x063f) U+00001D8F => 266 (0x010a) U+00001D90 => 307 (0x0133) U+00001D91 => 475 (0x01db) U+00001D92 => 549 (0x0225) U+00001D93 => 565 (0x0235) U+00001D94 => 568 (0x0238) U+00001D95 => 559 (0x022f) U+00001D96 => 802 (0x0322) U+00001D97 => 425 (0x01a9) U+00001D98 => 1307 (0x051b) U+00001D99 => 1398 (0x0576) U+00001D9A => 1625 (0x0659) U+00001D9B => 309 (0x0135) U+00001D9C => 407 (0x0197) U+00001D9D => 420 (0x01a4) U+00001D9E => 488 (0x01e8) U+00001D9F => 567 (0x0237) U+00001DA0 => 629 (0x0275) U+00001DA1 => 873 (0x0369) U+00001DA2 => 683 (0x02ab) U+00001DA3 => 733 (0x02dd) U+00001DA4 => 804 (0x0324) U+00001DA5 => 825 (0x0339) U+00001DA6 => 834 (0x0342) U+00001DA7 => 851 (0x0353) U+00001DA8 => 866 (0x0362) U+00001DA9 => 957 (0x03bd) U+00001DAA => 951 (0x03b7) U+00001DAB => 970 (0x03ca) U+00001DAC => 997 (0x03e5) U+00001DAD => 1001 (0x03e9) U+00001DAE => 1029 (0x0405) U+00001DAF => 1033 (0x0409) U+00001DB0 => 1045 (0x0415) U+00001DB1 => 1110 (0x0456) U+00001DB2 => 1209 (0x04b9) U+00001DB3 => 1300 (0x0514) U+00001DB4 => 1306 (0x051a) U+00001DB5 => 1336 (0x0538) U+00001DB6 => 1400 (0x0578) U+00001DB7 => 1414 (0x0586) U+00001DB8 => 1419 (0x058b) U+00001DB9 => 1412 (0x0584) U+00001DBA => 1467 (0x05bb) U+00001DBB => 1590 (0x0636) U+00001DBC => 1598 (0x063e) U+00001DBD => 1603 (0x0643) U+00001DBE => 1623 (0x0657) U+00001DBF => 1113 (0x0459) U+00001DC2 => 1916 (0x077c) U+00001DC4 => 1807 (0x070f) U+00001DC5 => 1808 (0x0710) U+00001DC6 => 1809 (0x0711) U+00001DC7 => 1806 (0x070e) U+00001DC8 => 1811 (0x0713) U+00001DC9 => 1810 (0x0712) U+00001DCA => 1236 (0x04d4) U+00001DFE => 2525 (0x09dd) U+00001DFF => 2533 (0x09e5) U+00001E00 => 354 (0x0162) U+00001E01 => 263 (0x0107) U+00001E02 => 387 (0x0183) U+00001E03 => 367 (0x016f) U+00001E04 => 389 (0x0185) U+00001E05 => 369 (0x0171) U+00001E06 => 388 (0x0184) U+00001E07 => 368 (0x0170) U+00001E08 => 440 (0x01b8) U+00001E09 => 413 (0x019d) U+00001E0A => 493 (0x01ed) U+00001E0B => 462 (0x01ce) U+00001E0C => 496 (0x01f0) U+00001E0D => 465 (0x01d1) U+00001E0E => 495 (0x01ef) U+00001E0F => 464 (0x01d0) U+00001E10 => 497 (0x01f1) U+00001E11 => 466 (0x01d2) U+00001E12 => 494 (0x01ee) U+00001E13 => 463 (0x01cf) U+00001E14 => 602 (0x025a) U+00001E15 => 538 (0x021a) U+00001E16 => 601 (0x0259) U+00001E17 => 537 (0x0219) U+00001E18 => 606 (0x025e) U+00001E19 => 542 (0x021e) U+00001E1A => 607 (0x025f) U+00001E1B => 543 (0x021f) U+00001E1C => 610 (0x0262) U+00001E1D => 546 (0x0222) U+00001E1E => 659 (0x0293) U+00001E1F => 630 (0x0276) U+00001E20 => 703 (0x02bf) U+00001E21 => 676 (0x02a4) U+00001E22 => 760 (0x02f8) U+00001E23 => 716 (0x02cc) U+00001E24 => 762 (0x02fa) U+00001E25 => 719 (0x02cf) U+00001E26 => 759 (0x02f7) U+00001E27 => 715 (0x02cb) U+00001E28 => 763 (0x02fb) U+00001E29 => 720 (0x02d0) U+00001E2A => 761 (0x02f9) U+00001E2B => 717 (0x02cd) U+00001E2C => 845 (0x034d) U+00001E2D => 798 (0x031e) U+00001E2E => 842 (0x034a) U+00001E2F => 796 (0x031c) U+00001E30 => 920 (0x0398) U+00001E31 => 897 (0x0381) U+00001E32 => 923 (0x039b) U+00001E33 => 900 (0x0384) U+00001E34 => 922 (0x039a) U+00001E35 => 899 (0x0383) U+00001E36 => 975 (0x03cf) U+00001E37 => 945 (0x03b1) U+00001E38 => 976 (0x03d0) U+00001E39 => 946 (0x03b2) U+00001E3A => 974 (0x03ce) U+00001E3B => 944 (0x03b0) U+00001E3C => 973 (0x03cd) U+00001E3D => 943 (0x03af) U+00001E3E => 1009 (0x03f1) U+00001E3F => 990 (0x03de) U+00001E40 => 1010 (0x03f2) U+00001E41 => 991 (0x03df) U+00001E42 => 1011 (0x03f3) U+00001E43 => 992 (0x03e0) U+00001E44 => 1049 (0x0419) U+00001E45 => 1020 (0x03fc) U+00001E46 => 1052 (0x041c) U+00001E47 => 1023 (0x03ff) U+00001E48 => 1051 (0x041b) U+00001E49 => 1022 (0x03fe) U+00001E4A => 1050 (0x041a) U+00001E4B => 1021 (0x03fd) U+00001E4C => 1155 (0x0483) U+00001E4D => 1091 (0x0443) U+00001E4E => 1157 (0x0485) U+00001E4F => 1093 (0x0445) U+00001E50 => 1160 (0x0488) U+00001E51 => 1096 (0x0448) U+00001E52 => 1159 (0x0487) U+00001E53 => 1095 (0x0447) U+00001E54 => 1218 (0x04c2) U+00001E55 => 1197 (0x04ad) U+00001E56 => 1219 (0x04c3) U+00001E57 => 1198 (0x04ae) U+00001E58 => 1269 (0x04f5) U+00001E59 => 1243 (0x04db) U+00001E5A => 1271 (0x04f7) U+00001E5B => 1245 (0x04dd) U+00001E5C => 1272 (0x04f8) U+00001E5D => 1246 (0x04de) U+00001E5E => 1270 (0x04f6) U+00001E5F => 1244 (0x04dc) U+00001E60 => 1316 (0x0524) U+00001E61 => 1293 (0x050d) U+00001E62 => 1317 (0x0525) U+00001E63 => 1294 (0x050e) U+00001E64 => 1312 (0x0520) U+00001E65 => 1289 (0x0509) U+00001E66 => 1315 (0x0523) U+00001E67 => 1292 (0x050c) U+00001E68 => 1318 (0x0526) U+00001E69 => 1295 (0x050f) U+00001E6A => 1356 (0x054c) U+00001E6B => 1327 (0x052f) U+00001E6C => 1359 (0x054f) U+00001E6D => 1330 (0x0532) U+00001E6E => 1358 (0x054e) U+00001E6F => 1329 (0x0531) U+00001E70 => 1357 (0x054d) U+00001E71 => 1328 (0x0530) U+00001E72 => 1437 (0x059d) U+00001E73 => 1394 (0x0572) U+00001E74 => 1436 (0x059c) U+00001E75 => 1393 (0x0571) U+00001E76 => 1435 (0x059b) U+00001E77 => 1392 (0x0570) U+00001E78 => 1426 (0x0592) U+00001E79 => 1383 (0x0567) U+00001E7A => 1428 (0x0594) U+00001E7B => 1385 (0x0569) U+00001E7C => 1479 (0x05c7) U+00001E7D => 1457 (0x05b1) U+00001E7E => 1480 (0x05c8) U+00001E7F => 1458 (0x05b2) U+00001E80 => 1503 (0x05df) U+00001E81 => 1490 (0x05d2) U+00001E82 => 1502 (0x05de) U+00001E83 => 1489 (0x05d1) U+00001E84 => 1505 (0x05e1) U+00001E85 => 1492 (0x05d4) U+00001E86 => 1506 (0x05e2) U+00001E87 => 1493 (0x05d5) U+00001E88 => 1507 (0x05e3) U+00001E89 => 1495 (0x05d7) U+00001E8A => 1529 (0x05f9) U+00001E8B => 1516 (0x05ec) U+00001E8C => 1528 (0x05f8) U+00001E8D => 1515 (0x05eb) U+00001E8E => 1572 (0x0624) U+00001E8F => 1546 (0x060a) U+00001E90 => 1609 (0x0649) U+00001E91 => 1592 (0x0638) U+00001E92 => 1613 (0x064d) U+00001E93 => 1596 (0x063c) U+00001E94 => 1612 (0x064c) U+00001E95 => 1595 (0x063b) U+00001E96 => 718 (0x02ce) U+00001E97 => 1326 (0x052e) U+00001E98 => 1494 (0x05d6) U+00001E99 => 1547 (0x060b) U+00001E9A => 260 (0x0104) U+00001E9B => 648 (0x0288) U+00001EA0 => 353 (0x0161) U+00001EA1 => 262 (0x0106) U+00001EA2 => 352 (0x0160) U+00001EA3 => 261 (0x0105) U+00001EA4 => 324 (0x0144) U+00001EA5 => 233 (0x00e9) U+00001EA6 => 326 (0x0146) U+00001EA7 => 235 (0x00eb) U+00001EA8 => 330 (0x014a) U+00001EA9 => 239 (0x00ef) U+00001EAA => 328 (0x0148) U+00001EAB => 237 (0x00ed) U+00001EAC => 332 (0x014c) U+00001EAD => 232 (0x00e8) U+00001EAE => 335 (0x014f) U+00001EAF => 244 (0x00f4) U+00001EB0 => 337 (0x0151) U+00001EB1 => 246 (0x00f6) U+00001EB2 => 341 (0x0155) U+00001EB3 => 250 (0x00fa) U+00001EB4 => 339 (0x0153) U+00001EB5 => 248 (0x00f8) U+00001EB6 => 343 (0x0157) U+00001EB7 => 243 (0x00f3) U+00001EB8 => 608 (0x0260) U+00001EB9 => 544 (0x0220) U+00001EBA => 605 (0x025d) U+00001EBB => 541 (0x021d) U+00001EBC => 599 (0x0257) U+00001EBD => 535 (0x0217) U+00001EBE => 586 (0x024a) U+00001EBF => 522 (0x020a) U+00001EC0 => 588 (0x024c) U+00001EC1 => 524 (0x020c) U+00001EC2 => 592 (0x0250) U+00001EC3 => 528 (0x0210) U+00001EC4 => 590 (0x024e) U+00001EC5 => 526 (0x020e) U+00001EC6 => 594 (0x0252) U+00001EC7 => 530 (0x0212) U+00001EC8 => 844 (0x034c) U+00001EC9 => 797 (0x031d) U+00001ECA => 846 (0x034e) U+00001ECB => 799 (0x031f) U+00001ECC => 1166 (0x048e) U+00001ECD => 1102 (0x044e) U+00001ECE => 1165 (0x048d) U+00001ECF => 1101 (0x044d) U+00001ED0 => 1143 (0x0477) U+00001ED1 => 1079 (0x0437) U+00001ED2 => 1145 (0x0479) U+00001ED3 => 1081 (0x0439) U+00001ED4 => 1149 (0x047d) U+00001ED5 => 1085 (0x043d) U+00001ED6 => 1147 (0x047b) U+00001ED7 => 1083 (0x043b) U+00001ED8 => 1151 (0x047f) U+00001ED9 => 1087 (0x043f) U+00001EDA => 1178 (0x049a) U+00001EDB => 1120 (0x0460) U+00001EDC => 1179 (0x049b) U+00001EDD => 1121 (0x0461) U+00001EDE => 1181 (0x049d) U+00001EDF => 1123 (0x0463) U+00001EE0 => 1180 (0x049c) U+00001EE1 => 1122 (0x0462) U+00001EE2 => 1182 (0x049e) U+00001EE3 => 1124 (0x0464) U+00001EE4 => 1438 (0x059e) U+00001EE5 => 1395 (0x0573) U+00001EE6 => 1434 (0x059a) U+00001EE7 => 1391 (0x056f) U+00001EE8 => 1445 (0x05a5) U+00001EE9 => 1402 (0x057a) U+00001EEA => 1446 (0x05a6) U+00001EEB => 1403 (0x057b) U+00001EEC => 1448 (0x05a8) U+00001EED => 1405 (0x057d) U+00001EEE => 1447 (0x05a7) U+00001EEF => 1404 (0x057c) U+00001EF0 => 1449 (0x05a9) U+00001EF1 => 1406 (0x057e) U+00001EF2 => 1568 (0x0620) U+00001EF3 => 1539 (0x0603) U+00001EF4 => 1574 (0x0626) U+00001EF5 => 1549 (0x060d) U+00001EF6 => 1573 (0x0625) U+00001EF7 => 1548 (0x060c) U+00001EF8 => 1570 (0x0622) U+00001EF9 => 1542 (0x0606) U+00002000 => 2625 (0x0a41) U+00002001 => 2619 (0x0a3b) U+00002002 => 2626 (0x0a42) U+00002003 => 2620 (0x0a3c) U+00002004 => 2624 (0x0a40) U+00002005 => 2627 (0x0a43) U+00002006 => 2623 (0x0a3f) U+00002007 => 2628 (0x0a44) U+00002008 => 2622 (0x0a3e) U+00002009 => 2629 (0x0a45) U+0000200A => 2630 (0x0a46) U+0000200B => 2606 (0x0a2e) U+0000200C => 2605 (0x0a2d) U+0000200D => 2603 (0x0a2b) U+0000200E => 2580 (0x0a14) U+0000200F => 2584 (0x0a18) U+00002010 => 1740 (0x06cc) U+00002011 => 1741 (0x06cd) U+00002012 => 1743 (0x06cf) U+00002013 => 178 (0x00b2) U+00002014 => 179 (0x00b3) U+00002015 => 1744 (0x06d0) U+00002016 => 1734 (0x06c6) U+00002017 => 1844 (0x0734) U+00002018 => 182 (0x00b6) U+00002019 => 183 (0x00b7) U+0000201A => 196 (0x00c4) U+0000201B => 1709 (0x06ad) U+0000201C => 180 (0x00b4) U+0000201D => 181 (0x00b5) U+0000201E => 197 (0x00c5) U+0000201F => 1714 (0x06b2) U+00002020 => 130 (0x0082) U+00002021 => 194 (0x00c2) U+00002022 => 135 (0x0087) U+00002023 => 2488 (0x09b8) U+00002024 => 1702 (0x06a6) U+00002025 => 1703 (0x06a7) U+00002026 => 171 (0x00ab) U+00002027 => 1719 (0x06b7) U+00002028 => 2614 (0x0a36) U+00002029 => 2618 (0x0a3a) U+0000202A => 2579 (0x0a13) U+0000202B => 2583 (0x0a17) U+0000202C => 2582 (0x0a16) U+0000202D => 2581 (0x0a15) U+0000202E => 2585 (0x0a19) U+0000202F => 2621 (0x0a3d) U+00002030 => 198 (0x00c6) U+00002032 => 1756 (0x06dc) U+00002033 => 1758 (0x06de) U+00002034 => 1762 (0x06e2) U+00002035 => 1769 (0x06e9) U+00002036 => 1770 (0x06ea) U+00002037 => 1773 (0x06ed) U+00002038 => 1774 (0x06ee) U+00002039 => 190 (0x00be) U+0000203A => 191 (0x00bf) U+0000203C => 1697 (0x06a1) U+0000203F => 1800 (0x0708) U+00002040 => 1788 (0x06fc) U+00002044 => 188 (0x00bc) U+00002053 => 1818 (0x071a) U+00002057 => 1763 (0x06e3) U+00002060 => 2602 (0x0a2a) U+00002061 => 2576 (0x0a10) U+00002062 => 2578 (0x0a12) U+00002063 => 2577 (0x0a11) U+0000206A => 2610 (0x0a32) U+0000206B => 2608 (0x0a30) U+0000206C => 2609 (0x0a31) U+0000206D => 2607 (0x0a2f) U+0000206E => 2615 (0x0a37) U+0000206F => 2616 (0x0a38) U+00002070 => 1655 (0x0677) U+00002071 => 787 (0x0313) U+00002074 => 1664 (0x0680) U+00002075 => 1667 (0x0683) U+00002076 => 1671 (0x0687) U+00002077 => 1673 (0x0689) U+00002078 => 1675 (0x068b) U+00002079 => 1677 (0x068d) U+0000207A => 1888 (0x0760) U+0000207B => 1748 (0x06d4) U+0000207C => 1851 (0x073b) U+0000207D => 1722 (0x06ba) U+0000207E => 1724 (0x06bc) U+0000207F => 1016 (0x03f8) U+00002080 => 1654 (0x0676) U+00002081 => 1656 (0x0678) U+00002082 => 1658 (0x067a) U+00002083 => 1661 (0x067d) U+00002084 => 1663 (0x067f) U+00002085 => 1666 (0x0682) U+00002086 => 1670 (0x0686) U+00002087 => 1672 (0x0688) U+00002088 => 1674 (0x068a) U+00002089 => 1676 (0x068c) U+0000208A => 1885 (0x075d) U+0000208B => 1747 (0x06d3) U+0000208C => 1850 (0x073a) U+0000208D => 1721 (0x06b9) U+0000208E => 1723 (0x06bb) U+00002090 => 228 (0x00e4) U+00002091 => 517 (0x0205) U+00002092 => 1074 (0x0432) U+00002093 => 1512 (0x05e8) U+00002094 => 556 (0x022c) U+000020A0 => 446 (0x01be) U+000020A1 => 445 (0x01bd) U+000020A2 => 447 (0x01bf) U+000020A3 => 660 (0x0294) U+000020A4 => 966 (0x03c6) U+000020A5 => 995 (0x03e3) U+000020A6 => 1054 (0x041e) U+000020A7 => 1224 (0x04c8) U+000020A8 => 1278 (0x04fe) U+000020A9 => 1509 (0x05e5) U+000020AA => 1653 (0x0675) U+000020AB => 471 (0x01d7) U+000020AC => 444 (0x01bc) U+000020AD => 927 (0x039f) U+000020AE => 1364 (0x0554) U+000020AF => 515 (0x0203) U+000020B0 => 965 (0x03c5) U+000020B1 => 1223 (0x04c7) U+000020B2 => 709 (0x02c5) U+000020B3 => 358 (0x0166) U+000020B4 => 1323 (0x052b) U+000020B5 => 448 (0x01c0) U+000020EC => 2502 (0x09c6) U+000020ED => 2498 (0x09c2) U+000020EE => 2497 (0x09c1) U+000020EF => 2501 (0x09c5) U+00002116 => 1066 (0x042a) U+0000211F => 1279 (0x04ff) U+00002122 => 140 (0x008c) U+00002123 => 1481 (0x05c9) U+00002126 => 159 (0x009f) U+00002153 => 1680 (0x0690) U+00002154 => 1685 (0x0695) U+00002155 => 1682 (0x0692) U+00002156 => 1686 (0x0696) U+00002157 => 1688 (0x0698) U+00002158 => 1690 (0x069a) U+00002159 => 1683 (0x0693) U+0000215A => 1691 (0x069b) U+0000215B => 1684 (0x0694) U+0000215C => 1689 (0x0699) U+0000215D => 1692 (0x069c) U+0000215E => 1693 (0x069d) U+0000215F => 1678 (0x068e) U+00002160 => 831 (0x033f) U+00002161 => 853 (0x0355) U+00002162 => 854 (0x0356) U+00002163 => 855 (0x0357) U+00002164 => 1477 (0x05c5) U+00002165 => 1482 (0x05ca) U+00002166 => 1483 (0x05cb) U+00002167 => 1484 (0x05cc) U+00002168 => 856 (0x0358) U+00002169 => 1527 (0x05f7) U+0000216A => 1533 (0x05fd) U+0000216B => 1534 (0x05fe) U+0000216C => 967 (0x03c7) U+0000216D => 434 (0x01b2) U+0000216E => 489 (0x01e9) U+0000216F => 1006 (0x03ee) U+00002170 => 785 (0x0311) U+00002171 => 820 (0x0334) U+00002172 => 821 (0x0335) U+00002173 => 822 (0x0336) U+00002174 => 1453 (0x05ad) U+00002175 => 1463 (0x05b7) U+00002176 => 1464 (0x05b8) U+00002177 => 1465 (0x05b9) U+00002178 => 823 (0x0337) U+00002179 => 1511 (0x05e7) U+0000217A => 1521 (0x05f1) U+0000217B => 1522 (0x05f2) U+0000217C => 940 (0x03ac) U+0000217D => 406 (0x0196) U+0000217E => 459 (0x01cb) U+0000217F => 987 (0x03db) U+00002180 => 513 (0x0201) U+00002181 => 512 (0x0200) U+00002182 => 514 (0x0202) U+00002183 => 453 (0x01c5) U+00002184 => 427 (0x01ab) U+00002190 => 2496 (0x09c0) U+00002191 => 2491 (0x09bb) U+00002192 => 2500 (0x09c4) U+00002193 => 2489 (0x09b9) U+00002194 => 2504 (0x09c8) U+00002195 => 2494 (0x09be) U+00002196 => 2514 (0x09d2) U+00002197 => 2516 (0x09d4) U+00002198 => 2515 (0x09d3) U+00002199 => 2517 (0x09d5) U+0000219A => 2506 (0x09ca) U+0000219B => 2507 (0x09cb) U+000021A8 => 2495 (0x09bf) U+000021D0 => 2511 (0x09cf) U+000021D1 => 2509 (0x09cd) U+000021D2 => 2512 (0x09d0) U+000021D3 => 2508 (0x09cc) U+000021D4 => 2513 (0x09d1) U+000021D5 => 2510 (0x09ce) U+00002202 => 152 (0x0098) U+00002205 => 1118 (0x045e) U+00002206 => 168 (0x00a8) U+0000220F => 154 (0x009a) U+00002211 => 153 (0x0099) U+00002212 => 1745 (0x06d1) U+00002213 => 2519 (0x09d7) U+00002219 => 1720 (0x06b8) U+0000221A => 165 (0x00a5) U+0000221E => 146 (0x0092) U+0000222B => 156 (0x009c) U+0000223C => 1817 (0x0719) U+00002248 => 167 (0x00a7) U+0000225F => 1852 (0x073c) U+00002260 => 143 (0x008f) U+00002261 => 1853 (0x073d) U+00002264 => 148 (0x0094) U+00002265 => 149 (0x0095) U+00002308 => 1727 (0x06bf) U+00002309 => 1728 (0x06c0) U+0000230A => 1729 (0x06c1) U+0000230B => 1730 (0x06c2) U+00002423 => 1920 (0x0780) U+000025CA => 185 (0x00b9) U+000025CC => 210 (0x00d2) U+00002713 => 2518 (0x09d6) U+0000274D => 2487 (0x09b7) U+000027E6 => 1725 (0x06bd) U+000027E7 => 1726 (0x06be) U+00002C60 => 981 (0x03d5) U+00002C61 => 953 (0x03b9) U+00002C62 => 982 (0x03d6) U+00002C63 => 1221 (0x04c5) U+00002C64 => 1275 (0x04fb) U+00002C65 => 267 (0x010b) U+00002C66 => 1339 (0x053b) U+00002C67 => 766 (0x02fe) U+00002C68 => 729 (0x02d9) U+00002C69 => 926 (0x039e) U+00002C6A => 904 (0x0388) U+00002C6B => 1617 (0x0651) U+00002C6C => 1605 (0x0645) U+00002C74 => 1462 (0x05b6) U+00002C75 => 768 (0x0300) U+00002C76 => 731 (0x02db) U+00002C77 => 1213 (0x04bd) U+0000A700 => 2535 (0x09e7) U+0000A701 => 2539 (0x09eb) U+0000A702 => 2534 (0x09e6) U+0000A703 => 2538 (0x09ea) U+0000A704 => 2536 (0x09e8) U+0000A705 => 2540 (0x09ec) U+0000A706 => 2537 (0x09e9) U+0000A707 => 2541 (0x09ed) U+0000A708 => 2004 (0x07d4) U+0000A709 => 2005 (0x07d5) U+0000A70A => 2006 (0x07d6) U+0000A70B => 2007 (0x07d7) U+0000A70C => 2008 (0x07d8) U+0000A70D => 2164 (0x0874) U+0000A70E => 2165 (0x0875) U+0000A70F => 2166 (0x0876) U+0000A710 => 2167 (0x0877) U+0000A711 => 2168 (0x0878) U+0000A712 => 2173 (0x087d) U+0000A713 => 2177 (0x0881) U+0000A714 => 2181 (0x0885) U+0000A715 => 2185 (0x0889) U+0000A716 => 2189 (0x088d) U+0000A717 => 1902 (0x076e) U+0000A718 => 1903 (0x076f) U+0000A719 => 1904 (0x0770) U+0000A71A => 1905 (0x0771) U+0000A720 => 1907 (0x0773) U+0000A721 => 1908 (0x0774) U+0000F130 => 2632 (0x0a48) U+0000F131 => 2633 (0x0a49) U+0000F132 => 2634 (0x0a4a) U+0000F133 => 2635 (0x0a4b) U+0000F134 => 1729 (0x06c1) U+0000F135 => 1730 (0x06c2) U+0000F170 => 1916 (0x077c) U+0000F171 => 1807 (0x070f) U+0000F172 => 1808 (0x0710) U+0000F173 => 1809 (0x0711) U+0000F174 => 1806 (0x070e) U+0000F175 => 1811 (0x0713) U+0000F176 => 1801 (0x0709) U+0000F178 => 1236 (0x04d4) U+0000F179 => 1810 (0x0712) U+0000F17A => 1860 (0x0744) U+0000F17B => 1820 (0x071c) U+0000F180 => 988 (0x03dc) U+0000F181 => 1029 (0x0405) U+0000F182 => 1031 (0x0407) U+0000F18B => 567 (0x0237) U+0000F195 => 1767 (0x06e7) U+0000F196 => 1737 (0x06c9) U+0000F197 => 1754 (0x06da) U+0000F198 => 1902 (0x076e) U+0000F199 => 1903 (0x076f) U+0000F19A => 1904 (0x0770) U+0000F19B => 1905 (0x0771) U+0000F19C => 2492 (0x09bc) U+0000F19D => 2490 (0x09ba) U+0000F19E => 1695 (0x069f) U+0000F19F => 1696 (0x06a0) U+0000F1A0 => 309 (0x0135) U+0000F1A1 => 312 (0x0138) U+0000F1A2 => 420 (0x01a4) U+0000F1A3 => 562 (0x0232) U+0000F1A4 => 574 (0x023e) U+0000F1A5 => 629 (0x0275) U+0000F1A6 => 683 (0x02ab) U+0000F1A7 => 804 (0x0324) U+0000F1A8 => 834 (0x0342) U+0000F1A9 => 873 (0x0369) U+0000F1AA => 957 (0x03bd) U+0000F1AB => 1115 (0x045b) U+0000F1AC => 1110 (0x0456) U+0000F1AD => 1129 (0x0469) U+0000F1AE => 1185 (0x04a1) U+0000F1AF => 1306 (0x051a) U+0000F1B0 => 1400 (0x0578) U+0000F1B1 => 1414 (0x0586) U+0000F1B2 => 1001 (0x03e9) U+0000F1B3 => 1467 (0x05bb) U+0000F1B4 => 1566 (0x061e) U+0000F1B5 => 1470 (0x05be) U+0000F1B6 => 1590 (0x0636) U+0000F1B7 => 1603 (0x0643) U+0000F1B8 => 1623 (0x0657) U+0000F1B9 => 407 (0x0197) U+0000F1BA => 488 (0x01e8) U+0000F1BB => 733 (0x02dd) U+0000F1BC => 723 (0x02d3) U+0000F1BD => 866 (0x0362) U+0000F1BE => 951 (0x03b7) U+0000F1BF => 970 (0x03ca) U+0000F1C0 => 997 (0x03e5) U+0000F1C1 => 1033 (0x0409) U+0000F1C2 => 1045 (0x0415) U+0000F1C3 => 1209 (0x04b9) U+0000F1C4 => 1300 (0x0514) U+0000F1C5 => 1336 (0x0538) U+0000F1C6 => 1412 (0x0584) U+0000F1C7 => 1598 (0x063e) U+0000F1C8 => 1640 (0x0668) U+0000F1C9 => 1113 (0x0459) U+0000F1CA => 825 (0x0339) U+0000F1CB => 851 (0x0353) U+0000F1CC => 1419 (0x058b) U+0000F1CD => 1443 (0x05a3) U+0000F1CE => 1555 (0x0613) U+0000F1D0 => 2173 (0x087d) U+0000F1D1 => 2177 (0x0881) U+0000F1D2 => 2181 (0x0885) U+0000F1D3 => 2185 (0x0889) U+0000F1D4 => 2189 (0x088d) U+0000F1D5 => 2004 (0x07d4) U+0000F1D6 => 2005 (0x07d5) U+0000F1D7 => 2006 (0x07d6) U+0000F1D8 => 2007 (0x07d7) U+0000F1D9 => 2008 (0x07d8) U+0000F1DA => 2164 (0x0874) U+0000F1DB => 2165 (0x0875) U+0000F1DC => 2166 (0x0876) U+0000F1DD => 2167 (0x0877) U+0000F1DE => 2168 (0x0878) U+0000F1DF => 2535 (0x09e7) U+0000F1E0 => 2534 (0x09e6) U+0000F1E1 => 2536 (0x09e8) U+0000F1E2 => 2537 (0x09e9) U+0000F1E3 => 2539 (0x09eb) U+0000F1E4 => 2538 (0x09ea) U+0000F1E5 => 2540 (0x09ec) U+0000F1E6 => 2541 (0x09ed) U+0000F1E7 => 1776 (0x06f0) U+0000F1E8 => 1803 (0x070b) U+0000F1E9 => 1705 (0x06a9) U+0000F1EA => 1849 (0x0739) U+0000F1F1 => 2324 (0x0914) U+0000F1F2 => 2334 (0x091e) U+0000F1F3 => 2344 (0x0928) U+0000F1F4 => 2354 (0x0932) U+0000F1F5 => 2364 (0x093c) U+0000F1F6 => 2374 (0x0946) U+0000F1F7 => 2384 (0x0950) U+0000F1F8 => 2394 (0x095a) U+0000F1F9 => 2404 (0x0964) U+0000F208 => 359 (0x0167) U+0000F209 => 360 (0x0168) U+0000F20A => 390 (0x0186) U+0000F20B => 416 (0x01a0) U+0000F20C => 475 (0x01db) U+0000F20D => 502 (0x01f6) U+0000F20E => 953 (0x03b9) U+0000F20F => 981 (0x03d5) U+0000F210 => 1200 (0x04b0) U+0000F211 => 1231 (0x04cf) U+0000F212 => 1234 (0x04d2) U+0000F213 => 1249 (0x04e1) U+0000F214 => 1274 (0x04fa) U+0000F215 => 1275 (0x04fb) U+0000F216 => 1307 (0x051b) U+0000F217 => 1619 (0x0653) U+0000F218 => 1441 (0x05a1) U+0000F219 => 1485 (0x05cd) U+0000F21A => 1496 (0x05d8) U+0000F21B => 1508 (0x05e4) U+0000F21C => 1625 (0x0659) U+0000F21D => 1700 (0x06a4) U+0000F21E => 1641 (0x0669) U+0000F21F => 980 (0x03d4) U+0000F220 => 550 (0x0226) U+0000F221 => 613 (0x0265) U+0000F222 => 729 (0x02d9) U+0000F223 => 766 (0x02fe) U+0000F224 => 370 (0x0172) U+0000F225 => 415 (0x019f) U+0000F226 => 468 (0x01d4) U+0000F227 => 631 (0x0277) U+0000F228 => 691 (0x02b3) U+0000F229 => 902 (0x0386) U+0000F22A => 950 (0x03b6) U+0000F22B => 993 (0x03e1) U+0000F22C => 1026 (0x0402) U+0000F22D => 1199 (0x04af) U+0000F22E => 1248 (0x04e0) U+0000F22F => 1301 (0x0515) U+0000F230 => 1308 (0x051c) U+0000F231 => 1459 (0x05b3) U+0000F232 => 1517 (0x05ed) U+0000F233 => 1599 (0x063f) U+0000F234 => 1614 (0x064e) U+0000F235 => 1626 (0x065a) U+0000F236 => 266 (0x010a) U+0000F237 => 307 (0x0133) U+0000F238 => 549 (0x0225) U+0000F239 => 565 (0x0235) U+0000F23A => 568 (0x0238) U+0000F23B => 559 (0x022f) U+0000F23C => 802 (0x0322) U+0000F23D => 425 (0x01a9) U+0000F23E => 1398 (0x0576) U+0000F23F => 1442 (0x05a2) U+0000F240 => 478 (0x01de) U+0000F241 => 1233 (0x04d1) U+0000F242 => 982 (0x03d6) U+0000F243 => 1550 (0x060e) U+0000F244 => 1575 (0x0627) U+0000F245 => 1631 (0x065f) U+0000F246 => 1665 (0x0681) U+0000F247 => 318 (0x013e) U+0000F248 => 319 (0x013f) U+0000F249 => 373 (0x0175) U+0000F24A => 472 (0x01d8) U+0000F24B => 632 (0x0278) U+0000F24C => 994 (0x03e2) U+0000F24D => 1027 (0x0403) U+0000F24E => 1202 (0x04b2) U+0000F24F => 1250 (0x04e2) U+0000F250 => 1260 (0x04ec) U+0000F251 => 1302 (0x0516) U+0000F252 => 1338 (0x053a) U+0000F253 => 1601 (0x0641) U+0000F254 => 850 (0x0352) U+0000F255 => 1415 (0x0587) U+0000F256 => 1303 (0x0517) U+0000F257 => 1606 (0x0646) U+0000F258 => 857 (0x0359) U+0000F259 => 1416 (0x0588) U+0000F25A => 727 (0x02d7) U+0000F25B => 1012 (0x03f4) U+0000F25C => 1221 (0x04c5) U+0000F25D => 826 (0x033a) U+0000F25E => 1462 (0x05b6) U+0000F25F => 1460 (0x05b4) U+0000F260 => 864 (0x0360) U+0000F261 => 888 (0x0378) U+0000F262 => 904 (0x0388) U+0000F263 => 926 (0x039e) U+0000F264 => 1605 (0x0645) U+0000F265 => 1617 (0x0651) U+0000F266 => 960 (0x03c0) U+0000F267 => 1556 (0x0614) U+0000F268 => 971 (0x03cb) U+0000F269 => 1257 (0x04e9) U+0000F26A => 1698 (0x06a2) U+0000F320 => 667 (0x029b) U+0000F321 => 652 (0x028c) U+0000F322 => 893 (0x037d) U+0000F323 => 881 (0x0371) U+0000F324 => 1531 (0x05fb) U+0000F325 => 1519 (0x05ef) U+0000F326 => 669 (0x029d) U+0000F327 => 655 (0x028f) U+0000F328 => 1530 (0x05fa) U+0000F329 => 1518 (0x05ee) U+0000F32A => 622 (0x026e) U+0000F32B => 575 (0x023f) U+0000FB00 => 645 (0x0285) U+0000FB01 => 192 (0x00c0) U+0000FB02 => 193 (0x00c1) U+0000FB03 => 639 (0x027f) U+0000FB04 => 642 (0x0282) U+0000FE00 => 2586 (0x0a1a) U+0000FE01 => 2587 (0x0a1b) U+0000FE02 => 2588 (0x0a1c) U+0000FE03 => 2589 (0x0a1d) U+0000FE04 => 2590 (0x0a1e) U+0000FE05 => 2591 (0x0a1f) U+0000FE06 => 2592 (0x0a20) U+0000FE07 => 2593 (0x0a21) U+0000FE08 => 2594 (0x0a22) U+0000FE09 => 2595 (0x0a23) U+0000FE0A => 2596 (0x0a24) U+0000FE0B => 2597 (0x0a25) U+0000FE0C => 2598 (0x0a26) U+0000FE0D => 2599 (0x0a27) U+0000FE0E => 2600 (0x0a28) U+0000FE0F => 2601 (0x0a29) U+0000FE20 => 1790 (0x06fe) U+0000FE21 => 1791 (0x06ff) U+0000FE22 => 1823 (0x071f) U+0000FE23 => 1824 (0x0720) U+0000FEFF => 2604 (0x0a2c) U+0000FFF9 => 2611 (0x0a33) U+0000FFFA => 2612 (0x0a34) U+0000FFFB => 2613 (0x0a35) U+0000FFFC => 2617 (0x0a39) U+0000FFFD => 2631 (0x0a47) U+0001D510 => 1015 (0x03f7) U+0001D513 => 1227 (0x04cb) GLYPH ID => UNICODE MAPPINGS 3 => U+00000020 ' ' 4 => U+00000021 '!' 5 => U+00000022 '"' 6 => U+00000023 '#' 7 => U+00000024 '$' 8 => U+00000025 '%' 9 => U+00000026 '&' 10 => U+00000027 ''' 11 => U+00000028 '(' 12 => U+00000029 ')' 13 => U+0000002A '*' 14 => U+0000002B '+' 15 => U+0000002C ',' 16 => U+0000002D '-' 17 => U+0000002E '.' 18 => U+0000002F '/' 19 => U+00000030 '0' 20 => U+00000031 '1' 21 => U+00000032 '2' 22 => U+00000033 '3' 23 => U+00000034 '4' 24 => U+00000035 '5' 25 => U+00000036 '6' 26 => U+00000037 '7' 27 => U+00000038 '8' 28 => U+00000039 '9' 29 => U+0000003A ':' 30 => U+0000003B ';' 31 => U+0000003C '<' 32 => U+0000003D '=' 33 => U+0000003E '>' 34 => U+0000003F '?' 35 => U+00000040 '@' 36 => U+00000041 'A' 37 => U+00000042 'B' 38 => U+00000043 'C' 39 => U+00000044 'D' 40 => U+00000045 'E' 41 => U+00000046 'F' 42 => U+00000047 'G' 43 => U+00000048 'H' 44 => U+00000049 'I' 45 => U+0000004A 'J' 46 => U+0000004B 'K' 47 => U+0000004C 'L' 48 => U+0000004D 'M' 49 => U+0000004E 'N' 50 => U+0000004F 'O' 51 => U+00000050 'P' 52 => U+00000051 'Q' 53 => U+00000052 'R' 54 => U+00000053 'S' 55 => U+00000054 'T' 56 => U+00000055 'U' 57 => U+00000056 'V' 58 => U+00000057 'W' 59 => U+00000058 'X' 60 => U+00000059 'Y' 61 => U+0000005A 'Z' 62 => U+0000005B '[' 63 => U+0000005C '\' 64 => U+0000005D ']' 65 => U+0000005E '^' 66 => U+0000005F '_' 67 => U+00000060 '`' 68 => U+00000061 'a' 69 => U+00000062 'b' 70 => U+00000063 'c' 71 => U+00000064 'd' 72 => U+00000065 'e' 73 => U+00000066 'f' 74 => U+00000067 'g' 75 => U+00000068 'h' 76 => U+00000069 'i' 77 => U+0000006A 'j' 78 => U+0000006B 'k' 79 => U+0000006C 'l' 80 => U+0000006D 'm' 81 => U+0000006E 'n' 82 => U+0000006F 'o' 83 => U+00000070 'p' 84 => U+00000071 'q' 85 => U+00000072 'r' 86 => U+00000073 's' 87 => U+00000074 't' 88 => U+00000075 'u' 89 => U+00000076 'v' 90 => U+00000077 'w' 91 => U+00000078 'x' 92 => U+00000079 'y' 93 => U+0000007A 'z' 94 => U+0000007B '{' 95 => U+0000007C '|' 96 => U+0000007D '}' 97 => U+0000007E '~' 98 => U+000000C4 '' 99 => U+000000C5 '' 100 => U+000000C7 '' 101 => U+000000C9 '' 102 => U+000000D1 '' 103 => U+000000D6 '' 104 => U+000000DC '' 105 => U+000000E1 '' 106 => U+000000E0 '' 107 => U+000000E2 '' 108 => U+000000E4 '' 109 => U+000000E3 '' 110 => U+000000E5 '' 111 => U+000000E7 '' 112 => U+000000E9 '' 113 => U+000000E8 '' 114 => U+000000EA '' 115 => U+000000EB '' 116 => U+000000ED '' 117 => U+000000EC '' 118 => U+000000EE '' 119 => U+000000EF '' 120 => U+000000F1 '' 121 => U+000000F3 '' 122 => U+000000F2 '' 123 => U+000000F4 '' 124 => U+000000F6 '' 125 => U+000000F5 '' 126 => U+000000FA '' 127 => U+000000F9 '' 128 => U+000000FB '' 129 => U+000000FC '' 130 => U+00002020 131 => U+000000B0 '' 132 => U+000000A2 '' 133 => U+000000A3 '' 134 => U+000000A7 '' 135 => U+00002022 136 => U+000000B6 '' 137 => U+000000DF '' 138 => U+000000AE '' 139 => U+000000A9 '' 140 => U+00002122 141 => U+000000B4 '' 142 => U+000000A8 '' 143 => U+00002260 144 => U+000000C6 '' 145 => U+000000D8 '' 146 => U+0000221E 147 => U+000000B1 '' 148 => U+00002264 149 => U+00002265 150 => U+000000A5 '' 151 => U+000000B5 '' 152 => U+00002202 153 => U+00002211 154 => U+0000220F 155 => U+000003C0 156 => U+0000222B 157 => U+000000AA '' 158 => U+000000BA '' 159 => U+00002126 160 => U+000000E6 '' 161 => U+000000F8 '' 162 => U+000000BF '' 163 => U+000000A1 '' 164 => U+000000AC '' 165 => U+0000221A 166 => U+00000192 167 => U+00002248 168 => U+00002206 169 => U+000000AB '' 170 => U+000000BB '' 171 => U+00002026 172 => U+000000A0 '' 173 => U+000000C0 '' 174 => U+000000C3 '' 175 => U+000000D5 '' 176 => U+00000152 177 => U+00000153 178 => U+00002013 179 => U+00002014 180 => U+0000201C 181 => U+0000201D 182 => U+00002018 183 => U+00002019 184 => U+000000F7 '' 185 => U+000025CA 186 => U+000000FF '' 187 => U+00000178 188 => U+00002044 189 => U+000000A4 '' 190 => U+00002039 191 => U+0000203A 192 => U+0000FB01 193 => U+0000FB02 194 => U+00002021 195 => U+000000B7 '' 196 => U+0000201A 197 => U+0000201E 198 => U+00002030 199 => U+000000C2 '' 200 => U+000000CA '' 201 => U+000000C1 '' 202 => U+000000CB '' 203 => U+000000C8 '' 204 => U+000000CD '' 205 => U+000000CE '' 206 => U+000000CF '' 207 => U+000000CC '' 208 => U+000000D3 '' 209 => U+000000D4 '' 210 => U+000025CC 211 => U+000000D2 '' 212 => U+000000DA '' 213 => U+000000DB '' 214 => U+000000D9 '' 215 => U+00000131 216 => U+000002C6 217 => U+000002DC 218 => U+000000AF '' 219 => U+000002D8 220 => U+000002D9 221 => U+000002DA 222 => U+000000B8 '' 223 => U+000002DD 224 => U+000002DB 225 => U+000002C7 227 => U+00000430 228 => U+00002090 229 => U+00001D43 230 => U+00000363 231 => U+00000201 232 => U+00001EAD 233 => U+00001EA5 235 => U+00001EA7 237 => U+00001EAB 239 => U+00001EA9 241 => U+00000203 242 => U+00000103 243 => U+00001EB7 244 => U+00001EAF 246 => U+00001EB1 248 => U+00001EB5 250 => U+00001EB3 252 => U+000004D1 253 => U+000001CE 254 => U+00000101 255 => U+000004D3 256 => U+000001DF 257 => U+00000227 258 => U+000001E1 259 => U+000001FB 260 => U+00001E9A 261 => U+00001EA3 262 => U+00001EA1 263 => U+00001E01 264 => U+00000105 266 => U+0000F236 267 => U+00002C65 270 => U+00000250 272 => U+00001D44 273 => U+00000251 275 => U+00001D45 307 => U+0000F237 308 => U+00000252 309 => U+0000F1A0 311 => U+000004D5 312 => U+0000F1A1 313 => U+000001FD 314 => U+000001E3 315 => U+00001D02 316 => U+00001D46 317 => U+000003B1 318 => U+0000F247 319 => U+0000F248 320 => U+00000410 321 => U+00001D2C 322 => U+00001D00 323 => U+00000200 324 => U+00001EA4 326 => U+00001EA6 328 => U+00001EAA 330 => U+00001EA8 332 => U+00001EAC 333 => U+00000202 334 => U+00000102 335 => U+00001EAE 337 => U+00001EB0 339 => U+00001EB4 341 => U+00001EB2 343 => U+00001EB6 344 => U+000004D0 345 => U+000001CD 346 => U+00000100 347 => U+000004D2 348 => U+000001DE 349 => U+00000226 350 => U+000001E0 351 => U+000001FA 352 => U+00001EA2 353 => U+00001EA0 354 => U+00001E00 355 => U+00000104 357 => U+0000023A 358 => U+000020B3 359 => U+0000F208 360 => U+0000F209 361 => U+000004D4 362 => U+00001D2D 363 => U+00001D01 364 => U+000001FC 365 => U+000001E2 366 => U+00001D47 367 => U+00001E03 368 => U+00001E07 369 => U+00001E05 370 => U+0000F224 372 => U+00000180 373 => U+0000F249 374 => U+00000253 375 => U+00000185 376 => U+00000183 377 => U+00000431 378 => U+0000044C 379 => U+0000048D 380 => U+0000044A 381 => U+0000044B 382 => U+000004F9 383 => U+00000432 384 => U+00000412 385 => U+00001D2E 386 => U+00000299 387 => U+00001E02 388 => U+00001E06 389 => U+00001E04 390 => U+0000F20A 391 => U+00001D2F 392 => U+00001D03 393 => U+00000181 394 => U+00000184 395 => U+00000182 396 => U+00000411 397 => U+0000042C 398 => U+0000048C 399 => U+0000042A 400 => U+0000042B 401 => U+000004F8 402 => U+000003B2 403 => U+00001D66 404 => U+00001D5D 405 => U+00000441 406 => U+0000217D 407 => U+0000F1B9 408 => U+00000368 409 => U+00000107 410 => U+00000109 411 => U+0000010D 412 => U+0000010B 413 => U+00001E09 414 => U+000004AB 415 => U+0000F225 416 => U+0000F20B 417 => U+00000297 418 => U+00000188 419 => U+00000255 420 => U+0000F1A2 421 => U+00000254 423 => U+00001D53 425 => U+0000F23D 427 => U+00002184 428 => U+00001D12 429 => U+00000454 430 => U+0000044D 431 => U+000004ED 433 => U+00000421 434 => U+0000216D 435 => U+00001D04 436 => U+00000106 437 => U+00000108 438 => U+0000010C 439 => U+0000010A 440 => U+00001E08 441 => U+000004AA 442 => U+0000023B 443 => U+00000187 444 => U+000020AC 445 => U+000020A1 446 => U+000020A0 447 => U+000020A2 448 => U+000020B5 449 => U+00000186 451 => U+00001D10 453 => U+00002183 454 => U+00000404 455 => U+0000042D 456 => U+000004EC 458 => U+00000501 459 => U+0000217E 460 => U+00001D48 461 => U+00000369 462 => U+00001E0B 463 => U+00001E13 464 => U+00001E0F 465 => U+00001E0D 466 => U+00001E11 467 => U+0000010F 468 => U+0000F226 470 => U+00000111 471 => U+000020AB 472 => U+0000F24A 473 => U+00000257 474 => U+00000256 475 => U+0000F20C 476 => U+00000221 477 => U+0000018C 478 => U+0000F240 479 => U+000001F3 480 => U+000001C6 481 => U+000002A3 482 => U+000002A5 483 => U+000002A4 484 => U+00000503 485 => U+000003B4 486 => U+00001D5F 487 => U+000000F0 '' 488 => U+0000F1BA 489 => U+0000216E 490 => U+00001D30 491 => U+00001D05 492 => U+0000010E 493 => U+00001E0A 494 => U+00001E12 495 => U+00001E0E 496 => U+00001E0C 497 => U+00001E10 498 => U+000000D0 '' 499 => U+00000110 500 => U+00000189 501 => U+00001D06 502 => U+0000F20D 503 => U+0000018A 504 => U+0000018B 505 => U+000001F2 506 => U+000001C5 507 => U+000001F1 508 => U+000001C4 509 => U+00000500 510 => U+00000502 511 => U+00000394 512 => U+00002181 513 => U+00002180 514 => U+00002182 515 => U+000020AF 516 => U+00000435 517 => U+00002091 518 => U+00001D49 519 => U+00000364 520 => U+00000450 521 => U+00000205 522 => U+00001EBF 524 => U+00001EC1 526 => U+00001EC5 528 => U+00001EC3 530 => U+00001EC7 531 => U+00000207 532 => U+00000115 533 => U+000004D7 534 => U+0000011B 535 => U+00001EBD 536 => U+00000113 537 => U+00001E17 538 => U+00001E15 539 => U+00000451 540 => U+00000117 541 => U+00001EBB 542 => U+00001E19 543 => U+00001E1B 544 => U+00001EB9 545 => U+00000229 546 => U+00001E1D 547 => U+00000119 549 => U+0000F238 550 => U+0000F220 551 => U+000004BD 552 => U+000004BF 553 => U+000001DD 554 => U+00000259 555 => U+000004D9 556 => U+00002094 557 => U+00001D4A 558 => U+000004DB 559 => U+0000F23B 560 => U+0000025A 561 => U+00000258 562 => U+0000F1A3 563 => U+0000025B 564 => U+00001D4B 565 => U+0000F239 566 => U+0000025C 567 => U+0000F18B 568 => U+0000F23A 569 => U+0000025D 570 => U+00001D08 571 => U+00001D4C 572 => U+0000029A 573 => U+0000025E 574 => U+0000F1A4 575 => U+0000F32B 576 => U+00000437 577 => U+000004DF 578 => U+00000499 579 => U+00000507 580 => U+00000505 581 => U+00000415 582 => U+00001D31 583 => U+00001D07 584 => U+00000400 585 => U+00000204 586 => U+00001EBE 588 => U+00001EC0 590 => U+00001EC4 592 => U+00001EC2 594 => U+00001EC6 595 => U+00000206 596 => U+00000114 597 => U+000004D6 598 => U+0000011A 599 => U+00001EBC 600 => U+00000112 601 => U+00001E16 602 => U+00001E14 603 => U+00000401 604 => U+00000116 605 => U+00001EBA 606 => U+00001E18 607 => U+00001E1A 608 => U+00001EB8 609 => U+00000228 610 => U+00001E1C 611 => U+00000118 613 => U+0000F221 614 => U+000004BC 615 => U+000004BE 616 => U+0000018E 617 => U+00001D32 618 => U+0000018F 619 => U+000004D8 620 => U+000004DA 621 => U+00000190 622 => U+0000F32A 623 => U+00000417 624 => U+000004DE 625 => U+00000498 626 => U+00000506 627 => U+00000504 629 => U+0000F1A5 630 => U+00001E1F 631 => U+0000F227 632 => U+0000F24B 639 => U+0000FB03 642 => U+0000FB04 645 => U+0000FB00 646 => U+000002A9 647 => U+0000017F 648 => U+00001E9B 649 => U+00000433 650 => U+00000453 651 => U+00000491 652 => U+0000F321 653 => U+00000493 655 => U+0000F327 657 => U+000004FB 659 => U+00001E1E 660 => U+000020A3 661 => U+00000191 662 => U+00000413 663 => U+00000393 664 => U+00001D26 665 => U+00000403 666 => U+00000490 667 => U+0000F320 668 => U+00000492 669 => U+0000F326 670 => U+000004FA 671 => U+00001D4D 672 => U+000001F5 673 => U+0000011D 674 => U+0000011F 675 => U+000001E7 676 => U+00001E21 677 => U+00000121 678 => U+00000123 680 => U+000001E5 682 => U+00000261 683 => U+0000F1A6 691 => U+0000F228 693 => U+00000260 694 => U+00001D77 695 => U+00001D79 696 => U+0000050D 697 => U+00001D33 698 => U+00000262 699 => U+000001F4 700 => U+0000011C 701 => U+0000011E 702 => U+000001E6 703 => U+00001E20 704 => U+00000120 705 => U+00000122 706 => U+000001E4 707 => U+00000193 708 => U+0000029B 709 => U+000020B2 710 => U+0000050C 711 => U+000002B0 712 => U+0000036A 713 => U+00000125 714 => U+0000021F 715 => U+00001E27 716 => U+00001E23 717 => U+00001E2B 718 => U+00001E96 719 => U+00001E25 720 => U+00001E29 721 => U+00000127 722 => U+0000045B 723 => U+0000F1BC 724 => U+00000452 725 => U+00000266 726 => U+000002B1 727 => U+0000F25A 728 => U+00000267 729 => U+0000F222 730 => U+00000195 731 => U+00002C76 732 => U+00000265 733 => U+0000F1BB 734 => U+000002AE 735 => U+000002AF 736 => U+000004BB 738 => U+00000495 739 => U+0000043D 740 => U+000004A5 741 => U+000004A3 742 => U+000004CA 743 => U+0000045A 744 => U+000004C8 745 => U+0000050B 746 => U+0000043F 747 => U+000004A7 748 => U+0000045F 749 => U+00000446 750 => U+00000448 751 => U+00000449 752 => U+00001D28 753 => U+0000041D 754 => U+00001D34 755 => U+00001D78 756 => U+0000029C 757 => U+00000124 758 => U+0000021E 759 => U+00001E26 760 => U+00001E22 761 => U+00001E2A 762 => U+00001E24 763 => U+00001E28 764 => U+00000126 766 => U+0000F223 767 => U+000001F6 768 => U+00002C75 769 => U+000004BA 770 => U+00000494 771 => U+000004A4 772 => U+000004A2 773 => U+000004C9 774 => U+0000040A 775 => U+000004C7 776 => U+0000050A 777 => U+0000041F 778 => U+000004A6 779 => U+0000040F 780 => U+00000426 781 => U+00000428 782 => U+00000429 784 => U+00000456 785 => U+00002170 786 => U+00001D62 787 => U+00002071 788 => U+00000365 789 => U+00000209 790 => U+0000020B 791 => U+0000012D 792 => U+000001D0 793 => U+00000129 794 => U+0000012B 795 => U+00000457 796 => U+00001E2F 797 => U+00001EC9 798 => U+00001E2D 799 => U+00001ECB 800 => U+0000012F 802 => U+0000F23C 803 => U+00000268 804 => U+0000F1A7 817 => U+00001D09 818 => U+00001D4E 819 => U+00000133 820 => U+00002171 821 => U+00002172 822 => U+00002173 823 => U+00002178 824 => U+00000269 825 => U+0000F1CA 826 => U+0000F25D 827 => U+0000044E 828 => U+00000406 829 => U+000004C0 830 => U+000004CF 831 => U+00002160 832 => U+00001D35 833 => U+0000026A 834 => U+0000F1A8 835 => U+00000208 836 => U+0000020A 837 => U+0000012C 838 => U+000001CF 839 => U+00000128 840 => U+0000012A 841 => U+00000407 842 => U+00001E2E 843 => U+00000130 844 => U+00001EC8 845 => U+00001E2C 846 => U+00001ECA 847 => U+0000012E 849 => U+00000197 850 => U+0000F254 851 => U+0000F1CB 852 => U+00000132 853 => U+00002161 854 => U+00002162 855 => U+00002163 856 => U+00002168 857 => U+0000F258 858 => U+00000196 859 => U+0000042E 860 => U+00000458 861 => U+000002B2 862 => U+00000135 863 => U+000001F0 864 => U+0000F260 865 => U+0000029D 866 => U+0000F1BD 868 => U+00000237 871 => U+0000025F 873 => U+0000F1A9 877 => U+00000284 878 => U+0000043B 879 => U+000004C6 880 => U+00000459 881 => U+0000F323 882 => U+00000509 883 => U+00000434 884 => U+00000408 885 => U+00001D36 886 => U+00001D0A 887 => U+00000134 888 => U+0000F261 889 => U+0000041B 890 => U+00001D2B 891 => U+000004C5 892 => U+00000409 893 => U+0000F322 894 => U+00000508 895 => U+00000414 896 => U+00001D4F 897 => U+00001E31 898 => U+000001E9 899 => U+00001E35 900 => U+00001E33 901 => U+00000137 902 => U+0000F229 903 => U+00000199 904 => U+0000F262 905 => U+0000029E 906 => U+00000138 907 => U+0000043A 908 => U+0000045C 909 => U+0000049B 910 => U+000004A1 911 => U+0000049F 912 => U+0000049D 913 => U+000004C4 914 => U+00000436 915 => U+000004C2 916 => U+000004DD 917 => U+00000497 918 => U+00001D37 919 => U+00001D0B 920 => U+00001E30 921 => U+000001E8 922 => U+00001E34 923 => U+00001E32 924 => U+00000136 925 => U+00000198 926 => U+0000F263 927 => U+000020AD 928 => U+0000041A 929 => U+0000040C 930 => U+0000049A 931 => U+000004A0 932 => U+0000049E 933 => U+0000049C 934 => U+000004C3 935 => U+00000416 936 => U+000004C1 937 => U+000004DC 938 => U+00000496 940 => U+0000217C 941 => U+000002E1 942 => U+0000013A 943 => U+00001E3D 944 => U+00001E3B 945 => U+00001E37 946 => U+00001E39 947 => U+0000013C 948 => U+00000140 949 => U+0000013E 950 => U+0000F22A 951 => U+0000F1BE 952 => U+0000019A 953 => U+0000F20E 954 => U+0000026B 955 => U+00000142 956 => U+0000026D 957 => U+0000F1AA 958 => U+00000234 959 => U+0000026C 960 => U+0000F266 961 => U+000001C9 962 => U+000002AA 963 => U+000002AB 964 => U+0000026E 965 => U+000020B0 966 => U+000020A4 967 => U+0000216C 968 => U+00001D38 969 => U+0000029F 970 => U+0000F1BF 971 => U+0000F268 972 => U+00000139 973 => U+00001E3C 974 => U+00001E3A 975 => U+00001E36 976 => U+00001E38 977 => U+0000013B 978 => U+0000013F 979 => U+0000013D 980 => U+0000F21F 981 => U+0000F20F 982 => U+0000F242 983 => U+00000141 984 => U+00001D0C 985 => U+000001C8 986 => U+000001C7 987 => U+0000217F 988 => U+0000F180 989 => U+0000036B 990 => U+00001E3F 991 => U+00001E41 992 => U+00001E43 993 => U+0000F22B 994 => U+0000F24C 995 => U+000020A5 996 => U+00000271 997 => U+0000F1C0 998 => U+0000026F 999 => U+00001D5A 1000 => U+00000270 1001 => U+0000F1B2 1002 => U+00001D1F 1003 => U+0000043C 1004 => U+000004CE 1005 => U+0000041C 1006 => U+0000216F 1007 => U+00001D39 1008 => U+00001D0D 1009 => U+00001E3E 1010 => U+00001E40 1011 => U+00001E42 1012 => U+0000F25B 1013 => U+0000019C 1014 => U+000004CD 1015 => U+0001D510 1016 => U+0000207F 1017 => U+00000144 1018 => U+000001F9 1019 => U+00000148 1020 => U+00001E45 1021 => U+00001E4B 1022 => U+00001E49 1023 => U+00001E47 1024 => U+00000146 1025 => U+00000149 1026 => U+0000F22C 1027 => U+0000F24D 1028 => U+00000272 1029 => U+0000F181 1030 => U+0000014B 1031 => U+0000F182 1032 => U+00000273 1033 => U+0000F1C1 1034 => U+00000235 1035 => U+0000019E 1036 => U+000001CC 1037 => U+00000438 1038 => U+0000045D 1039 => U+00000439 1040 => U+0000048B 1041 => U+000004E3 1042 => U+000004E5 1043 => U+00001D3A 1044 => U+00000274 1045 => U+0000F1C2 1046 => U+00000143 1047 => U+000001F8 1048 => U+00000147 1049 => U+00001E44 1050 => U+00001E4A 1051 => U+00001E48 1052 => U+00001E46 1053 => U+00000145 1054 => U+000020A6 1055 => U+0000019D 1057 => U+00001D0E 1058 => U+00001D3B 1061 => U+0000014A 1062 => U+00000220 1064 => U+000001CB 1065 => U+000001CA 1066 => U+00002116 1067 => U+00000418 1068 => U+0000040D 1069 => U+00000419 1070 => U+0000048A 1071 => U+000004E4 1072 => U+000004E2 1073 => U+0000043E 1074 => U+00002092 1075 => U+00001D52 1076 => U+00000366 1077 => U+00000151 1078 => U+0000020D 1079 => U+00001ED1 1081 => U+00001ED3 1083 => U+00001ED7 1085 => U+00001ED5 1087 => U+00001ED9 1088 => U+0000020F 1089 => U+0000014F 1090 => U+000001D2 1091 => U+00001E4D 1092 => U+0000022D 1093 => U+00001E4F 1094 => U+0000014D 1095 => U+00001E53 1096 => U+00001E51 1097 => U+000004E7 1098 => U+0000022B 1099 => U+0000022F 1100 => U+00000231 1101 => U+00001ECF 1102 => U+00001ECD 1103 => U+000001EB 1104 => U+000001ED 1107 => U+0000018D 1108 => U+00000275 1109 => U+000004E9 1110 => U+0000F1AC 1111 => U+000004EB 1112 => U+000003B8 1113 => U+0000F1C9 1114 => U+00000473 1115 => U+0000F1AB 1116 => U+000001FF 1118 => U+00002205 1119 => U+000001A1 1120 => U+00001EDB 1121 => U+00001EDD 1122 => U+00001EE1 1123 => U+00001EDF 1124 => U+00001EE3 1125 => U+000003C3 1126 => U+000004A9 1127 => U+00001D11 1128 => U+00001D13 1129 => U+0000F1AD 1130 => U+00001D14 1131 => U+000001A3 1132 => U+00000223 1134 => U+00001D17 1135 => U+00001D55 1136 => U+00001D16 1137 => U+00001D54 1138 => U+0000041E 1139 => U+00001D3C 1140 => U+00001D0F 1141 => U+00000150 1142 => U+0000020C 1143 => U+00001ED0 1145 => U+00001ED2 1147 => U+00001ED6 1149 => U+00001ED4 1151 => U+00001ED8 1152 => U+0000020E 1153 => U+0000014E 1154 => U+000001D1 1155 => U+00001E4C 1156 => U+0000022C 1157 => U+00001E4E 1158 => U+0000014C 1159 => U+00001E52 1160 => U+00001E50 1161 => U+000004E6 1162 => U+0000022A 1163 => U+0000022E 1164 => U+00000230 1165 => U+00001ECE 1166 => U+00001ECC 1167 => U+000001EA 1168 => U+000001EC 1171 => U+0000019F 1172 => U+000004E8 1173 => U+000004EA 1174 => U+00000398 1175 => U+00000472 1176 => U+000001FE 1177 => U+000001A0 1178 => U+00001EDA 1179 => U+00001EDC 1180 => U+00001EE0 1181 => U+00001EDE 1182 => U+00001EE2 1183 => U+000004A8 1184 => U+00000276 1185 => U+0000F1AE 1186 => U+000001A2 1187 => U+00000222 1189 => U+00001D3D 1191 => U+00001D15 1193 => U+000003A9 1194 => U+00000298 1195 => U+00000440 1196 => U+00001D56 1197 => U+00001E55 1198 => U+00001E57 1199 => U+0000F22D 1200 => U+0000F210 1201 => U+0000048F 1202 => U+0000F24E 1203 => U+000000FE '' 1204 => U+000001A5 1206 => U+000001BF 1207 => U+00001D68 1208 => U+00000278 1209 => U+0000F1C3 1210 => U+00000444 1211 => U+00001D69 1212 => U+00001D60 1213 => U+00002C77 1214 => U+00000420 1215 => U+00001D3E 1216 => U+00001D18 1217 => U+00001D29 1218 => U+00001E54 1219 => U+00001E56 1220 => U+0000048E 1221 => U+0000F25C 1222 => U+000001A4 1223 => U+000020B1 1224 => U+000020A7 1225 => U+000000DE '' 1226 => U+000001F7 1227 => U+0001D513 1228 => U+00000424 1229 => U+00001D2A 1230 => U+000002A0 1231 => U+0000F211 1232 => U+000001AA 1233 => U+0000F241 1234 => U+0000F212 1235 => U+00001D63 1236 => U+0000F178 1237 => U+000002B3 1238 => U+0000036C 1239 => U+00000155 1240 => U+00000211 1241 => U+00000213 1242 => U+00000159 1243 => U+00001E59 1244 => U+00001E5F 1245 => U+00001E5B 1246 => U+00001E5D 1247 => U+00000157 1248 => U+0000F22E 1249 => U+0000F213 1250 => U+0000F24F 1251 => U+0000027D 1252 => U+0000027C 1253 => U+00000279 1254 => U+000002B4 1255 => U+0000027B 1256 => U+000002B5 1257 => U+0000F269 1258 => U+0000027A 1259 => U+0000027E 1260 => U+0000F250 1261 => U+00000285 1262 => U+0000027F 1263 => U+00001D3F 1264 => U+00000280 1265 => U+00000154 1266 => U+00000210 1267 => U+00000212 1268 => U+00000158 1269 => U+00001E58 1270 => U+00001E5E 1271 => U+00001E5A 1272 => U+00001E5C 1273 => U+00000156 1274 => U+0000F214 1275 => U+0000F215 1277 => U+000001A6 1278 => U+000020A8 1279 => U+0000211F 1280 => U+00001D1A 1281 => U+00000281 1282 => U+000002B6 1283 => U+0000042F 1284 => U+00001D19 1285 => U+0000044F 1286 => U+00000455 1287 => U+000002E2 1288 => U+0000015B 1289 => U+00001E65 1290 => U+0000015D 1291 => U+00000161 1292 => U+00001E67 1293 => U+00001E61 1294 => U+00001E63 1295 => U+00001E69 1296 => U+00000219 1298 => U+0000015F 1299 => U+00000282 1300 => U+0000F1C4 1301 => U+0000F22F 1302 => U+0000F251 1303 => U+0000F256 1304 => U+000001A8 1305 => U+00000283 1306 => U+0000F1AF 1307 => U+0000F216 1308 => U+0000F230 1309 => U+00000286 1310 => U+00000405 1311 => U+0000015A 1312 => U+00001E64 1313 => U+0000015C 1314 => U+00000160 1315 => U+00001E66 1316 => U+00001E60 1317 => U+00001E62 1318 => U+00001E68 1319 => U+00000218 1321 => U+0000015E 1322 => U+000001A7 1323 => U+000020B4 1324 => U+00001D57 1325 => U+0000036D 1326 => U+00001E97 1327 => U+00001E6B 1328 => U+00001E71 1329 => U+00001E6F 1330 => U+00001E6D 1331 => U+0000021B 1333 => U+00000165 1334 => U+00000163 1335 => U+000001AB 1336 => U+0000F1C5 1337 => U+00000167 1338 => U+0000F252 1339 => U+00002C66 1340 => U+000001AD 1341 => U+00000288 1342 => U+00000236 1343 => U+00001D7A 1344 => U+000002A8 1345 => U+000002A6 1346 => U+000002A7 1347 => U+00000287 1348 => U+00000442 1349 => U+000004AD 1350 => U+0000050F 1351 => U+000004B5 1352 => U+00000422 1353 => U+00001D40 1354 => U+00001D1B 1355 => U+00000164 1356 => U+00001E6A 1357 => U+00001E70 1358 => U+00001E6E 1359 => U+00001E6C 1360 => U+0000021A 1362 => U+00000162 1363 => U+00000166 1364 => U+000020AE 1365 => U+0000023E 1366 => U+000001AC 1368 => U+000001AE 1369 => U+000004AC 1370 => U+0000050E 1371 => U+000004B4 1372 => U+0000040B 1373 => U+00000402 1374 => U+00001D64 1375 => U+00001D58 1376 => U+00000367 1377 => U+00000171 1378 => U+00000215 1379 => U+00000217 1380 => U+0000016D 1381 => U+000001D4 1382 => U+00000169 1383 => U+00001E79 1384 => U+0000016B 1385 => U+00001E7B 1386 => U+000001D8 1387 => U+000001DC 1388 => U+000001DA 1389 => U+000001D6 1390 => U+0000016F 1391 => U+00001EE7 1392 => U+00001E77 1393 => U+00001E75 1394 => U+00001E73 1395 => U+00001EE5 1396 => U+00000173 1398 => U+0000F23E 1399 => U+00000289 1400 => U+0000F1B0 1401 => U+000001B0 1402 => U+00001EE9 1403 => U+00001EEB 1404 => U+00001EEF 1405 => U+00001EED 1406 => U+00001EF1 1407 => U+00001D6B 1408 => U+00001D1D 1409 => U+00001D59 1410 => U+00001D1E 1411 => U+0000028B 1412 => U+0000F1C6 1413 => U+0000028A 1414 => U+0000F1B1 1415 => U+0000F255 1416 => U+0000F259 1417 => U+00001D41 1418 => U+00001D1C 1419 => U+0000F1CC 1420 => U+00000170 1421 => U+00000214 1422 => U+00000216 1423 => U+0000016C 1424 => U+000001D3 1425 => U+00000168 1426 => U+00001E78 1427 => U+0000016A 1428 => U+00001E7A 1429 => U+000001D7 1430 => U+000001DB 1431 => U+000001D9 1432 => U+000001D5 1433 => U+0000016E 1434 => U+00001EE6 1435 => U+00001E76 1436 => U+00001E74 1437 => U+00001E72 1438 => U+00001EE4 1439 => U+00000172 1441 => U+0000F218 1442 => U+0000F23F 1443 => U+0000F1CD 1444 => U+000001AF 1445 => U+00001EE8 1446 => U+00001EEA 1447 => U+00001EEE 1448 => U+00001EEC 1449 => U+00001EF0 1450 => U+000001B2 1451 => U+000001B1 1453 => U+00002174 1454 => U+00001D65 1455 => U+00001D5B 1456 => U+0000036E 1457 => U+00001E7D 1458 => U+00001E7F 1459 => U+0000F231 1460 => U+0000F25F 1462 => U+0000F25E 1463 => U+00002175 1464 => U+00002176 1465 => U+00002177 1466 => U+0000028C 1467 => U+0000F1B3 1469 => U+00000264 1470 => U+0000F1B5 1472 => U+00000263 1473 => U+000002E0 1474 => U+000003B3 1475 => U+00001D67 1476 => U+00001D5E 1477 => U+00002164 1478 => U+00001D20 1479 => U+00001E7C 1480 => U+00001E7E 1481 => U+00002123 1482 => U+00002165 1483 => U+00002166 1484 => U+00002167 1485 => U+0000F219 1486 => U+00001D27 1487 => U+00000194 1488 => U+000002B7 1489 => U+00001E83 1490 => U+00001E81 1491 => U+00000175 1492 => U+00001E85 1493 => U+00001E87 1494 => U+00001E98 1495 => U+00001E89 1496 => U+0000F21A 1497 => U+000002AC 1498 => U+0000028D 1499 => U+00000277 1500 => U+00001D42 1501 => U+00001D21 1502 => U+00001E82 1503 => U+00001E80 1504 => U+00000174 1505 => U+00001E84 1506 => U+00001E86 1507 => U+00001E88 1508 => U+0000F21B 1509 => U+000020A9 1510 => U+00000445 1511 => U+00002179 1512 => U+00002093 1513 => U+000002E3 1514 => U+0000036F 1515 => U+00001E8D 1516 => U+00001E8B 1517 => U+0000F232 1518 => U+0000F329 1519 => U+0000F325 1520 => U+000004B3 1521 => U+0000217A 1522 => U+0000217B 1523 => U+000003C7 1524 => U+00001D6A 1525 => U+00001D61 1526 => U+00000425 1527 => U+00002169 1528 => U+00001E8C 1529 => U+00001E8A 1530 => U+0000F328 1531 => U+0000F324 1532 => U+000004B2 1533 => U+0000216A 1534 => U+0000216B 1535 => U+00000443 1536 => U+000002B8 1537 => U+000000FD '' 1538 => U+000004F3 1539 => U+00001EF3 1540 => U+00000177 1541 => U+0000045E 1542 => U+00001EF9 1543 => U+00000233 1544 => U+000004EF 1545 => U+000004F1 1546 => U+00001E8F 1547 => U+00001E99 1548 => U+00001EF7 1549 => U+00001EF5 1550 => U+0000F243 1551 => U+000001B4 1552 => U+000004AF 1553 => U+000004B1 1554 => U+0000028E 1555 => U+0000F1CE 1556 => U+0000F267 1557 => U+000003BB 1558 => U+0000019B 1559 => U+00000447 1560 => U+000004F5 1561 => U+000004B9 1562 => U+000004B7 1563 => U+000004CC 1564 => U+000004AE 1565 => U+0000028F 1566 => U+0000F1B4 1567 => U+000000DD '' 1568 => U+00001EF2 1569 => U+00000176 1570 => U+00001EF8 1571 => U+00000232 1572 => U+00001E8E 1573 => U+00001EF6 1574 => U+00001EF4 1575 => U+0000F244 1576 => U+000004B0 1578 => U+000001B3 1579 => U+00000423 1580 => U+000004F2 1581 => U+0000040E 1582 => U+000004EE 1583 => U+000004F0 1584 => U+00000427 1585 => U+000004F4 1586 => U+000004B8 1587 => U+000004B6 1588 => U+000004CB 1590 => U+0000F1B6 1591 => U+0000017A 1592 => U+00001E91 1593 => U+0000017E 1594 => U+0000017C 1595 => U+00001E95 1596 => U+00001E93 1597 => U+00000290 1598 => U+0000F1C7 1599 => U+0000F233 1600 => U+000001B6 1601 => U+0000F253 1602 => U+00000291 1603 => U+0000F1B7 1604 => U+00000225 1605 => U+0000F264 1606 => U+0000F257 1607 => U+00001D22 1608 => U+00000179 1609 => U+00001E90 1610 => U+0000017D 1611 => U+0000017B 1612 => U+00001E94 1613 => U+00001E92 1614 => U+0000F234 1615 => U+000001B5 1616 => U+00000224 1617 => U+0000F265 1618 => U+000001A9 1619 => U+0000F217 1621 => U+00000292 1622 => U+000004E1 1623 => U+0000F1B8 1624 => U+000001EF 1625 => U+0000F21C 1626 => U+0000F235 1627 => U+00000293 1629 => U+000001BA 1630 => U+000001B9 1631 => U+0000F245 1632 => U+0000021D 1633 => U+000001B7 1634 => U+000004E0 1635 => U+00001D23 1636 => U+000001EE 1637 => U+000001B8 1638 => U+0000021C 1639 => U+00000294 1640 => U+0000F1C8 1641 => U+0000F21E 1642 => U+00000241 1643 => U+000002A1 1644 => U+00000295 1645 => U+000002C1 1646 => U+000002E4 1647 => U+000002A2 1648 => U+00000296 1649 => U+000001BE 1650 => U+00001D24 1651 => U+00001D25 1652 => U+00001D5C 1653 => U+000020AA 1654 => U+00002080 1655 => U+00002070 1656 => U+00002081 1657 => U+000000B9 '' 1658 => U+00002082 1659 => U+000000B2 '' 1660 => U+000001BB 1661 => U+00002083 1662 => U+000000B3 '' 1663 => U+00002084 1664 => U+00002074 1665 => U+0000F246 1666 => U+00002085 1667 => U+00002075 1668 => U+000001BC 1669 => U+000001BD 1670 => U+00002086 1671 => U+00002076 1672 => U+00002087 1673 => U+00002077 1674 => U+00002088 1675 => U+00002078 1676 => U+00002089 1677 => U+00002079 1678 => U+0000215F 1679 => U+000000BD '' 1680 => U+00002153 1681 => U+000000BC '' 1682 => U+00002155 1683 => U+00002159 1684 => U+0000215B 1685 => U+00002154 1686 => U+00002156 1687 => U+000000BE '' 1688 => U+00002157 1689 => U+0000215C 1690 => U+00002158 1691 => U+0000215A 1692 => U+0000215D 1693 => U+0000215E 1694 => U+000001C3 1695 => U+0000F19E 1696 => U+0000F19F 1697 => U+0000203C 1698 => U+0000F26A 1700 => U+0000F21D 1702 => U+00002024 1703 => U+00002025 1704 => U+000002F8 1705 => U+0000F1E9 1707 => U+000002BB 1708 => U+00000312 1709 => U+0000201B 1710 => U+000002BD 1711 => U+00000314 1712 => U+000002BC 1714 => U+0000201F 1715 => U+000002EE 1716 => U+000002D0 1717 => U+000002D1 1718 => U+00000387 1719 => U+00002027 1720 => U+00002219 1721 => U+0000208D 1722 => U+0000207D 1723 => U+0000208E 1724 => U+0000207E 1725 => U+000027E6 1726 => U+000027E7 1727 => U+00002308 1728 => U+00002309 1729 => U+0000F134 1730 => U+0000F135 1731 => U+000001C0 1732 => U+000001C1 1733 => U+000001C2 1734 => U+00002016 1735 => U+000000A6 '' 1736 => U+000002CC 1737 => U+0000F196 1738 => U+00000337 1739 => U+00000338 1740 => U+00002010 1741 => U+00002011 1742 => U+000000AD '' 1743 => U+00002012 1744 => U+00002015 1745 => U+00002212 1746 => U+000002D7 1747 => U+0000208B 1748 => U+0000207B 1749 => U+00000320 1750 => U+00000335 1751 => U+00000336 1752 => U+000002CF 1753 => U+00000317 1754 => U+0000F197 1755 => U+00000301 1756 => U+00002032 1757 => U+000002B9 1758 => U+00002033 1759 => U+000002BA 1760 => U+000002F6 1761 => U+0000030B 1762 => U+00002034 1763 => U+00002057 1764 => U+000002CE 1765 => U+00000316 1766 => U+000002F4 1767 => U+0000F195 1768 => U+00000300 1769 => U+00002035 1770 => U+00002036 1771 => U+000002F5 1772 => U+0000030F 1773 => U+00002037 1774 => U+00002038 1775 => U+0000032D 1776 => U+0000F1E7 1777 => U+00000302 1782 => U+0000032F 1783 => U+00000311 1787 => U+00000352 1788 => U+00002040 1789 => U+00000361 1790 => U+0000FE20 1791 => U+0000FE21 1792 => U+0000032E 1793 => U+00000306 1798 => U+00000310 1800 => U+0000203F 1801 => U+0000F176 1802 => U+0000035D 1803 => U+0000F1E8 1804 => U+0000032C 1805 => U+0000030C 1806 => U+0000F174 1807 => U+0000F171 1808 => U+0000F172 1809 => U+0000F173 1810 => U+0000F179 1811 => U+0000F175 1812 => U+000002F7 1813 => U+00000330 1814 => U+00000334 1815 => U+00000303 1816 => U+0000034A 1817 => U+0000223C 1818 => U+00002053 1819 => U+0000034C 1820 => U+0000F17B 1821 => U+0000034B 1822 => U+00000360 1823 => U+0000FE22 1824 => U+0000FE23 1825 => U+0000033E 1826 => U+0000035B 1827 => U+00000359 1828 => U+00000353 1829 => U+000002DF 1830 => U+0000033D 1831 => U+000000D7 '' 1832 => U+0000032B 1833 => U+0000033C 1834 => U+000002CD 1835 => U+00000331 1837 => U+000002C9 1838 => U+00000304 1840 => U+0000035F 1841 => U+0000035E 1842 => U+00000332 1843 => U+00000305 1844 => U+00002017 1845 => U+00000333 1846 => U+00000347 1847 => U+0000033F 1848 => U+000002ED 1849 => U+0000F1EA 1850 => U+0000208C 1851 => U+0000207C 1852 => U+0000225F 1853 => U+00002261 1854 => U+00000324 1855 => U+00000308 1860 => U+0000F17A 1861 => U+00000323 1862 => U+00000307 1863 => U+00000358 1864 => U+00000326 1865 => U+00000313 1866 => U+00000315 1867 => U+0000031B 1868 => U+000002F3 1869 => U+00000325 1870 => U+0000030A 1871 => U+0000035A 1872 => U+0000031C 1873 => U+000002D3 1874 => U+000002BF 1875 => U+00000351 1876 => U+00000339 1877 => U+000002D2 1878 => U+000002BE 1879 => U+00000357 1880 => U+00000309 1881 => U+00000329 1882 => U+0000030D 1883 => U+00000348 1884 => U+0000030E 1885 => U+0000208A 1886 => U+0000031F 1887 => U+000002D6 1888 => U+0000207A 1889 => U+0000031E 1890 => U+000002D5 1891 => U+0000031D 1892 => U+000002D4 1893 => U+00000318 1894 => U+00000319 1895 => U+000002EB 1896 => U+000002EA 1897 => U+00000349 1898 => U+0000031A 1902 => U+0000F198 1903 => U+0000F199 1904 => U+0000F19A 1905 => U+0000F19B 1907 => U+0000A720 1908 => U+0000A721 1909 => U+000002FE 1910 => U+000002FD 1911 => U+000002AD 1912 => U+00000327 1913 => U+00000328 1916 => U+0000F170 1917 => U+0000032A 1918 => U+00000346 1919 => U+0000033A 1920 => U+00002423 1921 => U+0000033B 1922 => U+000002DE 2004 => U+0000F1D5 2005 => U+0000F1D6 2006 => U+0000F1D7 2007 => U+0000F1D8 2008 => U+0000F1D9 2013 => U+000002E5 2017 => U+000002E6 2021 => U+000002E7 2025 => U+000002E8 2029 => U+000002E9 2164 => U+0000F1DA 2165 => U+0000F1DB 2166 => U+0000F1DC 2167 => U+0000F1DD 2168 => U+0000F1DE 2173 => U+0000F1D0 2177 => U+0000F1D1 2181 => U+0000F1D2 2185 => U+0000F1D3 2189 => U+0000F1D4 2324 => U+0000F1F1 2334 => U+0000F1F2 2344 => U+0000F1F3 2354 => U+0000F1F4 2364 => U+0000F1F5 2374 => U+0000F1F6 2384 => U+0000F1F7 2394 => U+0000F1F8 2404 => U+0000F1F9 2487 => U+0000274D 2488 => U+00002023 2489 => U+00002193 2490 => U+0000F19D 2491 => U+00002191 2492 => U+0000F19C 2493 => U+0000034E 2494 => U+00002195 2495 => U+000021A8 2496 => U+00002190 2497 => U+000020EE 2498 => U+000020ED 2499 => U+000002FF 2500 => U+00002192 2501 => U+000020EF 2502 => U+000020EC 2503 => U+00000362 2504 => U+00002194 2505 => U+0000034D 2506 => U+0000219A 2507 => U+0000219B 2508 => U+000021D3 2509 => U+000021D1 2510 => U+000021D5 2511 => U+000021D0 2512 => U+000021D2 2513 => U+000021D4 2514 => U+00002196 2515 => U+00002198 2516 => U+00002197 2517 => U+00002199 2518 => U+00002713 2519 => U+00002213 2520 => U+000002C5 2521 => U+000002EF 2522 => U+000002C4 2523 => U+000002F0 2524 => U+000002C2 2525 => U+00001DFE 2526 => U+00000354 2527 => U+000002F1 2528 => U+000002C3 2529 => U+00000350 2530 => U+00000355 2531 => U+000002F2 2532 => U+00000356 2533 => U+00001DFF 2534 => U+0000F1E0 2535 => U+0000F1DF 2536 => U+0000F1E1 2537 => U+0000F1E2 2538 => U+0000F1E4 2539 => U+0000F1E3 2540 => U+0000F1E5 2541 => U+0000F1E6 2575 => U+0000034F 2576 => U+00002061 2577 => U+00002063 2578 => U+00002062 2579 => U+0000202A 2580 => U+0000200E 2581 => U+0000202D 2582 => U+0000202C 2583 => U+0000202B 2584 => U+0000200F 2585 => U+0000202E 2586 => U+0000FE00 2587 => U+0000FE01 2588 => U+0000FE02 2589 => U+0000FE03 2590 => U+0000FE04 2591 => U+0000FE05 2592 => U+0000FE06 2593 => U+0000FE07 2594 => U+0000FE08 2595 => U+0000FE09 2596 => U+0000FE0A 2597 => U+0000FE0B 2598 => U+0000FE0C 2599 => U+0000FE0D 2600 => U+0000FE0E 2601 => U+0000FE0F 2602 => U+00002060 2603 => U+0000200D 2604 => U+0000FEFF 2605 => U+0000200C 2606 => U+0000200B 2607 => U+0000206D 2608 => U+0000206B 2609 => U+0000206C 2610 => U+0000206A 2611 => U+0000FFF9 2612 => U+0000FFFA 2613 => U+0000FFFB 2614 => U+00002028 2615 => U+0000206E 2616 => U+0000206F 2617 => U+0000FFFC 2618 => U+00002029 2619 => U+00002001 2620 => U+00002003 2621 => U+0000202F 2622 => U+00002008 2623 => U+00002006 2624 => U+00002004 2625 => U+00002000 2626 => U+00002002 2627 => U+00002005 2628 => U+00002007 2629 => U+00002009 2630 => U+0000200A 2631 => U+0000FFFD 2632 => U+0000F130 2633 => U+0000F131 2634 => U+0000F132 2635 => U+0000F133 2636 => U+000002F9 2637 => U+000002FB 2638 => U+000002FA 2639 => U+000002FC 2675 [line-break] 2687 [phantom] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/dbg_enginecode.txt000066400000000000000000003337721411153030700271220ustar00rootroot00000000000000ENGINE CODE FOR RULES TABLE: substitution PASS: 0 PASS CONSTRAINTS: none NO RULES PASS: 1 PASS CONSTRAINTS: none RULE 1.0, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 10) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 104 Assoc 2 0 7 Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -7 PopRet CONSTRAINTS: none RULE 1.1, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 9) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 104 Assoc 2 0 6 Next CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -6 PopRet CONSTRAINTS: none RULE 1.2, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 8) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 104 Assoc 2 0 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 1.3, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 7) _ / ANY ANY ^ _ cTakesUDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 104 Assoc 2 0 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 1.4, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 6) _ / ANY ANY ^ _ cTakesUDia cDia _ ; ACTIONS: PutGlyph(V1&2) 104 Assoc 2 0 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 1.5, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 5) _ / ANY ANY ^ _ cTakesUDia _ ; ACTIONS: PutGlyph(V1&2) 104 Assoc 2 0 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 1.6, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 10) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 103 Assoc 2 0 7 Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -7 PopRet CONSTRAINTS: none RULE 1.7, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 9) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 103 Assoc 2 0 6 Next CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -6 PopRet CONSTRAINTS: none RULE 1.8, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 8) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 103 Assoc 2 0 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 1.9, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 7) _ / ANY ANY ^ _ cTakesUDia cDia cDia _ ; ACTIONS: PutGlyph(V1&2) 103 Assoc 2 0 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 1.10, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 6) _ / ANY ANY ^ _ cTakesUDia cDia _ ; ACTIONS: PutGlyph(V1&2) 103 Assoc 2 0 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 1.11, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 5) _ / ANY ANY ^ _ cTakesUDia _ ; ACTIONS: PutGlyph(V1&2) 103 Assoc 2 0 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 1.12, CharisRules.gdh(269): if (chinantec_tone == 1) cno_ChinantecTn > cChinantecTn / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 165 14 Next RetZero CONSTRAINTS: PushFeat 5 0 PushByte 1 Equal PopRet RULE 1.13, CharisRules.gdh(271): if (!(chinantec_tone == 1)) cChinantecTn > cno_ChinantecTn / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 138 68 Next RetZero CONSTRAINTS: PushFeat 5 0 PushByte 1 Equal Not PopRet RULE 1.14, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 8) _ / ANY ANY ^ _ cnHDia cnHDia cnHDia cnHDia _ ; ACTIONS: PutSubs(V1&2) 0 137 13 Assoc 2 0 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 1.15, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 7) _ / ANY ANY ^ _ cnHDia cnHDia cnHDia _ ; ACTIONS: PutSubs(V1&2) 0 137 13 Assoc 2 0 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 1.16, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 6) _ / ANY ANY ^ _ cnHDia cnHDia _ ; ACTIONS: PutSubs(V1&2) 0 137 13 Assoc 2 0 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 1.17, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 5) _ / ANY ANY ^ _ cnHDia _ ; ACTIONS: PutSubs(V1&2) 0 137 13 Assoc 2 0 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 1.18, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 4) _ / ANY ANY ^ _ _ ; ACTIONS: PutSubs(V1&2) 0 137 13 Assoc 2 0 1 Next Delete Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.19, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 8) _ / ANY ANY ^ _ cnODia cnODia cnODia cnODia _ ; ACTIONS: PutSubs(V1&2) 0 147 31 Assoc 2 0 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 1.20, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 7) _ / ANY ANY ^ _ cnODia cnODia cnODia _ ; ACTIONS: PutSubs(V1&2) 0 147 31 Assoc 2 0 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 1.21, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 6) _ / ANY ANY ^ _ cnODia cnODia _ ; ACTIONS: PutSubs(V1&2) 0 147 31 Assoc 2 0 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 1.22, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 5) _ / ANY ANY ^ _ cnODia _ ; ACTIONS: PutSubs(V1&2) 0 147 31 Assoc 2 0 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 1.23, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 4) _ / ANY ANY ^ _ _ ; ACTIONS: PutSubs(V1&2) 0 147 31 Assoc 2 0 1 Next Delete Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.24, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 8) _ / ANY ANY _ cnRDia cnRDia cnRDia cnRDia _ ; ACTIONS: PutSubs(V1&2) 0 141 18 Assoc 2 0 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next RetZero CONSTRAINTS: none RULE 1.25, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 7) _ / ANY ANY _ cnRDia cnRDia cnRDia _ ; ACTIONS: PutSubs(V1&2) 0 141 18 Assoc 2 0 4 Next CopyNext CopyNext CopyNext Delete Next RetZero CONSTRAINTS: none RULE 1.26, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 6) _ / ANY ANY _ cnRDia cnRDia _ ; ACTIONS: PutSubs(V1&2) 0 141 18 Assoc 2 0 3 Next CopyNext CopyNext Delete Next RetZero CONSTRAINTS: none RULE 1.27, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 5) _ / ANY ANY _ cnRDia _ ; ACTIONS: PutSubs(V1&2) 0 141 18 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: none RULE 1.28, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 4) _ / ANY ANY _ _ ; ACTIONS: PutSubs(V1&2) 0 141 18 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 1.29, CharisRules.gdh(292): if (viet == 1) _ c_aStack_noLit > g_a_sng_story:4 c_diacComb_vN / ANY ANY _ _{ literacy == 1 } ; endif; ACTIONS: Insert PutGlyph(V1&2) 113 Assoc 1 1 Next PutSubs(V1&2) 0 160 56 Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal CntxtItem 0 6 PushFeat 8 0 PushByte 1 Equal And PopRet RULE 1.30, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$8:(3 8) _ / ANY ANY _ cnUDia cnUDia cnUDia cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 5 140 57 Assoc 2 0 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.31, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$7:(3 7) _ / ANY ANY _ cnUDia cnUDia cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 4 140 57 Assoc 2 0 4 Next CopyNext CopyNext CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.32, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$6:(3 6) _ / ANY ANY _ cnUDia cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 3 140 57 Assoc 2 0 3 Next CopyNext CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.33, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$5:(3 5) _ / ANY ANY _ cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 2 140 57 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.34, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$4:(3 4) _ / ANY ANY _ _ ; endif; ACTIONS: PutSubs(V1&2) 1 140 57 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.35, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$8:(3 8) _ / ANY ANY _ cnUDia cnUDia cnUDia cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 5 140 58 Assoc 2 0 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.36, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$7:(3 7) _ / ANY ANY _ cnUDia cnUDia cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 4 140 58 Assoc 2 0 4 Next CopyNext CopyNext CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.37, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$6:(3 6) _ / ANY ANY _ cnUDia cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 3 140 58 Assoc 2 0 3 Next CopyNext CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.38, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$5:(3 5) _ / ANY ANY _ cnUDia _ ; endif; ACTIONS: PutSubs(V1&2) 2 140 58 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.39, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$4:(3 4) _ / ANY ANY _ _ ; endif; ACTIONS: PutSubs(V1&2) 1 140 58 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.40, CharisRules.gdh(296): if (viet == 1) cno_VN > cVN / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 179 54 Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 1.41, CharisRules.gdh(298): if (!(viet == 1)) cVN > cno_VN / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 159 83 Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal Not PopRet RULE 1.42, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / g__l g035F _ g035F g__l ; endif; ACTIONS: PutGlyph(V1&2) 99 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.43, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / g__l g035F _ g__l ; endif; ACTIONS: PutGlyph(V1&2) 99 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.44, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / ANY g__l _ g035F g__l ; endif; ACTIONS: PutGlyph(V1&2) 99 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.45, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / ANY g__l _ g__l ; endif; ACTIONS: PutGlyph(V1&2) 99 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.46, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / g__l g035F _ g035F g_l ; endif; ACTIONS: PutGlyph(V1&2) 98 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.47, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / g__l g035F _ g_l ; endif; ACTIONS: PutGlyph(V1&2) 98 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.48, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / ANY g__l _ g035F g_l ; endif; ACTIONS: PutGlyph(V1&2) 98 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.49, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / ANY g__l _ g_l ; endif; ACTIONS: PutGlyph(V1&2) 98 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.50, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / g_l g035F _ g035F g_l ; endif; ACTIONS: PutGlyph(V1&2) 97 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.51, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / g_l g035F _ g_l ; endif; ACTIONS: PutGlyph(V1&2) 97 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.52, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / ANY g_l _ g035F g_l ; endif; ACTIONS: PutGlyph(V1&2) 97 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.53, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / ANY g_l _ g_l ; endif; ACTIONS: PutGlyph(V1&2) 97 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.54, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / g__o g035F _ g035F g__u ; endif; ACTIONS: PutGlyph(V1&2) 102 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.55, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / g__o g035F _ g__u ; endif; ACTIONS: PutGlyph(V1&2) 102 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.56, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / ANY g__o _ g035F g__u ; endif; ACTIONS: PutGlyph(V1&2) 102 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.57, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / ANY g__o _ g__u ; endif; ACTIONS: PutGlyph(V1&2) 102 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.58, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / g__o g035F _ g035F g_u ; endif; ACTIONS: PutGlyph(V1&2) 101 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.59, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / g__o g035F _ g_u ; endif; ACTIONS: PutGlyph(V1&2) 101 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.60, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / ANY g__o _ g035F g_u ; endif; ACTIONS: PutGlyph(V1&2) 101 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.61, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / ANY g__o _ g_u ; endif; ACTIONS: PutGlyph(V1&2) 101 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.62, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / g_o g035F _ g035F g_u ; endif; ACTIONS: PutGlyph(V1&2) 100 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.63, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / g_o g035F _ g_u ; endif; ACTIONS: PutGlyph(V1&2) 100 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.64, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / ANY g_o _ g035F g_u ; endif; ACTIONS: PutGlyph(V1&2) 100 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.65, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / ANY g_o _ g_u ; endif; ACTIONS: PutGlyph(V1&2) 100 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 1.66, CharisRules.gdh(350): if (eng == 0) *GC0* > g__eng / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 111 Next RetZero CONSTRAINTS: PushFeat 10 0 PushByte 0 Equal PopRet RULE 1.67, CharisRules.gdh(354): if (eng == 1) *GC1* > cBaselineHook / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 11 Next RetZero CONSTRAINTS: PushFeat 10 0 PushByte 1 Equal PopRet RULE 1.68, CharisRules.gdh(358): if (eng == 2) *GC2* > g__eng_u_c_style / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 112 Next RetZero CONSTRAINTS: PushFeat 10 0 PushByte 2 Equal PopRet RULE 1.69, CharisRules.gdh(362): if (eng == 3) *GC3* > cKom / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 19 Next RetZero CONSTRAINTS: PushFeat 10 0 PushByte 3 Equal PopRet RULE 1.70, CharisRules.gdh(368): if (ramshorn == 0) *GC4* > g0264 / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 92 Next RetZero CONSTRAINTS: PushFeat 11 0 PushByte 0 Equal PopRet RULE 1.71, CharisRules.gdh(372): if (ramshorn == 1) *GC5* > g0264_lrgBowl / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 94 Next RetZero CONSTRAINTS: PushFeat 11 0 PushByte 1 Equal PopRet RULE 1.72, CharisRules.gdh(376): if (ramshorn == 2) *GC6* > g0264_gammaStyle / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 93 Next RetZero CONSTRAINTS: PushFeat 11 0 PushByte 2 Equal PopRet RULE 1.73, CharisRules.gdh(382): if (mongol_e == 1) cno_MongolStyle > cMongolStyle / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 170 30 Next RetZero CONSTRAINTS: PushFeat 25 0 PushByte 1 Equal PopRet RULE 1.74, CharisRules.gdh(384): if (!(mongol_e == 1)) cMongolStyle > cno_MongolStyle / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 146 72 Next RetZero CONSTRAINTS: PushFeat 25 0 PushByte 1 Equal Not PopRet RULE 1.75, CharisRules.gdh(398): if (short_breve == 1) cno_CyShortMrkAlt > cCyShortMrkAlt / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 16 Next RetZero CONSTRAINTS: PushFeat 28 0 PushByte 1 Equal PopRet RULE 1.76, CharisRules.gdh(400): if (!(short_breve == 1)) cCyShortMrkAlt > cno_CyShortMrkAlt / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 70 Next RetZero CONSTRAINTS: PushFeat 28 0 PushByte 1 Equal Not PopRet RULE 1.77, CharisRules.gdh(406): if (invis == 1) cno_ShowInv > cShowInv / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 174 43 Next RetZero CONSTRAINTS: PushFeat 31 0 PushByte 1 Equal PopRet RULE 1.78, CharisRules.gdh(420): if (literacy == 1) cno_SngBowl > cSngBowl / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 176 46 Next RetZero CONSTRAINTS: PushFeat 8 0 PushByte 1 Equal PopRet RULE 1.79, CharisRules.gdh(421): if (literacy == 1) cno_SngStory > cSngStory / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 177 47 Next RetZero CONSTRAINTS: PushFeat 8 0 PushByte 1 Equal PopRet RULE 1.80, CharisRules.gdh(422): if (literacy == 1) g01E5 > g01E5_barBowl_sngBowl / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 91 Next RetZero CONSTRAINTS: PushFeat 8 0 PushByte 1 Equal PopRet RULE 1.81, CharisRules.gdh(424): if (!(literacy == 1)) cSngBowl > cno_SngBowl / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 155 78 Next RetZero CONSTRAINTS: PushFeat 8 0 PushByte 1 Equal Not PopRet RULE 1.82, CharisRules.gdh(425): if (!(literacy == 1)) cSngStory > cno_SngStory / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 156 79 Next RetZero CONSTRAINTS: PushFeat 8 0 PushByte 1 Equal Not PopRet RULE 1.83, CharisRules.gdh(433): if (slant_italic == 1) g_f cfLigC2 > g_f_slant_italic cfLigC2_slantItalic / ANY ANY _ _ cDia ; endif; ACTIONS: PutGlyph(V1&2) 114 Next PutSubs(V1&2) 0 161 60 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 1.84, CharisRules.gdh(434): if (slant_italic == 1) g_f cfLigC2 > _ cfLig_slantItalic:(3 4) { comp.f1.ref = @3; comp.f2.ref = @4; } / ANY ANY _ _ ; endif; ACTIONS: Delete Next PutSubs(V1&2) 0 161 61 Assoc 2 -1 0 PushByte -1 IAttrSetSlot comp_ref 6 PushByte 0 IAttrSetSlot comp_ref 7 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 1.85, CharisRules.gdh(436): if (slant_italic == 1) g_f g_f cffLigC3 > g_f_slant_italic g_f_slant_italic cffLigC3_slantItalic / ANY ANY _ _ _ cDia ; endif; ACTIONS: PutGlyph(V1&2) 114 Next PutGlyph(V1&2) 114 Next PutSubs(V1&2) 0 162 63 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 1.86, CharisRules.gdh(437): if (slant_italic == 1) g_f g_f cffLigC3 > _ _ cffLig_slantItalic:(3 4 5) { comp.f1.ref = @3; comp.f2.ref = @4; comp.f3.ref = @5; } / ANY ANY _ _ _ ; endif; ACTIONS: Delete Next Delete Next PutSubs(V1&2) 0 162 64 Assoc 3 -2 -1 0 PushByte -2 IAttrSetSlot comp_ref 6 PushByte -1 IAttrSetSlot comp_ref 7 PushByte 0 IAttrSetSlot comp_ref 8 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 1.87, CharisRules.gdh(439): if (slant_italic == 1) cno_SlantItalic > cSlantItalic / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 175 44 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 1.88, CharisRules.gdh(440): if (slant_italic == 1) cno_2StorySlantItalic > c2StorySlantItalic / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 163 0 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 1.89, CharisRules.gdh(444): if (!(slant_italic == 1)) g_f cfLigC2 > @3 @4 / ANY ANY _ _ cDia ; endif; ACTIONS: PutCopy 0 Next PutCopy 0 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal Not PopRet RULE 1.90, CharisRules.gdh(445): if (!(slant_italic == 1)) g_f cfLigC2 > _ cfLig:(3 4) { comp.f1.ref = @3; comp.f2.ref = @4; } / ANY ANY _ _ ; endif; ACTIONS: Delete Next PutSubs(V1&2) 0 161 59 Assoc 2 -1 0 PushByte -1 IAttrSetSlot comp_ref 6 PushByte 0 IAttrSetSlot comp_ref 7 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal Not PopRet RULE 1.91, CharisRules.gdh(447): if (!(slant_italic == 1)) g_f g_f cffLigC3 > @3 @4 @5 / ANY ANY _ _ _ cDia ; endif; ACTIONS: PutCopy 0 Next PutCopy 0 Next PutCopy 0 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal Not PopRet RULE 1.92, CharisRules.gdh(448): if (!(slant_italic == 1)) g_f g_f cffLigC3 > _ _ cffLig:(3 4 5) { comp.f1.ref = @3; comp.f2.ref = @4; comp.f3.ref = @5; } / ANY ANY _ _ _ ; endif; ACTIONS: Delete Next Delete Next PutSubs(V1&2) 0 162 62 Assoc 3 -2 -1 0 PushByte -2 IAttrSetSlot comp_ref 6 PushByte -1 IAttrSetSlot comp_ref 7 PushByte 0 IAttrSetSlot comp_ref 8 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal Not PopRet RULE 1.93, CharisRules.gdh(451): if (!(slant_italic == 1)) cSlantItalic > cno_SlantItalic / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 154 76 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal Not PopRet RULE 1.94, CharisRules.gdh(452): if (!(slant_italic == 1)) c2StorySlantItalic > cno_2StorySlantItalic / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 134 65 Next RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal Not PopRet RULE 1.95, CharisRules.gdh(459): if (barred_bowl == 1) cno_BarBowl > cBarBowl / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 164 10 Next RetZero CONSTRAINTS: PushFeat 7 0 PushByte 1 Equal PopRet RULE 1.96, CharisRules.gdh(463): if (!(barred_bowl == 1)) cBarBowl > cno_BarBowl / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 136 66 Next RetZero CONSTRAINTS: PushFeat 7 0 PushByte 1 Equal Not PopRet RULE 1.97, CharisRules.gdh(468): if (ltnjstroke == 1) cno_TopSerifJStroke > cTopSerifJStroke / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 52 Next RetZero CONSTRAINTS: PushFeat 14 0 PushByte 1 Equal PopRet RULE 1.98, CharisRules.gdh(470): if (!(ltnjstroke == 1)) cTopSerifJStroke > cno_TopSerifJStroke / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 81 Next RetZero CONSTRAINTS: PushFeat 14 0 PushByte 1 Equal Not PopRet RULE 1.99, CharisRules.gdh(474): if (open_o == 1) cno_TopSerifOpenO > cTopSerifOpenO / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 178 53 Next RetZero CONSTRAINTS: PushFeat 16 0 PushByte 1 Equal PopRet RULE 1.100, CharisRules.gdh(476): if (!(open_o == 1)) cTopSerifOpenO > cno_TopSerifOpenO / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 158 82 Next RetZero CONSTRAINTS: PushFeat 16 0 PushByte 1 Equal Not PopRet RULE 1.101, CharisRules.gdh(480): if (v_hook == 1) cno_StraightLft > cStraightLft / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 49 Next RetZero CONSTRAINTS: PushFeat 20 0 PushByte 1 Equal PopRet RULE 1.102, CharisRules.gdh(482): if (!(v_hook == 1)) cStraightLft > cno_StraightLft / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 80 Next RetZero CONSTRAINTS: PushFeat 20 0 PushByte 1 Equal Not PopRet RULE 1.103, CharisRules.gdh(486): if (y_hook == 1) g01B3 > g01B3_rtHook / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 90 Next RetZero CONSTRAINTS: PushFeat 21 0 PushByte 1 Equal PopRet RULE 1.104, CharisRules.gdh(488): if (!(y_hook == 1)) g01B3_rtHook > g01B3 / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 89 Next RetZero CONSTRAINTS: PushFeat 21 0 PushByte 1 Equal Not PopRet RULE 1.105, CharisRules.gdh(492): if (n_hook == 1) g019D > g019D_lCStyle / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 86 Next RetZero CONSTRAINTS: PushFeat 15 0 PushByte 1 Equal PopRet RULE 1.106, CharisRules.gdh(494): if (!(n_hook == 1)) g019D_lCStyle > g019D / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 85 Next RetZero CONSTRAINTS: PushFeat 15 0 PushByte 1 Equal Not PopRet RULE 1.107, CharisRules.gdh(498): if (ezh_curl == 1) g0293 > g0293_lrgBowl / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 96 Next RetZero CONSTRAINTS: PushFeat 22 0 PushByte 1 Equal PopRet RULE 1.108, CharisRules.gdh(500): if (!(ezh_curl == 1)) g0293_lrgBowl > g0293 / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 95 Next RetZero CONSTRAINTS: PushFeat 22 0 PushByte 1 Equal Not PopRet RULE 1.109, CharisRules.gdh(504): if (t_hook == 1) g01AC > g01AC_rtHook / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 88 Next RetZero CONSTRAINTS: PushFeat 19 0 PushByte 1 Equal PopRet RULE 1.110, CharisRules.gdh(506): if (!(t_hook == 1)) g01AC_rtHook > g01AC / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 87 Next RetZero CONSTRAINTS: PushFeat 19 0 PushByte 1 Equal Not PopRet RULE 1.111, CharisRules.gdh(510): if (h_stroke == 1) cno_VertStrk > cVertStrk / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 55 Next RetZero CONSTRAINTS: PushFeat 13 0 PushByte 1 Equal PopRet RULE 1.112, CharisRules.gdh(512): if (!(h_stroke == 1)) cVertStrk > cno_VertStrk / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 84 Next RetZero CONSTRAINTS: PushFeat 13 0 PushByte 1 Equal Not PopRet RULE 1.113, CharisRules.gdh(516): if (r_tail == 1) g2C64 > g2C64_lCStyle / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 108 Next RetZero CONSTRAINTS: PushFeat 18 0 PushByte 1 Equal PopRet RULE 1.114, CharisRules.gdh(518): if (!(r_tail == 1)) g2C64_lCStyle > g2C64 / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 107 Next RetZero CONSTRAINTS: PushFeat 18 0 PushByte 1 Equal Not PopRet RULE 1.115, CharisRules.gdh(522): if (p_hook == 1) cno_BowlHook > cBowlHook / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 12 Next RetZero CONSTRAINTS: PushFeat 17 0 PushByte 1 Equal PopRet RULE 1.116, CharisRules.gdh(524): if (!(p_hook == 1)) cBowlHook > cno_BowlHook / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 67 Next RetZero CONSTRAINTS: PushFeat 17 0 PushByte 1 Equal Not PopRet RULE 1.117, CharisRules.gdh(528): if (rom == 1) cno_CommaStyle > cCommaStyle / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 166 15 Next RetZero CONSTRAINTS: PushFeat 4 0 PushByte 1 Equal PopRet RULE 1.118, CharisRules.gdh(530): if (!(rom == 1)) cCommaStyle > cno_CommaStyle / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 139 69 Next RetZero CONSTRAINTS: PushFeat 4 0 PushByte 1 Equal Not PopRet RULE 1.119, CharisRules.gdh(534): if (ezh == 1) cno_RevSigmaStyle > cRevSigmaStyle / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 173 34 Next RetZero CONSTRAINTS: PushFeat 23 0 PushByte 1 Equal PopRet RULE 1.120, CharisRules.gdh(536): if (!(ezh == 1)) cRevSigmaStyle > cno_RevSigmaStyle / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 150 75 Next RetZero CONSTRAINTS: PushFeat 23 0 PushByte 1 Equal Not PopRet RULE 1.121, CharisRules.gdh(542): if (apostrophe == 1) cno_Lrg > cLrg / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 169 29 Next RetZero CONSTRAINTS: PushFeat 26 0 PushByte 1 Equal PopRet RULE 1.122, CharisRules.gdh(544): if (!(apostrophe == 1)) cLrg > cno_Lrg / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 145 71 Next RetZero CONSTRAINTS: PushFeat 26 0 PushByte 1 Equal Not PopRet RULE 1.123, CharisRules.gdh(548): if (ou == 1) cno_OpenTop > cOpenTop / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 171 32 Next RetZero CONSTRAINTS: PushFeat 24 0 PushByte 1 Equal PopRet RULE 1.124, CharisRules.gdh(550): if (!(ou == 1)) cOpenTop > cno_OpenTop / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 148 73 Next RetZero CONSTRAINTS: PushFeat 24 0 PushByte 1 Equal Not PopRet RULE 1.125, CharisRules.gdh(554): if (emptyset == 1) cno_SlashZero > cSlashZero / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 45 Next RetZero CONSTRAINTS: PushFeat 30 0 PushByte 1 Equal PopRet RULE 1.126, CharisRules.gdh(556): if (!(emptyset == 1)) cSlashZero > cno_SlashZero / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 77 Next RetZero CONSTRAINTS: PushFeat 30 0 PushByte 1 Equal Not PopRet RULE 1.127, CharisRules.gdh(560): if (modlowcolon == 1) gF1E9 > gF1E9_wide / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 110 Next RetZero CONSTRAINTS: PushFeat 27 0 PushByte 1 Equal PopRet RULE 1.128, CharisRules.gdh(562): if (!(modlowcolon == 1)) gF1E9_wide > gF1E9 / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 109 Next RetZero CONSTRAINTS: PushFeat 27 0 PushByte 1 Equal Not PopRet RULE 1.129, CharisRules.gdh(575): if (cyrillic_shha == 1) g04BB > g04BB_uCStyle / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 106 Next RetZero CONSTRAINTS: PushFeat 29 0 PushByte 1 Equal PopRet RULE 1.130, CharisRules.gdh(577): if (!(cyrillic_shha == 1)) g04BB_uCStyle > g04BB / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 105 Next RetZero CONSTRAINTS: PushFeat 29 0 PushByte 1 Equal Not PopRet RULE 1.131, CharisPitches.gdh(219): if (supernum) cRightTone > cSupNum / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 153 51 Next RetZero CONSTRAINTS: PushFeat 0 0 PopRet RULE 1.132, CharisPitches.gdh(220): if (supernum) cLeftTone > cSupNum / ANY ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 144 51 Next RetZero CONSTRAINTS: PushFeat 0 0 PopRet RULE 1.133, CharisPitches.gdh(237): if (!(supernum) && hide_tone_staff) cRightTone1 cRightTone > cRightTone1Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 37 Next PutSubs(V1&2) 0 153 36 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 And PopRet RULE 1.134, CharisPitches.gdh(238): if (!(supernum) && hide_tone_staff) cRightTone2 cRightTone > cRightTone2Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 38 Next PutSubs(V1&2) 0 153 36 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 And PopRet RULE 1.135, CharisPitches.gdh(239): if (!(supernum) && hide_tone_staff) cRightTone3 cRightTone > cRightTone3Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 39 Next PutSubs(V1&2) 0 153 36 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 And PopRet RULE 1.136, CharisPitches.gdh(240): if (!(supernum) && hide_tone_staff) cRightTone4 cRightTone > cRightTone4Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 40 Next PutSubs(V1&2) 0 153 36 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 And PopRet RULE 1.137, CharisPitches.gdh(241): if (!(supernum) && hide_tone_staff) cRightTone5 cRightTone > cRightTone5Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 41 Next PutSubs(V1&2) 0 153 36 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 And PopRet RULE 1.138, CharisPitches.gdh(245): if (!(supernum) && !(hide_tone_staff)) cRightTone1 cRightTone > cRightTone1Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 37 Next PutSubs(V1&2) 0 153 35 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 Not And PopRet RULE 1.139, CharisPitches.gdh(246): if (!(supernum) && !(hide_tone_staff)) cRightTone2 cRightTone > cRightTone2Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 38 Next PutSubs(V1&2) 0 153 35 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 Not And PopRet RULE 1.140, CharisPitches.gdh(247): if (!(supernum) && !(hide_tone_staff)) cRightTone3 cRightTone > cRightTone3Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 39 Next PutSubs(V1&2) 0 153 35 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 Not And PopRet RULE 1.141, CharisPitches.gdh(248): if (!(supernum) && !(hide_tone_staff)) cRightTone4 cRightTone > cRightTone4Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 40 Next PutSubs(V1&2) 0 153 35 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 Not And PopRet RULE 1.142, CharisPitches.gdh(249): if (!(supernum) && !(hide_tone_staff)) cRightTone5 cRightTone > cRightTone5Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; ACTIONS: PutSubs(V1&2) 1 153 41 Next PutSubs(V1&2) 0 153 35 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 Not And PopRet RULE 1.143, CharisPitches.gdh(255): if (!(supernum) && hide_tone_staff) cLeftTone > cLeftStaff_no$3 / ANY ANY ^ _ cLeftTone ; endif; ACTIONS: PutSubs(V1&2) 0 144 21 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 And PopRet RULE 1.144, CharisPitches.gdh(258): if (!(supernum) && !(hide_tone_staff)) cLeftTone > cLeftStaff$3 / ANY ANY ^ _ cLeftTone ; endif; ACTIONS: PutSubs(V1&2) 0 144 20 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 0 0 Not PushFeat 1 0 Not And PopRet RULE 1.145, CharisPitches.gdh(263): cLeftContourOrStaff1 cLeftTone > @3 cLeftTone1Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; ACTIONS: PutCopy 0 Next PutSubs(V1&2) 0 144 22 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.146, CharisPitches.gdh(264): cLeftContourOrStaff2 cLeftTone > @3 cLeftTone2Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; ACTIONS: PutCopy 0 Next PutSubs(V1&2) 0 144 23 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.147, CharisPitches.gdh(265): cLeftContourOrStaff3 cLeftTone > @3 cLeftTone3Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; ACTIONS: PutCopy 0 Next PutSubs(V1&2) 0 144 24 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.148, CharisPitches.gdh(266): cLeftContourOrStaff4 cLeftTone > @3 cLeftTone4Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; ACTIONS: PutCopy 0 Next PutSubs(V1&2) 0 144 25 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.149, CharisPitches.gdh(267): cLeftContourOrStaff5 cLeftTone > @3 cLeftTone5Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; ACTIONS: PutCopy 0 Next PutSubs(V1&2) 0 144 26 PushGlyphAttr(V1&2) 90 -1 PushGlyphAttr(V1&2) 90 0 Equal PushISlotAttr user -1 0 PushByte 2 NotEq And PushByte 1 PushByte 2 Cond IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.150, CharisPitches.gdh(602): if (pitch9 < 2) g_space > g_pitchSpace / ANY *GC8* _ *GC9* ; endif; ACTIONS: PutGlyph(V1&2) 117 Next RetZero CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.151, CharisPitches.gdh(605): if (pitch9 < 2) g_pitchSpace > @3 / ANY ANY _ cno_LinesXXX ; endif; ACTIONS: PutCopy 0 Next RetZero CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.152, CharisPitches.gdh(607): if (pitch9 < 2) *GC10* > g_noPitchSpace / ANY ^ g_pitchSpace _ ; endif; ACTIONS: PutGlyph(V1&2) 116 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.153, CharisPitches.gdh(609): if (pitch9 < 2) g_pitchSpace > g_noPitchSpace / ANY ANY _ ; endif; ACTIONS: PutGlyph(V1&2) 116 Next RetZero CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.154, CharisPitches.gdh(617): if (pitch9 < 2) *GC11* c9PitchX > @3 { user1 = 1; } c9Pitch1X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.155, CharisPitches.gdh(618): if (pitch9 < 2) *GC12* c9PitchX > @3 { user1 = 1; } c9Pitch2X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 2 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.156, CharisPitches.gdh(619): if (pitch9 < 2) *GC13* c9PitchX > @3 { user1 = 1; } c9Pitch3X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 3 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.157, CharisPitches.gdh(620): if (pitch9 < 2) *GC14* c9PitchX > @3 { user1 = 1; } c9Pitch4X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 4 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.158, CharisPitches.gdh(621): if (pitch9 < 2) *GC15* c9PitchX > @3 { user1 = 1; } c9Pitch5X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 5 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.159, CharisPitches.gdh(622): if (pitch9 < 2) *GC16* c9PitchX > @3 { user1 = 1; } c9Pitch6X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 6 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.160, CharisPitches.gdh(623): if (pitch9 < 2) *GC17* c9PitchX > @3 { user1 = 1; } c9Pitch7X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 7 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.161, CharisPitches.gdh(624): if (pitch9 < 2) *GC18* c9PitchX > @3 { user1 = 1; } c9Pitch8X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 8 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet RULE 1.162, CharisPitches.gdh(625): if (pitch9 < 2) *GC19* c9PitchX > @3 { user1 = 1; } c9Pitch9X / ANY ANY _ ^ _ ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutSubs(V1&2) 0 135 9 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less PopRet PASS: 2 PASS CONSTRAINTS: none RULE 2.0, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cnUDia cnUDia cUDia ; ACTIONS: PutSubs(V1&2) 0 167 17 Next RetZero CONSTRAINTS: none RULE 2.1, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cnUDia cUDia ; ACTIONS: PutSubs(V1&2) 0 167 17 Next RetZero CONSTRAINTS: none RULE 2.2, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cUDia ; ACTIONS: PutSubs(V1&2) 0 167 17 Next RetZero CONSTRAINTS: none RULE 2.3, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cUDia ; ACTIONS: PutSubs(V1&2) 0 167 17 Next RetZero CONSTRAINTS: none RULE 2.4, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cUDia ; ACTIONS: PutSubs(V1&2) 0 167 17 Next RetZero CONSTRAINTS: none RULE 2.5, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cnUDia cnUDia cUDia ; ACTIONS: PutGlyph(V1&2) 115 Next Insert PutSubs(V1&2) 0 157 48 Assoc 1 0 Next RetZero CONSTRAINTS: none RULE 2.6, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cnUDia cUDia ; ACTIONS: PutGlyph(V1&2) 115 Next Insert PutSubs(V1&2) 0 157 48 Assoc 1 0 Next RetZero CONSTRAINTS: none RULE 2.7, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cUDia ; ACTIONS: PutGlyph(V1&2) 115 Next Insert PutSubs(V1&2) 0 157 48 Assoc 1 0 Next RetZero CONSTRAINTS: none RULE 2.8, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cUDia ; ACTIONS: PutGlyph(V1&2) 115 Next Insert PutSubs(V1&2) 0 157 48 Assoc 1 0 Next RetZero CONSTRAINTS: none RULE 2.9, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cUDia ; ACTIONS: PutGlyph(V1&2) 115 Next Insert PutSubs(V1&2) 0 157 48 Assoc 1 0 Next RetZero CONSTRAINTS: none RULE 2.10, CharisRules.gdh(595): if (ogonek == 1) cno_RetroHookStyle > cRetroHookStyle / ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 172 33 Next RetZero CONSTRAINTS: PushFeat 12 0 PushByte 1 Equal PopRet RULE 2.11, CharisRules.gdh(597): if (!(ogonek == 1)) cRetroHookStyle > cno_RetroHookStyle / ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 149 74 Next RetZero CONSTRAINTS: PushFeat 12 0 PushByte 1 Equal Not PopRet RULE 2.12, CharisRules.gdh(618): cno_Sup > cSup / *GC7* _ ; ACTIONS: PutGlyph(V1&2) 50 Next RetZero CONSTRAINTS: none RULE 2.13, CharisPitches.gdh(276): _ cRightStaff > cRightToneHoriz$3:3 @3 / ANY _ _{ user1 == 1 } ; ACTIONS: Insert PutSubs(V1&2) 1 151 42 Assoc 1 1 Next PutCopy 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal PopRet RULE 2.14, CharisPitches.gdh(277): _ cRightStaff_no > cRightToneHoriz$3:3 @3 / ANY _ _{ user1 == 1 } ; ACTIONS: Insert PutSubs(V1&2) 1 152 42 Assoc 1 1 Next PutCopy 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal PopRet RULE 2.15, CharisPitches.gdh(286): cLeftContourOrStaff { user2 = 1; } / ANY _{ user2 == 0 } cLeftContour{ user2 == 0 } ; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal CntxtItem 1 7 PushISlotAttr user 0 1 PushByte 0 Equal And PopRet RULE 2.16, CharisPitches.gdh(289): cLeftContour { user2 = 2; } / ^ cLeftContourOrStaff{ user2 == 1 } _{ user1 == 1 } ; ACTIONS: PutCopy 0 PushByte 2 IAttrSet user 1 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem -1 7 PushISlotAttr user 0 1 PushByte 1 Equal CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal And PopRet RULE 2.17, CharisPitches.gdh(294): cLeftStaff _ > @2 cLeftToneHoriz$2:2 / ANY _ _ cLeftContour{ (user2 == 2) && (user1 == 1) } ; ACTIONS: PutCopy 0 Next Insert PutSubs(V1&2) 0 142 27 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 1 15 PushISlotAttr user 0 1 PushByte 2 Equal PushISlotAttr user 0 0 PushByte 1 Equal And PopRet RULE 2.18, CharisPitches.gdh(296): cLeftStaff_no _ > @2 cLeftToneHoriz$2:2 / ANY _ _ cLeftContour{ (user2 == 2) && (user1 == 1) } ; ACTIONS: PutCopy 0 Next Insert PutSubs(V1&2) 0 143 27 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 1 15 PushISlotAttr user 0 1 PushByte 2 Equal PushISlotAttr user 0 0 PushByte 1 Equal And PopRet RULE 2.19, CharisPitches.gdh(639): if (pitch9 < 2) c9PitchX > @2 { user2 = 1; } / ANY ^ _{ (user2 == 0) && (user1 == 0) } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 15 PushISlotAttr user 0 1 PushByte 0 Equal PushISlotAttr user 0 0 PushByte 0 Equal And And PopRet RULE 2.20, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11 g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.21, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.22, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.23, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.24, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22 g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.25, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.26, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.27, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.28, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33 g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.29, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.30, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.31, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.32, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44 g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.33, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.34, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.35, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.36, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55 g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.37, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.38, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.39, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.40, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66 g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.41, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.42, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.43, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.44, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77 g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.45, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.46, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.47, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.48, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88 g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.49, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.50, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.51, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.52, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99 g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.53, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.54, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.55, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99{ user1 == 0 } ; endif; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal And CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 2.56, CharisPitches.gdh(655): if (pitch9 < 2) c9PitchX c9PitchXX > _ @3:(2 3) { comp.p1.ref = @2; comp.p2.ref = @3; } / ANY _{ user2 != 1 } ^ _ ; endif; ACTIONS: Delete Next PutCopy 0 Assoc 2 -1 0 PushByte -1 IAttrSetSlot comp_ref 4 PushByte 0 IAttrSetSlot comp_ref 5 Next PushByte -1 PopRet CONSTRAINTS: PushFeat 2 0 PushByte 2 Less CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 1 NotEq And PopRet RULE 2.57, CharisPitches.gdh(662): if ((pitch9 == 1) || (pitch9 == 3)) cno_LinesXXX > cLinesXXX / ANY _ ; endif; ACTIONS: PutSubs(V1&2) 0 168 28 Next RetZero CONSTRAINTS: PushFeat 2 0 PushByte 1 Equal PushFeat 2 0 PushByte 3 Equal Or PopRet TABLE: positioning PASS: 0 PASS CONSTRAINTS: none NO RULES PASS: 3 PASS CONSTRAINTS: none RULE 3.0, CharisPitches.gdh(308): cRightContour { user3 = bb.left; user4 = bb.right; } cRightContourOrStaff { attach {to = @1; at = TL; with = TML; } insert = 1; } / _ ^ _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_left 0 0 IAttrSet user 2 PushGlyphMetric bb_right 0 0 IAttrSet user 3 Next PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 72 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 73 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 74 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 75 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none RULE 3.1, CharisPitches.gdh(312): cLeftContourOrStaff cLeftContour { attach {to = @1; at = TL; with = TML; } insert = 1; } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 72 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 73 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 74 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 75 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none RULE 3.2, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.3, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.4, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.5, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.6, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.7, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.8, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.9, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.10, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.11, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.12, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia cnODia cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.13, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.14, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.15, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.16, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.17, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.18, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.19, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.20, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.21, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.22, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.23, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.24, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.25, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.26, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.27, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.28, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.29, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.30, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.31, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 30 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 31 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 80 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 81 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.32, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.33, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.34, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.35, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.36, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 32 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 33 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 78 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 79 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.37, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia cnODia cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.38, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.39, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.40, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.41, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 34 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 35 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 82 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 83 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.42, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.43, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.44, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.45, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.46, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 36 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 37 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 70 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 71 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.47, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.48, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.49, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.50, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia _{ user1 == 0 } ; endif; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.51, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr(V1&2) 38 0 AttrSet attach_at_x PushAttToGlyphAttr(V1&2) 39 0 AttrSet attach_at_y PushGlyphAttr(V1&2) 76 0 AttrSet attach_with_x PushGlyphAttr(V1&2) 77 0 AttrSet attach_with_y PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: PushFeat 32 0 Not CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 3.52, CharisRules.gdh(655): cBridgeDiac { advance.x = 0; } ; ACTIONS: PutCopy 0 PushByte 0 AttrSet advance_x Next RetZero CONSTRAINTS: none PASS: 4 PASS CONSTRAINTS: none RULE 4.0, CharisRules.gdh(668): cUDblDia { shift.y = ((@1.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesUDia cDia cDia cDia cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -6 1 PushGlyphMetric bb_top 1 1 Max PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -6 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.1, CharisRules.gdh(668): cUDblDia { shift.y = ((@2.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesUDia cDia cDia cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -5 1 PushGlyphMetric bb_top 1 1 Max PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -5 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.2, CharisRules.gdh(668): cUDblDia { shift.y = ((@3.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesUDia cDia cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -4 1 PushGlyphMetric bb_top 1 1 Max PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -4 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.3, CharisRules.gdh(668): cUDblDia { shift.y = ((@4.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesUDia cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -3 1 PushGlyphMetric bb_top 1 1 Max PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -3 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.4, CharisRules.gdh(668): cUDblDia { shift.y = ((@5.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesUDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -2 1 PushGlyphMetric bb_top 1 1 Max PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -2 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.5, CharisRules.gdh(668): cUDblDia { shift.y = ((@6.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesUDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -1 1 PushGlyphMetric bb_top 1 1 Max PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -1 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.6, CharisRules.gdh(672): cUDblDia { shift.y = (@1.bb.top - @7.bb.bottom) + 205; insert = 1; } / cTakesUDia cDia cDia cDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -6 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.7, CharisRules.gdh(672): cUDblDia { shift.y = (@2.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY cTakesUDia cDia cDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -5 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.8, CharisRules.gdh(672): cUDblDia { shift.y = (@3.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY cTakesUDia cDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -4 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.9, CharisRules.gdh(672): cUDblDia { shift.y = (@4.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY cTakesUDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -3 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.10, CharisRules.gdh(672): cUDblDia { shift.y = (@5.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY cTakesUDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -2 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.11, CharisRules.gdh(672): cUDblDia { shift.y = (@6.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY cTakesUDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top -1 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.12, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY cDia cDia cDia cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top 1 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.13, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY cDia cDia cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top 1 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.14, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY cDia cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top 1 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.15, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY cDia cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top 1 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.16, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY cDia _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top 1 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 4.17, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY ANY _ cTakesUDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_top 1 1 PushGlyphMetric bb_bottom 0 0 Sub PushShort 205 Add AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none PASS: 5 PASS CONSTRAINTS: none RULE 5.0, CharisRules.gdh(684): g035F { shift.y = ((@1.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -6 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 0 PushGlyphMetric bb_width -6 0 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.1, CharisRules.gdh(684): g035F { shift.y = ((@2.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -5 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 0 PushGlyphMetric bb_width -5 0 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.2, CharisRules.gdh(684): g035F { shift.y = ((@3.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -4 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 0 PushGlyphMetric bb_width -4 0 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.3, CharisRules.gdh(684): g035F { shift.y = ((@4.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -3 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 0 PushGlyphMetric bb_width -3 0 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.4, CharisRules.gdh(684): g035F { shift.y = ((@5.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -2 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 0 PushGlyphMetric bb_width -2 0 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.5, CharisRules.gdh(684): g035F { shift.y = ((@6.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -1 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 0 PushGlyphMetric bb_width -1 0 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.6, CharisRules.gdh(687): cLDblDia { shift.y = ((@1.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -6 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -6 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.7, CharisRules.gdh(687): cLDblDia { shift.y = ((@2.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -5 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -5 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.8, CharisRules.gdh(687): cLDblDia { shift.y = ((@3.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -4 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -4 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.9, CharisRules.gdh(687): cLDblDia { shift.y = ((@4.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -3 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -3 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.10, CharisRules.gdh(687): cLDblDia { shift.y = ((@5.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -2 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -2 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.11, CharisRules.gdh(687): cLDblDia { shift.y = ((@6.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -1 1 PushGlyphMetric bb_bottom 1 1 Min PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushGlyphMetric bb_width 1 1 PushGlyphMetric bb_width -1 1 Sub PushByte 2 Div AttrSet shift_x PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.12, CharisRules.gdh(690): cLDblDia { shift.y = (@1.bb.bottom - @7.bb.top) - 205; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -6 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.13, CharisRules.gdh(690): cLDblDia { shift.y = (@2.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -5 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.14, CharisRules.gdh(690): cLDblDia { shift.y = (@3.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -4 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.15, CharisRules.gdh(690): cLDblDia { shift.y = (@4.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -3 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.16, CharisRules.gdh(690): cLDblDia { shift.y = (@5.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -2 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.17, CharisRules.gdh(690): cLDblDia { shift.y = (@6.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom -1 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.18, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY cDia cDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom 1 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.19, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY cDia cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom 1 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.20, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY cDia cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom 1 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.21, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY cDia cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom 1 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.22, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY cDia _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom 1 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 5.23, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY ANY _ cTakesLDia ; ACTIONS: PutCopy 0 PushGlyphMetric bb_bottom 1 1 PushGlyphMetric bb_top 0 0 Sub PushShort 205 Sub AttrSet shift_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/dbg_fsm.txt000066400000000000000000024007341411153030700256020ustar00rootroot00000000000000FINITE STATE MACHINES TABLE: substitution PASS: 0--no FSM PASS: 1 Glyph ID => Column: 0 .. 2 => 0 3 => 1 4 .. 15 => 0 16 => 2 17 .. 18 => 0 19 .. 28 => 2 29 .. 35 => 0 36 => 3 37 => 2 38 => 4 39 => 2 40 => 5 41 => 2 42 => 4 43 .. 45 => 2 46 => 4 47 => 6 48 => 2 49 => 4 50 => 7 51 .. 52 => 2 53 .. 55 => 4 56 => 8 57 .. 61 => 2 62 .. 64 => 0 65 => 2 66 => 0 67 => 2 68 => 9 69 => 2 70 => 4 71 => 2 72 => 5 73 => 10 74 => 11 75 => 2 76 => 12 77 => 2 78 => 4 79 => 13 80 => 2 81 => 4 82 => 14 83 .. 84 => 2 85 .. 87 => 4 88 => 15 89 => 16 90 .. 92 => 2 93 => 16 94 .. 97 => 0 98 .. 104 => 2 105 .. 108 => 17 109 => 18 110 => 17 111 .. 129 => 2 130 .. 136 => 0 137 => 2 138 .. 140 => 0 141 .. 142 => 2 143 => 0 144 .. 145 => 2 146 .. 152 => 0 153 => 2 154 => 0 155 => 2 156 .. 159 => 0 160 => 19 161 => 2 162 .. 165 => 0 166 => 2 167 .. 171 => 0 172 .. 177 => 2 178 .. 185 => 0 186 .. 187 => 2 188 .. 198 => 0 199 .. 214 => 2 215 => 16 216 .. 218 => 0 219 => 2 220 .. 224 => 0 225 => 2 226 => 20 227 .. 229 => 2 230 => 21 231 .. 232 => 17 233 => 22 234 => 23 235 => 22 236 => 23 237 => 22 238 => 24 239 => 22 240 => 23 241 .. 243 => 17 244 => 22 245 => 24 246 => 22 247 => 24 248 => 22 249 => 24 250 => 22 251 => 24 252 => 2 253 .. 254 => 17 255 => 2 256 .. 261 => 17 262 => 18 263 .. 264 => 17 265 .. 267 => 2 268 .. 269 => 20 270 => 19 271 => 20 272 .. 273 => 2 274 => 25 275 => 2 276 .. 305 => 25 306 .. 309 => 2 310 => 20 311 .. 323 => 2 324 => 26 325 => 23 326 => 26 327 => 23 328 => 26 329 => 24 330 => 26 331 => 23 332 .. 334 => 2 335 => 26 336 => 24 337 => 26 338 => 24 339 => 26 340 => 24 341 => 26 342 => 24 343 .. 357 => 2 358 => 0 359 .. 370 => 2 371 => 27 372 => 28 373 .. 407 => 2 408 => 21 409 .. 415 => 2 416 => 0 417 .. 420 => 2 421 => 29 422 => 30 423 => 29 424 => 30 425 => 29 426 => 30 427 .. 429 => 2 430 => 31 431 => 2 432 => 32 433 .. 443 => 2 444 .. 448 => 0 449 => 29 450 => 30 451 => 29 452 => 30 453 => 0 454 => 2 455 => 31 456 => 2 457 => 32 458 .. 460 => 2 461 => 21 462 .. 468 => 2 469 => 27 470 => 28 471 => 0 472 .. 510 => 2 511 .. 515 => 0 516 .. 518 => 2 519 => 21 520 .. 521 => 2 522 => 26 523 => 23 524 => 26 525 => 23 526 => 26 527 => 24 528 => 26 529 => 23 530 .. 585 => 2 586 => 26 587 => 23 588 => 26 589 => 23 590 => 26 591 => 24 592 => 26 593 => 23 594 .. 627 => 2 628 => 33 629 .. 632 => 2 633 => 34 634 => 35 635 => 34 636 => 35 637 => 34 638 => 35 639 => 0 640 => 34 641 => 35 642 => 0 643 => 34 644 => 35 645 => 0 646 .. 652 => 2 653 => 16 654 => 33 655 => 16 656 => 33 657 => 16 658 => 33 659 => 2 660 => 0 661 .. 671 => 2 672 .. 678 => 36 679 => 37 680 => 38 681 => 39 682 .. 683 => 2 684 .. 690 => 39 691 => 2 692 => 39 693 .. 708 => 2 709 => 0 710 .. 711 => 2 712 => 21 713 .. 735 => 2 736 => 40 737 => 41 738 .. 763 => 2 764 => 42 765 => 43 766 .. 782 => 2 783 => 33 784 .. 787 => 2 788 => 21 789 .. 804 => 2 805 => 16 806 .. 807 => 33 808 .. 875 => 2 876 => 44 877 => 45 878 .. 926 => 2 927 => 0 928 .. 938 => 2 939 => 33 940 .. 964 => 2 965 .. 966 => 0 967 .. 988 => 2 989 => 21 990 .. 994 => 2 995 => 0 996 ..1014 => 2 1015 => 0 1016 ..1053 => 2 1054 => 0 1055 => 46 1056 => 47 1057 ..1058 => 2 1059 => 48 1060 => 49 1061 => 50 1062 => 2 1063 => 51 1064 ..1065 => 2 1066 => 0 1067 ..1075 => 2 1076 => 21 1077 ..1078 => 2 1079 => 26 1080 => 23 1081 => 26 1082 => 23 1083 => 26 1084 => 24 1085 => 26 1086 => 23 1087 ..1093 => 2 1094 => 3 1095 ..1113 => 2 1114 => 0 1115 ..1116 => 2 1117 => 52 1118 => 53 1119 ..1131 => 2 1132 => 54 1133 => 55 1134 ..1142 => 2 1143 => 26 1144 => 23 1145 => 26 1146 => 23 1147 => 26 1148 => 24 1149 => 26 1150 => 23 1151 ..1157 => 2 1158 => 3 1159 ..1174 => 2 1175 => 0 1176 ..1186 => 2 1187 => 54 1188 => 55 1189 => 54 1190 => 55 1191 => 54 1192 => 55 1193 => 0 1194 ..1203 => 2 1204 => 56 1205 => 57 1206 ..1212 => 2 1213 => 0 1214 ..1222 => 2 1223 ..1224 => 0 1225 ..1226 => 2 1227 => 0 1228 ..1235 => 2 1236 => 58 1237 => 2 1238 => 21 1239 ..1274 => 2 1275 => 59 1276 => 60 1277 => 2 1278 ..1279 => 0 1280 ..1296 => 2 1297 => 61 1298 => 62 1299 ..1319 => 2 1320 => 61 1321 => 62 1322 => 2 1323 => 0 1324 => 2 1325 => 21 1326 ..1331 => 2 1332 => 61 1333 => 2 1334 => 62 1335 ..1360 => 2 1361 => 61 1362 => 62 1363 => 2 1364 => 0 1365 => 2 1366 => 63 1367 => 64 1368 ..1375 => 2 1376 => 21 1377 ..1410 => 2 1411 => 65 1412 ..1451 => 2 1452 => 33 1453 ..1455 => 2 1456 => 21 1457 ..1460 => 2 1461 => 66 1462 ..1467 => 2 1468 => 67 1469 => 68 1470 => 2 1471 => 69 1472 ..1480 => 2 1481 => 0 1482 ..1508 => 2 1509 => 0 1510 ..1513 => 2 1514 => 21 1515 ..1576 => 2 1577 => 70 1578 => 71 1579 ..1588 => 2 1589 => 33 1590 ..1618 => 2 1619 ..1620 => 72 1621 ..1626 => 2 1627 => 73 1628 => 74 1629 ..1630 => 2 1631 => 0 1632 => 2 1633 ..1634 => 75 1635 ..1652 => 2 1653 ..1654 => 0 1655 => 2 1656 => 0 1657 => 2 1658 => 0 1659 ..1660 => 2 1661 => 0 1662 => 2 1663 => 0 1664 => 2 1665 ..1666 => 0 1667 ..1669 => 2 1670 => 0 1671 => 2 1672 => 0 1673 => 2 1674 => 0 1675 => 2 1676 => 0 1677 => 2 1678 ..1693 => 0 1694 => 2 1695 ..1697 => 0 1698 => 76 1699 => 77 1700 => 76 1701 => 77 1702 ..1704 => 0 1705 => 78 1706 => 79 1707 => 0 1708 => 21 1709 ..1710 => 0 1711 => 21 1712 => 76 1713 => 77 1714 ..1730 => 0 1731 ..1733 => 2 1734 ..1736 => 0 1737 => 80 1738 ..1739 => 0 1740 ..1741 => 2 1742 => 81 1743 ..1745 => 0 1746 => 2 1747 ..1748 => 0 1749 => 58 1750 ..1752 => 0 1753 => 58 1754 => 82 1755 => 83 1756 ..1760 => 0 1761 => 21 1762 ..1764 => 0 1765 => 58 1766 => 2 1767 => 82 1768 => 83 1769 ..1770 => 0 1771 => 2 1772 => 21 1773 ..1774 => 0 1775 => 58 1776 => 0 1777 => 84 1778 ..1779 => 85 1780 => 21 1781 => 85 1782 => 58 1783 => 86 1784 ..1787 => 21 1788 => 0 1789 => 2 1790 => 87 1791 => 88 1792 => 58 1793 => 89 1794 ..1798 => 21 1799 => 90 1800 ..1801 => 0 1802 => 2 1803 => 0 1804 => 58 1805 => 21 1806 ..1811 => 85 1812 => 0 1813 => 58 1814 => 0 1815 => 83 1816 => 21 1817 ..1818 => 0 1819 => 21 1820 => 58 1821 => 21 1822 => 2 1823 => 91 1824 => 92 1825 ..1826 => 21 1827 ..1828 => 58 1829 => 0 1830 => 21 1831 => 0 1832 ..1833 => 58 1834 => 0 1835 ..1836 => 58 1837 => 82 1838 ..1839 => 21 1840 => 93 1841 => 2 1842 => 58 1843 => 21 1844 => 0 1845 ..1846 => 58 1847 => 21 1848 ..1853 => 0 1854 => 58 1855 => 94 1856 ..1859 => 21 1860 => 2 1861 => 58 1862 => 21 1863 => 95 1864 => 58 1865 => 21 1866 => 96 1867 => 97 1868 => 0 1869 => 58 1870 => 21 1871 ..1872 => 58 1873 => 0 1874 => 2 1875 => 21 1876 => 58 1877 => 0 1878 => 2 1879 => 21 1880 => 83 1881 => 58 1882 => 21 1883 => 58 1884 => 21 1885 => 0 1886 => 58 1887 ..1888 => 0 1889 => 58 1890 => 0 1891 => 58 1892 => 0 1893 ..1894 => 58 1895 ..1896 => 0 1897 => 58 1898 => 0 1899 ..1901 => 98 1902 ..1905 => 0 1906 => 98 1907 ..1910 => 0 1911 => 2 1912 => 99 1913 => 100 1914 => 58 1915 => 0 1916 ..1917 => 58 1918 => 21 1919 => 58 1920 => 0 1921 => 58 1922 ..1923 => 96 1924 => 101 1925 => 102 1926 => 103 1927 => 104 1928 => 105 1929 => 106 1930 => 107 1931 => 108 1932 => 109 1933 => 110 1934 ..1958 => 0 1959 => 106 1960 => 107 1961 => 108 1962 => 109 1963 => 110 1964 => 106 1965 => 107 1966 => 108 1967 => 109 1968 => 110 1969 => 106 1970 => 107 1971 => 108 1972 => 109 1973 => 110 1974 => 106 1975 => 107 1976 => 108 1977 => 109 1978 => 110 1979 => 106 1980 => 107 1981 => 108 1982 => 109 1983 => 110 1984 => 101 1985 => 102 1986 => 103 1987 => 104 1988 => 105 1989 => 106 1990 => 107 1991 => 108 1992 => 109 1993 => 110 1994 ..2012 => 0 2013 => 111 2014 ..2016 => 0 2017 => 112 2018 ..2020 => 0 2021 => 113 2022 ..2024 => 0 2025 => 114 2026 ..2028 => 0 2029 => 115 2030 ..2172 => 0 2173 => 116 2174 ..2176 => 0 2177 => 116 2178 ..2180 => 0 2181 => 116 2182 ..2184 => 0 2185 => 116 2186 ..2188 => 0 2189 => 116 2190 ..2323 => 0 2324 => 117 2325 => 118 2326 => 119 2327 => 120 2328 => 121 2329 => 122 2330 => 123 2331 => 124 2332 => 125 2333 => 126 2334 => 127 2335 => 119 2336 => 120 2337 => 121 2338 => 122 2339 => 123 2340 => 124 2341 => 125 2342 => 126 2343 => 118 2344 => 128 2345 => 120 2346 => 121 2347 => 122 2348 => 123 2349 => 124 2350 => 125 2351 => 126 2352 => 118 2353 => 119 2354 => 129 2355 => 121 2356 => 122 2357 => 123 2358 => 124 2359 => 125 2360 => 126 2361 => 118 2362 => 119 2363 => 120 2364 => 130 2365 => 122 2366 => 123 2367 => 124 2368 => 125 2369 => 126 2370 => 118 2371 => 119 2372 => 120 2373 => 121 2374 => 131 2375 => 123 2376 => 124 2377 => 125 2378 => 126 2379 => 118 2380 => 119 2381 => 120 2382 => 121 2383 => 122 2384 => 132 2385 => 124 2386 => 125 2387 => 126 2388 => 118 2389 => 119 2390 => 120 2391 => 121 2392 => 122 2393 => 123 2394 => 133 2395 => 125 2396 => 126 2397 => 118 2398 => 119 2399 => 120 2400 => 121 2401 => 122 2402 => 123 2403 => 124 2404 => 134 2405 ..2492 => 0 2493 => 58 2494 ..2496 => 0 2497 ..2498 => 58 2499 ..2500 => 0 2501 ..2502 => 58 2503 ..2504 => 0 2505 => 58 2506 ..2524 => 0 2525 => 21 2526 => 58 2527 ..2528 => 0 2529 => 21 2530 => 58 2531 => 0 2532 ..2533 => 58 2534 ..2574 => 0 2575 => 135 2576 ..2606 => 136 2607 ..2618 => 0 2619 ..2630 => 2 2631 ..2675 => 0 2676 => 126 2677 => 118 2678 => 119 2679 => 120 2680 => 121 2681 => 122 2682 => 123 2683 => 124 2684 => 125 2685 => 137 2686 ..2687 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 1 1 1 1 1 2 3 1 1 1 1 1 4 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Matched=none Success=none 1: 1 6 6 6 6 6 6 7 8 6 6 6 6 6 9 10 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 6 6 12 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,44,45,48,49,52,53,56,57,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, Success=none 2: 1 6 6 6 6 6 6 7 8 6 6 6 6 6 9 10 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 13 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 6 6 12 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,52,53,56,57,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, Success=none 3: 1 6 6 6 6 6 6 7 8 6 6 6 6 6 9 10 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 14 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 6 6 12 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,44,45,48,49,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, Success=none 4: 1 6 6 6 6 6 6 7 8 6 6 6 6 6 9 10 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 15 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 6 6 12 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,44,45,48,49,50,51,52,53,56,57,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, Success=none 5: 1 6 6 6 6 6 6 7 8 6 6 6 6 6 9 10 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 16 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 6 6 12 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,44,45,48,49,52,53,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, Success=none 6: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 0 17 0 102 146 18 0 0 0 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 7: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 0 17 0 102 146 18 0 0 43 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,44,45,48,49,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 8: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 44 17 0 102 146 18 0 0 0 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,56,57,60,61,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 9: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 0 17 0 102 146 18 0 0 45 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,52,53,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 10: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 46 17 0 102 146 18 0 0 0 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 11: 2 0 47 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 0 17 0 102 146 18 0 0 0 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,160,161,162, Success=none 12: 2 0 111 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 0 17 0 102 146 18 0 0 0 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 112 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, Success=none 13: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 0 17 0 102 146 18 0 0 48 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,46,47,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 14: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 49 17 0 102 146 18 0 0 0 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,54,55,58,59,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 15: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 0 17 0 102 146 18 0 0 50 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,50,51,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 16: 2 0 0 0 22 19 20 19 21 21 101 103 99 155 100 21 21 155 151 150 156 158 0 134 136 136 154 135 160 159 163 164 144 145 157 155 157 149 148 152 153 193 194 175 176 162 161 169 137 170 138 140 139 190 189 187 188 179 180 0 177 178 182 181 173 174 165 166 141 143 142 167 168 184 171 172 183 185 186 191 192 132 147 132 0 23 0 51 17 0 102 146 18 0 0 0 0 0 0 133 0 0 24 25 26 27 28 29 30 31 32 33 104 105 106 107 108 109 34 35 36 37 38 39 40 41 42 34 35 36 37 38 39 40 41 42 147 147 110 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,62,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,153,154,155,156,157,158,159,160,161,162, Success=none 17: 3 0 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 0 52 52 52 52 52 52 52 52 52 52 0 0 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 0 0 52 52 52 52 0 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 0 0 0 0 0 52 52 52 52 0 52 0 0 52 52 0 0 0 52 52 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 52 0 0 Matched=0,1,2,3,4,5, Success=none 18: 3 0 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 0 53 53 53 53 53 53 53 53 53 53 0 0 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 0 0 53 53 53 53 0 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 0 0 0 0 0 53 53 53 53 0 53 0 0 53 53 0 0 0 53 53 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 53 0 0 Matched=6,7,8,9,10,11, Success=none 19: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 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 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 54 54 54 0 0 54 54 0 0 0 54 54 54 54 0 195 54 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 54 0 0 Matched=14,15,16,17,18, Success=none 20: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 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 55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 55 55 55 0 0 55 55 0 0 0 55 55 55 55 0 114 113 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 55 0 0 Matched=14,15,16,17,18,19,20,21,22,23, Success=none 21: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 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 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 56 56 56 0 0 56 56 0 0 0 56 57 57 115 0 56 116 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 56 0 0 Matched=19,20,21,22,23,24,25,26,27,28, Success=none 22: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 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 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 57 57 57 0 0 57 57 0 0 0 57 57 57 57 0 57 196 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 57 0 0 Matched=19,20,21,22,23, Success=none 23: 3 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 58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 197 0 0 0 0 0 0 0 0 0 0 0 58 58 58 0 58 58 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 58 0 0 Matched=30,31,32,33,34, Success=none 24: 3 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 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 203 203 203 203 203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=133,138, Success=none 25: 3 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 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 202 202 202 202 202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=134,139, Success=none 26: 3 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 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 201 201 201 201 201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=135,140, Success=none 27: 3 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 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 200 200 200 200 200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=136,141, Success=none 28: 3 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 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 199 199 199 199 199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=137,142, Success=none 29: 3 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 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 205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=145, Success=none 30: 3 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 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 206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=146, Success=none 31: 3 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 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 207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=147, Success=none 32: 3 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 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 208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=148, Success=none 33: 3 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 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 209 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=149, Success=none 34: 3 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 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 211 0 0 0 0 0 0 0 0 0 211 211 211 211 211 211 211 211 0 0 0 Matched=154, Success=none 35: 3 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 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 212 0 0 0 0 0 0 0 0 0 212 212 212 212 212 212 212 212 0 0 0 Matched=155, Success=none 36: 3 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 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 213 0 0 0 0 0 0 0 0 0 213 213 213 213 213 213 213 213 0 0 0 Matched=156, Success=none 37: 3 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 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 214 0 0 0 0 0 0 0 0 0 214 214 214 214 214 214 214 214 0 0 0 Matched=157, Success=none 38: 3 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 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 215 0 0 0 0 0 0 0 0 0 215 215 215 215 215 215 215 215 0 0 0 Matched=158, Success=none 39: 3 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 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 216 0 0 0 0 0 0 0 0 0 216 216 216 216 216 216 216 216 0 0 0 Matched=159, Success=none 40: 3 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 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 217 0 0 0 0 0 0 0 0 0 217 217 217 217 217 217 217 217 0 0 0 Matched=160, Success=none 41: 3 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 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 218 0 0 0 0 0 0 0 0 0 218 218 218 218 218 218 218 218 0 0 0 Matched=161, Success=none 42: 3 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 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 219 0 0 0 0 0 0 0 0 0 219 219 219 219 219 219 219 219 0 0 0 Matched=162, Success=none 43: 3 0 0 0 0 0 0 220 0 0 0 0 0 0 221 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 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 Matched=44,45,48,49, Success=none 44: 3 0 0 0 0 0 0 0 0 222 0 0 0 0 0 0 223 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 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 Matched=56,57,60,61, Success=none 45: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 224 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 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 Matched=52,53, Success=none 46: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 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 Matched=64,65, Success=none 47: 3 0 226 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 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 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 0 0 226 Matched=150, Success=none 48: 3 0 0 0 0 0 0 227 0 0 0 0 0 0 228 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 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 Matched=42,43,46,47, Success=none 49: 3 0 0 0 0 0 0 0 0 229 0 0 0 0 0 0 230 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65 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 Matched=54,55,58,59, Success=none 50: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 231 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 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 Matched=50,51, Success=none 51: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 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 Matched=62,63, Success=none 52: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 68 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 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 68 68 68 68 0 233 68 68 0 0 0 68 68 68 68 0 68 68 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 68 0 0 Matched=0,1,2,3,4,5, Success=none 53: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 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 69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 69 69 69 0 0 69 69 0 234 0 69 69 69 69 0 69 69 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 69 0 0 Matched=6,7,8,9,10,11, Success=none 54: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 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 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 70 70 70 0 0 70 70 0 0 0 70 70 70 70 0 235 70 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 70 0 0 Matched=14,15,16,17, Success=none 55: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71 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 71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71 71 71 71 0 0 71 71 0 0 0 71 71 71 71 0 120 119 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 71 0 0 Matched=14,15,16,17,19,20,21,22, Success=none 56: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73 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 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73 73 73 73 0 0 73 73 0 0 0 73 72 72 121 0 73 122 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 73 0 0 Matched=19,20,21,22,24,25,26,27, Success=none 57: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 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 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 72 72 72 0 0 72 72 0 0 0 72 72 72 72 0 72 236 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 72 0 0 Matched=19,20,21,22, Success=none 58: 4 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 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 238 0 0 0 0 0 0 0 0 0 0 0 75 75 75 0 75 75 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 75 0 0 Matched=30,31,32,33, Success=none 59: 4 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 76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 0 0 0 0 0 0 0 0 0 0 0 76 76 76 0 76 76 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 76 0 0 Matched=35,36,37,38, Success=none 60: 4 0 0 0 0 0 0 241 0 0 0 0 0 0 242 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 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 Matched=44,48, Success=none 61: 4 0 0 0 0 0 0 0 0 243 0 0 0 0 0 0 244 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 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 Matched=56,60, Success=none 62: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 245 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 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 Matched=52, Success=none 63: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 246 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 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 Matched=64, Success=none 64: 4 0 0 0 0 0 0 247 0 0 0 0 0 0 248 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 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 Matched=42,46, Success=none 65: 4 0 0 0 0 0 0 0 0 249 0 0 0 0 0 0 250 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 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 Matched=54,58, Success=none 66: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 251 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 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 Matched=50, Success=none 67: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 252 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 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 Matched=62, Success=none 68: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 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 77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 77 77 77 0 253 77 77 0 0 0 77 77 77 77 0 77 77 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 77 0 0 Matched=0,1,2,3,4, Success=none 69: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78 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 78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78 78 78 78 0 0 78 78 0 254 0 78 78 78 78 0 78 78 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 78 0 0 Matched=6,7,8,9,10, Success=none 70: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 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 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 79 79 79 0 0 79 79 0 0 0 79 79 79 79 0 255 79 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 79 0 0 Matched=14,15,16, Success=none 71: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 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 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 80 80 80 0 0 80 80 0 0 0 80 80 80 80 0 125 124 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 80 0 0 Matched=14,15,16,19,20,21, Success=none 72: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 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 81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 81 81 81 0 0 81 81 0 0 0 81 81 81 81 0 81 256 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 81 0 0 Matched=19,20,21, Success=none 73: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 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 82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 82 82 82 0 0 82 82 0 0 0 82 81 81 126 0 82 127 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 82 0 0 Matched=19,20,21,24,25,26, Success=none 74: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 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 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 83 83 83 0 0 83 83 0 0 0 83 0 0 257 0 83 83 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 83 0 0 Matched=24,25,26, Success=none 75: 5 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 84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 258 0 0 0 0 0 0 0 0 0 0 0 84 84 84 0 84 84 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 84 0 0 Matched=30,31,32, Success=none 76: 5 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 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 259 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 85 85 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 85 0 0 Matched=35,36,37, Success=none 77: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86 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 86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86 86 86 86 0 261 86 86 0 0 0 86 86 86 86 0 86 86 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 86 0 0 Matched=0,1,2,3, Success=none 78: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87 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 87 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87 87 87 87 0 0 87 87 0 262 0 87 87 87 87 0 87 87 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 87 0 0 Matched=6,7,8,9, Success=none 79: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88 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 88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88 88 88 88 0 0 88 88 0 0 0 88 88 88 88 0 263 88 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 88 0 0 Matched=14,15, Success=none 80: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 89 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 89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 89 89 89 89 0 0 89 89 0 0 0 89 89 89 89 0 129 128 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 89 0 0 Matched=14,15,19,20, Success=none 81: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 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 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 90 90 90 0 0 90 90 0 0 0 90 90 90 90 0 90 264 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 90 0 0 Matched=19,20, Success=none 82: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91 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 91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91 91 91 91 0 0 91 91 0 0 0 91 90 90 130 0 91 131 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 91 0 0 Matched=19,20,24,25, Success=none 83: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 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 92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 92 92 92 0 0 92 92 0 0 0 92 0 0 265 0 92 92 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 92 0 0 Matched=24,25, Success=none 84: 6 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 93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 266 0 0 0 0 0 0 0 0 0 0 0 93 93 93 0 93 93 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 93 0 0 Matched=30,31, Success=none 85: 6 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 94 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 267 0 0 0 0 0 0 0 0 0 0 0 94 94 94 0 94 94 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 94 0 0 Matched=35,36, Success=none 86: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95 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 95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95 95 95 95 0 268 95 95 0 0 0 95 95 95 95 0 95 95 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 95 0 0 Matched=0,1,2, Success=none 87: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 96 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 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 96 96 96 96 0 0 96 96 0 269 0 96 96 96 96 0 96 96 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 96 0 0 Matched=6,7,8, Success=none 88: 7 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 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 270 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 Matched=14, Success=none 89: 7 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 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 270 271 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 Matched=14,19, Success=none 90: 7 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 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 271 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 Matched=19, Success=none 91: 7 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 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 272 0 0 271 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 Matched=19,24, Success=none 92: 7 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 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 272 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 Matched=24, Success=none 93: 7 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273 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 Matched=30, Success=none 94: 7 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 274 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 Matched=35, Success=none 95: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97 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 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97 97 97 97 0 275 97 97 0 0 0 97 97 97 97 0 97 97 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 97 0 0 Matched=0,1, Success=none 96: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 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 98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 98 98 98 0 0 98 98 0 276 0 98 98 98 98 0 98 98 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 98 0 0 Matched=6,7, Success=none 97: 9 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 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 277 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 Matched=0, Success=none 98: 9 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 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 278 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 Matched=6, Success=none 99: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 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 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 54 54 54 0 0 54 54 0 0 0 54 54 54 54 0 195 54 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 54 0 0 Matched=14,15,16,17,18,78, Success=78, 100: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 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 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 54 54 54 0 0 54 54 0 0 0 54 54 54 54 0 195 54 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 54 0 0 Matched=14,15,16,17,18,87, Success=87, 101: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 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 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 57 57 57 0 0 57 57 0 0 0 57 57 57 57 0 57 196 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 57 0 0 Matched=19,20,21,22,23,79,88, Success=79,88, 102: 3 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 59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 198 0 0 0 0 0 0 0 0 0 0 0 59 59 59 0 59 59 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 59 0 0 Matched=35,36,37,38,39,75, Success=75, 103: 3 0 0 0 0 0 0 0 0 0 0 117 0 118 118 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 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 Matched=83,84,85,86,87,89,90,91,92, Success=87, 104: 3 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 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 199 199 199 199 199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=131,137,142, Success=131, 105: 3 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 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 200 200 200 200 200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=131,136,141, Success=131, 106: 3 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 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 201 201 201 201 201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=131,135,140, Success=131, 107: 3 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 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 202 202 202 202 202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=131,134,139, Success=131, 108: 3 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 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 203 203 203 203 203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=131,133,138, Success=131, 109: 3 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 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 204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=132,143,144, Success=132, 110: 3 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 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 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 0 0 210 Matched=151,153, Success=153, 111: 3 0 226 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 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 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 0 0 226 Matched=150,152, Success=152, 112: 3 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 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 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 0 0 210 Matched=151,152,153, Success=152,153, 113: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 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 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 70 70 70 0 0 70 70 0 0 0 70 70 70 70 0 235 70 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 70 0 0 Matched=14,15,16,17,23, Success=23, 114: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 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 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 72 72 72 0 0 72 72 0 0 0 72 72 72 72 0 72 236 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 72 0 0 Matched=18,19,20,21,22, Success=18, 115: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 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 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 72 72 72 0 0 72 72 0 0 0 72 72 72 72 0 72 236 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 72 0 0 Matched=19,20,21,22,28, Success=28, 116: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 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 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 74 74 74 0 0 74 74 0 0 0 74 0 0 237 0 74 74 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 74 0 0 Matched=23,24,25,26,27, Success=23, 117: 4 0 0 0 0 0 0 0 0 0 0 0 0 123 123 0 0 0 0 0 0 0 240 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 240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240 240 240 240 0 0 240 240 0 0 0 240 240 240 240 0 240 240 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 240 0 0 Matched=83,84,85,86,89,90,91,92, Success=84,90, 118: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240 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 240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240 240 240 240 0 0 240 240 0 0 0 240 240 240 240 0 240 240 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 240 0 0 Matched=83,84,89,90, Success=84,90, 119: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 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 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 79 79 79 0 0 79 79 0 0 0 79 79 79 79 0 255 79 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 79 0 0 Matched=14,15,16,22, Success=22, 120: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 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 81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 81 81 81 0 0 81 81 0 0 0 81 81 81 81 0 81 256 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 81 0 0 Matched=17,19,20,21, Success=17, 121: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 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 81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 81 81 81 0 0 81 81 0 0 0 81 81 81 81 0 81 256 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 81 0 0 Matched=19,20,21,27, Success=27, 122: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 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 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 83 83 83 0 0 83 83 0 0 0 83 0 0 257 0 83 83 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 83 0 0 Matched=22,24,25,26, Success=22, 123: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 260 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 260 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 260 260 260 260 0 0 260 260 0 0 0 260 260 260 260 0 260 260 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 260 0 0 Matched=85,86,91,92, Success=86,92, 124: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88 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 88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88 88 88 88 0 0 88 88 0 0 0 88 88 88 88 0 263 88 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 88 0 0 Matched=14,15,21, Success=21, 125: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 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 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 90 90 90 0 0 90 90 0 0 0 90 90 90 90 0 90 264 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 90 0 0 Matched=16,19,20, Success=16, 126: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 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 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 90 90 90 0 0 90 90 0 0 0 90 90 90 90 0 90 264 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 90 0 0 Matched=19,20,26, Success=26, 127: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 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 92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 92 92 92 0 0 92 92 0 0 0 92 0 0 265 0 92 92 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 92 0 0 Matched=21,24,25, Success=21, 128: 7 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 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 270 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 Matched=14,20, Success=20, 129: 7 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 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 271 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 Matched=15,19, Success=15, 130: 7 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 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 271 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 Matched=19,25, Success=25, 131: 7 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 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 272 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 Matched=20,24, Success=20, 132: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=12, Success=12, 133: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=13, Success=13, 134: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=29,40,79, Success=29,40,79, 135: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=40, Success=40, 136: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=41, Success=41, 137: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=66,67, Success=66,67, 138: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=66,68,69, Success=66,68,69, 139: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=66,67,68, Success=66,67,68, 140: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=67,68,69, Success=67,68,69, 141: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=70,72, Success=70,72, 142: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=70,71, Success=70,71, 143: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=71,72, Success=71,72, 144: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=73, Success=73, 145: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=74, Success=74, 146: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=76, Success=76, 147: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=77, Success=77, 148: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=78,96, Success=78,96, 149: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=78, Success=78, 150: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=79,88, Success=79,88, 151: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=79, Success=79, 152: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=80,95, Success=80,95, 153: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=81, Success=81, 154: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=82, Success=82, 155: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=87, Success=87, 156: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=88, Success=88, 157: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=93, Success=93, 158: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=94, Success=94, 159: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=95, Success=95, 160: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=96, Success=96, 161: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=97, Success=97, 162: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=98, Success=98, 163: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=99, Success=99, 164: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=100, Success=100, 165: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=101, Success=101, 166: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=102, Success=102, 167: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=103, Success=103, 168: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=104, Success=104, 169: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=105, Success=105, 170: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=106, Success=106, 171: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=107, Success=107, 172: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=108, Success=108, 173: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=109, Success=109, 174: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=110, Success=110, 175: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=111, Success=111, 176: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=112, Success=112, 177: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=113, Success=113, 178: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=114, Success=114, 179: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=115, Success=115, 180: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=116, Success=116, 181: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=117, Success=117, 182: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=118, Success=118, 183: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=119, Success=119, 184: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=120, Success=120, 185: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=121, Success=121, 186: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=122, Success=122, 187: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=123, Success=123, 188: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=124, Success=124, 189: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=125, Success=125, 190: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=126, Success=126, 191: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=127, Success=127, 192: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=128, Success=128, 193: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=129, Success=129, 194: 3 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=130, Success=130, 195: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=18, Success=18, 196: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=23, Success=23, 197: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=34, Success=34, 198: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=39, Success=39, 199: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=137,142, Success=137,142, 200: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=136,141, Success=136,141, 201: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=135,140, Success=135,140, 202: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=134,139, Success=134,139, 203: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=133,138, Success=133,138, 204: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=143,144, Success=143,144, 205: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=145, Success=145, 206: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=146, Success=146, 207: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=147, Success=147, 208: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=148, Success=148, 209: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=149, Success=149, 210: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=151, Success=151, 211: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=154, Success=154, 212: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=155, Success=155, 213: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=156, Success=156, 214: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=157, Success=157, 215: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=158, Success=158, 216: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=159, Success=159, 217: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=160, Success=160, 218: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=161, Success=161, 219: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=162, Success=162, 220: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=45, Success=45, 221: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=49, Success=49, 222: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=57, Success=57, 223: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=61, Success=61, 224: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=53, Success=53, 225: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=65, Success=65, 226: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=150, Success=150, 227: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=43, Success=43, 228: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=47, Success=47, 229: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=55, Success=55, 230: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=59, Success=59, 231: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=51, Success=51, 232: 4 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=63, Success=63, 233: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=5, Success=5, 234: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=11, Success=11, 235: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=17, Success=17, 236: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=22, Success=22, 237: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=27, Success=27, 238: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=33, Success=33, 239: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=38, Success=38, 240: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=83,89, Success=83,89, 241: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=44, Success=44, 242: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=48, Success=48, 243: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=56, Success=56, 244: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=60, Success=60, 245: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=52, Success=52, 246: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=64, Success=64, 247: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=42, Success=42, 248: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=46, Success=46, 249: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=54, Success=54, 250: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=58, Success=58, 251: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=50, Success=50, 252: 5 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=62, Success=62, 253: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=4, Success=4, 254: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=10, Success=10, 255: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=16, Success=16, 256: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=21, Success=21, 257: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=26, Success=26, 258: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=32, Success=32, 259: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=37, Success=37, 260: 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=85,91, Success=85,91, 261: 7 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=3, Success=3, 262: 7 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=9, Success=9, 263: 7 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=15, Success=15, 264: 7 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=20, Success=20, 265: 7 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=25, Success=25, 266: 7 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=31, Success=31, 267: 7 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=36, Success=36, 268: 8 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=2, Success=2, 269: 8 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=8, Success=8, 270: 8 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=14, Success=14, 271: 8 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=19, Success=19, 272: 8 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=24, Success=24, 273: 8 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=30, Success=30, 274: 8 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=35, Success=35, 275: 9 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=1, Success=1, 276: 9 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=7, Success=7, 277: 10 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=0, Success=0, 278: 10 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 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 0 0 0 0 0 0 0 0 0 0 0 0 Matched=6, Success=6, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 1.0, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 10) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia cDia _ ; RULE 1.1, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 9) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia _ ; RULE 1.2, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 8) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia _ ; RULE 1.3, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 7) _ / ANY ANY ^ _ cTakesUDia cDia cDia _ ; RULE 1.4, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 6) _ / ANY ANY ^ _ cTakesUDia cDia _ ; RULE 1.5, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 5) _ / ANY ANY ^ _ cTakesUDia _ ; RULE 1.6, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 10) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia cDia _ ; RULE 1.7, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 9) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia _ ; RULE 1.8, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 8) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia _ ; RULE 1.9, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 7) _ / ANY ANY ^ _ cTakesUDia cDia cDia _ ; RULE 1.10, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 6) _ / ANY ANY ^ _ cTakesUDia cDia _ ; RULE 1.11, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 5) _ / ANY ANY ^ _ cTakesUDia _ ; RULE 1.12, CharisRules.gdh(269): if (chinantec_tone == 1) cno_ChinantecTn > cChinantecTn / ANY ANY _ ; endif; RULE 1.13, CharisRules.gdh(271): if (!(chinantec_tone == 1)) cChinantecTn > cno_ChinantecTn / ANY ANY _ ; endif; RULE 1.14, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 8) _ / ANY ANY ^ _ cnHDia cnHDia cnHDia cnHDia _ ; RULE 1.15, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 7) _ / ANY ANY ^ _ cnHDia cnHDia cnHDia _ ; RULE 1.16, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 6) _ / ANY ANY ^ _ cnHDia cnHDia _ ; RULE 1.17, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 5) _ / ANY ANY ^ _ cnHDia _ ; RULE 1.18, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 4) _ / ANY ANY ^ _ _ ; RULE 1.19, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 8) _ / ANY ANY ^ _ cnODia cnODia cnODia cnODia _ ; RULE 1.20, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 7) _ / ANY ANY ^ _ cnODia cnODia cnODia _ ; RULE 1.21, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 6) _ / ANY ANY ^ _ cnODia cnODia _ ; RULE 1.22, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 5) _ / ANY ANY ^ _ cnODia _ ; RULE 1.23, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 4) _ / ANY ANY ^ _ _ ; RULE 1.24, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 8) _ / ANY ANY _ cnRDia cnRDia cnRDia cnRDia _ ; RULE 1.25, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 7) _ / ANY ANY _ cnRDia cnRDia cnRDia _ ; RULE 1.26, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 6) _ / ANY ANY _ cnRDia cnRDia _ ; RULE 1.27, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 5) _ / ANY ANY _ cnRDia _ ; RULE 1.28, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 4) _ / ANY ANY _ _ ; RULE 1.29, CharisRules.gdh(292): if (viet == 1) _ c_aStack_noLit > g_a_sng_story:4 c_diacComb_vN / ANY ANY _ _{ literacy == 1 } ; endif; RULE 1.30, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$8:(3 8) _ / ANY ANY _ cnUDia cnUDia cnUDia cnUDia _ ; endif; RULE 1.31, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$7:(3 7) _ / ANY ANY _ cnUDia cnUDia cnUDia _ ; endif; RULE 1.32, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$6:(3 6) _ / ANY ANY _ cnUDia cnUDia _ ; endif; RULE 1.33, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$5:(3 5) _ / ANY ANY _ cnUDia _ ; endif; RULE 1.34, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$4:(3 4) _ / ANY ANY _ _ ; endif; RULE 1.35, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$8:(3 8) _ / ANY ANY _ cnUDia cnUDia cnUDia cnUDia _ ; endif; RULE 1.36, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$7:(3 7) _ / ANY ANY _ cnUDia cnUDia cnUDia _ ; endif; RULE 1.37, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$6:(3 6) _ / ANY ANY _ cnUDia cnUDia _ ; endif; RULE 1.38, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$5:(3 5) _ / ANY ANY _ cnUDia _ ; endif; RULE 1.39, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$4:(3 4) _ / ANY ANY _ _ ; endif; RULE 1.40, CharisRules.gdh(296): if (viet == 1) cno_VN > cVN / ANY ANY _ ; endif; RULE 1.41, CharisRules.gdh(298): if (!(viet == 1)) cVN > cno_VN / ANY ANY _ ; endif; RULE 1.42, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / g__l g035F _ g035F g__l ; endif; RULE 1.43, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / g__l g035F _ g__l ; endif; RULE 1.44, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / ANY g__l _ g035F g__l ; endif; RULE 1.45, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / ANY g__l _ g__l ; endif; RULE 1.46, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / g__l g035F _ g035F g_l ; endif; RULE 1.47, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / g__l g035F _ g_l ; endif; RULE 1.48, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / ANY g__l _ g035F g_l ; endif; RULE 1.49, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / ANY g__l _ g_l ; endif; RULE 1.50, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / g_l g035F _ g035F g_l ; endif; RULE 1.51, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / g_l g035F _ g_l ; endif; RULE 1.52, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / ANY g_l _ g035F g_l ; endif; RULE 1.53, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / ANY g_l _ g_l ; endif; RULE 1.54, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / g__o g035F _ g035F g__u ; endif; RULE 1.55, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / g__o g035F _ g__u ; endif; RULE 1.56, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / ANY g__o _ g035F g__u ; endif; RULE 1.57, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / ANY g__o _ g__u ; endif; RULE 1.58, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / g__o g035F _ g035F g_u ; endif; RULE 1.59, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / g__o g035F _ g_u ; endif; RULE 1.60, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / ANY g__o _ g035F g_u ; endif; RULE 1.61, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / ANY g__o _ g_u ; endif; RULE 1.62, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / g_o g035F _ g035F g_u ; endif; RULE 1.63, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / g_o g035F _ g_u ; endif; RULE 1.64, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / ANY g_o _ g035F g_u ; endif; RULE 1.65, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / ANY g_o _ g_u ; endif; RULE 1.66, CharisRules.gdh(350): if (eng == 0) *GC0* > g__eng / ANY ANY _ ; endif; RULE 1.67, CharisRules.gdh(354): if (eng == 1) *GC1* > cBaselineHook / ANY ANY _ ; endif; RULE 1.68, CharisRules.gdh(358): if (eng == 2) *GC2* > g__eng_u_c_style / ANY ANY _ ; endif; RULE 1.69, CharisRules.gdh(362): if (eng == 3) *GC3* > cKom / ANY ANY _ ; endif; RULE 1.70, CharisRules.gdh(368): if (ramshorn == 0) *GC4* > g0264 / ANY ANY _ ; endif; RULE 1.71, CharisRules.gdh(372): if (ramshorn == 1) *GC5* > g0264_lrgBowl / ANY ANY _ ; endif; RULE 1.72, CharisRules.gdh(376): if (ramshorn == 2) *GC6* > g0264_gammaStyle / ANY ANY _ ; endif; RULE 1.73, CharisRules.gdh(382): if (mongol_e == 1) cno_MongolStyle > cMongolStyle / ANY ANY _ ; endif; RULE 1.74, CharisRules.gdh(384): if (!(mongol_e == 1)) cMongolStyle > cno_MongolStyle / ANY ANY _ ; endif; RULE 1.75, CharisRules.gdh(398): if (short_breve == 1) cno_CyShortMrkAlt > cCyShortMrkAlt / ANY ANY _ ; endif; RULE 1.76, CharisRules.gdh(400): if (!(short_breve == 1)) cCyShortMrkAlt > cno_CyShortMrkAlt / ANY ANY _ ; endif; RULE 1.77, CharisRules.gdh(406): if (invis == 1) cno_ShowInv > cShowInv / ANY ANY _ ; endif; RULE 1.78, CharisRules.gdh(420): if (literacy == 1) cno_SngBowl > cSngBowl / ANY ANY _ ; endif; RULE 1.79, CharisRules.gdh(421): if (literacy == 1) cno_SngStory > cSngStory / ANY ANY _ ; endif; RULE 1.80, CharisRules.gdh(422): if (literacy == 1) g01E5 > g01E5_barBowl_sngBowl / ANY ANY _ ; endif; RULE 1.81, CharisRules.gdh(424): if (!(literacy == 1)) cSngBowl > cno_SngBowl / ANY ANY _ ; endif; RULE 1.82, CharisRules.gdh(425): if (!(literacy == 1)) cSngStory > cno_SngStory / ANY ANY _ ; endif; RULE 1.83, CharisRules.gdh(433): if (slant_italic == 1) g_f cfLigC2 > g_f_slant_italic cfLigC2_slantItalic / ANY ANY _ _ cDia ; endif; RULE 1.84, CharisRules.gdh(434): if (slant_italic == 1) g_f cfLigC2 > _ cfLig_slantItalic:(3 4) { comp.f1.ref = @3; comp.f2.ref = @4; } / ANY ANY _ _ ; endif; RULE 1.85, CharisRules.gdh(436): if (slant_italic == 1) g_f g_f cffLigC3 > g_f_slant_italic g_f_slant_italic cffLigC3_slantItalic / ANY ANY _ _ _ cDia ; endif; RULE 1.86, CharisRules.gdh(437): if (slant_italic == 1) g_f g_f cffLigC3 > _ _ cffLig_slantItalic:(3 4 5) { comp.f1.ref = @3; comp.f2.ref = @4; comp.f3.ref = @5; } / ANY ANY _ _ _ ; endif; RULE 1.87, CharisRules.gdh(439): if (slant_italic == 1) cno_SlantItalic > cSlantItalic / ANY ANY _ ; endif; RULE 1.88, CharisRules.gdh(440): if (slant_italic == 1) cno_2StorySlantItalic > c2StorySlantItalic / ANY ANY _ ; endif; RULE 1.89, CharisRules.gdh(444): if (!(slant_italic == 1)) g_f cfLigC2 > @3 @4 / ANY ANY _ _ cDia ; endif; RULE 1.90, CharisRules.gdh(445): if (!(slant_italic == 1)) g_f cfLigC2 > _ cfLig:(3 4) { comp.f1.ref = @3; comp.f2.ref = @4; } / ANY ANY _ _ ; endif; RULE 1.91, CharisRules.gdh(447): if (!(slant_italic == 1)) g_f g_f cffLigC3 > @3 @4 @5 / ANY ANY _ _ _ cDia ; endif; RULE 1.92, CharisRules.gdh(448): if (!(slant_italic == 1)) g_f g_f cffLigC3 > _ _ cffLig:(3 4 5) { comp.f1.ref = @3; comp.f2.ref = @4; comp.f3.ref = @5; } / ANY ANY _ _ _ ; endif; RULE 1.93, CharisRules.gdh(451): if (!(slant_italic == 1)) cSlantItalic > cno_SlantItalic / ANY ANY _ ; endif; RULE 1.94, CharisRules.gdh(452): if (!(slant_italic == 1)) c2StorySlantItalic > cno_2StorySlantItalic / ANY ANY _ ; endif; RULE 1.95, CharisRules.gdh(459): if (barred_bowl == 1) cno_BarBowl > cBarBowl / ANY ANY _ ; endif; RULE 1.96, CharisRules.gdh(463): if (!(barred_bowl == 1)) cBarBowl > cno_BarBowl / ANY ANY _ ; endif; RULE 1.97, CharisRules.gdh(468): if (ltnjstroke == 1) cno_TopSerifJStroke > cTopSerifJStroke / ANY ANY _ ; endif; RULE 1.98, CharisRules.gdh(470): if (!(ltnjstroke == 1)) cTopSerifJStroke > cno_TopSerifJStroke / ANY ANY _ ; endif; RULE 1.99, CharisRules.gdh(474): if (open_o == 1) cno_TopSerifOpenO > cTopSerifOpenO / ANY ANY _ ; endif; RULE 1.100, CharisRules.gdh(476): if (!(open_o == 1)) cTopSerifOpenO > cno_TopSerifOpenO / ANY ANY _ ; endif; RULE 1.101, CharisRules.gdh(480): if (v_hook == 1) cno_StraightLft > cStraightLft / ANY ANY _ ; endif; RULE 1.102, CharisRules.gdh(482): if (!(v_hook == 1)) cStraightLft > cno_StraightLft / ANY ANY _ ; endif; RULE 1.103, CharisRules.gdh(486): if (y_hook == 1) g01B3 > g01B3_rtHook / ANY ANY _ ; endif; RULE 1.104, CharisRules.gdh(488): if (!(y_hook == 1)) g01B3_rtHook > g01B3 / ANY ANY _ ; endif; RULE 1.105, CharisRules.gdh(492): if (n_hook == 1) g019D > g019D_lCStyle / ANY ANY _ ; endif; RULE 1.106, CharisRules.gdh(494): if (!(n_hook == 1)) g019D_lCStyle > g019D / ANY ANY _ ; endif; RULE 1.107, CharisRules.gdh(498): if (ezh_curl == 1) g0293 > g0293_lrgBowl / ANY ANY _ ; endif; RULE 1.108, CharisRules.gdh(500): if (!(ezh_curl == 1)) g0293_lrgBowl > g0293 / ANY ANY _ ; endif; RULE 1.109, CharisRules.gdh(504): if (t_hook == 1) g01AC > g01AC_rtHook / ANY ANY _ ; endif; RULE 1.110, CharisRules.gdh(506): if (!(t_hook == 1)) g01AC_rtHook > g01AC / ANY ANY _ ; endif; RULE 1.111, CharisRules.gdh(510): if (h_stroke == 1) cno_VertStrk > cVertStrk / ANY ANY _ ; endif; RULE 1.112, CharisRules.gdh(512): if (!(h_stroke == 1)) cVertStrk > cno_VertStrk / ANY ANY _ ; endif; RULE 1.113, CharisRules.gdh(516): if (r_tail == 1) g2C64 > g2C64_lCStyle / ANY ANY _ ; endif; RULE 1.114, CharisRules.gdh(518): if (!(r_tail == 1)) g2C64_lCStyle > g2C64 / ANY ANY _ ; endif; RULE 1.115, CharisRules.gdh(522): if (p_hook == 1) cno_BowlHook > cBowlHook / ANY ANY _ ; endif; RULE 1.116, CharisRules.gdh(524): if (!(p_hook == 1)) cBowlHook > cno_BowlHook / ANY ANY _ ; endif; RULE 1.117, CharisRules.gdh(528): if (rom == 1) cno_CommaStyle > cCommaStyle / ANY ANY _ ; endif; RULE 1.118, CharisRules.gdh(530): if (!(rom == 1)) cCommaStyle > cno_CommaStyle / ANY ANY _ ; endif; RULE 1.119, CharisRules.gdh(534): if (ezh == 1) cno_RevSigmaStyle > cRevSigmaStyle / ANY ANY _ ; endif; RULE 1.120, CharisRules.gdh(536): if (!(ezh == 1)) cRevSigmaStyle > cno_RevSigmaStyle / ANY ANY _ ; endif; RULE 1.121, CharisRules.gdh(542): if (apostrophe == 1) cno_Lrg > cLrg / ANY ANY _ ; endif; RULE 1.122, CharisRules.gdh(544): if (!(apostrophe == 1)) cLrg > cno_Lrg / ANY ANY _ ; endif; RULE 1.123, CharisRules.gdh(548): if (ou == 1) cno_OpenTop > cOpenTop / ANY ANY _ ; endif; RULE 1.124, CharisRules.gdh(550): if (!(ou == 1)) cOpenTop > cno_OpenTop / ANY ANY _ ; endif; RULE 1.125, CharisRules.gdh(554): if (emptyset == 1) cno_SlashZero > cSlashZero / ANY ANY _ ; endif; RULE 1.126, CharisRules.gdh(556): if (!(emptyset == 1)) cSlashZero > cno_SlashZero / ANY ANY _ ; endif; RULE 1.127, CharisRules.gdh(560): if (modlowcolon == 1) gF1E9 > gF1E9_wide / ANY ANY _ ; endif; RULE 1.128, CharisRules.gdh(562): if (!(modlowcolon == 1)) gF1E9_wide > gF1E9 / ANY ANY _ ; endif; RULE 1.129, CharisRules.gdh(575): if (cyrillic_shha == 1) g04BB > g04BB_uCStyle / ANY ANY _ ; endif; RULE 1.130, CharisRules.gdh(577): if (!(cyrillic_shha == 1)) g04BB_uCStyle > g04BB / ANY ANY _ ; endif; RULE 1.131, CharisPitches.gdh(219): if (supernum) cRightTone > cSupNum / ANY ANY _ ; endif; RULE 1.132, CharisPitches.gdh(220): if (supernum) cLeftTone > cSupNum / ANY ANY _ ; endif; RULE 1.133, CharisPitches.gdh(237): if (!(supernum) && hide_tone_staff) cRightTone1 cRightTone > cRightTone1Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.134, CharisPitches.gdh(238): if (!(supernum) && hide_tone_staff) cRightTone2 cRightTone > cRightTone2Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.135, CharisPitches.gdh(239): if (!(supernum) && hide_tone_staff) cRightTone3 cRightTone > cRightTone3Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.136, CharisPitches.gdh(240): if (!(supernum) && hide_tone_staff) cRightTone4 cRightTone > cRightTone4Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.137, CharisPitches.gdh(241): if (!(supernum) && hide_tone_staff) cRightTone5 cRightTone > cRightTone5Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.138, CharisPitches.gdh(245): if (!(supernum) && !(hide_tone_staff)) cRightTone1 cRightTone > cRightTone1Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.139, CharisPitches.gdh(246): if (!(supernum) && !(hide_tone_staff)) cRightTone2 cRightTone > cRightTone2Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.140, CharisPitches.gdh(247): if (!(supernum) && !(hide_tone_staff)) cRightTone3 cRightTone > cRightTone3Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.141, CharisPitches.gdh(248): if (!(supernum) && !(hide_tone_staff)) cRightTone4 cRightTone > cRightTone4Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.142, CharisPitches.gdh(249): if (!(supernum) && !(hide_tone_staff)) cRightTone5 cRightTone > cRightTone5Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; RULE 1.143, CharisPitches.gdh(255): if (!(supernum) && hide_tone_staff) cLeftTone > cLeftStaff_no$3 / ANY ANY ^ _ cLeftTone ; endif; RULE 1.144, CharisPitches.gdh(258): if (!(supernum) && !(hide_tone_staff)) cLeftTone > cLeftStaff$3 / ANY ANY ^ _ cLeftTone ; endif; RULE 1.145, CharisPitches.gdh(263): cLeftContourOrStaff1 cLeftTone > @3 cLeftTone1Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; RULE 1.146, CharisPitches.gdh(264): cLeftContourOrStaff2 cLeftTone > @3 cLeftTone2Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; RULE 1.147, CharisPitches.gdh(265): cLeftContourOrStaff3 cLeftTone > @3 cLeftTone3Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; RULE 1.148, CharisPitches.gdh(266): cLeftContourOrStaff4 cLeftTone > @3 cLeftTone4Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; RULE 1.149, CharisPitches.gdh(267): cLeftContourOrStaff5 cLeftTone > @3 cLeftTone5Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; RULE 1.150, CharisPitches.gdh(602): if (pitch9 < 2) g_space > g_pitchSpace / ANY *GC8* _ *GC9* ; endif; RULE 1.151, CharisPitches.gdh(605): if (pitch9 < 2) g_pitchSpace > @3 / ANY ANY _ cno_LinesXXX ; endif; RULE 1.152, CharisPitches.gdh(607): if (pitch9 < 2) *GC10* > g_noPitchSpace / ANY ^ g_pitchSpace _ ; endif; RULE 1.153, CharisPitches.gdh(609): if (pitch9 < 2) g_pitchSpace > g_noPitchSpace / ANY ANY _ ; endif; RULE 1.154, CharisPitches.gdh(617): if (pitch9 < 2) *GC11* c9PitchX > @3 { user1 = 1; } c9Pitch1X / ANY ANY _ ^ _ ; endif; RULE 1.155, CharisPitches.gdh(618): if (pitch9 < 2) *GC12* c9PitchX > @3 { user1 = 1; } c9Pitch2X / ANY ANY _ ^ _ ; endif; RULE 1.156, CharisPitches.gdh(619): if (pitch9 < 2) *GC13* c9PitchX > @3 { user1 = 1; } c9Pitch3X / ANY ANY _ ^ _ ; endif; RULE 1.157, CharisPitches.gdh(620): if (pitch9 < 2) *GC14* c9PitchX > @3 { user1 = 1; } c9Pitch4X / ANY ANY _ ^ _ ; endif; RULE 1.158, CharisPitches.gdh(621): if (pitch9 < 2) *GC15* c9PitchX > @3 { user1 = 1; } c9Pitch5X / ANY ANY _ ^ _ ; endif; RULE 1.159, CharisPitches.gdh(622): if (pitch9 < 2) *GC16* c9PitchX > @3 { user1 = 1; } c9Pitch6X / ANY ANY _ ^ _ ; endif; RULE 1.160, CharisPitches.gdh(623): if (pitch9 < 2) *GC17* c9PitchX > @3 { user1 = 1; } c9Pitch7X / ANY ANY _ ^ _ ; endif; RULE 1.161, CharisPitches.gdh(624): if (pitch9 < 2) *GC18* c9PitchX > @3 { user1 = 1; } c9Pitch8X / ANY ANY _ ^ _ ; endif; RULE 1.162, CharisPitches.gdh(625): if (pitch9 < 2) *GC19* c9PitchX > @3 { user1 = 1; } c9Pitch9X / ANY ANY _ ^ _ ; endif; PASS: 2 Glyph ID => Column: 0 .. 75 => 0 76 .. 77 => 1 78 .. 223 => 0 224 => 2 225 .. 227 => 0 228 .. 229 => 3 230 => 4 231 .. 263 => 0 264 => 2 265 => 5 266 .. 271 => 0 272 => 3 273 .. 274 => 0 275 => 3 276 .. 304 => 0 305 => 2 306 => 5 307 .. 308 => 0 309 => 3 310 .. 315 => 0 316 => 3 317 .. 320 => 0 321 => 3 322 .. 354 => 0 355 => 2 356 => 5 357 .. 361 => 0 362 => 3 363 .. 365 => 0 366 => 3 367 .. 384 => 0 385 => 3 386 .. 390 => 0 391 => 3 392 .. 402 => 0 403 .. 404 => 3 405 .. 406 => 0 407 => 3 408 => 4 409 .. 419 => 0 420 => 3 421 .. 422 => 0 423 => 3 424 .. 459 => 0 460 => 3 461 => 4 462 .. 485 => 0 486 => 3 487 => 0 488 => 3 489 => 0 490 => 3 491 .. 516 => 0 517 .. 518 => 3 519 => 4 520 .. 546 => 0 547 => 2 548 => 5 549 .. 555 => 0 556 .. 557 => 3 558 .. 563 => 0 564 => 3 565 .. 566 => 0 567 => 3 568 .. 570 => 0 571 => 3 572 .. 581 => 0 582 => 3 583 .. 610 => 0 611 => 2 612 => 5 613 .. 616 => 0 617 => 3 618 .. 628 => 0 629 => 3 630 .. 670 => 0 671 => 3 672 .. 682 => 0 683 => 3 684 .. 696 => 0 697 => 3 698 .. 710 => 0 711 => 3 712 => 4 713 .. 725 => 0 726 => 3 727 .. 732 => 0 733 => 3 734 .. 753 => 0 754 .. 755 => 3 756 .. 783 => 0 784 => 1 785 => 0 786 .. 787 => 6 788 => 4 789 .. 797 => 0 798 .. 799 => 7 800 => 8 801 => 5 802 .. 803 => 1 804 => 6 805 .. 808 => 0 809 .. 810 => 3 811 .. 815 => 0 816 => 3 817 => 0 818 => 3 819 .. 824 => 0 825 => 3 826 .. 831 => 0 832 => 3 833 => 0 834 => 3 835 .. 846 => 0 847 => 2 848 => 5 849 .. 850 => 0 851 => 3 852 .. 859 => 0 860 => 1 861 => 6 862 .. 863 => 0 864 .. 865 => 1 866 => 6 867 .. 869 => 0 870 => 3 871 .. 872 => 0 873 => 3 874 => 0 875 => 3 876 .. 884 => 0 885 => 3 886 .. 895 => 0 896 => 3 897 .. 917 => 0 918 => 3 919 .. 940 => 0 941 => 3 942 .. 950 => 0 951 => 3 952 .. 956 => 0 957 => 3 958 .. 967 => 0 968 => 3 969 => 0 970 => 3 971 .. 987 => 0 988 => 3 989 => 4 990 .. 996 => 0 997 => 3 998 => 0 999 => 3 1000 => 0 1001 => 3 1002 ..1006 => 0 1007 => 3 1008 ..1015 => 0 1016 => 3 1017 ..1028 => 0 1029 => 3 1030 => 0 1031 => 3 1032 => 0 1033 => 3 1034 ..1042 => 0 1043 => 3 1044 => 0 1045 => 3 1046 ..1057 => 0 1058 => 3 1059 ..1073 => 0 1074 ..1075 => 3 1076 => 4 1077 ..1102 => 0 1103 ..1104 => 2 1105 ..1106 => 5 1107 ..1109 => 0 1110 => 3 1111 ..1112 => 0 1113 => 3 1114 ..1134 => 0 1135 => 3 1136 => 0 1137 => 3 1138 => 0 1139 => 3 1140 ..1166 => 0 1167 ..1168 => 2 1169 ..1170 => 5 1171 ..1188 => 0 1189 => 3 1190 ..1195 => 0 1196 => 3 1197 ..1206 => 0 1207 => 3 1208 => 0 1209 => 3 1210 => 0 1211 ..1212 => 3 1213 ..1214 => 0 1215 => 3 1216 ..1234 => 0 1235 => 3 1236 => 9 1237 => 3 1238 => 4 1239 ..1253 => 0 1254 => 3 1255 => 0 1256 => 3 1257 ..1262 => 0 1263 => 3 1264 ..1281 => 0 1282 => 3 1283 ..1286 => 0 1287 => 3 1288 ..1299 => 0 1300 => 3 1301 ..1305 => 0 1306 => 3 1307 ..1323 => 0 1324 => 3 1325 => 4 1326 ..1335 => 0 1336 => 3 1337 ..1352 => 0 1353 => 3 1354 ..1373 => 0 1374 ..1375 => 3 1376 => 4 1377 ..1395 => 0 1396 => 2 1397 => 5 1398 ..1399 => 0 1400 => 3 1401 ..1408 => 0 1409 => 3 1410 ..1411 => 0 1412 => 3 1413 => 0 1414 => 3 1415 ..1416 => 0 1417 => 3 1418 => 0 1419 => 3 1420 ..1438 => 0 1439 => 2 1440 => 5 1441 ..1453 => 0 1454 ..1455 => 3 1456 => 4 1457 ..1466 => 0 1467 => 3 1468 ..1472 => 0 1473 => 3 1474 => 0 1475 ..1476 => 3 1477 ..1487 => 0 1488 => 3 1489 ..1499 => 0 1500 => 3 1501 ..1511 => 0 1512 ..1513 => 3 1514 => 4 1515 ..1523 => 0 1524 ..1525 => 3 1526 ..1535 => 0 1536 => 3 1537 ..1589 => 0 1590 => 3 1591 ..1597 => 0 1598 => 3 1599 ..1602 => 0 1603 => 3 1604 ..1622 => 0 1623 => 3 1624 ..1639 => 0 1640 => 3 1641 ..1644 => 0 1645 ..1646 => 3 1647 ..1651 => 0 1652 => 3 1653 ..1707 => 0 1708 => 4 1709 ..1710 => 0 1711 => 4 1712 ..1748 => 0 1749 => 9 1750 ..1752 => 0 1753 => 9 1754 => 0 1755 => 4 1756 ..1760 => 0 1761 => 4 1762 ..1764 => 0 1765 => 9 1766 ..1767 => 0 1768 => 4 1769 ..1771 => 0 1772 => 4 1773 ..1774 => 0 1775 => 9 1776 => 0 1777 ..1781 => 4 1782 => 9 1783 ..1787 => 4 1788 ..1791 => 0 1792 => 9 1793 ..1799 => 4 1800 ..1803 => 0 1804 => 9 1805 ..1811 => 4 1812 => 0 1813 => 9 1814 => 0 1815 ..1816 => 4 1817 ..1818 => 0 1819 => 4 1820 => 9 1821 => 4 1822 ..1824 => 0 1825 ..1826 => 4 1827 ..1828 => 9 1829 => 0 1830 => 4 1831 => 0 1832 ..1833 => 9 1834 => 0 1835 ..1836 => 9 1837 => 0 1838 ..1839 => 4 1840 ..1841 => 0 1842 => 9 1843 => 4 1844 => 0 1845 ..1846 => 9 1847 => 4 1848 ..1853 => 0 1854 => 9 1855 => 10 1856 ..1859 => 4 1860 => 0 1861 => 9 1862 => 4 1863 ..1864 => 9 1865 => 4 1866 ..1867 => 9 1868 => 0 1869 => 9 1870 => 4 1871 ..1872 => 9 1873 ..1874 => 0 1875 => 4 1876 => 9 1877 ..1878 => 0 1879 ..1880 => 4 1881 => 9 1882 => 4 1883 => 9 1884 => 4 1885 => 0 1886 => 9 1887 ..1888 => 0 1889 => 9 1890 => 0 1891 => 9 1892 => 0 1893 ..1894 => 9 1895 ..1896 => 0 1897 => 9 1898 ..1911 => 0 1912 => 9 1913 => 11 1914 => 12 1915 => 5 1916 ..1917 => 9 1918 => 4 1919 => 9 1920 => 0 1921 ..1923 => 9 1924 ..1928 => 13 1929 ..1933 => 14 1934 ..1958 => 0 1959 ..1983 => 15 1984 ..1988 => 16 1989 ..1993 => 17 1994 ..2323 => 0 2324 => 18 2325 ..2333 => 19 2334 => 20 2335 ..2343 => 19 2344 => 21 2345 ..2353 => 19 2354 => 22 2355 ..2363 => 19 2364 => 23 2365 ..2373 => 19 2374 => 24 2375 ..2383 => 19 2384 => 25 2385 ..2393 => 19 2394 => 26 2395 ..2403 => 19 2404 => 27 2405 ..2492 => 0 2493 => 9 2494 ..2496 => 0 2497 ..2498 => 9 2499 ..2500 => 0 2501 ..2502 => 9 2503 ..2504 => 0 2505 => 9 2506 ..2524 => 0 2525 => 4 2526 => 9 2527 ..2528 => 0 2529 => 4 2530 => 9 2531 => 0 2532 ..2533 => 9 2534 ..2574 => 0 2575 => 28 2576 ..2675 => 0 2676 => 29 2677 => 30 2678 => 31 2679 => 32 2680 => 33 2681 => 34 2682 => 35 2683 => 36 2684 => 37 2685 => 38 2686 ..2687 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 1 1 2 1 1 2 1 1 1 1 1 1 1 3 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Matched=none Success=none 1: 1 0 5 63 0 0 64 5 4 17 0 0 63 64 65 6 8 66 7 18 67 19 20 21 22 23 24 25 26 0 67 67 67 67 67 67 67 67 67 67 Matched=0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57, Success=none 2: 1 0 5 63 0 0 64 5 4 17 0 68 63 64 65 6 8 66 7 18 67 19 20 21 22 23 24 25 26 0 67 67 67 67 67 67 67 67 67 67 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57, Success=none 3: 1 0 5 63 0 0 64 5 4 17 0 0 63 64 65 6 27 66 7 18 67 19 20 21 22 23 24 25 26 0 67 67 67 67 67 67 67 67 67 67 Matched=0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57, Success=none 4: 2 0 0 0 0 70 0 0 0 0 10 70 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4,5,6,7,8,9, Success=none 5: 2 0 0 0 0 69 0 0 0 0 9 69 9 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4, Success=none 6: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=15,17, Success=none 7: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=15,18, Success=none 8: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=15, Success=none 9: 3 0 0 0 0 75 0 0 0 0 11 75 11 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3, Success=none 10: 3 0 0 0 0 76 0 0 0 0 12 76 12 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,5,6,7,8, Success=none 11: 4 0 0 0 0 77 0 0 0 0 13 77 13 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2, Success=none 12: 4 0 0 0 0 78 0 0 0 0 14 78 14 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,5,6,7, Success=none 13: 5 0 0 0 0 79 0 0 0 0 15 79 15 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 Matched=0,1, Success=none 14: 5 0 0 0 0 80 0 0 0 0 16 80 16 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 0 0 0 0 0 0 0 0 0 0 Matched=0,1,5,6, Success=none 15: 6 0 0 0 0 90 0 0 0 0 0 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 0 0 0 0 0 0 0 0 0 0 Matched=0, Success=none 16: 6 0 0 0 0 91 0 0 0 0 0 91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91 0 0 0 0 0 0 0 0 0 0 Matched=0,5, Success=none 17: 2 0 0 0 0 69 0 0 0 0 9 69 9 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4,10, Success=10, 18: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 30 74 74 74 74 74 74 74 74 0 Matched=19,20,21,22,23,56,57, Success=19,57, 19: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 31 74 74 74 74 74 74 74 0 Matched=19,24,25,26,27,56,57, Success=19,57, 20: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 74 32 74 74 74 74 74 74 0 Matched=19,28,29,30,31,56,57, Success=19,57, 21: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 74 74 33 74 74 74 74 74 0 Matched=19,32,33,34,35,56,57, Success=19,57, 22: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 74 74 74 34 74 74 74 74 0 Matched=19,36,37,38,39,56,57, Success=19,57, 23: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 74 74 74 74 35 74 74 74 0 Matched=19,40,41,42,43,56,57, Success=19,57, 24: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 74 74 74 74 74 36 74 74 0 Matched=19,44,45,46,47,56,57, Success=19,57, 25: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 74 74 74 74 74 74 37 74 0 Matched=19,48,49,50,51,56,57, Success=19,57, 26: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 74 74 74 74 74 74 74 74 38 0 Matched=19,52,53,54,55,56,57, Success=19,57, 27: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=15,16, Success=16, 28: 3 0 0 0 0 75 0 0 0 0 11 75 11 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4, Success=4, 29: 3 0 0 0 0 76 0 0 0 0 12 76 12 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4,5,6,7,8,9, Success=4,9, 30: 3 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 41 0 0 0 0 0 0 0 0 0 Matched=20,21,22,23,56, Success=23,56, 31: 3 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 42 0 0 0 0 0 0 0 0 Matched=24,25,26,27,56, Success=27,56, 32: 3 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 43 0 0 0 0 0 0 0 Matched=28,29,30,31,56, Success=31,56, 33: 3 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 44 0 0 0 0 0 0 Matched=32,33,34,35,56, Success=35,56, 34: 3 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 45 0 0 0 0 0 Matched=36,37,38,39,56, Success=39,56, 35: 3 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 46 0 0 0 0 Matched=40,41,42,43,56, Success=43,56, 36: 3 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 47 0 0 0 Matched=44,45,46,47,56, Success=47,56, 37: 3 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 48 0 0 Matched=48,49,50,51,56, Success=51,56, 38: 3 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 49 0 Matched=52,53,54,55,56, Success=55,56, 39: 4 0 0 0 0 77 0 0 0 0 13 77 13 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3, Success=3, 40: 4 0 0 0 0 78 0 0 0 0 14 78 14 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,5,6,7,8, Success=3,8, 41: 4 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 52 0 0 0 0 0 0 0 0 0 Matched=20,21,22, Success=22, 42: 4 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 53 0 0 0 0 0 0 0 0 Matched=24,25,26, Success=26, 43: 4 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 54 0 0 0 0 0 0 0 Matched=28,29,30, Success=30, 44: 4 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 55 0 0 0 0 0 0 Matched=32,33,34, Success=34, 45: 4 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 56 0 0 0 0 0 Matched=36,37,38, Success=38, 46: 4 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 57 0 0 0 0 Matched=40,41,42, Success=42, 47: 4 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 58 0 0 0 Matched=44,45,46, Success=46, 48: 4 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 59 0 0 Matched=48,49,50, Success=50, 49: 4 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 60 0 Matched=52,53,54, Success=54, 50: 5 0 0 0 0 79 0 0 0 0 15 79 15 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2, Success=2, 51: 5 0 0 0 0 80 0 0 0 0 16 80 16 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 0 0 0 0 0 0 0 0 0 0 Matched=0,1,2,5,6,7, Success=2,7, 52: 5 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 81 0 0 0 0 0 0 0 0 0 Matched=20,21, Success=21, 53: 5 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 82 0 0 0 0 0 0 0 0 Matched=24,25, Success=25, 54: 5 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 83 0 0 0 0 0 0 0 Matched=28,29, Success=29, 55: 5 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 84 0 0 0 0 0 0 Matched=32,33, Success=33, 56: 5 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 85 0 0 0 0 0 Matched=36,37, Success=37, 57: 5 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 86 0 0 0 0 Matched=40,41, Success=41, 58: 5 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 87 0 0 0 Matched=44,45, Success=45, 59: 5 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 88 0 0 Matched=48,49, Success=49, 60: 5 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 89 0 Matched=52,53, Success=53, 61: 6 0 0 0 0 90 0 0 0 0 0 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 0 0 0 0 0 0 0 0 0 0 Matched=0,1, Success=1, 62: 6 0 0 0 0 91 0 0 0 0 0 91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91 0 0 0 0 0 0 0 0 0 0 Matched=0,1,5,6, Success=1,6, 63: 2 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 Matched=10, Success=10, 64: 2 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 Matched=11, Success=11, 65: 2 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 Matched=13, Success=13, 66: 2 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 Matched=14, Success=14, 67: 2 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 Matched=57, Success=57, 68: 2 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 Matched=12, Success=12, 69: 3 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 Matched=4, Success=4, 70: 3 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 Matched=4,9, Success=4,9, 71: 3 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 Matched=15,17, Success=15,17, 72: 3 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 Matched=15,18, Success=15,18, 73: 3 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 Matched=15, Success=15, 74: 3 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 Matched=56, Success=56, 75: 4 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 Matched=3, Success=3, 76: 4 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 Matched=3,8, Success=3,8, 77: 5 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 Matched=2, Success=2, 78: 5 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 Matched=2,7, Success=2,7, 79: 6 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 Matched=1, Success=1, 80: 6 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 Matched=1,6, Success=1,6, 81: 6 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 Matched=20, Success=20, 82: 6 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 Matched=24, Success=24, 83: 6 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 Matched=28, Success=28, 84: 6 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 Matched=32, Success=32, 85: 6 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 Matched=36, Success=36, 86: 6 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 Matched=40, Success=40, 87: 6 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 Matched=44, Success=44, 88: 6 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 Matched=48, Success=48, 89: 6 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 Matched=52, Success=52, 90: 7 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 Matched=0, Success=0, 91: 7 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 Matched=0,5, Success=0,5, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 2.0, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cnUDia cnUDia cUDia ; RULE 2.1, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cnUDia cUDia ; RULE 2.2, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cUDia ; RULE 2.3, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cUDia ; RULE 2.4, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cUDia ; RULE 2.5, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cnUDia cnUDia cUDia ; RULE 2.6, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cnUDia cUDia ; RULE 2.7, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cUDia ; RULE 2.8, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cUDia ; RULE 2.9, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cUDia ; RULE 2.10, CharisRules.gdh(595): if (ogonek == 1) cno_RetroHookStyle > cRetroHookStyle / ANY _ ; endif; RULE 2.11, CharisRules.gdh(597): if (!(ogonek == 1)) cRetroHookStyle > cno_RetroHookStyle / ANY _ ; endif; RULE 2.12, CharisRules.gdh(618): cno_Sup > cSup / *GC7* _ ; RULE 2.13, CharisPitches.gdh(276): _ cRightStaff > cRightToneHoriz$3:3 @3 / ANY _ _{ user1 == 1 } ; RULE 2.14, CharisPitches.gdh(277): _ cRightStaff_no > cRightToneHoriz$3:3 @3 / ANY _ _{ user1 == 1 } ; RULE 2.15, CharisPitches.gdh(286): cLeftContourOrStaff { user2 = 1; } / ANY _{ user2 == 0 } cLeftContour{ user2 == 0 } ; RULE 2.16, CharisPitches.gdh(289): cLeftContour { user2 = 2; } / ^ cLeftContourOrStaff{ user2 == 1 } _{ user1 == 1 } ; RULE 2.17, CharisPitches.gdh(294): cLeftStaff _ > @2 cLeftToneHoriz$2:2 / ANY _ _ cLeftContour{ (user2 == 2) && (user1 == 1) } ; RULE 2.18, CharisPitches.gdh(296): cLeftStaff_no _ > @2 cLeftToneHoriz$2:2 / ANY _ _ cLeftContour{ (user2 == 2) && (user1 == 1) } ; RULE 2.19, CharisPitches.gdh(639): if (pitch9 < 2) c9PitchX > @2 { user2 = 1; } / ANY ^ _{ (user2 == 0) && (user1 == 0) } ; endif; RULE 2.20, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11 g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; RULE 2.21, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; RULE 2.22, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; RULE 2.23, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11{ user1 == 0 } ; endif; RULE 2.24, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22 g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; RULE 2.25, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; RULE 2.26, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; RULE 2.27, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22{ user1 == 0 } ; endif; RULE 2.28, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33 g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; RULE 2.29, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; RULE 2.30, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; RULE 2.31, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33{ user1 == 0 } ; endif; RULE 2.32, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44 g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; RULE 2.33, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; RULE 2.34, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; RULE 2.35, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44{ user1 == 0 } ; endif; RULE 2.36, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55 g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; RULE 2.37, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; RULE 2.38, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; RULE 2.39, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55{ user1 == 0 } ; endif; RULE 2.40, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66 g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; RULE 2.41, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; RULE 2.42, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; RULE 2.43, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66{ user1 == 0 } ; endif; RULE 2.44, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77 g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; RULE 2.45, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; RULE 2.46, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; RULE 2.47, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77{ user1 == 0 } ; endif; RULE 2.48, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88 g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; RULE 2.49, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; RULE 2.50, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; RULE 2.51, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88{ user1 == 0 } ; endif; RULE 2.52, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99 g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; RULE 2.53, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; RULE 2.54, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; RULE 2.55, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99{ user1 == 0 } ; endif; RULE 2.56, CharisPitches.gdh(655): if (pitch9 < 2) c9PitchX c9PitchXX > _ @3:(2 3) { comp.p1.ref = @2; comp.p2.ref = @3; } / ANY _{ user2 != 1 } ^ _ ; endif; RULE 2.57, CharisPitches.gdh(662): if ((pitch9 == 1) || (pitch9 == 3)) cno_LinesXXX > cLinesXXX / ANY _ ; endif; TABLE: positioning PASS: 0--no FSM PASS: 3 Glyph ID => Column: 3 => 0 16 => 1 19 .. 28 => 2 36 => 3 37 => 2 38 => 4 39 => 2 40 => 3 41 => 2 42 .. 43 => 4 44 => 3 45 => 2 46 => 4 47 => 5 48 => 2 49 => 4 50 => 0 51 .. 52 => 2 53 .. 55 => 4 56 => 0 57 => 3 58 .. 61 => 2 65 => 1 67 => 1 68 => 0 69 .. 71 => 5 72 => 0 73 => 4 74 => 5 75 => 4 76 => 0 77 => 2 78 .. 79 => 5 80 .. 81 => 4 82 => 0 83 => 5 84 => 6 85 .. 86 => 4 87 => 5 88 => 0 89 => 3 90 => 2 91 => 4 92 => 6 93 => 4 98 .. 99 => 3 100 => 2 101 => 3 102 => 4 103 .. 110 => 0 111 => 6 112 .. 119 => 0 120 => 4 121 .. 129 => 0 137 => 2 141 .. 142 => 1 144 .. 145 => 2 153 => 2 155 => 2 160 .. 161 => 0 166 => 2 172 => 0 173 .. 174 => 3 175 => 0 176 => 2 177 => 0 186 => 6 187 => 2 199 .. 207 => 3 208 .. 209 => 0 210 => 3 211 .. 215 => 0 219 => 1 222 => 7 224 => 7 225 => 1 226 => 0 227 .. 229 => 2 230 => 8 231 .. 233 => 0 234 => 9 235 => 0 236 => 9 237 .. 239 => 0 240 => 9 241 .. 251 => 0 252 => 2 253 .. 254 => 0 255 => 2 256 .. 263 => 0 264 => 5 265 => 0 266 => 2 267 .. 269 => 0 270 .. 271 => 6 272 => 2 273 .. 274 => 0 275 => 2 276 .. 304 => 0 305 => 5 306 => 0 307 => 2 308 => 0 309 => 2 310 .. 311 => 0 312 => 2 313 .. 314 => 0 315 .. 322 => 2 323 .. 324 => 3 325 => 10 326 => 3 327 => 10 328 .. 330 => 3 331 => 10 332 .. 343 => 3 344 => 2 345 .. 346 => 3 347 => 2 348 .. 354 => 3 355 => 4 356 .. 357 => 3 359 .. 366 => 2 367 .. 369 => 5 370 .. 404 => 2 405 => 11 406 => 1 407 => 2 408 => 8 409 .. 412 => 5 413 => 6 414 .. 415 => 2 417 .. 420 => 2 421 .. 422 => 0 423 .. 426 => 2 427 => 5 428 .. 432 => 2 433 => 11 434 => 1 435 => 2 436 .. 439 => 4 440 .. 441 => 2 442 => 4 443 => 2 449 .. 452 => 2 454 .. 457 => 2 458 => 5 459 => 1 460 => 2 461 => 8 462 .. 466 => 5 467 => 4 468 .. 470 => 2 472 .. 473 => 2 474 => 6 475 .. 478 => 2 479 .. 480 => 4 481 .. 488 => 2 489 => 1 490 .. 504 => 2 505 .. 506 => 4 507 .. 510 => 2 516 .. 518 => 2 519 => 8 520 => 2 521 .. 522 => 0 523 => 9 524 => 0 525 => 9 526 .. 528 => 0 529 => 9 530 .. 532 => 0 533 => 2 534 .. 538 => 0 539 => 2 540 .. 544 => 0 545 .. 546 => 12 547 => 2 548 => 0 549 .. 550 => 2 551 => 11 552 .. 553 => 2 554 .. 555 => 3 556 .. 557 => 2 558 => 3 559 => 2 560 => 3 561 => 6 562 => 2 563 => 0 564 .. 572 => 2 573 => 6 574 => 2 575 => 0 576 .. 584 => 2 585 .. 586 => 3 587 => 10 588 => 3 589 => 10 590 .. 592 => 3 593 => 10 594 .. 596 => 3 597 => 2 598 .. 602 => 3 603 => 2 604 .. 608 => 3 609 .. 610 => 11 611 => 4 612 => 3 613 => 2 614 => 11 615 .. 627 => 2 628 => 4 629 => 2 630 => 4 631 .. 632 => 2 646 .. 659 => 2 661 .. 671 => 2 672 .. 678 => 5 679 .. 680 => 2 681 .. 682 => 6 683 => 2 684 .. 690 => 6 691 .. 693 => 2 694 .. 695 => 6 696 .. 697 => 2 698 => 6 699 .. 705 => 4 706 .. 708 => 2 710 .. 711 => 2 712 => 8 713 .. 719 => 4 720 .. 735 => 2 736 => 4 737 .. 756 => 2 757 .. 762 => 4 763 .. 767 => 2 768 => 4 769 .. 782 => 2 783 .. 784 => 0 785 => 1 786 => 2 787 => 6 788 => 8 789 .. 799 => 0 800 => 5 801 => 0 802 => 2 803 => 0 804 => 2 805 .. 808 => 0 809 => 2 810 => 6 811 .. 812 => 0 813 => 5 814 => 2 815 => 0 816 .. 818 => 2 819 => 3 820 .. 823 => 1 824 => 0 825 => 2 826 => 0 827 => 2 828 .. 829 => 3 830 => 5 831 => 1 832 => 2 833 => 0 834 => 2 835 .. 846 => 3 847 => 4 848 => 3 849 .. 851 => 2 852 => 3 853 .. 856 => 1 857 .. 870 => 2 871 .. 872 => 6 873 .. 896 => 2 897 .. 901 => 5 902 .. 919 => 2 920 .. 924 => 4 925 .. 926 => 2 928 .. 938 => 2 939 => 5 940 => 1 941 => 2 942 .. 947 => 5 948 .. 949 => 4 950 .. 960 => 2 961 => 4 962 .. 964 => 2 967 => 1 968 .. 971 => 2 972 .. 977 => 5 978 .. 979 => 4 980 .. 984 => 2 985 .. 986 => 4 987 => 1 988 => 2 989 => 8 990 .. 992 => 4 993 .. 994 => 2 996 .. 997 => 2 998 => 6 999 ..1005 => 2 1006 => 1 1007 ..1014 => 2 1016 => 2 1017 ..1025 => 4 1026 ..1035 => 2 1036 => 4 1037 ..1045 => 2 1046 ..1053 => 4 1055 ..1063 => 2 1064 ..1065 => 4 1067 ..1075 => 2 1076 => 8 1077 ..1079 => 0 1080 => 9 1081 => 0 1082 => 9 1083 ..1085 => 0 1086 => 9 1087 ..1096 => 0 1097 => 2 1098 ..1102 => 0 1103 ..1104 => 5 1105 ..1106 => 0 1107 => 2 1108 ..1109 => 6 1110 => 2 1111 => 6 1112 ..1113 => 2 1115 => 2 1116 => 0 1119 ..1140 => 2 1141 ..1143 => 0 1144 => 9 1145 => 0 1146 => 9 1147 ..1149 => 0 1150 => 9 1151 ..1160 => 0 1161 => 2 1162 ..1166 => 0 1167 ..1168 => 5 1169 ..1170 => 0 1171 ..1174 => 2 1176 ..1183 => 2 1184 => 6 1185 ..1192 => 2 1194 ..1196 => 2 1197 ..1198 => 5 1199 ..1212 => 2 1214 ..1222 => 2 1225 ..1226 => 2 1228 ..1235 => 2 1236 => 13 1237 => 2 1238 => 8 1239 ..1247 => 4 1248 ..1264 => 2 1265 ..1273 => 4 1274 ..1277 => 2 1280 ..1287 => 2 1288 ..1297 => 4 1298 ..1310 => 2 1311 ..1320 => 4 1321 ..1322 => 2 1324 => 2 1325 => 8 1326 ..1332 => 5 1333 => 4 1334 => 6 1335 ..1338 => 2 1339 => 5 1340 => 2 1341 => 6 1342 ..1354 => 2 1355 ..1361 => 4 1362 ..1363 => 2 1365 => 4 1366 ..1375 => 2 1376 => 8 1377 ..1395 => 0 1396 => 2 1397 => 0 1398 => 2 1399 => 0 1400 ..1410 => 2 1411 => 3 1412 => 2 1413 => 0 1414 ..1419 => 2 1420 ..1438 => 0 1439 => 5 1440 => 0 1441 ..1451 => 2 1452 => 3 1453 => 1 1454 ..1455 => 2 1456 => 8 1457 ..1458 => 3 1459 => 2 1460 ..1462 => 3 1463 ..1465 => 1 1466 => 0 1467 => 2 1468 ..1469 => 6 1470 => 2 1471 => 6 1472 ..1476 => 2 1477 => 1 1478 => 2 1479 ..1480 => 3 1482 ..1484 => 1 1485 ..1498 => 2 1499 => 6 1500 ..1508 => 2 1510 => 2 1511 => 1 1512 ..1513 => 2 1514 => 8 1515 ..1516 => 4 1517 ..1520 => 2 1521 ..1522 => 1 1523 ..1526 => 2 1527 => 1 1528 ..1532 => 2 1533 ..1534 => 1 1535 => 2 1536 ..1537 => 6 1538 => 2 1539 ..1540 => 6 1541 => 2 1542 ..1543 => 6 1544 ..1545 => 2 1546 ..1549 => 6 1550 ..1564 => 2 1565 => 6 1566 ..1588 => 2 1589 => 4 1590 => 2 1591 ..1596 => 4 1597 ..1630 => 2 1632 ..1638 => 2 1639 => 6 1640 ..1652 => 2 1655 => 2 1657 => 2 1659 ..1660 => 2 1662 => 2 1664 => 2 1667 ..1669 => 2 1671 => 2 1673 => 2 1675 => 2 1677 => 2 1694 => 2 1708 => 8 1711 => 8 1731 ..1733 => 2 1740 ..1742 => 1 1746 => 1 1749 => 13 1753 => 13 1754 => 1 1755 => 8 1761 => 8 1764 => 7 1765 => 13 1766 ..1767 => 1 1768 => 8 1771 => 1 1772 => 8 1775 => 13 1777 => 8 1778 ..1779 => 14 1780 => 8 1781 => 14 1782 => 13 1783 => 8 1784 ..1786 => 15 1787 => 8 1789 => 1 1792 => 13 1793 ..1799 => 8 1801 => 7 1802 => 1 1803 => 7 1804 => 13 1805 => 8 1806 ..1811 => 14 1813 => 13 1815 ..1816 => 8 1819 => 8 1820 => 13 1821 => 8 1822 => 1 1825 ..1826 => 8 1827 ..1828 => 13 1830 => 8 1832 ..1833 => 13 1835 ..1836 => 13 1837 => 1 1838 ..1839 => 8 1840 => 7 1841 => 1 1842 => 13 1843 => 8 1845 ..1846 => 13 1847 => 8 1854 => 13 1855 => 8 1856 ..1858 => 15 1859 => 8 1860 => 1 1861 => 13 1862 => 8 1863 => 16 1864 => 13 1865 => 8 1866 ..1867 => 17 1869 => 13 1870 => 8 1871 ..1872 => 13 1874 => 2 1875 => 8 1876 => 13 1878 => 2 1879 ..1880 => 8 1881 => 13 1882 => 8 1883 => 13 1884 => 8 1886 => 13 1889 => 13 1891 => 13 1893 ..1894 => 13 1897 => 13 1911 => 2 1912 => 18 1913 => 19 1914 => 13 1916 ..1917 => 13 1918 => 8 1919 => 13 1921 => 13 1922 ..1923 => 17 1924 ..1928 => 20 1929 ..1933 => 21 1934 ..1958 => 22 1959 ..1983 => 23 1984 ..1988 => 20 1989 ..1993 => 21 2493 => 13 2497 ..2498 => 13 2501 ..2502 => 13 2503 => 7 2505 => 13 2525 => 8 2526 => 13 2529 => 8 2530 => 13 2532 ..2533 => 13 2575 => 24 2619 ..2630 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 8 14 10 6 7 5 13 9 14 4 3 12 11 9 0 111 14 0 9 9 0 2 1 2 10 Matched=none Success=none 1: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 452 0 452 0 0 Matched=0, Success=none 2: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 453 0 Matched=1, Success=none 3: 1 0 0 0 0 0 0 0 0 15 0 0 0 0 114 15 15 15 15 115 112 0 0 0 0 113 Matched=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41, Success=none 4: 1 0 0 0 0 0 0 0 0 16 0 0 0 0 119 16 16 116 116 120 117 0 0 0 0 118 Matched=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, Success=none 5: 1 0 0 0 0 0 0 0 0 123 0 0 0 0 124 123 123 121 121 125 17 0 0 0 0 122 Matched=2,3,4,5,6,7,8,9,10,11,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,42,43,44,45,46,47,48,49,50,51, Success=none 6: 1 0 0 0 0 0 0 0 0 128 0 0 0 0 129 128 128 18 18 130 126 0 0 0 0 127 Matched=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,47,48,49,50,51, Success=none 7: 1 0 0 0 0 0 0 0 0 132 0 0 0 0 133 132 132 19 19 134 19 0 0 0 0 131 Matched=2,3,4,5,6,7,8,9,10,11,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,47,48,49,50,51, Success=none 8: 1 0 0 0 0 0 0 0 0 138 0 0 0 0 139 138 138 135 135 140 136 0 0 0 0 137 Matched=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51, Success=none 9: 1 0 0 0 0 0 0 0 0 20 0 0 0 0 454 20 20 20 20 20 20 0 0 0 0 141 Matched=7,8,9,10,11,32,33,34,35,36, Success=none 10: 1 0 0 0 0 0 0 0 0 143 0 0 0 0 144 143 143 21 21 21 21 0 0 0 0 142 Matched=7,8,9,10,11,22,23,24,25,26,32,33,34,35,36,47,48,49,50,51, Success=none 11: 1 0 0 0 0 0 0 0 0 148 0 0 0 0 149 148 148 145 145 22 146 0 0 0 0 147 Matched=7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51, Success=none 12: 1 0 0 0 0 0 0 0 0 152 0 0 0 0 153 152 152 23 23 23 150 0 0 0 0 151 Matched=7,8,9,10,11,12,13,14,15,16,22,23,24,25,26,32,33,34,35,36,37,38,39,40,41,47,48,49,50,51, Success=none 13: 1 0 0 0 0 0 0 0 0 156 0 0 0 0 157 156 156 154 154 24 24 0 0 0 0 155 Matched=7,8,9,10,11,17,18,19,20,21,22,23,24,25,26,32,33,34,35,36,42,43,44,45,46,47,48,49,50,51, Success=none 14: 1 0 0 0 0 0 0 0 0 455 0 0 0 0 25 455 455 25 25 25 25 0 0 0 0 158 Matched=22,23,24,25,26,47,48,49,50,51, Success=none 15: 2 0 0 0 0 0 0 0 0 26 0 0 0 0 161 26 26 26 26 162 159 0 0 0 0 160 Matched=2,3,4,5,7,8,9,10,12,13,14,15,27,28,29,30,32,33,34,35,37,38,39,40, Success=none 16: 2 0 0 0 0 0 0 0 0 31 0 0 0 0 178 31 31 175 175 179 176 0 0 0 0 177 Matched=2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,27,28,29,30,32,33,34,35,37,38,39,40,42,43,44,45, Success=none 17: 2 0 0 0 0 0 0 0 0 193 0 0 0 0 194 193 193 191 191 195 35 0 0 0 0 192 Matched=2,3,4,5,7,8,9,10,17,18,19,20,22,23,24,25,27,28,29,30,32,33,34,35,42,43,44,45,47,48,49,50, Success=none 18: 2 0 0 0 0 0 0 0 0 206 0 0 0 0 207 206 206 38 38 208 204 0 0 0 0 205 Matched=2,3,4,5,7,8,9,10,12,13,14,15,22,23,24,25,27,28,29,30,32,33,34,35,37,38,39,40,47,48,49,50, Success=none 19: 2 0 0 0 0 0 0 0 0 188 0 0 0 0 189 188 188 34 34 190 34 0 0 0 0 187 Matched=2,3,4,5,7,8,9,10,22,23,24,25,27,28,29,30,32,33,34,35,47,48,49,50, Success=none 20: 2 0 0 0 0 0 0 0 0 45 0 0 0 0 456 45 45 45 45 45 45 0 0 0 0 239 Matched=7,8,9,10,32,33,34,35, Success=none 21: 2 0 0 0 0 0 0 0 0 221 0 0 0 0 222 221 221 42 42 42 42 0 0 0 0 220 Matched=7,8,9,10,22,23,24,25,32,33,34,35,47,48,49,50, Success=none 22: 2 0 0 0 0 0 0 0 0 237 0 0 0 0 238 237 237 234 234 44 235 0 0 0 0 236 Matched=7,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,32,33,34,35,37,38,39,40,42,43,44,45,47,48,49,50, Success=none 23: 2 0 0 0 0 0 0 0 0 215 0 0 0 0 216 215 215 40 40 40 213 0 0 0 0 214 Matched=7,8,9,10,12,13,14,15,22,23,24,25,32,33,34,35,37,38,39,40,47,48,49,50, Success=none 24: 2 0 0 0 0 0 0 0 0 202 0 0 0 0 203 202 202 200 200 37 37 0 0 0 0 201 Matched=7,8,9,10,17,18,19,20,22,23,24,25,32,33,34,35,42,43,44,45,47,48,49,50, Success=none 25: 2 0 0 0 0 0 0 0 0 457 0 0 0 0 46 457 457 46 46 46 46 0 0 0 0 240 Matched=22,23,24,25,47,48,49,50, Success=none 26: 3 0 0 0 0 0 0 0 0 51 0 0 0 0 256 51 51 51 51 257 254 0 0 0 0 255 Matched=2,3,4,7,8,9,12,13,14,27,28,29,32,33,34,37,38,39, Success=none 27: 3 0 0 0 0 0 0 0 0 52 0 0 0 0 259 52 52 52 52 260 52 0 0 0 0 258 Matched=2,3,4,7,8,9,27,28,29,32,33,34, Success=none 28: 3 0 0 0 0 0 0 0 0 53 0 0 0 0 53 53 53 53 53 262 261 0 0 0 0 53 Matched=2,3,4,12,13,14,27,28,29,37,38,39, Success=none 29: 3 0 0 0 0 0 0 0 0 54 0 0 0 0 265 54 54 54 54 54 263 0 0 0 0 264 Matched=7,8,9,12,13,14,32,33,34,37,38,39, Success=none 30: 3 0 0 0 0 0 0 0 0 58 0 0 0 0 269 58 58 267 267 270 58 0 0 0 0 268 Matched=2,3,4,7,8,9,17,18,19,27,28,29,32,33,34,42,43,44, Success=none 31: 3 0 0 0 0 0 0 0 0 61 0 0 0 0 279 61 61 276 276 280 277 0 0 0 0 278 Matched=2,3,4,7,8,9,12,13,14,17,18,19,27,28,29,32,33,34,37,38,39,42,43,44, Success=none 32: 3 0 0 0 0 0 0 0 0 62 0 0 0 0 62 62 62 281 281 283 282 0 0 0 0 62 Matched=2,3,4,12,13,14,17,18,19,27,28,29,37,38,39,42,43,44, Success=none 33: 3 0 0 0 0 0 0 0 0 63 0 0 0 0 287 63 63 284 284 63 285 0 0 0 0 286 Matched=7,8,9,12,13,14,17,18,19,32,33,34,37,38,39,42,43,44, Success=none 34: 3 0 0 0 0 0 0 0 0 291 0 0 0 0 292 291 291 65 65 293 65 0 0 0 0 290 Matched=2,3,4,7,8,9,22,23,24,27,28,29,32,33,34,47,48,49, Success=none 35: 3 0 0 0 0 0 0 0 0 302 0 0 0 0 303 302 302 300 300 304 68 0 0 0 0 301 Matched=2,3,4,7,8,9,17,18,19,22,23,24,27,28,29,32,33,34,42,43,44,47,48,49, Success=none 36: 3 0 0 0 0 0 0 0 0 307 0 0 0 0 69 307 307 305 305 308 69 0 0 0 0 306 Matched=2,3,4,17,18,19,22,23,24,27,28,29,42,43,44,47,48,49, Success=none 37: 3 0 0 0 0 0 0 0 0 311 0 0 0 0 312 311 311 309 309 70 70 0 0 0 0 310 Matched=7,8,9,17,18,19,22,23,24,32,33,34,42,43,44,47,48,49, Success=none 38: 3 0 0 0 0 0 0 0 0 318 0 0 0 0 319 318 318 72 72 320 316 0 0 0 0 317 Matched=2,3,4,7,8,9,12,13,14,22,23,24,27,28,29,32,33,34,37,38,39,47,48,49, Success=none 39: 3 0 0 0 0 0 0 0 0 323 0 0 0 0 73 323 323 73 73 324 321 0 0 0 0 322 Matched=2,3,4,12,13,14,22,23,24,27,28,29,37,38,39,47,48,49, Success=none 40: 3 0 0 0 0 0 0 0 0 327 0 0 0 0 328 327 327 74 74 74 325 0 0 0 0 326 Matched=7,8,9,12,13,14,22,23,24,32,33,34,37,38,39,47,48,49, Success=none 41: 3 0 0 0 0 0 0 0 0 295 0 0 0 0 66 295 295 66 66 296 66 0 0 0 0 294 Matched=2,3,4,22,23,24,27,28,29,47,48,49, Success=none 42: 3 0 0 0 0 0 0 0 0 298 0 0 0 0 299 298 298 67 67 67 67 0 0 0 0 297 Matched=7,8,9,22,23,24,32,33,34,47,48,49, Success=none 43: 3 0 0 0 0 0 0 0 0 342 0 0 0 0 77 342 342 339 339 343 340 0 0 0 0 341 Matched=2,3,4,12,13,14,17,18,19,22,23,24,27,28,29,37,38,39,42,43,44,47,48,49, Success=none 44: 3 0 0 0 0 0 0 0 0 347 0 0 0 0 348 347 347 344 344 78 345 0 0 0 0 346 Matched=7,8,9,12,13,14,17,18,19,22,23,24,32,33,34,37,38,39,42,43,44,47,48,49, Success=none 45: 3 0 0 0 0 0 0 0 0 56 0 0 0 0 459 56 56 56 56 56 56 0 0 0 0 266 Matched=7,8,9,32,33,34, Success=none 46: 3 0 0 0 0 0 0 0 0 461 0 0 0 0 76 461 461 76 76 76 76 0 0 0 0 332 Matched=22,23,24,47,48,49, Success=none 47: 3 0 0 0 0 0 0 0 0 351 0 0 0 0 79 351 351 349 349 79 352 0 0 0 0 350 Matched=12,13,14,17,18,19,22,23,24,37,38,39,42,43,44,47,48,49, Success=none 48: 3 0 0 0 0 0 0 0 0 330 0 0 0 0 75 330 330 75 75 75 331 0 0 0 0 329 Matched=12,13,14,22,23,24,37,38,39,47,48,49, Success=none 49: 3 0 0 0 0 0 0 0 0 60 0 0 0 0 275 60 60 273 273 60 60 0 0 0 0 274 Matched=7,8,9,17,18,19,32,33,34,42,43,44, Success=none 50: 3 0 0 0 0 0 0 0 0 314 0 0 0 0 71 314 314 315 315 71 71 0 0 0 0 313 Matched=17,18,19,22,23,24,42,43,44,47,48,49, Success=none 51: 4 0 0 0 0 0 0 0 0 81 0 0 0 0 355 81 81 81 81 356 353 0 0 0 0 354 Matched=2,3,7,8,12,13,27,28,32,33,37,38, Success=none 52: 4 0 0 0 0 0 0 0 0 82 0 0 0 0 358 82 82 82 82 359 82 0 0 0 0 357 Matched=2,3,7,8,27,28,32,33, Success=none 53: 4 0 0 0 0 0 0 0 0 83 0 0 0 0 83 83 83 83 83 361 360 0 0 0 0 83 Matched=2,3,12,13,27,28,37,38, Success=none 54: 4 0 0 0 0 0 0 0 0 84 0 0 0 0 364 84 84 84 84 84 362 0 0 0 0 363 Matched=7,8,12,13,32,33,37,38, Success=none 55: 4 0 0 0 0 0 0 0 0 85 0 0 0 0 85 85 85 85 85 463 85 0 0 0 0 85 Matched=2,3,27,28, Success=none 56: 4 0 0 0 0 0 0 0 0 86 0 0 0 0 464 86 86 86 86 86 86 0 0 0 0 365 Matched=7,8,32,33, Success=none 57: 4 0 0 0 0 0 0 0 0 87 0 0 0 0 87 87 87 87 87 87 465 0 0 0 0 87 Matched=12,13,37,38, Success=none 58: 4 0 0 0 0 0 0 0 0 88 0 0 0 0 368 88 88 366 366 369 88 0 0 0 0 367 Matched=2,3,7,8,17,18,27,28,32,33,42,43, Success=none 59: 4 0 0 0 0 0 0 0 0 89 0 0 0 0 89 89 89 370 370 371 89 0 0 0 0 89 Matched=2,3,17,18,27,28,42,43, Success=none 60: 4 0 0 0 0 0 0 0 0 90 0 0 0 0 374 90 90 372 372 90 90 0 0 0 0 373 Matched=7,8,17,18,32,33,42,43, Success=none 61: 4 0 0 0 0 0 0 0 0 92 0 0 0 0 378 92 92 375 375 379 376 0 0 0 0 377 Matched=2,3,7,8,12,13,17,18,27,28,32,33,37,38,42,43, Success=none 62: 4 0 0 0 0 0 0 0 0 93 0 0 0 0 93 93 93 380 380 382 381 0 0 0 0 93 Matched=2,3,12,13,17,18,27,28,37,38,42,43, Success=none 63: 4 0 0 0 0 0 0 0 0 94 0 0 0 0 386 94 94 383 383 94 384 0 0 0 0 385 Matched=7,8,12,13,17,18,32,33,37,38,42,43, Success=none 64: 4 0 0 0 0 0 0 0 0 95 0 0 0 0 95 95 95 387 387 95 388 0 0 0 0 95 Matched=12,13,17,18,37,38,42,43, Success=none 65: 4 0 0 0 0 0 0 0 0 390 0 0 0 0 391 390 390 96 96 392 96 0 0 0 0 389 Matched=2,3,7,8,22,23,27,28,32,33,47,48, Success=none 66: 4 0 0 0 0 0 0 0 0 394 0 0 0 0 97 394 394 97 97 395 97 0 0 0 0 393 Matched=2,3,22,23,27,28,47,48, Success=none 67: 4 0 0 0 0 0 0 0 0 397 0 0 0 0 398 397 397 98 98 98 98 0 0 0 0 396 Matched=7,8,22,23,32,33,47,48, Success=none 68: 4 0 0 0 0 0 0 0 0 402 0 0 0 0 403 402 402 400 400 404 100 0 0 0 0 401 Matched=2,3,7,8,17,18,22,23,27,28,32,33,42,43,47,48, Success=none 69: 4 0 0 0 0 0 0 0 0 407 0 0 0 0 101 407 407 405 405 408 101 0 0 0 0 406 Matched=2,3,17,18,22,23,27,28,42,43,47,48, Success=none 70: 4 0 0 0 0 0 0 0 0 411 0 0 0 0 412 411 411 409 409 102 102 0 0 0 0 410 Matched=7,8,17,18,22,23,32,33,42,43,47,48, Success=none 71: 4 0 0 0 0 0 0 0 0 414 0 0 0 0 103 414 414 415 415 103 103 0 0 0 0 413 Matched=17,18,22,23,42,43,47,48, Success=none 72: 4 0 0 0 0 0 0 0 0 418 0 0 0 0 419 418 418 104 104 420 416 0 0 0 0 417 Matched=2,3,7,8,12,13,22,23,27,28,32,33,37,38,47,48, Success=none 73: 4 0 0 0 0 0 0 0 0 423 0 0 0 0 105 423 423 105 105 424 421 0 0 0 0 422 Matched=2,3,12,13,22,23,27,28,37,38,47,48, Success=none 74: 4 0 0 0 0 0 0 0 0 427 0 0 0 0 428 427 427 106 106 106 425 0 0 0 0 426 Matched=7,8,12,13,22,23,32,33,37,38,47,48, Success=none 75: 4 0 0 0 0 0 0 0 0 430 0 0 0 0 107 430 430 107 107 107 431 0 0 0 0 429 Matched=12,13,22,23,37,38,47,48, Success=none 76: 4 0 0 0 0 0 0 0 0 467 0 0 0 0 99 467 467 99 99 99 99 0 0 0 0 399 Matched=22,23,47,48, Success=none 77: 4 0 0 0 0 0 0 0 0 441 0 0 0 0 108 441 441 438 438 442 439 0 0 0 0 440 Matched=2,3,12,13,17,18,22,23,27,28,37,38,42,43,47,48, Success=none 78: 4 0 0 0 0 0 0 0 0 446 0 0 0 0 447 446 446 443 443 109 444 0 0 0 0 445 Matched=7,8,12,13,17,18,22,23,32,33,37,38,42,43,47,48, Success=none 79: 4 0 0 0 0 0 0 0 0 450 0 0 0 0 110 450 450 448 448 110 451 0 0 0 0 449 Matched=12,13,17,18,22,23,37,38,42,43,47,48, Success=none 80: 4 0 0 0 0 0 0 0 0 91 0 0 0 0 91 91 91 466 466 91 91 0 0 0 0 91 Matched=17,18,42,43, Success=none 81: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 470 0 0 0 0 469 Matched=2,7,12,27,32,37, Success=none 82: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 0 0 0 0 0 469 Matched=2,7,27,32, Success=none 83: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 470 0 0 0 0 0 Matched=2,12,27,37, Success=none 84: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 470 0 0 0 0 469 Matched=7,12,32,37, Success=none 85: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 0 0 0 0 0 0 Matched=2,27, Success=none 86: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 0 0 0 0 0 469 Matched=7,32, Success=none 87: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470 0 0 0 0 0 Matched=12,37, Success=none 88: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 468 0 0 0 0 0 469 Matched=2,7,17,27,32,42, Success=none 89: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 468 0 0 0 0 0 0 Matched=2,17,27,42, Success=none 90: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 0 0 0 0 0 469 Matched=7,17,32,42, Success=none 91: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 0 0 0 0 0 0 Matched=17,42, Success=none 92: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 468 470 0 0 0 0 469 Matched=2,7,12,17,27,32,37,42, Success=none 93: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 468 470 0 0 0 0 0 Matched=2,12,17,27,37,42, Success=none 94: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 470 0 0 0 0 469 Matched=7,12,17,32,37,42, Success=none 95: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 470 0 0 0 0 0 Matched=12,17,37,42, Success=none 96: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 468 0 0 0 0 0 472 Matched=2,7,22,27,32,47, Success=none 97: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 0 0 0 0 0 473 Matched=2,22,27,47, Success=none 98: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 0 0 0 0 0 472 Matched=7,22,32,47, Success=none 99: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 0 0 0 0 0 473 Matched=22,47, Success=none 100: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 468 0 0 0 0 0 472 Matched=2,7,17,22,27,32,42,47, Success=none 101: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 468 0 0 0 0 0 473 Matched=2,17,22,27,42,47, Success=none 102: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 0 0 0 0 0 0 472 Matched=7,17,22,32,42,47, Success=none 103: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 0 0 0 0 0 473 Matched=17,22,42,47, Success=none 104: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 468 470 0 0 0 0 472 Matched=2,7,12,22,27,32,37,47, Success=none 105: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 470 0 0 0 0 473 Matched=2,12,22,27,37,47, Success=none 106: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 470 0 0 0 0 472 Matched=7,12,22,32,37,47, Success=none 107: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 470 0 0 0 0 473 Matched=12,22,37,47, Success=none 108: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 468 470 0 0 0 0 473 Matched=2,12,17,22,27,37,42,47, Success=none 109: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 0 470 0 0 0 0 472 Matched=7,12,17,22,32,37,42,47, Success=none 110: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 470 0 0 0 0 473 Matched=12,17,22,37,42,47, Success=none 111: 1 0 0 0 0 0 0 0 0 455 0 0 0 0 25 455 455 25 25 25 25 0 0 0 0 158 Matched=22,23,24,25,26,47,48,49,50,51,52, Success=52, 112: 2 0 0 0 0 0 0 0 0 27 0 0 0 0 164 27 27 27 27 165 27 0 0 0 0 163 Matched=2,3,4,5,7,8,9,10,16,27,28,29,30,32,33,34,35,41, Success=16,41, 113: 2 0 0 0 0 0 0 0 0 26 0 0 0 0 161 26 26 26 26 162 159 0 0 0 0 160 Matched=2,3,4,5,7,8,9,10,11,12,13,14,15,27,28,29,30,32,33,34,35,36,37,38,39,40, Success=11,36, 114: 2 0 0 0 0 0 0 0 0 28 0 0 0 0 28 28 28 28 28 167 166 0 0 0 0 28 Matched=2,3,4,5,11,12,13,14,15,27,28,29,30,36,37,38,39,40, Success=11,36, 115: 2 0 0 0 0 0 0 0 0 29 0 0 0 0 170 29 29 29 29 29 168 0 0 0 0 169 Matched=6,7,8,9,10,12,13,14,15,31,32,33,34,35,37,38,39,40, Success=6,31, 116: 2 0 0 0 0 0 0 0 0 26 0 0 0 0 161 26 26 26 26 162 159 0 0 0 0 160 Matched=2,3,4,5,7,8,9,10,12,13,14,15,21,27,28,29,30,32,33,34,35,37,38,39,40,46, Success=21,46, 117: 2 0 0 0 0 0 0 0 0 30 0 0 0 0 173 30 30 171 171 174 30 0 0 0 0 172 Matched=2,3,4,5,7,8,9,10,16,17,18,19,20,27,28,29,30,32,33,34,35,41,42,43,44,45, Success=16,41, 118: 2 0 0 0 0 0 0 0 0 31 0 0 0 0 178 31 31 175 175 179 176 0 0 0 0 177 Matched=2,3,4,5,7,8,9,10,11,12,13,14,15,17,18,19,20,27,28,29,30,32,33,34,35,36,37,38,39,40,42,43,44,45, Success=11,36, 119: 2 0 0 0 0 0 0 0 0 32 0 0 0 0 32 32 32 180 180 182 181 0 0 0 0 32 Matched=2,3,4,5,11,12,13,14,15,17,18,19,20,27,28,29,30,36,37,38,39,40,42,43,44,45, Success=11,36, 120: 2 0 0 0 0 0 0 0 0 33 0 0 0 0 186 33 33 183 183 33 184 0 0 0 0 185 Matched=6,7,8,9,10,12,13,14,15,17,18,19,20,31,32,33,34,35,37,38,39,40,42,43,44,45, Success=6,31, 121: 2 0 0 0 0 0 0 0 0 188 0 0 0 0 189 188 188 34 34 190 34 0 0 0 0 187 Matched=2,3,4,5,7,8,9,10,21,22,23,24,25,27,28,29,30,32,33,34,35,46,47,48,49,50, Success=21,46, 122: 2 0 0 0 0 0 0 0 0 193 0 0 0 0 194 193 193 191 191 195 35 0 0 0 0 192 Matched=2,3,4,5,7,8,9,10,11,17,18,19,20,22,23,24,25,26,27,28,29,30,32,33,34,35,36,42,43,44,45,47,48,49,50,51, Success=11,26,36,51, 123: 2 0 0 0 0 0 0 0 0 30 0 0 0 0 173 30 30 171 171 174 30 0 0 0 0 172 Matched=2,3,4,5,7,8,9,10,17,18,19,20,26,27,28,29,30,32,33,34,35,42,43,44,45,51, Success=26,51, 124: 2 0 0 0 0 0 0 0 0 198 0 0 0 0 36 198 198 196 196 199 36 0 0 0 0 197 Matched=2,3,4,5,11,17,18,19,20,22,23,24,25,27,28,29,30,36,42,43,44,45,47,48,49,50, Success=11,36, 125: 2 0 0 0 0 0 0 0 0 202 0 0 0 0 203 202 202 200 200 37 37 0 0 0 0 201 Matched=6,7,8,9,10,17,18,19,20,22,23,24,25,31,32,33,34,35,42,43,44,45,47,48,49,50, Success=6,31, 126: 2 0 0 0 0 0 0 0 0 188 0 0 0 0 189 188 188 34 34 190 34 0 0 0 0 187 Matched=2,3,4,5,7,8,9,10,16,22,23,24,25,27,28,29,30,32,33,34,35,41,47,48,49,50, Success=16,41, 127: 2 0 0 0 0 0 0 0 0 206 0 0 0 0 207 206 206 38 38 208 204 0 0 0 0 205 Matched=2,3,4,5,7,8,9,10,11,12,13,14,15,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,47,48,49,50,51, Success=11,26,36,51, 128: 2 0 0 0 0 0 0 0 0 26 0 0 0 0 161 26 26 26 26 162 159 0 0 0 0 160 Matched=2,3,4,5,7,8,9,10,12,13,14,15,26,27,28,29,30,32,33,34,35,37,38,39,40,51, Success=26,51, 129: 2 0 0 0 0 0 0 0 0 211 0 0 0 0 39 211 211 39 39 212 209 0 0 0 0 210 Matched=2,3,4,5,11,12,13,14,15,22,23,24,25,27,28,29,30,36,37,38,39,40,47,48,49,50, Success=11,36, 130: 2 0 0 0 0 0 0 0 0 215 0 0 0 0 216 215 215 40 40 40 213 0 0 0 0 214 Matched=6,7,8,9,10,12,13,14,15,22,23,24,25,31,32,33,34,35,37,38,39,40,47,48,49,50, Success=6,31, 131: 2 0 0 0 0 0 0 0 0 188 0 0 0 0 189 188 188 34 34 190 34 0 0 0 0 187 Matched=2,3,4,5,7,8,9,10,11,22,23,24,25,26,27,28,29,30,32,33,34,35,36,47,48,49,50,51, Success=11,26,36,51, 132: 2 0 0 0 0 0 0 0 0 27 0 0 0 0 164 27 27 27 27 165 27 0 0 0 0 163 Matched=2,3,4,5,7,8,9,10,26,27,28,29,30,32,33,34,35,51, Success=26,51, 133: 2 0 0 0 0 0 0 0 0 218 0 0 0 0 41 218 218 41 41 219 41 0 0 0 0 217 Matched=2,3,4,5,11,22,23,24,25,27,28,29,30,36,47,48,49,50, Success=11,36, 134: 2 0 0 0 0 0 0 0 0 221 0 0 0 0 222 221 221 42 42 42 42 0 0 0 0 220 Matched=6,7,8,9,10,22,23,24,25,31,32,33,34,35,47,48,49,50, Success=6,31, 135: 2 0 0 0 0 0 0 0 0 206 0 0 0 0 207 206 206 38 38 208 204 0 0 0 0 205 Matched=2,3,4,5,7,8,9,10,12,13,14,15,21,22,23,24,25,27,28,29,30,32,33,34,35,37,38,39,40,46,47,48,49,50, Success=21,46, 136: 2 0 0 0 0 0 0 0 0 193 0 0 0 0 194 193 193 191 191 195 35 0 0 0 0 192 Matched=2,3,4,5,7,8,9,10,16,17,18,19,20,22,23,24,25,27,28,29,30,32,33,34,35,41,42,43,44,45,47,48,49,50, Success=16,41, 137: 2 0 0 0 0 0 0 0 0 226 0 0 0 0 227 226 226 223 223 228 224 0 0 0 0 225 Matched=2,3,4,5,7,8,9,10,11,12,13,14,15,17,18,19,20,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,42,43,44,45,47,48,49,50,51, Success=11,26,36,51, 138: 2 0 0 0 0 0 0 0 0 31 0 0 0 0 178 31 31 175 175 179 176 0 0 0 0 177 Matched=2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,26,27,28,29,30,32,33,34,35,37,38,39,40,42,43,44,45,51, Success=26,51, 139: 2 0 0 0 0 0 0 0 0 232 0 0 0 0 43 232 232 229 229 233 230 0 0 0 0 231 Matched=2,3,4,5,11,12,13,14,15,17,18,19,20,22,23,24,25,27,28,29,30,36,37,38,39,40,42,43,44,45,47,48,49,50, Success=11,36, 140: 2 0 0 0 0 0 0 0 0 237 0 0 0 0 238 237 237 234 234 44 235 0 0 0 0 236 Matched=6,7,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,31,32,33,34,35,37,38,39,40,42,43,44,45,47,48,49,50, Success=6,31, 141: 2 0 0 0 0 0 0 0 0 45 0 0 0 0 456 45 45 45 45 45 45 0 0 0 0 239 Matched=7,8,9,10,11,32,33,34,35,36, Success=11,36, 142: 2 0 0 0 0 0 0 0 0 221 0 0 0 0 222 221 221 42 42 42 42 0 0 0 0 220 Matched=7,8,9,10,11,22,23,24,25,26,32,33,34,35,36,47,48,49,50,51, Success=11,26,36,51, 143: 2 0 0 0 0 0 0 0 0 45 0 0 0 0 456 45 45 45 45 45 45 0 0 0 0 239 Matched=7,8,9,10,26,32,33,34,35,51, Success=26,51, 144: 2 0 0 0 0 0 0 0 0 457 0 0 0 0 46 457 457 46 46 46 46 0 0 0 0 240 Matched=11,22,23,24,25,36,47,48,49,50, Success=11,36, 145: 2 0 0 0 0 0 0 0 0 215 0 0 0 0 216 215 215 40 40 40 213 0 0 0 0 214 Matched=7,8,9,10,12,13,14,15,21,22,23,24,25,32,33,34,35,37,38,39,40,46,47,48,49,50, Success=21,46, 146: 2 0 0 0 0 0 0 0 0 202 0 0 0 0 203 202 202 200 200 37 37 0 0 0 0 201 Matched=7,8,9,10,16,17,18,19,20,22,23,24,25,32,33,34,35,41,42,43,44,45,47,48,49,50, Success=16,41, 147: 2 0 0 0 0 0 0 0 0 237 0 0 0 0 238 237 237 234 234 44 235 0 0 0 0 236 Matched=7,8,9,10,11,12,13,14,15,17,18,19,20,22,23,24,25,26,32,33,34,35,36,37,38,39,40,42,43,44,45,47,48,49,50,51, Success=11,26,36,51, 148: 2 0 0 0 0 0 0 0 0 33 0 0 0 0 186 33 33 183 183 33 184 0 0 0 0 185 Matched=7,8,9,10,12,13,14,15,17,18,19,20,26,32,33,34,35,37,38,39,40,42,43,44,45,51, Success=26,51, 149: 2 0 0 0 0 0 0 0 0 243 0 0 0 0 47 243 243 241 241 47 244 0 0 0 0 242 Matched=11,12,13,14,15,17,18,19,20,22,23,24,25,36,37,38,39,40,42,43,44,45,47,48,49,50, Success=11,36, 150: 2 0 0 0 0 0 0 0 0 221 0 0 0 0 222 221 221 42 42 42 42 0 0 0 0 220 Matched=7,8,9,10,16,22,23,24,25,32,33,34,35,41,47,48,49,50, Success=16,41, 151: 2 0 0 0 0 0 0 0 0 215 0 0 0 0 216 215 215 40 40 40 213 0 0 0 0 214 Matched=7,8,9,10,11,12,13,14,15,22,23,24,25,26,32,33,34,35,36,37,38,39,40,47,48,49,50,51, Success=11,26,36,51, 152: 2 0 0 0 0 0 0 0 0 29 0 0 0 0 170 29 29 29 29 29 168 0 0 0 0 169 Matched=7,8,9,10,12,13,14,15,26,32,33,34,35,37,38,39,40,51, Success=26,51, 153: 2 0 0 0 0 0 0 0 0 246 0 0 0 0 48 246 246 48 48 48 247 0 0 0 0 245 Matched=11,12,13,14,15,22,23,24,25,36,37,38,39,40,47,48,49,50, Success=11,36, 154: 2 0 0 0 0 0 0 0 0 221 0 0 0 0 222 221 221 42 42 42 42 0 0 0 0 220 Matched=7,8,9,10,21,22,23,24,25,32,33,34,35,46,47,48,49,50, Success=21,46, 155: 2 0 0 0 0 0 0 0 0 202 0 0 0 0 203 202 202 200 200 37 37 0 0 0 0 201 Matched=7,8,9,10,11,17,18,19,20,22,23,24,25,26,32,33,34,35,36,42,43,44,45,47,48,49,50,51, Success=11,26,36,51, 156: 2 0 0 0 0 0 0 0 0 49 0 0 0 0 250 49 49 248 248 49 49 0 0 0 0 249 Matched=7,8,9,10,17,18,19,20,26,32,33,34,35,42,43,44,45,51, Success=26,51, 157: 2 0 0 0 0 0 0 0 0 252 0 0 0 0 50 252 252 253 253 50 50 0 0 0 0 251 Matched=11,17,18,19,20,22,23,24,25,36,42,43,44,45,47,48,49,50, Success=11,36, 158: 2 0 0 0 0 0 0 0 0 457 0 0 0 0 46 457 457 46 46 46 46 0 0 0 0 240 Matched=22,23,24,25,26,47,48,49,50,51, Success=26,51, 159: 3 0 0 0 0 0 0 0 0 52 0 0 0 0 259 52 52 52 52 260 52 0 0 0 0 258 Matched=2,3,4,7,8,9,15,27,28,29,32,33,34,40, Success=15,40, 160: 3 0 0 0 0 0 0 0 0 51 0 0 0 0 256 51 51 51 51 257 254 0 0 0 0 255 Matched=2,3,4,7,8,9,10,12,13,14,27,28,29,32,33,34,35,37,38,39, Success=10,35, 161: 3 0 0 0 0 0 0 0 0 53 0 0 0 0 53 53 53 53 53 262 261 0 0 0 0 53 Matched=2,3,4,10,12,13,14,27,28,29,35,37,38,39, Success=10,35, 162: 3 0 0 0 0 0 0 0 0 54 0 0 0 0 265 54 54 54 54 54 263 0 0 0 0 264 Matched=5,7,8,9,12,13,14,30,32,33,34,37,38,39, Success=5,30, 163: 3 0 0 0 0 0 0 0 0 52 0 0 0 0 259 52 52 52 52 260 52 0 0 0 0 258 Matched=2,3,4,7,8,9,10,27,28,29,32,33,34,35, Success=10,35, 164: 3 0 0 0 0 0 0 0 0 55 0 0 0 0 55 55 55 55 55 458 55 0 0 0 0 55 Matched=2,3,4,10,27,28,29,35, Success=10,35, 165: 3 0 0 0 0 0 0 0 0 56 0 0 0 0 459 56 56 56 56 56 56 0 0 0 0 266 Matched=5,7,8,9,30,32,33,34, Success=5,30, 166: 3 0 0 0 0 0 0 0 0 55 0 0 0 0 55 55 55 55 55 458 55 0 0 0 0 55 Matched=2,3,4,15,27,28,29,40, Success=15,40, 167: 3 0 0 0 0 0 0 0 0 57 0 0 0 0 57 57 57 57 57 57 460 0 0 0 0 57 Matched=5,12,13,14,30,37,38,39, Success=5,30, 168: 3 0 0 0 0 0 0 0 0 56 0 0 0 0 459 56 56 56 56 56 56 0 0 0 0 266 Matched=7,8,9,15,32,33,34,40, Success=15,40, 169: 3 0 0 0 0 0 0 0 0 54 0 0 0 0 265 54 54 54 54 54 263 0 0 0 0 264 Matched=7,8,9,10,12,13,14,32,33,34,35,37,38,39, Success=10,35, 170: 3 0 0 0 0 0 0 0 0 57 0 0 0 0 57 57 57 57 57 57 460 0 0 0 0 57 Matched=10,12,13,14,35,37,38,39, Success=10,35, 171: 3 0 0 0 0 0 0 0 0 52 0 0 0 0 259 52 52 52 52 260 52 0 0 0 0 258 Matched=2,3,4,7,8,9,20,27,28,29,32,33,34,45, Success=20,45, 172: 3 0 0 0 0 0 0 0 0 58 0 0 0 0 269 58 58 267 267 270 58 0 0 0 0 268 Matched=2,3,4,7,8,9,10,17,18,19,27,28,29,32,33,34,35,42,43,44, Success=10,35, 173: 3 0 0 0 0 0 0 0 0 59 0 0 0 0 59 59 59 271 271 272 59 0 0 0 0 59 Matched=2,3,4,10,17,18,19,27,28,29,35,42,43,44, Success=10,35, 174: 3 0 0 0 0 0 0 0 0 60 0 0 0 0 275 60 60 273 273 60 60 0 0 0 0 274 Matched=5,7,8,9,17,18,19,30,32,33,34,42,43,44, Success=5,30, 175: 3 0 0 0 0 0 0 0 0 51 0 0 0 0 256 51 51 51 51 257 254 0 0 0 0 255 Matched=2,3,4,7,8,9,12,13,14,20,27,28,29,32,33,34,37,38,39,45, Success=20,45, 176: 3 0 0 0 0 0 0 0 0 58 0 0 0 0 269 58 58 267 267 270 58 0 0 0 0 268 Matched=2,3,4,7,8,9,15,17,18,19,27,28,29,32,33,34,40,42,43,44, Success=15,40, 177: 3 0 0 0 0 0 0 0 0 61 0 0 0 0 279 61 61 276 276 280 277 0 0 0 0 278 Matched=2,3,4,7,8,9,10,12,13,14,17,18,19,27,28,29,32,33,34,35,37,38,39,42,43,44, Success=10,35, 178: 3 0 0 0 0 0 0 0 0 62 0 0 0 0 62 62 62 281 281 283 282 0 0 0 0 62 Matched=2,3,4,10,12,13,14,17,18,19,27,28,29,35,37,38,39,42,43,44, Success=10,35, 179: 3 0 0 0 0 0 0 0 0 63 0 0 0 0 287 63 63 284 284 63 285 0 0 0 0 286 Matched=5,7,8,9,12,13,14,17,18,19,30,32,33,34,37,38,39,42,43,44, Success=5,30, 180: 3 0 0 0 0 0 0 0 0 53 0 0 0 0 53 53 53 53 53 262 261 0 0 0 0 53 Matched=2,3,4,12,13,14,20,27,28,29,37,38,39,45, Success=20,45, 181: 3 0 0 0 0 0 0 0 0 59 0 0 0 0 59 59 59 271 271 272 59 0 0 0 0 59 Matched=2,3,4,15,17,18,19,27,28,29,40,42,43,44, Success=15,40, 182: 3 0 0 0 0 0 0 0 0 64 0 0 0 0 64 64 64 288 288 64 289 0 0 0 0 64 Matched=5,12,13,14,17,18,19,30,37,38,39,42,43,44, Success=5,30, 183: 3 0 0 0 0 0 0 0 0 54 0 0 0 0 265 54 54 54 54 54 263 0 0 0 0 264 Matched=7,8,9,12,13,14,20,32,33,34,37,38,39,45, Success=20,45, 184: 3 0 0 0 0 0 0 0 0 60 0 0 0 0 275 60 60 273 273 60 60 0 0 0 0 274 Matched=7,8,9,15,17,18,19,32,33,34,40,42,43,44, Success=15,40, 185: 3 0 0 0 0 0 0 0 0 63 0 0 0 0 287 63 63 284 284 63 285 0 0 0 0 286 Matched=7,8,9,10,12,13,14,17,18,19,32,33,34,35,37,38,39,42,43,44, Success=10,35, 186: 3 0 0 0 0 0 0 0 0 64 0 0 0 0 64 64 64 288 288 64 289 0 0 0 0 64 Matched=10,12,13,14,17,18,19,35,37,38,39,42,43,44, Success=10,35, 187: 3 0 0 0 0 0 0 0 0 291 0 0 0 0 292 291 291 65 65 293 65 0 0 0 0 290 Matched=2,3,4,7,8,9,10,22,23,24,25,27,28,29,32,33,34,35,47,48,49,50, Success=10,25,35,50, 188: 3 0 0 0 0 0 0 0 0 52 0 0 0 0 259 52 52 52 52 260 52 0 0 0 0 258 Matched=2,3,4,7,8,9,25,27,28,29,32,33,34,50, Success=25,50, 189: 3 0 0 0 0 0 0 0 0 295 0 0 0 0 66 295 295 66 66 296 66 0 0 0 0 294 Matched=2,3,4,10,22,23,24,27,28,29,35,47,48,49, Success=10,35, 190: 3 0 0 0 0 0 0 0 0 298 0 0 0 0 299 298 298 67 67 67 67 0 0 0 0 297 Matched=5,7,8,9,22,23,24,30,32,33,34,47,48,49, Success=5,30, 191: 3 0 0 0 0 0 0 0 0 291 0 0 0 0 292 291 291 65 65 293 65 0 0 0 0 290 Matched=2,3,4,7,8,9,20,22,23,24,27,28,29,32,33,34,45,47,48,49, Success=20,45, 192: 3 0 0 0 0 0 0 0 0 302 0 0 0 0 303 302 302 300 300 304 68 0 0 0 0 301 Matched=2,3,4,7,8,9,10,17,18,19,22,23,24,25,27,28,29,32,33,34,35,42,43,44,47,48,49,50, Success=10,25,35,50, 193: 3 0 0 0 0 0 0 0 0 58 0 0 0 0 269 58 58 267 267 270 58 0 0 0 0 268 Matched=2,3,4,7,8,9,17,18,19,25,27,28,29,32,33,34,42,43,44,50, Success=25,50, 194: 3 0 0 0 0 0 0 0 0 307 0 0 0 0 69 307 307 305 305 308 69 0 0 0 0 306 Matched=2,3,4,10,17,18,19,22,23,24,27,28,29,35,42,43,44,47,48,49, Success=10,35, 195: 3 0 0 0 0 0 0 0 0 311 0 0 0 0 312 311 311 309 309 70 70 0 0 0 0 310 Matched=5,7,8,9,17,18,19,22,23,24,30,32,33,34,42,43,44,47,48,49, Success=5,30, 196: 3 0 0 0 0 0 0 0 0 295 0 0 0 0 66 295 295 66 66 296 66 0 0 0 0 294 Matched=2,3,4,20,22,23,24,27,28,29,45,47,48,49, Success=20,45, 197: 3 0 0 0 0 0 0 0 0 307 0 0 0 0 69 307 307 305 305 308 69 0 0 0 0 306 Matched=2,3,4,17,18,19,22,23,24,25,27,28,29,42,43,44,47,48,49,50, Success=25,50, 198: 3 0 0 0 0 0 0 0 0 59 0 0 0 0 59 59 59 271 271 272 59 0 0 0 0 59 Matched=2,3,4,17,18,19,25,27,28,29,42,43,44,50, Success=25,50, 199: 3 0 0 0 0 0 0 0 0 314 0 0 0 0 71 314 314 315 315 71 71 0 0 0 0 313 Matched=5,17,18,19,22,23,24,30,42,43,44,47,48,49, Success=5,30, 200: 3 0 0 0 0 0 0 0 0 298 0 0 0 0 299 298 298 67 67 67 67 0 0 0 0 297 Matched=7,8,9,20,22,23,24,32,33,34,45,47,48,49, Success=20,45, 201: 3 0 0 0 0 0 0 0 0 311 0 0 0 0 312 311 311 309 309 70 70 0 0 0 0 310 Matched=7,8,9,10,17,18,19,22,23,24,25,32,33,34,35,42,43,44,47,48,49,50, Success=10,25,35,50, 202: 3 0 0 0 0 0 0 0 0 60 0 0 0 0 275 60 60 273 273 60 60 0 0 0 0 274 Matched=7,8,9,17,18,19,25,32,33,34,42,43,44,50, Success=25,50, 203: 3 0 0 0 0 0 0 0 0 314 0 0 0 0 71 314 314 315 315 71 71 0 0 0 0 313 Matched=10,17,18,19,22,23,24,35,42,43,44,47,48,49, Success=10,35, 204: 3 0 0 0 0 0 0 0 0 291 0 0 0 0 292 291 291 65 65 293 65 0 0 0 0 290 Matched=2,3,4,7,8,9,15,22,23,24,27,28,29,32,33,34,40,47,48,49, Success=15,40, 205: 3 0 0 0 0 0 0 0 0 318 0 0 0 0 319 318 318 72 72 320 316 0 0 0 0 317 Matched=2,3,4,7,8,9,10,12,13,14,22,23,24,25,27,28,29,32,33,34,35,37,38,39,47,48,49,50, Success=10,25,35,50, 206: 3 0 0 0 0 0 0 0 0 51 0 0 0 0 256 51 51 51 51 257 254 0 0 0 0 255 Matched=2,3,4,7,8,9,12,13,14,25,27,28,29,32,33,34,37,38,39,50, Success=25,50, 207: 3 0 0 0 0 0 0 0 0 323 0 0 0 0 73 323 323 73 73 324 321 0 0 0 0 322 Matched=2,3,4,10,12,13,14,22,23,24,27,28,29,35,37,38,39,47,48,49, Success=10,35, 208: 3 0 0 0 0 0 0 0 0 327 0 0 0 0 328 327 327 74 74 74 325 0 0 0 0 326 Matched=5,7,8,9,12,13,14,22,23,24,30,32,33,34,37,38,39,47,48,49, Success=5,30, 209: 3 0 0 0 0 0 0 0 0 295 0 0 0 0 66 295 295 66 66 296 66 0 0 0 0 294 Matched=2,3,4,15,22,23,24,27,28,29,40,47,48,49, Success=15,40, 210: 3 0 0 0 0 0 0 0 0 323 0 0 0 0 73 323 323 73 73 324 321 0 0 0 0 322 Matched=2,3,4,12,13,14,22,23,24,25,27,28,29,37,38,39,47,48,49,50, Success=25,50, 211: 3 0 0 0 0 0 0 0 0 53 0 0 0 0 53 53 53 53 53 262 261 0 0 0 0 53 Matched=2,3,4,12,13,14,25,27,28,29,37,38,39,50, Success=25,50, 212: 3 0 0 0 0 0 0 0 0 330 0 0 0 0 75 330 330 75 75 75 331 0 0 0 0 329 Matched=5,12,13,14,22,23,24,30,37,38,39,47,48,49, Success=5,30, 213: 3 0 0 0 0 0 0 0 0 298 0 0 0 0 299 298 298 67 67 67 67 0 0 0 0 297 Matched=7,8,9,15,22,23,24,32,33,34,40,47,48,49, Success=15,40, 214: 3 0 0 0 0 0 0 0 0 327 0 0 0 0 328 327 327 74 74 74 325 0 0 0 0 326 Matched=7,8,9,10,12,13,14,22,23,24,25,32,33,34,35,37,38,39,47,48,49,50, Success=10,25,35,50, 215: 3 0 0 0 0 0 0 0 0 54 0 0 0 0 265 54 54 54 54 54 263 0 0 0 0 264 Matched=7,8,9,12,13,14,25,32,33,34,37,38,39,50, Success=25,50, 216: 3 0 0 0 0 0 0 0 0 330 0 0 0 0 75 330 330 75 75 75 331 0 0 0 0 329 Matched=10,12,13,14,22,23,24,35,37,38,39,47,48,49, Success=10,35, 217: 3 0 0 0 0 0 0 0 0 295 0 0 0 0 66 295 295 66 66 296 66 0 0 0 0 294 Matched=2,3,4,22,23,24,25,27,28,29,47,48,49,50, Success=25,50, 218: 3 0 0 0 0 0 0 0 0 55 0 0 0 0 55 55 55 55 55 458 55 0 0 0 0 55 Matched=2,3,4,25,27,28,29,50, Success=25,50, 219: 3 0 0 0 0 0 0 0 0 461 0 0 0 0 76 461 461 76 76 76 76 0 0 0 0 332 Matched=5,22,23,24,30,47,48,49, Success=5,30, 220: 3 0 0 0 0 0 0 0 0 298 0 0 0 0 299 298 298 67 67 67 67 0 0 0 0 297 Matched=7,8,9,10,22,23,24,25,32,33,34,35,47,48,49,50, Success=10,25,35,50, 221: 3 0 0 0 0 0 0 0 0 56 0 0 0 0 459 56 56 56 56 56 56 0 0 0 0 266 Matched=7,8,9,25,32,33,34,50, Success=25,50, 222: 3 0 0 0 0 0 0 0 0 461 0 0 0 0 76 461 461 76 76 76 76 0 0 0 0 332 Matched=10,22,23,24,35,47,48,49, Success=10,35, 223: 3 0 0 0 0 0 0 0 0 318 0 0 0 0 319 318 318 72 72 320 316 0 0 0 0 317 Matched=2,3,4,7,8,9,12,13,14,20,22,23,24,27,28,29,32,33,34,37,38,39,45,47,48,49, Success=20,45, 224: 3 0 0 0 0 0 0 0 0 302 0 0 0 0 303 302 302 300 300 304 68 0 0 0 0 301 Matched=2,3,4,7,8,9,15,17,18,19,22,23,24,27,28,29,32,33,34,40,42,43,44,47,48,49, Success=15,40, 225: 3 0 0 0 0 0 0 0 0 336 0 0 0 0 337 336 336 333 333 338 334 0 0 0 0 335 Matched=2,3,4,7,8,9,10,12,13,14,17,18,19,22,23,24,25,27,28,29,32,33,34,35,37,38,39,42,43,44,47,48,49,50, Success=10,25,35,50, 226: 3 0 0 0 0 0 0 0 0 61 0 0 0 0 279 61 61 276 276 280 277 0 0 0 0 278 Matched=2,3,4,7,8,9,12,13,14,17,18,19,25,27,28,29,32,33,34,37,38,39,42,43,44,50, Success=25,50, 227: 3 0 0 0 0 0 0 0 0 342 0 0 0 0 77 342 342 339 339 343 340 0 0 0 0 341 Matched=2,3,4,10,12,13,14,17,18,19,22,23,24,27,28,29,35,37,38,39,42,43,44,47,48,49, Success=10,35, 228: 3 0 0 0 0 0 0 0 0 347 0 0 0 0 348 347 347 344 344 78 345 0 0 0 0 346 Matched=5,7,8,9,12,13,14,17,18,19,22,23,24,30,32,33,34,37,38,39,42,43,44,47,48,49, Success=5,30, 229: 3 0 0 0 0 0 0 0 0 323 0 0 0 0 73 323 323 73 73 324 321 0 0 0 0 322 Matched=2,3,4,12,13,14,20,22,23,24,27,28,29,37,38,39,45,47,48,49, Success=20,45, 230: 3 0 0 0 0 0 0 0 0 307 0 0 0 0 69 307 307 305 305 308 69 0 0 0 0 306 Matched=2,3,4,15,17,18,19,22,23,24,27,28,29,40,42,43,44,47,48,49, Success=15,40, 231: 3 0 0 0 0 0 0 0 0 342 0 0 0 0 77 342 342 339 339 343 340 0 0 0 0 341 Matched=2,3,4,12,13,14,17,18,19,22,23,24,25,27,28,29,37,38,39,42,43,44,47,48,49,50, Success=25,50, 232: 3 0 0 0 0 0 0 0 0 62 0 0 0 0 62 62 62 281 281 283 282 0 0 0 0 62 Matched=2,3,4,12,13,14,17,18,19,25,27,28,29,37,38,39,42,43,44,50, Success=25,50, 233: 3 0 0 0 0 0 0 0 0 351 0 0 0 0 79 351 351 349 349 79 352 0 0 0 0 350 Matched=5,12,13,14,17,18,19,22,23,24,30,37,38,39,42,43,44,47,48,49, Success=5,30, 234: 3 0 0 0 0 0 0 0 0 327 0 0 0 0 328 327 327 74 74 74 325 0 0 0 0 326 Matched=7,8,9,12,13,14,20,22,23,24,32,33,34,37,38,39,45,47,48,49, Success=20,45, 235: 3 0 0 0 0 0 0 0 0 311 0 0 0 0 312 311 311 309 309 70 70 0 0 0 0 310 Matched=7,8,9,15,17,18,19,22,23,24,32,33,34,40,42,43,44,47,48,49, Success=15,40, 236: 3 0 0 0 0 0 0 0 0 347 0 0 0 0 348 347 347 344 344 78 345 0 0 0 0 346 Matched=7,8,9,10,12,13,14,17,18,19,22,23,24,25,32,33,34,35,37,38,39,42,43,44,47,48,49,50, Success=10,25,35,50, 237: 3 0 0 0 0 0 0 0 0 63 0 0 0 0 287 63 63 284 284 63 285 0 0 0 0 286 Matched=7,8,9,12,13,14,17,18,19,25,32,33,34,37,38,39,42,43,44,50, Success=25,50, 238: 3 0 0 0 0 0 0 0 0 351 0 0 0 0 79 351 351 349 349 79 352 0 0 0 0 350 Matched=10,12,13,14,17,18,19,22,23,24,35,37,38,39,42,43,44,47,48,49, Success=10,35, 239: 3 0 0 0 0 0 0 0 0 56 0 0 0 0 459 56 56 56 56 56 56 0 0 0 0 266 Matched=7,8,9,10,32,33,34,35, Success=10,35, 240: 3 0 0 0 0 0 0 0 0 461 0 0 0 0 76 461 461 76 76 76 76 0 0 0 0 332 Matched=22,23,24,25,47,48,49,50, Success=25,50, 241: 3 0 0 0 0 0 0 0 0 330 0 0 0 0 75 330 330 75 75 75 331 0 0 0 0 329 Matched=12,13,14,20,22,23,24,37,38,39,45,47,48,49, Success=20,45, 242: 3 0 0 0 0 0 0 0 0 351 0 0 0 0 79 351 351 349 349 79 352 0 0 0 0 350 Matched=12,13,14,17,18,19,22,23,24,25,37,38,39,42,43,44,47,48,49,50, Success=25,50, 243: 3 0 0 0 0 0 0 0 0 64 0 0 0 0 64 64 64 288 288 64 289 0 0 0 0 64 Matched=12,13,14,17,18,19,25,37,38,39,42,43,44,50, Success=25,50, 244: 3 0 0 0 0 0 0 0 0 314 0 0 0 0 71 314 314 315 315 71 71 0 0 0 0 313 Matched=15,17,18,19,22,23,24,40,42,43,44,47,48,49, Success=15,40, 245: 3 0 0 0 0 0 0 0 0 330 0 0 0 0 75 330 330 75 75 75 331 0 0 0 0 329 Matched=12,13,14,22,23,24,25,37,38,39,47,48,49,50, Success=25,50, 246: 3 0 0 0 0 0 0 0 0 57 0 0 0 0 57 57 57 57 57 57 460 0 0 0 0 57 Matched=12,13,14,25,37,38,39,50, Success=25,50, 247: 3 0 0 0 0 0 0 0 0 461 0 0 0 0 76 461 461 76 76 76 76 0 0 0 0 332 Matched=15,22,23,24,40,47,48,49, Success=15,40, 248: 3 0 0 0 0 0 0 0 0 56 0 0 0 0 459 56 56 56 56 56 56 0 0 0 0 266 Matched=7,8,9,20,32,33,34,45, Success=20,45, 249: 3 0 0 0 0 0 0 0 0 60 0 0 0 0 275 60 60 273 273 60 60 0 0 0 0 274 Matched=7,8,9,10,17,18,19,32,33,34,35,42,43,44, Success=10,35, 250: 3 0 0 0 0 0 0 0 0 80 0 0 0 0 80 80 80 462 462 80 80 0 0 0 0 80 Matched=10,17,18,19,35,42,43,44, Success=10,35, 251: 3 0 0 0 0 0 0 0 0 314 0 0 0 0 71 314 314 315 315 71 71 0 0 0 0 313 Matched=17,18,19,22,23,24,25,42,43,44,47,48,49,50, Success=25,50, 252: 3 0 0 0 0 0 0 0 0 80 0 0 0 0 80 80 80 462 462 80 80 0 0 0 0 80 Matched=17,18,19,25,42,43,44,50, Success=25,50, 253: 3 0 0 0 0 0 0 0 0 461 0 0 0 0 76 461 461 76 76 76 76 0 0 0 0 332 Matched=20,22,23,24,45,47,48,49, Success=20,45, 254: 4 0 0 0 0 0 0 0 0 82 0 0 0 0 358 82 82 82 82 359 82 0 0 0 0 357 Matched=2,3,7,8,14,27,28,32,33,39, Success=14,39, 255: 4 0 0 0 0 0 0 0 0 81 0 0 0 0 355 81 81 81 81 356 353 0 0 0 0 354 Matched=2,3,7,8,9,12,13,27,28,32,33,34,37,38, Success=9,34, 256: 4 0 0 0 0 0 0 0 0 83 0 0 0 0 83 83 83 83 83 361 360 0 0 0 0 83 Matched=2,3,9,12,13,27,28,34,37,38, Success=9,34, 257: 4 0 0 0 0 0 0 0 0 84 0 0 0 0 364 84 84 84 84 84 362 0 0 0 0 363 Matched=4,7,8,12,13,29,32,33,37,38, Success=4,29, 258: 4 0 0 0 0 0 0 0 0 82 0 0 0 0 358 82 82 82 82 359 82 0 0 0 0 357 Matched=2,3,7,8,9,27,28,32,33,34, Success=9,34, 259: 4 0 0 0 0 0 0 0 0 85 0 0 0 0 85 85 85 85 85 463 85 0 0 0 0 85 Matched=2,3,9,27,28,34, Success=9,34, 260: 4 0 0 0 0 0 0 0 0 86 0 0 0 0 464 86 86 86 86 86 86 0 0 0 0 365 Matched=4,7,8,29,32,33, Success=4,29, 261: 4 0 0 0 0 0 0 0 0 85 0 0 0 0 85 85 85 85 85 463 85 0 0 0 0 85 Matched=2,3,14,27,28,39, Success=14,39, 262: 4 0 0 0 0 0 0 0 0 87 0 0 0 0 87 87 87 87 87 87 465 0 0 0 0 87 Matched=4,12,13,29,37,38, Success=4,29, 263: 4 0 0 0 0 0 0 0 0 86 0 0 0 0 464 86 86 86 86 86 86 0 0 0 0 365 Matched=7,8,14,32,33,39, Success=14,39, 264: 4 0 0 0 0 0 0 0 0 84 0 0 0 0 364 84 84 84 84 84 362 0 0 0 0 363 Matched=7,8,9,12,13,32,33,34,37,38, Success=9,34, 265: 4 0 0 0 0 0 0 0 0 87 0 0 0 0 87 87 87 87 87 87 465 0 0 0 0 87 Matched=9,12,13,34,37,38, Success=9,34, 266: 4 0 0 0 0 0 0 0 0 86 0 0 0 0 464 86 86 86 86 86 86 0 0 0 0 365 Matched=7,8,9,32,33,34, Success=9,34, 267: 4 0 0 0 0 0 0 0 0 82 0 0 0 0 358 82 82 82 82 359 82 0 0 0 0 357 Matched=2,3,7,8,19,27,28,32,33,44, Success=19,44, 268: 4 0 0 0 0 0 0 0 0 88 0 0 0 0 368 88 88 366 366 369 88 0 0 0 0 367 Matched=2,3,7,8,9,17,18,27,28,32,33,34,42,43, Success=9,34, 269: 4 0 0 0 0 0 0 0 0 89 0 0 0 0 89 89 89 370 370 371 89 0 0 0 0 89 Matched=2,3,9,17,18,27,28,34,42,43, Success=9,34, 270: 4 0 0 0 0 0 0 0 0 90 0 0 0 0 374 90 90 372 372 90 90 0 0 0 0 373 Matched=4,7,8,17,18,29,32,33,42,43, Success=4,29, 271: 4 0 0 0 0 0 0 0 0 85 0 0 0 0 85 85 85 85 85 463 85 0 0 0 0 85 Matched=2,3,19,27,28,44, Success=19,44, 272: 4 0 0 0 0 0 0 0 0 91 0 0 0 0 91 91 91 466 466 91 91 0 0 0 0 91 Matched=4,17,18,29,42,43, Success=4,29, 273: 4 0 0 0 0 0 0 0 0 86 0 0 0 0 464 86 86 86 86 86 86 0 0 0 0 365 Matched=7,8,19,32,33,44, Success=19,44, 274: 4 0 0 0 0 0 0 0 0 90 0 0 0 0 374 90 90 372 372 90 90 0 0 0 0 373 Matched=7,8,9,17,18,32,33,34,42,43, Success=9,34, 275: 4 0 0 0 0 0 0 0 0 91 0 0 0 0 91 91 91 466 466 91 91 0 0 0 0 91 Matched=9,17,18,34,42,43, Success=9,34, 276: 4 0 0 0 0 0 0 0 0 81 0 0 0 0 355 81 81 81 81 356 353 0 0 0 0 354 Matched=2,3,7,8,12,13,19,27,28,32,33,37,38,44, Success=19,44, 277: 4 0 0 0 0 0 0 0 0 88 0 0 0 0 368 88 88 366 366 369 88 0 0 0 0 367 Matched=2,3,7,8,14,17,18,27,28,32,33,39,42,43, Success=14,39, 278: 4 0 0 0 0 0 0 0 0 92 0 0 0 0 378 92 92 375 375 379 376 0 0 0 0 377 Matched=2,3,7,8,9,12,13,17,18,27,28,32,33,34,37,38,42,43, Success=9,34, 279: 4 0 0 0 0 0 0 0 0 93 0 0 0 0 93 93 93 380 380 382 381 0 0 0 0 93 Matched=2,3,9,12,13,17,18,27,28,34,37,38,42,43, Success=9,34, 280: 4 0 0 0 0 0 0 0 0 94 0 0 0 0 386 94 94 383 383 94 384 0 0 0 0 385 Matched=4,7,8,12,13,17,18,29,32,33,37,38,42,43, Success=4,29, 281: 4 0 0 0 0 0 0 0 0 83 0 0 0 0 83 83 83 83 83 361 360 0 0 0 0 83 Matched=2,3,12,13,19,27,28,37,38,44, Success=19,44, 282: 4 0 0 0 0 0 0 0 0 89 0 0 0 0 89 89 89 370 370 371 89 0 0 0 0 89 Matched=2,3,14,17,18,27,28,39,42,43, Success=14,39, 283: 4 0 0 0 0 0 0 0 0 95 0 0 0 0 95 95 95 387 387 95 388 0 0 0 0 95 Matched=4,12,13,17,18,29,37,38,42,43, Success=4,29, 284: 4 0 0 0 0 0 0 0 0 84 0 0 0 0 364 84 84 84 84 84 362 0 0 0 0 363 Matched=7,8,12,13,19,32,33,37,38,44, Success=19,44, 285: 4 0 0 0 0 0 0 0 0 90 0 0 0 0 374 90 90 372 372 90 90 0 0 0 0 373 Matched=7,8,14,17,18,32,33,39,42,43, Success=14,39, 286: 4 0 0 0 0 0 0 0 0 94 0 0 0 0 386 94 94 383 383 94 384 0 0 0 0 385 Matched=7,8,9,12,13,17,18,32,33,34,37,38,42,43, Success=9,34, 287: 4 0 0 0 0 0 0 0 0 95 0 0 0 0 95 95 95 387 387 95 388 0 0 0 0 95 Matched=9,12,13,17,18,34,37,38,42,43, Success=9,34, 288: 4 0 0 0 0 0 0 0 0 87 0 0 0 0 87 87 87 87 87 87 465 0 0 0 0 87 Matched=12,13,19,37,38,44, Success=19,44, 289: 4 0 0 0 0 0 0 0 0 91 0 0 0 0 91 91 91 466 466 91 91 0 0 0 0 91 Matched=14,17,18,39,42,43, Success=14,39, 290: 4 0 0 0 0 0 0 0 0 390 0 0 0 0 391 390 390 96 96 392 96 0 0 0 0 389 Matched=2,3,7,8,9,22,23,24,27,28,32,33,34,47,48,49, Success=9,24,34,49, 291: 4 0 0 0 0 0 0 0 0 82 0 0 0 0 358 82 82 82 82 359 82 0 0 0 0 357 Matched=2,3,7,8,24,27,28,32,33,49, Success=24,49, 292: 4 0 0 0 0 0 0 0 0 394 0 0 0 0 97 394 394 97 97 395 97 0 0 0 0 393 Matched=2,3,9,22,23,27,28,34,47,48, Success=9,34, 293: 4 0 0 0 0 0 0 0 0 397 0 0 0 0 398 397 397 98 98 98 98 0 0 0 0 396 Matched=4,7,8,22,23,29,32,33,47,48, Success=4,29, 294: 4 0 0 0 0 0 0 0 0 394 0 0 0 0 97 394 394 97 97 395 97 0 0 0 0 393 Matched=2,3,22,23,24,27,28,47,48,49, Success=24,49, 295: 4 0 0 0 0 0 0 0 0 85 0 0 0 0 85 85 85 85 85 463 85 0 0 0 0 85 Matched=2,3,24,27,28,49, Success=24,49, 296: 4 0 0 0 0 0 0 0 0 467 0 0 0 0 99 467 467 99 99 99 99 0 0 0 0 399 Matched=4,22,23,29,47,48, Success=4,29, 297: 4 0 0 0 0 0 0 0 0 397 0 0 0 0 398 397 397 98 98 98 98 0 0 0 0 396 Matched=7,8,9,22,23,24,32,33,34,47,48,49, Success=9,24,34,49, 298: 4 0 0 0 0 0 0 0 0 86 0 0 0 0 464 86 86 86 86 86 86 0 0 0 0 365 Matched=7,8,24,32,33,49, Success=24,49, 299: 4 0 0 0 0 0 0 0 0 467 0 0 0 0 99 467 467 99 99 99 99 0 0 0 0 399 Matched=9,22,23,34,47,48, Success=9,34, 300: 4 0 0 0 0 0 0 0 0 390 0 0 0 0 391 390 390 96 96 392 96 0 0 0 0 389 Matched=2,3,7,8,19,22,23,27,28,32,33,44,47,48, Success=19,44, 301: 4 0 0 0 0 0 0 0 0 402 0 0 0 0 403 402 402 400 400 404 100 0 0 0 0 401 Matched=2,3,7,8,9,17,18,22,23,24,27,28,32,33,34,42,43,47,48,49, Success=9,24,34,49, 302: 4 0 0 0 0 0 0 0 0 88 0 0 0 0 368 88 88 366 366 369 88 0 0 0 0 367 Matched=2,3,7,8,17,18,24,27,28,32,33,42,43,49, Success=24,49, 303: 4 0 0 0 0 0 0 0 0 407 0 0 0 0 101 407 407 405 405 408 101 0 0 0 0 406 Matched=2,3,9,17,18,22,23,27,28,34,42,43,47,48, Success=9,34, 304: 4 0 0 0 0 0 0 0 0 411 0 0 0 0 412 411 411 409 409 102 102 0 0 0 0 410 Matched=4,7,8,17,18,22,23,29,32,33,42,43,47,48, Success=4,29, 305: 4 0 0 0 0 0 0 0 0 394 0 0 0 0 97 394 394 97 97 395 97 0 0 0 0 393 Matched=2,3,19,22,23,27,28,44,47,48, Success=19,44, 306: 4 0 0 0 0 0 0 0 0 407 0 0 0 0 101 407 407 405 405 408 101 0 0 0 0 406 Matched=2,3,17,18,22,23,24,27,28,42,43,47,48,49, Success=24,49, 307: 4 0 0 0 0 0 0 0 0 89 0 0 0 0 89 89 89 370 370 371 89 0 0 0 0 89 Matched=2,3,17,18,24,27,28,42,43,49, Success=24,49, 308: 4 0 0 0 0 0 0 0 0 414 0 0 0 0 103 414 414 415 415 103 103 0 0 0 0 413 Matched=4,17,18,22,23,29,42,43,47,48, Success=4,29, 309: 4 0 0 0 0 0 0 0 0 397 0 0 0 0 398 397 397 98 98 98 98 0 0 0 0 396 Matched=7,8,19,22,23,32,33,44,47,48, Success=19,44, 310: 4 0 0 0 0 0 0 0 0 411 0 0 0 0 412 411 411 409 409 102 102 0 0 0 0 410 Matched=7,8,9,17,18,22,23,24,32,33,34,42,43,47,48,49, Success=9,24,34,49, 311: 4 0 0 0 0 0 0 0 0 90 0 0 0 0 374 90 90 372 372 90 90 0 0 0 0 373 Matched=7,8,17,18,24,32,33,42,43,49, Success=24,49, 312: 4 0 0 0 0 0 0 0 0 414 0 0 0 0 103 414 414 415 415 103 103 0 0 0 0 413 Matched=9,17,18,22,23,34,42,43,47,48, Success=9,34, 313: 4 0 0 0 0 0 0 0 0 414 0 0 0 0 103 414 414 415 415 103 103 0 0 0 0 413 Matched=17,18,22,23,24,42,43,47,48,49, Success=24,49, 314: 4 0 0 0 0 0 0 0 0 91 0 0 0 0 91 91 91 466 466 91 91 0 0 0 0 91 Matched=17,18,24,42,43,49, Success=24,49, 315: 4 0 0 0 0 0 0 0 0 467 0 0 0 0 99 467 467 99 99 99 99 0 0 0 0 399 Matched=19,22,23,44,47,48, Success=19,44, 316: 4 0 0 0 0 0 0 0 0 390 0 0 0 0 391 390 390 96 96 392 96 0 0 0 0 389 Matched=2,3,7,8,14,22,23,27,28,32,33,39,47,48, Success=14,39, 317: 4 0 0 0 0 0 0 0 0 418 0 0 0 0 419 418 418 104 104 420 416 0 0 0 0 417 Matched=2,3,7,8,9,12,13,22,23,24,27,28,32,33,34,37,38,47,48,49, Success=9,24,34,49, 318: 4 0 0 0 0 0 0 0 0 81 0 0 0 0 355 81 81 81 81 356 353 0 0 0 0 354 Matched=2,3,7,8,12,13,24,27,28,32,33,37,38,49, Success=24,49, 319: 4 0 0 0 0 0 0 0 0 423 0 0 0 0 105 423 423 105 105 424 421 0 0 0 0 422 Matched=2,3,9,12,13,22,23,27,28,34,37,38,47,48, Success=9,34, 320: 4 0 0 0 0 0 0 0 0 427 0 0 0 0 428 427 427 106 106 106 425 0 0 0 0 426 Matched=4,7,8,12,13,22,23,29,32,33,37,38,47,48, Success=4,29, 321: 4 0 0 0 0 0 0 0 0 394 0 0 0 0 97 394 394 97 97 395 97 0 0 0 0 393 Matched=2,3,14,22,23,27,28,39,47,48, Success=14,39, 322: 4 0 0 0 0 0 0 0 0 423 0 0 0 0 105 423 423 105 105 424 421 0 0 0 0 422 Matched=2,3,12,13,22,23,24,27,28,37,38,47,48,49, Success=24,49, 323: 4 0 0 0 0 0 0 0 0 83 0 0 0 0 83 83 83 83 83 361 360 0 0 0 0 83 Matched=2,3,12,13,24,27,28,37,38,49, Success=24,49, 324: 4 0 0 0 0 0 0 0 0 430 0 0 0 0 107 430 430 107 107 107 431 0 0 0 0 429 Matched=4,12,13,22,23,29,37,38,47,48, Success=4,29, 325: 4 0 0 0 0 0 0 0 0 397 0 0 0 0 398 397 397 98 98 98 98 0 0 0 0 396 Matched=7,8,14,22,23,32,33,39,47,48, Success=14,39, 326: 4 0 0 0 0 0 0 0 0 427 0 0 0 0 428 427 427 106 106 106 425 0 0 0 0 426 Matched=7,8,9,12,13,22,23,24,32,33,34,37,38,47,48,49, Success=9,24,34,49, 327: 4 0 0 0 0 0 0 0 0 84 0 0 0 0 364 84 84 84 84 84 362 0 0 0 0 363 Matched=7,8,12,13,24,32,33,37,38,49, Success=24,49, 328: 4 0 0 0 0 0 0 0 0 430 0 0 0 0 107 430 430 107 107 107 431 0 0 0 0 429 Matched=9,12,13,22,23,34,37,38,47,48, Success=9,34, 329: 4 0 0 0 0 0 0 0 0 430 0 0 0 0 107 430 430 107 107 107 431 0 0 0 0 429 Matched=12,13,22,23,24,37,38,47,48,49, Success=24,49, 330: 4 0 0 0 0 0 0 0 0 87 0 0 0 0 87 87 87 87 87 87 465 0 0 0 0 87 Matched=12,13,24,37,38,49, Success=24,49, 331: 4 0 0 0 0 0 0 0 0 467 0 0 0 0 99 467 467 99 99 99 99 0 0 0 0 399 Matched=14,22,23,39,47,48, Success=14,39, 332: 4 0 0 0 0 0 0 0 0 467 0 0 0 0 99 467 467 99 99 99 99 0 0 0 0 399 Matched=22,23,24,47,48,49, Success=24,49, 333: 4 0 0 0 0 0 0 0 0 418 0 0 0 0 419 418 418 104 104 420 416 0 0 0 0 417 Matched=2,3,7,8,12,13,19,22,23,27,28,32,33,37,38,44,47,48, Success=19,44, 334: 4 0 0 0 0 0 0 0 0 402 0 0 0 0 403 402 402 400 400 404 100 0 0 0 0 401 Matched=2,3,7,8,14,17,18,22,23,27,28,32,33,39,42,43,47,48, Success=14,39, 335: 4 0 0 0 0 0 0 0 0 435 0 0 0 0 436 435 435 432 432 437 433 0 0 0 0 434 Matched=2,3,7,8,9,12,13,17,18,22,23,24,27,28,32,33,34,37,38,42,43,47,48,49, Success=9,24,34,49, 336: 4 0 0 0 0 0 0 0 0 92 0 0 0 0 378 92 92 375 375 379 376 0 0 0 0 377 Matched=2,3,7,8,12,13,17,18,24,27,28,32,33,37,38,42,43,49, Success=24,49, 337: 4 0 0 0 0 0 0 0 0 441 0 0 0 0 108 441 441 438 438 442 439 0 0 0 0 440 Matched=2,3,9,12,13,17,18,22,23,27,28,34,37,38,42,43,47,48, Success=9,34, 338: 4 0 0 0 0 0 0 0 0 446 0 0 0 0 447 446 446 443 443 109 444 0 0 0 0 445 Matched=4,7,8,12,13,17,18,22,23,29,32,33,37,38,42,43,47,48, Success=4,29, 339: 4 0 0 0 0 0 0 0 0 423 0 0 0 0 105 423 423 105 105 424 421 0 0 0 0 422 Matched=2,3,12,13,19,22,23,27,28,37,38,44,47,48, Success=19,44, 340: 4 0 0 0 0 0 0 0 0 407 0 0 0 0 101 407 407 405 405 408 101 0 0 0 0 406 Matched=2,3,14,17,18,22,23,27,28,39,42,43,47,48, Success=14,39, 341: 4 0 0 0 0 0 0 0 0 441 0 0 0 0 108 441 441 438 438 442 439 0 0 0 0 440 Matched=2,3,12,13,17,18,22,23,24,27,28,37,38,42,43,47,48,49, Success=24,49, 342: 4 0 0 0 0 0 0 0 0 93 0 0 0 0 93 93 93 380 380 382 381 0 0 0 0 93 Matched=2,3,12,13,17,18,24,27,28,37,38,42,43,49, Success=24,49, 343: 4 0 0 0 0 0 0 0 0 450 0 0 0 0 110 450 450 448 448 110 451 0 0 0 0 449 Matched=4,12,13,17,18,22,23,29,37,38,42,43,47,48, Success=4,29, 344: 4 0 0 0 0 0 0 0 0 427 0 0 0 0 428 427 427 106 106 106 425 0 0 0 0 426 Matched=7,8,12,13,19,22,23,32,33,37,38,44,47,48, Success=19,44, 345: 4 0 0 0 0 0 0 0 0 411 0 0 0 0 412 411 411 409 409 102 102 0 0 0 0 410 Matched=7,8,14,17,18,22,23,32,33,39,42,43,47,48, Success=14,39, 346: 4 0 0 0 0 0 0 0 0 446 0 0 0 0 447 446 446 443 443 109 444 0 0 0 0 445 Matched=7,8,9,12,13,17,18,22,23,24,32,33,34,37,38,42,43,47,48,49, Success=9,24,34,49, 347: 4 0 0 0 0 0 0 0 0 94 0 0 0 0 386 94 94 383 383 94 384 0 0 0 0 385 Matched=7,8,12,13,17,18,24,32,33,37,38,42,43,49, Success=24,49, 348: 4 0 0 0 0 0 0 0 0 450 0 0 0 0 110 450 450 448 448 110 451 0 0 0 0 449 Matched=9,12,13,17,18,22,23,34,37,38,42,43,47,48, Success=9,34, 349: 4 0 0 0 0 0 0 0 0 430 0 0 0 0 107 430 430 107 107 107 431 0 0 0 0 429 Matched=12,13,19,22,23,37,38,44,47,48, Success=19,44, 350: 4 0 0 0 0 0 0 0 0 450 0 0 0 0 110 450 450 448 448 110 451 0 0 0 0 449 Matched=12,13,17,18,22,23,24,37,38,42,43,47,48,49, Success=24,49, 351: 4 0 0 0 0 0 0 0 0 95 0 0 0 0 95 95 95 387 387 95 388 0 0 0 0 95 Matched=12,13,17,18,24,37,38,42,43,49, Success=24,49, 352: 4 0 0 0 0 0 0 0 0 414 0 0 0 0 103 414 414 415 415 103 103 0 0 0 0 413 Matched=14,17,18,22,23,39,42,43,47,48, Success=14,39, 353: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 0 0 0 0 0 469 Matched=2,7,13,27,32,38, Success=13,38, 354: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 470 0 0 0 0 469 Matched=2,7,8,12,27,32,33,37, Success=8,33, 355: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 470 0 0 0 0 0 Matched=2,8,12,27,33,37, Success=8,33, 356: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 470 0 0 0 0 469 Matched=3,7,12,28,32,37, Success=3,28, 357: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 0 0 0 0 0 469 Matched=2,7,8,27,32,33, Success=8,33, 358: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 0 0 0 0 0 0 Matched=2,8,27,33, Success=8,33, 359: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 0 0 0 0 0 469 Matched=3,7,28,32, Success=3,28, 360: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 0 0 0 0 0 0 Matched=2,13,27,38, Success=13,38, 361: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470 0 0 0 0 0 Matched=3,12,28,37, Success=3,28, 362: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 0 0 0 0 0 469 Matched=7,13,32,38, Success=13,38, 363: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 470 0 0 0 0 469 Matched=7,8,12,32,33,37, Success=8,33, 364: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470 0 0 0 0 0 Matched=8,12,33,37, Success=8,33, 365: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 0 0 0 0 0 469 Matched=7,8,32,33, Success=8,33, 366: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 0 0 0 0 0 469 Matched=2,7,18,27,32,43, Success=18,43, 367: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 468 0 0 0 0 0 469 Matched=2,7,8,17,27,32,33,42, Success=8,33, 368: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 468 0 0 0 0 0 0 Matched=2,8,17,27,33,42, Success=8,33, 369: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 0 0 0 0 0 469 Matched=3,7,17,28,32,42, Success=3,28, 370: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 0 0 0 0 0 0 Matched=2,18,27,43, Success=18,43, 371: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 0 0 0 0 0 0 Matched=3,17,28,42, Success=3,28, 372: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 0 0 0 0 0 469 Matched=7,18,32,43, Success=18,43, 373: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 0 0 0 0 0 469 Matched=7,8,17,32,33,42, Success=8,33, 374: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 0 0 0 0 0 0 Matched=8,17,33,42, Success=8,33, 375: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 470 0 0 0 0 469 Matched=2,7,12,18,27,32,37,43, Success=18,43, 376: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 468 0 0 0 0 0 469 Matched=2,7,13,17,27,32,38,42, Success=13,38, 377: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 468 470 0 0 0 0 469 Matched=2,7,8,12,17,27,32,33,37,42, Success=8,33, 378: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 468 470 0 0 0 0 0 Matched=2,8,12,17,27,33,37,42, Success=8,33, 379: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 470 0 0 0 0 469 Matched=3,7,12,17,28,32,37,42, Success=3,28, 380: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 470 0 0 0 0 0 Matched=2,12,18,27,37,43, Success=18,43, 381: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 468 0 0 0 0 0 0 Matched=2,13,17,27,38,42, Success=13,38, 382: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 470 0 0 0 0 0 Matched=3,12,17,28,37,42, Success=3,28, 383: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 470 0 0 0 0 469 Matched=7,12,18,32,37,43, Success=18,43, 384: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 0 0 0 0 0 469 Matched=7,13,17,32,38,42, Success=13,38, 385: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 470 0 0 0 0 469 Matched=7,8,12,17,32,33,37,42, Success=8,33, 386: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 470 0 0 0 0 0 Matched=8,12,17,33,37,42, Success=8,33, 387: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470 0 0 0 0 0 Matched=12,18,37,43, Success=18,43, 388: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 0 0 0 0 0 0 Matched=13,17,38,42, Success=13,38, 389: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 468 0 0 0 0 0 472 Matched=2,7,8,22,23,27,32,33,47,48, Success=8,23,33,48, 390: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 0 0 0 0 0 469 Matched=2,7,23,27,32,48, Success=23,48, 391: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 0 0 0 0 0 473 Matched=2,8,22,27,33,47, Success=8,33, 392: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 0 0 0 0 0 472 Matched=3,7,22,28,32,47, Success=3,28, 393: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 0 0 0 0 0 473 Matched=2,22,23,27,47,48, Success=23,48, 394: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 0 0 0 0 0 0 Matched=2,23,27,48, Success=23,48, 395: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 0 0 0 0 0 473 Matched=3,22,28,47, Success=3,28, 396: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 0 0 0 0 0 472 Matched=7,8,22,23,32,33,47,48, Success=8,23,33,48, 397: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 0 0 0 0 0 469 Matched=7,23,32,48, Success=23,48, 398: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 0 0 0 0 0 473 Matched=8,22,33,47, Success=8,33, 399: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 0 0 0 0 0 473 Matched=22,23,47,48, Success=23,48, 400: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 468 0 0 0 0 0 472 Matched=2,7,18,22,27,32,43,47, Success=18,43, 401: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 468 0 0 0 0 0 472 Matched=2,7,8,17,22,23,27,32,33,42,47,48, Success=8,23,33,48, 402: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 468 0 0 0 0 0 469 Matched=2,7,17,23,27,32,42,48, Success=23,48, 403: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 468 0 0 0 0 0 473 Matched=2,8,17,22,27,33,42,47, Success=8,33, 404: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 0 0 0 0 0 0 472 Matched=3,7,17,22,28,32,42,47, Success=3,28, 405: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 0 0 0 0 0 473 Matched=2,18,22,27,43,47, Success=18,43, 406: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 468 0 0 0 0 0 473 Matched=2,17,22,23,27,42,47,48, Success=23,48, 407: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 468 0 0 0 0 0 0 Matched=2,17,23,27,42,48, Success=23,48, 408: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 0 0 0 0 0 473 Matched=3,17,22,28,42,47, Success=3,28, 409: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 0 0 0 0 0 472 Matched=7,18,22,32,43,47, Success=18,43, 410: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 0 0 0 0 0 0 472 Matched=7,8,17,22,23,32,33,42,47,48, Success=8,23,33,48, 411: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 0 0 0 0 0 469 Matched=7,17,23,32,42,48, Success=23,48, 412: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 0 0 0 0 0 473 Matched=8,17,22,33,42,47, Success=8,33, 413: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 0 0 0 0 0 473 Matched=17,22,23,42,47,48, Success=23,48, 414: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 0 0 0 0 0 0 Matched=17,23,42,48, Success=23,48, 415: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 0 0 0 0 0 473 Matched=18,22,43,47, Success=18,43, 416: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 468 0 0 0 0 0 472 Matched=2,7,13,22,27,32,38,47, Success=13,38, 417: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 468 470 0 0 0 0 472 Matched=2,7,8,12,22,23,27,32,33,37,47,48, Success=8,23,33,48, 418: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 468 470 0 0 0 0 469 Matched=2,7,12,23,27,32,37,48, Success=23,48, 419: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 470 0 0 0 0 473 Matched=2,8,12,22,27,33,37,47, Success=8,33, 420: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 470 0 0 0 0 472 Matched=3,7,12,22,28,32,37,47, Success=3,28, 421: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 0 0 0 0 0 473 Matched=2,13,22,27,38,47, Success=13,38, 422: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 470 0 0 0 0 473 Matched=2,12,22,23,27,37,47,48, Success=23,48, 423: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 468 470 0 0 0 0 0 Matched=2,12,23,27,37,48, Success=23,48, 424: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 470 0 0 0 0 473 Matched=3,12,22,28,37,47, Success=3,28, 425: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 0 0 0 0 0 472 Matched=7,13,22,32,38,47, Success=13,38, 426: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 470 0 0 0 0 472 Matched=7,8,12,22,23,32,33,37,47,48, Success=8,23,33,48, 427: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 0 0 0 470 0 0 0 0 469 Matched=7,12,23,32,37,48, Success=23,48, 428: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 470 0 0 0 0 473 Matched=8,12,22,33,37,47, Success=8,33, 429: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 470 0 0 0 0 473 Matched=12,22,23,37,47,48, Success=23,48, 430: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470 0 0 0 0 0 Matched=12,23,37,48, Success=23,48, 431: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 0 0 0 0 0 473 Matched=13,22,38,47, Success=13,38, 432: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 468 470 0 0 0 0 472 Matched=2,7,12,18,22,27,32,37,43,47, Success=18,43, 433: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 468 0 0 0 0 0 472 Matched=2,7,13,17,22,27,32,38,42,47, Success=13,38, 434: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 468 470 0 0 0 0 472 Matched=2,7,8,12,17,22,23,27,32,33,37,42,47,48, Success=8,23,33,48, 435: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 468 470 0 0 0 0 469 Matched=2,7,12,17,23,27,32,37,42,48, Success=23,48, 436: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 468 470 0 0 0 0 473 Matched=2,8,12,17,22,27,33,37,42,47, Success=8,33, 437: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 0 470 0 0 0 0 472 Matched=3,7,12,17,22,28,32,37,42,47, Success=3,28, 438: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 468 470 0 0 0 0 473 Matched=2,12,18,22,27,37,43,47, Success=18,43, 439: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 468 0 0 0 0 0 473 Matched=2,13,17,22,27,38,42,47, Success=13,38, 440: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 468 470 0 0 0 0 473 Matched=2,12,17,22,23,27,37,42,47,48, Success=23,48, 441: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 468 470 0 0 0 0 0 Matched=2,12,17,23,27,37,42,48, Success=23,48, 442: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 470 0 0 0 0 473 Matched=3,12,17,22,28,37,42,47, Success=3,28, 443: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 0 0 0 470 0 0 0 0 472 Matched=7,12,18,22,32,37,43,47, Success=18,43, 444: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 0 0 0 0 0 0 472 Matched=7,13,17,22,32,38,42,47, Success=13,38, 445: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 469 473 473 471 471 0 470 0 0 0 0 472 Matched=7,8,12,17,22,23,32,33,37,42,47,48, Success=8,23,33,48, 446: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 469 0 0 471 471 0 470 0 0 0 0 469 Matched=7,12,17,23,32,37,42,48, Success=23,48, 447: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 470 0 0 0 0 473 Matched=8,12,17,22,33,37,42,47, Success=8,33, 448: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 0 0 0 470 0 0 0 0 473 Matched=12,18,22,37,43,47, Success=18,43, 449: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 470 0 0 0 0 473 Matched=12,17,22,23,37,42,47,48, Success=23,48, 450: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 471 471 0 470 0 0 0 0 0 Matched=12,17,23,37,42,48, Success=23,48, 451: 5 0 0 0 0 0 0 0 0 473 0 0 0 0 0 473 473 471 471 0 0 0 0 0 0 473 Matched=13,17,22,38,42,47, Success=13,38, 452: 2 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 Matched=0, Success=0, 453: 2 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 Matched=1, Success=1, 454: 2 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 Matched=11,36, Success=11,36, 455: 2 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 Matched=26,51, Success=26,51, 456: 3 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 Matched=10,35, Success=10,35, 457: 3 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 Matched=25,50, Success=25,50, 458: 4 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 Matched=4,29, Success=4,29, 459: 4 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 Matched=9,34, Success=9,34, 460: 4 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 Matched=14,39, Success=14,39, 461: 4 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 Matched=24,49, Success=24,49, 462: 4 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 Matched=19,44, Success=19,44, 463: 5 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 Matched=3,28, Success=3,28, 464: 5 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 Matched=8,33, Success=8,33, 465: 5 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 Matched=13,38, Success=13,38, 466: 5 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 Matched=18,43, Success=18,43, 467: 5 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 Matched=23,48, Success=23,48, 468: 6 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 Matched=2,27, Success=2,27, 469: 6 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 Matched=7,32, Success=7,32, 470: 6 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 Matched=12,37, Success=12,37, 471: 6 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 Matched=17,42, Success=17,42, 472: 6 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 Matched=7,22,32,47, Success=7,22,32,47, 473: 6 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 Matched=22,47, Success=22,47, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 3.0, CharisPitches.gdh(308): cRightContour { user3 = bb.left; user4 = bb.right; } cRightContourOrStaff { attach {to = @1; at = TL; with = TML; } insert = 1; } / _ ^ _ ; RULE 3.1, CharisPitches.gdh(312): cLeftContourOrStaff cLeftContour { attach {to = @1; at = TL; with = TML; } insert = 1; } / _ ^ _ ; RULE 3.2, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; RULE 3.3, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; RULE 3.4, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia _{ user1 == 0 } ; endif; RULE 3.5, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia _{ user1 == 0 } ; endif; RULE 3.6, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.7, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; RULE 3.8, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; RULE 3.9, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia _{ user1 == 0 } ; endif; RULE 3.10, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia _{ user1 == 0 } ; endif; RULE 3.11, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.12, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia cnODia cnODia _{ user1 == 0 } ; endif; RULE 3.13, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia cnODia _{ user1 == 0 } ; endif; RULE 3.14, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia _{ user1 == 0 } ; endif; RULE 3.15, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia _{ user1 == 0 } ; endif; RULE 3.16, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.17, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; RULE 3.18, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; RULE 3.19, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia _{ user1 == 0 } ; endif; RULE 3.20, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia _{ user1 == 0 } ; endif; RULE 3.21, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.22, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; RULE 3.23, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; RULE 3.24, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia _{ user1 == 0 } ; endif; RULE 3.25, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia _{ user1 == 0 } ; endif; RULE 3.26, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.27, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; RULE 3.28, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; RULE 3.29, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia _{ user1 == 0 } ; endif; RULE 3.30, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia _{ user1 == 0 } ; endif; RULE 3.31, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.32, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; RULE 3.33, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; RULE 3.34, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia _{ user1 == 0 } ; endif; RULE 3.35, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia _{ user1 == 0 } ; endif; RULE 3.36, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.37, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia cnODia cnODia _{ user1 == 0 } ; endif; RULE 3.38, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia cnODia _{ user1 == 0 } ; endif; RULE 3.39, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia _{ user1 == 0 } ; endif; RULE 3.40, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia _{ user1 == 0 } ; endif; RULE 3.41, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.42, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; RULE 3.43, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; RULE 3.44, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia _{ user1 == 0 } ; endif; RULE 3.45, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia _{ user1 == 0 } ; endif; RULE 3.46, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.47, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; RULE 3.48, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; RULE 3.49, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia _{ user1 == 0 } ; endif; RULE 3.50, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia _{ user1 == 0 } ; endif; RULE 3.51, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; RULE 3.52, CharisRules.gdh(655): cBridgeDiac { advance.x = 0; } ; PASS: 4 Glyph ID => Column: 0 .. 2 => 0 3 => 1 4 .. 15 => 0 16 => 1 17 .. 18 => 0 19 .. 28 => 1 29 .. 35 => 0 36 .. 61 => 1 62 .. 64 => 0 65 => 1 66 => 0 67 .. 93 => 1 94 .. 97 => 0 98 .. 129 => 1 130 .. 136 => 0 137 => 1 138 .. 140 => 0 141 .. 142 => 1 143 => 0 144 .. 145 => 1 146 .. 152 => 0 153 => 1 154 => 0 155 => 1 156 .. 159 => 0 160 .. 161 => 1 162 .. 165 => 0 166 => 1 167 .. 171 => 0 172 .. 177 => 1 178 .. 185 => 0 186 .. 187 => 1 188 .. 198 => 0 199 .. 215 => 1 216 .. 218 => 0 219 => 1 220 .. 224 => 0 225 .. 229 => 1 230 => 2 231 .. 233 => 1 234 => 0 235 => 1 236 => 0 237 .. 239 => 1 240 => 0 241 .. 324 => 1 325 => 0 326 => 1 327 => 0 328 .. 330 => 1 331 => 0 332 .. 357 => 1 358 => 0 359 .. 407 => 1 408 => 2 409 .. 415 => 1 416 => 0 417 .. 443 => 1 444 .. 448 => 0 449 .. 452 => 1 453 => 0 454 .. 460 => 1 461 => 2 462 .. 470 => 1 471 => 0 472 .. 510 => 1 511 .. 515 => 0 516 .. 518 => 1 519 => 2 520 .. 522 => 1 523 => 0 524 => 1 525 => 0 526 .. 528 => 1 529 => 0 530 .. 586 => 1 587 => 0 588 => 1 589 => 0 590 .. 592 => 1 593 => 0 594 .. 632 => 1 633 .. 645 => 0 646 .. 659 => 1 660 => 0 661 .. 708 => 1 709 => 0 710 .. 711 => 1 712 => 2 713 .. 787 => 1 788 => 2 789 .. 926 => 1 927 => 0 928 .. 964 => 1 965 .. 966 => 0 967 .. 988 => 1 989 => 2 990 .. 994 => 1 995 => 0 996 ..1014 => 1 1015 => 0 1016 ..1053 => 1 1054 => 0 1055 ..1065 => 1 1066 => 0 1067 ..1075 => 1 1076 => 2 1077 ..1079 => 1 1080 => 0 1081 => 1 1082 => 0 1083 ..1085 => 1 1086 => 0 1087 ..1113 => 1 1114 => 0 1115 ..1116 => 1 1117 ..1118 => 0 1119 ..1143 => 1 1144 => 0 1145 => 1 1146 => 0 1147 ..1149 => 1 1150 => 0 1151 ..1174 => 1 1175 => 0 1176 ..1192 => 1 1193 => 0 1194 ..1212 => 1 1213 => 0 1214 ..1222 => 1 1223 ..1224 => 0 1225 ..1226 => 1 1227 => 0 1228 ..1235 => 1 1236 => 3 1237 => 1 1238 => 2 1239 ..1277 => 1 1278 ..1279 => 0 1280 ..1322 => 1 1323 => 0 1324 => 1 1325 => 2 1326 ..1363 => 1 1364 => 0 1365 ..1375 => 1 1376 => 2 1377 ..1455 => 1 1456 => 2 1457 ..1480 => 1 1481 => 0 1482 ..1508 => 1 1509 => 0 1510 ..1513 => 1 1514 => 2 1515 ..1630 => 1 1631 => 0 1632 ..1652 => 1 1653 ..1654 => 0 1655 => 1 1656 => 0 1657 => 1 1658 => 0 1659 ..1660 => 1 1661 => 0 1662 => 1 1663 => 0 1664 => 1 1665 ..1666 => 0 1667 ..1669 => 1 1670 => 0 1671 => 1 1672 => 0 1673 => 1 1674 => 0 1675 => 1 1676 => 0 1677 => 1 1678 ..1693 => 0 1694 => 1 1695 ..1707 => 0 1708 => 2 1709 ..1710 => 0 1711 => 2 1712 ..1730 => 0 1731 ..1733 => 1 1734 ..1739 => 0 1740 ..1742 => 1 1743 ..1745 => 0 1746 => 1 1747 ..1748 => 0 1749 => 3 1750 ..1752 => 0 1753 => 3 1754 => 1 1755 => 2 1756 ..1760 => 0 1761 => 2 1762 ..1764 => 0 1765 => 3 1766 ..1767 => 1 1768 => 2 1769 ..1770 => 0 1771 => 1 1772 => 2 1773 ..1774 => 0 1775 => 3 1776 => 0 1777 => 2 1778 ..1779 => 3 1780 => 2 1781 ..1782 => 3 1783 ..1787 => 2 1788 => 0 1789 => 4 1790 ..1791 => 0 1792 => 3 1793 ..1799 => 2 1800 ..1801 => 0 1802 => 4 1803 => 0 1804 => 3 1805 => 2 1806 ..1811 => 3 1812 => 0 1813 => 3 1814 => 0 1815 ..1816 => 2 1817 ..1818 => 0 1819 => 2 1820 => 3 1821 => 2 1822 => 4 1823 ..1824 => 0 1825 ..1826 => 2 1827 ..1828 => 3 1829 => 0 1830 => 2 1831 => 0 1832 ..1833 => 3 1834 => 0 1835 ..1836 => 3 1837 => 1 1838 ..1839 => 2 1840 => 0 1841 => 4 1842 => 3 1843 => 2 1844 => 0 1845 ..1846 => 3 1847 => 2 1848 ..1853 => 0 1854 => 3 1855 ..1859 => 2 1860 => 4 1861 => 3 1862 ..1863 => 2 1864 => 3 1865 => 2 1866 ..1867 => 3 1868 => 0 1869 => 3 1870 => 2 1871 ..1872 => 3 1873 => 0 1874 => 1 1875 => 2 1876 => 3 1877 => 0 1878 => 1 1879 ..1880 => 2 1881 => 3 1882 => 2 1883 => 3 1884 => 2 1885 => 0 1886 => 3 1887 ..1888 => 0 1889 => 3 1890 => 0 1891 => 3 1892 => 0 1893 ..1894 => 3 1895 ..1896 => 0 1897 => 3 1898 ..1910 => 0 1911 => 1 1912 ..1914 => 3 1915 => 0 1916 ..1917 => 3 1918 => 2 1919 => 3 1920 => 0 1921 ..1923 => 3 1924 ..2492 => 0 2493 => 3 2494 ..2496 => 0 2497 ..2498 => 3 2499 ..2500 => 0 2501 ..2502 => 3 2503 ..2504 => 0 2505 => 3 2506 ..2524 => 0 2525 => 2 2526 => 3 2527 ..2528 => 0 2529 => 2 2530 => 3 2531 => 0 2532 ..2533 => 3 2534 ..2574 => 0 2575 => 2 2576 ..2618 => 0 2619 ..2630 => 1 2631 ..2687 => 0 Final Table: 0 1 2 3 4 - - - - - - - - - - - - - - - 0: 0 2 1 1 2 1 Matched=none Success=none 1: 1 6 5 3 4 5 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, Success=none 2: 1 6 5 7 8 5 Matched=1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, Success=none 3: 2 12 11 9 10 11 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, Success=none 4: 2 12 11 13 14 11 Matched=0,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17, Success=none 5: 2 12 11 15 16 11 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17, Success=none 6: 2 12 11 17 18 11 Matched=2,3,4,5,8,9,10,11,13,14,15,16,17, Success=none 7: 2 12 11 19 20 11 Matched=1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, Success=none 8: 2 12 11 21 22 11 Matched=2,3,4,5,8,9,10,11,12,13,14,15,16,17, Success=none 9: 3 26 25 23 24 25 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, Success=none 10: 3 26 25 27 28 25 Matched=0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17, Success=none 11: 3 26 25 29 30 25 Matched=2,3,4,5,8,9,10,11,14,15,16,17, Success=none 12: 3 26 25 31 32 25 Matched=3,4,5,9,10,11,14,15,16,17, Success=none 13: 3 26 25 33 34 25 Matched=0,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17, Success=none 14: 3 26 25 35 36 25 Matched=0,3,4,5,6,9,10,11,12,13,14,15,16,17, Success=none 15: 3 26 25 37 38 25 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17, Success=none 16: 3 26 25 39 40 25 Matched=1,3,4,5,7,9,10,11,13,14,15,16,17, Success=none 17: 3 26 25 41 42 25 Matched=2,3,4,5,8,9,10,11,13,14,15,16,17, Success=none 18: 3 26 25 43 44 25 Matched=3,4,5,9,10,11,13,14,15,16,17, Success=none 19: 3 26 25 45 46 25 Matched=1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, Success=none 20: 3 26 25 47 48 25 Matched=1,3,4,5,7,9,10,11,12,13,14,15,16,17, Success=none 21: 3 26 25 49 50 25 Matched=2,3,4,5,8,9,10,11,12,13,14,15,16,17, Success=none 22: 3 26 25 51 52 25 Matched=3,4,5,9,10,11,12,13,14,15,16,17, Success=none 23: 4 56 55 53 54 55 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, Success=none 24: 4 56 55 57 58 55 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,15,16,17, Success=none 25: 4 56 55 59 60 55 Matched=3,4,5,9,10,11,15,16,17, Success=none 26: 4 56 55 61 62 55 Matched=4,5,10,11,15,16,17, Success=none 27: 4 56 55 63 64 55 Matched=0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17, Success=none 28: 4 56 55 65 66 55 Matched=0,1,4,5,6,7,10,11,12,13,14,15,16,17, Success=none 29: 4 56 55 67 68 55 Matched=2,3,4,5,8,9,10,11,14,15,16,17, Success=none 30: 4 56 55 69 70 55 Matched=2,4,5,8,10,11,14,15,16,17, Success=none 31: 4 56 55 71 72 55 Matched=3,4,5,9,10,11,14,15,16,17, Success=none 32: 4 56 55 73 74 55 Matched=4,5,10,11,14,15,16,17, Success=none 33: 4 56 55 75 76 55 Matched=0,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17, Success=none 34: 4 56 55 77 78 55 Matched=0,2,4,5,6,8,10,11,12,13,14,15,16,17, Success=none 35: 4 56 55 79 80 55 Matched=0,3,4,5,6,9,10,11,12,13,14,15,16,17, Success=none 36: 4 56 55 81 82 55 Matched=0,4,5,6,10,11,12,13,14,15,16,17, Success=none 37: 4 56 55 83 84 55 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17, Success=none 38: 4 56 55 85 86 55 Matched=1,2,4,5,7,8,10,11,13,14,15,16,17, Success=none 39: 4 56 55 87 88 55 Matched=1,3,4,5,7,9,10,11,13,14,15,16,17, Success=none 40: 4 56 55 89 90 55 Matched=1,4,5,7,10,11,13,14,15,16,17, Success=none 41: 4 56 55 91 92 55 Matched=2,3,4,5,8,9,10,11,13,14,15,16,17, Success=none 42: 4 56 55 93 94 55 Matched=2,4,5,8,10,11,13,14,15,16,17, Success=none 43: 4 56 55 95 96 55 Matched=3,4,5,9,10,11,13,14,15,16,17, Success=none 44: 4 56 55 97 98 55 Matched=4,5,10,11,13,14,15,16,17, Success=none 45: 4 56 55 99 100 55 Matched=1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, Success=none 46: 4 56 55 101 102 55 Matched=1,2,4,5,7,8,10,11,12,13,14,15,16,17, Success=none 47: 4 56 55 103 104 55 Matched=1,3,4,5,7,9,10,11,12,13,14,15,16,17, Success=none 48: 4 56 55 105 106 55 Matched=1,4,5,7,10,11,12,13,14,15,16,17, Success=none 49: 4 56 55 107 108 55 Matched=2,3,4,5,8,9,10,11,12,13,14,15,16,17, Success=none 50: 4 56 55 109 110 55 Matched=2,4,5,8,10,11,12,13,14,15,16,17, Success=none 51: 4 56 55 111 112 55 Matched=3,4,5,9,10,11,12,13,14,15,16,17, Success=none 52: 4 56 55 113 114 55 Matched=4,5,10,11,12,13,14,15,16,17, Success=none 53: 5 118 117 115 116 117 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, Success=none 54: 5 118 117 119 120 117 Matched=0,1,2,3,5,6,7,8,9,11,12,13,14,15,16,17, Success=none 55: 5 118 117 121 122 117 Matched=4,5,10,11,16,17, Success=none 56: 5 118 117 123 124 117 Matched=5,11,16,17, Success=none 57: 5 118 117 125 126 117 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,15,16,17, Success=none 58: 5 118 117 127 128 117 Matched=0,1,2,5,6,7,8,11,12,13,14,15,16,17, Success=none 59: 5 118 117 129 130 117 Matched=3,4,5,9,10,11,15,16,17, Success=none 60: 5 118 117 131 132 117 Matched=3,5,9,11,15,16,17, Success=none 61: 5 118 117 133 134 117 Matched=4,5,10,11,15,16,17, Success=none 62: 5 118 117 135 136 117 Matched=5,11,15,16,17, Success=none 63: 5 118 117 137 138 117 Matched=0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17, Success=none 64: 5 118 117 139 140 117 Matched=0,1,3,5,6,7,9,11,12,13,14,15,16,17, Success=none 65: 5 118 117 141 142 117 Matched=0,1,4,5,6,7,10,11,12,13,14,15,16,17, Success=none 66: 5 118 117 143 144 117 Matched=0,1,5,6,7,11,12,13,14,15,16,17, Success=none 67: 5 118 117 145 146 117 Matched=2,3,4,5,8,9,10,11,14,15,16,17, Success=none 68: 5 118 117 147 148 117 Matched=2,3,5,8,9,11,14,15,16,17, Success=none 69: 5 118 117 149 150 117 Matched=2,4,5,8,10,11,14,15,16,17, Success=none 70: 5 118 117 151 152 117 Matched=2,5,8,11,14,15,16,17, Success=none 71: 5 118 117 153 154 117 Matched=3,4,5,9,10,11,14,15,16,17, Success=none 72: 5 118 117 155 156 117 Matched=3,5,9,11,14,15,16,17, Success=none 73: 5 118 117 157 158 117 Matched=4,5,10,11,14,15,16,17, Success=none 74: 5 118 117 159 160 117 Matched=5,11,14,15,16,17, Success=none 75: 5 118 117 161 162 117 Matched=0,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17, Success=none 76: 5 118 117 163 164 117 Matched=0,2,3,5,6,8,9,11,12,13,14,15,16,17, Success=none 77: 5 118 117 165 166 117 Matched=0,2,4,5,6,8,10,11,12,13,14,15,16,17, Success=none 78: 5 118 117 167 168 117 Matched=0,2,5,6,8,11,12,13,14,15,16,17, Success=none 79: 5 118 117 169 170 117 Matched=0,3,4,5,6,9,10,11,12,13,14,15,16,17, Success=none 80: 5 118 117 171 172 117 Matched=0,3,5,6,9,11,12,13,14,15,16,17, Success=none 81: 5 118 117 173 174 117 Matched=0,4,5,6,10,11,12,13,14,15,16,17, Success=none 82: 5 118 117 175 176 117 Matched=0,5,6,11,12,13,14,15,16,17, Success=none 83: 5 118 117 177 178 117 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17, Success=none 84: 5 118 117 179 180 117 Matched=1,2,3,5,7,8,9,11,13,14,15,16,17, Success=none 85: 5 118 117 181 182 117 Matched=1,2,4,5,7,8,10,11,13,14,15,16,17, Success=none 86: 5 118 117 183 184 117 Matched=1,2,5,7,8,11,13,14,15,16,17, Success=none 87: 5 118 117 185 186 117 Matched=1,3,4,5,7,9,10,11,13,14,15,16,17, Success=none 88: 5 118 117 187 188 117 Matched=1,3,5,7,9,11,13,14,15,16,17, Success=none 89: 5 118 117 189 190 117 Matched=1,4,5,7,10,11,13,14,15,16,17, Success=none 90: 5 118 117 191 192 117 Matched=1,5,7,11,13,14,15,16,17, Success=none 91: 5 118 117 193 194 117 Matched=2,3,4,5,8,9,10,11,13,14,15,16,17, Success=none 92: 5 118 117 195 196 117 Matched=2,3,5,8,9,11,13,14,15,16,17, Success=none 93: 5 118 117 197 198 117 Matched=2,4,5,8,10,11,13,14,15,16,17, Success=none 94: 5 118 117 199 200 117 Matched=2,5,8,11,13,14,15,16,17, Success=none 95: 5 118 117 201 202 117 Matched=3,4,5,9,10,11,13,14,15,16,17, Success=none 96: 5 118 117 203 204 117 Matched=3,5,9,11,13,14,15,16,17, Success=none 97: 5 118 117 205 206 117 Matched=4,5,10,11,13,14,15,16,17, Success=none 98: 5 118 117 207 208 117 Matched=5,11,13,14,15,16,17, Success=none 99: 5 118 117 209 210 117 Matched=1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, Success=none 100: 5 118 117 211 212 117 Matched=1,2,3,5,7,8,9,11,12,13,14,15,16,17, Success=none 101: 5 118 117 213 214 117 Matched=1,2,4,5,7,8,10,11,12,13,14,15,16,17, Success=none 102: 5 118 117 215 216 117 Matched=1,2,5,7,8,11,12,13,14,15,16,17, Success=none 103: 5 118 117 217 218 117 Matched=1,3,4,5,7,9,10,11,12,13,14,15,16,17, Success=none 104: 5 118 117 219 220 117 Matched=1,3,5,7,9,11,12,13,14,15,16,17, Success=none 105: 5 118 117 221 222 117 Matched=1,4,5,7,10,11,12,13,14,15,16,17, Success=none 106: 5 118 117 223 224 117 Matched=1,5,7,11,12,13,14,15,16,17, Success=none 107: 5 118 117 225 226 117 Matched=2,3,4,5,8,9,10,11,12,13,14,15,16,17, Success=none 108: 5 118 117 227 228 117 Matched=2,3,5,8,9,11,12,13,14,15,16,17, Success=none 109: 5 118 117 229 230 117 Matched=2,4,5,8,10,11,12,13,14,15,16,17, Success=none 110: 5 118 117 231 232 117 Matched=2,5,8,11,12,13,14,15,16,17, Success=none 111: 5 118 117 233 234 117 Matched=3,4,5,9,10,11,12,13,14,15,16,17, Success=none 112: 5 118 117 235 236 117 Matched=3,5,9,11,12,13,14,15,16,17, Success=none 113: 5 118 117 237 238 117 Matched=4,5,10,11,12,13,14,15,16,17, Success=none 114: 5 118 117 239 240 117 Matched=5,11,12,13,14,15,16,17, Success=none 115: 6 0 0 0 0 247 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, Success=none 116: 6 0 0 0 0 248 Matched=0,1,2,3,4,6,7,8,9,10,12,13,14,15,16,17, Success=none 117: 6 0 0 0 0 249 Matched=5,11,17, Success=none 118: 6 0 0 0 0 241 Matched=17, Success=none 119: 6 0 0 0 0 250 Matched=0,1,2,3,5,6,7,8,9,11,12,13,14,15,16,17, Success=none 120: 6 0 0 0 0 251 Matched=0,1,2,3,6,7,8,9,12,13,14,15,16,17, Success=none 121: 6 0 0 0 0 252 Matched=4,5,10,11,16,17, Success=none 122: 6 0 0 0 0 253 Matched=4,10,16,17, Success=none 123: 6 0 0 0 0 254 Matched=5,11,16,17, Success=none 124: 6 0 0 0 0 242 Matched=16,17, Success=none 125: 6 0 0 0 0 255 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,15,16,17, Success=none 126: 6 0 0 0 0 256 Matched=0,1,2,4,6,7,8,10,12,13,14,15,16,17, Success=none 127: 6 0 0 0 0 257 Matched=0,1,2,5,6,7,8,11,12,13,14,15,16,17, Success=none 128: 6 0 0 0 0 258 Matched=0,1,2,6,7,8,12,13,14,15,16,17, Success=none 129: 6 0 0 0 0 259 Matched=3,4,5,9,10,11,15,16,17, Success=none 130: 6 0 0 0 0 260 Matched=3,4,9,10,15,16,17, Success=none 131: 6 0 0 0 0 261 Matched=3,5,9,11,15,16,17, Success=none 132: 6 0 0 0 0 262 Matched=3,9,15,16,17, Success=none 133: 6 0 0 0 0 263 Matched=4,5,10,11,15,16,17, Success=none 134: 6 0 0 0 0 264 Matched=4,10,15,16,17, Success=none 135: 6 0 0 0 0 265 Matched=5,11,15,16,17, Success=none 136: 6 0 0 0 0 243 Matched=15,16,17, Success=none 137: 6 0 0 0 0 266 Matched=0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17, Success=none 138: 6 0 0 0 0 267 Matched=0,1,3,4,6,7,9,10,12,13,14,15,16,17, Success=none 139: 6 0 0 0 0 268 Matched=0,1,3,5,6,7,9,11,12,13,14,15,16,17, Success=none 140: 6 0 0 0 0 269 Matched=0,1,3,6,7,9,12,13,14,15,16,17, Success=none 141: 6 0 0 0 0 270 Matched=0,1,4,5,6,7,10,11,12,13,14,15,16,17, Success=none 142: 6 0 0 0 0 271 Matched=0,1,4,6,7,10,12,13,14,15,16,17, Success=none 143: 6 0 0 0 0 272 Matched=0,1,5,6,7,11,12,13,14,15,16,17, Success=none 144: 6 0 0 0 0 273 Matched=0,1,6,7,12,13,14,15,16,17, Success=none 145: 6 0 0 0 0 274 Matched=2,3,4,5,8,9,10,11,14,15,16,17, Success=none 146: 6 0 0 0 0 275 Matched=2,3,4,8,9,10,14,15,16,17, Success=none 147: 6 0 0 0 0 276 Matched=2,3,5,8,9,11,14,15,16,17, Success=none 148: 6 0 0 0 0 277 Matched=2,3,8,9,14,15,16,17, Success=none 149: 6 0 0 0 0 278 Matched=2,4,5,8,10,11,14,15,16,17, Success=none 150: 6 0 0 0 0 279 Matched=2,4,8,10,14,15,16,17, Success=none 151: 6 0 0 0 0 280 Matched=2,5,8,11,14,15,16,17, Success=none 152: 6 0 0 0 0 281 Matched=2,8,14,15,16,17, Success=none 153: 6 0 0 0 0 282 Matched=3,4,5,9,10,11,14,15,16,17, Success=none 154: 6 0 0 0 0 283 Matched=3,4,9,10,14,15,16,17, Success=none 155: 6 0 0 0 0 284 Matched=3,5,9,11,14,15,16,17, Success=none 156: 6 0 0 0 0 285 Matched=3,9,14,15,16,17, Success=none 157: 6 0 0 0 0 286 Matched=4,5,10,11,14,15,16,17, Success=none 158: 6 0 0 0 0 287 Matched=4,10,14,15,16,17, Success=none 159: 6 0 0 0 0 288 Matched=5,11,14,15,16,17, Success=none 160: 6 0 0 0 0 244 Matched=14,15,16,17, Success=none 161: 6 0 0 0 0 289 Matched=0,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17, Success=none 162: 6 0 0 0 0 290 Matched=0,2,3,4,6,8,9,10,12,13,14,15,16,17, Success=none 163: 6 0 0 0 0 291 Matched=0,2,3,5,6,8,9,11,12,13,14,15,16,17, Success=none 164: 6 0 0 0 0 292 Matched=0,2,3,6,8,9,12,13,14,15,16,17, Success=none 165: 6 0 0 0 0 293 Matched=0,2,4,5,6,8,10,11,12,13,14,15,16,17, Success=none 166: 6 0 0 0 0 294 Matched=0,2,4,6,8,10,12,13,14,15,16,17, Success=none 167: 6 0 0 0 0 295 Matched=0,2,5,6,8,11,12,13,14,15,16,17, Success=none 168: 6 0 0 0 0 296 Matched=0,2,6,8,12,13,14,15,16,17, Success=none 169: 6 0 0 0 0 297 Matched=0,3,4,5,6,9,10,11,12,13,14,15,16,17, Success=none 170: 6 0 0 0 0 298 Matched=0,3,4,6,9,10,12,13,14,15,16,17, Success=none 171: 6 0 0 0 0 299 Matched=0,3,5,6,9,11,12,13,14,15,16,17, Success=none 172: 6 0 0 0 0 300 Matched=0,3,6,9,12,13,14,15,16,17, Success=none 173: 6 0 0 0 0 301 Matched=0,4,5,6,10,11,12,13,14,15,16,17, Success=none 174: 6 0 0 0 0 302 Matched=0,4,6,10,12,13,14,15,16,17, Success=none 175: 6 0 0 0 0 303 Matched=0,5,6,11,12,13,14,15,16,17, Success=none 176: 6 0 0 0 0 304 Matched=0,6,12,13,14,15,16,17, Success=none 177: 6 0 0 0 0 305 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17, Success=none 178: 6 0 0 0 0 306 Matched=1,2,3,4,7,8,9,10,13,14,15,16,17, Success=none 179: 6 0 0 0 0 307 Matched=1,2,3,5,7,8,9,11,13,14,15,16,17, Success=none 180: 6 0 0 0 0 308 Matched=1,2,3,7,8,9,13,14,15,16,17, Success=none 181: 6 0 0 0 0 309 Matched=1,2,4,5,7,8,10,11,13,14,15,16,17, Success=none 182: 6 0 0 0 0 310 Matched=1,2,4,7,8,10,13,14,15,16,17, Success=none 183: 6 0 0 0 0 311 Matched=1,2,5,7,8,11,13,14,15,16,17, Success=none 184: 6 0 0 0 0 312 Matched=1,2,7,8,13,14,15,16,17, Success=none 185: 6 0 0 0 0 313 Matched=1,3,4,5,7,9,10,11,13,14,15,16,17, Success=none 186: 6 0 0 0 0 314 Matched=1,3,4,7,9,10,13,14,15,16,17, Success=none 187: 6 0 0 0 0 315 Matched=1,3,5,7,9,11,13,14,15,16,17, Success=none 188: 6 0 0 0 0 316 Matched=1,3,7,9,13,14,15,16,17, Success=none 189: 6 0 0 0 0 317 Matched=1,4,5,7,10,11,13,14,15,16,17, Success=none 190: 6 0 0 0 0 318 Matched=1,4,7,10,13,14,15,16,17, Success=none 191: 6 0 0 0 0 319 Matched=1,5,7,11,13,14,15,16,17, Success=none 192: 6 0 0 0 0 320 Matched=1,7,13,14,15,16,17, Success=none 193: 6 0 0 0 0 321 Matched=2,3,4,5,8,9,10,11,13,14,15,16,17, Success=none 194: 6 0 0 0 0 322 Matched=2,3,4,8,9,10,13,14,15,16,17, Success=none 195: 6 0 0 0 0 323 Matched=2,3,5,8,9,11,13,14,15,16,17, Success=none 196: 6 0 0 0 0 324 Matched=2,3,8,9,13,14,15,16,17, Success=none 197: 6 0 0 0 0 325 Matched=2,4,5,8,10,11,13,14,15,16,17, Success=none 198: 6 0 0 0 0 326 Matched=2,4,8,10,13,14,15,16,17, Success=none 199: 6 0 0 0 0 327 Matched=2,5,8,11,13,14,15,16,17, Success=none 200: 6 0 0 0 0 328 Matched=2,8,13,14,15,16,17, Success=none 201: 6 0 0 0 0 329 Matched=3,4,5,9,10,11,13,14,15,16,17, Success=none 202: 6 0 0 0 0 330 Matched=3,4,9,10,13,14,15,16,17, Success=none 203: 6 0 0 0 0 331 Matched=3,5,9,11,13,14,15,16,17, Success=none 204: 6 0 0 0 0 332 Matched=3,9,13,14,15,16,17, Success=none 205: 6 0 0 0 0 333 Matched=4,5,10,11,13,14,15,16,17, Success=none 206: 6 0 0 0 0 334 Matched=4,10,13,14,15,16,17, Success=none 207: 6 0 0 0 0 335 Matched=5,11,13,14,15,16,17, Success=none 208: 6 0 0 0 0 245 Matched=13,14,15,16,17, Success=none 209: 6 0 0 0 0 336 Matched=1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, Success=none 210: 6 0 0 0 0 337 Matched=1,2,3,4,7,8,9,10,12,13,14,15,16,17, Success=none 211: 6 0 0 0 0 338 Matched=1,2,3,5,7,8,9,11,12,13,14,15,16,17, Success=none 212: 6 0 0 0 0 339 Matched=1,2,3,7,8,9,12,13,14,15,16,17, Success=none 213: 6 0 0 0 0 340 Matched=1,2,4,5,7,8,10,11,12,13,14,15,16,17, Success=none 214: 6 0 0 0 0 341 Matched=1,2,4,7,8,10,12,13,14,15,16,17, Success=none 215: 6 0 0 0 0 342 Matched=1,2,5,7,8,11,12,13,14,15,16,17, Success=none 216: 6 0 0 0 0 343 Matched=1,2,7,8,12,13,14,15,16,17, Success=none 217: 6 0 0 0 0 344 Matched=1,3,4,5,7,9,10,11,12,13,14,15,16,17, Success=none 218: 6 0 0 0 0 345 Matched=1,3,4,7,9,10,12,13,14,15,16,17, Success=none 219: 6 0 0 0 0 346 Matched=1,3,5,7,9,11,12,13,14,15,16,17, Success=none 220: 6 0 0 0 0 347 Matched=1,3,7,9,12,13,14,15,16,17, Success=none 221: 6 0 0 0 0 348 Matched=1,4,5,7,10,11,12,13,14,15,16,17, Success=none 222: 6 0 0 0 0 349 Matched=1,4,7,10,12,13,14,15,16,17, Success=none 223: 6 0 0 0 0 350 Matched=1,5,7,11,12,13,14,15,16,17, Success=none 224: 6 0 0 0 0 351 Matched=1,7,12,13,14,15,16,17, Success=none 225: 6 0 0 0 0 352 Matched=2,3,4,5,8,9,10,11,12,13,14,15,16,17, Success=none 226: 6 0 0 0 0 353 Matched=2,3,4,8,9,10,12,13,14,15,16,17, Success=none 227: 6 0 0 0 0 354 Matched=2,3,5,8,9,11,12,13,14,15,16,17, Success=none 228: 6 0 0 0 0 355 Matched=2,3,8,9,12,13,14,15,16,17, Success=none 229: 6 0 0 0 0 356 Matched=2,4,5,8,10,11,12,13,14,15,16,17, Success=none 230: 6 0 0 0 0 357 Matched=2,4,8,10,12,13,14,15,16,17, Success=none 231: 6 0 0 0 0 358 Matched=2,5,8,11,12,13,14,15,16,17, Success=none 232: 6 0 0 0 0 359 Matched=2,8,12,13,14,15,16,17, Success=none 233: 6 0 0 0 0 360 Matched=3,4,5,9,10,11,12,13,14,15,16,17, Success=none 234: 6 0 0 0 0 361 Matched=3,4,9,10,12,13,14,15,16,17, Success=none 235: 6 0 0 0 0 362 Matched=3,5,9,11,12,13,14,15,16,17, Success=none 236: 6 0 0 0 0 363 Matched=3,9,12,13,14,15,16,17, Success=none 237: 6 0 0 0 0 364 Matched=4,5,10,11,12,13,14,15,16,17, Success=none 238: 6 0 0 0 0 365 Matched=4,10,12,13,14,15,16,17, Success=none 239: 6 0 0 0 0 366 Matched=5,11,12,13,14,15,16,17, Success=none 240: 6 0 0 0 0 246 Matched=12,13,14,15,16,17, Success=none 241: 7 0 370 370 0 370 Matched=17, Success=none 242: 7 0 376 376 0 376 Matched=16,17, Success=none 243: 7 0 388 388 0 388 Matched=15,16,17, Success=none 244: 7 0 412 412 0 412 Matched=14,15,16,17, Success=none 245: 7 0 460 460 0 460 Matched=13,14,15,16,17, Success=none 246: 7 0 492 492 0 492 Matched=12,13,14,15,16,17, Success=none 247: 7 0 367 367 0 367 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, Success=6,7,8,9,10,11, 248: 7 0 368 368 0 368 Matched=0,1,2,3,4,6,7,8,9,10,12,13,14,15,16,17, Success=6,7,8,9,10, 249: 7 0 369 369 0 369 Matched=5,11,17, Success=11, 250: 7 0 371 371 0 371 Matched=0,1,2,3,5,6,7,8,9,11,12,13,14,15,16,17, Success=6,7,8,9,11, 251: 7 0 372 372 0 372 Matched=0,1,2,3,6,7,8,9,12,13,14,15,16,17, Success=6,7,8,9, 252: 7 0 373 373 0 373 Matched=4,5,10,11,16,17, Success=10,11, 253: 7 0 374 374 0 374 Matched=4,10,16,17, Success=10, 254: 7 0 375 375 0 375 Matched=5,11,16,17, Success=11, 255: 7 0 377 377 0 377 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,15,16,17, Success=6,7,8,10,11, 256: 7 0 378 378 0 378 Matched=0,1,2,4,6,7,8,10,12,13,14,15,16,17, Success=6,7,8,10, 257: 7 0 379 379 0 379 Matched=0,1,2,5,6,7,8,11,12,13,14,15,16,17, Success=6,7,8,11, 258: 7 0 380 380 0 380 Matched=0,1,2,6,7,8,12,13,14,15,16,17, Success=6,7,8, 259: 7 0 381 381 0 381 Matched=3,4,5,9,10,11,15,16,17, Success=9,10,11, 260: 7 0 382 382 0 382 Matched=3,4,9,10,15,16,17, Success=9,10, 261: 7 0 383 383 0 383 Matched=3,5,9,11,15,16,17, Success=9,11, 262: 7 0 384 384 0 384 Matched=3,9,15,16,17, Success=9, 263: 7 0 385 385 0 385 Matched=4,5,10,11,15,16,17, Success=10,11, 264: 7 0 386 386 0 386 Matched=4,10,15,16,17, Success=10, 265: 7 0 387 387 0 387 Matched=5,11,15,16,17, Success=11, 266: 7 0 389 389 0 389 Matched=0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17, Success=6,7,9,10,11, 267: 7 0 390 390 0 390 Matched=0,1,3,4,6,7,9,10,12,13,14,15,16,17, Success=6,7,9,10, 268: 7 0 391 391 0 391 Matched=0,1,3,5,6,7,9,11,12,13,14,15,16,17, Success=6,7,9,11, 269: 7 0 392 392 0 392 Matched=0,1,3,6,7,9,12,13,14,15,16,17, Success=6,7,9, 270: 7 0 393 393 0 393 Matched=0,1,4,5,6,7,10,11,12,13,14,15,16,17, Success=6,7,10,11, 271: 7 0 394 394 0 394 Matched=0,1,4,6,7,10,12,13,14,15,16,17, Success=6,7,10, 272: 7 0 395 395 0 395 Matched=0,1,5,6,7,11,12,13,14,15,16,17, Success=6,7,11, 273: 7 0 396 396 0 396 Matched=0,1,6,7,12,13,14,15,16,17, Success=6,7, 274: 7 0 397 397 0 397 Matched=2,3,4,5,8,9,10,11,14,15,16,17, Success=8,9,10,11, 275: 7 0 398 398 0 398 Matched=2,3,4,8,9,10,14,15,16,17, Success=8,9,10, 276: 7 0 399 399 0 399 Matched=2,3,5,8,9,11,14,15,16,17, Success=8,9,11, 277: 7 0 400 400 0 400 Matched=2,3,8,9,14,15,16,17, Success=8,9, 278: 7 0 401 401 0 401 Matched=2,4,5,8,10,11,14,15,16,17, Success=8,10,11, 279: 7 0 402 402 0 402 Matched=2,4,8,10,14,15,16,17, Success=8,10, 280: 7 0 403 403 0 403 Matched=2,5,8,11,14,15,16,17, Success=8,11, 281: 7 0 404 404 0 404 Matched=2,8,14,15,16,17, Success=8, 282: 7 0 405 405 0 405 Matched=3,4,5,9,10,11,14,15,16,17, Success=9,10,11, 283: 7 0 406 406 0 406 Matched=3,4,9,10,14,15,16,17, Success=9,10, 284: 7 0 407 407 0 407 Matched=3,5,9,11,14,15,16,17, Success=9,11, 285: 7 0 408 408 0 408 Matched=3,9,14,15,16,17, Success=9, 286: 7 0 409 409 0 409 Matched=4,5,10,11,14,15,16,17, Success=10,11, 287: 7 0 410 410 0 410 Matched=4,10,14,15,16,17, Success=10, 288: 7 0 411 411 0 411 Matched=5,11,14,15,16,17, Success=11, 289: 7 0 413 413 0 413 Matched=0,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17, Success=6,8,9,10,11, 290: 7 0 414 414 0 414 Matched=0,2,3,4,6,8,9,10,12,13,14,15,16,17, Success=6,8,9,10, 291: 7 0 415 415 0 415 Matched=0,2,3,5,6,8,9,11,12,13,14,15,16,17, Success=6,8,9,11, 292: 7 0 416 416 0 416 Matched=0,2,3,6,8,9,12,13,14,15,16,17, Success=6,8,9, 293: 7 0 417 417 0 417 Matched=0,2,4,5,6,8,10,11,12,13,14,15,16,17, Success=6,8,10,11, 294: 7 0 418 418 0 418 Matched=0,2,4,6,8,10,12,13,14,15,16,17, Success=6,8,10, 295: 7 0 419 419 0 419 Matched=0,2,5,6,8,11,12,13,14,15,16,17, Success=6,8,11, 296: 7 0 420 420 0 420 Matched=0,2,6,8,12,13,14,15,16,17, Success=6,8, 297: 7 0 421 421 0 421 Matched=0,3,4,5,6,9,10,11,12,13,14,15,16,17, Success=6,9,10,11, 298: 7 0 422 422 0 422 Matched=0,3,4,6,9,10,12,13,14,15,16,17, Success=6,9,10, 299: 7 0 423 423 0 423 Matched=0,3,5,6,9,11,12,13,14,15,16,17, Success=6,9,11, 300: 7 0 424 424 0 424 Matched=0,3,6,9,12,13,14,15,16,17, Success=6,9, 301: 7 0 425 425 0 425 Matched=0,4,5,6,10,11,12,13,14,15,16,17, Success=6,10,11, 302: 7 0 426 426 0 426 Matched=0,4,6,10,12,13,14,15,16,17, Success=6,10, 303: 7 0 427 427 0 427 Matched=0,5,6,11,12,13,14,15,16,17, Success=6,11, 304: 7 0 428 428 0 428 Matched=0,6,12,13,14,15,16,17, Success=6, 305: 7 0 429 429 0 429 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17, Success=7,8,9,10,11, 306: 7 0 430 430 0 430 Matched=1,2,3,4,7,8,9,10,13,14,15,16,17, Success=7,8,9,10, 307: 7 0 431 431 0 431 Matched=1,2,3,5,7,8,9,11,13,14,15,16,17, Success=7,8,9,11, 308: 7 0 432 432 0 432 Matched=1,2,3,7,8,9,13,14,15,16,17, Success=7,8,9, 309: 7 0 433 433 0 433 Matched=1,2,4,5,7,8,10,11,13,14,15,16,17, Success=7,8,10,11, 310: 7 0 434 434 0 434 Matched=1,2,4,7,8,10,13,14,15,16,17, Success=7,8,10, 311: 7 0 435 435 0 435 Matched=1,2,5,7,8,11,13,14,15,16,17, Success=7,8,11, 312: 7 0 436 436 0 436 Matched=1,2,7,8,13,14,15,16,17, Success=7,8, 313: 7 0 437 437 0 437 Matched=1,3,4,5,7,9,10,11,13,14,15,16,17, Success=7,9,10,11, 314: 7 0 438 438 0 438 Matched=1,3,4,7,9,10,13,14,15,16,17, Success=7,9,10, 315: 7 0 439 439 0 439 Matched=1,3,5,7,9,11,13,14,15,16,17, Success=7,9,11, 316: 7 0 440 440 0 440 Matched=1,3,7,9,13,14,15,16,17, Success=7,9, 317: 7 0 441 441 0 441 Matched=1,4,5,7,10,11,13,14,15,16,17, Success=7,10,11, 318: 7 0 442 442 0 442 Matched=1,4,7,10,13,14,15,16,17, Success=7,10, 319: 7 0 443 443 0 443 Matched=1,5,7,11,13,14,15,16,17, Success=7,11, 320: 7 0 444 444 0 444 Matched=1,7,13,14,15,16,17, Success=7, 321: 7 0 445 445 0 445 Matched=2,3,4,5,8,9,10,11,13,14,15,16,17, Success=8,9,10,11, 322: 7 0 446 446 0 446 Matched=2,3,4,8,9,10,13,14,15,16,17, Success=8,9,10, 323: 7 0 447 447 0 447 Matched=2,3,5,8,9,11,13,14,15,16,17, Success=8,9,11, 324: 7 0 448 448 0 448 Matched=2,3,8,9,13,14,15,16,17, Success=8,9, 325: 7 0 449 449 0 449 Matched=2,4,5,8,10,11,13,14,15,16,17, Success=8,10,11, 326: 7 0 450 450 0 450 Matched=2,4,8,10,13,14,15,16,17, Success=8,10, 327: 7 0 451 451 0 451 Matched=2,5,8,11,13,14,15,16,17, Success=8,11, 328: 7 0 452 452 0 452 Matched=2,8,13,14,15,16,17, Success=8, 329: 7 0 453 453 0 453 Matched=3,4,5,9,10,11,13,14,15,16,17, Success=9,10,11, 330: 7 0 454 454 0 454 Matched=3,4,9,10,13,14,15,16,17, Success=9,10, 331: 7 0 455 455 0 455 Matched=3,5,9,11,13,14,15,16,17, Success=9,11, 332: 7 0 456 456 0 456 Matched=3,9,13,14,15,16,17, Success=9, 333: 7 0 457 457 0 457 Matched=4,5,10,11,13,14,15,16,17, Success=10,11, 334: 7 0 458 458 0 458 Matched=4,10,13,14,15,16,17, Success=10, 335: 7 0 459 459 0 459 Matched=5,11,13,14,15,16,17, Success=11, 336: 7 0 461 461 0 461 Matched=1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, Success=7,8,9,10,11, 337: 7 0 462 462 0 462 Matched=1,2,3,4,7,8,9,10,12,13,14,15,16,17, Success=7,8,9,10, 338: 7 0 463 463 0 463 Matched=1,2,3,5,7,8,9,11,12,13,14,15,16,17, Success=7,8,9,11, 339: 7 0 464 464 0 464 Matched=1,2,3,7,8,9,12,13,14,15,16,17, Success=7,8,9, 340: 7 0 465 465 0 465 Matched=1,2,4,5,7,8,10,11,12,13,14,15,16,17, Success=7,8,10,11, 341: 7 0 466 466 0 466 Matched=1,2,4,7,8,10,12,13,14,15,16,17, Success=7,8,10, 342: 7 0 467 467 0 467 Matched=1,2,5,7,8,11,12,13,14,15,16,17, Success=7,8,11, 343: 7 0 468 468 0 468 Matched=1,2,7,8,12,13,14,15,16,17, Success=7,8, 344: 7 0 469 469 0 469 Matched=1,3,4,5,7,9,10,11,12,13,14,15,16,17, Success=7,9,10,11, 345: 7 0 470 470 0 470 Matched=1,3,4,7,9,10,12,13,14,15,16,17, Success=7,9,10, 346: 7 0 471 471 0 471 Matched=1,3,5,7,9,11,12,13,14,15,16,17, Success=7,9,11, 347: 7 0 472 472 0 472 Matched=1,3,7,9,12,13,14,15,16,17, Success=7,9, 348: 7 0 473 473 0 473 Matched=1,4,5,7,10,11,12,13,14,15,16,17, Success=7,10,11, 349: 7 0 474 474 0 474 Matched=1,4,7,10,12,13,14,15,16,17, Success=7,10, 350: 7 0 475 475 0 475 Matched=1,5,7,11,12,13,14,15,16,17, Success=7,11, 351: 7 0 476 476 0 476 Matched=1,7,12,13,14,15,16,17, Success=7, 352: 7 0 477 477 0 477 Matched=2,3,4,5,8,9,10,11,12,13,14,15,16,17, Success=8,9,10,11, 353: 7 0 478 478 0 478 Matched=2,3,4,8,9,10,12,13,14,15,16,17, Success=8,9,10, 354: 7 0 479 479 0 479 Matched=2,3,5,8,9,11,12,13,14,15,16,17, Success=8,9,11, 355: 7 0 480 480 0 480 Matched=2,3,8,9,12,13,14,15,16,17, Success=8,9, 356: 7 0 481 481 0 481 Matched=2,4,5,8,10,11,12,13,14,15,16,17, Success=8,10,11, 357: 7 0 482 482 0 482 Matched=2,4,8,10,12,13,14,15,16,17, Success=8,10, 358: 7 0 483 483 0 483 Matched=2,5,8,11,12,13,14,15,16,17, Success=8,11, 359: 7 0 484 484 0 484 Matched=2,8,12,13,14,15,16,17, Success=8, 360: 7 0 485 485 0 485 Matched=3,4,5,9,10,11,12,13,14,15,16,17, Success=9,10,11, 361: 7 0 486 486 0 486 Matched=3,4,9,10,12,13,14,15,16,17, Success=9,10, 362: 7 0 487 487 0 487 Matched=3,5,9,11,12,13,14,15,16,17, Success=9,11, 363: 7 0 488 488 0 488 Matched=3,9,12,13,14,15,16,17, Success=9, 364: 7 0 489 489 0 489 Matched=4,5,10,11,12,13,14,15,16,17, Success=10,11, 365: 7 0 490 490 0 490 Matched=4,10,12,13,14,15,16,17, Success=10, 366: 7 0 491 491 0 491 Matched=5,11,12,13,14,15,16,17, Success=11, 367: 8 0 0 0 0 0 Matched=0,1,2,3,4,5,12,13,14,15,16,17, Success=0,1,2,3,4,5,12,13,14,15,16,17, 368: 8 0 0 0 0 0 Matched=0,1,2,3,4,12,13,14,15,16,17, Success=0,1,2,3,4,12,13,14,15,16,17, 369: 8 0 0 0 0 0 Matched=5,17, Success=5,17, 370: 8 0 0 0 0 0 Matched=17, Success=17, 371: 8 0 0 0 0 0 Matched=0,1,2,3,5,12,13,14,15,16,17, Success=0,1,2,3,5,12,13,14,15,16,17, 372: 8 0 0 0 0 0 Matched=0,1,2,3,12,13,14,15,16,17, Success=0,1,2,3,12,13,14,15,16,17, 373: 8 0 0 0 0 0 Matched=4,5,16,17, Success=4,5,16,17, 374: 8 0 0 0 0 0 Matched=4,16,17, Success=4,16,17, 375: 8 0 0 0 0 0 Matched=5,16,17, Success=5,16,17, 376: 8 0 0 0 0 0 Matched=16,17, Success=16,17, 377: 8 0 0 0 0 0 Matched=0,1,2,4,5,12,13,14,15,16,17, Success=0,1,2,4,5,12,13,14,15,16,17, 378: 8 0 0 0 0 0 Matched=0,1,2,4,12,13,14,15,16,17, Success=0,1,2,4,12,13,14,15,16,17, 379: 8 0 0 0 0 0 Matched=0,1,2,5,12,13,14,15,16,17, Success=0,1,2,5,12,13,14,15,16,17, 380: 8 0 0 0 0 0 Matched=0,1,2,12,13,14,15,16,17, Success=0,1,2,12,13,14,15,16,17, 381: 8 0 0 0 0 0 Matched=3,4,5,15,16,17, Success=3,4,5,15,16,17, 382: 8 0 0 0 0 0 Matched=3,4,15,16,17, Success=3,4,15,16,17, 383: 8 0 0 0 0 0 Matched=3,5,15,16,17, Success=3,5,15,16,17, 384: 8 0 0 0 0 0 Matched=3,15,16,17, Success=3,15,16,17, 385: 8 0 0 0 0 0 Matched=4,5,15,16,17, Success=4,5,15,16,17, 386: 8 0 0 0 0 0 Matched=4,15,16,17, Success=4,15,16,17, 387: 8 0 0 0 0 0 Matched=5,15,16,17, Success=5,15,16,17, 388: 8 0 0 0 0 0 Matched=15,16,17, Success=15,16,17, 389: 8 0 0 0 0 0 Matched=0,1,3,4,5,12,13,14,15,16,17, Success=0,1,3,4,5,12,13,14,15,16,17, 390: 8 0 0 0 0 0 Matched=0,1,3,4,12,13,14,15,16,17, Success=0,1,3,4,12,13,14,15,16,17, 391: 8 0 0 0 0 0 Matched=0,1,3,5,12,13,14,15,16,17, Success=0,1,3,5,12,13,14,15,16,17, 392: 8 0 0 0 0 0 Matched=0,1,3,12,13,14,15,16,17, Success=0,1,3,12,13,14,15,16,17, 393: 8 0 0 0 0 0 Matched=0,1,4,5,12,13,14,15,16,17, Success=0,1,4,5,12,13,14,15,16,17, 394: 8 0 0 0 0 0 Matched=0,1,4,12,13,14,15,16,17, Success=0,1,4,12,13,14,15,16,17, 395: 8 0 0 0 0 0 Matched=0,1,5,12,13,14,15,16,17, Success=0,1,5,12,13,14,15,16,17, 396: 8 0 0 0 0 0 Matched=0,1,12,13,14,15,16,17, Success=0,1,12,13,14,15,16,17, 397: 8 0 0 0 0 0 Matched=2,3,4,5,14,15,16,17, Success=2,3,4,5,14,15,16,17, 398: 8 0 0 0 0 0 Matched=2,3,4,14,15,16,17, Success=2,3,4,14,15,16,17, 399: 8 0 0 0 0 0 Matched=2,3,5,14,15,16,17, Success=2,3,5,14,15,16,17, 400: 8 0 0 0 0 0 Matched=2,3,14,15,16,17, Success=2,3,14,15,16,17, 401: 8 0 0 0 0 0 Matched=2,4,5,14,15,16,17, Success=2,4,5,14,15,16,17, 402: 8 0 0 0 0 0 Matched=2,4,14,15,16,17, Success=2,4,14,15,16,17, 403: 8 0 0 0 0 0 Matched=2,5,14,15,16,17, Success=2,5,14,15,16,17, 404: 8 0 0 0 0 0 Matched=2,14,15,16,17, Success=2,14,15,16,17, 405: 8 0 0 0 0 0 Matched=3,4,5,14,15,16,17, Success=3,4,5,14,15,16,17, 406: 8 0 0 0 0 0 Matched=3,4,14,15,16,17, Success=3,4,14,15,16,17, 407: 8 0 0 0 0 0 Matched=3,5,14,15,16,17, Success=3,5,14,15,16,17, 408: 8 0 0 0 0 0 Matched=3,14,15,16,17, Success=3,14,15,16,17, 409: 8 0 0 0 0 0 Matched=4,5,14,15,16,17, Success=4,5,14,15,16,17, 410: 8 0 0 0 0 0 Matched=4,14,15,16,17, Success=4,14,15,16,17, 411: 8 0 0 0 0 0 Matched=5,14,15,16,17, Success=5,14,15,16,17, 412: 8 0 0 0 0 0 Matched=14,15,16,17, Success=14,15,16,17, 413: 8 0 0 0 0 0 Matched=0,2,3,4,5,12,13,14,15,16,17, Success=0,2,3,4,5,12,13,14,15,16,17, 414: 8 0 0 0 0 0 Matched=0,2,3,4,12,13,14,15,16,17, Success=0,2,3,4,12,13,14,15,16,17, 415: 8 0 0 0 0 0 Matched=0,2,3,5,12,13,14,15,16,17, Success=0,2,3,5,12,13,14,15,16,17, 416: 8 0 0 0 0 0 Matched=0,2,3,12,13,14,15,16,17, Success=0,2,3,12,13,14,15,16,17, 417: 8 0 0 0 0 0 Matched=0,2,4,5,12,13,14,15,16,17, Success=0,2,4,5,12,13,14,15,16,17, 418: 8 0 0 0 0 0 Matched=0,2,4,12,13,14,15,16,17, Success=0,2,4,12,13,14,15,16,17, 419: 8 0 0 0 0 0 Matched=0,2,5,12,13,14,15,16,17, Success=0,2,5,12,13,14,15,16,17, 420: 8 0 0 0 0 0 Matched=0,2,12,13,14,15,16,17, Success=0,2,12,13,14,15,16,17, 421: 8 0 0 0 0 0 Matched=0,3,4,5,12,13,14,15,16,17, Success=0,3,4,5,12,13,14,15,16,17, 422: 8 0 0 0 0 0 Matched=0,3,4,12,13,14,15,16,17, Success=0,3,4,12,13,14,15,16,17, 423: 8 0 0 0 0 0 Matched=0,3,5,12,13,14,15,16,17, Success=0,3,5,12,13,14,15,16,17, 424: 8 0 0 0 0 0 Matched=0,3,12,13,14,15,16,17, Success=0,3,12,13,14,15,16,17, 425: 8 0 0 0 0 0 Matched=0,4,5,12,13,14,15,16,17, Success=0,4,5,12,13,14,15,16,17, 426: 8 0 0 0 0 0 Matched=0,4,12,13,14,15,16,17, Success=0,4,12,13,14,15,16,17, 427: 8 0 0 0 0 0 Matched=0,5,12,13,14,15,16,17, Success=0,5,12,13,14,15,16,17, 428: 8 0 0 0 0 0 Matched=0,12,13,14,15,16,17, Success=0,12,13,14,15,16,17, 429: 8 0 0 0 0 0 Matched=1,2,3,4,5,13,14,15,16,17, Success=1,2,3,4,5,13,14,15,16,17, 430: 8 0 0 0 0 0 Matched=1,2,3,4,13,14,15,16,17, Success=1,2,3,4,13,14,15,16,17, 431: 8 0 0 0 0 0 Matched=1,2,3,5,13,14,15,16,17, Success=1,2,3,5,13,14,15,16,17, 432: 8 0 0 0 0 0 Matched=1,2,3,13,14,15,16,17, Success=1,2,3,13,14,15,16,17, 433: 8 0 0 0 0 0 Matched=1,2,4,5,13,14,15,16,17, Success=1,2,4,5,13,14,15,16,17, 434: 8 0 0 0 0 0 Matched=1,2,4,13,14,15,16,17, Success=1,2,4,13,14,15,16,17, 435: 8 0 0 0 0 0 Matched=1,2,5,13,14,15,16,17, Success=1,2,5,13,14,15,16,17, 436: 8 0 0 0 0 0 Matched=1,2,13,14,15,16,17, Success=1,2,13,14,15,16,17, 437: 8 0 0 0 0 0 Matched=1,3,4,5,13,14,15,16,17, Success=1,3,4,5,13,14,15,16,17, 438: 8 0 0 0 0 0 Matched=1,3,4,13,14,15,16,17, Success=1,3,4,13,14,15,16,17, 439: 8 0 0 0 0 0 Matched=1,3,5,13,14,15,16,17, Success=1,3,5,13,14,15,16,17, 440: 8 0 0 0 0 0 Matched=1,3,13,14,15,16,17, Success=1,3,13,14,15,16,17, 441: 8 0 0 0 0 0 Matched=1,4,5,13,14,15,16,17, Success=1,4,5,13,14,15,16,17, 442: 8 0 0 0 0 0 Matched=1,4,13,14,15,16,17, Success=1,4,13,14,15,16,17, 443: 8 0 0 0 0 0 Matched=1,5,13,14,15,16,17, Success=1,5,13,14,15,16,17, 444: 8 0 0 0 0 0 Matched=1,13,14,15,16,17, Success=1,13,14,15,16,17, 445: 8 0 0 0 0 0 Matched=2,3,4,5,13,14,15,16,17, Success=2,3,4,5,13,14,15,16,17, 446: 8 0 0 0 0 0 Matched=2,3,4,13,14,15,16,17, Success=2,3,4,13,14,15,16,17, 447: 8 0 0 0 0 0 Matched=2,3,5,13,14,15,16,17, Success=2,3,5,13,14,15,16,17, 448: 8 0 0 0 0 0 Matched=2,3,13,14,15,16,17, Success=2,3,13,14,15,16,17, 449: 8 0 0 0 0 0 Matched=2,4,5,13,14,15,16,17, Success=2,4,5,13,14,15,16,17, 450: 8 0 0 0 0 0 Matched=2,4,13,14,15,16,17, Success=2,4,13,14,15,16,17, 451: 8 0 0 0 0 0 Matched=2,5,13,14,15,16,17, Success=2,5,13,14,15,16,17, 452: 8 0 0 0 0 0 Matched=2,13,14,15,16,17, Success=2,13,14,15,16,17, 453: 8 0 0 0 0 0 Matched=3,4,5,13,14,15,16,17, Success=3,4,5,13,14,15,16,17, 454: 8 0 0 0 0 0 Matched=3,4,13,14,15,16,17, Success=3,4,13,14,15,16,17, 455: 8 0 0 0 0 0 Matched=3,5,13,14,15,16,17, Success=3,5,13,14,15,16,17, 456: 8 0 0 0 0 0 Matched=3,13,14,15,16,17, Success=3,13,14,15,16,17, 457: 8 0 0 0 0 0 Matched=4,5,13,14,15,16,17, Success=4,5,13,14,15,16,17, 458: 8 0 0 0 0 0 Matched=4,13,14,15,16,17, Success=4,13,14,15,16,17, 459: 8 0 0 0 0 0 Matched=5,13,14,15,16,17, Success=5,13,14,15,16,17, 460: 8 0 0 0 0 0 Matched=13,14,15,16,17, Success=13,14,15,16,17, 461: 8 0 0 0 0 0 Matched=1,2,3,4,5,12,13,14,15,16,17, Success=1,2,3,4,5,12,13,14,15,16,17, 462: 8 0 0 0 0 0 Matched=1,2,3,4,12,13,14,15,16,17, Success=1,2,3,4,12,13,14,15,16,17, 463: 8 0 0 0 0 0 Matched=1,2,3,5,12,13,14,15,16,17, Success=1,2,3,5,12,13,14,15,16,17, 464: 8 0 0 0 0 0 Matched=1,2,3,12,13,14,15,16,17, Success=1,2,3,12,13,14,15,16,17, 465: 8 0 0 0 0 0 Matched=1,2,4,5,12,13,14,15,16,17, Success=1,2,4,5,12,13,14,15,16,17, 466: 8 0 0 0 0 0 Matched=1,2,4,12,13,14,15,16,17, Success=1,2,4,12,13,14,15,16,17, 467: 8 0 0 0 0 0 Matched=1,2,5,12,13,14,15,16,17, Success=1,2,5,12,13,14,15,16,17, 468: 8 0 0 0 0 0 Matched=1,2,12,13,14,15,16,17, Success=1,2,12,13,14,15,16,17, 469: 8 0 0 0 0 0 Matched=1,3,4,5,12,13,14,15,16,17, Success=1,3,4,5,12,13,14,15,16,17, 470: 8 0 0 0 0 0 Matched=1,3,4,12,13,14,15,16,17, Success=1,3,4,12,13,14,15,16,17, 471: 8 0 0 0 0 0 Matched=1,3,5,12,13,14,15,16,17, Success=1,3,5,12,13,14,15,16,17, 472: 8 0 0 0 0 0 Matched=1,3,12,13,14,15,16,17, Success=1,3,12,13,14,15,16,17, 473: 8 0 0 0 0 0 Matched=1,4,5,12,13,14,15,16,17, Success=1,4,5,12,13,14,15,16,17, 474: 8 0 0 0 0 0 Matched=1,4,12,13,14,15,16,17, Success=1,4,12,13,14,15,16,17, 475: 8 0 0 0 0 0 Matched=1,5,12,13,14,15,16,17, Success=1,5,12,13,14,15,16,17, 476: 8 0 0 0 0 0 Matched=1,12,13,14,15,16,17, Success=1,12,13,14,15,16,17, 477: 8 0 0 0 0 0 Matched=2,3,4,5,12,13,14,15,16,17, Success=2,3,4,5,12,13,14,15,16,17, 478: 8 0 0 0 0 0 Matched=2,3,4,12,13,14,15,16,17, Success=2,3,4,12,13,14,15,16,17, 479: 8 0 0 0 0 0 Matched=2,3,5,12,13,14,15,16,17, Success=2,3,5,12,13,14,15,16,17, 480: 8 0 0 0 0 0 Matched=2,3,12,13,14,15,16,17, Success=2,3,12,13,14,15,16,17, 481: 8 0 0 0 0 0 Matched=2,4,5,12,13,14,15,16,17, Success=2,4,5,12,13,14,15,16,17, 482: 8 0 0 0 0 0 Matched=2,4,12,13,14,15,16,17, Success=2,4,12,13,14,15,16,17, 483: 8 0 0 0 0 0 Matched=2,5,12,13,14,15,16,17, Success=2,5,12,13,14,15,16,17, 484: 8 0 0 0 0 0 Matched=2,12,13,14,15,16,17, Success=2,12,13,14,15,16,17, 485: 8 0 0 0 0 0 Matched=3,4,5,12,13,14,15,16,17, Success=3,4,5,12,13,14,15,16,17, 486: 8 0 0 0 0 0 Matched=3,4,12,13,14,15,16,17, Success=3,4,12,13,14,15,16,17, 487: 8 0 0 0 0 0 Matched=3,5,12,13,14,15,16,17, Success=3,5,12,13,14,15,16,17, 488: 8 0 0 0 0 0 Matched=3,12,13,14,15,16,17, Success=3,12,13,14,15,16,17, 489: 8 0 0 0 0 0 Matched=4,5,12,13,14,15,16,17, Success=4,5,12,13,14,15,16,17, 490: 8 0 0 0 0 0 Matched=4,12,13,14,15,16,17, Success=4,12,13,14,15,16,17, 491: 8 0 0 0 0 0 Matched=5,12,13,14,15,16,17, Success=5,12,13,14,15,16,17, 492: 8 0 0 0 0 0 Matched=12,13,14,15,16,17, Success=12,13,14,15,16,17, - - - - - - - - - - - - - - - RULE 4.0, CharisRules.gdh(668): cUDblDia { shift.y = ((@1.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesUDia cDia cDia cDia cDia cDia _ cTakesUDia ; RULE 4.1, CharisRules.gdh(668): cUDblDia { shift.y = ((@2.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesUDia cDia cDia cDia cDia _ cTakesUDia ; RULE 4.2, CharisRules.gdh(668): cUDblDia { shift.y = ((@3.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesUDia cDia cDia cDia _ cTakesUDia ; RULE 4.3, CharisRules.gdh(668): cUDblDia { shift.y = ((@4.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesUDia cDia cDia _ cTakesUDia ; RULE 4.4, CharisRules.gdh(668): cUDblDia { shift.y = ((@5.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesUDia cDia _ cTakesUDia ; RULE 4.5, CharisRules.gdh(668): cUDblDia { shift.y = ((@6.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesUDia _ cTakesUDia ; RULE 4.6, CharisRules.gdh(672): cUDblDia { shift.y = (@1.bb.top - @7.bb.bottom) + 205; insert = 1; } / cTakesUDia cDia cDia cDia cDia cDia _ ; RULE 4.7, CharisRules.gdh(672): cUDblDia { shift.y = (@2.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY cTakesUDia cDia cDia cDia cDia _ ; RULE 4.8, CharisRules.gdh(672): cUDblDia { shift.y = (@3.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY cTakesUDia cDia cDia cDia _ ; RULE 4.9, CharisRules.gdh(672): cUDblDia { shift.y = (@4.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY cTakesUDia cDia cDia _ ; RULE 4.10, CharisRules.gdh(672): cUDblDia { shift.y = (@5.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY cTakesUDia cDia _ ; RULE 4.11, CharisRules.gdh(672): cUDblDia { shift.y = (@6.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY cTakesUDia _ ; RULE 4.12, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY cDia cDia cDia cDia cDia _ cTakesUDia ; RULE 4.13, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY cDia cDia cDia cDia _ cTakesUDia ; RULE 4.14, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY cDia cDia cDia _ cTakesUDia ; RULE 4.15, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY cDia cDia _ cTakesUDia ; RULE 4.16, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY cDia _ cTakesUDia ; RULE 4.17, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY ANY _ cTakesUDia ; PASS: 5 Glyph ID => Column: 0 .. 2 => 0 3 => 1 4 .. 18 => 0 19 .. 28 => 1 29 .. 35 => 0 36 .. 61 => 1 62 .. 67 => 0 68 .. 93 => 1 94 .. 97 => 0 98 .. 129 => 1 130 .. 136 => 0 137 => 1 138 .. 143 => 0 144 .. 145 => 1 146 .. 152 => 0 153 => 1 154 => 0 155 => 1 156 .. 159 => 0 160 .. 161 => 1 162 .. 165 => 0 166 => 1 167 .. 171 => 0 172 .. 177 => 1 178 .. 185 => 0 186 .. 187 => 1 188 .. 198 => 0 199 .. 215 => 1 216 .. 221 => 0 222 => 1 223 => 0 224 => 1 225 => 0 226 .. 229 => 1 230 => 2 231 .. 357 => 1 358 => 0 359 .. 405 => 1 406 => 0 407 => 1 408 => 2 409 .. 415 => 1 416 => 0 417 .. 433 => 1 434 => 0 435 .. 443 => 1 444 .. 448 => 0 449 .. 452 => 1 453 => 0 454 .. 458 => 1 459 => 0 460 => 1 461 => 2 462 .. 470 => 1 471 => 0 472 .. 488 => 1 489 => 0 490 .. 510 => 1 511 .. 515 => 0 516 .. 518 => 1 519 => 2 520 .. 632 => 1 633 .. 645 => 0 646 .. 659 => 1 660 => 0 661 .. 708 => 1 709 => 0 710 .. 711 => 1 712 => 2 713 .. 784 => 1 785 => 0 786 .. 787 => 1 788 => 2 789 .. 819 => 1 820 .. 823 => 0 824 .. 830 => 1 831 => 0 832 .. 852 => 1 853 .. 856 => 0 857 .. 926 => 1 927 => 0 928 .. 939 => 1 940 => 0 941 .. 964 => 1 965 .. 967 => 0 968 .. 986 => 1 987 => 0 988 => 1 989 => 2 990 .. 994 => 1 995 => 0 996 ..1005 => 1 1006 => 0 1007 ..1014 => 1 1015 => 0 1016 ..1053 => 1 1054 => 0 1055 ..1065 => 1 1066 => 0 1067 ..1075 => 1 1076 => 2 1077 ..1113 => 1 1114 => 0 1115 ..1116 => 1 1117 ..1118 => 0 1119 ..1174 => 1 1175 => 0 1176 ..1192 => 1 1193 => 0 1194 ..1212 => 1 1213 => 0 1214 ..1222 => 1 1223 ..1224 => 0 1225 ..1226 => 1 1227 => 0 1228 ..1235 => 1 1236 => 3 1237 => 1 1238 => 2 1239 ..1277 => 1 1278 ..1279 => 0 1280 ..1322 => 1 1323 => 0 1324 => 1 1325 => 2 1326 ..1363 => 1 1364 => 0 1365 ..1375 => 1 1376 => 2 1377 ..1452 => 1 1453 => 0 1454 ..1455 => 1 1456 => 2 1457 ..1462 => 1 1463 ..1465 => 0 1466 ..1476 => 1 1477 => 0 1478 ..1480 => 1 1481 ..1484 => 0 1485 ..1508 => 1 1509 => 0 1510 => 1 1511 => 0 1512 ..1513 => 1 1514 => 2 1515 ..1520 => 1 1521 ..1522 => 0 1523 ..1526 => 1 1527 => 0 1528 ..1532 => 1 1533 ..1534 => 0 1535 ..1630 => 1 1631 => 0 1632 ..1652 => 1 1653 ..1654 => 0 1655 => 1 1656 => 0 1657 => 1 1658 => 0 1659 ..1660 => 1 1661 => 0 1662 => 1 1663 => 0 1664 => 1 1665 ..1666 => 0 1667 ..1669 => 1 1670 => 0 1671 => 1 1672 => 0 1673 => 1 1674 => 0 1675 => 1 1676 => 0 1677 => 1 1678 ..1693 => 0 1694 => 1 1695 ..1707 => 0 1708 => 2 1709 ..1710 => 0 1711 => 2 1712 ..1730 => 0 1731 ..1733 => 1 1734 ..1748 => 0 1749 => 3 1750 ..1752 => 0 1753 => 3 1754 => 0 1755 => 2 1756 ..1760 => 0 1761 => 2 1762 ..1763 => 0 1764 => 1 1765 => 3 1766 ..1767 => 0 1768 => 2 1769 ..1771 => 0 1772 => 2 1773 ..1774 => 0 1775 => 3 1776 => 0 1777 ..1781 => 2 1782 => 3 1783 ..1787 => 2 1788 ..1791 => 0 1792 => 3 1793 ..1799 => 2 1800 => 0 1801 => 4 1802 => 0 1803 => 1 1804 => 3 1805 ..1811 => 2 1812 => 0 1813 => 3 1814 => 0 1815 ..1816 => 2 1817 ..1818 => 0 1819 => 2 1820 => 3 1821 => 2 1822 ..1824 => 0 1825 ..1826 => 2 1827 ..1828 => 3 1829 => 0 1830 => 2 1831 => 0 1832 ..1833 => 3 1834 => 0 1835 ..1836 => 3 1837 => 0 1838 ..1839 => 2 1840 => 5 1841 => 0 1842 => 3 1843 => 2 1844 => 0 1845 ..1846 => 3 1847 => 2 1848 ..1853 => 0 1854 => 3 1855 ..1859 => 2 1860 => 0 1861 => 3 1862 ..1863 => 2 1864 => 3 1865 ..1867 => 2 1868 => 0 1869 => 3 1870 => 2 1871 ..1872 => 3 1873 => 0 1874 => 1 1875 => 2 1876 => 3 1877 => 0 1878 => 1 1879 ..1880 => 2 1881 => 3 1882 => 2 1883 => 3 1884 => 2 1885 => 0 1886 => 3 1887 ..1888 => 0 1889 => 3 1890 => 0 1891 => 3 1892 => 0 1893 ..1894 => 3 1895 ..1896 => 0 1897 => 3 1898 ..1910 => 0 1911 => 1 1912 ..1914 => 3 1915 => 0 1916 ..1917 => 3 1918 => 2 1919 => 3 1920 => 0 1921 => 3 1922 ..1923 => 2 1924 ..2492 => 0 2493 => 3 2494 ..2496 => 0 2497 ..2498 => 3 2499 ..2500 => 0 2501 ..2502 => 3 2503 => 4 2504 => 0 2505 => 3 2506 ..2524 => 0 2525 => 2 2526 => 3 2527 ..2528 => 0 2529 => 2 2530 => 3 2531 => 0 2532 ..2533 => 3 2534 ..2574 => 0 2575 => 3 2576 ..2618 => 0 2619 ..2630 => 1 2631 ..2687 => 0 Final Table: 0 1 2 3 4 5 - - - - - - - - - - - - - - - - - - 0: 0 2 1 2 1 1 1 Matched=none Success=none 1: 1 6 5 4 3 5 5 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=none 2: 1 6 5 8 7 5 5 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=none 3: 2 12 11 10 9 11 11 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=none 4: 2 12 11 14 13 11 11 Matched=0,2,3,4,5,6,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23, Success=none 5: 2 12 11 16 15 11 11 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,19,20,21,22,23, Success=none 6: 2 12 11 18 17 11 11 Matched=2,3,4,5,8,9,10,11,14,15,16,17,19,20,21,22,23, Success=none 7: 2 12 11 20 19 11 11 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=none 8: 2 12 11 22 21 11 11 Matched=2,3,4,5,8,9,10,11,14,15,16,17,18,19,20,21,22,23, Success=none 9: 3 26 25 24 23 25 25 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=none 10: 3 26 25 28 27 25 25 Matched=0,1,3,4,5,6,7,9,10,11,12,13,15,16,17,18,19,20,21,22,23, Success=none 11: 3 26 25 30 29 25 25 Matched=2,3,4,5,8,9,10,11,14,15,16,17,20,21,22,23, Success=none 12: 3 26 25 32 31 25 25 Matched=3,4,5,9,10,11,15,16,17,20,21,22,23, Success=none 13: 3 26 25 34 33 25 25 Matched=0,2,3,4,5,6,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23, Success=none 14: 3 26 25 36 35 25 25 Matched=0,3,4,5,6,9,10,11,12,15,16,17,18,19,20,21,22,23, Success=none 15: 3 26 25 38 37 25 25 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,19,20,21,22,23, Success=none 16: 3 26 25 40 39 25 25 Matched=1,3,4,5,7,9,10,11,13,15,16,17,19,20,21,22,23, Success=none 17: 3 26 25 42 41 25 25 Matched=2,3,4,5,8,9,10,11,14,15,16,17,19,20,21,22,23, Success=none 18: 3 26 25 44 43 25 25 Matched=3,4,5,9,10,11,15,16,17,19,20,21,22,23, Success=none 19: 3 26 25 46 45 25 25 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=none 20: 3 26 25 48 47 25 25 Matched=1,3,4,5,7,9,10,11,13,15,16,17,18,19,20,21,22,23, Success=none 21: 3 26 25 50 49 25 25 Matched=2,3,4,5,8,9,10,11,14,15,16,17,18,19,20,21,22,23, Success=none 22: 3 26 25 52 51 25 25 Matched=3,4,5,9,10,11,15,16,17,18,19,20,21,22,23, Success=none 23: 4 56 55 54 53 55 55 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=none 24: 4 56 55 58 57 55 55 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,16,17,18,19,20,21,22,23, Success=none 25: 4 56 55 60 59 55 55 Matched=3,4,5,9,10,11,15,16,17,21,22,23, Success=none 26: 4 56 55 62 61 55 55 Matched=4,5,10,11,16,17,21,22,23, Success=none 27: 4 56 55 64 63 55 55 Matched=0,1,3,4,5,6,7,9,10,11,12,13,15,16,17,18,19,20,21,22,23, Success=none 28: 4 56 55 66 65 55 55 Matched=0,1,4,5,6,7,10,11,12,13,16,17,18,19,20,21,22,23, Success=none 29: 4 56 55 68 67 55 55 Matched=2,3,4,5,8,9,10,11,14,15,16,17,20,21,22,23, Success=none 30: 4 56 55 70 69 55 55 Matched=2,4,5,8,10,11,14,16,17,20,21,22,23, Success=none 31: 4 56 55 72 71 55 55 Matched=3,4,5,9,10,11,15,16,17,20,21,22,23, Success=none 32: 4 56 55 74 73 55 55 Matched=4,5,10,11,16,17,20,21,22,23, Success=none 33: 4 56 55 76 75 55 55 Matched=0,2,3,4,5,6,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23, Success=none 34: 4 56 55 78 77 55 55 Matched=0,2,4,5,6,8,10,11,12,14,16,17,18,19,20,21,22,23, Success=none 35: 4 56 55 80 79 55 55 Matched=0,3,4,5,6,9,10,11,12,15,16,17,18,19,20,21,22,23, Success=none 36: 4 56 55 82 81 55 55 Matched=0,4,5,6,10,11,12,16,17,18,19,20,21,22,23, Success=none 37: 4 56 55 84 83 55 55 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,19,20,21,22,23, Success=none 38: 4 56 55 86 85 55 55 Matched=1,2,4,5,7,8,10,11,13,14,16,17,19,20,21,22,23, Success=none 39: 4 56 55 88 87 55 55 Matched=1,3,4,5,7,9,10,11,13,15,16,17,19,20,21,22,23, Success=none 40: 4 56 55 90 89 55 55 Matched=1,4,5,7,10,11,13,16,17,19,20,21,22,23, Success=none 41: 4 56 55 92 91 55 55 Matched=2,3,4,5,8,9,10,11,14,15,16,17,19,20,21,22,23, Success=none 42: 4 56 55 94 93 55 55 Matched=2,4,5,8,10,11,14,16,17,19,20,21,22,23, Success=none 43: 4 56 55 96 95 55 55 Matched=3,4,5,9,10,11,15,16,17,19,20,21,22,23, Success=none 44: 4 56 55 98 97 55 55 Matched=4,5,10,11,16,17,19,20,21,22,23, Success=none 45: 4 56 55 100 99 55 55 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=none 46: 4 56 55 102 101 55 55 Matched=1,2,4,5,7,8,10,11,13,14,16,17,18,19,20,21,22,23, Success=none 47: 4 56 55 104 103 55 55 Matched=1,3,4,5,7,9,10,11,13,15,16,17,18,19,20,21,22,23, Success=none 48: 4 56 55 106 105 55 55 Matched=1,4,5,7,10,11,13,16,17,18,19,20,21,22,23, Success=none 49: 4 56 55 108 107 55 55 Matched=2,3,4,5,8,9,10,11,14,15,16,17,18,19,20,21,22,23, Success=none 50: 4 56 55 110 109 55 55 Matched=2,4,5,8,10,11,14,16,17,18,19,20,21,22,23, Success=none 51: 4 56 55 112 111 55 55 Matched=3,4,5,9,10,11,15,16,17,18,19,20,21,22,23, Success=none 52: 4 56 55 114 113 55 55 Matched=4,5,10,11,16,17,18,19,20,21,22,23, Success=none 53: 5 118 117 116 115 117 117 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=none 54: 5 118 117 120 119 117 117 Matched=0,1,2,3,5,6,7,8,9,11,12,13,14,15,17,18,19,20,21,22,23, Success=none 55: 5 118 117 122 121 117 117 Matched=4,5,10,11,16,17,22,23, Success=none 56: 5 118 117 124 123 117 117 Matched=5,11,17,22,23, Success=none 57: 5 118 117 126 125 117 117 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,16,17,18,19,20,21,22,23, Success=none 58: 5 118 117 128 127 117 117 Matched=0,1,2,5,6,7,8,11,12,13,14,17,18,19,20,21,22,23, Success=none 59: 5 118 117 130 129 117 117 Matched=3,4,5,9,10,11,15,16,17,21,22,23, Success=none 60: 5 118 117 132 131 117 117 Matched=3,5,9,11,15,17,21,22,23, Success=none 61: 5 118 117 134 133 117 117 Matched=4,5,10,11,16,17,21,22,23, Success=none 62: 5 118 117 136 135 117 117 Matched=5,11,17,21,22,23, Success=none 63: 5 118 117 138 137 117 117 Matched=0,1,3,4,5,6,7,9,10,11,12,13,15,16,17,18,19,20,21,22,23, Success=none 64: 5 118 117 140 139 117 117 Matched=0,1,3,5,6,7,9,11,12,13,15,17,18,19,20,21,22,23, Success=none 65: 5 118 117 142 141 117 117 Matched=0,1,4,5,6,7,10,11,12,13,16,17,18,19,20,21,22,23, Success=none 66: 5 118 117 144 143 117 117 Matched=0,1,5,6,7,11,12,13,17,18,19,20,21,22,23, Success=none 67: 5 118 117 146 145 117 117 Matched=2,3,4,5,8,9,10,11,14,15,16,17,20,21,22,23, Success=none 68: 5 118 117 148 147 117 117 Matched=2,3,5,8,9,11,14,15,17,20,21,22,23, Success=none 69: 5 118 117 150 149 117 117 Matched=2,4,5,8,10,11,14,16,17,20,21,22,23, Success=none 70: 5 118 117 152 151 117 117 Matched=2,5,8,11,14,17,20,21,22,23, Success=none 71: 5 118 117 154 153 117 117 Matched=3,4,5,9,10,11,15,16,17,20,21,22,23, Success=none 72: 5 118 117 156 155 117 117 Matched=3,5,9,11,15,17,20,21,22,23, Success=none 73: 5 118 117 158 157 117 117 Matched=4,5,10,11,16,17,20,21,22,23, Success=none 74: 5 118 117 160 159 117 117 Matched=5,11,17,20,21,22,23, Success=none 75: 5 118 117 162 161 117 117 Matched=0,2,3,4,5,6,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23, Success=none 76: 5 118 117 164 163 117 117 Matched=0,2,3,5,6,8,9,11,12,14,15,17,18,19,20,21,22,23, Success=none 77: 5 118 117 166 165 117 117 Matched=0,2,4,5,6,8,10,11,12,14,16,17,18,19,20,21,22,23, Success=none 78: 5 118 117 168 167 117 117 Matched=0,2,5,6,8,11,12,14,17,18,19,20,21,22,23, Success=none 79: 5 118 117 170 169 117 117 Matched=0,3,4,5,6,9,10,11,12,15,16,17,18,19,20,21,22,23, Success=none 80: 5 118 117 172 171 117 117 Matched=0,3,5,6,9,11,12,15,17,18,19,20,21,22,23, Success=none 81: 5 118 117 174 173 117 117 Matched=0,4,5,6,10,11,12,16,17,18,19,20,21,22,23, Success=none 82: 5 118 117 176 175 117 117 Matched=0,5,6,11,12,17,18,19,20,21,22,23, Success=none 83: 5 118 117 178 177 117 117 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,19,20,21,22,23, Success=none 84: 5 118 117 180 179 117 117 Matched=1,2,3,5,7,8,9,11,13,14,15,17,19,20,21,22,23, Success=none 85: 5 118 117 182 181 117 117 Matched=1,2,4,5,7,8,10,11,13,14,16,17,19,20,21,22,23, Success=none 86: 5 118 117 184 183 117 117 Matched=1,2,5,7,8,11,13,14,17,19,20,21,22,23, Success=none 87: 5 118 117 186 185 117 117 Matched=1,3,4,5,7,9,10,11,13,15,16,17,19,20,21,22,23, Success=none 88: 5 118 117 188 187 117 117 Matched=1,3,5,7,9,11,13,15,17,19,20,21,22,23, Success=none 89: 5 118 117 190 189 117 117 Matched=1,4,5,7,10,11,13,16,17,19,20,21,22,23, Success=none 90: 5 118 117 192 191 117 117 Matched=1,5,7,11,13,17,19,20,21,22,23, Success=none 91: 5 118 117 194 193 117 117 Matched=2,3,4,5,8,9,10,11,14,15,16,17,19,20,21,22,23, Success=none 92: 5 118 117 196 195 117 117 Matched=2,3,5,8,9,11,14,15,17,19,20,21,22,23, Success=none 93: 5 118 117 198 197 117 117 Matched=2,4,5,8,10,11,14,16,17,19,20,21,22,23, Success=none 94: 5 118 117 200 199 117 117 Matched=2,5,8,11,14,17,19,20,21,22,23, Success=none 95: 5 118 117 202 201 117 117 Matched=3,4,5,9,10,11,15,16,17,19,20,21,22,23, Success=none 96: 5 118 117 204 203 117 117 Matched=3,5,9,11,15,17,19,20,21,22,23, Success=none 97: 5 118 117 206 205 117 117 Matched=4,5,10,11,16,17,19,20,21,22,23, Success=none 98: 5 118 117 208 207 117 117 Matched=5,11,17,19,20,21,22,23, Success=none 99: 5 118 117 210 209 117 117 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=none 100: 5 118 117 212 211 117 117 Matched=1,2,3,5,7,8,9,11,13,14,15,17,18,19,20,21,22,23, Success=none 101: 5 118 117 214 213 117 117 Matched=1,2,4,5,7,8,10,11,13,14,16,17,18,19,20,21,22,23, Success=none 102: 5 118 117 216 215 117 117 Matched=1,2,5,7,8,11,13,14,17,18,19,20,21,22,23, Success=none 103: 5 118 117 218 217 117 117 Matched=1,3,4,5,7,9,10,11,13,15,16,17,18,19,20,21,22,23, Success=none 104: 5 118 117 220 219 117 117 Matched=1,3,5,7,9,11,13,15,17,18,19,20,21,22,23, Success=none 105: 5 118 117 222 221 117 117 Matched=1,4,5,7,10,11,13,16,17,18,19,20,21,22,23, Success=none 106: 5 118 117 224 223 117 117 Matched=1,5,7,11,13,17,18,19,20,21,22,23, Success=none 107: 5 118 117 226 225 117 117 Matched=2,3,4,5,8,9,10,11,14,15,16,17,18,19,20,21,22,23, Success=none 108: 5 118 117 228 227 117 117 Matched=2,3,5,8,9,11,14,15,17,18,19,20,21,22,23, Success=none 109: 5 118 117 230 229 117 117 Matched=2,4,5,8,10,11,14,16,17,18,19,20,21,22,23, Success=none 110: 5 118 117 232 231 117 117 Matched=2,5,8,11,14,17,18,19,20,21,22,23, Success=none 111: 5 118 117 234 233 117 117 Matched=3,4,5,9,10,11,15,16,17,18,19,20,21,22,23, Success=none 112: 5 118 117 236 235 117 117 Matched=3,5,9,11,15,17,18,19,20,21,22,23, Success=none 113: 5 118 117 238 237 117 117 Matched=4,5,10,11,16,17,18,19,20,21,22,23, Success=none 114: 5 118 117 240 239 117 117 Matched=5,11,17,18,19,20,21,22,23, Success=none 115: 6 0 0 0 0 248 247 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=none 116: 6 0 0 0 0 250 249 Matched=0,1,2,3,4,6,7,8,9,10,12,13,14,15,16,18,19,20,21,22,23, Success=none 117: 6 0 0 0 0 252 251 Matched=5,11,17,23, Success=none 118: 6 0 0 0 0 241 241 Matched=23, Success=none 119: 6 0 0 0 0 254 253 Matched=0,1,2,3,5,6,7,8,9,11,12,13,14,15,17,18,19,20,21,22,23, Success=none 120: 6 0 0 0 0 256 255 Matched=0,1,2,3,6,7,8,9,12,13,14,15,18,19,20,21,22,23, Success=none 121: 6 0 0 0 0 258 257 Matched=4,5,10,11,16,17,22,23, Success=none 122: 6 0 0 0 0 260 259 Matched=4,10,16,22,23, Success=none 123: 6 0 0 0 0 262 261 Matched=5,11,17,22,23, Success=none 124: 6 0 0 0 0 242 242 Matched=22,23, Success=none 125: 6 0 0 0 0 264 263 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,16,17,18,19,20,21,22,23, Success=none 126: 6 0 0 0 0 266 265 Matched=0,1,2,4,6,7,8,10,12,13,14,16,18,19,20,21,22,23, Success=none 127: 6 0 0 0 0 268 267 Matched=0,1,2,5,6,7,8,11,12,13,14,17,18,19,20,21,22,23, Success=none 128: 6 0 0 0 0 270 269 Matched=0,1,2,6,7,8,12,13,14,18,19,20,21,22,23, Success=none 129: 6 0 0 0 0 272 271 Matched=3,4,5,9,10,11,15,16,17,21,22,23, Success=none 130: 6 0 0 0 0 274 273 Matched=3,4,9,10,15,16,21,22,23, Success=none 131: 6 0 0 0 0 276 275 Matched=3,5,9,11,15,17,21,22,23, Success=none 132: 6 0 0 0 0 278 277 Matched=3,9,15,21,22,23, Success=none 133: 6 0 0 0 0 280 279 Matched=4,5,10,11,16,17,21,22,23, Success=none 134: 6 0 0 0 0 282 281 Matched=4,10,16,21,22,23, Success=none 135: 6 0 0 0 0 284 283 Matched=5,11,17,21,22,23, Success=none 136: 6 0 0 0 0 243 243 Matched=21,22,23, Success=none 137: 6 0 0 0 0 286 285 Matched=0,1,3,4,5,6,7,9,10,11,12,13,15,16,17,18,19,20,21,22,23, Success=none 138: 6 0 0 0 0 288 287 Matched=0,1,3,4,6,7,9,10,12,13,15,16,18,19,20,21,22,23, Success=none 139: 6 0 0 0 0 290 289 Matched=0,1,3,5,6,7,9,11,12,13,15,17,18,19,20,21,22,23, Success=none 140: 6 0 0 0 0 292 291 Matched=0,1,3,6,7,9,12,13,15,18,19,20,21,22,23, Success=none 141: 6 0 0 0 0 294 293 Matched=0,1,4,5,6,7,10,11,12,13,16,17,18,19,20,21,22,23, Success=none 142: 6 0 0 0 0 296 295 Matched=0,1,4,6,7,10,12,13,16,18,19,20,21,22,23, Success=none 143: 6 0 0 0 0 298 297 Matched=0,1,5,6,7,11,12,13,17,18,19,20,21,22,23, Success=none 144: 6 0 0 0 0 300 299 Matched=0,1,6,7,12,13,18,19,20,21,22,23, Success=none 145: 6 0 0 0 0 302 301 Matched=2,3,4,5,8,9,10,11,14,15,16,17,20,21,22,23, Success=none 146: 6 0 0 0 0 304 303 Matched=2,3,4,8,9,10,14,15,16,20,21,22,23, Success=none 147: 6 0 0 0 0 306 305 Matched=2,3,5,8,9,11,14,15,17,20,21,22,23, Success=none 148: 6 0 0 0 0 308 307 Matched=2,3,8,9,14,15,20,21,22,23, Success=none 149: 6 0 0 0 0 310 309 Matched=2,4,5,8,10,11,14,16,17,20,21,22,23, Success=none 150: 6 0 0 0 0 312 311 Matched=2,4,8,10,14,16,20,21,22,23, Success=none 151: 6 0 0 0 0 314 313 Matched=2,5,8,11,14,17,20,21,22,23, Success=none 152: 6 0 0 0 0 316 315 Matched=2,8,14,20,21,22,23, Success=none 153: 6 0 0 0 0 318 317 Matched=3,4,5,9,10,11,15,16,17,20,21,22,23, Success=none 154: 6 0 0 0 0 320 319 Matched=3,4,9,10,15,16,20,21,22,23, Success=none 155: 6 0 0 0 0 322 321 Matched=3,5,9,11,15,17,20,21,22,23, Success=none 156: 6 0 0 0 0 324 323 Matched=3,9,15,20,21,22,23, Success=none 157: 6 0 0 0 0 326 325 Matched=4,5,10,11,16,17,20,21,22,23, Success=none 158: 6 0 0 0 0 328 327 Matched=4,10,16,20,21,22,23, Success=none 159: 6 0 0 0 0 330 329 Matched=5,11,17,20,21,22,23, Success=none 160: 6 0 0 0 0 244 244 Matched=20,21,22,23, Success=none 161: 6 0 0 0 0 332 331 Matched=0,2,3,4,5,6,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23, Success=none 162: 6 0 0 0 0 334 333 Matched=0,2,3,4,6,8,9,10,12,14,15,16,18,19,20,21,22,23, Success=none 163: 6 0 0 0 0 336 335 Matched=0,2,3,5,6,8,9,11,12,14,15,17,18,19,20,21,22,23, Success=none 164: 6 0 0 0 0 338 337 Matched=0,2,3,6,8,9,12,14,15,18,19,20,21,22,23, Success=none 165: 6 0 0 0 0 340 339 Matched=0,2,4,5,6,8,10,11,12,14,16,17,18,19,20,21,22,23, Success=none 166: 6 0 0 0 0 342 341 Matched=0,2,4,6,8,10,12,14,16,18,19,20,21,22,23, Success=none 167: 6 0 0 0 0 344 343 Matched=0,2,5,6,8,11,12,14,17,18,19,20,21,22,23, Success=none 168: 6 0 0 0 0 346 345 Matched=0,2,6,8,12,14,18,19,20,21,22,23, Success=none 169: 6 0 0 0 0 348 347 Matched=0,3,4,5,6,9,10,11,12,15,16,17,18,19,20,21,22,23, Success=none 170: 6 0 0 0 0 350 349 Matched=0,3,4,6,9,10,12,15,16,18,19,20,21,22,23, Success=none 171: 6 0 0 0 0 352 351 Matched=0,3,5,6,9,11,12,15,17,18,19,20,21,22,23, Success=none 172: 6 0 0 0 0 354 353 Matched=0,3,6,9,12,15,18,19,20,21,22,23, Success=none 173: 6 0 0 0 0 356 355 Matched=0,4,5,6,10,11,12,16,17,18,19,20,21,22,23, Success=none 174: 6 0 0 0 0 358 357 Matched=0,4,6,10,12,16,18,19,20,21,22,23, Success=none 175: 6 0 0 0 0 360 359 Matched=0,5,6,11,12,17,18,19,20,21,22,23, Success=none 176: 6 0 0 0 0 362 361 Matched=0,6,12,18,19,20,21,22,23, Success=none 177: 6 0 0 0 0 364 363 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,19,20,21,22,23, Success=none 178: 6 0 0 0 0 366 365 Matched=1,2,3,4,7,8,9,10,13,14,15,16,19,20,21,22,23, Success=none 179: 6 0 0 0 0 368 367 Matched=1,2,3,5,7,8,9,11,13,14,15,17,19,20,21,22,23, Success=none 180: 6 0 0 0 0 370 369 Matched=1,2,3,7,8,9,13,14,15,19,20,21,22,23, Success=none 181: 6 0 0 0 0 372 371 Matched=1,2,4,5,7,8,10,11,13,14,16,17,19,20,21,22,23, Success=none 182: 6 0 0 0 0 374 373 Matched=1,2,4,7,8,10,13,14,16,19,20,21,22,23, Success=none 183: 6 0 0 0 0 376 375 Matched=1,2,5,7,8,11,13,14,17,19,20,21,22,23, Success=none 184: 6 0 0 0 0 378 377 Matched=1,2,7,8,13,14,19,20,21,22,23, Success=none 185: 6 0 0 0 0 380 379 Matched=1,3,4,5,7,9,10,11,13,15,16,17,19,20,21,22,23, Success=none 186: 6 0 0 0 0 382 381 Matched=1,3,4,7,9,10,13,15,16,19,20,21,22,23, Success=none 187: 6 0 0 0 0 384 383 Matched=1,3,5,7,9,11,13,15,17,19,20,21,22,23, Success=none 188: 6 0 0 0 0 386 385 Matched=1,3,7,9,13,15,19,20,21,22,23, Success=none 189: 6 0 0 0 0 388 387 Matched=1,4,5,7,10,11,13,16,17,19,20,21,22,23, Success=none 190: 6 0 0 0 0 390 389 Matched=1,4,7,10,13,16,19,20,21,22,23, Success=none 191: 6 0 0 0 0 392 391 Matched=1,5,7,11,13,17,19,20,21,22,23, Success=none 192: 6 0 0 0 0 394 393 Matched=1,7,13,19,20,21,22,23, Success=none 193: 6 0 0 0 0 396 395 Matched=2,3,4,5,8,9,10,11,14,15,16,17,19,20,21,22,23, Success=none 194: 6 0 0 0 0 398 397 Matched=2,3,4,8,9,10,14,15,16,19,20,21,22,23, Success=none 195: 6 0 0 0 0 400 399 Matched=2,3,5,8,9,11,14,15,17,19,20,21,22,23, Success=none 196: 6 0 0 0 0 402 401 Matched=2,3,8,9,14,15,19,20,21,22,23, Success=none 197: 6 0 0 0 0 404 403 Matched=2,4,5,8,10,11,14,16,17,19,20,21,22,23, Success=none 198: 6 0 0 0 0 406 405 Matched=2,4,8,10,14,16,19,20,21,22,23, Success=none 199: 6 0 0 0 0 408 407 Matched=2,5,8,11,14,17,19,20,21,22,23, Success=none 200: 6 0 0 0 0 410 409 Matched=2,8,14,19,20,21,22,23, Success=none 201: 6 0 0 0 0 412 411 Matched=3,4,5,9,10,11,15,16,17,19,20,21,22,23, Success=none 202: 6 0 0 0 0 414 413 Matched=3,4,9,10,15,16,19,20,21,22,23, Success=none 203: 6 0 0 0 0 416 415 Matched=3,5,9,11,15,17,19,20,21,22,23, Success=none 204: 6 0 0 0 0 418 417 Matched=3,9,15,19,20,21,22,23, Success=none 205: 6 0 0 0 0 420 419 Matched=4,5,10,11,16,17,19,20,21,22,23, Success=none 206: 6 0 0 0 0 422 421 Matched=4,10,16,19,20,21,22,23, Success=none 207: 6 0 0 0 0 424 423 Matched=5,11,17,19,20,21,22,23, Success=none 208: 6 0 0 0 0 245 245 Matched=19,20,21,22,23, Success=none 209: 6 0 0 0 0 426 425 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=none 210: 6 0 0 0 0 428 427 Matched=1,2,3,4,7,8,9,10,13,14,15,16,18,19,20,21,22,23, Success=none 211: 6 0 0 0 0 430 429 Matched=1,2,3,5,7,8,9,11,13,14,15,17,18,19,20,21,22,23, Success=none 212: 6 0 0 0 0 432 431 Matched=1,2,3,7,8,9,13,14,15,18,19,20,21,22,23, Success=none 213: 6 0 0 0 0 434 433 Matched=1,2,4,5,7,8,10,11,13,14,16,17,18,19,20,21,22,23, Success=none 214: 6 0 0 0 0 436 435 Matched=1,2,4,7,8,10,13,14,16,18,19,20,21,22,23, Success=none 215: 6 0 0 0 0 438 437 Matched=1,2,5,7,8,11,13,14,17,18,19,20,21,22,23, Success=none 216: 6 0 0 0 0 440 439 Matched=1,2,7,8,13,14,18,19,20,21,22,23, Success=none 217: 6 0 0 0 0 442 441 Matched=1,3,4,5,7,9,10,11,13,15,16,17,18,19,20,21,22,23, Success=none 218: 6 0 0 0 0 444 443 Matched=1,3,4,7,9,10,13,15,16,18,19,20,21,22,23, Success=none 219: 6 0 0 0 0 446 445 Matched=1,3,5,7,9,11,13,15,17,18,19,20,21,22,23, Success=none 220: 6 0 0 0 0 448 447 Matched=1,3,7,9,13,15,18,19,20,21,22,23, Success=none 221: 6 0 0 0 0 450 449 Matched=1,4,5,7,10,11,13,16,17,18,19,20,21,22,23, Success=none 222: 6 0 0 0 0 452 451 Matched=1,4,7,10,13,16,18,19,20,21,22,23, Success=none 223: 6 0 0 0 0 454 453 Matched=1,5,7,11,13,17,18,19,20,21,22,23, Success=none 224: 6 0 0 0 0 456 455 Matched=1,7,13,18,19,20,21,22,23, Success=none 225: 6 0 0 0 0 458 457 Matched=2,3,4,5,8,9,10,11,14,15,16,17,18,19,20,21,22,23, Success=none 226: 6 0 0 0 0 460 459 Matched=2,3,4,8,9,10,14,15,16,18,19,20,21,22,23, Success=none 227: 6 0 0 0 0 462 461 Matched=2,3,5,8,9,11,14,15,17,18,19,20,21,22,23, Success=none 228: 6 0 0 0 0 464 463 Matched=2,3,8,9,14,15,18,19,20,21,22,23, Success=none 229: 6 0 0 0 0 466 465 Matched=2,4,5,8,10,11,14,16,17,18,19,20,21,22,23, Success=none 230: 6 0 0 0 0 468 467 Matched=2,4,8,10,14,16,18,19,20,21,22,23, Success=none 231: 6 0 0 0 0 470 469 Matched=2,5,8,11,14,17,18,19,20,21,22,23, Success=none 232: 6 0 0 0 0 472 471 Matched=2,8,14,18,19,20,21,22,23, Success=none 233: 6 0 0 0 0 474 473 Matched=3,4,5,9,10,11,15,16,17,18,19,20,21,22,23, Success=none 234: 6 0 0 0 0 476 475 Matched=3,4,9,10,15,16,18,19,20,21,22,23, Success=none 235: 6 0 0 0 0 478 477 Matched=3,5,9,11,15,17,18,19,20,21,22,23, Success=none 236: 6 0 0 0 0 480 479 Matched=3,9,15,18,19,20,21,22,23, Success=none 237: 6 0 0 0 0 482 481 Matched=4,5,10,11,16,17,18,19,20,21,22,23, Success=none 238: 6 0 0 0 0 484 483 Matched=4,10,16,18,19,20,21,22,23, Success=none 239: 6 0 0 0 0 486 485 Matched=5,11,17,18,19,20,21,22,23, Success=none 240: 6 0 0 0 0 246 246 Matched=18,19,20,21,22,23, Success=none 241: 7 0 493 0 493 493 493 Matched=23, Success=none 242: 7 0 504 0 504 504 504 Matched=22,23, Success=none 243: 7 0 527 0 527 527 527 Matched=21,22,23, Success=none 244: 7 0 574 0 574 574 574 Matched=20,21,22,23, Success=none 245: 7 0 669 0 669 669 669 Matched=19,20,21,22,23, Success=none 246: 7 0 732 0 732 732 732 Matched=18,19,20,21,22,23, Success=none 247: 7 0 487 0 487 487 487 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=12,13,14,15,16,17, 248: 7 0 488 0 488 488 488 Matched=6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, Success=12,13,14,15,16,17, 249: 7 0 489 0 489 489 489 Matched=0,1,2,3,4,6,7,8,9,10,12,13,14,15,16,18,19,20,21,22,23, Success=12,13,14,15,16, 250: 7 0 490 0 490 490 490 Matched=6,7,8,9,10,12,13,14,15,16,18,19,20,21,22,23, Success=12,13,14,15,16, 251: 7 0 491 0 491 491 491 Matched=5,11,17,23, Success=17, 252: 7 0 492 0 492 492 492 Matched=11,17,23, Success=17, 253: 7 0 494 0 494 494 494 Matched=0,1,2,3,5,6,7,8,9,11,12,13,14,15,17,18,19,20,21,22,23, Success=12,13,14,15,17, 254: 7 0 495 0 495 495 495 Matched=6,7,8,9,11,12,13,14,15,17,18,19,20,21,22,23, Success=12,13,14,15,17, 255: 7 0 496 0 496 496 496 Matched=0,1,2,3,6,7,8,9,12,13,14,15,18,19,20,21,22,23, Success=12,13,14,15, 256: 7 0 497 0 497 497 497 Matched=6,7,8,9,12,13,14,15,18,19,20,21,22,23, Success=12,13,14,15, 257: 7 0 498 0 498 498 498 Matched=4,5,10,11,16,17,22,23, Success=16,17, 258: 7 0 499 0 499 499 499 Matched=10,11,16,17,22,23, Success=16,17, 259: 7 0 500 0 500 500 500 Matched=4,10,16,22,23, Success=16, 260: 7 0 501 0 501 501 501 Matched=10,16,22,23, Success=16, 261: 7 0 502 0 502 502 502 Matched=5,11,17,22,23, Success=17, 262: 7 0 503 0 503 503 503 Matched=11,17,22,23, Success=17, 263: 7 0 505 0 505 505 505 Matched=0,1,2,4,5,6,7,8,10,11,12,13,14,16,17,18,19,20,21,22,23, Success=12,13,14,16,17, 264: 7 0 506 0 506 506 506 Matched=6,7,8,10,11,12,13,14,16,17,18,19,20,21,22,23, Success=12,13,14,16,17, 265: 7 0 507 0 507 507 507 Matched=0,1,2,4,6,7,8,10,12,13,14,16,18,19,20,21,22,23, Success=12,13,14,16, 266: 7 0 508 0 508 508 508 Matched=6,7,8,10,12,13,14,16,18,19,20,21,22,23, Success=12,13,14,16, 267: 7 0 509 0 509 509 509 Matched=0,1,2,5,6,7,8,11,12,13,14,17,18,19,20,21,22,23, Success=12,13,14,17, 268: 7 0 510 0 510 510 510 Matched=6,7,8,11,12,13,14,17,18,19,20,21,22,23, Success=12,13,14,17, 269: 7 0 511 0 511 511 511 Matched=0,1,2,6,7,8,12,13,14,18,19,20,21,22,23, Success=12,13,14, 270: 7 0 512 0 512 512 512 Matched=6,7,8,12,13,14,18,19,20,21,22,23, Success=12,13,14, 271: 7 0 513 0 513 513 513 Matched=3,4,5,9,10,11,15,16,17,21,22,23, Success=15,16,17, 272: 7 0 514 0 514 514 514 Matched=9,10,11,15,16,17,21,22,23, Success=15,16,17, 273: 7 0 515 0 515 515 515 Matched=3,4,9,10,15,16,21,22,23, Success=15,16, 274: 7 0 516 0 516 516 516 Matched=9,10,15,16,21,22,23, Success=15,16, 275: 7 0 517 0 517 517 517 Matched=3,5,9,11,15,17,21,22,23, Success=15,17, 276: 7 0 518 0 518 518 518 Matched=9,11,15,17,21,22,23, Success=15,17, 277: 7 0 519 0 519 519 519 Matched=3,9,15,21,22,23, Success=15, 278: 7 0 520 0 520 520 520 Matched=9,15,21,22,23, Success=15, 279: 7 0 521 0 521 521 521 Matched=4,5,10,11,16,17,21,22,23, Success=16,17, 280: 7 0 522 0 522 522 522 Matched=10,11,16,17,21,22,23, Success=16,17, 281: 7 0 523 0 523 523 523 Matched=4,10,16,21,22,23, Success=16, 282: 7 0 524 0 524 524 524 Matched=10,16,21,22,23, Success=16, 283: 7 0 525 0 525 525 525 Matched=5,11,17,21,22,23, Success=17, 284: 7 0 526 0 526 526 526 Matched=11,17,21,22,23, Success=17, 285: 7 0 528 0 528 528 528 Matched=0,1,3,4,5,6,7,9,10,11,12,13,15,16,17,18,19,20,21,22,23, Success=12,13,15,16,17, 286: 7 0 529 0 529 529 529 Matched=6,7,9,10,11,12,13,15,16,17,18,19,20,21,22,23, Success=12,13,15,16,17, 287: 7 0 530 0 530 530 530 Matched=0,1,3,4,6,7,9,10,12,13,15,16,18,19,20,21,22,23, Success=12,13,15,16, 288: 7 0 531 0 531 531 531 Matched=6,7,9,10,12,13,15,16,18,19,20,21,22,23, Success=12,13,15,16, 289: 7 0 532 0 532 532 532 Matched=0,1,3,5,6,7,9,11,12,13,15,17,18,19,20,21,22,23, Success=12,13,15,17, 290: 7 0 533 0 533 533 533 Matched=6,7,9,11,12,13,15,17,18,19,20,21,22,23, Success=12,13,15,17, 291: 7 0 534 0 534 534 534 Matched=0,1,3,6,7,9,12,13,15,18,19,20,21,22,23, Success=12,13,15, 292: 7 0 535 0 535 535 535 Matched=6,7,9,12,13,15,18,19,20,21,22,23, Success=12,13,15, 293: 7 0 536 0 536 536 536 Matched=0,1,4,5,6,7,10,11,12,13,16,17,18,19,20,21,22,23, Success=12,13,16,17, 294: 7 0 537 0 537 537 537 Matched=6,7,10,11,12,13,16,17,18,19,20,21,22,23, Success=12,13,16,17, 295: 7 0 538 0 538 538 538 Matched=0,1,4,6,7,10,12,13,16,18,19,20,21,22,23, Success=12,13,16, 296: 7 0 539 0 539 539 539 Matched=6,7,10,12,13,16,18,19,20,21,22,23, Success=12,13,16, 297: 7 0 540 0 540 540 540 Matched=0,1,5,6,7,11,12,13,17,18,19,20,21,22,23, Success=12,13,17, 298: 7 0 541 0 541 541 541 Matched=6,7,11,12,13,17,18,19,20,21,22,23, Success=12,13,17, 299: 7 0 542 0 542 542 542 Matched=0,1,6,7,12,13,18,19,20,21,22,23, Success=12,13, 300: 7 0 543 0 543 543 543 Matched=6,7,12,13,18,19,20,21,22,23, Success=12,13, 301: 7 0 544 0 544 544 544 Matched=2,3,4,5,8,9,10,11,14,15,16,17,20,21,22,23, Success=14,15,16,17, 302: 7 0 545 0 545 545 545 Matched=8,9,10,11,14,15,16,17,20,21,22,23, Success=14,15,16,17, 303: 7 0 546 0 546 546 546 Matched=2,3,4,8,9,10,14,15,16,20,21,22,23, Success=14,15,16, 304: 7 0 547 0 547 547 547 Matched=8,9,10,14,15,16,20,21,22,23, Success=14,15,16, 305: 7 0 548 0 548 548 548 Matched=2,3,5,8,9,11,14,15,17,20,21,22,23, Success=14,15,17, 306: 7 0 549 0 549 549 549 Matched=8,9,11,14,15,17,20,21,22,23, Success=14,15,17, 307: 7 0 550 0 550 550 550 Matched=2,3,8,9,14,15,20,21,22,23, Success=14,15, 308: 7 0 551 0 551 551 551 Matched=8,9,14,15,20,21,22,23, Success=14,15, 309: 7 0 552 0 552 552 552 Matched=2,4,5,8,10,11,14,16,17,20,21,22,23, Success=14,16,17, 310: 7 0 553 0 553 553 553 Matched=8,10,11,14,16,17,20,21,22,23, Success=14,16,17, 311: 7 0 554 0 554 554 554 Matched=2,4,8,10,14,16,20,21,22,23, Success=14,16, 312: 7 0 555 0 555 555 555 Matched=8,10,14,16,20,21,22,23, Success=14,16, 313: 7 0 556 0 556 556 556 Matched=2,5,8,11,14,17,20,21,22,23, Success=14,17, 314: 7 0 557 0 557 557 557 Matched=8,11,14,17,20,21,22,23, Success=14,17, 315: 7 0 558 0 558 558 558 Matched=2,8,14,20,21,22,23, Success=14, 316: 7 0 559 0 559 559 559 Matched=8,14,20,21,22,23, Success=14, 317: 7 0 560 0 560 560 560 Matched=3,4,5,9,10,11,15,16,17,20,21,22,23, Success=15,16,17, 318: 7 0 561 0 561 561 561 Matched=9,10,11,15,16,17,20,21,22,23, Success=15,16,17, 319: 7 0 562 0 562 562 562 Matched=3,4,9,10,15,16,20,21,22,23, Success=15,16, 320: 7 0 563 0 563 563 563 Matched=9,10,15,16,20,21,22,23, Success=15,16, 321: 7 0 564 0 564 564 564 Matched=3,5,9,11,15,17,20,21,22,23, Success=15,17, 322: 7 0 565 0 565 565 565 Matched=9,11,15,17,20,21,22,23, Success=15,17, 323: 7 0 566 0 566 566 566 Matched=3,9,15,20,21,22,23, Success=15, 324: 7 0 567 0 567 567 567 Matched=9,15,20,21,22,23, Success=15, 325: 7 0 568 0 568 568 568 Matched=4,5,10,11,16,17,20,21,22,23, Success=16,17, 326: 7 0 569 0 569 569 569 Matched=10,11,16,17,20,21,22,23, Success=16,17, 327: 7 0 570 0 570 570 570 Matched=4,10,16,20,21,22,23, Success=16, 328: 7 0 571 0 571 571 571 Matched=10,16,20,21,22,23, Success=16, 329: 7 0 572 0 572 572 572 Matched=5,11,17,20,21,22,23, Success=17, 330: 7 0 573 0 573 573 573 Matched=11,17,20,21,22,23, Success=17, 331: 7 0 575 0 575 575 575 Matched=0,2,3,4,5,6,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23, Success=12,14,15,16,17, 332: 7 0 576 0 576 576 576 Matched=6,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23, Success=12,14,15,16,17, 333: 7 0 577 0 577 577 577 Matched=0,2,3,4,6,8,9,10,12,14,15,16,18,19,20,21,22,23, Success=12,14,15,16, 334: 7 0 578 0 578 578 578 Matched=6,8,9,10,12,14,15,16,18,19,20,21,22,23, Success=12,14,15,16, 335: 7 0 579 0 579 579 579 Matched=0,2,3,5,6,8,9,11,12,14,15,17,18,19,20,21,22,23, Success=12,14,15,17, 336: 7 0 580 0 580 580 580 Matched=6,8,9,11,12,14,15,17,18,19,20,21,22,23, Success=12,14,15,17, 337: 7 0 581 0 581 581 581 Matched=0,2,3,6,8,9,12,14,15,18,19,20,21,22,23, Success=12,14,15, 338: 7 0 582 0 582 582 582 Matched=6,8,9,12,14,15,18,19,20,21,22,23, Success=12,14,15, 339: 7 0 583 0 583 583 583 Matched=0,2,4,5,6,8,10,11,12,14,16,17,18,19,20,21,22,23, Success=12,14,16,17, 340: 7 0 584 0 584 584 584 Matched=6,8,10,11,12,14,16,17,18,19,20,21,22,23, Success=12,14,16,17, 341: 7 0 585 0 585 585 585 Matched=0,2,4,6,8,10,12,14,16,18,19,20,21,22,23, Success=12,14,16, 342: 7 0 586 0 586 586 586 Matched=6,8,10,12,14,16,18,19,20,21,22,23, Success=12,14,16, 343: 7 0 587 0 587 587 587 Matched=0,2,5,6,8,11,12,14,17,18,19,20,21,22,23, Success=12,14,17, 344: 7 0 588 0 588 588 588 Matched=6,8,11,12,14,17,18,19,20,21,22,23, Success=12,14,17, 345: 7 0 589 0 589 589 589 Matched=0,2,6,8,12,14,18,19,20,21,22,23, Success=12,14, 346: 7 0 590 0 590 590 590 Matched=6,8,12,14,18,19,20,21,22,23, Success=12,14, 347: 7 0 591 0 591 591 591 Matched=0,3,4,5,6,9,10,11,12,15,16,17,18,19,20,21,22,23, Success=12,15,16,17, 348: 7 0 592 0 592 592 592 Matched=6,9,10,11,12,15,16,17,18,19,20,21,22,23, Success=12,15,16,17, 349: 7 0 593 0 593 593 593 Matched=0,3,4,6,9,10,12,15,16,18,19,20,21,22,23, Success=12,15,16, 350: 7 0 594 0 594 594 594 Matched=6,9,10,12,15,16,18,19,20,21,22,23, Success=12,15,16, 351: 7 0 595 0 595 595 595 Matched=0,3,5,6,9,11,12,15,17,18,19,20,21,22,23, Success=12,15,17, 352: 7 0 596 0 596 596 596 Matched=6,9,11,12,15,17,18,19,20,21,22,23, Success=12,15,17, 353: 7 0 597 0 597 597 597 Matched=0,3,6,9,12,15,18,19,20,21,22,23, Success=12,15, 354: 7 0 598 0 598 598 598 Matched=6,9,12,15,18,19,20,21,22,23, Success=12,15, 355: 7 0 599 0 599 599 599 Matched=0,4,5,6,10,11,12,16,17,18,19,20,21,22,23, Success=12,16,17, 356: 7 0 600 0 600 600 600 Matched=6,10,11,12,16,17,18,19,20,21,22,23, Success=12,16,17, 357: 7 0 601 0 601 601 601 Matched=0,4,6,10,12,16,18,19,20,21,22,23, Success=12,16, 358: 7 0 602 0 602 602 602 Matched=6,10,12,16,18,19,20,21,22,23, Success=12,16, 359: 7 0 603 0 603 603 603 Matched=0,5,6,11,12,17,18,19,20,21,22,23, Success=12,17, 360: 7 0 604 0 604 604 604 Matched=6,11,12,17,18,19,20,21,22,23, Success=12,17, 361: 7 0 605 0 605 605 605 Matched=0,6,12,18,19,20,21,22,23, Success=12, 362: 7 0 606 0 606 606 606 Matched=6,12,18,19,20,21,22,23, Success=12, 363: 7 0 607 0 607 607 607 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,19,20,21,22,23, Success=13,14,15,16,17, 364: 7 0 608 0 608 608 608 Matched=7,8,9,10,11,13,14,15,16,17,19,20,21,22,23, Success=13,14,15,16,17, 365: 7 0 609 0 609 609 609 Matched=1,2,3,4,7,8,9,10,13,14,15,16,19,20,21,22,23, Success=13,14,15,16, 366: 7 0 610 0 610 610 610 Matched=7,8,9,10,13,14,15,16,19,20,21,22,23, Success=13,14,15,16, 367: 7 0 611 0 611 611 611 Matched=1,2,3,5,7,8,9,11,13,14,15,17,19,20,21,22,23, Success=13,14,15,17, 368: 7 0 612 0 612 612 612 Matched=7,8,9,11,13,14,15,17,19,20,21,22,23, Success=13,14,15,17, 369: 7 0 613 0 613 613 613 Matched=1,2,3,7,8,9,13,14,15,19,20,21,22,23, Success=13,14,15, 370: 7 0 614 0 614 614 614 Matched=7,8,9,13,14,15,19,20,21,22,23, Success=13,14,15, 371: 7 0 615 0 615 615 615 Matched=1,2,4,5,7,8,10,11,13,14,16,17,19,20,21,22,23, Success=13,14,16,17, 372: 7 0 616 0 616 616 616 Matched=7,8,10,11,13,14,16,17,19,20,21,22,23, Success=13,14,16,17, 373: 7 0 617 0 617 617 617 Matched=1,2,4,7,8,10,13,14,16,19,20,21,22,23, Success=13,14,16, 374: 7 0 618 0 618 618 618 Matched=7,8,10,13,14,16,19,20,21,22,23, Success=13,14,16, 375: 7 0 619 0 619 619 619 Matched=1,2,5,7,8,11,13,14,17,19,20,21,22,23, Success=13,14,17, 376: 7 0 620 0 620 620 620 Matched=7,8,11,13,14,17,19,20,21,22,23, Success=13,14,17, 377: 7 0 621 0 621 621 621 Matched=1,2,7,8,13,14,19,20,21,22,23, Success=13,14, 378: 7 0 622 0 622 622 622 Matched=7,8,13,14,19,20,21,22,23, Success=13,14, 379: 7 0 623 0 623 623 623 Matched=1,3,4,5,7,9,10,11,13,15,16,17,19,20,21,22,23, Success=13,15,16,17, 380: 7 0 624 0 624 624 624 Matched=7,9,10,11,13,15,16,17,19,20,21,22,23, Success=13,15,16,17, 381: 7 0 625 0 625 625 625 Matched=1,3,4,7,9,10,13,15,16,19,20,21,22,23, Success=13,15,16, 382: 7 0 626 0 626 626 626 Matched=7,9,10,13,15,16,19,20,21,22,23, Success=13,15,16, 383: 7 0 627 0 627 627 627 Matched=1,3,5,7,9,11,13,15,17,19,20,21,22,23, Success=13,15,17, 384: 7 0 628 0 628 628 628 Matched=7,9,11,13,15,17,19,20,21,22,23, Success=13,15,17, 385: 7 0 629 0 629 629 629 Matched=1,3,7,9,13,15,19,20,21,22,23, Success=13,15, 386: 7 0 630 0 630 630 630 Matched=7,9,13,15,19,20,21,22,23, Success=13,15, 387: 7 0 631 0 631 631 631 Matched=1,4,5,7,10,11,13,16,17,19,20,21,22,23, Success=13,16,17, 388: 7 0 632 0 632 632 632 Matched=7,10,11,13,16,17,19,20,21,22,23, Success=13,16,17, 389: 7 0 633 0 633 633 633 Matched=1,4,7,10,13,16,19,20,21,22,23, Success=13,16, 390: 7 0 634 0 634 634 634 Matched=7,10,13,16,19,20,21,22,23, Success=13,16, 391: 7 0 635 0 635 635 635 Matched=1,5,7,11,13,17,19,20,21,22,23, Success=13,17, 392: 7 0 636 0 636 636 636 Matched=7,11,13,17,19,20,21,22,23, Success=13,17, 393: 7 0 637 0 637 637 637 Matched=1,7,13,19,20,21,22,23, Success=13, 394: 7 0 638 0 638 638 638 Matched=7,13,19,20,21,22,23, Success=13, 395: 7 0 639 0 639 639 639 Matched=2,3,4,5,8,9,10,11,14,15,16,17,19,20,21,22,23, Success=14,15,16,17, 396: 7 0 640 0 640 640 640 Matched=8,9,10,11,14,15,16,17,19,20,21,22,23, Success=14,15,16,17, 397: 7 0 641 0 641 641 641 Matched=2,3,4,8,9,10,14,15,16,19,20,21,22,23, Success=14,15,16, 398: 7 0 642 0 642 642 642 Matched=8,9,10,14,15,16,19,20,21,22,23, Success=14,15,16, 399: 7 0 643 0 643 643 643 Matched=2,3,5,8,9,11,14,15,17,19,20,21,22,23, Success=14,15,17, 400: 7 0 644 0 644 644 644 Matched=8,9,11,14,15,17,19,20,21,22,23, Success=14,15,17, 401: 7 0 645 0 645 645 645 Matched=2,3,8,9,14,15,19,20,21,22,23, Success=14,15, 402: 7 0 646 0 646 646 646 Matched=8,9,14,15,19,20,21,22,23, Success=14,15, 403: 7 0 647 0 647 647 647 Matched=2,4,5,8,10,11,14,16,17,19,20,21,22,23, Success=14,16,17, 404: 7 0 648 0 648 648 648 Matched=8,10,11,14,16,17,19,20,21,22,23, Success=14,16,17, 405: 7 0 649 0 649 649 649 Matched=2,4,8,10,14,16,19,20,21,22,23, Success=14,16, 406: 7 0 650 0 650 650 650 Matched=8,10,14,16,19,20,21,22,23, Success=14,16, 407: 7 0 651 0 651 651 651 Matched=2,5,8,11,14,17,19,20,21,22,23, Success=14,17, 408: 7 0 652 0 652 652 652 Matched=8,11,14,17,19,20,21,22,23, Success=14,17, 409: 7 0 653 0 653 653 653 Matched=2,8,14,19,20,21,22,23, Success=14, 410: 7 0 654 0 654 654 654 Matched=8,14,19,20,21,22,23, Success=14, 411: 7 0 655 0 655 655 655 Matched=3,4,5,9,10,11,15,16,17,19,20,21,22,23, Success=15,16,17, 412: 7 0 656 0 656 656 656 Matched=9,10,11,15,16,17,19,20,21,22,23, Success=15,16,17, 413: 7 0 657 0 657 657 657 Matched=3,4,9,10,15,16,19,20,21,22,23, Success=15,16, 414: 7 0 658 0 658 658 658 Matched=9,10,15,16,19,20,21,22,23, Success=15,16, 415: 7 0 659 0 659 659 659 Matched=3,5,9,11,15,17,19,20,21,22,23, Success=15,17, 416: 7 0 660 0 660 660 660 Matched=9,11,15,17,19,20,21,22,23, Success=15,17, 417: 7 0 661 0 661 661 661 Matched=3,9,15,19,20,21,22,23, Success=15, 418: 7 0 662 0 662 662 662 Matched=9,15,19,20,21,22,23, Success=15, 419: 7 0 663 0 663 663 663 Matched=4,5,10,11,16,17,19,20,21,22,23, Success=16,17, 420: 7 0 664 0 664 664 664 Matched=10,11,16,17,19,20,21,22,23, Success=16,17, 421: 7 0 665 0 665 665 665 Matched=4,10,16,19,20,21,22,23, Success=16, 422: 7 0 666 0 666 666 666 Matched=10,16,19,20,21,22,23, Success=16, 423: 7 0 667 0 667 667 667 Matched=5,11,17,19,20,21,22,23, Success=17, 424: 7 0 668 0 668 668 668 Matched=11,17,19,20,21,22,23, Success=17, 425: 7 0 670 0 670 670 670 Matched=1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=13,14,15,16,17, 426: 7 0 671 0 671 671 671 Matched=7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23, Success=13,14,15,16,17, 427: 7 0 672 0 672 672 672 Matched=1,2,3,4,7,8,9,10,13,14,15,16,18,19,20,21,22,23, Success=13,14,15,16, 428: 7 0 673 0 673 673 673 Matched=7,8,9,10,13,14,15,16,18,19,20,21,22,23, Success=13,14,15,16, 429: 7 0 674 0 674 674 674 Matched=1,2,3,5,7,8,9,11,13,14,15,17,18,19,20,21,22,23, Success=13,14,15,17, 430: 7 0 675 0 675 675 675 Matched=7,8,9,11,13,14,15,17,18,19,20,21,22,23, Success=13,14,15,17, 431: 7 0 676 0 676 676 676 Matched=1,2,3,7,8,9,13,14,15,18,19,20,21,22,23, Success=13,14,15, 432: 7 0 677 0 677 677 677 Matched=7,8,9,13,14,15,18,19,20,21,22,23, Success=13,14,15, 433: 7 0 678 0 678 678 678 Matched=1,2,4,5,7,8,10,11,13,14,16,17,18,19,20,21,22,23, Success=13,14,16,17, 434: 7 0 679 0 679 679 679 Matched=7,8,10,11,13,14,16,17,18,19,20,21,22,23, Success=13,14,16,17, 435: 7 0 680 0 680 680 680 Matched=1,2,4,7,8,10,13,14,16,18,19,20,21,22,23, Success=13,14,16, 436: 7 0 681 0 681 681 681 Matched=7,8,10,13,14,16,18,19,20,21,22,23, Success=13,14,16, 437: 7 0 682 0 682 682 682 Matched=1,2,5,7,8,11,13,14,17,18,19,20,21,22,23, Success=13,14,17, 438: 7 0 683 0 683 683 683 Matched=7,8,11,13,14,17,18,19,20,21,22,23, Success=13,14,17, 439: 7 0 684 0 684 684 684 Matched=1,2,7,8,13,14,18,19,20,21,22,23, Success=13,14, 440: 7 0 685 0 685 685 685 Matched=7,8,13,14,18,19,20,21,22,23, Success=13,14, 441: 7 0 686 0 686 686 686 Matched=1,3,4,5,7,9,10,11,13,15,16,17,18,19,20,21,22,23, Success=13,15,16,17, 442: 7 0 687 0 687 687 687 Matched=7,9,10,11,13,15,16,17,18,19,20,21,22,23, Success=13,15,16,17, 443: 7 0 688 0 688 688 688 Matched=1,3,4,7,9,10,13,15,16,18,19,20,21,22,23, Success=13,15,16, 444: 7 0 689 0 689 689 689 Matched=7,9,10,13,15,16,18,19,20,21,22,23, Success=13,15,16, 445: 7 0 690 0 690 690 690 Matched=1,3,5,7,9,11,13,15,17,18,19,20,21,22,23, Success=13,15,17, 446: 7 0 691 0 691 691 691 Matched=7,9,11,13,15,17,18,19,20,21,22,23, Success=13,15,17, 447: 7 0 692 0 692 692 692 Matched=1,3,7,9,13,15,18,19,20,21,22,23, Success=13,15, 448: 7 0 693 0 693 693 693 Matched=7,9,13,15,18,19,20,21,22,23, Success=13,15, 449: 7 0 694 0 694 694 694 Matched=1,4,5,7,10,11,13,16,17,18,19,20,21,22,23, Success=13,16,17, 450: 7 0 695 0 695 695 695 Matched=7,10,11,13,16,17,18,19,20,21,22,23, Success=13,16,17, 451: 7 0 696 0 696 696 696 Matched=1,4,7,10,13,16,18,19,20,21,22,23, Success=13,16, 452: 7 0 697 0 697 697 697 Matched=7,10,13,16,18,19,20,21,22,23, Success=13,16, 453: 7 0 698 0 698 698 698 Matched=1,5,7,11,13,17,18,19,20,21,22,23, Success=13,17, 454: 7 0 699 0 699 699 699 Matched=7,11,13,17,18,19,20,21,22,23, Success=13,17, 455: 7 0 700 0 700 700 700 Matched=1,7,13,18,19,20,21,22,23, Success=13, 456: 7 0 701 0 701 701 701 Matched=7,13,18,19,20,21,22,23, Success=13, 457: 7 0 702 0 702 702 702 Matched=2,3,4,5,8,9,10,11,14,15,16,17,18,19,20,21,22,23, Success=14,15,16,17, 458: 7 0 703 0 703 703 703 Matched=8,9,10,11,14,15,16,17,18,19,20,21,22,23, Success=14,15,16,17, 459: 7 0 704 0 704 704 704 Matched=2,3,4,8,9,10,14,15,16,18,19,20,21,22,23, Success=14,15,16, 460: 7 0 705 0 705 705 705 Matched=8,9,10,14,15,16,18,19,20,21,22,23, Success=14,15,16, 461: 7 0 706 0 706 706 706 Matched=2,3,5,8,9,11,14,15,17,18,19,20,21,22,23, Success=14,15,17, 462: 7 0 707 0 707 707 707 Matched=8,9,11,14,15,17,18,19,20,21,22,23, Success=14,15,17, 463: 7 0 708 0 708 708 708 Matched=2,3,8,9,14,15,18,19,20,21,22,23, Success=14,15, 464: 7 0 709 0 709 709 709 Matched=8,9,14,15,18,19,20,21,22,23, Success=14,15, 465: 7 0 710 0 710 710 710 Matched=2,4,5,8,10,11,14,16,17,18,19,20,21,22,23, Success=14,16,17, 466: 7 0 711 0 711 711 711 Matched=8,10,11,14,16,17,18,19,20,21,22,23, Success=14,16,17, 467: 7 0 712 0 712 712 712 Matched=2,4,8,10,14,16,18,19,20,21,22,23, Success=14,16, 468: 7 0 713 0 713 713 713 Matched=8,10,14,16,18,19,20,21,22,23, Success=14,16, 469: 7 0 714 0 714 714 714 Matched=2,5,8,11,14,17,18,19,20,21,22,23, Success=14,17, 470: 7 0 715 0 715 715 715 Matched=8,11,14,17,18,19,20,21,22,23, Success=14,17, 471: 7 0 716 0 716 716 716 Matched=2,8,14,18,19,20,21,22,23, Success=14, 472: 7 0 717 0 717 717 717 Matched=8,14,18,19,20,21,22,23, Success=14, 473: 7 0 718 0 718 718 718 Matched=3,4,5,9,10,11,15,16,17,18,19,20,21,22,23, Success=15,16,17, 474: 7 0 719 0 719 719 719 Matched=9,10,11,15,16,17,18,19,20,21,22,23, Success=15,16,17, 475: 7 0 720 0 720 720 720 Matched=3,4,9,10,15,16,18,19,20,21,22,23, Success=15,16, 476: 7 0 721 0 721 721 721 Matched=9,10,15,16,18,19,20,21,22,23, Success=15,16, 477: 7 0 722 0 722 722 722 Matched=3,5,9,11,15,17,18,19,20,21,22,23, Success=15,17, 478: 7 0 723 0 723 723 723 Matched=9,11,15,17,18,19,20,21,22,23, Success=15,17, 479: 7 0 724 0 724 724 724 Matched=3,9,15,18,19,20,21,22,23, Success=15, 480: 7 0 725 0 725 725 725 Matched=9,15,18,19,20,21,22,23, Success=15, 481: 7 0 726 0 726 726 726 Matched=4,5,10,11,16,17,18,19,20,21,22,23, Success=16,17, 482: 7 0 727 0 727 727 727 Matched=10,11,16,17,18,19,20,21,22,23, Success=16,17, 483: 7 0 728 0 728 728 728 Matched=4,10,16,18,19,20,21,22,23, Success=16, 484: 7 0 729 0 729 729 729 Matched=10,16,18,19,20,21,22,23, Success=16, 485: 7 0 730 0 730 730 730 Matched=5,11,17,18,19,20,21,22,23, Success=17, 486: 7 0 731 0 731 731 731 Matched=11,17,18,19,20,21,22,23, Success=17, 487: 8 0 0 0 0 0 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,18,19,20,21,22,23, Success=0,1,2,3,4,5,6,7,8,9,10,11,18,19,20,21,22,23, 488: 8 0 0 0 0 0 0 Matched=6,7,8,9,10,11,18,19,20,21,22,23, Success=6,7,8,9,10,11,18,19,20,21,22,23, 489: 8 0 0 0 0 0 0 Matched=0,1,2,3,4,6,7,8,9,10,18,19,20,21,22,23, Success=0,1,2,3,4,6,7,8,9,10,18,19,20,21,22,23, 490: 8 0 0 0 0 0 0 Matched=6,7,8,9,10,18,19,20,21,22,23, Success=6,7,8,9,10,18,19,20,21,22,23, 491: 8 0 0 0 0 0 0 Matched=5,11,23, Success=5,11,23, 492: 8 0 0 0 0 0 0 Matched=11,23, Success=11,23, 493: 8 0 0 0 0 0 0 Matched=23, Success=23, 494: 8 0 0 0 0 0 0 Matched=0,1,2,3,5,6,7,8,9,11,18,19,20,21,22,23, Success=0,1,2,3,5,6,7,8,9,11,18,19,20,21,22,23, 495: 8 0 0 0 0 0 0 Matched=6,7,8,9,11,18,19,20,21,22,23, Success=6,7,8,9,11,18,19,20,21,22,23, 496: 8 0 0 0 0 0 0 Matched=0,1,2,3,6,7,8,9,18,19,20,21,22,23, Success=0,1,2,3,6,7,8,9,18,19,20,21,22,23, 497: 8 0 0 0 0 0 0 Matched=6,7,8,9,18,19,20,21,22,23, Success=6,7,8,9,18,19,20,21,22,23, 498: 8 0 0 0 0 0 0 Matched=4,5,10,11,22,23, Success=4,5,10,11,22,23, 499: 8 0 0 0 0 0 0 Matched=10,11,22,23, Success=10,11,22,23, 500: 8 0 0 0 0 0 0 Matched=4,10,22,23, Success=4,10,22,23, 501: 8 0 0 0 0 0 0 Matched=10,22,23, Success=10,22,23, 502: 8 0 0 0 0 0 0 Matched=5,11,22,23, Success=5,11,22,23, 503: 8 0 0 0 0 0 0 Matched=11,22,23, Success=11,22,23, 504: 8 0 0 0 0 0 0 Matched=22,23, Success=22,23, 505: 8 0 0 0 0 0 0 Matched=0,1,2,4,5,6,7,8,10,11,18,19,20,21,22,23, Success=0,1,2,4,5,6,7,8,10,11,18,19,20,21,22,23, 506: 8 0 0 0 0 0 0 Matched=6,7,8,10,11,18,19,20,21,22,23, Success=6,7,8,10,11,18,19,20,21,22,23, 507: 8 0 0 0 0 0 0 Matched=0,1,2,4,6,7,8,10,18,19,20,21,22,23, Success=0,1,2,4,6,7,8,10,18,19,20,21,22,23, 508: 8 0 0 0 0 0 0 Matched=6,7,8,10,18,19,20,21,22,23, Success=6,7,8,10,18,19,20,21,22,23, 509: 8 0 0 0 0 0 0 Matched=0,1,2,5,6,7,8,11,18,19,20,21,22,23, Success=0,1,2,5,6,7,8,11,18,19,20,21,22,23, 510: 8 0 0 0 0 0 0 Matched=6,7,8,11,18,19,20,21,22,23, Success=6,7,8,11,18,19,20,21,22,23, 511: 8 0 0 0 0 0 0 Matched=0,1,2,6,7,8,18,19,20,21,22,23, Success=0,1,2,6,7,8,18,19,20,21,22,23, 512: 8 0 0 0 0 0 0 Matched=6,7,8,18,19,20,21,22,23, Success=6,7,8,18,19,20,21,22,23, 513: 8 0 0 0 0 0 0 Matched=3,4,5,9,10,11,21,22,23, Success=3,4,5,9,10,11,21,22,23, 514: 8 0 0 0 0 0 0 Matched=9,10,11,21,22,23, Success=9,10,11,21,22,23, 515: 8 0 0 0 0 0 0 Matched=3,4,9,10,21,22,23, Success=3,4,9,10,21,22,23, 516: 8 0 0 0 0 0 0 Matched=9,10,21,22,23, Success=9,10,21,22,23, 517: 8 0 0 0 0 0 0 Matched=3,5,9,11,21,22,23, Success=3,5,9,11,21,22,23, 518: 8 0 0 0 0 0 0 Matched=9,11,21,22,23, Success=9,11,21,22,23, 519: 8 0 0 0 0 0 0 Matched=3,9,21,22,23, Success=3,9,21,22,23, 520: 8 0 0 0 0 0 0 Matched=9,21,22,23, Success=9,21,22,23, 521: 8 0 0 0 0 0 0 Matched=4,5,10,11,21,22,23, Success=4,5,10,11,21,22,23, 522: 8 0 0 0 0 0 0 Matched=10,11,21,22,23, Success=10,11,21,22,23, 523: 8 0 0 0 0 0 0 Matched=4,10,21,22,23, Success=4,10,21,22,23, 524: 8 0 0 0 0 0 0 Matched=10,21,22,23, Success=10,21,22,23, 525: 8 0 0 0 0 0 0 Matched=5,11,21,22,23, Success=5,11,21,22,23, 526: 8 0 0 0 0 0 0 Matched=11,21,22,23, Success=11,21,22,23, 527: 8 0 0 0 0 0 0 Matched=21,22,23, Success=21,22,23, 528: 8 0 0 0 0 0 0 Matched=0,1,3,4,5,6,7,9,10,11,18,19,20,21,22,23, Success=0,1,3,4,5,6,7,9,10,11,18,19,20,21,22,23, 529: 8 0 0 0 0 0 0 Matched=6,7,9,10,11,18,19,20,21,22,23, Success=6,7,9,10,11,18,19,20,21,22,23, 530: 8 0 0 0 0 0 0 Matched=0,1,3,4,6,7,9,10,18,19,20,21,22,23, Success=0,1,3,4,6,7,9,10,18,19,20,21,22,23, 531: 8 0 0 0 0 0 0 Matched=6,7,9,10,18,19,20,21,22,23, Success=6,7,9,10,18,19,20,21,22,23, 532: 8 0 0 0 0 0 0 Matched=0,1,3,5,6,7,9,11,18,19,20,21,22,23, Success=0,1,3,5,6,7,9,11,18,19,20,21,22,23, 533: 8 0 0 0 0 0 0 Matched=6,7,9,11,18,19,20,21,22,23, Success=6,7,9,11,18,19,20,21,22,23, 534: 8 0 0 0 0 0 0 Matched=0,1,3,6,7,9,18,19,20,21,22,23, Success=0,1,3,6,7,9,18,19,20,21,22,23, 535: 8 0 0 0 0 0 0 Matched=6,7,9,18,19,20,21,22,23, Success=6,7,9,18,19,20,21,22,23, 536: 8 0 0 0 0 0 0 Matched=0,1,4,5,6,7,10,11,18,19,20,21,22,23, Success=0,1,4,5,6,7,10,11,18,19,20,21,22,23, 537: 8 0 0 0 0 0 0 Matched=6,7,10,11,18,19,20,21,22,23, Success=6,7,10,11,18,19,20,21,22,23, 538: 8 0 0 0 0 0 0 Matched=0,1,4,6,7,10,18,19,20,21,22,23, Success=0,1,4,6,7,10,18,19,20,21,22,23, 539: 8 0 0 0 0 0 0 Matched=6,7,10,18,19,20,21,22,23, Success=6,7,10,18,19,20,21,22,23, 540: 8 0 0 0 0 0 0 Matched=0,1,5,6,7,11,18,19,20,21,22,23, Success=0,1,5,6,7,11,18,19,20,21,22,23, 541: 8 0 0 0 0 0 0 Matched=6,7,11,18,19,20,21,22,23, Success=6,7,11,18,19,20,21,22,23, 542: 8 0 0 0 0 0 0 Matched=0,1,6,7,18,19,20,21,22,23, Success=0,1,6,7,18,19,20,21,22,23, 543: 8 0 0 0 0 0 0 Matched=6,7,18,19,20,21,22,23, Success=6,7,18,19,20,21,22,23, 544: 8 0 0 0 0 0 0 Matched=2,3,4,5,8,9,10,11,20,21,22,23, Success=2,3,4,5,8,9,10,11,20,21,22,23, 545: 8 0 0 0 0 0 0 Matched=8,9,10,11,20,21,22,23, Success=8,9,10,11,20,21,22,23, 546: 8 0 0 0 0 0 0 Matched=2,3,4,8,9,10,20,21,22,23, Success=2,3,4,8,9,10,20,21,22,23, 547: 8 0 0 0 0 0 0 Matched=8,9,10,20,21,22,23, Success=8,9,10,20,21,22,23, 548: 8 0 0 0 0 0 0 Matched=2,3,5,8,9,11,20,21,22,23, Success=2,3,5,8,9,11,20,21,22,23, 549: 8 0 0 0 0 0 0 Matched=8,9,11,20,21,22,23, Success=8,9,11,20,21,22,23, 550: 8 0 0 0 0 0 0 Matched=2,3,8,9,20,21,22,23, Success=2,3,8,9,20,21,22,23, 551: 8 0 0 0 0 0 0 Matched=8,9,20,21,22,23, Success=8,9,20,21,22,23, 552: 8 0 0 0 0 0 0 Matched=2,4,5,8,10,11,20,21,22,23, Success=2,4,5,8,10,11,20,21,22,23, 553: 8 0 0 0 0 0 0 Matched=8,10,11,20,21,22,23, Success=8,10,11,20,21,22,23, 554: 8 0 0 0 0 0 0 Matched=2,4,8,10,20,21,22,23, Success=2,4,8,10,20,21,22,23, 555: 8 0 0 0 0 0 0 Matched=8,10,20,21,22,23, Success=8,10,20,21,22,23, 556: 8 0 0 0 0 0 0 Matched=2,5,8,11,20,21,22,23, Success=2,5,8,11,20,21,22,23, 557: 8 0 0 0 0 0 0 Matched=8,11,20,21,22,23, Success=8,11,20,21,22,23, 558: 8 0 0 0 0 0 0 Matched=2,8,20,21,22,23, Success=2,8,20,21,22,23, 559: 8 0 0 0 0 0 0 Matched=8,20,21,22,23, Success=8,20,21,22,23, 560: 8 0 0 0 0 0 0 Matched=3,4,5,9,10,11,20,21,22,23, Success=3,4,5,9,10,11,20,21,22,23, 561: 8 0 0 0 0 0 0 Matched=9,10,11,20,21,22,23, Success=9,10,11,20,21,22,23, 562: 8 0 0 0 0 0 0 Matched=3,4,9,10,20,21,22,23, Success=3,4,9,10,20,21,22,23, 563: 8 0 0 0 0 0 0 Matched=9,10,20,21,22,23, Success=9,10,20,21,22,23, 564: 8 0 0 0 0 0 0 Matched=3,5,9,11,20,21,22,23, Success=3,5,9,11,20,21,22,23, 565: 8 0 0 0 0 0 0 Matched=9,11,20,21,22,23, Success=9,11,20,21,22,23, 566: 8 0 0 0 0 0 0 Matched=3,9,20,21,22,23, Success=3,9,20,21,22,23, 567: 8 0 0 0 0 0 0 Matched=9,20,21,22,23, Success=9,20,21,22,23, 568: 8 0 0 0 0 0 0 Matched=4,5,10,11,20,21,22,23, Success=4,5,10,11,20,21,22,23, 569: 8 0 0 0 0 0 0 Matched=10,11,20,21,22,23, Success=10,11,20,21,22,23, 570: 8 0 0 0 0 0 0 Matched=4,10,20,21,22,23, Success=4,10,20,21,22,23, 571: 8 0 0 0 0 0 0 Matched=10,20,21,22,23, Success=10,20,21,22,23, 572: 8 0 0 0 0 0 0 Matched=5,11,20,21,22,23, Success=5,11,20,21,22,23, 573: 8 0 0 0 0 0 0 Matched=11,20,21,22,23, Success=11,20,21,22,23, 574: 8 0 0 0 0 0 0 Matched=20,21,22,23, Success=20,21,22,23, 575: 8 0 0 0 0 0 0 Matched=0,2,3,4,5,6,8,9,10,11,18,19,20,21,22,23, Success=0,2,3,4,5,6,8,9,10,11,18,19,20,21,22,23, 576: 8 0 0 0 0 0 0 Matched=6,8,9,10,11,18,19,20,21,22,23, Success=6,8,9,10,11,18,19,20,21,22,23, 577: 8 0 0 0 0 0 0 Matched=0,2,3,4,6,8,9,10,18,19,20,21,22,23, Success=0,2,3,4,6,8,9,10,18,19,20,21,22,23, 578: 8 0 0 0 0 0 0 Matched=6,8,9,10,18,19,20,21,22,23, Success=6,8,9,10,18,19,20,21,22,23, 579: 8 0 0 0 0 0 0 Matched=0,2,3,5,6,8,9,11,18,19,20,21,22,23, Success=0,2,3,5,6,8,9,11,18,19,20,21,22,23, 580: 8 0 0 0 0 0 0 Matched=6,8,9,11,18,19,20,21,22,23, Success=6,8,9,11,18,19,20,21,22,23, 581: 8 0 0 0 0 0 0 Matched=0,2,3,6,8,9,18,19,20,21,22,23, Success=0,2,3,6,8,9,18,19,20,21,22,23, 582: 8 0 0 0 0 0 0 Matched=6,8,9,18,19,20,21,22,23, Success=6,8,9,18,19,20,21,22,23, 583: 8 0 0 0 0 0 0 Matched=0,2,4,5,6,8,10,11,18,19,20,21,22,23, Success=0,2,4,5,6,8,10,11,18,19,20,21,22,23, 584: 8 0 0 0 0 0 0 Matched=6,8,10,11,18,19,20,21,22,23, Success=6,8,10,11,18,19,20,21,22,23, 585: 8 0 0 0 0 0 0 Matched=0,2,4,6,8,10,18,19,20,21,22,23, Success=0,2,4,6,8,10,18,19,20,21,22,23, 586: 8 0 0 0 0 0 0 Matched=6,8,10,18,19,20,21,22,23, Success=6,8,10,18,19,20,21,22,23, 587: 8 0 0 0 0 0 0 Matched=0,2,5,6,8,11,18,19,20,21,22,23, Success=0,2,5,6,8,11,18,19,20,21,22,23, 588: 8 0 0 0 0 0 0 Matched=6,8,11,18,19,20,21,22,23, Success=6,8,11,18,19,20,21,22,23, 589: 8 0 0 0 0 0 0 Matched=0,2,6,8,18,19,20,21,22,23, Success=0,2,6,8,18,19,20,21,22,23, 590: 8 0 0 0 0 0 0 Matched=6,8,18,19,20,21,22,23, Success=6,8,18,19,20,21,22,23, 591: 8 0 0 0 0 0 0 Matched=0,3,4,5,6,9,10,11,18,19,20,21,22,23, Success=0,3,4,5,6,9,10,11,18,19,20,21,22,23, 592: 8 0 0 0 0 0 0 Matched=6,9,10,11,18,19,20,21,22,23, Success=6,9,10,11,18,19,20,21,22,23, 593: 8 0 0 0 0 0 0 Matched=0,3,4,6,9,10,18,19,20,21,22,23, Success=0,3,4,6,9,10,18,19,20,21,22,23, 594: 8 0 0 0 0 0 0 Matched=6,9,10,18,19,20,21,22,23, Success=6,9,10,18,19,20,21,22,23, 595: 8 0 0 0 0 0 0 Matched=0,3,5,6,9,11,18,19,20,21,22,23, Success=0,3,5,6,9,11,18,19,20,21,22,23, 596: 8 0 0 0 0 0 0 Matched=6,9,11,18,19,20,21,22,23, Success=6,9,11,18,19,20,21,22,23, 597: 8 0 0 0 0 0 0 Matched=0,3,6,9,18,19,20,21,22,23, Success=0,3,6,9,18,19,20,21,22,23, 598: 8 0 0 0 0 0 0 Matched=6,9,18,19,20,21,22,23, Success=6,9,18,19,20,21,22,23, 599: 8 0 0 0 0 0 0 Matched=0,4,5,6,10,11,18,19,20,21,22,23, Success=0,4,5,6,10,11,18,19,20,21,22,23, 600: 8 0 0 0 0 0 0 Matched=6,10,11,18,19,20,21,22,23, Success=6,10,11,18,19,20,21,22,23, 601: 8 0 0 0 0 0 0 Matched=0,4,6,10,18,19,20,21,22,23, Success=0,4,6,10,18,19,20,21,22,23, 602: 8 0 0 0 0 0 0 Matched=6,10,18,19,20,21,22,23, Success=6,10,18,19,20,21,22,23, 603: 8 0 0 0 0 0 0 Matched=0,5,6,11,18,19,20,21,22,23, Success=0,5,6,11,18,19,20,21,22,23, 604: 8 0 0 0 0 0 0 Matched=6,11,18,19,20,21,22,23, Success=6,11,18,19,20,21,22,23, 605: 8 0 0 0 0 0 0 Matched=0,6,18,19,20,21,22,23, Success=0,6,18,19,20,21,22,23, 606: 8 0 0 0 0 0 0 Matched=6,18,19,20,21,22,23, Success=6,18,19,20,21,22,23, 607: 8 0 0 0 0 0 0 Matched=1,2,3,4,5,7,8,9,10,11,19,20,21,22,23, Success=1,2,3,4,5,7,8,9,10,11,19,20,21,22,23, 608: 8 0 0 0 0 0 0 Matched=7,8,9,10,11,19,20,21,22,23, Success=7,8,9,10,11,19,20,21,22,23, 609: 8 0 0 0 0 0 0 Matched=1,2,3,4,7,8,9,10,19,20,21,22,23, Success=1,2,3,4,7,8,9,10,19,20,21,22,23, 610: 8 0 0 0 0 0 0 Matched=7,8,9,10,19,20,21,22,23, Success=7,8,9,10,19,20,21,22,23, 611: 8 0 0 0 0 0 0 Matched=1,2,3,5,7,8,9,11,19,20,21,22,23, Success=1,2,3,5,7,8,9,11,19,20,21,22,23, 612: 8 0 0 0 0 0 0 Matched=7,8,9,11,19,20,21,22,23, Success=7,8,9,11,19,20,21,22,23, 613: 8 0 0 0 0 0 0 Matched=1,2,3,7,8,9,19,20,21,22,23, Success=1,2,3,7,8,9,19,20,21,22,23, 614: 8 0 0 0 0 0 0 Matched=7,8,9,19,20,21,22,23, Success=7,8,9,19,20,21,22,23, 615: 8 0 0 0 0 0 0 Matched=1,2,4,5,7,8,10,11,19,20,21,22,23, Success=1,2,4,5,7,8,10,11,19,20,21,22,23, 616: 8 0 0 0 0 0 0 Matched=7,8,10,11,19,20,21,22,23, Success=7,8,10,11,19,20,21,22,23, 617: 8 0 0 0 0 0 0 Matched=1,2,4,7,8,10,19,20,21,22,23, Success=1,2,4,7,8,10,19,20,21,22,23, 618: 8 0 0 0 0 0 0 Matched=7,8,10,19,20,21,22,23, Success=7,8,10,19,20,21,22,23, 619: 8 0 0 0 0 0 0 Matched=1,2,5,7,8,11,19,20,21,22,23, Success=1,2,5,7,8,11,19,20,21,22,23, 620: 8 0 0 0 0 0 0 Matched=7,8,11,19,20,21,22,23, Success=7,8,11,19,20,21,22,23, 621: 8 0 0 0 0 0 0 Matched=1,2,7,8,19,20,21,22,23, Success=1,2,7,8,19,20,21,22,23, 622: 8 0 0 0 0 0 0 Matched=7,8,19,20,21,22,23, Success=7,8,19,20,21,22,23, 623: 8 0 0 0 0 0 0 Matched=1,3,4,5,7,9,10,11,19,20,21,22,23, Success=1,3,4,5,7,9,10,11,19,20,21,22,23, 624: 8 0 0 0 0 0 0 Matched=7,9,10,11,19,20,21,22,23, Success=7,9,10,11,19,20,21,22,23, 625: 8 0 0 0 0 0 0 Matched=1,3,4,7,9,10,19,20,21,22,23, Success=1,3,4,7,9,10,19,20,21,22,23, 626: 8 0 0 0 0 0 0 Matched=7,9,10,19,20,21,22,23, Success=7,9,10,19,20,21,22,23, 627: 8 0 0 0 0 0 0 Matched=1,3,5,7,9,11,19,20,21,22,23, Success=1,3,5,7,9,11,19,20,21,22,23, 628: 8 0 0 0 0 0 0 Matched=7,9,11,19,20,21,22,23, Success=7,9,11,19,20,21,22,23, 629: 8 0 0 0 0 0 0 Matched=1,3,7,9,19,20,21,22,23, Success=1,3,7,9,19,20,21,22,23, 630: 8 0 0 0 0 0 0 Matched=7,9,19,20,21,22,23, Success=7,9,19,20,21,22,23, 631: 8 0 0 0 0 0 0 Matched=1,4,5,7,10,11,19,20,21,22,23, Success=1,4,5,7,10,11,19,20,21,22,23, 632: 8 0 0 0 0 0 0 Matched=7,10,11,19,20,21,22,23, Success=7,10,11,19,20,21,22,23, 633: 8 0 0 0 0 0 0 Matched=1,4,7,10,19,20,21,22,23, Success=1,4,7,10,19,20,21,22,23, 634: 8 0 0 0 0 0 0 Matched=7,10,19,20,21,22,23, Success=7,10,19,20,21,22,23, 635: 8 0 0 0 0 0 0 Matched=1,5,7,11,19,20,21,22,23, Success=1,5,7,11,19,20,21,22,23, 636: 8 0 0 0 0 0 0 Matched=7,11,19,20,21,22,23, Success=7,11,19,20,21,22,23, 637: 8 0 0 0 0 0 0 Matched=1,7,19,20,21,22,23, Success=1,7,19,20,21,22,23, 638: 8 0 0 0 0 0 0 Matched=7,19,20,21,22,23, Success=7,19,20,21,22,23, 639: 8 0 0 0 0 0 0 Matched=2,3,4,5,8,9,10,11,19,20,21,22,23, Success=2,3,4,5,8,9,10,11,19,20,21,22,23, 640: 8 0 0 0 0 0 0 Matched=8,9,10,11,19,20,21,22,23, Success=8,9,10,11,19,20,21,22,23, 641: 8 0 0 0 0 0 0 Matched=2,3,4,8,9,10,19,20,21,22,23, Success=2,3,4,8,9,10,19,20,21,22,23, 642: 8 0 0 0 0 0 0 Matched=8,9,10,19,20,21,22,23, Success=8,9,10,19,20,21,22,23, 643: 8 0 0 0 0 0 0 Matched=2,3,5,8,9,11,19,20,21,22,23, Success=2,3,5,8,9,11,19,20,21,22,23, 644: 8 0 0 0 0 0 0 Matched=8,9,11,19,20,21,22,23, Success=8,9,11,19,20,21,22,23, 645: 8 0 0 0 0 0 0 Matched=2,3,8,9,19,20,21,22,23, Success=2,3,8,9,19,20,21,22,23, 646: 8 0 0 0 0 0 0 Matched=8,9,19,20,21,22,23, Success=8,9,19,20,21,22,23, 647: 8 0 0 0 0 0 0 Matched=2,4,5,8,10,11,19,20,21,22,23, Success=2,4,5,8,10,11,19,20,21,22,23, 648: 8 0 0 0 0 0 0 Matched=8,10,11,19,20,21,22,23, Success=8,10,11,19,20,21,22,23, 649: 8 0 0 0 0 0 0 Matched=2,4,8,10,19,20,21,22,23, Success=2,4,8,10,19,20,21,22,23, 650: 8 0 0 0 0 0 0 Matched=8,10,19,20,21,22,23, Success=8,10,19,20,21,22,23, 651: 8 0 0 0 0 0 0 Matched=2,5,8,11,19,20,21,22,23, Success=2,5,8,11,19,20,21,22,23, 652: 8 0 0 0 0 0 0 Matched=8,11,19,20,21,22,23, Success=8,11,19,20,21,22,23, 653: 8 0 0 0 0 0 0 Matched=2,8,19,20,21,22,23, Success=2,8,19,20,21,22,23, 654: 8 0 0 0 0 0 0 Matched=8,19,20,21,22,23, Success=8,19,20,21,22,23, 655: 8 0 0 0 0 0 0 Matched=3,4,5,9,10,11,19,20,21,22,23, Success=3,4,5,9,10,11,19,20,21,22,23, 656: 8 0 0 0 0 0 0 Matched=9,10,11,19,20,21,22,23, Success=9,10,11,19,20,21,22,23, 657: 8 0 0 0 0 0 0 Matched=3,4,9,10,19,20,21,22,23, Success=3,4,9,10,19,20,21,22,23, 658: 8 0 0 0 0 0 0 Matched=9,10,19,20,21,22,23, Success=9,10,19,20,21,22,23, 659: 8 0 0 0 0 0 0 Matched=3,5,9,11,19,20,21,22,23, Success=3,5,9,11,19,20,21,22,23, 660: 8 0 0 0 0 0 0 Matched=9,11,19,20,21,22,23, Success=9,11,19,20,21,22,23, 661: 8 0 0 0 0 0 0 Matched=3,9,19,20,21,22,23, Success=3,9,19,20,21,22,23, 662: 8 0 0 0 0 0 0 Matched=9,19,20,21,22,23, Success=9,19,20,21,22,23, 663: 8 0 0 0 0 0 0 Matched=4,5,10,11,19,20,21,22,23, Success=4,5,10,11,19,20,21,22,23, 664: 8 0 0 0 0 0 0 Matched=10,11,19,20,21,22,23, Success=10,11,19,20,21,22,23, 665: 8 0 0 0 0 0 0 Matched=4,10,19,20,21,22,23, Success=4,10,19,20,21,22,23, 666: 8 0 0 0 0 0 0 Matched=10,19,20,21,22,23, Success=10,19,20,21,22,23, 667: 8 0 0 0 0 0 0 Matched=5,11,19,20,21,22,23, Success=5,11,19,20,21,22,23, 668: 8 0 0 0 0 0 0 Matched=11,19,20,21,22,23, Success=11,19,20,21,22,23, 669: 8 0 0 0 0 0 0 Matched=19,20,21,22,23, Success=19,20,21,22,23, 670: 8 0 0 0 0 0 0 Matched=1,2,3,4,5,7,8,9,10,11,18,19,20,21,22,23, Success=1,2,3,4,5,7,8,9,10,11,18,19,20,21,22,23, 671: 8 0 0 0 0 0 0 Matched=7,8,9,10,11,18,19,20,21,22,23, Success=7,8,9,10,11,18,19,20,21,22,23, 672: 8 0 0 0 0 0 0 Matched=1,2,3,4,7,8,9,10,18,19,20,21,22,23, Success=1,2,3,4,7,8,9,10,18,19,20,21,22,23, 673: 8 0 0 0 0 0 0 Matched=7,8,9,10,18,19,20,21,22,23, Success=7,8,9,10,18,19,20,21,22,23, 674: 8 0 0 0 0 0 0 Matched=1,2,3,5,7,8,9,11,18,19,20,21,22,23, Success=1,2,3,5,7,8,9,11,18,19,20,21,22,23, 675: 8 0 0 0 0 0 0 Matched=7,8,9,11,18,19,20,21,22,23, Success=7,8,9,11,18,19,20,21,22,23, 676: 8 0 0 0 0 0 0 Matched=1,2,3,7,8,9,18,19,20,21,22,23, Success=1,2,3,7,8,9,18,19,20,21,22,23, 677: 8 0 0 0 0 0 0 Matched=7,8,9,18,19,20,21,22,23, Success=7,8,9,18,19,20,21,22,23, 678: 8 0 0 0 0 0 0 Matched=1,2,4,5,7,8,10,11,18,19,20,21,22,23, Success=1,2,4,5,7,8,10,11,18,19,20,21,22,23, 679: 8 0 0 0 0 0 0 Matched=7,8,10,11,18,19,20,21,22,23, Success=7,8,10,11,18,19,20,21,22,23, 680: 8 0 0 0 0 0 0 Matched=1,2,4,7,8,10,18,19,20,21,22,23, Success=1,2,4,7,8,10,18,19,20,21,22,23, 681: 8 0 0 0 0 0 0 Matched=7,8,10,18,19,20,21,22,23, Success=7,8,10,18,19,20,21,22,23, 682: 8 0 0 0 0 0 0 Matched=1,2,5,7,8,11,18,19,20,21,22,23, Success=1,2,5,7,8,11,18,19,20,21,22,23, 683: 8 0 0 0 0 0 0 Matched=7,8,11,18,19,20,21,22,23, Success=7,8,11,18,19,20,21,22,23, 684: 8 0 0 0 0 0 0 Matched=1,2,7,8,18,19,20,21,22,23, Success=1,2,7,8,18,19,20,21,22,23, 685: 8 0 0 0 0 0 0 Matched=7,8,18,19,20,21,22,23, Success=7,8,18,19,20,21,22,23, 686: 8 0 0 0 0 0 0 Matched=1,3,4,5,7,9,10,11,18,19,20,21,22,23, Success=1,3,4,5,7,9,10,11,18,19,20,21,22,23, 687: 8 0 0 0 0 0 0 Matched=7,9,10,11,18,19,20,21,22,23, Success=7,9,10,11,18,19,20,21,22,23, 688: 8 0 0 0 0 0 0 Matched=1,3,4,7,9,10,18,19,20,21,22,23, Success=1,3,4,7,9,10,18,19,20,21,22,23, 689: 8 0 0 0 0 0 0 Matched=7,9,10,18,19,20,21,22,23, Success=7,9,10,18,19,20,21,22,23, 690: 8 0 0 0 0 0 0 Matched=1,3,5,7,9,11,18,19,20,21,22,23, Success=1,3,5,7,9,11,18,19,20,21,22,23, 691: 8 0 0 0 0 0 0 Matched=7,9,11,18,19,20,21,22,23, Success=7,9,11,18,19,20,21,22,23, 692: 8 0 0 0 0 0 0 Matched=1,3,7,9,18,19,20,21,22,23, Success=1,3,7,9,18,19,20,21,22,23, 693: 8 0 0 0 0 0 0 Matched=7,9,18,19,20,21,22,23, Success=7,9,18,19,20,21,22,23, 694: 8 0 0 0 0 0 0 Matched=1,4,5,7,10,11,18,19,20,21,22,23, Success=1,4,5,7,10,11,18,19,20,21,22,23, 695: 8 0 0 0 0 0 0 Matched=7,10,11,18,19,20,21,22,23, Success=7,10,11,18,19,20,21,22,23, 696: 8 0 0 0 0 0 0 Matched=1,4,7,10,18,19,20,21,22,23, Success=1,4,7,10,18,19,20,21,22,23, 697: 8 0 0 0 0 0 0 Matched=7,10,18,19,20,21,22,23, Success=7,10,18,19,20,21,22,23, 698: 8 0 0 0 0 0 0 Matched=1,5,7,11,18,19,20,21,22,23, Success=1,5,7,11,18,19,20,21,22,23, 699: 8 0 0 0 0 0 0 Matched=7,11,18,19,20,21,22,23, Success=7,11,18,19,20,21,22,23, 700: 8 0 0 0 0 0 0 Matched=1,7,18,19,20,21,22,23, Success=1,7,18,19,20,21,22,23, 701: 8 0 0 0 0 0 0 Matched=7,18,19,20,21,22,23, Success=7,18,19,20,21,22,23, 702: 8 0 0 0 0 0 0 Matched=2,3,4,5,8,9,10,11,18,19,20,21,22,23, Success=2,3,4,5,8,9,10,11,18,19,20,21,22,23, 703: 8 0 0 0 0 0 0 Matched=8,9,10,11,18,19,20,21,22,23, Success=8,9,10,11,18,19,20,21,22,23, 704: 8 0 0 0 0 0 0 Matched=2,3,4,8,9,10,18,19,20,21,22,23, Success=2,3,4,8,9,10,18,19,20,21,22,23, 705: 8 0 0 0 0 0 0 Matched=8,9,10,18,19,20,21,22,23, Success=8,9,10,18,19,20,21,22,23, 706: 8 0 0 0 0 0 0 Matched=2,3,5,8,9,11,18,19,20,21,22,23, Success=2,3,5,8,9,11,18,19,20,21,22,23, 707: 8 0 0 0 0 0 0 Matched=8,9,11,18,19,20,21,22,23, Success=8,9,11,18,19,20,21,22,23, 708: 8 0 0 0 0 0 0 Matched=2,3,8,9,18,19,20,21,22,23, Success=2,3,8,9,18,19,20,21,22,23, 709: 8 0 0 0 0 0 0 Matched=8,9,18,19,20,21,22,23, Success=8,9,18,19,20,21,22,23, 710: 8 0 0 0 0 0 0 Matched=2,4,5,8,10,11,18,19,20,21,22,23, Success=2,4,5,8,10,11,18,19,20,21,22,23, 711: 8 0 0 0 0 0 0 Matched=8,10,11,18,19,20,21,22,23, Success=8,10,11,18,19,20,21,22,23, 712: 8 0 0 0 0 0 0 Matched=2,4,8,10,18,19,20,21,22,23, Success=2,4,8,10,18,19,20,21,22,23, 713: 8 0 0 0 0 0 0 Matched=8,10,18,19,20,21,22,23, Success=8,10,18,19,20,21,22,23, 714: 8 0 0 0 0 0 0 Matched=2,5,8,11,18,19,20,21,22,23, Success=2,5,8,11,18,19,20,21,22,23, 715: 8 0 0 0 0 0 0 Matched=8,11,18,19,20,21,22,23, Success=8,11,18,19,20,21,22,23, 716: 8 0 0 0 0 0 0 Matched=2,8,18,19,20,21,22,23, Success=2,8,18,19,20,21,22,23, 717: 8 0 0 0 0 0 0 Matched=8,18,19,20,21,22,23, Success=8,18,19,20,21,22,23, 718: 8 0 0 0 0 0 0 Matched=3,4,5,9,10,11,18,19,20,21,22,23, Success=3,4,5,9,10,11,18,19,20,21,22,23, 719: 8 0 0 0 0 0 0 Matched=9,10,11,18,19,20,21,22,23, Success=9,10,11,18,19,20,21,22,23, 720: 8 0 0 0 0 0 0 Matched=3,4,9,10,18,19,20,21,22,23, Success=3,4,9,10,18,19,20,21,22,23, 721: 8 0 0 0 0 0 0 Matched=9,10,18,19,20,21,22,23, Success=9,10,18,19,20,21,22,23, 722: 8 0 0 0 0 0 0 Matched=3,5,9,11,18,19,20,21,22,23, Success=3,5,9,11,18,19,20,21,22,23, 723: 8 0 0 0 0 0 0 Matched=9,11,18,19,20,21,22,23, Success=9,11,18,19,20,21,22,23, 724: 8 0 0 0 0 0 0 Matched=3,9,18,19,20,21,22,23, Success=3,9,18,19,20,21,22,23, 725: 8 0 0 0 0 0 0 Matched=9,18,19,20,21,22,23, Success=9,18,19,20,21,22,23, 726: 8 0 0 0 0 0 0 Matched=4,5,10,11,18,19,20,21,22,23, Success=4,5,10,11,18,19,20,21,22,23, 727: 8 0 0 0 0 0 0 Matched=10,11,18,19,20,21,22,23, Success=10,11,18,19,20,21,22,23, 728: 8 0 0 0 0 0 0 Matched=4,10,18,19,20,21,22,23, Success=4,10,18,19,20,21,22,23, 729: 8 0 0 0 0 0 0 Matched=10,18,19,20,21,22,23, Success=10,18,19,20,21,22,23, 730: 8 0 0 0 0 0 0 Matched=5,11,18,19,20,21,22,23, Success=5,11,18,19,20,21,22,23, 731: 8 0 0 0 0 0 0 Matched=11,18,19,20,21,22,23, Success=11,18,19,20,21,22,23, 732: 8 0 0 0 0 0 0 Matched=18,19,20,21,22,23, Success=18,19,20,21,22,23, - - - - - - - - - - - - - - - - - - RULE 5.0, CharisRules.gdh(684): g035F { shift.y = ((@1.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ cTakesLDia ; RULE 5.1, CharisRules.gdh(684): g035F { shift.y = ((@2.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ cTakesLDia ; RULE 5.2, CharisRules.gdh(684): g035F { shift.y = ((@3.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ cTakesLDia ; RULE 5.3, CharisRules.gdh(684): g035F { shift.y = ((@4.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ cTakesLDia ; RULE 5.4, CharisRules.gdh(684): g035F { shift.y = ((@5.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ cTakesLDia ; RULE 5.5, CharisRules.gdh(684): g035F { shift.y = ((@6.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ cTakesLDia ; RULE 5.6, CharisRules.gdh(687): cLDblDia { shift.y = ((@1.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ cTakesLDia ; RULE 5.7, CharisRules.gdh(687): cLDblDia { shift.y = ((@2.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ cTakesLDia ; RULE 5.8, CharisRules.gdh(687): cLDblDia { shift.y = ((@3.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ cTakesLDia ; RULE 5.9, CharisRules.gdh(687): cLDblDia { shift.y = ((@4.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ cTakesLDia ; RULE 5.10, CharisRules.gdh(687): cLDblDia { shift.y = ((@5.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ cTakesLDia ; RULE 5.11, CharisRules.gdh(687): cLDblDia { shift.y = ((@6.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ cTakesLDia ; RULE 5.12, CharisRules.gdh(690): cLDblDia { shift.y = (@1.bb.bottom - @7.bb.top) - 205; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ ; RULE 5.13, CharisRules.gdh(690): cLDblDia { shift.y = (@2.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ ; RULE 5.14, CharisRules.gdh(690): cLDblDia { shift.y = (@3.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ ; RULE 5.15, CharisRules.gdh(690): cLDblDia { shift.y = (@4.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ ; RULE 5.16, CharisRules.gdh(690): cLDblDia { shift.y = (@5.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ ; RULE 5.17, CharisRules.gdh(690): cLDblDia { shift.y = (@6.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ ; RULE 5.18, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY cDia cDia cDia cDia cDia _ cTakesLDia ; RULE 5.19, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY cDia cDia cDia cDia _ cTakesLDia ; RULE 5.20, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY cDia cDia cDia _ cTakesLDia ; RULE 5.21, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY cDia cDia _ cTakesLDia ; RULE 5.22, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY cDia _ cTakesLDia ; RULE 5.23, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY ANY _ cTakesLDia ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/dbg_glyphattrs.txt000066400000000000000000017621671411153030700272300ustar00rootroot00000000000000GLYPH ATTRIBUTE IDS 0: *actualForPseudo* 1: *skipPasses* 2: breakweight 3: directionality 4: component.p1 5: component.p2 6: component.f1 7: component.f2 8: component.f3 9: component.p1.top 10: component.p1.bottom 11: component.p1.left 12: component.p1.right 13: component.p2.top 14: component.p2.bottom 15: component.p2.left 16: component.p2.right 17: component.f1.top 18: component.f1.bottom 19: component.f1.left 20: component.f1.right 21: component.f2.top 22: component.f2.bottom 23: component.f2.left 24: component.f2.right 25: component.f3.top 26: component.f3.bottom 27: component.f3.left 28: component.f3.right 29: order 30: H.x 31: H.y 32: L.x 33: L.y 34: O.x 35: O.y 36: R.x 37: R.y 38: U.x 39: U.y 40: C11.x 41: C11.y 42: C12.x 43: C12.y 44: C22.x 45: C22.y 46: L11.x 47: L11.y 48: L12.x 49: L12.y 50: L13.x 51: L13.y 52: L22.x 53: L22.y 54: L23.x 55: L23.y 56: L33.x 57: L33.y 58: U11.x 59: U11.y 60: U12.x 61: U12.y 62: U13.x 63: U13.y 64: U22.x 65: U22.y 66: U23.x 67: U23.y 68: U33.x 69: U33.y 70: RM.x 71: RM.y 72: TL.x 73: TL.y 74: TML.x 75: TML.y 76: UM.x 77: UM.y 78: LM.x 79: LM.y 80: HM.x 81: HM.y 82: OM.x 83: OM.y 84: C13.x 85: C13.y 86: C23.x 87: C23.y 88: C33.x 89: C33.y 90: tone GLYPH ATTRIBUTE VALUES 0 [0x0000] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1 [0x0001] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2 [0x0002] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 3 [0x0003] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 300 [0x012c] L.x = 300 [0x012c] L.y = -100 [0xff9c] O.x = 350 [0x015e] R.x = 600 [0x0258] R.y = 1000 [0x03e8] U.x = 300 [0x012c] U.y = 1500 [0x05dc] 4 [0x0004] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 5 [0x0005] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 6 [0x0006] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 7 [0x0007] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 8 [0x0008] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 9 [0x0009] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 10 [0x000a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 11 [0x000b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 12 [0x000c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 13 [0x000d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 14 [0x000e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 15 [0x000f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 16 [0x0010] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 327 [0x0147] U.y = 1100 [0x044c] 17 [0x0011] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 18 [0x0012] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 19 [0x0013] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 20 [0x0014] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 21 [0x0015] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 22 [0x0016] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 23 [0x0017] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 24 [0x0018] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 575 [0x023f] L.y = -100 [0xff9c] U.x = 575 [0x023f] U.y = 1500 [0x05dc] 25 [0x0019] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 26 [0x001a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 27 [0x001b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 575 [0x023f] L.y = -100 [0xff9c] U.x = 575 [0x023f] U.y = 1500 [0x05dc] 28 [0x001c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1500 [0x05dc] 29 [0x001d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 30 [0x001e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 31 [0x001f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 32 [0x0020] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 33 [0x0021] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 34 [0x0022] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 35 [0x0023] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 36 [0x0024] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1500 [0x05dc] 37 [0x0025] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 612 [0x0264] L.y = -100 [0xff9c] U.x = 612 [0x0264] U.y = 1500 [0x05dc] 38 [0x0026] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 730 [0x02da] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 39 [0x0027] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -100 [0xff9c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 40 [0x0028] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 41 [0x0029] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 549 [0x0225] L.y = -100 [0xff9c] U.x = 549 [0x0225] U.y = 1500 [0x05dc] 42 [0x002a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -100 [0xff9c] U.x = 766 [0x02fe] U.y = 1500 [0x05dc] 43 [0x002b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 44 [0x002c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 45 [0x002d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 410 [0x019a] L.y = -100 [0xff9c] U.x = 675 [0x02a3] U.y = 1500 [0x05dc] 46 [0x002e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 686 [0x02ae] L.x = 686 [0x02ae] L.y = -100 [0xff9c] U.x = 686 [0x02ae] U.y = 1500 [0x05dc] 47 [0x002f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -100 [0xff9c] R.x = 587 [0x024b] R.y = 1000 [0x03e8] U.x = 553 [0x0229] U.y = 1500 [0x05dc] 48 [0x0030] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 895 [0x037f] L.y = -100 [0xff9c] U.x = 895 [0x037f] U.y = 1500 [0x05dc] 49 [0x0031] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -100 [0xff9c] U.x = 734 [0x02de] U.y = 1500 [0x05dc] 50 [0x0032] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 51 [0x0033] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1500 [0x05dc] 52 [0x0034] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 757 [0x02f5] L.y = -270 [0xfef2] U.x = 757 [0x02f5] U.y = 1500 [0x05dc] 53 [0x0035] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -100 [0xff9c] U.x = 603 [0x025b] U.y = 1500 [0x05dc] 54 [0x0036] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -100 [0xff9c] U.x = 563 [0x0233] U.y = 1500 [0x05dc] 55 [0x0037] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 56 [0x0038] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 57 [0x0039] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 705 [0x02c1] L.x = 705 [0x02c1] L.y = -100 [0xff9c] O.x = 727 [0x02d7] U.x = 705 [0x02c1] U.y = 1500 [0x05dc] 58 [0x003a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 973 [0x03cd] L.y = -100 [0xff9c] U.x = 983 [0x03d7] U.y = 1500 [0x05dc] 59 [0x003b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 649 [0x0289] L.y = -100 [0xff9c] U.x = 649 [0x0289] U.y = 1500 [0x05dc] 60 [0x003c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1500 [0x05dc] 61 [0x003d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 62 [0x003e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 63 [0x003f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 64 [0x0040] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 65 [0x0041] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 335 [0x014f] U.y = 1500 [0x05dc] 66 [0x0042] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 67 [0x0043] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 294 [0x0126] U.y = 1500 [0x05dc] 68 [0x0044] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 69 [0x0045] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 600 [0x0258] L.x = 600 [0x0258] L.y = -100 [0xff9c] R.x = 1137 [0x0471] R.y = 1000 [0x03e8] U.x = 600 [0x0258] U.y = 1540 [0x0604] 70 [0x0046] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 525 [0x020d] L.x = 535 [0x0217] L.y = -100 [0xff9c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1100 [0x044c] 71 [0x0047] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 586 [0x024a] L.x = 586 [0x024a] L.y = -100 [0xff9c] R.x = 1101 [0x044d] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1540 [0x0604] 72 [0x0048] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1100 [0x044c] 73 [0x0049] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 428 [0x01ac] L.x = 296 [0x0128] L.y = -100 [0xff9c] U.x = 506 [0x01fa] U.y = 1480 [0x05c8] 74 [0x004a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1100 [0x044c] 75 [0x004b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 76 [0x004c] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 316 [0x013c] L.y = -100 [0xff9c] O.x = 466 [0x01d2] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 77 [0x004d] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 137 [0x0089] L.y = -500 [0xfe0c] U.x = 328 [0x0148] U.y = 1100 [0x044c] 78 [0x004e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 816 [0x0330] L.x = 551 [0x0227] L.y = -100 [0xff9c] R.x = 1094 [0x0446] R.y = 1000 [0x03e8] U.x = 551 [0x0227] U.y = 1540 [0x0604] 79 [0x004f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -100 [0xff9c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1580 [0x062c] 80 [0x0050] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 868 [0x0364] L.x = 868 [0x0364] L.y = -100 [0xff9c] U.x = 868 [0x0364] U.y = 1100 [0x044c] 81 [0x0051] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1100 [0x044c] 82 [0x0052] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1100 [0x044c] 83 [0x0053] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 301 [0x012d] H.y = -435 [0xfe4d] L.x = 559 [0x022f] L.y = -500 [0xfe0c] R.x = 1145 [0x0479] R.y = 1000 [0x03e8] U.x = 559 [0x022f] U.y = 1100 [0x044c] 84 [0x0054] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 582 [0x0246] L.y = -500 [0xfe0c] R.x = 1124 [0x0464] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 85 [0x0055] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 443 [0x01bb] U.y = 1100 [0x044c] 86 [0x0056] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -100 [0xff9c] U.x = 427 [0x01ab] U.y = 1100 [0x044c] 87 [0x0057] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -100 [0xff9c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 88 [0x0058] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 89 [0x0059] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 555 [0x022b] L.x = 541 [0x021d] L.y = -100 [0xff9c] O.x = 655 [0x028f] U.x = 541 [0x021d] U.y = 1100 [0x044c] 90 [0x005a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 830 [0x033e] U.y = 1100 [0x044c] 91 [0x005b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 785 [0x0311] L.x = 522 [0x020a] L.y = -100 [0xff9c] U.x = 522 [0x020a] U.y = 1100 [0x044c] 92 [0x005c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1100 [0x044c] 93 [0x005d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 94 [0x005e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 95 [0x005f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 96 [0x0060] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 97 [0x0061] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 98 [0x0062] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 99 [0x0063] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2060 [0x080c] 100 [0x0064] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -500 [0xfe0c] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 101 [0x0065] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 102 [0x0066] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -100 [0xff9c] U.x = 734 [0x02de] U.y = 1900 [0x076c] 103 [0x0067] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 104 [0x0068] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 105 [0x0069] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 106 [0x006a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 107 [0x006b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 108 [0x006c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 109 [0x006d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 110 [0x006e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1660 [0x067c] 111 [0x006f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -500 [0xfe0c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1100 [0x044c] 112 [0x0070] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 113 [0x0071] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 114 [0x0072] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 115 [0x0073] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 116 [0x0074] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 117 [0x0075] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 118 [0x0076] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 119 [0x0077] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 120 [0x0078] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 121 [0x0079] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 122 [0x007a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 123 [0x007b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 124 [0x007c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 125 [0x007d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 126 [0x007e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 127 [0x007f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 128 [0x0080] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 129 [0x0081] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 130 [0x0082] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 131 [0x0083] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 132 [0x0084] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 133 [0x0085] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 134 [0x0086] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 135 [0x0087] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 136 [0x0088] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 137 [0x0089] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 631 [0x0277] L.y = -100 [0xff9c] U.x = 631 [0x0277] U.y = 1540 [0x0604] 138 [0x008a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 139 [0x008b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 140 [0x008c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 141 [0x008d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 421 [0x01a5] U.y = 1500 [0x05dc] 142 [0x008e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 323 [0x0143] U.y = 1500 [0x05dc] 143 [0x008f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 144 [0x0090] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1100 [0x044c] L.y = -100 [0xff9c] U.x = 1100 [0x044c] U.y = 1500 [0x05dc] 145 [0x0091] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 146 [0x0092] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 147 [0x0093] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 148 [0x0094] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 149 [0x0095] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 150 [0x0096] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 151 [0x0097] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 152 [0x0098] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 153 [0x0099] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 607 [0x025f] L.y = -100 [0xff9c] U.x = 607 [0x025f] U.y = 1500 [0x05dc] 154 [0x009a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 155 [0x009b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 608 [0x0260] L.y = -100 [0xff9c] U.x = 608 [0x0260] U.y = 1100 [0x044c] 156 [0x009c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 157 [0x009d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 158 [0x009e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 159 [0x009f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 160 [0x00a0] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 770 [0x0302] L.x = 770 [0x0302] L.y = -100 [0xff9c] O.x = 792 [0x0318] R.x = 1477 [0x05c5] R.y = 1000 [0x03e8] U.x = 770 [0x0302] U.y = 1100 [0x044c] 161 [0x00a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 608 [0x0260] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1100 [0x044c] 162 [0x00a2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 163 [0x00a3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 164 [0x00a4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 165 [0x00a5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 166 [0x00a6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 299 [0x012b] L.y = -500 [0xfe0c] U.x = 299 [0x012b] U.y = 1540 [0x0604] 167 [0x00a7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 168 [0x00a8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 169 [0x00a9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 170 [0x00aa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 171 [0x00ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 172 [0x00ac] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] H.x = 300 [0x012c] L.x = 300 [0x012c] L.y = -100 [0xff9c] O.x = 350 [0x015e] R.x = 600 [0x0258] R.y = 1000 [0x03e8] U.x = 300 [0x012c] U.y = 1500 [0x05dc] 173 [0x00ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 174 [0x00ae] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 175 [0x00af] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 176 [0x00b0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1030 [0x0406] L.y = -100 [0xff9c] U.x = 1030 [0x0406] U.y = 1500 [0x05dc] 177 [0x00b1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 840 [0x0348] L.x = 840 [0x0348] L.y = -100 [0xff9c] O.x = 897 [0x0381] R.x = 1679 [0x068f] R.y = 1000 [0x03e8] U.x = 840 [0x0348] U.y = 1100 [0x044c] 178 [0x00b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 179 [0x00b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 180 [0x00b4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 181 [0x00b5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 182 [0x00b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 183 [0x00b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 184 [0x00b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 185 [0x00b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 186 [0x00ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 187 [0x00bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1900 [0x076c] 188 [0x00bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 189 [0x00bd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 190 [0x00be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 191 [0x00bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 192 [0x00c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 193 [0x00c1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 194 [0x00c2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 195 [0x00c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 196 [0x00c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 197 [0x00c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 198 [0x00c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 199 [0x00c7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 200 [0x00c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 201 [0x00c9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 202 [0x00ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 203 [0x00cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 204 [0x00cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 205 [0x00cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 206 [0x00ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 207 [0x00cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 208 [0x00d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 209 [0x00d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 210 [0x00d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 533 [0x0215] L.x = 533 [0x0215] L.y = -100 [0xff9c] O.x = 583 [0x0247] U.x = 533 [0x0215] U.y = 1100 [0x044c] 211 [0x00d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 212 [0x00d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 213 [0x00d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 214 [0x00d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 215 [0x00d7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 216 [0x00d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 217 [0x00d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 218 [0x00da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 219 [0x00db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 305 [0x0131] U.y = 1500 [0x05dc] 220 [0x00dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 221 [0x00dd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 222 [0x00de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 235 [0x00eb] L.y = -500 [0xfe0c] 223 [0x00df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 224 [0x00e0] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 279 [0x0117] L.y = -400 [0xfe70] 225 [0x00e1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 335 [0x014f] U.y = 1500 [0x05dc] 226 [0x00e2] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 487 [0x01e7] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 487 [0x01e7] U.y = 1100 [0x044c] 227 [0x00e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 510 [0x01fe] L.y = -100 [0xff9c] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 228 [0x00e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 355 [0x0163] L.y = -525 [0xfdf3] U.x = 355 [0x0163] U.y = 200 [0x00c8] 229 [0x00e5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 360 [0x0168] L.y = 750 [0x02ee] U.x = 360 [0x0168] U.y = 1450 [0x05aa] 230 [0x00e6] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 231 [0x00e7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 232 [0x00e8] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -500 [0xfe0c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 233 [0x00e9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 234 [0x00ea] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] 235 [0x00eb] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 236 [0x00ec] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] 237 [0x00ed] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 238 [0x00ee] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1825 [0x0721] 239 [0x00ef] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 240 [0x00f0] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] 241 [0x00f1] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 242 [0x00f2] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 243 [0x00f3] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -500 [0xfe0c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 244 [0x00f4] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 245 [0x00f5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 629 [0x0275] U.y = 1790 [0x06fe] 246 [0x00f6] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 247 [0x00f7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 394 [0x018a] U.y = 1790 [0x06fe] 248 [0x00f8] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 249 [0x00f9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1825 [0x0721] 250 [0x00fa] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1900 [0x076c] 251 [0x00fb] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1717 [0x06b5] 252 [0x00fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 510 [0x01fe] L.y = -100 [0xff9c] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 253 [0x00fd] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 254 [0x00fe] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1470 [0x05be] 255 [0x00ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 510 [0x01fe] L.y = -100 [0xff9c] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 256 [0x0100] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1870 [0x074e] 257 [0x0101] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 258 [0x0102] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1905 [0x0771] 259 [0x0103] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 2060 [0x080c] 260 [0x0104] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1580 [0x062c] 261 [0x0105] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1500 [0x05dc] 262 [0x0106] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -500 [0xfe0c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 263 [0x0107] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -657 [0xfd6f] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 264 [0x0108] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 846 [0x034e] L.y = -400 [0xfe70] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 265 [0x0109] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -500 [0xfe0c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 266 [0x010a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 510 [0x01fe] L.y = -100 [0xff9c] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 267 [0x010b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 510 [0x01fe] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 268 [0x010c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 487 [0x01e7] L.y = -100 [0xff9c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 487 [0x01e7] U.y = 1500 [0x05dc] 269 [0x010d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 761 [0x02f9] L.x = 487 [0x01e7] L.y = -500 [0xfe0c] O.x = 904 [0x0388] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 487 [0x01e7] U.y = 1100 [0x044c] 270 [0x010e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 504 [0x01f8] L.y = -100 [0xff9c] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 504 [0x01f8] U.y = 1100 [0x044c] 271 [0x010f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 504 [0x01f8] L.y = -100 [0xff9c] R.x = 1042 [0x0412] R.y = 1000 [0x03e8] U.x = 504 [0x01f8] U.y = 1100 [0x044c] 272 [0x0110] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 332 [0x014c] L.y = 725 [0x02d5] U.x = 332 [0x014c] U.y = 1457 [0x05b1] 273 [0x0111] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1100 [0x044c] 274 [0x0112] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1100 [0x044c] 275 [0x0113] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 386 [0x0182] L.y = 725 [0x02d5] U.x = 386 [0x0182] U.y = 1457 [0x05b1] 276 [0x0114] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 277 [0x0115] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 278 [0x0116] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 279 [0x0117] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 280 [0x0118] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -500 [0xfe0c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 281 [0x0119] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 282 [0x011a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 283 [0x011b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 284 [0x011c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 285 [0x011d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 286 [0x011e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 287 [0x011f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -500 [0xfe0c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 288 [0x0120] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 289 [0x0121] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 290 [0x0122] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 291 [0x0123] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1900 [0x076c] 292 [0x0124] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 293 [0x0125] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 294 [0x0126] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1470 [0x05be] 295 [0x0127] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 296 [0x0128] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1870 [0x074e] 297 [0x0129] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 298 [0x012a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1870 [0x074e] 299 [0x012b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1660 [0x067c] 300 [0x012c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 2060 [0x080c] 301 [0x012d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1580 [0x062c] 302 [0x012e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -100 [0xff9c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1500 [0x05dc] 303 [0x012f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -500 [0xfe0c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1100 [0x044c] 304 [0x0130] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -657 [0xfd6f] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1100 [0x044c] 305 [0x0131] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 920 [0x0398] L.y = -400 [0xfe70] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1100 [0x044c] 306 [0x0132] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 587 [0x024b] L.x = 587 [0x024b] L.y = -500 [0xfe0c] O.x = 978 [0x03d2] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 587 [0x024b] U.y = 1100 [0x044c] 307 [0x0133] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 588 [0x024c] L.y = -100 [0xff9c] U.x = 588 [0x024c] U.y = 1100 [0x044c] 308 [0x0134] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 568 [0x0238] L.x = 568 [0x0238] L.y = -100 [0xff9c] O.x = 621 [0x026d] R.x = 1155 [0x0483] R.y = 1000 [0x03e8] U.x = 568 [0x0238] U.y = 1100 [0x044c] 309 [0x0135] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1457 [0x05b1] 310 [0x0136] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 738 [0x02e2] L.x = 738 [0x02e2] L.y = -100 [0xff9c] O.x = 792 [0x0318] R.x = 1477 [0x05c5] R.y = 1000 [0x03e8] U.x = 738 [0x02e2] U.y = 1100 [0x044c] 311 [0x0137] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 770 [0x0302] L.x = 770 [0x0302] L.y = -100 [0xff9c] O.x = 792 [0x0318] R.x = 1477 [0x05c5] R.y = 1000 [0x03e8] U.x = 770 [0x0302] U.y = 1100 [0x044c] 312 [0x0138] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 485 [0x01e5] L.y = 725 [0x02d5] U.x = 485 [0x01e5] U.y = 1450 [0x05aa] 313 [0x0139] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 770 [0x0302] L.x = 770 [0x0302] L.y = -100 [0xff9c] O.x = 792 [0x0318] R.x = 1477 [0x05c5] R.y = 1000 [0x03e8] U.x = 770 [0x0302] U.y = 1500 [0x05dc] 314 [0x013a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 770 [0x0302] L.x = 770 [0x0302] L.y = -100 [0xff9c] O.x = 792 [0x0318] R.x = 1477 [0x05c5] R.y = 1000 [0x03e8] U.x = 770 [0x0302] U.y = 1500 [0x05dc] 315 [0x013b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 738 [0x02e2] L.y = -100 [0xff9c] U.x = 738 [0x02e2] U.y = 1100 [0x044c] 316 [0x013c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 485 [0x01e5] L.y = 725 [0x02d5] U.x = 485 [0x01e5] U.y = 1450 [0x05aa] 317 [0x013d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1100 [0x044c] 318 [0x013e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 867 [0x0363] L.y = -500 [0xfe0c] U.x = 867 [0x0363] U.y = 1500 [0x05dc] 319 [0x013f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 948 [0x03b4] L.y = -500 [0xfe0c] U.x = 948 [0x03b4] U.y = 1540 [0x0604] 320 [0x0140] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 683 [0x02ab] L.y = -100 [0xff9c] U.x = 683 [0x02ab] U.y = 1500 [0x05dc] 321 [0x0141] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 454 [0x01c6] L.y = 725 [0x02d5] U.x = 454 [0x01c6] U.y = 1650 [0x0672] 322 [0x0142] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 561 [0x0231] L.y = -100 [0xff9c] U.x = 561 [0x0231] U.y = 1100 [0x044c] 323 [0x0143] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 324 [0x0144] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 325 [0x0145] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] 326 [0x0146] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 327 [0x0147] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] 328 [0x0148] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 329 [0x0149] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2225 [0x08b1] 330 [0x014a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 331 [0x014b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] 332 [0x014c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -500 [0xfe0c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 333 [0x014d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 334 [0x014e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 335 [0x014f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 336 [0x0150] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 802 [0x0322] U.y = 2190 [0x088e] 337 [0x0151] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 338 [0x0152] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 567 [0x0237] U.y = 2190 [0x088e] 339 [0x0153] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 340 [0x0154] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2225 [0x08b1] 341 [0x0155] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2300 [0x08fc] 342 [0x0156] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2117 [0x0845] 343 [0x0157] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -500 [0xfe0c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 344 [0x0158] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 683 [0x02ab] L.y = -100 [0xff9c] U.x = 683 [0x02ab] U.y = 1935 [0x078f] 345 [0x0159] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 346 [0x015a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1870 [0x074e] 347 [0x015b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 683 [0x02ab] L.y = -100 [0xff9c] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 348 [0x015c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2270 [0x08de] 349 [0x015d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 350 [0x015e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2305 [0x0901] 351 [0x015f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 2460 [0x099c] 352 [0x0160] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1900 [0x076c] 353 [0x0161] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -500 [0xfe0c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1500 [0x05dc] 354 [0x0162] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -657 [0xfd6f] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1500 [0x05dc] 355 [0x0163] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 1209 [0x04b9] L.y = -400 [0xfe70] U.x = 683 [0x02ab] U.y = 1500 [0x05dc] 356 [0x0164] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 683 [0x02ab] L.y = -500 [0xfe0c] O.x = 1267 [0x04f3] U.x = 683 [0x02ab] U.y = 1500 [0x05dc] 357 [0x0165] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1109 [0x0455] L.x = 690 [0x02b2] L.y = -100 [0xff9c] O.x = 1267 [0x04f3] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 358 [0x0166] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 359 [0x0167] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 721 [0x02d1] L.y = -100 [0xff9c] U.x = 721 [0x02d1] U.y = 1500 [0x05dc] 360 [0x0168] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 707 [0x02c3] L.y = -100 [0xff9c] U.x = 707 [0x02c3] U.y = 1500 [0x05dc] 361 [0x0169] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1100 [0x044c] L.y = -100 [0xff9c] U.x = 1100 [0x044c] U.y = 1500 [0x05dc] 362 [0x016a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 715 [0x02cb] L.y = 725 [0x02d5] U.x = 715 [0x02cb] U.y = 1650 [0x0672] 363 [0x016b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 759 [0x02f7] L.y = -100 [0xff9c] U.x = 753 [0x02f1] U.y = 1100 [0x044c] 364 [0x016c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1100 [0x044c] L.y = -100 [0xff9c] U.x = 1100 [0x044c] U.y = 1900 [0x076c] 365 [0x016d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1100 [0x044c] L.y = -100 [0xff9c] U.x = 1100 [0x044c] U.y = 1870 [0x074e] 366 [0x016e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 372 [0x0174] L.y = 725 [0x02d5] U.x = 372 [0x0174] U.y = 1700 [0x06a4] 367 [0x016f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 600 [0x0258] L.x = 600 [0x0258] L.y = -100 [0xff9c] R.x = 1137 [0x0471] R.y = 1000 [0x03e8] U.x = 600 [0x0258] U.y = 1940 [0x0794] 368 [0x0170] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 600 [0x0258] L.x = 600 [0x0258] L.y = -500 [0xfe0c] R.x = 1137 [0x0471] R.y = 1000 [0x03e8] U.x = 600 [0x0258] U.y = 1540 [0x0604] 369 [0x0171] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 600 [0x0258] L.x = 600 [0x0258] L.y = -500 [0xfe0c] R.x = 1137 [0x0471] R.y = 1000 [0x03e8] U.x = 600 [0x0258] U.y = 1540 [0x0604] 370 [0x0172] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -500 [0xfe0c] U.x = 600 [0x0258] U.y = 1540 [0x0604] 371 [0x0173] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] U.x = 600 [0x0258] U.y = 1540 [0x0604] 372 [0x0174] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] U.x = 600 [0x0258] U.y = 1540 [0x0604] 373 [0x0175] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] U.x = 600 [0x0258] U.y = 1540 [0x0604] 374 [0x0176] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] U.x = 600 [0x0258] U.y = 1540 [0x0604] 375 [0x0177] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 548 [0x0224] L.y = -100 [0xff9c] U.x = 548 [0x0224] U.y = 1540 [0x0604] 376 [0x0178] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 625 [0x0271] L.y = -100 [0xff9c] U.x = 625 [0x0271] U.y = 1540 [0x0604] 377 [0x0179] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 547 [0x0223] L.y = -100 [0xff9c] U.x = 547 [0x0223] U.y = 1540 [0x0604] 378 [0x017a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 481 [0x01e1] L.y = -100 [0xff9c] U.x = 481 [0x01e1] U.y = 1100 [0x044c] 379 [0x017b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 461 [0x01cd] L.y = -100 [0xff9c] U.x = 461 [0x01cd] U.y = 1500 [0x05dc] 380 [0x017c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 550 [0x0226] L.y = -100 [0xff9c] U.x = 550 [0x0226] U.y = 1100 [0x044c] 381 [0x017d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 702 [0x02be] L.y = -100 [0xff9c] U.x = 702 [0x02be] U.y = 1100 [0x044c] 382 [0x017e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 702 [0x02be] L.y = -100 [0xff9c] U.x = 702 [0x02be] U.y = 1500 [0x05dc] 383 [0x017f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 510 [0x01fe] L.y = -100 [0xff9c] U.x = 510 [0x01fe] U.y = 1100 [0x044c] 384 [0x0180] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 612 [0x0264] L.y = -100 [0xff9c] U.x = 612 [0x0264] U.y = 1500 [0x05dc] 385 [0x0181] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 403 [0x0193] L.y = 725 [0x02d5] U.x = 403 [0x0193] U.y = 1650 [0x0672] 386 [0x0182] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 509 [0x01fd] L.y = -100 [0xff9c] U.x = 509 [0x01fd] U.y = 1100 [0x044c] 387 [0x0183] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 612 [0x0264] L.y = -100 [0xff9c] U.x = 612 [0x0264] U.y = 1900 [0x076c] 388 [0x0184] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 612 [0x0264] L.y = -500 [0xfe0c] U.x = 612 [0x0264] U.y = 1500 [0x05dc] 389 [0x0185] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 612 [0x0264] L.y = -500 [0xfe0c] U.x = 612 [0x0264] U.y = 1500 [0x05dc] 390 [0x0186] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -100 [0xff9c] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 391 [0x0187] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 406 [0x0196] L.y = 725 [0x02d5] U.x = 406 [0x0196] U.y = 1650 [0x0672] 392 [0x0188] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 630 [0x0276] L.y = -100 [0xff9c] U.x = 509 [0x01fd] U.y = 1100 [0x044c] 393 [0x0189] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 637 [0x027d] L.y = -100 [0xff9c] U.x = 637 [0x027d] U.y = 1500 [0x05dc] 394 [0x018a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 604 [0x025c] L.y = -100 [0xff9c] U.x = 604 [0x025c] U.y = 1500 [0x05dc] 395 [0x018b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 604 [0x025c] L.y = -100 [0xff9c] U.x = 604 [0x025c] U.y = 1500 [0x05dc] 396 [0x018c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1500 [0x05dc] 397 [0x018d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 398 [0x018e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 564 [0x0234] L.y = -100 [0xff9c] U.x = 564 [0x0234] U.y = 1540 [0x0604] 399 [0x018f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 650 [0x028a] L.y = -100 [0xff9c] U.x = 650 [0x028a] U.y = 1500 [0x05dc] 400 [0x0190] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 856 [0x0358] L.y = -100 [0xff9c] U.x = 856 [0x0358] U.y = 1500 [0x05dc] 401 [0x0191] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 856 [0x0358] L.y = -100 [0xff9c] U.x = 856 [0x0358] U.y = 1900 [0x076c] 402 [0x0192] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 620 [0x026c] L.y = -100 [0xff9c] U.x = 620 [0x026c] U.y = 1540 [0x0604] 403 [0x0193] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 367 [0x016f] L.y = -765 [0xfd03] U.x = 367 [0x016f] U.y = 450 [0x01c2] 404 [0x0194] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 408 [0x0198] L.y = 485 [0x01e5] U.x = 367 [0x016f] U.y = 1757 [0x06dd] 405 [0x0195] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 535 [0x0217] U.x = 550 [0x0226] U.y = 1100 [0x044c] 406 [0x0196] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 550 [0x0226] U.y = 1500 [0x05dc] 407 [0x0197] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 314 [0x013a] L.y = 725 [0x02d5] U.x = 314 [0x013a] U.y = 1450 [0x05aa] 408 [0x0198] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 409 [0x0199] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 525 [0x020d] L.x = 535 [0x0217] L.y = -100 [0xff9c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1500 [0x05dc] 410 [0x019a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 525 [0x020d] L.x = 535 [0x0217] L.y = -100 [0xff9c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1500 [0x05dc] 411 [0x019b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 525 [0x020d] L.x = 535 [0x0217] L.y = -100 [0xff9c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1500 [0x05dc] 412 [0x019c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 525 [0x020d] L.x = 535 [0x0217] L.y = -100 [0xff9c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1500 [0x05dc] 413 [0x019d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -500 [0xfe0c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1500 [0x05dc] 414 [0x019e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -400 [0xfe70] U.x = 550 [0x0226] U.y = 1100 [0x044c] 415 [0x019f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 550 [0x0226] L.y = -500 [0xfe0c] U.x = 550 [0x0226] U.y = 1100 [0x044c] 416 [0x01a0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 417 [0x01a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -500 [0xfe0c] U.x = 550 [0x0226] U.y = 1100 [0x044c] 418 [0x01a2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] U.x = 550 [0x0226] U.y = 1100 [0x044c] 419 [0x01a3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -320 [0xfec0] U.x = 550 [0x0226] U.y = 1100 [0x044c] 420 [0x01a4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 319 [0x013f] L.y = 725 [0x02d5] U.x = 319 [0x013f] U.y = 1457 [0x05b1] 421 [0x01a5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 477 [0x01dd] L.x = 477 [0x01dd] L.y = -100 [0xff9c] O.x = 530 [0x0212] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 477 [0x01dd] U.y = 1100 [0x044c] 422 [0x01a6] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 477 [0x01dd] L.x = 477 [0x01dd] L.y = -100 [0xff9c] O.x = 530 [0x0212] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 477 [0x01dd] U.y = 1100 [0x044c] 423 [0x01a7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 315 [0x013b] L.y = 725 [0x02d5] U.x = 315 [0x013b] U.y = 1457 [0x05b1] 424 [0x01a8] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 315 [0x013b] L.y = 725 [0x02d5] U.x = 315 [0x013b] U.y = 1457 [0x05b1] 425 [0x01a9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -500 [0xfe0c] U.x = 477 [0x01dd] U.y = 1100 [0x044c] 426 [0x01aa] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -500 [0xfe0c] U.x = 477 [0x01dd] U.y = 1100 [0x044c] 427 [0x01ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 525 [0x020d] L.x = 535 [0x0217] L.y = -100 [0xff9c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 550 [0x0226] U.y = 1100 [0x044c] 428 [0x01ac] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 588 [0x024c] L.y = -100 [0xff9c] U.x = 588 [0x024c] U.y = 1100 [0x044c] 429 [0x01ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -100 [0xff9c] U.x = 525 [0x020d] U.y = 1100 [0x044c] 430 [0x01ae] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 440 [0x01b8] L.y = -100 [0xff9c] U.x = 440 [0x01b8] U.y = 1100 [0x044c] 431 [0x01af] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 440 [0x01b8] L.y = -100 [0xff9c] U.x = 440 [0x01b8] U.y = 1500 [0x05dc] 432 [0x01b0] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 440 [0x01b8] L.y = -100 [0xff9c] U.x = 440 [0x01b8] U.y = 1100 [0x044c] 433 [0x01b1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 730 [0x02da] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 434 [0x01b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 642 [0x0282] U.y = 1500 [0x05dc] 435 [0x01b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 620 [0x026c] L.y = -100 [0xff9c] U.x = 620 [0x026c] U.y = 1100 [0x044c] 436 [0x01b4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 730 [0x02da] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 437 [0x01b5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 730 [0x02da] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 438 [0x01b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 730 [0x02da] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 439 [0x01b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 730 [0x02da] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 440 [0x01b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -500 [0xfe0c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 441 [0x01b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 679 [0x02a7] L.y = -500 [0xfe0c] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 442 [0x01ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 645 [0x0285] L.x = 693 [0x02b5] L.y = -100 [0xff9c] U.x = 693 [0x02b5] U.y = 1500 [0x05dc] 443 [0x01bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 720 [0x02d0] L.y = -100 [0xff9c] U.x = 720 [0x02d0] U.y = 1500 [0x05dc] 444 [0x01bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 445 [0x01bd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 446 [0x01be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 447 [0x01bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 448 [0x01c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 449 [0x01c1] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 615 [0x0267] L.y = -100 [0xff9c] U.x = 615 [0x0267] U.y = 1500 [0x05dc] 450 [0x01c2] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 615 [0x0267] L.y = -100 [0xff9c] U.x = 615 [0x0267] U.y = 1500 [0x05dc] 451 [0x01c3] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 530 [0x0212] L.y = -100 [0xff9c] U.x = 530 [0x0212] U.y = 1100 [0x044c] 452 [0x01c4] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 530 [0x0212] L.y = -100 [0xff9c] U.x = 530 [0x0212] U.y = 1100 [0x044c] 453 [0x01c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 454 [0x01c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 720 [0x02d0] L.y = -100 [0xff9c] U.x = 720 [0x02d0] U.y = 1500 [0x05dc] 455 [0x01c7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] U.x = 600 [0x0258] U.y = 1500 [0x05dc] 456 [0x01c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] U.x = 600 [0x0258] U.y = 1900 [0x076c] 457 [0x01c9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] U.x = 600 [0x0258] U.y = 1500 [0x05dc] 458 [0x01ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 586 [0x024a] L.x = 586 [0x024a] L.y = -100 [0xff9c] R.x = 1101 [0x044d] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1540 [0x0604] 459 [0x01cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 586 [0x024a] U.y = 1500 [0x05dc] 460 [0x01cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 390 [0x0186] L.y = 725 [0x02d5] U.x = 390 [0x0186] U.y = 1700 [0x06a4] 461 [0x01cd] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 462 [0x01ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 586 [0x024a] L.x = 586 [0x024a] L.y = -100 [0xff9c] R.x = 1101 [0x044d] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1940 [0x0794] 463 [0x01cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 586 [0x024a] L.x = 586 [0x024a] L.y = -500 [0xfe0c] R.x = 1101 [0x044d] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1540 [0x0604] 464 [0x01d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 586 [0x024a] L.x = 586 [0x024a] L.y = -500 [0xfe0c] R.x = 1101 [0x044d] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1540 [0x0604] 465 [0x01d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 586 [0x024a] L.x = 586 [0x024a] L.y = -500 [0xfe0c] R.x = 1101 [0x044d] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1540 [0x0604] 466 [0x01d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 586 [0x024a] L.x = 586 [0x024a] L.y = -500 [0xfe0c] R.x = 1101 [0x044d] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1540 [0x0604] 467 [0x01d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 614 [0x0266] L.x = 614 [0x0266] L.y = -100 [0xff9c] U.x = 611 [0x0263] U.y = 1540 [0x0604] 468 [0x01d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -500 [0xfe0c] U.x = 586 [0x024a] U.y = 1540 [0x0604] 469 [0x01d5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 577 [0x0241] L.y = -100 [0xff9c] U.x = 577 [0x0241] U.y = 1540 [0x0604] 470 [0x01d6] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -100 [0xff9c] U.x = 586 [0x024a] U.y = 1540 [0x0604] 471 [0x01d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 472 [0x01d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -100 [0xff9c] U.x = 586 [0x024a] U.y = 1540 [0x0604] 473 [0x01d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -100 [0xff9c] U.x = 586 [0x024a] U.y = 1540 [0x0604] 474 [0x01da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -475 [0xfe25] R.x = 1188 [0x04a4] R.y = 1000 [0x03e8] U.x = 586 [0x024a] U.y = 1540 [0x0604] 475 [0x01db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -500 [0xfe0c] U.x = 586 [0x024a] U.y = 1540 [0x0604] 476 [0x01dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 698 [0x02ba] L.y = -320 [0xfec0] U.x = 698 [0x02ba] U.y = 1540 [0x0604] 477 [0x01dd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -100 [0xff9c] U.x = 586 [0x024a] U.y = 1540 [0x0604] 478 [0x01de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 866 [0x0362] L.y = -100 [0xff9c] U.x = 866 [0x0362] U.y = 1540 [0x0604] 479 [0x01df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1638 [0x0666] L.x = 1638 [0x0666] L.y = -100 [0xff9c] U.x = 1638 [0x0666] U.y = 1100 [0x044c] 480 [0x01e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1638 [0x0666] L.x = 1638 [0x0666] L.y = -100 [0xff9c] U.x = 1638 [0x0666] U.y = 1500 [0x05dc] 481 [0x01e1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 827 [0x033b] L.y = -100 [0xff9c] U.x = 843 [0x034b] U.y = 1580 [0x062c] 482 [0x01e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 839 [0x0347] L.y = -100 [0xff9c] U.x = 839 [0x0347] U.y = 1580 [0x062c] 483 [0x01e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 856 [0x0358] L.y = -500 [0xfe0c] U.x = 844 [0x034c] U.y = 1580 [0x062c] 484 [0x01e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 870 [0x0366] L.y = -100 [0xff9c] U.x = 870 [0x0366] U.y = 1540 [0x0604] 485 [0x01e5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -100 [0xff9c] U.x = 542 [0x021e] U.y = 1540 [0x0604] 486 [0x01e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 361 [0x0169] L.y = 725 [0x02d5] U.x = 361 [0x0169] U.y = 1775 [0x06ef] 487 [0x01e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 552 [0x0228] L.y = -100 [0xff9c] U.x = 552 [0x0228] U.y = 1540 [0x0604] 488 [0x01e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 363 [0x016b] L.y = 725 [0x02d5] U.x = 363 [0x016b] U.y = 1700 [0x06a4] 489 [0x01e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 706 [0x02c2] U.y = 1500 [0x05dc] 490 [0x01ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 464 [0x01d0] L.y = 725 [0x02d5] U.x = 464 [0x01d0] U.y = 1650 [0x0672] 491 [0x01eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1100 [0x044c] 492 [0x01ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -100 [0xff9c] U.x = 690 [0x02b2] U.y = 1900 [0x076c] 493 [0x01ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -100 [0xff9c] U.x = 690 [0x02b2] U.y = 1900 [0x076c] 494 [0x01ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -500 [0xfe0c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 495 [0x01ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -500 [0xfe0c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 496 [0x01f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -500 [0xfe0c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 497 [0x01f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -500 [0xfe0c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 498 [0x01f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -100 [0xff9c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 499 [0x01f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -100 [0xff9c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 500 [0x01f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 690 [0x02b2] L.y = -100 [0xff9c] U.x = 690 [0x02b2] U.y = 1500 [0x05dc] 501 [0x01f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 703 [0x02bf] L.y = -100 [0xff9c] U.x = 564 [0x0234] U.y = 1100 [0x044c] 502 [0x01f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1500 [0x05dc] 503 [0x01f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1500 [0x05dc] 504 [0x01f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 634 [0x027a] L.y = -100 [0xff9c] U.x = 634 [0x027a] U.y = 1500 [0x05dc] 505 [0x01f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1908 [0x0774] L.x = 1908 [0x0774] L.y = -100 [0xff9c] U.x = 1908 [0x0774] U.y = 1100 [0x044c] 506 [0x01fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1908 [0x0774] L.x = 1908 [0x0774] L.y = -100 [0xff9c] U.x = 1908 [0x0774] U.y = 1500 [0x05dc] 507 [0x01fb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 2035 [0x07f3] L.y = -100 [0xff9c] U.x = 2035 [0x07f3] U.y = 1500 [0x05dc] 508 [0x01fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 2035 [0x07f3] L.y = -100 [0xff9c] U.x = 2035 [0x07f3] U.y = 1900 [0x076c] 509 [0x01fd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 510 [0x01fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 850 [0x0352] L.y = -100 [0xff9c] U.x = 850 [0x0352] U.y = 1500 [0x05dc] 511 [0x01ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 512 [0x0200] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 513 [0x0201] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 514 [0x0202] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 515 [0x0203] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 516 [0x0204] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] U.x = 535 [0x0217] U.y = 1100 [0x044c] 517 [0x0205] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 331 [0x014b] L.y = -525 [0xfdf3] U.x = 331 [0x014b] U.y = 200 [0x00c8] 518 [0x0206] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 335 [0x014f] L.y = 725 [0x02d5] U.x = 335 [0x014f] U.y = 1450 [0x05aa] 519 [0x0207] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 520 [0x0208] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 521 [0x0209] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 522 [0x020a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1900 [0x076c] 523 [0x020b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] 524 [0x020c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1900 [0x076c] 525 [0x020d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] 526 [0x020e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1900 [0x076c] 527 [0x020f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1825 [0x0721] 528 [0x0210] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1900 [0x076c] 529 [0x0211] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] 530 [0x0212] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -500 [0xfe0c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 531 [0x0213] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 532 [0x0214] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 533 [0x0215] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 534 [0x0216] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 535 [0x0217] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 536 [0x0218] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1470 [0x05be] 537 [0x0219] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1870 [0x074e] 538 [0x021a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1870 [0x074e] 539 [0x021b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 540 [0x021c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 541 [0x021d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -100 [0xff9c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 542 [0x021e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -500 [0xfe0c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1100 [0x044c] 543 [0x021f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -500 [0xfe0c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1100 [0x044c] 544 [0x0220] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -500 [0xfe0c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1100 [0x044c] 545 [0x0221] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 502 [0x01f6] L.y = -500 [0xfe0c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1100 [0x044c] 546 [0x0222] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 502 [0x01f6] L.y = -500 [0xfe0c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 547 [0x0223] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -500 [0xfe0c] U.x = 525 [0x020d] U.y = 1100 [0x044c] 548 [0x0224] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 502 [0x01f6] L.x = 535 [0x0217] L.y = -500 [0xfe0c] O.x = 557 [0x022d] R.x = 1004 [0x03ec] R.y = 1000 [0x03e8] U.x = 535 [0x0217] U.y = 1100 [0x044c] 549 [0x0225] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -100 [0xff9c] U.x = 525 [0x020d] U.y = 1100 [0x044c] 550 [0x0226] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -100 [0xff9c] U.x = 525 [0x020d] U.y = 1100 [0x044c] 551 [0x0227] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 724 [0x02d4] L.y = -100 [0xff9c] O.x = 957 [0x03bd] U.x = 724 [0x02d4] U.y = 1100 [0x044c] 552 [0x0228] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 899 [0x0383] L.y = -400 [0xfe70] U.x = 724 [0x02d4] U.y = 1100 [0x044c] 553 [0x0229] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 480 [0x01e0] L.y = -100 [0xff9c] U.x = 480 [0x01e0] U.y = 1100 [0x044c] 554 [0x022a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 480 [0x01e0] L.x = 480 [0x01e0] L.y = -100 [0xff9c] O.x = 557 [0x022d] U.x = 480 [0x01e0] U.y = 1100 [0x044c] 555 [0x022b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 480 [0x01e0] L.x = 480 [0x01e0] L.y = -100 [0xff9c] O.x = 557 [0x022d] U.x = 480 [0x01e0] U.y = 1100 [0x044c] 556 [0x022c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 331 [0x014b] L.y = -525 [0xfdf3] U.x = 331 [0x014b] U.y = 200 [0x00c8] 557 [0x022d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 335 [0x014f] L.y = 725 [0x02d5] U.x = 335 [0x014f] U.y = 1450 [0x05aa] 558 [0x022e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 480 [0x01e0] L.x = 480 [0x01e0] L.y = -100 [0xff9c] O.x = 557 [0x022d] U.x = 480 [0x01e0] U.y = 1500 [0x05dc] 559 [0x022f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 514 [0x0202] L.y = -100 [0xff9c] U.x = 514 [0x0202] U.y = 1100 [0x044c] 560 [0x0230] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 500 [0x01f4] L.x = 525 [0x020d] L.y = -100 [0xff9c] O.x = 550 [0x0226] U.x = 502 [0x01f6] U.y = 1100 [0x044c] 561 [0x0231] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 517 [0x0205] L.y = -100 [0xff9c] R.x = 1034 [0x040a] R.y = 1000 [0x03e8] U.x = 517 [0x0205] U.y = 1100 [0x044c] 562 [0x0232] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 341 [0x0155] L.y = 725 [0x02d5] U.x = 341 [0x0155] U.y = 1457 [0x05b1] 563 [0x0233] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 460 [0x01cc] L.x = 490 [0x01ea] L.y = -100 [0xff9c] O.x = 512 [0x0200] R.x = 899 [0x0383] R.y = 1000 [0x03e8] U.x = 490 [0x01ea] U.y = 1100 [0x044c] 564 [0x0234] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 303 [0x012f] L.y = 725 [0x02d5] U.x = 303 [0x012f] U.y = 1457 [0x05b1] 565 [0x0235] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 462 [0x01ce] L.y = -100 [0xff9c] U.x = 462 [0x01ce] U.y = 1100 [0x044c] 566 [0x0236] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 439 [0x01b7] L.y = -100 [0xff9c] U.x = 439 [0x01b7] U.y = 1100 [0x044c] 567 [0x0237] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 290 [0x0122] L.y = 725 [0x02d5] U.x = 290 [0x0122] U.y = 1450 [0x05aa] 568 [0x0238] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 439 [0x01b7] L.y = -500 [0xfe0c] U.x = 439 [0x01b7] U.y = 1100 [0x044c] 569 [0x0239] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 440 [0x01b8] L.y = -100 [0xff9c] U.x = 440 [0x01b8] U.y = 1100 [0x044c] 570 [0x023a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 414 [0x019e] L.y = -100 [0xff9c] U.x = 414 [0x019e] U.y = 1100 [0x044c] 571 [0x023b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 274 [0x0112] L.y = 725 [0x02d5] U.x = 274 [0x0112] U.y = 1450 [0x05aa] 572 [0x023c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 508 [0x01fc] L.y = -100 [0xff9c] U.x = 508 [0x01fc] U.y = 1100 [0x044c] 573 [0x023d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 508 [0x01fc] L.y = -100 [0xff9c] R.x = 1016 [0x03f8] R.y = 1000 [0x03e8] U.x = 508 [0x01fc] U.y = 1100 [0x044c] 574 [0x023e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 335 [0x014f] L.y = 725 [0x02d5] U.x = 335 [0x014f] U.y = 1457 [0x05b1] 575 [0x023f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 535 [0x0217] L.x = 481 [0x01e1] L.y = -100 [0xff9c] O.x = 481 [0x01e1] R.x = 907 [0x038b] R.y = 1000 [0x03e8] U.x = 481 [0x01e1] U.y = 1100 [0x044c] 576 [0x0240] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 435 [0x01b3] L.y = -100 [0xff9c] U.x = 435 [0x01b3] U.y = 1100 [0x044c] 577 [0x0241] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 435 [0x01b3] L.y = -100 [0xff9c] U.x = 435 [0x01b3] U.y = 1500 [0x05dc] 578 [0x0242] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 435 [0x01b3] L.y = -400 [0xfe70] U.x = 435 [0x01b3] U.y = 1100 [0x044c] 579 [0x0243] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 443 [0x01bb] L.y = -100 [0xff9c] U.x = 443 [0x01bb] U.y = 1100 [0x044c] 580 [0x0244] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1100 [0x044c] 581 [0x0245] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -100 [0xff9c] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 582 [0x0246] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 393 [0x0189] L.y = 725 [0x02d5] U.x = 393 [0x0189] U.y = 1650 [0x0672] 583 [0x0247] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 489 [0x01e9] L.y = -100 [0xff9c] U.x = 489 [0x01e9] U.y = 1100 [0x044c] 584 [0x0248] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -100 [0xff9c] U.x = 597 [0x0255] U.y = 1900 [0x076c] 585 [0x0249] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 586 [0x024a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 2300 [0x08fc] 587 [0x024b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] 588 [0x024c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 2300 [0x08fc] 589 [0x024d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] 590 [0x024e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 2300 [0x08fc] 591 [0x024f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 2225 [0x08b1] 592 [0x0250] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 2300 [0x08fc] 593 [0x0251] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] 594 [0x0252] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -500 [0xfe0c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 595 [0x0253] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 596 [0x0254] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 597 [0x0255] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -100 [0xff9c] U.x = 597 [0x0255] U.y = 1935 [0x078f] 598 [0x0256] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 599 [0x0257] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 600 [0x0258] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1870 [0x074e] 601 [0x0259] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 2270 [0x08de] 602 [0x025a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 2270 [0x08de] 603 [0x025b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -100 [0xff9c] U.x = 597 [0x0255] U.y = 1900 [0x076c] 604 [0x025c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 605 [0x025d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -100 [0xff9c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 606 [0x025e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -500 [0xfe0c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 607 [0x025f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -500 [0xfe0c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 608 [0x0260] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -500 [0xfe0c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 609 [0x0261] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -500 [0xfe0c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 610 [0x0262] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -500 [0xfe0c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1900 [0x076c] 611 [0x0263] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 922 [0x039a] L.y = -400 [0xfe70] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 612 [0x0264] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 597 [0x0255] L.x = 597 [0x0255] L.y = -500 [0xfe0c] O.x = 980 [0x03d4] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 613 [0x0265] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 604 [0x025c] L.y = -100 [0xff9c] U.x = 604 [0x025c] U.y = 1500 [0x05dc] 614 [0x0266] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 915 [0x0393] L.y = -100 [0xff9c] O.x = 1127 [0x0467] U.x = 915 [0x0393] U.y = 1500 [0x05dc] 615 [0x0267] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1076 [0x0434] L.y = -500 [0xfe0c] U.x = 915 [0x0393] U.y = 1500 [0x05dc] 616 [0x0268] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -100 [0xff9c] U.x = 597 [0x0255] U.y = 1500 [0x05dc] 617 [0x0269] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 393 [0x0189] L.y = 725 [0x02d5] U.x = 393 [0x0189] U.y = 1650 [0x0672] 618 [0x026a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 678 [0x02a6] L.y = -100 [0xff9c] U.x = 678 [0x02a6] U.y = 1500 [0x05dc] 619 [0x026b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 678 [0x02a6] L.y = -100 [0xff9c] U.x = 678 [0x02a6] U.y = 1500 [0x05dc] 620 [0x026c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 678 [0x02a6] L.y = -100 [0xff9c] U.x = 678 [0x02a6] U.y = 1900 [0x076c] 621 [0x026d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 615 [0x0267] L.y = -100 [0xff9c] U.x = 615 [0x0267] U.y = 1500 [0x05dc] 622 [0x026e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1500 [0x05dc] 623 [0x026f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 520 [0x0208] L.y = -100 [0xff9c] U.x = 520 [0x0208] U.y = 1500 [0x05dc] 624 [0x0270] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 520 [0x0208] L.y = -100 [0xff9c] U.x = 520 [0x0208] U.y = 1900 [0x076c] 625 [0x0271] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -500 [0xfe0c] U.x = 559 [0x022f] U.y = 1500 [0x05dc] 626 [0x0272] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 674 [0x02a2] L.y = -500 [0xfe0c] U.x = 674 [0x02a2] U.y = 1500 [0x05dc] 627 [0x0273] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 926 [0x039e] L.y = -100 [0xff9c] U.x = 926 [0x039e] U.y = 1500 [0x05dc] 628 [0x0274] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 428 [0x01ac] L.x = 296 [0x0128] L.y = -100 [0xff9c] U.x = 506 [0x01fa] U.y = 1440 [0x05a0] 629 [0x0275] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 284 [0x011c] L.y = 725 [0x02d5] U.x = 284 [0x011c] U.y = 1700 [0x06a4] 630 [0x0276] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 428 [0x01ac] L.x = 296 [0x0128] L.y = -100 [0xff9c] U.x = 506 [0x01fa] U.y = 1880 [0x0758] 631 [0x0277] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 296 [0x0128] L.y = -500 [0xfe0c] U.x = 428 [0x01ac] U.y = 1580 [0x062c] 632 [0x0278] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 284 [0x011c] L.y = -100 [0xff9c] U.x = 414 [0x019e] U.y = 1580 [0x062c] 633 [0x0279] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 644 [0x0284] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 644 [0x0284] component.f2.right = 1288 [0x0508] 634 [0x027a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 644 [0x0284] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 644 [0x0284] component.f2.right = 1288 [0x0508] 635 [0x027b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 638 [0x027e] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 638 [0x027e] component.f2.right = 1276 [0x04fc] 636 [0x027c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 638 [0x027e] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 638 [0x027e] component.f2.right = 1276 [0x04fc] 637 [0x027d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f3 = 41 [0x0029] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 652 [0x028c] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 652 [0x028c] component.f2.right = 1305 [0x0519] component.f3.top = 2450 [0x0992] component.f3.bottom = -900 [0xfc7c] component.f3.left = 1305 [0x0519] component.f3.right = 1958 [0x07a6] 638 [0x027e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f3 = 41 [0x0029] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 652 [0x028c] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 652 [0x028c] component.f2.right = 1305 [0x0519] component.f3.top = 2450 [0x0992] component.f3.bottom = -900 [0xfc7c] component.f3.left = 1305 [0x0519] component.f3.right = 1958 [0x07a6] 639 [0x027f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 640 [0x0280] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f3 = 41 [0x0029] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 648 [0x0288] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 648 [0x0288] component.f2.right = 1296 [0x0510] component.f3.top = 2450 [0x0992] component.f3.bottom = -900 [0xfc7c] component.f3.left = 1296 [0x0510] component.f3.right = 1944 [0x0798] 641 [0x0281] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f3 = 41 [0x0029] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 648 [0x0288] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 648 [0x0288] component.f2.right = 1296 [0x0510] component.f3.top = 2450 [0x0992] component.f3.bottom = -900 [0xfc7c] component.f3.left = 1296 [0x0510] component.f3.right = 1944 [0x0798] 642 [0x0282] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 643 [0x0283] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 667 [0x029b] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 667 [0x029b] component.f2.right = 1335 [0x0537] 644 [0x0284] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] component.f1 = 33 [0x0021] component.f2 = 37 [0x0025] component.f1.top = 2450 [0x0992] component.f1.bottom = -900 [0xfc7c] component.f1.right = 667 [0x029b] component.f2.top = 2450 [0x0992] component.f2.bottom = -900 [0xfc7c] component.f2.left = 667 [0x029b] component.f2.right = 1335 [0x0537] 645 [0x0285] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 646 [0x0286] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 870 [0x0366] L.y = -500 [0xfe0c] U.x = 902 [0x0386] U.y = 1540 [0x0604] 647 [0x0287] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 404 [0x0194] L.y = -100 [0xff9c] U.x = 404 [0x0194] U.y = 1540 [0x0604] 648 [0x0288] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 404 [0x0194] L.y = -100 [0xff9c] U.x = 404 [0x0194] U.y = 1940 [0x0794] 649 [0x0289] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 454 [0x01c6] L.y = -100 [0xff9c] U.x = 454 [0x01c6] U.y = 1100 [0x044c] 650 [0x028a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 454 [0x01c6] L.y = -100 [0xff9c] U.x = 454 [0x01c6] U.y = 1500 [0x05dc] 651 [0x028b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 414 [0x019e] L.y = -100 [0xff9c] U.x = 414 [0x019e] U.y = 1100 [0x044c] 652 [0x028c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 454 [0x01c6] L.y = -500 [0xfe0c] U.x = 454 [0x01c6] U.y = 1100 [0x044c] 653 [0x028d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 444 [0x01bc] L.y = -100 [0xff9c] U.x = 444 [0x01bc] U.y = 1100 [0x044c] 654 [0x028e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 444 [0x01bc] L.y = -100 [0xff9c] U.x = 444 [0x01bc] U.y = 1100 [0x044c] 655 [0x028f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 444 [0x01bc] L.y = -500 [0xfe0c] U.x = 444 [0x01bc] U.y = 1100 [0x044c] 656 [0x0290] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 444 [0x01bc] L.y = -500 [0xfe0c] U.x = 444 [0x01bc] U.y = 1100 [0x044c] 657 [0x0291] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 444 [0x01bc] L.y = -100 [0xff9c] U.x = 444 [0x01bc] U.y = 1100 [0x044c] 658 [0x0292] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 444 [0x01bc] L.y = -100 [0xff9c] U.x = 444 [0x01bc] U.y = 1100 [0x044c] 659 [0x0293] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 549 [0x0225] L.y = -100 [0xff9c] U.x = 549 [0x0225] U.y = 1900 [0x076c] 660 [0x0294] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 661 [0x0295] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 565 [0x0235] L.y = -500 [0xfe0c] U.x = 565 [0x0235] U.y = 1500 [0x05dc] 662 [0x0296] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 545 [0x0221] L.y = -100 [0xff9c] U.x = 545 [0x0221] U.y = 1500 [0x05dc] 663 [0x0297] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 664 [0x0298] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 263 [0x0107] L.y = -100 [0xff9c] U.x = 263 [0x0107] U.y = 1100 [0x044c] 665 [0x0299] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 545 [0x0221] L.y = -100 [0xff9c] U.x = 545 [0x0221] U.y = 1900 [0x076c] 666 [0x029a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 495 [0x01ef] L.y = -100 [0xff9c] U.x = 495 [0x01ef] U.y = 1500 [0x05dc] 667 [0x029b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 545 [0x0221] L.y = -500 [0xfe0c] U.x = 545 [0x0221] U.y = 1500 [0x05dc] 668 [0x029c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 533 [0x0215] L.y = -100 [0xff9c] U.x = 533 [0x0215] U.y = 1500 [0x05dc] 669 [0x029d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 323 [0x0143] L.y = -500 [0xfe0c] U.x = 533 [0x0215] U.y = 1500 [0x05dc] 670 [0x029e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 533 [0x0215] L.y = -100 [0xff9c] U.x = 533 [0x0215] U.y = 1500 [0x05dc] 671 [0x029f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 365 [0x016d] L.y = 485 [0x01e5] U.x = 365 [0x016d] U.y = 1450 [0x05aa] 672 [0x02a0] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1500 [0x05dc] 673 [0x02a1] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1500 [0x05dc] 674 [0x02a2] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1500 [0x05dc] 675 [0x02a3] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1500 [0x05dc] 676 [0x02a4] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1470 [0x05be] 677 [0x02a5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1500 [0x05dc] 678 [0x02a6] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 505 [0x01f9] H.y = -432 [0xfe50] L.x = 505 [0x01f9] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 505 [0x01f9] U.y = 1500 [0x05dc] 679 [0x02a7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 520 [0x0208] L.y = -500 [0xfe0c] U.x = 520 [0x0208] U.y = 1100 [0x044c] 680 [0x02a8] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 546 [0x0222] L.y = -500 [0xfe0c] U.x = 546 [0x0222] U.y = 1100 [0x044c] 681 [0x02a9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1100 [0x044c] 682 [0x02aa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1100 [0x044c] 683 [0x02ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 343 [0x0157] L.y = 485 [0x01e5] U.x = 343 [0x0157] U.y = 1457 [0x05b1] 684 [0x02ac] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1500 [0x05dc] 685 [0x02ad] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1500 [0x05dc] 686 [0x02ae] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1500 [0x05dc] 687 [0x02af] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1500 [0x05dc] 688 [0x02b0] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1470 [0x05be] 689 [0x02b1] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1500 [0x05dc] 690 [0x02b2] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] R.x = 1133 [0x046d] R.y = 1000 [0x03e8] U.x = 596 [0x0254] U.y = 1500 [0x05dc] 691 [0x02b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 534 [0x0216] L.y = -539 [0xfde5] U.x = 534 [0x0216] U.y = 1100 [0x044c] 692 [0x02b4] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 575 [0x023f] L.y = -500 [0xfe0c] U.x = 575 [0x023f] U.y = 1100 [0x044c] 693 [0x02b5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] U.x = 596 [0x0254] U.y = 1540 [0x0604] 694 [0x02b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 533 [0x0215] L.y = -500 [0xfe0c] R.x = 1075 [0x0433] R.y = 1000 [0x03e8] U.x = 515 [0x0203] U.y = 1100 [0x044c] 695 [0x02b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 498 [0x01f2] L.y = -500 [0xfe0c] R.x = 987 [0x03db] R.y = 1000 [0x03e8] U.x = 498 [0x01f2] U.y = 1100 [0x044c] 696 [0x02b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 630 [0x0276] L.y = -100 [0xff9c] U.x = 630 [0x0276] U.y = 1100 [0x044c] 697 [0x02b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = 725 [0x02d5] U.x = 477 [0x01dd] U.y = 1650 [0x0672] 698 [0x02ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 595 [0x0253] L.y = -100 [0xff9c] R.x = 1161 [0x0489] R.y = 1000 [0x03e8] U.x = 595 [0x0253] U.y = 1100 [0x044c] 699 [0x02bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -100 [0xff9c] U.x = 766 [0x02fe] U.y = 1900 [0x076c] 700 [0x02bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -100 [0xff9c] U.x = 766 [0x02fe] U.y = 1900 [0x076c] 701 [0x02bd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -100 [0xff9c] U.x = 766 [0x02fe] U.y = 1900 [0x076c] 702 [0x02be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -100 [0xff9c] U.x = 766 [0x02fe] U.y = 1900 [0x076c] 703 [0x02bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -100 [0xff9c] U.x = 766 [0x02fe] U.y = 1870 [0x074e] 704 [0x02c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -100 [0xff9c] U.x = 766 [0x02fe] U.y = 1900 [0x076c] 705 [0x02c1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 766 [0x02fe] L.x = 766 [0x02fe] L.y = -500 [0xfe0c] U.x = 766 [0x02fe] U.y = 1500 [0x05dc] 706 [0x02c2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 733 [0x02dd] L.y = -100 [0xff9c] U.x = 733 [0x02dd] U.y = 1500 [0x05dc] 707 [0x02c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 726 [0x02d6] L.y = -100 [0xff9c] U.x = 726 [0x02d6] U.y = 1500 [0x05dc] 708 [0x02c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 582 [0x0246] L.y = -100 [0xff9c] U.x = 582 [0x0246] U.y = 1300 [0x0514] 709 [0x02c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 710 [0x02c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 741 [0x02e5] L.y = -100 [0xff9c] U.x = 741 [0x02e5] U.y = 1500 [0x05dc] 711 [0x02c7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 387 [0x0183] L.y = 725 [0x02d5] U.x = 387 [0x0183] U.y = 1700 [0x06a4] 712 [0x02c8] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 713 [0x02c9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1940 [0x0794] 714 [0x02ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1940 [0x0794] 715 [0x02cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1940 [0x0794] 716 [0x02cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1940 [0x0794] 717 [0x02cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -500 [0xfe0c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 718 [0x02ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -500 [0xfe0c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 719 [0x02cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -500 [0xfe0c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 720 [0x02d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -500 [0xfe0c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 721 [0x02d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 722 [0x02d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 723 [0x02d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 372 [0x0174] L.y = 725 [0x02d5] U.x = 372 [0x0174] U.y = 1700 [0x06a4] 724 [0x02d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 567 [0x0237] L.y = -500 [0xfe0c] U.x = 567 [0x0237] U.y = 1540 [0x0604] 725 [0x02d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 585 [0x0249] L.y = -100 [0xff9c] U.x = 585 [0x0249] U.y = 1540 [0x0604] 726 [0x02d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 387 [0x0183] L.y = 725 [0x02d5] U.x = 387 [0x0183] U.y = 1700 [0x06a4] 727 [0x02d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 587 [0x024b] L.y = -500 [0xfe0c] U.x = 587 [0x024b] U.y = 1540 [0x0604] 728 [0x02d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 517 [0x0205] L.y = -500 [0xfe0c] U.x = 517 [0x0205] U.y = 1540 [0x0604] 729 [0x02d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 730 [0x02da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 900 [0x0384] L.y = -100 [0xff9c] U.x = 900 [0x0384] U.y = 1100 [0x044c] 731 [0x02db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 620 [0x026c] L.y = -100 [0xff9c] U.x = 620 [0x026c] U.y = 1100 [0x044c] 732 [0x02dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 596 [0x0254] L.y = -500 [0xfe0c] U.x = 596 [0x0254] U.y = 1100 [0x044c] 733 [0x02dd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 392 [0x0188] L.y = 485 [0x01e5] U.x = 392 [0x0188] U.y = 1450 [0x05aa] 734 [0x02de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 632 [0x0278] L.y = -500 [0xfe0c] U.x = 632 [0x0278] U.y = 1100 [0x044c] 735 [0x02df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 731 [0x02db] L.y = -500 [0xfe0c] U.x = 731 [0x02db] U.y = 1100 [0x044c] 736 [0x02e0] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 712 [0x02c8] L.x = 579 [0x0243] L.y = -100 [0xff9c] U.x = 579 [0x0243] U.y = 1540 [0x0604] 737 [0x02e1] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 540 [0x021c] L.y = -100 [0xff9c] U.x = 540 [0x021c] U.y = 1100 [0x044c] 738 [0x02e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 560 [0x0230] L.y = -500 [0xfe0c] U.x = 560 [0x0230] U.y = 1100 [0x044c] 739 [0x02e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1100 [0x044c] 740 [0x02e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 700 [0x02bc] L.y = -100 [0xff9c] U.x = 700 [0x02bc] U.y = 1100 [0x044c] 741 [0x02e5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1100 [0x044c] 742 [0x02e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1100 [0x044c] 743 [0x02e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 788 [0x0314] L.y = -100 [0xff9c] U.x = 788 [0x0314] U.y = 1100 [0x044c] 744 [0x02e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -500 [0xfe0c] U.x = 610 [0x0262] U.y = 1100 [0x044c] 745 [0x02e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 855 [0x0357] L.y = -100 [0xff9c] U.x = 855 [0x0357] U.y = 1100 [0x044c] 746 [0x02ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1100 [0x044c] 747 [0x02eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 792 [0x0318] L.y = -100 [0xff9c] U.x = 792 [0x0318] U.y = 1100 [0x044c] 748 [0x02ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -500 [0xfe0c] U.x = 578 [0x0242] U.y = 1100 [0x044c] 749 [0x02ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1100 [0x044c] 750 [0x02ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 822 [0x0336] L.y = -100 [0xff9c] U.x = 822 [0x0336] U.y = 1100 [0x044c] 751 [0x02ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 822 [0x0336] L.y = -100 [0xff9c] U.x = 822 [0x0336] U.y = 1100 [0x044c] 752 [0x02f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 601 [0x0259] L.y = -100 [0xff9c] U.x = 601 [0x0259] U.y = 1100 [0x044c] 753 [0x02f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 754 [0x02f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 499 [0x01f3] L.y = 725 [0x02d5] U.x = 499 [0x01f3] U.y = 1650 [0x0672] 755 [0x02f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 499 [0x01f3] L.y = 725 [0x02d5] U.x = 499 [0x01f3] U.y = 1650 [0x0672] 756 [0x02f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 620 [0x026c] L.y = -100 [0xff9c] U.x = 620 [0x026c] U.y = 1100 [0x044c] 757 [0x02f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1900 [0x076c] 758 [0x02f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1900 [0x076c] 759 [0x02f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1900 [0x076c] 760 [0x02f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1900 [0x076c] 761 [0x02f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -500 [0xfe0c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 762 [0x02fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -500 [0xfe0c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 763 [0x02fb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 978 [0x03d2] L.y = -500 [0xfe0c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 764 [0x02fc] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 765 [0x02fd] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 766 [0x02fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 767 [0x02ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 990 [0x03de] L.y = -100 [0xff9c] U.x = 990 [0x03de] U.y = 1500 [0x05dc] 768 [0x0300] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 978 [0x03d2] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 769 [0x0301] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 652 [0x028c] L.y = -100 [0xff9c] U.x = 652 [0x028c] U.y = 1500 [0x05dc] 770 [0x0302] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 627 [0x0273] L.y = -500 [0xfe0c] U.x = 626 [0x0272] U.y = 1500 [0x05dc] 771 [0x0303] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 772 [0x0304] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 773 [0x0305] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -100 [0xff9c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 774 [0x0306] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 943 [0x03af] L.y = -100 [0xff9c] U.x = 943 [0x03af] U.y = 1500 [0x05dc] 775 [0x0307] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 761 [0x02f9] L.y = -500 [0xfe0c] U.x = 761 [0x02f9] U.y = 1500 [0x05dc] 776 [0x0308] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1062 [0x0426] L.y = -100 [0xff9c] U.x = 1062 [0x0426] U.y = 1500 [0x05dc] 777 [0x0309] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 743 [0x02e7] L.y = -100 [0xff9c] U.x = 743 [0x02e7] U.y = 1500 [0x05dc] 778 [0x030a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1014 [0x03f6] L.y = -100 [0xff9c] U.x = 1051 [0x041b] U.y = 1500 [0x05dc] 779 [0x030b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 743 [0x02e7] L.y = -500 [0xfe0c] U.x = 743 [0x02e7] U.y = 1500 [0x05dc] 780 [0x030c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 743 [0x02e7] L.y = -100 [0xff9c] U.x = 743 [0x02e7] U.y = 1500 [0x05dc] 781 [0x030d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 992 [0x03e0] L.y = -100 [0xff9c] U.x = 992 [0x03e0] U.y = 1500 [0x05dc] 782 [0x030e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 992 [0x03e0] L.y = -100 [0xff9c] U.x = 992 [0x03e0] U.y = 1500 [0x05dc] 783 [0x030f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 316 [0x013c] L.y = -100 [0xff9c] O.x = 466 [0x01d2] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 784 [0x0310] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 316 [0x013c] L.y = -100 [0xff9c] O.x = 466 [0x01d2] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 785 [0x0311] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 786 [0x0312] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 206 [0x00ce] L.y = -525 [0xfdf3] U.x = 206 [0x00ce] U.y = 400 [0x0190] 787 [0x0313] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 205 [0x00cd] L.y = 725 [0x02d5] R.x = 414 [0x019e] R.y = 1000 [0x03e8] U.x = 205 [0x00cd] U.y = 1700 [0x06a4] 788 [0x0314] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 2100 [0x0834] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 789 [0x0315] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 790 [0x0316] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 791 [0x0317] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 792 [0x0318] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 793 [0x0319] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 794 [0x031a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1470 [0x05be] 795 [0x031b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 796 [0x031c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1900 [0x076c] 797 [0x031d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 798 [0x031e] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 316 [0x013c] L.y = -500 [0xfe0c] O.x = 466 [0x01d2] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 799 [0x031f] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 316 [0x013c] L.y = -500 [0xfe0c] O.x = 466 [0x01d2] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 800 [0x0320] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 408 [0x0198] L.y = -400 [0xfe70] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 801 [0x0321] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 316 [0x013c] L.y = -500 [0xfe0c] O.x = 466 [0x01d2] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 802 [0x0322] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 310 [0x0136] L.y = -500 [0xfe0c] U.x = 310 [0x0136] U.y = 1500 [0x05dc] 803 [0x0323] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 363 [0x016b] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 804 [0x0324] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 202 [0x00ca] L.y = 725 [0x02d5] U.x = 202 [0x00ca] U.y = 1700 [0x06a4] 805 [0x0325] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 806 [0x0326] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 807 [0x0327] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 808 [0x0328] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 809 [0x0329] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 206 [0x00ce] L.y = -525 [0xfdf3] U.x = 206 [0x00ce] U.y = 200 [0x00c8] 810 [0x032a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 206 [0x00ce] L.y = 725 [0x02d5] R.x = 403 [0x0193] R.y = 1000 [0x03e8] U.x = 206 [0x00ce] U.y = 1450 [0x05aa] 811 [0x032b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -500 [0xfe0c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 812 [0x032c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -500 [0xfe0c] O.x = 467 [0x01d3] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 813 [0x032d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 409 [0x0199] L.y = -400 [0xfe70] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 814 [0x032e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 314 [0x013a] L.y = -500 [0xfe0c] U.x = 314 [0x013a] U.y = 1100 [0x044c] 815 [0x032f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 310 [0x0136] L.y = -100 [0xff9c] O.x = 363 [0x016b] R.x = 621 [0x026d] R.y = 1000 [0x03e8] U.x = 310 [0x0136] U.y = 1100 [0x044c] 816 [0x0330] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 202 [0x00ca] L.y = 725 [0x02d5] U.x = 202 [0x00ca] U.y = 1457 [0x05b1] 817 [0x0331] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 295 [0x0127] L.y = -500 [0xfe0c] U.x = 295 [0x0127] U.y = 1100 [0x044c] 818 [0x0332] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 197 [0x00c5] L.y = 485 [0x01e5] U.x = 197 [0x00c5] U.y = 1450 [0x05aa] 819 [0x0333] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 310 [0x0136] L.x = 758 [0x02f6] L.y = -500 [0xfe0c] O.x = 466 [0x01d2] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 820 [0x0334] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 821 [0x0335] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 921 [0x0399] U.y = 1500 [0x05dc] 822 [0x0336] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 854 [0x0356] U.y = 1500 [0x05dc] 823 [0x0337] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 839 [0x0347] U.y = 1500 [0x05dc] 824 [0x0338] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 320 [0x0140] L.x = 320 [0x0140] L.y = -100 [0xff9c] O.x = 431 [0x01af] R.x = 674 [0x02a2] R.y = 1000 [0x03e8] U.x = 320 [0x0140] U.y = 1100 [0x044c] 825 [0x0339] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 250 [0x00fa] L.y = 725 [0x02d5] U.x = 250 [0x00fa] U.y = 1450 [0x05aa] 826 [0x033a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 320 [0x0140] L.x = 320 [0x0140] L.y = -100 [0xff9c] O.x = 431 [0x01af] R.x = 674 [0x02a2] R.y = 1000 [0x03e8] U.x = 320 [0x0140] U.y = 1100 [0x044c] 827 [0x033b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 746 [0x02ea] L.y = -100 [0xff9c] U.x = 746 [0x02ea] U.y = 1100 [0x044c] 828 [0x033c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 829 [0x033d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 830 [0x033e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -100 [0xff9c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1580 [0x062c] 831 [0x033f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 832 [0x0340] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 224 [0x00e0] L.y = 725 [0x02d5] U.x = 224 [0x00e0] U.y = 1650 [0x0672] 833 [0x0341] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 284 [0x011c] L.x = 284 [0x011c] L.y = -100 [0xff9c] O.x = 335 [0x014f] R.x = 569 [0x0239] R.y = 1000 [0x03e8] U.x = 284 [0x011c] U.y = 1100 [0x044c] 834 [0x0342] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 183 [0x00b7] L.y = 725 [0x02d5] U.x = 183 [0x00b7] U.y = 1450 [0x05aa] 835 [0x0343] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 836 [0x0344] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 837 [0x0345] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 838 [0x0346] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 839 [0x0347] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 840 [0x0348] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1870 [0x074e] 841 [0x0349] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 842 [0x034a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 2300 [0x08fc] 843 [0x034b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 844 [0x034c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1900 [0x076c] 845 [0x034d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -500 [0xfe0c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 846 [0x034e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -500 [0xfe0c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 847 [0x034f] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 436 [0x01b4] L.y = -400 [0xfe70] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 848 [0x0350] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 338 [0x0152] L.y = -500 [0xfe0c] O.x = 494 [0x01ee] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 849 [0x0351] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 338 [0x0152] L.y = -100 [0xff9c] U.x = 338 [0x0152] U.y = 1500 [0x05dc] 850 [0x0352] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 284 [0x011c] L.y = -100 [0xff9c] U.x = 284 [0x011c] U.y = 1100 [0x044c] 851 [0x0353] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 180 [0x00b4] L.y = 725 [0x02d5] U.x = 180 [0x00b4] U.y = 1450 [0x05aa] 852 [0x0354] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 338 [0x0152] L.x = 1086 [0x043e] L.y = -100 [0xff9c] O.x = 494 [0x01ee] U.x = 835 [0x0343] U.y = 1500 [0x05dc] 853 [0x0355] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 676 [0x02a4] U.y = 1500 [0x05dc] 854 [0x0356] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1014 [0x03f6] U.y = 1500 [0x05dc] 855 [0x0357] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1031 [0x0407] U.y = 1500 [0x05dc] 856 [0x0358] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 999 [0x03e7] U.y = 1500 [0x05dc] 857 [0x0359] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 335 [0x014f] L.y = -100 [0xff9c] U.x = 335 [0x014f] U.y = 1405 [0x057d] 858 [0x035a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 448 [0x01c0] L.y = -100 [0xff9c] U.x = 373 [0x0175] U.y = 1500 [0x05dc] 859 [0x035b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 986 [0x03da] L.y = -100 [0xff9c] U.x = 986 [0x03da] U.y = 1500 [0x05dc] 860 [0x035c] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 137 [0x0089] L.y = -500 [0xfe0c] U.x = 328 [0x0148] U.y = 1100 [0x044c] 861 [0x035d] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 89 [0x0059] L.y = 485 [0x01e5] U.x = 89 [0x0059] U.y = 1650 [0x0672] 862 [0x035e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 126 [0x007e] L.y = -500 [0xfe0c] U.x = 324 [0x0144] U.y = 1500 [0x05dc] 863 [0x035f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 126 [0x007e] L.y = -500 [0xfe0c] U.x = 324 [0x0144] U.y = 1500 [0x05dc] 864 [0x0360] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 133 [0x0085] L.y = -500 [0xfe0c] U.x = 323 [0x0143] U.y = 1100 [0x044c] 865 [0x0361] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 133 [0x0085] L.y = -500 [0xfe0c] U.x = 323 [0x0143] U.y = 1100 [0x044c] 866 [0x0362] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 155 [0x009b] L.y = 485 [0x01e5] U.x = 155 [0x009b] U.y = 1650 [0x0672] 867 [0x0363] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 126 [0x007e] L.y = -500 [0xfe0c] U.x = 324 [0x0144] U.y = 1100 [0x044c] 868 [0x0364] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 126 [0x007e] L.y = -500 [0xfe0c] U.x = 324 [0x0144] U.y = 1100 [0x044c] 869 [0x0365] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 126 [0x007e] L.y = -500 [0xfe0c] U.x = 324 [0x0144] U.y = 1100 [0x044c] 870 [0x0366] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 87 [0x0057] L.y = 485 [0x01e5] U.x = 215 [0x00d7] U.y = 1450 [0x05aa] 871 [0x0367] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 125 [0x007d] L.y = -500 [0xfe0c] R.x = 598 [0x0256] R.y = 1000 [0x03e8] U.x = 323 [0x0143] U.y = 1100 [0x044c] 872 [0x0368] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 125 [0x007d] L.y = -500 [0xfe0c] R.x = 598 [0x0256] R.y = 1000 [0x03e8] U.x = 323 [0x0143] U.y = 1100 [0x044c] 873 [0x0369] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 95 [0x005f] L.y = 485 [0x01e5] U.x = 213 [0x00d5] U.y = 1450 [0x05aa] 874 [0x036a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 231 [0x00e7] L.y = -500 [0xfe0c] U.x = 351 [0x015f] U.y = 1100 [0x044c] 875 [0x036b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 155 [0x009b] L.y = 485 [0x01e5] U.x = 232 [0x00e8] U.y = 1450 [0x05aa] 876 [0x036c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 315 [0x013b] L.y = -500 [0xfe0c] U.x = 315 [0x013b] U.y = 1540 [0x0604] 877 [0x036d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 315 [0x013b] L.y = -500 [0xfe0c] U.x = 315 [0x013b] U.y = 1540 [0x0604] 878 [0x036e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 581 [0x0245] L.y = -100 [0xff9c] U.x = 710 [0x02c6] U.y = 1100 [0x044c] 879 [0x036f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 581 [0x0245] L.y = -100 [0xff9c] U.x = 710 [0x02c6] U.y = 1100 [0x044c] 880 [0x0370] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 751 [0x02ef] L.y = -100 [0xff9c] U.x = 751 [0x02ef] U.y = 1100 [0x044c] 881 [0x0371] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 599 [0x0257] L.y = -500 [0xfe0c] U.x = 710 [0x02c6] U.y = 1100 [0x044c] 882 [0x0372] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 824 [0x0338] L.y = -100 [0xff9c] U.x = 824 [0x0338] U.y = 1100 [0x044c] 883 [0x0373] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 566 [0x0236] L.y = -100 [0xff9c] U.x = 690 [0x02b2] U.y = 1100 [0x044c] 884 [0x0374] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 410 [0x019a] L.y = -100 [0xff9c] U.x = 675 [0x02a3] U.y = 1500 [0x05dc] 885 [0x0375] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 327 [0x0147] L.y = 725 [0x02d5] U.x = 327 [0x0147] U.y = 1650 [0x0672] 886 [0x0376] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 406 [0x0196] L.y = -100 [0xff9c] U.x = 406 [0x0196] U.y = 1100 [0x044c] 887 [0x0377] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 410 [0x019a] L.y = -100 [0xff9c] U.x = 675 [0x02a3] U.y = 1900 [0x076c] 888 [0x0378] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 410 [0x019a] L.y = -100 [0xff9c] U.x = 675 [0x02a3] U.y = 1500 [0x05dc] 889 [0x0379] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 711 [0x02c7] L.y = -100 [0xff9c] U.x = 880 [0x0370] U.y = 1500 [0x05dc] 890 [0x037a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 720 [0x02d0] L.y = -100 [0xff9c] U.x = 720 [0x02d0] U.y = 1100 [0x044c] 891 [0x037b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 711 [0x02c7] L.y = -360 [0xfe98] U.x = 880 [0x0370] U.y = 1500 [0x05dc] 892 [0x037c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 932 [0x03a4] L.y = -100 [0xff9c] U.x = 932 [0x03a4] U.y = 1500 [0x05dc] 893 [0x037d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 711 [0x02c7] L.y = -500 [0xfe0c] U.x = 880 [0x0370] U.y = 1500 [0x05dc] 894 [0x037e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1005 [0x03ed] L.y = -100 [0xff9c] U.x = 1005 [0x03ed] U.y = 1500 [0x05dc] 895 [0x037f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 706 [0x02c2] L.y = -100 [0xff9c] U.x = 870 [0x0366] U.y = 1500 [0x05dc] 896 [0x0380] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 370 [0x0172] L.y = 725 [0x02d5] U.x = 370 [0x0172] U.y = 1700 [0x06a4] 897 [0x0381] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 816 [0x0330] L.x = 551 [0x0227] L.y = -100 [0xff9c] R.x = 1094 [0x0446] R.y = 1000 [0x03e8] U.x = 551 [0x0227] U.y = 1940 [0x0794] 898 [0x0382] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 816 [0x0330] L.x = 551 [0x0227] L.y = -100 [0xff9c] R.x = 1094 [0x0446] R.y = 1000 [0x03e8] U.x = 551 [0x0227] U.y = 1940 [0x0794] 899 [0x0383] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 816 [0x0330] L.x = 551 [0x0227] L.y = -500 [0xfe0c] R.x = 1094 [0x0446] R.y = 1000 [0x03e8] U.x = 551 [0x0227] U.y = 1540 [0x0604] 900 [0x0384] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 816 [0x0330] L.x = 551 [0x0227] L.y = -500 [0xfe0c] R.x = 1094 [0x0446] R.y = 1000 [0x03e8] U.x = 551 [0x0227] U.y = 1540 [0x0604] 901 [0x0385] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 816 [0x0330] L.x = 551 [0x0227] L.y = -500 [0xfe0c] R.x = 1094 [0x0446] R.y = 1000 [0x03e8] U.x = 551 [0x0227] U.y = 1540 [0x0604] 902 [0x0386] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 551 [0x0227] L.y = -500 [0xfe0c] U.x = 551 [0x0227] U.y = 1540 [0x0604] 903 [0x0387] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -100 [0xff9c] U.x = 559 [0x022f] U.y = 1540 [0x0604] 904 [0x0388] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 551 [0x0227] L.y = -100 [0xff9c] U.x = 551 [0x0227] U.y = 1540 [0x0604] 905 [0x0389] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 542 [0x021e] U.y = 1100 [0x044c] 906 [0x038a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 562 [0x0232] L.y = -100 [0xff9c] U.x = 562 [0x0232] U.y = 1100 [0x044c] 907 [0x038b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 562 [0x0232] L.y = -100 [0xff9c] U.x = 562 [0x0232] U.y = 1100 [0x044c] 908 [0x038c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 562 [0x0232] L.y = -100 [0xff9c] U.x = 562 [0x0232] U.y = 1500 [0x05dc] 909 [0x038d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 562 [0x0232] L.y = -100 [0xff9c] U.x = 562 [0x0232] U.y = 1100 [0x044c] 910 [0x038e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 649 [0x0289] L.y = -100 [0xff9c] U.x = 649 [0x0289] U.y = 1100 [0x044c] 911 [0x038f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 570 [0x023a] L.y = -100 [0xff9c] U.x = 535 [0x0217] U.y = 1540 [0x0604] 912 [0x0390] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 572 [0x023c] L.y = -100 [0xff9c] U.x = 572 [0x023c] U.y = 1100 [0x044c] 913 [0x0391] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 552 [0x0228] L.y = -500 [0xfe0c] U.x = 552 [0x0228] U.y = 1100 [0x044c] 914 [0x0392] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 714 [0x02ca] L.y = -100 [0xff9c] U.x = 714 [0x02ca] U.y = 1100 [0x044c] 915 [0x0393] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 714 [0x02ca] L.y = -100 [0xff9c] U.x = 714 [0x02ca] U.y = 1500 [0x05dc] 916 [0x0394] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 714 [0x02ca] L.y = -100 [0xff9c] U.x = 714 [0x02ca] U.y = 1500 [0x05dc] 917 [0x0395] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 714 [0x02ca] L.y = -100 [0xff9c] U.x = 714 [0x02ca] U.y = 1100 [0x044c] 918 [0x0396] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 451 [0x01c3] L.y = 725 [0x02d5] U.x = 451 [0x01c3] U.y = 1650 [0x0672] 919 [0x0397] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 562 [0x0232] L.y = -100 [0xff9c] U.x = 562 [0x0232] U.y = 1100 [0x044c] 920 [0x0398] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 686 [0x02ae] L.x = 686 [0x02ae] L.y = -100 [0xff9c] U.x = 686 [0x02ae] U.y = 1900 [0x076c] 921 [0x0399] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 686 [0x02ae] L.x = 686 [0x02ae] L.y = -100 [0xff9c] U.x = 686 [0x02ae] U.y = 1900 [0x076c] 922 [0x039a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 686 [0x02ae] L.x = 686 [0x02ae] L.y = -500 [0xfe0c] U.x = 686 [0x02ae] U.y = 1500 [0x05dc] 923 [0x039b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 686 [0x02ae] L.x = 686 [0x02ae] L.y = -500 [0xfe0c] U.x = 686 [0x02ae] U.y = 1500 [0x05dc] 924 [0x039c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 686 [0x02ae] L.x = 686 [0x02ae] L.y = -500 [0xfe0c] U.x = 686 [0x02ae] U.y = 1500 [0x05dc] 925 [0x039d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 746 [0x02ea] L.y = -100 [0xff9c] U.x = 746 [0x02ea] U.y = 1500 [0x05dc] 926 [0x039e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 645 [0x0285] L.y = -100 [0xff9c] U.x = 645 [0x0285] U.y = 1500 [0x05dc] 927 [0x039f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 928 [0x03a0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 682 [0x02aa] L.y = -100 [0xff9c] U.x = 682 [0x02aa] U.y = 1500 [0x05dc] 929 [0x03a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 682 [0x02aa] L.y = -100 [0xff9c] U.x = 682 [0x02aa] U.y = 1900 [0x076c] 930 [0x03a2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 682 [0x02aa] L.y = -100 [0xff9c] U.x = 682 [0x02aa] U.y = 1500 [0x05dc] 931 [0x03a3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 770 [0x0302] L.y = -100 [0xff9c] U.x = 770 [0x0302] U.y = 1500 [0x05dc] 932 [0x03a4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 682 [0x02aa] L.y = -100 [0xff9c] U.x = 682 [0x02aa] U.y = 1500 [0x05dc] 933 [0x03a5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 696 [0x02b8] L.y = -100 [0xff9c] U.x = 696 [0x02b8] U.y = 1500 [0x05dc] 934 [0x03a6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 679 [0x02a7] L.y = -500 [0xfe0c] U.x = 679 [0x02a7] U.y = 1500 [0x05dc] 935 [0x03a7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 912 [0x0390] L.y = -100 [0xff9c] U.x = 912 [0x0390] U.y = 1500 [0x05dc] 936 [0x03a8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 912 [0x0390] L.y = -100 [0xff9c] U.x = 912 [0x0390] U.y = 1935 [0x078f] 937 [0x03a9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 912 [0x0390] L.y = -100 [0xff9c] U.x = 912 [0x0390] U.y = 1900 [0x076c] 938 [0x03aa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 912 [0x0390] L.y = -100 [0xff9c] U.x = 912 [0x0390] U.y = 1500 [0x05dc] 939 [0x03ab] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -100 [0xff9c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1580 [0x062c] 940 [0x03ac] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 303 [0x012f] U.y = 1500 [0x05dc] 941 [0x03ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 208 [0x00d0] L.y = 725 [0x02d5] U.x = 208 [0x00d0] U.y = 1700 [0x06a4] 942 [0x03ae] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -100 [0xff9c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1980 [0x07bc] 943 [0x03af] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -500 [0xfe0c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1580 [0x062c] 944 [0x03b0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -500 [0xfe0c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1580 [0x062c] 945 [0x03b1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -500 [0xfe0c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1580 [0x062c] 946 [0x03b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -500 [0xfe0c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1950 [0x079e] 947 [0x03b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 303 [0x012f] L.y = -500 [0xfe0c] R.x = 508 [0x01fc] R.y = 1000 [0x03e8] U.x = 303 [0x012f] U.y = 1580 [0x062c] 948 [0x03b4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 321 [0x0141] L.x = 320 [0x0140] L.y = -100 [0xff9c] U.x = 320 [0x0140] U.y = 1580 [0x062c] 949 [0x03b5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 319 [0x013f] L.x = 318 [0x013e] L.y = -100 [0xff9c] U.x = 318 [0x013e] U.y = 1580 [0x062c] 950 [0x03b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 303 [0x012f] L.y = -500 [0xfe0c] U.x = 303 [0x012f] U.y = 1540 [0x0604] 951 [0x03b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 201 [0x00c9] L.y = 485 [0x01e5] U.x = 201 [0x00c9] U.y = 1700 [0x06a4] 952 [0x03b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 304 [0x0130] L.y = -100 [0xff9c] U.x = 304 [0x0130] U.y = 1540 [0x0604] 953 [0x03b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 304 [0x0130] L.y = -100 [0xff9c] U.x = 304 [0x0130] U.y = 1540 [0x0604] 954 [0x03ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 372 [0x0174] L.y = -100 [0xff9c] U.x = 372 [0x0174] U.y = 1540 [0x0604] 955 [0x03bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 305 [0x0131] L.y = -100 [0xff9c] U.x = 305 [0x0131] U.y = 1540 [0x0604] 956 [0x03bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 303 [0x012f] L.y = -500 [0xfe0c] U.x = 303 [0x012f] U.y = 1540 [0x0604] 957 [0x03bd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 188 [0x00bc] L.y = 485 [0x01e5] U.x = 188 [0x00bc] U.y = 1763 [0x06e3] 958 [0x03be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 303 [0x012f] L.y = -100 [0xff9c] U.x = 303 [0x012f] U.y = 1540 [0x0604] 959 [0x03bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 360 [0x0168] L.y = -100 [0xff9c] U.x = 360 [0x0168] U.y = 1540 [0x0604] 960 [0x03c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 360 [0x0168] L.y = -100 [0xff9c] U.x = 360 [0x0168] U.y = 1540 [0x0604] 961 [0x03c1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 303 [0x012f] L.x = 745 [0x02e9] L.y = -500 [0xfe0c] U.x = 936 [0x03a8] U.y = 1500 [0x05dc] 962 [0x03c2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 604 [0x025c] L.y = -100 [0xff9c] U.x = 671 [0x029f] U.y = 1580 [0x062c] 963 [0x03c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -100 [0xff9c] U.x = 640 [0x0280] U.y = 1580 [0x062c] 964 [0x03c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 597 [0x0255] L.y = -500 [0xfe0c] U.x = 660 [0x0294] U.y = 1580 [0x062c] 965 [0x03c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 966 [0x03c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 967 [0x03c7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 553 [0x0229] U.y = 1500 [0x05dc] 968 [0x03c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 364 [0x016c] L.y = 725 [0x02d5] U.x = 364 [0x016c] U.y = 1650 [0x0672] 969 [0x03c9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 460 [0x01cc] L.y = -100 [0xff9c] U.x = 460 [0x01cc] U.y = 1100 [0x044c] 970 [0x03ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 304 [0x0130] L.y = 725 [0x02d5] U.x = 304 [0x0130] U.y = 1450 [0x05aa] 971 [0x03cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 538 [0x021a] L.y = -100 [0xff9c] U.x = 538 [0x021a] U.y = 1100 [0x044c] 972 [0x03cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -100 [0xff9c] R.x = 587 [0x024b] R.y = 1000 [0x03e8] U.x = 553 [0x0229] U.y = 1900 [0x076c] 973 [0x03cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -500 [0xfe0c] R.x = 587 [0x024b] R.y = 1000 [0x03e8] U.x = 553 [0x0229] U.y = 1500 [0x05dc] 974 [0x03ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -500 [0xfe0c] R.x = 587 [0x024b] R.y = 1000 [0x03e8] U.x = 553 [0x0229] U.y = 1500 [0x05dc] 975 [0x03cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -500 [0xfe0c] R.x = 587 [0x024b] R.y = 1000 [0x03e8] U.x = 553 [0x0229] U.y = 1500 [0x05dc] 976 [0x03d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -500 [0xfe0c] R.x = 587 [0x024b] R.y = 1000 [0x03e8] U.x = 553 [0x0229] U.y = 1870 [0x074e] 977 [0x03d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -500 [0xfe0c] R.x = 587 [0x024b] R.y = 1000 [0x03e8] U.x = 553 [0x0229] U.y = 1500 [0x05dc] 978 [0x03d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 556 [0x022c] L.x = 556 [0x022c] L.y = -100 [0xff9c] U.x = 556 [0x022c] U.y = 1500 [0x05dc] 979 [0x03d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 553 [0x0229] L.y = -100 [0xff9c] U.x = 553 [0x0229] U.y = 1500 [0x05dc] 980 [0x03d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -100 [0xff9c] U.x = 525 [0x020d] U.y = 1500 [0x05dc] 981 [0x03d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -100 [0xff9c] U.x = 525 [0x020d] U.y = 1500 [0x05dc] 982 [0x03d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 700 [0x02bc] L.y = -100 [0xff9c] U.x = 700 [0x02bc] U.y = 1500 [0x05dc] 983 [0x03d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 984 [0x03d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 547 [0x0223] L.y = -100 [0xff9c] U.x = 441 [0x01b9] U.y = 1100 [0x044c] 985 [0x03d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 1224 [0x04c8] L.y = -500 [0xfe0c] U.x = 1415 [0x0587] U.y = 1500 [0x05dc] 986 [0x03da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 553 [0x0229] L.x = 1497 [0x05d9] L.y = -100 [0xff9c] U.x = 1762 [0x06e2] U.y = 1500 [0x05dc] 987 [0x03db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 868 [0x0364] U.y = 1500 [0x05dc] 988 [0x03dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 568 [0x0238] L.y = 725 [0x02d5] U.x = 568 [0x0238] U.y = 1450 [0x05aa] 989 [0x03dd] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 990 [0x03de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 868 [0x0364] L.x = 868 [0x0364] L.y = -100 [0xff9c] U.x = 868 [0x0364] U.y = 1500 [0x05dc] 991 [0x03df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 868 [0x0364] L.x = 868 [0x0364] L.y = -100 [0xff9c] U.x = 868 [0x0364] U.y = 1500 [0x05dc] 992 [0x03e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 868 [0x0364] L.x = 868 [0x0364] L.y = -500 [0xfe0c] U.x = 868 [0x0364] U.y = 1100 [0x044c] 993 [0x03e1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 868 [0x0364] L.y = -100 [0xff9c] U.x = 868 [0x0364] U.y = 1100 [0x044c] 994 [0x03e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 865 [0x0361] L.y = -100 [0xff9c] U.x = 865 [0x0361] U.y = 1100 [0x044c] 995 [0x03e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 996 [0x03e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 797 [0x031d] L.y = -500 [0xfe0c] U.x = 797 [0x031d] U.y = 1100 [0x044c] 997 [0x03e5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 522 [0x020a] L.y = 485 [0x01e5] U.x = 522 [0x020a] U.y = 1450 [0x05aa] 998 [0x03e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 871 [0x0367] L.y = -100 [0xff9c] R.x = 1741 [0x06cd] R.y = 1000 [0x03e8] U.x = 871 [0x0367] U.y = 1100 [0x044c] 999 [0x03e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 568 [0x0238] L.y = 725 [0x02d5] U.x = 568 [0x0238] U.y = 1450 [0x05aa] 1000 [0x03e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 871 [0x0367] L.y = -500 [0xfe0c] U.x = 871 [0x0367] U.y = 1100 [0x044c] 1001 [0x03e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 571 [0x023b] L.y = 725 [0x02d5] U.x = 571 [0x023b] U.y = 1457 [0x05b1] 1002 [0x03ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -100 [0xff9c] U.x = 576 [0x0240] U.y = 1540 [0x0604] 1003 [0x03eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 727 [0x02d7] L.y = -100 [0xff9c] U.x = 727 [0x02d7] U.y = 1100 [0x044c] 1004 [0x03ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 727 [0x02d7] L.y = -100 [0xff9c] U.x = 727 [0x02d7] U.y = 1100 [0x044c] 1005 [0x03ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 890 [0x037a] L.y = -100 [0xff9c] U.x = 890 [0x037a] U.y = 1500 [0x05dc] 1006 [0x03ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 895 [0x037f] U.y = 1500 [0x05dc] 1007 [0x03ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = 725 [0x02d5] U.x = 586 [0x024a] U.y = 1650 [0x0672] 1008 [0x03f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 721 [0x02d1] L.y = -100 [0xff9c] U.x = 721 [0x02d1] U.y = 1100 [0x044c] 1009 [0x03f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 895 [0x037f] L.y = -100 [0xff9c] U.x = 895 [0x037f] U.y = 1900 [0x076c] 1010 [0x03f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 895 [0x037f] L.y = -100 [0xff9c] U.x = 895 [0x037f] U.y = 1900 [0x076c] 1011 [0x03f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 895 [0x037f] L.y = -500 [0xfe0c] U.x = 895 [0x037f] U.y = 1500 [0x05dc] 1012 [0x03f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 897 [0x0381] L.y = -500 [0xfe0c] U.x = 897 [0x0381] U.y = 1500 [0x05dc] 1013 [0x03f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 1101 [0x044d] L.y = -100 [0xff9c] U.x = 1101 [0x044d] U.y = 1500 [0x05dc] 1014 [0x03f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 890 [0x037a] L.y = -100 [0xff9c] U.x = 890 [0x037a] U.y = 1500 [0x05dc] 1015 [0x03f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1016 [0x03f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 381 [0x017d] L.y = 725 [0x02d5] U.x = 381 [0x017d] U.y = 1450 [0x05aa] 1017 [0x03f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 1018 [0x03fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 1019 [0x03fb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 1020 [0x03fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -100 [0xff9c] U.x = 580 [0x0244] U.y = 1500 [0x05dc] 1021 [0x03fd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -500 [0xfe0c] U.x = 580 [0x0244] U.y = 1100 [0x044c] 1022 [0x03fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -500 [0xfe0c] U.x = 580 [0x0244] U.y = 1100 [0x044c] 1023 [0x03ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -500 [0xfe0c] U.x = 580 [0x0244] U.y = 1100 [0x044c] 1024 [0x0400] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 580 [0x0244] L.y = -500 [0xfe0c] U.x = 580 [0x0244] U.y = 1100 [0x044c] 1025 [0x0401] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 1131 [0x046b] L.x = 838 [0x0346] L.y = -100 [0xff9c] U.x = 838 [0x0346] U.y = 1100 [0x044c] 1026 [0x0402] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 580 [0x0244] L.y = -500 [0xfe0c] U.x = 580 [0x0244] U.y = 1100 [0x044c] 1027 [0x0403] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 583 [0x0247] L.y = -100 [0xff9c] U.x = 583 [0x0247] U.y = 1100 [0x044c] 1028 [0x0404] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 607 [0x025f] L.y = -500 [0xfe0c] U.x = 607 [0x025f] U.y = 1100 [0x044c] 1029 [0x0405] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 398 [0x018e] L.y = 485 [0x01e5] U.x = 398 [0x018e] U.y = 1450 [0x05aa] 1030 [0x0406] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 603 [0x025b] L.y = -500 [0xfe0c] U.x = 603 [0x025b] U.y = 1100 [0x044c] 1031 [0x0407] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 346 [0x015a] L.y = 485 [0x01e5] U.x = 346 [0x015a] U.y = 1450 [0x05aa] 1032 [0x0408] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 568 [0x0238] L.y = -500 [0xfe0c] U.x = 568 [0x0238] U.y = 1100 [0x044c] 1033 [0x0409] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 458 [0x01ca] L.y = 485 [0x01e5] U.x = 458 [0x01ca] U.y = 1450 [0x05aa] 1034 [0x040a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 580 [0x0244] L.y = -320 [0xfec0] U.x = 580 [0x0244] U.y = 1100 [0x044c] 1035 [0x040b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 580 [0x0244] L.y = -500 [0xfe0c] U.x = 580 [0x0244] U.y = 1100 [0x044c] 1036 [0x040c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 873 [0x0369] L.x = 1298 [0x0512] L.y = -500 [0xfe0c] U.x = 1489 [0x05d1] U.y = 1500 [0x05dc] 1037 [0x040d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1100 [0x044c] 1038 [0x040e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1039 [0x040f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1040 [0x0410] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1041 [0x0411] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1470 [0x05be] 1042 [0x0412] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1043 [0x0413] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 482 [0x01e2] L.y = 725 [0x02d5] U.x = 482 [0x01e2] U.y = 1650 [0x0672] 1044 [0x0414] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 599 [0x0257] L.y = -100 [0xff9c] U.x = 599 [0x0257] U.y = 1100 [0x044c] 1045 [0x0415] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 391 [0x0187] L.y = 725 [0x02d5] U.x = 391 [0x0187] U.y = 1450 [0x05aa] 1046 [0x0416] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -100 [0xff9c] U.x = 734 [0x02de] U.y = 1900 [0x076c] 1047 [0x0417] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -100 [0xff9c] U.x = 734 [0x02de] U.y = 1900 [0x076c] 1048 [0x0418] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -100 [0xff9c] U.x = 734 [0x02de] U.y = 1900 [0x076c] 1049 [0x0419] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -100 [0xff9c] U.x = 734 [0x02de] U.y = 1900 [0x076c] 1050 [0x041a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -500 [0xfe0c] U.x = 734 [0x02de] U.y = 1500 [0x05dc] 1051 [0x041b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -500 [0xfe0c] U.x = 734 [0x02de] U.y = 1500 [0x05dc] 1052 [0x041c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -500 [0xfe0c] U.x = 734 [0x02de] U.y = 1500 [0x05dc] 1053 [0x041d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 734 [0x02de] L.y = -500 [0xfe0c] U.x = 734 [0x02de] U.y = 1500 [0x05dc] 1054 [0x041e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1055 [0x041f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 734 [0x02de] L.y = -500 [0xfe0c] U.x = 734 [0x02de] U.y = 1500 [0x05dc] 1056 [0x0420] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 737 [0x02e1] L.y = -500 [0xfe0c] U.x = 737 [0x02e1] U.y = 1500 [0x05dc] 1057 [0x0421] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 603 [0x025b] L.y = -100 [0xff9c] U.x = 603 [0x025b] U.y = 1100 [0x044c] 1058 [0x0422] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 476 [0x01dc] L.y = 725 [0x02d5] U.x = 476 [0x01dc] U.y = 1650 [0x0672] 1059 [0x0423] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 725 [0x02d5] L.y = -100 [0xff9c] U.x = 725 [0x02d5] U.y = 1500 [0x05dc] 1060 [0x0424] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 804 [0x0324] L.y = -100 [0xff9c] U.x = 804 [0x0324] U.y = 1500 [0x05dc] 1061 [0x0425] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 780 [0x030c] L.y = -500 [0xfe0c] U.x = 780 [0x030c] U.y = 1500 [0x05dc] 1062 [0x0426] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 753 [0x02f1] L.y = -500 [0xfe0c] U.x = 753 [0x02f1] U.y = 1500 [0x05dc] 1063 [0x0427] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 769 [0x0301] L.y = -100 [0xff9c] U.x = 769 [0x0301] U.y = 1500 [0x05dc] 1064 [0x0428] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 1614 [0x064e] L.y = -500 [0xfe0c] U.x = 1805 [0x070d] U.y = 1500 [0x05dc] 1065 [0x0429] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 734 [0x02de] L.x = 1887 [0x075f] L.y = -100 [0xff9c] U.x = 2152 [0x0868] U.y = 1500 [0x05dc] 1066 [0x042a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1067 [0x042b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1500 [0x05dc] 1068 [0x042c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1900 [0x076c] 1069 [0x042d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1935 [0x078f] 1070 [0x042e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1907 [0x0773] 1071 [0x042f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1900 [0x076c] 1072 [0x0430] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1870 [0x074e] 1073 [0x0431] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 557 [0x022d] L.y = -100 [0xff9c] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1074 [0x0432] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 367 [0x016f] L.y = -525 [0xfdf3] U.x = 367 [0x016f] U.y = 200 [0x00c8] 1075 [0x0433] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 366 [0x016e] L.y = 725 [0x02d5] U.x = 366 [0x016e] U.y = 1450 [0x05aa] 1076 [0x0434] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1077 [0x0435] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1078 [0x0436] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1079 [0x0437] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1900 [0x076c] 1080 [0x0438] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] 1081 [0x0439] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1900 [0x076c] 1082 [0x043a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] 1083 [0x043b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1900 [0x076c] 1084 [0x043c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1825 [0x0721] 1085 [0x043d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1900 [0x076c] 1086 [0x043e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] 1087 [0x043f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -500 [0xfe0c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1088 [0x0440] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1089 [0x0441] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1090 [0x0442] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1091 [0x0443] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1900 [0x076c] 1092 [0x0444] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1870 [0x074e] 1093 [0x0445] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1900 [0x076c] 1094 [0x0446] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1470 [0x05be] 1095 [0x0447] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1870 [0x074e] 1096 [0x0448] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1870 [0x074e] 1097 [0x0449] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 557 [0x022d] L.y = -100 [0xff9c] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1098 [0x044a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1870 [0x074e] 1099 [0x044b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1100 [0x044c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1870 [0x074e] 1101 [0x044d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1102 [0x044e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -500 [0xfe0c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1103 [0x044f] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 622 [0x026e] L.y = -400 [0xfe70] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1104 [0x0450] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 622 [0x026e] L.y = -400 [0xfe70] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1470 [0x05be] 1105 [0x0451] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -500 [0xfe0c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1106 [0x0452] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -500 [0xfe0c] O.x = 783 [0x030f] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1470 [0x05be] 1107 [0x0453] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 537 [0x0219] L.y = -500 [0xfe0c] U.x = 537 [0x0219] U.y = 1100 [0x044c] 1108 [0x0454] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 557 [0x022d] L.y = -100 [0xff9c] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1109 [0x0455] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 557 [0x022d] L.y = -100 [0xff9c] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1110 [0x0456] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 366 [0x016e] L.y = 725 [0x02d5] U.x = 366 [0x016e] U.y = 1450 [0x05aa] 1111 [0x0457] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 557 [0x022d] L.y = -100 [0xff9c] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1112 [0x0458] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 529 [0x0211] L.y = -100 [0xff9c] U.x = 529 [0x0211] U.y = 1540 [0x0604] 1113 [0x0459] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 349 [0x015d] L.y = 725 [0x02d5] U.x = 349 [0x015d] U.y = 1700 [0x06a4] 1114 [0x045a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1115 [0x045b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 366 [0x016e] L.y = 725 [0x02d5] U.x = 366 [0x016e] U.y = 1450 [0x05aa] 1116 [0x045c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 557 [0x022d] L.x = 557 [0x022d] L.y = -100 [0xff9c] O.x = 608 [0x0260] R.x = 1114 [0x045a] R.y = 1000 [0x03e8] U.x = 557 [0x022d] U.y = 1500 [0x05dc] 1117 [0x045d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1118 [0x045e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1119 [0x045f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 554 [0x022a] L.y = -100 [0xff9c] U.x = 554 [0x022a] U.y = 1100 [0x044c] 1120 [0x0460] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 554 [0x022a] L.y = -100 [0xff9c] U.x = 554 [0x022a] U.y = 1500 [0x05dc] 1121 [0x0461] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 554 [0x022a] L.y = -100 [0xff9c] U.x = 554 [0x022a] U.y = 1500 [0x05dc] 1122 [0x0462] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 554 [0x022a] L.y = -100 [0xff9c] U.x = 554 [0x022a] U.y = 1500 [0x05dc] 1123 [0x0463] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 554 [0x022a] L.y = -100 [0xff9c] U.x = 554 [0x022a] U.y = 1500 [0x05dc] 1124 [0x0464] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 554 [0x022a] L.y = -500 [0xfe0c] U.x = 554 [0x022a] U.y = 1100 [0x044c] 1125 [0x0465] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 545 [0x0221] L.y = -100 [0xff9c] U.x = 545 [0x0221] U.y = 1100 [0x044c] 1126 [0x0466] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 572 [0x023c] L.y = -100 [0xff9c] U.x = 572 [0x023c] U.y = 1100 [0x044c] 1127 [0x0467] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 588 [0x024c] L.y = -100 [0xff9c] U.x = 588 [0x024c] U.y = 1100 [0x044c] 1128 [0x0468] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -100 [0xff9c] U.x = 559 [0x022f] U.y = 1100 [0x044c] 1129 [0x0469] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 550 [0x0226] L.y = 725 [0x02d5] U.x = 550 [0x0226] U.y = 1457 [0x05b1] 1130 [0x046a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 839 [0x0347] L.y = -100 [0xff9c] U.x = 839 [0x0347] U.y = 1100 [0x044c] 1131 [0x046b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 778 [0x030a] L.y = -100 [0xff9c] U.x = 778 [0x030a] U.y = 1100 [0x044c] 1132 [0x046c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -100 [0xff9c] U.x = 525 [0x020d] U.y = 1580 [0x062c] 1133 [0x046d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 544 [0x0220] L.y = -100 [0xff9c] U.x = 544 [0x0220] U.y = 1580 [0x062c] 1134 [0x046e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 557 [0x022d] L.y = -100 [0xff9c] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1135 [0x046f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 362 [0x016a] L.y = 725 [0x02d5] U.x = 362 [0x016a] U.y = 1450 [0x05aa] 1136 [0x0470] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 557 [0x022d] L.y = -100 [0xff9c] U.x = 557 [0x022d] U.y = 1100 [0x044c] 1137 [0x0471] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 362 [0x016a] L.y = 725 [0x02d5] U.x = 362 [0x016a] U.y = 1450 [0x05aa] 1138 [0x0472] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1139 [0x0473] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 491 [0x01eb] L.y = 725 [0x02d5] U.x = 491 [0x01eb] U.y = 1650 [0x0672] 1140 [0x0474] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1100 [0x044c] 1141 [0x0475] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1142 [0x0476] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1143 [0x0477] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2300 [0x08fc] 1144 [0x0478] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] 1145 [0x0479] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2300 [0x08fc] 1146 [0x047a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] 1147 [0x047b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2300 [0x08fc] 1148 [0x047c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2225 [0x08b1] 1149 [0x047d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2300 [0x08fc] 1150 [0x047e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] 1151 [0x047f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -500 [0xfe0c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1152 [0x0480] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1153 [0x0481] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1154 [0x0482] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1155 [0x0483] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2300 [0x08fc] 1156 [0x0484] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2270 [0x08de] 1157 [0x0485] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2300 [0x08fc] 1158 [0x0486] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1870 [0x074e] 1159 [0x0487] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2270 [0x08de] 1160 [0x0488] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2270 [0x08de] 1161 [0x0489] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1162 [0x048a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2270 [0x08de] 1163 [0x048b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1164 [0x048c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 2270 [0x08de] 1165 [0x048d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -100 [0xff9c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1166 [0x048e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -500 [0xfe0c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1167 [0x048f] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 947 [0x03b3] L.y = -400 [0xfe70] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1168 [0x0490] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 947 [0x03b3] L.y = -400 [0xfe70] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1870 [0x074e] 1169 [0x0491] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -500 [0xfe0c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1170 [0x0492] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 748 [0x02ec] L.x = 748 [0x02ec] L.y = -500 [0xfe0c] O.x = 1005 [0x03ed] R.x = 1497 [0x05d9] R.y = 1000 [0x03e8] U.x = 748 [0x02ec] U.y = 1870 [0x074e] 1171 [0x0493] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1172 [0x0494] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1173 [0x0495] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1174 [0x0496] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 735 [0x02df] L.y = -100 [0xff9c] U.x = 735 [0x02df] U.y = 1500 [0x05dc] 1175 [0x0497] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1176 [0x0498] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1177 [0x0499] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1178 [0x049a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1179 [0x049b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1180 [0x049c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1181 [0x049d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -100 [0xff9c] U.x = 748 [0x02ec] U.y = 1900 [0x076c] 1182 [0x049e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 748 [0x02ec] L.y = -500 [0xfe0c] U.x = 748 [0x02ec] U.y = 1500 [0x05dc] 1183 [0x049f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 799 [0x031f] L.y = -100 [0xff9c] U.x = 799 [0x031f] U.y = 1500 [0x05dc] 1184 [0x04a0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 840 [0x0348] L.y = -100 [0xff9c] R.x = 1679 [0x068f] R.y = 1000 [0x03e8] U.x = 840 [0x0348] U.y = 1100 [0x044c] 1185 [0x04a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 550 [0x0226] L.y = 725 [0x02d5] U.x = 550 [0x0226] U.y = 1457 [0x05b1] 1186 [0x04a2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 947 [0x03b3] L.y = -100 [0xff9c] U.x = 947 [0x03b3] U.y = 1500 [0x05dc] 1187 [0x04a3] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 569 [0x0239] L.y = -100 [0xff9c] U.x = 569 [0x0239] U.y = 1585 [0x0631] 1188 [0x04a4] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 569 [0x0239] L.y = -100 [0xff9c] U.x = 569 [0x0239] U.y = 1500 [0x05dc] 1189 [0x04a5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 394 [0x018a] L.y = 725 [0x02d5] U.x = 395 [0x018b] U.y = 1670 [0x0686] 1190 [0x04a6] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 394 [0x018a] L.y = 725 [0x02d5] U.x = 394 [0x018a] U.y = 1670 [0x0686] 1191 [0x04a7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 461 [0x01cd] L.y = -100 [0xff9c] U.x = 461 [0x01cd] U.y = 1100 [0x044c] 1192 [0x04a8] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 442 [0x01ba] L.y = -100 [0xff9c] U.x = 442 [0x01ba] U.y = 1100 [0x044c] 1193 [0x04a9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1194 [0x04aa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 794 [0x031a] L.y = -100 [0xff9c] U.x = 794 [0x031a] U.y = 1500 [0x05dc] 1195 [0x04ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -500 [0xfe0c] U.x = 559 [0x022f] U.y = 1100 [0x044c] 1196 [0x04ac] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 370 [0x0172] L.y = 485 [0x01e5] U.x = 370 [0x0172] U.y = 1450 [0x05aa] 1197 [0x04ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 301 [0x012d] H.y = -435 [0xfe4d] L.x = 559 [0x022f] L.y = -500 [0xfe0c] R.x = 1145 [0x0479] R.y = 1000 [0x03e8] U.x = 559 [0x022f] U.y = 1500 [0x05dc] 1198 [0x04ae] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 301 [0x012d] H.y = -435 [0xfe4d] L.x = 559 [0x022f] L.y = -500 [0xfe0c] R.x = 1145 [0x0479] R.y = 1000 [0x03e8] U.x = 559 [0x022f] U.y = 1500 [0x05dc] 1199 [0x04af] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -500 [0xfe0c] U.x = 559 [0x022f] U.y = 1100 [0x044c] 1200 [0x04b0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 572 [0x023c] L.y = -500 [0xfe0c] U.x = 572 [0x023c] U.y = 1100 [0x044c] 1201 [0x04b1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -500 [0xfe0c] U.x = 559 [0x022f] U.y = 1100 [0x044c] 1202 [0x04b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 548 [0x0224] L.y = -500 [0xfe0c] U.x = 548 [0x0224] U.y = 1100 [0x044c] 1203 [0x04b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -500 [0xfe0c] U.x = 559 [0x022f] U.y = 1540 [0x0604] 1204 [0x04b4] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 558 [0x022e] L.y = -500 [0xfe0c] U.x = 558 [0x022e] U.y = 1540 [0x0604] 1205 [0x04b5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -500 [0xfe0c] U.x = 559 [0x022f] U.y = 1540 [0x0604] 1206 [0x04b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 529 [0x0211] L.y = -500 [0xfe0c] U.x = 529 [0x0211] U.y = 1100 [0x044c] 1207 [0x04b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 299 [0x012b] L.y = -525 [0xfdf3] U.x = 299 [0x012b] U.y = 450 [0x01c2] 1208 [0x04b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 562 [0x0232] L.y = -500 [0xfe0c] U.x = 562 [0x0232] U.y = 1540 [0x0604] 1209 [0x04b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 370 [0x0172] L.y = 485 [0x01e5] U.x = 370 [0x0172] U.y = 1700 [0x06a4] 1210 [0x04ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 742 [0x02e6] L.y = -500 [0xfe0c] U.x = 742 [0x02e6] U.y = 1540 [0x0604] 1211 [0x04bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 411 [0x019b] L.y = -525 [0xfdf3] U.x = 411 [0x019b] U.y = 450 [0x01c2] 1212 [0x04bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 411 [0x019b] L.y = 485 [0x01e5] U.x = 411 [0x019b] U.y = 1450 [0x05aa] 1213 [0x04bd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1214 [0x04be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1500 [0x05dc] 1215 [0x04bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 381 [0x017d] L.y = 725 [0x02d5] U.x = 381 [0x017d] U.y = 1650 [0x0672] 1216 [0x04c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 481 [0x01e1] L.y = -100 [0xff9c] U.x = 481 [0x01e1] U.y = 1100 [0x044c] 1217 [0x04c1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 481 [0x01e1] L.y = -100 [0xff9c] U.x = 481 [0x01e1] U.y = 1100 [0x044c] 1218 [0x04c2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1900 [0x076c] 1219 [0x04c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1900 [0x076c] 1220 [0x04c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1500 [0x05dc] 1221 [0x04c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 578 [0x0242] L.y = -100 [0xff9c] U.x = 578 [0x0242] U.y = 1500 [0x05dc] 1222 [0x04c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 1223 [0x04c7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1224 [0x04c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1225 [0x04c9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 585 [0x0249] L.y = -100 [0xff9c] U.x = 585 [0x0249] U.y = 1500 [0x05dc] 1226 [0x04ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 591 [0x024f] L.y = -100 [0xff9c] U.x = 591 [0x024f] U.y = 1500 [0x05dc] 1227 [0x04cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1228 [0x04cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 838 [0x0346] L.y = -100 [0xff9c] U.x = 838 [0x0346] U.y = 1500 [0x05dc] 1229 [0x04cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 673 [0x02a1] L.y = -100 [0xff9c] U.x = 673 [0x02a1] U.y = 1100 [0x044c] 1230 [0x04ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -500 [0xfe0c] U.x = 712 [0x02c8] U.y = 1540 [0x0604] 1231 [0x04cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 706 [0x02c2] L.y = -500 [0xfe0c] U.x = 706 [0x02c2] U.y = 1100 [0x044c] 1232 [0x04d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 646 [0x0286] L.y = -500 [0xfe0c] U.x = 646 [0x0286] U.y = 1540 [0x0604] 1233 [0x04d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 861 [0x035d] L.y = -500 [0xfe0c] U.x = 861 [0x035d] U.y = 1100 [0x044c] 1234 [0x04d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 876 [0x036c] L.y = -500 [0xfe0c] U.x = 876 [0x036c] U.y = 1500 [0x05dc] 1235 [0x04d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 274 [0x0112] L.y = -525 [0xfdf3] U.x = 274 [0x0112] U.y = 200 [0x00c8] 1236 [0x04d4] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -765 [0xfd03] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1237 [0x04d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 273 [0x0111] L.y = 725 [0x02d5] U.x = 273 [0x0111] U.y = 1450 [0x05aa] 1238 [0x04d6] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1239 [0x04d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 443 [0x01bb] U.y = 1500 [0x05dc] 1240 [0x04d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 443 [0x01bb] U.y = 1500 [0x05dc] 1241 [0x04d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 443 [0x01bb] U.y = 1500 [0x05dc] 1242 [0x04da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 443 [0x01bb] U.y = 1500 [0x05dc] 1243 [0x04db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 443 [0x01bb] U.y = 1500 [0x05dc] 1244 [0x04dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -500 [0xfe0c] U.x = 443 [0x01bb] U.y = 1100 [0x044c] 1245 [0x04dd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -500 [0xfe0c] U.x = 443 [0x01bb] U.y = 1100 [0x044c] 1246 [0x04de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -500 [0xfe0c] U.x = 443 [0x01bb] U.y = 1470 [0x05be] 1247 [0x04df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 290 [0x0122] L.x = 290 [0x0122] L.y = -500 [0xfe0c] U.x = 443 [0x01bb] U.y = 1100 [0x044c] 1248 [0x04e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 413 [0x019d] L.y = -500 [0xfe0c] U.x = 413 [0x019d] U.y = 1100 [0x044c] 1249 [0x04e1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 413 [0x019d] U.y = 1100 [0x044c] 1250 [0x04e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 413 [0x019d] U.y = 1100 [0x044c] 1251 [0x04e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 413 [0x019d] L.y = -500 [0xfe0c] U.x = 413 [0x019d] U.y = 1100 [0x044c] 1252 [0x04e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 290 [0x0122] L.y = -500 [0xfe0c] U.x = 413 [0x019d] U.y = 1100 [0x044c] 1253 [0x04e5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 387 [0x0183] L.y = -100 [0xff9c] U.x = 387 [0x0183] U.y = 1100 [0x044c] 1254 [0x04e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 256 [0x0100] L.y = 725 [0x02d5] U.x = 256 [0x0100] U.y = 1450 [0x05aa] 1255 [0x04e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 490 [0x01ea] L.y = -500 [0xfe0c] U.x = 490 [0x01ea] U.y = 1100 [0x044c] 1256 [0x04e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 324 [0x0144] L.y = 485 [0x01e5] U.x = 324 [0x0144] U.y = 1450 [0x05aa] 1257 [0x04e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 490 [0x01ea] L.y = -500 [0xfe0c] U.x = 490 [0x01ea] U.y = 1540 [0x0604] 1258 [0x04ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 387 [0x0183] L.y = -100 [0xff9c] U.x = 387 [0x0183] U.y = 1540 [0x0604] 1259 [0x04eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 290 [0x0122] L.y = -100 [0xff9c] U.x = 413 [0x019d] U.y = 1100 [0x044c] 1260 [0x04ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 314 [0x013a] L.y = -100 [0xff9c] U.x = 450 [0x01c2] U.y = 1100 [0x044c] 1261 [0x04ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 403 [0x0193] L.y = -500 [0xfe0c] U.x = 403 [0x0193] U.y = 1100 [0x044c] 1262 [0x04ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 410 [0x019a] L.y = -500 [0xfe0c] U.x = 294 [0x0126] U.y = 1100 [0x044c] 1263 [0x04ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 458 [0x01ca] L.y = 725 [0x02d5] U.x = 458 [0x01ca] U.y = 1650 [0x0672] 1264 [0x04f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 555 [0x022b] L.y = -100 [0xff9c] U.x = 555 [0x022b] U.y = 1100 [0x044c] 1265 [0x04f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -100 [0xff9c] U.x = 603 [0x025b] U.y = 1900 [0x076c] 1266 [0x04f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -100 [0xff9c] U.x = 603 [0x025b] U.y = 1900 [0x076c] 1267 [0x04f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -100 [0xff9c] U.x = 603 [0x025b] U.y = 1900 [0x076c] 1268 [0x04f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -100 [0xff9c] U.x = 603 [0x025b] U.y = 1900 [0x076c] 1269 [0x04f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -100 [0xff9c] U.x = 603 [0x025b] U.y = 1900 [0x076c] 1270 [0x04f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -500 [0xfe0c] U.x = 603 [0x025b] U.y = 1500 [0x05dc] 1271 [0x04f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -500 [0xfe0c] U.x = 603 [0x025b] U.y = 1500 [0x05dc] 1272 [0x04f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -500 [0xfe0c] U.x = 603 [0x025b] U.y = 1870 [0x074e] 1273 [0x04f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 603 [0x025b] L.x = 603 [0x025b] L.y = -500 [0xfe0c] U.x = 603 [0x025b] U.y = 1500 [0x05dc] 1274 [0x04fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 669 [0x029d] L.y = -100 [0xff9c] U.x = 669 [0x029d] U.y = 1500 [0x05dc] 1275 [0x04fb] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 696 [0x02b8] L.y = -500 [0xfe0c] U.x = 696 [0x02b8] U.y = 1500 [0x05dc] 1276 [0x04fc] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 493 [0x01ed] L.y = -500 [0xfe0c] U.x = 493 [0x01ed] U.y = 1500 [0x05dc] 1277 [0x04fd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 685 [0x02ad] L.y = -100 [0xff9c] U.x = 685 [0x02ad] U.y = 1500 [0x05dc] 1278 [0x04fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1279 [0x04ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1280 [0x0500] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 516 [0x0204] L.y = -100 [0xff9c] U.x = 516 [0x0204] U.y = 1100 [0x044c] 1281 [0x0501] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 555 [0x022b] L.y = -100 [0xff9c] U.x = 555 [0x022b] U.y = 1100 [0x044c] 1282 [0x0502] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 366 [0x016e] L.y = 725 [0x02d5] U.x = 366 [0x016e] U.y = 1450 [0x05aa] 1283 [0x0503] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 628 [0x0274] L.y = -100 [0xff9c] U.x = 628 [0x0274] U.y = 1500 [0x05dc] 1284 [0x0504] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 501 [0x01f5] L.y = -100 [0xff9c] U.x = 501 [0x01f5] U.y = 1100 [0x044c] 1285 [0x0505] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 506 [0x01fa] L.y = -100 [0xff9c] U.x = 506 [0x01fa] U.y = 1100 [0x044c] 1286 [0x0506] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 418 [0x01a2] L.y = -100 [0xff9c] U.x = 418 [0x01a2] U.y = 1100 [0x044c] 1287 [0x0507] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 269 [0x010d] L.y = 725 [0x02d5] U.x = 269 [0x010d] U.y = 1450 [0x05aa] 1288 [0x0508] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -100 [0xff9c] U.x = 427 [0x01ab] U.y = 1500 [0x05dc] 1289 [0x0509] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -100 [0xff9c] U.x = 427 [0x01ab] U.y = 1900 [0x076c] 1290 [0x050a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -100 [0xff9c] U.x = 427 [0x01ab] U.y = 1500 [0x05dc] 1291 [0x050b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -100 [0xff9c] U.x = 427 [0x01ab] U.y = 1500 [0x05dc] 1292 [0x050c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -100 [0xff9c] U.x = 427 [0x01ab] U.y = 1900 [0x076c] 1293 [0x050d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -100 [0xff9c] U.x = 427 [0x01ab] U.y = 1500 [0x05dc] 1294 [0x050e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -500 [0xfe0c] U.x = 427 [0x01ab] U.y = 1100 [0x044c] 1295 [0x050f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -500 [0xfe0c] U.x = 427 [0x01ab] U.y = 1500 [0x05dc] 1296 [0x0510] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -500 [0xfe0c] U.x = 427 [0x01ab] U.y = 1100 [0x044c] 1297 [0x0511] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 407 [0x0197] L.x = 407 [0x0197] L.y = -500 [0xfe0c] U.x = 427 [0x01ab] U.y = 1100 [0x044c] 1298 [0x0512] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 407 [0x0197] L.y = -500 [0xfe0c] U.x = 427 [0x01ab] U.y = 1100 [0x044c] 1299 [0x0513] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 407 [0x0197] L.y = -500 [0xfe0c] U.x = 407 [0x0197] U.y = 1100 [0x044c] 1300 [0x0514] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 269 [0x010d] L.y = 485 [0x01e5] U.x = 269 [0x010d] U.y = 1450 [0x05aa] 1301 [0x0515] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 407 [0x0197] L.y = -500 [0xfe0c] U.x = 407 [0x0197] U.y = 1100 [0x044c] 1302 [0x0516] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 416 [0x01a0] L.y = -100 [0xff9c] U.x = 416 [0x01a0] U.y = 1100 [0x044c] 1303 [0x0517] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 442 [0x01ba] L.y = -500 [0xfe0c] U.x = 442 [0x01ba] U.y = 1100 [0x044c] 1304 [0x0518] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 409 [0x0199] L.y = -100 [0xff9c] U.x = 409 [0x0199] U.y = 1100 [0x044c] 1305 [0x0519] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 363 [0x016b] L.y = -500 [0xfe0c] U.x = 363 [0x016b] U.y = 1540 [0x0604] 1306 [0x051a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 166 [0x00a6] L.y = 485 [0x01e5] U.x = 323 [0x0143] U.y = 1799 [0x0707] 1307 [0x051b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 365 [0x016d] L.y = -845 [0xfcb3] U.x = 365 [0x016d] U.y = 1540 [0x0604] 1308 [0x051c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 436 [0x01b4] L.y = -500 [0xfe0c] U.x = 436 [0x01b4] U.y = 1540 [0x0604] 1309 [0x051d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 352 [0x0160] L.y = -500 [0xfe0c] U.x = 352 [0x0160] U.y = 1540 [0x0604] 1310 [0x051e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 538 [0x021a] L.y = -100 [0xff9c] U.x = 538 [0x021a] U.y = 1500 [0x05dc] 1311 [0x051f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -100 [0xff9c] U.x = 563 [0x0233] U.y = 1900 [0x076c] 1312 [0x0520] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -100 [0xff9c] U.x = 563 [0x0233] U.y = 2300 [0x08fc] 1313 [0x0521] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -100 [0xff9c] U.x = 563 [0x0233] U.y = 1900 [0x076c] 1314 [0x0522] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -100 [0xff9c] U.x = 563 [0x0233] U.y = 1900 [0x076c] 1315 [0x0523] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -100 [0xff9c] U.x = 563 [0x0233] U.y = 2300 [0x08fc] 1316 [0x0524] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -100 [0xff9c] U.x = 563 [0x0233] U.y = 1900 [0x076c] 1317 [0x0525] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -500 [0xfe0c] U.x = 563 [0x0233] U.y = 1500 [0x05dc] 1318 [0x0526] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -500 [0xfe0c] U.x = 563 [0x0233] U.y = 1900 [0x076c] 1319 [0x0527] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -500 [0xfe0c] U.x = 563 [0x0233] U.y = 1500 [0x05dc] 1320 [0x0528] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 543 [0x021f] L.x = 543 [0x021f] L.y = -500 [0xfe0c] U.x = 563 [0x0233] U.y = 1500 [0x05dc] 1321 [0x0529] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 543 [0x021f] L.y = -500 [0xfe0c] U.x = 563 [0x0233] U.y = 1500 [0x05dc] 1322 [0x052a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 535 [0x0217] L.y = -100 [0xff9c] U.x = 535 [0x0217] U.y = 1500 [0x05dc] 1323 [0x052b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1324 [0x052c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 245 [0x00f5] L.y = 725 [0x02d5] U.x = 245 [0x00f5] U.y = 1700 [0x06a4] 1325 [0x052d] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 2000 [0x07d0] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1326 [0x052e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -100 [0xff9c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1763 [0x06e3] 1327 [0x052f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -100 [0xff9c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1763 [0x06e3] 1328 [0x0530] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -500 [0xfe0c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1329 [0x0531] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -500 [0xfe0c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1330 [0x0532] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -500 [0xfe0c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1331 [0x0533] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -500 [0xfe0c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1332 [0x0534] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -500 [0xfe0c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1333 [0x0535] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -100 [0xff9c] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1334 [0x0536] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 368 [0x0170] L.y = -500 [0xfe0c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1335 [0x0537] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 358 [0x0166] L.y = -500 [0xfe0c] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1336 [0x0538] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 244 [0x00f4] L.y = 485 [0x01e5] U.x = 244 [0x00f4] U.y = 1675 [0x068b] 1337 [0x0539] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 368 [0x0170] L.y = -100 [0xff9c] U.x = 368 [0x0170] U.y = 1363 [0x0553] 1338 [0x053a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 359 [0x0167] L.y = -100 [0xff9c] U.x = 359 [0x0167] U.y = 1363 [0x0553] 1339 [0x053b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 368 [0x0170] L.x = 368 [0x0170] L.y = -100 [0xff9c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 358 [0x0166] U.y = 1363 [0x0553] 1340 [0x053c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 400 [0x0190] L.y = -100 [0xff9c] U.x = 400 [0x0190] U.y = 1540 [0x0604] 1341 [0x053d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 239 [0x00ef] L.y = -500 [0xfe0c] R.x = 696 [0x02b8] R.y = 1000 [0x03e8] U.x = 239 [0x00ef] U.y = 1363 [0x0553] 1342 [0x053e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 330 [0x014a] L.y = -100 [0xff9c] U.x = 330 [0x014a] U.y = 1363 [0x0553] 1343 [0x053f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 962 [0x03c2] L.y = -100 [0xff9c] U.x = 962 [0x03c2] U.y = 1540 [0x0604] 1344 [0x0540] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 710 [0x02c6] L.y = -100 [0xff9c] U.x = 781 [0x030d] U.y = 1363 [0x0553] 1345 [0x0541] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 652 [0x028c] L.y = -100 [0xff9c] U.x = 686 [0x02ae] U.y = 1363 [0x0553] 1346 [0x0542] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 616 [0x0268] L.y = -500 [0xfe0c] U.x = 597 [0x0255] U.y = 1580 [0x062c] 1347 [0x0543] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 326 [0x0146] L.y = -500 [0xfe0c] U.x = 326 [0x0146] U.y = 1100 [0x044c] 1348 [0x0544] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 502 [0x01f6] L.y = -100 [0xff9c] U.x = 502 [0x01f6] U.y = 1100 [0x044c] 1349 [0x0545] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 502 [0x01f6] L.y = -430 [0xfe52] U.x = 502 [0x01f6] U.y = 1100 [0x044c] 1350 [0x0546] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 638 [0x027e] L.y = -100 [0xff9c] U.x = 638 [0x027e] U.y = 1100 [0x044c] 1351 [0x0547] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 658 [0x0292] L.y = -100 [0xff9c] U.x = 658 [0x0292] U.y = 1100 [0x044c] 1352 [0x0548] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1353 [0x0549] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 403 [0x0193] L.y = 725 [0x02d5] U.x = 403 [0x0193] U.y = 1650 [0x0672] 1354 [0x054a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 500 [0x01f4] L.y = -100 [0xff9c] U.x = 500 [0x01f4] U.y = 1100 [0x044c] 1355 [0x054b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1900 [0x076c] 1356 [0x054c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1900 [0x076c] 1357 [0x054d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1358 [0x054e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1359 [0x054f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1360 [0x0550] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1361 [0x0551] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1362 [0x0552] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1363 [0x0553] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1364 [0x0554] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1365 [0x0555] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 613 [0x0265] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1366 [0x0556] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 605 [0x025d] L.y = -100 [0xff9c] U.x = 605 [0x025d] U.y = 1500 [0x05dc] 1367 [0x0557] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 613 [0x0265] L.y = -100 [0xff9c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1368 [0x0558] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1369 [0x0559] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 613 [0x0265] L.y = -500 [0xfe0c] U.x = 613 [0x0265] U.y = 1500 [0x05dc] 1370 [0x055a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 752 [0x02f0] L.y = -100 [0xff9c] U.x = 752 [0x02f0] U.y = 1500 [0x05dc] 1371 [0x055b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 824 [0x0338] L.y = -100 [0xff9c] U.x = 824 [0x0338] U.y = 1500 [0x05dc] 1372 [0x055c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 725 [0x02d5] L.y = -100 [0xff9c] U.x = 725 [0x02d5] U.y = 1500 [0x05dc] 1373 [0x055d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 714 [0x02ca] L.y = -100 [0xff9c] U.x = 714 [0x02ca] U.y = 1500 [0x05dc] 1374 [0x055e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 383 [0x017f] L.y = -525 [0xfdf3] U.x = 383 [0x017f] U.y = 200 [0x00c8] 1375 [0x055f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 385 [0x0181] L.y = 725 [0x02d5] U.x = 385 [0x0181] U.y = 1450 [0x05aa] 1376 [0x0560] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1377 [0x0561] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 1378 [0x0562] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 1379 [0x0563] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 1380 [0x0564] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 1381 [0x0565] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 1382 [0x0566] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 1383 [0x0567] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1900 [0x076c] 1384 [0x0568] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1470 [0x05be] 1385 [0x0569] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1870 [0x074e] 1386 [0x056a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1900 [0x076c] 1387 [0x056b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1900 [0x076c] 1388 [0x056c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1900 [0x076c] 1389 [0x056d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1870 [0x074e] 1390 [0x056e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1660 [0x067c] 1391 [0x056f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1500 [0x05dc] 1392 [0x0570] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -500 [0xfe0c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 1393 [0x0571] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -500 [0xfe0c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 1394 [0x0572] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -500 [0xfe0c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 1395 [0x0573] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -500 [0xfe0c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 1396 [0x0574] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] L.x = 576 [0x0240] L.y = -400 [0xfe70] U.x = 582 [0x0246] U.y = 1100 [0x044c] 1397 [0x0575] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 526 [0x020e] L.x = 582 [0x0246] L.y = -500 [0xfe0c] O.x = 634 [0x027a] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 1398 [0x0576] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 586 [0x024a] L.y = -100 [0xff9c] U.x = 586 [0x024a] U.y = 1100 [0x044c] 1399 [0x0577] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 582 [0x0246] L.x = 582 [0x0246] L.y = -100 [0xff9c] O.x = 635 [0x027b] R.x = 1165 [0x048d] R.y = 1000 [0x03e8] U.x = 582 [0x0246] U.y = 1100 [0x044c] 1400 [0x0578] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 385 [0x0181] L.y = 725 [0x02d5] U.x = 385 [0x0181] U.y = 1450 [0x05aa] 1401 [0x0579] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1100 [0x044c] 1402 [0x057a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1403 [0x057b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1404 [0x057c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1405 [0x057d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -100 [0xff9c] U.x = 618 [0x026a] U.y = 1500 [0x05dc] 1406 [0x057e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 618 [0x026a] L.y = -500 [0xfe0c] U.x = 618 [0x026a] U.y = 1100 [0x044c] 1407 [0x057f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 894 [0x037e] L.y = -100 [0xff9c] U.x = 894 [0x037e] U.y = 1100 [0x044c] 1408 [0x0580] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 569 [0x0239] L.y = -100 [0xff9c] U.x = 569 [0x0239] U.y = 1100 [0x044c] 1409 [0x0581] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 375 [0x0177] L.y = 725 [0x02d5] U.x = 375 [0x0177] U.y = 1450 [0x05aa] 1410 [0x0582] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 775 [0x0307] L.y = -100 [0xff9c] U.x = 775 [0x0307] U.y = 1100 [0x044c] 1411 [0x0583] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 541 [0x021d] L.x = 541 [0x021d] L.y = -100 [0xff9c] O.x = 596 [0x0254] U.x = 541 [0x021d] U.y = 1100 [0x044c] 1412 [0x0584] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 357 [0x0165] L.y = 725 [0x02d5] U.x = 357 [0x0165] U.y = 1450 [0x05aa] 1413 [0x0585] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 560 [0x0230] L.x = 560 [0x0230] L.y = -100 [0xff9c] O.x = 614 [0x0266] R.x = 1120 [0x0460] R.y = 1000 [0x03e8] U.x = 560 [0x0230] U.y = 1100 [0x044c] 1414 [0x0586] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 368 [0x0170] L.y = 725 [0x02d5] U.x = 368 [0x0170] U.y = 1450 [0x05aa] 1415 [0x0587] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 560 [0x0230] L.y = -100 [0xff9c] U.x = 560 [0x0230] U.y = 1100 [0x044c] 1416 [0x0588] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = -100 [0xff9c] U.x = 374 [0x0176] U.y = 1405 [0x057d] 1417 [0x0589] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 481 [0x01e1] L.y = 725 [0x02d5] U.x = 481 [0x01e1] U.y = 1650 [0x0672] 1418 [0x058a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 575 [0x023f] L.y = -100 [0xff9c] U.x = 575 [0x023f] U.y = 1100 [0x044c] 1419 [0x058b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 379 [0x017b] L.y = 725 [0x02d5] U.x = 379 [0x017b] U.y = 1450 [0x05aa] 1420 [0x058c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1421 [0x058d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1422 [0x058e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1423 [0x058f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1424 [0x0590] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1425 [0x0591] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1426 [0x0592] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 2300 [0x08fc] 1427 [0x0593] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1870 [0x074e] 1428 [0x0594] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 2270 [0x08de] 1429 [0x0595] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 2300 [0x08fc] 1430 [0x0596] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 2300 [0x08fc] 1431 [0x0597] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 2300 [0x08fc] 1432 [0x0598] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 2270 [0x08de] 1433 [0x0599] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 2060 [0x080c] 1434 [0x059a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -100 [0xff9c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1435 [0x059b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -500 [0xfe0c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1436 [0x059c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -500 [0xfe0c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1437 [0x059d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -500 [0xfe0c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1438 [0x059e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -500 [0xfe0c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1439 [0x059f] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 758 [0x02f6] L.y = -400 [0xfe70] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1440 [0x05a0] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] H.x = 733 [0x02dd] L.x = 750 [0x02ee] L.y = -500 [0xfe0c] O.x = 816 [0x0330] R.x = 1458 [0x05b2] R.y = 1000 [0x03e8] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1441 [0x05a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1442 [0x05a2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 575 [0x023f] L.y = -100 [0xff9c] U.x = 575 [0x023f] U.y = 1100 [0x044c] 1443 [0x05a3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 384 [0x0180] L.y = 725 [0x02d5] U.x = 384 [0x0180] U.y = 1450 [0x05aa] 1444 [0x05a4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1445 [0x05a5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1446 [0x05a6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1447 [0x05a7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1448 [0x05a8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -100 [0xff9c] U.x = 750 [0x02ee] U.y = 1900 [0x076c] 1449 [0x05a9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 750 [0x02ee] L.y = -500 [0xfe0c] U.x = 750 [0x02ee] U.y = 1500 [0x05dc] 1450 [0x05aa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -100 [0xff9c] U.x = 712 [0x02c8] U.y = 1500 [0x05dc] 1451 [0x05ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 699 [0x02bb] L.y = -100 [0xff9c] U.x = 699 [0x02bb] U.y = 1500 [0x05dc] 1452 [0x05ac] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 555 [0x022b] L.x = 541 [0x021d] L.y = -100 [0xff9c] O.x = 655 [0x028f] U.x = 541 [0x021d] U.y = 1100 [0x044c] 1453 [0x05ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 541 [0x021d] U.y = 1500 [0x05dc] 1454 [0x05ae] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 357 [0x0165] L.y = -525 [0xfdf3] U.x = 357 [0x0165] U.y = 200 [0x00c8] 1455 [0x05af] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 351 [0x015f] L.y = 725 [0x02d5] U.x = 351 [0x015f] U.y = 1450 [0x05aa] 1456 [0x05b0] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1457 [0x05b1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 555 [0x022b] L.x = 541 [0x021d] L.y = -100 [0xff9c] O.x = 655 [0x028f] U.x = 541 [0x021d] U.y = 1500 [0x05dc] 1458 [0x05b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 555 [0x022b] L.x = 541 [0x021d] L.y = -500 [0xfe0c] O.x = 655 [0x028f] U.x = 541 [0x021d] U.y = 1100 [0x044c] 1459 [0x05b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 541 [0x021d] L.y = -500 [0xfe0c] U.x = 541 [0x021d] U.y = 1100 [0x044c] 1460 [0x05b4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 555 [0x022b] L.x = 541 [0x021d] L.y = -100 [0xff9c] O.x = 655 [0x028f] U.x = 541 [0x021d] U.y = 1100 [0x044c] 1461 [0x05b5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 497 [0x01f1] L.x = 497 [0x01f1] L.y = -100 [0xff9c] O.x = 549 [0x0225] U.x = 497 [0x01f1] U.y = 1100 [0x044c] 1462 [0x05b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 487 [0x01e7] L.x = 487 [0x01e7] L.y = -100 [0xff9c] O.x = 542 [0x021e] U.x = 487 [0x01e7] U.y = 1100 [0x044c] 1463 [0x05b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 845 [0x034d] U.y = 1500 [0x05dc] 1464 [0x05b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1152 [0x0480] U.y = 1500 [0x05dc] 1465 [0x05b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1463 [0x05b7] U.y = 1500 [0x05dc] 1466 [0x05ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 541 [0x021d] L.x = 541 [0x021d] L.y = -100 [0xff9c] O.x = 594 [0x0252] R.x = 1083 [0x043b] R.y = 1000 [0x03e8] U.x = 541 [0x021d] U.y = 1100 [0x044c] 1467 [0x05bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 357 [0x0165] L.y = 725 [0x02d5] U.x = 357 [0x0165] U.y = 1450 [0x05aa] 1468 [0x05bc] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 541 [0x021d] L.y = -100 [0xff9c] R.x = 1083 [0x043b] R.y = 1000 [0x03e8] U.x = 541 [0x021d] U.y = 1100 [0x044c] 1469 [0x05bd] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 588 [0x024c] L.y = -100 [0xff9c] R.x = 1178 [0x049a] R.y = 1000 [0x03e8] U.x = 588 [0x024c] U.y = 1100 [0x044c] 1470 [0x05be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 382 [0x017e] L.y = 725 [0x02d5] U.x = 382 [0x017e] U.y = 1450 [0x05aa] 1471 [0x05bf] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 600 [0x0258] L.y = -100 [0xff9c] R.x = 1122 [0x0462] R.y = 1000 [0x03e8] U.x = 600 [0x0258] U.y = 1100 [0x044c] 1472 [0x05c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 630 [0x0276] L.y = -500 [0xfe0c] U.x = 630 [0x0276] U.y = 1100 [0x044c] 1473 [0x05c1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 386 [0x0182] L.y = 485 [0x01e5] U.x = 386 [0x0182] U.y = 1450 [0x05aa] 1474 [0x05c2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 499 [0x01f3] L.y = -500 [0xfe0c] U.x = 499 [0x01f3] U.y = 1100 [0x044c] 1475 [0x05c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 329 [0x0149] L.y = -765 [0xfd03] U.x = 329 [0x0149] U.y = 200 [0x00c8] 1476 [0x05c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 329 [0x0149] L.y = 485 [0x01e5] U.x = 329 [0x0149] U.y = 1450 [0x05aa] 1477 [0x05c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 681 [0x02a9] U.y = 1500 [0x05dc] 1478 [0x05c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 559 [0x022f] L.y = -100 [0xff9c] U.x = 559 [0x022f] U.y = 1100 [0x044c] 1479 [0x05c7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 705 [0x02c1] L.x = 705 [0x02c1] L.y = -100 [0xff9c] O.x = 727 [0x02d7] U.x = 705 [0x02c1] U.y = 1900 [0x076c] 1480 [0x05c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 705 [0x02c1] L.x = 705 [0x02c1] L.y = -500 [0xfe0c] O.x = 727 [0x02d7] U.x = 705 [0x02c1] U.y = 1500 [0x05dc] 1481 [0x05c9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1482 [0x05ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1011 [0x03f3] U.y = 1500 [0x05dc] 1483 [0x05cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1349 [0x0545] U.y = 1500 [0x05dc] 1484 [0x05cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1678 [0x068e] U.y = 1500 [0x05dc] 1485 [0x05cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 681 [0x02a9] L.y = -100 [0xff9c] U.x = 681 [0x02a9] U.y = 1500 [0x05dc] 1486 [0x05ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 595 [0x0253] L.y = -100 [0xff9c] U.x = 595 [0x0253] U.y = 1100 [0x044c] 1487 [0x05cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 730 [0x02da] L.y = -100 [0xff9c] U.x = 730 [0x02da] U.y = 1500 [0x05dc] 1488 [0x05d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 526 [0x020e] L.y = 725 [0x02d5] U.x = 526 [0x020e] U.y = 1450 [0x05aa] 1489 [0x05d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 830 [0x033e] U.y = 1500 [0x05dc] 1490 [0x05d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 830 [0x033e] U.y = 1500 [0x05dc] 1491 [0x05d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 830 [0x033e] U.y = 1500 [0x05dc] 1492 [0x05d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 830 [0x033e] U.y = 1500 [0x05dc] 1493 [0x05d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 830 [0x033e] U.y = 1500 [0x05dc] 1494 [0x05d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 830 [0x033e] U.y = 1660 [0x067c] 1495 [0x05d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -500 [0xfe0c] U.x = 830 [0x033e] U.y = 1100 [0x044c] 1496 [0x05d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 801 [0x0321] U.y = 1100 [0x044c] 1497 [0x05d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 525 [0x020d] L.y = -100 [0xff9c] U.x = 525 [0x020d] U.y = 1540 [0x0604] 1498 [0x05da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 801 [0x0321] L.y = -100 [0xff9c] U.x = 801 [0x0321] U.y = 1100 [0x044c] 1499 [0x05db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 682 [0x02aa] L.y = -100 [0xff9c] R.x = 1366 [0x0556] R.y = 1000 [0x03e8] U.x = 682 [0x02aa] U.y = 1100 [0x044c] 1500 [0x05dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 624 [0x0270] L.y = 725 [0x02d5] U.x = 624 [0x0270] U.y = 1650 [0x0672] 1501 [0x05dd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 776 [0x0308] L.y = -100 [0xff9c] U.x = 776 [0x0308] U.y = 1100 [0x044c] 1502 [0x05de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 973 [0x03cd] L.y = -100 [0xff9c] U.x = 983 [0x03d7] U.y = 1900 [0x076c] 1503 [0x05df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 973 [0x03cd] L.y = -100 [0xff9c] U.x = 983 [0x03d7] U.y = 1900 [0x076c] 1504 [0x05e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 973 [0x03cd] L.y = -100 [0xff9c] U.x = 983 [0x03d7] U.y = 1900 [0x076c] 1505 [0x05e1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 973 [0x03cd] L.y = -100 [0xff9c] U.x = 983 [0x03d7] U.y = 1900 [0x076c] 1506 [0x05e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 973 [0x03cd] L.y = -100 [0xff9c] U.x = 983 [0x03d7] U.y = 1900 [0x076c] 1507 [0x05e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 973 [0x03cd] L.y = -500 [0xfe0c] U.x = 983 [0x03d7] U.y = 1500 [0x05dc] 1508 [0x05e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 953 [0x03b9] L.y = -100 [0xff9c] U.x = 953 [0x03b9] U.y = 1500 [0x05dc] 1509 [0x05e5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1510 [0x05e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 522 [0x020a] L.y = -100 [0xff9c] U.x = 522 [0x020a] U.y = 1100 [0x044c] 1511 [0x05e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 522 [0x020a] U.y = 1500 [0x05dc] 1512 [0x05e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 344 [0x0158] L.y = -525 [0xfdf3] U.x = 344 [0x0158] U.y = 200 [0x00c8] 1513 [0x05e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 339 [0x0153] L.y = 725 [0x02d5] U.x = 339 [0x0153] U.y = 1450 [0x05aa] 1514 [0x05ea] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1850 [0x073a] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1515 [0x05eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 785 [0x0311] L.x = 522 [0x020a] L.y = -100 [0xff9c] U.x = 522 [0x020a] U.y = 1500 [0x05dc] 1516 [0x05ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 785 [0x0311] L.x = 522 [0x020a] L.y = -100 [0xff9c] U.x = 522 [0x020a] U.y = 1500 [0x05dc] 1517 [0x05ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 522 [0x020a] L.y = -500 [0xfe0c] U.x = 522 [0x020a] U.y = 1100 [0x044c] 1518 [0x05ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 522 [0x020a] L.y = -100 [0xff9c] U.x = 522 [0x020a] U.y = 1100 [0x044c] 1519 [0x05ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 517 [0x0205] L.y = -500 [0xfe0c] U.x = 517 [0x0205] U.y = 1100 [0x044c] 1520 [0x05f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 522 [0x020a] L.y = -100 [0xff9c] U.x = 522 [0x020a] U.y = 1100 [0x044c] 1521 [0x05f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 818 [0x0332] U.y = 1500 [0x05dc] 1522 [0x05f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1125 [0x0465] U.y = 1500 [0x05dc] 1523 [0x05f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 660 [0x0294] L.y = -500 [0xfe0c] U.x = 660 [0x0294] U.y = 1100 [0x044c] 1524 [0x05f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 434 [0x01b2] L.y = -525 [0xfdf3] U.x = 434 [0x01b2] U.y = 450 [0x01c2] 1525 [0x05f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 434 [0x01b2] L.y = 485 [0x01e5] U.x = 434 [0x01b2] U.y = 1450 [0x05aa] 1526 [0x05f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 649 [0x0289] L.y = -100 [0xff9c] U.x = 649 [0x0289] U.y = 1500 [0x05dc] 1527 [0x05f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 649 [0x0289] U.y = 1500 [0x05dc] 1528 [0x05f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 649 [0x0289] L.y = -100 [0xff9c] U.x = 649 [0x0289] U.y = 1900 [0x076c] 1529 [0x05f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 649 [0x0289] L.y = -100 [0xff9c] U.x = 649 [0x0289] U.y = 1900 [0x076c] 1530 [0x05fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 649 [0x0289] L.y = -100 [0xff9c] U.x = 649 [0x0289] U.y = 1500 [0x05dc] 1531 [0x05fb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 640 [0x0280] L.y = -500 [0xfe0c] U.x = 640 [0x0280] U.y = 1500 [0x05dc] 1532 [0x05fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 649 [0x0289] L.y = -100 [0xff9c] U.x = 649 [0x0289] U.y = 1500 [0x05dc] 1533 [0x05fd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 979 [0x03d3] U.y = 1500 [0x05dc] 1534 [0x05fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 1318 [0x0526] U.y = 1500 [0x05dc] 1535 [0x05ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 561 [0x0231] U.y = 1100 [0x044c] 1536 [0x0600] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 357 [0x0165] L.y = 725 [0x02d5] R.x = 705 [0x02c1] R.y = 1000 [0x03e8] U.x = 357 [0x0165] U.y = 1450 [0x05aa] 1537 [0x0601] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1538 [0x0602] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1539 [0x0603] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1540 [0x0604] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1541 [0x0605] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1542 [0x0606] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1543 [0x0607] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1470 [0x05be] 1544 [0x0608] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 561 [0x0231] U.y = 1470 [0x05be] 1545 [0x0609] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1546 [0x060a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1547 [0x060b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1660 [0x067c] 1548 [0x060c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1500 [0x05dc] 1549 [0x060d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -900 [0xfc7c] R.x = 1085 [0x043d] R.y = 1000 [0x03e8] U.x = 561 [0x0231] U.y = 1100 [0x044c] 1550 [0x060e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 581 [0x0245] U.y = 1100 [0x044c] 1551 [0x060f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -500 [0xfe0c] U.x = 581 [0x0245] U.y = 1100 [0x044c] 1552 [0x0610] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 579 [0x0243] L.y = -500 [0xfe0c] U.x = 579 [0x0243] U.y = 1100 [0x044c] 1553 [0x0611] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 579 [0x0243] L.y = -500 [0xfe0c] U.x = 579 [0x0243] U.y = 1100 [0x044c] 1554 [0x0612] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -100 [0xff9c] U.x = 542 [0x021e] U.y = 1540 [0x0604] 1555 [0x0613] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 357 [0x0165] L.y = 725 [0x02d5] U.x = 357 [0x0165] U.y = 1700 [0x06a4] 1556 [0x0614] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 542 [0x021e] L.y = -100 [0xff9c] U.x = 542 [0x021e] U.y = 1540 [0x0604] 1557 [0x0615] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 661 [0x0295] L.y = -100 [0xff9c] U.x = 661 [0x0295] U.y = 1540 [0x0604] 1558 [0x0616] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 661 [0x0295] L.y = -100 [0xff9c] U.x = 661 [0x0295] U.y = 1540 [0x0604] 1559 [0x0617] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 540 [0x021c] L.y = -100 [0xff9c] U.x = 540 [0x021c] U.y = 1100 [0x044c] 1560 [0x0618] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 540 [0x021c] L.y = -100 [0xff9c] U.x = 540 [0x021c] U.y = 1500 [0x05dc] 1561 [0x0619] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 570 [0x023a] L.y = -100 [0xff9c] U.x = 570 [0x023a] U.y = 1100 [0x044c] 1562 [0x061a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 540 [0x021c] L.y = -100 [0xff9c] U.x = 540 [0x021c] U.y = 1100 [0x044c] 1563 [0x061b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 540 [0x021c] L.y = -500 [0xfe0c] U.x = 540 [0x021c] U.y = 1100 [0x044c] 1564 [0x061c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1500 [0x05dc] 1565 [0x061d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 526 [0x020e] L.y = -100 [0xff9c] R.x = 1053 [0x041d] R.y = 1000 [0x03e8] U.x = 526 [0x020e] U.y = 1100 [0x044c] 1566 [0x061e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 336 [0x0150] L.y = 725 [0x02d5] U.x = 336 [0x0150] U.y = 1450 [0x05aa] 1567 [0x061f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1900 [0x076c] 1568 [0x0620] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1900 [0x076c] 1569 [0x0621] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1900 [0x076c] 1570 [0x0622] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1900 [0x076c] 1571 [0x0623] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1870 [0x074e] 1572 [0x0624] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1900 [0x076c] 1573 [0x0625] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1900 [0x076c] 1574 [0x0626] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -500 [0xfe0c] U.x = 641 [0x0281] U.y = 1500 [0x05dc] 1575 [0x0627] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1500 [0x05dc] 1576 [0x0628] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1500 [0x05dc] 1577 [0x0629] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 680 [0x02a8] L.y = -100 [0xff9c] U.x = 680 [0x02a8] U.y = 1500 [0x05dc] 1578 [0x062a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 641 [0x0281] L.y = -100 [0xff9c] U.x = 641 [0x0281] U.y = 1500 [0x05dc] 1579 [0x062b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -100 [0xff9c] U.x = 760 [0x02f8] U.y = 1500 [0x05dc] 1580 [0x062c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -100 [0xff9c] U.x = 760 [0x02f8] U.y = 1900 [0x076c] 1581 [0x062d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -100 [0xff9c] U.x = 760 [0x02f8] U.y = 1935 [0x078f] 1582 [0x062e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -100 [0xff9c] U.x = 760 [0x02f8] U.y = 1870 [0x074e] 1583 [0x062f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 712 [0x02c8] L.y = -100 [0xff9c] U.x = 760 [0x02f8] U.y = 1900 [0x076c] 1584 [0x0630] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 673 [0x02a1] L.y = -100 [0xff9c] U.x = 673 [0x02a1] U.y = 1500 [0x05dc] 1585 [0x0631] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 673 [0x02a1] L.y = -100 [0xff9c] U.x = 673 [0x02a1] U.y = 1900 [0x076c] 1586 [0x0632] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 674 [0x02a2] L.y = -100 [0xff9c] U.x = 674 [0x02a2] U.y = 1500 [0x05dc] 1587 [0x0633] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 673 [0x02a1] L.y = -100 [0xff9c] U.x = 673 [0x02a1] U.y = 1500 [0x05dc] 1588 [0x0634] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 673 [0x02a1] L.y = -500 [0xfe0c] U.x = 673 [0x02a1] U.y = 1500 [0x05dc] 1589 [0x0635] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1590 [0x0636] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 297 [0x0129] L.y = 725 [0x02d5] U.x = 297 [0x0129] U.y = 1450 [0x05aa] 1591 [0x0637] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1500 [0x05dc] 1592 [0x0638] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1500 [0x05dc] 1593 [0x0639] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1500 [0x05dc] 1594 [0x063a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1500 [0x05dc] 1595 [0x063b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -500 [0xfe0c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1596 [0x063c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] H.x = 483 [0x01e3] L.x = 483 [0x01e3] L.y = -500 [0xfe0c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1597 [0x063d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 483 [0x01e3] L.y = -500 [0xfe0c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1598 [0x063e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 315 [0x013b] L.y = 485 [0x01e5] U.x = 315 [0x013b] U.y = 1450 [0x05aa] 1599 [0x063f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 483 [0x01e3] L.y = -500 [0xfe0c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1600 [0x0640] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1601 [0x0641] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1602 [0x0642] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 483 [0x01e3] L.y = -500 [0xfe0c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1603 [0x0643] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 326 [0x0146] L.y = 485 [0x01e5] U.x = 326 [0x0146] U.y = 1457 [0x05b1] 1604 [0x0644] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 485 [0x01e5] L.y = -100 [0xff9c] U.x = 485 [0x01e5] U.y = 1100 [0x044c] 1605 [0x0645] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 483 [0x01e3] L.y = -100 [0xff9c] U.x = 483 [0x01e3] U.y = 1100 [0x044c] 1606 [0x0646] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 502 [0x01f6] L.y = -500 [0xfe0c] U.x = 502 [0x01f6] U.y = 1100 [0x044c] 1607 [0x0647] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 486 [0x01e6] L.y = -100 [0xff9c] U.x = 486 [0x01e6] U.y = 1100 [0x044c] 1608 [0x0648] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1900 [0x076c] 1609 [0x0649] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1900 [0x076c] 1610 [0x064a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1900 [0x076c] 1611 [0x064b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1900 [0x076c] 1612 [0x064c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -500 [0xfe0c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 1613 [0x064d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -500 [0xfe0c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 1614 [0x064e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -500 [0xfe0c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 1615 [0x064f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 1616 [0x0650] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 1617 [0x0651] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 610 [0x0262] L.y = -100 [0xff9c] U.x = 610 [0x0262] U.y = 1500 [0x05dc] 1618 [0x0652] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 607 [0x025f] L.y = -100 [0xff9c] U.x = 607 [0x025f] U.y = 1500 [0x05dc] 1619 [0x0653] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 599 [0x0257] L.y = -100 [0xff9c] U.x = 599 [0x0257] U.y = 1500 [0x05dc] 1620 [0x0654] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 599 [0x0257] L.y = -100 [0xff9c] U.x = 599 [0x0257] U.y = 1500 [0x05dc] 1621 [0x0655] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 521 [0x0209] L.y = -500 [0xfe0c] U.x = 521 [0x0209] U.y = 1100 [0x044c] 1622 [0x0656] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 521 [0x0209] L.y = -500 [0xfe0c] U.x = 521 [0x0209] U.y = 1100 [0x044c] 1623 [0x0657] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 343 [0x0157] L.y = 485 [0x01e5] U.x = 343 [0x0157] U.y = 1457 [0x05b1] 1624 [0x0658] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 521 [0x0209] L.y = -500 [0xfe0c] U.x = 521 [0x0209] U.y = 1500 [0x05dc] 1625 [0x0659] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 577 [0x0241] L.y = -845 [0xfcb3] U.x = 521 [0x0209] U.y = 1100 [0x044c] 1626 [0x065a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 533 [0x0215] L.y = -500 [0xfe0c] U.x = 533 [0x0215] U.y = 1100 [0x044c] 1627 [0x065b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 521 [0x0209] L.y = -500 [0xfe0c] U.x = 521 [0x0209] U.y = 1100 [0x044c] 1628 [0x065c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 571 [0x023b] L.y = -500 [0xfe0c] U.x = 571 [0x023b] U.y = 1100 [0x044c] 1629 [0x065d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 497 [0x01f1] L.y = -500 [0xfe0c] U.x = 497 [0x01f1] U.y = 1100 [0x044c] 1630 [0x065e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 544 [0x0220] L.y = -500 [0xfe0c] U.x = 544 [0x0220] U.y = 1100 [0x044c] 1631 [0x065f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1632 [0x0660] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 434 [0x01b2] L.y = -500 [0xfe0c] U.x = 434 [0x01b2] U.y = 1100 [0x044c] 1633 [0x0661] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 607 [0x025f] L.y = -500 [0xfe0c] U.x = 607 [0x025f] U.y = 1500 [0x05dc] 1634 [0x0662] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] L.x = 607 [0x025f] L.y = -500 [0xfe0c] U.x = 607 [0x025f] U.y = 1500 [0x05dc] 1635 [0x0663] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 494 [0x01ee] L.y = -350 [0xfea2] U.x = 494 [0x01ee] U.y = 1100 [0x044c] 1636 [0x0664] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 607 [0x025f] L.y = -500 [0xfe0c] U.x = 607 [0x025f] U.y = 1900 [0x076c] 1637 [0x0665] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 630 [0x0276] L.y = -500 [0xfe0c] U.x = 630 [0x0276] U.y = 1500 [0x05dc] 1638 [0x0666] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 540 [0x021c] L.y = -220 [0xff24] U.x = 540 [0x021c] U.y = 1500 [0x05dc] 1639 [0x0667] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -100 [0xff9c] R.x = 954 [0x03ba] R.y = 1000 [0x03e8] U.x = 477 [0x01dd] U.y = 1540 [0x0604] 1640 [0x0668] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 310 [0x0136] L.y = 725 [0x02d5] U.x = 310 [0x0136] U.y = 1700 [0x06a4] 1641 [0x0669] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 396 [0x018c] L.y = -100 [0xff9c] U.x = 396 [0x018c] U.y = 1100 [0x044c] 1642 [0x066a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 493 [0x01ed] L.y = -35 [0xffdd] U.x = 493 [0x01ed] U.y = 1435 [0x059b] 1643 [0x066b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -100 [0xff9c] U.x = 477 [0x01dd] U.y = 1540 [0x0604] 1644 [0x066c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -100 [0xff9c] U.x = 477 [0x01dd] U.y = 1540 [0x0604] 1645 [0x066d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 311 [0x0137] L.y = 725 [0x02d5] U.x = 311 [0x0137] U.y = 1700 [0x06a4] 1646 [0x066e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 310 [0x0136] L.y = 725 [0x02d5] U.x = 310 [0x0136] U.y = 1700 [0x06a4] 1647 [0x066f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -100 [0xff9c] U.x = 477 [0x01dd] U.y = 1540 [0x0604] 1648 [0x0670] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -100 [0xff9c] U.x = 477 [0x01dd] U.y = 1540 [0x0604] 1649 [0x0671] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 477 [0x01dd] L.y = -100 [0xff9c] U.x = 477 [0x01dd] U.y = 1540 [0x0604] 1650 [0x0672] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 467 [0x01d3] L.y = -100 [0xff9c] U.x = 467 [0x01d3] U.y = 1540 [0x0604] 1651 [0x0673] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 655 [0x028f] L.y = -100 [0xff9c] U.x = 655 [0x028f] U.y = 1100 [0x044c] 1652 [0x0674] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 449 [0x01c1] L.y = 725 [0x02d5] U.x = 449 [0x01c1] U.y = 1450 [0x05aa] 1653 [0x0675] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1654 [0x0676] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1655 [0x0677] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1650 [0x0672] 1656 [0x0678] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1657 [0x0679] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 347 [0x015b] L.y = 725 [0x02d5] U.x = 347 [0x015b] U.y = 1650 [0x0672] 1658 [0x067a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1659 [0x067b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1650 [0x0672] 1660 [0x067c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 602 [0x025a] L.y = -100 [0xff9c] U.x = 602 [0x025a] U.y = 1500 [0x05dc] 1661 [0x067d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1662 [0x067e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1650 [0x0672] 1663 [0x067f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1664 [0x0680] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1650 [0x0672] 1665 [0x0681] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1666 [0x0682] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1667 [0x0683] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 373 [0x0175] L.y = 725 [0x02d5] U.x = 373 [0x0175] U.y = 1650 [0x0672] 1668 [0x0684] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 551 [0x0227] L.y = -100 [0xff9c] U.x = 551 [0x0227] U.y = 1500 [0x05dc] 1669 [0x0685] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 435 [0x01b3] L.y = -100 [0xff9c] U.x = 435 [0x01b3] U.y = 1100 [0x044c] 1670 [0x0686] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1671 [0x0687] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1650 [0x0672] 1672 [0x0688] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1673 [0x0689] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1650 [0x0672] 1674 [0x068a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1675 [0x068b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 373 [0x0175] L.y = 725 [0x02d5] U.x = 373 [0x0175] U.y = 1650 [0x0672] 1676 [0x068c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1677 [0x068d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 374 [0x0176] L.y = 725 [0x02d5] U.x = 374 [0x0176] U.y = 1650 [0x0672] 1678 [0x068e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1679 [0x068f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1680 [0x0690] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1681 [0x0691] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1682 [0x0692] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1683 [0x0693] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1684 [0x0694] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1685 [0x0695] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1686 [0x0696] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1687 [0x0697] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1688 [0x0698] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1689 [0x0699] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1690 [0x069a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1691 [0x069b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1692 [0x069c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1693 [0x069d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1694 [0x069e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 236 [0x00ec] L.y = -100 [0xff9c] U.x = 236 [0x00ec] U.y = 1540 [0x0604] 1695 [0x069f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1696 [0x06a0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1697 [0x06a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1698 [0x06a2] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1699 [0x06a3] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1700 [0x06a4] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1701 [0x06a5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1702 [0x06a6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1703 [0x06a7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1704 [0x06a8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1705 [0x06a9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1706 [0x06aa] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1707 [0x06ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1708 [0x06ac] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1709 [0x06ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1710 [0x06ae] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1711 [0x06af] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1780 [0x06f4] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1712 [0x06b0] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1713 [0x06b1] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1714 [0x06b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1715 [0x06b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1716 [0x06b4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1717 [0x06b5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1718 [0x06b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1719 [0x06b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1720 [0x06b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1721 [0x06b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 1722 [0x06ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 1723 [0x06bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 1724 [0x06bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 1725 [0x06bd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 1726 [0x06be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 1727 [0x06bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1728 [0x06c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1729 [0x06c1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1730 [0x06c2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1731 [0x06c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 226 [0x00e2] L.y = -500 [0xfe0c] U.x = 226 [0x00e2] U.y = 1540 [0x0604] 1732 [0x06c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 356 [0x0164] L.y = -500 [0xfe0c] U.x = 356 [0x0164] U.y = 1540 [0x0604] 1733 [0x06c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 426 [0x01aa] L.y = -500 [0xfe0c] U.x = 426 [0x01aa] U.y = 1540 [0x0604] 1734 [0x06c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1735 [0x06c7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1736 [0x06c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1737 [0x06c9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1738 [0x06ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1739 [0x06cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1740 [0x06cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 327 [0x0147] U.y = 1100 [0x044c] 1741 [0x06cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 327 [0x0147] U.y = 1100 [0x044c] 1742 [0x06ce] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] U.x = 327 [0x0147] U.y = 1100 [0x044c] 1743 [0x06cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1744 [0x06d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1745 [0x06d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1746 [0x06d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 327 [0x0147] U.y = 1100 [0x044c] 1747 [0x06d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1748 [0x06d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1749 [0x06d5] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1750 [0x06d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1751 [0x06d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1752 [0x06d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1753 [0x06d9] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1754 [0x06da] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] U.x = 179 [0x00b3] U.y = 1500 [0x05dc] 1755 [0x06db] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1756 [0x06dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1757 [0x06dd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1758 [0x06de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1759 [0x06df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1760 [0x06e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1761 [0x06e1] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1762 [0x06e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1763 [0x06e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1764 [0x06e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 237 [0x00ed] L.y = -500 [0xfe0c] 1765 [0x06e5] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1766 [0x06e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 237 [0x00ed] U.y = 1100 [0x044c] 1767 [0x06e7] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] U.x = 294 [0x0126] U.y = 1500 [0x05dc] 1768 [0x06e8] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1769 [0x06e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1770 [0x06ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1771 [0x06eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] U.x = 437 [0x01b5] U.y = 1100 [0x044c] 1772 [0x06ec] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1773 [0x06ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1774 [0x06ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1775 [0x06ef] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1776 [0x06f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1777 [0x06f1] *skipPasses* = 26 [0x001a / 0 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1778 [0x06f2] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = 480 [0x01e0] UM.y = 1100 [0x044c] 1779 [0x06f3] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = 480 [0x01e0] UM.y = 1100 [0x044c] 1780 [0x06f4] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 355 [0x0163] U.y = 1825 [0x0721] UM.x = 355 [0x0163] UM.y = 1100 [0x044c] 1781 [0x06f5] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = 438 [0x01b6] UM.y = 1100 [0x044c] 1782 [0x06f6] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1783 [0x06f7] *skipPasses* = 26 [0x001a / 0 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1784 [0x06f8] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 305 [0x0131] U.y = 1500 [0x05dc] UM.x = -425 [0xfe57] UM.y = 1100 [0x044c] 1785 [0x06f9] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 305 [0x0131] U.y = 1500 [0x05dc] UM.x = -352 [0xfea0] UM.y = 1100 [0x044c] 1786 [0x06fa] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 305 [0x0131] U.y = 1500 [0x05dc] UM.x = -140 [0xff74] UM.y = 1100 [0x044c] 1787 [0x06fb] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1616 [0x0650] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1788 [0x06fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1789 [0x06fd] *skipPasses* = 23 [0x0017 / 1 1 1 0 1] breakweight = 30 [0x001e] U.y = 1905 [0x0771] 1790 [0x06fe] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1791 [0x06ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1792 [0x0700] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1793 [0x0701] *skipPasses* = 26 [0x001a / 0 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1794 [0x0702] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 424 [0x01a8] U.y = 1790 [0x06fe] UM.x = 305 [0x0131] UM.y = 1100 [0x044c] 1795 [0x0703] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 189 [0x00bd] U.y = 1790 [0x06fe] UM.x = 305 [0x0131] UM.y = 1100 [0x044c] 1796 [0x0704] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 355 [0x0163] U.y = 1825 [0x0721] UM.x = 355 [0x0163] UM.y = 1100 [0x044c] 1797 [0x0705] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 305 [0x0131] U.y = 1717 [0x06b5] UM.x = 305 [0x0131] UM.y = 1100 [0x044c] 1798 [0x0706] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1799 [0x0707] *skipPasses* = 26 [0x001a / 0 1 0 1 1] breakweight = 30 [0x001e] U.x = 289 [0x0121] U.y = 1500 [0x05dc] UM.x = 289 [0x0121] UM.y = 1100 [0x044c] 1800 [0x0708] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1801 [0x0709] *skipPasses* = 15 [0x000f / 1 1 1 1 0] breakweight = 30 [0x001e] L.y = -700 [0xfd44] 1802 [0x070a] *skipPasses* = 23 [0x0017 / 1 1 1 0 1] breakweight = 30 [0x001e] U.y = 1905 [0x0771] 1803 [0x070b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 335 [0x014f] L.y = -100 [0xff9c] 1804 [0x070c] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1805 [0x070d] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1806 [0x070e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1807 [0x070f] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1808 [0x0710] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1809 [0x0711] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1810 [0x0712] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1811 [0x0713] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1812 [0x0714] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1813 [0x0715] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1814 [0x0716] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1815 [0x0717] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1816 [0x0718] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1580 [0x062c] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1817 [0x0719] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1818 [0x071a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1819 [0x071b] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1680 [0x0690] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1820 [0x071c] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -650 [0xfd76] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1821 [0x071d] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1980 [0x07bc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1822 [0x071e] *skipPasses* = 23 [0x0017 / 1 1 1 0 1] breakweight = 30 [0x001e] U.y = 1905 [0x0771] 1823 [0x071f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1824 [0x0720] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1825 [0x0721] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1980 [0x07bc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1826 [0x0722] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1540 [0x0604] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1827 [0x0723] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -600 [0xfda8] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1828 [0x0724] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1829 [0x0725] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1830 [0x0726] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1831 [0x0727] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1832 [0x0728] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1833 [0x0729] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1834 [0x072a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1835 [0x072b] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1836 [0x072c] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = 243 [0x00f3] L.y = -500 [0xfe0c] LM.x = 243 [0x00f3] LM.y = -100 [0xff9c] 1837 [0x072d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] U.x = 343 [0x0157] U.y = 1470 [0x05be] 1838 [0x072e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1470 [0x05be] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1839 [0x072f] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 243 [0x00f3] U.y = 1470 [0x05be] UM.x = 243 [0x00f3] UM.y = 1100 [0x044c] 1840 [0x0730] *skipPasses* = 15 [0x000f / 1 1 1 1 0] breakweight = 30 [0x001e] L.y = -700 [0xfd44] 1841 [0x0731] *skipPasses* = 23 [0x0017 / 1 1 1 0 1] breakweight = 30 [0x001e] U.y = 1905 [0x0771] 1842 [0x0732] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1843 [0x0733] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1580 [0x062c] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1844 [0x0734] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1845 [0x0735] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1846 [0x0736] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1847 [0x0737] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1580 [0x062c] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1848 [0x0738] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1849 [0x0739] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1850 [0x073a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1851 [0x073b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1852 [0x073c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1853 [0x073d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1854 [0x073e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1855 [0x073f] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1856 [0x0740] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 323 [0x0143] U.y = 1500 [0x05dc] UM.x = -337 [0xfeaf] UM.y = 1100 [0x044c] 1857 [0x0741] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 323 [0x0143] U.y = 1500 [0x05dc] UM.x = 18 [0x0012] UM.y = 1100 [0x044c] 1858 [0x0742] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 323 [0x0143] U.y = 1500 [0x05dc] UM.x = 21 [0x0015] UM.y = 1100 [0x044c] 1859 [0x0743] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 210 [0x00d2] U.y = 1650 [0x0672] UM.x = 210 [0x00d2] UM.y = 1450 [0x05aa] 1860 [0x0744] *skipPasses* = 23 [0x0017 / 1 1 1 0 1] breakweight = 30 [0x001e] U.y = 1500 [0x05dc] 1861 [0x0745] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1862 [0x0746] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1863 [0x0747] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = 114 [0x0072] U.y = 1700 [0x06a4] RM.y = 1200 [0x04b0] 1864 [0x0748] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1865 [0x0749] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1866 [0x074a] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] RM.y = 1200 [0x04b0] 1867 [0x074b] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] RM.y = 1200 [0x04b0] 1868 [0x074c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1869 [0x074d] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -657 [0xfd6f] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1870 [0x074e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1660 [0x067c] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1871 [0x074f] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -642 [0xfd7e] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1872 [0x0750] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1873 [0x0751] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1874 [0x0752] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 310 [0x0136] L.y = -100 [0xff9c] U.x = 310 [0x0136] U.y = 1540 [0x0604] 1875 [0x0753] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1580 [0x062c] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1876 [0x0754] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1877 [0x0755] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1878 [0x0756] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 270 [0x010e] L.y = -100 [0xff9c] U.x = 270 [0x010e] U.y = 1540 [0x0604] 1879 [0x0757] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1580 [0x062c] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1880 [0x0758] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1881 [0x0759] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1882 [0x075a] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1883 [0x075b] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1884 [0x075c] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1885 [0x075d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1886 [0x075e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1887 [0x075f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1888 [0x0760] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1889 [0x0761] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1890 [0x0762] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1891 [0x0763] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1892 [0x0764] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1893 [0x0765] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1894 [0x0766] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1895 [0x0767] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1896 [0x0768] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1897 [0x0769] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1898 [0x076a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1899 [0x076b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1900 [0x076c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1901 [0x076d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1902 [0x076e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1903 [0x076f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1904 [0x0770] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1905 [0x0771] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1906 [0x0772] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 1907 [0x0773] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1908 [0x0774] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1909 [0x0775] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1910 [0x0776] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1911 [0x0777] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] L.x = 507 [0x01fb] L.y = -100 [0xff9c] U.x = 507 [0x01fb] U.y = 1540 [0x0604] 1912 [0x0778] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -600 [0xfda8] HM.x = -557 [0xfdd3] HM.y = -100 [0xff9c] 1913 [0x0779] *skipPasses* = 25 [0x0019 / 1 0 0 1 1] breakweight = 30 [0x001e] L.x = -615 [0xfd99] L.y = -500 [0xfe0c] OM.x = -557 [0xfdd3] OM.y = -100 [0xff9c] 1914 [0x077a] *skipPasses* = 25 [0x0019 / 1 0 0 1 1] breakweight = 30 [0x001e] L.x = 190 [0x00be] L.y = -500 [0xfe0c] LM.x = 190 [0x00be] LM.y = -100 [0xff9c] 1915 [0x077b] *skipPasses* = 29 [0x001d / 1 0 1 1 1] breakweight = 30 [0x001e] 1916 [0x077c] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -815 [0xfcd1] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1917 [0x077d] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1918 [0x077e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1500 [0x05dc] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 1919 [0x077f] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1920 [0x0780] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 1921 [0x0781] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 1922 [0x0782] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] RM.y = 1000 [0x03e8] 1923 [0x0783] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] RM.x = 535 [0x0217] RM.y = 1000 [0x03e8] 1924 [0x0784] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 57 [0x0039] tone = 1 1925 [0x0785] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 399 [0x018f] tone = 2 1926 [0x0786] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 741 [0x02e5] tone = 3 1927 [0x0787] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 1081 [0x0439] tone = 4 1928 [0x0788] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 1423 [0x058f] tone = 5 1929 [0x0789] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 57 [0x0039] tone = 1 1930 [0x078a] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 399 [0x018f] tone = 2 1931 [0x078b] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 741 [0x02e5] tone = 3 1932 [0x078c] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 1081 [0x0439] tone = 4 1933 [0x078d] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 1423 [0x058f] tone = 5 1934 [0x078e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 57 [0x0039] TML.x = 147 [0x0093] TML.y = 57 [0x0039] tone = 1 1935 [0x078f] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 399 [0x018f] TML.x = 147 [0x0093] TML.y = 57 [0x0039] tone = 1 1936 [0x0790] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 741 [0x02e5] TML.x = 147 [0x0093] TML.y = 57 [0x0039] tone = 1 1937 [0x0791] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1081 [0x0439] TML.x = 147 [0x0093] TML.y = 57 [0x0039] tone = 1 1938 [0x0792] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1423 [0x058f] TML.x = 147 [0x0093] TML.y = 57 [0x0039] tone = 1 1939 [0x0793] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 57 [0x0039] TML.x = 147 [0x0093] TML.y = 399 [0x018f] tone = 2 1940 [0x0794] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 399 [0x018f] TML.x = 147 [0x0093] TML.y = 399 [0x018f] tone = 2 1941 [0x0795] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 741 [0x02e5] TML.x = 147 [0x0093] TML.y = 399 [0x018f] tone = 2 1942 [0x0796] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1081 [0x0439] TML.x = 147 [0x0093] TML.y = 399 [0x018f] tone = 2 1943 [0x0797] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1423 [0x058f] TML.x = 147 [0x0093] TML.y = 399 [0x018f] tone = 2 1944 [0x0798] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 57 [0x0039] TML.x = 147 [0x0093] TML.y = 741 [0x02e5] tone = 3 1945 [0x0799] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 399 [0x018f] TML.x = 147 [0x0093] TML.y = 741 [0x02e5] tone = 3 1946 [0x079a] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 741 [0x02e5] TML.x = 147 [0x0093] TML.y = 741 [0x02e5] tone = 3 1947 [0x079b] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1081 [0x0439] TML.x = 147 [0x0093] TML.y = 741 [0x02e5] tone = 3 1948 [0x079c] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1423 [0x058f] TML.x = 147 [0x0093] TML.y = 741 [0x02e5] tone = 3 1949 [0x079d] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 57 [0x0039] TML.x = 147 [0x0093] TML.y = 1081 [0x0439] tone = 4 1950 [0x079e] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 399 [0x018f] TML.x = 147 [0x0093] TML.y = 1081 [0x0439] tone = 4 1951 [0x079f] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 741 [0x02e5] TML.x = 147 [0x0093] TML.y = 1081 [0x0439] tone = 4 1952 [0x07a0] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1081 [0x0439] TML.x = 147 [0x0093] TML.y = 1081 [0x0439] tone = 4 1953 [0x07a1] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1423 [0x058f] TML.x = 147 [0x0093] TML.y = 1081 [0x0439] tone = 4 1954 [0x07a2] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 57 [0x0039] TML.x = 147 [0x0093] TML.y = 1423 [0x058f] tone = 5 1955 [0x07a3] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 399 [0x018f] TML.x = 147 [0x0093] TML.y = 1423 [0x058f] tone = 5 1956 [0x07a4] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 741 [0x02e5] TML.x = 147 [0x0093] TML.y = 1423 [0x058f] tone = 5 1957 [0x07a5] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1081 [0x0439] TML.x = 147 [0x0093] TML.y = 1423 [0x058f] tone = 5 1958 [0x07a6] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] TL.x = 596 [0x0254] TL.y = 1423 [0x058f] TML.x = 147 [0x0093] TML.y = 1423 [0x058f] tone = 5 1959 [0x07a7] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 57 [0x0039] TML.y = 57 [0x0039] tone = 1 1960 [0x07a8] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 399 [0x018f] TML.y = 57 [0x0039] tone = 1 1961 [0x07a9] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 741 [0x02e5] TML.y = 57 [0x0039] tone = 1 1962 [0x07aa] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1081 [0x0439] TML.y = 57 [0x0039] tone = 1 1963 [0x07ab] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1423 [0x058f] TML.y = 57 [0x0039] tone = 1 1964 [0x07ac] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 57 [0x0039] TML.y = 399 [0x018f] tone = 2 1965 [0x07ad] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 399 [0x018f] TML.y = 399 [0x018f] tone = 2 1966 [0x07ae] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 741 [0x02e5] TML.y = 399 [0x018f] tone = 2 1967 [0x07af] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1081 [0x0439] TML.y = 399 [0x018f] tone = 2 1968 [0x07b0] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1423 [0x058f] TML.y = 399 [0x018f] tone = 2 1969 [0x07b1] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 57 [0x0039] TML.y = 741 [0x02e5] tone = 3 1970 [0x07b2] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 399 [0x018f] TML.y = 741 [0x02e5] tone = 3 1971 [0x07b3] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 741 [0x02e5] TML.y = 741 [0x02e5] tone = 3 1972 [0x07b4] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1081 [0x0439] TML.y = 741 [0x02e5] tone = 3 1973 [0x07b5] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1423 [0x058f] TML.y = 741 [0x02e5] tone = 3 1974 [0x07b6] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 57 [0x0039] TML.y = 1081 [0x0439] tone = 4 1975 [0x07b7] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 399 [0x018f] TML.y = 1081 [0x0439] tone = 4 1976 [0x07b8] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 741 [0x02e5] TML.y = 1081 [0x0439] tone = 4 1977 [0x07b9] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1081 [0x0439] TML.y = 1081 [0x0439] tone = 4 1978 [0x07ba] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1423 [0x058f] TML.y = 1081 [0x0439] tone = 4 1979 [0x07bb] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 57 [0x0039] TML.y = 1423 [0x058f] tone = 5 1980 [0x07bc] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 399 [0x018f] TML.y = 1423 [0x058f] tone = 5 1981 [0x07bd] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 741 [0x02e5] TML.y = 1423 [0x058f] tone = 5 1982 [0x07be] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1081 [0x0439] TML.y = 1423 [0x058f] tone = 5 1983 [0x07bf] *skipPasses* = 24 [0x0018 / 0 0 0 1 1] breakweight = 30 [0x001e] TL.x = 449 [0x01c1] TL.y = 1423 [0x058f] TML.y = 1423 [0x058f] tone = 5 1984 [0x07c0] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 57 [0x0039] tone = 1 1985 [0x07c1] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 399 [0x018f] tone = 2 1986 [0x07c2] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 741 [0x02e5] tone = 3 1987 [0x07c3] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 1081 [0x0439] tone = 4 1988 [0x07c4] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TML.x = -20 [0xffec] TML.y = 1423 [0x058f] tone = 5 1989 [0x07c5] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 57 [0x0039] tone = 1 1990 [0x07c6] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 399 [0x018f] tone = 2 1991 [0x07c7] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 741 [0x02e5] tone = 3 1992 [0x07c8] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 1081 [0x0439] tone = 4 1993 [0x07c9] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] TL.x = 192 [0x00c0] TL.y = 1423 [0x058f] tone = 5 1994 [0x07ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TML.x = 147 [0x0093] TML.y = 57 [0x0039] 1995 [0x07cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TML.x = 147 [0x0093] TML.y = 399 [0x018f] 1996 [0x07cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TML.x = 147 [0x0093] TML.y = 741 [0x02e5] 1997 [0x07cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TML.x = 147 [0x0093] TML.y = 1081 [0x0439] 1998 [0x07ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TML.x = 147 [0x0093] TML.y = 1423 [0x058f] 1999 [0x07cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TL.x = 621 [0x026d] TL.y = 57 [0x0039] 2000 [0x07d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TL.x = 621 [0x026d] TL.y = 399 [0x018f] 2001 [0x07d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TL.x = 621 [0x026d] TL.y = 741 [0x02e5] 2002 [0x07d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TL.x = 621 [0x026d] TL.y = 1081 [0x0439] 2003 [0x07d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] TL.x = 621 [0x026d] TL.y = 1423 [0x058f] 2004 [0x07d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2005 [0x07d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2006 [0x07d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2007 [0x07d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2008 [0x07d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2009 [0x07d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2010 [0x07da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2011 [0x07db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2012 [0x07dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2013 [0x07dd] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 5 2014 [0x07de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2015 [0x07df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2016 [0x07e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2017 [0x07e1] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 4 2018 [0x07e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2019 [0x07e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2020 [0x07e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2021 [0x07e5] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 3 2022 [0x07e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2023 [0x07e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2024 [0x07e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2025 [0x07e9] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 2 2026 [0x07ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2027 [0x07eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2028 [0x07ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2029 [0x07ed] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 1 2030 [0x07ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2031 [0x07ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2032 [0x07f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2033 [0x07f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2034 [0x07f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2035 [0x07f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2036 [0x07f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2037 [0x07f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2038 [0x07f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2039 [0x07f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2040 [0x07f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2041 [0x07f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2042 [0x07fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2043 [0x07fb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2044 [0x07fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2045 [0x07fd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2046 [0x07fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2047 [0x07ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2048 [0x0800] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2049 [0x0801] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2050 [0x0802] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2051 [0x0803] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2052 [0x0804] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2053 [0x0805] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2054 [0x0806] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2055 [0x0807] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2056 [0x0808] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2057 [0x0809] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2058 [0x080a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2059 [0x080b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2060 [0x080c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2061 [0x080d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2062 [0x080e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2063 [0x080f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2064 [0x0810] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2065 [0x0811] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2066 [0x0812] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2067 [0x0813] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2068 [0x0814] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2069 [0x0815] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2070 [0x0816] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2071 [0x0817] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2072 [0x0818] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2073 [0x0819] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2074 [0x081a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2075 [0x081b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2076 [0x081c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2077 [0x081d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2078 [0x081e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2079 [0x081f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2080 [0x0820] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2081 [0x0821] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2082 [0x0822] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2083 [0x0823] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2084 [0x0824] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2085 [0x0825] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2086 [0x0826] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2087 [0x0827] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2088 [0x0828] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2089 [0x0829] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2090 [0x082a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2091 [0x082b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2092 [0x082c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2093 [0x082d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2094 [0x082e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2095 [0x082f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2096 [0x0830] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2097 [0x0831] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2098 [0x0832] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2099 [0x0833] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2100 [0x0834] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2101 [0x0835] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2102 [0x0836] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2103 [0x0837] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2104 [0x0838] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2105 [0x0839] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2106 [0x083a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2107 [0x083b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2108 [0x083c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2109 [0x083d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2110 [0x083e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2111 [0x083f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2112 [0x0840] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2113 [0x0841] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2114 [0x0842] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2115 [0x0843] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2116 [0x0844] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2117 [0x0845] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2118 [0x0846] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2119 [0x0847] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2120 [0x0848] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2121 [0x0849] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2122 [0x084a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2123 [0x084b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2124 [0x084c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2125 [0x084d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2126 [0x084e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2127 [0x084f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2128 [0x0850] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2129 [0x0851] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2130 [0x0852] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2131 [0x0853] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2132 [0x0854] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2133 [0x0855] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2134 [0x0856] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2135 [0x0857] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2136 [0x0858] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2137 [0x0859] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2138 [0x085a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2139 [0x085b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2140 [0x085c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2141 [0x085d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2142 [0x085e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2143 [0x085f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2144 [0x0860] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2145 [0x0861] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2146 [0x0862] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2147 [0x0863] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2148 [0x0864] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2149 [0x0865] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2150 [0x0866] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2151 [0x0867] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2152 [0x0868] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2153 [0x0869] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2154 [0x086a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2155 [0x086b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2156 [0x086c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2157 [0x086d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2158 [0x086e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2159 [0x086f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2160 [0x0870] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2161 [0x0871] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2162 [0x0872] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2163 [0x0873] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2164 [0x0874] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2165 [0x0875] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2166 [0x0876] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2167 [0x0877] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2168 [0x0878] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2169 [0x0879] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2170 [0x087a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2171 [0x087b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2172 [0x087c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2173 [0x087d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 5 2174 [0x087e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2175 [0x087f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2176 [0x0880] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2177 [0x0881] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 4 2178 [0x0882] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2179 [0x0883] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2180 [0x0884] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2181 [0x0885] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 3 2182 [0x0886] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2183 [0x0887] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2184 [0x0888] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2185 [0x0889] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 2 2186 [0x088a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2187 [0x088b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2188 [0x088c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2189 [0x088d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] tone = 1 2190 [0x088e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2191 [0x088f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2192 [0x0890] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2193 [0x0891] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2194 [0x0892] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2195 [0x0893] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2196 [0x0894] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2197 [0x0895] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2198 [0x0896] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2199 [0x0897] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2200 [0x0898] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2201 [0x0899] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2202 [0x089a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2203 [0x089b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2204 [0x089c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2205 [0x089d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2206 [0x089e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2207 [0x089f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2208 [0x08a0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2209 [0x08a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2210 [0x08a2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2211 [0x08a3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2212 [0x08a4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2213 [0x08a5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2214 [0x08a6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2215 [0x08a7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2216 [0x08a8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2217 [0x08a9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2218 [0x08aa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2219 [0x08ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2220 [0x08ac] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2221 [0x08ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2222 [0x08ae] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2223 [0x08af] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2224 [0x08b0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2225 [0x08b1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2226 [0x08b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2227 [0x08b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2228 [0x08b4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2229 [0x08b5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2230 [0x08b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2231 [0x08b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2232 [0x08b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2233 [0x08b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2234 [0x08ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2235 [0x08bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2236 [0x08bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2237 [0x08bd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2238 [0x08be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2239 [0x08bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2240 [0x08c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2241 [0x08c1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2242 [0x08c2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2243 [0x08c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2244 [0x08c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2245 [0x08c5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2246 [0x08c6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2247 [0x08c7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2248 [0x08c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2249 [0x08c9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2250 [0x08ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2251 [0x08cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2252 [0x08cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2253 [0x08cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2254 [0x08ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2255 [0x08cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2256 [0x08d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2257 [0x08d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2258 [0x08d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2259 [0x08d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2260 [0x08d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2261 [0x08d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2262 [0x08d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2263 [0x08d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2264 [0x08d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2265 [0x08d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2266 [0x08da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2267 [0x08db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2268 [0x08dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2269 [0x08dd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2270 [0x08de] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2271 [0x08df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2272 [0x08e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2273 [0x08e1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2274 [0x08e2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2275 [0x08e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2276 [0x08e4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2277 [0x08e5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2278 [0x08e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2279 [0x08e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2280 [0x08e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2281 [0x08e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2282 [0x08ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2283 [0x08eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2284 [0x08ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2285 [0x08ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2286 [0x08ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2287 [0x08ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2288 [0x08f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2289 [0x08f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2290 [0x08f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2291 [0x08f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2292 [0x08f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2293 [0x08f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2294 [0x08f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2295 [0x08f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2296 [0x08f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2297 [0x08f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2298 [0x08fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2299 [0x08fb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2300 [0x08fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2301 [0x08fd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2302 [0x08fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2303 [0x08ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2304 [0x0900] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2305 [0x0901] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2306 [0x0902] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2307 [0x0903] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2308 [0x0904] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2309 [0x0905] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2310 [0x0906] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2311 [0x0907] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2312 [0x0908] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2313 [0x0909] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2314 [0x090a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2315 [0x090b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2316 [0x090c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2317 [0x090d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2318 [0x090e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2319 [0x090f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2320 [0x0910] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2321 [0x0911] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2322 [0x0912] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2323 [0x0913] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2324 [0x0914] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2325 [0x0915] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2326 [0x0916] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2327 [0x0917] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2328 [0x0918] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2329 [0x0919] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2330 [0x091a] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2331 [0x091b] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2332 [0x091c] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2333 [0x091d] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2334 [0x091e] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2335 [0x091f] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2336 [0x0920] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2337 [0x0921] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2338 [0x0922] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2339 [0x0923] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2340 [0x0924] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2341 [0x0925] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2342 [0x0926] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2343 [0x0927] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2344 [0x0928] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2345 [0x0929] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2346 [0x092a] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2347 [0x092b] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2348 [0x092c] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2349 [0x092d] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2350 [0x092e] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2351 [0x092f] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2352 [0x0930] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2353 [0x0931] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2354 [0x0932] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2355 [0x0933] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2356 [0x0934] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2357 [0x0935] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2358 [0x0936] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2359 [0x0937] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2360 [0x0938] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2361 [0x0939] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2362 [0x093a] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2363 [0x093b] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2364 [0x093c] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2365 [0x093d] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2366 [0x093e] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2367 [0x093f] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2368 [0x0940] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2369 [0x0941] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2370 [0x0942] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2371 [0x0943] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2372 [0x0944] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2373 [0x0945] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2374 [0x0946] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2375 [0x0947] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2376 [0x0948] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2377 [0x0949] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2378 [0x094a] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2379 [0x094b] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2380 [0x094c] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2381 [0x094d] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2382 [0x094e] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2383 [0x094f] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2384 [0x0950] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2385 [0x0951] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2386 [0x0952] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2387 [0x0953] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2388 [0x0954] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2389 [0x0955] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2390 [0x0956] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2391 [0x0957] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2392 [0x0958] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2393 [0x0959] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2394 [0x095a] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2395 [0x095b] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2396 [0x095c] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2397 [0x095d] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2398 [0x095e] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2399 [0x095f] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2400 [0x0960] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2401 [0x0961] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2402 [0x0962] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2403 [0x0963] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2404 [0x0964] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2405 [0x0965] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 300 [0x012c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 300 [0x012c] component.p2.right = 600 [0x0258] 2406 [0x0966] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2407 [0x0967] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2408 [0x0968] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2409 [0x0969] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2410 [0x096a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2411 [0x096b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2412 [0x096c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2413 [0x096d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2414 [0x096e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2415 [0x096f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2416 [0x0970] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2417 [0x0971] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2418 [0x0972] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2419 [0x0973] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2420 [0x0974] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2421 [0x0975] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2422 [0x0976] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2423 [0x0977] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2424 [0x0978] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2425 [0x0979] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2426 [0x097a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2427 [0x097b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2428 [0x097c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2429 [0x097d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2430 [0x097e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2431 [0x097f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2432 [0x0980] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2433 [0x0981] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2434 [0x0982] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2435 [0x0983] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2436 [0x0984] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2437 [0x0985] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2438 [0x0986] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2439 [0x0987] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2440 [0x0988] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2441 [0x0989] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2442 [0x098a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2443 [0x098b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2444 [0x098c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2445 [0x098d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2446 [0x098e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2447 [0x098f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2448 [0x0990] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2449 [0x0991] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2450 [0x0992] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2451 [0x0993] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2452 [0x0994] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2453 [0x0995] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2454 [0x0996] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2455 [0x0997] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2456 [0x0998] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2457 [0x0999] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2458 [0x099a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2459 [0x099b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2460 [0x099c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2461 [0x099d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2462 [0x099e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2463 [0x099f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2464 [0x09a0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2465 [0x09a1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2466 [0x09a2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2467 [0x09a3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2468 [0x09a4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2469 [0x09a5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2470 [0x09a6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2471 [0x09a7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2472 [0x09a8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2473 [0x09a9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2474 [0x09aa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2475 [0x09ab] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2476 [0x09ac] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2477 [0x09ad] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2478 [0x09ae] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2479 [0x09af] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2480 [0x09b0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2481 [0x09b1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2482 [0x09b2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2483 [0x09b3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2484 [0x09b4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2485 [0x09b5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2486 [0x09b6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2487 [0x09b7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2488 [0x09b8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2489 [0x09b9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2490 [0x09ba] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2491 [0x09bb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2492 [0x09bc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2493 [0x09bd] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2494 [0x09be] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2495 [0x09bf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2496 [0x09c0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2497 [0x09c1] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2498 [0x09c2] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2499 [0x09c3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2500 [0x09c4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2501 [0x09c5] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2502 [0x09c6] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2503 [0x09c7] *skipPasses* = 15 [0x000f / 1 1 1 1 0] breakweight = 30 [0x001e] L.x = 27 [0x001b] L.y = -1000 [0xfc18] 2504 [0x09c8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2505 [0x09c9] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -500 [0xfe0c] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2506 [0x09ca] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2507 [0x09cb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2508 [0x09cc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2509 [0x09cd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2510 [0x09ce] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2511 [0x09cf] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2512 [0x09d0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2513 [0x09d1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2514 [0x09d2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2515 [0x09d3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2516 [0x09d4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2517 [0x09d5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2518 [0x09d6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2519 [0x09d7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2520 [0x09d8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2521 [0x09d9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2522 [0x09da] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2523 [0x09db] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2524 [0x09dc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2525 [0x09dd] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1808 [0x0710] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 2526 [0x09de] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -546 [0xfdde] L.y = -765 [0xfd03] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2527 [0x09df] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2528 [0x09e0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2529 [0x09e1] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] U.x = -557 [0xfdd3] U.y = 1808 [0x0710] UM.x = -557 [0xfdd3] UM.y = 1100 [0x044c] 2530 [0x09e2] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -546 [0xfdde] L.y = -750 [0xfd12] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2531 [0x09e3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2532 [0x09e4] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -850 [0xfcae] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2533 [0x09e5] *skipPasses* = 27 [0x001b / 1 1 0 1 1] breakweight = 30 [0x001e] L.x = -557 [0xfdd3] L.y = -850 [0xfcae] LM.x = -557 [0xfdd3] LM.y = -100 [0xff9c] 2534 [0x09e6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2535 [0x09e7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2536 [0x09e8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2537 [0x09e9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2538 [0x09ea] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2539 [0x09eb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2540 [0x09ec] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2541 [0x09ed] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2542 [0x09ee] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2543 [0x09ef] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2544 [0x09f0] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2545 [0x09f1] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2546 [0x09f2] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2547 [0x09f3] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2548 [0x09f4] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2549 [0x09f5] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2550 [0x09f6] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2551 [0x09f7] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2552 [0x09f8] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2553 [0x09f9] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] 2554 [0x09fa] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2555 [0x09fb] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2556 [0x09fc] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2557 [0x09fd] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2558 [0x09fe] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2559 [0x09ff] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2560 [0x0a00] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2561 [0x0a01] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2562 [0x0a02] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2563 [0x0a03] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2564 [0x0a04] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2565 [0x0a05] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2566 [0x0a06] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2567 [0x0a07] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2568 [0x0a08] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2569 [0x0a09] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2570 [0x0a0a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2571 [0x0a0b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2572 [0x0a0c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L12.x = 826 [0x033a] L12.y = 526 [0x020e] L22.x = 1552 [0x0610] L22.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U12.x = 826 [0x033a] U12.y = 1252 [0x04e4] U22.x = 1552 [0x0610] U22.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2573 [0x0a0d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2574 [0x0a0e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] C11.x = 1200 [0x04b0] C11.y = 900 [0x0384] C12.x = 826 [0x033a] C12.y = 900 [0x0384] C22.x = 1552 [0x0610] C22.y = 900 [0x0384] L11.x = 1200 [0x04b0] L11.y = 526 [0x020e] L13.x = 650 [0x028a] L13.y = 526 [0x020e] L23.x = 1200 [0x04b0] L23.y = 526 [0x020e] L33.x = 1750 [0x06d6] L33.y = 526 [0x020e] U11.x = 1200 [0x04b0] U11.y = 1252 [0x04e4] U13.x = 650 [0x028a] U13.y = 1252 [0x04e4] U23.x = 1200 [0x04b0] U23.y = 1252 [0x04e4] U33.x = 1750 [0x06d6] U33.y = 1252 [0x04e4] C13.x = 650 [0x028a] C13.y = 900 [0x0384] C23.x = 1200 [0x04b0] C23.y = 900 [0x0384] C33.x = 1750 [0x06d6] C33.y = 900 [0x0384] 2575 [0x0a0f] *skipPasses* = 26 [0x001a / 0 1 0 1 1] breakweight = 30 [0x001e] 2576 [0x0a10] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2577 [0x0a11] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2578 [0x0a12] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2579 [0x0a13] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 13 [0x000d] 2580 [0x0a14] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 2581 [0x0a15] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 11 [0x000b] 2582 [0x0a16] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 15 [0x000f] 2583 [0x0a17] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 14 [0x000e] 2584 [0x0a18] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 2 2585 [0x0a19] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 12 [0x000c] 2586 [0x0a1a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2587 [0x0a1b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2588 [0x0a1c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2589 [0x0a1d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2590 [0x0a1e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2591 [0x0a1f] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2592 [0x0a20] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2593 [0x0a21] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2594 [0x0a22] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2595 [0x0a23] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2596 [0x0a24] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2597 [0x0a25] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2598 [0x0a26] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2599 [0x0a27] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2600 [0x0a28] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2601 [0x0a29] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2602 [0x0a2a] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2603 [0x0a2b] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2604 [0x0a2c] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2605 [0x0a2d] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] 2606 [0x0a2e] *skipPasses* = 30 [0x001e / 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 9 2607 [0x0a2f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2608 [0x0a30] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2609 [0x0a31] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2610 [0x0a32] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2611 [0x0a33] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2612 [0x0a34] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2613 [0x0a35] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2614 [0x0a36] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] 2615 [0x0a37] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2616 [0x0a38] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2617 [0x0a39] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2618 [0x0a3a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] 2619 [0x0a3b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 985 [0x03d9] L.x = 985 [0x03d9] L.y = -100 [0xff9c] O.x = 1036 [0x040c] R.x = 1971 [0x07b3] R.y = 1000 [0x03e8] U.x = 985 [0x03d9] U.y = 1500 [0x05dc] 2620 [0x0a3c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 1024 [0x0400] L.x = 1024 [0x0400] L.y = -100 [0xff9c] O.x = 1074 [0x0432] R.x = 2048 [0x0800] R.y = 1000 [0x03e8] U.x = 1024 [0x0400] U.y = 1500 [0x05dc] 2621 [0x0a3d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] H.x = 246 [0x00f6] L.x = 246 [0x00f6] L.y = -100 [0xff9c] O.x = 297 [0x0129] R.x = 493 [0x01ed] R.y = 1000 [0x03e8] U.x = 246 [0x00f6] U.y = 1500 [0x05dc] 2622 [0x0a3e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 286 [0x011e] L.x = 286 [0x011e] L.y = -100 [0xff9c] O.x = 336 [0x0150] R.x = 573 [0x023d] R.y = 1000 [0x03e8] U.x = 286 [0x011e] U.y = 1500 [0x05dc] 2623 [0x0a3f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 164 [0x00a4] L.x = 164 [0x00a4] L.y = -100 [0xff9c] O.x = 214 [0x00d6] R.x = 328 [0x0148] R.y = 1000 [0x03e8] U.x = 164 [0x00a4] U.y = 1500 [0x05dc] 2624 [0x0a40] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 328 [0x0148] L.x = 328 [0x0148] L.y = -100 [0xff9c] O.x = 379 [0x017b] R.x = 657 [0x0291] R.y = 1000 [0x03e8] U.x = 328 [0x0148] U.y = 1500 [0x05dc] 2625 [0x0a41] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 492 [0x01ec] L.x = 492 [0x01ec] L.y = -100 [0xff9c] O.x = 543 [0x021f] R.x = 985 [0x03d9] R.y = 1000 [0x03e8] U.x = 492 [0x01ec] U.y = 1500 [0x05dc] 2626 [0x0a42] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 512 [0x0200] L.x = 512 [0x0200] L.y = -100 [0xff9c] O.x = 562 [0x0232] R.x = 1024 [0x0400] R.y = 1000 [0x03e8] U.x = 512 [0x0200] U.y = 1500 [0x05dc] 2627 [0x0a43] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 246 [0x00f6] L.x = 246 [0x00f6] L.y = -100 [0xff9c] O.x = 297 [0x0129] R.x = 493 [0x01ed] R.y = 1000 [0x03e8] U.x = 246 [0x00f6] U.y = 1500 [0x05dc] 2628 [0x0a44] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 563 [0x0233] L.x = 563 [0x0233] L.y = -100 [0xff9c] O.x = 613 [0x0265] R.x = 1126 [0x0466] R.y = 1000 [0x03e8] U.x = 563 [0x0233] U.y = 1500 [0x05dc] 2629 [0x0a45] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 256 [0x0100] L.x = 256 [0x0100] L.y = -100 [0xff9c] O.x = 306 [0x0132] R.x = 512 [0x0200] R.y = 1000 [0x03e8] U.x = 256 [0x0100] U.y = 1500 [0x05dc] 2630 [0x0a46] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 H.x = 20 [0x0014] L.x = 20 [0x0014] L.y = -100 [0xff9c] O.x = 71 [0x0047] R.x = 41 [0x0029] R.y = 1000 [0x03e8] U.x = 20 [0x0014] U.y = 1500 [0x05dc] 2631 [0x0a47] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2632 [0x0a48] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2633 [0x0a49] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2634 [0x0a4a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2635 [0x0a4b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2636 [0x0a4c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2637 [0x0a4d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2638 [0x0a4e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2639 [0x0a4f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2640 [0x0a50] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2641 [0x0a51] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2642 [0x0a52] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2643 [0x0a53] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2644 [0x0a54] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2645 [0x0a55] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2646 [0x0a56] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2647 [0x0a57] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2648 [0x0a58] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2649 [0x0a59] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2650 [0x0a5a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2651 [0x0a5b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2652 [0x0a5c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2653 [0x0a5d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2654 [0x0a5e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2655 [0x0a5f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2656 [0x0a60] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2657 [0x0a61] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2658 [0x0a62] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2659 [0x0a63] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2660 [0x0a64] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2661 [0x0a65] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2662 [0x0a66] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2663 [0x0a67] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2664 [0x0a68] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2665 [0x0a69] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2666 [0x0a6a] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2667 [0x0a6b] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2668 [0x0a6c] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2669 [0x0a6d] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2670 [0x0a6e] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2671 [0x0a6f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2672 [0x0a70] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2673 [0x0a71] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2674 [0x0a72] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2675 [0x0a73] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2676 [0x0a74] *actualForPseudo* = 2324 [0x0914 / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2677 [0x0a75] *actualForPseudo* = 2334 [0x091e / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2678 [0x0a76] *actualForPseudo* = 2344 [0x0928 / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2679 [0x0a77] *actualForPseudo* = 2354 [0x0932 / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2680 [0x0a78] *actualForPseudo* = 2364 [0x093c / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2681 [0x0a79] *actualForPseudo* = 2374 [0x0946 / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2682 [0x0a7a] *actualForPseudo* = 2384 [0x0950 / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2683 [0x0a7b] *actualForPseudo* = 2394 [0x095a / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2684 [0x0a7c] *actualForPseudo* = 2404 [0x0964 / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] component.p1 = 25 [0x0019] component.p2 = 29 [0x001d] component.p1.top = 2450 [0x0992] component.p1.bottom = -900 [0xfc7c] component.p1.right = 540 [0x021c] component.p2.top = 2450 [0x0992] component.p2.bottom = -900 [0xfc7c] component.p2.left = 540 [0x021c] component.p2.right = 1080 [0x0438] 2685 [0x0a7d] *actualForPseudo* = 3 [0x0003 / ] *skipPasses* = 28 [0x001c / 0 0 1 1 1] breakweight = 30 [0x001e] 2686 [0x0a7e] *actualForPseudo* = 3 [0x0003 / ] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] 2687 [0x0a7f] *skipPasses* = 31 [0x001f / 1 1 1 1 1] breakweight = 30 [0x001e] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/dbg_parsetree.txt000066400000000000000000060667631411153030700270250ustar00rootroot00000000000000PARSE TREE Ztop(100) LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/dbg_ruleprec.txt000066400000000000000000001406311411153030700266310ustar00rootroot00000000000000RULE PRECEDENCE TABLE: substitution PASS: 0 - no rules PASS: 1 (GDL #1) 0 - RULE 1.0, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 10) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia cDia _ ; 1 - RULE 1.6, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 10) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia cDia _ ; 2 - RULE 1.1, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 9) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia _ ; 3 - RULE 1.7, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 9) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia cDia _ ; 4 - RULE 1.2, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 8) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia _ ; 5 - RULE 1.8, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 8) _ / ANY ANY ^ _ cTakesUDia cDia cDia cDia _ ; 6 - RULE 1.14, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 8) _ / ANY ANY ^ _ cnHDia cnHDia cnHDia cnHDia _ ; 7 - RULE 1.19, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 8) _ / ANY ANY ^ _ cnODia cnODia cnODia cnODia _ ; 8 - RULE 1.24, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 8) _ / ANY ANY _ cnRDia cnRDia cnRDia cnRDia _ ; 9 - RULE 1.30, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$8:(3 8) _ / ANY ANY _ cnUDia cnUDia cnUDia cnUDia _ ; endif; 10 - RULE 1.35, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$8:(3 8) _ / ANY ANY _ cnUDia cnUDia cnUDia cnUDia _ ; endif; 11 - RULE 1.3, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 7) _ / ANY ANY ^ _ cTakesUDia cDia cDia _ ; 12 - RULE 1.9, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 7) _ / ANY ANY ^ _ cTakesUDia cDia cDia _ ; 13 - RULE 1.15, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 7) _ / ANY ANY ^ _ cnHDia cnHDia cnHDia _ ; 14 - RULE 1.20, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 7) _ / ANY ANY ^ _ cnODia cnODia cnODia _ ; 15 - RULE 1.25, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 7) _ / ANY ANY _ cnRDia cnRDia cnRDia _ ; 16 - RULE 1.31, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$7:(3 7) _ / ANY ANY _ cnUDia cnUDia cnUDia _ ; endif; 17 - RULE 1.36, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$7:(3 7) _ / ANY ANY _ cnUDia cnUDia cnUDia _ ; endif; 18 - RULE 1.42, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / g__l g035F _ g035F g__l ; endif; 19 - RULE 1.46, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / g__l g035F _ g035F g_l ; endif; 20 - RULE 1.50, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / g_l g035F _ g035F g_l ; endif; 21 - RULE 1.54, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / g__o g035F _ g035F g__u ; endif; 22 - RULE 1.58, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / g__o g035F _ g035F g_u ; endif; 23 - RULE 1.62, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / g_o g035F _ g035F g_u ; endif; 24 - RULE 1.4, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 6) _ / ANY ANY ^ _ cTakesUDia cDia _ ; 25 - RULE 1.10, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 6) _ / ANY ANY ^ _ cTakesUDia cDia _ ; 26 - RULE 1.16, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 6) _ / ANY ANY ^ _ cnHDia cnHDia _ ; 27 - RULE 1.21, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 6) _ / ANY ANY ^ _ cnODia cnODia _ ; 28 - RULE 1.26, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 6) _ / ANY ANY _ cnRDia cnRDia _ ; 29 - RULE 1.32, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$6:(3 6) _ / ANY ANY _ cnUDia cnUDia _ ; endif; 30 - RULE 1.37, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$6:(3 6) _ / ANY ANY _ cnUDia cnUDia _ ; endif; 31 - RULE 1.43, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / g__l g035F _ g__l ; endif; 32 - RULE 1.44, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / ANY g__l _ g035F g__l ; endif; 33 - RULE 1.47, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / g__l g035F _ g_l ; endif; 34 - RULE 1.48, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / ANY g__l _ g035F g_l ; endif; 35 - RULE 1.51, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / g_l g035F _ g_l ; endif; 36 - RULE 1.52, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / ANY g_l _ g035F g_l ; endif; 37 - RULE 1.55, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / g__o g035F _ g__u ; endif; 38 - RULE 1.56, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / ANY g__o _ g035F g__u ; endif; 39 - RULE 1.59, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / g__o g035F _ g_u ; endif; 40 - RULE 1.60, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / ANY g__o _ g035F g_u ; endif; 41 - RULE 1.63, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / g_o g035F _ g_u ; endif; 42 - RULE 1.64, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / ANY g_o _ g035F g_u ; endif; 43 - RULE 1.85, CharisRules.gdh(436): if (slant_italic == 1) g_f g_f cffLigC3 > g_f_slant_italic g_f_slant_italic cffLigC3_slantItalic / ANY ANY _ _ _ cDia ; endif; 44 - RULE 1.91, CharisRules.gdh(447): if (!(slant_italic == 1)) g_f g_f cffLigC3 > @3 @4 @5 / ANY ANY _ _ _ cDia ; endif; 45 - RULE 1.5, CharisRules.gdh(264): gFE20 gFE21 > g0361:(3 5) _ / ANY ANY ^ _ cTakesUDia _ ; 46 - RULE 1.11, CharisRules.gdh(265): gFE22 gFE23 > g0360:(3 5) _ / ANY ANY ^ _ cTakesUDia _ ; 47 - RULE 1.17, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 5) _ / ANY ANY ^ _ cnHDia _ ; 48 - RULE 1.22, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 5) _ / ANY ANY ^ _ cnODia _ ; 49 - RULE 1.27, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 5) _ / ANY ANY _ cnRDia _ ; 50 - RULE 1.33, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$5:(3 5) _ / ANY ANY _ cnUDia _ ; endif; 51 - RULE 1.38, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$5:(3 5) _ / ANY ANY _ cnUDia _ ; endif; 52 - RULE 1.45, CharisRules.gdh(304): if (bridging_diac) g0308 > g0308_uU / ANY g__l _ g__l ; endif; 53 - RULE 1.49, CharisRules.gdh(305): if (bridging_diac) g0308 > g0308_uL / ANY g__l _ g_l ; endif; 54 - RULE 1.53, CharisRules.gdh(306): if (bridging_diac) g0308 > g0308_lL / ANY g_l _ g_l ; endif; 55 - RULE 1.57, CharisRules.gdh(309): if (bridging_diac) g0311 > g0311_uU / ANY g__o _ g__u ; endif; 56 - RULE 1.61, CharisRules.gdh(310): if (bridging_diac) g0311 > g0311_uL / ANY g__o _ g_u ; endif; 57 - RULE 1.65, CharisRules.gdh(311): if (bridging_diac) g0311 > g0311_lL / ANY g_o _ g_u ; endif; 58 - RULE 1.83, CharisRules.gdh(433): if (slant_italic == 1) g_f cfLigC2 > g_f_slant_italic cfLigC2_slantItalic / ANY ANY _ _ cDia ; endif; 59 - RULE 1.86, CharisRules.gdh(437): if (slant_italic == 1) g_f g_f cffLigC3 > _ _ cffLig_slantItalic:(3 4 5) { comp.f1.ref = @3; comp.f2.ref = @4; comp.f3.ref = @5; } / ANY ANY _ _ _ ; endif; 60 - RULE 1.89, CharisRules.gdh(444): if (!(slant_italic == 1)) g_f cfLigC2 > @3 @4 / ANY ANY _ _ cDia ; endif; 61 - RULE 1.92, CharisRules.gdh(448): if (!(slant_italic == 1)) g_f g_f cffLigC3 > _ _ cffLig:(3 4 5) { comp.f1.ref = @3; comp.f2.ref = @4; comp.f3.ref = @5; } / ANY ANY _ _ _ ; endif; 62 - RULE 1.150, CharisPitches.gdh(602): if (pitch9 < 2) g_space > g_pitchSpace / ANY *GC8* _ *GC9* ; endif; 63 - RULE 1.18, CharisRules.gdh(276): cCedillaBase g0327 > cCedillaComposite:(3 4) _ / ANY ANY ^ _ _ ; 64 - RULE 1.23, CharisRules.gdh(280): cOgonekBase g0328 > cOgonekComposite:(3 4) _ / ANY ANY ^ _ _ ; 65 - RULE 1.28, CharisRules.gdh(283): cHornBase g031B > cHornComposite:(3 4) _ / ANY ANY _ _ ; 66 - RULE 1.34, CharisRules.gdh(294): if (viet == 1) g0302 cDiacComb > c_g0302DiacComb$4:(3 4) _ / ANY ANY _ _ ; endif; 67 - RULE 1.39, CharisRules.gdh(295): if (viet == 1) g0306 cDiacComb > c_g0306DiacComb$4:(3 4) _ / ANY ANY _ _ ; endif; 68 - RULE 1.84, CharisRules.gdh(434): if (slant_italic == 1) g_f cfLigC2 > _ cfLig_slantItalic:(3 4) { comp.f1.ref = @3; comp.f2.ref = @4; } / ANY ANY _ _ ; endif; 69 - RULE 1.90, CharisRules.gdh(445): if (!(slant_italic == 1)) g_f cfLigC2 > _ cfLig:(3 4) { comp.f1.ref = @3; comp.f2.ref = @4; } / ANY ANY _ _ ; endif; 70 - RULE 1.133, CharisPitches.gdh(237): if (!(supernum) && hide_tone_staff) cRightTone1 cRightTone > cRightTone1Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 71 - RULE 1.134, CharisPitches.gdh(238): if (!(supernum) && hide_tone_staff) cRightTone2 cRightTone > cRightTone2Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 72 - RULE 1.135, CharisPitches.gdh(239): if (!(supernum) && hide_tone_staff) cRightTone3 cRightTone > cRightTone3Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 73 - RULE 1.136, CharisPitches.gdh(240): if (!(supernum) && hide_tone_staff) cRightTone4 cRightTone > cRightTone4Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 74 - RULE 1.137, CharisPitches.gdh(241): if (!(supernum) && hide_tone_staff) cRightTone5 cRightTone > cRightTone5Contour$4 cRightStaff_no$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 75 - RULE 1.138, CharisPitches.gdh(245): if (!(supernum) && !(hide_tone_staff)) cRightTone1 cRightTone > cRightTone1Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 76 - RULE 1.139, CharisPitches.gdh(246): if (!(supernum) && !(hide_tone_staff)) cRightTone2 cRightTone > cRightTone2Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 77 - RULE 1.140, CharisPitches.gdh(247): if (!(supernum) && !(hide_tone_staff)) cRightTone3 cRightTone > cRightTone3Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 78 - RULE 1.141, CharisPitches.gdh(248): if (!(supernum) && !(hide_tone_staff)) cRightTone4 cRightTone > cRightTone4Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 79 - RULE 1.142, CharisPitches.gdh(249): if (!(supernum) && !(hide_tone_staff)) cRightTone5 cRightTone > cRightTone5Contour$4 cRightStaff$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; endif; 80 - RULE 1.143, CharisPitches.gdh(255): if (!(supernum) && hide_tone_staff) cLeftTone > cLeftStaff_no$3 / ANY ANY ^ _ cLeftTone ; endif; 81 - RULE 1.144, CharisPitches.gdh(258): if (!(supernum) && !(hide_tone_staff)) cLeftTone > cLeftStaff$3 / ANY ANY ^ _ cLeftTone ; endif; 82 - RULE 1.145, CharisPitches.gdh(263): cLeftContourOrStaff1 cLeftTone > @3 cLeftTone1Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; 83 - RULE 1.146, CharisPitches.gdh(264): cLeftContourOrStaff2 cLeftTone > @3 cLeftTone2Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; 84 - RULE 1.147, CharisPitches.gdh(265): cLeftContourOrStaff3 cLeftTone > @3 cLeftTone3Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; 85 - RULE 1.148, CharisPitches.gdh(266): cLeftContourOrStaff4 cLeftTone > @3 cLeftTone4Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; 86 - RULE 1.149, CharisPitches.gdh(267): cLeftContourOrStaff5 cLeftTone > @3 cLeftTone5Contour$4 { user1 = (((@3.tone == @4.tone) && (@3.user1 != 2))) ? 1 : 2; } / ANY ANY _ ^ _ ; 87 - RULE 1.151, CharisPitches.gdh(605): if (pitch9 < 2) g_pitchSpace > @3 / ANY ANY _ cno_LinesXXX ; endif; 88 - RULE 1.152, CharisPitches.gdh(607): if (pitch9 < 2) *GC10* > g_noPitchSpace / ANY ^ g_pitchSpace _ ; endif; 89 - RULE 1.154, CharisPitches.gdh(617): if (pitch9 < 2) *GC11* c9PitchX > @3 { user1 = 1; } c9Pitch1X / ANY ANY _ ^ _ ; endif; 90 - RULE 1.155, CharisPitches.gdh(618): if (pitch9 < 2) *GC12* c9PitchX > @3 { user1 = 1; } c9Pitch2X / ANY ANY _ ^ _ ; endif; 91 - RULE 1.156, CharisPitches.gdh(619): if (pitch9 < 2) *GC13* c9PitchX > @3 { user1 = 1; } c9Pitch3X / ANY ANY _ ^ _ ; endif; 92 - RULE 1.157, CharisPitches.gdh(620): if (pitch9 < 2) *GC14* c9PitchX > @3 { user1 = 1; } c9Pitch4X / ANY ANY _ ^ _ ; endif; 93 - RULE 1.158, CharisPitches.gdh(621): if (pitch9 < 2) *GC15* c9PitchX > @3 { user1 = 1; } c9Pitch5X / ANY ANY _ ^ _ ; endif; 94 - RULE 1.159, CharisPitches.gdh(622): if (pitch9 < 2) *GC16* c9PitchX > @3 { user1 = 1; } c9Pitch6X / ANY ANY _ ^ _ ; endif; 95 - RULE 1.160, CharisPitches.gdh(623): if (pitch9 < 2) *GC17* c9PitchX > @3 { user1 = 1; } c9Pitch7X / ANY ANY _ ^ _ ; endif; 96 - RULE 1.161, CharisPitches.gdh(624): if (pitch9 < 2) *GC18* c9PitchX > @3 { user1 = 1; } c9Pitch8X / ANY ANY _ ^ _ ; endif; 97 - RULE 1.162, CharisPitches.gdh(625): if (pitch9 < 2) *GC19* c9PitchX > @3 { user1 = 1; } c9Pitch9X / ANY ANY _ ^ _ ; endif; 98 - RULE 1.12, CharisRules.gdh(269): if (chinantec_tone == 1) cno_ChinantecTn > cChinantecTn / ANY ANY _ ; endif; 99 - RULE 1.13, CharisRules.gdh(271): if (!(chinantec_tone == 1)) cChinantecTn > cno_ChinantecTn / ANY ANY _ ; endif; 100 - RULE 1.29, CharisRules.gdh(292): if (viet == 1) _ c_aStack_noLit > g_a_sng_story:4 c_diacComb_vN / ANY ANY _ _{ literacy == 1 } ; endif; 101 - RULE 1.40, CharisRules.gdh(296): if (viet == 1) cno_VN > cVN / ANY ANY _ ; endif; 102 - RULE 1.41, CharisRules.gdh(298): if (!(viet == 1)) cVN > cno_VN / ANY ANY _ ; endif; 103 - RULE 1.66, CharisRules.gdh(350): if (eng == 0) *GC0* > g__eng / ANY ANY _ ; endif; 104 - RULE 1.67, CharisRules.gdh(354): if (eng == 1) *GC1* > cBaselineHook / ANY ANY _ ; endif; 105 - RULE 1.68, CharisRules.gdh(358): if (eng == 2) *GC2* > g__eng_u_c_style / ANY ANY _ ; endif; 106 - RULE 1.69, CharisRules.gdh(362): if (eng == 3) *GC3* > cKom / ANY ANY _ ; endif; 107 - RULE 1.70, CharisRules.gdh(368): if (ramshorn == 0) *GC4* > g0264 / ANY ANY _ ; endif; 108 - RULE 1.71, CharisRules.gdh(372): if (ramshorn == 1) *GC5* > g0264_lrgBowl / ANY ANY _ ; endif; 109 - RULE 1.72, CharisRules.gdh(376): if (ramshorn == 2) *GC6* > g0264_gammaStyle / ANY ANY _ ; endif; 110 - RULE 1.73, CharisRules.gdh(382): if (mongol_e == 1) cno_MongolStyle > cMongolStyle / ANY ANY _ ; endif; 111 - RULE 1.74, CharisRules.gdh(384): if (!(mongol_e == 1)) cMongolStyle > cno_MongolStyle / ANY ANY _ ; endif; 112 - RULE 1.75, CharisRules.gdh(398): if (short_breve == 1) cno_CyShortMrkAlt > cCyShortMrkAlt / ANY ANY _ ; endif; 113 - RULE 1.76, CharisRules.gdh(400): if (!(short_breve == 1)) cCyShortMrkAlt > cno_CyShortMrkAlt / ANY ANY _ ; endif; 114 - RULE 1.77, CharisRules.gdh(406): if (invis == 1) cno_ShowInv > cShowInv / ANY ANY _ ; endif; 115 - RULE 1.78, CharisRules.gdh(420): if (literacy == 1) cno_SngBowl > cSngBowl / ANY ANY _ ; endif; 116 - RULE 1.79, CharisRules.gdh(421): if (literacy == 1) cno_SngStory > cSngStory / ANY ANY _ ; endif; 117 - RULE 1.80, CharisRules.gdh(422): if (literacy == 1) g01E5 > g01E5_barBowl_sngBowl / ANY ANY _ ; endif; 118 - RULE 1.81, CharisRules.gdh(424): if (!(literacy == 1)) cSngBowl > cno_SngBowl / ANY ANY _ ; endif; 119 - RULE 1.82, CharisRules.gdh(425): if (!(literacy == 1)) cSngStory > cno_SngStory / ANY ANY _ ; endif; 120 - RULE 1.87, CharisRules.gdh(439): if (slant_italic == 1) cno_SlantItalic > cSlantItalic / ANY ANY _ ; endif; 121 - RULE 1.88, CharisRules.gdh(440): if (slant_italic == 1) cno_2StorySlantItalic > c2StorySlantItalic / ANY ANY _ ; endif; 122 - RULE 1.93, CharisRules.gdh(451): if (!(slant_italic == 1)) cSlantItalic > cno_SlantItalic / ANY ANY _ ; endif; 123 - RULE 1.94, CharisRules.gdh(452): if (!(slant_italic == 1)) c2StorySlantItalic > cno_2StorySlantItalic / ANY ANY _ ; endif; 124 - RULE 1.95, CharisRules.gdh(459): if (barred_bowl == 1) cno_BarBowl > cBarBowl / ANY ANY _ ; endif; 125 - RULE 1.96, CharisRules.gdh(463): if (!(barred_bowl == 1)) cBarBowl > cno_BarBowl / ANY ANY _ ; endif; 126 - RULE 1.97, CharisRules.gdh(468): if (ltnjstroke == 1) cno_TopSerifJStroke > cTopSerifJStroke / ANY ANY _ ; endif; 127 - RULE 1.98, CharisRules.gdh(470): if (!(ltnjstroke == 1)) cTopSerifJStroke > cno_TopSerifJStroke / ANY ANY _ ; endif; 128 - RULE 1.99, CharisRules.gdh(474): if (open_o == 1) cno_TopSerifOpenO > cTopSerifOpenO / ANY ANY _ ; endif; 129 - RULE 1.100, CharisRules.gdh(476): if (!(open_o == 1)) cTopSerifOpenO > cno_TopSerifOpenO / ANY ANY _ ; endif; 130 - RULE 1.101, CharisRules.gdh(480): if (v_hook == 1) cno_StraightLft > cStraightLft / ANY ANY _ ; endif; 131 - RULE 1.102, CharisRules.gdh(482): if (!(v_hook == 1)) cStraightLft > cno_StraightLft / ANY ANY _ ; endif; 132 - RULE 1.103, CharisRules.gdh(486): if (y_hook == 1) g01B3 > g01B3_rtHook / ANY ANY _ ; endif; 133 - RULE 1.104, CharisRules.gdh(488): if (!(y_hook == 1)) g01B3_rtHook > g01B3 / ANY ANY _ ; endif; 134 - RULE 1.105, CharisRules.gdh(492): if (n_hook == 1) g019D > g019D_lCStyle / ANY ANY _ ; endif; 135 - RULE 1.106, CharisRules.gdh(494): if (!(n_hook == 1)) g019D_lCStyle > g019D / ANY ANY _ ; endif; 136 - RULE 1.107, CharisRules.gdh(498): if (ezh_curl == 1) g0293 > g0293_lrgBowl / ANY ANY _ ; endif; 137 - RULE 1.108, CharisRules.gdh(500): if (!(ezh_curl == 1)) g0293_lrgBowl > g0293 / ANY ANY _ ; endif; 138 - RULE 1.109, CharisRules.gdh(504): if (t_hook == 1) g01AC > g01AC_rtHook / ANY ANY _ ; endif; 139 - RULE 1.110, CharisRules.gdh(506): if (!(t_hook == 1)) g01AC_rtHook > g01AC / ANY ANY _ ; endif; 140 - RULE 1.111, CharisRules.gdh(510): if (h_stroke == 1) cno_VertStrk > cVertStrk / ANY ANY _ ; endif; 141 - RULE 1.112, CharisRules.gdh(512): if (!(h_stroke == 1)) cVertStrk > cno_VertStrk / ANY ANY _ ; endif; 142 - RULE 1.113, CharisRules.gdh(516): if (r_tail == 1) g2C64 > g2C64_lCStyle / ANY ANY _ ; endif; 143 - RULE 1.114, CharisRules.gdh(518): if (!(r_tail == 1)) g2C64_lCStyle > g2C64 / ANY ANY _ ; endif; 144 - RULE 1.115, CharisRules.gdh(522): if (p_hook == 1) cno_BowlHook > cBowlHook / ANY ANY _ ; endif; 145 - RULE 1.116, CharisRules.gdh(524): if (!(p_hook == 1)) cBowlHook > cno_BowlHook / ANY ANY _ ; endif; 146 - RULE 1.117, CharisRules.gdh(528): if (rom == 1) cno_CommaStyle > cCommaStyle / ANY ANY _ ; endif; 147 - RULE 1.118, CharisRules.gdh(530): if (!(rom == 1)) cCommaStyle > cno_CommaStyle / ANY ANY _ ; endif; 148 - RULE 1.119, CharisRules.gdh(534): if (ezh == 1) cno_RevSigmaStyle > cRevSigmaStyle / ANY ANY _ ; endif; 149 - RULE 1.120, CharisRules.gdh(536): if (!(ezh == 1)) cRevSigmaStyle > cno_RevSigmaStyle / ANY ANY _ ; endif; 150 - RULE 1.121, CharisRules.gdh(542): if (apostrophe == 1) cno_Lrg > cLrg / ANY ANY _ ; endif; 151 - RULE 1.122, CharisRules.gdh(544): if (!(apostrophe == 1)) cLrg > cno_Lrg / ANY ANY _ ; endif; 152 - RULE 1.123, CharisRules.gdh(548): if (ou == 1) cno_OpenTop > cOpenTop / ANY ANY _ ; endif; 153 - RULE 1.124, CharisRules.gdh(550): if (!(ou == 1)) cOpenTop > cno_OpenTop / ANY ANY _ ; endif; 154 - RULE 1.125, CharisRules.gdh(554): if (emptyset == 1) cno_SlashZero > cSlashZero / ANY ANY _ ; endif; 155 - RULE 1.126, CharisRules.gdh(556): if (!(emptyset == 1)) cSlashZero > cno_SlashZero / ANY ANY _ ; endif; 156 - RULE 1.127, CharisRules.gdh(560): if (modlowcolon == 1) gF1E9 > gF1E9_wide / ANY ANY _ ; endif; 157 - RULE 1.128, CharisRules.gdh(562): if (!(modlowcolon == 1)) gF1E9_wide > gF1E9 / ANY ANY _ ; endif; 158 - RULE 1.129, CharisRules.gdh(575): if (cyrillic_shha == 1) g04BB > g04BB_uCStyle / ANY ANY _ ; endif; 159 - RULE 1.130, CharisRules.gdh(577): if (!(cyrillic_shha == 1)) g04BB_uCStyle > g04BB / ANY ANY _ ; endif; 160 - RULE 1.131, CharisPitches.gdh(219): if (supernum) cRightTone > cSupNum / ANY ANY _ ; endif; 161 - RULE 1.132, CharisPitches.gdh(220): if (supernum) cLeftTone > cSupNum / ANY ANY _ ; endif; 162 - RULE 1.153, CharisPitches.gdh(609): if (pitch9 < 2) g_pitchSpace > g_noPitchSpace / ANY ANY _ ; endif; PASS: 2 (GDL #2) 0 - RULE 2.0, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cnUDia cnUDia cUDia ; 1 - RULE 2.5, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cnUDia cnUDia cUDia ; 2 - RULE 2.1, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cnUDia cUDia ; 3 - RULE 2.6, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cnUDia cUDia ; 4 - RULE 2.20, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11 g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; 5 - RULE 2.24, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22 g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; 6 - RULE 2.28, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33 g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; 7 - RULE 2.32, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44 g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; 8 - RULE 2.36, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55 g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; 9 - RULE 2.40, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66 g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; 10 - RULE 2.44, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77 g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; 11 - RULE 2.48, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88 g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; 12 - RULE 2.52, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99 g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; 13 - RULE 2.2, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cnUDia cUDia ; 14 - RULE 2.7, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cnUDia cUDia ; 15 - RULE 2.21, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; 16 - RULE 2.25, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; 17 - RULE 2.29, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; 18 - RULE 2.33, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; 19 - RULE 2.37, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; 20 - RULE 2.41, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; 21 - RULE 2.45, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; 22 - RULE 2.49, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; 23 - RULE 2.53, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; 24 - RULE 2.3, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cnUDia cUDia ; 25 - RULE 2.8, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cnUDia cUDia ; 26 - RULE 2.22, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11 g9Pitch11{ user1 == 0 } ; endif; 27 - RULE 2.26, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22 g9Pitch22{ user1 == 0 } ; endif; 28 - RULE 2.30, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33 g9Pitch33{ user1 == 0 } ; endif; 29 - RULE 2.34, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44 g9Pitch44{ user1 == 0 } ; endif; 30 - RULE 2.38, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55 g9Pitch55{ user1 == 0 } ; endif; 31 - RULE 2.42, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66 g9Pitch66{ user1 == 0 } ; endif; 32 - RULE 2.46, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77 g9Pitch77{ user1 == 0 } ; endif; 33 - RULE 2.50, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88 g9Pitch88{ user1 == 0 } ; endif; 34 - RULE 2.54, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99 g9Pitch99{ user1 == 0 } ; endif; 35 - RULE 2.4, CharisRules.gdh(588): cno_Dotless > cDotless / ANY _ cUDia ; 36 - RULE 2.9, CharisRules.gdh(590): cSpecialDotted _ > g_i_dotless cSpecialDottedDia$2:2 / ANY _ _ cUDia ; 37 - RULE 2.12, CharisRules.gdh(618): cno_Sup > cSup / *GC7* _ ; 38 - RULE 2.15, CharisPitches.gdh(286): cLeftContourOrStaff { user2 = 1; } / ANY _{ user2 == 0 } cLeftContour{ user2 == 0 } ; 39 - RULE 2.16, CharisPitches.gdh(289): cLeftContour { user2 = 2; } / ^ cLeftContourOrStaff{ user2 == 1 } _{ user1 == 1 } ; 40 - RULE 2.17, CharisPitches.gdh(294): cLeftStaff _ > @2 cLeftToneHoriz$2:2 / ANY _ _ cLeftContour{ (user2 == 2) && (user1 == 1) } ; 41 - RULE 2.18, CharisPitches.gdh(296): cLeftStaff_no _ > @2 cLeftToneHoriz$2:2 / ANY _ _ cLeftContour{ (user2 == 2) && (user1 == 1) } ; 42 - RULE 2.23, CharisPitches.gdh(644): if (pitch9 < 2) g9Pitch1 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch11{ user1 == 0 } ; endif; 43 - RULE 2.27, CharisPitches.gdh(645): if (pitch9 < 2) g9Pitch2 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch22{ user1 == 0 } ; endif; 44 - RULE 2.31, CharisPitches.gdh(646): if (pitch9 < 2) g9Pitch3 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch33{ user1 == 0 } ; endif; 45 - RULE 2.35, CharisPitches.gdh(647): if (pitch9 < 2) g9Pitch4 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch44{ user1 == 0 } ; endif; 46 - RULE 2.39, CharisPitches.gdh(648): if (pitch9 < 2) g9Pitch5 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch55{ user1 == 0 } ; endif; 47 - RULE 2.43, CharisPitches.gdh(649): if (pitch9 < 2) g9Pitch6 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch66{ user1 == 0 } ; endif; 48 - RULE 2.47, CharisPitches.gdh(650): if (pitch9 < 2) g9Pitch7 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch77{ user1 == 0 } ; endif; 49 - RULE 2.51, CharisPitches.gdh(651): if (pitch9 < 2) g9Pitch8 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch88{ user1 == 0 } ; endif; 50 - RULE 2.55, CharisPitches.gdh(652): if (pitch9 < 2) g9Pitch9 > @2 { user2 = 1; } / ANY ^ _{ user2 == 0 } g9Pitch99{ user1 == 0 } ; endif; 51 - RULE 2.56, CharisPitches.gdh(655): if (pitch9 < 2) c9PitchX c9PitchXX > _ @3:(2 3) { comp.p1.ref = @2; comp.p2.ref = @3; } / ANY _{ user2 != 1 } ^ _ ; endif; 52 - RULE 2.10, CharisRules.gdh(595): if (ogonek == 1) cno_RetroHookStyle > cRetroHookStyle / ANY _ ; endif; 53 - RULE 2.11, CharisRules.gdh(597): if (!(ogonek == 1)) cRetroHookStyle > cno_RetroHookStyle / ANY _ ; endif; 54 - RULE 2.13, CharisPitches.gdh(276): _ cRightStaff > cRightToneHoriz$3:3 @3 / ANY _ _{ user1 == 1 } ; 55 - RULE 2.14, CharisPitches.gdh(277): _ cRightStaff_no > cRightToneHoriz$3:3 @3 / ANY _ _{ user1 == 1 } ; 56 - RULE 2.19, CharisPitches.gdh(639): if (pitch9 < 2) c9PitchX > @2 { user2 = 1; } / ANY ^ _{ (user2 == 0) && (user1 == 0) } ; endif; 57 - RULE 2.57, CharisPitches.gdh(662): if ((pitch9 == 1) || (pitch9 == 3)) cno_LinesXXX > cLinesXXX / ANY _ ; endif; TABLE: positioning PASS: 0 - no rules PASS: 3 (GDL #1) 0 - RULE 3.2, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; 1 - RULE 3.7, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; 2 - RULE 3.12, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia cnODia cnODia _{ user1 == 0 } ; endif; 3 - RULE 3.17, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; 4 - RULE 3.22, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; 5 - RULE 3.27, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; 6 - RULE 3.32, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; 7 - RULE 3.37, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia cnODia cnODia _{ user1 == 0 } ; endif; 8 - RULE 3.42, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; 9 - RULE 3.47, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; 10 - RULE 3.3, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; 11 - RULE 3.8, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; 12 - RULE 3.13, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia cnODia _{ user1 == 0 } ; endif; 13 - RULE 3.18, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; 14 - RULE 3.23, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; 15 - RULE 3.28, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia cnHDia _{ user1 == 0 } ; endif; 16 - RULE 3.33, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia cnLDia _{ user1 == 0 } ; endif; 17 - RULE 3.38, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia cnODia _{ user1 == 0 } ; endif; 18 - RULE 3.43, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia cnRDia _{ user1 == 0 } ; endif; 19 - RULE 3.48, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia cnUDia _{ user1 == 0 } ; endif; 20 - RULE 3.4, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia cnHDia _{ user1 == 0 } ; endif; 21 - RULE 3.9, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia cnLDia _{ user1 == 0 } ; endif; 22 - RULE 3.14, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia cnODia _{ user1 == 0 } ; endif; 23 - RULE 3.19, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia cnRDia _{ user1 == 0 } ; endif; 24 - RULE 3.24, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia cnUDia _{ user1 == 0 } ; endif; 25 - RULE 3.29, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia cnHDia _{ user1 == 0 } ; endif; 26 - RULE 3.34, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia cnLDia _{ user1 == 0 } ; endif; 27 - RULE 3.39, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia cnODia _{ user1 == 0 } ; endif; 28 - RULE 3.44, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia cnRDia _{ user1 == 0 } ; endif; 29 - RULE 3.49, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia cnUDia _{ user1 == 0 } ; endif; 30 - RULE 3.5, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ cnHDia _{ user1 == 0 } ; endif; 31 - RULE 3.10, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ cnLDia _{ user1 == 0 } ; endif; 32 - RULE 3.15, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ cnODia _{ user1 == 0 } ; endif; 33 - RULE 3.20, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ cnRDia _{ user1 == 0 } ; endif; 34 - RULE 3.25, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ cnUDia _{ user1 == 0 } ; endif; 35 - RULE 3.30, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ cnHDia _{ user1 == 0 } ; endif; 36 - RULE 3.35, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ cnLDia _{ user1 == 0 } ; endif; 37 - RULE 3.40, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ cnODia _{ user1 == 0 } ; endif; 38 - RULE 3.45, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ cnRDia _{ user1 == 0 } ; endif; 39 - RULE 3.50, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ cnUDia _{ user1 == 0 } ; endif; 40 - RULE 3.0, CharisPitches.gdh(308): cRightContour { user3 = bb.left; user4 = bb.right; } cRightContourOrStaff { attach {to = @1; at = TL; with = TML; } insert = 1; } / _ ^ _ ; 41 - RULE 3.1, CharisPitches.gdh(312): cLeftContourOrStaff cLeftContour { attach {to = @1; at = TL; with = TML; } insert = 1; } / _ ^ _ ; 42 - RULE 3.6, CharisRules.gdh(639): if (select_diac) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 43 - RULE 3.11, CharisRules.gdh(640): if (select_diac) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 44 - RULE 3.16, CharisRules.gdh(641): if (select_diac) cTakesODia cODia { attach {to = @1; at = O; with = OM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 45 - RULE 3.21, CharisRules.gdh(642): if (select_diac) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 46 - RULE 3.26, CharisRules.gdh(643): if (select_diac) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } insert = 1; user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 47 - RULE 3.31, CharisRules.gdh(645): if (!(select_diac)) cTakesHDia cHDia { attach {to = @1; at = H; with = HM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 48 - RULE 3.36, CharisRules.gdh(646): if (!(select_diac)) cTakesLDia cLDia { attach {to = @1; at = L; with = LM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 49 - RULE 3.41, CharisRules.gdh(647): if (!(select_diac)) cTakesODia cODia { attach {to = @1; at = O; with = OM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 50 - RULE 3.46, CharisRules.gdh(648): if (!(select_diac)) cTakesRDia cRDia { attach {to = @1; at = R; with = RM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 51 - RULE 3.51, CharisRules.gdh(649): if (!(select_diac)) cTakesUDia cUDia { attach {to = @1; at = U; with = UM; } user1 = 1; } / ^ _ _{ user1 == 0 } ; endif; 52 - RULE 3.52, CharisRules.gdh(655): cBridgeDiac { advance.x = 0; } ; PASS: 4 (GDL #2) 0 - RULE 4.0, CharisRules.gdh(668): cUDblDia { shift.y = ((@1.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesUDia cDia cDia cDia cDia cDia _ cTakesUDia ; 1 - RULE 4.1, CharisRules.gdh(668): cUDblDia { shift.y = ((@2.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesUDia cDia cDia cDia cDia _ cTakesUDia ; 2 - RULE 4.6, CharisRules.gdh(672): cUDblDia { shift.y = (@1.bb.top - @7.bb.bottom) + 205; insert = 1; } / cTakesUDia cDia cDia cDia cDia cDia _ ; 3 - RULE 4.12, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY cDia cDia cDia cDia cDia _ cTakesUDia ; 4 - RULE 4.2, CharisRules.gdh(668): cUDblDia { shift.y = ((@3.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesUDia cDia cDia cDia _ cTakesUDia ; 5 - RULE 4.7, CharisRules.gdh(672): cUDblDia { shift.y = (@2.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY cTakesUDia cDia cDia cDia cDia _ ; 6 - RULE 4.13, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY cDia cDia cDia cDia _ cTakesUDia ; 7 - RULE 4.3, CharisRules.gdh(668): cUDblDia { shift.y = ((@4.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesUDia cDia cDia _ cTakesUDia ; 8 - RULE 4.8, CharisRules.gdh(672): cUDblDia { shift.y = (@3.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY cTakesUDia cDia cDia cDia _ ; 9 - RULE 4.14, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY cDia cDia cDia _ cTakesUDia ; 10 - RULE 4.4, CharisRules.gdh(668): cUDblDia { shift.y = ((@5.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesUDia cDia _ cTakesUDia ; 11 - RULE 4.9, CharisRules.gdh(672): cUDblDia { shift.y = (@4.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY cTakesUDia cDia cDia _ ; 12 - RULE 4.15, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY cDia cDia _ cTakesUDia ; 13 - RULE 4.5, CharisRules.gdh(668): cUDblDia { shift.y = ((@6.bb.top max @8.bb.top) - @7.bb.bottom) + 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesUDia _ cTakesUDia ; 14 - RULE 4.10, CharisRules.gdh(672): cUDblDia { shift.y = (@5.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY cTakesUDia cDia _ ; 15 - RULE 4.16, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY cDia _ cTakesUDia ; 16 - RULE 4.11, CharisRules.gdh(672): cUDblDia { shift.y = (@6.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY cTakesUDia _ ; 17 - RULE 4.17, CharisRules.gdh(674): cUDblDia { shift.y = (@8.bb.top - @7.bb.bottom) + 205; insert = 1; } / ANY ANY ANY ANY ANY ANY _ cTakesUDia ; PASS: 5 (GDL #3) 0 - RULE 5.0, CharisRules.gdh(684): g035F { shift.y = ((@1.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ cTakesLDia ; 1 - RULE 5.6, CharisRules.gdh(687): cLDblDia { shift.y = ((@1.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @1.bb.width) / 2; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ cTakesLDia ; 2 - RULE 5.1, CharisRules.gdh(684): g035F { shift.y = ((@2.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ cTakesLDia ; 3 - RULE 5.7, CharisRules.gdh(687): cLDblDia { shift.y = ((@2.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @2.bb.width) / 2; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ cTakesLDia ; 4 - RULE 5.12, CharisRules.gdh(690): cLDblDia { shift.y = (@1.bb.bottom - @7.bb.top) - 205; insert = 1; } / cTakesLDia cDia cDia cDia cDia cDia _ ; 5 - RULE 5.18, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY cDia cDia cDia cDia cDia _ cTakesLDia ; 6 - RULE 5.2, CharisRules.gdh(684): g035F { shift.y = ((@3.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ cTakesLDia ; 7 - RULE 5.8, CharisRules.gdh(687): cLDblDia { shift.y = ((@3.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @3.bb.width) / 2; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ cTakesLDia ; 8 - RULE 5.13, CharisRules.gdh(690): cLDblDia { shift.y = (@2.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY cTakesLDia cDia cDia cDia cDia _ ; 9 - RULE 5.19, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY cDia cDia cDia cDia _ cTakesLDia ; 10 - RULE 5.3, CharisRules.gdh(684): g035F { shift.y = ((@4.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ cTakesLDia ; 11 - RULE 5.9, CharisRules.gdh(687): cLDblDia { shift.y = ((@4.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @4.bb.width) / 2; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ cTakesLDia ; 12 - RULE 5.14, CharisRules.gdh(690): cLDblDia { shift.y = (@3.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY cTakesLDia cDia cDia cDia _ ; 13 - RULE 5.20, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY cDia cDia cDia _ cTakesLDia ; 14 - RULE 5.4, CharisRules.gdh(684): g035F { shift.y = ((@5.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ cTakesLDia ; 15 - RULE 5.10, CharisRules.gdh(687): cLDblDia { shift.y = ((@5.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @5.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ cTakesLDia ; 16 - RULE 5.15, CharisRules.gdh(690): cLDblDia { shift.y = (@4.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY cTakesLDia cDia cDia _ ; 17 - RULE 5.21, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY cDia cDia _ cTakesLDia ; 18 - RULE 5.5, CharisRules.gdh(684): g035F { shift.y = ((@6.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ cTakesLDia ; 19 - RULE 5.11, CharisRules.gdh(687): cLDblDia { shift.y = ((@6.bb.bottom min @8.bb.bottom) - @7.bb.top) - 205; shift.x = (@8.bb.width - @6.bb.width) / 2; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ cTakesLDia ; 20 - RULE 5.16, CharisRules.gdh(690): cLDblDia { shift.y = (@5.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY cTakesLDia cDia _ ; 21 - RULE 5.22, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY cDia _ cTakesLDia ; 22 - RULE 5.17, CharisRules.gdh(690): cLDblDia { shift.y = (@6.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY cTakesLDia _ ; 23 - RULE 5.23, CharisRules.gdh(691): cLDblDia { shift.y = (@8.bb.bottom - @7.bb.top) - 205; insert = 1; } / ANY ANY ANY ANY ANY ANY _ cTakesLDia ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/gdlerr.txt000066400000000000000000000013001411153030700254400ustar00rootroot00000000000000Graphite Compilation Results GDL file: CharisMain.gdl Input font file: CharisInput.ttf Output font file: CharisBenchmark.ttf Output font family: Charis GrcRegTest Silf table version: 4.0 Create separate control file: no ******************************************************* warning(5504): Version 2.0 of the Silf table is inadequate for your specification; version 4.0 will be generated instead. ******************************************************* Table versions generated: Silf: 4.0 Gloc: 1.0 Glat: 1.0 Feat: 2.0 Sill: 1.0 Minimal compiler version required: 4.2 ******************************************************* Compilation succeeded - 0 errors, 1 warning (128 warnings ignored) grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Charis/readme.txt000066400000000000000000000001701411153030700254220ustar00rootroot00000000000000This directory contains the debugger files that were generated in the process of compiling the CharisBenchmark.ttf font.grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/000077500000000000000000000000001411153030700234225ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/$_temp.gdl000066400000000000000000001374541411153030700253000ustar00rootroot00000000000000#line 1 "PadaukMain.gdl" #line 5 "PadaukGlyphs.gdh" table(glyph) {MUnits = 1024}; g__notdef = glyphid(0) {order=0}; g__null = glyphid(1) {order=0}; g_nonmarkingreturn = glyphid(2) {order=0}; g_space = glyphid(3) {order=1}; g_exclam = glyphid(4) {order=0}; g_quotedbl = glyphid(5) {order=0}; g_numbersign = glyphid(6) {order=0}; g_dollar = glyphid(7) {order=0}; g_percent = glyphid(8) {order=0}; g_ampersand = glyphid(9) {order=0}; g_quotesingle = glyphid(10) {order=0}; g_parenleft = glyphid(11) {order=0}; g_parenright = glyphid(12) {order=1}; g_asterisk = glyphid(13) {order=0}; g_plus = glyphid(14) {order=0}; g_comma = glyphid(15) {order=0}; g_hyphen = glyphid(16) {order=0}; g_period = glyphid(17) {order=0}; g_slash = glyphid(18) {order=0}; g_zero = glyphid(19) {order=0}; g_one = glyphid(20) {order=0}; g_two = glyphid(21) {order=0}; g_three = glyphid(22) {order=0}; g_four = glyphid(23) {order=0}; g_five = glyphid(24) {order=0}; g_six = glyphid(25) {order=0}; g_seven = glyphid(26) {order=0}; g_eight = glyphid(27) {order=0}; g_nine = glyphid(28) {order=0}; g_colon = glyphid(29) {order=0}; g_semicolon = glyphid(30) {order=0}; g_less = glyphid(31) {order=0}; g_equal = glyphid(32) {order=0}; g_greater = glyphid(33) {order=0}; g_question = glyphid(34) {order=0}; g_at = glyphid(35) {order=0}; g__a = glyphid(36) {order=0}; g__b = glyphid(37) {order=0}; g__c = glyphid(38) {order=0}; g__d = glyphid(39) {order=0}; g__e = glyphid(40) {order=0}; g__f = glyphid(41) {order=0}; g__g = glyphid(42) {order=0}; g__h = glyphid(43) {order=0}; g__i = glyphid(44) {order=0}; g__j = glyphid(45) {order=0}; g__k = glyphid(46) {order=0}; g__l = glyphid(47) {order=0}; g__m = glyphid(48) {order=0}; g__n = glyphid(49) {order=0}; g__o = glyphid(50) {order=0}; g__p = glyphid(51) {order=0}; g__q = glyphid(52) {order=0}; g__r = glyphid(53) {order=0}; g__s = glyphid(54) {order=0}; g__t = glyphid(55) {order=0}; g__u = glyphid(56) {order=0}; g__v = glyphid(57) {order=0}; g__w = glyphid(58) {order=0}; g__x = glyphid(59) {order=0}; g__y = glyphid(60) {order=0}; g__z = glyphid(61) {order=0}; g_bracketleft = glyphid(62) {order=0}; g_backslash = glyphid(63) {order=0}; g_bracketright = glyphid(64) {order=0}; g_asciicircum = glyphid(65) {UM = point(226m, 495m); order=0}; g_underscore = glyphid(66) {order=0}; g_grave = glyphid(67) {order=0}; g_a = glyphid(68) {order=0}; g_b = glyphid(69) {order=0}; g_c = glyphid(70) {order=0}; g_d = glyphid(71) {order=0}; g_e = glyphid(72) {order=0}; g_f = glyphid(73) {order=0}; g_g = glyphid(74) {order=0}; g_h = glyphid(75) {order=0}; g_i = glyphid(76) {order=0}; g_j = glyphid(77) {order=0}; g_k = glyphid(78) {order=0}; g_l = glyphid(79) {order=0}; g_m = glyphid(80) {order=0}; g_n = glyphid(81) {order=0}; g_o = glyphid(82) {order=0}; g_p = glyphid(83) {order=0}; g_q = glyphid(84) {order=0}; g_r = glyphid(85) {order=0}; g_s = glyphid(86) {order=0}; g_t = glyphid(87) {order=0}; g_u = glyphid(88) {order=0}; g_v = glyphid(89) {order=0}; g_w = glyphid(90) {order=0}; g_x = glyphid(91) {order=0}; g_y = glyphid(92) {order=0}; g_z = glyphid(93) {order=0}; g_braceleft = glyphid(94) {order=0}; g_bar = glyphid(95) {order=0}; g_braceright = glyphid(96) {order=0}; g_asciitilde = glyphid(97) {order=0}; g_multiply = glyphid(98) {order=0}; g_quotedblleft = glyphid(99) {order=0}; g_quotedblright = glyphid(100) {order=0}; g_quoteleft = glyphid(101) {order=0}; g_quoteright = glyphid(102) {order=0}; g_endash = glyphid(103) {order=0}; g_emdash = glyphid(104) {order=0}; g_notequal = glyphid(105) {order=0}; g_circledash = glyphid(106) {RM = point(0m, 0m); BSS = point(318m, -53m); LS = point(318m, -53m); US = point(318m, 495m); order=1}; g1000 = glyphid(107) {RM = point(0m, 0m); BSS = point(714m, -53m); LS = point(714m, -53m); US = point(714m, 495m); BDS = point(508m, -53m); order=1}; g1000_med = glyphid(108) {BDM = point(400m, -53m); BSS = point(886m, -53m); LLS = point(-74m, -53m); LS = point(886m, -53m); order=2}; g1000_1001_103b = glyphid(109) {RM = point(0m, 0m); BSS = point(1236m, -53m); LLS = point(394m, -53m); LS = point(1236m, -53m); US = point(940m, 495m); order=1}; g1000_103b_1015_103a = glyphid(110) {RM = point(0m, 0m); order=1}; g1001 = glyphid(111) {RM = point(0m, 0m); BSS = point(283m, -53m); LS = point(283m, -53m); US = point(283m, 495m); order=1}; g1001_med = glyphid(112) {BSM = point(231m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g1002 = glyphid(113) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1002_med = glyphid(114) {BSM = point(238m, -53m); BSS = point(565m, -53m); LLS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g1003 = glyphid(115) {RM = point(0m, 0m); BSS = point(712m, -53m); LS = point(712m, -53m); US = point(712m, 495m); BDS = point(495m, -53m); order=1}; g1003_med = glyphid(116) {BDM = point(394m, -53m); BSS = point(883m, -53m); LLS = point(-89m, -53m); LS = point(883m, -53m); order=2}; g1004 = glyphid(117) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1004_med = glyphid(118) {UM = point(-92m, 466m); order=8}; g1004_med_102d = glyphid(119) {UM = point(-296m, 466m); order=8}; g1004_med_102e = glyphid(120) {UM = point(-296m, 466m); order=8}; g1004_med_1036 = glyphid(121) {UM = point(-258m, 466m); order=10}; g1005 = glyphid(122) {RM = point(0m, 0m); BSS = point(288m, -53m); LS = point(288m, -53m); US = point(288m, 495m); order=1}; g1005_med = glyphid(123) {BSM = point(234m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g1006 = glyphid(124) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); US = point(702m, 495m); BDS = point(495m, -53m); order=1}; g1006_med = glyphid(125) {BDM = point(394m, -53m); BSS = point(877m, -53m); LLS = point(-89m, -53m); LS = point(877m, -53m); order=2}; g1007 = glyphid(126) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(288m, 495m); order=1}; g1007_med = glyphid(127) {BSM = point(235m, -53m); BSS = point(532m, -53m); LLS = point(-89m, -53m); LS = point(532m, -53m); order=2}; g1008 = glyphid(128) {RM = point(0m, 0m); BSS = point(810m, -53m); LLS = point(208m, -53m); LS = point(810m, -53m); US = point(549m, 486m); order=1}; g1008_med = glyphid(129) {BSS = point(250m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(0m, 0m); order=2}; g1009 = glyphid(130) {RM = point(0m, 0m); BSS = point(450m, -53m); LLS = point(724m, -53m); LS = point(276m, -53m); US = point(276m, 495m); order=1}; g1009_102c = glyphid(131) {RM = point(0m, 0m); BSS = point(1063m, -53m); LS = point(702m, -53m); US = point(702m, 495m); order=1}; g100a = glyphid(132) {RM = point(0m, 0m); BSS = point(1063m, -53m); LS = point(702m, -53m); US = point(702m, 495m); order=1}; g100a_alt = glyphid(133) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); BDS = point(486m, -53m); US = point(702m, 495m); order=1}; g100b = glyphid(134) {RM = point(0m, 0m); BSS = point(657m, -53m); LS = point(657m, -53m); US = point(292m, 495m); order=1}; g100b_alt = glyphid(135) {RM = point(0m, 0m); BSS = point(207m, -173m); LLS = point(292m, -53m); LS = point(642m, -53m); US = point(292m, 495m); BDS = point(60m, -173m); order=1}; g100b_med = glyphid(136) {BSM = point(166m, -53m); BSS = point(415m, -53m); LLS = point(-89m, -53m); LS = point(415m, -53m); order=2}; g100b_100b = glyphid(137) {RM = point(0m, 0m); BSS = point(657m, -53m); LS = point(657m, -53m); US = point(292m, 495m); order=1}; g100b_100c = glyphid(138) {RM = point(0m, 0m); BSS = point(642m, -53m); LS = point(642m, -53m); US = point(292m, 495m); order=1}; g100c = glyphid(139) {RM = point(0m, 0m); BSS = point(657m, -53m); LS = point(657m, -53m); US = point(292m, 495m); order=1}; g100c_med = glyphid(140) {BDM = point(406m, -53m); BSS = point(900m, -53m); LLS = point(-89m, -53m); LS = point(900m, -53m); order=2}; g100d = glyphid(141) {RM = point(0m, 0m); BSS = point(168m, -173m); LS = point(612m, -53m); LLS = point(280m, -51m); US = point(276m, 495m); BDS = point(30m, -173m); order=1}; g100d_med = glyphid(142) {BSM = point(172m, -53m); BSS = point(426m, -53m); LLS = point(-89m, -53m); LS = point(426m, -53m); order=2}; g100d_100d = glyphid(143) {RM = point(0m, 0m); BSS = point(627m, -53m); LS = point(627m, -53m); US = point(276m, 495m); order=1}; g100d_100e = glyphid(144) {RM = point(0m, 0m); BSS = point(454m, -53m); LLS = point(115m, -53m); LS = point(454m, -53m); US = point(285m, 495m); order=1}; g100e = glyphid(145) {RM = point(0m, 0m); BSS = point(285m, -53m); LS = point(285m, -53m); US = point(285m, 495m); order=1}; g100f = glyphid(146) {RM = point(0m, 0m); BSS = point(759m, -53m); LS = point(759m, -53m); BDS = point(516m, -53m); US = point(759m, 495m); order=1}; g100f_med = glyphid(147) {BDM = point(409m, -53m); BSS = point(907m, -53m); LLS = point(-89m, -53m); LS = point(907m, -53m); order=2}; g100f_100b = glyphid(148) {RM = point(0m, 0m); BSS = point(963m, -53m); LLS = point(372m, -53m); LS = point(963m, -53m); US = point(759m, 495m); order=1}; g100f_100d = glyphid(149) {RM = point(0m, 0m); BSS = point(84m, -53m); LLS = point(30m, -53m); LS = point(84m, -53m); US = point(759m, 495m); order=1}; g1010 = glyphid(150) {RM = point(0m, 0m); BSS = point(709m, -53m); LS = point(709m, -53m); US = point(709m, 495m); BDS = point(501m, -53m); order=1}; g1010_med = glyphid(151) {BDM = point(384m, -53m); BSS = point(867m, -53m); LLS = point(-104m, -53m); LS = point(867m, -53m); order=2}; g1010_103d_med = glyphid(152) {BSM = point(235m, -53m); BSS = point(555m, -53m); LLS = point(-87m, -53m); LS = point(555m, -53m); order=2}; g1011 = glyphid(153) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); US = point(702m, 495m); BDS = point(495m, -53m); order=1}; g1011_med = glyphid(154) {BDM = point(394m, -53m); BSS = point(877m, -53m); LS = point(-89m, -53m); LLS = point(877m, -53m); order=2}; g1012 = glyphid(155) {RM = point(0m, 0m); BSS = point(267m, -53m); LS = point(267m, -53m); US = point(267m, 495m); order=1}; g1012_med = glyphid(156) {BSM = point(219m, -53m); BSS = point(526m, -53m); LLS = point(-89m, -53m); LS = point(526m, -53m); order=2}; g1013 = glyphid(157) {RM = point(0m, 0m); BSS = point(288m, -53m); LS = point(288m, -53m); US = point(288m, 495m); order=1}; g1013_med = glyphid(158) {BSM = point(234m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g1014 = glyphid(159) {RM = point(12m, 0m); BSS = point(474m, -53m); LS = point(474m, -53m); US = point(273m, 495m); order=1}; g1014_alt = glyphid(160) {RM = point(0m, 0m); BSS = point(271m, -53m); LS = point(271m, -53m); US = point(271m, 495m); order=1}; g1014_med = glyphid(161) {BSM = point(223m, -53m); BSS = point(522m, -53m); LLS = point(-89m, -53m); LS = point(522m, -53m); order=2}; g1014_1010_103b = glyphid(162) {RM = point(0m, 0m); BSS = point(997m, -53m); LS = point(997m, -53m); US = point(765m, 495m); order=1}; g1014_1010_103c = glyphid(163) {RM = point(0m, 0m); BSS = point(841m, -53m); LS = point(841m, -53m); order=1}; g1015 = glyphid(164) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1015_med = glyphid(165) {BSM = point(238m, -53m); BSS = point(565m, -53m); LLS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g1016 = glyphid(166) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1016_med = glyphid(167) {BSM = point(238m, -53m); BSS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g1017 = glyphid(168) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1017_med = glyphid(169) {BSM = point(237m, -53m); BSS = point(565m, -53m); LLS = point(-90m, -53m); LS = point(565m, -53m); order=2}; g1018 = glyphid(170) {RM = point(0m, 0m); BSS = point(699m, -53m); LS = point(699m, -53m); US = point(699m, 495m); BDS = point(492m, -53m); order=1}; g1018_med = glyphid(171) {BDM = point(393m, -53m); BSS = point(874m, -53m); LLS = point(-89m, -53m); LS = point(874m, -53m); order=2}; g1019 = glyphid(172) {RM = point(0m, 0m); BSS = point(294m, -53m); LS = point(294m, -53m); US = point(292m, 495m); order=1}; g1019_med = glyphid(173) {BSM = point(238m, -53m); BSS = point(565m, -53m); LLS = point(-89m, -53m); LS = point(565m, -53m); order=2}; g101a = glyphid(174) {RM = point(0m, 0m); BSS = point(706m, -53m); LS = point(706m, -53m); BDS = point(504m, -53m); US = point(706m, 495m); order=1}; g103b = glyphid(175) {BSS = point(250m, -53m); dotS = point(-248m, -53m); LLS = point(-351m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=3}; g103b_103d = glyphid(176) {BSS = point(250m, -53m); LLS = point(-540m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=3}; g103b_103d_103e = glyphid(177) {BSS = point(250m, -53m); LLS = point(-540m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=3}; g103b_103e = glyphid(178) {BSS = point(250m, -53m); LS = point(250m, -53m); dotS = point(-263m, -53m); LLS = point(-401m, 79m); US = point(-36m, 495m); order=3}; g101b = glyphid(179) {RM = point(0m, 0m); BSS = point(247m, -53m); LLS = point(292m, -53m); LS = point(646m, -53m); US = point(295m, 495m); BDS = point(87m, -53m); order=1}; g101b_alt = glyphid(180) {RM = point(3m, 0m); BSS = point(348m, -53m); LS = point(676m, -53m); LLS = point(87m, -53m); US = point(292m, 495m); BDS = point(247m, -53m); order=1}; g101b_long = glyphid(181) {RM = point(3m, 0m); BSS = point(292m, -53m); LS = point(676m, -53m); LLS = point(87m, -53m); US = point(292m, 495m); BDS = point(247m, -53m); order=1}; g103c = glyphid(182) {RS = point(172m, 0m); BSS = point(841m, -53m); LLS = point(502m, -53m); LS = point(841m, -53m); order=4; advx=753m}; g103c_alt_narr = glyphid(183) {RS = point(172m, 0m); BSS = point(841m, -53m); LLS = point(502m, -53m); LS = point(841m, -53m); order=4; advx=753m}; g103c_alt_wide = glyphid(184) {RS = point(172m, 0m); BSS = point(1263m, -53m); LLS = point(924m, -53m); LS = point(1263m, -53m); order=4; advx=1174m}; g103c_wide = glyphid(185) {RS = point(172m, 0m); BSS = point(1263m, -53m); LLS = point(924m, -53m); LS = point(1263m, -53m); order=4; advx=1174m}; g103c_103d_narr = glyphid(186) {RS = point(172m, 0m); BSS = point(796m, -53m); LS = point(796m, -53m); order=4; advx=753m}; g103c_103d_wide = glyphid(187) {RS = point(172m, 0m); BSS = point(1198m, -53m); LLS = point(553m, -53m); LS = point(1198m, -53m); order=4; advx=1174m}; g103c_103d_alt_narr = glyphid(188) {RS = point(172m, 0m); BSS = point(796m, -53m); LS = point(796m, -53m); order=4; advx=753m}; g103c_103d_alt_wide = glyphid(189) {RS = point(172m, 0m); BSS = point(1198m, -53m); LLS = point(553m, -53m); LS = point(1198m, -53m); order=4; advx=1174m}; g103c_102f_narr = glyphid(190) {RS = point(172m, 0m); BSS = point(781m, -53m); LLS = point(295m, -53m); LS = point(781m, -53m); order=4; advx=753m}; g103c_102f_wide = glyphid(191) {RS = point(172m, 0m); BSS = point(1195m, -53m); LLS = point(709m, -53m); LS = point(1195m, -53m); order=4; advx=1174m}; g103c_102f_alt_narr = glyphid(192) {RS = point(172m, 0m); BSS = point(781m, -53m); LLS = point(295m, -53m); LS = point(781m, -53m); order=4; advx=753m}; g103c_102f_alt_wide = glyphid(193) {RS = point(172m, 0m); BSS = point(1195m, -53m); LLS = point(709m, -53m); LS = point(1195m, -53m); order=4; advx=1174m}; g101c = glyphid(194) {RM = point(0m, 0m); BSS = point(679m, -53m); LS = point(679m, -53m); US = point(679m, 495m); BDS = point(480m, -53m); order=1}; g101c_med = glyphid(195) {BDM = point(375m, -53m); BSS = point(853m, -53m); LLS = point(-89m, -53m); LS = point(853m, -53m); order=2}; g101d = glyphid(196) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(286m, 495m); order=1}; g103d = glyphid(197) {BSM = point(-178m, -53m); BSS = point(144m, -53m); LLS = point(-501m, -53m); LS = point(144m, -53m); order=5}; g103d_103e = glyphid(198) {BSM = point(288m, -53m); BSS = point(610m, -53m); LLS = point(-89m, -53m); LS = point(610m, -53m); order=5}; g103d_103e_small = glyphid(199) {BSM = point(361m, -53m); order=5}; g101e = glyphid(200) {RM = point(0m, 0m); BSS = point(702m, -53m); LS = point(702m, -53m); BDS = point(492m, -53m); US = point(702m, 495m); order=1}; g101e_med = glyphid(201) {BDM = point(393m, -53m); BSS = point(874m, -53m); LS = point(874m, -53m); LLS = point(-89m, -53m); order=2}; g101e_1010_103c = glyphid(202) {RM = point(0m, 0m); BSS = point(1263m, -53m); LS = point(1263m, -53m); order=1}; g103f = glyphid(203) {RM = point(0m, 0m); BSS = point(1123m, -53m); LS = point(1123m, -53m); BDS = point(702m, -53m); US = point(1123m, 495m); order=1}; g101f = glyphid(204) {RM = point(0m, 0m); BSS = point(714m, -53m); LS = point(714m, -53m); US = point(714m, 495m); BDS = point(504m, -53m); order=1}; g103e = glyphid(205) {BSM = point(-26m, -53m); BSS = point(144m, -53m); LLS = point(-195m, -53m); LS = point(144m, -53m); order=6}; g103e_alt = glyphid(206) {BSM = point(-33m, -53m); BSS = point(73m, -53m); LLS = point(-263m, 45m); LS = point(73m, -53m); order=6}; g103e_102f = glyphid(207) {BSM = point(222m, -53m); BSS = point(466m, -53m); LLS = point(-21m, -53m); LS = point(466m, -53m); order=6; rkern=78m}; g103e_1030 = glyphid(208) {BSM = point(294m, -53m); BSS = point(609m, -53m); LLS = point(-21m, -53m); LS = point(609m, -53m); order=6; rkern=90m}; g1020 = glyphid(209) {RM = point(0m, 0m); BSS = point(654m, -53m); LS = point(654m, -53m); US = point(292m, 495m); order=1}; g1021 = glyphid(210) {RM = point(0m, 0m); BSS = point(648m, -53m); LS = point(648m, -53m); US = point(648m, 495m); BDS = point(465m, -53m); order=1}; g1021_med = glyphid(211) {BDM = point(393m, -53m); BSS = point(874m, -53m); LLS = point(-89m, -53m); LS = point(874m, -53m); order=2}; g1023 = glyphid(212) {BSS = point(993m, -53m); LLS = point(15m, -53m); LS = point(993m, -53m); US = point(715m, 495m); order=0}; g1024 = glyphid(213) {order=0}; g1025 = glyphid(214) {BSS = point(276m, 0m); LS = point(276m, -53m); US = point(276m, 495m); order=1}; g1026 = glyphid(215) {BSS = point(276m, 0m); LS = point(276m, -53m); order=1}; g1027 = glyphid(216) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1028 = glyphid(217) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 570m); order=1}; g1029 = glyphid(218) {BSS = point(874m, -53m); LLS = point(924m, -53m); LS = point(874m, -53m); US = point(874m, 495m); BDS = point(664m, -53m); order=1; advx=1174m}; g102a = glyphid(219) {order=0}; g102c = glyphid(220) {RM = point(0m, 0m); BSS = point(133m, -53m); LS = point(133m, -53m); US = point(133m, 495m); order=1}; g102b = glyphid(221) {BSS = point(96m, -53m); LS = point(96m, -53m); xkern=270m; order=1}; g102b_103a = glyphid(222) {BSS = point(96m, -53m); LS = point(96m, -53m); xkern=270m; order=1}; g102d = glyphid(223) {UM = point(-179m, 495m); order=8}; g102d_1036 = glyphid(224) {UM = point(-269m, 495m); order=8}; g102e = glyphid(225) {UM = point(-182m, 495m); order=8}; g102f = glyphid(226) {BSS = point(235m, -53m); LS = point(235m, -53m); US = point(67m, 496m); order=9}; g102f_med = glyphid(227) {BSM = point(81m, -53m); BSS = point(250m, -53m); LLS = point(-89m, -53m); LS = point(250m, -53m); order=9; rkern=2m}; g1030 = glyphid(228) {BSS = point(384m, -53m); LS = point(384m, -53m); US = point(214m, 495m); order=9}; g1030_med = glyphid(229) {BSM = point(154m, -53m); BSS = point(399m, -53m); LLS = point(-89m, -53m); LS = point(399m, -53m); order=9; rkern=43m}; g1031 = glyphid(230) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=7}; g1032 = glyphid(231) {UM = point(-192m, 504m); order=8}; g1033 = glyphid(232) {UM = point(-179m, 495m); order=8}; g1034 = glyphid(233) {UM = point(-138m, 532m); order=8}; g1036 = glyphid(234) {UM = point(-74m, 495m); order=10}; g1037 = glyphid(235) {LM = point(-74m, -53m); order=13}; g1038 = glyphid(236) {order=14}; g103a = glyphid(237) {UM = point(-231m, 477m); order=12}; g1039 = glyphid(238) {BSM = point(-178m, -53m); BSS = point(144m, -53m); LLS = point(-501m, -53m); LS = point(144m, -53m); order=5}; g1040 = glyphid(239) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g1041 = glyphid(240) {RM = point(0m, 0m); BSS = point(418m, -80m); LS = point(418m, -80m); US = point(418m, 742m); order=1}; g1042 = glyphid(241) {BSS = point(252m, -53m); LS = point(252m, -53m); US = point(252m, 495m); order=1}; g1043 = glyphid(242) {BSS = point(279m, -53m); LS = point(279m, -53m); US = point(279m, 495m); order=1}; g1044 = glyphid(243) {BSS = point(297m, -53m); LS = point(297m, -53m); US = point(297m, 495m); order=1}; g1045 = glyphid(244) {BSS = point(283m, -53m); LS = point(283m, -53m); US = point(283m, 495m); order=1}; g1046 = glyphid(245) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(315m, 570m); order=1}; g1047 = glyphid(246) {BSS = point(286m, -53m); LS = point(286m, -53m); US = point(286m, 495m); order=1}; g1048 = glyphid(247) {order=1}; g1049 = glyphid(248) {BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g104a = glyphid(249) {order=0}; g104b = glyphid(250) {order=0}; g104c = glyphid(251) {BSS = point(624m, -53m); LS = point(624m, -53m); order=0}; g104d = glyphid(252) {order=0}; g104e = glyphid(253) {order=0}; g104f = glyphid(254) {order=0}; g105a = glyphid(255) {RM = point(0m, 0m); BSS = point(292m, -53m); LS = point(292m, -53m); US = point(292m, 495m); order=1}; g105a_med = glyphid(256) {BSM = point(142m, -53m); BSS = point(376m, -53m); LLS = point(-89m, -53m); LS = point(376m, -53m); order=2}; g105b = glyphid(257) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(288m, 495m); order=1}; g105b_med = glyphid(258) {BSS = point(250m, -53m); LLS = point(-540m, -53m); dotS = point(-218m, -53m); LS = point(250m, -53m); US = point(-36m, 495m); order=2}; g105c = glyphid(259) {RM = point(0m, 0m); BSS = point(286m, -53m); LS = point(286m, -53m); US = point(286m, 495m); order=1}; g105c_med = glyphid(260) {BSM = point(234m, -53m); BSS = point(556m, -53m); LLS = point(-89m, -53m); LS = point(556m, -53m); order=2}; g105d = glyphid(261) {RM = point(0m, 0m); BSS = point(294m, -53m); LS = point(294m, -53m); US = point(292m, 495m); order=1}; g105e = glyphid(262) {BSM = point(-25m, -53m); BSS = point(144m, -53m); LLS = point(-195m, -53m); LS = point(144m, -53m); order=2}; g105f = glyphid(263) {BSM = point(-25m, -53m); BSS = point(144m, -53m); LLS = point(-195m, -53m); LS = point(144m, -53m); order=2}; g1060 = glyphid(264) {LM = point(-180m, -63m); order=2}; g1061 = glyphid(265) {RM = point(0m, 0m); BSS = point(247m, -53m); LLS = point(292m, -53m); LS = point(646m, -53m); US = point(295m, 495m); BDS = point(87m, -53m); order=1}; g1062 = glyphid(266) {BSS = point(192m, -53m); LS = point(192m, -53m); US = point(192m, 495m); order=1}; g1063 = glyphid(267) {RM = point(0m, 0m); BSS = point(276m, -53m); LS = point(276m, -53m); US = point(276m, 495m); order=1}; g1064 = glyphid(268) {BSS = point(192m, -53m); LS = point(192m, -53m); US = point(192m, 495m); order=1}; g200b = glyphid(269) {order=0}; g200c = glyphid(270) {order=0}; g200d = glyphid(271) {order=0}; g2060 = glyphid(272) {order=0}; cTakesBDDia = (g1000, g1003, g1006, g100a_alt, g100b_alt, g100d, g100f, g1010, g1011, g1018, g101a, g101b, g101b_alt, g101b_long, g101c, g101e, g103f, g101f, g1021, g1029, g1061); cnTakesBDDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cTakesBSDia = (g_circledash, g1000, g1000_med, g1000_1001_103b, g1001, g1001_med, g1002, g1002_med, g1003, g1003_med, g1004, g1005, g1005_med, g1006, g1006_med, g1007, g1007_med, g1008, g1008_med, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_med, g100b_100b, g100b_100c, g100c, g100c_med, g100d, g100d_med, g100d_100d, g100d_100e, g100e, g100f, g100f_med, g100f_100b, g100f_100d, g1010, g1010_med, g1010_103d_med, g1011, g1011_med, g1012, g1012_med, g1013, g1013_med, g1014, g1014_alt, g1014_med, g1014_1010_103b, g1014_1010_103c, g1015, g1015_med, g1016, g1016_med, g1017, g1017_med, g1018, g1018_med, g1019, g1019_med, g101a, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c, g101c_med, g101d, g103d, g103d_103e, g101e, g101e_med, g101e_1010_103c, g103f, g101f, g103e, g103e_alt, g103e_102f, g103e_1030, g1020, g1021, g1021_med, g1023, g1025, g1026, g1027, g1028, g1029, g102c, g102b, g102b_103a, g102f, g102f_med, g1030, g1030_med, g1031, g1039, g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1049, g104c, g105a, g105a_med, g105b, g105b_med, g105c, g105c_med, g105d, g105e, g105f, g1061, g1062, g1063, g1064); cnTakesBSDia = (g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g103d_103e_small, g102d, g102d_1036, g102e, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1060); cTakesLDia = (g_circledash, g1000, g1000_med, g1000_1001_103b, g1001, g1001_med, g1002, g1002_med, g1003, g1003_med, g1004, g1005, g1005_med, g1006, g1006_med, g1007, g1007_med, g1008, g1008_med, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_med, g100b_100b, g100b_100c, g100c, g100c_med, g100d, g100d_med, g100d_100d, g100d_100e, g100e, g100f, g100f_med, g100f_100b, g100f_100d, g1010, g1010_med, g1010_103d_med, g1011, g1011_med, g1012, g1012_med, g1013, g1013_med, g1014, g1014_alt, g1014_med, g1014_1010_103b, g1014_1010_103c, g1015, g1015_med, g1016, g1016_med, g1017, g1017_med, g1018, g1018_med, g1019, g1019_med, g101a, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c, g101c_med, g101d, g103d, g103d_103e, g101e, g101e_med, g101e_1010_103c, g103f, g101f, g103e, g103e_alt, g103e_102f, g103e_1030, g1020, g1021, g1021_med, g1023, g1025, g1026, g1027, g1028, g1029, g102c, g102b, g102b_103a, g102f, g102f_med, g1030, g1030_med, g1031, g1039, g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1049, g104c, g105a, g105a_med, g105b, g105b_med, g105c, g105c_med, g105d, g105e, g105f, g1061, g1062, g1063, g1064); cnTakesLDia = (g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g103d_103e_small, g102d, g102d_1036, g102e, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1060); cTakesLLDia = (g1000_med, g1000_1001_103b, g1001_med, g1002_med, g1003_med, g1005_med, g1006_med, g1007_med, g1008, g1009, g100b_alt, g100b_med, g100c_med, g100d, g100d_med, g100d_100e, g100f_med, g100f_100b, g100f_100d, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_wide, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g1023, g1029, g102f_med, g1030_med, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1061); cnTakesLLDia = (g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1008_med, g1016_med, g103c_103d_narr, g103c_103d_alt_narr, g103d_103e_small, g102d, g102d_1036, g102e, g102f, g1030, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1060); cTakesRDia = (g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide); cnTakesRDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cTakesUDia = (g_circledash, g1000, g1000_1001_103b, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g1008_med, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_100b, g100b_100c, g100c, g100d, g100d_100d, g100d_100e, g100e, g100f, g100f_100b, g100f_100d, g1010, g1011, g1012, g1013, g1014, g1014_alt, g1014_1010_103b, g1015, g1016, g1017, g1018, g1019, g101a, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g101b, g101b_alt, g101b_long, g101c, g101d, g101e, g103f, g101f, g1020, g1021, g1023, g1025, g1027, g1028, g1029, g102c, g102f, g1030, g1031, g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1049, g105a, g105b, g105b_med, g105c, g105d, g1061, g1062, g1063, g1064); cnTakesUDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f_med, g1030_med, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105c_med, g105e, g105f, g1060); cBDDia = (g1000_med, g1003_med, g1006_med, g100c_med, g100f_med, g1010_med, g1011_med, g1018_med, g101c_med, g101e_med, g1021_med); cnBDDia = (g1001_med, g1002_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1007_med, g1008_med, g100b_med, g100d_med, g1010_103d_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g103d, g103d_103e, g103d_103e_small, g103e, g103e_alt, g103e_102f, g103e_1030, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cBSDia = (g1001_med, g1002_med, g1005_med, g1007_med, g100b_med, g100d_med, g1010_103d_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1019_med, g103d, g103d_103e, g103d_103e_small, g103e, g103e_alt, g103e_102f, g103e_1030, g102f_med, g1030_med, g1039, g105a_med, g105c_med, g105e, g105f); cnBSDia = (g1000_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1006_med, g1008_med, g100c_med, g100f_med, g1010_med, g1011_med, g1018_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g101e_med, g1021_med, g102d, g102d_1036, g102e, g102f, g1030, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g105b_med, g1060); cLDia = (g1037, g1060); cnLDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f); cRDia = (g_circledash, g1000, g1000_1001_103b, g1000_103b_1015_103a, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g1009, g1009_102c, g100a, g100a_alt, g100b, g100b_alt, g100b_100b, g100b_100c, g100c, g100d, g100d_100d, g100d_100e, g100e, g100f, g100f_100b, g100f_100d, g1010, g1011, g1012, g1013, g1014, g1014_alt, g1014_1010_103b, g1014_1010_103c, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101b_alt, g101b_long, g101c, g101d, g101e, g101e_1010_103c, g103f, g101f, g1020, g1021, g102c, g1031, g1041, g105a, g105b, g105c, g105d, g1061, g1063); cnRDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cUDia = (g_asciicircum, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g102d, g102d_1036, g102e, g1032, g1033, g1034, g1036, g103a); cnUDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102f, g102f_med, g1030, g1030_med, g1031, g1037, g1038, g1039, g105a_med, g105b_med, g105c_med, g105e, g105f, g1060); cTakesdotDia = (g1008_med, g103b, g103b_103d, g103b_103d_103e, g103b_103e, g105b_med); cnTakesdotDia = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g1005_med, g1006_med, g1007_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1010_103d_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g103c, g103c_alt_narr, g103c_alt_wide, g103c_wide, g103c_103d_narr, g103c_103d_wide, g103c_103d_alt_narr, g103c_103d_alt_wide, g103c_102f_narr, g103c_102f_wide, g103c_102f_alt_narr, g103c_102f_alt_wide, g101c_med, g103d, g103d_103e, g103d_103e_small, g101e_med, g103e, g103e_alt, g103e_102f, g103e_1030, g1021_med, g102d, g102d_1036, g102e, g102f, g102f_med, g1030, g1030_med, g1031, g1032, g1033, g1034, g1036, g1037, g1038, g103a, g1039, g105a_med, g105c_med, g105e, g105f, g1060); calt = (g100a_alt, g100b_alt, g1014_alt, g101b_alt, g103e_alt); clong = (g101b_long); cmed = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1005_med, g1006_med, g1007_med, g1008_med, g100b_med, g100c_med, g100d_med, g100f_med, g1010_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g101c_med, g101e_med, g1021_med, g102f_med, g1030_med, g105a_med, g105b_med, g105c_med); cno_alt = (g100a, g100b, g1014, g101b, g103e); cno_long = (g101b); cno_med = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g100b, g100c, g100d, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101c, g101e, g1021, g102f, g1030, g105a, g105b, g105c); cno_small = (g103d_103e); cno_wide = (g103c); csmall = (g103d_103e_small); cwide = (g103c_wide); endtable; #line 155 "PadaukMain.gdl" Bidi = 0; AutoPseudo = 1; #line 170 table(glyph); #line 179 ANYGlyph = (glyphid(0 .. 272)){breakweight = -30}; #line 186 g200b {breakweight = 10}; g_space {breakweight = 10}; cSection = (g104a, g104b) {breakweight = 10}; g1039 {breakweight = -50}; g2060 {breakweight = -30}; cSigns = (g104c, g104d, g104e, g104f) {breakweight = 10}; cNum = (g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1048, g1049) {breakweight = -30}; cLQuote = (g_parenleft, g_quotedblleft, g_quoteleft) {breakweight = -15}; cRQuote = (g_parenright, g_quotedblright, g_quoteright) {breakweight = 10}; #line 207 cCons = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g1009, g100a, g100b, g100c, g100d, g100e, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101c, g101d, g101e, g101f, g1020, g1021, g1025, g1027, g_circledash, g103f , g1028, g105a, g105b, g105c, g105d, g1061){breakweight = -15}; cConsNar = (g1001, g1002, g1004, g1005, g1007, g100b, g100c, g100d, g100e, g1012, g1013, g1014, g1015, g1016, g1017, g1019, g101b, g101d, g_circledash, g1014_alt, g1027 , g1028, g105a, g105b, g105c, g105d, g1061); cConsWide = (g1000, g1003, g1006, g1008, g1009, g100a, g100f, g1010, g1011, g1018, g101a, g101c, g101e, g101f, g1020, g1021, g103f); #line 223 cConsSVowel = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g100e, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101c, g101d, g101e, g101f, g1021, g1027, g_circledash, g100a_alt, g101b_alt, g1014_alt, g103f , g105c); #line 232 cConsSlantH = (g1009, g100a , g105a, g105b, g105d); #line 242 cMed = (g1000_med, g1001_med, g1002_med, g1003_med, g1005_med, g1006_med, g1007_med, g1008_med, g100c_med, g100d_med, g100f_med, g1010_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g101c_med, g101e_med, g1021_med , g105a_med, g105b_med, g105c_med); cMedNar = (g1001_med, g1002_med, g1005_med, g1007_med, g100c_med, g100d_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1019_med , g105a_med, g105c_med); cMedBase = (g1000, g1001, g1002, g1003, g1005, g1006, g1007, g1008, g100c, g100d, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101c, g101e, g1021 , g105a, g105b, g105c); #line 258 c101b = (g101b, g101b_alt, g101b_long); #line 266 cClusMed = (g103b, g103c, g103d, g103e , g105e, g105f, g1060); cClusDia = (g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103d, g103d_103e, g103e, g103e_102f, g103e_1030 , g105e, g105f, g1060); #line 276 cYMed = (g103b, g103b_103d, g103b_103d_103e, g103b_103e); #line 285 cLVowel = (g102f, g1030); cLVowelM = (g102f_med, g1030_med); cLVowelh = (g103e_102f, g103e_1030); cLVowelAll = (cLVowel, cLVowelh, cLVowelM); #line 298 cUVowel = (g103a, g1004_med, g1004_med_102d, g1004_med_102e, g1004_med_1036, g102d, g102e, g1032 , g1033, g1034){breakweight = -50}; cUSpace = (g103a, g102d, g102e, g1004_med_102e, g1004_med_102d, g1004_med, g1004_med_1036 , g1033); cUVowelNga = (g102e, g102d, g1036); cNgaUVowel = (g1004_med_102e, g1004_med_102d, g1004_med_1036); cUTakesMa = (g102d, g1004_med); cUWithMa = (g102d_1036, g1004_med_1036); c1036 = (g1036, g1004_med_1036, g102d_1036); #line 311 cBDia = (cBSDia, cBDDia); #line 316 cLDiaMod = (g100a, g1014, g101b); cLDiaModed = (g100a_alt, g1014_alt, g101b_alt); #line 324 c103b = (g103b, g103b_103e, g103b_103d); c103d = (g103d, g103d_103e, g103b_103d); c103e = (g103e, g103e_102f, g103e_1030, g103d_103e, g103b_103e); #line 337 c103c_only = (g103c, g103c_wide, g103c_alt_narr, g103c_alt_wide); c103c_mix = (g103c_103d_narr, g103c_103d_wide, g103c_102f_narr, g103c_102f_wide, g103c_103d_alt_narr, g103c_102f_alt_narr, g103c_103d_alt_wide, g103c_102f_alt_wide); c103c = (c103c_only, c103c_mix); c103c_nar = (g103c, g103c_103d_narr, g103c_102f_narr); c103c_naralt = (g103c_alt_narr, g103c_103d_alt_narr, g103c_102f_alt_narr); c103c_wide = (g103c_wide, g103c_103d_wide, g103c_102f_wide); c103c_widalt = (g103c_alt_wide, g103c_103d_alt_wide, g103c_102f_alt_wide); c103e_dia = (g103e, g103e_alt); #line 354 c103c_compl = (g103c_102f_narr, g103c_102f_wide); c103c_compr = (g103c_103d_narr, g103c_103d_wide); c103c_medn = (g103c, g103c_wide, g103c_alt_narr, g103c_alt_wide); c103c_in = (g103e_alt, g103d, g103d_103e, cMed); cLowDia = (g103d, g103d_103e, g103e, g103e_102f, g103e_1030, cMed, cLVowelAll); c102b = (g102b, g102b_103a); #line 367 t1014 = (cMed, c103d, c103e, cLVowelAll, c103b); t100a = (t1014); #line 374 cLeftLDot = (g103b, g1061); #line 381 cHasRkern = (g103e_102f, g103e_1030, g1030_med, g102f_med); endtable; #line 404 table(linebreak) cSection {breakweight = 10} / _ ^ cCons; g_space {breakweight = 10} / _ ^ cCons; cTakesUDia {breakweight = -30} g103a {breakweight = -50} / _ ^ [g1039 cMed]? [[[[cnTakesUDia]? cnTakesUDia]? cnTakesUDia]? cnTakesUDia]? _ ; cCons {breakweight = -30} cMedBase {breakweight = -50} / _ g1039 _ ; cCons {breakweight = -30} cClusMed {breakweight = -50}; cCons {breakweight = -50} / g1039 _ ; cCons {breakweight = -30} / g2060 _ ; cCons {breakweight = -30} / g1021 _; ANYGlyph {breakweight = +40} / cLQuote ^ _; ANYGlyph {breakweight = -40} / _ ^ cRQuote; cSection {breakweight = +30} / _ cNum; cNum {breakweight = -15} / cCons _; cSigns {breakweight = -15} / cSection _; cSigns {breakweight = +40} / _ cSection; endtable; #line 457 table(substitution); pass(1); g1004 g103a g1039 _ > _ _ _ g1004_med:(1 2 3) / _ _ _ ^ (cCons, cNum, g104e) [g1039 cMedBase]? [[[[cClusMed]? cClusMed]? cClusMed]? cClusMed]? g1031? _; g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(1 2 3 4) / _ _ _ ^ (cCons, cNum, g104e) [g1039 cMedBase]? [[[[cClusMed]? cClusMed]? cClusMed]? cClusMed]? g1031? _; g1039 cMedBase > _ cMed; g1039 g1010 g103d > g1010_103d_med:(1 2 3) _ _; g100b g1039 g100b > g100b_100b:(1 2 3) _ _; g100b g1039 g100c > g100b_100c:(1 2 3) _ _; g100d g1039 g100d > g100d_100d:(1 2 3) _ _; g100e g1039 g100d > g100d_100e:(1 2 3) _ _; g100f g1039 g100b > g100f_100b:(1 2 3) _ _; g100f g1039 g100d > g100f_100d:(1 2 3) _ _; g1014 g1039 g1010 g103c > g1014_1010_103c:(1 2 3 4) _ _ _; g1014 g1039 g1010 g103c > g1014_1010_103c:(1 2 3 4) _ _ _; g101e g1039 g1010 g103c > g101e_1010_103c:(1 2 3 4) _ _ _; g103b g103d g103e > g103b_103d_103e:(1 2 3) _ _; g103b g103e > g103b_103e:(1 2) _; g103c g103d g103e > @1 g103d_103e _; g103c g103d > g103c_103d_narr:(1 2) _; g103d g103e > g103d_103e_small:(2 3) _ / g103c _ _ ; g103d g103e > g103d_103e:(1 2) _; g103b g103d > g103b_103d:(1 2) _; g1039 cMedBase g103c g102f > _ cMed @r @u / _ _ _=r g1031? cUVowel? _=u; g103c g103e g102f > @r @h @u / _=r _=h g1031? cUVowel? _=u; g103c g103e g1030 > @r @h @u / _=r _=h g1031? cUVowel? _=u; g103c g102f > g103c_102f_narr:(1 4) _ / _ g1031? cUVowel? _; g103e g102f > g103e_102f:(1 4) _ / _ g1031? cUVowel? _; g103e g1030 > g103e_1030:(1 3) _ / _ g1031? _; #line 505 endpass; #line 531 pass(2); #line 538 ANYGlyph > @3 / cCons g103a ^ _{order > 1}; _ > g_circledash:1 / ANYGlyph _ ^ ANYGlyph{order > 1 && order <= @1.order}; _ > g_circledash:1 / ANYGlyph{order == 0} _ ^ ANYGlyph{order > 1}; endpass; #line 558 pass(3); #line 564 g1014 > g1014_alt / (c103c_nar, c103c_naralt) _ ; #line 571 _ g1031 > @e:e _ / _ ^ c103c? cCons cMed? [[[[cClusDia]? cClusDia]? cClusDia]? cClusDia]? _=e; #line 582 _ c103c_nar > c103c_wide:r$r _ / ^ _ cConsWide cMed? c103b? _=r; _ c103c_nar > c103c_naralt:r$r _ / ^ _ cConsNar cMedNar? _=r c103d? c103e? cUSpace; _ c103c_nar > c103c_widalt:r$r _ / ^ _ cConsWide cMed? _=r c103d? c103e? cUSpace; _ c103c_nar > c103c_naralt:r$r _ / ^ _ cConsNar g103a cMedNar? _=r; _ c103c_nar > c103c_widalt:r$r _ / ^ _ cConsWide g103a cMed? _=r; _ c103c_nar > @r:r _ / ^ _ cConsNar cMedNar? c103b? _=r; _ c103c_nar > c103c_wide:r$r _ / ^ _ cConsNar cMed? c103b? _=r; #line 595 g101b > g101b_alt / ^ _ c103e? cUVowel? cLVowelAll; g101b > g101b_alt / ^ _ c103d; g101b > g101b_alt / ^ _ c103b; g101b > g101b_long / ^ _ g103e; g101b > g101b_long / ^ _ cMed cUVowel? cLVowel; #line 608 g1030 > @u / c103c_only cConsSVowel cUVowel? _=u ^; cLVowel > cLVowelM / ^ cConsSVowel cUVowel? _; g1014 cLVowel > g1014_alt:(1) cLVowelM:(3) / ^ _ cUVowel? _; g100a cLVowel > g100a_alt:(1) cLVowelM:(3) / ^ _ cUVowel? _; g103d_103e > g103d_103e_small / c103c cCons _; cUTakesMa g1036 > cUWithMa:(1 3) _ / _ cLVowel? _; #line 619 g1014 > g1014_alt / ^ _ t1014; g100a > g100a_alt / ^ _ t100a; g1009 > g1025 / ^ _ g103a; g1009 > g1025 / ^ _ c103e? g1031? cUVowel? cCons; #line 628 g103e > g103e_alt / ^ c103c cConsSVowel _; g103e > g103e_alt / cConsSlantH _; #line 635 g102b g103a > g102b_103a:(1 2) _; endpass; endtable; #line 690 table(positioning); pass(1); #line 700 c103c {advance.x = advx; user2 = 1} / ^ _{user2 == 0}; #line 710 cConsSVowel g1037 {attach {to = @2; at = LS; with = LM}; user1 = 1} / ^ c103c_only? _ cUDia? _{user1 == 0}; #line 712 c103c g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cConsSVowel cMed c103e_dia? cUDia? _{user1 == 0}; #line 714 c103c g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cConsSVowel cMed? c103e_dia cUDia? _{user1 == 0}; #line 716 c103c_mix g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cConsSVowel cUDia? _{user1 == 0}; #line 718 c101b g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ (cMed, cClusDia) cUVowel? cLVowelM? c1036? _{user1 == 0}; #line 720 c101b g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cUVowel? cLVowelM c1036? _{user1 == 0}; #line 722 c101b g1037 {attach {to = @1; at = LLS; with = LM}; user1 = 1} / ^ _ cUDia? _{user1 == 0}; #line 724 cLeftLDot g1037 {attach {to = @1; at = LLS; with = LM}; user1 = 1} / ^ _ _ {user1 == 0}; #line 731 cTakesUDia cUDia {attach {to = @u; at = US; with = UM}; user1 = 1} cLVowel / ^ _ [[cnTakesUDia]? cnTakesUDia]? _{user1 == 0} _=u; #line 741 cTakesBSDia cBSDia {attach {to = @1; at = BSS; with = BSM}; user1 = 1} / ^ _ [cnTakesBSDia]? _{user1 == 0}; #line 743 cTakesBDDia cBDDia {attach {to = @1; at = BDS; with = BDM}; user1 = 1} / ^ _ [cnTakesBDDia]? _{user1 == 0}; #line 745 cTakesBSDia cBDDia {attach {to = @1; at = BSS; with = BDM}; user1 = 1} / ^ _ [cnTakesBSDia]? _{user1 == 0}; #line 747 cTakesUDia cUDia {attach {to = @1; at = US; with = UM}; user1 = 1} / ^ _ [[cnTakesUDia]? cnTakesUDia]? _{user1 == 0}; #line 755 cTakesRDia cRDia {attach {to = @1; at = RS; with = RM}; user1 = 1; insert = 1} / ^ _ _=r{user1 == 0}; #line 770 cTakesLDia cLDia {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ [[[cnTakesLDia]? cnTakesLDia]? cnTakesLDia]? _{user1 == 0}; #line 777 cCons cYMed {attach.to = @1; user1 = 1} / ^ _ cMed? g103a? _{user1 == 0}; endpass; #line 793 pass(2); g101b_alt {kern.x = @2.rkern + 10m} cHasRkern {shift.x = -rkern}; c102b {kern.x = xkern / 2} / cUDia _; cConsNar / g102b_103a=a _ cLowDia? cUDia; cCons {kern.x = -@a.xkern} / g102b_103a=a _; g1031 {kern.x = -@a.xkern} / g102b_103a=a _; cRDia {shift.x = (@r.advancewidth + @r.advance.x - advance.x) / 2 + @r.position.x - position.x} / cTakesRDia=r _; cUVowel {advance.x = 0m} / c103b _ ; #line 809 endpass; endtable; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/PadaukBenchmark_v3.gdx000066400000000000000000026740351411153030700275770ustar00rootroot00000000000000 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/dbg_classes.txt000066400000000000000000000052661411153030700264450ustar00rootroot00000000000000LINEAR (OUTPUT) CLASSES Class #0: c103c_naralt 0: 0x00b7 0x00bc 0x00c0 Class #1: c103c_widalt 0: 0x00b8 0x00bd 0x00c1 Class #2: c103c_wide 0: 0x00b9 0x00bb 0x00bf Class #3: cLVowelM 0: 0x00e3 0x00e5 Class #4: cMed 0: 0x006c 0x0070 0x0072 0x0074 0x007b 0x007d 0x007f 0x0081 0x008c 0x008e 10: 0x0093 0x0097 0x009a 0x009c 0x009e 0x00a1 0x00a5 0x00a7 0x00a9 0x00ab 20: 0x00ad 0x00c3 0x00c9 0x00d3 0x0100 0x0102 0x0104 Class #5: cNgaUVowel 0: 0x0078 0x0077 0x0079 Class #6: cUWithMa 0: 0x00e0 0x0079 Class #7: g1004_med 0: 0x0076 Class #8: g100a_alt 0: 0x0085 Class #9: g100b_100b 0: 0x0089 Class #10: g100b_100c 0: 0x008a Class #11: g100d_100d 0: 0x008f Class #12: g100d_100e 0: 0x0090 Class #13: g100f_100b 0: 0x0094 Class #14: g100f_100d 0: 0x0095 Class #15: g1010_103d_med 0: 0x0098 Class #16: g1014_1010_103c 0: 0x00a3 Class #17: g1014_alt 0: 0x00a0 Class #18: g101b_alt 0: 0x00b4 Class #19: g101b_long 0: 0x00b5 Class #20: g101e_1010_103c 0: 0x00ca Class #21: g1025 0: 0x00d6 Class #22: g102b_103a 0: 0x00de Class #23: g103b_103d 0: 0x00b0 Class #24: g103b_103d_103e 0: 0x00b1 Class #25: g103b_103e 0: 0x00b2 Class #26: g103c_102f_narr 0: 0x00be Class #27: g103c_103d_narr 0: 0x00ba Class #28: g103d_103e 0: 0x00c6 Class #29: g103d_103e_small 0: 0x00c7 Class #30: g103e_102f 0: 0x00cf Class #31: g103e_1030 0: 0x00d0 Class #32: g103e_alt 0: 0x00ce Class #33: g_circledash 0: 0x006a Class #34: g1009 0: 0x0082 Class #35: g100a 0: 0x0084 Class #36: g100b 0: 0x0086 Class #37: g100d 0: 0x008d Class #38: g100e 0: 0x0091 Class #39: g100f 0: 0x0092 Class #40: g1014 0: 0x009f Class #41: g101b 0: 0x00b3 Class #42: g101e 0: 0x00c8 Class #43: g102b 0: 0x00dd Class #44: g1039 0: 0x00ee Class #45: g103b 0: 0x00af Class #46: g103c 0: 0x00b6 Class #47: g103d 0: 0x00c5 Class #48: g103e 0: 0x00cd INDEXED (INPUT) CLASSES Class #49: c103c_nar 0x00b6 : 0 0x00ba : 1 0x00be : 2 Class #50: cLVowel 0x00e2 : 0 0x00e4 : 1 Class #51: cMedBase 0x006b : 0 0x006f : 1 0x0071 : 2 0x0073 : 3 0x007a : 4 0x007c : 5 0x007e : 6 0x0080 : 7 0x008b : 8 0x008d : 9 0x0092 : 10 0x0096 : 11 0x0099 : 12 0x009b : 13 0x009d : 14 0x009f : 15 0x00a4 : 16 0x00a6 : 17 0x00a8 : 18 0x00aa : 19 0x00ac : 20 0x00c2 : 21 0x00c8 : 22 0x00d2 : 23 0x00ff : 24 0x0101 : 25 0x0103 : 26 Class #52: cUTakesMa 0x0076 : 1 0x00df : 0 Class #53: cUVowelNga 0x00df : 1 0x00e1 : 0 0x00ea : 2 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/dbg_cmap.txt000066400000000000000000000230631411153030700257230ustar00rootroot00000000000000UNICODE => GLYPH ID MAPPINGS U+0020 => 3 (0x0003) U+0021 => 4 (0x0004) U+0022 => 5 (0x0005) U+0023 => 6 (0x0006) U+0024 => 7 (0x0007) U+0025 => 8 (0x0008) U+0026 => 9 (0x0009) U+0027 => 10 (0x000a) U+0028 => 11 (0x000b) U+0029 => 12 (0x000c) U+002A => 13 (0x000d) U+002B => 14 (0x000e) U+002C => 15 (0x000f) U+002D => 16 (0x0010) U+002E => 17 (0x0011) U+002F => 18 (0x0012) U+0030 => 19 (0x0013) U+0031 => 20 (0x0014) U+0032 => 21 (0x0015) U+0033 => 22 (0x0016) U+0034 => 23 (0x0017) U+0035 => 24 (0x0018) U+0036 => 25 (0x0019) U+0037 => 26 (0x001a) U+0038 => 27 (0x001b) U+0039 => 28 (0x001c) U+003A => 29 (0x001d) U+003B => 30 (0x001e) U+003C => 31 (0x001f) U+003D => 32 (0x0020) U+003E => 33 (0x0021) U+003F => 34 (0x0022) U+0040 => 35 (0x0023) U+0041 => 36 (0x0024) U+0042 => 37 (0x0025) U+0043 => 38 (0x0026) U+0044 => 39 (0x0027) U+0045 => 40 (0x0028) U+0046 => 41 (0x0029) U+0047 => 42 (0x002a) U+0048 => 43 (0x002b) U+0049 => 44 (0x002c) U+004A => 45 (0x002d) U+004B => 46 (0x002e) U+004C => 47 (0x002f) U+004D => 48 (0x0030) U+004E => 49 (0x0031) U+004F => 50 (0x0032) U+0050 => 51 (0x0033) U+0051 => 52 (0x0034) U+0052 => 53 (0x0035) U+0053 => 54 (0x0036) U+0054 => 55 (0x0037) U+0055 => 56 (0x0038) U+0056 => 57 (0x0039) U+0057 => 58 (0x003a) U+0058 => 59 (0x003b) U+0059 => 60 (0x003c) U+005A => 61 (0x003d) U+005B => 62 (0x003e) U+005C => 63 (0x003f) U+005D => 64 (0x0040) U+005E => 65 (0x0041) U+005F => 66 (0x0042) U+0060 => 67 (0x0043) U+0061 => 68 (0x0044) U+0062 => 69 (0x0045) U+0063 => 70 (0x0046) U+0064 => 71 (0x0047) U+0065 => 72 (0x0048) U+0066 => 73 (0x0049) U+0067 => 74 (0x004a) U+0068 => 75 (0x004b) U+0069 => 76 (0x004c) U+006A => 77 (0x004d) U+006B => 78 (0x004e) U+006C => 79 (0x004f) U+006D => 80 (0x0050) U+006E => 81 (0x0051) U+006F => 82 (0x0052) U+0070 => 83 (0x0053) U+0071 => 84 (0x0054) U+0072 => 85 (0x0055) U+0073 => 86 (0x0056) U+0074 => 87 (0x0057) U+0075 => 88 (0x0058) U+0076 => 89 (0x0059) U+0077 => 90 (0x005a) U+0078 => 91 (0x005b) U+0079 => 92 (0x005c) U+007A => 93 (0x005d) U+007B => 94 (0x005e) U+007C => 95 (0x005f) U+007D => 96 (0x0060) U+007E => 97 (0x0061) U+00D7 => 98 (0x0062) U+1000 => 107 (0x006b) U+1001 => 111 (0x006f) U+1002 => 113 (0x0071) U+1003 => 115 (0x0073) U+1004 => 117 (0x0075) U+1005 => 122 (0x007a) U+1006 => 124 (0x007c) U+1007 => 126 (0x007e) U+1008 => 128 (0x0080) U+1009 => 130 (0x0082) U+100A => 132 (0x0084) U+100B => 134 (0x0086) U+100C => 139 (0x008b) U+100D => 141 (0x008d) U+100E => 145 (0x0091) U+100F => 146 (0x0092) U+1010 => 150 (0x0096) U+1011 => 153 (0x0099) U+1012 => 155 (0x009b) U+1013 => 157 (0x009d) U+1014 => 159 (0x009f) U+1015 => 164 (0x00a4) U+1016 => 166 (0x00a6) U+1017 => 168 (0x00a8) U+1018 => 170 (0x00aa) U+1019 => 172 (0x00ac) U+101A => 174 (0x00ae) U+101B => 179 (0x00b3) U+101C => 194 (0x00c2) U+101D => 196 (0x00c4) U+101E => 200 (0x00c8) U+101F => 204 (0x00cc) U+1020 => 209 (0x00d1) U+1021 => 210 (0x00d2) U+1023 => 212 (0x00d4) U+1024 => 213 (0x00d5) U+1025 => 214 (0x00d6) U+1026 => 215 (0x00d7) U+1027 => 216 (0x00d8) U+1028 => 217 (0x00d9) U+1029 => 218 (0x00da) U+102A => 219 (0x00db) U+102B => 221 (0x00dd) U+102C => 220 (0x00dc) U+102D => 223 (0x00df) U+102E => 225 (0x00e1) U+102F => 226 (0x00e2) U+1030 => 228 (0x00e4) U+1031 => 230 (0x00e6) U+1032 => 231 (0x00e7) U+1033 => 232 (0x00e8) U+1034 => 233 (0x00e9) U+1036 => 234 (0x00ea) U+1037 => 235 (0x00eb) U+1038 => 236 (0x00ec) U+1039 => 238 (0x00ee) U+103A => 237 (0x00ed) U+103B => 175 (0x00af) U+103C => 182 (0x00b6) U+103D => 197 (0x00c5) U+103E => 205 (0x00cd) U+103F => 203 (0x00cb) U+1040 => 239 (0x00ef) U+1041 => 240 (0x00f0) U+1042 => 241 (0x00f1) U+1043 => 242 (0x00f2) U+1044 => 243 (0x00f3) U+1045 => 244 (0x00f4) U+1046 => 245 (0x00f5) U+1047 => 246 (0x00f6) U+1048 => 247 (0x00f7) U+1049 => 248 (0x00f8) U+104A => 249 (0x00f9) U+104B => 250 (0x00fa) U+104C => 251 (0x00fb) U+104D => 252 (0x00fc) U+104E => 253 (0x00fd) U+104F => 254 (0x00fe) U+105A => 255 (0x00ff) U+105B => 257 (0x0101) U+105C => 259 (0x0103) U+105D => 261 (0x0105) U+105E => 262 (0x0106) U+105F => 263 (0x0107) U+1060 => 264 (0x0108) U+1061 => 265 (0x0109) U+1062 => 266 (0x010a) U+1063 => 267 (0x010b) U+1064 => 268 (0x010c) U+200B => 269 (0x010d) U+200C => 270 (0x010e) U+200D => 271 (0x010f) U+2013 => 103 (0x0067) U+2014 => 104 (0x0068) U+2018 => 101 (0x0065) U+2019 => 102 (0x0066) U+201C => 99 (0x0063) U+201D => 100 (0x0064) U+2060 => 272 (0x0110) U+2260 => 105 (0x0069) U+25CC => 106 (0x006a) GLYPH ID => UNICODE MAPPINGS 3 => U+0020 ' ' 4 => U+0021 '!' 5 => U+0022 '"' 6 => U+0023 '#' 7 => U+0024 '$' 8 => U+0025 '%' 9 => U+0026 '&' 10 => U+0027 ''' 11 => U+0028 '(' 12 => U+0029 ')' 13 => U+002A '*' 14 => U+002B '+' 15 => U+002C ',' 16 => U+002D '-' 17 => U+002E '.' 18 => U+002F '/' 19 => U+0030 '0' 20 => U+0031 '1' 21 => U+0032 '2' 22 => U+0033 '3' 23 => U+0034 '4' 24 => U+0035 '5' 25 => U+0036 '6' 26 => U+0037 '7' 27 => U+0038 '8' 28 => U+0039 '9' 29 => U+003A ':' 30 => U+003B ';' 31 => U+003C '<' 32 => U+003D '=' 33 => U+003E '>' 34 => U+003F '?' 35 => U+0040 '@' 36 => U+0041 'A' 37 => U+0042 'B' 38 => U+0043 'C' 39 => U+0044 'D' 40 => U+0045 'E' 41 => U+0046 'F' 42 => U+0047 'G' 43 => U+0048 'H' 44 => U+0049 'I' 45 => U+004A 'J' 46 => U+004B 'K' 47 => U+004C 'L' 48 => U+004D 'M' 49 => U+004E 'N' 50 => U+004F 'O' 51 => U+0050 'P' 52 => U+0051 'Q' 53 => U+0052 'R' 54 => U+0053 'S' 55 => U+0054 'T' 56 => U+0055 'U' 57 => U+0056 'V' 58 => U+0057 'W' 59 => U+0058 'X' 60 => U+0059 'Y' 61 => U+005A 'Z' 62 => U+005B '[' 63 => U+005C '\' 64 => U+005D ']' 65 => U+005E '^' 66 => U+005F '_' 67 => U+0060 '`' 68 => U+0061 'a' 69 => U+0062 'b' 70 => U+0063 'c' 71 => U+0064 'd' 72 => U+0065 'e' 73 => U+0066 'f' 74 => U+0067 'g' 75 => U+0068 'h' 76 => U+0069 'i' 77 => U+006A 'j' 78 => U+006B 'k' 79 => U+006C 'l' 80 => U+006D 'm' 81 => U+006E 'n' 82 => U+006F 'o' 83 => U+0070 'p' 84 => U+0071 'q' 85 => U+0072 'r' 86 => U+0073 's' 87 => U+0074 't' 88 => U+0075 'u' 89 => U+0076 'v' 90 => U+0077 'w' 91 => U+0078 'x' 92 => U+0079 'y' 93 => U+007A 'z' 94 => U+007B '{' 95 => U+007C '|' 96 => U+007D '}' 97 => U+007E '~' 98 => U+00D7 '' 99 => U+201C 100 => U+201D 101 => U+2018 102 => U+2019 103 => U+2013 104 => U+2014 105 => U+2260 106 => U+25CC 107 => U+1000 111 => U+1001 113 => U+1002 115 => U+1003 117 => U+1004 122 => U+1005 124 => U+1006 126 => U+1007 128 => U+1008 130 => U+1009 132 => U+100A 134 => U+100B 139 => U+100C 141 => U+100D 145 => U+100E 146 => U+100F 150 => U+1010 153 => U+1011 155 => U+1012 157 => U+1013 159 => U+1014 164 => U+1015 166 => U+1016 168 => U+1017 170 => U+1018 172 => U+1019 174 => U+101A 175 => U+103B 179 => U+101B 182 => U+103C 194 => U+101C 196 => U+101D 197 => U+103D 200 => U+101E 203 => U+103F 204 => U+101F 205 => U+103E 209 => U+1020 210 => U+1021 212 => U+1023 213 => U+1024 214 => U+1025 215 => U+1026 216 => U+1027 217 => U+1028 218 => U+1029 219 => U+102A 220 => U+102C 221 => U+102B 223 => U+102D 225 => U+102E 226 => U+102F 228 => U+1030 230 => U+1031 231 => U+1032 232 => U+1033 233 => U+1034 234 => U+1036 235 => U+1037 236 => U+1038 237 => U+103A 238 => U+1039 239 => U+1040 240 => U+1041 241 => U+1042 242 => U+1043 243 => U+1044 244 => U+1045 245 => U+1046 246 => U+1047 247 => U+1048 248 => U+1049 249 => U+104A 250 => U+104B 251 => U+104C 252 => U+104D 253 => U+104E 254 => U+104F 255 => U+105A 257 => U+105B 259 => U+105C 261 => U+105D 262 => U+105E 263 => U+105F 264 => U+1060 265 => U+1061 266 => U+1062 267 => U+1063 268 => U+1064 269 => U+200B 270 => U+200C 271 => U+200D 272 => U+2060 273 [line-break] 274 [phantom] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/dbg_enginecode.txt000066400000000000000000002440461411153030700271110ustar00rootroot00000000000000ENGINE CODE FOR RULES TABLE: linebreak PASS: 1 PASS CONSTRAINTS: none RULE 1.0, PadaukMain.gdl(407): cSection { break = 10; } / ANY _ ^ cCons ; ACTIONS: PutCopy 0 PushByte 10 AttrSet break Next PushByte 0 PopRet CONSTRAINTS: none RULE 1.1, PadaukMain.gdl(408): g_space { break = 10; } / ANY _ ^ cCons ; ACTIONS: PutCopy 0 PushByte 10 AttrSet break Next PushByte 0 PopRet CONSTRAINTS: none RULE 1.2, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia cnTakesUDia cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -7 PopRet CONSTRAINTS: none RULE 1.3, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -6 PopRet CONSTRAINTS: none RULE 1.4, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -5 PopRet CONSTRAINTS: none RULE 1.5, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -4 PopRet CONSTRAINTS: none RULE 1.6, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -3 PopRet CONSTRAINTS: none RULE 1.7, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia cnTakesUDia cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -5 PopRet CONSTRAINTS: none RULE 1.8, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -4 PopRet CONSTRAINTS: none RULE 1.9, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -3 PopRet CONSTRAINTS: none RULE 1.10, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext PutCopy 0 PushByte -50 AttrSet break Next PushByte -2 PopRet CONSTRAINTS: none RULE 1.11, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next PutCopy 0 PushByte -50 AttrSet break Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.12, PadaukMain.gdl(416): cCons { break = -30; } cMedBase { break = -50; } / ANY _ g1039 _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next CopyNext PutCopy 0 PushByte -50 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.13, PadaukMain.gdl(417): cCons { break = -30; } cClusMed { break = -50; } / ANY _ _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next PutCopy 0 PushByte -50 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.14, PadaukMain.gdl(420): cCons { break = -50; } / g1039 _ ; ACTIONS: PutCopy 0 PushByte -50 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.15, PadaukMain.gdl(423): cCons { break = -30; } / g2060 _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.16, PadaukMain.gdl(426): cCons { break = -30; } / g1021 _ ; ACTIONS: PutCopy 0 PushByte -30 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.17, PadaukMain.gdl(429): ANYGlyph { break = 40; } / cLQuote ^ _ ; ACTIONS: PutCopy 0 PushByte 40 AttrSet break Next PushByte -1 PopRet CONSTRAINTS: none RULE 1.18, PadaukMain.gdl(430): ANYGlyph { break = -40; } / ANY _ ^ cRQuote ; ACTIONS: PutCopy 0 PushByte -40 AttrSet break Next PushByte 0 PopRet CONSTRAINTS: none RULE 1.19, PadaukMain.gdl(433): cSection { break = 30; } / ANY _ cNum ; ACTIONS: PutCopy 0 PushByte 30 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.20, PadaukMain.gdl(435): cNum { break = -15; } / cCons _ ; ACTIONS: PutCopy 0 PushByte -15 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.21, PadaukMain.gdl(436): cSigns { break = -15; } / cSection _ ; ACTIONS: PutCopy 0 PushByte -15 AttrSet break Next RetZero CONSTRAINTS: none RULE 1.22, PadaukMain.gdl(439): cSigns { break = 40; } / ANY _ cSection ; ACTIONS: PutCopy 0 PushByte 40 AttrSet break Next RetZero CONSTRAINTS: none TABLE: substitution PASS: 0 PASS CONSTRAINTS: none NO RULES PASS: 2 PASS CONSTRAINTS: none RULE 2.0, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -10 -9 -8 Next PushByte -9 PopRet CONSTRAINTS: none RULE 2.1, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -9 -8 -7 Next PushByte -8 PopRet CONSTRAINTS: none RULE 2.2, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -9 -8 -7 Next PushByte -8 PopRet CONSTRAINTS: none RULE 2.3, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -8 -7 -6 Next PushByte -7 PopRet CONSTRAINTS: none RULE 2.4, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -8 -7 -6 Next PushByte -7 PopRet CONSTRAINTS: none RULE 2.5, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.6, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.7, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.8, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.9, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -5 -4 -3 Next PushByte -4 PopRet CONSTRAINTS: none RULE 2.10, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -8 -7 -6 Next PushByte -7 PopRet CONSTRAINTS: none RULE 2.11, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.12, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.13, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.14, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.15, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -5 -4 -3 Next PushByte -4 PopRet CONSTRAINTS: none RULE 2.16, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -5 -4 -3 Next PushByte -4 PopRet CONSTRAINTS: none RULE 2.17, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -4 -3 -2 Next PushByte -3 PopRet CONSTRAINTS: none RULE 2.18, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext Insert PutGlyph 7 Assoc 3 -4 -3 -2 Next PushByte -3 PopRet CONSTRAINTS: none RULE 2.19, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext Insert PutGlyph 7 Assoc 3 -3 -2 -1 Next PushByte -2 PopRet CONSTRAINTS: none RULE 2.20, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -11 -10 -9 -8 Next PushByte -9 PopRet CONSTRAINTS: none RULE 2.21, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -10 -9 -8 -7 Next PushByte -8 PopRet CONSTRAINTS: none RULE 2.22, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -10 -9 -8 -7 Next PushByte -8 PopRet CONSTRAINTS: none RULE 2.23, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -9 -8 -7 -6 Next PushByte -7 PopRet CONSTRAINTS: none RULE 2.24, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -9 -8 -7 -6 Next PushByte -7 PopRet CONSTRAINTS: none RULE 2.25, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -8 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.26, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -8 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.27, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -7 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.28, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -7 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.29, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -6 -5 -4 -3 Next PushByte -4 PopRet CONSTRAINTS: none RULE 2.30, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -9 -8 -7 -6 Next PushByte -7 PopRet CONSTRAINTS: none RULE 2.31, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -8 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.32, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -8 -7 -6 -5 Next PushByte -6 PopRet CONSTRAINTS: none RULE 2.33, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -7 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.34, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -7 -6 -5 -4 Next PushByte -5 PopRet CONSTRAINTS: none RULE 2.35, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -6 -5 -4 -3 Next PushByte -4 PopRet CONSTRAINTS: none RULE 2.36, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -6 -5 -4 -3 Next PushByte -4 PopRet CONSTRAINTS: none RULE 2.37, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -5 -4 -3 -2 Next PushByte -3 PopRet CONSTRAINTS: none RULE 2.38, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1031 _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext CopyNext PutSubs 0 53 5 Assoc 4 -5 -4 -3 -2 Next PushByte -3 PopRet CONSTRAINTS: none RULE 2.39, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* _ ; ACTIONS: Delete Next Delete Next Delete Next CopyNext PutSubs 0 53 5 Assoc 4 -4 -3 -2 -1 Next PushByte -2 PopRet CONSTRAINTS: none RULE 2.40, PadaukMain.gdl(466): g1039 cMedBase > _ cMed:(2 3) / ANY _ _ ; ACTIONS: Delete Next PutSubs 0 51 4 Assoc 2 -1 0 Next RetZero CONSTRAINTS: none RULE 2.41, PadaukMain.gdl(470): g1039 g1010 g103d > g1010_103d_med:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 15 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.42, PadaukMain.gdl(471): g100b g1039 g100b > g100b_100b:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 9 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.43, PadaukMain.gdl(472): g100b g1039 g100c > g100b_100c:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 10 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.44, PadaukMain.gdl(473): g100d g1039 g100d > g100d_100d:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 11 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.45, PadaukMain.gdl(474): g100e g1039 g100d > g100d_100e:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 12 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.46, PadaukMain.gdl(475): g100f g1039 g100b > g100f_100b:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 13 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.47, PadaukMain.gdl(476): g100f g1039 g100d > g100f_100d:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 14 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.48, PadaukMain.gdl(477): g1014 g1039 g1010 g103c > g1014_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; ACTIONS: PutGlyph 16 Assoc 4 0 1 2 3 Next Delete Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.49, PadaukMain.gdl(478): g1014 g1039 g1010 g103c > g1014_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; ACTIONS: PutGlyph 16 Assoc 4 0 1 2 3 Next Delete Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.50, PadaukMain.gdl(479): g101e g1039 g1010 g103c > g101e_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; ACTIONS: PutGlyph 20 Assoc 4 0 1 2 3 Next Delete Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.51, PadaukMain.gdl(480): g103b g103d g103e > g103b_103d_103e:(2 3 4) _ _ / ANY _ _ _ ; ACTIONS: PutGlyph 24 Assoc 3 0 1 2 Next Delete Next Delete Next RetZero CONSTRAINTS: none RULE 2.52, PadaukMain.gdl(481): g103b g103e > g103b_103e:(2 3) _ / ANY _ _ ; ACTIONS: PutGlyph 25 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 2.53, PadaukMain.gdl(482): g103c g103d g103e > @2 g103d_103e _ / ANY _ _ _ ; ACTIONS: PutCopy 0 Next PutGlyph 28 Next Delete Next RetZero CONSTRAINTS: none RULE 2.54, PadaukMain.gdl(483): g103c g103d > g103c_103d_narr:(2 3) _ / ANY _ _ ; ACTIONS: PutGlyph 27 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 2.55, PadaukMain.gdl(484): g103d g103e > g103d_103e_small:(2 3) _ / g103c _ _ ; ACTIONS: PutGlyph 29 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 2.56, PadaukMain.gdl(485): g103d g103e > g103d_103e:(2 3) _ / ANY _ _ ; ACTIONS: PutGlyph 28 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 2.57, PadaukMain.gdl(486): g103b g103d > g103b_103d:(2 3) _ / ANY _ _ ; ACTIONS: PutGlyph 23 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 2.58, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @7 / ANY _ _ _ g1031 cUVowel _ ; ACTIONS: Delete Next PutSubs 0 51 4 Next PutCopy 0 Next CopyNext CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.59, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @6 / ANY _ _ _ g1031 _ ; ACTIONS: Delete Next PutSubs 0 51 4 Next PutCopy 0 Next CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.60, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @6 / ANY _ _ _ cUVowel _ ; ACTIONS: Delete Next PutSubs 0 51 4 Next PutCopy 0 Next CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.61, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @5 / ANY _ _ _ _ ; ACTIONS: Delete Next PutSubs 0 51 4 Next PutCopy 0 Next PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.62, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @6 / ANY _ _ g1031 cUVowel _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next CopyNext CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.63, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @5 / ANY _ _ g1031 _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.64, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @5 / ANY _ _ cUVowel _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.65, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @4 / ANY _ _ _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.66, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @6 / ANY _ _ g1031 cUVowel _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next CopyNext CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.67, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @5 / ANY _ _ g1031 _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.68, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @5 / ANY _ _ cUVowel _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next CopyNext PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.69, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @4 / ANY _ _ _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next PutCopy 0 Next RetZero CONSTRAINTS: none RULE 2.70, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 5) _ / ANY _ g1031 cUVowel _ ; ACTIONS: PutGlyph 26 Assoc 2 0 3 Next CopyNext CopyNext Delete Next RetZero CONSTRAINTS: none RULE 2.71, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 4) _ / ANY _ g1031 _ ; ACTIONS: PutGlyph 26 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: none RULE 2.72, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 4) _ / ANY _ cUVowel _ ; ACTIONS: PutGlyph 26 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: none RULE 2.73, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 3) _ / ANY _ _ ; ACTIONS: PutGlyph 26 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 2.74, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 5) _ / ANY _ g1031 cUVowel _ ; ACTIONS: PutGlyph 30 Assoc 2 0 3 Next CopyNext CopyNext Delete Next RetZero CONSTRAINTS: none RULE 2.75, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 4) _ / ANY _ g1031 _ ; ACTIONS: PutGlyph 30 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: none RULE 2.76, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 4) _ / ANY _ cUVowel _ ; ACTIONS: PutGlyph 30 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: none RULE 2.77, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 3) _ / ANY _ _ ; ACTIONS: PutGlyph 30 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 2.78, PadaukMain.gdl(492): g103e g1030 > g103e_1030:(2 4) _ / ANY _ g1031 _ ; ACTIONS: PutGlyph 31 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: none RULE 2.79, PadaukMain.gdl(492): g103e g1030 > g103e_1030:(2 3) _ / ANY _ _ ; ACTIONS: PutGlyph 31 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none PASS: 3 PASS CONSTRAINTS: none RULE 3.0, PadaukMain.gdl(538): ANYGlyph > @3 / cCons g103a ^ _{ order > 1 } ; ACTIONS: PutCopy 0 Next PushByte -1 PopRet CONSTRAINTS: CntxtItem 0 7 PushGlyphAttr 28 0 PushByte 1 Gtr PopRet RULE 3.1, PadaukMain.gdl(542): _ > g_circledash:2 / ANY ANYGlyph _ ^ ANYGlyph{ (order > 1) && (order <= @2.order) } ; ACTIONS: Insert PutGlyph 33 Assoc 1 0 Next PushByte 0 PopRet CONSTRAINTS: CntxtItem 0 17 PushGlyphAttr 28 0 PushByte 1 Gtr PushGlyphAttr 28 0 PushGlyphAttr 28 -1 LessEq And PopRet RULE 3.2, PadaukMain.gdl(543): _ > g_circledash:2 / ANY ANYGlyph{ order == 0 } _ ^ ANYGlyph{ order > 1 } ; ACTIONS: Insert PutGlyph 33 Assoc 1 0 Next PushByte 0 PopRet CONSTRAINTS: CntxtItem -1 7 PushGlyphAttr 28 0 PushByte 0 Equal CntxtItem 0 7 PushGlyphAttr 28 0 PushByte 1 Gtr And PopRet PASS: 4 PASS CONSTRAINTS: none RULE 4.0, PadaukMain.gdl(564): g1014 > g1014_alt / ANY ANY *GC2* _ ; ACTIONS: PutGlyph 17 Next RetZero CONSTRAINTS: none RULE 4.1, PadaukMain.gdl(571): _ g1031 > @12:12 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 8 Assoc 1 8 Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -7 PopRet CONSTRAINTS: none RULE 4.2, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 7 Assoc 1 7 Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -6 PopRet CONSTRAINTS: none RULE 4.3, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 6 Assoc 1 6 Next CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 4.4, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia _ ; ACTIONS: Insert PutCopy 5 Assoc 1 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.5, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ c103c cCons cMed _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.6, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 7 Assoc 1 7 Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -6 PopRet CONSTRAINTS: none RULE 4.7, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 6 Assoc 1 6 Next CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 4.8, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 5 Assoc 1 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.9, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ c103c cCons cClusDia _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.10, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ c103c cCons _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.11, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 7 Assoc 1 7 Next CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -6 PopRet CONSTRAINTS: none RULE 4.12, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 6 Assoc 1 6 Next CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 4.13, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 5 Assoc 1 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.14, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ cCons cMed cClusDia _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.15, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ cCons cMed _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.16, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 6 Assoc 1 6 Next CopyNext CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -5 PopRet CONSTRAINTS: none RULE 4.17, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 5 Assoc 1 5 Next CopyNext CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.18, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.19, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ cCons cClusDia _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.20, PadaukMain.gdl(571): _ g1031 > @6:6 _ / ANY ANY ANY _ ^ cCons _ ; ACTIONS: Insert PutCopy 2 Assoc 1 2 Next CopyNext Delete Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.21, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$8:8 _ / ANY ANY ANY ^ _ cConsWide cMed c103b _ ; ACTIONS: Insert PutSubs 4 49 2 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.22, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ ; ACTIONS: Insert PutSubs 3 49 2 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.23, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsWide c103b _ ; ACTIONS: Insert PutSubs 3 49 2 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.24, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$6:6 _ / ANY ANY ANY ^ _ cConsWide _ ; ACTIONS: Insert PutSubs 2 49 2 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.25, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103d c103e cUSpace ; ACTIONS: Insert PutSubs 3 49 0 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.26, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103d cUSpace ; ACTIONS: Insert PutSubs 3 49 0 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.27, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103e cUSpace ; ACTIONS: Insert PutSubs 3 49 0 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.28, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ cUSpace ; ACTIONS: Insert PutSubs 3 49 0 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.29, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103d c103e cUSpace ; ACTIONS: Insert PutSubs 2 49 0 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.30, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103d cUSpace ; ACTIONS: Insert PutSubs 2 49 0 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.31, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103e cUSpace ; ACTIONS: Insert PutSubs 2 49 0 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.32, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ cUSpace ; ACTIONS: Insert PutSubs 2 49 0 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.33, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103d c103e cUSpace ; ACTIONS: Insert PutSubs 3 49 1 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.34, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103d cUSpace ; ACTIONS: Insert PutSubs 3 49 1 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.35, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103e cUSpace ; ACTIONS: Insert PutSubs 3 49 1 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.36, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ cUSpace ; ACTIONS: Insert PutSubs 3 49 1 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.37, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103d c103e cUSpace ; ACTIONS: Insert PutSubs 2 49 1 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.38, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103d cUSpace ; ACTIONS: Insert PutSubs 2 49 1 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.39, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103e cUSpace ; ACTIONS: Insert PutSubs 2 49 1 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.40, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ cUSpace ; ACTIONS: Insert PutSubs 2 49 1 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.41, PadaukMain.gdl(585): _ c103c_nar > c103c_naralt$8:8 _ / ANY ANY ANY ^ _ cConsNar g103a cMedNar _ ; ACTIONS: Insert PutSubs 4 49 0 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.42, PadaukMain.gdl(585): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar g103a _ ; ACTIONS: Insert PutSubs 3 49 0 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.43, PadaukMain.gdl(586): _ c103c_nar > c103c_widalt$8:8 _ / ANY ANY ANY ^ _ cConsWide g103a cMed _ ; ACTIONS: Insert PutSubs 4 49 1 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.44, PadaukMain.gdl(586): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide g103a _ ; ACTIONS: Insert PutSubs 3 49 1 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.45, PadaukMain.gdl(587): _ c103c_nar > @8:8 _ / ANY ANY ANY ^ _ cConsNar cMedNar c103b _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.46, PadaukMain.gdl(587): _ c103c_nar > @7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.47, PadaukMain.gdl(587): _ c103c_nar > @7:7 _ / ANY ANY ANY ^ _ cConsNar c103b _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.48, PadaukMain.gdl(587): _ c103c_nar > @6:6 _ / ANY ANY ANY ^ _ cConsNar _ ; ACTIONS: Insert PutCopy 2 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.49, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$8:8 _ / ANY ANY ANY ^ _ cConsNar cMed c103b _ ; ACTIONS: Insert PutSubs 4 49 2 Assoc 1 4 Next CopyNext CopyNext CopyNext Delete Next PushByte -4 PopRet CONSTRAINTS: none RULE 4.50, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsNar cMed _ ; ACTIONS: Insert PutSubs 3 49 2 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.51, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsNar c103b _ ; ACTIONS: Insert PutSubs 3 49 2 Assoc 1 3 Next CopyNext CopyNext Delete Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.52, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$6:6 _ / ANY ANY ANY ^ _ cConsNar _ ; ACTIONS: Insert PutSubs 2 49 2 Assoc 1 2 Next CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.53, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ c103e cUVowel cLVowelAll ; ACTIONS: PutGlyph 18 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.54, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ c103e cLVowelAll ; ACTIONS: PutGlyph 18 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.55, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ cUVowel cLVowelAll ; ACTIONS: PutGlyph 18 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.56, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ cLVowelAll ; ACTIONS: PutGlyph 18 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.57, PadaukMain.gdl(596): g101b > g101b_alt / ANY ANY ANY ^ _ c103d ; ACTIONS: PutGlyph 18 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.58, PadaukMain.gdl(597): g101b > g101b_alt / ANY ANY ANY ^ _ c103b ; ACTIONS: PutGlyph 18 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.59, PadaukMain.gdl(598): g101b > g101b_long / ANY ANY ANY ^ _ g103e ; ACTIONS: PutGlyph 19 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.60, PadaukMain.gdl(599): g101b > g101b_long / ANY ANY ANY ^ _ cMed cUVowel cLVowel ; ACTIONS: PutGlyph 19 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.61, PadaukMain.gdl(599): g101b > g101b_long / ANY ANY ANY ^ _ cMed cLVowel ; ACTIONS: PutGlyph 19 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.62, PadaukMain.gdl(608): g1030 > @4 / c103c_only cConsSVowel cUVowel _ ; ACTIONS: PutCopy 0 Next PushByte 0 PopRet CONSTRAINTS: none RULE 4.63, PadaukMain.gdl(608): g1030 > @4 / ANY c103c_only cConsSVowel _ ; ACTIONS: PutCopy 0 Next PushByte 0 PopRet CONSTRAINTS: none RULE 4.64, PadaukMain.gdl(609): cLVowel > cLVowelM / ANY ^ cConsSVowel cUVowel _ ; ACTIONS: PutSubs 0 50 3 Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.65, PadaukMain.gdl(609): cLVowel > cLVowelM / ANY ANY ^ cConsSVowel _ ; ACTIONS: PutSubs 0 50 3 Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.66, PadaukMain.gdl(610): g1014 cLVowel > g1014_alt:4 cLVowelM:6 / ANY ANY ANY ^ _ cUVowel _ ; ACTIONS: PutGlyph 17 Assoc 1 0 Next CopyNext PutSubs 0 50 3 Assoc 1 0 Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.67, PadaukMain.gdl(610): g1014 cLVowel > g1014_alt:4 cLVowelM:5 / ANY ANY ANY ^ _ _ ; ACTIONS: PutGlyph 17 Assoc 1 0 Next PutSubs 0 50 3 Assoc 1 0 Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.68, PadaukMain.gdl(611): g100a cLVowel > g100a_alt:4 cLVowelM:6 / ANY ANY ANY ^ _ cUVowel _ ; ACTIONS: PutGlyph 8 Assoc 1 0 Next CopyNext PutSubs 0 50 3 Assoc 1 0 Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.69, PadaukMain.gdl(611): g100a cLVowel > g100a_alt:4 cLVowelM:5 / ANY ANY ANY ^ _ _ ; ACTIONS: PutGlyph 8 Assoc 1 0 Next PutSubs 0 50 3 Assoc 1 0 Next PushByte -2 PopRet CONSTRAINTS: none RULE 4.70, PadaukMain.gdl(612): g103d_103e > g103d_103e_small / ANY c103c cCons _ ; ACTIONS: PutGlyph 29 Next RetZero CONSTRAINTS: none RULE 4.71, PadaukMain.gdl(613): cUTakesMa g1036 > cUWithMa:(4 6) _ / ANY ANY ANY _ cLVowel _ ; ACTIONS: PutSubs 0 52 6 Assoc 2 0 2 Next CopyNext Delete Next RetZero CONSTRAINTS: none RULE 4.72, PadaukMain.gdl(613): cUTakesMa g1036 > cUWithMa:(4 5) _ / ANY ANY ANY _ _ ; ACTIONS: PutSubs 0 52 6 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none RULE 4.73, PadaukMain.gdl(619): g1014 > g1014_alt / ANY ANY ANY ^ _ t1014 ; ACTIONS: PutGlyph 17 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.74, PadaukMain.gdl(620): g100a > g100a_alt / ANY ANY ANY ^ _ t100a ; ACTIONS: PutGlyph 8 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.75, PadaukMain.gdl(621): g1009 > g1025 / ANY ANY ANY ^ _ g103a ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.76, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e g1031 cUVowel cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.77, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e g1031 cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.78, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e cUVowel cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.79, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.80, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ g1031 cUVowel cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.81, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ g1031 cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.82, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ cUVowel cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.83, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ cCons ; ACTIONS: PutGlyph 21 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.84, PadaukMain.gdl(628): g103e > g103e_alt / ANY ^ c103c cConsSVowel _ ; ACTIONS: PutGlyph 32 Next PushByte -3 PopRet CONSTRAINTS: none RULE 4.85, PadaukMain.gdl(629): g103e > g103e_alt / ANY ANY cConsSlantH _ ; ACTIONS: PutGlyph 32 Next RetZero CONSTRAINTS: none RULE 4.86, PadaukMain.gdl(635): g102b g103a > g102b_103a:(4 5) _ / ANY ANY ANY _ _ ; ACTIONS: PutGlyph 22 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: none TABLE: positioning PASS: 0 PASS CONSTRAINTS: none NO RULES PASS: 5 PASS CONSTRAINTS: none RULE 5.0, PadaukMain.gdl(700): c103c { advance.x = advx; user2 = 1; } / ANY ^ _{ user2 == 0 } ; ACTIONS: PutCopy 0 PushGlyphAttr 54 0 AttrSet advance_x PushByte 1 IAttrSet user 1 Next PushByte -1 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 1 PushByte 0 Equal PopRet RULE 5.1, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ^ c103c_only _ cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.2, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ^ c103c_only _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.3, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.4, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.5, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.6, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.7, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.8, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.9, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.10, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.11, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel c103e_dia cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.12, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel c103e_dia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.13, PadaukMain.gdl(716): c103c_mix g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.14, PadaukMain.gdl(716): c103c_mix g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.15, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel cLVowelM c1036 _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -6 PopRet CONSTRAINTS: CntxtItem 5 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.16, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel cLVowelM _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.17, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel c1036 _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.18, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.19, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cLVowelM c1036 _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.20, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cLVowelM _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.21, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* c1036 _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.22, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.23, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUVowel cLVowelM c1036 _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.24, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUVowel cLVowelM _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.25, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cLVowelM c1036 _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.26, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cLVowelM _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.27, PadaukMain.gdl(722): c101b g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ cUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 29 0 AttrSet attach_at_x PushAttToGlyphAttr 32 0 AttrSet attach_at_y PushAttToGlyphAttr 31 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 33 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.28, PadaukMain.gdl(722): c101b g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 29 0 AttrSet attach_at_x PushAttToGlyphAttr 32 0 AttrSet attach_at_y PushAttToGlyphAttr 31 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 33 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.29, PadaukMain.gdl(724): cLeftLDot g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 29 0 AttrSet attach_at_x PushAttToGlyphAttr 32 0 AttrSet attach_at_y PushAttToGlyphAttr 31 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 33 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.30, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @6; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ cnTakesUDia cnTakesUDia _{ user1 == 0 } _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 23 0 AttrSet attach_at_x PushAttToGlyphAttr 26 0 AttrSet attach_at_y PushAttToGlyphAttr 25 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 27 0 AttrSet attach_at_yoffset PushGlyphAttr 44 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushGlyphAttr 46 0 AttrSet attach_with_xoffset PushGlyphAttr 48 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PutCopy 0 PushByte 0 AttrSet insert Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.31, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @5; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ cnTakesUDia _{ user1 == 0 } _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 23 0 AttrSet attach_at_x PushAttToGlyphAttr 26 0 AttrSet attach_at_y PushAttToGlyphAttr 25 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 27 0 AttrSet attach_at_yoffset PushGlyphAttr 44 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushGlyphAttr 46 0 AttrSet attach_with_xoffset PushGlyphAttr 48 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PutCopy 0 PushByte 0 AttrSet insert Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.32, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @4; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ _{ user1 == 0 } _ ; ACTIONS: CopyNext PutCopy 0 PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 23 0 AttrSet attach_at_x PushAttToGlyphAttr 26 0 AttrSet attach_at_y PushAttToGlyphAttr 25 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 27 0 AttrSet attach_at_yoffset PushGlyphAttr 44 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushGlyphAttr 46 0 AttrSet attach_with_xoffset PushGlyphAttr 48 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PutCopy 0 PushByte 0 AttrSet insert Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.33, PadaukMain.gdl(741): cTakesBSDia cBSDia { attach {to = @2; at = BSS; with = BSM; } user1 = 1; } / ANY ^ _ cnTakesBSDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 8 0 AttrSet attach_at_x PushAttToGlyphAttr 11 0 AttrSet attach_at_y PushAttToGlyphAttr 10 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 12 0 AttrSet attach_at_yoffset PushGlyphAttr 39 0 AttrSet attach_with_x PushGlyphAttr 42 0 AttrSet attach_with_y PushGlyphAttr 41 0 AttrSet attach_with_xoffset PushGlyphAttr 43 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.34, PadaukMain.gdl(741): cTakesBSDia cBSDia { attach {to = @2; at = BSS; with = BSM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 8 0 AttrSet attach_at_x PushAttToGlyphAttr 11 0 AttrSet attach_at_y PushAttToGlyphAttr 10 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 12 0 AttrSet attach_at_yoffset PushGlyphAttr 39 0 AttrSet attach_with_x PushGlyphAttr 42 0 AttrSet attach_with_y PushGlyphAttr 41 0 AttrSet attach_with_xoffset PushGlyphAttr 43 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.35, PadaukMain.gdl(743): cTakesBDDia cBDDia { attach {to = @2; at = BDS; with = BDM; } user1 = 1; } / ANY ^ _ cnTakesBDDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 3 0 AttrSet attach_at_x PushAttToGlyphAttr 6 0 AttrSet attach_at_y PushAttToGlyphAttr 5 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 7 0 AttrSet attach_at_yoffset PushGlyphAttr 34 0 AttrSet attach_with_x PushGlyphAttr 37 0 AttrSet attach_with_y PushGlyphAttr 36 0 AttrSet attach_with_xoffset PushGlyphAttr 38 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.36, PadaukMain.gdl(743): cTakesBDDia cBDDia { attach {to = @2; at = BDS; with = BDM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 3 0 AttrSet attach_at_x PushAttToGlyphAttr 6 0 AttrSet attach_at_y PushAttToGlyphAttr 5 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 7 0 AttrSet attach_at_yoffset PushGlyphAttr 34 0 AttrSet attach_with_x PushGlyphAttr 37 0 AttrSet attach_with_y PushGlyphAttr 36 0 AttrSet attach_with_xoffset PushGlyphAttr 38 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.37, PadaukMain.gdl(745): cTakesBSDia cBDDia { attach {to = @2; at = BSS; with = BDM; } user1 = 1; } / ANY ^ _ cnTakesBSDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 8 0 AttrSet attach_at_x PushAttToGlyphAttr 11 0 AttrSet attach_at_y PushAttToGlyphAttr 10 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 12 0 AttrSet attach_at_yoffset PushGlyphAttr 34 0 AttrSet attach_with_x PushGlyphAttr 37 0 AttrSet attach_with_y PushGlyphAttr 36 0 AttrSet attach_with_xoffset PushGlyphAttr 38 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.38, PadaukMain.gdl(745): cTakesBSDia cBDDia { attach {to = @2; at = BSS; with = BDM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 8 0 AttrSet attach_at_x PushAttToGlyphAttr 11 0 AttrSet attach_at_y PushAttToGlyphAttr 10 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 12 0 AttrSet attach_at_yoffset PushGlyphAttr 34 0 AttrSet attach_with_x PushGlyphAttr 37 0 AttrSet attach_with_y PushGlyphAttr 36 0 AttrSet attach_with_xoffset PushGlyphAttr 38 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.39, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ cnTakesUDia cnTakesUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 23 0 AttrSet attach_at_x PushAttToGlyphAttr 26 0 AttrSet attach_at_y PushAttToGlyphAttr 24 0 AttrSet attach_at_gpoint PushAttToGlyphAttr 25 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 27 0 AttrSet attach_at_yoffset PushGlyphAttr 44 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushGlyphAttr 46 0 AttrSet attach_with_xoffset PushGlyphAttr 48 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.40, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ cnTakesUDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 23 0 AttrSet attach_at_x PushAttToGlyphAttr 26 0 AttrSet attach_at_y PushAttToGlyphAttr 24 0 AttrSet attach_at_gpoint PushAttToGlyphAttr 25 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 27 0 AttrSet attach_at_yoffset PushGlyphAttr 44 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushGlyphAttr 46 0 AttrSet attach_with_xoffset PushGlyphAttr 48 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.41, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 23 0 AttrSet attach_at_x PushAttToGlyphAttr 26 0 AttrSet attach_at_y PushAttToGlyphAttr 24 0 AttrSet attach_at_gpoint PushAttToGlyphAttr 25 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 27 0 AttrSet attach_at_yoffset PushGlyphAttr 44 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushGlyphAttr 46 0 AttrSet attach_with_xoffset PushGlyphAttr 48 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.42, PadaukMain.gdl(755): cTakesRDia cRDia { attach {to = @2; at = RS; with = RM; } user1 = 1; insert = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 62 0 AttrSet attach_at_x PushAttToGlyphAttr 65 0 AttrSet attach_at_y PushAttToGlyphAttr 64 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 66 0 AttrSet attach_at_yoffset PushGlyphAttr 18 0 AttrSet attach_with_x PushGlyphAttr 21 0 AttrSet attach_with_y PushGlyphAttr 20 0 AttrSet attach_with_xoffset PushGlyphAttr 22 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 PushByte 1 AttrSet insert Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.43, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia cnTakesLDia cnTakesLDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 4 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.44, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia cnTakesLDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.45, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.46, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 13 0 AttrSet attach_at_x PushAttToGlyphAttr 16 0 AttrSet attach_at_y PushAttToGlyphAttr 15 0 AttrSet attach_at_xoffset PushAttToGlyphAttr 17 0 AttrSet attach_at_yoffset PushGlyphAttr 57 0 AttrSet attach_with_x PushGlyphAttr 60 0 AttrSet attach_with_y PushGlyphAttr 59 0 AttrSet attach_with_xoffset PushGlyphAttr 61 0 AttrSet attach_with_yoffset PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.47, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ cMed g103a _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.48, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ cMed _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.49, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ g103a _{ user1 == 0 } ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 5.50, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet PASS: 6 PASS CONSTRAINTS: none RULE 6.0, PadaukMain.gdl(795): g101b_alt { shift.x = @3.rkern + 10; advance.x = aw + (@3.rkern + 10); } cHasRkern { shift.x = -(rkern); } / ANY _ _ ; ACTIONS: PutCopy 0 PushGlyphAttr 56 1 PushByte 10 Add AttrSet shift_x PushGlyphMetric aw 0 0 PushGlyphAttr 56 1 PushByte 10 Add Add AttrSet advance_x Next PutCopy 0 PushGlyphAttr 56 0 Neg AttrSet shift_x Next RetZero CONSTRAINTS: none RULE 6.1, PadaukMain.gdl(797): c102b { shift.x = xkern / 2; advance.x = aw + (xkern / 2); } / cUDia _ ; ACTIONS: PutCopy 0 PushGlyphAttr 55 0 PushByte 2 Div AttrSet shift_x PushGlyphMetric aw 0 0 PushGlyphAttr 55 0 PushByte 2 Div Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 6.2, PadaukMain.gdl(798): cConsNar / g102b_103a _ cLowDia cUDia ; ACTIONS: CopyNext RetZero CONSTRAINTS: none RULE 6.3, PadaukMain.gdl(798): cConsNar / g102b_103a _ cUDia ; ACTIONS: CopyNext RetZero CONSTRAINTS: none RULE 6.4, PadaukMain.gdl(799): cCons { shift.x = -(@1.xkern); advance.x = aw + -(@1.xkern); } / g102b_103a _ ; ACTIONS: PutCopy 0 PushGlyphAttr 55 -1 Neg AttrSet shift_x PushGlyphMetric aw 0 0 PushGlyphAttr 55 -1 Neg Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 6.5, PadaukMain.gdl(800): g1031 { shift.x = -(@1.xkern); advance.x = aw + -(@1.xkern); } / g102b_103a _ ; ACTIONS: PutCopy 0 PushGlyphAttr 55 -1 Neg AttrSet shift_x PushGlyphMetric aw 0 0 PushGlyphAttr 55 -1 Neg Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 6.6, PadaukMain.gdl(801): cRDia { shift.x = ((((@1.aw + @1.advance.x) - advance.x) / 2) + @1.position.x) - position.x; } / cTakesRDia _ ; ACTIONS: PutCopy 0 PushGlyphMetric aw -1 0 PushSlotAttr advance_x -1 Add PushSlotAttr advance_x 0 Sub PushByte 2 Div PushSlotAttr pos_x -1 Add PushSlotAttr pos_x 0 Sub AttrSet shift_x Next RetZero CONSTRAINTS: none RULE 6.7, PadaukMain.gdl(802): cUVowel { advance.x = 0; } / c103b _ ; ACTIONS: PutCopy 0 PushByte 0 AttrSet advance_x Next RetZero CONSTRAINTS: none grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/dbg_fsm.txt000066400000000000000000006661021411153030700255770ustar00rootroot00000000000000FINITE STATE MACHINES TABLE: linebreak PASS: 1 Glyph ID => Column: 0 .. 2 => 0 3 => 1 4 .. 10 => 0 11 => 2 12 => 3 13 .. 98 => 0 99 => 2 100 => 3 101 => 2 102 => 3 103 .. 105 => 0 106 => 4 107 => 5 108 => 6 109 => 7 110 => 0 111 => 5 112 => 6 113 => 5 114 => 6 115 => 5 116 => 6 117 => 4 118 .. 121 => 8 122 => 5 123 => 6 124 => 5 125 => 6 126 => 5 127 => 6 128 => 5 129 => 9 130 => 4 131 => 7 132 => 4 133 => 7 134 => 4 135 => 7 136 => 8 137 .. 138 => 7 139 => 5 140 => 6 141 => 5 142 => 6 143 .. 144 => 7 145 => 4 146 => 5 147 => 6 148 .. 149 => 7 150 => 5 151 => 6 152 => 8 153 => 5 154 => 6 155 => 5 156 => 6 157 => 5 158 => 6 159 => 5 160 => 7 161 => 6 162 => 7 163 => 0 164 => 5 165 => 6 166 => 5 167 => 6 168 => 5 169 => 6 170 => 5 171 => 6 172 => 5 173 => 6 174 => 4 175 => 10 176 .. 178 => 7 179 => 4 180 .. 181 => 7 182 => 11 183 .. 193 => 8 194 => 5 195 => 6 196 => 4 197 => 11 198 .. 199 => 8 200 => 5 201 => 6 202 => 0 203 .. 204 => 4 205 => 11 206 .. 208 => 8 209 => 4 210 => 12 211 => 6 212 => 7 213 => 0 214 => 4 215 => 0 216 .. 217 => 4 218 => 7 219 => 0 220 => 7 221 .. 222 => 0 223 .. 225 => 8 226 => 7 227 => 8 228 => 7 229 => 8 230 => 7 231 .. 236 => 8 237 => 13 238 => 14 239 .. 246 => 15 247 => 16 248 => 15 249 .. 250 => 17 251 .. 254 => 18 255 => 5 256 => 6 257 => 5 258 => 9 259 => 5 260 => 6 261 => 4 262 .. 264 => 11 265 => 4 266 .. 268 => 7 269 .. 271 => 0 272 => 19 273 .. 274 => 20 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 1 6 1 7 7 1 1 1 1 1 1 2 1 3 1 1 5 1 4 1 Matched=none Success=none 1: 1 12 9 12 12 11 11 12 10 12 10 10 12 11 12 12 10 12 8 13 12 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,18,19,22, Success=none 2: 1 12 9 12 12 28 28 12 10 12 10 10 12 28 12 12 29 30 8 13 12 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,16,18,19,20,22, Success=none 3: 1 12 9 12 12 31 31 12 10 12 10 10 12 31 12 12 10 12 8 13 12 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,18,19,22, Success=none 4: 1 12 9 12 12 32 32 12 10 12 10 10 12 32 12 12 10 12 8 13 12 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,15,18,19,22, Success=none 5: 1 12 9 12 12 11 11 12 10 12 10 10 12 11 12 12 10 12 8 33 12 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,18,19,21,22, Success=none 6: 1 38 35 38 38 37 37 38 36 38 36 36 38 37 38 38 36 38 34 39 38 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,17,18,19,22, Success=none 7: 1 12 9 12 12 11 11 12 10 12 10 10 12 11 12 12 29 30 8 13 12 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,18,19,20,22, Success=none 8: 2 0 0 0 53 52 52 0 0 0 0 0 0 52 0 0 54 54 0 0 0 0 Matched=0,18,19, Success=none 9: 2 0 0 0 53 55 55 0 0 0 0 0 0 55 0 0 0 0 0 0 0 0 Matched=1,18, Success=none 10: 2 0 0 0 53 0 0 15 0 15 0 0 15 0 40 14 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,18, Success=none 11: 2 0 0 0 53 0 0 15 0 15 0 56 41 0 40 16 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,12,13,18, Success=none 12: 2 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=18, Success=none 13: 2 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 57 0 0 0 Matched=18,22, Success=none 14: 3 0 0 0 0 0 0 18 0 19 17 0 19 0 42 19 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10, Success=none 15: 3 0 0 0 0 0 0 19 0 19 0 0 19 0 42 19 0 0 0 0 0 0 Matched=7,8,9,10, Success=none 16: 3 0 0 0 0 0 58 18 0 19 17 0 19 58 42 19 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,12, Success=none 17: 4 0 0 0 0 0 0 20 0 20 0 0 20 0 43 20 0 0 0 0 0 0 Matched=2,3,4,5,6, Success=none 18: 4 0 0 0 0 0 0 21 0 21 0 0 21 0 44 21 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9, Success=none 19: 4 0 0 0 0 0 0 22 0 22 0 0 22 0 45 22 0 0 0 0 0 0 Matched=7,8,9, Success=none 20: 5 0 0 0 0 0 0 23 0 23 0 0 23 0 46 23 0 0 0 0 0 0 Matched=2,3,4,5, Success=none 21: 5 0 0 0 0 0 0 24 0 24 0 0 24 0 47 24 0 0 0 0 0 0 Matched=2,3,4,5,7,8, Success=none 22: 5 0 0 0 0 0 0 25 0 25 0 0 25 0 48 25 0 0 0 0 0 0 Matched=7,8, Success=none 23: 6 0 0 0 0 0 0 26 0 26 0 0 26 0 49 26 0 0 0 0 0 0 Matched=2,3,4, Success=none 24: 6 0 0 0 0 0 0 26 0 26 0 0 26 0 50 26 0 0 0 0 0 0 Matched=2,3,4,7, Success=none 25: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 59 0 0 0 0 0 0 0 Matched=7, Success=none 26: 7 0 0 0 0 0 0 27 0 27 0 0 27 0 51 27 0 0 0 0 0 0 Matched=2,3, Success=none 27: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 Matched=2, Success=none 28: 2 0 0 0 53 0 0 15 0 15 0 56 41 0 40 16 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,12,13,16,18, Success=16, 29: 2 0 0 0 53 0 0 15 0 15 0 0 15 0 40 14 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,18,20, Success=20, 30: 2 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=18,20, Success=20, 31: 2 0 0 0 53 0 0 15 0 15 0 56 41 0 40 16 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,12,13,14,18, Success=14, 32: 2 0 0 0 53 0 0 15 0 15 0 56 41 0 40 16 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,12,13,15,18, Success=15, 33: 2 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 57 0 0 0 Matched=18,21,22, Success=21, 34: 2 0 0 0 53 52 52 0 0 0 0 0 0 52 0 0 54 54 0 0 0 0 Matched=0,17,18,19, Success=17, 35: 2 0 0 0 53 55 55 0 0 0 0 0 0 55 0 0 0 0 0 0 0 0 Matched=1,17,18, Success=17, 36: 2 0 0 0 53 0 0 15 0 15 0 0 15 0 40 14 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,17,18, Success=17, 37: 2 0 0 0 53 0 0 15 0 15 0 56 41 0 40 16 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9,10,11,12,13,17,18, Success=17, 38: 2 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=17,18, Success=17, 39: 2 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 57 0 0 0 Matched=17,18,22, Success=17, 40: 3 0 0 0 0 0 0 19 0 19 0 0 19 0 42 19 0 0 0 0 0 0 Matched=7,8,9,10,11, Success=11, 41: 3 0 0 0 0 0 0 19 0 19 0 0 19 0 42 19 0 0 0 0 0 0 Matched=7,8,9,10,13, Success=13, 42: 4 0 0 0 0 0 0 22 0 22 0 0 22 0 45 22 0 0 0 0 0 0 Matched=7,8,9,10, Success=10, 43: 5 0 0 0 0 0 0 23 0 23 0 0 23 0 46 23 0 0 0 0 0 0 Matched=2,3,4,5,6, Success=6, 44: 5 0 0 0 0 0 0 24 0 24 0 0 24 0 47 24 0 0 0 0 0 0 Matched=2,3,4,5,6,7,8,9, Success=6,9, 45: 5 0 0 0 0 0 0 25 0 25 0 0 25 0 48 25 0 0 0 0 0 0 Matched=7,8,9, Success=9, 46: 6 0 0 0 0 0 0 26 0 26 0 0 26 0 49 26 0 0 0 0 0 0 Matched=2,3,4,5, Success=5, 47: 6 0 0 0 0 0 0 26 0 26 0 0 26 0 50 26 0 0 0 0 0 0 Matched=2,3,4,5,7,8, Success=5,8, 48: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 59 0 0 0 0 0 0 0 Matched=7,8, Success=8, 49: 7 0 0 0 0 0 0 27 0 27 0 0 27 0 51 27 0 0 0 0 0 0 Matched=2,3,4, Success=4, 50: 7 0 0 0 0 0 0 27 0 27 0 0 27 0 51 27 0 0 0 0 0 0 Matched=2,3,4,7, Success=4,7, 51: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 Matched=2,3, Success=3, 52: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=0, Success=0, 53: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=18, Success=18, 54: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=19, Success=19, 55: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=1, Success=1, 56: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=13, Success=13, 57: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=22, Success=22, 58: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=12, Success=12, 59: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=7, Success=7, 60: 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=2, Success=2, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 1.0, PadaukMain.gdl(407): cSection { break = 10; } / ANY _ ^ cCons ; RULE 1.1, PadaukMain.gdl(408): g_space { break = 10; } / ANY _ ^ cCons ; RULE 1.2, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia cnTakesUDia cnTakesUDia _ ; RULE 1.3, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia cnTakesUDia _ ; RULE 1.4, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia _ ; RULE 1.5, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia _ ; RULE 1.6, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed _ ; RULE 1.7, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia cnTakesUDia cnTakesUDia _ ; RULE 1.8, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia cnTakesUDia _ ; RULE 1.9, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia _ ; RULE 1.10, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia _ ; RULE 1.11, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ _ ; RULE 1.12, PadaukMain.gdl(416): cCons { break = -30; } cMedBase { break = -50; } / ANY _ g1039 _ ; RULE 1.13, PadaukMain.gdl(417): cCons { break = -30; } cClusMed { break = -50; } / ANY _ _ ; RULE 1.14, PadaukMain.gdl(420): cCons { break = -50; } / g1039 _ ; RULE 1.15, PadaukMain.gdl(423): cCons { break = -30; } / g2060 _ ; RULE 1.16, PadaukMain.gdl(426): cCons { break = -30; } / g1021 _ ; RULE 1.17, PadaukMain.gdl(429): ANYGlyph { break = 40; } / cLQuote ^ _ ; RULE 1.18, PadaukMain.gdl(430): ANYGlyph { break = -40; } / ANY _ ^ cRQuote ; RULE 1.19, PadaukMain.gdl(433): cSection { break = 30; } / ANY _ cNum ; RULE 1.20, PadaukMain.gdl(435): cNum { break = -15; } / cCons _ ; RULE 1.21, PadaukMain.gdl(436): cSigns { break = -15; } / cSection _ ; RULE 1.22, PadaukMain.gdl(439): cSigns { break = 40; } / ANY _ cSection ; TABLE: substitution PASS: 0--no FSM PASS: 2 Glyph ID => Column: 0 .. 105 => 0 106 => 1 107 => 2 108 .. 110 => 0 111 => 2 112 => 0 113 => 2 114 => 0 115 => 2 116 => 0 117 => 3 118 .. 121 => 4 122 => 2 123 => 0 124 => 2 125 => 0 126 => 2 127 => 0 128 => 2 129 => 0 130 => 1 131 => 0 132 => 1 133 => 0 134 => 5 135 .. 138 => 0 139 => 6 140 => 0 141 => 7 142 .. 144 => 0 145 => 8 146 => 9 147 .. 149 => 0 150 => 10 151 .. 152 => 0 153 => 2 154 => 0 155 => 2 156 => 0 157 => 2 158 => 0 159 => 11 160 .. 163 => 0 164 => 2 165 => 0 166 => 2 167 => 0 168 => 2 169 => 0 170 => 2 171 => 0 172 => 2 173 => 0 174 => 1 175 => 12 176 .. 178 => 0 179 => 1 180 .. 181 => 0 182 => 13 183 .. 193 => 0 194 => 2 195 => 0 196 => 1 197 => 14 198 .. 199 => 0 200 => 15 201 .. 202 => 0 203 .. 204 => 1 205 => 16 206 .. 208 => 0 209 => 1 210 => 2 211 .. 213 => 0 214 => 1 215 => 0 216 .. 217 => 1 218 .. 222 => 0 223 => 17 224 => 0 225 => 17 226 => 18 227 => 0 228 => 19 229 => 0 230 => 20 231 .. 233 => 4 234 => 21 235 .. 236 => 0 237 => 22 238 => 23 239 .. 248 => 1 249 .. 252 => 0 253 => 1 254 => 0 255 => 2 256 => 0 257 => 2 258 => 0 259 => 2 260 => 0 261 => 1 262 .. 264 => 24 265 => 1 266 .. 274 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 Matched=none Success=none 1: 1 0 0 0 3 0 5 0 6 7 8 0 9 11 12 13 10 14 0 0 0 0 0 0 4 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, Success=none 2: 1 0 0 0 3 0 5 0 6 7 8 0 9 11 12 15 10 14 0 0 0 0 0 0 4 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, Success=none 3: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39, Success=none 4: 2 0 0 41 0 0 0 41 41 0 41 42 41 0 0 0 41 0 0 0 0 0 0 0 0 0 Matched=40,41,58,59,60,61, Success=none 5: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 Matched=42,43, Success=none 6: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 0 Matched=44, Success=none 7: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 Matched=45, Success=none 8: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 Matched=46,47, Success=none 9: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 0 Matched=48,49, Success=none 10: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 0 Matched=50, Success=none 11: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43 0 65 0 0 0 0 0 0 0 0 Matched=51,52,57, Success=none 12: 2 0 0 0 0 25 0 0 0 0 0 0 0 0 0 44 0 23 25 66 0 24 0 25 0 0 Matched=53,54,62,63,64,65,66,67,68,69,70,71,72,73, Success=none 13: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 0 0 0 0 0 0 0 0 Matched=56, Success=none 14: 2 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 27 68 69 26 0 27 0 0 Matched=74,75,76,77,78,79, Success=none 15: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 0 0 0 0 0 0 0 0 Matched=55,56, Success=none 16: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39, Success=none 17: 3 0 0 0 0 0 72 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=42,43, Success=none 18: 3 0 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=44, Success=none 19: 3 0 0 0 0 0 0 0 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=45, Success=none 20: 3 0 0 0 0 0 76 0 77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=46,47, Success=none 21: 3 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=48,49, Success=none 22: 3 0 0 0 0 0 0 0 0 0 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=50, Success=none 23: 3 0 0 0 0 33 0 0 0 0 0 0 0 0 0 0 0 0 33 80 81 32 0 33 0 0 Matched=62,63,64,65,66,67,68,69, Success=none 24: 3 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 34 82 0 0 0 34 0 0 Matched=70,71, Success=none 25: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 0 0 0 0 0 0 Matched=72, Success=none 26: 3 0 0 0 0 35 0 0 0 0 0 0 0 0 0 0 0 0 35 84 85 0 0 35 0 0 Matched=74,75,78, Success=none 27: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86 0 0 0 0 0 0 Matched=76, Success=none 28: 4 0 45 45 45 0 45 45 45 45 45 45 45 0 0 0 45 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39, Success=none 29: 4 0 0 0 0 37 0 0 0 0 0 0 0 0 0 0 0 0 37 87 0 36 0 37 0 0 Matched=58,59,60,61, Success=none 30: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 88 0 0 0 0 0 0 0 0 0 0 0 Matched=48,49, Success=none 31: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 89 0 0 0 0 0 0 0 0 0 0 0 Matched=50, Success=none 32: 4 0 0 0 0 38 0 0 0 0 0 0 0 0 0 0 0 0 38 90 91 0 0 38 0 0 Matched=62,63,66,67, Success=none 33: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 93 0 0 0 0 0 Matched=64,68, Success=none 34: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94 0 0 0 0 0 0 Matched=70, Success=none 35: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95 0 0 0 0 0 0 Matched=74, Success=none 36: 5 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 40 97 0 0 0 40 0 0 Matched=58,59, Success=none 37: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 0 0 0 0 0 0 Matched=60, Success=none 38: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99 100 0 0 0 0 0 Matched=62,66, Success=none 39: 6 0 0 48 0 0 0 48 48 0 48 48 48 0 0 0 48 0 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4,5,6,7,8,9,20,21,22,23,24,25,26,27,28,29, Success=none 40: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 103 0 0 0 0 0 0 Matched=58, Success=none 41: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 Matched=40,58,59,60,61, Success=40, 42: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 29 71 0 0 0 0 0 0 0 0 0 0 Matched=40,41,58,59,60,61, Success=40, 43: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78 0 0 0 0 0 0 0 0 Matched=51,57, Success=57, 44: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 Matched=53,54, Success=54, 45: 5 0 0 0 0 0 0 0 0 0 0 0 0 46 46 46 0 46 96 0 0 47 96 0 39 46 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39, Success=19, 46: 6 0 0 0 0 0 0 0 0 0 0 0 0 49 49 49 0 49 101 0 0 50 101 0 0 49 Matched=10,11,12,13,14,15,16,17,30,31,32,33,34,35,36,37, Success=17, 47: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 0 0 0 102 0 0 0 Matched=18,38, Success=18, 48: 7 0 0 0 0 0 0 0 0 0 0 0 0 51 51 51 0 51 104 0 0 52 104 0 0 51 Matched=0,1,2,3,4,5,6,7,8,9,20,21,22,23,24,25,26,27,28,29, Success=9, 49: 7 0 0 0 0 0 0 0 0 0 0 0 0 53 53 53 0 53 105 0 0 54 105 0 0 53 Matched=10,11,12,13,14,15,30,31,32,33,34,35, Success=15, 50: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106 0 0 0 106 0 0 0 Matched=16,36, Success=16, 51: 8 0 0 0 0 0 0 0 0 0 0 0 0 55 55 55 0 55 107 0 0 56 107 0 0 55 Matched=0,1,2,3,4,5,6,7,20,21,22,23,24,25,26,27, Success=7, 52: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 108 0 0 0 108 0 0 0 Matched=8,28, Success=8, 53: 8 0 0 0 0 0 0 0 0 0 0 0 0 57 57 57 0 57 109 0 0 58 109 0 0 57 Matched=10,11,12,13,30,31,32,33, Success=13, 54: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110 0 0 0 110 0 0 0 Matched=14,34, Success=14, 55: 9 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 0 59 111 0 0 60 111 0 0 59 Matched=0,1,2,3,4,5,20,21,22,23,24,25, Success=5, 56: 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112 0 0 0 112 0 0 0 Matched=6,26, Success=6, 57: 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113 0 0 61 113 0 0 0 Matched=10,11,30,31, Success=11, 58: 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 114 0 0 0 114 0 0 0 Matched=12,32, Success=12, 59: 10 0 0 0 0 0 0 0 0 0 0 0 0 62 62 62 0 62 115 0 0 63 115 0 0 62 Matched=0,1,2,3,20,21,22,23, Success=3, 60: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 116 0 0 0 116 0 0 0 Matched=4,24, Success=4, 61: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 117 0 0 0 117 0 0 0 Matched=10,30, Success=10, 62: 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118 0 0 64 118 0 0 0 Matched=0,1,20,21, Success=1, 63: 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119 0 0 0 119 0 0 0 Matched=2,22, Success=2, 64: 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 120 0 0 0 120 0 0 0 Matched=0,20, Success=0, 65: 3 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 Matched=52, Success=52, 66: 3 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 Matched=73, Success=73, 67: 3 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 Matched=56, Success=56, 68: 3 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 Matched=77, Success=77, 69: 3 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 Matched=79, Success=79, 70: 3 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 Matched=55,56, Success=55,56, 71: 4 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 Matched=41, Success=41, 72: 4 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 Matched=42, Success=42, 73: 4 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 Matched=43, Success=43, 74: 4 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 Matched=44, Success=44, 75: 4 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 Matched=45, Success=45, 76: 4 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 Matched=46, Success=46, 77: 4 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 Matched=47, Success=47, 78: 4 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 Matched=51, Success=51, 79: 4 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 Matched=53, Success=53, 80: 4 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 Matched=65, Success=65, 81: 4 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 Matched=69, Success=69, 82: 4 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 Matched=71, Success=71, 83: 4 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 Matched=72, Success=72, 84: 4 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 Matched=75, Success=75, 85: 4 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 Matched=78, Success=78, 86: 4 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 Matched=76, Success=76, 87: 5 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 Matched=61, Success=61, 88: 5 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 Matched=48,49, Success=48,49, 89: 5 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 Matched=50, Success=50, 90: 5 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 Matched=63, Success=63, 91: 5 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 Matched=67, Success=67, 92: 5 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 Matched=64, Success=64, 93: 5 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 Matched=68, Success=68, 94: 5 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 Matched=70, Success=70, 95: 5 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 Matched=74, Success=74, 96: 6 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 Matched=39, Success=39, 97: 6 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 Matched=59, Success=59, 98: 6 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 Matched=60, Success=60, 99: 6 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 Matched=62, Success=62, 100: 6 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 Matched=66, Success=66, 101: 7 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 Matched=37, Success=37, 102: 7 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 Matched=38, Success=38, 103: 7 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 Matched=58, Success=58, 104: 8 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 Matched=29, Success=29, 105: 8 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 Matched=35, Success=35, 106: 8 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 Matched=36, Success=36, 107: 9 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 Matched=27, Success=27, 108: 9 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 Matched=28, Success=28, 109: 9 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 Matched=33, Success=33, 110: 9 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 Matched=34, Success=34, 111: 10 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 Matched=25, Success=25, 112: 10 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 Matched=26, Success=26, 113: 10 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 Matched=31, Success=31, 114: 10 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 Matched=32, Success=32, 115: 11 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 Matched=23, Success=23, 116: 11 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 Matched=24, Success=24, 117: 11 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 Matched=30, Success=30, 118: 12 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 Matched=21, Success=21, 119: 12 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 Matched=22, Success=22, 120: 13 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 Matched=20, Success=20, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 2.0, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed g1031 _ ; RULE 2.1, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed _ ; RULE 2.2, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed g1031 _ ; RULE 2.3, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed _ ; RULE 2.4, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed g1031 _ ; RULE 2.5, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed _ ; RULE 2.6, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed g1031 _ ; RULE 2.7, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed _ ; RULE 2.8, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase g1031 _ ; RULE 2.9, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase _ ; RULE 2.10, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed cClusMed g1031 _ ; RULE 2.11, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed cClusMed _ ; RULE 2.12, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed g1031 _ ; RULE 2.13, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed _ ; RULE 2.14, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed g1031 _ ; RULE 2.15, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed _ ; RULE 2.16, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed g1031 _ ; RULE 2.17, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed _ ; RULE 2.18, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1031 _ ; RULE 2.19, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* _ ; RULE 2.20, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed g1031 _ ; RULE 2.21, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed _ ; RULE 2.22, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed g1031 _ ; RULE 2.23, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed _ ; RULE 2.24, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed g1031 _ ; RULE 2.25, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed _ ; RULE 2.26, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed g1031 _ ; RULE 2.27, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed _ ; RULE 2.28, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase g1031 _ ; RULE 2.29, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase _ ; RULE 2.30, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed cClusMed g1031 _ ; RULE 2.31, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed cClusMed _ ; RULE 2.32, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed g1031 _ ; RULE 2.33, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed _ ; RULE 2.34, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed g1031 _ ; RULE 2.35, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed _ ; RULE 2.36, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed g1031 _ ; RULE 2.37, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed _ ; RULE 2.38, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1031 _ ; RULE 2.39, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* _ ; RULE 2.40, PadaukMain.gdl(466): g1039 cMedBase > _ cMed:(2 3) / ANY _ _ ; RULE 2.41, PadaukMain.gdl(470): g1039 g1010 g103d > g1010_103d_med:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.42, PadaukMain.gdl(471): g100b g1039 g100b > g100b_100b:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.43, PadaukMain.gdl(472): g100b g1039 g100c > g100b_100c:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.44, PadaukMain.gdl(473): g100d g1039 g100d > g100d_100d:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.45, PadaukMain.gdl(474): g100e g1039 g100d > g100d_100e:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.46, PadaukMain.gdl(475): g100f g1039 g100b > g100f_100b:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.47, PadaukMain.gdl(476): g100f g1039 g100d > g100f_100d:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.48, PadaukMain.gdl(477): g1014 g1039 g1010 g103c > g1014_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; RULE 2.49, PadaukMain.gdl(478): g1014 g1039 g1010 g103c > g1014_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; RULE 2.50, PadaukMain.gdl(479): g101e g1039 g1010 g103c > g101e_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; RULE 2.51, PadaukMain.gdl(480): g103b g103d g103e > g103b_103d_103e:(2 3 4) _ _ / ANY _ _ _ ; RULE 2.52, PadaukMain.gdl(481): g103b g103e > g103b_103e:(2 3) _ / ANY _ _ ; RULE 2.53, PadaukMain.gdl(482): g103c g103d g103e > @2 g103d_103e _ / ANY _ _ _ ; RULE 2.54, PadaukMain.gdl(483): g103c g103d > g103c_103d_narr:(2 3) _ / ANY _ _ ; RULE 2.55, PadaukMain.gdl(484): g103d g103e > g103d_103e_small:(2 3) _ / g103c _ _ ; RULE 2.56, PadaukMain.gdl(485): g103d g103e > g103d_103e:(2 3) _ / ANY _ _ ; RULE 2.57, PadaukMain.gdl(486): g103b g103d > g103b_103d:(2 3) _ / ANY _ _ ; RULE 2.58, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @7 / ANY _ _ _ g1031 cUVowel _ ; RULE 2.59, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @6 / ANY _ _ _ g1031 _ ; RULE 2.60, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @6 / ANY _ _ _ cUVowel _ ; RULE 2.61, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @5 / ANY _ _ _ _ ; RULE 2.62, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @6 / ANY _ _ g1031 cUVowel _ ; RULE 2.63, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @5 / ANY _ _ g1031 _ ; RULE 2.64, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @5 / ANY _ _ cUVowel _ ; RULE 2.65, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @4 / ANY _ _ _ ; RULE 2.66, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @6 / ANY _ _ g1031 cUVowel _ ; RULE 2.67, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @5 / ANY _ _ g1031 _ ; RULE 2.68, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @5 / ANY _ _ cUVowel _ ; RULE 2.69, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @4 / ANY _ _ _ ; RULE 2.70, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 5) _ / ANY _ g1031 cUVowel _ ; RULE 2.71, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 4) _ / ANY _ g1031 _ ; RULE 2.72, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 4) _ / ANY _ cUVowel _ ; RULE 2.73, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 3) _ / ANY _ _ ; RULE 2.74, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 5) _ / ANY _ g1031 cUVowel _ ; RULE 2.75, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 4) _ / ANY _ g1031 _ ; RULE 2.76, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 4) _ / ANY _ cUVowel _ ; RULE 2.77, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 3) _ / ANY _ _ ; RULE 2.78, PadaukMain.gdl(492): g103e g1030 > g103e_1030:(2 4) _ / ANY _ g1031 _ ; RULE 2.79, PadaukMain.gdl(492): g103e g1030 > g103e_1030:(2 3) _ / ANY _ _ ; PASS: 3 Glyph ID => Column: 0 .. 105 => 0 106 .. 107 => 1 108 .. 110 => 0 111 => 1 112 => 0 113 => 1 114 => 0 115 => 1 116 => 0 117 => 1 118 .. 121 => 0 122 => 1 123 => 0 124 => 1 125 => 0 126 => 1 127 => 0 128 => 1 129 => 0 130 => 1 131 => 0 132 => 1 133 => 0 134 => 1 135 .. 138 => 0 139 => 1 140 => 0 141 => 1 142 .. 144 => 0 145 .. 146 => 1 147 .. 149 => 0 150 => 1 151 .. 152 => 0 153 => 1 154 => 0 155 => 1 156 => 0 157 => 1 158 => 0 159 => 1 160 .. 163 => 0 164 => 1 165 => 0 166 => 1 167 => 0 168 => 1 169 => 0 170 => 1 171 => 0 172 => 1 173 => 0 174 => 1 175 .. 178 => 0 179 => 1 180 .. 193 => 0 194 => 1 195 => 0 196 => 1 197 .. 199 => 0 200 => 1 201 .. 202 => 0 203 .. 204 => 1 205 .. 208 => 0 209 .. 210 => 1 211 .. 213 => 0 214 => 1 215 => 0 216 .. 217 => 1 218 .. 236 => 0 237 => 2 238 .. 254 => 0 255 => 1 256 => 0 257 => 1 258 => 0 259 => 1 260 => 0 261 => 1 262 .. 264 => 0 265 => 1 266 .. 272 => 0 273 .. 274 => 3 Final Table: 0 1 2 3 - - - - - - - - - - - - 0: 0 2 1 2 2 Matched=none Success=none 1: 1 4 4 3 0 Matched=0,1,2, Success=none 2: 1 4 4 4 0 Matched=1,2, Success=none 3: 2 5 5 5 0 Matched=0,1,2, Success=none 4: 2 6 6 6 0 Matched=1,2, Success=none 5: 3 0 0 0 0 Matched=0,1,2, Success=0,1,2, 6: 3 0 0 0 0 Matched=1,2, Success=1,2, - - - - - - - - - - - - RULE 3.0, PadaukMain.gdl(538): ANYGlyph > @3 / cCons g103a ^ _{ order > 1 } ; RULE 3.1, PadaukMain.gdl(542): _ > g_circledash:2 / ANY ANYGlyph _ ^ ANYGlyph{ (order > 1) && (order <= @2.order) } ; RULE 3.2, PadaukMain.gdl(543): _ > g_circledash:2 / ANY ANYGlyph{ order == 0 } _ ^ ANYGlyph{ order > 1 } ; PASS: 4 Glyph ID => Column: 0 .. 105 => 0 106 => 1 107 => 2 108 => 3 109 .. 110 => 0 111 => 1 112 => 4 113 => 1 114 => 4 115 => 2 116 => 3 117 => 1 118 => 5 119 .. 121 => 6 122 => 1 123 => 4 124 => 2 125 => 3 126 => 1 127 => 4 128 => 7 129 => 3 130 => 8 131 => 0 132 => 9 133 => 10 134 => 11 135 .. 138 => 0 139 => 11 140 => 4 141 => 11 142 => 4 143 .. 144 => 0 145 => 1 146 => 2 147 => 3 148 .. 149 => 0 150 => 2 151 => 3 152 => 0 153 => 2 154 => 3 155 => 1 156 => 4 157 => 1 158 => 4 159 => 12 160 => 13 161 => 4 162 .. 163 => 0 164 => 1 165 => 4 166 => 1 167 => 4 168 => 1 169 => 4 170 => 2 171 => 3 172 => 1 173 => 4 174 => 2 175 => 14 176 => 15 177 => 16 178 => 17 179 => 18 180 => 10 181 => 0 182 => 19 183 => 20 184 .. 185 => 21 186 => 22 187 => 23 188 => 24 189 => 23 190 => 22 191 => 23 192 => 24 193 => 23 194 => 2 195 => 3 196 => 1 197 => 25 198 => 26 199 => 0 200 => 2 201 => 3 202 => 0 203 .. 204 => 2 205 => 27 206 => 0 207 .. 208 => 28 209 => 7 210 => 2 211 => 3 212 .. 213 => 0 214 => 29 215 => 0 216 => 1 217 => 11 218 .. 220 => 0 221 => 30 222 => 0 223 => 5 224 => 0 225 => 6 226 => 31 227 => 32 228 => 33 229 => 32 230 => 34 231 => 35 232 => 6 233 => 35 234 => 36 235 .. 236 => 0 237 => 37 238 .. 254 => 0 255 => 38 256 => 4 257 => 38 258 => 3 259 => 1 260 => 4 261 => 38 262 .. 264 => 16 265 => 11 266 .. 274 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Matched=none Success=none 1: 1 3 4 4 3 3 3 3 3 3 3 4 3 4 4 3 3 3 3 4 5 5 5 6 6 6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, Success=none 2: 1 3 7 7 3 3 3 3 3 3 3 7 3 7 7 3 3 3 3 7 5 5 5 6 6 6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, Success=none 3: 2 11 10 10 11 11 11 11 11 9 9 10 11 10 10 11 11 11 11 10 8 8 11 8 11 8 11 11 11 11 11 11 11 11 11 11 11 11 11 9 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,85,86, Success=none 4: 2 11 10 10 11 11 12 12 11 9 9 10 11 10 10 11 11 11 11 10 8 8 11 8 11 8 11 11 11 11 11 11 11 11 11 11 12 11 12 9 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,85,86, Success=none 5: 2 11 14 14 11 11 11 11 16 13 13 15 16 14 15 11 11 11 11 14 8 8 11 8 11 8 11 11 11 11 16 11 11 11 11 11 11 11 11 13 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, Success=none 6: 2 11 17 17 11 11 11 11 16 13 13 18 16 17 18 11 11 11 11 17 8 8 11 8 11 8 11 11 11 11 16 11 11 11 11 11 11 11 11 13 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, Success=none 7: 2 11 10 10 11 11 19 19 11 9 9 10 11 10 10 11 11 11 11 10 8 8 11 8 11 8 11 11 11 11 11 11 11 11 11 11 19 11 19 9 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,85,86, Success=none 8: 3 0 26 25 0 0 28 0 25 21 22 0 26 100 27 0 0 0 0 23 20 20 20 20 20 20 0 0 0 0 24 29 0 0 0 0 0 0 0 26 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,86, Success=none 9: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 0 123 0 24 29 0 0 0 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,85,86, Success=none 10: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 0 0 0 24 29 124 0 124 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,86, Success=none 11: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 0 0 0 24 29 0 0 0 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,86, Success=none 12: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 0 0 0 24 29 125 0 125 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,64,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,86, Success=none 13: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 126 123 0 24 29 0 0 0 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,85,86, Success=none 14: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 126 128 0 24 29 124 0 127 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,86, Success=none 15: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 0 128 0 24 29 124 0 127 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,84,86, Success=none 16: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 126 0 0 24 29 0 0 0 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,86, Success=none 17: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 126 128 0 24 29 124 0 124 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,86, Success=none 18: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 0 128 0 24 29 124 0 124 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,84,86, Success=none 19: 3 0 26 25 0 0 28 0 25 21 22 0 26 30 27 0 0 0 0 23 20 20 20 20 20 20 0 0 0 0 24 29 125 0 129 0 0 0 0 26 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,86, Success=none 20: 4 0 34 34 0 0 0 0 34 34 34 0 34 34 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 34 0 0 0 0 0 0 0 0 34 Matched=1,2,3,4,5,6,7,8,9,10, Success=none 21: 4 0 133 133 35 35 39 39 133 133 133 0 133 133 0 36 36 31 37 133 107 0 0 107 0 0 31 38 38 38 133 0 0 0 0 106 39 0 108 133 Matched=11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,34,35,36,37,38,39,40,43,44,75,76,77,78,79,80,81,82,83, Success=none 22: 4 0 0 0 109 109 41 41 0 0 0 0 0 0 0 110 110 31 110 0 107 0 0 107 0 0 111 111 111 111 0 0 134 135 134 130 41 0 40 0 Matched=11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,34,35,36,37,38,39,40,43,44,68,69,74, Success=none 23: 4 0 0 0 42 43 45 45 0 0 0 0 0 0 0 112 113 31 114 0 105 0 0 105 0 0 115 116 117 118 0 0 136 136 136 130 45 0 44 0 Matched=11,12,13,14,15,16,17,18,19,20,25,26,27,28,29,30,31,32,41,42,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61, Success=none 24: 4 0 0 0 46 46 0 0 0 0 0 0 0 0 0 31 31 31 31 0 0 0 0 0 0 0 31 31 31 31 0 0 0 0 0 130 0 0 0 0 Matched=11,12,13,14,15,16,17,18,19,20, Success=none 25: 4 0 0 0 35 35 0 0 0 0 0 0 0 0 0 36 36 31 36 0 107 0 0 107 0 0 31 31 31 31 0 0 0 0 0 130 0 0 47 0 Matched=11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,34,35,36,37,38,39,40,43,44, Success=none 26: 4 0 0 0 48 49 0 0 0 0 0 0 0 0 0 50 50 31 50 0 105 0 0 105 0 0 31 31 31 31 0 0 0 0 0 130 0 0 51 0 Matched=11,12,13,14,15,16,17,18,19,20,25,26,27,28,29,30,31,32,41,42,45,46,47,48,49,50,51,52, Success=none 27: 4 0 0 0 54 52 0 0 0 0 0 0 0 0 0 53 53 0 53 0 105 0 0 105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 Matched=25,26,27,28,29,30,31,32,41,42,45,46,47,48,49,50,51,52, Success=none 28: 4 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 55 0 55 0 0 137 0 0 Matched=71,72, Success=none 29: 4 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 138 0 Matched=86, Success=none 30: 4 0 0 0 101 102 33 33 0 0 0 0 0 0 0 103 103 31 103 0 105 0 0 105 0 0 104 104 104 104 0 0 131 132 131 130 33 0 32 0 Matched=11,12,13,14,15,16,17,18,19,20,25,26,27,28,29,30,31,32,41,42,45,46,47,48,49,50,51,52,66,67,73, Success=none 31: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19, Success=none 32: 5 0 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 0 0 144 0 0 0 0 0 0 0 0 145 0 145 0 0 0 0 0 Matched=41,42,66, Success=none 33: 5 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 145 0 145 0 0 0 0 0 Matched=66, Success=none 34: 5 0 0 0 64 64 0 0 0 0 0 0 0 0 0 65 65 65 65 0 0 0 0 0 0 0 65 65 65 65 0 0 0 0 0 146 0 0 0 0 Matched=1,2,3,4,5,6,7,8,9,10, Success=none 35: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 66 57 66 0 120 0 0 120 0 0 57 57 57 57 0 0 0 0 0 139 0 0 0 0 Matched=11,12,13,14,15,21,22,33,34,35,36, Success=none 36: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 147 0 0 147 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,23, Success=none 37: 5 0 148 148 0 0 67 67 148 148 148 0 148 148 0 59 59 59 59 148 147 0 0 147 0 0 59 59 59 59 148 0 0 0 0 121 67 0 67 148 Matched=16,17,18,19,23,76,77,78,79, Success=none 38: 5 0 148 148 0 0 67 67 148 148 148 0 148 148 0 59 59 59 59 148 0 0 0 0 0 0 59 59 59 59 148 0 0 0 0 121 67 0 67 148 Matched=16,17,18,19,76,77,78,79, Success=none 39: 5 0 152 152 0 0 0 0 152 152 152 0 152 152 0 0 0 0 0 152 0 0 0 0 0 0 0 0 0 0 152 0 0 0 0 0 0 0 0 152 Matched=82, Success=none 40: 5 0 0 0 72 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151 0 0 151 0 0 0 0 0 0 0 0 153 0 153 0 0 0 0 0 Matched=43,44,68, Success=none 41: 5 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 153 0 153 0 0 0 0 0 Matched=68, Success=none 42: 5 0 0 0 0 0 73 73 0 0 0 0 0 0 0 56 56 57 56 0 140 0 0 140 0 0 57 57 57 57 0 0 154 0 154 139 73 0 73 0 Matched=11,12,13,14,15,49,50,60,61, Success=none 43: 5 0 0 0 0 0 73 73 0 0 0 0 0 0 0 58 58 57 58 0 119 0 0 119 0 0 57 57 57 57 0 0 154 0 154 139 73 0 73 0 Matched=11,12,13,14,15,25,26,27,28,45,46,49,50,60,61, Success=none 44: 5 0 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 0 0 144 0 0 0 0 0 156 0 0 156 156 156 0 0 0 0 0 Matched=41,42,55, Success=none 45: 5 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 156 0 0 156 156 156 0 0 0 0 0 Matched=55, Success=none 46: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 57 57 57 0 0 0 0 0 0 0 57 57 57 57 0 0 0 0 0 139 0 0 0 0 Matched=11,12,13,14,15, Success=none 47: 5 0 0 0 72 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151 0 0 151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=43,44, Success=none 48: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 56 57 56 0 140 0 0 140 0 0 57 57 57 57 0 0 0 0 0 139 0 0 0 0 Matched=11,12,13,14,15,49,50, Success=none 49: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 58 57 58 0 119 0 0 119 0 0 57 57 57 57 0 0 0 0 0 139 0 0 0 0 Matched=11,12,13,14,15,25,26,27,28,45,46,49,50, Success=none 50: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 142 0 0 142 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,47,51, Success=none 51: 5 0 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 0 0 144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=41,42, Success=none 52: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 75 0 75 0 119 0 0 119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=25,26,27,28,45,46,49,50, Success=none 53: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142 0 0 142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=47,51, Success=none 54: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76 76 0 76 0 140 0 0 140 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=49,50, Success=none 55: 5 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 157 0 0 Matched=71, Success=none 56: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 77 77 77 0 159 0 0 159 0 0 77 77 77 77 0 0 0 0 0 158 0 0 0 0 Matched=11,12,13,14,49, Success=none 57: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 77 77 77 0 0 0 0 0 0 0 77 77 77 77 0 0 0 0 0 158 0 0 0 0 Matched=11,12,13,14, Success=none 58: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 77 77 77 0 160 0 0 160 0 0 77 77 77 77 0 0 0 0 0 158 0 0 0 0 Matched=11,12,13,14,45,49, Success=none 59: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 81 81 81 0 0 0 0 0 0 0 81 81 81 81 0 0 0 0 0 162 0 0 0 0 Matched=16,17,18, Success=none 60: 6 0 0 0 0 0 163 163 0 0 0 0 0 0 0 0 0 0 82 0 0 0 0 0 0 0 0 82 82 82 0 0 0 0 0 0 0 0 163 0 Matched=29,30, Success=none 61: 6 0 0 0 0 0 164 164 0 0 0 0 0 0 0 0 0 0 82 0 0 0 0 0 0 0 0 82 82 82 0 0 0 0 0 0 0 0 164 0 Matched=29,30,31, Success=none 62: 6 0 0 0 0 0 165 165 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 165 0 Matched=31, Success=none 63: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 166 0 0 166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=41, Success=none 64: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 83 83 83 0 0 0 0 0 0 0 83 83 83 83 0 0 0 0 0 167 0 0 0 0 Matched=1,2,3,4,5, Success=none 65: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84 84 84 84 0 0 0 0 0 0 0 84 84 84 84 0 0 0 0 0 168 0 0 0 0 Matched=6,7,8,9, Success=none 66: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 77 77 77 0 169 0 0 169 0 0 77 77 77 77 0 0 0 0 0 158 0 0 0 0 Matched=11,12,13,14,21, Success=none 67: 6 0 172 172 0 0 0 0 172 172 172 0 172 172 0 0 0 0 0 172 0 0 0 0 0 0 0 0 0 0 172 0 0 0 0 0 0 0 0 172 Matched=78, Success=none 68: 6 0 173 173 0 0 0 0 173 173 173 0 173 173 0 0 0 0 0 173 0 0 0 0 0 0 0 0 0 0 173 0 0 0 0 0 0 0 0 173 Matched=80, Success=none 69: 6 0 0 0 0 0 174 174 0 0 0 0 0 0 0 0 0 0 89 0 0 0 0 0 0 0 0 89 89 89 0 0 0 0 0 0 0 0 174 0 Matched=37,38, Success=none 70: 6 0 0 0 0 0 175 175 0 0 0 0 0 0 0 0 0 0 89 0 0 0 0 0 0 0 0 89 89 89 0 0 0 0 0 0 0 0 175 0 Matched=37,38,39, Success=none 71: 6 0 0 0 0 0 176 176 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 176 0 Matched=39, Success=none 72: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 177 0 0 177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=43, Success=none 73: 6 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 178 0 178 0 0 0 0 0 Matched=60, Success=none 74: 6 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 179 0 0 179 179 179 0 0 0 0 0 Matched=53, Success=none 75: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160 0 0 160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=45,49, Success=none 76: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159 0 0 159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=49, Success=none 77: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 90 90 90 0 0 0 0 0 0 0 90 90 90 90 0 0 0 0 0 180 0 0 0 0 Matched=11,12,13, Success=none 78: 7 0 0 0 0 0 181 181 0 0 0 0 0 0 0 0 0 0 91 0 0 0 0 0 0 0 0 91 91 91 0 0 0 0 0 0 0 0 181 0 Matched=25,26, Success=none 79: 7 0 0 0 0 0 182 182 0 0 0 0 0 0 0 0 0 0 91 0 0 0 0 0 0 0 0 91 91 91 0 0 0 0 0 0 0 0 182 0 Matched=25,26,27, Success=none 80: 7 0 0 0 0 0 183 183 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 183 0 Matched=27, Success=none 81: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 92 92 92 0 0 0 0 0 0 0 92 92 92 92 0 0 0 0 0 184 0 0 0 0 Matched=16,17, Success=none 82: 7 0 0 0 0 0 185 185 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 185 0 Matched=29, Success=none 83: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 93 93 93 93 0 0 0 0 0 0 0 93 93 93 93 0 0 0 0 0 186 0 0 0 0 Matched=1,2,3,4, Success=none 84: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94 94 94 94 0 0 0 0 0 0 0 94 94 94 94 0 0 0 0 0 187 0 0 0 0 Matched=6,7,8, Success=none 85: 7 0 0 0 0 0 188 188 0 0 0 0 0 0 0 0 0 0 95 0 0 0 0 0 0 0 0 95 95 95 0 0 0 0 0 0 0 0 188 0 Matched=33,34, Success=none 86: 7 0 0 0 0 0 189 189 0 0 0 0 0 0 0 0 0 0 95 0 0 0 0 0 0 0 0 95 95 95 0 0 0 0 0 0 0 0 189 0 Matched=33,34,35, Success=none 87: 7 0 0 0 0 0 190 190 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 190 0 Matched=35, Success=none 88: 7 0 191 191 0 0 0 0 191 191 191 0 191 191 0 0 0 0 0 191 0 0 0 0 0 0 0 0 0 0 191 0 0 0 0 0 0 0 0 191 Matched=76, Success=none 89: 7 0 0 0 0 0 192 192 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 192 0 Matched=37, Success=none 90: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 96 96 96 96 0 0 0 0 0 0 0 96 96 96 96 0 0 0 0 0 193 0 0 0 0 Matched=11,12, Success=none 91: 8 0 0 0 0 0 194 194 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 194 0 Matched=25, Success=none 92: 8 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 195 0 0 0 0 Matched=16, Success=none 93: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97 97 97 97 0 0 0 0 0 0 0 97 97 97 97 0 0 0 0 0 196 0 0 0 0 Matched=1,2,3, Success=none 94: 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 98 98 98 0 0 0 0 0 0 0 98 98 98 98 0 0 0 0 0 197 0 0 0 0 Matched=6,7, Success=none 95: 8 0 0 0 0 0 198 198 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 198 0 Matched=33, Success=none 96: 9 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 199 0 0 0 0 Matched=11, Success=none 97: 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99 99 99 99 0 0 0 0 0 0 0 99 99 99 99 0 0 0 0 0 200 0 0 0 0 Matched=1,2, Success=none 98: 9 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 201 0 0 0 0 Matched=6, Success=none 99: 10 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 202 0 0 0 0 Matched=1, Success=none 100: 4 0 0 0 101 102 33 33 0 0 0 0 0 0 0 103 103 31 103 0 105 0 0 105 0 0 104 104 104 104 0 0 131 132 131 130 33 0 32 0 Matched=0,11,12,13,14,15,16,17,18,19,20,25,26,27,28,29,30,31,32,41,42,45,46,47,48,49,50,51,52,66,67,73, Success=0, 101: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 56 57 56 0 140 0 0 140 0 0 57 57 57 57 0 0 0 0 0 139 0 0 0 0 Matched=11,12,13,14,15,49,50,73, Success=73, 102: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 58 57 58 0 119 0 0 119 0 0 57 57 57 57 0 0 0 0 0 139 0 0 0 0 Matched=11,12,13,14,15,25,26,27,28,45,46,49,50,73, Success=73, 103: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 142 0 0 142 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,47,51,73, Success=73, 104: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,73, Success=73, 105: 5 0 0 0 0 0 143 143 0 0 0 0 0 0 0 0 60 0 62 0 0 0 0 0 0 0 60 61 62 62 0 0 0 0 0 0 0 0 143 0 Matched=29,30,31,32,48,52, Success=48,52, 106: 5 0 149 149 0 0 68 68 149 149 149 0 149 149 0 0 0 0 0 149 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 68 0 68 149 Matched=20,80,81, Success=20, 107: 5 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 69 0 71 0 0 0 0 0 0 0 69 70 71 71 0 0 0 0 0 0 0 0 150 0 Matched=24,37,38,39,40, Success=24, 108: 5 0 152 152 72 72 0 0 152 152 152 0 152 152 0 0 0 0 0 152 151 0 0 151 0 0 0 0 0 0 152 0 0 0 0 0 0 0 0 152 Matched=43,44,75,82, Success=75, 109: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 66 57 66 0 120 0 0 120 0 0 57 57 57 57 0 0 0 0 0 139 0 0 0 0 Matched=11,12,13,14,15,21,22,33,34,35,36,74, Success=74, 110: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 147 0 0 147 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,23,74, Success=74, 111: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,74, Success=74, 112: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 142 0 0 142 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,47,51,58, Success=58, 113: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 142 0 0 142 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,47,51,57,58, Success=57,58, 114: 5 0 0 0 0 0 74 74 0 0 0 0 0 0 0 59 59 59 59 0 142 0 0 142 0 0 59 59 59 122 0 0 155 155 155 141 74 0 74 0 Matched=16,17,18,19,47,51,53,54,58, Success=58, 115: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 141 0 0 0 0 Matched=16,17,18,19,57, Success=57, 116: 5 0 0 0 0 0 74 74 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 0 0 59 59 59 122 0 0 155 155 155 141 74 0 74 0 Matched=16,17,18,19,53,54,57, Success=57, 117: 5 0 0 0 0 0 74 74 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 0 0 59 59 59 122 0 0 155 155 155 141 74 0 74 0 Matched=16,17,18,19,53,54,59, Success=59, 118: 5 0 0 0 0 0 74 74 0 0 0 0 0 0 0 59 59 59 59 0 0 0 0 0 0 0 59 59 59 122 0 0 155 155 155 141 74 0 74 0 Matched=16,17,18,19,53,54,56, Success=56, 119: 6 0 0 0 0 0 161 161 0 0 0 0 0 0 0 0 78 0 80 0 0 0 0 0 0 0 78 79 80 80 0 0 0 0 0 0 0 0 161 0 Matched=25,26,27,28,46,50, Success=46,50, 120: 6 0 0 0 0 0 170 170 0 0 0 0 0 0 0 0 85 0 87 0 0 0 0 0 0 0 85 86 87 87 0 0 0 0 0 0 0 0 170 0 Matched=22,33,34,35,36, Success=22, 121: 6 0 171 171 0 0 88 88 171 171 171 0 171 171 0 0 0 0 0 171 0 0 0 0 0 0 0 0 0 0 171 0 0 0 0 0 88 0 88 171 Matched=19,76,77, Success=19, 122: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 81 81 81 0 0 0 0 0 0 0 81 81 81 81 0 0 0 0 0 162 0 0 0 0 Matched=16,17,18,54, Success=54, 123: 4 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 Matched=85, Success=85, 124: 4 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 Matched=65, Success=65, 125: 4 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 Matched=64, Success=64, 126: 4 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 Matched=70, Success=70, 127: 4 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 Matched=63,65, Success=63,65, 128: 4 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 Matched=84, Success=84, 129: 4 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 Matched=62,64, Success=62,64, 130: 5 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 Matched=20, Success=20, 131: 5 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 Matched=67,73, Success=67,73, 132: 5 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 Matched=73, Success=73, 133: 5 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 Matched=83, Success=83, 134: 5 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 Matched=69,74, Success=69,74, 135: 5 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 Matched=74, Success=74, 136: 5 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 Matched=56, Success=56, 137: 5 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 Matched=72, Success=72, 138: 5 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 Matched=86, Success=86, 139: 6 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 Matched=15, Success=15, 140: 6 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 Matched=50, Success=50, 141: 6 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 Matched=19, Success=19, 142: 6 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 Matched=47,51, Success=47,51, 143: 6 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 Matched=32, Success=32, 144: 6 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 Matched=42, Success=42, 145: 6 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 Matched=66, Success=66, 146: 6 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 Matched=10, Success=10, 147: 6 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 Matched=23, Success=23, 148: 6 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 Matched=79, Success=79, 149: 6 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 Matched=81, Success=81, 150: 6 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 Matched=40, Success=40, 151: 6 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 Matched=44, Success=44, 152: 6 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 Matched=82, Success=82, 153: 6 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 Matched=68, Success=68, 154: 6 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 Matched=61, Success=61, 155: 6 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 Matched=54, Success=54, 156: 6 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 Matched=55, Success=55, 157: 6 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 Matched=71, Success=71, 158: 7 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 Matched=14, Success=14, 159: 7 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 Matched=49, Success=49, 160: 7 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 Matched=45,49, Success=45,49, 161: 7 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 Matched=28, Success=28, 162: 7 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 Matched=18, Success=18, 163: 7 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 Matched=30, Success=30, 164: 7 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 Matched=30,31, Success=30,31, 165: 7 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 Matched=31, Success=31, 166: 7 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 Matched=41, Success=41, 167: 7 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 Matched=5, Success=5, 168: 7 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 Matched=9, Success=9, 169: 7 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 Matched=21, Success=21, 170: 7 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 Matched=36, Success=36, 171: 7 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 Matched=77, Success=77, 172: 7 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 Matched=78, Success=78, 173: 7 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 Matched=80, Success=80, 174: 7 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 Matched=38, Success=38, 175: 7 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 Matched=38,39, Success=38,39, 176: 7 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 Matched=39, Success=39, 177: 7 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 Matched=43, Success=43, 178: 7 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 Matched=60, Success=60, 179: 7 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 Matched=53, Success=53, 180: 8 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 Matched=13, Success=13, 181: 8 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 Matched=26, Success=26, 182: 8 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 Matched=26,27, Success=26,27, 183: 8 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 Matched=27, Success=27, 184: 8 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 Matched=17, Success=17, 185: 8 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 Matched=29, Success=29, 186: 8 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 Matched=4, Success=4, 187: 8 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 Matched=8, Success=8, 188: 8 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 Matched=34, Success=34, 189: 8 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 Matched=34,35, Success=34,35, 190: 8 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 Matched=35, Success=35, 191: 8 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 Matched=76, Success=76, 192: 8 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 Matched=37, Success=37, 193: 9 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 Matched=12, Success=12, 194: 9 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 Matched=25, Success=25, 195: 9 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 Matched=16, Success=16, 196: 9 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 Matched=3, Success=3, 197: 9 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 Matched=7, Success=7, 198: 9 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 Matched=33, Success=33, 199: 10 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 Matched=11, Success=11, 200: 10 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 Matched=2, Success=2, 201: 10 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 Matched=6, Success=6, 202: 11 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 Matched=1, Success=1, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 4.0, PadaukMain.gdl(564): g1014 > g1014_alt / ANY ANY *GC2* _ ; RULE 4.1, PadaukMain.gdl(571): _ g1031 > @12:12 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia cClusDia cClusDia _ ; RULE 4.2, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia cClusDia _ ; RULE 4.3, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia _ ; RULE 4.4, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia _ ; RULE 4.5, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ c103c cCons cMed _ ; RULE 4.6, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia cClusDia cClusDia _ ; RULE 4.7, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia cClusDia _ ; RULE 4.8, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia _ ; RULE 4.9, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ c103c cCons cClusDia _ ; RULE 4.10, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ c103c cCons _ ; RULE 4.11, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia cClusDia cClusDia _ ; RULE 4.12, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia cClusDia _ ; RULE 4.13, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia _ ; RULE 4.14, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ cCons cMed cClusDia _ ; RULE 4.15, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ cCons cMed _ ; RULE 4.16, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia cClusDia cClusDia _ ; RULE 4.17, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia cClusDia _ ; RULE 4.18, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia _ ; RULE 4.19, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ cCons cClusDia _ ; RULE 4.20, PadaukMain.gdl(571): _ g1031 > @6:6 _ / ANY ANY ANY _ ^ cCons _ ; RULE 4.21, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$8:8 _ / ANY ANY ANY ^ _ cConsWide cMed c103b _ ; RULE 4.22, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ ; RULE 4.23, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsWide c103b _ ; RULE 4.24, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$6:6 _ / ANY ANY ANY ^ _ cConsWide _ ; RULE 4.25, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103d c103e cUSpace ; RULE 4.26, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103d cUSpace ; RULE 4.27, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103e cUSpace ; RULE 4.28, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ cUSpace ; RULE 4.29, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103d c103e cUSpace ; RULE 4.30, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103d cUSpace ; RULE 4.31, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103e cUSpace ; RULE 4.32, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ cUSpace ; RULE 4.33, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103d c103e cUSpace ; RULE 4.34, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103d cUSpace ; RULE 4.35, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103e cUSpace ; RULE 4.36, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ cUSpace ; RULE 4.37, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103d c103e cUSpace ; RULE 4.38, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103d cUSpace ; RULE 4.39, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103e cUSpace ; RULE 4.40, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ cUSpace ; RULE 4.41, PadaukMain.gdl(585): _ c103c_nar > c103c_naralt$8:8 _ / ANY ANY ANY ^ _ cConsNar g103a cMedNar _ ; RULE 4.42, PadaukMain.gdl(585): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar g103a _ ; RULE 4.43, PadaukMain.gdl(586): _ c103c_nar > c103c_widalt$8:8 _ / ANY ANY ANY ^ _ cConsWide g103a cMed _ ; RULE 4.44, PadaukMain.gdl(586): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide g103a _ ; RULE 4.45, PadaukMain.gdl(587): _ c103c_nar > @8:8 _ / ANY ANY ANY ^ _ cConsNar cMedNar c103b _ ; RULE 4.46, PadaukMain.gdl(587): _ c103c_nar > @7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ ; RULE 4.47, PadaukMain.gdl(587): _ c103c_nar > @7:7 _ / ANY ANY ANY ^ _ cConsNar c103b _ ; RULE 4.48, PadaukMain.gdl(587): _ c103c_nar > @6:6 _ / ANY ANY ANY ^ _ cConsNar _ ; RULE 4.49, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$8:8 _ / ANY ANY ANY ^ _ cConsNar cMed c103b _ ; RULE 4.50, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsNar cMed _ ; RULE 4.51, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsNar c103b _ ; RULE 4.52, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$6:6 _ / ANY ANY ANY ^ _ cConsNar _ ; RULE 4.53, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ c103e cUVowel cLVowelAll ; RULE 4.54, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ c103e cLVowelAll ; RULE 4.55, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ cUVowel cLVowelAll ; RULE 4.56, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ cLVowelAll ; RULE 4.57, PadaukMain.gdl(596): g101b > g101b_alt / ANY ANY ANY ^ _ c103d ; RULE 4.58, PadaukMain.gdl(597): g101b > g101b_alt / ANY ANY ANY ^ _ c103b ; RULE 4.59, PadaukMain.gdl(598): g101b > g101b_long / ANY ANY ANY ^ _ g103e ; RULE 4.60, PadaukMain.gdl(599): g101b > g101b_long / ANY ANY ANY ^ _ cMed cUVowel cLVowel ; RULE 4.61, PadaukMain.gdl(599): g101b > g101b_long / ANY ANY ANY ^ _ cMed cLVowel ; RULE 4.62, PadaukMain.gdl(608): g1030 > @4 / c103c_only cConsSVowel cUVowel _ ; RULE 4.63, PadaukMain.gdl(608): g1030 > @4 / ANY c103c_only cConsSVowel _ ; RULE 4.64, PadaukMain.gdl(609): cLVowel > cLVowelM / ANY ^ cConsSVowel cUVowel _ ; RULE 4.65, PadaukMain.gdl(609): cLVowel > cLVowelM / ANY ANY ^ cConsSVowel _ ; RULE 4.66, PadaukMain.gdl(610): g1014 cLVowel > g1014_alt:4 cLVowelM:6 / ANY ANY ANY ^ _ cUVowel _ ; RULE 4.67, PadaukMain.gdl(610): g1014 cLVowel > g1014_alt:4 cLVowelM:5 / ANY ANY ANY ^ _ _ ; RULE 4.68, PadaukMain.gdl(611): g100a cLVowel > g100a_alt:4 cLVowelM:6 / ANY ANY ANY ^ _ cUVowel _ ; RULE 4.69, PadaukMain.gdl(611): g100a cLVowel > g100a_alt:4 cLVowelM:5 / ANY ANY ANY ^ _ _ ; RULE 4.70, PadaukMain.gdl(612): g103d_103e > g103d_103e_small / ANY c103c cCons _ ; RULE 4.71, PadaukMain.gdl(613): cUTakesMa g1036 > cUWithMa:(4 6) _ / ANY ANY ANY _ cLVowel _ ; RULE 4.72, PadaukMain.gdl(613): cUTakesMa g1036 > cUWithMa:(4 5) _ / ANY ANY ANY _ _ ; RULE 4.73, PadaukMain.gdl(619): g1014 > g1014_alt / ANY ANY ANY ^ _ t1014 ; RULE 4.74, PadaukMain.gdl(620): g100a > g100a_alt / ANY ANY ANY ^ _ t100a ; RULE 4.75, PadaukMain.gdl(621): g1009 > g1025 / ANY ANY ANY ^ _ g103a ; RULE 4.76, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e g1031 cUVowel cCons ; RULE 4.77, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e g1031 cCons ; RULE 4.78, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e cUVowel cCons ; RULE 4.79, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e cCons ; RULE 4.80, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ g1031 cUVowel cCons ; RULE 4.81, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ g1031 cCons ; RULE 4.82, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ cUVowel cCons ; RULE 4.83, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ cCons ; RULE 4.84, PadaukMain.gdl(628): g103e > g103e_alt / ANY ^ c103c cConsSVowel _ ; RULE 4.85, PadaukMain.gdl(629): g103e > g103e_alt / ANY ANY cConsSlantH _ ; RULE 4.86, PadaukMain.gdl(635): g102b g103a > g102b_103a:(4 5) _ / ANY ANY ANY _ _ ; TABLE: positioning PASS: 0--no FSM PASS: 5 Glyph ID => Column: 0 .. 64 => 0 65 => 1 66 .. 105 => 0 106 => 2 107 => 3 108 => 4 109 => 5 110 => 6 111 => 2 112 => 7 113 => 2 114 => 7 115 => 3 116 => 4 117 => 2 118 .. 120 => 8 121 => 9 122 => 2 123 => 7 124 => 3 125 => 4 126 => 2 127 => 7 128 => 10 129 => 11 130 => 10 131 => 5 132 => 10 133 => 12 134 => 10 135 => 13 136 => 14 137 .. 138 => 5 139 => 10 140 => 4 141 => 15 142 => 7 143 .. 144 => 5 145 => 2 146 => 3 147 => 4 148 .. 149 => 5 150 => 3 151 => 4 152 => 14 153 => 3 154 => 4 155 => 2 156 => 7 157 => 2 158 => 7 159 => 2 160 => 16 161 => 7 162 => 5 163 => 17 164 => 2 165 => 7 166 => 2 167 => 7 168 => 2 169 => 7 170 => 3 171 => 4 172 => 2 173 => 7 174 => 3 175 => 18 176 .. 178 => 19 179 => 20 180 => 21 181 => 22 182 .. 185 => 23 186 .. 193 => 24 194 => 3 195 => 4 196 => 2 197 .. 198 => 25 199 => 26 200 => 3 201 => 4 202 => 17 203 .. 204 => 3 205 => 27 206 => 28 207 .. 208 => 25 209 => 10 210 => 3 211 => 4 212 => 29 213 => 0 214 => 30 215 => 31 216 => 32 217 => 30 218 => 33 219 => 0 220 => 5 221 .. 222 => 31 223 => 8 224 => 34 225 => 8 226 => 35 227 => 36 228 => 35 229 => 36 230 => 37 231 .. 233 => 8 234 => 34 235 => 38 236 => 39 237 => 40 238 => 14 239 => 29 240 => 5 241 .. 246 => 29 247 => 0 248 => 29 249 .. 250 => 0 251 => 31 252 .. 254 => 0 255 => 10 256 => 7 257 => 10 258 => 11 259 => 2 260 => 7 261 => 10 262 .. 263 => 25 264 => 41 265 => 42 266 => 29 267 => 5 268 => 29 269 .. 274 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Matched=none Success=none 1: 1 0 0 7 8 16 14 0 16 0 0 15 14 3 12 16 13 4 16 10 14 5 6 9 57 58 16 0 16 16 14 15 16 7 12 0 14 16 14 0 0 0 0 11 Matched=0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50, Success=none 2: 1 0 0 21 22 16 14 0 16 0 0 15 14 17 12 16 13 18 16 10 14 19 20 9 57 58 16 0 16 16 14 15 16 21 12 0 14 16 14 0 0 0 0 11 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50, Success=none 3: 2 0 63 0 0 69 0 0 67 64 64 0 28 0 0 67 0 0 0 28 28 0 0 0 27 27 67 66 67 67 0 0 0 0 0 64 28 67 28 65 26 64 68 0 Matched=3,4,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46, Success=none 4: 2 0 63 0 0 75 0 0 73 70 70 0 0 0 0 73 0 0 0 0 0 0 0 0 30 30 73 72 73 73 0 0 0 0 0 70 0 73 0 71 29 70 74 0 Matched=3,4,30,31,32,33,34,37,38,39,40,41,43,44,45,46, Success=none 5: 2 0 76 0 0 84 0 0 85 77 77 0 31 0 0 67 0 0 0 81 81 0 0 0 27 27 82 66 82 67 0 0 0 0 0 79 28 86 28 80 26 78 83 0 Matched=3,4,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 6: 2 0 76 0 0 87 0 0 82 77 77 0 32 0 0 67 0 0 0 32 32 0 0 0 27 27 82 66 82 67 0 0 0 0 0 79 28 86 28 80 26 77 83 0 Matched=3,4,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46, Success=none 7: 2 0 63 0 0 89 0 0 90 70 70 0 33 0 0 73 0 0 0 161 161 0 0 0 30 30 73 72 73 73 0 0 0 0 0 70 0 73 0 71 29 88 74 0 Matched=3,4,30,31,32,33,34,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 8: 2 0 63 0 0 92 0 0 93 64 64 0 34 0 0 67 0 0 0 94 94 0 0 0 27 27 67 66 67 67 0 0 0 0 0 64 28 67 28 65 26 91 68 0 Matched=3,4,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 9: 2 0 96 0 0 87 0 0 82 95 95 0 32 0 0 67 0 0 0 32 32 0 0 0 27 27 82 66 82 67 0 0 0 0 0 97 28 86 28 98 26 95 83 0 Matched=15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46, Success=none 10: 2 0 101 0 0 75 0 0 73 100 100 0 0 0 0 73 0 0 0 0 0 0 0 0 30 30 73 72 73 73 0 0 0 0 0 100 0 73 0 99 29 100 74 0 Matched=29,30,31,32,33,34,37,38,39,40,41,43,44,45,46, Success=none 11: 2 0 101 0 0 92 0 0 93 103 103 0 34 0 0 67 0 0 0 94 94 0 0 0 27 27 67 66 67 67 0 0 0 0 0 103 28 67 28 102 26 104 68 0 Matched=29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 12: 2 0 101 0 0 69 0 0 67 103 103 0 28 0 0 67 0 0 0 28 28 0 0 0 27 27 67 66 67 67 0 0 0 0 0 103 28 67 28 68 26 103 68 0 Matched=30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46, Success=none 13: 2 0 101 0 0 92 0 0 93 103 103 0 34 0 0 67 0 0 0 94 94 0 0 0 27 27 67 66 67 67 0 0 0 0 0 103 28 67 28 68 26 104 68 0 Matched=30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 14: 2 0 101 0 0 75 0 0 73 100 100 0 0 0 0 73 0 0 0 0 0 0 0 0 30 30 73 72 73 73 0 0 0 0 0 100 0 73 0 74 29 100 74 0 Matched=30,31,32,33,34,37,38,39,40,41,43,44,45,46, Success=none 15: 2 0 101 0 0 89 0 0 90 100 100 0 33 0 0 73 0 0 0 161 161 0 0 0 30 30 73 72 73 73 0 0 0 0 0 100 0 73 0 74 29 105 74 0 Matched=30,31,32,33,34,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 16: 2 0 0 0 0 159 0 0 158 24 24 0 0 0 0 158 0 0 0 0 0 0 0 0 0 0 158 60 158 158 0 0 0 0 0 24 0 158 0 61 24 24 61 0 Matched=33,34,37,38,43,44,45,46, Success=none 17: 2 0 106 0 0 69 0 0 67 107 107 0 28 0 0 67 0 0 0 28 28 0 0 0 27 27 67 66 67 67 0 0 0 0 0 107 28 67 28 108 26 107 68 0 Matched=1,2,3,4,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46, Success=none 18: 2 0 106 0 0 75 0 0 73 109 109 0 0 0 0 73 0 0 0 0 0 0 0 0 30 30 73 72 73 73 0 0 0 0 0 109 0 73 0 110 29 109 74 0 Matched=1,2,3,4,30,31,32,33,34,37,38,39,40,41,43,44,45,46, Success=none 19: 2 0 111 0 0 84 0 0 85 112 112 0 31 0 0 67 0 0 0 81 81 0 0 0 27 27 82 66 82 67 0 0 0 0 0 114 28 86 28 115 26 113 83 0 Matched=1,2,3,4,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 20: 2 0 111 0 0 87 0 0 82 112 112 0 32 0 0 67 0 0 0 32 32 0 0 0 27 27 82 66 82 67 0 0 0 0 0 114 28 86 28 115 26 112 83 0 Matched=1,2,3,4,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46, Success=none 21: 2 0 106 0 0 89 0 0 90 109 109 0 33 0 0 73 0 0 0 161 161 0 0 0 30 30 73 72 73 73 0 0 0 0 0 109 0 73 0 110 29 116 74 0 Matched=1,2,3,4,30,31,32,33,34,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 22: 2 0 106 0 0 92 0 0 93 107 107 0 34 0 0 67 0 0 0 94 94 0 0 0 27 27 67 66 67 67 0 0 0 0 0 107 28 67 28 108 26 117 68 0 Matched=1,2,3,4,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50, Success=none 23: 3 0 0 0 0 35 0 0 35 0 0 0 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=5,6,7,8,9,10,11,12, Success=none 24: 3 0 0 0 0 163 0 0 162 37 37 0 0 0 0 162 0 0 0 0 0 0 0 0 0 0 162 118 162 162 0 0 0 0 0 37 0 162 0 119 37 37 119 0 Matched=33,37,43,44,45, Success=none 25: 3 0 38 0 0 35 0 0 35 38 38 0 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 36 0 0 0 0 0 38 0 0 0 164 0 38 0 0 Matched=5,6,7,8,9,10,11,12,13,14, Success=none 26: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=30,31,33,35,37,39,40,43,44,45, Success=none 27: 3 0 126 0 0 128 0 0 40 127 127 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 127 40 0 Matched=30,31,35,39,40, Success=none 28: 3 0 0 0 0 167 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 Matched=35, Success=none 29: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=30,31,33,37,39,40,43,44,45, Success=none 30: 3 0 126 0 0 40 0 0 40 127 127 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 127 40 0 Matched=30,31,39,40, Success=none 31: 3 0 0 0 0 167 0 0 0 42 41 0 0 0 0 0 0 0 0 171 171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 0 43 0 170 0 46 0 0 Matched=15,16,17,18,19,20,21,22,35,47,48, Success=none 32: 3 0 0 0 0 167 0 0 0 42 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 0 43 0 170 0 42 0 0 Matched=15,16,17,18,19,20,21,22,35, Success=none 33: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171 171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 0 0 Matched=47,48, Success=none 34: 3 0 0 0 0 167 0 0 0 0 0 0 0 0 0 0 0 0 0 171 171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 0 0 Matched=35,47,48, Success=none 35: 4 0 49 0 0 0 0 0 0 49 49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48 48 0 0 0 0 0 49 0 0 0 175 0 49 0 0 Matched=5,6,7,8,9,10, Success=none 36: 4 0 50 0 0 0 0 0 0 50 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 176 0 50 0 0 Matched=11,12, Success=none 37: 4 0 0 0 0 0 0 0 0 51 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 51 0 0 0 148 51 51 148 0 Matched=43,44, Success=none 38: 4 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 177 0 0 0 0 Matched=13, Success=none 39: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=30,39,43,44, Success=none 40: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 149 0 0 Matched=30,39, Success=none 41: 4 0 0 0 0 0 0 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 0 52 0 180 0 0 0 0 Matched=15,16,17,18,21, Success=none 42: 4 0 0 0 0 0 0 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 0 52 0 181 0 0 0 0 Matched=15,16,17,18, Success=none 43: 4 0 0 0 0 0 0 0 0 0 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 0 0 0 182 0 0 0 0 Matched=19,20, Success=none 44: 4 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 183 0 0 0 0 Matched=21, Success=none 45: 4 0 149 0 0 0 0 0 0 149 153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 153 0 0 0 182 0 149 0 0 Matched=19,20,30,39, Success=none 46: 4 0 0 0 0 0 0 0 0 0 53 0 0 0 0 0 0 0 0 184 184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 0 52 0 181 0 0 0 0 Matched=15,16,17,18,47, Success=none 47: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184 184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=47, Success=none 48: 5 0 55 0 0 0 0 0 0 55 55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 0 0 0 186 0 55 0 0 Matched=5,6,9,10, Success=none 49: 5 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 187 0 0 0 0 Matched=7, Success=none 50: 5 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 188 0 0 0 0 Matched=11, Success=none 51: 5 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 189 0 0 189 0 Matched=43, Success=none 52: 5 0 0 0 0 0 0 0 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 192 0 0 0 0 Matched=15,16, Success=none 53: 5 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 193 0 0 0 0 Matched=17, Success=none 54: 5 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 194 0 0 0 0 Matched=19, Success=none 55: 6 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 196 0 0 0 0 Matched=5,9, Success=none 56: 6 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 197 0 0 0 0 Matched=15, Success=none 57: 2 0 0 59 59 159 160 160 158 24 24 160 0 59 160 158 160 59 160 0 0 59 59 160 0 0 158 60 158 158 0 0 0 23 0 24 0 158 160 61 24 24 61 160 Matched=0,5,6,7,8,9,10,11,12,33,34,37,38,42,43,44,45,46, Success=0, 58: 2 0 0 62 62 159 160 160 158 24 24 160 0 62 160 158 160 62 160 0 0 62 62 160 0 0 158 60 158 158 0 0 0 25 0 24 0 158 160 61 24 24 61 160 Matched=0,5,6,7,8,9,10,11,12,13,14,33,34,37,38,42,43,44,45,46, Success=0, 59: 3 0 0 0 0 35 0 0 35 0 0 0 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=5,6,7,8,9,10,11,12,42, Success=42, 60: 3 0 0 0 0 163 0 0 162 37 37 0 0 0 0 162 0 0 0 0 0 0 0 0 0 0 162 118 162 162 0 0 0 0 0 37 0 162 0 119 37 37 119 0 Matched=33,34,37,43,44,45, Success=34, 61: 3 0 0 0 0 163 0 0 162 37 37 0 0 0 0 162 0 0 0 0 0 0 0 0 0 0 162 118 162 162 0 0 0 0 0 37 0 162 0 119 37 37 119 0 Matched=33,37,43,44,45,46, Success=46, 62: 3 0 38 0 0 35 0 0 35 38 38 0 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 36 0 0 0 0 0 38 0 0 0 164 0 38 0 0 Matched=5,6,7,8,9,10,11,12,13,14,42, Success=42, 63: 3 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 166 0 0 165 0 0 0 0 Matched=3,32,41, Success=41, 64: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 120 39 121 124 0 Matched=3,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 65: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=4,30,31,33,35,37,39,40,43,44,45,46, Success=4,46, 66: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=30,31,33,34,35,37,39,40,43,44,45, Success=34, 67: 3 0 126 0 0 128 0 0 40 127 127 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 127 40 0 Matched=30,31,34,35,39,40, Success=34, 68: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=30,31,33,35,37,39,40,43,44,45,46, Success=46, 69: 3 0 126 0 0 128 0 0 40 127 127 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 127 40 0 Matched=30,31,35,36,38,39,40, Success=36,38, 70: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 120 39 121 124 0 Matched=3,30,31,32,33,37,39,40,41,43,44,45, Success=41, 71: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=4,30,31,33,37,39,40,43,44,45,46, Success=4,46, 72: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=30,31,33,34,37,39,40,43,44,45, Success=34, 73: 3 0 126 0 0 40 0 0 40 127 127 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 127 40 0 Matched=30,31,34,39,40, Success=34, 74: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=30,31,33,37,39,40,43,44,45,46, Success=46, 75: 3 0 126 0 0 40 0 0 40 127 127 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 127 40 0 Matched=30,31,38,39,40, Success=38, 76: 3 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 166 0 0 168 0 0 0 0 Matched=3,27,32,41, Success=41, 77: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 131 0 130 39 121 124 0 Matched=3,23,24,27,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 78: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 131 0 130 39 121 124 0 Matched=3,23,24,27,30,31,32,33,35,37,39,40,41,43,44,45,49, Success=41, 79: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 130 39 121 124 0 Matched=3,27,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 80: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=4,28,30,31,33,35,37,39,40,43,44,45,46, Success=4,28,46, 81: 3 0 0 0 0 167 0 0 0 42 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 0 43 0 170 0 42 0 0 Matched=15,16,17,18,19,20,21,22,35,50, Success=50, 82: 3 0 126 0 0 128 0 0 40 133 132 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 134 0 45 0 135 40 133 40 0 Matched=15,16,17,18,19,20,21,22,30,31,34,35,39,40, Success=34, 83: 3 0 126 0 0 125 0 0 123 137 136 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 139 0 138 0 140 39 137 124 0 Matched=15,16,17,18,19,20,21,22,30,31,33,35,37,39,40,43,44,45,46, Success=46, 84: 3 0 126 0 0 128 0 0 40 133 132 0 0 0 0 40 0 0 0 171 171 0 0 0 40 40 40 40 40 40 0 0 0 0 0 134 0 45 0 135 40 141 40 0 Matched=15,16,17,18,19,20,21,22,30,31,35,36,38,39,40,47,48, Success=36,38, 85: 3 0 126 0 0 128 0 0 40 133 132 0 0 0 0 40 0 0 0 171 171 0 0 0 40 40 40 40 40 40 0 0 0 0 0 134 0 45 0 135 40 141 40 0 Matched=15,16,17,18,19,20,21,22,30,31,34,35,39,40,47,48, Success=34, 86: 3 0 126 0 0 128 0 0 40 127 142 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 142 0 40 0 143 40 127 40 0 Matched=25,26,30,31,34,35,39,40, Success=34, 87: 3 0 126 0 0 128 0 0 40 133 132 0 0 0 0 40 0 0 0 0 0 0 0 0 40 40 40 40 40 40 0 0 0 0 0 134 0 45 0 135 40 133 40 0 Matched=15,16,17,18,19,20,21,22,30,31,35,36,38,39,40, Success=36,38, 88: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 120 39 121 124 0 Matched=3,30,31,32,33,37,39,40,41,43,44,45,49, Success=41, 89: 3 0 126 0 0 40 0 0 40 127 127 0 0 0 0 40 0 0 0 171 171 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 144 40 0 Matched=30,31,38,39,40,47,48, Success=38, 90: 3 0 126 0 0 40 0 0 40 127 127 0 0 0 0 40 0 0 0 171 171 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 144 40 0 Matched=30,31,34,39,40,47,48, Success=34, 91: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 120 39 121 124 0 Matched=3,30,31,32,33,35,37,39,40,41,43,44,45,49, Success=41, 92: 3 0 126 0 0 128 0 0 40 127 127 0 0 0 0 40 0 0 0 171 171 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 144 40 0 Matched=30,31,35,36,38,39,40,47,48, Success=36,38, 93: 3 0 126 0 0 128 0 0 40 127 127 0 0 0 0 40 0 0 0 171 171 0 0 0 40 40 40 40 40 40 0 0 0 0 0 127 0 40 0 40 40 144 40 0 Matched=30,31,34,35,39,40,47,48, Success=34, 94: 3 0 0 0 0 167 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 Matched=35,50, Success=50, 95: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 131 0 145 39 121 124 0 Matched=23,24,27,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 96: 3 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 166 0 0 172 0 0 0 0 Matched=27,32,41, Success=41, 97: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 145 39 121 124 0 Matched=27,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 98: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=28,30,31,33,35,37,39,40,43,44,45,46, Success=28,46, 99: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=29,30,31,33,37,39,40,43,44,45,46, Success=29,46, 100: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 124 39 121 124 0 Matched=30,31,32,33,37,39,40,41,43,44,45, Success=41, 101: 3 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 166 0 0 0 0 0 0 0 Matched=32,41, Success=41, 102: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=29,30,31,33,35,37,39,40,43,44,45,46, Success=29,46, 103: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 124 39 121 124 0 Matched=30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 104: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 124 39 121 124 0 Matched=30,31,32,33,35,37,39,40,41,43,44,45,49, Success=41, 105: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 124 39 121 124 0 Matched=30,31,32,33,37,39,40,41,43,44,45,49, Success=41, 106: 3 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 166 0 0 173 0 0 0 0 Matched=1,3,32,41, Success=41, 107: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 146 39 121 124 0 Matched=1,3,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 108: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=2,4,30,31,33,35,37,39,40,43,44,45,46, Success=2,4,46, 109: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 146 39 121 124 0 Matched=1,3,30,31,32,33,37,39,40,41,43,44,45, Success=41, 110: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=2,4,30,31,33,37,39,40,43,44,45,46, Success=2,4,46, 111: 3 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 166 0 0 174 0 0 0 0 Matched=1,3,27,32,41, Success=41, 112: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 131 0 147 39 121 124 0 Matched=1,3,23,24,27,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 113: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 131 0 147 39 121 124 0 Matched=1,3,23,24,27,30,31,32,33,35,37,39,40,41,43,44,45,49, Success=41, 114: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 147 39 121 124 0 Matched=1,3,27,30,31,32,33,35,37,39,40,41,43,44,45, Success=41, 115: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 0 0 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 0 123 0 124 39 121 124 0 Matched=2,4,28,30,31,33,35,37,39,40,43,44,45,46, Success=2,4,28,46, 116: 3 0 126 0 0 129 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 146 39 121 124 0 Matched=1,3,30,31,32,33,37,39,40,41,43,44,45,49, Success=41, 117: 3 0 126 0 0 125 0 0 123 121 121 0 0 0 0 123 0 0 0 169 169 0 0 0 40 40 123 122 123 123 0 0 0 0 0 121 166 123 0 146 39 121 124 0 Matched=1,3,30,31,32,33,35,37,39,40,41,43,44,45,49, Success=41, 118: 4 0 0 0 0 0 0 0 0 51 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 51 0 0 0 148 51 51 148 0 Matched=33,43,44, Success=33, 119: 4 0 0 0 0 0 0 0 0 51 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 51 0 0 0 148 51 51 148 0 Matched=43,44,45, Success=45, 120: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=3,30,39,43,44,45, Success=3,45, 121: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 178 0 0 148 51 150 148 0 Matched=30,31,39,40,43,44, Success=40, 122: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=30,33,39,43,44, Success=33, 123: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 149 0 0 Matched=30,33,39, Success=33, 124: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=30,39,43,44,45, Success=45, 125: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 149 0 0 Matched=30,35,37,39, Success=35,37, 126: 4 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 178 0 0 0 0 0 0 0 Matched=31,40, Success=40, 127: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 178 0 0 0 0 149 0 0 Matched=30,31,39,40, Success=40, 128: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 149 0 0 Matched=30,35,39, Success=35, 129: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 149 0 0 Matched=30,37,39, Success=37, 130: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=3,27,30,39,43,44,45, Success=3,27,45, 131: 4 0 149 0 0 0 0 0 0 149 151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151 0 0 0 179 0 149 0 0 Matched=23,24,30,33,39, Success=33, 132: 4 0 149 0 0 0 0 0 0 149 152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152 178 52 0 180 0 149 0 0 Matched=15,16,17,18,21,30,31,39,40, Success=40, 133: 4 0 149 0 0 0 0 0 0 149 152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152 178 52 0 181 0 149 0 0 Matched=15,16,17,18,30,31,39,40, Success=40, 134: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 178 0 0 183 0 149 0 0 Matched=21,30,31,39,40, Success=40, 135: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 149 0 0 Matched=22,30,39, Success=22, 136: 4 0 149 0 0 0 0 0 0 150 154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 154 178 52 0 155 51 150 148 0 Matched=15,16,17,18,21,30,31,39,40,43,44, Success=40, 137: 4 0 149 0 0 0 0 0 0 150 154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 154 178 52 0 156 51 150 148 0 Matched=15,16,17,18,30,31,39,40,43,44, Success=40, 138: 4 0 149 0 0 0 0 0 0 149 153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 153 0 0 0 182 0 149 0 0 Matched=19,20,30,33,39, Success=33, 139: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 178 0 0 157 51 150 148 0 Matched=21,30,31,39,40,43,44, Success=40, 140: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=22,30,39,43,44,45, Success=22,45, 141: 4 0 149 0 0 0 0 0 0 149 152 0 0 0 0 0 0 0 0 184 184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152 178 52 0 181 0 149 0 0 Matched=15,16,17,18,30,31,39,40,47, Success=40, 142: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 178 0 0 185 0 149 0 0 Matched=25,30,31,39,40, Success=40, 143: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 0 0 0 0 0 149 0 0 Matched=26,30,39, Success=26, 144: 4 0 149 0 0 0 0 0 0 149 149 0 0 0 0 0 0 0 0 184 184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 178 0 0 0 0 149 0 0 Matched=30,31,39,40,47, Success=40, 145: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=27,30,39,43,44,45, Success=27,45, 146: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=1,3,30,39,43,44,45, Success=1,3,45, 147: 4 0 149 0 0 0 0 0 0 150 150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 150 0 0 0 148 51 150 148 0 Matched=1,3,27,30,39,43,44,45, Success=1,3,27,45, 148: 5 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 189 0 0 189 0 Matched=43,44, Success=44, 149: 5 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 190 0 0 0 0 0 0 0 Matched=30,39, Success=39, 150: 5 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 190 0 0 189 0 0 189 0 Matched=30,39,43, Success=39, 151: 5 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 190 0 0 191 0 0 0 0 Matched=23,30,39, Success=39, 152: 5 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 190 0 0 193 0 0 0 0 Matched=17,30,39, Success=39, 153: 5 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 190 0 0 194 0 0 0 0 Matched=19,30,39, Success=39, 154: 5 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 190 0 0 195 0 0 189 0 Matched=17,30,39,43, Success=39, 155: 5 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 189 0 0 189 0 Matched=18,21,43,44, Success=18,21,44, 156: 5 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 189 0 0 189 0 Matched=18,43,44, Success=18,44, 157: 5 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 189 0 0 189 0 Matched=21,43,44, Success=21,44, 158: 3 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 Matched=34, Success=34, 159: 3 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 Matched=38, Success=38, 160: 3 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 Matched=42, Success=42, 161: 3 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 Matched=50, Success=50, 162: 4 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 Matched=33, Success=33, 163: 4 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 Matched=37, Success=37, 164: 4 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 Matched=14, Success=14, 165: 4 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 Matched=3, Success=3, 166: 4 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 Matched=32, Success=32, 167: 4 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 Matched=35, Success=35, 168: 4 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 Matched=3,27, Success=3,27, 169: 4 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 Matched=49, Success=49, 170: 4 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 Matched=22, Success=22, 171: 4 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 Matched=48, Success=48, 172: 4 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 Matched=27, Success=27, 173: 4 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 Matched=1,3, Success=1,3, 174: 4 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 Matched=1,3,27, Success=1,3,27, 175: 5 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 Matched=8, Success=8, 176: 5 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 Matched=12, Success=12, 177: 5 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 Matched=13, Success=13, 178: 5 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 Matched=31, Success=31, 179: 5 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 Matched=24, Success=24, 180: 5 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 Matched=18,21, Success=18,21, 181: 5 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 Matched=18, Success=18, 182: 5 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 Matched=20, Success=20, 183: 5 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 Matched=21, Success=21, 184: 5 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 Matched=47, Success=47, 185: 5 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 Matched=25, Success=25, 186: 6 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 Matched=6,10, Success=6,10, 187: 6 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 Matched=7, Success=7, 188: 6 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 Matched=11, Success=11, 189: 6 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 Matched=43, Success=43, 190: 6 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 Matched=30, Success=30, 191: 6 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 Matched=23, Success=23, 192: 6 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 Matched=16, Success=16, 193: 6 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 Matched=17, Success=17, 194: 6 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 Matched=19, Success=19, 195: 6 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 Matched=17,43, Success=17,43, 196: 7 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 Matched=5,9, Success=5,9, 197: 7 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 Matched=15, Success=15, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 5.0, PadaukMain.gdl(700): c103c { advance.x = advx; user2 = 1; } / ANY ^ _{ user2 == 0 } ; RULE 5.1, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ^ c103c_only _ cUDia _{ user1 == 0 } ; RULE 5.2, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ^ c103c_only _ _{ user1 == 0 } ; RULE 5.3, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUDia _{ user1 == 0 } ; RULE 5.4, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.5, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia cUDia _{ user1 == 0 } ; RULE 5.6, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia _{ user1 == 0 } ; RULE 5.7, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed cUDia _{ user1 == 0 } ; RULE 5.8, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed _{ user1 == 0 } ; RULE 5.9, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia cUDia _{ user1 == 0 } ; RULE 5.10, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia _{ user1 == 0 } ; RULE 5.11, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel c103e_dia cUDia _{ user1 == 0 } ; RULE 5.12, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel c103e_dia _{ user1 == 0 } ; RULE 5.13, PadaukMain.gdl(716): c103c_mix g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cUDia _{ user1 == 0 } ; RULE 5.14, PadaukMain.gdl(716): c103c_mix g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel _{ user1 == 0 } ; RULE 5.15, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel cLVowelM c1036 _{ user1 == 0 } ; RULE 5.16, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel cLVowelM _{ user1 == 0 } ; RULE 5.17, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel c1036 _{ user1 == 0 } ; RULE 5.18, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel _{ user1 == 0 } ; RULE 5.19, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cLVowelM c1036 _{ user1 == 0 } ; RULE 5.20, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cLVowelM _{ user1 == 0 } ; RULE 5.21, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* c1036 _{ user1 == 0 } ; RULE 5.22, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* _{ user1 == 0 } ; RULE 5.23, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUVowel cLVowelM c1036 _{ user1 == 0 } ; RULE 5.24, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUVowel cLVowelM _{ user1 == 0 } ; RULE 5.25, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cLVowelM c1036 _{ user1 == 0 } ; RULE 5.26, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cLVowelM _{ user1 == 0 } ; RULE 5.27, PadaukMain.gdl(722): c101b g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ cUDia _{ user1 == 0 } ; RULE 5.28, PadaukMain.gdl(722): c101b g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.29, PadaukMain.gdl(724): cLeftLDot g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.30, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @6; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ cnTakesUDia cnTakesUDia _{ user1 == 0 } _ ; RULE 5.31, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @5; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ cnTakesUDia _{ user1 == 0 } _ ; RULE 5.32, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @4; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ _{ user1 == 0 } _ ; RULE 5.33, PadaukMain.gdl(741): cTakesBSDia cBSDia { attach {to = @2; at = BSS; with = BSM; } user1 = 1; } / ANY ^ _ cnTakesBSDia _{ user1 == 0 } ; RULE 5.34, PadaukMain.gdl(741): cTakesBSDia cBSDia { attach {to = @2; at = BSS; with = BSM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.35, PadaukMain.gdl(743): cTakesBDDia cBDDia { attach {to = @2; at = BDS; with = BDM; } user1 = 1; } / ANY ^ _ cnTakesBDDia _{ user1 == 0 } ; RULE 5.36, PadaukMain.gdl(743): cTakesBDDia cBDDia { attach {to = @2; at = BDS; with = BDM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.37, PadaukMain.gdl(745): cTakesBSDia cBDDia { attach {to = @2; at = BSS; with = BDM; } user1 = 1; } / ANY ^ _ cnTakesBSDia _{ user1 == 0 } ; RULE 5.38, PadaukMain.gdl(745): cTakesBSDia cBDDia { attach {to = @2; at = BSS; with = BDM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.39, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ cnTakesUDia cnTakesUDia _{ user1 == 0 } ; RULE 5.40, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ cnTakesUDia _{ user1 == 0 } ; RULE 5.41, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.42, PadaukMain.gdl(755): cTakesRDia cRDia { attach {to = @2; at = RS; with = RM; } user1 = 1; insert = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.43, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia cnTakesLDia cnTakesLDia _{ user1 == 0 } ; RULE 5.44, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia cnTakesLDia _{ user1 == 0 } ; RULE 5.45, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia _{ user1 == 0 } ; RULE 5.46, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; RULE 5.47, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ cMed g103a _{ user1 == 0 } ; RULE 5.48, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ cMed _{ user1 == 0 } ; RULE 5.49, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ g103a _{ user1 == 0 } ; RULE 5.50, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; PASS: 6 Glyph ID => Column: 0 .. 64 => 0 65 => 1 66 .. 105 => 0 106 => 2 107 => 3 108 => 4 109 .. 110 => 5 111 => 2 112 => 4 113 => 2 114 => 4 115 => 3 116 => 4 117 => 2 118 .. 121 => 6 122 => 2 123 => 4 124 => 3 125 => 4 126 => 2 127 => 4 128 => 3 129 => 4 130 => 3 131 => 5 132 => 3 133 => 5 134 => 2 135 => 5 136 => 0 137 .. 138 => 5 139 => 2 140 => 4 141 => 2 142 => 4 143 .. 144 => 5 145 => 2 146 => 3 147 => 4 148 .. 149 => 5 150 => 3 151 => 4 152 => 0 153 => 3 154 => 4 155 => 2 156 => 4 157 => 2 158 => 4 159 => 2 160 => 7 161 => 4 162 .. 163 => 5 164 => 2 165 => 4 166 => 2 167 => 4 168 => 2 169 => 4 170 => 3 171 => 4 172 => 2 173 => 4 174 => 3 175 .. 176 => 8 177 => 0 178 => 8 179 => 2 180 => 9 181 => 5 182 .. 193 => 10 194 => 3 195 => 4 196 => 2 197 .. 198 => 4 199 => 0 200 => 3 201 => 4 202 => 5 203 .. 204 => 3 205 => 4 206 => 0 207 .. 208 => 11 209 .. 210 => 3 211 => 4 212 .. 213 => 0 214 => 12 215 => 0 216 .. 217 => 13 218 .. 219 => 0 220 => 5 221 => 14 222 => 15 223 => 6 224 => 1 225 => 6 226 => 4 227 => 11 228 => 4 229 => 11 230 => 16 231 .. 233 => 6 234 => 1 235 .. 236 => 0 237 => 6 238 .. 239 => 0 240 => 5 241 .. 254 => 0 255 => 2 256 => 4 257 => 2 258 => 4 259 => 2 260 => 4 261 => 2 262 .. 264 => 0 265 => 2 266 => 0 267 => 5 268 .. 274 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 3 1 1 1 1 3 1 4 1 5 1 1 1 1 2 1 Matched=none Success=none 1: 1 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 Matched=0, Success=none 2: 1 0 0 9 11 0 0 0 7 0 6 0 0 11 9 0 0 12 Matched=0,2,3,4,5, Success=none 3: 1 0 0 0 0 0 0 0 0 0 6 0 0 0 0 13 13 0 Matched=0,1, Success=none 4: 1 0 0 0 0 0 0 14 0 0 6 0 0 0 0 0 0 0 Matched=0,7, Success=none 5: 1 0 0 15 15 0 15 0 15 0 10 0 0 0 0 0 0 15 Matched=0,6, Success=none 6: 2 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 Matched=0, Success=none 7: 2 0 17 0 0 8 0 17 0 0 0 0 8 0 0 0 0 0 Matched=2,3, Success=none 8: 3 0 18 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 Matched=2, Success=none 9: 2 0 17 0 0 8 0 17 0 0 0 0 8 0 0 0 0 0 Matched=2,3,4, Success=4, 10: 2 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 Matched=0,6, Success=6, 11: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=4, Success=4, 12: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=5, Success=5, 13: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=1, Success=1, 14: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=7, Success=7, 15: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=6, Success=6, 16: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=0, Success=0, 17: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=3, Success=3, 18: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=2, Success=2, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 6.0, PadaukMain.gdl(795): g101b_alt { shift.x = @3.rkern + 10; advance.x = aw + (@3.rkern + 10); } cHasRkern { shift.x = -(rkern); } / ANY _ _ ; RULE 6.1, PadaukMain.gdl(797): c102b { shift.x = xkern / 2; advance.x = aw + (xkern / 2); } / cUDia _ ; RULE 6.2, PadaukMain.gdl(798): cConsNar / g102b_103a _ cLowDia cUDia ; RULE 6.3, PadaukMain.gdl(798): cConsNar / g102b_103a _ cUDia ; RULE 6.4, PadaukMain.gdl(799): cCons { shift.x = -(@1.xkern); advance.x = aw + -(@1.xkern); } / g102b_103a _ ; RULE 6.5, PadaukMain.gdl(800): g1031 { shift.x = -(@1.xkern); advance.x = aw + -(@1.xkern); } / g102b_103a _ ; RULE 6.6, PadaukMain.gdl(801): cRDia { shift.x = ((((@1.aw + @1.advance.x) - advance.x) / 2) + @1.position.x) - position.x; } / cTakesRDia _ ; RULE 6.7, PadaukMain.gdl(802): cUVowel { advance.x = 0; } / c103b _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/dbg_glyphattrs.txt000066400000000000000000001165071411153030700272120ustar00rootroot00000000000000GLYPH ATTRIBUTE IDS 0: *actualForPseudo* 1: breakweight 2: directionality 3: BDS.x 4: BDS.gpoint 5: BDS.xoffset 6: BDS.y 7: BDS.yoffset 8: BSS.x 9: BSS.gpoint 10: BSS.xoffset 11: BSS.y 12: BSS.yoffset 13: LS.x 14: LS.gpoint 15: LS.xoffset 16: LS.y 17: LS.yoffset 18: RM.x 19: RM.gpoint 20: RM.xoffset 21: RM.y 22: RM.yoffset 23: US.x 24: US.gpoint 25: US.xoffset 26: US.y 27: US.yoffset 28: order 29: LLS.x 30: LLS.gpoint 31: LLS.xoffset 32: LLS.y 33: LLS.yoffset 34: BDM.x 35: BDM.gpoint 36: BDM.xoffset 37: BDM.y 38: BDM.yoffset 39: BSM.x 40: BSM.gpoint 41: BSM.xoffset 42: BSM.y 43: BSM.yoffset 44: UM.x 45: UM.gpoint 46: UM.xoffset 47: UM.y 48: UM.yoffset 49: dotS.x 50: dotS.gpoint 51: dotS.xoffset 52: dotS.y 53: dotS.yoffset 54: advx 55: xkern 56: rkern 57: LM.x 58: LM.gpoint 59: LM.xoffset 60: LM.y 61: LM.yoffset 62: RS.x 63: RS.gpoint 64: RS.xoffset 65: RS.y 66: RS.yoffset GLYPH ATTRIBUTE VALUES 0 [0x0000] breakweight = -30 [0xffe2] 1 [0x0001] breakweight = -30 [0xffe2] 2 [0x0002] breakweight = -30 [0xffe2] 3 [0x0003] breakweight = 10 [0x000a] directionality = 9 order = 1 4 [0x0004] breakweight = -30 [0xffe2] 5 [0x0005] breakweight = -30 [0xffe2] 6 [0x0006] breakweight = -30 [0xffe2] 7 [0x0007] breakweight = -30 [0xffe2] 8 [0x0008] breakweight = -30 [0xffe2] 9 [0x0009] breakweight = -30 [0xffe2] 10 [0x000a] breakweight = -30 [0xffe2] 11 [0x000b] breakweight = -15 [0xfff1] directionality = 21 [0x0015] 12 [0x000c] breakweight = 10 [0x000a] directionality = 22 [0x0016] order = 1 13 [0x000d] breakweight = -30 [0xffe2] 14 [0x000e] breakweight = -30 [0xffe2] 15 [0x000f] breakweight = -30 [0xffe2] 16 [0x0010] breakweight = -30 [0xffe2] 17 [0x0011] breakweight = -30 [0xffe2] 18 [0x0012] breakweight = -30 [0xffe2] 19 [0x0013] breakweight = -30 [0xffe2] 20 [0x0014] breakweight = -30 [0xffe2] 21 [0x0015] breakweight = -30 [0xffe2] 22 [0x0016] breakweight = -30 [0xffe2] 23 [0x0017] breakweight = -30 [0xffe2] 24 [0x0018] breakweight = -30 [0xffe2] 25 [0x0019] breakweight = -30 [0xffe2] 26 [0x001a] breakweight = -30 [0xffe2] 27 [0x001b] breakweight = -30 [0xffe2] 28 [0x001c] breakweight = -30 [0xffe2] 29 [0x001d] breakweight = -30 [0xffe2] 30 [0x001e] breakweight = -30 [0xffe2] 31 [0x001f] breakweight = -30 [0xffe2] 32 [0x0020] breakweight = -30 [0xffe2] 33 [0x0021] breakweight = -30 [0xffe2] 34 [0x0022] breakweight = -30 [0xffe2] 35 [0x0023] breakweight = -30 [0xffe2] 36 [0x0024] breakweight = -30 [0xffe2] 37 [0x0025] breakweight = -30 [0xffe2] 38 [0x0026] breakweight = -30 [0xffe2] 39 [0x0027] breakweight = -30 [0xffe2] 40 [0x0028] breakweight = -30 [0xffe2] 41 [0x0029] breakweight = -30 [0xffe2] 42 [0x002a] breakweight = -30 [0xffe2] 43 [0x002b] breakweight = -30 [0xffe2] 44 [0x002c] breakweight = -30 [0xffe2] 45 [0x002d] breakweight = -30 [0xffe2] 46 [0x002e] breakweight = -30 [0xffe2] 47 [0x002f] breakweight = -30 [0xffe2] 48 [0x0030] breakweight = -30 [0xffe2] 49 [0x0031] breakweight = -30 [0xffe2] 50 [0x0032] breakweight = -30 [0xffe2] 51 [0x0033] breakweight = -30 [0xffe2] 52 [0x0034] breakweight = -30 [0xffe2] 53 [0x0035] breakweight = -30 [0xffe2] 54 [0x0036] breakweight = -30 [0xffe2] 55 [0x0037] breakweight = -30 [0xffe2] 56 [0x0038] breakweight = -30 [0xffe2] 57 [0x0039] breakweight = -30 [0xffe2] 58 [0x003a] breakweight = -30 [0xffe2] 59 [0x003b] breakweight = -30 [0xffe2] 60 [0x003c] breakweight = -30 [0xffe2] 61 [0x003d] breakweight = -30 [0xffe2] 62 [0x003e] breakweight = -30 [0xffe2] directionality = 21 [0x0015] 63 [0x003f] breakweight = -30 [0xffe2] 64 [0x0040] breakweight = -30 [0xffe2] directionality = 22 [0x0016] 65 [0x0041] breakweight = -30 [0xffe2] UM.x = 226 [0x00e2] UM.y = 495 [0x01ef] 66 [0x0042] breakweight = -30 [0xffe2] 67 [0x0043] breakweight = -30 [0xffe2] 68 [0x0044] breakweight = -30 [0xffe2] 69 [0x0045] breakweight = -30 [0xffe2] 70 [0x0046] breakweight = -30 [0xffe2] 71 [0x0047] breakweight = -30 [0xffe2] 72 [0x0048] breakweight = -30 [0xffe2] 73 [0x0049] breakweight = -30 [0xffe2] 74 [0x004a] breakweight = -30 [0xffe2] 75 [0x004b] breakweight = -30 [0xffe2] 76 [0x004c] breakweight = -30 [0xffe2] 77 [0x004d] breakweight = -30 [0xffe2] 78 [0x004e] breakweight = -30 [0xffe2] 79 [0x004f] breakweight = -30 [0xffe2] 80 [0x0050] breakweight = -30 [0xffe2] 81 [0x0051] breakweight = -30 [0xffe2] 82 [0x0052] breakweight = -30 [0xffe2] 83 [0x0053] breakweight = -30 [0xffe2] 84 [0x0054] breakweight = -30 [0xffe2] 85 [0x0055] breakweight = -30 [0xffe2] 86 [0x0056] breakweight = -30 [0xffe2] 87 [0x0057] breakweight = -30 [0xffe2] 88 [0x0058] breakweight = -30 [0xffe2] 89 [0x0059] breakweight = -30 [0xffe2] 90 [0x005a] breakweight = -30 [0xffe2] 91 [0x005b] breakweight = -30 [0xffe2] 92 [0x005c] breakweight = -30 [0xffe2] 93 [0x005d] breakweight = -30 [0xffe2] 94 [0x005e] breakweight = -30 [0xffe2] directionality = 21 [0x0015] 95 [0x005f] breakweight = -30 [0xffe2] 96 [0x0060] breakweight = -30 [0xffe2] directionality = 22 [0x0016] 97 [0x0061] breakweight = -30 [0xffe2] 98 [0x0062] breakweight = -30 [0xffe2] 99 [0x0063] breakweight = -15 [0xfff1] 100 [0x0064] breakweight = 10 [0x000a] 101 [0x0065] breakweight = -15 [0xfff1] 102 [0x0066] breakweight = 10 [0x000a] 103 [0x0067] breakweight = -30 [0xffe2] 104 [0x0068] breakweight = -30 [0xffe2] 105 [0x0069] breakweight = -30 [0xffe2] 106 [0x006a] breakweight = -15 [0xfff1] BSS.x = 318 [0x013e] BSS.y = -53 [0xffcb] LS.x = 318 [0x013e] LS.y = -53 [0xffcb] US.x = 318 [0x013e] US.gpoint = 38 [0x0026] US.y = 493 [0x01ed] order = 1 107 [0x006b] breakweight = -15 [0xfff1] BDS.x = 508 [0x01fc] BDS.y = -53 [0xffcb] BSS.x = 714 [0x02ca] BSS.y = -53 [0xffcb] LS.x = 714 [0x02ca] LS.y = -53 [0xffcb] US.x = 714 [0x02ca] US.y = 495 [0x01ef] order = 1 108 [0x006c] breakweight = -30 [0xffe2] BSS.x = 886 [0x0376] BSS.y = -53 [0xffcb] LS.x = 886 [0x0376] LS.y = -53 [0xffcb] order = 2 LLS.x = -74 [0xffb6] LLS.y = -53 [0xffcb] BDM.x = 400 [0x0190] BDM.y = -53 [0xffcb] 109 [0x006d] breakweight = -30 [0xffe2] BSS.x = 1236 [0x04d4] BSS.y = -53 [0xffcb] LS.x = 1236 [0x04d4] LS.y = -53 [0xffcb] US.x = 940 [0x03ac] US.y = 495 [0x01ef] order = 1 LLS.x = 394 [0x018a] LLS.y = -53 [0xffcb] 110 [0x006e] breakweight = -30 [0xffe2] order = 1 111 [0x006f] breakweight = -15 [0xfff1] BSS.x = 283 [0x011b] BSS.y = -53 [0xffcb] LS.x = 283 [0x011b] LS.y = -53 [0xffcb] US.x = 283 [0x011b] US.y = 495 [0x01ef] order = 1 112 [0x0070] breakweight = -30 [0xffe2] BSS.x = 556 [0x022c] BSS.y = -53 [0xffcb] LS.x = 556 [0x022c] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 231 [0x00e7] BSM.y = -53 [0xffcb] 113 [0x0071] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 114 [0x0072] breakweight = -30 [0xffe2] BSS.x = 565 [0x0235] BSS.y = -53 [0xffcb] LS.x = 565 [0x0235] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 238 [0x00ee] BSM.y = -53 [0xffcb] 115 [0x0073] breakweight = -15 [0xfff1] BDS.x = 495 [0x01ef] BDS.y = -53 [0xffcb] BSS.x = 712 [0x02c8] BSS.y = -53 [0xffcb] LS.x = 712 [0x02c8] LS.y = -53 [0xffcb] US.x = 712 [0x02c8] US.y = 495 [0x01ef] order = 1 116 [0x0074] breakweight = -30 [0xffe2] BSS.x = 883 [0x0373] BSS.y = -53 [0xffcb] LS.x = 883 [0x0373] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 394 [0x018a] BDM.y = -53 [0xffcb] 117 [0x0075] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 118 [0x0076] breakweight = -50 [0xffce] order = 8 UM.x = -92 [0xffa4] UM.y = 466 [0x01d2] 119 [0x0077] breakweight = -50 [0xffce] order = 8 UM.x = -296 [0xfed8] UM.y = 466 [0x01d2] 120 [0x0078] breakweight = -50 [0xffce] order = 8 UM.x = -296 [0xfed8] UM.y = 466 [0x01d2] 121 [0x0079] breakweight = -50 [0xffce] order = 10 [0x000a] UM.x = -258 [0xfefe] UM.y = 466 [0x01d2] 122 [0x007a] breakweight = -15 [0xfff1] BSS.x = 288 [0x0120] BSS.y = -53 [0xffcb] LS.x = 288 [0x0120] LS.y = -53 [0xffcb] US.x = 288 [0x0120] US.y = 495 [0x01ef] order = 1 123 [0x007b] breakweight = -30 [0xffe2] BSS.x = 556 [0x022c] BSS.y = -53 [0xffcb] LS.x = 556 [0x022c] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 234 [0x00ea] BSM.y = -53 [0xffcb] 124 [0x007c] breakweight = -15 [0xfff1] BDS.x = 495 [0x01ef] BDS.y = -53 [0xffcb] BSS.x = 702 [0x02be] BSS.y = -53 [0xffcb] LS.x = 702 [0x02be] LS.y = -53 [0xffcb] US.x = 702 [0x02be] US.y = 495 [0x01ef] order = 1 125 [0x007d] breakweight = -30 [0xffe2] BSS.x = 877 [0x036d] BSS.y = -53 [0xffcb] LS.x = 877 [0x036d] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 394 [0x018a] BDM.y = -53 [0xffcb] 126 [0x007e] breakweight = -15 [0xfff1] BSS.x = 286 [0x011e] BSS.y = -53 [0xffcb] LS.x = 286 [0x011e] LS.y = -53 [0xffcb] US.x = 288 [0x0120] US.y = 495 [0x01ef] order = 1 127 [0x007f] breakweight = -30 [0xffe2] BSS.x = 532 [0x0214] BSS.y = -53 [0xffcb] LS.x = 532 [0x0214] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 235 [0x00eb] BSM.y = -53 [0xffcb] 128 [0x0080] breakweight = -15 [0xfff1] BSS.x = 810 [0x032a] BSS.y = -53 [0xffcb] LS.x = 810 [0x032a] LS.y = -53 [0xffcb] US.x = 549 [0x0225] US.y = 486 [0x01e6] order = 1 LLS.x = 208 [0x00d0] LLS.y = -53 [0xffcb] 129 [0x0081] breakweight = -30 [0xffe2] BSS.x = 250 [0x00fa] BSS.y = -53 [0xffcb] LS.x = 250 [0x00fa] LS.y = -53 [0xffcb] order = 2 dotS.x = -218 [0xff26] dotS.y = -53 [0xffcb] 130 [0x0082] breakweight = -15 [0xfff1] BSS.x = 450 [0x01c2] BSS.y = -53 [0xffcb] LS.x = 276 [0x0114] LS.y = -53 [0xffcb] US.x = 276 [0x0114] US.y = 495 [0x01ef] order = 1 LLS.x = 724 [0x02d4] LLS.y = -53 [0xffcb] 131 [0x0083] breakweight = -30 [0xffe2] BSS.x = 1063 [0x0427] BSS.y = -53 [0xffcb] LS.x = 702 [0x02be] LS.y = -53 [0xffcb] US.x = 702 [0x02be] US.y = 495 [0x01ef] order = 1 132 [0x0084] breakweight = -15 [0xfff1] BSS.x = 1063 [0x0427] BSS.y = -53 [0xffcb] LS.x = 702 [0x02be] LS.y = -53 [0xffcb] US.x = 702 [0x02be] US.y = 495 [0x01ef] order = 1 133 [0x0085] breakweight = -30 [0xffe2] BDS.x = 486 [0x01e6] BDS.y = -53 [0xffcb] BSS.x = 702 [0x02be] BSS.y = -53 [0xffcb] LS.x = 702 [0x02be] LS.y = -53 [0xffcb] US.x = 702 [0x02be] US.y = 495 [0x01ef] order = 1 134 [0x0086] breakweight = -15 [0xfff1] BSS.x = 657 [0x0291] BSS.y = -53 [0xffcb] LS.x = 657 [0x0291] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 135 [0x0087] breakweight = -30 [0xffe2] BDS.x = 60 [0x003c] BDS.y = -173 [0xff53] BSS.x = 207 [0x00cf] BSS.y = -173 [0xff53] LS.x = 642 [0x0282] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 LLS.x = 292 [0x0124] LLS.y = -53 [0xffcb] 136 [0x0088] breakweight = -30 [0xffe2] BSS.x = 415 [0x019f] BSS.y = -53 [0xffcb] LS.x = 415 [0x019f] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 166 [0x00a6] BSM.y = -53 [0xffcb] 137 [0x0089] breakweight = -30 [0xffe2] BSS.x = 657 [0x0291] BSS.y = -53 [0xffcb] LS.x = 657 [0x0291] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 138 [0x008a] breakweight = -30 [0xffe2] BSS.x = 642 [0x0282] BSS.y = -53 [0xffcb] LS.x = 642 [0x0282] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 139 [0x008b] breakweight = -15 [0xfff1] BSS.x = 657 [0x0291] BSS.y = -53 [0xffcb] LS.x = 657 [0x0291] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 140 [0x008c] breakweight = -30 [0xffe2] BSS.x = 900 [0x0384] BSS.y = -53 [0xffcb] LS.x = 900 [0x0384] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 406 [0x0196] BDM.y = -53 [0xffcb] 141 [0x008d] breakweight = -15 [0xfff1] BDS.x = 30 [0x001e] BDS.y = -173 [0xff53] BSS.x = 168 [0x00a8] BSS.y = -173 [0xff53] LS.x = 612 [0x0264] LS.y = -53 [0xffcb] US.x = 276 [0x0114] US.y = 495 [0x01ef] order = 1 LLS.x = 280 [0x0118] LLS.y = -51 [0xffcd] 142 [0x008e] breakweight = -30 [0xffe2] BSS.x = 426 [0x01aa] BSS.y = -53 [0xffcb] LS.x = 426 [0x01aa] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 172 [0x00ac] BSM.y = -53 [0xffcb] 143 [0x008f] breakweight = -30 [0xffe2] BSS.x = 627 [0x0273] BSS.y = -53 [0xffcb] LS.x = 627 [0x0273] LS.y = -53 [0xffcb] US.x = 276 [0x0114] US.y = 495 [0x01ef] order = 1 144 [0x0090] breakweight = -30 [0xffe2] BSS.x = 454 [0x01c6] BSS.y = -53 [0xffcb] LS.x = 454 [0x01c6] LS.y = -53 [0xffcb] US.x = 285 [0x011d] US.y = 495 [0x01ef] order = 1 LLS.x = 115 [0x0073] LLS.y = -53 [0xffcb] 145 [0x0091] breakweight = -15 [0xfff1] BSS.x = 285 [0x011d] BSS.y = -53 [0xffcb] LS.x = 285 [0x011d] LS.y = -53 [0xffcb] US.x = 285 [0x011d] US.y = 495 [0x01ef] order = 1 146 [0x0092] breakweight = -15 [0xfff1] BDS.x = 516 [0x0204] BDS.y = -53 [0xffcb] BSS.x = 759 [0x02f7] BSS.y = -53 [0xffcb] LS.x = 759 [0x02f7] LS.y = -53 [0xffcb] US.x = 759 [0x02f7] US.y = 495 [0x01ef] order = 1 147 [0x0093] breakweight = -30 [0xffe2] BSS.x = 907 [0x038b] BSS.y = -53 [0xffcb] LS.x = 907 [0x038b] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 409 [0x0199] BDM.y = -53 [0xffcb] 148 [0x0094] breakweight = -30 [0xffe2] BSS.x = 963 [0x03c3] BSS.y = -53 [0xffcb] LS.x = 963 [0x03c3] LS.y = -53 [0xffcb] US.x = 759 [0x02f7] US.y = 495 [0x01ef] order = 1 LLS.x = 372 [0x0174] LLS.y = -53 [0xffcb] 149 [0x0095] breakweight = -30 [0xffe2] BSS.x = 84 [0x0054] BSS.y = -53 [0xffcb] LS.x = 84 [0x0054] LS.y = -53 [0xffcb] US.x = 759 [0x02f7] US.y = 495 [0x01ef] order = 1 LLS.x = 30 [0x001e] LLS.y = -53 [0xffcb] 150 [0x0096] breakweight = -15 [0xfff1] BDS.x = 501 [0x01f5] BDS.y = -53 [0xffcb] BSS.x = 709 [0x02c5] BSS.y = -53 [0xffcb] LS.x = 709 [0x02c5] LS.y = -53 [0xffcb] US.x = 709 [0x02c5] US.y = 495 [0x01ef] order = 1 151 [0x0097] breakweight = -30 [0xffe2] BSS.x = 867 [0x0363] BSS.y = -53 [0xffcb] LS.x = 867 [0x0363] LS.y = -53 [0xffcb] order = 2 LLS.x = -104 [0xff98] LLS.y = -53 [0xffcb] BDM.x = 384 [0x0180] BDM.y = -53 [0xffcb] 152 [0x0098] breakweight = -30 [0xffe2] BSS.x = 555 [0x022b] BSS.y = -53 [0xffcb] LS.x = 555 [0x022b] LS.y = -53 [0xffcb] order = 2 LLS.x = -87 [0xffa9] LLS.y = -53 [0xffcb] BSM.x = 235 [0x00eb] BSM.y = -53 [0xffcb] 153 [0x0099] breakweight = -15 [0xfff1] BDS.x = 495 [0x01ef] BDS.y = -53 [0xffcb] BSS.x = 702 [0x02be] BSS.y = -53 [0xffcb] LS.x = 702 [0x02be] LS.y = -53 [0xffcb] US.x = 702 [0x02be] US.y = 495 [0x01ef] order = 1 154 [0x009a] breakweight = -30 [0xffe2] BSS.x = 877 [0x036d] BSS.y = -53 [0xffcb] LS.x = -89 [0xffa7] LS.y = -53 [0xffcb] order = 2 LLS.x = 877 [0x036d] LLS.y = -53 [0xffcb] BDM.x = 394 [0x018a] BDM.y = -53 [0xffcb] 155 [0x009b] breakweight = -15 [0xfff1] BSS.x = 267 [0x010b] BSS.y = -53 [0xffcb] LS.x = 267 [0x010b] LS.y = -53 [0xffcb] US.x = 267 [0x010b] US.y = 495 [0x01ef] order = 1 156 [0x009c] breakweight = -30 [0xffe2] BSS.x = 526 [0x020e] BSS.y = -53 [0xffcb] LS.x = 526 [0x020e] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 219 [0x00db] BSM.y = -53 [0xffcb] 157 [0x009d] breakweight = -15 [0xfff1] BSS.x = 288 [0x0120] BSS.y = -53 [0xffcb] LS.x = 288 [0x0120] LS.y = -53 [0xffcb] US.x = 288 [0x0120] US.y = 495 [0x01ef] order = 1 158 [0x009e] breakweight = -30 [0xffe2] BSS.x = 556 [0x022c] BSS.y = -53 [0xffcb] LS.x = 556 [0x022c] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 234 [0x00ea] BSM.y = -53 [0xffcb] 159 [0x009f] breakweight = -15 [0xfff1] BSS.x = 474 [0x01da] BSS.y = -53 [0xffcb] LS.x = 474 [0x01da] LS.y = -53 [0xffcb] RM.x = 12 [0x000c] US.x = 273 [0x0111] US.y = 495 [0x01ef] order = 1 160 [0x00a0] breakweight = -30 [0xffe2] BSS.x = 271 [0x010f] BSS.y = -53 [0xffcb] LS.x = 271 [0x010f] LS.y = -53 [0xffcb] US.x = 271 [0x010f] US.y = 495 [0x01ef] order = 1 161 [0x00a1] breakweight = -30 [0xffe2] BSS.x = 522 [0x020a] BSS.y = -53 [0xffcb] LS.x = 522 [0x020a] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 223 [0x00df] BSM.y = -53 [0xffcb] 162 [0x00a2] breakweight = -30 [0xffe2] BSS.x = 997 [0x03e5] BSS.y = -53 [0xffcb] LS.x = 997 [0x03e5] LS.y = -53 [0xffcb] US.x = 765 [0x02fd] US.y = 495 [0x01ef] order = 1 163 [0x00a3] breakweight = -30 [0xffe2] BSS.x = 841 [0x0349] BSS.y = -53 [0xffcb] LS.x = 841 [0x0349] LS.y = -53 [0xffcb] order = 1 164 [0x00a4] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 165 [0x00a5] breakweight = -30 [0xffe2] BSS.x = 565 [0x0235] BSS.y = -53 [0xffcb] LS.x = 565 [0x0235] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 238 [0x00ee] BSM.y = -53 [0xffcb] 166 [0x00a6] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 167 [0x00a7] breakweight = -30 [0xffe2] BSS.x = -89 [0xffa7] BSS.y = -53 [0xffcb] LS.x = 565 [0x0235] LS.y = -53 [0xffcb] order = 2 BSM.x = 238 [0x00ee] BSM.y = -53 [0xffcb] 168 [0x00a8] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 169 [0x00a9] breakweight = -30 [0xffe2] BSS.x = 565 [0x0235] BSS.y = -53 [0xffcb] LS.x = 565 [0x0235] LS.y = -53 [0xffcb] order = 2 LLS.x = -90 [0xffa6] LLS.y = -53 [0xffcb] BSM.x = 237 [0x00ed] BSM.y = -53 [0xffcb] 170 [0x00aa] breakweight = -15 [0xfff1] BDS.x = 492 [0x01ec] BDS.y = -53 [0xffcb] BSS.x = 699 [0x02bb] BSS.y = -53 [0xffcb] LS.x = 699 [0x02bb] LS.y = -53 [0xffcb] US.x = 699 [0x02bb] US.y = 495 [0x01ef] order = 1 171 [0x00ab] breakweight = -30 [0xffe2] BSS.x = 874 [0x036a] BSS.y = -53 [0xffcb] LS.x = 874 [0x036a] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 393 [0x0189] BDM.y = -53 [0xffcb] 172 [0x00ac] breakweight = -15 [0xfff1] BSS.x = 294 [0x0126] BSS.y = -53 [0xffcb] LS.x = 294 [0x0126] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 173 [0x00ad] breakweight = -30 [0xffe2] BSS.x = 565 [0x0235] BSS.y = -53 [0xffcb] LS.x = 565 [0x0235] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 238 [0x00ee] BSM.y = -53 [0xffcb] 174 [0x00ae] breakweight = -15 [0xfff1] BDS.x = 504 [0x01f8] BDS.y = -53 [0xffcb] BSS.x = 706 [0x02c2] BSS.y = -53 [0xffcb] LS.x = 706 [0x02c2] LS.y = -53 [0xffcb] US.x = 706 [0x02c2] US.y = 495 [0x01ef] order = 1 175 [0x00af] breakweight = -30 [0xffe2] BSS.x = 250 [0x00fa] BSS.y = -53 [0xffcb] LS.x = 250 [0x00fa] LS.y = -53 [0xffcb] US.x = -36 [0xffdc] US.y = 495 [0x01ef] order = 3 LLS.x = -351 [0xfea1] LLS.y = -53 [0xffcb] dotS.x = -248 [0xff08] dotS.y = -53 [0xffcb] 176 [0x00b0] breakweight = -30 [0xffe2] BSS.x = 250 [0x00fa] BSS.y = -53 [0xffcb] LS.x = 250 [0x00fa] LS.y = -53 [0xffcb] US.x = -36 [0xffdc] US.y = 495 [0x01ef] order = 3 LLS.x = -540 [0xfde4] LLS.y = -53 [0xffcb] dotS.x = -218 [0xff26] dotS.y = -53 [0xffcb] 177 [0x00b1] breakweight = -30 [0xffe2] BSS.x = 250 [0x00fa] BSS.y = -53 [0xffcb] LS.x = 250 [0x00fa] LS.y = -53 [0xffcb] US.x = -36 [0xffdc] US.y = 495 [0x01ef] order = 3 LLS.x = -540 [0xfde4] LLS.y = -53 [0xffcb] dotS.x = -218 [0xff26] dotS.y = -53 [0xffcb] 178 [0x00b2] breakweight = -30 [0xffe2] BSS.x = 250 [0x00fa] BSS.y = -53 [0xffcb] LS.x = 250 [0x00fa] LS.y = -53 [0xffcb] US.x = -36 [0xffdc] US.y = 495 [0x01ef] order = 3 LLS.x = -401 [0xfe6f] LLS.y = 79 [0x004f] dotS.x = -263 [0xfef9] dotS.y = -53 [0xffcb] 179 [0x00b3] breakweight = -15 [0xfff1] BDS.x = 87 [0x0057] BDS.y = -53 [0xffcb] BSS.x = 247 [0x00f7] BSS.y = -53 [0xffcb] LS.x = 646 [0x0286] LS.y = -53 [0xffcb] US.x = 295 [0x0127] US.y = 495 [0x01ef] order = 1 LLS.x = 292 [0x0124] LLS.y = -53 [0xffcb] 180 [0x00b4] breakweight = -30 [0xffe2] BDS.x = 247 [0x00f7] BDS.y = -53 [0xffcb] BSS.x = 348 [0x015c] BSS.y = -53 [0xffcb] LS.x = 676 [0x02a4] LS.y = -53 [0xffcb] RM.x = 3 US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 LLS.x = 87 [0x0057] LLS.y = -53 [0xffcb] 181 [0x00b5] breakweight = -30 [0xffe2] BDS.x = 247 [0x00f7] BDS.y = -53 [0xffcb] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 676 [0x02a4] LS.y = -53 [0xffcb] RM.x = 3 US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 LLS.x = 87 [0x0057] LLS.y = -53 [0xffcb] 182 [0x00b6] breakweight = -30 [0xffe2] BSS.x = 841 [0x0349] BSS.y = -53 [0xffcb] LS.x = 841 [0x0349] LS.y = -53 [0xffcb] order = 4 LLS.x = 502 [0x01f6] LLS.y = -53 [0xffcb] advx = 753 [0x02f1] RS.x = 172 [0x00ac] 183 [0x00b7] breakweight = -30 [0xffe2] BSS.x = 841 [0x0349] BSS.y = -53 [0xffcb] LS.x = 841 [0x0349] LS.y = -53 [0xffcb] order = 4 LLS.x = 502 [0x01f6] LLS.y = -53 [0xffcb] advx = 753 [0x02f1] RS.x = 172 [0x00ac] 184 [0x00b8] breakweight = -30 [0xffe2] BSS.x = 1263 [0x04ef] BSS.y = -53 [0xffcb] LS.x = 1263 [0x04ef] LS.y = -53 [0xffcb] order = 4 LLS.x = 924 [0x039c] LLS.y = -53 [0xffcb] advx = 1174 [0x0496] RS.x = 172 [0x00ac] 185 [0x00b9] breakweight = -30 [0xffe2] BSS.x = 1263 [0x04ef] BSS.y = -53 [0xffcb] LS.x = 1263 [0x04ef] LS.y = -53 [0xffcb] order = 4 LLS.x = 924 [0x039c] LLS.y = -53 [0xffcb] advx = 1174 [0x0496] RS.x = 172 [0x00ac] 186 [0x00ba] breakweight = -30 [0xffe2] BSS.x = 796 [0x031c] BSS.y = -53 [0xffcb] LS.x = 796 [0x031c] LS.y = -53 [0xffcb] order = 4 advx = 753 [0x02f1] RS.x = 172 [0x00ac] 187 [0x00bb] breakweight = -30 [0xffe2] BSS.x = 1198 [0x04ae] BSS.y = -53 [0xffcb] LS.x = 1198 [0x04ae] LS.y = -53 [0xffcb] order = 4 LLS.x = 553 [0x0229] LLS.y = -53 [0xffcb] advx = 1174 [0x0496] RS.x = 172 [0x00ac] 188 [0x00bc] breakweight = -30 [0xffe2] BSS.x = 796 [0x031c] BSS.y = -53 [0xffcb] LS.x = 796 [0x031c] LS.y = -53 [0xffcb] order = 4 advx = 753 [0x02f1] RS.x = 172 [0x00ac] 189 [0x00bd] breakweight = -30 [0xffe2] BSS.x = 1198 [0x04ae] BSS.y = -53 [0xffcb] LS.x = 1198 [0x04ae] LS.y = -53 [0xffcb] order = 4 LLS.x = 553 [0x0229] LLS.y = -53 [0xffcb] advx = 1174 [0x0496] RS.x = 172 [0x00ac] 190 [0x00be] breakweight = -30 [0xffe2] BSS.x = 781 [0x030d] BSS.y = -53 [0xffcb] LS.x = 781 [0x030d] LS.y = -53 [0xffcb] order = 4 LLS.x = 295 [0x0127] LLS.y = -53 [0xffcb] advx = 753 [0x02f1] RS.x = 172 [0x00ac] 191 [0x00bf] breakweight = -30 [0xffe2] BSS.x = 1195 [0x04ab] BSS.y = -53 [0xffcb] LS.x = 1195 [0x04ab] LS.y = -53 [0xffcb] order = 4 LLS.x = 709 [0x02c5] LLS.y = -53 [0xffcb] advx = 1174 [0x0496] RS.x = 172 [0x00ac] 192 [0x00c0] breakweight = -30 [0xffe2] BSS.x = 781 [0x030d] BSS.y = -53 [0xffcb] LS.x = 781 [0x030d] LS.y = -53 [0xffcb] order = 4 LLS.x = 295 [0x0127] LLS.y = -53 [0xffcb] advx = 753 [0x02f1] RS.x = 172 [0x00ac] 193 [0x00c1] breakweight = -30 [0xffe2] BSS.x = 1195 [0x04ab] BSS.y = -53 [0xffcb] LS.x = 1195 [0x04ab] LS.y = -53 [0xffcb] order = 4 LLS.x = 709 [0x02c5] LLS.y = -53 [0xffcb] advx = 1174 [0x0496] RS.x = 172 [0x00ac] 194 [0x00c2] breakweight = -15 [0xfff1] BDS.x = 480 [0x01e0] BDS.y = -53 [0xffcb] BSS.x = 679 [0x02a7] BSS.y = -53 [0xffcb] LS.x = 679 [0x02a7] LS.y = -53 [0xffcb] US.x = 679 [0x02a7] US.y = 495 [0x01ef] order = 1 195 [0x00c3] breakweight = -30 [0xffe2] BSS.x = 853 [0x0355] BSS.y = -53 [0xffcb] LS.x = 853 [0x0355] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 375 [0x0177] BDM.y = -53 [0xffcb] 196 [0x00c4] breakweight = -15 [0xfff1] BSS.x = 286 [0x011e] BSS.y = -53 [0xffcb] LS.x = 286 [0x011e] LS.y = -53 [0xffcb] US.x = 286 [0x011e] US.y = 495 [0x01ef] order = 1 197 [0x00c5] breakweight = -30 [0xffe2] BSS.x = 144 [0x0090] BSS.y = -53 [0xffcb] LS.x = 144 [0x0090] LS.y = -53 [0xffcb] order = 5 LLS.x = -501 [0xfe0b] LLS.y = -53 [0xffcb] BSM.x = -178 [0xff4e] BSM.y = -53 [0xffcb] 198 [0x00c6] breakweight = -30 [0xffe2] BSS.x = 610 [0x0262] BSS.y = -53 [0xffcb] LS.x = 610 [0x0262] LS.y = -53 [0xffcb] order = 5 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 288 [0x0120] BSM.y = -53 [0xffcb] 199 [0x00c7] breakweight = -30 [0xffe2] order = 5 BSM.x = 361 [0x0169] BSM.y = -53 [0xffcb] 200 [0x00c8] breakweight = -15 [0xfff1] BDS.x = 492 [0x01ec] BDS.y = -53 [0xffcb] BSS.x = 702 [0x02be] BSS.y = -53 [0xffcb] LS.x = 702 [0x02be] LS.y = -53 [0xffcb] US.x = 702 [0x02be] US.y = 495 [0x01ef] order = 1 201 [0x00c9] breakweight = -30 [0xffe2] BSS.x = 874 [0x036a] BSS.y = -53 [0xffcb] LS.x = 874 [0x036a] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 393 [0x0189] BDM.y = -53 [0xffcb] 202 [0x00ca] breakweight = -30 [0xffe2] BSS.x = 1263 [0x04ef] BSS.y = -53 [0xffcb] LS.x = 1263 [0x04ef] LS.y = -53 [0xffcb] order = 1 203 [0x00cb] breakweight = -15 [0xfff1] BDS.x = 702 [0x02be] BDS.y = -53 [0xffcb] BSS.x = 1123 [0x0463] BSS.y = -53 [0xffcb] LS.x = 1123 [0x0463] LS.y = -53 [0xffcb] US.x = 1123 [0x0463] US.y = 495 [0x01ef] order = 1 204 [0x00cc] breakweight = -15 [0xfff1] BDS.x = 504 [0x01f8] BDS.y = -53 [0xffcb] BSS.x = 714 [0x02ca] BSS.y = -53 [0xffcb] LS.x = 714 [0x02ca] LS.y = -53 [0xffcb] US.x = 714 [0x02ca] US.y = 495 [0x01ef] order = 1 205 [0x00cd] breakweight = -30 [0xffe2] BSS.x = 144 [0x0090] BSS.y = -53 [0xffcb] LS.x = 144 [0x0090] LS.y = -53 [0xffcb] order = 6 LLS.x = -195 [0xff3d] LLS.y = -53 [0xffcb] BSM.x = -26 [0xffe6] BSM.y = -53 [0xffcb] 206 [0x00ce] breakweight = -30 [0xffe2] BSS.x = 73 [0x0049] BSS.y = -53 [0xffcb] LS.x = 73 [0x0049] LS.y = -53 [0xffcb] order = 6 LLS.x = -263 [0xfef9] LLS.y = 45 [0x002d] BSM.x = -33 [0xffdf] BSM.y = -53 [0xffcb] 207 [0x00cf] breakweight = -30 [0xffe2] BSS.x = 466 [0x01d2] BSS.y = -53 [0xffcb] LS.x = 466 [0x01d2] LS.y = -53 [0xffcb] order = 6 LLS.x = -21 [0xffeb] LLS.y = -53 [0xffcb] BSM.x = 222 [0x00de] BSM.y = -53 [0xffcb] rkern = 78 [0x004e] 208 [0x00d0] breakweight = -30 [0xffe2] BSS.x = 609 [0x0261] BSS.y = -53 [0xffcb] LS.x = 609 [0x0261] LS.y = -53 [0xffcb] order = 6 LLS.x = -21 [0xffeb] LLS.y = -53 [0xffcb] BSM.x = 294 [0x0126] BSM.y = -53 [0xffcb] rkern = 90 [0x005a] 209 [0x00d1] breakweight = -15 [0xfff1] BSS.x = 654 [0x028e] BSS.y = -53 [0xffcb] LS.x = 654 [0x028e] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 210 [0x00d2] breakweight = -15 [0xfff1] BDS.x = 465 [0x01d1] BDS.y = -53 [0xffcb] BSS.x = 648 [0x0288] BSS.y = -53 [0xffcb] LS.x = 648 [0x0288] LS.y = -53 [0xffcb] US.x = 648 [0x0288] US.y = 495 [0x01ef] order = 1 211 [0x00d3] breakweight = -30 [0xffe2] BSS.x = 874 [0x036a] BSS.y = -53 [0xffcb] LS.x = 874 [0x036a] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BDM.x = 393 [0x0189] BDM.y = -53 [0xffcb] 212 [0x00d4] breakweight = -30 [0xffe2] BSS.x = 993 [0x03e1] BSS.y = -53 [0xffcb] LS.x = 993 [0x03e1] LS.y = -53 [0xffcb] US.x = 715 [0x02cb] US.y = 495 [0x01ef] LLS.x = 15 [0x000f] LLS.y = -53 [0xffcb] 213 [0x00d5] breakweight = -30 [0xffe2] 214 [0x00d6] breakweight = -15 [0xfff1] BSS.x = 276 [0x0114] LS.x = 276 [0x0114] LS.y = -53 [0xffcb] US.x = 276 [0x0114] US.y = 495 [0x01ef] order = 1 215 [0x00d7] breakweight = -30 [0xffe2] BSS.x = 276 [0x0114] LS.x = 276 [0x0114] LS.y = -53 [0xffcb] order = 1 216 [0x00d8] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 217 [0x00d9] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 570 [0x023a] order = 1 218 [0x00da] breakweight = -30 [0xffe2] BDS.x = 664 [0x0298] BDS.y = -53 [0xffcb] BSS.x = 874 [0x036a] BSS.y = -53 [0xffcb] LS.x = 874 [0x036a] LS.y = -53 [0xffcb] US.x = 874 [0x036a] US.y = 495 [0x01ef] order = 1 LLS.x = 924 [0x039c] LLS.y = -53 [0xffcb] advx = 1174 [0x0496] 219 [0x00db] breakweight = -30 [0xffe2] 220 [0x00dc] breakweight = -30 [0xffe2] BSS.x = 133 [0x0085] BSS.y = -53 [0xffcb] LS.x = 133 [0x0085] LS.y = -53 [0xffcb] US.x = 133 [0x0085] US.y = 495 [0x01ef] order = 1 221 [0x00dd] breakweight = -30 [0xffe2] BSS.x = 96 [0x0060] BSS.y = -53 [0xffcb] LS.x = 96 [0x0060] LS.y = -53 [0xffcb] order = 1 xkern = 270 [0x010e] 222 [0x00de] breakweight = -30 [0xffe2] BSS.x = 96 [0x0060] BSS.y = -53 [0xffcb] LS.x = 96 [0x0060] LS.y = -53 [0xffcb] order = 1 xkern = 270 [0x010e] 223 [0x00df] breakweight = -50 [0xffce] order = 8 UM.x = -179 [0xff4d] UM.y = 495 [0x01ef] 224 [0x00e0] breakweight = -30 [0xffe2] order = 8 UM.x = -269 [0xfef3] UM.y = 495 [0x01ef] 225 [0x00e1] breakweight = -50 [0xffce] order = 8 UM.x = -182 [0xff4a] UM.y = 495 [0x01ef] 226 [0x00e2] breakweight = -30 [0xffe2] BSS.x = 235 [0x00eb] BSS.y = -53 [0xffcb] LS.x = 235 [0x00eb] LS.y = -53 [0xffcb] US.x = 67 [0x0043] US.y = 496 [0x01f0] order = 9 227 [0x00e3] breakweight = -30 [0xffe2] BSS.x = 250 [0x00fa] BSS.y = -53 [0xffcb] LS.x = 250 [0x00fa] LS.y = -53 [0xffcb] order = 9 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 81 [0x0051] BSM.y = -53 [0xffcb] rkern = 2 228 [0x00e4] breakweight = -30 [0xffe2] BSS.x = 384 [0x0180] BSS.y = -53 [0xffcb] LS.x = 384 [0x0180] LS.y = -53 [0xffcb] US.x = 214 [0x00d6] US.y = 495 [0x01ef] order = 9 229 [0x00e5] breakweight = -30 [0xffe2] BSS.x = 399 [0x018f] BSS.y = -53 [0xffcb] LS.x = 399 [0x018f] LS.y = -53 [0xffcb] order = 9 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 154 [0x009a] BSM.y = -53 [0xffcb] rkern = 43 [0x002b] 230 [0x00e6] breakweight = -30 [0xffe2] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 7 231 [0x00e7] breakweight = -50 [0xffce] order = 8 UM.x = -192 [0xff40] UM.y = 504 [0x01f8] 232 [0x00e8] breakweight = -50 [0xffce] order = 8 UM.x = -179 [0xff4d] UM.y = 495 [0x01ef] 233 [0x00e9] breakweight = -50 [0xffce] order = 8 UM.x = -138 [0xff76] UM.y = 532 [0x0214] 234 [0x00ea] breakweight = -30 [0xffe2] order = 10 [0x000a] UM.x = -74 [0xffb6] UM.y = 495 [0x01ef] 235 [0x00eb] breakweight = -30 [0xffe2] order = 13 [0x000d] LM.x = -74 [0xffb6] LM.y = -53 [0xffcb] 236 [0x00ec] breakweight = -30 [0xffe2] order = 14 [0x000e] 237 [0x00ed] breakweight = -50 [0xffce] order = 12 [0x000c] UM.x = -231 [0xff19] UM.y = 477 [0x01dd] 238 [0x00ee] breakweight = -50 [0xffce] BSS.x = 144 [0x0090] BSS.y = -53 [0xffcb] LS.x = 144 [0x0090] LS.y = -53 [0xffcb] order = 5 LLS.x = -501 [0xfe0b] LLS.y = -53 [0xffcb] BSM.x = -178 [0xff4e] BSM.y = -53 [0xffcb] 239 [0x00ef] breakweight = -30 [0xffe2] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 240 [0x00f0] breakweight = -30 [0xffe2] BSS.x = 418 [0x01a2] BSS.y = -80 [0xffb0] LS.x = 418 [0x01a2] LS.y = -80 [0xffb0] US.x = 418 [0x01a2] US.y = 742 [0x02e6] order = 1 241 [0x00f1] breakweight = -30 [0xffe2] BSS.x = 252 [0x00fc] BSS.y = -53 [0xffcb] LS.x = 252 [0x00fc] LS.y = -53 [0xffcb] US.x = 252 [0x00fc] US.y = 495 [0x01ef] order = 1 242 [0x00f2] breakweight = -30 [0xffe2] BSS.x = 279 [0x0117] BSS.y = -53 [0xffcb] LS.x = 279 [0x0117] LS.y = -53 [0xffcb] US.x = 279 [0x0117] US.y = 495 [0x01ef] order = 1 243 [0x00f3] breakweight = -30 [0xffe2] BSS.x = 297 [0x0129] BSS.y = -53 [0xffcb] LS.x = 297 [0x0129] LS.y = -53 [0xffcb] US.x = 297 [0x0129] US.y = 495 [0x01ef] order = 1 244 [0x00f4] breakweight = -30 [0xffe2] BSS.x = 283 [0x011b] BSS.y = -53 [0xffcb] LS.x = 283 [0x011b] LS.y = -53 [0xffcb] US.x = 283 [0x011b] US.y = 495 [0x01ef] order = 1 245 [0x00f5] breakweight = -30 [0xffe2] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 315 [0x013b] US.y = 570 [0x023a] order = 1 246 [0x00f6] breakweight = -30 [0xffe2] BSS.x = 286 [0x011e] BSS.y = -53 [0xffcb] LS.x = 286 [0x011e] LS.y = -53 [0xffcb] US.x = 286 [0x011e] US.y = 495 [0x01ef] order = 1 247 [0x00f7] breakweight = -30 [0xffe2] order = 1 248 [0x00f8] breakweight = -30 [0xffe2] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 249 [0x00f9] breakweight = 10 [0x000a] 250 [0x00fa] breakweight = 10 [0x000a] 251 [0x00fb] breakweight = 10 [0x000a] BSS.x = 624 [0x0270] BSS.y = -53 [0xffcb] LS.x = 624 [0x0270] LS.y = -53 [0xffcb] 252 [0x00fc] breakweight = 10 [0x000a] 253 [0x00fd] breakweight = 10 [0x000a] 254 [0x00fe] breakweight = 10 [0x000a] 255 [0x00ff] breakweight = -15 [0xfff1] BSS.x = 292 [0x0124] BSS.y = -53 [0xffcb] LS.x = 292 [0x0124] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 256 [0x0100] breakweight = -30 [0xffe2] BSS.x = 376 [0x0178] BSS.y = -53 [0xffcb] LS.x = 376 [0x0178] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 142 [0x008e] BSM.y = -53 [0xffcb] 257 [0x0101] breakweight = -15 [0xfff1] BSS.x = 286 [0x011e] BSS.y = -53 [0xffcb] LS.x = 286 [0x011e] LS.y = -53 [0xffcb] US.x = 288 [0x0120] US.y = 495 [0x01ef] order = 1 258 [0x0102] breakweight = -30 [0xffe2] BSS.x = 250 [0x00fa] BSS.y = -53 [0xffcb] LS.x = 250 [0x00fa] LS.y = -53 [0xffcb] US.x = -36 [0xffdc] US.y = 495 [0x01ef] order = 2 LLS.x = -540 [0xfde4] LLS.y = -53 [0xffcb] dotS.x = -218 [0xff26] dotS.y = -53 [0xffcb] 259 [0x0103] breakweight = -15 [0xfff1] BSS.x = 286 [0x011e] BSS.y = -53 [0xffcb] LS.x = 286 [0x011e] LS.y = -53 [0xffcb] US.x = 286 [0x011e] US.y = 495 [0x01ef] order = 1 260 [0x0104] breakweight = -30 [0xffe2] BSS.x = 556 [0x022c] BSS.y = -53 [0xffcb] LS.x = 556 [0x022c] LS.y = -53 [0xffcb] order = 2 LLS.x = -89 [0xffa7] LLS.y = -53 [0xffcb] BSM.x = 234 [0x00ea] BSM.y = -53 [0xffcb] 261 [0x0105] breakweight = -15 [0xfff1] BSS.x = 294 [0x0126] BSS.y = -53 [0xffcb] LS.x = 294 [0x0126] LS.y = -53 [0xffcb] US.x = 292 [0x0124] US.y = 495 [0x01ef] order = 1 262 [0x0106] breakweight = -30 [0xffe2] BSS.x = 144 [0x0090] BSS.y = -53 [0xffcb] LS.x = 144 [0x0090] LS.y = -53 [0xffcb] order = 2 LLS.x = -195 [0xff3d] LLS.y = -53 [0xffcb] BSM.x = -25 [0xffe7] BSM.y = -53 [0xffcb] 263 [0x0107] breakweight = -30 [0xffe2] BSS.x = 144 [0x0090] BSS.y = -53 [0xffcb] LS.x = 144 [0x0090] LS.y = -53 [0xffcb] order = 2 LLS.x = -195 [0xff3d] LLS.y = -53 [0xffcb] BSM.x = -25 [0xffe7] BSM.y = -53 [0xffcb] 264 [0x0108] breakweight = -30 [0xffe2] order = 2 LM.x = -180 [0xff4c] LM.y = -63 [0xffc1] 265 [0x0109] breakweight = -15 [0xfff1] BDS.x = 87 [0x0057] BDS.y = -53 [0xffcb] BSS.x = 247 [0x00f7] BSS.y = -53 [0xffcb] LS.x = 646 [0x0286] LS.y = -53 [0xffcb] US.x = 295 [0x0127] US.y = 495 [0x01ef] order = 1 LLS.x = 292 [0x0124] LLS.y = -53 [0xffcb] 266 [0x010a] breakweight = -30 [0xffe2] BSS.x = 192 [0x00c0] BSS.y = -53 [0xffcb] LS.x = 192 [0x00c0] LS.y = -53 [0xffcb] US.x = 192 [0x00c0] US.y = 495 [0x01ef] order = 1 267 [0x010b] breakweight = -30 [0xffe2] BSS.x = 276 [0x0114] BSS.y = -53 [0xffcb] LS.x = 276 [0x0114] LS.y = -53 [0xffcb] US.x = 276 [0x0114] US.y = 495 [0x01ef] order = 1 268 [0x010c] breakweight = -30 [0xffe2] BSS.x = 192 [0x00c0] BSS.y = -53 [0xffcb] LS.x = 192 [0x00c0] LS.y = -53 [0xffcb] US.x = 192 [0x00c0] US.y = 495 [0x01ef] order = 1 269 [0x010d] breakweight = 10 [0x000a] directionality = 9 270 [0x010e] breakweight = -30 [0xffe2] 271 [0x010f] breakweight = -30 [0xffe2] 272 [0x0110] breakweight = -30 [0xffe2] 273 [0x0111] breakweight = 30 [0x001e] 274 [0x0112] breakweight = 30 [0x001e] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/dbg_parsetree.txt000066400000000000000000002723711411153030700270050ustar00rootroot00000000000000PARSE TREE Ztop(100) LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_table(14): 'table' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] LITERAL_glyph(23): 'glyph' [line #3] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/dbg_ruleprec.txt000066400000000000000000001014121411153030700266170ustar00rootroot00000000000000RULE PRECEDENCE TABLE: linebreak PASS: 1 (GDL #0) 0 - RULE 1.2, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia cnTakesUDia cnTakesUDia _ ; 1 - RULE 1.3, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia cnTakesUDia _ ; 2 - RULE 1.4, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia cnTakesUDia _ ; 3 - RULE 1.7, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia cnTakesUDia cnTakesUDia _ ; 4 - RULE 1.5, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed cnTakesUDia _ ; 5 - RULE 1.8, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia cnTakesUDia _ ; 6 - RULE 1.6, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ g1039 cMed _ ; 7 - RULE 1.9, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia cnTakesUDia _ ; 8 - RULE 1.10, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ cnTakesUDia _ ; 9 - RULE 1.12, PadaukMain.gdl(416): cCons { break = -30; } cMedBase { break = -50; } / ANY _ g1039 _ ; 10 - RULE 1.0, PadaukMain.gdl(407): cSection { break = 10; } / ANY _ ^ cCons ; 11 - RULE 1.1, PadaukMain.gdl(408): g_space { break = 10; } / ANY _ ^ cCons ; 12 - RULE 1.11, PadaukMain.gdl(411): cTakesUDia { break = -30; } g103a { break = -50; } / ANY _ ^ _ ; 13 - RULE 1.13, PadaukMain.gdl(417): cCons { break = -30; } cClusMed { break = -50; } / ANY _ _ ; 14 - RULE 1.14, PadaukMain.gdl(420): cCons { break = -50; } / g1039 _ ; 15 - RULE 1.15, PadaukMain.gdl(423): cCons { break = -30; } / g2060 _ ; 16 - RULE 1.16, PadaukMain.gdl(426): cCons { break = -30; } / g1021 _ ; 17 - RULE 1.17, PadaukMain.gdl(429): ANYGlyph { break = 40; } / cLQuote ^ _ ; 18 - RULE 1.18, PadaukMain.gdl(430): ANYGlyph { break = -40; } / ANY _ ^ cRQuote ; 19 - RULE 1.19, PadaukMain.gdl(433): cSection { break = 30; } / ANY _ cNum ; 20 - RULE 1.20, PadaukMain.gdl(435): cNum { break = -15; } / cCons _ ; 21 - RULE 1.21, PadaukMain.gdl(436): cSigns { break = -15; } / cSection _ ; 22 - RULE 1.22, PadaukMain.gdl(439): cSigns { break = 40; } / ANY _ cSection ; TABLE: substitution PASS: 0 - no rules PASS: 2 (GDL #1) 0 - RULE 2.20, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed g1031 _ ; 1 - RULE 2.0, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed g1031 _ ; 2 - RULE 2.21, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed _ ; 3 - RULE 2.22, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed g1031 _ ; 4 - RULE 2.1, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed cClusMed _ ; 5 - RULE 2.2, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed g1031 _ ; 6 - RULE 2.23, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed cClusMed _ ; 7 - RULE 2.24, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed g1031 _ ; 8 - RULE 2.30, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed cClusMed g1031 _ ; 9 - RULE 2.3, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed cClusMed _ ; 10 - RULE 2.4, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed g1031 _ ; 11 - RULE 2.10, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed cClusMed g1031 _ ; 12 - RULE 2.25, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed cClusMed _ ; 13 - RULE 2.26, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed g1031 _ ; 14 - RULE 2.31, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed cClusMed _ ; 15 - RULE 2.32, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed g1031 _ ; 16 - RULE 2.5, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed cClusMed _ ; 17 - RULE 2.6, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed g1031 _ ; 18 - RULE 2.11, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed cClusMed _ ; 19 - RULE 2.12, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed g1031 _ ; 20 - RULE 2.27, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase cClusMed _ ; 21 - RULE 2.28, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase g1031 _ ; 22 - RULE 2.33, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed cClusMed _ ; 23 - RULE 2.34, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed g1031 _ ; 24 - RULE 2.7, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase cClusMed _ ; 25 - RULE 2.8, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase g1031 _ ; 26 - RULE 2.13, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed cClusMed _ ; 27 - RULE 2.14, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed g1031 _ ; 28 - RULE 2.29, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1039 cMedBase _ ; 29 - RULE 2.35, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed cClusMed _ ; 30 - RULE 2.36, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed g1031 _ ; 31 - RULE 2.9, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1039 cMedBase _ ; 32 - RULE 2.15, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed cClusMed _ ; 33 - RULE 2.16, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed g1031 _ ; 34 - RULE 2.37, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* cClusMed _ ; 35 - RULE 2.38, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* g1031 _ ; 36 - RULE 2.58, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @7 / ANY _ _ _ g1031 cUVowel _ ; 37 - RULE 2.17, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* cClusMed _ ; 38 - RULE 2.18, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* g1031 _ ; 39 - RULE 2.39, PadaukMain.gdl(464): g1004 g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(2 3 4 5) / ANY _ _ _ ^ *GC1* _ ; 40 - RULE 2.59, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @6 / ANY _ _ _ g1031 _ ; 41 - RULE 2.60, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @6 / ANY _ _ _ cUVowel _ ; 42 - RULE 2.62, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @6 / ANY _ _ g1031 cUVowel _ ; 43 - RULE 2.66, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @6 / ANY _ _ g1031 cUVowel _ ; 44 - RULE 2.19, PadaukMain.gdl(462): g1004 g103a g1039 _ > _ _ _ g1004_med:(2 3 4) / ANY _ _ _ ^ *GC0* _ ; 45 - RULE 2.48, PadaukMain.gdl(477): g1014 g1039 g1010 g103c > g1014_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; 46 - RULE 2.49, PadaukMain.gdl(478): g1014 g1039 g1010 g103c > g1014_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; 47 - RULE 2.50, PadaukMain.gdl(479): g101e g1039 g1010 g103c > g101e_1010_103c:(2 3 4 5) _ _ _ / ANY _ _ _ _ ; 48 - RULE 2.61, PadaukMain.gdl(487): g1039 cMedBase g103c g102f > _ cMed @4 @5 / ANY _ _ _ _ ; 49 - RULE 2.63, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @5 / ANY _ _ g1031 _ ; 50 - RULE 2.64, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @5 / ANY _ _ cUVowel _ ; 51 - RULE 2.67, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @5 / ANY _ _ g1031 _ ; 52 - RULE 2.68, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @5 / ANY _ _ cUVowel _ ; 53 - RULE 2.70, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 5) _ / ANY _ g1031 cUVowel _ ; 54 - RULE 2.74, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 5) _ / ANY _ g1031 cUVowel _ ; 55 - RULE 2.41, PadaukMain.gdl(470): g1039 g1010 g103d > g1010_103d_med:(2 3 4) _ _ / ANY _ _ _ ; 56 - RULE 2.42, PadaukMain.gdl(471): g100b g1039 g100b > g100b_100b:(2 3 4) _ _ / ANY _ _ _ ; 57 - RULE 2.43, PadaukMain.gdl(472): g100b g1039 g100c > g100b_100c:(2 3 4) _ _ / ANY _ _ _ ; 58 - RULE 2.44, PadaukMain.gdl(473): g100d g1039 g100d > g100d_100d:(2 3 4) _ _ / ANY _ _ _ ; 59 - RULE 2.45, PadaukMain.gdl(474): g100e g1039 g100d > g100d_100e:(2 3 4) _ _ / ANY _ _ _ ; 60 - RULE 2.46, PadaukMain.gdl(475): g100f g1039 g100b > g100f_100b:(2 3 4) _ _ / ANY _ _ _ ; 61 - RULE 2.47, PadaukMain.gdl(476): g100f g1039 g100d > g100f_100d:(2 3 4) _ _ / ANY _ _ _ ; 62 - RULE 2.51, PadaukMain.gdl(480): g103b g103d g103e > g103b_103d_103e:(2 3 4) _ _ / ANY _ _ _ ; 63 - RULE 2.53, PadaukMain.gdl(482): g103c g103d g103e > @2 g103d_103e _ / ANY _ _ _ ; 64 - RULE 2.55, PadaukMain.gdl(484): g103d g103e > g103d_103e_small:(2 3) _ / g103c _ _ ; 65 - RULE 2.65, PadaukMain.gdl(488): g103c g103e g102f > @2 @3 @4 / ANY _ _ _ ; 66 - RULE 2.69, PadaukMain.gdl(489): g103c g103e g1030 > @2 @3 @4 / ANY _ _ _ ; 67 - RULE 2.71, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 4) _ / ANY _ g1031 _ ; 68 - RULE 2.72, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 4) _ / ANY _ cUVowel _ ; 69 - RULE 2.75, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 4) _ / ANY _ g1031 _ ; 70 - RULE 2.76, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 4) _ / ANY _ cUVowel _ ; 71 - RULE 2.78, PadaukMain.gdl(492): g103e g1030 > g103e_1030:(2 4) _ / ANY _ g1031 _ ; 72 - RULE 2.40, PadaukMain.gdl(466): g1039 cMedBase > _ cMed:(2 3) / ANY _ _ ; 73 - RULE 2.52, PadaukMain.gdl(481): g103b g103e > g103b_103e:(2 3) _ / ANY _ _ ; 74 - RULE 2.54, PadaukMain.gdl(483): g103c g103d > g103c_103d_narr:(2 3) _ / ANY _ _ ; 75 - RULE 2.56, PadaukMain.gdl(485): g103d g103e > g103d_103e:(2 3) _ / ANY _ _ ; 76 - RULE 2.57, PadaukMain.gdl(486): g103b g103d > g103b_103d:(2 3) _ / ANY _ _ ; 77 - RULE 2.73, PadaukMain.gdl(490): g103c g102f > g103c_102f_narr:(2 3) _ / ANY _ _ ; 78 - RULE 2.77, PadaukMain.gdl(491): g103e g102f > g103e_102f:(2 3) _ / ANY _ _ ; 79 - RULE 2.79, PadaukMain.gdl(492): g103e g1030 > g103e_1030:(2 3) _ / ANY _ _ ; PASS: 3 (GDL #2) 0 - RULE 3.0, PadaukMain.gdl(538): ANYGlyph > @3 / cCons g103a ^ _{ order > 1 } ; 1 - RULE 3.1, PadaukMain.gdl(542): _ > g_circledash:2 / ANY ANYGlyph _ ^ ANYGlyph{ (order > 1) && (order <= @2.order) } ; 2 - RULE 3.2, PadaukMain.gdl(543): _ > g_circledash:2 / ANY ANYGlyph{ order == 0 } _ ^ ANYGlyph{ order > 1 } ; PASS: 4 (GDL #3) 0 - RULE 4.1, PadaukMain.gdl(571): _ g1031 > @12:12 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia cClusDia cClusDia _ ; 1 - RULE 4.2, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia cClusDia _ ; 2 - RULE 4.6, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia cClusDia cClusDia _ ; 3 - RULE 4.11, PadaukMain.gdl(571): _ g1031 > @11:11 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia cClusDia cClusDia _ ; 4 - RULE 4.3, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia cClusDia _ ; 5 - RULE 4.7, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia cClusDia _ ; 6 - RULE 4.12, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia cClusDia _ ; 7 - RULE 4.16, PadaukMain.gdl(571): _ g1031 > @10:10 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia cClusDia cClusDia _ ; 8 - RULE 4.25, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103d c103e cUSpace ; 9 - RULE 4.33, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103d c103e cUSpace ; 10 - RULE 4.4, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ c103c cCons cMed cClusDia _ ; 11 - RULE 4.8, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ c103c cCons cClusDia cClusDia _ ; 12 - RULE 4.13, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ cCons cMed cClusDia cClusDia _ ; 13 - RULE 4.17, PadaukMain.gdl(571): _ g1031 > @9:9 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia cClusDia _ ; 14 - RULE 4.26, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103d cUSpace ; 15 - RULE 4.27, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ c103e cUSpace ; 16 - RULE 4.29, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103d c103e cUSpace ; 17 - RULE 4.34, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103d cUSpace ; 18 - RULE 4.35, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ c103e cUSpace ; 19 - RULE 4.37, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103d c103e cUSpace ; 20 - RULE 4.76, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e g1031 cUVowel cCons ; 21 - RULE 4.5, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ c103c cCons cMed _ ; 22 - RULE 4.9, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ c103c cCons cClusDia _ ; 23 - RULE 4.14, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ cCons cMed cClusDia _ ; 24 - RULE 4.18, PadaukMain.gdl(571): _ g1031 > @8:8 _ / ANY ANY ANY _ ^ cCons cClusDia cClusDia _ ; 25 - RULE 4.21, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$8:8 _ / ANY ANY ANY ^ _ cConsWide cMed c103b _ ; 26 - RULE 4.28, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ cUSpace ; 27 - RULE 4.30, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103d cUSpace ; 28 - RULE 4.31, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ c103e cUSpace ; 29 - RULE 4.36, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ cUSpace ; 30 - RULE 4.38, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103d cUSpace ; 31 - RULE 4.39, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ c103e cUSpace ; 32 - RULE 4.41, PadaukMain.gdl(585): _ c103c_nar > c103c_naralt$8:8 _ / ANY ANY ANY ^ _ cConsNar g103a cMedNar _ ; 33 - RULE 4.43, PadaukMain.gdl(586): _ c103c_nar > c103c_widalt$8:8 _ / ANY ANY ANY ^ _ cConsWide g103a cMed _ ; 34 - RULE 4.45, PadaukMain.gdl(587): _ c103c_nar > @8:8 _ / ANY ANY ANY ^ _ cConsNar cMedNar c103b _ ; 35 - RULE 4.49, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$8:8 _ / ANY ANY ANY ^ _ cConsNar cMed c103b _ ; 36 - RULE 4.53, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ c103e cUVowel cLVowelAll ; 37 - RULE 4.60, PadaukMain.gdl(599): g101b > g101b_long / ANY ANY ANY ^ _ cMed cUVowel cLVowel ; 38 - RULE 4.62, PadaukMain.gdl(608): g1030 > @4 / c103c_only cConsSVowel cUVowel _ ; 39 - RULE 4.77, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e g1031 cCons ; 40 - RULE 4.78, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e cUVowel cCons ; 41 - RULE 4.80, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ g1031 cUVowel cCons ; 42 - RULE 4.10, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ c103c cCons _ ; 43 - RULE 4.15, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ cCons cMed _ ; 44 - RULE 4.19, PadaukMain.gdl(571): _ g1031 > @7:7 _ / ANY ANY ANY _ ^ cCons cClusDia _ ; 45 - RULE 4.22, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsWide cMed _ ; 46 - RULE 4.23, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsWide c103b _ ; 47 - RULE 4.32, PadaukMain.gdl(583): _ c103c_nar > c103c_naralt$6:6 _ / ANY ANY ANY ^ _ cConsNar _ cUSpace ; 48 - RULE 4.40, PadaukMain.gdl(584): _ c103c_nar > c103c_widalt$6:6 _ / ANY ANY ANY ^ _ cConsWide _ cUSpace ; 49 - RULE 4.42, PadaukMain.gdl(585): _ c103c_nar > c103c_naralt$7:7 _ / ANY ANY ANY ^ _ cConsNar g103a _ ; 50 - RULE 4.44, PadaukMain.gdl(586): _ c103c_nar > c103c_widalt$7:7 _ / ANY ANY ANY ^ _ cConsWide g103a _ ; 51 - RULE 4.46, PadaukMain.gdl(587): _ c103c_nar > @7:7 _ / ANY ANY ANY ^ _ cConsNar cMedNar _ ; 52 - RULE 4.47, PadaukMain.gdl(587): _ c103c_nar > @7:7 _ / ANY ANY ANY ^ _ cConsNar c103b _ ; 53 - RULE 4.50, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsNar cMed _ ; 54 - RULE 4.51, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$7:7 _ / ANY ANY ANY ^ _ cConsNar c103b _ ; 55 - RULE 4.54, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ c103e cLVowelAll ; 56 - RULE 4.55, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ cUVowel cLVowelAll ; 57 - RULE 4.61, PadaukMain.gdl(599): g101b > g101b_long / ANY ANY ANY ^ _ cMed cLVowel ; 58 - RULE 4.63, PadaukMain.gdl(608): g1030 > @4 / ANY c103c_only cConsSVowel _ ; 59 - RULE 4.64, PadaukMain.gdl(609): cLVowel > cLVowelM / ANY ^ cConsSVowel cUVowel _ ; 60 - RULE 4.66, PadaukMain.gdl(610): g1014 cLVowel > g1014_alt:4 cLVowelM:6 / ANY ANY ANY ^ _ cUVowel _ ; 61 - RULE 4.68, PadaukMain.gdl(611): g100a cLVowel > g100a_alt:4 cLVowelM:6 / ANY ANY ANY ^ _ cUVowel _ ; 62 - RULE 4.70, PadaukMain.gdl(612): g103d_103e > g103d_103e_small / ANY c103c cCons _ ; 63 - RULE 4.71, PadaukMain.gdl(613): cUTakesMa g1036 > cUWithMa:(4 6) _ / ANY ANY ANY _ cLVowel _ ; 64 - RULE 4.79, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ c103e cCons ; 65 - RULE 4.81, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ g1031 cCons ; 66 - RULE 4.82, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ cUVowel cCons ; 67 - RULE 4.84, PadaukMain.gdl(628): g103e > g103e_alt / ANY ^ c103c cConsSVowel _ ; 68 - RULE 4.0, PadaukMain.gdl(564): g1014 > g1014_alt / ANY ANY *GC2* _ ; 69 - RULE 4.20, PadaukMain.gdl(571): _ g1031 > @6:6 _ / ANY ANY ANY _ ^ cCons _ ; 70 - RULE 4.24, PadaukMain.gdl(582): _ c103c_nar > c103c_wide$6:6 _ / ANY ANY ANY ^ _ cConsWide _ ; 71 - RULE 4.48, PadaukMain.gdl(587): _ c103c_nar > @6:6 _ / ANY ANY ANY ^ _ cConsNar _ ; 72 - RULE 4.52, PadaukMain.gdl(588): _ c103c_nar > c103c_wide$6:6 _ / ANY ANY ANY ^ _ cConsNar _ ; 73 - RULE 4.56, PadaukMain.gdl(595): g101b > g101b_alt / ANY ANY ANY ^ _ cLVowelAll ; 74 - RULE 4.57, PadaukMain.gdl(596): g101b > g101b_alt / ANY ANY ANY ^ _ c103d ; 75 - RULE 4.58, PadaukMain.gdl(597): g101b > g101b_alt / ANY ANY ANY ^ _ c103b ; 76 - RULE 4.59, PadaukMain.gdl(598): g101b > g101b_long / ANY ANY ANY ^ _ g103e ; 77 - RULE 4.65, PadaukMain.gdl(609): cLVowel > cLVowelM / ANY ANY ^ cConsSVowel _ ; 78 - RULE 4.67, PadaukMain.gdl(610): g1014 cLVowel > g1014_alt:4 cLVowelM:5 / ANY ANY ANY ^ _ _ ; 79 - RULE 4.69, PadaukMain.gdl(611): g100a cLVowel > g100a_alt:4 cLVowelM:5 / ANY ANY ANY ^ _ _ ; 80 - RULE 4.72, PadaukMain.gdl(613): cUTakesMa g1036 > cUWithMa:(4 5) _ / ANY ANY ANY _ _ ; 81 - RULE 4.73, PadaukMain.gdl(619): g1014 > g1014_alt / ANY ANY ANY ^ _ t1014 ; 82 - RULE 4.74, PadaukMain.gdl(620): g100a > g100a_alt / ANY ANY ANY ^ _ t100a ; 83 - RULE 4.75, PadaukMain.gdl(621): g1009 > g1025 / ANY ANY ANY ^ _ g103a ; 84 - RULE 4.83, PadaukMain.gdl(622): g1009 > g1025 / ANY ANY ANY ^ _ cCons ; 85 - RULE 4.85, PadaukMain.gdl(629): g103e > g103e_alt / ANY ANY cConsSlantH _ ; 86 - RULE 4.86, PadaukMain.gdl(635): g102b g103a > g102b_103a:(4 5) _ / ANY ANY ANY _ _ ; TABLE: positioning PASS: 0 - no rules PASS: 5 (GDL #1) 0 - RULE 5.5, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia cUDia _{ user1 == 0 } ; 1 - RULE 5.9, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia cUDia _{ user1 == 0 } ; 2 - RULE 5.15, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel cLVowelM c1036 _{ user1 == 0 } ; 3 - RULE 5.6, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia _{ user1 == 0 } ; 4 - RULE 5.7, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed cUDia _{ user1 == 0 } ; 5 - RULE 5.10, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed c103e_dia _{ user1 == 0 } ; 6 - RULE 5.11, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel c103e_dia cUDia _{ user1 == 0 } ; 7 - RULE 5.16, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel cLVowelM _{ user1 == 0 } ; 8 - RULE 5.17, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel c1036 _{ user1 == 0 } ; 9 - RULE 5.19, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cLVowelM c1036 _{ user1 == 0 } ; 10 - RULE 5.23, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUVowel cLVowelM c1036 _{ user1 == 0 } ; 11 - RULE 5.30, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @6; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ cnTakesUDia cnTakesUDia _{ user1 == 0 } _ ; 12 - RULE 5.43, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia cnTakesLDia cnTakesLDia _{ user1 == 0 } ; 13 - RULE 5.1, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ^ c103c_only _ cUDia _{ user1 == 0 } ; 14 - RULE 5.8, PadaukMain.gdl(712): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cMed _{ user1 == 0 } ; 15 - RULE 5.12, PadaukMain.gdl(714): c103c g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel c103e_dia _{ user1 == 0 } ; 16 - RULE 5.13, PadaukMain.gdl(716): c103c_mix g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel cUDia _{ user1 == 0 } ; 17 - RULE 5.18, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cUVowel _{ user1 == 0 } ; 18 - RULE 5.20, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* cLVowelM _{ user1 == 0 } ; 19 - RULE 5.21, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* c1036 _{ user1 == 0 } ; 20 - RULE 5.24, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUVowel cLVowelM _{ user1 == 0 } ; 21 - RULE 5.25, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cLVowelM c1036 _{ user1 == 0 } ; 22 - RULE 5.31, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @5; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ cnTakesUDia _{ user1 == 0 } _ ; 23 - RULE 5.39, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ cnTakesUDia cnTakesUDia _{ user1 == 0 } ; 24 - RULE 5.44, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia cnTakesLDia _{ user1 == 0 } ; 25 - RULE 5.47, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ cMed g103a _{ user1 == 0 } ; 26 - RULE 5.2, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ^ c103c_only _ _{ user1 == 0 } ; 27 - RULE 5.3, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cUDia _{ user1 == 0 } ; 28 - RULE 5.14, PadaukMain.gdl(716): c103c_mix g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cConsSVowel _{ user1 == 0 } ; 29 - RULE 5.22, PadaukMain.gdl(718): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ *GC3* _{ user1 == 0 } ; 30 - RULE 5.26, PadaukMain.gdl(720): c101b g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cLVowelM _{ user1 == 0 } ; 31 - RULE 5.27, PadaukMain.gdl(722): c101b g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ cUDia _{ user1 == 0 } ; 32 - RULE 5.32, PadaukMain.gdl(731): cTakesUDia cUDia { attach {to = @4; at = US; with = UM; } user1 = 1; } cLVowel / ANY ^ _ _{ user1 == 0 } _ ; 33 - RULE 5.33, PadaukMain.gdl(741): cTakesBSDia cBSDia { attach {to = @2; at = BSS; with = BSM; } user1 = 1; } / ANY ^ _ cnTakesBSDia _{ user1 == 0 } ; 34 - RULE 5.35, PadaukMain.gdl(743): cTakesBDDia cBDDia { attach {to = @2; at = BDS; with = BDM; } user1 = 1; } / ANY ^ _ cnTakesBDDia _{ user1 == 0 } ; 35 - RULE 5.37, PadaukMain.gdl(745): cTakesBSDia cBDDia { attach {to = @2; at = BSS; with = BDM; } user1 = 1; } / ANY ^ _ cnTakesBSDia _{ user1 == 0 } ; 36 - RULE 5.40, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ cnTakesUDia _{ user1 == 0 } ; 37 - RULE 5.45, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ cnTakesLDia _{ user1 == 0 } ; 38 - RULE 5.48, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ cMed _{ user1 == 0 } ; 39 - RULE 5.49, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ g103a _{ user1 == 0 } ; 40 - RULE 5.4, PadaukMain.gdl(710): cConsSVowel g1037 { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 41 - RULE 5.28, PadaukMain.gdl(722): c101b g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 42 - RULE 5.29, PadaukMain.gdl(724): cLeftLDot g1037 { attach {to = @2; at = LLS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 43 - RULE 5.34, PadaukMain.gdl(741): cTakesBSDia cBSDia { attach {to = @2; at = BSS; with = BSM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 44 - RULE 5.36, PadaukMain.gdl(743): cTakesBDDia cBDDia { attach {to = @2; at = BDS; with = BDM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 45 - RULE 5.38, PadaukMain.gdl(745): cTakesBSDia cBDDia { attach {to = @2; at = BSS; with = BDM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 46 - RULE 5.41, PadaukMain.gdl(747): cTakesUDia cUDia { attach {to = @2; at = US; with = UM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 47 - RULE 5.42, PadaukMain.gdl(755): cTakesRDia cRDia { attach {to = @2; at = RS; with = RM; } user1 = 1; insert = 1; } / ANY ^ _ _{ user1 == 0 } ; 48 - RULE 5.46, PadaukMain.gdl(770): cTakesLDia cLDia { attach {to = @2; at = LS; with = LM; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 49 - RULE 5.50, PadaukMain.gdl(777): cCons cYMed { attach {to = @2; } user1 = 1; } / ANY ^ _ _{ user1 == 0 } ; 50 - RULE 5.0, PadaukMain.gdl(700): c103c { advance.x = advx; user2 = 1; } / ANY ^ _{ user2 == 0 } ; PASS: 6 (GDL #2) 0 - RULE 6.2, PadaukMain.gdl(798): cConsNar / g102b_103a _ cLowDia cUDia ; 1 - RULE 6.3, PadaukMain.gdl(798): cConsNar / g102b_103a _ cUDia ; 2 - RULE 6.0, PadaukMain.gdl(795): g101b_alt { shift.x = @3.rkern + 10; advance.x = aw + (@3.rkern + 10); } cHasRkern { shift.x = -(rkern); } / ANY _ _ ; 3 - RULE 6.1, PadaukMain.gdl(797): c102b { shift.x = xkern / 2; advance.x = aw + (xkern / 2); } / cUDia _ ; 4 - RULE 6.4, PadaukMain.gdl(799): cCons { shift.x = -(@1.xkern); advance.x = aw + -(@1.xkern); } / g102b_103a _ ; 5 - RULE 6.5, PadaukMain.gdl(800): g1031 { shift.x = -(@1.xkern); advance.x = aw + -(@1.xkern); } / g102b_103a _ ; 6 - RULE 6.6, PadaukMain.gdl(801): cRDia { shift.x = ((((@1.aw + @1.advance.x) - advance.x) / 2) + @1.position.x) - position.x; } / cTakesRDia _ ; 7 - RULE 6.7, PadaukMain.gdl(802): cUVowel { advance.x = 0; } / c103b _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/gdlerr.txt000066400000000000000000000015241411153030700254440ustar00rootroot00000000000000Graphite Compilation Results GDL file: PadaukMain.gdl Input font file: PadaukInput.ttf Output font file: PadaukBenchmark_v3.ttf Output font family: Padauk GrcRegTest Silf table version: 3.0 Create separate control file: no ******************************************************* PadaukMain.gdl(466) : warning(3532): Item 1: slot 2 automatically associated with deleted item PadaukMain.gdl(482) : warning(3529): Item 3: no slot was associated with deleted item PadaukMain.gdl(487) : warning(3529): Item 1: no slot was associated with deleted item ******************************************************* Table versions generated: Silf: 3.0 Gloc: 1.0 Glat: 1.0 Feat: 1.0 Sill: 1.0 Minimal compiler version required: 3.0 ******************************************************* Compilation succeeded - 0 errors, 3 warnings (52 warnings ignored) grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Padauk/readme.txt000066400000000000000000000001731411153030700254210ustar00rootroot00000000000000This directory contains the debugger files that were generated in the process of compiling the PadaukBenchmark_v3.ttf font.grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/000077500000000000000000000000001411153030700243335ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/$_temp.gdl000066400000000000000000000027621411153030700262020ustar00rootroot00000000000000#line 1 "PigLatinMain.gdl" #line 12 Bidi = false; #line 18 table(glyph) clsVowelUC = codepoint("AEIOU"); clsVowelLC = codepoint("aeiou"); clsVowel = (clsVowelUC clsVowelLC); clsConsUC = codepoint("BCDFGHJKLMNPQRSTVWXYZ"); clsConsLC = codepoint("bcdfghjklmnpqrstvwxyz"); clsCons = (clsConsUC, clsConsLC); clsWfUC = (clsVowelUC clsConsUC); clsWfLC = (clsVowelLC clsConsLC); clsWf = (clsWfUC clsWfLC); g_aIns = codepoint("a"); g_yIns = codepoint("y"); endtable; table(substitution) #line 46 clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 {user1 = true} @2 {user1 = true} @3 {user1 = true} / _ {user1 == false} ^ _ {user1 == @1.user1} _ {user1 == @1.user1} _; clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 {user1 = true} @2 {user1 = true} / _ {user1 == false} ^ _ {user1 == @1.user1} _; clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 {user1 = true} / _ {user1 == false} ^ _; clsCons clsCons clsCons clsWf > @4 @1 {user1 = true} @2 {user1 = true} @3 {user1 = true} / _ ^ _ {user1 == @1.user1} _ {user1 == @1.user1} _ {user1 == false}; clsCons clsCons clsWf > @3 @1 { user1 = true } @2 {user1 = true} / _ ^ _ {user1 == @1.user1} _ {user1 == false}; clsCons clsWf > @2 @1 { user1 = true } / _ ^ _ {user1 == false}; clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _ {user1 == true} _ {user1 == true} _ {user1 == true} _ _; clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _ {user1 == true} _ {user1 == true} _ _; clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _ {user1 == true} _ _; endtable; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/PigLatinBenchmark_v2.gdx000066400000000000000000001446511411153030700310030ustar00rootroot00000000000000 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/dbg_classes.txt000066400000000000000000000025651411153030700273550ustar00rootroot00000000000000LINEAR (OUTPUT) CLASSES Class #0: clsConsLC 0: 0x0044 0x0045 0x0046 0x0048 0x0049 0x004a 0x004c 0x004d 0x004e 0x004f 10: 0x0050 0x0052 0x0053 0x0054 0x0055 0x0056 0x0058 0x0059 0x005a 0x005b 20: 0x005c Class #1: clsWfUC 0: 0x0023 0x0027 0x002b 0x0031 0x0037 0x0024 0x0025 0x0026 0x0028 0x0029 10: 0x002a 0x002c 0x002d 0x002e 0x002f 0x0030 0x0032 0x0033 0x0034 0x0035 20: 0x0036 0x0038 0x0039 0x003a 0x003b 0x003c Class #2: g_aIns 0: 0x0043 Class #3: g_yIns 0: 0x005b INDEXED (INPUT) CLASSES Class #4: clsConsUC 0x0024 : 0 0x0025 : 1 0x0026 : 2 0x0028 : 3 0x0029 : 4 0x002a : 5 0x002c : 6 0x002d : 7 0x002e : 8 0x002f : 9 0x0030 : 10 0x0032 : 11 0x0033 : 12 0x0034 : 13 0x0035 : 14 0x0036 : 15 0x0038 : 16 0x0039 : 17 0x003a : 18 0x003b : 19 0x003c : 20 Class #5: clsWfLC 0x0043 : 0 0x0044 : 5 0x0045 : 6 0x0046 : 7 0x0047 : 1 0x0048 : 8 0x0049 : 9 0x004a : 10 0x004b : 2 0x004c : 11 0x004d : 12 0x004e : 13 0x004f : 14 0x0050 : 15 0x0051 : 3 0x0052 : 16 0x0053 : 17 0x0054 : 18 0x0055 : 19 0x0056 : 20 0x0057 : 4 0x0058 : 21 0x0059 : 22 0x005a : 23 0x005b : 24 0x005c : 25 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/dbg_cmap.txt000066400000000000000000000246451411153030700266430ustar00rootroot00000000000000UNICODE => GLYPH ID MAPPINGS U+0020 => 2 (0x0002) U+0021 => 3 (0x0003) U+0022 => 4 (0x0004) U+0023 => 5 (0x0005) U+0024 => 6 (0x0006) U+0025 => 7 (0x0007) U+0026 => 8 (0x0008) U+0027 => 9 (0x0009) U+0028 => 10 (0x000a) U+0029 => 11 (0x000b) U+002A => 12 (0x000c) U+002B => 13 (0x000d) U+002C => 14 (0x000e) U+002D => 15 (0x000f) U+002E => 16 (0x0010) U+002F => 17 (0x0011) U+0030 => 18 (0x0012) U+0031 => 19 (0x0013) U+0032 => 20 (0x0014) U+0033 => 21 (0x0015) U+0034 => 22 (0x0016) U+0035 => 23 (0x0017) U+0036 => 24 (0x0018) U+0037 => 25 (0x0019) U+0038 => 26 (0x001a) U+0039 => 27 (0x001b) U+003A => 28 (0x001c) U+003B => 29 (0x001d) U+003C => 30 (0x001e) U+003D => 31 (0x001f) U+003E => 32 (0x0020) U+003F => 33 (0x0021) U+0040 => 34 (0x0022) U+0041 => 35 (0x0023) U+0042 => 36 (0x0024) U+0043 => 37 (0x0025) U+0044 => 38 (0x0026) U+0045 => 39 (0x0027) U+0046 => 40 (0x0028) U+0047 => 41 (0x0029) U+0048 => 42 (0x002a) U+0049 => 43 (0x002b) U+004A => 44 (0x002c) U+004B => 45 (0x002d) U+004C => 46 (0x002e) U+004D => 47 (0x002f) U+004E => 48 (0x0030) U+004F => 49 (0x0031) U+0050 => 50 (0x0032) U+0051 => 51 (0x0033) U+0052 => 52 (0x0034) U+0053 => 53 (0x0035) U+0054 => 54 (0x0036) U+0055 => 55 (0x0037) U+0056 => 56 (0x0038) U+0057 => 57 (0x0039) U+0058 => 58 (0x003a) U+0059 => 59 (0x003b) U+005A => 60 (0x003c) U+005B => 61 (0x003d) U+005C => 62 (0x003e) U+005D => 63 (0x003f) U+005E => 64 (0x0040) U+005F => 65 (0x0041) U+0060 => 66 (0x0042) U+0061 => 67 (0x0043) U+0062 => 68 (0x0044) U+0063 => 69 (0x0045) U+0064 => 70 (0x0046) U+0065 => 71 (0x0047) U+0066 => 72 (0x0048) U+0067 => 73 (0x0049) U+0068 => 74 (0x004a) U+0069 => 75 (0x004b) U+006A => 76 (0x004c) U+006B => 77 (0x004d) U+006C => 78 (0x004e) U+006D => 79 (0x004f) U+006E => 80 (0x0050) U+006F => 81 (0x0051) U+0070 => 82 (0x0052) U+0071 => 83 (0x0053) U+0072 => 84 (0x0054) U+0073 => 85 (0x0055) U+0074 => 86 (0x0056) U+0075 => 87 (0x0057) U+0076 => 88 (0x0058) U+0077 => 89 (0x0059) U+0078 => 90 (0x005a) U+0079 => 91 (0x005b) U+007A => 92 (0x005c) U+007B => 93 (0x005d) U+007C => 94 (0x005e) U+007D => 95 (0x005f) U+007E => 96 (0x0060) U+00A0 => 97 (0x0061) U+00A1 => 98 (0x0062) U+00A2 => 99 (0x0063) U+00A3 => 100 (0x0064) U+00A4 => 101 (0x0065) U+00A5 => 102 (0x0066) U+00A6 => 103 (0x0067) U+00A7 => 104 (0x0068) U+00A8 => 105 (0x0069) U+00A9 => 106 (0x006a) U+00AA => 107 (0x006b) U+00AB => 108 (0x006c) U+00AC => 109 (0x006d) U+00AD => 110 (0x006e) U+00AE => 111 (0x006f) U+00AF => 112 (0x0070) U+00B0 => 113 (0x0071) U+00B1 => 114 (0x0072) U+00B2 => 115 (0x0073) U+00B3 => 116 (0x0074) U+00B4 => 117 (0x0075) U+00B5 => 118 (0x0076) U+00B6 => 119 (0x0077) U+00B8 => 120 (0x0078) U+00B9 => 121 (0x0079) U+00BA => 122 (0x007a) U+00BB => 123 (0x007b) U+00BC => 124 (0x007c) U+00BD => 125 (0x007d) U+00BE => 126 (0x007e) U+00BF => 127 (0x007f) U+00C0 => 128 (0x0080) U+00C1 => 129 (0x0081) U+00C2 => 130 (0x0082) U+00C3 => 131 (0x0083) U+00C4 => 132 (0x0084) U+00C5 => 133 (0x0085) U+00C6 => 134 (0x0086) U+00C7 => 135 (0x0087) U+00C8 => 136 (0x0088) U+00C9 => 137 (0x0089) U+00CA => 138 (0x008a) U+00CB => 139 (0x008b) U+00CC => 140 (0x008c) U+00CD => 141 (0x008d) U+00CE => 142 (0x008e) U+00CF => 143 (0x008f) U+00D0 => 144 (0x0090) U+00D1 => 145 (0x0091) U+00D2 => 146 (0x0092) U+00D3 => 147 (0x0093) U+00D4 => 148 (0x0094) U+00D5 => 149 (0x0095) U+00D6 => 150 (0x0096) U+00D7 => 151 (0x0097) U+00D8 => 152 (0x0098) U+00D9 => 153 (0x0099) U+00DA => 154 (0x009a) U+00DB => 155 (0x009b) U+00DC => 156 (0x009c) U+00DD => 157 (0x009d) U+00DE => 158 (0x009e) U+00DF => 159 (0x009f) U+00E0 => 160 (0x00a0) U+00E1 => 161 (0x00a1) U+00E2 => 162 (0x00a2) U+00E3 => 163 (0x00a3) U+00E4 => 164 (0x00a4) U+00E5 => 165 (0x00a5) U+00E6 => 166 (0x00a6) U+00E7 => 167 (0x00a7) U+00E8 => 168 (0x00a8) U+00E9 => 169 (0x00a9) U+00EA => 170 (0x00aa) U+00EB => 171 (0x00ab) U+00EC => 172 (0x00ac) U+00ED => 173 (0x00ad) U+00EE => 174 (0x00ae) U+00EF => 175 (0x00af) U+00F0 => 176 (0x00b0) U+00F1 => 177 (0x00b1) U+00F2 => 178 (0x00b2) U+00F3 => 179 (0x00b3) U+00F4 => 180 (0x00b4) U+00F5 => 181 (0x00b5) U+00F6 => 182 (0x00b6) U+00F7 => 183 (0x00b7) U+00F8 => 184 (0x00b8) U+00F9 => 185 (0x00b9) U+00FA => 186 (0x00ba) U+00FB => 187 (0x00bb) U+00FC => 188 (0x00bc) U+00FD => 189 (0x00bd) U+00FE => 190 (0x00be) U+00FF => 191 (0x00bf) U+0152 => 192 (0x00c0) U+0153 => 193 (0x00c1) U+0160 => 194 (0x00c2) U+0161 => 195 (0x00c3) U+0178 => 196 (0x00c4) U+0192 => 197 (0x00c5) U+02C6 => 198 (0x00c6) U+02DC => 199 (0x00c7) U+2013 => 200 (0x00c8) U+2014 => 201 (0x00c9) U+2018 => 202 (0x00ca) U+2019 => 203 (0x00cb) U+201A => 204 (0x00cc) U+201C => 205 (0x00cd) U+201D => 206 (0x00ce) U+201E => 207 (0x00cf) U+2020 => 208 (0x00d0) U+2021 => 209 (0x00d1) U+2022 => 210 (0x00d2) U+2026 => 211 (0x00d3) U+2030 => 212 (0x00d4) U+2039 => 213 (0x00d5) U+203A => 214 (0x00d6) U+2122 => 215 (0x00d7) U+2219 => 216 (0x00d8) GLYPH ID => UNICODE MAPPINGS 2 => U+0020 ' ' 3 => U+0021 '!' 4 => U+0022 '"' 5 => U+0023 '#' 6 => U+0024 '$' 7 => U+0025 '%' 8 => U+0026 '&' 9 => U+0027 ''' 10 => U+0028 '(' 11 => U+0029 ')' 12 => U+002A '*' 13 => U+002B '+' 14 => U+002C ',' 15 => U+002D '-' 16 => U+002E '.' 17 => U+002F '/' 18 => U+0030 '0' 19 => U+0031 '1' 20 => U+0032 '2' 21 => U+0033 '3' 22 => U+0034 '4' 23 => U+0035 '5' 24 => U+0036 '6' 25 => U+0037 '7' 26 => U+0038 '8' 27 => U+0039 '9' 28 => U+003A ':' 29 => U+003B ';' 30 => U+003C '<' 31 => U+003D '=' 32 => U+003E '>' 33 => U+003F '?' 34 => U+0040 '@' 35 => U+0041 'A' 36 => U+0042 'B' 37 => U+0043 'C' 38 => U+0044 'D' 39 => U+0045 'E' 40 => U+0046 'F' 41 => U+0047 'G' 42 => U+0048 'H' 43 => U+0049 'I' 44 => U+004A 'J' 45 => U+004B 'K' 46 => U+004C 'L' 47 => U+004D 'M' 48 => U+004E 'N' 49 => U+004F 'O' 50 => U+0050 'P' 51 => U+0051 'Q' 52 => U+0052 'R' 53 => U+0053 'S' 54 => U+0054 'T' 55 => U+0055 'U' 56 => U+0056 'V' 57 => U+0057 'W' 58 => U+0058 'X' 59 => U+0059 'Y' 60 => U+005A 'Z' 61 => U+005B '[' 62 => U+005C '\' 63 => U+005D ']' 64 => U+005E '^' 65 => U+005F '_' 66 => U+0060 '`' 67 => U+0061 'a' 68 => U+0062 'b' 69 => U+0063 'c' 70 => U+0064 'd' 71 => U+0065 'e' 72 => U+0066 'f' 73 => U+0067 'g' 74 => U+0068 'h' 75 => U+0069 'i' 76 => U+006A 'j' 77 => U+006B 'k' 78 => U+006C 'l' 79 => U+006D 'm' 80 => U+006E 'n' 81 => U+006F 'o' 82 => U+0070 'p' 83 => U+0071 'q' 84 => U+0072 'r' 85 => U+0073 's' 86 => U+0074 't' 87 => U+0075 'u' 88 => U+0076 'v' 89 => U+0077 'w' 90 => U+0078 'x' 91 => U+0079 'y' 92 => U+007A 'z' 93 => U+007B '{' 94 => U+007C '|' 95 => U+007D '}' 96 => U+007E '~' 97 => U+00A0 '' 98 => U+00A1 '' 99 => U+00A2 '' 100 => U+00A3 '' 101 => U+00A4 '' 102 => U+00A5 '' 103 => U+00A6 '' 104 => U+00A7 '' 105 => U+00A8 '' 106 => U+00A9 '' 107 => U+00AA '' 108 => U+00AB '' 109 => U+00AC '' 110 => U+00AD '' 111 => U+00AE '' 112 => U+00AF '' 113 => U+00B0 '' 114 => U+00B1 '' 115 => U+00B2 '' 116 => U+00B3 '' 117 => U+00B4 '' 118 => U+00B5 '' 119 => U+00B6 '' 120 => U+00B8 '' 121 => U+00B9 '' 122 => U+00BA '' 123 => U+00BB '' 124 => U+00BC '' 125 => U+00BD '' 126 => U+00BE '' 127 => U+00BF '' 128 => U+00C0 '' 129 => U+00C1 '' 130 => U+00C2 '' 131 => U+00C3 '' 132 => U+00C4 '' 133 => U+00C5 '' 134 => U+00C6 '' 135 => U+00C7 '' 136 => U+00C8 '' 137 => U+00C9 '' 138 => U+00CA '' 139 => U+00CB '' 140 => U+00CC '' 141 => U+00CD '' 142 => U+00CE '' 143 => U+00CF '' 144 => U+00D0 '' 145 => U+00D1 '' 146 => U+00D2 '' 147 => U+00D3 '' 148 => U+00D4 '' 149 => U+00D5 '' 150 => U+00D6 '' 151 => U+00D7 '' 152 => U+00D8 '' 153 => U+00D9 '' 154 => U+00DA '' 155 => U+00DB '' 156 => U+00DC '' 157 => U+00DD '' 158 => U+00DE '' 159 => U+00DF '' 160 => U+00E0 '' 161 => U+00E1 '' 162 => U+00E2 '' 163 => U+00E3 '' 164 => U+00E4 '' 165 => U+00E5 '' 166 => U+00E6 '' 167 => U+00E7 '' 168 => U+00E8 '' 169 => U+00E9 '' 170 => U+00EA '' 171 => U+00EB '' 172 => U+00EC '' 173 => U+00ED '' 174 => U+00EE '' 175 => U+00EF '' 176 => U+00F0 '' 177 => U+00F1 '' 178 => U+00F2 '' 179 => U+00F3 '' 180 => U+00F4 '' 181 => U+00F5 '' 182 => U+00F6 '' 183 => U+00F7 '' 184 => U+00F8 '' 185 => U+00F9 '' 186 => U+00FA '' 187 => U+00FB '' 188 => U+00FC '' 189 => U+00FD '' 190 => U+00FE '' 191 => U+00FF '' 192 => U+0152 193 => U+0153 194 => U+0160 195 => U+0161 196 => U+0178 197 => U+0192 198 => U+02C6 199 => U+02DC 200 => U+2013 201 => U+2014 202 => U+2018 203 => U+2019 204 => U+201A 205 => U+201C 206 => U+201D 207 => U+201E 208 => U+2020 209 => U+2021 210 => U+2022 211 => U+2026 212 => U+2030 213 => U+2039 214 => U+203A 215 => U+2122 216 => U+2219 217 [line-break] 218 [phantom] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/dbg_enginecode.txt000066400000000000000000000077431411153030700300230ustar00rootroot00000000000000ENGINE CODE FOR RULES TABLE: substitution PASS: 1 PASS CONSTRAINTS: none RULE 1.0, PigLatinMain.gdl(46): clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _ ; ACTIONS: PutSubs(V1&2) 3 5 1 Assoc 1 3 Next PutSubs(V1&2) 255 4 0 Assoc 1 -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal And CntxtItem 2 9 PushISlotAttr user 0 0 PushISlotAttr user -2 0 Equal And PopRet RULE 1.1, PigLatinMain.gdl(49): clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _ ; ACTIONS: PutSubs(V1&2) 2 5 1 Assoc 1 2 Next PutSubs(V1&2) 255 4 0 Assoc 1 -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal And PopRet RULE 1.2, PigLatinMain.gdl(52): clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 { user1 = 1; } / _{ user1 == 0 } ^ _ ; ACTIONS: PutSubs(V1&2) 1 5 1 Assoc 1 1 Next PutSubs(V1&2) 255 4 0 Assoc 1 -1 PushByte 1 IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 1.3, PigLatinMain.gdl(58): clsCons clsCons clsCons clsWf > @4 @1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _{ user1 == 0 } ; ACTIONS: PutCopy 3 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal CntxtItem 2 9 PushISlotAttr user 0 0 PushISlotAttr user -2 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 1.4, PigLatinMain.gdl(61): clsCons clsCons clsWf > @3 @1 { user1 = 1; } @2 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == 0 } ; ACTIONS: PutCopy 2 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 1.5, PigLatinMain.gdl(64): clsCons clsWf > @2 @1 { user1 = 1; } / _ ^ _{ user1 == 0 } ; ACTIONS: PutCopy 1 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 1.6, PigLatinMain.gdl(68): clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _{ user1 == 1 } _{ user1 == 1 } _{ user1 == 1 } _ _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next PutCopy 0 Next Insert PutGlyph(V1&2) 2 Assoc 1 0 Next Insert PutGlyph(V1&2) 3 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 1 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 1 Equal And PopRet RULE 1.7, PigLatinMain.gdl(70): clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _{ user1 == 1 } _{ user1 == 1 } _ _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next Insert PutGlyph(V1&2) 2 Assoc 1 0 Next Insert PutGlyph(V1&2) 3 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 1 Equal And PopRet RULE 1.8, PigLatinMain.gdl(72): clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _{ user1 == 1 } _ _ ; ACTIONS: PutCopy 0 Next Insert PutGlyph(V1&2) 2 Assoc 1 0 Next Insert PutGlyph(V1&2) 3 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal PopRet grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/dbg_fsm.txt000066400000000000000000000064401411153030700265010ustar00rootroot00000000000000FINITE STATE MACHINES TABLE: substitution PASS: 1 Glyph ID => Column: 35 => 0 36 .. 38 => 1 39 => 0 40 .. 42 => 1 43 => 0 44 .. 48 => 1 49 => 0 50 .. 54 => 1 55 => 0 56 .. 60 => 1 67 => 2 68 .. 70 => 3 71 => 2 72 .. 74 => 3 75 => 2 76 .. 80 => 3 81 => 2 82 .. 86 => 3 87 => 2 88 .. 92 => 3 Final Table: 0 1 2 3 - - - - - - - - - - - - 0: 0 0 1 0 2 Matched=none Success=none 1: 1 10 3 9 4 Matched=0,1,2,3,4,5,6,7,8, Success=8, 2: 1 10 5 10 5 Matched=3,4,5,6,7,8, Success=8, 3: 2 12 6 11 7 Matched=0,1,3,4,5,6,7, Success=5,7, 4: 2 12 6 11 7 Matched=0,1,2,3,4,5,6,7, Success=2,5,7, 5: 2 12 8 12 8 Matched=3,4,5,6,7, Success=5,7, 6: 3 14 14 13 13 Matched=0,3,4,6, Success=4,6, 7: 3 14 14 13 13 Matched=0,1,3,4,6, Success=1,4,6, 8: 3 14 14 14 14 Matched=3,4,6, Success=4,6, 9: 2 0 0 0 0 Matched=2,5, Success=2,5, 10: 2 0 0 0 0 Matched=5, Success=5, 11: 3 0 0 0 0 Matched=1,4, Success=1,4, 12: 3 0 0 0 0 Matched=4, Success=4, 13: 4 0 0 0 0 Matched=0,3, Success=0,3, 14: 4 0 0 0 0 Matched=3, Success=3, - - - - - - - - - - - - RULE 1.0, PigLatinMain.gdl(46): clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _ ; RULE 1.1, PigLatinMain.gdl(49): clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _ ; RULE 1.2, PigLatinMain.gdl(52): clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 { user1 = 1; } / _{ user1 == 0 } ^ _ ; RULE 1.3, PigLatinMain.gdl(58): clsCons clsCons clsCons clsWf > @4 @1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _{ user1 == 0 } ; RULE 1.4, PigLatinMain.gdl(61): clsCons clsCons clsWf > @3 @1 { user1 = 1; } @2 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == 0 } ; RULE 1.5, PigLatinMain.gdl(64): clsCons clsWf > @2 @1 { user1 = 1; } / _ ^ _{ user1 == 0 } ; RULE 1.6, PigLatinMain.gdl(68): clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _{ user1 == 1 } _{ user1 == 1 } _{ user1 == 1 } _ _ ; RULE 1.7, PigLatinMain.gdl(70): clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _{ user1 == 1 } _{ user1 == 1 } _ _ ; RULE 1.8, PigLatinMain.gdl(72): clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _{ user1 == 1 } _ _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/dbg_glyphattrs.txt000066400000000000000000000235151411153030700301170ustar00rootroot00000000000000GLYPH ATTRIBUTE IDS 0: *actualForPseudo* 1: breakweight 2: directionality GLYPH ATTRIBUTE VALUES 0 [0x0000] breakweight = 30 [0x001e] 1 [0x0001] breakweight = 30 [0x001e] 2 [0x0002] breakweight = 15 [0x000f] directionality = 9 3 [0x0003] breakweight = 30 [0x001e] 4 [0x0004] breakweight = 30 [0x001e] 5 [0x0005] breakweight = 30 [0x001e] 6 [0x0006] breakweight = 30 [0x001e] 7 [0x0007] breakweight = 30 [0x001e] 8 [0x0008] breakweight = 30 [0x001e] 9 [0x0009] breakweight = 30 [0x001e] 10 [0x000a] breakweight = 30 [0x001e] directionality = 21 [0x0015] 11 [0x000b] breakweight = 30 [0x001e] directionality = 22 [0x0016] 12 [0x000c] breakweight = 30 [0x001e] 13 [0x000d] breakweight = 30 [0x001e] 14 [0x000e] breakweight = 30 [0x001e] 15 [0x000f] breakweight = 30 [0x001e] 16 [0x0010] breakweight = 30 [0x001e] 17 [0x0011] breakweight = 30 [0x001e] 18 [0x0012] breakweight = 30 [0x001e] 19 [0x0013] breakweight = 30 [0x001e] 20 [0x0014] breakweight = 30 [0x001e] 21 [0x0015] breakweight = 30 [0x001e] 22 [0x0016] breakweight = 30 [0x001e] 23 [0x0017] breakweight = 30 [0x001e] 24 [0x0018] breakweight = 30 [0x001e] 25 [0x0019] breakweight = 30 [0x001e] 26 [0x001a] breakweight = 30 [0x001e] 27 [0x001b] breakweight = 30 [0x001e] 28 [0x001c] breakweight = 30 [0x001e] 29 [0x001d] breakweight = 30 [0x001e] 30 [0x001e] breakweight = 30 [0x001e] 31 [0x001f] breakweight = 30 [0x001e] 32 [0x0020] breakweight = 30 [0x001e] 33 [0x0021] breakweight = 30 [0x001e] 34 [0x0022] breakweight = 30 [0x001e] 35 [0x0023] breakweight = 30 [0x001e] 36 [0x0024] breakweight = 30 [0x001e] 37 [0x0025] breakweight = 30 [0x001e] 38 [0x0026] breakweight = 30 [0x001e] 39 [0x0027] breakweight = 30 [0x001e] 40 [0x0028] breakweight = 30 [0x001e] 41 [0x0029] breakweight = 30 [0x001e] 42 [0x002a] breakweight = 30 [0x001e] 43 [0x002b] breakweight = 30 [0x001e] 44 [0x002c] breakweight = 30 [0x001e] 45 [0x002d] breakweight = 30 [0x001e] 46 [0x002e] breakweight = 30 [0x001e] 47 [0x002f] breakweight = 30 [0x001e] 48 [0x0030] breakweight = 30 [0x001e] 49 [0x0031] breakweight = 30 [0x001e] 50 [0x0032] breakweight = 30 [0x001e] 51 [0x0033] breakweight = 30 [0x001e] 52 [0x0034] breakweight = 30 [0x001e] 53 [0x0035] breakweight = 30 [0x001e] 54 [0x0036] breakweight = 30 [0x001e] 55 [0x0037] breakweight = 30 [0x001e] 56 [0x0038] breakweight = 30 [0x001e] 57 [0x0039] breakweight = 30 [0x001e] 58 [0x003a] breakweight = 30 [0x001e] 59 [0x003b] breakweight = 30 [0x001e] 60 [0x003c] breakweight = 30 [0x001e] 61 [0x003d] breakweight = 30 [0x001e] directionality = 21 [0x0015] 62 [0x003e] breakweight = 30 [0x001e] 63 [0x003f] breakweight = 30 [0x001e] directionality = 22 [0x0016] 64 [0x0040] breakweight = 30 [0x001e] 65 [0x0041] breakweight = 30 [0x001e] 66 [0x0042] breakweight = 30 [0x001e] 67 [0x0043] breakweight = 30 [0x001e] 68 [0x0044] breakweight = 30 [0x001e] 69 [0x0045] breakweight = 30 [0x001e] 70 [0x0046] breakweight = 30 [0x001e] 71 [0x0047] breakweight = 30 [0x001e] 72 [0x0048] breakweight = 30 [0x001e] 73 [0x0049] breakweight = 30 [0x001e] 74 [0x004a] breakweight = 30 [0x001e] 75 [0x004b] breakweight = 30 [0x001e] 76 [0x004c] breakweight = 30 [0x001e] 77 [0x004d] breakweight = 30 [0x001e] 78 [0x004e] breakweight = 30 [0x001e] 79 [0x004f] breakweight = 30 [0x001e] 80 [0x0050] breakweight = 30 [0x001e] 81 [0x0051] breakweight = 30 [0x001e] 82 [0x0052] breakweight = 30 [0x001e] 83 [0x0053] breakweight = 30 [0x001e] 84 [0x0054] breakweight = 30 [0x001e] 85 [0x0055] breakweight = 30 [0x001e] 86 [0x0056] breakweight = 30 [0x001e] 87 [0x0057] breakweight = 30 [0x001e] 88 [0x0058] breakweight = 30 [0x001e] 89 [0x0059] breakweight = 30 [0x001e] 90 [0x005a] breakweight = 30 [0x001e] 91 [0x005b] breakweight = 30 [0x001e] 92 [0x005c] breakweight = 30 [0x001e] 93 [0x005d] breakweight = 30 [0x001e] directionality = 21 [0x0015] 94 [0x005e] breakweight = 30 [0x001e] 95 [0x005f] breakweight = 30 [0x001e] directionality = 22 [0x0016] 96 [0x0060] breakweight = 30 [0x001e] 97 [0x0061] breakweight = 15 [0x000f] 98 [0x0062] breakweight = 30 [0x001e] 99 [0x0063] breakweight = 30 [0x001e] 100 [0x0064] breakweight = 30 [0x001e] 101 [0x0065] breakweight = 30 [0x001e] 102 [0x0066] breakweight = 30 [0x001e] 103 [0x0067] breakweight = 30 [0x001e] 104 [0x0068] breakweight = 30 [0x001e] 105 [0x0069] breakweight = 30 [0x001e] 106 [0x006a] breakweight = 30 [0x001e] 107 [0x006b] breakweight = 30 [0x001e] 108 [0x006c] breakweight = 30 [0x001e] 109 [0x006d] breakweight = 30 [0x001e] 110 [0x006e] breakweight = 30 [0x001e] 111 [0x006f] breakweight = 30 [0x001e] 112 [0x0070] breakweight = 30 [0x001e] 113 [0x0071] breakweight = 30 [0x001e] 114 [0x0072] breakweight = 30 [0x001e] 115 [0x0073] breakweight = 30 [0x001e] 116 [0x0074] breakweight = 30 [0x001e] 117 [0x0075] breakweight = 30 [0x001e] 118 [0x0076] breakweight = 30 [0x001e] 119 [0x0077] breakweight = 30 [0x001e] 120 [0x0078] breakweight = 30 [0x001e] 121 [0x0079] breakweight = 30 [0x001e] 122 [0x007a] breakweight = 30 [0x001e] 123 [0x007b] breakweight = 30 [0x001e] 124 [0x007c] breakweight = 30 [0x001e] 125 [0x007d] breakweight = 30 [0x001e] 126 [0x007e] breakweight = 30 [0x001e] 127 [0x007f] breakweight = 30 [0x001e] 128 [0x0080] breakweight = 30 [0x001e] 129 [0x0081] breakweight = 30 [0x001e] 130 [0x0082] breakweight = 30 [0x001e] 131 [0x0083] breakweight = 30 [0x001e] 132 [0x0084] breakweight = 30 [0x001e] 133 [0x0085] breakweight = 30 [0x001e] 134 [0x0086] breakweight = 30 [0x001e] 135 [0x0087] breakweight = 30 [0x001e] 136 [0x0088] breakweight = 30 [0x001e] 137 [0x0089] breakweight = 30 [0x001e] 138 [0x008a] breakweight = 30 [0x001e] 139 [0x008b] breakweight = 30 [0x001e] 140 [0x008c] breakweight = 30 [0x001e] 141 [0x008d] breakweight = 30 [0x001e] 142 [0x008e] breakweight = 30 [0x001e] 143 [0x008f] breakweight = 30 [0x001e] 144 [0x0090] breakweight = 30 [0x001e] 145 [0x0091] breakweight = 30 [0x001e] 146 [0x0092] breakweight = 30 [0x001e] 147 [0x0093] breakweight = 30 [0x001e] 148 [0x0094] breakweight = 30 [0x001e] 149 [0x0095] breakweight = 30 [0x001e] 150 [0x0096] breakweight = 30 [0x001e] 151 [0x0097] breakweight = 30 [0x001e] 152 [0x0098] breakweight = 30 [0x001e] 153 [0x0099] breakweight = 30 [0x001e] 154 [0x009a] breakweight = 30 [0x001e] 155 [0x009b] breakweight = 30 [0x001e] 156 [0x009c] breakweight = 30 [0x001e] 157 [0x009d] breakweight = 30 [0x001e] 158 [0x009e] breakweight = 30 [0x001e] 159 [0x009f] breakweight = 30 [0x001e] 160 [0x00a0] breakweight = 30 [0x001e] 161 [0x00a1] breakweight = 30 [0x001e] 162 [0x00a2] breakweight = 30 [0x001e] 163 [0x00a3] breakweight = 30 [0x001e] 164 [0x00a4] breakweight = 30 [0x001e] 165 [0x00a5] breakweight = 30 [0x001e] 166 [0x00a6] breakweight = 30 [0x001e] 167 [0x00a7] breakweight = 30 [0x001e] 168 [0x00a8] breakweight = 30 [0x001e] 169 [0x00a9] breakweight = 30 [0x001e] 170 [0x00aa] breakweight = 30 [0x001e] 171 [0x00ab] breakweight = 30 [0x001e] 172 [0x00ac] breakweight = 30 [0x001e] 173 [0x00ad] breakweight = 30 [0x001e] 174 [0x00ae] breakweight = 30 [0x001e] 175 [0x00af] breakweight = 30 [0x001e] 176 [0x00b0] breakweight = 30 [0x001e] 177 [0x00b1] breakweight = 30 [0x001e] 178 [0x00b2] breakweight = 30 [0x001e] 179 [0x00b3] breakweight = 30 [0x001e] 180 [0x00b4] breakweight = 30 [0x001e] 181 [0x00b5] breakweight = 30 [0x001e] 182 [0x00b6] breakweight = 30 [0x001e] 183 [0x00b7] breakweight = 30 [0x001e] 184 [0x00b8] breakweight = 30 [0x001e] 185 [0x00b9] breakweight = 30 [0x001e] 186 [0x00ba] breakweight = 30 [0x001e] 187 [0x00bb] breakweight = 30 [0x001e] 188 [0x00bc] breakweight = 30 [0x001e] 189 [0x00bd] breakweight = 30 [0x001e] 190 [0x00be] breakweight = 30 [0x001e] 191 [0x00bf] breakweight = 30 [0x001e] 192 [0x00c0] breakweight = 30 [0x001e] 193 [0x00c1] breakweight = 30 [0x001e] 194 [0x00c2] breakweight = 30 [0x001e] 195 [0x00c3] breakweight = 30 [0x001e] 196 [0x00c4] breakweight = 30 [0x001e] 197 [0x00c5] breakweight = 30 [0x001e] 198 [0x00c6] breakweight = 30 [0x001e] 199 [0x00c7] breakweight = 30 [0x001e] 200 [0x00c8] breakweight = 30 [0x001e] 201 [0x00c9] breakweight = 30 [0x001e] 202 [0x00ca] breakweight = 30 [0x001e] 203 [0x00cb] breakweight = 30 [0x001e] 204 [0x00cc] breakweight = 30 [0x001e] 205 [0x00cd] breakweight = 30 [0x001e] 206 [0x00ce] breakweight = 30 [0x001e] 207 [0x00cf] breakweight = 30 [0x001e] 208 [0x00d0] breakweight = 30 [0x001e] 209 [0x00d1] breakweight = 30 [0x001e] 210 [0x00d2] breakweight = 30 [0x001e] 211 [0x00d3] breakweight = 30 [0x001e] 212 [0x00d4] breakweight = 30 [0x001e] 213 [0x00d5] breakweight = 30 [0x001e] 214 [0x00d6] breakweight = 30 [0x001e] 215 [0x00d7] breakweight = 30 [0x001e] 216 [0x00d8] breakweight = 30 [0x001e] 217 [0x00d9] breakweight = 30 [0x001e] 218 [0x00da] breakweight = 30 [0x001e] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/dbg_parsetree.txt000066400000000000000000000004741411153030700277070ustar00rootroot00000000000000PARSE TREE Ztop(100) OP_EQ(4): '=' [line #3] IDENT(13): 'Bidi' [line #3] IDENT(13): 'Bidi' [line #3] OP_EQ(4): '=' [line #3] IDENT(13): 'Bidi' [line #3] IDENT(13): 'Bidi' [line #3] OP_EQ(4): '=' [line #3] IDENT(13): 'Bidi' [line #3] IDENT(13): 'Bidi' [line #3] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/dbg_ruleprec.txt000066400000000000000000000027741411153030700275430ustar00rootroot00000000000000RULE PRECEDENCE TABLE: substitution PASS: 1 (GDL #0) 0 - RULE 1.0, PigLatinMain.gdl(46): clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _ ; 1 - RULE 1.3, PigLatinMain.gdl(58): clsCons clsCons clsCons clsWf > @4 @1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _{ user1 == 0 } ; 2 - RULE 1.1, PigLatinMain.gdl(49): clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _ ; 3 - RULE 1.4, PigLatinMain.gdl(61): clsCons clsCons clsWf > @3 @1 { user1 = 1; } @2 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == 0 } ; 4 - RULE 1.6, PigLatinMain.gdl(68): clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _{ user1 == 1 } _{ user1 == 1 } _{ user1 == 1 } _ _ ; 5 - RULE 1.2, PigLatinMain.gdl(52): clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 { user1 = 1; } / _{ user1 == 0 } ^ _ ; 6 - RULE 1.5, PigLatinMain.gdl(64): clsCons clsWf > @2 @1 { user1 = 1; } / _ ^ _{ user1 == 0 } ; 7 - RULE 1.7, PigLatinMain.gdl(70): clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _{ user1 == 1 } _{ user1 == 1 } _ _ ; 8 - RULE 1.8, PigLatinMain.gdl(72): clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _{ user1 == 1 } _ _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/gdlerr.txt000066400000000000000000000010031411153030700263450ustar00rootroot00000000000000Graphite Compilation Results GDL file: PigLatinMain.gdl Input font file: PigLatinInput.ttf Output font file: PigLatinBenchmark_v2.ttf Output font family: PigLatin GrRegTest V2 Silf table version: 2.0 Create separate control file: no ******************************************************* Table versions generated: Silf: 2.0 Gloc: 1.0 Glat: 1.0 Feat: 1.0 Sill: 1.0 Minimal compiler version required: 2.0 ******************************************************* Compilation succeeded - 0 errors, 0 warnings grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v2/readme.txt000066400000000000000000000001751411153030700263340ustar00rootroot00000000000000This directory contains the debugger files that were generated in the process of compiling the PigLatinBenchmark_v2.ttf font.grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/000077500000000000000000000000001411153030700243345ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/$_temp.gdl000066400000000000000000000027621411153030700262030ustar00rootroot00000000000000#line 1 "PigLatinMain.gdl" #line 12 Bidi = false; #line 18 table(glyph) clsVowelUC = codepoint("AEIOU"); clsVowelLC = codepoint("aeiou"); clsVowel = (clsVowelUC clsVowelLC); clsConsUC = codepoint("BCDFGHJKLMNPQRSTVWXYZ"); clsConsLC = codepoint("bcdfghjklmnpqrstvwxyz"); clsCons = (clsConsUC, clsConsLC); clsWfUC = (clsVowelUC clsConsUC); clsWfLC = (clsVowelLC clsConsLC); clsWf = (clsWfUC clsWfLC); g_aIns = codepoint("a"); g_yIns = codepoint("y"); endtable; table(substitution) #line 46 clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 {user1 = true} @2 {user1 = true} @3 {user1 = true} / _ {user1 == false} ^ _ {user1 == @1.user1} _ {user1 == @1.user1} _; clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 {user1 = true} @2 {user1 = true} / _ {user1 == false} ^ _ {user1 == @1.user1} _; clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 {user1 = true} / _ {user1 == false} ^ _; clsCons clsCons clsCons clsWf > @4 @1 {user1 = true} @2 {user1 = true} @3 {user1 = true} / _ ^ _ {user1 == @1.user1} _ {user1 == @1.user1} _ {user1 == false}; clsCons clsCons clsWf > @3 @1 { user1 = true } @2 {user1 = true} / _ ^ _ {user1 == @1.user1} _ {user1 == false}; clsCons clsWf > @2 @1 { user1 = true } / _ ^ _ {user1 == false}; clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _ {user1 == true} _ {user1 == true} _ {user1 == true} _ _; clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _ {user1 == true} _ {user1 == true} _ _; clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _ {user1 == true} _ _; endtable; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/PigLatinBenchmark_v3.gdx000066400000000000000000001743651411153030700310120ustar00rootroot00000000000000 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/dbg_classes.txt000066400000000000000000000025651411153030700273560ustar00rootroot00000000000000LINEAR (OUTPUT) CLASSES Class #0: clsConsLC 0: 0x0044 0x0045 0x0046 0x0048 0x0049 0x004a 0x004c 0x004d 0x004e 0x004f 10: 0x0050 0x0052 0x0053 0x0054 0x0055 0x0056 0x0058 0x0059 0x005a 0x005b 20: 0x005c Class #1: clsWfUC 0: 0x0023 0x0027 0x002b 0x0031 0x0037 0x0024 0x0025 0x0026 0x0028 0x0029 10: 0x002a 0x002c 0x002d 0x002e 0x002f 0x0030 0x0032 0x0033 0x0034 0x0035 20: 0x0036 0x0038 0x0039 0x003a 0x003b 0x003c Class #2: g_aIns 0: 0x0043 Class #3: g_yIns 0: 0x005b INDEXED (INPUT) CLASSES Class #4: clsConsUC 0x0024 : 0 0x0025 : 1 0x0026 : 2 0x0028 : 3 0x0029 : 4 0x002a : 5 0x002c : 6 0x002d : 7 0x002e : 8 0x002f : 9 0x0030 : 10 0x0032 : 11 0x0033 : 12 0x0034 : 13 0x0035 : 14 0x0036 : 15 0x0038 : 16 0x0039 : 17 0x003a : 18 0x003b : 19 0x003c : 20 Class #5: clsWfLC 0x0043 : 0 0x0044 : 5 0x0045 : 6 0x0046 : 7 0x0047 : 1 0x0048 : 8 0x0049 : 9 0x004a : 10 0x004b : 2 0x004c : 11 0x004d : 12 0x004e : 13 0x004f : 14 0x0050 : 15 0x0051 : 3 0x0052 : 16 0x0053 : 17 0x0054 : 18 0x0055 : 19 0x0056 : 20 0x0057 : 4 0x0058 : 21 0x0059 : 22 0x005a : 23 0x005b : 24 0x005c : 25 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/dbg_cmap.txt000066400000000000000000000246451411153030700266440ustar00rootroot00000000000000UNICODE => GLYPH ID MAPPINGS U+0020 => 2 (0x0002) U+0021 => 3 (0x0003) U+0022 => 4 (0x0004) U+0023 => 5 (0x0005) U+0024 => 6 (0x0006) U+0025 => 7 (0x0007) U+0026 => 8 (0x0008) U+0027 => 9 (0x0009) U+0028 => 10 (0x000a) U+0029 => 11 (0x000b) U+002A => 12 (0x000c) U+002B => 13 (0x000d) U+002C => 14 (0x000e) U+002D => 15 (0x000f) U+002E => 16 (0x0010) U+002F => 17 (0x0011) U+0030 => 18 (0x0012) U+0031 => 19 (0x0013) U+0032 => 20 (0x0014) U+0033 => 21 (0x0015) U+0034 => 22 (0x0016) U+0035 => 23 (0x0017) U+0036 => 24 (0x0018) U+0037 => 25 (0x0019) U+0038 => 26 (0x001a) U+0039 => 27 (0x001b) U+003A => 28 (0x001c) U+003B => 29 (0x001d) U+003C => 30 (0x001e) U+003D => 31 (0x001f) U+003E => 32 (0x0020) U+003F => 33 (0x0021) U+0040 => 34 (0x0022) U+0041 => 35 (0x0023) U+0042 => 36 (0x0024) U+0043 => 37 (0x0025) U+0044 => 38 (0x0026) U+0045 => 39 (0x0027) U+0046 => 40 (0x0028) U+0047 => 41 (0x0029) U+0048 => 42 (0x002a) U+0049 => 43 (0x002b) U+004A => 44 (0x002c) U+004B => 45 (0x002d) U+004C => 46 (0x002e) U+004D => 47 (0x002f) U+004E => 48 (0x0030) U+004F => 49 (0x0031) U+0050 => 50 (0x0032) U+0051 => 51 (0x0033) U+0052 => 52 (0x0034) U+0053 => 53 (0x0035) U+0054 => 54 (0x0036) U+0055 => 55 (0x0037) U+0056 => 56 (0x0038) U+0057 => 57 (0x0039) U+0058 => 58 (0x003a) U+0059 => 59 (0x003b) U+005A => 60 (0x003c) U+005B => 61 (0x003d) U+005C => 62 (0x003e) U+005D => 63 (0x003f) U+005E => 64 (0x0040) U+005F => 65 (0x0041) U+0060 => 66 (0x0042) U+0061 => 67 (0x0043) U+0062 => 68 (0x0044) U+0063 => 69 (0x0045) U+0064 => 70 (0x0046) U+0065 => 71 (0x0047) U+0066 => 72 (0x0048) U+0067 => 73 (0x0049) U+0068 => 74 (0x004a) U+0069 => 75 (0x004b) U+006A => 76 (0x004c) U+006B => 77 (0x004d) U+006C => 78 (0x004e) U+006D => 79 (0x004f) U+006E => 80 (0x0050) U+006F => 81 (0x0051) U+0070 => 82 (0x0052) U+0071 => 83 (0x0053) U+0072 => 84 (0x0054) U+0073 => 85 (0x0055) U+0074 => 86 (0x0056) U+0075 => 87 (0x0057) U+0076 => 88 (0x0058) U+0077 => 89 (0x0059) U+0078 => 90 (0x005a) U+0079 => 91 (0x005b) U+007A => 92 (0x005c) U+007B => 93 (0x005d) U+007C => 94 (0x005e) U+007D => 95 (0x005f) U+007E => 96 (0x0060) U+00A0 => 97 (0x0061) U+00A1 => 98 (0x0062) U+00A2 => 99 (0x0063) U+00A3 => 100 (0x0064) U+00A4 => 101 (0x0065) U+00A5 => 102 (0x0066) U+00A6 => 103 (0x0067) U+00A7 => 104 (0x0068) U+00A8 => 105 (0x0069) U+00A9 => 106 (0x006a) U+00AA => 107 (0x006b) U+00AB => 108 (0x006c) U+00AC => 109 (0x006d) U+00AD => 110 (0x006e) U+00AE => 111 (0x006f) U+00AF => 112 (0x0070) U+00B0 => 113 (0x0071) U+00B1 => 114 (0x0072) U+00B2 => 115 (0x0073) U+00B3 => 116 (0x0074) U+00B4 => 117 (0x0075) U+00B5 => 118 (0x0076) U+00B6 => 119 (0x0077) U+00B8 => 120 (0x0078) U+00B9 => 121 (0x0079) U+00BA => 122 (0x007a) U+00BB => 123 (0x007b) U+00BC => 124 (0x007c) U+00BD => 125 (0x007d) U+00BE => 126 (0x007e) U+00BF => 127 (0x007f) U+00C0 => 128 (0x0080) U+00C1 => 129 (0x0081) U+00C2 => 130 (0x0082) U+00C3 => 131 (0x0083) U+00C4 => 132 (0x0084) U+00C5 => 133 (0x0085) U+00C6 => 134 (0x0086) U+00C7 => 135 (0x0087) U+00C8 => 136 (0x0088) U+00C9 => 137 (0x0089) U+00CA => 138 (0x008a) U+00CB => 139 (0x008b) U+00CC => 140 (0x008c) U+00CD => 141 (0x008d) U+00CE => 142 (0x008e) U+00CF => 143 (0x008f) U+00D0 => 144 (0x0090) U+00D1 => 145 (0x0091) U+00D2 => 146 (0x0092) U+00D3 => 147 (0x0093) U+00D4 => 148 (0x0094) U+00D5 => 149 (0x0095) U+00D6 => 150 (0x0096) U+00D7 => 151 (0x0097) U+00D8 => 152 (0x0098) U+00D9 => 153 (0x0099) U+00DA => 154 (0x009a) U+00DB => 155 (0x009b) U+00DC => 156 (0x009c) U+00DD => 157 (0x009d) U+00DE => 158 (0x009e) U+00DF => 159 (0x009f) U+00E0 => 160 (0x00a0) U+00E1 => 161 (0x00a1) U+00E2 => 162 (0x00a2) U+00E3 => 163 (0x00a3) U+00E4 => 164 (0x00a4) U+00E5 => 165 (0x00a5) U+00E6 => 166 (0x00a6) U+00E7 => 167 (0x00a7) U+00E8 => 168 (0x00a8) U+00E9 => 169 (0x00a9) U+00EA => 170 (0x00aa) U+00EB => 171 (0x00ab) U+00EC => 172 (0x00ac) U+00ED => 173 (0x00ad) U+00EE => 174 (0x00ae) U+00EF => 175 (0x00af) U+00F0 => 176 (0x00b0) U+00F1 => 177 (0x00b1) U+00F2 => 178 (0x00b2) U+00F3 => 179 (0x00b3) U+00F4 => 180 (0x00b4) U+00F5 => 181 (0x00b5) U+00F6 => 182 (0x00b6) U+00F7 => 183 (0x00b7) U+00F8 => 184 (0x00b8) U+00F9 => 185 (0x00b9) U+00FA => 186 (0x00ba) U+00FB => 187 (0x00bb) U+00FC => 188 (0x00bc) U+00FD => 189 (0x00bd) U+00FE => 190 (0x00be) U+00FF => 191 (0x00bf) U+0152 => 192 (0x00c0) U+0153 => 193 (0x00c1) U+0160 => 194 (0x00c2) U+0161 => 195 (0x00c3) U+0178 => 196 (0x00c4) U+0192 => 197 (0x00c5) U+02C6 => 198 (0x00c6) U+02DC => 199 (0x00c7) U+2013 => 200 (0x00c8) U+2014 => 201 (0x00c9) U+2018 => 202 (0x00ca) U+2019 => 203 (0x00cb) U+201A => 204 (0x00cc) U+201C => 205 (0x00cd) U+201D => 206 (0x00ce) U+201E => 207 (0x00cf) U+2020 => 208 (0x00d0) U+2021 => 209 (0x00d1) U+2022 => 210 (0x00d2) U+2026 => 211 (0x00d3) U+2030 => 212 (0x00d4) U+2039 => 213 (0x00d5) U+203A => 214 (0x00d6) U+2122 => 215 (0x00d7) U+2219 => 216 (0x00d8) GLYPH ID => UNICODE MAPPINGS 2 => U+0020 ' ' 3 => U+0021 '!' 4 => U+0022 '"' 5 => U+0023 '#' 6 => U+0024 '$' 7 => U+0025 '%' 8 => U+0026 '&' 9 => U+0027 ''' 10 => U+0028 '(' 11 => U+0029 ')' 12 => U+002A '*' 13 => U+002B '+' 14 => U+002C ',' 15 => U+002D '-' 16 => U+002E '.' 17 => U+002F '/' 18 => U+0030 '0' 19 => U+0031 '1' 20 => U+0032 '2' 21 => U+0033 '3' 22 => U+0034 '4' 23 => U+0035 '5' 24 => U+0036 '6' 25 => U+0037 '7' 26 => U+0038 '8' 27 => U+0039 '9' 28 => U+003A ':' 29 => U+003B ';' 30 => U+003C '<' 31 => U+003D '=' 32 => U+003E '>' 33 => U+003F '?' 34 => U+0040 '@' 35 => U+0041 'A' 36 => U+0042 'B' 37 => U+0043 'C' 38 => U+0044 'D' 39 => U+0045 'E' 40 => U+0046 'F' 41 => U+0047 'G' 42 => U+0048 'H' 43 => U+0049 'I' 44 => U+004A 'J' 45 => U+004B 'K' 46 => U+004C 'L' 47 => U+004D 'M' 48 => U+004E 'N' 49 => U+004F 'O' 50 => U+0050 'P' 51 => U+0051 'Q' 52 => U+0052 'R' 53 => U+0053 'S' 54 => U+0054 'T' 55 => U+0055 'U' 56 => U+0056 'V' 57 => U+0057 'W' 58 => U+0058 'X' 59 => U+0059 'Y' 60 => U+005A 'Z' 61 => U+005B '[' 62 => U+005C '\' 63 => U+005D ']' 64 => U+005E '^' 65 => U+005F '_' 66 => U+0060 '`' 67 => U+0061 'a' 68 => U+0062 'b' 69 => U+0063 'c' 70 => U+0064 'd' 71 => U+0065 'e' 72 => U+0066 'f' 73 => U+0067 'g' 74 => U+0068 'h' 75 => U+0069 'i' 76 => U+006A 'j' 77 => U+006B 'k' 78 => U+006C 'l' 79 => U+006D 'm' 80 => U+006E 'n' 81 => U+006F 'o' 82 => U+0070 'p' 83 => U+0071 'q' 84 => U+0072 'r' 85 => U+0073 's' 86 => U+0074 't' 87 => U+0075 'u' 88 => U+0076 'v' 89 => U+0077 'w' 90 => U+0078 'x' 91 => U+0079 'y' 92 => U+007A 'z' 93 => U+007B '{' 94 => U+007C '|' 95 => U+007D '}' 96 => U+007E '~' 97 => U+00A0 '' 98 => U+00A1 '' 99 => U+00A2 '' 100 => U+00A3 '' 101 => U+00A4 '' 102 => U+00A5 '' 103 => U+00A6 '' 104 => U+00A7 '' 105 => U+00A8 '' 106 => U+00A9 '' 107 => U+00AA '' 108 => U+00AB '' 109 => U+00AC '' 110 => U+00AD '' 111 => U+00AE '' 112 => U+00AF '' 113 => U+00B0 '' 114 => U+00B1 '' 115 => U+00B2 '' 116 => U+00B3 '' 117 => U+00B4 '' 118 => U+00B5 '' 119 => U+00B6 '' 120 => U+00B8 '' 121 => U+00B9 '' 122 => U+00BA '' 123 => U+00BB '' 124 => U+00BC '' 125 => U+00BD '' 126 => U+00BE '' 127 => U+00BF '' 128 => U+00C0 '' 129 => U+00C1 '' 130 => U+00C2 '' 131 => U+00C3 '' 132 => U+00C4 '' 133 => U+00C5 '' 134 => U+00C6 '' 135 => U+00C7 '' 136 => U+00C8 '' 137 => U+00C9 '' 138 => U+00CA '' 139 => U+00CB '' 140 => U+00CC '' 141 => U+00CD '' 142 => U+00CE '' 143 => U+00CF '' 144 => U+00D0 '' 145 => U+00D1 '' 146 => U+00D2 '' 147 => U+00D3 '' 148 => U+00D4 '' 149 => U+00D5 '' 150 => U+00D6 '' 151 => U+00D7 '' 152 => U+00D8 '' 153 => U+00D9 '' 154 => U+00DA '' 155 => U+00DB '' 156 => U+00DC '' 157 => U+00DD '' 158 => U+00DE '' 159 => U+00DF '' 160 => U+00E0 '' 161 => U+00E1 '' 162 => U+00E2 '' 163 => U+00E3 '' 164 => U+00E4 '' 165 => U+00E5 '' 166 => U+00E6 '' 167 => U+00E7 '' 168 => U+00E8 '' 169 => U+00E9 '' 170 => U+00EA '' 171 => U+00EB '' 172 => U+00EC '' 173 => U+00ED '' 174 => U+00EE '' 175 => U+00EF '' 176 => U+00F0 '' 177 => U+00F1 '' 178 => U+00F2 '' 179 => U+00F3 '' 180 => U+00F4 '' 181 => U+00F5 '' 182 => U+00F6 '' 183 => U+00F7 '' 184 => U+00F8 '' 185 => U+00F9 '' 186 => U+00FA '' 187 => U+00FB '' 188 => U+00FC '' 189 => U+00FD '' 190 => U+00FE '' 191 => U+00FF '' 192 => U+0152 193 => U+0153 194 => U+0160 195 => U+0161 196 => U+0178 197 => U+0192 198 => U+02C6 199 => U+02DC 200 => U+2013 201 => U+2014 202 => U+2018 203 => U+2019 204 => U+201A 205 => U+201C 206 => U+201D 207 => U+201E 208 => U+2020 209 => U+2021 210 => U+2022 211 => U+2026 212 => U+2030 213 => U+2039 214 => U+203A 215 => U+2122 216 => U+2219 217 [line-break] 218 [phantom] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/dbg_enginecode.txt000066400000000000000000000076331411153030700300220ustar00rootroot00000000000000ENGINE CODE FOR RULES TABLE: substitution PASS: 1 PASS CONSTRAINTS: none RULE 1.0, PigLatinMain.gdl(46): clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _ ; ACTIONS: PutSubs 3 5 1 Assoc 1 3 Next PutSubs 255 4 0 Assoc 1 -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal And CntxtItem 2 9 PushISlotAttr user 0 0 PushISlotAttr user -2 0 Equal And PopRet RULE 1.1, PigLatinMain.gdl(49): clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _ ; ACTIONS: PutSubs 2 5 1 Assoc 1 2 Next PutSubs 255 4 0 Assoc 1 -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal And PopRet RULE 1.2, PigLatinMain.gdl(52): clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 { user1 = 1; } / _{ user1 == 0 } ^ _ ; ACTIONS: PutSubs 1 5 1 Assoc 1 1 Next PutSubs 255 4 0 Assoc 1 -1 PushByte 1 IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 1.3, PigLatinMain.gdl(58): clsCons clsCons clsCons clsWf > @4 @1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _{ user1 == 0 } ; ACTIONS: PutCopy 3 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal CntxtItem 2 9 PushISlotAttr user 0 0 PushISlotAttr user -2 0 Equal And CntxtItem 3 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 1.4, PigLatinMain.gdl(61): clsCons clsCons clsWf > @3 @1 { user1 = 1; } @2 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == 0 } ; ACTIONS: PutCopy 2 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 1 9 PushISlotAttr user 0 0 PushISlotAttr user -1 0 Equal CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 0 Equal And PopRet RULE 1.5, PigLatinMain.gdl(64): clsCons clsWf > @2 @1 { user1 = 1; } / _ ^ _{ user1 == 0 } ; ACTIONS: PutCopy 1 Next PutCopy -1 PushByte 1 IAttrSet user 0 Next PushByte -1 PopRet CONSTRAINTS: CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 1.6, PigLatinMain.gdl(68): clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _{ user1 == 1 } _{ user1 == 1 } _{ user1 == 1 } _ _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next PutCopy 0 Next Insert PutGlyph 2 Assoc 1 0 Next Insert PutGlyph 3 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 1 Equal And CntxtItem 2 7 PushISlotAttr user 0 0 PushByte 1 Equal And PopRet RULE 1.7, PigLatinMain.gdl(70): clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _{ user1 == 1 } _{ user1 == 1 } _ _ ; ACTIONS: PutCopy 0 Next PutCopy 0 Next Insert PutGlyph 2 Assoc 1 0 Next Insert PutGlyph 3 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal CntxtItem 1 7 PushISlotAttr user 0 0 PushByte 1 Equal And PopRet RULE 1.8, PigLatinMain.gdl(72): clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _{ user1 == 1 } _ _ ; ACTIONS: PutCopy 0 Next Insert PutGlyph 2 Assoc 1 0 Next Insert PutGlyph 3 Assoc 1 0 Next RetZero CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 1 Equal PopRet grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/dbg_fsm.txt000066400000000000000000000064401411153030700265020ustar00rootroot00000000000000FINITE STATE MACHINES TABLE: substitution PASS: 1 Glyph ID => Column: 35 => 0 36 .. 38 => 1 39 => 0 40 .. 42 => 1 43 => 0 44 .. 48 => 1 49 => 0 50 .. 54 => 1 55 => 0 56 .. 60 => 1 67 => 2 68 .. 70 => 3 71 => 2 72 .. 74 => 3 75 => 2 76 .. 80 => 3 81 => 2 82 .. 86 => 3 87 => 2 88 .. 92 => 3 Final Table: 0 1 2 3 - - - - - - - - - - - - 0: 0 0 1 0 2 Matched=none Success=none 1: 1 10 3 9 4 Matched=0,1,2,3,4,5,6,7,8, Success=8, 2: 1 10 5 10 5 Matched=3,4,5,6,7,8, Success=8, 3: 2 12 6 11 7 Matched=0,1,3,4,5,6,7, Success=5,7, 4: 2 12 6 11 7 Matched=0,1,2,3,4,5,6,7, Success=2,5,7, 5: 2 12 8 12 8 Matched=3,4,5,6,7, Success=5,7, 6: 3 14 14 13 13 Matched=0,3,4,6, Success=4,6, 7: 3 14 14 13 13 Matched=0,1,3,4,6, Success=1,4,6, 8: 3 14 14 14 14 Matched=3,4,6, Success=4,6, 9: 2 0 0 0 0 Matched=2,5, Success=2,5, 10: 2 0 0 0 0 Matched=5, Success=5, 11: 3 0 0 0 0 Matched=1,4, Success=1,4, 12: 3 0 0 0 0 Matched=4, Success=4, 13: 4 0 0 0 0 Matched=0,3, Success=0,3, 14: 4 0 0 0 0 Matched=3, Success=3, - - - - - - - - - - - - RULE 1.0, PigLatinMain.gdl(46): clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _ ; RULE 1.1, PigLatinMain.gdl(49): clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _ ; RULE 1.2, PigLatinMain.gdl(52): clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 { user1 = 1; } / _{ user1 == 0 } ^ _ ; RULE 1.3, PigLatinMain.gdl(58): clsCons clsCons clsCons clsWf > @4 @1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _{ user1 == 0 } ; RULE 1.4, PigLatinMain.gdl(61): clsCons clsCons clsWf > @3 @1 { user1 = 1; } @2 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == 0 } ; RULE 1.5, PigLatinMain.gdl(64): clsCons clsWf > @2 @1 { user1 = 1; } / _ ^ _{ user1 == 0 } ; RULE 1.6, PigLatinMain.gdl(68): clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _{ user1 == 1 } _{ user1 == 1 } _{ user1 == 1 } _ _ ; RULE 1.7, PigLatinMain.gdl(70): clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _{ user1 == 1 } _{ user1 == 1 } _ _ ; RULE 1.8, PigLatinMain.gdl(72): clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _{ user1 == 1 } _ _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/dbg_glyphattrs.txt000066400000000000000000000376201411153030700301220ustar00rootroot00000000000000GLYPH ATTRIBUTE IDS 0: *actualForPseudo* 1: *skipPasses* 2: breakweight 3: directionality GLYPH ATTRIBUTE VALUES 0 [0x0000] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 1 [0x0001] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 2 [0x0002] *skipPasses* = 1 [0x0001 / 1] breakweight = 15 [0x000f] directionality = 9 3 [0x0003] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 4 [0x0004] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 5 [0x0005] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 6 [0x0006] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 7 [0x0007] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 8 [0x0008] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 9 [0x0009] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 10 [0x000a] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 11 [0x000b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 12 [0x000c] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 13 [0x000d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 14 [0x000e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 15 [0x000f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 16 [0x0010] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 17 [0x0011] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 18 [0x0012] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 19 [0x0013] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 20 [0x0014] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 21 [0x0015] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 22 [0x0016] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 23 [0x0017] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 24 [0x0018] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 25 [0x0019] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 26 [0x001a] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 27 [0x001b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 28 [0x001c] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 29 [0x001d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 30 [0x001e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 31 [0x001f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 32 [0x0020] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 33 [0x0021] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 34 [0x0022] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 35 [0x0023] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 36 [0x0024] breakweight = 30 [0x001e] 37 [0x0025] breakweight = 30 [0x001e] 38 [0x0026] breakweight = 30 [0x001e] 39 [0x0027] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 40 [0x0028] breakweight = 30 [0x001e] 41 [0x0029] breakweight = 30 [0x001e] 42 [0x002a] breakweight = 30 [0x001e] 43 [0x002b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 44 [0x002c] breakweight = 30 [0x001e] 45 [0x002d] breakweight = 30 [0x001e] 46 [0x002e] breakweight = 30 [0x001e] 47 [0x002f] breakweight = 30 [0x001e] 48 [0x0030] breakweight = 30 [0x001e] 49 [0x0031] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 50 [0x0032] breakweight = 30 [0x001e] 51 [0x0033] breakweight = 30 [0x001e] 52 [0x0034] breakweight = 30 [0x001e] 53 [0x0035] breakweight = 30 [0x001e] 54 [0x0036] breakweight = 30 [0x001e] 55 [0x0037] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 56 [0x0038] breakweight = 30 [0x001e] 57 [0x0039] breakweight = 30 [0x001e] 58 [0x003a] breakweight = 30 [0x001e] 59 [0x003b] breakweight = 30 [0x001e] 60 [0x003c] breakweight = 30 [0x001e] 61 [0x003d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 62 [0x003e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 63 [0x003f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 64 [0x0040] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 65 [0x0041] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 66 [0x0042] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 67 [0x0043] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 68 [0x0044] breakweight = 30 [0x001e] 69 [0x0045] breakweight = 30 [0x001e] 70 [0x0046] breakweight = 30 [0x001e] 71 [0x0047] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 72 [0x0048] breakweight = 30 [0x001e] 73 [0x0049] breakweight = 30 [0x001e] 74 [0x004a] breakweight = 30 [0x001e] 75 [0x004b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 76 [0x004c] breakweight = 30 [0x001e] 77 [0x004d] breakweight = 30 [0x001e] 78 [0x004e] breakweight = 30 [0x001e] 79 [0x004f] breakweight = 30 [0x001e] 80 [0x0050] breakweight = 30 [0x001e] 81 [0x0051] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 82 [0x0052] breakweight = 30 [0x001e] 83 [0x0053] breakweight = 30 [0x001e] 84 [0x0054] breakweight = 30 [0x001e] 85 [0x0055] breakweight = 30 [0x001e] 86 [0x0056] breakweight = 30 [0x001e] 87 [0x0057] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 88 [0x0058] breakweight = 30 [0x001e] 89 [0x0059] breakweight = 30 [0x001e] 90 [0x005a] breakweight = 30 [0x001e] 91 [0x005b] breakweight = 30 [0x001e] 92 [0x005c] breakweight = 30 [0x001e] 93 [0x005d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] 94 [0x005e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 95 [0x005f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] 96 [0x0060] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 97 [0x0061] *skipPasses* = 1 [0x0001 / 1] breakweight = 15 [0x000f] 98 [0x0062] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 99 [0x0063] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 100 [0x0064] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 101 [0x0065] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 102 [0x0066] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 103 [0x0067] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 104 [0x0068] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 105 [0x0069] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 106 [0x006a] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 107 [0x006b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 108 [0x006c] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 109 [0x006d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 110 [0x006e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 111 [0x006f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 112 [0x0070] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 113 [0x0071] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 114 [0x0072] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 115 [0x0073] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 116 [0x0074] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 117 [0x0075] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 118 [0x0076] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 119 [0x0077] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 120 [0x0078] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 121 [0x0079] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 122 [0x007a] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 123 [0x007b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 124 [0x007c] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 125 [0x007d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 126 [0x007e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 127 [0x007f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 128 [0x0080] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 129 [0x0081] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 130 [0x0082] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 131 [0x0083] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 132 [0x0084] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 133 [0x0085] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 134 [0x0086] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 135 [0x0087] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 136 [0x0088] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 137 [0x0089] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 138 [0x008a] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 139 [0x008b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 140 [0x008c] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 141 [0x008d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 142 [0x008e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 143 [0x008f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 144 [0x0090] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 145 [0x0091] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 146 [0x0092] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 147 [0x0093] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 148 [0x0094] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 149 [0x0095] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 150 [0x0096] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 151 [0x0097] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 152 [0x0098] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 153 [0x0099] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 154 [0x009a] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 155 [0x009b] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 156 [0x009c] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 157 [0x009d] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 158 [0x009e] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 159 [0x009f] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 160 [0x00a0] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 161 [0x00a1] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 162 [0x00a2] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 163 [0x00a3] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 164 [0x00a4] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 165 [0x00a5] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 166 [0x00a6] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 167 [0x00a7] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 168 [0x00a8] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 169 [0x00a9] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 170 [0x00aa] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 171 [0x00ab] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 172 [0x00ac] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 173 [0x00ad] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 174 [0x00ae] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 175 [0x00af] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 176 [0x00b0] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 177 [0x00b1] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 178 [0x00b2] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 179 [0x00b3] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 180 [0x00b4] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 181 [0x00b5] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 182 [0x00b6] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 183 [0x00b7] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 184 [0x00b8] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 185 [0x00b9] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 186 [0x00ba] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 187 [0x00bb] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 188 [0x00bc] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 189 [0x00bd] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 190 [0x00be] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 191 [0x00bf] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 192 [0x00c0] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 193 [0x00c1] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 194 [0x00c2] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 195 [0x00c3] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 196 [0x00c4] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 197 [0x00c5] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 198 [0x00c6] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 199 [0x00c7] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 200 [0x00c8] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 201 [0x00c9] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 202 [0x00ca] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 203 [0x00cb] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 204 [0x00cc] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 205 [0x00cd] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 206 [0x00ce] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 207 [0x00cf] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 208 [0x00d0] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 209 [0x00d1] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 210 [0x00d2] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 211 [0x00d3] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 212 [0x00d4] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 213 [0x00d5] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 214 [0x00d6] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 215 [0x00d7] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 216 [0x00d8] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 217 [0x00d9] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] 218 [0x00da] *skipPasses* = 1 [0x0001 / 1] breakweight = 30 [0x001e] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/dbg_parsetree.txt000066400000000000000000000004741411153030700277100ustar00rootroot00000000000000PARSE TREE Ztop(100) OP_EQ(4): '=' [line #3] IDENT(13): 'Bidi' [line #3] IDENT(13): 'Bidi' [line #3] OP_EQ(4): '=' [line #3] IDENT(13): 'Bidi' [line #3] IDENT(13): 'Bidi' [line #3] OP_EQ(4): '=' [line #3] IDENT(13): 'Bidi' [line #3] IDENT(13): 'Bidi' [line #3] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/dbg_ruleprec.txt000066400000000000000000000027741411153030700275440ustar00rootroot00000000000000RULE PRECEDENCE TABLE: substitution PASS: 1 (GDL #0) 0 - RULE 1.0, PigLatinMain.gdl(46): clsConsUC clsCons clsCons clsWfLC > clsWfUC$4:4 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _ ; 1 - RULE 1.3, PigLatinMain.gdl(58): clsCons clsCons clsCons clsWf > @4 @1 { user1 = 1; } @2 { user1 = 1; } @3 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == @1.user1 } _{ user1 == 0 } ; 2 - RULE 1.1, PigLatinMain.gdl(49): clsConsUC clsCons clsWfLC > clsWfUC$3:3 clsConsLC$1:1 { user1 = 1; } @2 { user1 = 1; } / _{ user1 == 0 } ^ _{ user1 == @1.user1 } _ ; 3 - RULE 1.4, PigLatinMain.gdl(61): clsCons clsCons clsWf > @3 @1 { user1 = 1; } @2 { user1 = 1; } / _ ^ _{ user1 == @1.user1 } _{ user1 == 0 } ; 4 - RULE 1.6, PigLatinMain.gdl(68): clsCons clsCons clsCons _ _ > @1 @2 @3 g_aIns:3 g_yIns:3 / _{ user1 == 1 } _{ user1 == 1 } _{ user1 == 1 } _ _ ; 5 - RULE 1.2, PigLatinMain.gdl(52): clsConsUC clsWfLC > clsWfUC$2:2 clsConsLC$1:1 { user1 = 1; } / _{ user1 == 0 } ^ _ ; 6 - RULE 1.5, PigLatinMain.gdl(64): clsCons clsWf > @2 @1 { user1 = 1; } / _ ^ _{ user1 == 0 } ; 7 - RULE 1.7, PigLatinMain.gdl(70): clsCons clsCons _ _ > @1 @2 g_aIns:2 g_yIns:2 / _{ user1 == 1 } _{ user1 == 1 } _ _ ; 8 - RULE 1.8, PigLatinMain.gdl(72): clsCons _ _ > @1 g_aIns:1 g_yIns:1 / _{ user1 == 1 } _ _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/gdlerr.txt000066400000000000000000000012641411153030700263570ustar00rootroot00000000000000Graphite Compilation Results GDL file: PigLatinMain.gdl Input font file: PigLatinInput.ttf Output font file: PigLatinBenchmark_v3.ttf Output font family: PigLatin GrcRegTest Silf table version: 4.0 Create separate control file: no ******************************************************* warning(5504): Version 3.0 of the Silf table is inadequate for your specification; version 4.0 will be generated instead. ******************************************************* Table versions generated: Silf: 4.0 Gloc: 1.0 Glat: 1.0 Feat: 1.0 Sill: 1.0 Minimal compiler version required: 4.2 ******************************************************* Compilation succeeded - 0 errors, 1 warning grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_PigLatin_v3/readme.txt000066400000000000000000000001751411153030700263350ustar00rootroot00000000000000This directory contains the debugger files that were generated in the process of compiling the PigLatinBenchmark_v3.ttf font.grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/000077500000000000000000000000001411153030700227325ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/$_temp.gdl000066400000000000000000005644601411153030700246110ustar00rootroot00000000000000#line 1 "SchMain.gdl" #line 20 ScriptDirection = 2; Bidi = true; environment {MUnits=2048}; #line 9 "SchGlyphs.gdh" environment {AttributeOverride = true}; table(glyph) #line 19 r__a = postscript("A") { above = point(555m, 1090m) }; r__c = postscript("C") { below = point(553m, -72m) }; r__e = postscript("E") { above = point(471m, 1090m) }; r__i = postscript("I") { above = point(258m, 1090m) }; r__n = postscript("N") { above = point(551m, 1090m) }; r__o = postscript("O") { above = point(554m, 1090m) }; r__s = postscript("S") { above = point(437m, 1090m) }; r__u = postscript("U") { above = point(561m, 1090m) }; r__y = postscript("Y") { above = point(554m, 1090m) }; r__z = postscript("Z") { above = point(511m, 1090m) }; r_a = postscript("a") { above = point(336m, 760m) }; r_c = postscript("c") { below = point(351m, -65m) }; r_e = postscript("e") { above = point(375m, 760m) }; r_n = postscript("n") { above = point(389m, 760m) }; r_o = postscript("o") { above = point(385m, 760m) }; r_s = postscript("s") { above = point(311m, 760m) }; r_u = postscript("u") { above = point(387m, 760m) }; r_y = postscript("y") { above = point(420m, 760m) }; r_z = postscript("z") { above = point(377m, 760m) }; r_grave = postscript("grave") { above_ = point(294m, 760m) }; r_circumflex = postscript("circumflex") { above_ = point(242m, 770m) }; r_tilde = postscript("tilde") { above_ = point(257m, 760m) }; r_dieresis = postscript("dieresis") { above_ = point(242m, 770m) }; r_acute = postscript("acute") { above_ = point(227m, 760m) }; r_cedilla = postscript("cedilla") { below_ = point(154m, -50m) }; r_dotlessi = postscript("dotlessi") { above = point(221m, 760m) }; r_circledash = postscript("circledash") { diaA = point(520m, 1080m); diaB = point(520m, -120m) }; gbraceleft = postscript("braceleft"); gbraceright = postscript("braceright"); gbracketleft = postscript("bracketleft"); gbracketright = postscript("bracketright"); gless = postscript("less"); ggreater = postscript("greater"); gparenleft = postscript("parenleft"); gparenright = postscript("parenright"); absAlefMaddaAbove = postscript("absAlefMaddaAbove") { diaB = point(100m, -180m); diaA = point(120m, 1395m) }; absAlefHamzaAbove = postscript("absAlefHamzaAbove") { diaB = point(100m, -180m); diaA = point(120m, 1470m) }; absAlefHamzaBelow = postscript("absAlefHamzaBelow") { diaB = point(100m, -495m); diaA = point(120m, 1100m) }; absAlef = postscript("absAlef") { above = point(148m, 1039m); below = point(148m, -56m); diaA = point(120m, 1100m); diaB = point(100m, -180m) }; absAlefWavyHamzaAbove = postscript("absAlefWavyHamzaAbove") { diaB = point(100m, -180m); diaA = point(120m, 1455m) }; absAlefWavyHamzaBelow = postscript("absAlefWavyHamzaBelow") { diaB = point(100m, -500m); diaA = point(120m, 1100m) }; absHighHamzaAlef = postscript("absHighHamzaAlef") { diaB = point(100m, -180m); diaA = point(90m, 1215m) }; absAlefWasla = postscript("absAlefWasla") { diaB = point(100m, -180m); diaA = point(135m, 1370m) }; absWawHamzaAbove = postscript("absWawHamzaAbove") { diaB = point(250m, -600m); diaA = point(332m, 988m); alef = point(141m, 740m) }; absWaw = postscript("absWaw") { above = point(384m, 497m); below = point(384m, -461m); ring = point(246m, -67m); through = point(383m, -129m); center = point(383m, -129m); diaA = point(363m, 691m); diaB = point(250m, -600m); alef = point(133m, 615m) }; absHighHamzaWaw = postscript("absHighHamzaWaw") { diaB = point(250m, -600m); diaA = point(225m, 900m); alef = point(133m, 615m) }; absUHamzaAbove = postscript("absUHamzaAbove") { diaB = point(250m, -600m); diaA = point(258m, 1078m); alef = point(101m, 953m) }; absWawRing = postscript("absWawRing") { diaB = point(250m, -600m); diaA = point(363m, 691m); alef = point(133m, 615m) }; absKirghizOe = postscript("absKirghizOe") { diaB = point(250m, -600m); diaA = point(359m, 691m); alef = point(133m, 615m) }; absOe = postscript("absOe") { diaB = point(250m, -600m); diaA = point(355m, 1035m); alef = point(125m, 941m) }; absU = postscript("absU") { diaB = point(250m, -600m); diaA = point(363m, 1059m); alef = point(125m, 865m) }; absYu = postscript("absYu") { diaB = point(250m, -600m); diaA = point(348m, 1039m); alef = point(137m, 756m) }; absKirghizYu = postscript("absKirghizYu") { diaB = point(250m, -600m); diaA = point(355m, 1031m); alef = point(129m, 796m) }; absWawTwoDotsAbove = postscript("absWawTwoDotsAbove") { diaB = point(250m, -600m); diaA = point(355m, 1035m); alef = point(133m, 804m) }; absVe = postscript("absVe") { diaB = point(250m, -600m); diaA = point(359m, 1129m); alef = point(129m, 865m) }; absWawDotAbove = postscript("absWawDotAbove") { diaB = point(250m, -600m); diaA = point(359m, 1035m); alef = point(121m, 800m) }; absWawDotBelow = postscript("absWawDotBelow") { diaB = point(338m, -795m); diaA = point(359m, 687m); alef = point(133m, 615m) }; absDal = postscript("absDal") { above = point(313m, 646m); below = point(313m, -58m); ring = point(336m, 59m); diaA = point(266m, 859m); diaB = point(250m, -180m); alef = point(121m, 800m) }; absThal = postscript("absThal") { diaB = point(250m, -180m); diaA = point(258m, 1094m); alef = point(113m, 961m) }; absDdal = postscript("absDdal") { diaB = point(250m, -180m); diaA = point(234m, 1363m); alef = point(88m, 977m) }; absDalRing = postscript("absDalRing") { diaB = point(250m, -400m); diaA = point(262m, 848m); alef = point(121m, 800m) }; absDalDotBelow = postscript("absDalDotBelow") { diaB = point(250m, -450m); diaA = point(262m, 852m); alef = point(121m, 800m) }; absDalDotBelowSmallTah = postscript("absDalDotBelowSmallTah") { diaB = point(250m, -450m); diaA = point(234m, 1379m); alef = point(88m, 989m) }; absDahal = postscript("absDahal") { diaB = point(250m, -180m); diaA = point(258m, 1176m); alef = point(121m, 1045m) }; absDdahal = postscript("absDdahal") { diaB = point(250m, -450m); diaA = point(258m, 855m); alef = point(121m, 800m) }; absDul = postscript("absDul") { diaB = point(250m, -180m); diaA = point(258m, 1211m); alef = point(113m, 1082m) }; absDalThreeDotsAboveDownwards = postscript("absDalThreeDotsAboveDownwards") { diaB = point(250m, -180m); diaA = point(258m, 1203m); alef = point(117m, 1130m) }; absDalFourDotsAbove = postscript("absDalFourDotsAbove") { diaB = point(250m, -180m); diaA = point(262m, 1199m); alef = point(113m, 1130m) }; absDalHat = postscript("absDalHat") { diaB = point(250m, -180m); diaA = point(266m, 1094m); alef = point(109m, 1017m) }; absDalTwoVertBelowSmallTah = postscript("absDalTwoVertBelowSmallTah") { diaB = point(261m, -564m); diaA = point(234m, 1348m); alef = point(101m, 989m) }; absDalInvSmallVBelow = postscript("absDalInvSmallVBelow") { diaB = point(261m, -500m); diaA = point(256m, 863m); alef = point(121m, 800m) }; absReh = postscript("absReh") { above = point(375m, 394m); below = point(375m, -401m); ring = point(365m, -226m); center = point(176m, 64m); through = point(332m, -113m); diaA = point(224m, 750m); diaB = point(150m, -530m); alef = point(117m, 684m) }; absZain = postscript("absZain") { diaB = point(150m, -530m); diaA = point(210m, 840m); alef = point(117m, 772m) }; absRreh = postscript("absRreh") { diaB = point(150m, -530m); diaA = point(210m, 1200m); alef = point(121m, 744m) }; absRehSmallV = postscript("absRehSmallV") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(117m, 836m) }; absRehRing = postscript("absRehRing") { diaB = point(175m, -628m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehDotBelow = postscript("absRehDotBelow") { diaB = point(200m, -700m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehSmallVBelow = postscript("absRehSmallVBelow") { diaB = point(222m, -837m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehDotBelowDotAbove = postscript("absRehDotBelowDotAbove") { diaB = point(200m, -700m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absRehTwoDotsAbove = postscript("absRehTwoDotsAbove") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(109m, 848m) }; absJeh = postscript("absJeh") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(109m, 889m) }; absRehFourDotsAbove = postscript("absRehFourDotsAbove") { diaB = point(150m, -530m); diaA = point(210m, 1000m); alef = point(105m, 901m) }; absRehTwoVertAbove = postscript("absRehTwoVertAbove") { diaB = point(150m, -530m); diaA = point(280m, 1020m); alef = point(113m, 881m) }; absRehHamzaAbove = postscript("absRehHamzaAbove") { diaB = point(150m, -530m); diaA = point(280m, 960m); alef = point(121m, 796m) }; absJehRetro1 = postscript("absJehRetro1") { diaB = point(150m, -530m); diaA = point(231m, 1320m); alef = point(121m, 945m) }; absJehRetro2 = postscript("absJehRetro2") { diaB = point(150m, -530m); diaA = point(192m, 1487m); alef = point(113m, 1130m) }; absJeh__dotHat = postscript("absJeh.dotHat") { diaB = point(150m, -530m); diaA = point(226m, 1115m); alef = point(121m, 933m) }; absRehHat = postscript("absRehHat") { diaB = point(150m, -530m); diaA = point(255m, 870m); alef = point(109m, 796m) }; absRehBar = postscript("absRehBar") { diaB = point(150m, -530m); diaA = point(224m, 750m); alef = point(117m, 684m) }; absYehBarree = postscript("absYehBarree") { above = point(394m, 498m); below = point(745m, -306m); diaA = point(345m, 645m); diaB = point(500m, -400m) }; absYehBarreeHamzaAbove = postscript("absYehBarreeHamzaAbove") { diaB = point(500m, -400m); diaA = point(329m, 944m) }; absYehHamzaAbove = postscript("absYehHamzaAbove") { diaB = point(450m, -400m); diaA = point(359m, 1008m) }; absYeh = postscript("absYeh") { diaB = point(342m, -620m); diaA = point(325m, 709m) }; absYeh__noDots = postscript("absYeh.noDots") { above = point(410m, 512m); below = point(410m, -287m); diaA = point(329m, 705m); diaB = point(453m, -406m) }; absHighHamzaYeh = postscript("absHighHamzaYeh") { diaB = point(450m, -400m); diaA = point(179m, 692m) }; absFarsiYeh = postscript("absFarsiYeh") { diaB = point(450m, -400m); diaA = point(325m, 706m) }; absYehSmallV = postscript("absYehSmallV") { diaB = point(450m, -400m); diaA = point(402m, 1030m) }; absE = postscript("absE") { diaB = point(385m, -731m); diaA = point(420m, 705m) }; absYehThreeDotsBelow = postscript("absYehThreeDotsBelow") { diaB = point(385m, -782m); diaA = point(420m, 705m) }; absYehTail = postscript("absYehTail") { diaA = point(389m, 739m); diaB = point(400m, -400m) }; absAlefMaksura = postscript("absAlefMaksura") { diaB = point(400m, -400m); diaA = point(495m, 675m) }; absBehNoDots = postscript("absBehNoDots") { above = point(662m, 410m); below = point(657m, -98m); ring = point(636m, 12m); diaA = point(660m, 585m); diaB = point(651m, -310m); alef = point(298m, 583m) }; absBeh = postscript("absBeh") { diaB = point(645m, -427m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absTeh = postscript("absTeh") { diaB = point(651m, -310m); diaA = point(602m, 906m); alef = point(298m, 684m) }; absTheh = postscript("absTheh") { diaB = point(651m, -310m); diaA = point(598m, 1030m); alef = point(298m, 684m) }; absTteh = postscript("absTteh") { diaB = point(651m, -310m); diaA = point(581m, 1149m); alef = point(294m, 684m) }; absTteheh = postscript("absTteheh") { diaB = point(651m, -310m); diaA = point(600m, 1000m); alef = point(290m, 684m) }; absBeeh = postscript("absBeeh") { diaB = point(645m, -598m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absTehRing = postscript("absTehRing") { diaB = point(598m, -436m); diaA = point(598m, 893m); alef = point(290m, 684m) }; absTehThreeDotsAboveDownwards = postscript("absTehThreeDotsAboveDownwards") { diaB = point(651m, -310m); diaA = point(600m, 1000m); alef = point(290m, 684m) }; absPeh = postscript("absPeh") { diaB = point(654m, -628m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absTeheh = postscript("absTeheh") { diaB = point(651m, -310m); diaA = point(600m, 1000m); alef = point(290m, 684m) }; absBeheh = postscript("absBeheh") { diaB = point(637m, -645m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehThreeDotsHorizBelow = postscript("absBehThreeDotsHorizBelow") { diaB = point(628m, -474m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehThreeDotsAboveDotBelow = postscript("absBehThreeDotsAboveDotBelow") { diaB = point(641m, -461m); diaA = point(607m, 1021m); alef = point(290m, 684m) }; absBehThreeDotsUpwardBelow = postscript("absBehThreeDotsUpwardBelow") { diaB = point(624m, -628m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehTwoDotsAboveThreeDotsUpwardBelow = postscript("absBehTwoDotsAboveThreeDotsUpwardBelow") { diaB = point(624m, -624m); diaA = point(620m, 863m); alef = point(290m, 684m) }; absBehDotAboveTwoDotsBelow = postscript("absBehDotAboveTwoDotsBelow") { diaB = point(624m, -487m); diaA = point(624m, 863m); alef = point(290m, 684m) }; absBehInvSmallVBelow = postscript("absBehInvSmallVBelow") { diaB = point(620m, -521m); diaA = point(660m, 585m); alef = point(298m, 583m) }; absBehSmallVAbove = postscript("absBehSmallVAbove") { diaB = point(651m, -310m); diaA = point(658m, 914m); alef = point(290m, 684m) }; absJeem = postscript("absJeem") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absHah = postscript("absHah") { above = point(525m, 443m); center = point(526m, -200m); diaA = point(400m, 750m); diaB = point(400m, -825m); alef = point(201m, 684m) }; absKhah = postscript("absKhah") { diaB = point(400m, -825m); diaA = point(400m, 900m); alef = point(201m, 684m) }; absHahHamzaAbove = postscript("absHahHamzaAbove") { diaB = point(400m, -825m); diaA = point(400m, 950m); alef = point(201m, 684m) }; absHahTwoDotsVerticalAbove = postscript("absHahTwoDotsVerticalAbove") { diaB = point(400m, -825m); diaA = point(400m, 1020m); alef = point(201m, 800m) }; absNyeh = postscript("absNyeh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absDyeh = postscript("absDyeh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absHahThreeDotsAbove = postscript("absHahThreeDotsAbove") { diaB = point(400m, -825m); diaA = point(400m, 1100m); alef = point(201m, 800m) }; absTcheh = postscript("absTcheh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absTcheheh = postscript("absTcheheh") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absTchehDotAbove = postscript("absTchehDotAbove") { diaB = point(400m, -825m); diaA = point(400m, 900m); alef = point(201m, 684m) }; absTchehRetro1 = postscript("absTchehRetro1") { diaB = point(400m, -825m); diaA = point(393m, 1192m); alef = point(197m, 788m) }; absTchehRetro2 = postscript("absTchehRetro2") { diaB = point(400m, -825m); diaA = point(480m, 660m); alef = point(201m, 684m) }; absJeemRetro1 = postscript("absJeemRetro1") { diaB = point(400m, -825m); diaA = point(480m, 660m); alef = point(201m, 684m) }; absJeemRetro2 = postscript("absJeemRetro2") { diaB = point(400m, -825m); diaA = point(402m, 1196m); alef = point(205m, 788m) }; absJeemRetro3 = postscript("absJeemRetro3") { diaB = point(400m, -825m); diaA = point(402m, 1192m); alef = point(201m, 780m) }; absHahTwoDotsAbove = postscript("absHahTwoDotsAbove") { diaB = point(400m, -825m); diaA = point(436m, 970m); alef = point(201m, 800m) }; absHahThreeDotsUpwardBelow = postscript("absHahThreeDotsUpwardBelow") { diaB = point(400m, -825m); diaA = point(400m, 750m); alef = point(201m, 684m) }; absSeen = postscript("absSeen") { above = point(927m, 449m); below = point(1004m, -23m); diaA = point(400m, 450m); diaB = point(300m, -600m) }; absSheen = postscript("absSheen") { diaB = point(300m, -600m); diaA = point(355m, 555m) }; absSeenDotBelowDotAbove = postscript("absSeenDotBelowDotAbove") { diaB = point(300m, -600m); diaA = point(400m, 450m) }; absSeenThreeDotsBelow = postscript("absSeenThreeDotsBelow") { diaB = point(300m, -600m); diaA = point(400m, 450m) }; absSeenThreeDotsBelowThreeDotsAbove = postscript("absSeenThreeDotsBelowThreeDotsAbove") { diaB = point(300m, -600m); diaA = point(359m, 551m) }; absSheenDotBelow = postscript("absSheenDotBelow") { diaB = point(300m, -600m); diaA = point(363m, 551m) }; absSheenRetro1 = postscript("absSheenRetro1") { diaB = point(300m, -600m); diaA = point(325m, 996m) }; absSheenRetro2 = postscript("absSheenRetro2") { diaB = point(300m, -600m); diaA = point(312m, 825m) }; absSeenFourDotsAbove = postscript("absSeenFourDotsAbove") { diaB = point(300m, -600m); diaA = point(316m, 611m) }; absSeenTwoVertAbove = postscript("absSeenTwoVertAbove") { diaB = point(300m, -600m); diaA = point(316m, 632m) }; absSad = postscript("absSad") { above = point(972m, 446m); below = point(1085m, -90m); diaA = point(397m, 496m); diaB = point(300m, -600m) }; absDad = postscript("absDad") { diaB = point(300m, -600m); diaA = point(400m, 500m) }; absSadTwoDotsBelow = postscript("absSadTwoDotsBelow") { diaB = point(300m, -600m); diaA = point(400m, 500m) }; absSadThreeDotsAbove = postscript("absSadThreeDotsAbove") { diaB = point(300m, -600m); diaA = point(400m, 600m) }; absDadDotBelow = postscript("absDadDotBelow") { diaB = point(300m, -600m); diaA = point(393m, 500m) }; absTah = postscript("absTah") { above = point(759m, 571m); below = point(524m, -48m); diaA = point(389m, 1231m); diaB = point(500m, -180m); alef = point(201m, 684m) }; absZah = postscript("absZah") { diaB = point(500m, -180m); diaA = point(389m, 1231m); alef = point(201m, 684m) }; absTahThreeDotsAbove = postscript("absTahThreeDotsAbove") { diaB = point(500m, -180m); diaA = point(389m, 1235m); alef = point(201m, 684m) }; absAin = postscript("absAin") { above = point(294m, 691m); below = point(455m, 103m); diaA = point(270m, 900m); diaB = point(300m, -840m) }; absGhain = postscript("absGhain") { diaB = point(300m, -840m); diaA = point(270m, 1100m) }; absAinThreeDotsAbove = postscript("absAinThreeDotsAbove") { diaB = point(300m, -840m); diaA = point(222m, 1282m) }; absGhainDotBelow = postscript("absGhainDotBelow") { diaB = point(300m, -840m); diaA = point(261m, 1107m) }; absAinTwoDotsAbove = postscript("absAinTwoDotsAbove") { diaB = point(300m, -840m); diaA = point(256m, 1115m) }; absAinThreeDotsDownAbove = postscript("absAinThreeDotsDownAbove") { diaB = point(300m, -840m); diaA = point(252m, 1273m) }; absAinTwoDotsVertAbove = postscript("absAinTwoDotsVertAbove") { diaB = point(300m, -840m); diaA = point(252m, 1290m) }; absFeh = postscript("absFeh") { diaB = point(600m, -210m); diaA = point(479m, 917m); alef = point(342m, 740m) }; absDotlessFeh = postscript("absDotlessFeh") { above = point(1162m, 785m); below = point(1104m, -6m); diaA = point(480m, 900m); diaB = point(600m, -210m); alef = point(342m, 740m) }; absFehDotMovedBelow = postscript("absFehDotMovedBelow") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absFehDotBelow = postscript("absFehDotBelow") { diaB = point(602m, -209m); diaA = point(479m, 921m); alef = point(342m, 740m) }; absVeh = postscript("absVeh") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absFehThreeDotsBelow = postscript("absFehThreeDotsBelow") { diaB = point(581m, -329m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absPeheh = postscript("absPeheh") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absFehTwoDotsBelow = postscript("absFehTwoDotsBelow") { diaB = point(600m, -210m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absFehThreeDotsUpwardBelow = postscript("absFehThreeDotsUpwardBelow") { diaB = point(594m, -252m); diaA = point(480m, 900m); alef = point(342m, 740m) }; absQafNoDots = postscript("absQafNoDots") { above = point(762m, 717m); below = point(762m, -166m); diaA = point(405m, 795m); diaB = point(400m, -300m) }; absQaf = postscript("absQaf") { diaB = point(400m, -300m); diaA = point(330m, 1020m) }; absQafDotAbove = postscript("absQafDotAbove") { diaB = point(400m, -300m); diaA = point(330m, 1020m) }; absQafThreeDotsAbove = postscript("absQafThreeDotsAbove") { diaB = point(400m, -300m); diaA = point(330m, 1020m) }; absKaf = postscript("absKaf") { above = point(662m, 1136m); below = point(662m, -65m); diaA = point(315m, 1155m); diaB = point(400m, -210m); alef = point(161m, 961m) }; absKafDotAbove = postscript("absKafDotAbove") { diaB = point(400m, -210m); diaA = point(303m, 1141m); alef = point(161m, 961m) }; absNg = postscript("absNg") { diaB = point(400m, -210m); diaA = point(256m, 1372m); alef = point(161m, 961m) }; absKafThreeDotsBelow = postscript("absKafThreeDotsBelow") { diaB = point(414m, -513m); diaA = point(315m, 1100m); alef = point(161m, 961m) }; absKeheh = postscript("absKeheh") { above = point(805m, 691m); below = point(811m, -185m); ring = point(1212m, 752m); diaA = point(510m, 800m); diaB = point(585m, -299m); alef = point(241m, 684m) }; absKafRing = postscript("absKafRing") { diaB = point(585m, -299m); diaA = point(510m, 800m); alef = point(241m, 684m) }; absGaf = postscript("absGaf") { diaB = point(585m, -299m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absGafRing = postscript("absGafRing") { diaB = point(585m, -299m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absNgoeh = postscript("absNgoeh") { diaB = point(585m, -299m); diaA = point(330m, 1200m); alef = point(241m, 684m) }; absGafTwoDotsBelow = postscript("absGafTwoDotsBelow") { diaB = point(400m, -400m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absGueh = postscript("absGueh") { diaB = point(400m, -400m); diaA = point(457m, 795m); alef = point(241m, 684m) }; absGafThreeDotsAbove = postscript("absGafThreeDotsAbove") { diaB = point(585m, -299m); diaA = point(315m, 1200m); alef = point(241m, 684m) }; absKehehDotAbove = postscript("absKehehDotAbove") { diaB = point(581m, -299m); diaA = point(436m, 906m); alef = point(241m, 684m) }; absKehehThreeDotsAbove = postscript("absKehehThreeDotsAbove") { diaB = point(585m, -299m); diaA = point(389m, 961m); alef = point(241m, 684m) }; absKehehThreeDotsUpwardBelow = postscript("absKehehThreeDotsUpwardBelow") { diaB = point(346m, -406m); diaA = point(510m, 800m); alef = point(241m, 684m) }; absSwashKaf = postscript("absSwashKaf") { diaA = point(390m, 1000m); diaB = point(600m, -210m) }; absLam = postscript("absLam") { above = point(597m, 1143m); below = point(668m, -236m); through = point(648m, 691m); diaA = point(300m, 900m); diaB = point(400m, -330m); alef = point(460m, 800m) }; absLamSmallV = postscript("absLamSmallV") { diaB = point(400m, -330m); diaA = point(538m, 1572m); alef = point(460m, 700m) }; absLamDotAbove = postscript("absLamDotAbove") { diaB = point(400m, -330m); diaA = point(453m, 1470m); alef = point(460m, 650m) }; absLamThreeDotsAbove = postscript("absLamThreeDotsAbove") { diaB = point(400m, -330m); diaA = point(390m, 1620m); alef = point(460m, 650m) }; absLamThreeDotsBelow = postscript("absLamThreeDotsBelow") { diaB = point(250m, -500m); diaA = point(315m, 900m); alef = point(460m, 800m) }; absLamRetro = postscript("absLamRetro") { diaB = point(400m, -330m); diaA = point(436m, 1769m); alef = point(460m, 540m) }; absLamBar = postscript("absLamBar") { diaB = point(400m, -330m); diaA = point(300m, 1140m); alef = point(460m, 915m) }; absMeem = postscript("absMeem") { above = point(297m, 546m); below = point(339m, 73m); diaA = point(192m, 837m); diaB = point(165m, -660m) }; absMeem__sindhi = postscript("absMeem.sindhi") { above = point(600m, 552m); below = point(600m, -100m); diaA = point(500m, 700m); diaB = point(400m, -200m) }; absMeemDotAbove = postscript("absMeemDotAbove") { diaB = point(165m, -660m); diaA = point(188m, 1034m) }; absMeemDotBelow = postscript("absMeemDotBelow") { diaB = point(165m, -660m); diaA = point(188m, 850m) }; absNoon = postscript("absNoon") { diaB = point(400m, -210m); diaA = point(251m, 999m) }; absNoonDotBelow = postscript("absNoonDotBelow") { diaB = point(406m, -487m); diaA = point(299m, 999m) }; absNoonGhunna = postscript("absNoonGhunna") { above = point(407m, 591m); below = point(426m, -136m); ring = point(437m, -13m); diaA = point(300m, 870m); diaB = point(400m, -210m) }; absRnoon = postscript("absRnoon") { diaB = point(400m, -210m); diaA = point(270m, 1365m); alef = point(161m, 924m) }; absNoonRing = postscript("absNoonRing") { diaB = point(397m, -397m); diaA = point(299m, 999m) }; absNoonThreeDotsAbove = postscript("absNoonThreeDotsAbove") { diaB = point(400m, -210m); diaA = point(285m, 1245m) }; absNoonTwoDotsBelow = postscript("absNoonTwoDotsBelow") { diaB = point(400m, -500m); diaA = point(299m, 999m) }; absNoonRetro = postscript("absNoonRetro") { diaB = point(350m, -210m); diaA = point(286m, 1478m); alef = point(161m, 1188m) }; absNoonSmallV = postscript("absNoonSmallV") { diaB = point(350m, -210m); diaA = point(360m, 1275m) }; absHehDoachashmee = postscript("absHehDoachashmee") { above = point(347m, 652m); below = point(347m, -17m); diaA = point(360m, 855m); diaB = point(300m, -195m) }; absHehHat = postscript("absHehHat") { diaB = point(340m, -195m); diaA = point(330m, 1070m) }; absHeh = postscript("absHeh") { diaB = point(200m, -180m); diaA = point(261m, 769m) }; absHeh__knotted = postscript("absHeh.knotted") { diaB = point(300m, -195m); diaA = point(360m, 855m) }; absAe = postscript("absAe") { above = point(256m, 560m); below = point(256m, -60m); diaA = point(261m, 769m); diaB = point(200m, -180m) }; absTehMarbuta = postscript("absTehMarbuta") { diaB = point(200m, -180m); diaA = point(210m, 1000m) }; absHehYehAbove = postscript("absHehYehAbove") { diaB = point(200m, -180m); diaA = point(209m, 1128m) }; absHehGoal = postscript("absHehGoal") { diaB = point(200m, -195m); diaA = point(261m, 769m) }; absHehGoalHamzaAbove = postscript("absHehGoalHamzaAbove") { diaB = point(200m, -180m); diaA = point(218m, 1132m) }; absTehMarbutaGoal = postscript("absTehMarbutaGoal") { diaB = point(200m, -180m); diaA = point(210m, 1000m) }; absHamza = postscript("absHamza") { above = point(260m, 472m); below = point(265m, -155m); diaA = point(210m, 540m); diaB = point(210m, -180m) }; absSignSindhiAmpers = postscript("absSignSindhiAmpers") { diaB = point(244m, -649m); diaA = point(210m, 540m) }; absSignSindhiPostpositionMen = postscript("absSignSindhiPostpositionMen") { diaA = point(500m, 700m); diaB = point(512m, -547m) }; absTatweel = postscript("absTatweel") { diaA = point(150m, 790m); diaB = point(111m, -188m) }; absLamAlef = postscript("absLamAlef") { above = point(691m, 1195m); below = point(651m, -58m); through = point(703m, 777m); above2 = point(46m, 1185m); below2 = point(446m, -57m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaA1 = point(714m, 1278m); diaA2 = point(0m, 1218m); diaB1 = point(600m, -100m); diaB2 = point(420m, -100m); alef1 = point(600m, 825m); alef2 = point(0m, 1155m) }; absLamSmallVAlef = postscript("absLamSmallVAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(600m, 825m); diaB2 = point(420m, -100m); diaA1 = point(667m, 1594m) }; absLamDotAboveAlef = postscript("absLamDotAboveAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(600m, 825m); diaB2 = point(420m, -100m); diaA1 = point(658m, 1560m) }; absLamThreeDotsAboveAlef = postscript("absLamThreeDotsAboveAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(600m, 825m); diaB2 = point(420m, -100m); diaA1 = point(615m, 1722m) }; absLamThreeDotsBelowAlef = postscript("absLamThreeDotsBelowAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(628m, -555m); dia2B2 = point(256m, -145m); diaB1 = point(628m, -555m); alef1 = point(600m, 825m); diaB2 = point(256m, -145m); diaA1 = point(714m, 1278m) }; absLamRetroAlef = postscript("absLamRetroAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(480m, 1455m); diaB2 = point(420m, -100m); diaA1 = point(585m, 1786m) }; absLamBarAlef = postscript("absLamBarAlef") { alef2 = point(0m, 1155m); diaA2 = point(0m, 1218m); dia2B1 = point(600m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(600m, -100m); alef1 = point(540m, 930m); diaB2 = point(420m, -100m); diaA1 = point(714m, 1278m) }; absAlefMaddaAboveFin = postscript("absAlefMaddaAboveFin") { diaB = point(179m, -179m); diaA = point(100m, 1395m) }; absAlefHamzaAboveFin = postscript("absAlefHamzaAboveFin") { diaB = point(179m, -179m); diaA = point(90m, 1445m) }; absAlefHamzaBelowFin = postscript("absAlefHamzaBelowFin") { diaB = point(192m, -491m); diaA = point(100m, 1175m) }; absAlefFin = postscript("absAlefFin") { above = point(136m, 1043m); below = point(227m, -50m); diaA = point(105m, 1175m); diaB = point(179m, -179m) }; absAlefWavyHamzaAboveFin = postscript("absAlefWavyHamzaAboveFin") { diaB = point(179m, -179m); diaA = point(60m, 1485m) }; absAlefWavyHamzaBelowFin = postscript("absAlefWavyHamzaBelowFin") { diaB = point(158m, -513m); diaA = point(75m, 1185m) }; absHighHamzaAlefFin = postscript("absHighHamzaAlefFin") { diaB = point(179m, -179m); diaA = point(105m, 1365m) }; absAlefWaslaFin = postscript("absAlefWaslaFin") { diaB = point(179m, -179m); diaA = point(135m, 1370m) }; absWawHamzaAboveFin = postscript("absWawHamzaAboveFin") { diaB = point(250m, -600m); diaA = point(312m, 880m); alef = point(141m, 684m) }; absWawFin = postscript("absWawFin") { above = point(375m, 397m); below = point(375m, -457m); ring = point(231m, -42m); through = point(383m, -156m); diaA = point(308m, 684m); diaB = point(250m, -600m); center = point(383m, -154m); alef = point(141m, 684m) }; absHighHamzaWawFin = postscript("absHighHamzaWawFin") { diaB = point(250m, -600m); diaA = point(269m, 910m); alef = point(141m, 684m) }; absUHamzaAboveFin = postscript("absUHamzaAboveFin") { diaB = point(250m, -600m); diaA = point(225m, 1000m) }; absWawRingFin = postscript("absWawRingFin") { diaB = point(250m, -600m); diaA = point(308m, 684m); alef = point(141m, 684m) }; absKirghizOeFin = postscript("absKirghizOeFin") { diaB = point(250m, -600m); diaA = point(308m, 684m); alef = point(141m, 684m) }; absOeFin = postscript("absOeFin") { diaB = point(250m, -600m); diaA = point(308m, 923m); alef = point(137m, 816m) }; absUFin = postscript("absUFin") { diaB = point(250m, -600m); diaA = point(303m, 1038m); alef = point(141m, 684m) }; absYuFin = postscript("absYuFin") { diaB = point(250m, -600m); diaA = point(303m, 978m); alef = point(141m, 684m) }; absKirghizYuFin = postscript("absKirghizYuFin") { diaB = point(250m, -600m); diaA = point(308m, 966m); alef = point(141m, 780m) }; absWawTwoDotsAboveFin = postscript("absWawTwoDotsAboveFin") { diaB = point(250m, -600m); diaA = point(308m, 936m); alef = point(141m, 736m) }; absVeFin = postscript("absVeFin") { diaB = point(250m, -600m); diaA = point(308m, 1008m); alef = point(137m, 764m) }; absWawDotAboveFin = postscript("absWawDotAboveFin") { diaB = point(250m, -600m); diaA = point(303m, 936m); alef = point(141m, 684m) }; absWawDotBelowFin = postscript("absWawDotBelowFin") { diaB = point(359m, -765m); diaA = point(303m, 684m); alef = point(141m, 684m) }; absDalFin = postscript("absDalFin") { above = point(468m, 814m); below = point(417m, -50m); ring = point(315m, 91m); diaA = point(256m, 1000m); diaB = point(300m, -180m); alef = point(141m, 684m) }; absThalFin = postscript("absThalFin") { diaB = point(300m, -180m); diaA = point(256m, 1196m); alef = point(137m, 861m) }; absDdalFin = postscript("absDdalFin") { diaB = point(300m, -180m); diaA = point(295m, 1500m); alef = point(157m, 1154m) }; absDalRingFin = postscript("absDalRingFin") { diaB = point(300m, -400m); diaA = point(256m, 1000m); alef = point(141m, 684m) }; absDalDotBelowFin = postscript("absDalDotBelowFin") { diaB = point(376m, -402m); diaA = point(256m, 1000m); alef = point(141m, 684m) }; absDalDotBelowSmallTahFin = postscript("absDalDotBelowSmallTahFin") { diaB = point(380m, -410m); diaA = point(295m, 1500m); alef = point(145m, 1154m) }; absDahalFin = postscript("absDahalFin") { diaB = point(300m, -180m); diaA = point(256m, 1260m); alef = point(137m, 921m) }; absDdahalFin = postscript("absDdahalFin") { diaB = point(355m, -419m); diaA = point(256m, 1000m); alef = point(141m, 684m) }; absDulFin = postscript("absDulFin") { diaB = point(300m, -180m); diaA = point(256m, 1303m); alef = point(133m, 945m) }; absDalThreeDotsAboveDownwardsFin = postscript("absDalThreeDotsAboveDownwardsFin") { diaB = point(300m, -180m); diaA = point(225m, 1330m); alef = point(121m, 941m) }; absDalFourDotsAboveFin = postscript("absDalFourDotsAboveFin") { diaB = point(300m, -180m); diaA = point(225m, 1300m); alef = point(145m, 929m) }; absDalHatFin = postscript("absDalHatFin") { diaB = point(300m, -180m); diaA = point(359m, 1256m); alef = point(141m, 921m) }; absDalTwoVertBelowSmallTahFin = postscript("absDalTwoVertBelowSmallTahFin") { diaB = point(385m, -560m); diaA = point(295m, 1500m); alef = point(149m, 1130m) }; absDalInvSmallVBelowFin = postscript("absDalInvSmallVBelowFin") { diaB = point(380m, -410m); diaA = point(312m, 992m); alef = point(141m, 684m) }; absRehFin = postscript("absRehFin") { above = point(349m, 242m); below = point(349m, -432m); ring = point(348m, -268m); center = point(145m, 0m); through = point(320m, -164m); diaA = point(225m, 600m); diaB = point(200m, -540m); alef = point(101m, 450m) }; absZainFin = postscript("absZainFin") { diaB = point(200m, -540m); diaA = point(244m, 799m); alef = point(101m, 450m) }; absRrehFin = postscript("absRrehFin") { diaB = point(200m, -540m); diaA = point(214m, 953m); alef = point(109m, 571m) }; absRehSmallVFin = postscript("absRehSmallVFin") { diaB = point(200m, -540m); diaA = point(248m, 855m); alef = point(97m, 623m) }; absRehRingFin = postscript("absRehRingFin") { diaB = point(248m, -701m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehDotBelowFin = postscript("absRehDotBelowFin") { diaB = point(265m, -735m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehSmallVBelowFin = postscript("absRehSmallVBelowFin") { diaB = point(261m, -816m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehDotBelowDotAboveFin = postscript("absRehDotBelowDotAboveFin") { diaB = point(278m, -756m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absRehTwoDotsAboveFin = postscript("absRehTwoDotsAboveFin") { diaB = point(200m, -540m); diaA = point(225m, 800m); alef = point(101m, 555m) }; absJehFin = postscript("absJehFin") { diaB = point(200m, -540m); diaA = point(235m, 927m); alef = point(105m, 599m) }; absRehFourDotsAboveFin = postscript("absRehFourDotsAboveFin") { diaB = point(200m, -540m); diaA = point(235m, 923m); alef = point(101m, 659m) }; absRehTwoVertAboveFin = postscript("absRehTwoVertAboveFin") { diaB = point(200m, -540m); diaA = point(261m, 889m); alef = point(109m, 603m) }; absRehHamzaAboveFin = postscript("absRehHamzaAboveFin") { diaB = point(200m, -540m); diaA = point(239m, 859m); alef = point(97m, 507m) }; absJehRetro1Fin = postscript("absJehRetro1Fin") { diaB = point(200m, -540m); diaA = point(218m, 1171m); alef = point(109m, 780m) }; absJehRetro2Fin = postscript("absJehRetro2Fin") { diaB = point(200m, -540m); diaA = point(179m, 1346m); alef = point(101m, 981m) }; absJehFin__dotHat = postscript("absJehFin.dotHat") { diaB = point(201m, -538m); diaA = point(239m, 1021m); alef = point(97m, 684m) }; absRehHatFin = postscript("absRehHatFin") { diaB = point(200m, -540m); diaA = point(244m, 812m); alef = point(105m, 515m) }; absRehBarFin = postscript("absRehBarFin") { diaB = point(200m, -540m); diaA = point(225m, 600m); alef = point(101m, 450m) }; absYehBarreeFin = postscript("absYehBarreeFin") { above = point(494m, 45m); below = point(680m, -787m); diaA = point(375m, 220m); diaB = point(500m, -850m) }; absYehBarreeHamzaAboveFin = postscript("absYehBarreeHamzaAboveFin") { diaB = point(500m, -850m); diaA = point(410m, 500m) }; absYehHamzaAboveFin = postscript("absYehHamzaAboveFin") { diaB = point(450m, -650m); diaA = point(385m, 530m) }; absYehFin = postscript("absYehFin") { diaB = point(419m, -910m); diaA = point(389m, 329m) }; absYehFin__noDots = postscript("absYehFin.noDots") { above = point(458m, 65m); below = point(446m, -594m); diaA = point(389m, 329m); diaB = point(453m, -654m) }; absHighHamzaYehFin = postscript("absHighHamzaYehFin") { diaB = point(450m, -650m); diaA = point(261m, 329m) }; absFarsiYehFin = postscript("absFarsiYehFin") { diaB = point(450m, -650m); diaA = point(389m, 329m) }; absYehSmallVFin = postscript("absYehSmallVFin") { diaB = point(450m, -650m); diaA = point(406m, 564m) }; absEFin = postscript("absEFin") { diaB = point(427m, -1047m); diaA = point(389m, 329m) }; absYehThreeDotsBelowFin = postscript("absYehThreeDotsBelowFin") { diaB = point(444m, -1094m); diaA = point(389m, 329m) }; absYehTailFin = postscript("absYehTailFin") { diaA = point(389m, 329m); diaB = point(400m, -650m) }; absAlefMaksuraFin = postscript("absAlefMaksuraFin") { diaB = point(450m, -650m); diaA = point(389m, 329m) }; absBehNoDotsFin = postscript("absBehNoDotsFin") { above = point(649m, 300m); below = point(581m, -132m); ring = point(588m, -30m); diaA = point(660m, 585m); diaB = point(659m, -310m); alef = point(302m, 583m) }; absBehFin = postscript("absBehFin") { diaB = point(560m, -496m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absTehFin = postscript("absTehFin") { diaB = point(659m, -310m); diaA = point(632m, 820m); alef = point(302m, 583m) }; absThehFin = postscript("absThehFin") { diaB = point(659m, -310m); diaA = point(615m, 953m); alef = point(302m, 583m) }; absTtehFin = postscript("absTtehFin") { diaB = point(659m, -310m); diaA = point(551m, 1030m); alef = point(302m, 583m) }; absTtehehFin = postscript("absTtehehFin") { diaB = point(659m, -310m); diaA = point(632m, 931m); alef = point(302m, 583m) }; absBeehFin = postscript("absBeehFin") { diaB = point(568m, -620m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absTehRingFin = postscript("absTehRingFin") { diaB = point(534m, -449m); diaA = point(632m, 833m); alef = point(302m, 583m) }; absTehThreeDotsAboveDownwardsFin = postscript("absTehThreeDotsAboveDownwardsFin") { diaB = point(659m, -310m); diaA = point(628m, 970m); alef = point(302m, 583m) }; absPehFin = postscript("absPehFin") { diaB = point(568m, -675m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absTehehFin = postscript("absTehehFin") { diaB = point(659m, -310m); diaA = point(624m, 953m); alef = point(302m, 583m) }; absBehehFin = postscript("absBehehFin") { diaB = point(555m, -675m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absBehThreeDotsHorizBelowFin = postscript("absBehThreeDotsHorizBelowFin") { diaB = point(547m, -461m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absBehThreeDotsAboveDotBelowFin = postscript("absBehThreeDotsAboveDotBelowFin") { diaB = point(547m, -474m); diaA = point(607m, 927m); alef = point(302m, 583m) }; absBehThreeDotsUpwardBelowFin = postscript("absBehThreeDotsUpwardBelowFin") { diaB = point(538m, -662m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absBehTwoDotsAboveThreeDotsUpwardBelowFin = postscript("absBehTwoDotsAboveThreeDotsUpwardBelowFin") { diaB = point(530m, -662m); diaA = point(632m, 833m); alef = point(302m, 583m) }; absBehDotAboveTwoDotsBelowFin = postscript("absBehDotAboveTwoDotsBelowFin") { diaB = point(551m, -521m); diaA = point(632m, 808m); alef = point(302m, 583m) }; absBehInvSmallVBelowFin = postscript("absBehInvSmallVBelowFin") { diaB = point(547m, -521m); diaA = point(660m, 585m); alef = point(302m, 583m) }; absBehSmallVAboveFin = postscript("absBehSmallVAboveFin") { diaB = point(659m, -310m); diaA = point(641m, 833m); alef = point(302m, 583m) }; absJeemFin = postscript("absJeemFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahFin = postscript("absHahFin") { above = point(522m, 439m); center = point(520m, -229m); diaA = point(400m, 750m); diaB = point(400m, -840m); alef = point(149m, 684m) }; absKhahFin = postscript("absKhahFin") { diaB = point(400m, -840m); diaA = point(400m, 900m); alef = point(149m, 684m) }; absHahHamzaAboveFin = postscript("absHahHamzaAboveFin") { diaB = point(400m, -840m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absHahTwoDotsVerticalAboveFin = postscript("absHahTwoDotsVerticalAboveFin") { diaB = point(400m, -840m); diaA = point(400m, 1020m); alef = point(149m, 684m) }; absNyehFin = postscript("absNyehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absDyehFin = postscript("absDyehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahThreeDotsAboveFin = postscript("absHahThreeDotsAboveFin") { diaB = point(400m, -840m); diaA = point(427m, 1034m); alef = point(149m, 684m) }; absTchehFin = postscript("absTchehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehehFin = postscript("absTchehehFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehDotAboveFin = postscript("absTchehDotAboveFin") { diaB = point(400m, -840m); diaA = point(400m, 900m); alef = point(149m, 684m) }; absTchehRetro1Fin = postscript("absTchehRetro1Fin") { diaB = point(400m, -840m); diaA = point(402m, 1171m); alef = point(149m, 684m) }; absTchehRetro2Fin = postscript("absTchehRetro2Fin") { diaB = point(400m, -840m); diaA = point(480m, 660m); alef = point(149m, 684m) }; absJeemRetro1Fin = postscript("absJeemRetro1Fin") { diaB = point(400m, -840m); diaA = point(480m, 660m); alef = point(149m, 684m) }; absJeemRetro2Fin = postscript("absJeemRetro2Fin") { diaB = point(400m, -840m); diaA = point(397m, 1166m); alef = point(149m, 684m) }; absJeemRetro3Fin = postscript("absJeemRetro3Fin") { diaB = point(400m, -840m); diaA = point(397m, 1171m); alef = point(149m, 684m) }; absHahTwoDotsAboveFin = postscript("absHahTwoDotsAboveFin") { diaB = point(400m, -840m); diaA = point(406m, 906m); alef = point(149m, 684m) }; absHahThreeDotsUpwardBelowFin = postscript("absHahThreeDotsUpwardBelowFin") { diaB = point(400m, -840m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absSeenFin = postscript("absSeenFin") { above = point(969m, 333m); below = point(1036m, -65m); diaA = point(400m, 450m); diaB = point(338m, -602m) }; absSheenFin = postscript("absSheenFin") { diaB = point(333m, -602m); diaA = point(400m, 450m) }; absSeenDotBelowDotAboveFin = postscript("absSeenDotBelowDotAboveFin") { diaB = point(329m, -602m); diaA = point(400m, 450m) }; absSeenThreeDotsBelowFin = postscript("absSeenThreeDotsBelowFin") { diaB = point(329m, -602m); diaA = point(400m, 450m) }; absSeenThreeDotsBelowThreeDotsAboveFin = postscript("absSeenThreeDotsBelowThreeDotsAboveFin") { diaB = point(338m, -602m); diaA = point(402m, 564m) }; absSheenDotBelowFin = postscript("absSheenDotBelowFin") { diaB = point(338m, -607m); diaA = point(402m, 551m) }; absSheenRetro1Fin = postscript("absSheenRetro1Fin") { diaB = point(350m, -600m); diaA = point(375m, 975m) }; absSheenRetro2Fin = postscript("absSheenRetro2Fin") { diaB = point(350m, -600m); diaA = point(405m, 855m) }; absSeenFourDotsAboveFin = postscript("absSeenFourDotsAboveFin") { diaB = point(350m, -600m); diaA = point(376m, 564m) }; absSeenTwoVertAboveFin = postscript("absSeenTwoVertAboveFin") { diaB = point(350m, -600m); diaA = point(363m, 568m) }; absSadFin = postscript("absSadFin") { above = point(1001m, 429m); below = point(1133m, -90m); diaA = point(400m, 450m); diaB = point(300m, -600m) }; absDadFin = postscript("absDadFin") { diaB = point(300m, -600m); diaA = point(397m, 547m) }; absSadTwoDotsBelowFin = postscript("absSadTwoDotsBelowFin") { diaB = point(300m, -600m); diaA = point(400m, 450m) }; absSadThreeDotsAboveFin = postscript("absSadThreeDotsAboveFin") { diaB = point(300m, -600m); diaA = point(393m, 662m) }; absDadDotBelowFin = postscript("absDadDotBelowFin") { diaB = point(300m, -600m); diaA = point(397m, 547m) }; absTahFin = postscript("absTahFin") { above = point(743m, 562m); below = point(567m, -50m); diaA = point(390m, 1240m); diaB = point(500m, -180m); alef = point(189m, 684m) }; absZahFin = postscript("absZahFin") { diaB = point(500m, -180m); diaA = point(390m, 1240m); alef = point(189m, 684m) }; absTahThreeDotsAboveFin = postscript("absTahThreeDotsAboveFin") { diaB = point(500m, -180m); diaA = point(390m, 1240m); alef = point(189m, 684m) }; absAinFin = postscript("absAinFin") { above = point(375m, 507m); below = point(375m, 0m); diaA = point(300m, 670m); diaB = point(400m, -800m) }; absGhainFin = postscript("absGhainFin") { diaB = point(400m, -800m); diaA = point(300m, 955m) }; absAinThreeDotsAboveFin = postscript("absAinThreeDotsAboveFin") { diaB = point(400m, -800m); diaA = point(300m, 1150m) }; absGhainDotBelowFin = postscript("absGhainDotBelowFin") { diaB = point(400m, -800m); diaA = point(300m, 970m) }; absAinTwoDotsAboveFin = postscript("absAinTwoDotsAboveFin") { diaB = point(400m, -800m); diaA = point(295m, 961m) }; absAinThreeDotsDownAboveFin = postscript("absAinThreeDotsDownAboveFin") { diaB = point(400m, -800m); diaA = point(320m, 1115m) }; absAinTwoDotsVertAboveFin = postscript("absAinTwoDotsVertAboveFin") { diaB = point(400m, -800m); diaA = point(312m, 1107m) }; absFehFin = postscript("absFehFin") { diaB = point(600m, -250m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absDotlessFehFin = postscript("absDotlessFehFin") { above = point(1182m, 559m); below = point(1083m, -141m); diaA = point(496m, 684m); diaB = point(600m, -250m); alef = point(330m, 551m) }; absFehDotMovedBelowFin = postscript("absFehDotMovedBelowFin") { diaB = point(598m, -291m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absFehDotBelowFin = postscript("absFehDotBelowFin") { diaB = point(594m, -295m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absVehFin = postscript("absVehFin") { diaB = point(600m, -250m); diaA = point(496m, 773m); alef = point(330m, 551m) }; absFehThreeDotsBelowFin = postscript("absFehThreeDotsBelowFin") { diaB = point(600m, -350m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absPehehFin = postscript("absPehehFin") { diaB = point(600m, -250m); diaA = point(496m, 769m); alef = point(330m, 551m) }; absFehTwoDotsBelowFin = postscript("absFehTwoDotsBelowFin") { diaB = point(602m, -299m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absFehThreeDotsUpwardBelowFin = postscript("absFehThreeDotsUpwardBelowFin") { diaB = point(594m, -376m); diaA = point(496m, 684m); alef = point(330m, 551m) }; absQafNoDotsFin = postscript("absQafNoDotsFin") { above = point(652m, 349m); below = point(646m, -397m); diaA = point(360m, 510m); diaB = point(376m, -594m) }; absQafFin = postscript("absQafFin") { diaB = point(380m, -594m); diaA = point(248m, 684m) }; absQafDotAboveFin = postscript("absQafDotAboveFin") { diaB = point(376m, -598m); diaA = point(248m, 684m) }; absQafThreeDotsAboveFin = postscript("absQafThreeDotsAboveFin") { diaB = point(372m, -598m); diaA = point(248m, 765m) }; absKafFin = postscript("absKafFin") { above = point(1065m, 1065m); below = point(1062m, -107m); diaA = point(466m, 1034m); diaB = point(600m, -300m); alef = point(261m, 800m) }; absKafDotAboveFin = postscript("absKafDotAboveFin") { diaB = point(600m, -300m); diaA = point(466m, 1115m); alef = point(261m, 800m) }; absNgFin = postscript("absNgFin") { diaB = point(600m, -300m); diaA = point(466m, 1282m); alef = point(261m, 800m) }; absKafThreeDotsBelowFin = postscript("absKafThreeDotsBelowFin") { diaB = point(850m, -650m); diaA = point(466m, 1034m); alef = point(261m, 800m) }; absKehehFin = postscript("absKehehFin") { above = point(805m, 768m); below = point(814m, -77m); ring = point(1212m, 855m); diaA = point(510m, 800m); diaB = point(600m, -180m); alef = point(261m, 800m) }; absKafRingFin = postscript("absKafRingFin") { diaB = point(600m, -180m); diaA = point(510m, 800m); alef = point(261m, 800m) }; absGafFin = postscript("absGafFin") { diaB = point(600m, -180m); diaA = point(510m, 900m); alef = point(261m, 800m) }; absGafRingFin = postscript("absGafRingFin") { diaB = point(600m, -180m); diaA = point(510m, 900m); alef = point(261m, 800m) }; absNgoehFin = postscript("absNgoehFin") { diaB = point(600m, -180m); diaA = point(414m, 1282m); alef = point(261m, 800m) }; absGafTwoDotsBelowFin = postscript("absGafTwoDotsBelowFin") { diaB = point(607m, -402m); diaA = point(510m, 900m); alef = point(261m, 800m) }; absGuehFin = postscript("absGuehFin") { diaB = point(765m, -555m); diaA = point(510m, 900m); alef = point(261m, 800m) }; absGafThreeDotsAboveFin = postscript("absGafThreeDotsAboveFin") { diaB = point(600m, -180m); diaA = point(325m, 1282m); alef = point(261m, 800m) }; absKehehDotAboveFin = postscript("absKehehDotAboveFin") { diaB = point(600m, -180m); diaA = point(466m, 983m); alef = point(261m, 800m) }; absKehehThreeDotsAboveFin = postscript("absKehehThreeDotsAboveFin") { diaB = point(600m, -180m); diaA = point(367m, 1085m); alef = point(261m, 800m) }; absKehehThreeDotsUpwardBelowFin = postscript("absKehehThreeDotsUpwardBelowFin") { diaB = point(701m, -602m); diaA = point(510m, 800m); alef = point(261m, 800m) }; absSwashKafFin = postscript("absSwashKafFin") { diaA = point(390m, 1000m); diaB = point(600m, -180m) }; absLamFin = postscript("absLamFin") { above = point(591m, 1023m); below = point(649m, -528m); through = point(602m, 602m); diaA = point(300m, 800m); diaB = point(350m, -600m); alef = point(460m, 700m) }; absLamSmallVFin = postscript("absLamSmallVFin") { diaB = point(350m, -600m); diaA = point(526m, 1470m); alef = point(460m, 600m) }; absLamDotAboveFin = postscript("absLamDotAboveFin") { diaB = point(350m, -600m); diaA = point(508m, 1440m); alef = point(460m, 600m) }; absLamThreeDotsAboveFin = postscript("absLamThreeDotsAboveFin") { diaB = point(350m, -600m); diaA = point(440m, 1564m); alef = point(460m, 600m) }; absLamThreeDotsBelowFin = postscript("absLamThreeDotsBelowFin") { diaB = point(250m, -800m); diaA = point(330m, 800m); alef = point(460m, 700m) }; absLamRetroFin = postscript("absLamRetroFin") { diaB = point(400m, -600m); diaA = point(474m, 1662m); alef = point(460m, 400m) }; absLamBarFin = postscript("absLamBarFin") { diaB = point(400m, -600m); diaA = point(330m, 1005m); alef = point(460m, 800m) }; absMeemFin = postscript("absMeemFin") { above = point(416m, 339m); below = point(407m, -265m); diaA = point(273m, 684m); diaB = point(170m, -750m) }; absMeemFin__sindhi = postscript("absMeemFin.sindhi") { above = point(627m, 557m); below = point(649m, -168m); diaA = point(500m, 679m); diaB = point(400m, -400m) }; absMeemDotAboveFin = postscript("absMeemDotAboveFin") { diaB = point(170m, -750m); diaA = point(273m, 855m) }; absMeemDotBelowFin = postscript("absMeemDotBelowFin") { diaB = point(170m, -750m); diaA = point(273m, 684m) }; absNoonFin = postscript("absNoonFin") { diaB = point(400m, -600m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonDotBelowFin = postscript("absNoonDotBelowFin") { diaB = point(450m, -900m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonGhunnaFin = postscript("absNoonGhunnaFin") { above = point(420m, 125m); below = point(410m, -549m); ring = point(397m, -424m); diaA = point(346m, 491m); diaB = point(400m, -600m); alef = point(225m, 499m) }; absRnoonFin = postscript("absRnoonFin") { diaB = point(400m, -600m); diaA = point(299m, 833m); alef = point(181m, 474m) }; absNoonRingFin = postscript("absNoonRingFin") { diaB = point(400m, -800m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonThreeDotsAboveFin = postscript("absNoonThreeDotsAboveFin") { diaB = point(400m, -600m); diaA = point(333m, 782m); alef = point(165m, 495m) }; absNoonTwoDotsBelowFin = postscript("absNoonTwoDotsBelowFin") { diaB = point(450m, -900m); diaA = point(342m, 684m); alef = point(225m, 499m) }; absNoonRetroFin = postscript("absNoonRetroFin") { diaB = point(350m, -600m); diaA = point(312m, 1034m); alef = point(187m, 703m) }; absNoonSmallVFin = postscript("absNoonSmallVFin") { diaB = point(350m, -600m); diaA = point(359m, 897m); alef = point(106m, 532m) }; absHehDoachashmeeFin = postscript("absHehDoachashmeeFin") { above = point(553m, 559m); below = point(402m, -412m); diaA = point(450m, 700m); diaB = point(400m, -500m) }; absHehHatFin = postscript("absHehHatFin") { diaB = point(300m, -195m); diaA = point(350m, 961m) }; absHehFin = postscript("absHehFin") { diaB = point(250m, -180m); diaA = point(300m, 790m) }; absHehFin__knottedFlat = postscript("absHehFin.knottedFlat") { diaB = point(400m, -500m); diaA = point(450m, 700m) }; absHehFin__knottedHigh = postscript("absHehFin.knottedHigh") { diaA = point(360m, 780m); diaB = point(300m, -195m); above = point(354m, 587m); below = point(342m, -125m) }; absHehFin__hooked = postscript("absHehFin.hooked") { diaB = point(200m, -300m); diaA = point(180m, 645m) }; absAeFin = postscript("absAeFin") { above = point(311m, 671m); below = point(311m, -50m); diaA = point(300m, 790m); diaB = point(250m, -180m) }; absTehMarbutaFin = postscript("absTehMarbutaFin") { diaB = point(200m, -180m); diaA = point(225m, 1100m) }; absHehYehAboveFin = postscript("absHehYehAboveFin") { diaB = point(200m, -180m); diaA = point(210m, 1135m) }; absHehGoalFin = postscript("absHehGoalFin") { above = point(244m, 298m); below = point(244m, -177m); diaA = point(180m, 645m); diaB = point(200m, -300m) }; absHehGoalHamzaAboveFin = postscript("absHehGoalHamzaAboveFin") { diaB = point(200m, -250m); diaA = point(188m, 812m) }; absTehMarbutaGoalFin = postscript("absTehMarbutaGoalFin") { diaB = point(200m, -250m); diaA = point(192m, 790m) }; absLamAlefFin = postscript("absLamAlefFin") { above = point(730m, 1020m); below = point(755m, -68m); through = point(723m, 644m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaA1 = point(720m, 1035m); diaA2 = point(47m, 949m); diaB1 = point(750m, -100m); diaB2 = point(420m, -100m); alef1 = point(600m, 700m); alef2 = point(0m, 1020m) }; absLamSmallVAlefFin = postscript("absLamSmallVAlefFin") { diaA2 = point(47m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(420m, -100m); diaA1 = point(705m, 1448m) }; absLamDotAboveAlefFin = postscript("absLamDotAboveAlefFin") { diaA2 = point(43m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(420m, -100m); diaA1 = point(679m, 1376m) }; absLamThreeDotsAboveAlefFin = postscript("absLamThreeDotsAboveAlefFin") { diaA2 = point(47m, 936m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(420m, -100m); diaA1 = point(654m, 1530m) }; absLamThreeDotsBelowAlefFin = postscript("absLamThreeDotsBelowAlefFin") { diaA2 = point(43m, 940m); dia2B1 = point(731m, -564m); dia2B2 = point(320m, -171m); diaB1 = point(726m, -564m); alef2 = point(0m, 1020m); alef1 = point(600m, 700m); diaB2 = point(320m, -171m); diaA1 = point(720m, 1035m) }; absLamRetroAlefFin = postscript("absLamRetroAlefFin") { diaA2 = point(47m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(480m, 1350m); diaB2 = point(420m, -100m); diaA1 = point(624m, 1654m) }; absLamBarAlefFin = postscript("absLamBarAlefFin") { diaA2 = point(51m, 940m); dia2B1 = point(750m, -100m); dia2B2 = point(350m, -135m); diaB1 = point(750m, -100m); alef2 = point(0m, 1020m); alef1 = point(570m, 795m); diaB2 = point(420m, -100m); diaA1 = point(720m, 1035m) }; absYehHamzaAboveMed = postscript("absYehHamzaAboveMed") { diaB = point(153m, -249m); diaA = point(200m, 900m); alef = point(60m, 800m) }; absYehMed = postscript("absYehMed") { diaB = point(150m, -450m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absYehMed__noDots = postscript("absYehMed.noDots") { diaB = point(153m, -249m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absHighHamzaYehMed = postscript("absHighHamzaYehMed") { diaB = point(153m, -249m); diaA = point(158m, 953m); alef = point(60m, 599m) }; absFarsiYehMed = postscript("absFarsiYehMed") { diaB = point(150m, -450m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absYehSmallVMed = postscript("absYehSmallVMed") { diaB = point(150m, -450m); diaA = point(154m, 863m); alef = point(60m, 720m) }; absEMed = postscript("absEMed") { diaB = point(150m, -550m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absYehThreeDotsBelowMed = postscript("absYehThreeDotsBelowMed") { diaB = point(150m, -600m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absAlefMaksuraMed = postscript("absAlefMaksuraMed") { diaB = point(153m, -249m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehNoDotsMed = postscript("absBehNoDotsMed") { above = point(184m, 306m); below = point(184m, -50m); ring = point(215m, 106m); diaA = point(200m, 600m); diaB = point(153m, -249m); alef = point(60m, 599m) }; absBehMed = postscript("absBehMed") { diaB = point(150m, -450m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absTehMed = postscript("absTehMed") { diaB = point(153m, -249m); diaA = point(175m, 855m); alef = point(60m, 720m) }; absThehMed = postscript("absThehMed") { diaB = point(153m, -249m); diaA = point(150m, 957m); alef = point(60m, 800m) }; absTtehMed = postscript("absTtehMed") { diaB = point(153m, -249m); diaA = point(103m, 1094m); alef = point(0m, 684m) }; absTtehehMed = postscript("absTtehehMed") { diaB = point(153m, -249m); diaA = point(158m, 957m); alef = point(60m, 760m) }; absBeehMed = postscript("absBeehMed") { diaB = point(150m, -550m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absTehRingMed = postscript("absTehRingMed") { diaB = point(162m, -299m); diaA = point(179m, 850m); alef = point(60m, 720m) }; absTehThreeDotsAboveDownwardsMed = postscript("absTehThreeDotsAboveDownwardsMed") { diaB = point(153m, -249m); diaA = point(175m, 949m); alef = point(60m, 800m) }; absPehMed = postscript("absPehMed") { diaB = point(150m, -600m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absTehehMed = postscript("absTehehMed") { diaB = point(153m, -249m); diaA = point(171m, 974m); alef = point(60m, 800m) }; absBehehMed = postscript("absBehehMed") { diaB = point(150m, -600m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehThreeDotsHorizBelowMed = postscript("absBehThreeDotsHorizBelowMed") { diaB = point(145m, -414m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehThreeDotsAboveDotBelowMed = postscript("absBehThreeDotsAboveDotBelowMed") { diaB = point(154m, -402m); diaA = point(154m, 936m); alef = point(60m, 800m) }; absBehThreeDotsUpwardBelowMed = postscript("absBehThreeDotsUpwardBelowMed") { diaB = point(145m, -581m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehTwoDotsAboveThreeDotsUpwardBelowMed = postscript("absBehTwoDotsAboveThreeDotsUpwardBelowMed") { diaB = point(150m, -594m); diaA = point(179m, 846m); alef = point(60m, 684m) }; absBehDotAboveTwoDotsBelowMed = postscript("absBehDotAboveTwoDotsBelowMed") { diaB = point(154m, -432m); diaA = point(175m, 855m); alef = point(60m, 684m) }; absBehInvSmallVBelowMed = postscript("absBehInvSmallVBelowMed") { diaB = point(141m, -397m); diaA = point(200m, 600m); alef = point(60m, 599m) }; absBehSmallVAboveMed = postscript("absBehSmallVAboveMed") { diaB = point(153m, -249m); diaA = point(175m, 859m); alef = point(60m, 684m) }; absJeemMed = postscript("absJeemMed") { diaB = point(470m, -397m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahMed = postscript("absHahMed") { above = point(522m, 505m); below = point(522m, -50m); diaA = point(400m, 750m); diaB = point(449m, -201m); alef = point(149m, 684m) }; absKhahMed = postscript("absKhahMed") { diaB = point(449m, -201m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absHahHamzaAboveMed = postscript("absHahHamzaAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 1000m); alef = point(149m, 684m) }; absHahTwoDotsVerticalAboveMed = postscript("absHahTwoDotsVerticalAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 1100m); alef = point(149m, 684m) }; absNyehMed = postscript("absNyehMed") { diaB = point(449m, -410m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absDyehMed = postscript("absDyehMed") { diaB = point(479m, -517m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahThreeDotsAboveMed = postscript("absHahThreeDotsAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 1150m); alef = point(149m, 816m) }; absTchehMed = postscript("absTchehMed") { diaB = point(479m, -564m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehehMed = postscript("absTchehehMed") { diaB = point(466m, -573m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehDotAboveMed = postscript("absTchehDotAboveMed") { diaB = point(479m, -581m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absTchehRetro1Med = postscript("absTchehRetro1Med") { diaB = point(461m, -590m); diaA = point(406m, 1239m); alef = point(153m, 844m) }; absTchehRetro2Med = postscript("absTchehRetro2Med") { diaB = point(466m, -859m); diaA = point(400m, 800m); alef = point(149m, 684m) }; absJeemRetro1Med = postscript("absJeemRetro1Med") { diaB = point(470m, -679m); diaA = point(400m, 800m); alef = point(149m, 684m) }; absJeemRetro2Med = postscript("absJeemRetro2Med") { diaB = point(474m, -397m); diaA = point(414m, 1239m); alef = point(157m, 861m) }; absJeemRetro3Med = postscript("absJeemRetro3Med") { diaB = point(449m, -201m); diaA = point(355m, 1265m); alef = point(149m, 852m) }; absHahTwoDotsAboveMed = postscript("absHahTwoDotsAboveMed") { diaB = point(449m, -201m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahThreeDotsUpwardBelowMed = postscript("absHahThreeDotsUpwardBelowMed") { diaB = point(474m, -568m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absSeenMed = postscript("absSeenMed") { above = point(509m, 333m); below = point(509m, -50m); diaA = point(400m, 600m); diaB = point(449m, -201m); alef = point(149m, 595m) }; absSheenMed = postscript("absSheenMed") { diaB = point(449m, -201m); diaA = point(410m, 978m); alef = point(149m, 663m) }; absSeenDotBelowDotAboveMed = postscript("absSeenDotBelowDotAboveMed") { diaB = point(496m, -372m); diaA = point(480m, 800m); alef = point(149m, 595m) }; absSeenThreeDotsBelowMed = postscript("absSeenThreeDotsBelowMed") { diaB = point(496m, -538m); diaA = point(480m, 735m); alef = point(149m, 595m) }; absSeenThreeDotsBelowThreeDotsAboveMed = postscript("absSeenThreeDotsBelowThreeDotsAboveMed") { diaB = point(487m, -538m); diaA = point(414m, 966m); alef = point(149m, 667m) }; absSheenDotBelowMed = postscript("absSheenDotBelowMed") { diaB = point(496m, -393m); diaA = point(419m, 970m); alef = point(149m, 667m) }; absSheenRetro1Med = postscript("absSheenRetro1Med") { diaB = point(449m, -201m); diaA = point(367m, 1410m); alef = point(161m, 1033m) }; absSheenRetro2Med = postscript("absSheenRetro2Med") { diaB = point(449m, -201m); diaA = point(376m, 1222m); alef = point(153m, 816m) }; absSeenFourDotsAboveMed = postscript("absSeenFourDotsAboveMed") { diaB = point(449m, -201m); diaA = point(430m, 980m); alef = point(149m, 667m) }; absSeenTwoVertAboveMed = postscript("absSeenTwoVertAboveMed") { diaB = point(449m, -201m); diaA = point(430m, 980m); alef = point(149m, 595m) }; absSadMed = postscript("absSadMed") { above = point(639m, 489m); below = point(681m, -87m); diaA = point(500m, 800m); diaB = point(406m, -312m); alef = point(149m, 595m) }; absDadMed = postscript("absDadMed") { diaB = point(402m, -303m); diaA = point(500m, 900m); alef = point(149m, 595m) }; absSadTwoDotsBelowMed = postscript("absSadTwoDotsBelowMed") { diaB = point(406m, -423m); diaA = point(500m, 800m); alef = point(149m, 595m) }; absSadThreeDotsAboveMed = postscript("absSadThreeDotsAboveMed") { diaB = point(402m, -312m); diaA = point(500m, 1050m); alef = point(149m, 595m) }; absDadDotBelowMed = postscript("absDadDotBelowMed") { diaB = point(402m, -380m); diaA = point(500m, 900m); alef = point(149m, 595m) }; absTahMed = postscript("absTahMed") { above = point(497m, 559m); below = point(442m, -77m); diaA = point(175m, 1235m); diaB = point(402m, -201m); alef = point(12m, 800m) }; absZahMed = postscript("absZahMed") { diaB = point(402m, -201m); diaA = point(175m, 1231m); alef = point(12m, 800m) }; absTahThreeDotsAboveMed = postscript("absTahThreeDotsAboveMed") { diaB = point(402m, -201m); diaA = point(175m, 1231m); alef = point(12m, 800m) }; absAinMed = postscript("absAinMed") { above = point(301m, 582m); below = point(295m, -50m); diaA = point(270m, 687m); diaB = point(248m, -201m) }; absGhainMed = postscript("absGhainMed") { diaB = point(248m, -201m); diaA = point(222m, 961m) }; absAinThreeDotsAboveMed = postscript("absAinThreeDotsAboveMed") { diaB = point(248m, -201m); diaA = point(200m, 1170m) }; absGhainDotBelowMed = postscript("absGhainDotBelowMed") { diaB = point(261m, -419m); diaA = point(222m, 961m) }; absAinTwoDotsAboveMed = postscript("absAinTwoDotsAboveMed") { diaB = point(248m, -201m); diaA = point(222m, 991m) }; absAinThreeDotsDownAboveMed = postscript("absAinThreeDotsDownAboveMed") { diaB = point(248m, -201m); diaA = point(231m, 1102m) }; absAinTwoDotsVertAboveMed = postscript("absAinTwoDotsVertAboveMed") { diaB = point(248m, -201m); diaA = point(248m, 1085m) }; absFehMed = postscript("absFehMed") { diaB = point(248m, -201m); diaA = point(295m, 1034m); alef = point(121m, 744m) }; absDotlessFehMed = postscript("absDotlessFehMed") { above = point(379m, 609m); below = point(296m, -50m); diaA = point(295m, 850m); diaB = point(248m, -201m); alef = point(121m, 684m) }; absFehDotMovedBelowMed = postscript("absFehDotMovedBelowMed") { diaB = point(256m, -423m); diaA = point(299m, 855m); alef = point(121m, 684m) }; absFehDotBelowMed = postscript("absFehDotBelowMed") { diaB = point(252m, -419m); diaA = point(303m, 1034m); alef = point(117m, 748m) }; absVehMed = postscript("absVehMed") { diaB = point(248m, -201m); diaA = point(282m, 1196m); alef = point(121m, 929m) }; absFehThreeDotsBelowMed = postscript("absFehThreeDotsBelowMed") { diaB = point(250m, -600m); diaA = point(295m, 842m); alef = point(121m, 684m) }; absPehehMed = postscript("absPehehMed") { diaB = point(248m, -201m); diaA = point(295m, 1213m); alef = point(101m, 941m) }; absFehTwoDotsBelowMed = postscript("absFehTwoDotsBelowMed") { diaB = point(261m, -449m); diaA = point(299m, 855m); alef = point(121m, 684m) }; absFehThreeDotsUpwardBelowMed = postscript("absFehThreeDotsUpwardBelowMed") { diaB = point(256m, -594m); diaA = point(295m, 859m); alef = point(121m, 684m) }; absQafNoDotsMed = postscript("absQafNoDotsMed") { diaB = point(248m, -201m); diaA = point(295m, 859m); alef = point(121m, 684m) }; absQafMed = postscript("absQafMed") { diaB = point(248m, -201m); diaA = point(295m, 1034m); alef = point(117m, 844m) }; absQafDotAboveMed = postscript("absQafDotAboveMed") { diaB = point(248m, -201m); diaA = point(295m, 1034m); alef = point(125m, 748m) }; absQafThreeDotsAboveMed = postscript("absQafThreeDotsAboveMed") { diaB = point(248m, -201m); diaA = point(295m, 1213m); alef = point(125m, 941m) }; absKafMed = postscript("absKafMed") { above = point(100m, 852m); below = point(139m, -48m); ring = point(533m, 981m); diaA = point(195m, 1200m); diaB = point(200m, -150m); alef = point(101m, 1001m) }; absKafDotAboveMed = postscript("absKafDotAboveMed") { diaB = point(200m, -150m); diaA = point(135m, 1335m); alef = point(16m, 1194m) }; absNgMed = postscript("absNgMed") { diaB = point(200m, -150m); diaA = point(120m, 1485m); alef = point(24m, 1383m) }; absKafThreeDotsBelowMed = postscript("absKafThreeDotsBelowMed") { diaB = point(162m, -611m); diaA = point(197m, 1192m); alef = point(101m, 1001m) }; absKehehMed = postscript("absKehehMed") { diaB = point(200m, -150m); diaA = point(205m, 1201m); alef = point(101m, 1001m) }; absKafRingMed = postscript("absKafRingMed") { diaB = point(200m, -150m); diaA = point(201m, 1196m); alef = point(101m, 1001m) }; absGafMed = postscript("absGafMed") { diaB = point(200m, -150m); diaA = point(162m, 1248m); alef = point(84m, 1166m) }; absGafRingMed = postscript("absGafRingMed") { diaB = point(200m, -150m); diaA = point(162m, 1248m); alef = point(88m, 1170m) }; absNgoehMed = postscript("absNgoehMed") { diaB = point(200m, -150m); diaA = point(90m, 1500m); alef = point(12m, 1427m) }; absGafTwoDotsBelowMed = postscript("absGafTwoDotsBelowMed") { diaB = point(150m, -449m); diaA = point(158m, 1252m); alef = point(88m, 1174m) }; absGuehMed = postscript("absGuehMed") { diaB = point(162m, -564m); diaA = point(158m, 1256m); alef = point(88m, 1174m) }; absGafThreeDotsAboveMed = postscript("absGafThreeDotsAboveMed") { diaB = point(200m, -150m); diaA = point(30m, 1650m); alef = point(-60m, 1568m) }; absKehehDotAboveMed = postscript("absKehehDotAboveMed") { diaB = point(200m, -150m); diaA = point(167m, 1226m); alef = point(24m, 1198m) }; absKehehThreeDotsAboveMed = postscript("absKehehThreeDotsAboveMed") { diaB = point(200m, -150m); diaA = point(120m, 1419m); alef = point(24m, 1355m) }; absKehehThreeDotsUpwardBelowMed = postscript("absKehehThreeDotsUpwardBelowMed") { diaB = point(162m, -594m); diaA = point(195m, 1200m); alef = point(101m, 1001m) }; absSwashKafMed = postscript("absSwashKafMed") { diaA = point(390m, 1000m); diaB = point(600m, -150m); alef = point(169m, 901m) }; absLamMed = postscript("absLamMed") { above = point(165m, 1075m); below = point(202m, -50m); through = point(160m, 687m); diaA = point(137m, 1132m); diaB = point(150m, -201m); alef = point(30m, 750m) }; absLamSmallVMed = postscript("absLamSmallVMed") { diaB = point(150m, -201m); diaA = point(135m, 1545m); alef = point(30m, 650m) }; absLamDotAboveMed = postscript("absLamDotAboveMed") { diaB = point(150m, -201m); diaA = point(100m, 1450m); alef = point(30m, 650m) }; absLamThreeDotsAboveMed = postscript("absLamThreeDotsAboveMed") { diaB = point(150m, -201m); diaA = point(100m, 1650m); alef = point(30m, 650m) }; absLamThreeDotsBelowMed = postscript("absLamThreeDotsBelowMed") { diaB = point(200m, -650m); diaA = point(141m, 1132m); alef = point(30m, 750m) }; absLamRetroMed = postscript("absLamRetroMed") { diaB = point(150m, -201m); diaA = point(60m, 1675m); alef = point(30m, 450m) }; absLamBarMed = postscript("absLamBarMed") { diaB = point(150m, -201m); diaA = point(150m, 1154m); alef = point(15m, 950m) }; absMeemMed = postscript("absMeemMed") { above = point(368m, 394m); below = point(385m, -70m); diaA = point(291m, 688m); diaB = point(299m, -201m); alef = point(121m, 603m) }; absMeemDotAboveMed = postscript("absMeemDotAboveMed") { diaB = point(299m, -201m); diaA = point(291m, 825m); alef = point(117m, 688m) }; absMeemDotBelowMed = postscript("absMeemDotBelowMed") { diaB = point(380m, -406m); diaA = point(291m, 684m); alef = point(121m, 603m) }; absNoonMed = postscript("absNoonMed") { diaB = point(153m, -249m); diaA = point(179m, 846m); alef = point(60m, 684m) }; absNoonDotBelowMed = postscript("absNoonDotBelowMed") { diaB = point(200m, -450m); diaA = point(184m, 846m); alef = point(60m, 684m) }; absNoonGhunnaMed = postscript("absNoonGhunnaMed") { diaB = point(153m, -249m); diaA = point(179m, 850m); alef = point(60m, 684m) }; absRnoonMed = postscript("absRnoonMed") { diaB = point(153m, -249m); diaA = point(98m, 1034m); alef = point(0m, 651m) }; absNoonRingMed = postscript("absNoonRingMed") { diaB = point(158m, -342m); diaA = point(175m, 850m); alef = point(60m, 684m) }; absNoonThreeDotsAboveMed = postscript("absNoonThreeDotsAboveMed") { diaB = point(171m, -564m); diaA = point(179m, 684m); alef = point(60m, 599m) }; absNoonTwoDotsBelowMed = postscript("absNoonTwoDotsBelowMed") { diaB = point(175m, -427m); diaA = point(179m, 846m); alef = point(60m, 684m) }; absNoonRetroMed = postscript("absNoonRetroMed") { diaB = point(153m, -249m); diaA = point(85m, 1290m); alef = point(0m, 909m) }; absNoonSmallVMed = postscript("absNoonSmallVMed") { diaB = point(153m, -249m); diaA = point(145m, 1098m); alef = point(44m, 977m) }; absHehDoachashmeeMed = postscript("absHehDoachashmeeMed") { above = point(423m, 559m); below = point(347m, -412m); diaA = point(350m, 700m); diaB = point(300m, -450m); alef = point(153m, 559m) }; absHehHatMed = postscript("absHehHatMed") { diaB = point(295m, -167m); diaA = point(269m, 1001m) }; absHehMed = postscript("absHehMed") { diaB = point(300m, -450m); diaA = point(350m, 700m); alef = point(153m, 559m) }; absHehMed__hooked = postscript("absHehMed.hooked") { diaB = point(150m, -500m); diaA = point(195m, 495m) }; absHehMed__knottedHigh = postscript("absHehMed.knottedHigh") { diaB = point(295m, -167m); diaA = point(269m, 800m); above = point(294m, 635m); below = point(294m, -80m); alef = point(101m, 740m) }; absHehYehAboveMed = postscript("absHehYehAboveMed") { diaB = point(300m, -450m); diaA = point(346m, 1000m); alef = point(200m, 900m) }; absHehGoalMed = postscript("absHehGoalMed") { diaA = point(195m, 495m); diaB = point(150m, -500m) }; absHehGoalHamzaAboveMed = postscript("absHehGoalHamzaAboveMed") { diaA = point(300m, 800m); diaB = point(150m, -500m) }; absYehHamzaAboveIni = postscript("absYehHamzaAboveIni") { diaB = point(98m, -201m); diaA = point(120m, 1020m); alef = point(8m, 925m) }; absYehIni = postscript("absYehIni") { diaB = point(130m, -420m); diaA = point(175m, 684m); alef = point(40m, 684m) }; absYehIni__noDots = postscript("absYehIni.noDots") { diaB = point(105m, -249m); diaA = point(184m, 688m); alef = point(40m, 684m) }; absHighHamzaYehIni = postscript("absHighHamzaYehIni") { diaB = point(105m, -249m); diaA = point(77m, 1034m); alef = point(40m, 684m) }; absFarsiYehIni = postscript("absFarsiYehIni") { diaB = point(130m, -420m); diaA = point(184m, 684m); alef = point(40m, 684m) }; absYehSmallVIni = postscript("absYehSmallVIni") { diaB = point(130m, -420m); diaA = point(150m, 1000m); alef = point(40m, 901m) }; absEIni = postscript("absEIni") { diaB = point(141m, -577m); diaA = point(179m, 684m); alef = point(40m, 684m) }; absYehThreeDotsBelowIni = postscript("absYehThreeDotsBelowIni") { diaB = point(137m, -594m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absAlefMaksuraIni = postscript("absAlefMaksuraIni") { diaB = point(105m, -249m); diaA = point(175m, 684m); alef = point(40m, 684m) }; absBehNoDotsIni = postscript("absBehNoDotsIni") { above = point(168m, 504m); below = point(118m, -50m); ring = point(176m, 91m); diaA = point(175m, 688m); diaB = point(105m, -249m); alef = point(40m, 684m) }; absBehIni = postscript("absBehIni") { diaB = point(120m, -414m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absTehIni = postscript("absTehIni") { diaB = point(105m, -249m); diaA = point(150m, 950m); alef = point(40m, 852m) }; absThehIni = postscript("absThehIni") { diaB = point(105m, -249m); diaA = point(150m, 1050m); alef = point(36m, 1049m) }; absTtehIni = postscript("absTtehIni") { diaB = point(105m, -249m); diaA = point(107m, 1248m); alef = point(-48m, 844m) }; absTtehehIni = postscript("absTtehehIni") { diaB = point(105m, -249m); diaA = point(150m, 1050m); alef = point(4m, 961m) }; absBeehIni = postscript("absBeehIni") { diaB = point(124m, -577m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absTehRingIni = postscript("absTehRingIni") { diaB = point(124m, -342m); diaA = point(145m, 949m); alef = point(40m, 873m) }; absTehThreeDotsAboveDownwardsIni = postscript("absTehThreeDotsAboveDownwardsIni") { diaB = point(105m, -249m); diaA = point(150m, 1064m); alef = point(28m, 1033m) }; absPehIni = postscript("absPehIni") { diaB = point(128m, -568m); diaA = point(179m, 684m); alef = point(40m, 684m) }; absTehehIni = postscript("absTehehIni") { diaB = point(105m, -249m); diaA = point(150m, 1100m); alef = point(36m, 1049m) }; absBehehIni = postscript("absBehehIni") { diaB = point(120m, -564m); diaA = point(175m, 684m); alef = point(40m, 684m) }; absBehThreeDotsHorizBelowIni = postscript("absBehThreeDotsHorizBelowIni") { diaB = point(111m, -402m); diaA = point(179m, 688m); alef = point(40m, 684m) }; absBehThreeDotsAboveDotBelowIni = postscript("absBehThreeDotsAboveDotBelowIni") { diaB = point(111m, -393m); diaA = point(132m, 1077m); alef = point(28m, 1045m) }; absBehThreeDotsUpwardBelowIni = postscript("absBehThreeDotsUpwardBelowIni") { diaB = point(107m, -590m); diaA = point(179m, 684m); alef = point(40m, 684m) }; absBehTwoDotsAboveThreeDotsUpwardBelowIni = postscript("absBehTwoDotsAboveThreeDotsUpwardBelowIni") { diaB = point(111m, -585m); diaA = point(150m, 944m); alef = point(32m, 913m) }; absBehDotAboveTwoDotsBelowIni = postscript("absBehDotAboveTwoDotsBelowIni") { diaB = point(107m, -432m); diaA = point(154m, 936m); alef = point(44m, 877m) }; absBehInvSmallVBelowIni = postscript("absBehInvSmallVBelowIni") { diaB = point(94m, -427m); diaA = point(175m, 688m); alef = point(40m, 684m) }; absBehSmallVAboveIni = postscript("absBehSmallVAboveIni") { diaB = point(105m, -249m); diaA = point(145m, 949m); alef = point(32m, 913m) }; absJeemIni = postscript("absJeemIni") { diaB = point(427m, -363m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahIni = postscript("absHahIni") { above = point(441m, 505m); below = point(441m, -50m); diaA = point(400m, 750m); diaB = point(450m, -150m); alef = point(149m, 684m) }; absKhahIni = postscript("absKhahIni") { diaB = point(450m, -150m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absHahHamzaAboveIni = postscript("absHahHamzaAboveIni") { diaB = point(450m, -150m); diaA = point(400m, 1000m); alef = point(145m, 776m) }; absHahTwoDotsVerticalAboveIni = postscript("absHahTwoDotsVerticalAboveIni") { diaB = point(450m, -150m); diaA = point(400m, 1100m); alef = point(145m, 808m) }; absNyehIni = postscript("absNyehIni") { diaB = point(423m, -376m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absDyehIni = postscript("absDyehIni") { diaB = point(432m, -521m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absHahThreeDotsAboveIni = postscript("absHahThreeDotsAboveIni") { diaB = point(450m, -150m); diaA = point(400m, 1150m); alef = point(145m, 852m) }; absTchehIni = postscript("absTchehIni") { diaB = point(423m, -526m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehehIni = postscript("absTchehehIni") { diaB = point(423m, -530m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absTchehDotAboveIni = postscript("absTchehDotAboveIni") { diaB = point(427m, -530m); diaA = point(400m, 950m); alef = point(149m, 684m) }; absTchehRetro1Ini = postscript("absTchehRetro1Ini") { diaB = point(432m, -555m); diaA = point(355m, 1265m); alef = point(145m, 848m) }; absTchehRetro2Ini = postscript("absTchehRetro2Ini") { diaB = point(423m, -859m); diaA = point(400m, 800m); alef = point(149m, 684m) }; absJeemRetro1Ini = postscript("absJeemRetro1Ini") { diaB = point(402m, -692m); diaA = point(400m, 800m); alef = point(149m, 684m) }; absJeemRetro2Ini = postscript("absJeemRetro2Ini") { diaB = point(423m, -376m); diaA = point(355m, 1265m); alef = point(149m, 836m) }; absJeemRetro3Ini = postscript("absJeemRetro3Ini") { diaB = point(450m, -150m); diaA = point(355m, 1265m); alef = point(153m, 844m) }; absHahTwoDotsAboveIni = postscript("absHahTwoDotsAboveIni") { diaB = point(450m, -150m); diaA = point(410m, 949m); alef = point(141m, 780m) }; absHahThreeDotsUpwardBelowIni = postscript("absHahThreeDotsUpwardBelowIni") { diaB = point(406m, -594m); diaA = point(400m, 750m); alef = point(149m, 684m) }; absSeenIni = postscript("absSeenIni") { above = point(500m, 429m); below = point(504m, -45m); diaA = point(390m, 550m); diaB = point(449m, -201m); alef = point(149m, 551m) }; absSheenIni = postscript("absSheenIni") { diaB = point(449m, -201m); diaA = point(420m, 1020m); alef = point(153m, 768m) }; absSeenDotBelowDotAboveIni = postscript("absSeenDotBelowDotAboveIni") { diaB = point(500m, -400m); diaA = point(450m, 800m); alef = point(149m, 551m) }; absSeenThreeDotsBelowIni = postscript("absSeenThreeDotsBelowIni") { diaB = point(500m, -600m); diaA = point(402m, 573m); alef = point(149m, 551m) }; absSeenThreeDotsBelowThreeDotsAboveIni = postscript("absSeenThreeDotsBelowThreeDotsAboveIni") { diaB = point(500m, -600m); diaA = point(410m, 1000m); alef = point(145m, 784m) }; absSheenDotBelowIni = postscript("absSheenDotBelowIni") { diaB = point(500m, -400m); diaA = point(410m, 1000m); alef = point(145m, 772m) }; absSheenRetro1Ini = postscript("absSheenRetro1Ini") { diaB = point(449m, -201m); diaA = point(355m, 1490m); alef = point(145m, 1126m) }; absSheenRetro2Ini = postscript("absSheenRetro2Ini") { diaB = point(449m, -201m); diaA = point(355m, 1265m); alef = point(145m, 917m) }; absSeenFourDotsAboveIni = postscript("absSeenFourDotsAboveIni") { diaB = point(449m, -201m); diaA = point(402m, 983m); alef = point(149m, 772m) }; absSeenTwoVertAboveIni = postscript("absSeenTwoVertAboveIni") { diaB = point(449m, -201m); diaA = point(402m, 974m); alef = point(149m, 712m) }; absSadIni = postscript("absSadIni") { above = point(597m, 465m); below = point(688m, -77m); diaA = point(500m, 800m); diaB = point(402m, -295m); alef = point(149m, 551m) }; absDadIni = postscript("absDadIni") { diaB = point(402m, -295m); diaA = point(500m, 900m); alef = point(149m, 551m) }; absSadTwoDotsBelowIni = postscript("absSadTwoDotsBelowIni") { diaB = point(402m, -380m); diaA = point(500m, 800m); alef = point(149m, 551m) }; absSadThreeDotsAboveIni = postscript("absSadThreeDotsAboveIni") { diaB = point(402m, -295m); diaA = point(500m, 1050m); alef = point(149m, 551m) }; absDadDotBelowIni = postscript("absDadDotBelowIni") { diaB = point(402m, -359m); diaA = point(500m, 900m); alef = point(149m, 551m) }; absTahIni = postscript("absTahIni") { above = point(491m, 575m); below = point(380m, -50m); diaA = point(154m, 1248m); diaB = point(397m, -150m); alef = point(0m, 684m) }; absZahIni = postscript("absZahIni") { diaB = point(397m, -150m); diaA = point(154m, 1235m); alef = point(0m, 684m) }; absTahThreeDotsAboveIni = postscript("absTahThreeDotsAboveIni") { diaB = point(397m, -150m); diaA = point(154m, 1235m); alef = point(0m, 684m) }; absAinIni = postscript("absAinIni") { above = point(330m, 648m); below = point(330m, -50m); diaA = point(256m, 842m); diaB = point(308m, -150m) }; absGhainIni = postscript("absGhainIni") { diaB = point(308m, -150m); diaA = point(256m, 1085m) }; absAinThreeDotsAboveIni = postscript("absAinThreeDotsAboveIni") { diaB = point(308m, -150m); diaA = point(200m, 1305m) }; absGhainDotBelowIni = postscript("absGhainDotBelowIni") { diaB = point(308m, -397m); diaA = point(256m, 1085m) }; absAinTwoDotsAboveIni = postscript("absAinTwoDotsAboveIni") { diaB = point(308m, -150m); diaA = point(226m, 1094m) }; absAinThreeDotsDownAboveIni = postscript("absAinThreeDotsDownAboveIni") { diaB = point(308m, -150m); diaA = point(235m, 1213m) }; absAinTwoDotsVertAboveIni = postscript("absAinTwoDotsVertAboveIni") { diaB = point(308m, -150m); diaA = point(252m, 1205m) }; absFehIni = postscript("absFehIni") { diaB = point(154m, -150m); diaA = point(132m, 1102m) }; absDotlessFehIni = postscript("absDotlessFehIni") { above = point(180m, 634m); below = point(180m, -50m); diaA = point(137m, 846m); diaB = point(154m, -150m) }; absFehDotMovedBelowIni = postscript("absFehDotMovedBelowIni") { diaB = point(175m, -414m); diaA = point(132m, 850m) }; absFehDotBelowIni = postscript("absFehDotBelowIni") { diaB = point(162m, -414m); diaA = point(132m, 1102m) }; absVehIni = postscript("absVehIni") { diaB = point(150m, -150m); diaA = point(150m, 1200m) }; absFehThreeDotsBelowIni = postscript("absFehThreeDotsBelowIni") { diaB = point(171m, -573m); diaA = point(132m, 850m) }; absPehehIni = postscript("absPehehIni") { diaB = point(150m, -150m); diaA = point(150m, 1250m) }; absFehTwoDotsBelowIni = postscript("absFehTwoDotsBelowIni") { diaB = point(158m, -423m); diaA = point(132m, 850m) }; absFehThreeDotsUpwardBelowIni = postscript("absFehThreeDotsUpwardBelowIni") { diaB = point(150m, -560m); diaA = point(132m, 850m) }; absQafNoDotsIni = postscript("absQafNoDotsIni") { diaB = point(150m, -150m); diaA = point(128m, 850m) }; absQafIni = postscript("absQafIni") { diaB = point(150m, -150m); diaA = point(150m, 1100m) }; absQafDotAboveIni = postscript("absQafDotAboveIni") { diaB = point(150m, -150m); diaA = point(150m, 1100m) }; absQafThreeDotsAboveIni = postscript("absQafThreeDotsAboveIni") { diaB = point(150m, -150m); diaA = point(150m, 1200m) }; absKafIni = postscript("absKafIni") { above = point(92m, 791m); below = point(158m, -48m); ring = point(473m, 873m); diaA = point(150m, 1050m); diaB = point(175m, -175m); alef = point(48m, 929m) }; absKafDotAboveIni = postscript("absKafDotAboveIni") { diaB = point(175m, -175m); diaA = point(150m, 1231m); alef = point(24m, 1126m) }; absNgIni = postscript("absNgIni") { diaB = point(175m, -175m); diaA = point(141m, 1393m); alef = point(4m, 1299m) }; absKafThreeDotsBelowIni = postscript("absKafThreeDotsBelowIni") { diaB = point(154m, -590m); diaA = point(150m, 1050m); alef = point(48m, 929m) }; absKehehIni = postscript("absKehehIni") { diaB = point(175m, -175m); diaA = point(162m, 1051m); alef = point(48m, 929m) }; absKafRingIni = postscript("absKafRingIni") { diaB = point(175m, -175m); diaA = point(179m, 1047m); alef = point(48m, 929m) }; absGafIni = postscript("absGafIni") { diaB = point(175m, -175m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; absGafRingIni = postscript("absGafRingIni") { diaB = point(175m, -175m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; absNgoehIni = postscript("absNgoehIni") { diaB = point(175m, -175m); diaA = point(100m, 1400m); alef = point(-4m, 1355m) }; absGafTwoDotsBelowIni = postscript("absGafTwoDotsBelowIni") { diaB = point(154m, -419m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; absGuehIni = postscript("absGuehIni") { diaB = point(158m, -547m); diaA = point(200m, 1200m); alef = point(36m, 1033m) }; absGafThreeDotsAboveIni = postscript("absGafThreeDotsAboveIni") { diaB = point(175m, -175m); diaA = point(50m, 1530m); alef = point(-72m, 1480m) }; absKehehDotAboveIni = postscript("absKehehDotAboveIni") { diaB = point(175m, -175m); diaA = point(141m, 1218m); alef = point(28m, 1134m) }; absKehehThreeDotsAboveIni = postscript("absKehehThreeDotsAboveIni") { diaB = point(175m, -175m); diaA = point(103m, 1372m); alef = point(20m, 1307m) }; absKehehThreeDotsUpwardBelowIni = postscript("absKehehThreeDotsUpwardBelowIni") { diaB = point(132m, -560m); diaA = point(150m, 1050m); alef = point(48m, 917m) }; absSwashKafIni = postscript("absSwashKafIni") { diaA = point(390m, 1000m); diaB = point(600m, -150m); alef = point(169m, 868m) }; absLamIni = postscript("absLamIni") { above = point(120m, 1111m); below = point(120m, -50m); through = point(137m, 691m); diaA = point(120m, 1209m); diaB = point(100m, -150m); alef = point(30m, 750m) }; absLamSmallVIni = postscript("absLamSmallVIni") { diaB = point(100m, -150m); diaA = point(120m, 1545m); alef = point(30m, 650m) }; absLamDotAboveIni = postscript("absLamDotAboveIni") { diaB = point(100m, -150m); diaA = point(120m, 1530m); alef = point(30m, 650m) }; absLamThreeDotsAboveIni = postscript("absLamThreeDotsAboveIni") { diaB = point(100m, -150m); diaA = point(120m, 1710m); alef = point(30m, 650m) }; absLamThreeDotsBelowIni = postscript("absLamThreeDotsBelowIni") { diaB = point(120m, -594m); diaA = point(128m, 1201m); alef = point(30m, 750m) }; absLamRetroIni = postscript("absLamRetroIni") { diaB = point(100m, -150m); diaA = point(30m, 1718m); alef = point(30m, 500m) }; absLamBarIni = postscript("absLamBarIni") { diaB = point(100m, -150m); diaA = point(132m, 1213m); alef = point(30m, 950m) }; absMeemIni = postscript("absMeemIni") { above = point(243m, 509m); below = point(323m, 0m); diaA = point(248m, 684m); diaB = point(300m, -150m); alef = point(88m, 591m) }; absMeemDotAboveIni = postscript("absMeemDotAboveIni") { diaB = point(300m, -150m); diaA = point(218m, 944m); alef = point(76m, 764m) }; absMeemDotBelowIni = postscript("absMeemDotBelowIni") { diaB = point(300m, -300m); diaA = point(248m, 684m); alef = point(88m, 591m) }; absNoonIni = postscript("absNoonIni") { diaB = point(105m, -249m); diaA = point(120m, 1000m); alef = point(36m, 861m) }; absNoonDotBelowIni = postscript("absNoonDotBelowIni") { diaB = point(115m, -423m); diaA = point(120m, 1000m); alef = point(40m, 873m) }; absNoonGhunnaIni = postscript("absNoonGhunnaIni") { diaB = point(105m, -249m); diaA = point(120m, 1000m); alef = point(40m, 861m) }; absRnoonIni = postscript("absRnoonIni") { diaB = point(105m, -249m); diaA = point(94m, 1248m); alef = point(-16m, 840m) }; absNoonRingIni = postscript("absNoonRingIni") { diaB = point(128m, -299m); diaA = point(120m, 1000m); alef = point(36m, 848m) }; absNoonThreeDotsAboveIni = postscript("absNoonThreeDotsAboveIni") { diaB = point(103m, -564m); diaA = point(167m, 846m); alef = point(40m, 684m) }; absNoonTwoDotsBelowIni = postscript("absNoonTwoDotsBelowIni") { diaB = point(111m, -423m); diaA = point(120m, 1000m); alef = point(40m, 861m) }; absNoonRetroIni = postscript("absNoonRetroIni") { diaB = point(105m, -249m); diaA = point(77m, 1474m); alef = point(-16m, 1098m) }; absNoonSmallVIni = postscript("absNoonSmallVIni") { diaB = point(105m, -249m); diaA = point(115m, 1355m); alef = point(24m, 1214m) }; absHehDoachashmeeIni = postscript("absHehDoachashmeeIni") { above = point(291m, 655m); below = point(315m, -50m); diaA = point(300m, 855m); diaB = point(295m, -167m); alef = point(40m, 684m) }; absHehHatIni = postscript("absHehHatIni") { diaB = point(295m, -167m); diaA = point(240m, 1050m); alef = point(48m, 925m) }; absHehIni = postscript("absHehIni") { diaB = point(295m, -167m); diaA = point(270m, 840m); alef = point(40m, 684m) }; absHehIni__hooked = postscript("absHehIni.hooked") { diaA = point(157m, 684m); diaB = point(145m, -457m); alef = point(40m, 684m) }; absHehYehAboveIni = postscript("absHehYehAboveIni") { diaB = point(295m, -167m); diaA = point(248m, 1081m); alef = point(48m, 925m) }; absHehGoalIni = postscript("absHehGoalIni") { diaA = point(157m, 684m); diaB = point(145m, -457m); alef = point(40m, 684m) }; absHehGoalHamzaAboveIni = postscript("absHehGoalHamzaAboveIni") { diaA = point(149m, 900m); diaB = point(145m, -457m); alef = point(44m, 820m) }; absHighHamza = postscript("absHighHamza") { diaA = point(135m, 1365m); diaB = point(150m, 885m) }; #line 1528 absFathatan = postscript("absFathatan") { diaA_ = point(120m, 1020m); diaA = point(90m, 1425m) }; absDammatan = postscript("absDammatan") { diaA_ = point(180m, 1005m); diaA = point(90m, 1455m) }; absKasratan = postscript("absKasratan") { diaB_ = point(141m, -560m); diaB = point(165m, -975m) }; absFatha = postscript("absFatha") { diaA_ = point(120m, 1020m); diaA = point(90m, 1290m) }; absDamma = postscript("absDamma") { diaA_ = point(150m, 1020m); diaA = point(105m, 1515m) }; absKasra = postscript("absKasra") { diaB_ = point(145m, -560m); diaB = point(165m, -810m) }; absShadda = postscript("absShadda") { diaA_ = point(195m, 960m); diaA = point(150m, 1365m) }; absSukun = postscript("absSukun") { diaA_ = point(120m, 930m); diaA = point(90m, 1425m) }; absMaddahAbove = postscript("absMaddahAbove") { diaA_ = point(120m, 1110m); diaA = point(90m, 1305m) }; absHamzaAbove = postscript("absHamzaAbove") { diaA_ = point(120m, 1020m); diaA = point(60m, 1410m) }; absHamzaBelow = postscript("absHamzaBelow") { diaB_ = point(105m, -120m); diaB = point(135m, -450m); dia2B_ = point(105m, -120m) }; absSubscriptAlef = postscript("absSubscriptAlef") { diaB_ = point(92m, -18m); diaB = point(92m, -591m) }; absUltaPesh = postscript("absUltaPesh") { diaA_ = point(120m, 930m); diaA = point(120m, 1450m) }; absNoonGhunnaMark = postscript("absNoonGhunnaMark") { diaA_ = point(160m, 900m); diaA = point(160m, 1290m) }; absZwarakay = postscript("absZwarakay") { diaA_ = point(207m, 969m); diaA = point(90m, 1290m); above_ = point(110m, 1018m) }; absVowelSmallV = postscript("absVowelSmallV") { diaA_ = point(203m, 941m); diaA = point(197m, 1275m) }; absVowelInvSmallV = postscript("absVowelInvSmallV") { diaA_ = point(207m, 949m); diaA = point(209m, 1271m) }; absVowelDotBelow = postscript("absVowelDotBelow") { diaB_ = point(164m, 203m); diaB = point(164m, -211m) }; absReversedDamma = postscript("absReversedDamma") { diaA_ = point(150m, 1020m); diaA = point(106m, 1516m) }; absFathaTwoDots = postscript("absFathaTwoDots") { diaA_ = point(105m, 945m); diaA = point(105m, 1319m) }; absSuperscriptAlef = postscript("absSuperscriptAlef") { diaA_ = point(180m, 660m); diaA = point(180m, 1230m); alef_ = point(180m, 630m) }; absSuperscriptAlef__large = postscript("absSuperscriptAlef.large") { diaA_ = point(450m, 510m); diaA = point(389m, 1136m) }; absSmallHighSadLamAlefMaksura = postscript("absSmallHighSadLamAlefMaksura") { diaA_ = point(-15m, 915m) }; absSmallHighQafLamAlefMaksura = postscript("absSmallHighQafLamAlefMaksura") { diaA_ = point(-15m, 915m) }; absSmallHighMeemInitialForm = postscript("absSmallHighMeemInitialForm") { diaA_ = point(-15m, 915m) }; absSmallHighLamAlef = postscript("absSmallHighLamAlef") { diaA_ = point(-15m, 915m) }; absSmallHighJeem = postscript("absSmallHighJeem") { diaA_ = point(-15m, 915m) }; absSmallHighThreeDots = postscript("absSmallHighThreeDots") { diaA_ = point(-15m, 915m) }; absSmallHighSeen = postscript("absSmallHighSeen") { diaA_ = point(-15m, 915m) }; absSmallHighRoundedZero = postscript("absSmallHighRoundedZero") { diaA_ = point(-15m, 915m) }; absSmallHighUprightRectangularZero = postscript("absSmallHighUprightRectangularZero") { diaA_ = point(-15m, 915m) }; absSmallHighDotlessHeadOfKhah = postscript("absSmallHighDotlessHeadOfKhah") { diaA_ = point(-15m, 915m); diaA = point(-15m, 1270m) }; absSmallHighMeemIsolatedForm = postscript("absSmallHighMeemIsolatedForm") { diaA_ = point(-15m, 1020m) }; absSmallLowSeen = postscript("absSmallLowSeen") { diaB_ = point(0m, -150m); dia2B_ = point(100m, -150m) }; absSmallHighMadda = postscript("absSmallHighMadda") { diaA_ = point(-15m, 915m) }; absSmallHighYeh = postscript("absSmallHighYeh") { diaA_ = point(-15m, 915m) }; absSmallHighNoon = postscript("absSmallHighNoon") { diaA_ = point(-15m, 915m) }; absEmptyCentreLowStop = postscript("absEmptyCentreLowStop") { diaB_ = point(0m, -200m); dia2B_ = point(0m, -150m) }; absEmptyCentreHighStop = postscript("absEmptyCentreHighStop") { diaA_ = point(-15m, 915m) }; absRoundedHighStopFilledCentre = postscript("absRoundedHighStopFilledCentre") { diaA_ = point(-15m, 915m) }; absSmallLowMeem = postscript("absSmallLowMeem") { diaB_ = point(0m, -280m); dia2B_ = point(0m, -150m) }; absNumberSign = postscript("absNumberSign") { digit = point(425m, 0m); directionality = 3 }; absYearSign = postscript("absYearSign") { digit = point(1275m, 0m); directionality = 3 }; absFootnoteSign = postscript("absFootnoteSign") { digit = point(700m, 0m); directionality = 3 }; absPageSign = postscript("absPageSign") { digit = point(300m, 0m); directionality = 3 }; absAfghaniSign = postscript("absAfghaniSign") { diaA = point(291m, 1120m); diaB = point(291m, -150m) }; absComma = postscript("absComma") { diaA = point(270m, 660m); diaB = point(270m, -195m) }; absComma__downward = postscript("absComma.downward") { diaA = point(275m, 381m); diaB = point(281m, -497m) }; absMisraSign = postscript("absMisraSign") { above = point(294m, 692m); below = point(456m, 104m); diaA = point(270m, 900m); diaB = point(300m, -840m) }; absSmallHighSadMark = postscript("absSmallHighSadMark") { diaA_ = point(540m, 998m); above_ = point(540m, 998m) }; absSmallHighAinMark = postscript("absSmallHighAinMark") { diaA_ = point(514m, 996m); above_ = point(514m, 996m) }; absSmallHighRehHahMark = postscript("absSmallHighRehHahMark") { diaA_ = point(526m, 978m); above_ = point(526m, 978m) }; absSmallHighRehDadMark = postscript("absSmallHighRehDadMark") { diaA_ = point(508m, 986m); above_ = point(508m, 986m) }; absNameMarker = postscript("absNameMarker") { diaA_ = point(270m, 1035m) }; absSmallHighTah = postscript("absSmallHighTah") { diaA_ = point(301m, 1035m) }; absSemicolon = postscript("absSemicolon") { diaA = point(270m, 930m); diaB = point(270m, -195m) }; absSemicolon__downward = postscript("absSemicolon.downward") { diaA = point(275m, 582m); diaB = point(272m, -473m) }; absQuestionMark = postscript("absQuestionMark") { diaA = point(300m, 1185m); diaB = point(300m, -195m) }; absFivePointedStar = postscript("absFivePointedStar") { diaA = point(435m, 990m); diaB = point(420m, -120m) }; absFullStop = postscript("absFullStop") { diaA = point(350m, 790m); diaB = point(250m, -120m) }; absEndOfAyah = postscript("absEndOfAyah") { digit = point(465m, 0m) }; absEndOfAyah__alt = postscript("absEndOfAyah.alt") { digit = point(465m, 0m) }; absEndOfAyah__altB = postscript("absEndOfAyah.altB") { digit = point(465m, 0m) }; absPlaceOfSajdah = postscript("absPlaceOfSajdah") { diaA = point(390m, 1200m); diaB = point(300m, -120m) }; absZero = postscript("absZero"); absOne = postscript("absOne"); absTwo = postscript("absTwo"); absThree= postscript("absThree"); absFour = postscript("absFour"); absFive = postscript("absFive"); absSix = postscript("absSix"); absSeven= postscript("absSeven"); absEight= postscript("absEight"); absNine = postscript("absNine"); absEasternZero = postscript("absEasternZero"); absEasternOne = postscript("absEasternOne"); absEasternTwo = postscript("absEasternTwo"); absEasternThree = postscript("absEasternThree"); absEasternFour = postscript("absEasternFour"); absEasternFour__urdu = postscript("absEasternFour.urdu") { directionality = 7 }; absEasternFive = postscript("absEasternFive"); absEasternSix = postscript("absEasternSix"); absEasternSix__urdu = postscript("absEasternSix.urdu") { directionality = 7 }; absEasternSeven = postscript("absEasternSeven"); absEasternSeven__urdu = postscript("absEasternSeven.urdu") { directionality = 7 }; absEasternEight = postscript("absEasternEight"); absEasternNine = postscript("absEasternNine"); zeroMedium = postscript("zeroMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; oneMedium = postscript("oneMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; twoMedium = postscript("twoMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; threeMedium = postscript("threeMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; fourMedium = postscript("fourMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; fiveMedium = postscript("fiveMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; sixMedium = postscript("sixMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; sevenMedium = postscript("sevenMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; eightMedium = postscript("eightMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; nineMedium = postscript("nineMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absZeroMedium = postscript("absZeroMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absOneMedium = postscript("absOneMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absTwoMedium = postscript("absTwoMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absThreeMedium = postscript("absThreeMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absFourMedium = postscript("absFourMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absFiveMedium = postscript("absFiveMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absSixMedium = postscript("absSixMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absSevenMedium = postscript("absSevenMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEightMedium = postscript("absEightMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absNineMedium = postscript("absNineMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternZeroMedium = postscript("absEasternZeroMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternOneMedium = postscript("absEasternOneMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternTwoMedium = postscript("absEasternTwoMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternThreeMedium = postscript("absEasternThreeMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternFourMedium = postscript("absEasternFourMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternFourMedium__urdu = postscript("absEasternFourMedium.urdu") { digit = point(451m, 0m); digit_ = point(0m, 0m) }; absEasternFiveMedium = postscript("absEasternFiveMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSixMedium = postscript("absEasternSixMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSixMedium__urdu = postscript("absEasternSixMedium.urdu") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSevenMedium = postscript("absEasternSevenMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternSevenMedium__urdu = postscript("absEasternSevenMedium.urdu") { digit = point(451m, 0m); digit_ = point(0m, 0m) }; absEasternEightMedium = postscript("absEasternEightMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; absEasternNineMedium = postscript("absEasternNineMedium") { digit = point(450m, 0m); digit_ = point(0m, 0m) }; zeroSmall = postscript("zeroSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; oneSmall = postscript("oneSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; twoSmall = postscript("twoSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; threeSmall = postscript("threeSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; fourSmall = postscript("fourSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; fiveSmall = postscript("fiveSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; sixSmall = postscript("sixSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; sevenSmall = postscript("sevenSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; eightSmall = postscript("eightSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; nineSmall = postscript("nineSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absZeroSmall = postscript("absZeroSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absOneSmall = postscript("absOneSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absTwoSmall = postscript("absTwoSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absThreeSmall = postscript("absThreeSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absFourSmall = postscript("absFourSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absFiveSmall = postscript("absFiveSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absSixSmall = postscript("absSixSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absSevenSmall = postscript("absSevenSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEightSmall = postscript("absEightSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absNineSmall = postscript("absNineSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternZeroSmall = postscript("absEasternZeroSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternOneSmall = postscript("absEasternOneSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternTwoSmall = postscript("absEasternTwoSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternThreeSmall = postscript("absEasternThreeSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternFourSmall = postscript("absEasternFourSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternFourSmall__urdu = postscript("absEasternFourSmall.urdu") { digit = point(320m, 0m); digit_ = point(0m, 0m) }; absEasternFiveSmall = postscript("absEasternFiveSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSixSmall = postscript("absEasternSixSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSixSmall__urdu = postscript("absEasternSixSmall.urdu") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSevenSmall = postscript("absEasternSevenSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternSevenSmall__urdu = postscript("absEasternSevenSmall.urdu") { digit = point(320m, 0m); digit_ = point(0m, 0m) }; absEasternEightSmall = postscript("absEasternEightSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absEasternNineSmall = postscript("absEasternNineSmall") { digit = point(319m, 0m); digit_ = point(0m, 0m) }; absShaddaFathatan = postscript("absShaddaFathatan") { diaA_ = point(165m, 990m); diaA = point(120m, 1710m) }; absShaddaDammatan = postscript("absShaddaDammatan") { diaA_ = point(165m, 990m); diaA = point(90m, 1740m) }; absShaddaKasratan = postscript("absShaddaKasratan") { diaA_ = point(135m, 1020m); diaA = point(90m, 1740m) }; absShaddaFatha = postscript("absShaddaFatha") { diaA_ = point(165m, 990m); diaA = point(90m, 1530m) }; absShaddaDamma = postscript("absShaddaDamma") { diaA_ = point(165m, 990m); diaA = point(90m, 1695m) }; absShaddaKasra = postscript("absShaddaKasra") { diaA_ = point(150m, 975m); diaA = point(90m, 1560m) }; absHamzaFatha = postscript("absHamzaFatha") { diaA_ = point(120m, 1020m); diaA = point(62m, 1534m) }; absHamzaDamma = postscript("absHamzaDamma") { diaA_ = point(120m, 1020m); diaA = point(44m, 1744m) }; absShaddaAlef = postscript("absShaddaAlef") { diaA_ = point(180m, 975m); diaA = point(90m, 1710m) }; absSukun__leftOpen = postscript("absSukun.leftOpen") { diaA_ = point(160m, 900m); diaA = point(160m, 1320m) }; absSukun__downOpen = postscript("absSukun.downOpen") { diaA_ = point(160m, 930m); diaA = point(160m, 1320m) }; absDammatan__sixNine = postscript("absDammatan.sixNine") { diaA_ = point(150m, 1020m); diaA = point(0m, 1540m) }; absAutoKashida = postscript("absAutoKashida") { diaA = point(150m, 790m); diaB = point(111m, -188m) }; #line 1955 absEndOfAyah__2 = postscript("absEndOfAyah.2") { digit = point(245m, 0m) }; absEndOfAyah__3 = postscript("absEndOfAyah.3") { digit = point(206m, 0m) }; absEndOfAyah__alt__2 = postscript("absEndOfAyah.alt.2") { digit = point(245m, 0m) }; absEndOfAyah__alt__3 = postscript("absEndOfAyah.alt.3") { digit = point(206m, 0m) }; absEndOfAyah__altB__2 = postscript("absEndOfAyah.altB.2") { digit = point(245m, 0m) }; absEndOfAyah__altB__3 = postscript("absEndOfAyah.altB.3") { digit = point(206m, 0m) }; absNumberSign__2 = postscript("absNumberSign.2") { digit = point(200m, 0m) }; absNumberSign__3 = postscript("absNumberSign.3") { digit = point(200m, 0m) }; absYearSign__2 = postscript("absYearSign.2") { digit = point(1050m, 0m) }; absYearSign__3 = postscript("absYearSign.3") { digit = point(825m, 0m) }; absYearSign__4 = postscript("absYearSign.4") { digit = point(600m, 0m) }; absFootnoteSign__2 = postscript("absFootnoteSign.2") { digit = point(475m, 0m) }; absPageSign__2 = postscript("absPageSign.2") { digit = point(75m, 0m) }; absPageSign__3 = postscript("absPageSign.3") { digit = point(75m, 0m) }; absLamIni__preAlef = postscript("absLamIni.preAlef") { above = point(156m, 1195m); below = point(116m, -58m); through = point(168m, 777m); diaA = point(179m, 1278m); diaB = point(65m, -100m); alef = point(65m, 825m); exit = point(0m, 0m) }; absLamSmallVIni__preAlef = postscript("absLamSmallVIni.preAlef") { diaB = point(65m, -100m); diaA = point(154m, 1569m); exit = point(0m, 0m); alef = point(65m, 825m) }; absLamDotAboveIni__preAlef = postscript("absLamDotAboveIni.preAlef") { diaB = point(65m, -100m); diaA = point(150m, 1540m); exit = point(0m, 0m); alef = point(65m, 825m) }; absLamThreeDotsAboveIni__preAlef = postscript("absLamThreeDotsAboveIni.preAlef") { diaB = point(65m, -100m); diaA = point(125m, 1700m); exit = point(0m, 0m); alef = point(65m, 825m) }; absLamThreeDotsBelowIni__preAlef = postscript("absLamThreeDotsBelowIni.preAlef") { diaB = point(121m, -568m); diaA = point(179m, 1278m); exit = point(0m, 0m); alef = point(65m, 825m) }; absLamRetroIni__preAlef = postscript("absLamRetroIni.preAlef") { diaB = point(65m, -100m); diaA = point(73m, 1862m); exit = point(0m, 0m); alef = point(-55m, 1514m) }; absLamBarIni__preAlef = postscript("absLamBarIni.preAlef") { diaB = point(65m, -100m); diaA = point(179m, 1278m); exit = point(0m, 0m); alef = point(66m, 931m) }; absAlefMaddaAboveFin__postLamIni = postscript("absAlefMaddaAboveFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1459m); alef = point(-26m, 1437m); dia2B = point(200m, -136m) }; absAlefHamzaAboveFin__postLamIni = postscript("absAlefHamzaAboveFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1600m); alef = point(-128m, 1500m); dia2B = point(200m, -136m) }; absAlefHamzaBelowFin__postLamIni = postscript("absAlefHamzaBelowFin.postLamIni") { diaB = point(455m, -462m); entry = point(535m, 0m); diaA = point(0m, 1218m); alef = point(0m, 1155m); dia2B = point(455m, -462m) }; absAlefFin__postLamIni = postscript("absAlefFin.postLamIni") { above = point(46m, 1185m); below = point(446m, -57m); dia2B = point(200m, -136m); diaA = point(0m, 1218m); diaB = point(420m, -100m); alef = point(0m, 1155m); entry = point(535m, 0m) }; absAlefWavyHamzaAboveFin__postLamIni = postscript("absAlefWavyHamzaAboveFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1600m); alef = point(-136m, 1423m); dia2B = point(200m, -136m) }; absAlefWavyHamzaBelowFin__postLamIni = postscript("absAlefWavyHamzaBelowFin.postLamIni") { diaB = point(462m, -484m); entry = point(535m, 0m); diaA = point(0m, 1218m); alef = point(0m, 1155m); dia2B = point(462m, -484m) }; absHighHamzaAlefFin__postLamIni = postscript("absHighHamzaAlefFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(18m, 1551m); alef = point(-40m, 1300m); dia2B = point(200m, -136m) }; absAlefWaslaFin__postLamIni = postscript("absAlefWaslaFin.postLamIni") { diaB = point(420m, -100m); entry = point(535m, 0m); diaA = point(0m, 1500m); alef = point(-100m, 1400m); dia2B = point(200m, -136m) }; absLamMed__preAlef = postscript("absLamMed.preAlef") { above = point(230m, 1020m); below = point(255m, -68m); through = point(223m, 644m); diaA = point(220m, 1035m); diaB = point(250m, -100m); alef = point(100m, 700m); exit = point(150m, 250m) }; absLamSmallVMed__preAlef = postscript("absLamSmallVMed.preAlef") { diaB = point(250m, -100m); diaA = point(235m, 1400m); exit = point(150m, 250m); alef = point(100m, 700m) }; absLamDotAboveMed__preAlef = postscript("absLamDotAboveMed.preAlef") { diaB = point(250m, -100m); diaA = point(216m, 1349m); exit = point(150m, 250m); alef = point(100m, 700m) }; absLamThreeDotsAboveMed__preAlef = postscript("absLamThreeDotsAboveMed.preAlef") { diaB = point(250m, -100m); diaA = point(183m, 1532m); exit = point(150m, 250m); alef = point(18m, 1239m) }; absLamThreeDotsBelowMed__preAlef = postscript("absLamThreeDotsBelowMed.preAlef") { diaB = point(253m, -572m); diaA = point(220m, 1035m); exit = point(150m, 250m); alef = point(100m, 700m) }; absLamRetroMed__preAlef = postscript("absLamRetroMed.preAlef") { diaB = point(250m, -100m); diaA = point(143m, 1661m); exit = point(150m, 250m); alef = point(15m, 1360m) }; absLamBarMed__preAlef = postscript("absLamBarMed.preAlef") { diaB = point(250m, -100m); diaA = point(220m, 1035m); exit = point(150m, 250m); alef = point(100m, 821m) }; absAlefMaddaAboveFin__postLamMed = postscript("absAlefMaddaAboveFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(33m, 1173m); alef = point(-84m, 1166m); dia2B = point(300m, -154m) }; absAlefHamzaAboveFin__postLamMed = postscript("absAlefHamzaAboveFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(0m, 1335m); alef = point(-100m, 1280m); dia2B = point(300m, -154m) }; absAlefHamzaBelowFin__postLamMed = postscript("absAlefHamzaBelowFin.postLamMed") { diaB = point(455m, -484m); entry = point(650m, 250m); diaA = point(47m, 949m); alef = point(0m, 1020m); dia2B = point(455m, -484m) }; absAlefFin__postLamMed = postscript("absAlefFin.postLamMed") { dia2B = point(300m, -154m); diaA = point(47m, 949m); diaB = point(420m, -100m); alef = point(0m, 1020m); entry = point(650m, 250m); above = point(48m, 927m); below = point(438m, -89m) }; absAlefWavyHamzaAboveFin__postLamMed = postscript("absAlefWavyHamzaAboveFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(26m, 1316m); alef = point(-100m, 1200m); dia2B = point(300m, -154m) }; absAlefWavyHamzaBelowFin__postLamMed = postscript("absAlefWavyHamzaBelowFin.postLamMed") { diaB = point(480m, -521m); entry = point(650m, 250m); diaA = point(47m, 949m); alef = point(0m, 1020m); dia2B = point(480m, -521m) }; absHighHamzaAlefFin__postLamMed = postscript("absHighHamzaAlefFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(33m, 1236m); alef = point(-40m, 1200m); dia2B = point(300m, -154m) }; absAlefWaslaFin__postLamMed = postscript("absAlefWaslaFin.postLamMed") { diaB = point(420m, -100m); entry = point(650m, 250m); diaA = point(37m, 1243m); alef = point(-84m, 1159m); dia2B = point(300m, -154m) }; #line 2106 uniJeemRetro1 = pseudo(postscript("absJeemRetro1"), 0x076E); uniTchehRetro2 = pseudo(postscript("absTchehRetro2"), 0x076F); uniSheenRetro2 = pseudo(postscript("absSheenRetro2"), 0x0770); uniJehRetro1 = pseudo(postscript("absJehRetro1"), 0x0771); uniJeemRetro3 = pseudo(postscript("absJeemRetro3"), 0x0772); cUnencodedChar = (uniJeemRetro1 uniTchehRetro2 uniSheenRetro2 uniJehRetro1 uniJeemRetro3); cUnencodedGlyph = (absJeemRetro1 absTchehRetro2 absSheenRetro2 absJehRetro1 absJeemRetro3); #line 2120 uniAlefEasternTwoAbove = pseudo(postscript("question"), 0x0773); uniAlefEasternThreeAbove = pseudo(postscript("question"), 0x0774); uniFarsiYehEasternTwoAbove = pseudo(postscript("question"), 0x0775); uniFarsiYehEasternThreeAbove = pseudo(postscript("question"), 0x0776); uniFarsiYehEasternFourBelow = pseudo(postscript("question"), 0x0777); uniWawEasternTwoAbove = pseudo(postscript("question"), 0x0778); uniWawEasternThreeAbove = pseudo(postscript("question"), 0x0779); uniYehBarreeEasternTwoAbove = pseudo(postscript("question"), 0x077A); uniYehBarreeEasternThreeAbove = pseudo(postscript("question"), 0x077B); uniHahEasternFourBelow = pseudo(postscript("question"), 0x077C); uniSeenEasternFourBelow = pseudo(postscript("question"), 0x077D); absTwoDiaDigitAbove = pseudo(postscript("absEasternTwoSmall")); absThreeDiaDigitAbove = pseudo(postscript("absEasternThreeSmall")); absFourDiaDigitAbove = pseudo(postscript("absEasternFourSmall")); absFourDiaDigitBelow = pseudo(postscript("absEasternFourSmall")); absFourDiaDigitAbove__urdu = pseudo(postscript("absEasternFourSmall.urdu")); absFourDiaDigitBelow__urdu = pseudo(postscript("absEasternFourSmall.urdu")); cUnencodedChar2Parts = (uniAlefEasternTwoAbove uniAlefEasternThreeAbove uniFarsiYehEasternTwoAbove uniFarsiYehEasternThreeAbove uniFarsiYehEasternFourBelow uniWawEasternTwoAbove uniWawEasternThreeAbove uniYehBarreeEasternTwoAbove uniYehBarreeEasternThreeAbove uniHahEasternFourBelow uniSeenEasternFourBelow); cUnencodedGlyphPart1 = (absAlef absAlef absFarsiYeh absFarsiYeh absFarsiYeh absWaw absWaw absYehBarree absYehBarree absHah absSeen); cUnencodedGlyphPart2 = (absTwoDiaDigitAbove absThreeDiaDigitAbove absTwoDiaDigitAbove absThreeDiaDigitAbove absFourDiaDigitBelow absTwoDiaDigitAbove absThreeDiaDigitAbove absTwoDiaDigitAbove absThreeDiaDigitAbove absFourDiaDigitBelow absFourDiaDigitAbove); cDiaDigitAbove = (absTwoDiaDigitAbove absThreeDiaDigitAbove absFourDiaDigitAbove absFourDiaDigitAbove__urdu) { diaDigitA_ = point(boundingbox.left + boundingbox.width/2, boundingbox.bottom); diaA = point(boundingbox.left + boundingbox.width/2, boundingbox.top) }; cDiaDigitBelow = (absFourDiaDigitBelow absFourDiaDigitBelow__urdu) { diaDigitB_ = point(boundingbox.left + boundingbox.width/2, boundingbox.top); diaB = point(boundingbox.left + boundingbox.width/2, boundingbox.bottom) }; cDiaDigit = (cDiaDigitAbove cDiaDigitBelow); absAlef { diaDigitA = point(120m, 1100m) }; absAlefFin { diaDigitA = point(105m, 1175m) }; absFarsiYeh { diaDigitB = point(450m, -400m); diaDigitA = point(325m, 706m) }; absFarsiYehIni { diaDigitB = point(130m, -420m); diaDigitA = point(184m, 684m) }; absFarsiYehMed { diaDigitB = point(150m, -450m); diaDigitA = point(200m, 600m) }; absFarsiYehFin { diaDigitB = point(450m, -650m); diaDigitA = point(389m, 329m) }; absWaw { diaDigitA = point(363m, 691m) }; absWawFin { diaDigitA = point(308m, 684m) }; absYehBarree { diaDigitA = point(345m, 645m) }; absYehBarreeFin { diaDigitA = point(375m, 220m) }; absHah { diaDigitB = point(525m, -20m) }; absHahIni { diaDigitB = point(450m, -150m) }; absHahMed { diaDigitB = point(449m, -201m) }; absHahFin { diaDigitB = point(500m, -50m) }; absSeen { diaDigitA = point(400m, 450m) }; absSeenIni { diaDigitA = point(390m, 550m) }; absSeenMed { diaDigitA = point(400m, 600m) }; absSeenFin { diaDigitA = point(800m, 450m) }; cTakesDiaDigitA = (absAlef absAlefFin absFarsiYeh absFarsiYehIni absFarsiYehMed absFarsiYehFin absWaw absWawFin absYehBarree absYehBarreeFin absSeen absSeenIni absSeenMed absSeenFin); cTakesDiaDigitB = (absFarsiYeh absFarsiYehIni absFarsiYehMed absFarsiYehFin absHah absHah absHahIni absHahMed absHahFin); #line 2204 zeroWidthJoiner = postscript("zerojoin"); cDualLinkIso = (zeroWidthJoiner absAin absAinThreeDotsAbove absAinThreeDotsDownAbove absAinTwoDotsAbove absAinTwoDotsVertAbove absAlefMaksura absBeeh absBeh absBeheh absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehNoDots absBehSmallVAbove absBehThreeDotsAboveDotBelow absBehThreeDotsHorizBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absDad absDadDotBelow absDotlessFeh absDyeh absE absFarsiYeh absFeh absFehDotBelow absFehDotMovedBelow absFehThreeDotsBelow absFehThreeDotsUpwardBelow absFehTwoDotsBelow absGaf absGafRing absGafThreeDotsAbove absGafTwoDotsBelow absGhain absGhainDotBelow absGueh absHah absHahHamzaAbove absHahThreeDotsAbove absHahThreeDotsUpwardBelow absHahTwoDotsAbove absHahTwoDotsVerticalAbove absHeh absHehDoachashmee absHehGoal absHehGoalHamzaAbove absHehHat absHehYehAbove absHighHamzaYeh absJeem absJeemRetro1 absJeemRetro2 absJeemRetro3 absKaf absKafDotAbove absKafRing absKafThreeDotsBelow absKeheh absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absKhah absLam absLamBar absLamDotAbove absLamRetro absLamSmallV absLamThreeDotsAbove absLamThreeDotsBelow absMeem absMeemDotAbove absMeemDotBelow absNg absNgoeh absNoon absNoonDotBelow absNoonGhunna absNoonRetro absNoonRing absNoonSmallV absNoonThreeDotsAbove absNoonTwoDotsBelow absNyeh absPeh absPeheh absQaf absQafDotAbove absQafNoDots absQafThreeDotsAbove absRnoon absSad absSadThreeDotsAbove absSadTwoDotsBelow absSeen absSeenDotBelowDotAbove absSeenFourDotsAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSeenTwoVertAbove absSheen absSheenDotBelow absSheenRetro1 absSheenRetro2 absSwashKaf absTah absTahThreeDotsAbove absTcheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absTcheheh absTeh absTeheh absTehRing absTehThreeDotsAboveDownwards absTheh absTteh absTteheh absVeh absYeh absYehHamzaAbove absYehSmallV absYehThreeDotsBelow absZah ); cDualLinkIni = (zeroWidthJoiner absAinIni absAinThreeDotsAboveIni absAinThreeDotsDownAboveIni absAinTwoDotsAboveIni absAinTwoDotsVertAboveIni absAlefMaksuraIni absBeehIni absBehIni absBehehIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehNoDotsIni absBehSmallVAboveIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsHorizBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absDadIni absDadDotBelowIni absDotlessFehIni absDyehIni absEIni absFarsiYehIni absFehIni absFehDotBelowIni absFehDotMovedBelowIni absFehThreeDotsBelowIni absFehThreeDotsUpwardBelowIni absFehTwoDotsBelowIni absGafIni absGafRingIni absGafThreeDotsAboveIni absGafTwoDotsBelowIni absGhainIni absGhainDotBelowIni absGuehIni absHahIni absHahHamzaAboveIni absHahThreeDotsAboveIni absHahThreeDotsUpwardBelowIni absHahTwoDotsAboveIni absHahTwoDotsVerticalAboveIni absHehIni absHehDoachashmeeIni absHehGoalIni absHehGoalHamzaAboveIni absHehHatIni absHehYehAboveIni absHighHamzaYehIni absJeemIni absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absKafIni absKafDotAboveIni absKafRingIni absKafThreeDotsBelowIni absKehehIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absKhahIni absLamIni absLamBarIni absLamDotAboveIni absLamRetroIni absLamSmallVIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNgIni absNgoehIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absNoonRetroIni absNoonRingIni absNoonSmallVIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNyehIni absPehIni absPehehIni absQafIni absQafDotAboveIni absQafNoDotsIni absQafThreeDotsAboveIni absRnoonIni absSadIni absSadThreeDotsAboveIni absSadTwoDotsBelowIni absSeenIni absSeenDotBelowDotAboveIni absSeenFourDotsAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSeenTwoVertAboveIni absSheenIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSwashKafIni absTahIni absTahThreeDotsAboveIni absTchehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absTchehehIni absTehIni absTehehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absThehIni absTtehIni absTtehehIni absVehIni absYehIni absYehHamzaAboveIni absYehSmallVIni absYehThreeDotsBelowIni absZahIni ); cDualLinkMed = (zeroWidthJoiner absAinMed absAinThreeDotsAboveMed absAinThreeDotsDownAboveMed absAinTwoDotsAboveMed absAinTwoDotsVertAboveMed absAlefMaksuraMed absBeehMed absBehMed absBehehMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehNoDotsMed absBehSmallVAboveMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsHorizBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absDadMed absDadDotBelowMed absDotlessFehMed absDyehMed absEMed absFarsiYehMed absFehMed absFehDotBelowMed absFehDotMovedBelowMed absFehThreeDotsBelowMed absFehThreeDotsUpwardBelowMed absFehTwoDotsBelowMed absGafMed absGafRingMed absGafThreeDotsAboveMed absGafTwoDotsBelowMed absGhainMed absGhainDotBelowMed absGuehMed absHahMed absHahHamzaAboveMed absHahThreeDotsAboveMed absHahThreeDotsUpwardBelowMed absHahTwoDotsAboveMed absHahTwoDotsVerticalAboveMed absHehMed absHehDoachashmeeMed absHehGoalMed absHehGoalHamzaAboveMed absHehHatMed absHehYehAboveMed absHighHamzaYehMed absJeemMed absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absKafMed absKafDotAboveMed absKafRingMed absKafThreeDotsBelowMed absKehehMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absKhahMed absLamMed absLamBarMed absLamDotAboveMed absLamRetroMed absLamSmallVMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNgMed absNgoehMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absNoonRetroMed absNoonRingMed absNoonSmallVMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNyehMed absPehMed absPehehMed absQafMed absQafDotAboveMed absQafNoDotsMed absQafThreeDotsAboveMed absRnoonMed absSadMed absSadThreeDotsAboveMed absSadTwoDotsBelowMed absSeenMed absSeenDotBelowDotAboveMed absSeenFourDotsAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSeenTwoVertAboveMed absSheenMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSwashKafMed absTahMed absTahThreeDotsAboveMed absTchehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absTchehehMed absTehMed absTehehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absThehMed absTtehMed absTtehehMed absVehMed absYehMed absYehHamzaAboveMed absYehSmallVMed absYehThreeDotsBelowMed absZahMed ); cDualLinkFin = (zeroWidthJoiner absAinFin absAinThreeDotsAboveFin absAinThreeDotsDownAboveFin absAinTwoDotsAboveFin absAinTwoDotsVertAboveFin absAlefMaksuraFin absBeehFin absBehFin absBehehFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehNoDotsFin absBehSmallVAboveFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsHorizBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absDadFin absDadDotBelowFin absDotlessFehFin absDyehFin absEFin absFarsiYehFin absFehFin absFehDotBelowFin absFehDotMovedBelowFin absFehThreeDotsBelowFin absFehThreeDotsUpwardBelowFin absFehTwoDotsBelowFin absGafFin absGafRingFin absGafThreeDotsAboveFin absGafTwoDotsBelowFin absGhainFin absGhainDotBelowFin absGuehFin absHahFin absHahHamzaAboveFin absHahThreeDotsAboveFin absHahThreeDotsUpwardBelowFin absHahTwoDotsAboveFin absHahTwoDotsVerticalAboveFin absHehFin absHehDoachashmeeFin absHehGoalFin absHehGoalHamzaAboveFin absHehHatFin absHehYehAboveFin absHighHamzaYehFin absJeemFin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absKafFin absKafDotAboveFin absKafRingFin absKafThreeDotsBelowFin absKehehFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absKhahFin absLamFin absLamBarFin absLamDotAboveFin absLamRetroFin absLamSmallVFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absMeemFin absMeemDotAboveFin absMeemDotBelowFin absNgFin absNgoehFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absNoonRetroFin absNoonRingFin absNoonSmallVFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNyehFin absPehFin absPehehFin absQafFin absQafDotAboveFin absQafNoDotsFin absQafThreeDotsAboveFin absRnoonFin absSadFin absSadThreeDotsAboveFin absSadTwoDotsBelowFin absSeenFin absSeenDotBelowDotAboveFin absSeenFourDotsAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSeenTwoVertAboveFin absSheenFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSwashKafFin absTahFin absTahThreeDotsAboveFin absTchehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absTchehehFin absTehFin absTehehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absThehFin absTtehFin absTtehehFin absVehFin absYehFin absYehHamzaAboveFin absYehSmallVFin absYehThreeDotsBelowFin absZahFin ); cRightLinkIso = (zeroWidthJoiner absAe absAlef absAlefHamzaAbove absAlefHamzaBelow absAlefMaddaAbove absAlefWasla absAlefWavyHamzaAbove absAlefWavyHamzaBelow absDahal absDal absDalDotBelow absDalFourDotsAbove absDalHat absDalInvSmallVBelow absDalRing absDalThreeDotsAboveDownwards absDalTwoVertBelowSmallTah absDdahal absDdal absDul absHighHamzaAlef absHighHamzaWaw absJeh absJeh__dotHat absJehRetro1 absJehRetro2 absKirghizOe absKirghizYu absLamAlef absLamBarAlef absLamDotAboveAlef absLamRetroAlef absLamSmallVAlef absLamThreeDotsAboveAlef absLamThreeDotsBelowAlef absOe absReh absRehBar absRehDotBelow absRehDotBelowDotAbove absRehFourDotsAbove absRehHamzaAbove absRehHat absRehRing absRehTwoDotsAbove absRehTwoVertAbove absRreh absTehMarbuta absTehMarbutaGoal absThal absU absUHamzaAbove absVe absWaw absWawDotAbove absWawDotBelow absWawHamzaAbove absWawRing absWawTwoDotsAbove absYehBarree absYehBarreeHamzaAbove absYehTail absYu absZain ); cRightLinkFin = (zeroWidthJoiner absAeFin absAlefFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefMaddaAboveFin absAlefWaslaFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin absDahalFin absDalFin absDalDotBelowFin absDalFourDotsAboveFin absDalHatFin absDalInvSmallVBelowFin absDalRingFin absDalThreeDotsAboveDownwardsFin absDalTwoVertBelowSmallTahFin absDdahalFin absDdalFin absDulFin absHighHamzaAlefFin absHighHamzaWawFin absJehFin absJehFin__dotHat absJehRetro1Fin absJehRetro2Fin absKirghizOeFin absKirghizYuFin absLamAlefFin absLamBarAlefFin absLamDotAboveAlefFin absLamRetroAlefFin absLamSmallVAlefFin absLamThreeDotsAboveAlefFin absLamThreeDotsBelowAlefFin absOeFin absRehFin absRehBarFin absRehDotBelowFin absRehDotBelowDotAboveFin absRehFourDotsAboveFin absRehHamzaAboveFin absRehHatFin absRehRingFin absRehTwoDotsAboveFin absRehTwoVertAboveFin absRrehFin absTehMarbutaFin absTehMarbutaGoalFin absThalFin absUFin absUHamzaAboveFin absVeFin absWawFin absWawDotAboveFin absWawDotBelowFin absWawHamzaAboveFin absWawRingFin absWawTwoDotsAboveFin absYehBarreeFin absYehBarreeHamzaAboveFin absYehTailFin absYuFin absZainFin ); cLamIso = (absLam absLamBar absLamDotAbove absLamRetro absLamSmallV absLamThreeDotsAbove absLamThreeDotsBelow ); cLamIni = (absLamIni absLamBarIni absLamDotAboveIni absLamRetroIni absLamSmallVIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni ); cLamMed = (absLamMed absLamBarMed absLamDotAboveMed absLamRetroMed absLamSmallVMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed ); cLamFin = (absLamFin absLamBarFin absLamDotAboveFin absLamRetroFin absLamSmallVFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin ); cLamIniPreAlef = (absLamIni__preAlef absLamBarIni__preAlef absLamDotAboveIni__preAlef absLamRetroIni__preAlef absLamSmallVIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef ); cLamMedPreAlef = (absLamMed__preAlef absLamBarMed__preAlef absLamDotAboveMed__preAlef absLamRetroMed__preAlef absLamSmallVMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef ); cAlefIso = (absAlef absHighHamzaAlef absAlefHamzaAbove absAlefHamzaBelow absAlefMaddaAbove absAlefWasla absAlefWavyHamzaAbove absAlefWavyHamzaBelow ); cAlefFin = (absAlefFin absHighHamzaAlefFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefMaddaAboveFin absAlefWaslaFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin ); cAlefFinPostLamIni = (absAlefFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefMaddaAboveFin__postLamIni absAlefWaslaFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni ); cAlefFinPostLamMed = (absAlefFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefMaddaAboveFin__postLamMed absAlefWaslaFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed ); #line 2446 cAlefPlusMark = (absAlefMaddaAbove absAlefHamzaAbove absAlefHamzaBelow); cAlefMark = (absMaddahAbove absHamzaAbove absHamzaBelow); #line 2453 cNeedsLargeDaggerAlef = (absYeh absHighHamzaYeh absFarsiYeh absE absYehThreeDotsBelow absYehTail absAlefMaksura absSeen absSheen absSeenDotBelowDotAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSheenDotBelow absSheenRetro1 absSheenRetro2 absSeenFourDotsAbove absSeenTwoVertAbove absSad absDad absSadTwoDotsBelow absSadThreeDotsAbove absDadDotBelow absYehFin absHighHamzaYehFin absFarsiYehFin absEFin absYehThreeDotsBelowFin absYehTailFin absAlefMaksuraFin absSeenFin absSheenFin absSeenDotBelowDotAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSeenFourDotsAboveFin absSeenTwoVertAboveFin absSadFin absDadFin absSadTwoDotsBelowFin absSadThreeDotsAboveFin absDadDotBelowFin); cNeedsLoweredHamza = ( absWaw absYeh absHeh absHehGoal absWawFin absYehFin absHehFin absHehGoalFin absYehMed absHehMed absHehGoalMed absYehIni absHehIni absHehGoalIni); cWithLoweredHamza = ( absWawHamzaAbove absYehHamzaAbove absHehYehAbove absHehGoalHamzaAbove absWawHamzaAboveFin absYehHamzaAboveFin absHehYehAboveFin absHehGoalHamzaAboveFin absYehHamzaAboveMed absHehYehAboveMed absHehGoalHamzaAboveMed absYehHamzaAboveIni absHehYehAboveIni absHehGoalHamzaAboveIni) { component { base = box(0, boundingbox.bottom, advancewidth, boundingbox.bottom + (boundingbox.height*5)/8); hamza = box(0, boundingbox.bottom + (boundingbox.height*5)/8, advancewidth, boundingbox.top) }}; absWawHamzaAbove { component { base.top = boundingbox.bottom + (boundingbox.height*3)/4; hamza.bottom = boundingbox.bottom + (boundingbox.height*3)/4 }}; absYehHamzaAbove { component.hamza.right = advancewidth*3/4 }; absYehHamzaAboveMed { component { base.top = boundingbox.bottom + boundingbox.height/2; hamza.bottom = boundingbox.bottom + boundingbox.height/2 }}; absYehHamzaAboveFin { component.hamza.right = advancewidth*3/4 }; cSignTakes4 = (absYearSign); cSignTakes3Medium = (absYearSign absNumberSign absPageSign); cSignTakes3Small = (absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB); cSignTakes2 = (absYearSign absNumberSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB absFootnoteSign); cSignTakes1 = (absYearSign absNumberSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB absFootnoteSign); cSign4 = (absYearSign__4); cSign3Medium = (absYearSign__3 absNumberSign__3 absPageSign__3); cSign3Small = (absEndOfAyah__3 absEndOfAyah__alt__3 absEndOfAyah__altB__3); cSign3 = (cSign3Medium cSign3Small); cSign2 = (absYearSign__2 absNumberSign__2 absPageSign__2 absEndOfAyah__2 absEndOfAyah__alt__2 absEndOfAyah__altB__2 absFootnoteSign); cSign1 = (absYearSign absNumberSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB absFootnoteSign); cSignAll = (cSign1 cSign2 cSign3 cSign4); cDigitNormal = (absZero absOne absTwo absThree absFour absFive absSix absSeven absEight absNine absEasternZero absEasternOne absEasternTwo absEasternThree absEasternFour absEasternFour__urdu absEasternFive absEasternSix absEasternSix__urdu absEasternSeven absEasternSeven__urdu absEasternEight absEasternNine); cDigitMedium = (absZeroMedium absOneMedium absTwoMedium absThreeMedium absFourMedium absFiveMedium absSixMedium absSevenMedium absEightMedium absNineMedium absEasternZeroMedium absEasternOneMedium absEasternTwoMedium absEasternThreeMedium absEasternFourMedium absEasternFourMedium__urdu absEasternFiveMedium absEasternSixMedium absEasternSixMedium__urdu absEasternSevenMedium absEasternSevenMedium__urdu absEasternEightMedium absEasternNineMedium); cDigitSmall = (absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmall absEasternZeroSmall absEasternOneSmall absEasternTwoSmall absEasternThreeSmall absEasternFourSmall absEasternFourSmall__urdu absEasternFiveSmall absEasternSixSmall absEasternSixSmall__urdu absEasternSevenSmall absEasternSevenSmall__urdu absEasternEightSmall absEasternNineSmall); cSignDigit = (cDigitMedium cDigitSmall) { directionality = 7 }; #line 2545 cDownward = (absComma__downward absSemicolon__downward); cno_Downward = (absComma absSemicolon); cSixNine = (absDammatan__sixNine); cno_SixNine = (absDammatan); cDotHat = (absJeh__dotHat absJehFin__dotHat); cno_DotHat = (absJeh absJehFin); cno_Sukun = (absSukun); cSukunDownOpen = (absSukun__downOpen); cSukunLeftOpen = (absSukun__leftOpen); cno_OpenLeft = (absSmallHighDotlessHeadOfKhah); cOpenLeft = (absSukun__leftOpen); cLargeAlef = (absSuperscriptAlef__large); cno_LargeAlef = (absSuperscriptAlef); cNoDots = (absYeh__noDots absYehIni__noDots absYehMed__noDots absYehFin__noDots); cno_NoDots = (absYeh absYehIni absYehMed absYehFin); cEasternDigit = ( absEasternFour absEasternSix absEasternSeven absEasternFourMedium absEasternSixMedium absEasternSevenMedium absEasternFourSmall absEasternSixSmall absEasternSevenSmall absFourDiaDigitAbove absFourDiaDigitBelow ); cEasternDigitUrdu = ( absEasternFour__urdu absEasternSix__urdu absEasternSeven__urdu absEasternFourMedium__urdu absEasternSixMedium__urdu absEasternSevenMedium__urdu absEasternFourSmall__urdu absEasternSixSmall__urdu absEasternSevenSmall__urdu absFourDiaDigitAbove__urdu absFourDiaDigitBelow__urdu ); cEasternDigitSindhi = ( absEasternFour absEasternSix__urdu absEasternSeven__urdu absEasternFourMedium absEasternSixMedium__urdu absEasternSevenMedium__urdu absEasternFourSmall absEasternSixSmall__urdu absEasternSevenSmall__urdu absFourDiaDigitAbove absFourDiaDigitBelow ); #line 2607 cno_Heh = (absHeh absHehIni absHehMed absHehFin); cHehKurdish = (absHeh__knotted absHehIni absHehMed absHehFin__knottedHigh); cHehSindhi = (absHeh__knotted absHehIni absHehMed__knottedHigh absHehFin__knottedHigh); cHehUrdu = (absHeh absHehIni__hooked absHehMed__hooked absHehFin__hooked); cno_Meem = (absMeem absMeemIni absMeemMed absMeemFin); cMeemSindhi = (absMeem__sindhi absMeemIni absMeemMed absMeemFin__sindhi); cShaddaKasraMarks = (absKasra absKasratan); cShaddaKasraLigatures = (absShaddaKasra absShaddaKasratan); cEndOfAyah = (absEndOfAyah absEndOfAyah__2 absEndOfAyah__3); cEndOfAyahCircle = (absEndOfAyah__alt absEndOfAyah__alt__2 absEndOfAyah__alt__3); cEndOfAyahSquare = (absEndOfAyah__altB absEndOfAyah__altB__2 absEndOfAyah__altB__3); zeroWidthNonJoiner = postscript("zeronojoin"); leftToRightMark = postscript("leftToRightMark") {directionality = 1}; rightToLeftMark = postscript("rightToLeftMark") {directionality = 2}; leftToRightEmbedding = postscript("leftToRightEmbedding") {directionality = 13}; rightToLeftEmbedding = postscript("rightToLeftEmbedding") {directionality = 14}; popDirectionalFormatting = postscript("popDirectionalFormatting") {directionality = 15}; leftToRightOverride = postscript("leftToRightOverride") {directionality = 11}; rightToLeftOverride = postscript("rightToLeftOverride") {directionality = 12}; cInvisible = (zeroWidthJoiner zeroWidthNonJoiner leftToRightMark rightToLeftMark leftToRightEmbedding rightToLeftEmbedding popDirectionalFormatting leftToRightOverride rightToLeftOverride); zeroWidthSpace = postscript("zerospace"); #line 2644 cMark1Above = (absHamzaAbove absShadda); cMark1Below = (absHamzaBelow); cMark2Above = (absFathatan absDammatan absFatha absDamma absSukun absUltaPesh absNoonGhunnaMark absZwarakay absVowelSmallV absVowelInvSmallV absVowelDotBelow absReversedDamma absFathaTwoDots absSuperscriptAlef absSuperscriptAlef__large absSmallHighDotlessHeadOfKhah absShaddaFathatan absShaddaDammatan absShaddaKasratan absShaddaFatha absShaddaDamma absShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlef absSukun__leftOpen absSukun__downOpen absDammatan__sixNine); cMark2Below = (absKasra absKasratan); cMark3Above = (absMaddahAbove); cMark4Above = (absSmallHighSadLamAlefMaksura absSmallHighQafLamAlefMaksura absSmallHighMeemInitialForm absSmallHighLamAlef absSmallHighJeem absSmallHighThreeDots absSmallHighSeen absSmallHighRoundedZero absSmallHighUprightRectangularZero absSmallHighMeemIsolatedForm absSmallHighMadda absSmallHighYeh absSmallHighNoon absEmptyCentreHighStop absRoundedHighStopFilledCentre absSmallHighSadMark absSmallHighAinMark absSmallHighRehHahMark absSmallHighRehDadMark absNameMarker absSmallHighTah); cMark4Below = (absSmallLowSeen absEmptyCentreLowStop absSmallLowMeem); r_comma = postscript("comma") { diaA_ = point(advancewidth/2, boundingbox.bottom) }; cMark4Above += (r_comma); cMark1 = (cMark1Above cMark1Below); cMark2 = (cMark2Above cMark2Below); cMark3 = (cMark3Above); cMark4 = (cMark4Above cMark4Below); cAnyMarks = (cMark1 cMark2 cMark3 cMark4); cAnyMarksAbove = (cMark1Above cMark2Above cMark3Above cMark4Above); cAnyMarksBelow = (cMark1Below cMark2Below cMark4Below); cMark234 = (cMark2 cMark3 cMark4); cMark34 = (cMark3 cMark4); #line 2725 endtable; endenvironment; #line 9 "SchAPClasses.gdh" table(glyph) cHasDiaA = ( absAlefMaddaAbove absAlefHamzaAbove absAlefHamzaBelow absAlef absAlefWavyHamzaAbove absAlefWavyHamzaBelow absHighHamzaAlef absAlefWasla absWawHamzaAbove absWaw absHighHamzaWaw absUHamzaAbove absWawRing absKirghizOe absOe absU absYu absKirghizYu absWawTwoDotsAbove absVe absWawDotAbove absWawDotBelow absDal absThal absDdal absDalRing absDalDotBelow absDalDotBelowSmallTah absDahal absDdahal absDul absDalThreeDotsAboveDownwards absDalFourDotsAbove absDalHat absDalTwoVertBelowSmallTah absDalInvSmallVBelow absReh absZain absRreh absRehSmallV absRehRing absRehDotBelow absRehSmallVBelow absRehDotBelowDotAbove absRehTwoDotsAbove absJeh absRehFourDotsAbove absRehTwoVertAbove absRehHamzaAbove absJehRetro1 absJehRetro2 absJeh__dotHat absRehHat absRehBar absYehBarree absYehBarreeHamzaAbove absYehHamzaAbove absYeh absYeh__noDots absHighHamzaYeh absFarsiYeh absYehSmallV absE absYehThreeDotsBelow absYehTail absAlefMaksura absBehNoDots absBeh absTeh absTheh absTteh absTteheh absBeeh absTehRing absTehThreeDotsAboveDownwards absPeh absTeheh absBeheh absBehThreeDotsHorizBelow absBehThreeDotsAboveDotBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehSmallVAbove absJeem absHah absKhah absHahHamzaAbove absHahTwoDotsVerticalAbove absNyeh absDyeh absHahThreeDotsAbove absTcheh absTcheheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3 absHahTwoDotsAbove absHahThreeDotsUpwardBelow absSeen absSheen absSeenDotBelowDotAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSheenDotBelow absSheenRetro1 absSheenRetro2 absSeenFourDotsAbove absSeenTwoVertAbove absSad absDad absSadTwoDotsBelow absSadThreeDotsAbove absDadDotBelow absTah absZah absTahThreeDotsAbove absAin absGhain absAinThreeDotsAbove absGhainDotBelow absAinTwoDotsAbove absAinThreeDotsDownAbove absAinTwoDotsVertAbove absFeh absDotlessFeh absFehDotMovedBelow absFehDotBelow absVeh absFehThreeDotsBelow absPeheh absFehTwoDotsBelow absFehThreeDotsUpwardBelow absQafNoDots absQaf absQafDotAbove absQafThreeDotsAbove absKaf absKafDotAbove absNg absKafThreeDotsBelow absKeheh absKafRing absGaf absGafRing absNgoeh absGafTwoDotsBelow absGueh absGafThreeDotsAbove absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absSwashKaf absLam absLamSmallV absLamDotAbove absLamThreeDotsAbove absLamThreeDotsBelow absLamRetro absLamBar absMeem absMeem__sindhi absMeemDotAbove absMeemDotBelow absNoon absNoonDotBelow absNoonGhunna absRnoon absNoonRing absNoonThreeDotsAbove absNoonTwoDotsBelow absNoonRetro absNoonSmallV absHehDoachashmee absHehHat absHeh absHeh__knotted absAe absTehMarbuta absHehYehAbove absHehGoal absHehGoalHamzaAbove absTehMarbutaGoal absHamza absSignSindhiAmpers absSignSindhiPostpositionMen absTatweel absAlefMaddaAboveFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin absHighHamzaAlefFin absAlefWaslaFin absWawHamzaAboveFin absWawFin absHighHamzaWawFin absUHamzaAboveFin absWawRingFin absKirghizOeFin absOeFin absUFin absYuFin absKirghizYuFin absWawTwoDotsAboveFin absVeFin absWawDotAboveFin absWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFin absDalDotBelowFin absDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFin absDalFourDotsAboveFin absDalHatFin absDalTwoVertBelowSmallTahFin absDalInvSmallVBelowFin absRehFin absZainFin absRrehFin absRehSmallVFin absRehRingFin absRehDotBelowFin absRehSmallVBelowFin absRehDotBelowDotAboveFin absRehTwoDotsAboveFin absJehFin absRehFourDotsAboveFin absRehTwoVertAboveFin absRehHamzaAboveFin absJehRetro1Fin absJehRetro2Fin absJehFin__dotHat absRehHatFin absRehBarFin absYehBarreeFin absYehBarreeHamzaAboveFin absYehHamzaAboveFin absYehFin absYehFin__noDots absHighHamzaYehFin absFarsiYehFin absYehSmallVFin absEFin absYehThreeDotsBelowFin absYehTailFin absAlefMaksuraFin absBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFin absBehThreeDotsHorizBelowFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehSmallVAboveFin absJeemFin absHahFin absKhahFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin absSeenFin absSheenFin absSeenDotBelowDotAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSeenFourDotsAboveFin absSeenTwoVertAboveFin absSadFin absDadFin absSadTwoDotsBelowFin absSadThreeDotsAboveFin absDadDotBelowFin absTahFin absZahFin absTahThreeDotsAboveFin absAinFin absGhainFin absAinThreeDotsAboveFin absGhainDotBelowFin absAinTwoDotsAboveFin absAinThreeDotsDownAboveFin absAinTwoDotsVertAboveFin absFehFin absDotlessFehFin absFehDotMovedBelowFin absFehDotBelowFin absVehFin absFehThreeDotsBelowFin absPehehFin absFehTwoDotsBelowFin absFehThreeDotsUpwardBelowFin absQafNoDotsFin absQafFin absQafDotAboveFin absQafThreeDotsAboveFin absKafFin absKafDotAboveFin absNgFin absKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absSwashKafFin absLamFin absLamSmallVFin absLamDotAboveFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absLamRetroFin absLamBarFin absMeemFin absMeemFin__sindhi absMeemDotAboveFin absMeemDotBelowFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absRnoonFin absNoonRingFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNoonRetroFin absNoonSmallVFin absHehDoachashmeeFin absHehHatFin absHehFin absHehFin__knottedFlat absHehFin__knottedHigh absHehFin__hooked absAeFin absTehMarbutaFin absHehYehAboveFin absHehGoalFin absHehGoalHamzaAboveFin absTehMarbutaGoalFin absYehHamzaAboveMed absYehMed absYehMed__noDots absHighHamzaYehMed absFarsiYehMed absYehSmallVMed absEMed absYehThreeDotsBelowMed absAlefMaksuraMed absBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMed absBehThreeDotsHorizBelowMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehSmallVAboveMed absJeemMed absHahMed absKhahMed absHahHamzaAboveMed absHahTwoDotsVerticalAboveMed absNyehMed absDyehMed absHahThreeDotsAboveMed absTchehMed absTchehehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absHahTwoDotsAboveMed absHahThreeDotsUpwardBelowMed absSeenMed absSheenMed absSeenDotBelowDotAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSeenFourDotsAboveMed absSeenTwoVertAboveMed absSadMed absDadMed absSadTwoDotsBelowMed absSadThreeDotsAboveMed absDadDotBelowMed absTahMed absZahMed absTahThreeDotsAboveMed absAinMed absGhainMed absAinThreeDotsAboveMed absGhainDotBelowMed absAinTwoDotsAboveMed absAinThreeDotsDownAboveMed absAinTwoDotsVertAboveMed absFehMed absDotlessFehMed absFehDotMovedBelowMed absFehDotBelowMed absVehMed absFehThreeDotsBelowMed absPehehMed absFehTwoDotsBelowMed absFehThreeDotsUpwardBelowMed absQafNoDotsMed absQafMed absQafDotAboveMed absQafThreeDotsAboveMed absKafMed absKafDotAboveMed absNgMed absKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMed absGafTwoDotsBelowMed absGuehMed absGafThreeDotsAboveMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absSwashKafMed absLamMed absLamSmallVMed absLamDotAboveMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absLamRetroMed absLamBarMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absRnoonMed absNoonRingMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNoonRetroMed absNoonSmallVMed absHehDoachashmeeMed absHehHatMed absHehMed absHehMed__hooked absHehMed__knottedHigh absHehYehAboveMed absHehGoalMed absHehGoalHamzaAboveMed absYehHamzaAboveIni absYehIni absYehIni__noDots absHighHamzaYehIni absFarsiYehIni absYehSmallVIni absEIni absYehThreeDotsBelowIni absAlefMaksuraIni absBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIni absBehThreeDotsHorizBelowIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehSmallVAboveIni absJeemIni absHahIni absKhahIni absHahHamzaAboveIni absHahTwoDotsVerticalAboveIni absNyehIni absDyehIni absHahThreeDotsAboveIni absTchehIni absTchehehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absHahTwoDotsAboveIni absHahThreeDotsUpwardBelowIni absSeenIni absSheenIni absSeenDotBelowDotAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSeenFourDotsAboveIni absSeenTwoVertAboveIni absSadIni absDadIni absSadTwoDotsBelowIni absSadThreeDotsAboveIni absDadDotBelowIni absTahIni absZahIni absTahThreeDotsAboveIni absAinIni absGhainIni absAinThreeDotsAboveIni absGhainDotBelowIni absAinTwoDotsAboveIni absAinThreeDotsDownAboveIni absAinTwoDotsVertAboveIni absFehIni absDotlessFehIni absFehDotMovedBelowIni absFehDotBelowIni absVehIni absFehThreeDotsBelowIni absPehehIni absFehTwoDotsBelowIni absFehThreeDotsUpwardBelowIni absQafNoDotsIni absQafIni absQafDotAboveIni absQafThreeDotsAboveIni absKafIni absKafDotAboveIni absNgIni absKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIni absGafTwoDotsBelowIni absGuehIni absGafThreeDotsAboveIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absSwashKafIni absLamIni absLamSmallVIni absLamDotAboveIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absLamRetroIni absLamBarIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absRnoonIni absNoonRingIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNoonRetroIni absNoonSmallVIni absHehDoachashmeeIni absHehHatIni absHehIni absHehIni__hooked absHehYehAboveIni absHehGoalIni absHehGoalHamzaAboveIni absHighHamza absFathatan absDammatan absFatha absDamma absShadda absSukun absMaddahAbove absHamzaAbove absUltaPesh absNoonGhunnaMark absZwarakay absVowelSmallV absVowelInvSmallV absReversedDamma absFathaTwoDots absSuperscriptAlef absSuperscriptAlef__large absSmallHighDotlessHeadOfKhah absAfghaniSign absComma absComma__downward absMisraSign absSemicolon absSemicolon__downward absQuestionMark absFivePointedStar absFullStop absPlaceOfSajdah absShaddaFathatan absShaddaDammatan absShaddaKasratan absShaddaFatha absShaddaDamma absShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlef absSukun__leftOpen absSukun__downOpen absDammatan__sixNine absAutoKashida absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed cDiaDigitAbove ); cHasDiaB = ( absAlefMaddaAbove absAlefHamzaAbove absAlefHamzaBelow absAlef absAlefWavyHamzaAbove absAlefWavyHamzaBelow absHighHamzaAlef absAlefWasla absWawHamzaAbove absWaw absHighHamzaWaw absUHamzaAbove absWawRing absKirghizOe absOe absU absYu absKirghizYu absWawTwoDotsAbove absVe absWawDotAbove absWawDotBelow absDal absThal absDdal absDalRing absDalDotBelow absDalDotBelowSmallTah absDahal absDdahal absDul absDalThreeDotsAboveDownwards absDalFourDotsAbove absDalHat absDalTwoVertBelowSmallTah absDalInvSmallVBelow absReh absZain absRreh absRehSmallV absRehRing absRehDotBelow absRehSmallVBelow absRehDotBelowDotAbove absRehTwoDotsAbove absJeh absRehFourDotsAbove absRehTwoVertAbove absRehHamzaAbove absJehRetro1 absJehRetro2 absJeh__dotHat absRehHat absRehBar absYehBarree absYehBarreeHamzaAbove absYehHamzaAbove absYeh absYeh__noDots absHighHamzaYeh absFarsiYeh absYehSmallV absE absYehThreeDotsBelow absYehTail absAlefMaksura absBehNoDots absBeh absTeh absTheh absTteh absTteheh absBeeh absTehRing absTehThreeDotsAboveDownwards absPeh absTeheh absBeheh absBehThreeDotsHorizBelow absBehThreeDotsAboveDotBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehSmallVAbove absJeem absHah absKhah absHahHamzaAbove absHahTwoDotsVerticalAbove absNyeh absDyeh absHahThreeDotsAbove absTcheh absTcheheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3 absHahTwoDotsAbove absHahThreeDotsUpwardBelow absSeen absSheen absSeenDotBelowDotAbove absSeenThreeDotsBelow absSeenThreeDotsBelowThreeDotsAbove absSheenDotBelow absSheenRetro1 absSheenRetro2 absSeenFourDotsAbove absSeenTwoVertAbove absSad absDad absSadTwoDotsBelow absSadThreeDotsAbove absDadDotBelow absTah absZah absTahThreeDotsAbove absAin absGhain absAinThreeDotsAbove absGhainDotBelow absAinTwoDotsAbove absAinThreeDotsDownAbove absAinTwoDotsVertAbove absFeh absDotlessFeh absFehDotMovedBelow absFehDotBelow absVeh absFehThreeDotsBelow absPeheh absFehTwoDotsBelow absFehThreeDotsUpwardBelow absQafNoDots absQaf absQafDotAbove absQafThreeDotsAbove absKaf absKafDotAbove absNg absKafThreeDotsBelow absKeheh absKafRing absGaf absGafRing absNgoeh absGafTwoDotsBelow absGueh absGafThreeDotsAbove absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absSwashKaf absLam absLamSmallV absLamDotAbove absLamThreeDotsAbove absLamThreeDotsBelow absLamRetro absLamBar absMeem absMeem__sindhi absMeemDotAbove absMeemDotBelow absNoon absNoonDotBelow absNoonGhunna absRnoon absNoonRing absNoonThreeDotsAbove absNoonTwoDotsBelow absNoonRetro absNoonSmallV absHehDoachashmee absHehHat absHeh absHeh__knotted absAe absTehMarbuta absHehYehAbove absHehGoal absHehGoalHamzaAbove absTehMarbutaGoal absHamza absSignSindhiAmpers absSignSindhiPostpositionMen absTatweel absAlefMaddaAboveFin absAlefHamzaAboveFin absAlefHamzaBelowFin absAlefFin absAlefWavyHamzaAboveFin absAlefWavyHamzaBelowFin absHighHamzaAlefFin absAlefWaslaFin absWawHamzaAboveFin absWawFin absHighHamzaWawFin absUHamzaAboveFin absWawRingFin absKirghizOeFin absOeFin absUFin absYuFin absKirghizYuFin absWawTwoDotsAboveFin absVeFin absWawDotAboveFin absWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFin absDalDotBelowFin absDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFin absDalFourDotsAboveFin absDalHatFin absDalTwoVertBelowSmallTahFin absDalInvSmallVBelowFin absRehFin absZainFin absRrehFin absRehSmallVFin absRehRingFin absRehDotBelowFin absRehSmallVBelowFin absRehDotBelowDotAboveFin absRehTwoDotsAboveFin absJehFin absRehFourDotsAboveFin absRehTwoVertAboveFin absRehHamzaAboveFin absJehRetro1Fin absJehRetro2Fin absJehFin__dotHat absRehHatFin absRehBarFin absYehBarreeFin absYehBarreeHamzaAboveFin absYehHamzaAboveFin absYehFin absYehFin__noDots absHighHamzaYehFin absFarsiYehFin absYehSmallVFin absEFin absYehThreeDotsBelowFin absYehTailFin absAlefMaksuraFin absBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFin absBehThreeDotsHorizBelowFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehSmallVAboveFin absJeemFin absHahFin absKhahFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin absSeenFin absSheenFin absSeenDotBelowDotAboveFin absSeenThreeDotsBelowFin absSeenThreeDotsBelowThreeDotsAboveFin absSheenDotBelowFin absSheenRetro1Fin absSheenRetro2Fin absSeenFourDotsAboveFin absSeenTwoVertAboveFin absSadFin absDadFin absSadTwoDotsBelowFin absSadThreeDotsAboveFin absDadDotBelowFin absTahFin absZahFin absTahThreeDotsAboveFin absAinFin absGhainFin absAinThreeDotsAboveFin absGhainDotBelowFin absAinTwoDotsAboveFin absAinThreeDotsDownAboveFin absAinTwoDotsVertAboveFin absFehFin absDotlessFehFin absFehDotMovedBelowFin absFehDotBelowFin absVehFin absFehThreeDotsBelowFin absPehehFin absFehTwoDotsBelowFin absFehThreeDotsUpwardBelowFin absQafNoDotsFin absQafFin absQafDotAboveFin absQafThreeDotsAboveFin absKafFin absKafDotAboveFin absNgFin absKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absSwashKafFin absLamFin absLamSmallVFin absLamDotAboveFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absLamRetroFin absLamBarFin absMeemFin absMeemFin__sindhi absMeemDotAboveFin absMeemDotBelowFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absRnoonFin absNoonRingFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNoonRetroFin absNoonSmallVFin absHehDoachashmeeFin absHehHatFin absHehFin absHehFin__knottedFlat absHehFin__knottedHigh absHehFin__hooked absAeFin absTehMarbutaFin absHehYehAboveFin absHehGoalFin absHehGoalHamzaAboveFin absTehMarbutaGoalFin absYehHamzaAboveMed absYehMed absYehMed__noDots absHighHamzaYehMed absFarsiYehMed absYehSmallVMed absEMed absYehThreeDotsBelowMed absAlefMaksuraMed absBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMed absBehThreeDotsHorizBelowMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehSmallVAboveMed absJeemMed absHahMed absKhahMed absHahHamzaAboveMed absHahTwoDotsVerticalAboveMed absNyehMed absDyehMed absHahThreeDotsAboveMed absTchehMed absTchehehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absHahTwoDotsAboveMed absHahThreeDotsUpwardBelowMed absSeenMed absSheenMed absSeenDotBelowDotAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSeenFourDotsAboveMed absSeenTwoVertAboveMed absSadMed absDadMed absSadTwoDotsBelowMed absSadThreeDotsAboveMed absDadDotBelowMed absTahMed absZahMed absTahThreeDotsAboveMed absAinMed absGhainMed absAinThreeDotsAboveMed absGhainDotBelowMed absAinTwoDotsAboveMed absAinThreeDotsDownAboveMed absAinTwoDotsVertAboveMed absFehMed absDotlessFehMed absFehDotMovedBelowMed absFehDotBelowMed absVehMed absFehThreeDotsBelowMed absPehehMed absFehTwoDotsBelowMed absFehThreeDotsUpwardBelowMed absQafNoDotsMed absQafMed absQafDotAboveMed absQafThreeDotsAboveMed absKafMed absKafDotAboveMed absNgMed absKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMed absGafTwoDotsBelowMed absGuehMed absGafThreeDotsAboveMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absSwashKafMed absLamMed absLamSmallVMed absLamDotAboveMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absLamRetroMed absLamBarMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absRnoonMed absNoonRingMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNoonRetroMed absNoonSmallVMed absHehDoachashmeeMed absHehHatMed absHehMed absHehMed__hooked absHehMed__knottedHigh absHehYehAboveMed absHehGoalMed absHehGoalHamzaAboveMed absYehHamzaAboveIni absYehIni absYehIni__noDots absHighHamzaYehIni absFarsiYehIni absYehSmallVIni absEIni absYehThreeDotsBelowIni absAlefMaksuraIni absBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIni absBehThreeDotsHorizBelowIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehSmallVAboveIni absJeemIni absHahIni absKhahIni absHahHamzaAboveIni absHahTwoDotsVerticalAboveIni absNyehIni absDyehIni absHahThreeDotsAboveIni absTchehIni absTchehehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absHahTwoDotsAboveIni absHahThreeDotsUpwardBelowIni absSeenIni absSheenIni absSeenDotBelowDotAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSeenFourDotsAboveIni absSeenTwoVertAboveIni absSadIni absDadIni absSadTwoDotsBelowIni absSadThreeDotsAboveIni absDadDotBelowIni absTahIni absZahIni absTahThreeDotsAboveIni absAinIni absGhainIni absAinThreeDotsAboveIni absGhainDotBelowIni absAinTwoDotsAboveIni absAinThreeDotsDownAboveIni absAinTwoDotsVertAboveIni absFehIni absDotlessFehIni absFehDotMovedBelowIni absFehDotBelowIni absVehIni absFehThreeDotsBelowIni absPehehIni absFehTwoDotsBelowIni absFehThreeDotsUpwardBelowIni absQafNoDotsIni absQafIni absQafDotAboveIni absQafThreeDotsAboveIni absKafIni absKafDotAboveIni absNgIni absKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIni absGafTwoDotsBelowIni absGuehIni absGafThreeDotsAboveIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absSwashKafIni absLamIni absLamSmallVIni absLamDotAboveIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absLamRetroIni absLamBarIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absRnoonIni absNoonRingIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNoonRetroIni absNoonSmallVIni absHehDoachashmeeIni absHehHatIni absHehIni absHehIni__hooked absHehYehAboveIni absHehGoalIni absHehGoalHamzaAboveIni absHighHamza absKasratan absKasra absHamzaBelow absSubscriptAlef absVowelDotBelow absAfghaniSign absComma absComma__downward absMisraSign absSemicolon absSemicolon__downward absQuestionMark absFivePointedStar absFullStop absPlaceOfSajdah absAutoKashida absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed cDiaDigitBelow ); cHasAlef = ( absWawHamzaAbove absWaw absHighHamzaWaw absUHamzaAbove absWawRing absKirghizOe absOe absU absYu absKirghizYu absWawTwoDotsAbove absVe absWawDotAbove absWawDotBelow absDal absThal absDdal absDalRing absDalDotBelow absDalDotBelowSmallTah absDahal absDdahal absDul absDalThreeDotsAboveDownwards absDalFourDotsAbove absDalHat absDalTwoVertBelowSmallTah absDalInvSmallVBelow absReh absZain absRreh absRehSmallV absRehRing absRehDotBelow absRehSmallVBelow absRehDotBelowDotAbove absRehTwoDotsAbove absJeh absRehFourDotsAbove absRehTwoVertAbove absRehHamzaAbove absJehRetro1 absJehRetro2 absJeh__dotHat absRehHat absRehBar absBehNoDots absBeh absTeh absTheh absTteh absTteheh absBeeh absTehRing absTehThreeDotsAboveDownwards absPeh absTeheh absBeheh absBehThreeDotsHorizBelow absBehThreeDotsAboveDotBelow absBehThreeDotsUpwardBelow absBehTwoDotsAboveThreeDotsUpwardBelow absBehDotAboveTwoDotsBelow absBehInvSmallVBelow absBehSmallVAbove absJeem absHah absKhah absHahHamzaAbove absHahTwoDotsVerticalAbove absNyeh absDyeh absHahThreeDotsAbove absTcheh absTcheheh absTchehDotAbove absTchehRetro1 absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3 absHahTwoDotsAbove absHahThreeDotsUpwardBelow absTah absZah absTahThreeDotsAbove absFeh absDotlessFeh absFehDotMovedBelow absFehDotBelow absVeh absFehThreeDotsBelow absPeheh absFehTwoDotsBelow absFehThreeDotsUpwardBelow absKaf absKafDotAbove absNg absKafThreeDotsBelow absKeheh absKafRing absGaf absGafRing absNgoeh absGafTwoDotsBelow absGueh absGafThreeDotsAbove absKehehDotAbove absKehehThreeDotsAbove absKehehThreeDotsUpwardBelow absLam absLamSmallV absLamDotAbove absLamThreeDotsAbove absLamThreeDotsBelow absLamRetro absLamBar absRnoon absNoonRetro absWawHamzaAboveFin absWawFin absHighHamzaWawFin absWawRingFin absKirghizOeFin absOeFin absUFin absYuFin absKirghizYuFin absWawTwoDotsAboveFin absVeFin absWawDotAboveFin absWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFin absDalDotBelowFin absDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFin absDalFourDotsAboveFin absDalHatFin absDalTwoVertBelowSmallTahFin absDalInvSmallVBelowFin absRehFin absZainFin absRrehFin absRehSmallVFin absRehRingFin absRehDotBelowFin absRehSmallVBelowFin absRehDotBelowDotAboveFin absRehTwoDotsAboveFin absJehFin absRehFourDotsAboveFin absRehTwoVertAboveFin absRehHamzaAboveFin absJehRetro1Fin absJehRetro2Fin absJehFin__dotHat absRehHatFin absRehBarFin absBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFin absBehThreeDotsHorizBelowFin absBehThreeDotsAboveDotBelowFin absBehThreeDotsUpwardBelowFin absBehTwoDotsAboveThreeDotsUpwardBelowFin absBehDotAboveTwoDotsBelowFin absBehInvSmallVBelowFin absBehSmallVAboveFin absJeemFin absHahFin absKhahFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin absTahFin absZahFin absTahThreeDotsAboveFin absFehFin absDotlessFehFin absFehDotMovedBelowFin absFehDotBelowFin absVehFin absFehThreeDotsBelowFin absPehehFin absFehTwoDotsBelowFin absFehThreeDotsUpwardBelowFin absKafFin absKafDotAboveFin absNgFin absKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin absLamFin absLamSmallVFin absLamDotAboveFin absLamThreeDotsAboveFin absLamThreeDotsBelowFin absLamRetroFin absLamBarFin absNoonFin absNoonDotBelowFin absNoonGhunnaFin absRnoonFin absNoonRingFin absNoonThreeDotsAboveFin absNoonTwoDotsBelowFin absNoonRetroFin absNoonSmallVFin absYehHamzaAboveMed absYehMed absYehMed__noDots absHighHamzaYehMed absFarsiYehMed absYehSmallVMed absEMed absYehThreeDotsBelowMed absAlefMaksuraMed absBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMed absBehThreeDotsHorizBelowMed absBehThreeDotsAboveDotBelowMed absBehThreeDotsUpwardBelowMed absBehTwoDotsAboveThreeDotsUpwardBelowMed absBehDotAboveTwoDotsBelowMed absBehInvSmallVBelowMed absBehSmallVAboveMed absJeemMed absHahMed absKhahMed absHahHamzaAboveMed absHahTwoDotsVerticalAboveMed absNyehMed absDyehMed absHahThreeDotsAboveMed absTchehMed absTchehehMed absTchehDotAboveMed absTchehRetro1Med absTchehRetro2Med absJeemRetro1Med absJeemRetro2Med absJeemRetro3Med absHahTwoDotsAboveMed absHahThreeDotsUpwardBelowMed absSeenMed absSheenMed absSeenDotBelowDotAboveMed absSeenThreeDotsBelowMed absSeenThreeDotsBelowThreeDotsAboveMed absSheenDotBelowMed absSheenRetro1Med absSheenRetro2Med absSeenFourDotsAboveMed absSeenTwoVertAboveMed absSadMed absDadMed absSadTwoDotsBelowMed absSadThreeDotsAboveMed absDadDotBelowMed absTahMed absZahMed absTahThreeDotsAboveMed absFehMed absDotlessFehMed absFehDotMovedBelowMed absFehDotBelowMed absVehMed absFehThreeDotsBelowMed absPehehMed absFehTwoDotsBelowMed absFehThreeDotsUpwardBelowMed absQafNoDotsMed absQafMed absQafDotAboveMed absQafThreeDotsAboveMed absKafMed absKafDotAboveMed absNgMed absKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMed absGafTwoDotsBelowMed absGuehMed absGafThreeDotsAboveMed absKehehDotAboveMed absKehehThreeDotsAboveMed absKehehThreeDotsUpwardBelowMed absSwashKafMed absLamMed absLamSmallVMed absLamDotAboveMed absLamThreeDotsAboveMed absLamThreeDotsBelowMed absLamRetroMed absLamBarMed absMeemMed absMeemDotAboveMed absMeemDotBelowMed absNoonMed absNoonDotBelowMed absNoonGhunnaMed absRnoonMed absNoonRingMed absNoonThreeDotsAboveMed absNoonTwoDotsBelowMed absNoonRetroMed absNoonSmallVMed absHehDoachashmeeMed absHehMed absHehMed__knottedHigh absHehYehAboveMed absYehHamzaAboveIni absYehIni absYehIni__noDots absHighHamzaYehIni absFarsiYehIni absYehSmallVIni absEIni absYehThreeDotsBelowIni absAlefMaksuraIni absBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIni absBehThreeDotsHorizBelowIni absBehThreeDotsAboveDotBelowIni absBehThreeDotsUpwardBelowIni absBehTwoDotsAboveThreeDotsUpwardBelowIni absBehDotAboveTwoDotsBelowIni absBehInvSmallVBelowIni absBehSmallVAboveIni absJeemIni absHahIni absKhahIni absHahHamzaAboveIni absHahTwoDotsVerticalAboveIni absNyehIni absDyehIni absHahThreeDotsAboveIni absTchehIni absTchehehIni absTchehDotAboveIni absTchehRetro1Ini absTchehRetro2Ini absJeemRetro1Ini absJeemRetro2Ini absJeemRetro3Ini absHahTwoDotsAboveIni absHahThreeDotsUpwardBelowIni absSeenIni absSheenIni absSeenDotBelowDotAboveIni absSeenThreeDotsBelowIni absSeenThreeDotsBelowThreeDotsAboveIni absSheenDotBelowIni absSheenRetro1Ini absSheenRetro2Ini absSeenFourDotsAboveIni absSeenTwoVertAboveIni absSadIni absDadIni absSadTwoDotsBelowIni absSadThreeDotsAboveIni absDadDotBelowIni absTahIni absZahIni absTahThreeDotsAboveIni absKafIni absKafDotAboveIni absNgIni absKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIni absGafTwoDotsBelowIni absGuehIni absGafThreeDotsAboveIni absKehehDotAboveIni absKehehThreeDotsAboveIni absKehehThreeDotsUpwardBelowIni absSwashKafIni absLamIni absLamSmallVIni absLamDotAboveIni absLamThreeDotsAboveIni absLamThreeDotsBelowIni absLamRetroIni absLamBarIni absMeemIni absMeemDotAboveIni absMeemDotBelowIni absNoonIni absNoonDotBelowIni absNoonGhunnaIni absRnoonIni absNoonRingIni absNoonThreeDotsAboveIni absNoonTwoDotsBelowIni absNoonRetroIni absNoonSmallVIni absHehDoachashmeeIni absHehHatIni absHehIni absHehIni__hooked absHehYehAboveIni absHehGoalIni absHehGoalHamzaAboveIni absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed); cHasDigit = ( absNumberSign absYearSign absFootnoteSign absPageSign absEndOfAyah absEndOfAyah__alt absEndOfAyah__altB zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMedium absThreeMedium absFourMedium absFiveMedium absSixMedium absSevenMedium absEightMedium absNineMedium absEasternZeroMedium absEasternOneMedium absEasternTwoMedium absEasternThreeMedium absEasternFourMedium absEasternFourMedium__urdu absEasternFiveMedium absEasternSixMedium absEasternSixMedium__urdu absEasternSevenMedium absEasternSevenMedium__urdu absEasternEightMedium absEasternNineMedium zeroSmall oneSmall twoSmall threeSmall fourSmall fiveSmall sixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmall absEasternZeroSmall absEasternOneSmall absEasternTwoSmall absEasternThreeSmall absEasternFourSmall absEasternFourSmall__urdu absEasternFiveSmall absEasternSixSmall absEasternSixSmall__urdu absEasternSevenSmall absEasternSevenSmall__urdu absEasternEightSmall absEasternNineSmall absEndOfAyah__2 absEndOfAyah__3 absEndOfAyah__alt__2 absEndOfAyah__alt__3 absEndOfAyah__altB__2 absEndOfAyah__altB__3 absNumberSign__2 absNumberSign__3 absYearSign__2 absYearSign__3 absYearSign__4 absFootnoteSign__2 absPageSign__2 absPageSign__3); cHasEntry = (absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed); cHasExit = (absLamIni__preAlef absLamSmallVIni__preAlef absLamDotAboveIni__preAlef absLamThreeDotsAboveIni__preAlef absLamThreeDotsBelowIni__preAlef absLamRetroIni__preAlef absLamBarIni__preAlef absLamMed__preAlef absLamSmallVMed__preAlef absLamDotAboveMed__preAlef absLamThreeDotsAboveMed__preAlef absLamThreeDotsBelowMed__preAlef absLamRetroMed__preAlef absLamBarMed__preAlef); cHasDia2B = (absAlefMaddaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaAboveFin__postLamIni absAlefHamzaBelowFin__postLamIni absAlefFin__postLamIni absAlefWavyHamzaAboveFin__postLamIni absAlefWavyHamzaBelowFin__postLamIni absHighHamzaAlefFin__postLamIni absAlefWaslaFin__postLamIni absAlefMaddaAboveFin__postLamMed absAlefHamzaAboveFin__postLamMed absAlefHamzaBelowFin__postLamMed absAlefFin__postLamMed absAlefWavyHamzaAboveFin__postLamMed absAlefWavyHamzaBelowFin__postLamMed absHighHamzaAlefFin__postLamMed absAlefWaslaFin__postLamMed); cMatchesDiaA = (absFathatan absDammatan absFatha absDamma absShadda absSukun absMaddahAbove absHamzaAbove absUltaPesh absNoonGhunnaMark absZwarakay absVowelSmallV absVowelInvSmallV absReversedDamma absFathaTwoDots absSuperscriptAlef absSuperscriptAlef__large absSmallHighSadLamAlefMaksura absSmallHighQafLamAlefMaksura absSmallHighMeemInitialForm absSmallHighLamAlef absSmallHighJeem absSmallHighThreeDots absSmallHighSeen absSmallHighRoundedZero absSmallHighUprightRectangularZero absSmallHighDotlessHeadOfKhah absSmallHighMeemIsolatedForm absSmallHighMadda absSmallHighYeh absSmallHighNoon absEmptyCentreHighStop absRoundedHighStopFilledCentre absSmallHighSadMark absSmallHighAinMark absSmallHighRehHahMark absSmallHighRehDadMark absNameMarker absSmallHighTah absShaddaFathatan absShaddaDammatan absShaddaKasratan absShaddaFatha absShaddaDamma absShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlef absSukun__leftOpen absSukun__downOpen absDammatan__sixNine r_comma ); cMatchesDiaB = (absKasratan absKasra absHamzaBelow absSubscriptAlef absVowelDotBelow absSmallLowSeen absEmptyCentreLowStop absSmallLowMeem); cMatchesDia2B = (absHamzaBelow absSmallLowSeen absEmptyCentreLowStop absSmallLowMeem); cMatchesAlef = (absSuperscriptAlef); cMatchesDigit = (zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMedium absThreeMedium absFourMedium absFiveMedium absSixMedium absSevenMedium absEightMedium absNineMedium absEasternZeroMedium absEasternOneMedium absEasternTwoMedium absEasternThreeMedium absEasternFourMedium absEasternFourMedium__urdu absEasternFiveMedium absEasternSixMedium absEasternSixMedium__urdu absEasternSevenMedium absEasternSevenMedium__urdu absEasternEightMedium absEasternNineMedium zeroSmall oneSmall twoSmall threeSmall fourSmall fiveSmall sixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmall absEasternZeroSmall absEasternOneSmall absEasternTwoSmall absEasternThreeSmall absEasternFourSmall absEasternFourSmall__urdu absEasternFiveSmall absEasternSixSmall absEasternSixSmall__urdu absEasternSevenSmall absEasternSevenSmall__urdu absEasternEightSmall absEasternNineSmall); #line 560 endtable; #line 22 "SchFeatures.gdh" table(feature) shaddaKasra { id = "cv62"; name.1033 = string("Shadda+kasra placement"); settings { std { value = 0; name.1033 = string("Raised kasra"); } sindhiUrdu { value = 1; name.1033 = string("Lowered kasra"); } } default = std; } meemAlt { id = "cv44"; name.1033 = string("Meem alternates"); settings { std { value = 0; name.1033 = string("Standard"); } sindhi { value = 1; name.1033 = string("Sindhi"); } } default = std; } hehAlt { id = "cv48"; name.1033 = string("Heh alternates"); settings { std { value = 0; name.1033 = string("Standard"); } kurdish { value = 1; name.1033 = string("Kurdish"); } sindhi { value = 2; name.1033 = string("Sindhi"); } urdu { value = 3; name.1033 = string("Urdu"); } } default = std; } easternDigits { id = "cv82"; name.1033 = string("Eastern digit alternates"); settings { std { value = 0; name.1033 = string("Standard"); } sindhi { value = 1; name.1033 = string("Sindhi"); } urdu { value = 2; name.1033 = string("Urdu"); } } default = std; } sukunAlt { id = "cv78"; name.1033 = string("Sukun alternates"); settings { std { value = 0; name.1033 = string("Sukun"); } jasmDown { value = 1; name.1033 = string("Jasm open down"); } jasmLeft { value = 2; name.1033 = string("Jasm open left"); } } default = std; } headOfKhahAlt { id = "cv92"; name.1033 = string("Dotless head of khah"); settings { std { value = 0; name.1033 = string("Standard"); } openLeft { value = 1; name.1033 = string("Jasm open left"); } } default = std; } commaAlt { id = "cv84"; name.1033 = string("Downward comma"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = off; } dammatanAlt { id = "cv72"; name.1033 = string("Six-nine dammatan"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = off; } endOfAyah { id = "cv80"; name.1033 = string("End of ayah"); settings { std { value = 0; name.1033 = string("Standard"); } circle { value = 1; name.1033 = string("Simplified A"); } square { value = 2; name.1033 = string("Simplified B"); } } default = std; } kasraTcheh { id = "ktch"; name.1033 = string("Kasra-tcheh adjustment"); settings { raise { value = 2; name.1033 = string("Raise kasra"); } lower { value = 1; name.1033 = string("Lower kasra"); } } default = raise; } selectDiac { id = "dsel"; name.1033 = string("Diacritic selection"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = on; } invis { id = "invs"; name.1033 = string("Show invisible characters"); settings { off { value = 0; name.1033 = string("False"); } on { value = 1; name.1033 = string("True"); } } default = off; } endtable; #line 248 table(language) sindhi { languages = ( "snd", "sd" ); meemAlt = sindhi; hehAlt = sindhi; easternDigits = sindhi; shaddaKasra = sindhiUrdu; }; kurdish { languages = ( "bdh", "ckb", "kmr", "kur", "sdh" ); hehAlt = kurdish; }; urdu { languages = ( "urd", "ur" ); hehAlt = urdu; easternDigits = urdu; shaddaKasra = sindhiUrdu; }; shina { languages = ( "scl", "plk" ); headOfKhahAlt = openLeft; }; endtable; #line 80 "SchMain.gdl" table(glyph) cMirrorOpen = (gparenleft gless gbracketleft gbraceleft ); cMirrorClose = (gparenright ggreater gbracketright gbraceright); #line 98 cShaddaKasraLigatures { component.shadda = box(boundingbox.left, boundingbox.bottom, boundingbox.right, boundingbox.bottom + boundingbox.height/2); component.kasra = box(boundingbox.left, boundingbox.bottom + boundingbox.height/2, boundingbox.right, boundingbox.top) }; endtable; #line 113 table(substitution) pass(1) cUnencodedChar > cUnencodedGlyph; cUnencodedChar2Parts _ > cUnencodedGlyphPart1 cUnencodedGlyphPart2$1:1; _ cAlefPlusMark > absAlef:2 cAlefMark ; (cMirrorOpen cMirrorClose) > (cMirrorClose cMirrorOpen); endpass; pass(2) #line 143 _ cMark234 cMark1 > @5:5 @2 _ / _ _ ^ [ cMark234 cMark234? ]? _; _ cMark34 cMark2 > @5:5 @2 _ / _ _ ^ [ cMark34 cMark34? ]? _; _ cMark4 cMark3 > @5:5 @2 _ / _ _ ^ [ cMark4 cMark4? ]? _; endpass; pass(3) if (shaddaKasra == std) if (selectDiac) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) { component.shadda.reference = @1; component.kasra.reference = @2 }; else absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2); endif; endif; #line 169 endpass; table(glyph) cDualLinkFinAux = cDualLinkFin; cDualLinkFinAux -= zeroWidthJoiner; cDualLinkMedAux = cDualLinkMed; cDualLinkMedAux -= zeroWidthJoiner; cRightLinkIsoAux = cRightLinkIso; cRightLinkIsoAux -= zeroWidthJoiner; cRightLinkFinAux = cRightLinkFin; cRightLinkFinAux -= zeroWidthJoiner; endtable; pass(4) #line 193 cLamIso cAlefIso > cLamIniPreAlef {user1 = false} cAlefFinPostLamIni / _ [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? ^ _ ; cLamFin cAlefIso > cLamMedPreAlef {user1 = false} cAlefFinPostLamMed / _ [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? ^ _ ; (cDualLinkIso cDualLinkFinAux absTatweel) (cDualLinkIso cRightLinkIsoAux absTatweel) > (cDualLinkIni cDualLinkMedAux absTatweel) (cDualLinkFin cRightLinkFinAux absTatweel) / _ cDiaDigit? [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? ^ _ ; cSignTakes4 cDigitNormal cDigitNormal cDigitNormal cDigitNormal > cSign4 cDigitMedium cDigitMedium cDigitMedium cDigitMedium; cSignTakes3Medium cDigitNormal cDigitNormal cDigitNormal > cSign3Medium cDigitMedium cDigitMedium cDigitMedium; cSignTakes3Small cDigitNormal cDigitNormal cDigitNormal > cSign3Small cDigitSmall cDigitSmall cDigitSmall; cSignTakes2 cDigitNormal cDigitNormal > cSign2 cDigitMedium cDigitMedium; cSignTakes1 cDigitNormal > cSign1 cDigitMedium; endpass; pass(5) absSuperscriptAlef > absSuperscriptAlef__large / cNeedsLargeDaggerAlef _; if (selectDiac) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(1 2) { component { base.reference = @1; hamza.reference = @2 }} _; else cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(1 2) _; endif; if (meemAlt == sindhi) cno_Meem > cMeemSindhi; endif; if (hehAlt == kurdish) cno_Heh > cHehKurdish; endif; if (hehAlt == sindhi) cno_Heh > cHehSindhi; endif; if (hehAlt == urdu) cno_Heh > cHehUrdu; endif; if (easternDigits == sindhi) cEasternDigit > cEasternDigitSindhi; endif; if (easternDigits == urdu) cEasternDigit > cEasternDigitUrdu; endif; if (sukunAlt == jasmDown) cno_Sukun > cSukunDownOpen; endif; if (sukunAlt == jasmLeft) cno_Sukun > cSukunLeftOpen; endif; if (headOfKhahAlt == openLeft) cno_OpenLeft > cOpenLeft; endif; if (commaAlt) cno_Downward > cDownward; endif; if (dammatanAlt) cno_SixNine > cSixNine; endif; if (endOfAyah == circle) cEndOfAyah > cEndOfAyahCircle; endif; if (endOfAyah == square) cEndOfAyah > cEndOfAyahSquare; endif; if (!invis) cInvisible > zeroWidthSpace {directionality = @1.directionality}; endif; endpass; endtable; table (positioning) pass(1) cHasExit=L {user1 = true} cHasEntry=A {attach {to=@L; at=exit; with=entry}; insert=true} / ^ _ {user1 == false} [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? _; #line 309 cHasAlef=B cMatchesAlef {attach {to=@B; at=alef; with=alef_}; insert = true} / _ ^ _ ; absShadda=S (absFatha absDamma absFathatan absDammatan) {attach {to=@S; at=point(diaA.x,diaA.y-80m); with=diaA_}; insert = selectDiac} / _ ^ [ cAnyMarksBelow [ cAnyMarksBelow cAnyMarksBelow? ]? ]? _; absHamzaAbove=H (absFatha absDamma absFathatan absDammatan) {attach {to=@H; at=point(diaA.x+40m,diaA.y-80m); with=diaA_}; insert = selectDiac} / _ ^ [ cAnyMarksBelow [ cAnyMarksBelow cAnyMarksBelow? ]? ]? _; cTakesDiaDigitA=B cDiaDigitAbove {attach {to=@B; at=diaDigitA; with=diaDigitA_}} / _ ^ _; cHasDiaA=B cMatchesDiaA {attach {to=@B; at=diaA; with=diaA_}; insert = selectDiac} / _ ^ [ cAnyMarksBelow [ cAnyMarksBelow cAnyMarksBelow? ]? ]? _; #line 337 cSign4=S cSignDigit=D4 { attach {to=@D3; at=digit; with=digit_ }; insert = true} cSignDigit=D3 { attach {to=@D2; at=digit; with=digit_ }; insert = true} cSignDigit=D2 { attach {to=@D1; at=digit; with=digit_ }; insert = true} cSignDigit=D1 { attach {to=@S; at=digit; with=digit_ }; insert = true}; cSign3=S cSignDigit=D3 { attach {to=@D2; at=digit; with=digit_ }; insert = true} cSignDigit=D2 { attach {to=@D1; at=digit; with=digit_ }; insert = true} cSignDigit=D1 { attach {to=@S; at=digit; with=digit_ }; insert = true}; cSign2=S cSignDigit=D2 { attach {to=@D1; at=digit; with=digit_ }; insert = true} cSignDigit=D1 { attach {to=@S; at=digit; with=digit_ }; insert = true}; cSign1=S cSignDigit { attach {to=@S; at=digit; with=digit_ }; insert = true}; endpass; pass(2) cHasDia2B=B cMatchesDia2B {attach {to=@B; at=dia2B; with=dia2B_}; insert = selectDiac} / _ ^ _ ; cTakesDiaDigitB=B cDiaDigitBelow {attach {to=@B; at=diaDigitB; with=diaDigitB_}} / _ ^ _; cHasDiaB=B cMatchesDiaB {attach {to=@B; at=diaB; with=diaB_}; insert = selectDiac} / _ ^ [ cAnyMarksAbove [ cAnyMarksAbove cAnyMarksAbove? ]? ]? _; endpass; table(glyph) cNoonGhunna = (absNoonGhunna absNoonGhunnaIni absNoonGhunnaMed absNoonGhunnaFin); cKafLikeIniMed = (absKafIni absKafMed absKehehIni absKehehMed); cBehLikeIniMed = (absBehIni absBehMed); cTehLikeIniMed = (absTehIni absThehIni absTtehIni absTtehehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absTehehIni absTehMed absThehMed absTtehMed absTtehehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absTehehMed); cPehLikeIniMed = (absPehIni absBehehIni absBeehIni absPehMed absBehehMed absBeehMed); cTchehLikeFin = (absTchehFin absHahFin absJeemFin absKafFin absHahHamzaAboveFin absHahTwoDotsVerticalAboveFin absNyehFin absDyehFin absHahThreeDotsAboveFin absTchehFin absTchehehFin absTchehDotAboveFin absTchehRetro1Fin absTchehRetro2Fin absJeemRetro1Fin absJeemRetro2Fin absJeemRetro3Fin absHahTwoDotsAboveFin absHahThreeDotsUpwardBelowFin); cKehehLikeFin = (absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFin absGafTwoDotsBelowFin absGuehFin absGafThreeDotsAboveFin absKehehDotAboveFin absKehehThreeDotsAboveFin absKehehThreeDotsUpwardBelowFin); absAutoKashida {dbgAw = advancewidth; dbgBbW = boundingbox.width}; endtable; table(substitution) pass(6) cKafLikeIniMed _ > @1 absAutoKashida:R / _ [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? _ absRnoonMed=R; absFarsiYehIni _ > @1 absAutoKashida:Y / _ [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? _ (absYehFin absYehHamzaAboveFin)=Y; (absKehehIni absTchehIni absTchehMed absGafIni absNoonMed absAlef) _ > @1 absAutoKashida:R / _ [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? _ absRrehFin=R ; endpass; endtable; pass(3) #line 427 cKafLikeIniMed [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? absAutoKashida {kern.x = -30m} absRnoonMed {kern.x = -30m}; absFarsiYehIni [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? absAutoKashida {kern.x = -30m} (absYehFin absYehHamzaAboveFin) {kern.x = -30m}; (absKehehIni absTchehIni absTchehMed absGafIni absNoonMed absAlef) [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? absAutoKashida {kern.x = -40m} absRrehFin {kern.x = -40m }; absAlef [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? absRreh {kern.x = 70m} ; (absAlef absAlefFin) [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? (absHeh absHehGoal absHehGoalIni) absNameMarker {shift.y = 220m}; (absAlef absAlefFin) cDiaDigitAbove [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? (absHeh absHehGoal absHehGoalIni) absNameMarker {shift.x = 275m}; cNoonGhunna (absNoonGhunnaMark absVowelInvSmallV) {shift.y = -75m} / (absKafIni absKafMed absKehehIni absKehehMed) _ _; cNoonGhunna (absNoonGhunnaMark absVowelInvSmallV) {shift.y = -150m}; if (kasraTcheh == raise) cBehLikeIniMed absKasra {shift.x = -60m; shift.y = 125m} cTchehLikeFin; cBehLikeIniMed absKasratan {shift.x = -100m; shift.y = 30m} cTchehLikeFin; endif; if (kasraTcheh == lower) cBehLikeIniMed absKasra {shift.x = -40m; shift.y = -200m} cTchehLikeFin; cBehLikeIniMed absKasratan {shift.x = -60m; shift.y = -130m} cTchehLikeFin; endif; cPehLikeIniMed absKasra {shift.y = -50m} cTchehLikeFin; cPehLikeIniMed absKasratan {shift.x = -50m} cTchehLikeFin; cTehLikeIniMed absKasratan {shift.x = -80m} cTchehLikeFin; absAlef absMaddahAbove {shift.x = -130m} absGaf {kern.x = 30m}; absAlef absMaddahAbove {shift.x = -120m} absGafIni {kern.x = 70m}; cBehLikeIniMed [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? absRehBarFin {kern.x = 50m}; cPehLikeIniMed [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? absRehBarFin {kern.x = 70m}; (cBehLikeIniMed cPehLikeIniMed cTehLikeIniMed) [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? cMark2Above [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? absJehRetro1Fin {kern.x = 65m}; (absKehehThreeDotsAboveIni absKehehThreeDotsAboveMed) [ cAnyMarks [ cAnyMarks [ cAnyMarks cAnyMarks? ]? ]? ]? cKehehLikeFin {kern.x = 70m}; endpass; endtable; endenvironment; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/dbg_classes.txt000066400000000000000000000415721411153030700257550ustar00rootroot00000000000000LINEAR (OUTPUT) CLASSES Class #0: *GC0* 0: 0x000d 0x0022 0x0041 0x0061 0x000c 0x0020 0x003f 0x005f Class #1: *GC10* 0: 0x00ee 0x0347 0x0349 0x034c 0x034b 0x034d 0x030f 0x0316 0x0311 0x031b 10: 0x0320 0x0321 0x0310 0x0322 0x031d 0x031c 0x031e 0x031f 0x0340 0x0343 20: 0x034f 0x0329 0x030d 0x030b 0x034e 0x0351 0x0350 0x0353 0x0356 0x0355 30: 0x0361 0x0362 0x0366 0x0364 0x0348 0x034a 0x0365 0x0324 0x0326 0x032a 40: 0x0334 0x0333 0x0327 0x0380 0x037e 0x0383 0x0384 0x037f 0x0382 0x030a 50: 0x0323 0x0330 0x0331 0x0332 0x035b 0x035c 0x0360 0x035e 0x035f 0x0367 60: 0x0368 0x0369 0x0325 0x036b 0x0371 0x036d 0x0370 0x036c 0x036e 0x036f 70: 0x0372 0x0373 0x0374 0x035d 0x0363 0x0375 0x0376 0x0377 0x037c 0x0379 80: 0x037d 0x037a 0x037b 0x0328 0x0319 0x0354 0x0358 0x0359 0x0357 0x035a 90: 0x0378 0x033f 0x0342 0x0341 0x0335 0x0337 0x033d 0x0338 0x0339 0x033e 100: 0x0336 0x033a 0x033b 0x033c 0x036a 0x0344 0x0346 0x032b 0x032d 0x032e 110: 0x032f 0x032c 0x0312 0x031a 0x0317 0x0318 0x0313 0x0314 0x0315 0x0352 120: 0x0308 0x0307 0x030c 0x030e 0x0345 0x02c8 0x02ca 0x02cd 0x02cc 0x02ce 130: 0x0290 0x0297 0x0292 0x029c 0x02a1 0x02a2 0x0291 0x02a3 0x029e 0x029d 140: 0x029f 0x02a0 0x02c1 0x02c4 0x02d0 0x02aa 0x028e 0x028c 0x02cf 0x02d2 150: 0x02d1 0x02d4 0x02d7 0x02d6 0x02e2 0x02e3 0x02e7 0x02e5 0x02c9 0x02cb 160: 0x02e6 0x02a5 0x02a7 0x02ab 0x02b5 0x02b4 0x02a8 0x0301 0x02ff 0x0305 170: 0x0306 0x0300 0x0304 0x028b 0x02a4 0x02b1 0x02b2 0x02b3 0x02dc 0x02dd 180: 0x02e1 0x02df 0x02e0 0x02e8 0x02e9 0x02ea 0x02a6 0x02ec 0x02f2 0x02ee 190: 0x02f1 0x02ed 0x02ef 0x02f0 0x02f3 0x02f4 0x02f5 0x02de 0x02e4 0x02f6 200: 0x02f7 0x02f8 0x02fd 0x02fa 0x02fe 0x02fb 0x02fc 0x02a9 0x029a 0x02d5 210: 0x02d9 0x02da 0x02d8 0x02db 0x02f9 0x02c0 0x02c3 0x02c2 0x02b6 0x02b8 220: 0x02be 0x02b9 0x02ba 0x02bf 0x02b7 0x02bb 0x02bc 0x02bd 0x02eb 0x02c5 230: 0x02c7 0x02ac 0x02ae 0x02af 0x02b0 0x02ad 0x0293 0x029b 0x0298 0x0299 240: 0x0294 0x0295 0x0296 0x02d3 0x0289 0x0288 0x028d 0x028f 0x02c6 0x01bc Class #2: *GC11* 0: 0x00ee 0x023d 0x023f 0x0242 0x0241 0x0243 0x0205 0x020c 0x0207 0x0211 10: 0x0216 0x0217 0x0206 0x0218 0x0213 0x0212 0x0214 0x0215 0x0236 0x0239 20: 0x0245 0x021f 0x0202 0x0200 0x0244 0x0247 0x0246 0x0249 0x024c 0x024b 30: 0x0257 0x0258 0x025c 0x025a 0x023e 0x0240 0x025b 0x021a 0x021c 0x0220 40: 0x022a 0x0229 0x021d 0x0277 0x0275 0x027e 0x027f 0x0276 0x027d 0x01ff 50: 0x0219 0x0226 0x0227 0x0228 0x0251 0x0252 0x0256 0x0254 0x0255 0x025d 60: 0x025e 0x025f 0x021b 0x0261 0x0267 0x0263 0x0266 0x0262 0x0264 0x0265 70: 0x0268 0x026a 0x026b 0x0253 0x0259 0x026c 0x026d 0x026e 0x0273 0x0270 80: 0x0274 0x0271 0x0272 0x021e 0x020f 0x024a 0x024e 0x024f 0x024d 0x0250 90: 0x026f 0x0235 0x0238 0x0237 0x022b 0x022d 0x0233 0x022e 0x022f 0x0234 100: 0x022c 0x0230 0x0231 0x0232 0x0260 0x023a 0x023c 0x0221 0x0223 0x0224 110: 0x0225 0x0222 0x0208 0x0210 0x020d 0x020e 0x0209 0x020a 0x020b 0x0248 120: 0x01fd 0x01fc 0x0201 0x0203 0x023b 0x027b 0x01c7 0x01c5 0x01c6 0x01c4 130: 0x01cb 0x01c8 0x01c9 0x01e0 0x01da 0x01de 0x01e4 0x01e5 0x01e7 0x01dd 140: 0x01e3 0x01e6 0x01e1 0x01dc 0x01e2 0x01ca 0x01ce 0x01f1 0x01f7 0x01f5 150: 0x01f6 0x01d1 0x01d5 0x0281 0x0287 0x0283 0x0286 0x0282 0x0284 0x0285 160: 0x01d2 0x01e8 0x01f9 0x01ed 0x01ef 0x01f2 0x01f4 0x01f8 0x01ec 0x01f0 170: 0x01f3 0x01ea 0x027c 0x0280 0x01db 0x01d3 0x01cf 0x01d7 0x01cd 0x01d8 180: 0x01d9 0x01cc 0x01d0 0x01d6 0x01fa 0x01fb 0x0204 0x01d4 0x01e9 0x01bc Class #3: absAlef 0: 0x0101 Class #4: absAutoKashida 0: 0x045c Class #5: absSuperscriptAlef__large 0: 0x039d Class #6: cAlefFinPostLamIni 0: 0x0499 0x049c 0x0497 0x0498 0x0496 0x049d 0x049a 0x049b Class #7: cAlefFinPostLamMed 0: 0x04a8 0x04ab 0x04a6 0x04a7 0x04a5 0x04ac 0x04a9 0x04aa Class #8: cAlefMark 0: 0x0390 0x0391 0x0392 Class #9: cDigitMedium 0: 0x03f4 0x03f5 0x03f6 0x03f7 0x03f8 0x03f9 0x03fa 0x03fb 0x03fc 0x03fd 10: 0x03fe 0x03ff 0x0400 0x0401 0x0402 0x0403 0x0404 0x0405 0x0406 0x0407 20: 0x0408 0x0409 0x040a Class #10: cDigitSmall 0: 0x0415 0x0416 0x0417 0x0418 0x0419 0x041a 0x041b 0x041c 0x041d 0x041e 10: 0x041f 0x0420 0x0421 0x0422 0x0423 0x0424 0x0425 0x0426 0x0427 0x0428 20: 0x0429 0x042a 0x042b Class #11: cDownward 0: 0x03b7 0x03c2 Class #12: cEasternDigitSindhi 0: 0x03e1 0x03e5 0x03e7 0x0402 0x0406 0x0408 0x0423 0x0427 0x0429 0x04c0 10: 0x04c1 Class #13: cEasternDigitUrdu 0: 0x03e2 0x03e5 0x03e7 0x0403 0x0406 0x0408 0x0424 0x0427 0x0429 0x04c2 10: 0x04c3 Class #14: cEndOfAyahCircle 0: 0x03cb 0x0483 0x0484 Class #15: cEndOfAyahSquare 0: 0x03cc 0x0485 0x0486 Class #16: cHehKurdish 0: 0x01b2 0x0380 0x0301 0x0279 Class #17: cHehSindhi 0: 0x01b2 0x0380 0x0303 0x0279 Class #18: cHehUrdu 0: 0x01b1 0x0381 0x0302 0x027a Class #19: cLamIniPreAlef 0: 0x048f 0x0495 0x0491 0x0494 0x0490 0x0492 0x0493 Class #20: cLamMedPreAlef 0: 0x049e 0x04a4 0x04a0 0x04a3 0x049f 0x04a1 0x04a2 Class #21: cMeemSindhi 0: 0x01a3 0x0372 0x02f3 0x0269 Class #22: cOpenLeft 0: 0x0459 Class #23: cShaddaKasraLigatures 0: 0x0455 0x0452 Class #24: cSign1 0: 0x03b2 0x03b1 0x03b4 0x03ca 0x03cb 0x03cc 0x03b3 Class #25: cSign2 0: 0x0489 0x0487 0x048d 0x0481 0x0483 0x0485 0x03b3 Class #26: cSign3Medium 0: 0x048a 0x0488 0x048e Class #27: cSign3Small 0: 0x0482 0x0484 0x0486 Class #28: cSign4 0: 0x048b Class #29: cSixNine 0: 0x045b Class #30: cSukunDownOpen 0: 0x045a Class #31: cSukunLeftOpen 0: 0x0459 Class #32: cUnencodedGlyph 0: 0x0160 0x015f 0x016c 0x012f 0x0162 Class #33: cUnencodedGlyphPart1 0: 0x0101 0x0101 0x013a 0x013a 0x013a 0x0107 0x0107 0x0134 0x0134 0x0154 10: 0x0165 Class #34: cUnencodedGlyphPart2 0: 0x04be 0x04bf 0x04be 0x04bf 0x04c1 0x04be 0x04bf 0x04be 0x04bf 0x04c1 10: 0x04c0 Class #35: cWithLoweredHamza 0: 0x0106 0x0136 0x01b5 0x01b7 0x01cc 0x01fc 0x027d 0x027f 0x0288 0x0304 10: 0x0306 0x0307 0x0382 0x0384 Class #36: zeroWidthSpace 0: 0x00ec Class #37: absSuperscriptAlef 0: 0x039c Class #38: cSignTakes4 0: 0x03b2 Class #39: cno_OpenLeft 0: 0x03a7 Class #40: cno_SixNine 0: 0x0389 Class #41: cno_Sukun 0: 0x038f INDEXED (INPUT) CLASSES Class #42: *GC1* 0x000c : 0 0x000d : 4 0x0020 : 1 0x0022 : 5 0x003f : 2 0x0041 : 6 0x005f : 3 0x0061 : 7 Class #43: *GC12* 0x00ee : 0 0x0136 : 121 0x0137 : 120 0x0139 : 49 0x013a : 23 0x013b : 122 0x013c : 22 0x013d : 123 0x013f : 6 0x0140 : 12 0x0141 : 8 0x0142 : 112 0x0143 : 116 0x0144 : 117 0x0145 : 118 0x0146 : 7 0x0147 : 114 0x0148 : 115 0x0149 : 84 0x014a : 113 0x014b : 9 0x014c : 15 0x014d : 14 0x014e : 16 0x014f : 17 0x0150 : 10 0x0151 : 11 0x0152 : 13 0x0153 : 50 0x0154 : 37 0x0155 : 62 0x0156 : 38 0x0157 : 42 0x0158 : 83 0x0159 : 21 0x015a : 39 0x015b : 107 0x015c : 111 0x015d : 108 0x015e : 109 0x015f : 110 0x0160 : 51 0x0161 : 52 0x0162 : 53 0x0163 : 41 0x0164 : 40 0x0165 : 94 0x0166 : 100 0x0167 : 95 0x0168 : 97 0x0169 : 98 0x016a : 101 0x016b : 102 0x016c : 103 0x016d : 96 0x016e : 99 0x016f : 91 0x0170 : 18 0x0171 : 93 0x0172 : 92 0x0173 : 19 0x0174 : 105 0x0175 : 124 0x0176 : 106 0x0177 : 1 0x0178 : 34 0x0179 : 2 0x017a : 35 0x017b : 4 0x017c : 3 0x017d : 5 0x017e : 24 0x017f : 20 0x0180 : 26 0x0181 : 25 0x0182 : 119 0x0183 : 27 0x0184 : 85 0x0185 : 29 0x0186 : 28 0x0187 : 88 0x0188 : 86 0x0189 : 87 0x018a : 89 0x018b : 54 0x018c : 55 0x018d : 73 0x018e : 57 0x018f : 58 0x0190 : 56 0x0191 : 30 0x0192 : 31 0x0193 : 74 0x0194 : 33 0x0195 : 36 0x0196 : 32 0x0197 : 59 0x0198 : 60 0x0199 : 61 0x019a : 104 0x019b : 63 0x019c : 67 0x019d : 65 0x019e : 68 0x019f : 69 0x01a0 : 66 0x01a1 : 64 0x01a2 : 70 0x01a4 : 71 0x01a5 : 72 0x01a6 : 75 0x01a7 : 76 0x01a8 : 77 0x01a9 : 90 0x01aa : 79 0x01ab : 81 0x01ac : 82 0x01ad : 78 0x01ae : 80 0x01af : 44 0x01b0 : 47 0x01b1 : 43 0x01b5 : 48 0x01b6 : 45 0x01b7 : 46 0x01bc : 249 0x01fc : 245 0x01fd : 244 0x01ff : 173 0x0200 : 147 0x0201 : 246 0x0202 : 146 0x0203 : 247 0x0205 : 130 0x0206 : 136 0x0207 : 132 0x0208 : 236 0x0209 : 240 0x020a : 241 0x020b : 242 0x020c : 131 0x020d : 238 0x020e : 239 0x020f : 208 0x0210 : 237 0x0211 : 133 0x0212 : 139 0x0213 : 138 0x0214 : 140 0x0215 : 141 0x0216 : 134 0x0217 : 135 0x0218 : 137 0x0219 : 174 0x021a : 161 0x021b : 186 0x021c : 162 0x021d : 166 0x021e : 207 0x021f : 145 0x0220 : 163 0x0221 : 231 0x0222 : 235 0x0223 : 232 0x0224 : 233 0x0225 : 234 0x0226 : 175 0x0227 : 176 0x0228 : 177 0x0229 : 165 0x022a : 164 0x022b : 218 0x022c : 224 0x022d : 219 0x022e : 221 0x022f : 222 0x0230 : 225 0x0231 : 226 0x0232 : 227 0x0233 : 220 0x0234 : 223 0x0235 : 215 0x0236 : 142 0x0237 : 217 0x0238 : 216 0x0239 : 143 0x023a : 229 0x023b : 248 0x023c : 230 0x023d : 125 0x023e : 158 0x023f : 126 0x0240 : 159 0x0241 : 128 0x0242 : 127 0x0243 : 129 0x0244 : 148 0x0245 : 144 0x0246 : 150 0x0247 : 149 0x0248 : 243 0x0249 : 151 0x024a : 209 0x024b : 153 0x024c : 152 0x024d : 212 0x024e : 210 0x024f : 211 0x0250 : 213 0x0251 : 178 0x0252 : 179 0x0253 : 197 0x0254 : 181 0x0255 : 182 0x0256 : 180 0x0257 : 154 0x0258 : 155 0x0259 : 198 0x025a : 157 0x025b : 160 0x025c : 156 0x025d : 183 0x025e : 184 0x025f : 185 0x0260 : 228 0x0261 : 187 0x0262 : 191 0x0263 : 189 0x0264 : 192 0x0265 : 193 0x0266 : 190 0x0267 : 188 0x0268 : 194 0x026a : 195 0x026b : 196 0x026c : 199 0x026d : 200 0x026e : 201 0x026f : 214 0x0270 : 203 0x0271 : 205 0x0272 : 206 0x0273 : 202 0x0274 : 204 0x0275 : 168 0x0276 : 171 0x0277 : 167 0x027d : 172 0x027e : 169 0x027f : 170 Class #44: *GC13* 0x00ee : 0 0x00fe : 129 0x00ff : 127 0x0100 : 128 0x0101 : 126 0x0102 : 131 0x0103 : 132 0x0104 : 145 0x0105 : 130 0x0106 : 181 0x0107 : 178 0x0108 : 146 0x0109 : 176 0x010a : 182 0x010b : 151 0x010c : 160 0x010d : 175 0x010e : 187 0x010f : 152 0x0110 : 183 0x0111 : 177 0x0112 : 179 0x0113 : 180 0x0114 : 134 0x0115 : 174 0x0116 : 143 0x0117 : 139 0x0118 : 135 0x011a : 133 0x011b : 142 0x011c : 144 0x011d : 140 0x011e : 136 0x011f : 137 0x0120 : 141 0x0121 : 138 0x0122 : 161 0x0123 : 188 0x0124 : 171 0x0126 : 168 0x0127 : 163 0x0129 : 164 0x012a : 169 0x012b : 147 0x012c : 165 0x012d : 170 0x012e : 166 0x012f : 149 0x0130 : 150 0x0131 : 148 0x0132 : 167 0x0133 : 162 0x0134 : 184 0x0135 : 185 0x0136 : 121 0x0137 : 120 0x0139 : 49 0x013a : 23 0x013b : 122 0x013c : 22 0x013d : 123 0x013e : 186 0x013f : 6 0x0140 : 12 0x0141 : 8 0x0142 : 112 0x0143 : 116 0x0144 : 117 0x0145 : 118 0x0146 : 7 0x0147 : 114 0x0148 : 115 0x0149 : 84 0x014a : 113 0x014b : 9 0x014c : 15 0x014d : 14 0x014e : 16 0x014f : 17 0x0150 : 10 0x0151 : 11 0x0152 : 13 0x0153 : 50 0x0154 : 37 0x0155 : 62 0x0156 : 38 0x0157 : 42 0x0158 : 83 0x0159 : 21 0x015a : 39 0x015b : 107 0x015c : 111 0x015d : 108 0x015e : 109 0x015f : 110 0x0160 : 51 0x0161 : 52 0x0162 : 53 0x0163 : 41 0x0164 : 40 0x0165 : 94 0x0166 : 100 0x0167 : 95 0x0168 : 97 0x0169 : 98 0x016a : 101 0x016b : 102 0x016c : 103 0x016d : 96 0x016e : 99 0x016f : 91 0x0170 : 18 0x0171 : 93 0x0172 : 92 0x0173 : 19 0x0174 : 105 0x0175 : 124 0x0176 : 106 0x0177 : 1 0x0178 : 34 0x0179 : 2 0x017a : 35 0x017b : 4 0x017c : 3 0x017d : 5 0x017e : 24 0x017f : 20 0x0180 : 26 0x0181 : 25 0x0182 : 119 0x0183 : 27 0x0184 : 85 0x0185 : 29 0x0186 : 28 0x0187 : 88 0x0188 : 86 0x0189 : 87 0x018a : 89 0x018b : 54 0x018c : 55 0x018d : 73 0x018e : 57 0x018f : 58 0x0190 : 56 0x0191 : 30 0x0192 : 31 0x0193 : 74 0x0194 : 33 0x0195 : 36 0x0196 : 32 0x0197 : 59 0x0198 : 60 0x0199 : 61 0x019a : 104 0x019b : 63 0x019c : 67 0x019d : 65 0x019e : 68 0x019f : 69 0x01a0 : 66 0x01a1 : 64 0x01a2 : 70 0x01a4 : 71 0x01a5 : 72 0x01a6 : 75 0x01a7 : 76 0x01a8 : 77 0x01a9 : 90 0x01aa : 79 0x01ab : 81 0x01ac : 82 0x01ad : 78 0x01ae : 80 0x01af : 44 0x01b0 : 47 0x01b1 : 43 0x01b3 : 125 0x01b4 : 172 0x01b5 : 48 0x01b6 : 45 0x01b7 : 46 0x01b8 : 173 0x01bc : 189 0x01bd : 153 0x01be : 157 0x01bf : 155 0x01c0 : 158 0x01c1 : 159 0x01c2 : 156 0x01c3 : 154 Class #45: cAlefIso 0x00fe : 4 0x00ff : 2 0x0100 : 3 0x0101 : 0 0x0102 : 6 0x0103 : 7 0x0104 : 1 0x0105 : 5 Class #46: cAlefPlusMark 0x00fe : 0 0x00ff : 1 0x0100 : 2 Class #47: cDigitNormal 0x03d3 : 0 0x03d4 : 1 0x03d5 : 2 0x03d6 : 3 0x03d7 : 4 0x03d8 : 5 0x03d9 : 6 0x03da : 7 0x03db : 8 0x03dc : 9 0x03dd : 10 0x03de : 11 0x03df : 12 0x03e0 : 13 0x03e1 : 14 0x03e2 : 15 0x03e3 : 16 0x03e4 : 17 0x03e5 : 18 0x03e6 : 19 0x03e7 : 20 0x03e8 : 21 0x03e9 : 22 Class #48: cEasternDigit 0x03e1 : 0 0x03e4 : 1 0x03e6 : 2 0x0402 : 3 0x0405 : 4 0x0407 : 5 0x0423 : 6 0x0426 : 7 0x0428 : 8 0x04c0 : 9 0x04c1 : 10 Class #49: cEndOfAyah 0x03ca : 0 0x0481 : 1 0x0482 : 2 Class #50: cInvisible 0x00ed : 1 0x00ee : 0 0x00ef : 2 0x00f0 : 3 0x00f3 : 4 0x00f4 : 5 0x00f5 : 6 0x00f6 : 7 0x00f7 : 8 Class #51: cLamFin 0x0261 : 0 0x0262 : 4 0x0263 : 2 0x0264 : 5 0x0265 : 6 0x0266 : 3 0x0267 : 1 Class #52: cLamIso 0x019b : 0 0x019c : 4 0x019d : 2 0x019e : 5 0x019f : 6 0x01a0 : 3 0x01a1 : 1 Class #53: cNeedsLoweredHamza 0x0107 : 0 0x0137 : 1 0x01b1 : 2 0x01b6 : 3 0x01cd : 4 0x01fd : 5 0x0277 : 6 0x027e : 7 0x0289 : 8 0x0301 : 9 0x0305 : 10 0x0308 : 11 0x0380 : 12 0x0383 : 13 Class #54: cShaddaKasraMarks 0x038a : 1 0x038d : 0 Class #55: cSignTakes1 0x03b1 : 1 0x03b2 : 0 0x03b3 : 6 0x03b4 : 2 0x03ca : 3 0x03cb : 4 0x03cc : 5 Class #56: cSignTakes2 0x03b1 : 1 0x03b2 : 0 0x03b3 : 6 0x03b4 : 2 0x03ca : 3 0x03cb : 4 0x03cc : 5 Class #57: cSignTakes3Medium 0x03b1 : 1 0x03b2 : 0 0x03b4 : 2 Class #58: cSignTakes3Small 0x03ca : 0 0x03cb : 1 0x03cc : 2 Class #59: cUnencodedChar 0x04ae : 0 0x04af : 1 0x04b0 : 2 0x04b1 : 3 0x04b2 : 4 Class #60: cUnencodedChar2Parts 0x04b3 : 0 0x04b4 : 1 0x04b5 : 2 0x04b6 : 3 0x04b7 : 4 0x04b8 : 5 0x04b9 : 6 0x04ba : 7 0x04bb : 8 0x04bc : 9 0x04bd : 10 Class #61: cno_Downward 0x03b6 : 0 0x03c1 : 1 Class #62: cno_Heh 0x01b1 : 0 0x0277 : 3 0x0301 : 2 0x0380 : 1 Class #63: cno_Meem 0x01a2 : 0 0x0268 : 3 0x02f3 : 2 0x0372 : 1 grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/dbg_cmap.txt000066400000000000000000000651321411153030700252360ustar00rootroot00000000000000UNICODE => GLYPH ID MAPPINGS U+0009 => 4 (0x0004) U+0020 => 3 (0x0003) U+0021 => 5 (0x0005) U+0022 => 6 (0x0006) U+0023 => 7 (0x0007) U+0024 => 8 (0x0008) U+0025 => 9 (0x0009) U+0026 => 10 (0x000a) U+0027 => 11 (0x000b) U+0028 => 12 (0x000c) U+0029 => 13 (0x000d) U+002A => 14 (0x000e) U+002B => 15 (0x000f) U+002C => 16 (0x0010) U+002D => 17 (0x0011) U+002E => 18 (0x0012) U+002F => 19 (0x0013) U+0030 => 20 (0x0014) U+0031 => 21 (0x0015) U+0032 => 22 (0x0016) U+0033 => 23 (0x0017) U+0034 => 24 (0x0018) U+0035 => 25 (0x0019) U+0036 => 26 (0x001a) U+0037 => 27 (0x001b) U+0038 => 28 (0x001c) U+0039 => 29 (0x001d) U+003A => 30 (0x001e) U+003B => 31 (0x001f) U+003C => 32 (0x0020) U+003D => 33 (0x0021) U+003E => 34 (0x0022) U+003F => 35 (0x0023) U+0040 => 36 (0x0024) U+0041 => 37 (0x0025) U+0042 => 38 (0x0026) U+0043 => 39 (0x0027) U+0044 => 40 (0x0028) U+0045 => 41 (0x0029) U+0046 => 42 (0x002a) U+0047 => 43 (0x002b) U+0048 => 44 (0x002c) U+0049 => 45 (0x002d) U+004A => 46 (0x002e) U+004B => 47 (0x002f) U+004C => 48 (0x0030) U+004D => 49 (0x0031) U+004E => 50 (0x0032) U+004F => 51 (0x0033) U+0050 => 52 (0x0034) U+0051 => 53 (0x0035) U+0052 => 54 (0x0036) U+0053 => 55 (0x0037) U+0054 => 56 (0x0038) U+0055 => 57 (0x0039) U+0056 => 58 (0x003a) U+0057 => 59 (0x003b) U+0058 => 60 (0x003c) U+0059 => 61 (0x003d) U+005A => 62 (0x003e) U+005B => 63 (0x003f) U+005C => 64 (0x0040) U+005D => 65 (0x0041) U+005E => 66 (0x0042) U+005F => 67 (0x0043) U+0060 => 68 (0x0044) U+0061 => 69 (0x0045) U+0062 => 70 (0x0046) U+0063 => 71 (0x0047) U+0064 => 72 (0x0048) U+0065 => 73 (0x0049) U+0066 => 74 (0x004a) U+0067 => 75 (0x004b) U+0068 => 76 (0x004c) U+0069 => 77 (0x004d) U+006A => 78 (0x004e) U+006B => 79 (0x004f) U+006C => 80 (0x0050) U+006D => 81 (0x0051) U+006E => 82 (0x0052) U+006F => 83 (0x0053) U+0070 => 84 (0x0054) U+0071 => 85 (0x0055) U+0072 => 86 (0x0056) U+0073 => 87 (0x0057) U+0074 => 88 (0x0058) U+0075 => 89 (0x0059) U+0076 => 90 (0x005a) U+0077 => 91 (0x005b) U+0078 => 92 (0x005c) U+0079 => 93 (0x005d) U+007A => 94 (0x005e) U+007B => 95 (0x005f) U+007C => 96 (0x0060) U+007D => 97 (0x0061) U+007E => 98 (0x0062) U+00A0 => 126 (0x007e) U+00A1 => 127 (0x007f) U+00A2 => 128 (0x0080) U+00A3 => 129 (0x0081) U+00A4 => 130 (0x0082) U+00A5 => 131 (0x0083) U+00A6 => 132 (0x0084) U+00A7 => 133 (0x0085) U+00A8 => 134 (0x0086) U+00A9 => 135 (0x0087) U+00AA => 136 (0x0088) U+00AB => 137 (0x0089) U+00AC => 139 (0x008b) U+00AD => 140 (0x008c) U+00AE => 141 (0x008d) U+00AF => 142 (0x008e) U+00B0 => 144 (0x0090) U+00B1 => 145 (0x0091) U+00B2 => 146 (0x0092) U+00B3 => 147 (0x0093) U+00B4 => 148 (0x0094) U+00B5 => 149 (0x0095) U+00B6 => 150 (0x0096) U+00B7 => 151 (0x0097) U+00B8 => 153 (0x0099) U+00B9 => 154 (0x009a) U+00BA => 155 (0x009b) U+00BB => 138 (0x008a) U+00BC => 156 (0x009c) U+00BD => 157 (0x009d) U+00BE => 158 (0x009e) U+00BF => 159 (0x009f) U+00C0 => 160 (0x00a0) U+00C1 => 161 (0x00a1) U+00C2 => 162 (0x00a2) U+00C3 => 163 (0x00a3) U+00C4 => 164 (0x00a4) U+00C5 => 165 (0x00a5) U+00C6 => 166 (0x00a6) U+00C7 => 167 (0x00a7) U+00C8 => 168 (0x00a8) U+00C9 => 169 (0x00a9) U+00CA => 170 (0x00aa) U+00CB => 171 (0x00ab) U+00CC => 172 (0x00ac) U+00CD => 173 (0x00ad) U+00CE => 174 (0x00ae) U+00CF => 175 (0x00af) U+00D0 => 176 (0x00b0) U+00D1 => 177 (0x00b1) U+00D2 => 178 (0x00b2) U+00D3 => 179 (0x00b3) U+00D4 => 180 (0x00b4) U+00D5 => 181 (0x00b5) U+00D6 => 182 (0x00b6) U+00D7 => 183 (0x00b7) U+00D8 => 184 (0x00b8) U+00D9 => 185 (0x00b9) U+00DA => 186 (0x00ba) U+00DB => 187 (0x00bb) U+00DC => 188 (0x00bc) U+00DD => 189 (0x00bd) U+00DE => 190 (0x00be) U+00DF => 191 (0x00bf) U+00E0 => 192 (0x00c0) U+00E1 => 193 (0x00c1) U+00E2 => 194 (0x00c2) U+00E3 => 195 (0x00c3) U+00E4 => 196 (0x00c4) U+00E5 => 197 (0x00c5) U+00E6 => 198 (0x00c6) U+00E7 => 199 (0x00c7) U+00E8 => 200 (0x00c8) U+00E9 => 201 (0x00c9) U+00EA => 202 (0x00ca) U+00EB => 203 (0x00cb) U+00EC => 204 (0x00cc) U+00ED => 205 (0x00cd) U+00EE => 206 (0x00ce) U+00EF => 207 (0x00cf) U+00F0 => 208 (0x00d0) U+00F1 => 209 (0x00d1) U+00F2 => 210 (0x00d2) U+00F3 => 211 (0x00d3) U+00F4 => 212 (0x00d4) U+00F5 => 213 (0x00d5) U+00F6 => 214 (0x00d6) U+00F7 => 215 (0x00d7) U+00F8 => 216 (0x00d8) U+00F9 => 217 (0x00d9) U+00FA => 218 (0x00da) U+00FB => 219 (0x00db) U+00FC => 220 (0x00dc) U+00FD => 221 (0x00dd) U+00FE => 222 (0x00de) U+00FF => 223 (0x00df) U+0131 => 224 (0x00e0) U+0152 => 111 (0x006f) U+0153 => 123 (0x007b) U+0160 => 108 (0x006c) U+0161 => 122 (0x007a) U+0178 => 125 (0x007d) U+017D => 112 (0x0070) U+017E => 124 (0x007c) U+0192 => 101 (0x0065) U+02C6 => 106 (0x006a) U+02C7 => 1118 (0x045e) U+02C9 => 143 (0x008f) U+02DA => 1117 (0x045d) U+02DC => 120 (0x0078) U+0600 => 945 (0x03b1) U+0601 => 946 (0x03b2) U+0602 => 947 (0x03b3) U+0603 => 948 (0x03b4) U+060B => 949 (0x03b5) U+060C => 950 (0x03b6) U+060D => 952 (0x03b8) U+060E => 953 (0x03b9) U+060F => 954 (0x03ba) U+0610 => 955 (0x03bb) U+0611 => 956 (0x03bc) U+0612 => 957 (0x03bd) U+0613 => 958 (0x03be) U+0614 => 959 (0x03bf) U+0615 => 960 (0x03c0) U+061B => 961 (0x03c1) U+061E => 963 (0x03c3) U+061F => 964 (0x03c4) U+0621 => 441 (0x01b9) U+0622 => 254 (0x00fe) U+0623 => 255 (0x00ff) U+0624 => 262 (0x0106) U+0625 => 256 (0x0100) U+0626 => 310 (0x0136) U+0627 => 257 (0x0101) U+0628 => 321 (0x0141) U+0629 => 436 (0x01b4) U+062A => 322 (0x0142) U+062B => 323 (0x0143) U+062C => 339 (0x0153) U+062D => 340 (0x0154) U+062E => 341 (0x0155) U+062F => 276 (0x0114) U+0630 => 277 (0x0115) U+0631 => 290 (0x0122) U+0632 => 291 (0x0123) U+0633 => 357 (0x0165) U+0634 => 358 (0x0166) U+0635 => 367 (0x016f) U+0636 => 368 (0x0170) U+0637 => 372 (0x0174) U+0638 => 373 (0x0175) U+0639 => 375 (0x0177) U+063A => 376 (0x0178) U+0640 => 444 (0x01bc) U+0641 => 382 (0x017e) U+0642 => 392 (0x0188) U+0643 => 395 (0x018b) U+0644 => 411 (0x019b) U+0645 => 418 (0x01a2) U+0646 => 422 (0x01a6) U+0647 => 433 (0x01b1) U+0648 => 263 (0x0107) U+0649 => 319 (0x013f) U+064A => 311 (0x0137) U+064B => 904 (0x0388) U+064C => 905 (0x0389) U+064D => 906 (0x038a) U+064E => 907 (0x038b) U+064F => 908 (0x038c) U+0650 => 909 (0x038d) U+0651 => 910 (0x038e) U+0652 => 911 (0x038f) U+0653 => 912 (0x0390) U+0654 => 913 (0x0391) U+0655 => 914 (0x0392) U+0656 => 915 (0x0393) U+0657 => 916 (0x0394) U+0658 => 917 (0x0395) U+0659 => 918 (0x0396) U+065A => 919 (0x0397) U+065B => 920 (0x0398) U+065C => 921 (0x0399) U+065D => 922 (0x039a) U+065E => 923 (0x039b) U+0660 => 979 (0x03d3) U+0661 => 980 (0x03d4) U+0662 => 981 (0x03d5) U+0663 => 982 (0x03d6) U+0664 => 983 (0x03d7) U+0665 => 984 (0x03d8) U+0666 => 985 (0x03d9) U+0667 => 986 (0x03da) U+0668 => 987 (0x03db) U+0669 => 988 (0x03dc) U+066A => 965 (0x03c5) U+066B => 966 (0x03c6) U+066C => 967 (0x03c7) U+066D => 968 (0x03c8) U+066E => 320 (0x0140) U+066F => 391 (0x0187) U+0670 => 924 (0x039c) U+0671 => 261 (0x0105) U+0672 => 258 (0x0102) U+0673 => 259 (0x0103) U+0674 => 901 (0x0385) U+0675 => 260 (0x0104) U+0676 => 264 (0x0108) U+0677 => 265 (0x0109) U+0678 => 313 (0x0139) U+0679 => 324 (0x0144) U+067A => 325 (0x0145) U+067B => 326 (0x0146) U+067C => 327 (0x0147) U+067D => 328 (0x0148) U+067E => 329 (0x0149) U+067F => 330 (0x014a) U+0680 => 331 (0x014b) U+0681 => 342 (0x0156) U+0682 => 343 (0x0157) U+0683 => 344 (0x0158) U+0684 => 345 (0x0159) U+0685 => 346 (0x015a) U+0686 => 347 (0x015b) U+0687 => 348 (0x015c) U+0688 => 278 (0x0116) U+0689 => 279 (0x0117) U+068A => 280 (0x0118) U+068B => 281 (0x0119) U+068C => 282 (0x011a) U+068D => 283 (0x011b) U+068E => 284 (0x011c) U+068F => 285 (0x011d) U+0690 => 286 (0x011e) U+0691 => 292 (0x0124) U+0692 => 293 (0x0125) U+0693 => 294 (0x0126) U+0694 => 295 (0x0127) U+0695 => 296 (0x0128) U+0696 => 297 (0x0129) U+0697 => 298 (0x012a) U+0698 => 299 (0x012b) U+0699 => 300 (0x012c) U+069A => 359 (0x0167) U+069B => 360 (0x0168) U+069C => 361 (0x0169) U+069D => 369 (0x0171) U+069E => 370 (0x0172) U+069F => 374 (0x0176) U+06A0 => 377 (0x0179) U+06A1 => 383 (0x017f) U+06A2 => 384 (0x0180) U+06A3 => 385 (0x0181) U+06A4 => 386 (0x0182) U+06A5 => 387 (0x0183) U+06A6 => 388 (0x0184) U+06A7 => 393 (0x0189) U+06A8 => 394 (0x018a) U+06A9 => 399 (0x018f) U+06AA => 410 (0x019a) U+06AB => 400 (0x0190) U+06AC => 396 (0x018c) U+06AD => 397 (0x018d) U+06AE => 398 (0x018e) U+06AF => 401 (0x0191) U+06B0 => 402 (0x0192) U+06B1 => 403 (0x0193) U+06B2 => 404 (0x0194) U+06B3 => 405 (0x0195) U+06B4 => 406 (0x0196) U+06B5 => 412 (0x019c) U+06B6 => 413 (0x019d) U+06B7 => 414 (0x019e) U+06B8 => 415 (0x019f) U+06B9 => 423 (0x01a7) U+06BA => 424 (0x01a8) U+06BB => 425 (0x01a9) U+06BC => 426 (0x01aa) U+06BD => 427 (0x01ab) U+06BE => 431 (0x01af) U+06BF => 349 (0x015d) U+06C0 => 437 (0x01b5) U+06C1 => 438 (0x01b6) U+06C2 => 439 (0x01b7) U+06C3 => 440 (0x01b8) U+06C4 => 266 (0x010a) U+06C5 => 267 (0x010b) U+06C6 => 268 (0x010c) U+06C7 => 269 (0x010d) U+06C8 => 270 (0x010e) U+06C9 => 271 (0x010f) U+06CA => 272 (0x0110) U+06CB => 273 (0x0111) U+06CC => 314 (0x013a) U+06CD => 318 (0x013e) U+06CE => 315 (0x013b) U+06CF => 274 (0x0112) U+06D0 => 316 (0x013c) U+06D1 => 317 (0x013d) U+06D2 => 308 (0x0134) U+06D3 => 309 (0x0135) U+06D4 => 969 (0x03c9) U+06D5 => 435 (0x01b3) U+06D6 => 926 (0x039e) U+06D7 => 927 (0x039f) U+06D8 => 928 (0x03a0) U+06D9 => 929 (0x03a1) U+06DA => 930 (0x03a2) U+06DB => 931 (0x03a3) U+06DC => 932 (0x03a4) U+06DD => 970 (0x03ca) U+06DE => 973 (0x03cd) U+06DF => 933 (0x03a5) U+06E0 => 934 (0x03a6) U+06E1 => 935 (0x03a7) U+06E2 => 936 (0x03a8) U+06E3 => 937 (0x03a9) U+06E4 => 938 (0x03aa) U+06E5 => 902 (0x0386) U+06E6 => 903 (0x0387) U+06E7 => 939 (0x03ab) U+06E8 => 940 (0x03ac) U+06E9 => 974 (0x03ce) U+06EA => 941 (0x03ad) U+06EB => 942 (0x03ae) U+06EC => 943 (0x03af) U+06ED => 944 (0x03b0) U+06EE => 287 (0x011f) U+06EF => 306 (0x0132) U+06F0 => 989 (0x03dd) U+06F1 => 990 (0x03de) U+06F2 => 991 (0x03df) U+06F3 => 992 (0x03e0) U+06F4 => 993 (0x03e1) U+06F5 => 995 (0x03e3) U+06F6 => 996 (0x03e4) U+06F7 => 998 (0x03e6) U+06F8 => 1000 (0x03e8) U+06F9 => 1001 (0x03e9) U+06FA => 362 (0x016a) U+06FB => 371 (0x0173) U+06FC => 378 (0x017a) U+06FD => 442 (0x01ba) U+06FE => 443 (0x01bb) U+06FF => 432 (0x01b0) U+0750 => 332 (0x014c) U+0751 => 333 (0x014d) U+0752 => 334 (0x014e) U+0753 => 335 (0x014f) U+0754 => 336 (0x0150) U+0755 => 337 (0x0151) U+0756 => 338 (0x0152) U+0757 => 355 (0x0163) U+0758 => 356 (0x0164) U+0759 => 288 (0x0120) U+075A => 289 (0x0121) U+075B => 307 (0x0133) U+075C => 365 (0x016d) U+075D => 379 (0x017b) U+075E => 380 (0x017c) U+075F => 381 (0x017d) U+0760 => 389 (0x0185) U+0761 => 390 (0x0186) U+0762 => 407 (0x0197) U+0763 => 408 (0x0198) U+0764 => 409 (0x0199) U+0765 => 420 (0x01a4) U+0766 => 421 (0x01a5) U+0767 => 428 (0x01ac) U+0768 => 429 (0x01ad) U+0769 => 430 (0x01ae) U+076A => 417 (0x01a1) U+076B => 301 (0x012d) U+076C => 302 (0x012e) U+076D => 366 (0x016e) U+076E => 1198 (0x04ae) [pseudo; not in cmap] U+076F => 1199 (0x04af) [pseudo; not in cmap] U+0770 => 1200 (0x04b0) [pseudo; not in cmap] U+0771 => 1201 (0x04b1) [pseudo; not in cmap] U+0772 => 1202 (0x04b2) [pseudo; not in cmap] U+0773 => 1203 (0x04b3) [pseudo; not in cmap] U+0774 => 1204 (0x04b4) [pseudo; not in cmap] U+0775 => 1205 (0x04b5) [pseudo; not in cmap] U+0776 => 1206 (0x04b6) [pseudo; not in cmap] U+0777 => 1207 (0x04b7) [pseudo; not in cmap] U+0778 => 1208 (0x04b8) [pseudo; not in cmap] U+0779 => 1209 (0x04b9) [pseudo; not in cmap] U+077A => 1210 (0x04ba) [pseudo; not in cmap] U+077B => 1211 (0x04bb) [pseudo; not in cmap] U+077C => 1212 (0x04bc) [pseudo; not in cmap] U+077D => 1213 (0x04bd) [pseudo; not in cmap] U+2000 => 225 (0x00e1) U+2001 => 226 (0x00e2) U+2002 => 227 (0x00e3) U+2003 => 228 (0x00e4) U+2004 => 229 (0x00e5) U+2005 => 230 (0x00e6) U+2006 => 231 (0x00e7) U+2007 => 232 (0x00e8) U+2008 => 233 (0x00e9) U+2009 => 234 (0x00ea) U+200A => 235 (0x00eb) U+200B => 236 (0x00ec) U+200C => 237 (0x00ed) U+200D => 238 (0x00ee) U+200E => 239 (0x00ef) U+200F => 240 (0x00f0) U+2010 => 241 (0x00f1) U+2011 => 242 (0x00f2) U+2013 => 118 (0x0076) U+2014 => 119 (0x0077) U+2018 => 113 (0x0071) U+2019 => 114 (0x0072) U+201A => 100 (0x0064) U+201C => 115 (0x0073) U+201D => 116 (0x0074) U+201E => 102 (0x0066) U+2020 => 104 (0x0068) U+2021 => 105 (0x0069) U+2022 => 117 (0x0075) U+2026 => 103 (0x0067) U+202A => 243 (0x00f3) U+202B => 244 (0x00f4) U+202C => 245 (0x00f5) U+202D => 246 (0x00f6) U+202E => 247 (0x00f7) U+2030 => 107 (0x006b) U+2039 => 109 (0x006d) U+203A => 110 (0x006e) U+2060 => 248 (0x00f8) U+206C => 249 (0x00f9) U+206D => 250 (0x00fa) U+20AC => 99 (0x0063) U+2122 => 121 (0x0079) U+2212 => 251 (0x00fb) U+2219 => 152 (0x0098) U+25CC => 252 (0x00fc) U+FD3E => 975 (0x03cf) U+FD3F => 976 (0x03d0) U+FDF2 => 977 (0x03d1) U+FDFC => 978 (0x03d2) U+FEFF => 253 (0x00fd) GLYPH ID => UNICODE MAPPINGS 3 => U+0020 ' ' 4 => U+0009 ' ' 5 => U+0021 '!' 6 => U+0022 '"' 7 => U+0023 '#' 8 => U+0024 '$' 9 => U+0025 '%' 10 => U+0026 '&' 11 => U+0027 ''' 12 => U+0028 '(' 13 => U+0029 ')' 14 => U+002A '*' 15 => U+002B '+' 16 => U+002C ',' 17 => U+002D '-' 18 => U+002E '.' 19 => U+002F '/' 20 => U+0030 '0' 21 => U+0031 '1' 22 => U+0032 '2' 23 => U+0033 '3' 24 => U+0034 '4' 25 => U+0035 '5' 26 => U+0036 '6' 27 => U+0037 '7' 28 => U+0038 '8' 29 => U+0039 '9' 30 => U+003A ':' 31 => U+003B ';' 32 => U+003C '<' 33 => U+003D '=' 34 => U+003E '>' 35 => U+003F '?' 36 => U+0040 '@' 37 => U+0041 'A' 38 => U+0042 'B' 39 => U+0043 'C' 40 => U+0044 'D' 41 => U+0045 'E' 42 => U+0046 'F' 43 => U+0047 'G' 44 => U+0048 'H' 45 => U+0049 'I' 46 => U+004A 'J' 47 => U+004B 'K' 48 => U+004C 'L' 49 => U+004D 'M' 50 => U+004E 'N' 51 => U+004F 'O' 52 => U+0050 'P' 53 => U+0051 'Q' 54 => U+0052 'R' 55 => U+0053 'S' 56 => U+0054 'T' 57 => U+0055 'U' 58 => U+0056 'V' 59 => U+0057 'W' 60 => U+0058 'X' 61 => U+0059 'Y' 62 => U+005A 'Z' 63 => U+005B '[' 64 => U+005C '\' 65 => U+005D ']' 66 => U+005E '^' 67 => U+005F '_' 68 => U+0060 '`' 69 => U+0061 'a' 70 => U+0062 'b' 71 => U+0063 'c' 72 => U+0064 'd' 73 => U+0065 'e' 74 => U+0066 'f' 75 => U+0067 'g' 76 => U+0068 'h' 77 => U+0069 'i' 78 => U+006A 'j' 79 => U+006B 'k' 80 => U+006C 'l' 81 => U+006D 'm' 82 => U+006E 'n' 83 => U+006F 'o' 84 => U+0070 'p' 85 => U+0071 'q' 86 => U+0072 'r' 87 => U+0073 's' 88 => U+0074 't' 89 => U+0075 'u' 90 => U+0076 'v' 91 => U+0077 'w' 92 => U+0078 'x' 93 => U+0079 'y' 94 => U+007A 'z' 95 => U+007B '{' 96 => U+007C '|' 97 => U+007D '}' 98 => U+007E '~' 99 => U+20AC 100 => U+201A 101 => U+0192 102 => U+201E 103 => U+2026 104 => U+2020 105 => U+2021 106 => U+02C6 107 => U+2030 108 => U+0160 109 => U+2039 110 => U+203A 111 => U+0152 112 => U+017D 113 => U+2018 114 => U+2019 115 => U+201C 116 => U+201D 117 => U+2022 118 => U+2013 119 => U+2014 120 => U+02DC 121 => U+2122 122 => U+0161 123 => U+0153 124 => U+017E 125 => U+0178 126 => U+00A0 '' 127 => U+00A1 '' 128 => U+00A2 '' 129 => U+00A3 '' 130 => U+00A4 '' 131 => U+00A5 '' 132 => U+00A6 '' 133 => U+00A7 '' 134 => U+00A8 '' 135 => U+00A9 '' 136 => U+00AA '' 137 => U+00AB '' 138 => U+00BB '' 139 => U+00AC '' 140 => U+00AD '' 141 => U+00AE '' 142 => U+00AF '' 143 => U+02C9 144 => U+00B0 '' 145 => U+00B1 '' 146 => U+00B2 '' 147 => U+00B3 '' 148 => U+00B4 '' 149 => U+00B5 '' 150 => U+00B6 '' 151 => U+00B7 '' 152 => U+2219 153 => U+00B8 '' 154 => U+00B9 '' 155 => U+00BA '' 156 => U+00BC '' 157 => U+00BD '' 158 => U+00BE '' 159 => U+00BF '' 160 => U+00C0 '' 161 => U+00C1 '' 162 => U+00C2 '' 163 => U+00C3 '' 164 => U+00C4 '' 165 => U+00C5 '' 166 => U+00C6 '' 167 => U+00C7 '' 168 => U+00C8 '' 169 => U+00C9 '' 170 => U+00CA '' 171 => U+00CB '' 172 => U+00CC '' 173 => U+00CD '' 174 => U+00CE '' 175 => U+00CF '' 176 => U+00D0 '' 177 => U+00D1 '' 178 => U+00D2 '' 179 => U+00D3 '' 180 => U+00D4 '' 181 => U+00D5 '' 182 => U+00D6 '' 183 => U+00D7 '' 184 => U+00D8 '' 185 => U+00D9 '' 186 => U+00DA '' 187 => U+00DB '' 188 => U+00DC '' 189 => U+00DD '' 190 => U+00DE '' 191 => U+00DF '' 192 => U+00E0 '' 193 => U+00E1 '' 194 => U+00E2 '' 195 => U+00E3 '' 196 => U+00E4 '' 197 => U+00E5 '' 198 => U+00E6 '' 199 => U+00E7 '' 200 => U+00E8 '' 201 => U+00E9 '' 202 => U+00EA '' 203 => U+00EB '' 204 => U+00EC '' 205 => U+00ED '' 206 => U+00EE '' 207 => U+00EF '' 208 => U+00F0 '' 209 => U+00F1 '' 210 => U+00F2 '' 211 => U+00F3 '' 212 => U+00F4 '' 213 => U+00F5 '' 214 => U+00F6 '' 215 => U+00F7 '' 216 => U+00F8 '' 217 => U+00F9 '' 218 => U+00FA '' 219 => U+00FB '' 220 => U+00FC '' 221 => U+00FD '' 222 => U+00FE '' 223 => U+00FF '' 224 => U+0131 225 => U+2000 226 => U+2001 227 => U+2002 228 => U+2003 229 => U+2004 230 => U+2005 231 => U+2006 232 => U+2007 233 => U+2008 234 => U+2009 235 => U+200A 236 => U+200B 237 => U+200C 238 => U+200D 239 => U+200E 240 => U+200F 241 => U+2010 242 => U+2011 243 => U+202A 244 => U+202B 245 => U+202C 246 => U+202D 247 => U+202E 248 => U+2060 249 => U+206C 250 => U+206D 251 => U+2212 252 => U+25CC 253 => U+FEFF 254 => U+0622 255 => U+0623 256 => U+0625 257 => U+0627 258 => U+0672 259 => U+0673 260 => U+0675 261 => U+0671 262 => U+0624 263 => U+0648 264 => U+0676 265 => U+0677 266 => U+06C4 267 => U+06C5 268 => U+06C6 269 => U+06C7 270 => U+06C8 271 => U+06C9 272 => U+06CA 273 => U+06CB 274 => U+06CF 276 => U+062F 277 => U+0630 278 => U+0688 279 => U+0689 280 => U+068A 281 => U+068B 282 => U+068C 283 => U+068D 284 => U+068E 285 => U+068F 286 => U+0690 287 => U+06EE 288 => U+0759 289 => U+075A 290 => U+0631 291 => U+0632 292 => U+0691 293 => U+0692 294 => U+0693 295 => U+0694 296 => U+0695 297 => U+0696 298 => U+0697 299 => U+0698 300 => U+0699 301 => U+076B 302 => U+076C 306 => U+06EF 307 => U+075B 308 => U+06D2 309 => U+06D3 310 => U+0626 311 => U+064A 313 => U+0678 314 => U+06CC 315 => U+06CE 316 => U+06D0 317 => U+06D1 318 => U+06CD 319 => U+0649 320 => U+066E 321 => U+0628 322 => U+062A 323 => U+062B 324 => U+0679 325 => U+067A 326 => U+067B 327 => U+067C 328 => U+067D 329 => U+067E 330 => U+067F 331 => U+0680 332 => U+0750 333 => U+0751 334 => U+0752 335 => U+0753 336 => U+0754 337 => U+0755 338 => U+0756 339 => U+062C 340 => U+062D 341 => U+062E 342 => U+0681 343 => U+0682 344 => U+0683 345 => U+0684 346 => U+0685 347 => U+0686 348 => U+0687 349 => U+06BF 355 => U+0757 356 => U+0758 357 => U+0633 358 => U+0634 359 => U+069A 360 => U+069B 361 => U+069C 362 => U+06FA 365 => U+075C 366 => U+076D 367 => U+0635 368 => U+0636 369 => U+069D 370 => U+069E 371 => U+06FB 372 => U+0637 373 => U+0638 374 => U+069F 375 => U+0639 376 => U+063A 377 => U+06A0 378 => U+06FC 379 => U+075D 380 => U+075E 381 => U+075F 382 => U+0641 383 => U+06A1 384 => U+06A2 385 => U+06A3 386 => U+06A4 387 => U+06A5 388 => U+06A6 389 => U+0760 390 => U+0761 391 => U+066F 392 => U+0642 393 => U+06A7 394 => U+06A8 395 => U+0643 396 => U+06AC 397 => U+06AD 398 => U+06AE 399 => U+06A9 400 => U+06AB 401 => U+06AF 402 => U+06B0 403 => U+06B1 404 => U+06B2 405 => U+06B3 406 => U+06B4 407 => U+0762 408 => U+0763 409 => U+0764 410 => U+06AA 411 => U+0644 412 => U+06B5 413 => U+06B6 414 => U+06B7 415 => U+06B8 417 => U+076A 418 => U+0645 420 => U+0765 421 => U+0766 422 => U+0646 423 => U+06B9 424 => U+06BA 425 => U+06BB 426 => U+06BC 427 => U+06BD 428 => U+0767 429 => U+0768 430 => U+0769 431 => U+06BE 432 => U+06FF 433 => U+0647 435 => U+06D5 436 => U+0629 437 => U+06C0 438 => U+06C1 439 => U+06C2 440 => U+06C3 441 => U+0621 442 => U+06FD 443 => U+06FE 444 => U+0640 901 => U+0674 902 => U+06E5 903 => U+06E6 904 => U+064B 905 => U+064C 906 => U+064D 907 => U+064E 908 => U+064F 909 => U+0650 910 => U+0651 911 => U+0652 912 => U+0653 913 => U+0654 914 => U+0655 915 => U+0656 916 => U+0657 917 => U+0658 918 => U+0659 919 => U+065A 920 => U+065B 921 => U+065C 922 => U+065D 923 => U+065E 924 => U+0670 926 => U+06D6 927 => U+06D7 928 => U+06D8 929 => U+06D9 930 => U+06DA 931 => U+06DB 932 => U+06DC 933 => U+06DF 934 => U+06E0 935 => U+06E1 936 => U+06E2 937 => U+06E3 938 => U+06E4 939 => U+06E7 940 => U+06E8 941 => U+06EA 942 => U+06EB 943 => U+06EC 944 => U+06ED 945 => U+0600 946 => U+0601 947 => U+0602 948 => U+0603 949 => U+060B 950 => U+060C 952 => U+060D 953 => U+060E 954 => U+060F 955 => U+0610 956 => U+0611 957 => U+0612 958 => U+0613 959 => U+0614 960 => U+0615 961 => U+061B 963 => U+061E 964 => U+061F 965 => U+066A 966 => U+066B 967 => U+066C 968 => U+066D 969 => U+06D4 970 => U+06DD 973 => U+06DE 974 => U+06E9 975 => U+FD3E 976 => U+FD3F 977 => U+FDF2 978 => U+FDFC 979 => U+0660 980 => U+0661 981 => U+0662 982 => U+0663 983 => U+0664 984 => U+0665 985 => U+0666 986 => U+0667 987 => U+0668 988 => U+0669 989 => U+06F0 990 => U+06F1 991 => U+06F2 992 => U+06F3 993 => U+06F4 995 => U+06F5 996 => U+06F6 998 => U+06F7 1000 => U+06F8 1001 => U+06F9 1117 => U+02DA 1118 => U+02C7 1197 [line-break] 1198 => U+076E [pseudo; not in cmap] 1199 => U+076F [pseudo; not in cmap] 1200 => U+0770 [pseudo; not in cmap] 1201 => U+0771 [pseudo; not in cmap] 1202 => U+0772 [pseudo; not in cmap] 1203 => U+0773 [pseudo; not in cmap] 1204 => U+0774 [pseudo; not in cmap] 1205 => U+0775 [pseudo; not in cmap] 1206 => U+0776 [pseudo; not in cmap] 1207 => U+0777 [pseudo; not in cmap] 1208 => U+0778 [pseudo; not in cmap] 1209 => U+0779 [pseudo; not in cmap] 1210 => U+077A [pseudo; not in cmap] 1211 => U+077B [pseudo; not in cmap] 1212 => U+077C [pseudo; not in cmap] 1213 => U+077D [pseudo; not in cmap] 1220 [phantom] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/dbg_enginecode.txt000066400000000000000000001717721411153030700264260ustar00rootroot00000000000000ENGINE CODE FOR RULES TABLE: substitution PASS: 0 PASS CONSTRAINTS: none NO RULES PASS: 1 PASS CONSTRAINTS: none RULE 1.0, SchMain.gdl(119): cUnencodedChar > cUnencodedGlyph ; ACTIONS: PutSubs 0 59 32 Next RetZero CONSTRAINTS: none RULE 1.1, SchMain.gdl(122): cUnencodedChar2Parts _ > cUnencodedGlyphPart1 cUnencodedGlyphPart2$1:1 ; ACTIONS: PutSubs 0 60 33 Next Insert PutSubs 0 60 34 Assoc 1 0 Next RetZero CONSTRAINTS: none RULE 1.2, SchMain.gdl(126): _ cAlefPlusMark > absAlef:2 cAlefMark ; ACTIONS: Insert PutGlyph 3 Assoc 1 1 Next PutSubs 0 46 8 Next RetZero CONSTRAINTS: none RULE 1.3, SchMain.gdl(128): *GC1* > *GC0* ; ACTIONS: PutSubs 0 42 0 Next RetZero CONSTRAINTS: none PASS: 2 PASS CONSTRAINTS: none RULE 2.0, SchMain.gdl(143): _ cMark234 cMark1 > @5:5 @2 _ / _ _ ^ cMark234 cMark234 _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next PutCopy 0 Next CopyNext CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 2.1, SchMain.gdl(143): _ cMark234 cMark1 > @4:4 @2 _ / _ _ ^ cMark234 _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next PutCopy 0 Next CopyNext Delete Next PushByte -1 PopRet CONSTRAINTS: none RULE 2.2, SchMain.gdl(143): _ cMark234 cMark1 > @3:3 @2 _ / _ _ ^ _ ; ACTIONS: Insert PutCopy 2 Assoc 1 2 Next PutCopy 0 Next Delete Next PushByte 0 PopRet CONSTRAINTS: none RULE 2.3, SchMain.gdl(144): _ cMark34 cMark2 > @5:5 @2 _ / _ _ ^ cMark34 cMark34 _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next PutCopy 0 Next CopyNext CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 2.4, SchMain.gdl(144): _ cMark34 cMark2 > @4:4 @2 _ / _ _ ^ cMark34 _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next PutCopy 0 Next CopyNext Delete Next PushByte -1 PopRet CONSTRAINTS: none RULE 2.5, SchMain.gdl(144): _ cMark34 cMark2 > @3:3 @2 _ / _ _ ^ _ ; ACTIONS: Insert PutCopy 2 Assoc 1 2 Next PutCopy 0 Next Delete Next PushByte 0 PopRet CONSTRAINTS: none RULE 2.6, SchMain.gdl(145): _ cMark4 cMark3 > @5:5 @2 _ / _ _ ^ cMark4 cMark4 _ ; ACTIONS: Insert PutCopy 4 Assoc 1 4 Next PutCopy 0 Next CopyNext CopyNext Delete Next PushByte -2 PopRet CONSTRAINTS: none RULE 2.7, SchMain.gdl(145): _ cMark4 cMark3 > @4:4 @2 _ / _ _ ^ cMark4 _ ; ACTIONS: Insert PutCopy 3 Assoc 1 3 Next PutCopy 0 Next CopyNext Delete Next PushByte -1 PopRet CONSTRAINTS: none RULE 2.8, SchMain.gdl(145): _ cMark4 cMark3 > @3:3 @2 _ / _ _ ^ _ ; ACTIONS: Insert PutCopy 2 Assoc 1 2 Next PutCopy 0 Next Delete Next PushByte 0 PopRet CONSTRAINTS: none PASS: 3 PASS CONSTRAINTS: none RULE 3.0, SchMain.gdl(157): if (shaddaKasra == 0) if (selectDiac) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) { comp.shadda.ref = @1; comp.kasra.ref = @2; } ; endif; endif; ACTIONS: Delete Next PutSubs 0 54 23 Assoc 2 -1 0 PushByte -1 IAttrSetSlot comp_ref 9 PushByte 0 IAttrSetSlot comp_ref 8 Next RetZero CONSTRAINTS: PushFeat 0 0 PushByte 0 Equal PushFeat 10 0 And PopRet RULE 3.1, SchMain.gdl(160): if (shaddaKasra == 0) if (!(selectDiac)) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) ; endif; endif; ACTIONS: Delete Next PutSubs 0 54 23 Assoc 2 -1 0 Next RetZero CONSTRAINTS: PushFeat 0 0 PushByte 0 Equal PushFeat 10 0 Not And PopRet PASS: 4 PASS CONSTRAINTS: none RULE 4.0, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 52 19 PushByte 0 IAttrSet user 0 Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 45 6 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.1, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 52 19 PushByte 0 IAttrSet user 0 Next CopyNext CopyNext CopyNext PutSubs 0 45 6 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.2, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 52 19 PushByte 0 IAttrSet user 0 Next CopyNext CopyNext PutSubs 0 45 6 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.3, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks ^ _ ; ACTIONS: PutSubs 0 52 19 PushByte 0 IAttrSet user 0 Next CopyNext PutSubs 0 45 6 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.4, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ ^ _ ; ACTIONS: PutSubs 0 52 19 PushByte 0 IAttrSet user 0 Next PutSubs 0 45 6 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.5, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 51 20 PushByte 0 IAttrSet user 0 Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 45 7 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.6, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 51 20 PushByte 0 IAttrSet user 0 Next CopyNext CopyNext CopyNext PutSubs 0 45 7 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.7, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 51 20 PushByte 0 IAttrSet user 0 Next CopyNext CopyNext PutSubs 0 45 7 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.8, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks ^ _ ; ACTIONS: PutSubs 0 51 20 PushByte 0 IAttrSet user 0 Next CopyNext PutSubs 0 45 7 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.9, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ ^ _ ; ACTIONS: PutSubs 0 51 20 PushByte 0 IAttrSet user 0 Next PutSubs 0 45 7 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.10, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext CopyNext CopyNext CopyNext CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.11, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.12, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext CopyNext CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.13, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.14, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.15, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext CopyNext CopyNext CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.16, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext CopyNext CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.17, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.18, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks ^ _ ; ACTIONS: PutSubs 0 43 1 Next CopyNext PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.19, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ ^ _ ; ACTIONS: PutSubs 0 43 1 Next PutSubs 0 44 2 Next PushByte -1 PopRet CONSTRAINTS: none RULE 4.20, SchMain.gdl(206): cSignTakes4 cDigitNormal cDigitNormal cDigitNormal cDigitNormal > cSign4 cDigitMedium cDigitMedium cDigitMedium cDigitMedium ; ACTIONS: PutGlyph 28 Next PutSubs 0 47 9 Next PutSubs 0 47 9 Next PutSubs 0 47 9 Next PutSubs 0 47 9 Next RetZero CONSTRAINTS: none RULE 4.21, SchMain.gdl(209): cSignTakes3Medium cDigitNormal cDigitNormal cDigitNormal > cSign3Medium cDigitMedium cDigitMedium cDigitMedium ; ACTIONS: PutSubs 0 57 26 Next PutSubs 0 47 9 Next PutSubs 0 47 9 Next PutSubs 0 47 9 Next RetZero CONSTRAINTS: none RULE 4.22, SchMain.gdl(212): cSignTakes3Small cDigitNormal cDigitNormal cDigitNormal > cSign3Small cDigitSmall cDigitSmall cDigitSmall ; ACTIONS: PutSubs 0 58 27 Next PutSubs 0 47 10 Next PutSubs 0 47 10 Next PutSubs 0 47 10 Next RetZero CONSTRAINTS: none RULE 4.23, SchMain.gdl(215): cSignTakes2 cDigitNormal cDigitNormal > cSign2 cDigitMedium cDigitMedium ; ACTIONS: PutSubs 0 56 25 Next PutSubs 0 47 9 Next PutSubs 0 47 9 Next RetZero CONSTRAINTS: none RULE 4.24, SchMain.gdl(218): cSignTakes1 cDigitNormal > cSign1 cDigitMedium ; ACTIONS: PutSubs 0 55 24 Next PutSubs 0 47 9 Next RetZero CONSTRAINTS: none PASS: 5 PASS CONSTRAINTS: none RULE 5.0, SchMain.gdl(225): absSuperscriptAlef > absSuperscriptAlef__large / cNeedsLargeDaggerAlef _ ; ACTIONS: PutGlyph 5 Next RetZero CONSTRAINTS: none RULE 5.1, SchMain.gdl(228): if (selectDiac) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(2 3) { comp.base.ref = @2; comp.hamza.ref = @3; } _ / ANY _ _ ; endif; ACTIONS: PutSubs 0 53 35 Assoc 2 0 1 PushByte 0 IAttrSetSlot comp_ref 6 PushByte 1 IAttrSetSlot comp_ref 7 Next Delete Next RetZero CONSTRAINTS: PushFeat 10 0 PopRet RULE 5.2, SchMain.gdl(231): if (!(selectDiac)) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(2 3) _ / ANY _ _ ; endif; ACTIONS: PutSubs 0 53 35 Assoc 2 0 1 Next Delete Next RetZero CONSTRAINTS: PushFeat 10 0 Not PopRet RULE 5.3, SchMain.gdl(237): if (meemAlt == 1) cno_Meem > cMeemSindhi / ANY _ ; endif; ACTIONS: PutSubs 0 63 21 Next RetZero CONSTRAINTS: PushFeat 1 0 PushByte 1 Equal PopRet RULE 5.4, SchMain.gdl(241): if (hehAlt == 1) cno_Heh > cHehKurdish / ANY _ ; endif; ACTIONS: PutSubs 0 62 16 Next RetZero CONSTRAINTS: PushFeat 2 0 PushByte 1 Equal PopRet RULE 5.5, SchMain.gdl(244): if (hehAlt == 2) cno_Heh > cHehSindhi / ANY _ ; endif; ACTIONS: PutSubs 0 62 17 Next RetZero CONSTRAINTS: PushFeat 2 0 PushByte 2 Equal PopRet RULE 5.6, SchMain.gdl(247): if (hehAlt == 3) cno_Heh > cHehUrdu / ANY _ ; endif; ACTIONS: PutSubs 0 62 18 Next RetZero CONSTRAINTS: PushFeat 2 0 PushByte 3 Equal PopRet RULE 5.7, SchMain.gdl(251): if (easternDigits == 1) cEasternDigit > cEasternDigitSindhi / ANY _ ; endif; ACTIONS: PutSubs 0 48 12 Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 1 Equal PopRet RULE 5.8, SchMain.gdl(254): if (easternDigits == 2) cEasternDigit > cEasternDigitUrdu / ANY _ ; endif; ACTIONS: PutSubs 0 48 13 Next RetZero CONSTRAINTS: PushFeat 3 0 PushByte 2 Equal PopRet RULE 5.9, SchMain.gdl(258): if (sukunAlt == 1) cno_Sukun > cSukunDownOpen / ANY _ ; endif; ACTIONS: PutGlyph 30 Next RetZero CONSTRAINTS: PushFeat 4 0 PushByte 1 Equal PopRet RULE 5.10, SchMain.gdl(261): if (sukunAlt == 2) cno_Sukun > cSukunLeftOpen / ANY _ ; endif; ACTIONS: PutGlyph 31 Next RetZero CONSTRAINTS: PushFeat 4 0 PushByte 2 Equal PopRet RULE 5.11, SchMain.gdl(265): if (headOfKhahAlt == 1) cno_OpenLeft > cOpenLeft / ANY _ ; endif; ACTIONS: PutGlyph 22 Next RetZero CONSTRAINTS: PushFeat 5 0 PushByte 1 Equal PopRet RULE 5.12, SchMain.gdl(269): if (commaAlt) cno_Downward > cDownward / ANY _ ; endif; ACTIONS: PutSubs 0 61 11 Next RetZero CONSTRAINTS: PushFeat 6 0 PopRet RULE 5.13, SchMain.gdl(273): if (dammatanAlt) cno_SixNine > cSixNine / ANY _ ; endif; ACTIONS: PutGlyph 29 Next RetZero CONSTRAINTS: PushFeat 7 0 PopRet RULE 5.14, SchMain.gdl(277): if (endOfAyah == 1) cEndOfAyah > cEndOfAyahCircle / ANY _ ; endif; ACTIONS: PutSubs 0 49 14 Next RetZero CONSTRAINTS: PushFeat 8 0 PushByte 1 Equal PopRet RULE 5.15, SchMain.gdl(280): if (endOfAyah == 2) cEndOfAyah > cEndOfAyahSquare / ANY _ ; endif; ACTIONS: PutSubs 0 49 15 Next RetZero CONSTRAINTS: PushFeat 8 0 PushByte 2 Equal PopRet RULE 5.16, SchMain.gdl(286): if (!(invis)) cInvisible > zeroWidthSpace { dir = @2.dir; } / ANY _ ; endif; ACTIONS: PutGlyph 36 PushSlotAttr dir 0 AttrSet dir Next RetZero CONSTRAINTS: PushFeat 11 0 Not PopRet PASS: 6 PASS CONSTRAINTS: none RULE 6.0, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ absRnoonMed ; ACTIONS: PutCopy 0 Next CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.1, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ absRnoonMed ; ACTIONS: PutCopy 0 Next CopyNext CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.2, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ absRnoonMed ; ACTIONS: PutCopy 0 Next CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.3, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:4 / _ cAnyMarks _ absRnoonMed ; ACTIONS: PutCopy 0 Next CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.4, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:3 / _ _ absRnoonMed ; ACTIONS: PutCopy 0 Next Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.5, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ *GC16* ; ACTIONS: PutCopy 0 Next CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.6, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ *GC16* ; ACTIONS: PutCopy 0 Next CopyNext CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.7, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ *GC16* ; ACTIONS: PutCopy 0 Next CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.8, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:4 / _ cAnyMarks _ *GC16* ; ACTIONS: PutCopy 0 Next CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.9, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:3 / _ _ *GC16* ; ACTIONS: PutCopy 0 Next Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.10, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ absRrehFin ; ACTIONS: PutCopy 0 Next CopyNext CopyNext CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.11, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ absRrehFin ; ACTIONS: PutCopy 0 Next CopyNext CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.12, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ absRrehFin ; ACTIONS: PutCopy 0 Next CopyNext CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.13, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:4 / _ cAnyMarks _ absRrehFin ; ACTIONS: PutCopy 0 Next CopyNext Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none RULE 6.14, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:3 / _ _ absRrehFin ; ACTIONS: PutCopy 0 Next Insert PutGlyph 4 Assoc 1 1 Next RetZero CONSTRAINTS: none PASS 10: bidi TABLE: positioning PASS: 0 PASS CONSTRAINTS: none NO RULES PASS: 7 PASS CONSTRAINTS: none RULE 7.0, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ ; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -5 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 82 0 AttrSet attach_at_x PushAttToGlyphAttr 83 0 AttrSet attach_at_y PushGlyphAttr 40 0 AttrSet attach_with_x PushGlyphAttr 41 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -6 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 7.1, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks cAnyMarks _ ; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 82 0 AttrSet attach_at_x PushAttToGlyphAttr 83 0 AttrSet attach_at_y PushGlyphAttr 40 0 AttrSet attach_with_x PushGlyphAttr 41 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -5 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 7.2, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks _ ; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 82 0 AttrSet attach_at_x PushAttToGlyphAttr 83 0 AttrSet attach_at_y PushGlyphAttr 40 0 AttrSet attach_with_x PushGlyphAttr 41 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -4 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 7.3, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks _ ; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 82 0 AttrSet attach_at_x PushAttToGlyphAttr 83 0 AttrSet attach_at_y PushGlyphAttr 40 0 AttrSet attach_with_x PushGlyphAttr 41 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -3 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 7.4, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } _ ; ACTIONS: PutCopy 0 PushByte 1 IAttrSet user 0 Next PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 82 0 AttrSet attach_at_x PushAttToGlyphAttr 83 0 AttrSet attach_at_y PushGlyphAttr 40 0 AttrSet attach_with_x PushGlyphAttr 41 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -2 PopRet CONSTRAINTS: CntxtItem 0 7 PushISlotAttr user 0 0 PushByte 0 Equal PopRet RULE 7.5, SchMain.gdl(309): cHasAlef cMatchesAlef { attach {to = @1; at = alef; with = alef_; } insert = 1; } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 36 0 AttrSet attach_at_x PushAttToGlyphAttr 37 0 AttrSet attach_at_y PushGlyphAttr 86 0 AttrSet attach_with_x PushGlyphAttr 87 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none RULE 7.6, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -4 PopRet CONSTRAINTS: none RULE 7.7, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -3 PopRet CONSTRAINTS: none RULE 7.8, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -2 PopRet CONSTRAINTS: none RULE 7.9, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none RULE 7.10, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 PushByte 40 Add AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -4 PopRet CONSTRAINTS: none RULE 7.11, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 PushByte 40 Add AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -3 PopRet CONSTRAINTS: none RULE 7.12, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 PushByte 40 Add AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -2 PopRet CONSTRAINTS: none RULE 7.13, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 PushByte 40 Add AttrSet attach_at_x PushAttToGlyphAttr 31 0 PushByte 80 Sub AttrSet attach_at_y PushByte 0 AttrSet attach_at_xoffset PushByte 0 AttrSet attach_at_yoffset PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none RULE 7.14, SchMain.gdl(325): cTakesDiaDigitA cDiaDigitAbove { attach {to = @1; at = diaDigitA; with = diaDigitA_; } } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 34 0 AttrSet attach_at_x PushAttToGlyphAttr 35 0 AttrSet attach_at_y PushGlyphAttr 88 0 AttrSet attach_with_x PushGlyphAttr 89 0 AttrSet attach_with_y Next PushByte -1 PopRet CONSTRAINTS: none RULE 7.15, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 AttrSet attach_at_y PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -4 PopRet CONSTRAINTS: none RULE 7.16, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 AttrSet attach_at_y PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -3 PopRet CONSTRAINTS: none RULE 7.17, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 AttrSet attach_at_y PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -2 PopRet CONSTRAINTS: none RULE 7.18, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 30 0 AttrSet attach_at_x PushAttToGlyphAttr 31 0 AttrSet attach_at_y PushGlyphAttr 46 0 AttrSet attach_with_x PushGlyphAttr 47 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none RULE 7.19, SchMain.gdl(337): cSign4 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @4; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @5; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; ACTIONS: CopyNext PutCopy 0 PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PutCopy 0 PushByte 0 AttrSet insert PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PutCopy 0 PushByte 0 AttrSet insert PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PutCopy 0 PushByte 0 AttrSet insert PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 7.20, SchMain.gdl(343): cSign3 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @4; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; ACTIONS: CopyNext PutCopy 0 PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PutCopy 0 PushByte 0 AttrSet insert PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PutCopy 0 PushByte 0 AttrSet insert PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 7.21, SchMain.gdl(348): cSign2 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; ACTIONS: CopyNext PutCopy 0 PushByte 1 AttrSetSlot attach_to PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next PutCopy 0 PushByte 0 AttrSet insert PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none RULE 7.22, SchMain.gdl(352): cSign1 cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 48 0 AttrSet attach_at_x PushAttToGlyphAttr 49 0 AttrSet attach_at_y PushGlyphAttr 50 0 AttrSet attach_with_x PushGlyphAttr 51 0 AttrSet attach_with_y PushByte 1 AttrSet insert Next RetZero CONSTRAINTS: none PASS: 8 PASS CONSTRAINTS: none RULE 8.0, SchMain.gdl(361): cHasDia2B cMatchesDia2B { attach {to = @1; at = dia2B; with = dia2B_; } insert = selectDiac; } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 38 0 AttrSet attach_at_x PushAttToGlyphAttr 39 0 AttrSet attach_at_y PushGlyphAttr 52 0 AttrSet attach_with_x PushGlyphAttr 53 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none RULE 8.1, SchMain.gdl(367): cTakesDiaDigitB cDiaDigitBelow { attach {to = @1; at = diaDigitB; with = diaDigitB_; } } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 56 0 AttrSet attach_at_x PushAttToGlyphAttr 57 0 AttrSet attach_at_y PushGlyphAttr 90 0 AttrSet attach_with_x PushGlyphAttr 91 0 AttrSet attach_with_y Next PushByte -1 PopRet CONSTRAINTS: none RULE 8.2, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove cAnyMarksAbove cAnyMarksAbove _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -4 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 32 0 AttrSet attach_at_x PushAttToGlyphAttr 33 0 AttrSet attach_at_y PushGlyphAttr 54 0 AttrSet attach_with_x PushGlyphAttr 55 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -4 PopRet CONSTRAINTS: none RULE 8.3, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove cAnyMarksAbove _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -3 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 32 0 AttrSet attach_at_x PushAttToGlyphAttr 33 0 AttrSet attach_at_y PushGlyphAttr 54 0 AttrSet attach_with_x PushGlyphAttr 55 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -3 PopRet CONSTRAINTS: none RULE 8.4, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -2 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 32 0 AttrSet attach_at_x PushAttToGlyphAttr 33 0 AttrSet attach_at_y PushGlyphAttr 54 0 AttrSet attach_with_x PushGlyphAttr 55 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -2 PopRet CONSTRAINTS: none RULE 8.5, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -1 AttrSetSlot attach_to PushByte 0 AttrSet insert PushAttToGlyphAttr 32 0 AttrSet attach_at_x PushAttToGlyphAttr 33 0 AttrSet attach_at_y PushGlyphAttr 54 0 AttrSet attach_with_x PushGlyphAttr 55 0 AttrSet attach_with_y PushFeat 10 0 AttrSet insert Next PushByte -1 PopRet CONSTRAINTS: none PASS: 9 PASS CONSTRAINTS: none RULE 9.0, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.1, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.2, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.3, SchMain.gdl(427): cKafLikeIniMed cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.4, SchMain.gdl(427): cKafLikeIniMed absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.5, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.6, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.7, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.8, SchMain.gdl(430): absFarsiYehIni cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.9, SchMain.gdl(430): absFarsiYehIni absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next PutCopy 0 PushByte -30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.10, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.11, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.12, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.13, SchMain.gdl(433): *GC19* cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.14, SchMain.gdl(433): *GC19* absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next PutCopy 0 PushByte -40 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte -40 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.15, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.16, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.17, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.18, SchMain.gdl(439): absAlef cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.19, SchMain.gdl(439): absAlef absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.20, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushShort 220 AttrSet shift_y Next RetZero CONSTRAINTS: none RULE 9.21, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushShort 220 AttrSet shift_y Next RetZero CONSTRAINTS: none RULE 9.22, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushShort 220 AttrSet shift_y Next RetZero CONSTRAINTS: none RULE 9.23, SchMain.gdl(442): *GC20* cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushShort 220 AttrSet shift_y Next RetZero CONSTRAINTS: none RULE 9.24, SchMain.gdl(442): *GC20* *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushShort 220 AttrSet shift_y Next RetZero CONSTRAINTS: none RULE 9.25, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushShort 275 AttrSet shift_x Next RetZero CONSTRAINTS: none RULE 9.26, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushShort 275 AttrSet shift_x Next RetZero CONSTRAINTS: none RULE 9.27, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushShort 275 AttrSet shift_x Next RetZero CONSTRAINTS: none RULE 9.28, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushShort 275 AttrSet shift_x Next RetZero CONSTRAINTS: none RULE 9.29, SchMain.gdl(447): *GC22* cDiaDigitAbove *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushShort 275 AttrSet shift_x Next RetZero CONSTRAINTS: none RULE 9.30, SchMain.gdl(452): cNoonGhunna *GC25* { shift.y = -75; } / *GC24* _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -75 AttrSet shift_y Next RetZero CONSTRAINTS: none RULE 9.31, SchMain.gdl(454): cNoonGhunna *GC26* { shift.y = -150; } / ANY _ _ ; ACTIONS: CopyNext PutCopy 0 PushShort -150 AttrSet shift_y Next RetZero CONSTRAINTS: none RULE 9.32, SchMain.gdl(458): if (kasraTcheh == 2) cBehLikeIniMed absKasra { shift.x = -60; shift.y = 125; } cTchehLikeFin / ANY _ _ _ ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -60 AttrSet shift_x PushByte 125 AttrSet shift_y Next CopyNext RetZero CONSTRAINTS: PushFeat 9 0 PushByte 2 Equal PopRet RULE 9.33, SchMain.gdl(459): if (kasraTcheh == 2) cBehLikeIniMed absKasratan { shift.x = -100; shift.y = 30; } cTchehLikeFin / ANY _ _ _ ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -100 AttrSet shift_x PushByte 30 AttrSet shift_y Next CopyNext RetZero CONSTRAINTS: PushFeat 9 0 PushByte 2 Equal PopRet RULE 9.34, SchMain.gdl(462): if (kasraTcheh == 1) cBehLikeIniMed absKasra { shift.x = -40; shift.y = -200; } cTchehLikeFin / ANY _ _ _ ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -40 AttrSet shift_x PushShort -200 AttrSet shift_y Next CopyNext RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 9.35, SchMain.gdl(463): if (kasraTcheh == 1) cBehLikeIniMed absKasratan { shift.x = -60; shift.y = -130; } cTchehLikeFin / ANY _ _ _ ; endif; ACTIONS: CopyNext PutCopy 0 PushByte -60 AttrSet shift_x PushShort -130 AttrSet shift_y Next CopyNext RetZero CONSTRAINTS: PushFeat 9 0 PushByte 1 Equal PopRet RULE 9.36, SchMain.gdl(465): cPehLikeIniMed absKasra { shift.y = -50; } cTchehLikeFin / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -50 AttrSet shift_y Next CopyNext RetZero CONSTRAINTS: none RULE 9.37, SchMain.gdl(466): cPehLikeIniMed absKasratan { shift.x = -50; } cTchehLikeFin / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -50 AttrSet shift_x Next CopyNext RetZero CONSTRAINTS: none RULE 9.38, SchMain.gdl(467): cTehLikeIniMed absKasratan { shift.x = -80; } cTchehLikeFin / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -80 AttrSet shift_x Next CopyNext RetZero CONSTRAINTS: none RULE 9.39, SchMain.gdl(470): absAlef absMaddahAbove { shift.x = -130; } absGaf { shift.x = 30; advance.x = aw + 30; } / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushShort -130 AttrSet shift_x Next PutCopy 0 PushByte 30 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 30 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.40, SchMain.gdl(471): absAlef absMaddahAbove { shift.x = -120; } absGafIni { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte -120 AttrSet shift_x Next PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.41, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 50 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 50 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.42, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 50 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 50 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.43, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte 50 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 50 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.44, SchMain.gdl(474): cBehLikeIniMed cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte 50 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 50 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.45, SchMain.gdl(474): cBehLikeIniMed absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte 50 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 50 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.46, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.47, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.48, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.49, SchMain.gdl(475): cPehLikeIniMed cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.50, SchMain.gdl(475): cPehLikeIniMed absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.51, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.52, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.53, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.54, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.55, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.56, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.57, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.58, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.59, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.60, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.61, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.62, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.63, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.64, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.65, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.66, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.67, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.68, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.69, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.70, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.71, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.72, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.73, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.74, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.75, SchMain.gdl(478): *GC27* cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte 65 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 65 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.76, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.77, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.78, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; ACTIONS: CopyNext CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.79, SchMain.gdl(481): *GC28* cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; ACTIONS: CopyNext CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none RULE 9.80, SchMain.gdl(481): *GC28* cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; ACTIONS: CopyNext PutCopy 0 PushByte 70 AttrSet shift_x PushGlyphMetric aw 0 0 PushByte 70 Add AttrSet advance_x Next RetZero CONSTRAINTS: none grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/dbg_fsm.txt000066400000000000000000005137401411153030700251060ustar00rootroot00000000000000FINITE STATE MACHINES TABLE: substitution PASS: 0--no FSM PASS: 1 Glyph ID => Column: 12 .. 13 => 0 32 => 0 34 => 0 63 => 0 65 => 0 95 => 0 97 => 0 254 .. 256 => 1 1198 ..1202 => 2 1203 ..1213 => 3 Final Table: 0 1 2 3 - - - - - - - - - - - - 0: 0 4 3 1 2 Matched=none Success=none 1: 1 0 0 0 0 Matched=0, Success=0, 2: 1 0 0 0 0 Matched=1, Success=1, 3: 1 0 0 0 0 Matched=2, Success=2, 4: 1 0 0 0 0 Matched=3, Success=3, - - - - - - - - - - - - RULE 1.0, SchMain.gdl(119): cUnencodedChar > cUnencodedGlyph ; RULE 1.1, SchMain.gdl(122): cUnencodedChar2Parts _ > cUnencodedGlyphPart1 cUnencodedGlyphPart2$1:1 ; RULE 1.2, SchMain.gdl(126): _ cAlefPlusMark > absAlef:2 cAlefMark ; RULE 1.3, SchMain.gdl(128): *GC1* > *GC0* ; PASS: 2 Glyph ID => Column: 16 => 0 904 .. 909 => 1 910 => 2 911 => 1 912 => 3 913 .. 914 => 2 916 .. 925 => 1 926 .. 934 => 0 935 => 1 936 .. 944 => 0 955 .. 960 => 0 1104 ..1115 => 1 Final Table: 0 1 2 3 - - - - - - - - - - - - 0: 0 2 3 0 1 Matched=none Success=none 1: 1 4 10 14 4 Matched=0,1,2,3,4,5, Success=none 2: 1 5 10 14 11 Matched=0,1,2,3,4,5,6,7,8, Success=none 3: 1 6 6 14 6 Matched=0,1,2, Success=none 4: 2 7 12 15 7 Matched=0,1,3,4, Success=none 5: 2 9 12 15 13 Matched=0,1,3,4,6,7, Success=none 6: 2 8 8 15 8 Matched=0,1, Success=none 7: 3 0 17 16 0 Matched=0,3, Success=none 8: 3 0 0 16 0 Matched=0, Success=none 9: 3 0 17 16 18 Matched=0,3,6, Success=none 10: 2 8 8 15 8 Matched=0,1,5, Success=5, 11: 2 7 12 15 7 Matched=0,1,3,4,8, Success=8, 12: 3 0 0 16 0 Matched=0,4, Success=4, 13: 3 0 17 16 0 Matched=0,3,7, Success=7, 14: 2 0 0 0 0 Matched=2, Success=2, 15: 3 0 0 0 0 Matched=1, Success=1, 16: 4 0 0 0 0 Matched=0, Success=0, 17: 4 0 0 0 0 Matched=3, Success=3, 18: 4 0 0 0 0 Matched=6, Success=6, - - - - - - - - - - - - RULE 2.0, SchMain.gdl(143): _ cMark234 cMark1 > @5:5 @2 _ / _ _ ^ cMark234 cMark234 _ ; RULE 2.1, SchMain.gdl(143): _ cMark234 cMark1 > @4:4 @2 _ / _ _ ^ cMark234 _ ; RULE 2.2, SchMain.gdl(143): _ cMark234 cMark1 > @3:3 @2 _ / _ _ ^ _ ; RULE 2.3, SchMain.gdl(144): _ cMark34 cMark2 > @5:5 @2 _ / _ _ ^ cMark34 cMark34 _ ; RULE 2.4, SchMain.gdl(144): _ cMark34 cMark2 > @4:4 @2 _ / _ _ ^ cMark34 _ ; RULE 2.5, SchMain.gdl(144): _ cMark34 cMark2 > @3:3 @2 _ / _ _ ^ _ ; RULE 2.6, SchMain.gdl(145): _ cMark4 cMark3 > @5:5 @2 _ / _ _ ^ cMark4 cMark4 _ ; RULE 2.7, SchMain.gdl(145): _ cMark4 cMark3 > @4:4 @2 _ / _ _ ^ cMark4 _ ; RULE 2.8, SchMain.gdl(145): _ cMark4 cMark3 > @3:3 @2 _ / _ _ ^ _ ; PASS: 3 Glyph ID => Column: 906 => 0 909 => 0 910 => 1 Final Table: 0 1 - - - - - - 0: 0 0 1 Matched=none Success=none 1: 1 2 0 Matched=0,1, Success=none 2: 2 0 0 Matched=0,1, Success=0,1, - - - - - - RULE 3.0, SchMain.gdl(157): if (shaddaKasra == 0) if (selectDiac) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) { comp.shadda.ref = @1; comp.kasra.ref = @2; } ; endif; endif; RULE 3.1, SchMain.gdl(160): if (shaddaKasra == 0) if (!(selectDiac)) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) ; endif; endif; PASS: 4 Glyph ID => Column: 16 => 0 238 => 1 254 .. 261 => 2 262 .. 280 => 3 282 .. 292 => 3 294 .. 295 => 3 297 .. 309 => 3 310 .. 311 => 1 313 .. 317 => 1 318 => 3 319 .. 410 => 1 411 .. 417 => 4 418 => 1 420 .. 433 => 1 435 .. 436 => 3 437 .. 439 => 1 440 => 3 444 => 1 445 .. 451 => 3 508 .. 509 => 5 511 .. 515 => 5 517 .. 608 => 5 609 .. 615 => 6 616 => 5 618 .. 631 => 5 637 .. 639 => 5 904 .. 914 => 0 916 .. 944 => 0 945 => 7 946 => 8 947 => 9 948 => 7 955 .. 960 => 0 970 .. 972 => 10 979 ..1001 => 11 1104 ..1115 => 0 1214 ..1219 => 12 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 0 3 0 0 1 3 2 5 4 7 6 0 0 Matched=none Success=none 1: 1 8 34 33 34 34 0 0 0 0 0 0 0 9 Matched=0,1,2,3,4,10,11,12,13,14,15,16,17,18,19, Success=none 2: 1 10 34 35 34 34 0 0 0 0 0 0 0 9 Matched=5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, Success=none 3: 1 11 34 34 34 34 0 0 0 0 0 0 0 9 Matched=10,11,12,13,14,15,16,17,18,19, Success=none 4: 1 0 0 0 0 0 0 0 0 0 0 0 25 0 Matched=20,21,23,24, Success=none 5: 1 0 0 0 0 0 0 0 0 0 0 0 26 0 Matched=21,23,24, Success=none 6: 1 0 0 0 0 0 0 0 0 0 0 0 27 0 Matched=22,23,24, Success=none 7: 1 0 0 0 0 0 0 0 0 0 0 0 28 0 Matched=23,24, Success=none 8: 2 12 37 36 37 37 0 0 0 0 0 0 0 0 Matched=0,1,2,3,15,16,17,18, Success=none 9: 2 13 38 38 38 38 0 0 0 0 0 0 0 0 Matched=10,11,12,13,14, Success=none 10: 2 14 37 39 37 37 0 0 0 0 0 0 0 0 Matched=5,6,7,8,15,16,17,18, Success=none 11: 2 15 37 37 37 37 0 0 0 0 0 0 0 0 Matched=15,16,17,18, Success=none 12: 3 16 42 41 42 42 0 0 0 0 0 0 0 0 Matched=0,1,2,15,16,17, Success=none 13: 3 17 43 43 43 43 0 0 0 0 0 0 0 0 Matched=10,11,12,13, Success=none 14: 3 18 42 44 42 42 0 0 0 0 0 0 0 0 Matched=5,6,7,15,16,17, Success=none 15: 3 19 42 42 42 42 0 0 0 0 0 0 0 0 Matched=15,16,17, Success=none 16: 4 20 48 47 48 48 0 0 0 0 0 0 0 0 Matched=0,1,15,16, Success=none 17: 4 21 49 49 49 49 0 0 0 0 0 0 0 0 Matched=10,11,12, Success=none 18: 4 22 48 50 48 48 0 0 0 0 0 0 0 0 Matched=5,6,15,16, Success=none 19: 4 23 48 48 48 48 0 0 0 0 0 0 0 0 Matched=15,16, Success=none 20: 5 0 53 52 53 53 0 0 0 0 0 0 0 0 Matched=0,15, Success=none 21: 5 24 54 54 54 54 0 0 0 0 0 0 0 0 Matched=10,11, Success=none 22: 5 0 53 55 53 53 0 0 0 0 0 0 0 0 Matched=5,15, Success=none 23: 5 0 53 53 53 53 0 0 0 0 0 0 0 0 Matched=15, Success=none 24: 6 0 56 56 56 56 0 0 0 0 0 0 0 0 Matched=10, Success=none 25: 2 0 0 0 0 0 0 0 0 0 0 0 29 0 Matched=20,21,23,24, Success=24, 26: 2 0 0 0 0 0 0 0 0 0 0 0 30 0 Matched=21,23,24, Success=24, 27: 2 0 0 0 0 0 0 0 0 0 0 0 31 0 Matched=22,23,24, Success=24, 28: 2 0 0 0 0 0 0 0 0 0 0 0 40 0 Matched=23,24, Success=24, 29: 3 0 0 0 0 0 0 0 0 0 0 0 32 0 Matched=20,21,23, Success=23, 30: 3 0 0 0 0 0 0 0 0 0 0 0 45 0 Matched=21,23, Success=23, 31: 3 0 0 0 0 0 0 0 0 0 0 0 46 0 Matched=22,23, Success=23, 32: 4 0 0 0 0 0 0 0 0 0 0 0 51 0 Matched=20,21, Success=21, 33: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=4,19, Success=4,19, 34: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=19, Success=19, 35: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=9,19, Success=9,19, 36: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=3,18, Success=3,18, 37: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=18, Success=18, 38: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=14, Success=14, 39: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=8,18, Success=8,18, 40: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=23, Success=23, 41: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=2,17, Success=2,17, 42: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=17, Success=17, 43: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=13, Success=13, 44: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=7,17, Success=7,17, 45: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=21, Success=21, 46: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=22, Success=22, 47: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=1,16, Success=1,16, 48: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=16, Success=16, 49: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=12, Success=12, 50: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=6,16, Success=6,16, 51: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=20, Success=20, 52: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=0,15, Success=0,15, 53: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=15, Success=15, 54: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=11, Success=11, 55: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=5,15, Success=5,15, 56: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=10, Success=10, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 4.0, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.1, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.2, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks ^ _ ; RULE 4.3, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks ^ _ ; RULE 4.4, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ ^ _ ; RULE 4.5, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.6, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.7, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks ^ _ ; RULE 4.8, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks ^ _ ; RULE 4.9, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ ^ _ ; RULE 4.10, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.11, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.12, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks ^ _ ; RULE 4.13, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks ^ _ ; RULE 4.14, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit ^ _ ; RULE 4.15, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.16, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; RULE 4.17, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks ^ _ ; RULE 4.18, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks ^ _ ; RULE 4.19, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ ^ _ ; RULE 4.20, SchMain.gdl(206): cSignTakes4 cDigitNormal cDigitNormal cDigitNormal cDigitNormal > cSign4 cDigitMedium cDigitMedium cDigitMedium cDigitMedium ; RULE 4.21, SchMain.gdl(209): cSignTakes3Medium cDigitNormal cDigitNormal cDigitNormal > cSign3Medium cDigitMedium cDigitMedium cDigitMedium ; RULE 4.22, SchMain.gdl(212): cSignTakes3Small cDigitNormal cDigitNormal cDigitNormal > cSign3Small cDigitSmall cDigitSmall cDigitSmall ; RULE 4.23, SchMain.gdl(215): cSignTakes2 cDigitNormal cDigitNormal > cSign2 cDigitMedium cDigitMedium ; RULE 4.24, SchMain.gdl(218): cSignTakes1 cDigitNormal > cSign1 cDigitMedium ; PASS: 5 Glyph ID => Column: 0 .. 236 => 0 237 .. 240 => 1 241 .. 242 => 0 243 .. 247 => 1 248 .. 262 => 0 263 => 2 264 .. 310 => 0 311 => 3 312 => 0 313 .. 314 => 4 315 => 0 316 .. 319 => 4 320 .. 356 => 0 357 .. 371 => 4 372 .. 417 => 0 418 => 5 419 .. 432 => 0 433 => 6 434 .. 437 => 0 438 => 2 439 .. 460 => 0 461 => 2 462 .. 508 => 0 509 => 3 510 => 0 511 .. 512 => 4 513 => 0 514 .. 517 => 4 518 .. 554 => 0 555 .. 569 => 4 570 .. 615 => 0 616 => 5 617 .. 630 => 0 631 => 6 632 .. 637 => 0 638 => 2 639 .. 648 => 0 649 => 2 650 .. 754 => 0 755 => 5 756 .. 768 => 0 769 => 6 770 .. 772 => 0 773 => 2 774 .. 775 => 0 776 => 2 777 .. 881 => 0 882 => 5 883 .. 895 => 0 896 => 6 897 .. 898 => 0 899 => 2 900 .. 904 => 0 905 => 7 906 .. 910 => 0 911 => 8 912 => 0 913 => 9 914 .. 923 => 0 924 => 10 925 .. 934 => 0 935 => 11 936 .. 949 => 0 950 => 12 951 .. 960 => 0 961 => 12 962 .. 969 => 0 970 => 13 971 .. 992 => 0 993 => 14 994 .. 995 => 0 996 => 14 997 => 0 998 => 14 999 ..1025 => 0 1026 => 14 1027 ..1028 => 0 1029 => 14 1030 => 0 1031 => 14 1032 ..1058 => 0 1059 => 14 1060 ..1061 => 0 1062 => 14 1063 => 0 1064 => 14 1065 ..1152 => 0 1153 ..1154 => 13 1155 ..1215 => 0 1216 ..1217 => 14 1218 ..1220 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 Matched=none Success=none 1: 1 0 13 3 3 0 6 4 11 8 0 5 9 10 12 7 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, Success=none 2: 1 0 13 3 3 0 6 4 11 8 0 0 9 10 12 7 Matched=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, Success=none 3: 2 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 Matched=1,2, Success=none 4: 2 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 Matched=1,2,4,5,6, Success=4,5,6, 5: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=0, Success=0, 6: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=3, Success=3, 7: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=7,8, Success=7,8, 8: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=9,10, Success=9,10, 9: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=11, Success=11, 10: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=12, Success=12, 11: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=13, Success=13, 12: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=14,15, Success=14,15, 13: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=16, Success=16, 14: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=1,2, Success=1,2, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 5.0, SchMain.gdl(225): absSuperscriptAlef > absSuperscriptAlef__large / cNeedsLargeDaggerAlef _ ; RULE 5.1, SchMain.gdl(228): if (selectDiac) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(2 3) { comp.base.ref = @2; comp.hamza.ref = @3; } _ / ANY _ _ ; endif; RULE 5.2, SchMain.gdl(231): if (!(selectDiac)) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(2 3) _ / ANY _ _ ; endif; RULE 5.3, SchMain.gdl(237): if (meemAlt == 1) cno_Meem > cMeemSindhi / ANY _ ; endif; RULE 5.4, SchMain.gdl(241): if (hehAlt == 1) cno_Heh > cHehKurdish / ANY _ ; endif; RULE 5.5, SchMain.gdl(244): if (hehAlt == 2) cno_Heh > cHehSindhi / ANY _ ; endif; RULE 5.6, SchMain.gdl(247): if (hehAlt == 3) cno_Heh > cHehUrdu / ANY _ ; endif; RULE 5.7, SchMain.gdl(251): if (easternDigits == 1) cEasternDigit > cEasternDigitSindhi / ANY _ ; endif; RULE 5.8, SchMain.gdl(254): if (easternDigits == 2) cEasternDigit > cEasternDigitUrdu / ANY _ ; endif; RULE 5.9, SchMain.gdl(258): if (sukunAlt == 1) cno_Sukun > cSukunDownOpen / ANY _ ; endif; RULE 5.10, SchMain.gdl(261): if (sukunAlt == 2) cno_Sukun > cSukunLeftOpen / ANY _ ; endif; RULE 5.11, SchMain.gdl(265): if (headOfKhahAlt == 1) cno_OpenLeft > cOpenLeft / ANY _ ; endif; RULE 5.12, SchMain.gdl(269): if (commaAlt) cno_Downward > cDownward / ANY _ ; endif; RULE 5.13, SchMain.gdl(273): if (dammatanAlt) cno_SixNine > cSixNine / ANY _ ; endif; RULE 5.14, SchMain.gdl(277): if (endOfAyah == 1) cEndOfAyah > cEndOfAyahCircle / ANY _ ; endif; RULE 5.15, SchMain.gdl(280): if (endOfAyah == 2) cEndOfAyah > cEndOfAyahSquare / ANY _ ; endif; RULE 5.16, SchMain.gdl(286): if (!(invis)) cInvisible > zeroWidthSpace { dir = @2.dir; } / ANY _ ; endif; PASS: 6 Glyph ID => Column: 16 => 0 257 => 1 490 => 2 508 .. 509 => 3 684 => 1 732 => 4 736 => 4 758 => 1 761 => 5 779 => 6 811 => 1 859 => 4 863 => 7 865 => 1 904 .. 914 => 0 916 .. 944 => 0 955 .. 960 => 0 1104 ..1115 => 0 Final Table: 0 1 2 3 4 5 6 7 - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 0 4 0 0 2 0 3 1 Matched=none Success=none 1: 1 5 0 22 0 0 21 0 0 Matched=0,1,2,3,4,10,11,12,13,14, Success=none 2: 1 6 0 0 0 0 21 0 0 Matched=0,1,2,3,4, Success=none 3: 1 7 0 0 23 0 0 0 0 Matched=5,6,7,8,9, Success=none 4: 1 8 0 22 0 0 0 0 0 Matched=10,11,12,13,14, Success=none 5: 2 9 0 25 0 0 24 0 0 Matched=0,1,2,3,10,11,12,13, Success=none 6: 2 10 0 0 0 0 24 0 0 Matched=0,1,2,3, Success=none 7: 2 11 0 0 26 0 0 0 0 Matched=5,6,7,8, Success=none 8: 2 12 0 25 0 0 0 0 0 Matched=10,11,12,13, Success=none 9: 3 13 0 28 0 0 27 0 0 Matched=0,1,2,10,11,12, Success=none 10: 3 14 0 0 0 0 27 0 0 Matched=0,1,2, Success=none 11: 3 15 0 0 29 0 0 0 0 Matched=5,6,7, Success=none 12: 3 16 0 28 0 0 0 0 0 Matched=10,11,12, Success=none 13: 4 17 0 31 0 0 30 0 0 Matched=0,1,10,11, Success=none 14: 4 18 0 0 0 0 30 0 0 Matched=0,1, Success=none 15: 4 19 0 0 32 0 0 0 0 Matched=5,6, Success=none 16: 4 20 0 31 0 0 0 0 0 Matched=10,11, Success=none 17: 5 0 0 34 0 0 33 0 0 Matched=0,10, Success=none 18: 5 0 0 0 0 0 33 0 0 Matched=0, Success=none 19: 5 0 0 0 35 0 0 0 0 Matched=5, Success=none 20: 5 0 0 34 0 0 0 0 0 Matched=10, Success=none 21: 2 0 0 0 0 0 0 0 0 Matched=4, Success=4, 22: 2 0 0 0 0 0 0 0 0 Matched=14, Success=14, 23: 2 0 0 0 0 0 0 0 0 Matched=9, Success=9, 24: 3 0 0 0 0 0 0 0 0 Matched=3, Success=3, 25: 3 0 0 0 0 0 0 0 0 Matched=13, Success=13, 26: 3 0 0 0 0 0 0 0 0 Matched=8, Success=8, 27: 4 0 0 0 0 0 0 0 0 Matched=2, Success=2, 28: 4 0 0 0 0 0 0 0 0 Matched=12, Success=12, 29: 4 0 0 0 0 0 0 0 0 Matched=7, Success=7, 30: 5 0 0 0 0 0 0 0 0 Matched=1, Success=1, 31: 5 0 0 0 0 0 0 0 0 Matched=11, Success=11, 32: 5 0 0 0 0 0 0 0 0 Matched=6, Success=6, 33: 6 0 0 0 0 0 0 0 0 Matched=0, Success=0, 34: 6 0 0 0 0 0 0 0 0 Matched=10, Success=10, 35: 6 0 0 0 0 0 0 0 0 Matched=5, Success=5, - - - - - - - - - - - - - - - - - - - - - - - - RULE 6.0, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ absRnoonMed ; RULE 6.1, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ absRnoonMed ; RULE 6.2, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ absRnoonMed ; RULE 6.3, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:4 / _ cAnyMarks _ absRnoonMed ; RULE 6.4, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:3 / _ _ absRnoonMed ; RULE 6.5, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ *GC16* ; RULE 6.6, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ *GC16* ; RULE 6.7, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ *GC16* ; RULE 6.8, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:4 / _ cAnyMarks _ *GC16* ; RULE 6.9, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:3 / _ _ *GC16* ; RULE 6.10, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ absRrehFin ; RULE 6.11, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ absRrehFin ; RULE 6.12, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ absRrehFin ; RULE 6.13, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:4 / _ cAnyMarks _ absRrehFin ; RULE 6.14, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:3 / _ _ absRrehFin ; PASS 10: bidi TABLE: positioning PASS: 0--no FSM PASS: 7 Glyph ID => Column: 16 => 0 254 .. 256 => 1 257 => 2 258 .. 261 => 1 262 => 3 263 => 4 264 .. 307 => 3 308 => 2 309 .. 313 => 1 314 => 2 315 .. 319 => 1 320 .. 356 => 3 357 => 2 358 .. 371 => 1 372 .. 374 => 3 375 .. 381 => 1 382 .. 390 => 3 391 .. 394 => 1 395 .. 409 => 3 410 => 1 411 .. 417 => 3 418 .. 424 => 1 425 => 3 426 .. 428 => 1 429 => 3 430 .. 444 => 1 452 .. 454 => 1 455 => 2 456 .. 459 => 1 460 => 3 461 => 4 462 => 3 463 => 1 464 .. 505 => 3 506 => 2 507 .. 511 => 1 512 => 2 513 .. 517 => 1 518 .. 554 => 3 555 => 2 556 .. 569 => 1 570 .. 572 => 3 573 .. 579 => 1 580 .. 588 => 3 589 .. 592 => 1 593 .. 607 => 3 608 => 1 609 .. 615 => 3 616 .. 619 => 1 620 .. 628 => 3 629 .. 640 => 1 648 .. 651 => 3 652 => 4 653 .. 693 => 3 694 => 4 695 .. 711 => 3 712 .. 718 => 1 719 .. 767 => 3 768 => 1 769 => 3 770 => 1 771 .. 772 => 3 773 .. 774 => 1 775 .. 778 => 3 779 => 4 780 .. 820 => 3 821 => 4 822 .. 838 => 3 839 .. 858 => 1 859 .. 900 => 3 901 => 1 904 .. 905 => 5 906 => 6 907 .. 908 => 5 909 => 6 910 => 7 911 .. 912 => 8 913 => 9 914 => 6 916 .. 920 => 8 921 => 10 922 .. 923 => 8 924 => 11 925 => 8 926 .. 934 => 0 935 => 8 936 => 0 937 => 6 938 .. 940 => 0 941 => 6 942 .. 943 => 0 944 => 6 945 .. 946 => 12 947 => 13 948 => 12 949 .. 951 => 1 954 => 1 955 .. 960 => 0 961 .. 962 => 1 964 => 1 968 .. 969 => 1 970 .. 972 => 12 974 => 1 1012 ..1034 => 14 1045 ..1067 => 14 1104 ..1115 => 8 1116 => 1 1153 => 15 1154 => 16 1155 => 15 1156 => 16 1157 => 15 1158 => 16 1159 => 15 1160 => 16 1161 => 15 1162 => 16 1163 => 17 1165 => 15 1166 => 16 1167 ..1173 => 18 1174 ..1181 => 19 1182 ..1188 => 18 1189 ..1196 => 19 1214 ..1216 => 20 1218 => 20 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 0 7 6 3 2 7 0 4 7 5 0 7 12 10 0 11 9 8 1 3 7 Matched=none Success=none 1: 1 35 0 0 0 0 35 14 35 35 35 13 36 0 0 0 0 0 0 0 41 0 Matched=0,1,2,3,4,5,15,16,17,18, Success=none 2: 1 44 0 0 0 0 44 15 44 44 44 0 42 0 0 0 0 0 0 0 0 43 Matched=5,14,15,16,17,18, Success=none 3: 1 44 0 0 0 0 44 15 44 44 44 0 42 0 0 0 0 0 0 0 0 0 Matched=5,15,16,17,18, Success=none 4: 1 44 0 0 0 0 45 16 44 44 44 0 44 0 0 0 0 0 0 0 0 0 Matched=6,7,8,9,15,16,17,18, Success=none 5: 1 44 0 0 0 0 46 17 44 44 44 0 44 0 0 0 0 0 0 0 0 0 Matched=10,11,12,13,15,16,17,18, Success=none 6: 1 44 0 0 0 0 44 15 44 44 44 0 44 0 0 0 0 0 0 0 0 43 Matched=14,15,16,17,18, Success=none 7: 1 44 0 0 0 0 44 15 44 44 44 0 44 0 0 0 0 0 0 0 0 0 Matched=15,16,17,18, Success=none 8: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 Matched=19, Success=none 9: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 Matched=20, Success=none 10: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 0 0 0 0 0 0 Matched=21,22, Success=none 11: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 Matched=21, Success=none 12: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 0 0 0 0 0 0 Matched=22, Success=none 13: 2 21 0 0 0 0 21 21 21 21 21 21 21 0 0 0 0 0 0 0 48 0 Matched=0,1,2,3, Success=none 14: 2 38 0 0 0 0 38 22 38 38 38 21 38 0 0 0 0 0 0 0 48 0 Matched=0,1,2,3,15,16,17, Success=none 15: 2 49 0 0 0 0 49 23 49 49 49 0 49 0 0 0 0 0 0 0 0 0 Matched=15,16,17, Success=none 16: 2 49 0 0 0 0 50 24 49 49 49 0 49 0 0 0 0 0 0 0 0 0 Matched=6,7,8,15,16,17, Success=none 17: 2 49 0 0 0 0 51 25 49 49 49 0 49 0 0 0 0 0 0 0 0 0 Matched=10,11,12,15,16,17, Success=none 18: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0 0 0 0 0 0 Matched=19, Success=none 19: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 0 0 0 0 0 0 Matched=20, Success=none 20: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 0 0 0 0 0 0 Matched=21, Success=none 21: 3 28 0 0 0 0 28 28 28 28 28 28 28 0 0 0 0 0 0 0 53 0 Matched=0,1,2, Success=none 22: 3 39 0 0 0 0 39 29 39 39 39 28 39 0 0 0 0 0 0 0 53 0 Matched=0,1,2,15,16, Success=none 23: 3 54 0 0 0 0 54 30 54 54 54 0 54 0 0 0 0 0 0 0 0 0 Matched=15,16, Success=none 24: 3 54 0 0 0 0 55 31 54 54 54 0 54 0 0 0 0 0 0 0 0 0 Matched=6,7,15,16, Success=none 25: 3 54 0 0 0 0 56 32 54 54 54 0 54 0 0 0 0 0 0 0 0 0 Matched=10,11,15,16, Success=none 26: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 0 0 0 0 0 Matched=19, Success=none 27: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 0 0 0 0 0 0 Matched=20, Success=none 28: 4 34 0 0 0 0 34 34 34 34 34 34 34 0 0 0 0 0 0 0 58 0 Matched=0,1, Success=none 29: 4 40 0 0 0 0 40 34 40 40 40 34 40 0 0 0 0 0 0 0 58 0 Matched=0,1,15, Success=none 30: 4 59 0 0 0 0 59 0 59 59 59 0 59 0 0 0 0 0 0 0 0 0 Matched=15, Success=none 31: 4 59 0 0 0 0 60 0 59 59 59 0 59 0 0 0 0 0 0 0 0 0 Matched=6,15, Success=none 32: 4 59 0 0 0 0 61 0 59 59 59 0 59 0 0 0 0 0 0 0 0 0 Matched=10,15, Success=none 33: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 0 0 0 0 0 0 Matched=19, Success=none 34: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 0 Matched=0, Success=none 35: 2 21 0 0 0 0 21 21 21 21 21 21 21 0 0 0 0 0 0 0 48 0 Matched=0,1,2,3,18, Success=18, 36: 2 21 0 0 0 0 21 21 21 21 21 21 21 0 0 0 0 0 0 0 48 0 Matched=0,1,2,3,5,18, Success=5,18, 37: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 0 0 0 0 0 0 Matched=21,22, Success=22, 38: 3 28 0 0 0 0 28 28 28 28 28 28 28 0 0 0 0 0 0 0 53 0 Matched=0,1,2,17, Success=17, 39: 4 34 0 0 0 0 34 34 34 34 34 34 34 0 0 0 0 0 0 0 58 0 Matched=0,1,16, Success=16, 40: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 0 Matched=0,15, Success=15, 41: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=4, Success=4, 42: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=5,18, Success=5,18, 43: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=14, Success=14, 44: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=18, Success=18, 45: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=9,18, Success=9,18, 46: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=13,18, Success=13,18, 47: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=22, Success=22, 48: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=3, Success=3, 49: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=17, Success=17, 50: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=8,17, Success=8,17, 51: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=12,17, Success=12,17, 52: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=21, Success=21, 53: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=2, Success=2, 54: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=16, Success=16, 55: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=7,16, Success=7,16, 56: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=11,16, Success=11,16, 57: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=20, Success=20, 58: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=1, Success=1, 59: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=15, Success=15, 60: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=6,15, Success=6,15, 61: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=10,15, Success=10,15, 62: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=19, Success=19, 63: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=0, Success=0, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 7.0, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ ; RULE 7.1, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks cAnyMarks _ ; RULE 7.2, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks _ ; RULE 7.3, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks _ ; RULE 7.4, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } _ ; RULE 7.5, SchMain.gdl(309): cHasAlef cMatchesAlef { attach {to = @1; at = alef; with = alef_; } insert = 1; } / _ ^ _ ; RULE 7.6, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; RULE 7.7, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; RULE 7.8, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; RULE 7.9, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ _ ; RULE 7.10, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; RULE 7.11, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; RULE 7.12, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; RULE 7.13, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ _ ; RULE 7.14, SchMain.gdl(325): cTakesDiaDigitA cDiaDigitAbove { attach {to = @1; at = diaDigitA; with = diaDigitA_; } } / _ ^ _ ; RULE 7.15, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; RULE 7.16, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; RULE 7.17, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; RULE 7.18, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ _ ; RULE 7.19, SchMain.gdl(337): cSign4 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @4; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @5; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; RULE 7.20, SchMain.gdl(343): cSign3 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @4; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; RULE 7.21, SchMain.gdl(348): cSign2 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; RULE 7.22, SchMain.gdl(352): cSign1 cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; PASS: 8 Glyph ID => Column: 16 => 0 254 .. 313 => 1 314 => 2 315 .. 339 => 1 340 => 2 341 .. 444 => 1 452 .. 511 => 1 512 => 2 513 .. 537 => 1 538 => 2 539 .. 640 => 1 648 .. 651 => 1 652 => 2 653 .. 676 => 1 677 => 2 678 .. 778 => 1 779 => 2 780 .. 803 => 1 804 => 2 805 .. 901 => 1 904 .. 905 => 0 906 => 3 907 .. 908 => 0 909 => 3 910 .. 913 => 0 914 => 4 915 => 3 916 .. 920 => 0 921 => 5 922 .. 936 => 0 937 => 6 938 .. 940 => 0 941 => 6 942 .. 943 => 0 944 => 6 949 .. 951 => 1 954 => 1 955 .. 960 => 0 961 .. 962 => 1 964 => 1 968 .. 969 => 1 974 => 1 1104 ..1115 => 0 1116 => 1 1167 ..1173 => 1 1174 ..1181 => 7 1182 ..1188 => 1 1189 ..1196 => 7 1217 => 8 1219 => 8 Final Table: 0 1 2 3 4 5 6 7 8 - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 0 3 2 3 3 3 0 1 3 Matched=none Success=none 1: 1 4 0 0 11 10 7 10 0 0 Matched=0,2,3,4,5, Success=none 2: 1 4 0 0 11 11 7 11 0 12 Matched=1,2,3,4,5, Success=none 3: 1 4 0 0 11 11 7 11 0 0 Matched=2,3,4,5, Success=none 4: 2 5 0 0 13 13 8 13 0 0 Matched=2,3,4, Success=none 5: 3 6 0 0 14 14 9 14 0 0 Matched=2,3, Success=none 6: 4 0 0 0 15 15 15 15 0 0 Matched=2, Success=none 7: 2 5 0 0 13 13 8 13 0 0 Matched=2,3,4,5, Success=5, 8: 3 6 0 0 14 14 9 14 0 0 Matched=2,3,4, Success=4, 9: 4 0 0 0 15 15 15 15 0 0 Matched=2,3, Success=3, 10: 2 0 0 0 0 0 0 0 0 0 Matched=0,5, Success=0,5, 11: 2 0 0 0 0 0 0 0 0 0 Matched=5, Success=5, 12: 2 0 0 0 0 0 0 0 0 0 Matched=1, Success=1, 13: 3 0 0 0 0 0 0 0 0 0 Matched=4, Success=4, 14: 4 0 0 0 0 0 0 0 0 0 Matched=3, Success=3, 15: 5 0 0 0 0 0 0 0 0 0 Matched=2, Success=2, - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 8.0, SchMain.gdl(361): cHasDia2B cMatchesDia2B { attach {to = @1; at = dia2B; with = dia2B_; } insert = selectDiac; } / _ ^ _ ; RULE 8.1, SchMain.gdl(367): cTakesDiaDigitB cDiaDigitBelow { attach {to = @1; at = diaDigitB; with = diaDigitB_; } } / _ ^ _ ; RULE 8.2, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove cAnyMarksAbove cAnyMarksAbove _ ; RULE 8.3, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove cAnyMarksAbove _ ; RULE 8.4, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove _ ; RULE 8.5, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ _ ; PASS: 9 Glyph ID => Column: 0 .. 15 => 0 16 => 1 17 .. 256 => 0 257 => 2 258 .. 291 => 0 292 => 3 293 .. 400 => 0 401 => 4 402 .. 423 => 0 424 => 5 425 .. 432 => 0 433 => 6 434 .. 437 => 0 438 => 6 439 .. 454 => 0 455 => 7 456 .. 489 => 0 490 => 8 491 .. 500 => 0 501 => 9 502 .. 504 => 0 505 => 10 506 .. 507 => 0 508 .. 509 => 11 510 .. 536 => 0 537 .. 538 => 12 539 => 0 540 .. 554 => 12 555 .. 592 => 0 593 => 12 594 .. 596 => 0 597 .. 607 => 13 608 .. 621 => 0 622 => 5 623 .. 657 => 0 658 => 14 659 .. 662 => 15 663 => 16 664 .. 665 => 15 666 => 16 667 => 15 668 => 16 669 .. 683 => 0 684 => 17 685 .. 731 => 0 732 => 18 733 .. 735 => 0 736 => 18 737 .. 744 => 0 745 => 19 746 .. 757 => 0 758 => 17 759 => 0 760 => 5 761 => 20 762 .. 778 => 0 779 => 21 780 .. 784 => 0 785 => 14 786 .. 789 => 15 790 => 16 791 .. 792 => 15 793 => 16 794 => 15 795 => 16 796 .. 810 => 0 811 => 17 812 .. 858 => 0 859 => 18 860 .. 862 => 0 863 => 22 864 => 0 865 => 23 866 .. 871 => 0 872 => 19 873 .. 886 => 0 887 => 5 888 .. 898 => 0 899 => 6 900 .. 903 => 0 904 .. 905 => 24 906 => 25 907 .. 908 => 24 909 => 26 910 => 1 911 => 24 912 => 27 913 .. 914 => 1 915 => 0 916 => 24 917 => 28 918 .. 919 => 24 920 => 28 921 .. 925 => 24 926 .. 934 => 1 935 => 24 936 .. 944 => 1 945 .. 954 => 0 955 .. 958 => 1 959 => 29 960 => 1 961 ..1103 => 0 1104 ..1115 => 24 1116 => 30 1117 ..1213 => 0 1214 ..1216 => 31 1217 => 0 1218 => 31 1219 ..1220 => 0 Final Table: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 Matched=none Success=none 1: 1 0 0 6 0 0 9 0 8 0 0 0 0 0 0 10 12 11 7 4 13 0 5 3 7 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80, Success=none 2: 1 0 0 6 0 0 14 0 8 0 0 0 0 0 0 10 12 11 7 4 13 0 5 3 7 0 0 0 0 0 0 0 0 Matched=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80, Success=none 3: 2 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 15 16 0 Matched=0,1,2,3,4,10,11,12,13,14, Success=none 4: 2 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 18 0 Matched=0,1,2,3,4, Success=none 5: 2 0 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 19 19 19 19 19 20 0 Matched=5,6,7,8,9, Success=none 6: 2 0 21 0 231 0 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 21 21 22 21 21 23 25 Matched=10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,39,40, Success=none 7: 2 0 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 26 26 26 26 26 23 0 Matched=10,11,12,13,14, Success=none 8: 2 0 27 0 0 0 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 27 27 27 27 27 0 25 Matched=20,21,22,23,24,25,26,27,28,29, Success=none 9: 2 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 232 0 0 0 Matched=31, Success=none 10: 2 0 30 0 0 0 0 0 0 0 0 233 0 0 0 0 0 0 0 0 0 0 0 0 0 31 29 28 30 31 30 0 0 Matched=32,33,34,35,41,42,43,44,45,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, Success=none 11: 2 0 34 0 0 0 0 0 0 0 0 234 0 0 0 0 0 0 0 0 0 0 0 0 0 35 33 32 34 35 34 0 0 Matched=36,37,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, Success=none 12: 2 0 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38 36 37 37 38 37 0 0 Matched=38,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, Success=none 13: 2 0 39 0 0 0 0 0 0 0 0 0 0 0 235 0 0 0 0 0 0 0 0 0 0 39 39 39 39 39 39 0 0 Matched=76,77,78,79,80, Success=none 14: 2 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 236 0 0 0 Matched=30,31, Success=none 15: 3 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 40 40 40 40 40 41 0 Matched=0,1,2,3,10,11,12,13, Success=none 16: 3 0 0 0 0 0 0 0 0 238 0 0 0 0 0 0 0 0 0 0 0 237 0 0 0 0 0 0 0 0 0 0 0 Matched=4,14, Success=none 17: 3 0 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42 42 42 42 42 42 43 0 Matched=0,1,2,3, Success=none 18: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 237 0 0 0 0 0 0 0 0 0 0 0 Matched=4, Success=none 19: 3 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 44 44 44 45 0 Matched=5,6,7,8, Success=none 20: 3 0 0 0 0 0 0 0 0 0 0 0 239 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=9, Success=none 21: 3 0 46 0 240 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 46 46 46 46 46 47 0 Matched=10,11,12,13,15,16,17,18,20,21,22,23, Success=none 22: 3 0 46 0 240 241 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 242 46 46 46 46 46 46 47 0 Matched=10,11,12,13,15,16,17,18,20,21,22,23,39,40, Success=none 23: 3 0 0 0 0 0 0 0 0 238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=14, Success=none 24: 3 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 243 0 0 Matched=24, Success=none 25: 3 0 49 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49 49 49 49 49 49 0 0 Matched=25,26,27,28,29, Success=none 26: 3 0 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 51 51 51 51 51 47 0 Matched=10,11,12,13, Success=none 27: 3 0 52 0 0 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 52 52 52 52 52 0 0 Matched=20,21,22,23, Success=none 28: 3 0 53 0 0 0 0 0 0 0 0 245 0 244 0 0 0 0 0 0 0 0 0 0 0 54 53 53 53 54 53 0 0 Matched=32,34,41,42,43,44,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 29: 3 0 53 0 0 0 0 0 0 0 0 245 0 246 0 0 0 0 0 0 0 0 0 0 0 54 53 53 53 54 53 0 0 Matched=33,35,41,42,43,44,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 30: 3 0 53 0 0 0 0 0 0 0 0 245 0 0 0 0 0 0 0 0 0 0 0 0 0 54 53 53 53 54 53 0 0 Matched=41,42,43,44,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 31: 3 0 55 0 0 0 0 0 0 0 247 245 0 0 0 0 0 0 0 0 0 0 0 0 0 56 55 55 55 56 55 0 0 Matched=41,42,43,44,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, Success=none 32: 3 0 57 0 0 0 0 0 0 0 0 249 0 248 0 0 0 0 0 0 0 0 0 0 0 58 57 57 57 58 57 0 0 Matched=36,46,47,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 33: 3 0 57 0 0 0 0 0 0 0 0 249 0 250 0 0 0 0 0 0 0 0 0 0 0 58 57 57 57 58 57 0 0 Matched=37,46,47,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 34: 3 0 57 0 0 0 0 0 0 0 0 249 0 0 0 0 0 0 0 0 0 0 0 0 0 58 57 57 57 58 57 0 0 Matched=46,47,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 35: 3 0 59 0 0 0 0 0 0 0 247 249 0 0 0 0 0 0 0 0 0 0 0 0 0 60 59 59 59 60 59 0 0 Matched=46,47,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, Success=none 36: 3 0 61 0 0 0 0 0 0 0 0 0 0 251 0 0 0 0 0 0 0 0 0 0 0 62 61 61 61 62 61 0 0 Matched=38,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 37: 3 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 61 61 61 62 61 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 38: 3 0 63 0 0 0 0 0 0 0 247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 63 63 63 64 63 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, Success=none 39: 3 0 65 0 0 0 0 0 0 0 0 0 0 0 252 0 0 0 0 0 0 0 0 0 0 65 65 65 65 65 65 0 0 Matched=76,77,78,79, Success=none 40: 4 0 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 66 66 66 66 66 67 0 Matched=0,1,2,10,11,12, Success=none 41: 4 0 0 0 0 0 0 0 0 254 0 0 0 0 0 0 0 0 0 0 0 253 0 0 0 0 0 0 0 0 0 0 0 Matched=3,13, Success=none 42: 4 0 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 68 68 68 68 68 68 69 0 Matched=0,1,2, Success=none 43: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 253 0 0 0 0 0 0 0 0 0 0 0 Matched=3, Success=none 44: 4 0 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 70 70 70 70 70 71 0 Matched=5,6,7, Success=none 45: 4 0 0 0 0 0 0 0 0 0 0 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=8, Success=none 46: 4 0 72 0 256 0 0 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 72 72 72 72 72 73 0 Matched=10,11,12,15,16,17,20,21,22, Success=none 47: 4 0 0 0 0 0 0 0 0 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=13, Success=none 48: 4 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 257 0 0 Matched=23, Success=none 49: 4 0 75 0 0 0 0 76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 75 75 75 75 75 0 0 Matched=25,26,27,28, Success=none 50: 4 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 258 0 0 Matched=29, Success=none 51: 4 0 77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 77 77 77 77 77 73 0 Matched=10,11,12, Success=none 52: 4 0 78 0 0 0 0 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78 78 78 78 78 78 0 0 Matched=20,21,22, Success=none 53: 4 0 79 0 0 0 0 0 0 0 0 259 0 0 0 0 0 0 0 0 0 0 0 0 0 80 79 79 79 80 79 0 0 Matched=41,42,43,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, Success=none 54: 4 0 81 0 0 0 0 0 0 0 260 259 0 0 0 0 0 0 0 0 0 0 0 0 0 82 81 81 81 82 81 0 0 Matched=41,42,43,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 55: 4 0 83 0 0 0 0 0 0 0 261 259 0 0 0 0 0 0 0 0 0 0 0 0 0 84 83 83 83 84 83 0 0 Matched=41,42,43,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73,74, Success=none 56: 4 0 85 0 0 0 0 0 0 0 262 259 0 0 0 0 0 0 0 0 0 0 0 0 0 86 85 85 85 86 85 0 0 Matched=41,42,43,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, Success=none 57: 4 0 87 0 0 0 0 0 0 0 0 263 0 0 0 0 0 0 0 0 0 0 0 0 0 88 87 87 87 88 87 0 0 Matched=46,47,48,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, Success=none 58: 4 0 89 0 0 0 0 0 0 0 260 263 0 0 0 0 0 0 0 0 0 0 0 0 0 90 89 89 89 90 89 0 0 Matched=46,47,48,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 59: 4 0 91 0 0 0 0 0 0 0 261 263 0 0 0 0 0 0 0 0 0 0 0 0 0 92 91 91 91 92 91 0 0 Matched=46,47,48,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73,74, Success=none 60: 4 0 93 0 0 0 0 0 0 0 262 263 0 0 0 0 0 0 0 0 0 0 0 0 0 94 93 93 93 94 93 0 0 Matched=46,47,48,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, Success=none 61: 4 0 95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 96 95 95 95 96 95 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, Success=none 62: 4 0 97 0 0 0 0 0 0 0 260 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 97 97 97 98 97 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, Success=none 63: 4 0 99 0 0 0 0 0 0 0 261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 99 99 99 100 99 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73,74, Success=none 64: 4 0 101 0 0 0 0 0 0 0 262 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 101 101 101 102 101 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, Success=none 65: 4 0 103 0 0 0 0 0 0 0 0 0 0 0 264 0 0 0 0 0 0 0 0 0 0 103 103 103 103 103 103 0 0 Matched=76,77,78, Success=none 66: 5 0 104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104 104 104 104 104 104 105 0 Matched=0,1,10,11, Success=none 67: 5 0 0 0 0 0 0 0 0 266 0 0 0 0 0 0 0 0 0 0 0 265 0 0 0 0 0 0 0 0 0 0 0 Matched=2,12, Success=none 68: 5 0 106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106 106 106 106 106 106 107 0 Matched=0,1, Success=none 69: 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 265 0 0 0 0 0 0 0 0 0 0 0 Matched=2, Success=none 70: 5 0 108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 108 108 108 108 108 108 109 0 Matched=5,6, Success=none 71: 5 0 0 0 0 0 0 0 0 0 0 0 267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=7, Success=none 72: 5 0 110 0 268 0 0 112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110 110 110 110 110 110 111 0 Matched=10,11,15,16,20,21, Success=none 73: 5 0 0 0 0 0 0 0 0 266 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=12, Success=none 74: 5 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 269 0 0 Matched=22, Success=none 75: 5 0 113 0 0 0 0 114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113 113 113 113 113 113 0 0 Matched=25,26,27, Success=none 76: 5 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 270 0 0 Matched=28, Success=none 77: 5 0 115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 115 115 115 115 115 115 111 0 Matched=10,11, Success=none 78: 5 0 116 0 0 0 0 112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 116 116 116 116 116 116 0 0 Matched=20,21, Success=none 79: 5 0 117 0 0 0 0 0 0 0 0 271 0 0 0 0 0 0 0 0 0 0 0 0 0 118 117 117 117 118 117 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60, Success=none 80: 5 0 119 0 0 0 0 0 0 0 272 271 0 0 0 0 0 0 0 0 0 0 0 0 0 120 119 119 119 120 119 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, Success=none 81: 5 0 121 0 0 0 0 0 0 0 273 271 0 0 0 0 0 0 0 0 0 0 0 0 0 122 121 121 121 122 121 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60,66,67,68,69, Success=none 82: 5 0 123 0 0 0 0 0 0 0 274 271 0 0 0 0 0 0 0 0 0 0 0 0 0 124 123 123 123 124 123 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69, Success=none 83: 5 0 125 0 0 0 0 0 0 0 275 271 0 0 0 0 0 0 0 0 0 0 0 0 0 126 125 125 125 126 125 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60,71,72,73, Success=none 84: 5 0 127 0 0 0 0 0 0 0 276 271 0 0 0 0 0 0 0 0 0 0 0 0 0 128 127 127 127 128 127 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73, Success=none 85: 5 0 129 0 0 0 0 0 0 0 277 271 0 0 0 0 0 0 0 0 0 0 0 0 0 130 129 129 129 130 129 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60,66,67,68,69,71,72,73, Success=none 86: 5 0 131 0 0 0 0 0 0 0 278 271 0 0 0 0 0 0 0 0 0 0 0 0 0 132 131 131 131 132 131 0 0 Matched=41,42,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,73, Success=none 87: 5 0 133 0 0 0 0 0 0 0 0 279 0 0 0 0 0 0 0 0 0 0 0 0 0 134 133 133 133 134 133 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60, Success=none 88: 5 0 135 0 0 0 0 0 0 0 272 279 0 0 0 0 0 0 0 0 0 0 0 0 0 136 135 135 135 136 135 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, Success=none 89: 5 0 137 0 0 0 0 0 0 0 273 279 0 0 0 0 0 0 0 0 0 0 0 0 0 138 137 137 137 138 137 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60,66,67,68,69, Success=none 90: 5 0 139 0 0 0 0 0 0 0 274 279 0 0 0 0 0 0 0 0 0 0 0 0 0 140 139 139 139 140 139 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69, Success=none 91: 5 0 141 0 0 0 0 0 0 0 275 279 0 0 0 0 0 0 0 0 0 0 0 0 0 142 141 141 141 142 141 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60,71,72,73, Success=none 92: 5 0 143 0 0 0 0 0 0 0 276 279 0 0 0 0 0 0 0 0 0 0 0 0 0 144 143 143 143 144 143 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73, Success=none 93: 5 0 145 0 0 0 0 0 0 0 277 279 0 0 0 0 0 0 0 0 0 0 0 0 0 146 145 145 145 146 145 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60,66,67,68,69,71,72,73, Success=none 94: 5 0 147 0 0 0 0 0 0 0 278 279 0 0 0 0 0 0 0 0 0 0 0 0 0 148 147 147 147 148 147 0 0 Matched=46,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,73, Success=none 95: 5 0 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 150 149 149 149 150 149 0 0 Matched=51,52,53,54,55,56,57,58,59,60, Success=none 96: 5 0 151 0 0 0 0 0 0 0 272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152 151 151 151 152 151 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, Success=none 97: 5 0 153 0 0 0 0 0 0 0 273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 154 153 153 153 154 153 0 0 Matched=51,52,53,54,55,56,57,58,59,60,66,67,68,69, Success=none 98: 5 0 155 0 0 0 0 0 0 0 274 0 0 0 0 0 0 0 0 0 0 0 0 0 0 156 155 155 155 156 155 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69, Success=none 99: 5 0 157 0 0 0 0 0 0 0 275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 158 157 157 157 158 157 0 0 Matched=51,52,53,54,55,56,57,58,59,60,71,72,73, Success=none 100: 5 0 159 0 0 0 0 0 0 0 276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160 159 159 159 160 159 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73, Success=none 101: 5 0 161 0 0 0 0 0 0 0 277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 162 161 161 161 162 161 0 0 Matched=51,52,53,54,55,56,57,58,59,60,66,67,68,69,71,72,73, Success=none 102: 5 0 163 0 0 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 164 163 163 163 164 163 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,73, Success=none 103: 5 0 165 0 0 0 0 0 0 0 0 0 0 0 280 0 0 0 0 0 0 0 0 0 0 165 165 165 165 165 165 0 0 Matched=76,77, Success=none 104: 6 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 166 0 Matched=0,10, Success=none 105: 6 0 0 0 0 0 0 0 0 282 0 0 0 0 0 0 0 0 0 0 0 281 0 0 0 0 0 0 0 0 0 0 0 Matched=1,11, Success=none 106: 6 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 167 0 Matched=0, Success=none 107: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 281 0 0 0 0 0 0 0 0 0 0 0 Matched=1, Success=none 108: 6 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 168 0 Matched=5, Success=none 109: 6 0 0 0 0 0 0 0 0 0 0 0 283 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=6, Success=none 110: 6 0 0 0 284 0 0 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 169 0 Matched=10,15,20, Success=none 111: 6 0 0 0 0 0 0 0 0 282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=11, Success=none 112: 6 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 285 0 0 Matched=21, Success=none 113: 6 0 171 0 0 0 0 172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171 171 171 171 171 171 0 0 Matched=25,26, Success=none 114: 6 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 286 0 0 Matched=27, Success=none 115: 6 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 169 0 Matched=10, Success=none 116: 6 0 0 0 0 0 0 170 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 Matched=20, Success=none 117: 6 0 0 0 0 0 0 0 0 0 0 287 0 0 0 0 0 0 0 0 0 0 0 0 0 173 0 0 0 173 0 0 0 Matched=41,51,52,53,54,55, Success=none 118: 6 0 175 0 0 0 0 0 0 0 288 287 0 0 0 0 0 0 0 0 0 0 0 0 0 174 175 175 175 174 175 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60, Success=none 119: 6 0 177 0 0 0 0 0 0 0 289 287 0 0 0 0 0 0 0 0 0 0 0 0 0 176 177 177 177 176 177 0 0 Matched=41,51,52,53,54,55,61,62,63,64, Success=none 120: 6 0 179 0 0 0 0 0 0 0 290 287 0 0 0 0 0 0 0 0 0 0 0 0 0 178 179 179 179 178 179 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60,61,62,63,64, Success=none 121: 6 0 181 0 0 0 0 0 0 0 291 287 0 0 0 0 0 0 0 0 0 0 0 0 0 180 181 181 181 180 181 0 0 Matched=41,51,52,53,54,55,66,67,68, Success=none 122: 6 0 183 0 0 0 0 0 0 0 292 287 0 0 0 0 0 0 0 0 0 0 0 0 0 182 183 183 183 182 183 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60,66,67,68, Success=none 123: 6 0 185 0 0 0 0 0 0 0 293 287 0 0 0 0 0 0 0 0 0 0 0 0 0 184 185 185 185 184 185 0 0 Matched=41,51,52,53,54,55,61,62,63,64,66,67,68, Success=none 124: 6 0 187 0 0 0 0 0 0 0 294 287 0 0 0 0 0 0 0 0 0 0 0 0 0 186 187 187 187 186 187 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68, Success=none 125: 6 0 189 0 0 0 0 0 0 0 295 287 0 0 0 0 0 0 0 0 0 0 0 0 0 188 189 189 189 188 189 0 0 Matched=41,51,52,53,54,55,71,72, Success=none 126: 6 0 191 0 0 0 0 0 0 0 296 287 0 0 0 0 0 0 0 0 0 0 0 0 0 190 191 191 191 190 191 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60,71,72, Success=none 127: 6 0 193 0 0 0 0 0 0 0 297 287 0 0 0 0 0 0 0 0 0 0 0 0 0 192 193 193 193 192 193 0 0 Matched=41,51,52,53,54,55,61,62,63,64,71,72, Success=none 128: 6 0 195 0 0 0 0 0 0 0 298 287 0 0 0 0 0 0 0 0 0 0 0 0 0 194 195 195 195 194 195 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60,61,62,63,64,71,72, Success=none 129: 6 0 197 0 0 0 0 0 0 0 299 287 0 0 0 0 0 0 0 0 0 0 0 0 0 196 197 197 197 196 197 0 0 Matched=41,51,52,53,54,55,66,67,68,71,72, Success=none 130: 6 0 199 0 0 0 0 0 0 0 300 287 0 0 0 0 0 0 0 0 0 0 0 0 0 198 199 199 199 198 199 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60,66,67,68,71,72, Success=none 131: 6 0 201 0 0 0 0 0 0 0 301 287 0 0 0 0 0 0 0 0 0 0 0 0 0 200 201 201 201 200 201 0 0 Matched=41,51,52,53,54,55,61,62,63,64,66,67,68,71,72, Success=none 132: 6 0 203 0 0 0 0 0 0 0 302 287 0 0 0 0 0 0 0 0 0 0 0 0 0 202 203 203 203 202 203 0 0 Matched=41,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,71,72, Success=none 133: 6 0 0 0 0 0 0 0 0 0 0 303 0 0 0 0 0 0 0 0 0 0 0 0 0 173 0 0 0 173 0 0 0 Matched=46,51,52,53,54,55, Success=none 134: 6 0 175 0 0 0 0 0 0 0 288 303 0 0 0 0 0 0 0 0 0 0 0 0 0 174 175 175 175 174 175 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60, Success=none 135: 6 0 177 0 0 0 0 0 0 0 289 303 0 0 0 0 0 0 0 0 0 0 0 0 0 176 177 177 177 176 177 0 0 Matched=46,51,52,53,54,55,61,62,63,64, Success=none 136: 6 0 179 0 0 0 0 0 0 0 290 303 0 0 0 0 0 0 0 0 0 0 0 0 0 178 179 179 179 178 179 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60,61,62,63,64, Success=none 137: 6 0 181 0 0 0 0 0 0 0 291 303 0 0 0 0 0 0 0 0 0 0 0 0 0 180 181 181 181 180 181 0 0 Matched=46,51,52,53,54,55,66,67,68, Success=none 138: 6 0 183 0 0 0 0 0 0 0 292 303 0 0 0 0 0 0 0 0 0 0 0 0 0 182 183 183 183 182 183 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60,66,67,68, Success=none 139: 6 0 185 0 0 0 0 0 0 0 293 303 0 0 0 0 0 0 0 0 0 0 0 0 0 184 185 185 185 184 185 0 0 Matched=46,51,52,53,54,55,61,62,63,64,66,67,68, Success=none 140: 6 0 187 0 0 0 0 0 0 0 294 303 0 0 0 0 0 0 0 0 0 0 0 0 0 186 187 187 187 186 187 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68, Success=none 141: 6 0 189 0 0 0 0 0 0 0 295 303 0 0 0 0 0 0 0 0 0 0 0 0 0 188 189 189 189 188 189 0 0 Matched=46,51,52,53,54,55,71,72, Success=none 142: 6 0 191 0 0 0 0 0 0 0 296 303 0 0 0 0 0 0 0 0 0 0 0 0 0 190 191 191 191 190 191 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60,71,72, Success=none 143: 6 0 193 0 0 0 0 0 0 0 297 303 0 0 0 0 0 0 0 0 0 0 0 0 0 192 193 193 193 192 193 0 0 Matched=46,51,52,53,54,55,61,62,63,64,71,72, Success=none 144: 6 0 195 0 0 0 0 0 0 0 298 303 0 0 0 0 0 0 0 0 0 0 0 0 0 194 195 195 195 194 195 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60,61,62,63,64,71,72, Success=none 145: 6 0 197 0 0 0 0 0 0 0 299 303 0 0 0 0 0 0 0 0 0 0 0 0 0 196 197 197 197 196 197 0 0 Matched=46,51,52,53,54,55,66,67,68,71,72, Success=none 146: 6 0 199 0 0 0 0 0 0 0 300 303 0 0 0 0 0 0 0 0 0 0 0 0 0 198 199 199 199 198 199 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60,66,67,68,71,72, Success=none 147: 6 0 201 0 0 0 0 0 0 0 301 303 0 0 0 0 0 0 0 0 0 0 0 0 0 200 201 201 201 200 201 0 0 Matched=46,51,52,53,54,55,61,62,63,64,66,67,68,71,72, Success=none 148: 6 0 203 0 0 0 0 0 0 0 302 303 0 0 0 0 0 0 0 0 0 0 0 0 0 202 203 203 203 202 203 0 0 Matched=46,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,71,72, Success=none 149: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 173 0 0 0 173 0 0 0 Matched=51,52,53,54,55, Success=none 150: 6 0 175 0 0 0 0 0 0 0 288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 174 175 175 175 174 175 0 0 Matched=51,52,53,54,55,56,57,58,59,60, Success=none 151: 6 0 177 0 0 0 0 0 0 0 289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 176 177 177 177 176 177 0 0 Matched=51,52,53,54,55,61,62,63,64, Success=none 152: 6 0 179 0 0 0 0 0 0 0 290 0 0 0 0 0 0 0 0 0 0 0 0 0 0 178 179 179 179 178 179 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64, Success=none 153: 6 0 181 0 0 0 0 0 0 0 291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 180 181 181 181 180 181 0 0 Matched=51,52,53,54,55,66,67,68, Success=none 154: 6 0 183 0 0 0 0 0 0 0 292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182 183 183 183 182 183 0 0 Matched=51,52,53,54,55,56,57,58,59,60,66,67,68, Success=none 155: 6 0 185 0 0 0 0 0 0 0 293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184 185 185 185 184 185 0 0 Matched=51,52,53,54,55,61,62,63,64,66,67,68, Success=none 156: 6 0 187 0 0 0 0 0 0 0 294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 186 187 187 187 186 187 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68, Success=none 157: 6 0 189 0 0 0 0 0 0 0 295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 188 189 189 189 188 189 0 0 Matched=51,52,53,54,55,71,72, Success=none 158: 6 0 191 0 0 0 0 0 0 0 296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 190 191 191 191 190 191 0 0 Matched=51,52,53,54,55,56,57,58,59,60,71,72, Success=none 159: 6 0 193 0 0 0 0 0 0 0 297 0 0 0 0 0 0 0 0 0 0 0 0 0 0 192 193 193 193 192 193 0 0 Matched=51,52,53,54,55,61,62,63,64,71,72, Success=none 160: 6 0 195 0 0 0 0 0 0 0 298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 194 195 195 195 194 195 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,71,72, Success=none 161: 6 0 197 0 0 0 0 0 0 0 299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196 197 197 197 196 197 0 0 Matched=51,52,53,54,55,66,67,68,71,72, Success=none 162: 6 0 199 0 0 0 0 0 0 0 300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 198 199 199 199 198 199 0 0 Matched=51,52,53,54,55,56,57,58,59,60,66,67,68,71,72, Success=none 163: 6 0 201 0 0 0 0 0 0 0 301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200 201 201 201 200 201 0 0 Matched=51,52,53,54,55,61,62,63,64,66,67,68,71,72, Success=none 164: 6 0 203 0 0 0 0 0 0 0 302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 202 203 203 203 202 203 0 0 Matched=51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,71,72, Success=none 165: 6 0 0 0 0 0 0 0 0 0 0 0 0 0 304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=76, Success=none 166: 7 0 0 0 0 0 0 0 0 306 0 0 0 0 0 0 0 0 0 0 0 305 0 0 0 0 0 0 0 0 0 0 0 Matched=0,10, Success=none 167: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 305 0 0 0 0 0 0 0 0 0 0 0 Matched=0, Success=none 168: 7 0 0 0 0 0 0 0 0 0 0 0 307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=5, Success=none 169: 7 0 0 0 0 0 0 0 0 306 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=10, Success=none 170: 7 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 308 0 0 Matched=20, Success=none 171: 7 0 0 0 0 0 0 204 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 Matched=25, Success=none 172: 7 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 309 0 0 Matched=26, Success=none 173: 7 0 205 0 0 0 0 0 0 0 310 0 0 0 0 0 0 0 0 0 0 0 0 0 0 205 205 205 205 205 205 0 0 Matched=51,52,53,54,55, Success=none 174: 7 0 206 0 0 0 0 0 0 0 311 0 0 0 0 0 0 0 0 0 0 0 0 0 0 206 206 206 206 206 206 0 0 Matched=51,52,53,54,55,56,57,58,59, Success=none 175: 7 0 207 0 0 0 0 0 0 0 312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 207 207 207 207 207 207 0 0 Matched=56,57,58,59, Success=none 176: 7 0 208 0 0 0 0 0 0 0 313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208 208 208 208 208 208 0 0 Matched=51,52,53,54,55,61,62,63, Success=none 177: 7 0 209 0 0 0 0 0 0 0 314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 209 209 209 209 209 209 0 0 Matched=61,62,63, Success=none 178: 7 0 210 0 0 0 0 0 0 0 315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210 210 210 210 210 210 0 0 Matched=51,52,53,54,55,56,57,58,59,61,62,63, Success=none 179: 7 0 211 0 0 0 0 0 0 0 316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 211 211 211 211 211 211 0 0 Matched=56,57,58,59,61,62,63, Success=none 180: 7 0 212 0 0 0 0 0 0 0 317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 212 212 212 212 212 212 0 0 Matched=51,52,53,54,55,66,67, Success=none 181: 7 0 213 0 0 0 0 0 0 0 318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 213 213 213 213 213 213 0 0 Matched=66,67, Success=none 182: 7 0 214 0 0 0 0 0 0 0 319 0 0 0 0 0 0 0 0 0 0 0 0 0 0 214 214 214 214 214 214 0 0 Matched=51,52,53,54,55,56,57,58,59,66,67, Success=none 183: 7 0 215 0 0 0 0 0 0 0 320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 215 215 215 215 215 215 0 0 Matched=56,57,58,59,66,67, Success=none 184: 7 0 216 0 0 0 0 0 0 0 321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 216 216 216 216 216 216 0 0 Matched=51,52,53,54,55,61,62,63,66,67, Success=none 185: 7 0 217 0 0 0 0 0 0 0 322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217 217 217 217 217 217 0 0 Matched=61,62,63,66,67, Success=none 186: 7 0 218 0 0 0 0 0 0 0 323 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218 218 218 218 218 218 0 0 Matched=51,52,53,54,55,56,57,58,59,61,62,63,66,67, Success=none 187: 7 0 219 0 0 0 0 0 0 0 324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 219 219 219 219 219 219 0 0 Matched=56,57,58,59,61,62,63,66,67, Success=none 188: 7 0 205 0 0 0 0 0 0 0 325 0 0 0 0 0 0 0 0 0 0 0 0 0 0 205 205 205 205 205 205 0 0 Matched=51,52,53,54,55,71, Success=none 189: 7 0 0 0 0 0 0 0 0 0 326 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=71, Success=none 190: 7 0 206 0 0 0 0 0 0 0 327 0 0 0 0 0 0 0 0 0 0 0 0 0 0 206 206 206 206 206 206 0 0 Matched=51,52,53,54,55,56,57,58,59,71, Success=none 191: 7 0 207 0 0 0 0 0 0 0 328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 207 207 207 207 207 207 0 0 Matched=56,57,58,59,71, Success=none 192: 7 0 208 0 0 0 0 0 0 0 329 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208 208 208 208 208 208 0 0 Matched=51,52,53,54,55,61,62,63,71, Success=none 193: 7 0 209 0 0 0 0 0 0 0 330 0 0 0 0 0 0 0 0 0 0 0 0 0 0 209 209 209 209 209 209 0 0 Matched=61,62,63,71, Success=none 194: 7 0 210 0 0 0 0 0 0 0 331 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210 210 210 210 210 210 0 0 Matched=51,52,53,54,55,56,57,58,59,61,62,63,71, Success=none 195: 7 0 211 0 0 0 0 0 0 0 332 0 0 0 0 0 0 0 0 0 0 0 0 0 0 211 211 211 211 211 211 0 0 Matched=56,57,58,59,61,62,63,71, Success=none 196: 7 0 212 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 212 212 212 212 212 212 0 0 Matched=51,52,53,54,55,66,67,71, Success=none 197: 7 0 213 0 0 0 0 0 0 0 334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 213 213 213 213 213 213 0 0 Matched=66,67,71, Success=none 198: 7 0 214 0 0 0 0 0 0 0 335 0 0 0 0 0 0 0 0 0 0 0 0 0 0 214 214 214 214 214 214 0 0 Matched=51,52,53,54,55,56,57,58,59,66,67,71, Success=none 199: 7 0 215 0 0 0 0 0 0 0 336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 215 215 215 215 215 215 0 0 Matched=56,57,58,59,66,67,71, Success=none 200: 7 0 216 0 0 0 0 0 0 0 337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 216 216 216 216 216 216 0 0 Matched=51,52,53,54,55,61,62,63,66,67,71, Success=none 201: 7 0 217 0 0 0 0 0 0 0 338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217 217 217 217 217 217 0 0 Matched=61,62,63,66,67,71, Success=none 202: 7 0 218 0 0 0 0 0 0 0 339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218 218 218 218 218 218 0 0 Matched=51,52,53,54,55,56,57,58,59,61,62,63,66,67,71, Success=none 203: 7 0 219 0 0 0 0 0 0 0 340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 219 219 219 219 219 219 0 0 Matched=56,57,58,59,61,62,63,66,67,71, Success=none 204: 8 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 341 0 0 Matched=25, Success=none 205: 8 0 220 0 0 0 0 0 0 0 342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 220 220 220 220 220 220 0 0 Matched=51,52,53,54, Success=none 206: 8 0 221 0 0 0 0 0 0 0 343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 221 221 221 221 221 221 0 0 Matched=51,52,53,54,56,57,58, Success=none 207: 8 0 222 0 0 0 0 0 0 0 344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 222 222 222 222 222 0 0 Matched=56,57,58, Success=none 208: 8 0 223 0 0 0 0 0 0 0 345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 223 223 223 223 223 223 0 0 Matched=51,52,53,54,61,62, Success=none 209: 8 0 224 0 0 0 0 0 0 0 346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224 224 224 224 224 224 0 0 Matched=61,62, Success=none 210: 8 0 225 0 0 0 0 0 0 0 347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 225 225 225 225 225 0 0 Matched=51,52,53,54,56,57,58,61,62, Success=none 211: 8 0 226 0 0 0 0 0 0 0 348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 226 226 226 226 226 226 0 0 Matched=56,57,58,61,62, Success=none 212: 8 0 220 0 0 0 0 0 0 0 349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 220 220 220 220 220 220 0 0 Matched=51,52,53,54,66, Success=none 213: 8 0 0 0 0 0 0 0 0 0 350 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=66, Success=none 214: 8 0 221 0 0 0 0 0 0 0 351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 221 221 221 221 221 221 0 0 Matched=51,52,53,54,56,57,58,66, Success=none 215: 8 0 222 0 0 0 0 0 0 0 352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 222 222 222 222 222 0 0 Matched=56,57,58,66, Success=none 216: 8 0 223 0 0 0 0 0 0 0 353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 223 223 223 223 223 223 0 0 Matched=51,52,53,54,61,62,66, Success=none 217: 8 0 224 0 0 0 0 0 0 0 354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224 224 224 224 224 224 0 0 Matched=61,62,66, Success=none 218: 8 0 225 0 0 0 0 0 0 0 355 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 225 225 225 225 225 0 0 Matched=51,52,53,54,56,57,58,61,62,66, Success=none 219: 8 0 226 0 0 0 0 0 0 0 356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 226 226 226 226 226 226 0 0 Matched=56,57,58,61,62,66, Success=none 220: 9 0 227 0 0 0 0 0 0 0 357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 227 227 227 227 227 227 0 0 Matched=51,52,53, Success=none 221: 9 0 228 0 0 0 0 0 0 0 358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 228 228 228 228 228 228 0 0 Matched=51,52,53,56,57, Success=none 222: 9 0 229 0 0 0 0 0 0 0 359 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229 229 229 229 229 229 0 0 Matched=56,57, Success=none 223: 9 0 227 0 0 0 0 0 0 0 360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 227 227 227 227 227 227 0 0 Matched=51,52,53,61, Success=none 224: 9 0 0 0 0 0 0 0 0 0 361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=61, Success=none 225: 9 0 228 0 0 0 0 0 0 0 362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 228 228 228 228 228 228 0 0 Matched=51,52,53,56,57,61, Success=none 226: 9 0 229 0 0 0 0 0 0 0 363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229 229 229 229 229 229 0 0 Matched=56,57,61, Success=none 227: 10 0 230 0 0 0 0 0 0 0 364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 230 230 230 230 230 230 0 0 Matched=51,52, Success=none 228: 10 0 230 0 0 0 0 0 0 0 365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 230 230 230 230 230 230 0 0 Matched=51,52,56, Success=none 229: 10 0 0 0 0 0 0 0 0 0 366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=56, Success=none 230: 11 0 0 0 0 0 0 0 0 0 367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matched=51, Success=none 231: 3 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 Matched=19, Success=19, 232: 3 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 Matched=31, Success=31, 233: 3 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 Matched=45, Success=45, 234: 3 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 Matched=50, Success=50, 235: 3 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 Matched=80, Success=80, 236: 3 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 Matched=30,31, Success=30,31, 237: 4 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 Matched=4, Success=4, 238: 4 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 Matched=14, Success=14, 239: 4 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 Matched=9, Success=9, 240: 4 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 Matched=18, Success=18, 241: 4 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 Matched=39, Success=39, 242: 4 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 Matched=40, Success=40, 243: 4 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 Matched=24, Success=24, 244: 4 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 Matched=32,34, Success=32,34, 245: 4 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 Matched=44, Success=44, 246: 4 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 Matched=33,35, Success=33,35, 247: 4 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 Matched=75, Success=75, 248: 4 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 Matched=36, Success=36, 249: 4 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 Matched=49, Success=49, 250: 4 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 Matched=37, Success=37, 251: 4 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 Matched=38, Success=38, 252: 4 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 Matched=79, Success=79, 253: 5 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 Matched=3, Success=3, 254: 5 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 Matched=13, Success=13, 255: 5 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 Matched=8, Success=8, 256: 5 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 Matched=17, Success=17, 257: 5 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 Matched=23, Success=23, 258: 5 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 Matched=29, Success=29, 259: 5 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 Matched=43, Success=43, 260: 5 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 Matched=70, Success=70, 261: 5 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 Matched=74, Success=74, 262: 5 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 Matched=70,74, Success=70,74, 263: 5 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 Matched=48, Success=48, 264: 5 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 Matched=78, Success=78, 265: 6 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 Matched=2, Success=2, 266: 6 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 Matched=12, Success=12, 267: 6 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 Matched=7, Success=7, 268: 6 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 Matched=16, Success=16, 269: 6 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 Matched=22, Success=22, 270: 6 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 Matched=28, Success=28, 271: 6 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 Matched=42, Success=42, 272: 6 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 Matched=65, Success=65, 273: 6 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 Matched=69, Success=69, 274: 6 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 Matched=65,69, Success=65,69, 275: 6 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 Matched=73, Success=73, 276: 6 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 Matched=65,73, Success=65,73, 277: 6 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 Matched=69,73, Success=69,73, 278: 6 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 Matched=65,69,73, Success=65,69,73, 279: 6 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 Matched=47, Success=47, 280: 6 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 Matched=77, Success=77, 281: 7 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 Matched=1, Success=1, 282: 7 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 Matched=11, Success=11, 283: 7 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 Matched=6, Success=6, 284: 7 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 Matched=15, Success=15, 285: 7 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 Matched=21, Success=21, 286: 7 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 Matched=27, Success=27, 287: 7 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 Matched=41, Success=41, 288: 7 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 Matched=60, Success=60, 289: 7 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 Matched=64, Success=64, 290: 7 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 Matched=60,64, Success=60,64, 291: 7 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 Matched=68, Success=68, 292: 7 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 Matched=60,68, Success=60,68, 293: 7 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 Matched=64,68, Success=64,68, 294: 7 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 Matched=60,64,68, Success=60,64,68, 295: 7 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 Matched=72, Success=72, 296: 7 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 Matched=60,72, Success=60,72, 297: 7 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 Matched=64,72, Success=64,72, 298: 7 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 Matched=60,64,72, Success=60,64,72, 299: 7 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 Matched=68,72, Success=68,72, 300: 7 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 Matched=60,68,72, Success=60,68,72, 301: 7 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 Matched=64,68,72, Success=64,68,72, 302: 7 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 Matched=60,64,68,72, Success=60,64,68,72, 303: 7 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 Matched=46, Success=46, 304: 7 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 Matched=76, Success=76, 305: 8 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 Matched=0, Success=0, 306: 8 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 Matched=10, Success=10, 307: 8 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 Matched=5, Success=5, 308: 8 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 Matched=20, Success=20, 309: 8 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 Matched=26, Success=26, 310: 8 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 Matched=55, Success=55, 311: 8 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 Matched=55,59, Success=55,59, 312: 8 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 Matched=59, Success=59, 313: 8 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 Matched=55,63, Success=55,63, 314: 8 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 Matched=63, Success=63, 315: 8 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 Matched=55,59,63, Success=55,59,63, 316: 8 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 Matched=59,63, Success=59,63, 317: 8 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 Matched=55,67, Success=55,67, 318: 8 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 Matched=67, Success=67, 319: 8 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 Matched=55,59,67, Success=55,59,67, 320: 8 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 Matched=59,67, Success=59,67, 321: 8 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 Matched=55,63,67, Success=55,63,67, 322: 8 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 Matched=63,67, Success=63,67, 323: 8 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 Matched=55,59,63,67, Success=55,59,63,67, 324: 8 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 Matched=59,63,67, Success=59,63,67, 325: 8 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 Matched=55,71, Success=55,71, 326: 8 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 Matched=71, Success=71, 327: 8 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 Matched=55,59,71, Success=55,59,71, 328: 8 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 Matched=59,71, Success=59,71, 329: 8 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 Matched=55,63,71, Success=55,63,71, 330: 8 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 Matched=63,71, Success=63,71, 331: 8 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 Matched=55,59,63,71, Success=55,59,63,71, 332: 8 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 Matched=59,63,71, Success=59,63,71, 333: 8 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 Matched=55,67,71, Success=55,67,71, 334: 8 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 Matched=67,71, Success=67,71, 335: 8 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 Matched=55,59,67,71, Success=55,59,67,71, 336: 8 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 Matched=59,67,71, Success=59,67,71, 337: 8 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 Matched=55,63,67,71, Success=55,63,67,71, 338: 8 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 Matched=63,67,71, Success=63,67,71, 339: 8 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 Matched=55,59,63,67,71, Success=55,59,63,67,71, 340: 8 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 Matched=59,63,67,71, Success=59,63,67,71, 341: 9 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 Matched=25, Success=25, 342: 9 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 Matched=54, Success=54, 343: 9 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 Matched=54,58, Success=54,58, 344: 9 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 Matched=58, Success=58, 345: 9 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 Matched=54,62, Success=54,62, 346: 9 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 Matched=62, Success=62, 347: 9 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 Matched=54,58,62, Success=54,58,62, 348: 9 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 Matched=58,62, Success=58,62, 349: 9 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 Matched=54,66, Success=54,66, 350: 9 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 Matched=66, Success=66, 351: 9 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 Matched=54,58,66, Success=54,58,66, 352: 9 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 Matched=58,66, Success=58,66, 353: 9 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 Matched=54,62,66, Success=54,62,66, 354: 9 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 Matched=62,66, Success=62,66, 355: 9 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 Matched=54,58,62,66, Success=54,58,62,66, 356: 9 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 Matched=58,62,66, Success=58,62,66, 357: 10 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 Matched=53, Success=53, 358: 10 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 Matched=53,57, Success=53,57, 359: 10 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 Matched=57, Success=57, 360: 10 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 Matched=53,61, Success=53,61, 361: 10 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 Matched=61, Success=61, 362: 10 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 Matched=53,57,61, Success=53,57,61, 363: 10 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 Matched=57,61, Success=57,61, 364: 11 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 Matched=52, Success=52, 365: 11 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 Matched=52,56, Success=52,56, 366: 11 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 Matched=56, Success=56, 367: 12 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 Matched=51, Success=51, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RULE 9.0, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ _ ; RULE 9.1, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ ; RULE 9.2, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ ; RULE 9.3, SchMain.gdl(427): cKafLikeIniMed cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ ; RULE 9.4, SchMain.gdl(427): cKafLikeIniMed absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ ; RULE 9.5, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ _ ; RULE 9.6, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ ; RULE 9.7, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ ; RULE 9.8, SchMain.gdl(430): absFarsiYehIni cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ ; RULE 9.9, SchMain.gdl(430): absFarsiYehIni absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ ; RULE 9.10, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ _ _ ; RULE 9.11, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ _ ; RULE 9.12, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ ; RULE 9.13, SchMain.gdl(433): *GC19* cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ ; RULE 9.14, SchMain.gdl(433): *GC19* absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ ; RULE 9.15, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; RULE 9.16, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; RULE 9.17, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; RULE 9.18, SchMain.gdl(439): absAlef cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; RULE 9.19, SchMain.gdl(439): absAlef absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; RULE 9.20, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ _ _ ; RULE 9.21, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ _ ; RULE 9.22, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ ; RULE 9.23, SchMain.gdl(442): *GC20* cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ ; RULE 9.24, SchMain.gdl(442): *GC20* *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ ; RULE 9.25, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ _ _ ; RULE 9.26, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ _ ; RULE 9.27, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ ; RULE 9.28, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ ; RULE 9.29, SchMain.gdl(447): *GC22* cDiaDigitAbove *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ ; RULE 9.30, SchMain.gdl(452): cNoonGhunna *GC25* { shift.y = -75; } / *GC24* _ _ ; RULE 9.31, SchMain.gdl(454): cNoonGhunna *GC26* { shift.y = -150; } / ANY _ _ ; RULE 9.32, SchMain.gdl(458): if (kasraTcheh == 2) cBehLikeIniMed absKasra { shift.x = -60; shift.y = 125; } cTchehLikeFin / ANY _ _ _ ; endif; RULE 9.33, SchMain.gdl(459): if (kasraTcheh == 2) cBehLikeIniMed absKasratan { shift.x = -100; shift.y = 30; } cTchehLikeFin / ANY _ _ _ ; endif; RULE 9.34, SchMain.gdl(462): if (kasraTcheh == 1) cBehLikeIniMed absKasra { shift.x = -40; shift.y = -200; } cTchehLikeFin / ANY _ _ _ ; endif; RULE 9.35, SchMain.gdl(463): if (kasraTcheh == 1) cBehLikeIniMed absKasratan { shift.x = -60; shift.y = -130; } cTchehLikeFin / ANY _ _ _ ; endif; RULE 9.36, SchMain.gdl(465): cPehLikeIniMed absKasra { shift.y = -50; } cTchehLikeFin / ANY _ _ _ ; RULE 9.37, SchMain.gdl(466): cPehLikeIniMed absKasratan { shift.x = -50; } cTchehLikeFin / ANY _ _ _ ; RULE 9.38, SchMain.gdl(467): cTehLikeIniMed absKasratan { shift.x = -80; } cTchehLikeFin / ANY _ _ _ ; RULE 9.39, SchMain.gdl(470): absAlef absMaddahAbove { shift.x = -130; } absGaf { shift.x = 30; advance.x = aw + 30; } / ANY _ _ _ ; RULE 9.40, SchMain.gdl(471): absAlef absMaddahAbove { shift.x = -120; } absGafIni { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; RULE 9.41, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ _ _ ; RULE 9.42, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ _ ; RULE 9.43, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ ; RULE 9.44, SchMain.gdl(474): cBehLikeIniMed cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ ; RULE 9.45, SchMain.gdl(474): cBehLikeIniMed absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ ; RULE 9.46, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; RULE 9.47, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; RULE 9.48, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; RULE 9.49, SchMain.gdl(475): cPehLikeIniMed cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; RULE 9.50, SchMain.gdl(475): cPehLikeIniMed absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; RULE 9.51, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ _ ; RULE 9.52, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ ; RULE 9.53, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; RULE 9.54, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; RULE 9.55, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; RULE 9.56, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ ; RULE 9.57, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; RULE 9.58, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; RULE 9.59, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; RULE 9.60, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; RULE 9.61, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; RULE 9.62, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; RULE 9.63, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; RULE 9.64, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; RULE 9.65, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; RULE 9.66, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; RULE 9.67, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; RULE 9.68, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; RULE 9.69, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; RULE 9.70, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ ; RULE 9.71, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; RULE 9.72, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; RULE 9.73, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; RULE 9.74, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ ; RULE 9.75, SchMain.gdl(478): *GC27* cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ ; RULE 9.76, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; RULE 9.77, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; RULE 9.78, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; RULE 9.79, SchMain.gdl(481): *GC28* cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; RULE 9.80, SchMain.gdl(481): *GC28* cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/dbg_glyphattrs.txt000066400000000000000000007737611411153030700265350ustar00rootroot00000000000000GLYPH ATTRIBUTE IDS 0: *actualForPseudo* 1: *skipPasses* 2: breakweight 3: directionality 4: mirror.glyph 5: mirror.isEncoded 6: component.base 7: component.hamza 8: component.kasra 9: component.shadda 10: component.base.top 11: component.base.bottom 12: component.base.left 13: component.base.right 14: component.hamza.top 15: component.hamza.bottom 16: component.hamza.left 17: component.hamza.right 18: component.kasra.top 19: component.kasra.bottom 20: component.kasra.left 21: component.kasra.right 22: component.shadda.top 23: component.shadda.bottom 24: component.shadda.left 25: component.shadda.right 26: above.x 27: above.y 28: below.x 29: below.y 30: diaA.x 31: diaA.y 32: diaB.x 33: diaB.y 34: diaDigitA.x 35: diaDigitA.y 36: alef.x 37: alef.y 38: dia2B.x 39: dia2B.y 40: entry.x 41: entry.y 42: dbgAw 43: dbgBbW 44: ring.x 45: ring.y 46: diaA_.x 47: diaA_.y 48: digit.x 49: digit.y 50: digit_.x 51: digit_.y 52: dia2B_.x 53: dia2B_.y 54: diaB_.x 55: diaB_.y 56: diaDigitB.x 57: diaDigitB.y 58: center.x 59: center.y 60: through.x 61: through.y 62: above2.x 63: above2.y 64: alef1.x 65: alef1.y 66: alef2.x 67: alef2.y 68: below2.x 69: below2.y 70: dia2B1.x 71: dia2B1.y 72: dia2B2.x 73: dia2B2.y 74: diaA1.x 75: diaA1.y 76: diaA2.x 77: diaA2.y 78: diaB1.x 79: diaB1.y 80: diaB2.x 81: diaB2.y 82: exit.x 83: exit.y 84: above_.x 85: above_.y 86: alef_.x 87: alef_.y 88: diaDigitA_.x 89: diaDigitA_.y 90: diaDigitB_.x 91: diaDigitB_.y 92: below_.x 93: below_.y GLYPH ATTRIBUTE VALUES 0 [0x0000] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1 [0x0001] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 2 [0x0002] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 3 [0x0003] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 4 [0x0004] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 5 [0x0005] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 6 [0x0006] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 7 [0x0007] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 8 [0x0008] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 9 [0x0009] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 10 [0x000a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 11 [0x000b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 12 [0x000c] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] mirror.glyph = 13 [0x000d] mirror.isEncoded = 1 13 [0x000d] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] mirror.glyph = 12 [0x000c] mirror.isEncoded = 1 14 [0x000e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 15 [0x000f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 5 16 [0x0010] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 8 diaA_.x = 193 [0x00c1] diaA_.y = -258 [0xfefe] 17 [0x0011] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 5 18 [0x0012] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 8 19 [0x0013] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 8 20 [0x0014] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 21 [0x0015] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 22 [0x0016] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 23 [0x0017] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 24 [0x0018] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 25 [0x0019] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 26 [0x001a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 27 [0x001b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 28 [0x001c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 29 [0x001d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 30 [0x001e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 8 31 [0x001f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 32 [0x0020] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] mirror.glyph = 34 [0x0022] mirror.isEncoded = 1 33 [0x0021] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 34 [0x0022] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] mirror.glyph = 32 [0x0020] mirror.isEncoded = 1 35 [0x0023] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 36 [0x0024] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 37 [0x0025] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 555 [0x022b] above.y = 1090 [0x0442] 38 [0x0026] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 39 [0x0027] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 below.x = 553 [0x0229] below.y = -72 [0xffb8] 40 [0x0028] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 41 [0x0029] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 471 [0x01d7] above.y = 1090 [0x0442] 42 [0x002a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 43 [0x002b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 44 [0x002c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 45 [0x002d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 258 [0x0102] above.y = 1090 [0x0442] 46 [0x002e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 47 [0x002f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 48 [0x0030] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 49 [0x0031] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 50 [0x0032] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 551 [0x0227] above.y = 1090 [0x0442] 51 [0x0033] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 554 [0x022a] above.y = 1090 [0x0442] 52 [0x0034] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 53 [0x0035] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 54 [0x0036] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 55 [0x0037] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 437 [0x01b5] above.y = 1090 [0x0442] 56 [0x0038] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 57 [0x0039] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 561 [0x0231] above.y = 1090 [0x0442] 58 [0x003a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 59 [0x003b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 60 [0x003c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 61 [0x003d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 554 [0x022a] above.y = 1090 [0x0442] 62 [0x003e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 511 [0x01ff] above.y = 1090 [0x0442] 63 [0x003f] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] mirror.glyph = 65 [0x0041] mirror.isEncoded = 1 64 [0x0040] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 65 [0x0041] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] mirror.glyph = 63 [0x003f] mirror.isEncoded = 1 66 [0x0042] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 67 [0x0043] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 68 [0x0044] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above_.x = 294 [0x0126] above_.y = 760 [0x02f8] 69 [0x0045] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 336 [0x0150] above.y = 760 [0x02f8] 70 [0x0046] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 71 [0x0047] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 below.x = 351 [0x015f] below.y = -65 [0xffbf] 72 [0x0048] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 73 [0x0049] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 375 [0x0177] above.y = 760 [0x02f8] 74 [0x004a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 75 [0x004b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 76 [0x004c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 77 [0x004d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 78 [0x004e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 79 [0x004f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 80 [0x0050] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 81 [0x0051] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 82 [0x0052] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 389 [0x0185] above.y = 760 [0x02f8] 83 [0x0053] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 385 [0x0181] above.y = 760 [0x02f8] 84 [0x0054] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 85 [0x0055] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 86 [0x0056] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 87 [0x0057] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 311 [0x0137] above.y = 760 [0x02f8] 88 [0x0058] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 89 [0x0059] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 387 [0x0183] above.y = 760 [0x02f8] 90 [0x005a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 91 [0x005b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 92 [0x005c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 93 [0x005d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 420 [0x01a4] above.y = 760 [0x02f8] 94 [0x005e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 377 [0x0179] above.y = 760 [0x02f8] 95 [0x005f] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 21 [0x0015] mirror.glyph = 97 [0x0061] mirror.isEncoded = 1 96 [0x0060] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 97 [0x0061] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 22 [0x0016] mirror.glyph = 95 [0x005f] mirror.isEncoded = 1 98 [0x0062] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 99 [0x0063] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 100 [0x0064] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 101 [0x0065] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 102 [0x0066] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 103 [0x0067] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 104 [0x0068] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 105 [0x0069] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 106 [0x006a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above_.x = 242 [0x00f2] above_.y = 770 [0x0302] 107 [0x006b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 108 [0x006c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 109 [0x006d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] mirror.glyph = 110 [0x006e] mirror.isEncoded = 1 110 [0x006e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] mirror.glyph = 109 [0x006d] mirror.isEncoded = 1 111 [0x006f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 112 [0x0070] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 113 [0x0071] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 114 [0x0072] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 115 [0x0073] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 116 [0x0074] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 117 [0x0075] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 118 [0x0076] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 119 [0x0077] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 120 [0x0078] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above_.x = 257 [0x0101] above_.y = 760 [0x02f8] 121 [0x0079] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 122 [0x007a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 123 [0x007b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 124 [0x007c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 125 [0x007d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 126 [0x007e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 8 127 [0x007f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 128 [0x0080] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 129 [0x0081] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 130 [0x0082] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 131 [0x0083] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 132 [0x0084] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 133 [0x0085] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 134 [0x0086] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above_.x = 242 [0x00f2] above_.y = 770 [0x0302] 135 [0x0087] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 136 [0x0088] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 137 [0x0089] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] mirror.glyph = 138 [0x008a] mirror.isEncoded = 1 138 [0x008a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] mirror.glyph = 137 [0x0089] mirror.isEncoded = 1 139 [0x008b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 140 [0x008c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 141 [0x008d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 142 [0x008e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 143 [0x008f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 144 [0x0090] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 145 [0x0091] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 146 [0x0092] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 147 [0x0093] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 148 [0x0094] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above_.x = 227 [0x00e3] above_.y = 760 [0x02f8] 149 [0x0095] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 150 [0x0096] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 151 [0x0097] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 152 [0x0098] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 153 [0x0099] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] below_.x = 154 [0x009a] below_.y = -50 [0xffce] 154 [0x009a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 155 [0x009b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 156 [0x009c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 157 [0x009d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 158 [0x009e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 159 [0x009f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 160 [0x00a0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 161 [0x00a1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 162 [0x00a2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 163 [0x00a3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 164 [0x00a4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 165 [0x00a5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 166 [0x00a6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 167 [0x00a7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 168 [0x00a8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 169 [0x00a9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 170 [0x00aa] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 171 [0x00ab] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 172 [0x00ac] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 173 [0x00ad] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 174 [0x00ae] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 175 [0x00af] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 176 [0x00b0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 177 [0x00b1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 178 [0x00b2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 179 [0x00b3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 180 [0x00b4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 181 [0x00b5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 182 [0x00b6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 183 [0x00b7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 184 [0x00b8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 185 [0x00b9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 186 [0x00ba] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 187 [0x00bb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 188 [0x00bc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 189 [0x00bd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 190 [0x00be] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 191 [0x00bf] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 192 [0x00c0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 193 [0x00c1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 194 [0x00c2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 195 [0x00c3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 196 [0x00c4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 197 [0x00c5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 198 [0x00c6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 199 [0x00c7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 200 [0x00c8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 201 [0x00c9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 202 [0x00ca] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 203 [0x00cb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 204 [0x00cc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 205 [0x00cd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 206 [0x00ce] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 207 [0x00cf] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 208 [0x00d0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 209 [0x00d1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 210 [0x00d2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 211 [0x00d3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 212 [0x00d4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 213 [0x00d5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 214 [0x00d6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 215 [0x00d7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 216 [0x00d8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 217 [0x00d9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 218 [0x00da] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 219 [0x00db] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 220 [0x00dc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 221 [0x00dd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 222 [0x00de] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 223 [0x00df] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 224 [0x00e0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 above.x = 221 [0x00dd] above.y = 760 [0x02f8] 225 [0x00e1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 226 [0x00e2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 227 [0x00e3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 228 [0x00e4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 229 [0x00e5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 230 [0x00e6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 231 [0x00e7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 232 [0x00e8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 233 [0x00e9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 234 [0x00ea] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 235 [0x00eb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 15 [0x000f] directionality = 9 236 [0x00ec] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 237 [0x00ed] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 238 [0x00ee] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 239 [0x00ef] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 1 240 [0x00f0] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 2 241 [0x00f1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 242 [0x00f2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 243 [0x00f3] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 13 [0x000d] 244 [0x00f4] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 14 [0x000e] 245 [0x00f5] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 15 [0x000f] 246 [0x00f6] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 11 [0x000b] 247 [0x00f7] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 12 [0x000c] 248 [0x00f8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 249 [0x00f9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 250 [0x00fa] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 251 [0x00fb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 5 252 [0x00fc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 520 [0x0208] diaA.y = 1080 [0x0438] diaB.x = 520 [0x0208] diaB.y = -120 [0xff88] 253 [0x00fd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 10 [0x000a] 254 [0x00fe] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 120 [0x0078] diaA.y = 1395 [0x0573] diaB.x = 100 [0x0064] diaB.y = -180 [0xff4c] 255 [0x00ff] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 120 [0x0078] diaA.y = 1470 [0x05be] diaB.x = 100 [0x0064] diaB.y = -180 [0xff4c] 256 [0x0100] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 120 [0x0078] diaA.y = 1100 [0x044c] diaB.x = 100 [0x0064] diaB.y = -495 [0xfe11] 257 [0x0101] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 148 [0x0094] above.y = 1039 [0x040f] below.x = 148 [0x0094] below.y = -56 [0xffc8] diaA.x = 120 [0x0078] diaA.y = 1100 [0x044c] diaB.x = 100 [0x0064] diaB.y = -180 [0xff4c] diaDigitA.x = 120 [0x0078] diaDigitA.y = 1100 [0x044c] 258 [0x0102] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 120 [0x0078] diaA.y = 1455 [0x05af] diaB.x = 100 [0x0064] diaB.y = -180 [0xff4c] 259 [0x0103] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 120 [0x0078] diaA.y = 1100 [0x044c] diaB.x = 100 [0x0064] diaB.y = -500 [0xfe0c] 260 [0x0104] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 90 [0x005a] diaA.y = 1215 [0x04bf] diaB.x = 100 [0x0064] diaB.y = -180 [0xff4c] 261 [0x0105] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 135 [0x0087] diaA.y = 1370 [0x055a] diaB.x = 100 [0x0064] diaB.y = -180 [0xff4c] 262 [0x0106] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 534 [0x0216] component.base.bottom = -461 [0xfe33] component.base.right = 573 [0x023d] component.hamza.top = 866 [0x0362] component.hamza.bottom = 534 [0x0216] component.hamza.right = 573 [0x023d] diaA.x = 332 [0x014c] diaA.y = 988 [0x03dc] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 740 [0x02e4] 263 [0x0107] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 384 [0x0180] above.y = 497 [0x01f1] below.x = 384 [0x0180] below.y = -461 [0xfe33] diaA.x = 363 [0x016b] diaA.y = 691 [0x02b3] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] diaDigitA.x = 363 [0x016b] diaDigitA.y = 691 [0x02b3] alef.x = 133 [0x0085] alef.y = 615 [0x0267] ring.x = 246 [0x00f6] ring.y = -67 [0xffbd] center.x = 383 [0x017f] center.y = -129 [0xff7f] through.x = 383 [0x017f] through.y = -129 [0xff7f] 264 [0x0108] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 225 [0x00e1] diaA.y = 900 [0x0384] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 133 [0x0085] alef.y = 615 [0x0267] 265 [0x0109] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 258 [0x0102] diaA.y = 1078 [0x0436] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 101 [0x0065] alef.y = 953 [0x03b9] 266 [0x010a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 363 [0x016b] diaA.y = 691 [0x02b3] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 133 [0x0085] alef.y = 615 [0x0267] 267 [0x010b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 359 [0x0167] diaA.y = 691 [0x02b3] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 133 [0x0085] alef.y = 615 [0x0267] 268 [0x010c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 355 [0x0163] diaA.y = 1035 [0x040b] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 125 [0x007d] alef.y = 941 [0x03ad] 269 [0x010d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 363 [0x016b] diaA.y = 1059 [0x0423] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 125 [0x007d] alef.y = 865 [0x0361] 270 [0x010e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 348 [0x015c] diaA.y = 1039 [0x040f] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 137 [0x0089] alef.y = 756 [0x02f4] 271 [0x010f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 355 [0x0163] diaA.y = 1031 [0x0407] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 129 [0x0081] alef.y = 796 [0x031c] 272 [0x0110] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 355 [0x0163] diaA.y = 1035 [0x040b] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 133 [0x0085] alef.y = 804 [0x0324] 273 [0x0111] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 359 [0x0167] diaA.y = 1129 [0x0469] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 129 [0x0081] alef.y = 865 [0x0361] 274 [0x0112] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 359 [0x0167] diaA.y = 1035 [0x040b] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 121 [0x0079] alef.y = 800 [0x0320] 275 [0x0113] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 359 [0x0167] diaA.y = 687 [0x02af] diaB.x = 338 [0x0152] diaB.y = -795 [0xfce5] alef.x = 133 [0x0085] alef.y = 615 [0x0267] 276 [0x0114] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 313 [0x0139] above.y = 646 [0x0286] below.x = 313 [0x0139] below.y = -58 [0xffc6] diaA.x = 266 [0x010a] diaA.y = 859 [0x035b] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 121 [0x0079] alef.y = 800 [0x0320] ring.x = 336 [0x0150] ring.y = 59 [0x003b] 277 [0x0115] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 258 [0x0102] diaA.y = 1094 [0x0446] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 113 [0x0071] alef.y = 961 [0x03c1] 278 [0x0116] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 234 [0x00ea] diaA.y = 1363 [0x0553] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 88 [0x0058] alef.y = 977 [0x03d1] 279 [0x0117] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 262 [0x0106] diaA.y = 848 [0x0350] diaB.x = 250 [0x00fa] diaB.y = -400 [0xfe70] alef.x = 121 [0x0079] alef.y = 800 [0x0320] 280 [0x0118] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 262 [0x0106] diaA.y = 852 [0x0354] diaB.x = 250 [0x00fa] diaB.y = -450 [0xfe3e] alef.x = 121 [0x0079] alef.y = 800 [0x0320] 281 [0x0119] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 234 [0x00ea] diaA.y = 1379 [0x0563] diaB.x = 250 [0x00fa] diaB.y = -450 [0xfe3e] alef.x = 88 [0x0058] alef.y = 989 [0x03dd] 282 [0x011a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 258 [0x0102] diaA.y = 1176 [0x0498] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 121 [0x0079] alef.y = 1045 [0x0415] 283 [0x011b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 258 [0x0102] diaA.y = 855 [0x0357] diaB.x = 250 [0x00fa] diaB.y = -450 [0xfe3e] alef.x = 121 [0x0079] alef.y = 800 [0x0320] 284 [0x011c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 258 [0x0102] diaA.y = 1211 [0x04bb] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 113 [0x0071] alef.y = 1082 [0x043a] 285 [0x011d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 258 [0x0102] diaA.y = 1203 [0x04b3] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 117 [0x0075] alef.y = 1130 [0x046a] 286 [0x011e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 262 [0x0106] diaA.y = 1199 [0x04af] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 113 [0x0071] alef.y = 1130 [0x046a] 287 [0x011f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 266 [0x010a] diaA.y = 1094 [0x0446] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] alef.x = 109 [0x006d] alef.y = 1017 [0x03f9] 288 [0x0120] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 234 [0x00ea] diaA.y = 1348 [0x0544] diaB.x = 261 [0x0105] diaB.y = -564 [0xfdcc] alef.x = 101 [0x0065] alef.y = 989 [0x03dd] 289 [0x0121] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 256 [0x0100] diaA.y = 863 [0x035f] diaB.x = 261 [0x0105] diaB.y = -500 [0xfe0c] alef.x = 121 [0x0079] alef.y = 800 [0x0320] 290 [0x0122] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 375 [0x0177] above.y = 394 [0x018a] below.x = 375 [0x0177] below.y = -401 [0xfe6f] diaA.x = 224 [0x00e0] diaA.y = 750 [0x02ee] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 117 [0x0075] alef.y = 684 [0x02ac] ring.x = 365 [0x016d] ring.y = -226 [0xff1e] center.x = 176 [0x00b0] center.y = 64 [0x0040] through.x = 332 [0x014c] through.y = -113 [0xff8f] 291 [0x0123] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 840 [0x0348] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 117 [0x0075] alef.y = 772 [0x0304] 292 [0x0124] *skipPasses* = 255 [0x00ff / 1 1 1 1 1 1 1 1 0] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 1200 [0x04b0] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 121 [0x0079] alef.y = 744 [0x02e8] 293 [0x0125] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 1000 [0x03e8] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 117 [0x0075] alef.y = 836 [0x0344] 294 [0x0126] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 224 [0x00e0] diaA.y = 750 [0x02ee] diaB.x = 175 [0x00af] diaB.y = -628 [0xfd8c] alef.x = 117 [0x0075] alef.y = 684 [0x02ac] 295 [0x0127] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 224 [0x00e0] diaA.y = 750 [0x02ee] diaB.x = 200 [0x00c8] diaB.y = -700 [0xfd44] alef.x = 117 [0x0075] alef.y = 684 [0x02ac] 296 [0x0128] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 224 [0x00e0] diaA.y = 750 [0x02ee] diaB.x = 222 [0x00de] diaB.y = -837 [0xfcbb] alef.x = 117 [0x0075] alef.y = 684 [0x02ac] 297 [0x0129] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 224 [0x00e0] diaA.y = 750 [0x02ee] diaB.x = 200 [0x00c8] diaB.y = -700 [0xfd44] alef.x = 117 [0x0075] alef.y = 684 [0x02ac] 298 [0x012a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 1000 [0x03e8] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 109 [0x006d] alef.y = 848 [0x0350] 299 [0x012b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 1000 [0x03e8] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 109 [0x006d] alef.y = 889 [0x0379] 300 [0x012c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 1000 [0x03e8] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 105 [0x0069] alef.y = 901 [0x0385] 301 [0x012d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 280 [0x0118] diaA.y = 1020 [0x03fc] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 113 [0x0071] alef.y = 881 [0x0371] 302 [0x012e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 280 [0x0118] diaA.y = 960 [0x03c0] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 121 [0x0079] alef.y = 796 [0x031c] 303 [0x012f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 231 [0x00e7] diaA.y = 1320 [0x0528] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 121 [0x0079] alef.y = 945 [0x03b1] 304 [0x0130] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 192 [0x00c0] diaA.y = 1487 [0x05cf] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 113 [0x0071] alef.y = 1130 [0x046a] 305 [0x0131] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 226 [0x00e2] diaA.y = 1115 [0x045b] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 121 [0x0079] alef.y = 933 [0x03a5] 306 [0x0132] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 255 [0x00ff] diaA.y = 870 [0x0366] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 109 [0x006d] alef.y = 796 [0x031c] 307 [0x0133] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 224 [0x00e0] diaA.y = 750 [0x02ee] diaB.x = 150 [0x0096] diaB.y = -530 [0xfdee] alef.x = 117 [0x0075] alef.y = 684 [0x02ac] 308 [0x0134] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 394 [0x018a] above.y = 498 [0x01f2] below.x = 745 [0x02e9] below.y = -306 [0xfece] diaA.x = 345 [0x0159] diaA.y = 645 [0x0285] diaB.x = 500 [0x01f4] diaB.y = -400 [0xfe70] diaDigitA.x = 345 [0x0159] diaDigitA.y = 645 [0x0285] 309 [0x0135] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 329 [0x0149] diaA.y = 944 [0x03b0] diaB.x = 500 [0x01f4] diaB.y = -400 [0xfe70] 310 [0x0136] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 461 [0x01cd] component.base.bottom = -238 [0xff12] component.base.right = 1130 [0x046a] component.hamza.top = 881 [0x0371] component.hamza.bottom = 461 [0x01cd] component.hamza.right = 847 [0x034f] diaA.x = 359 [0x0167] diaA.y = 1008 [0x03f0] diaB.x = 450 [0x01c2] diaB.y = -400 [0xfe70] 311 [0x0137] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 325 [0x0145] diaA.y = 709 [0x02c5] diaB.x = 342 [0x0156] diaB.y = -620 [0xfd94] 312 [0x0138] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 410 [0x019a] above.y = 512 [0x0200] below.x = 410 [0x019a] below.y = -287 [0xfee1] diaA.x = 329 [0x0149] diaA.y = 705 [0x02c1] diaB.x = 453 [0x01c5] diaB.y = -406 [0xfe6a] 313 [0x0139] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 179 [0x00b3] diaA.y = 692 [0x02b4] diaB.x = 450 [0x01c2] diaB.y = -400 [0xfe70] 314 [0x013a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 325 [0x0145] diaA.y = 706 [0x02c2] diaB.x = 450 [0x01c2] diaB.y = -400 [0xfe70] diaDigitA.x = 325 [0x0145] diaDigitA.y = 706 [0x02c2] diaDigitB.x = 450 [0x01c2] diaDigitB.y = -400 [0xfe70] 315 [0x013b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 402 [0x0192] diaA.y = 1030 [0x0406] diaB.x = 450 [0x01c2] diaB.y = -400 [0xfe70] 316 [0x013c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 420 [0x01a4] diaA.y = 705 [0x02c1] diaB.x = 385 [0x0181] diaB.y = -731 [0xfd25] 317 [0x013d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 420 [0x01a4] diaA.y = 705 [0x02c1] diaB.x = 385 [0x0181] diaB.y = -782 [0xfcf2] 318 [0x013e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 389 [0x0185] diaA.y = 739 [0x02e3] diaB.x = 400 [0x0190] diaB.y = -400 [0xfe70] 319 [0x013f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 495 [0x01ef] diaA.y = 675 [0x02a3] diaB.x = 400 [0x0190] diaB.y = -400 [0xfe70] 320 [0x0140] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 662 [0x0296] above.y = 410 [0x019a] below.x = 657 [0x0291] below.y = -98 [0xff9e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 298 [0x012a] alef.y = 583 [0x0247] ring.x = 636 [0x027c] ring.y = 12 [0x000c] 321 [0x0141] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 645 [0x0285] diaB.y = -427 [0xfe55] alef.x = 298 [0x012a] alef.y = 583 [0x0247] 322 [0x0142] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 602 [0x025a] diaA.y = 906 [0x038a] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 298 [0x012a] alef.y = 684 [0x02ac] 323 [0x0143] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 598 [0x0256] diaA.y = 1030 [0x0406] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 298 [0x012a] alef.y = 684 [0x02ac] 324 [0x0144] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 581 [0x0245] diaA.y = 1149 [0x047d] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 294 [0x0126] alef.y = 684 [0x02ac] 325 [0x0145] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 600 [0x0258] diaA.y = 1000 [0x03e8] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 326 [0x0146] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 645 [0x0285] diaB.y = -598 [0xfdaa] alef.x = 298 [0x012a] alef.y = 583 [0x0247] 327 [0x0147] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 598 [0x0256] diaA.y = 893 [0x037d] diaB.x = 598 [0x0256] diaB.y = -436 [0xfe4c] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 328 [0x0148] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 600 [0x0258] diaA.y = 1000 [0x03e8] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 329 [0x0149] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 654 [0x028e] diaB.y = -628 [0xfd8c] alef.x = 298 [0x012a] alef.y = 583 [0x0247] 330 [0x014a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 600 [0x0258] diaA.y = 1000 [0x03e8] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 331 [0x014b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 637 [0x027d] diaB.y = -645 [0xfd7b] alef.x = 298 [0x012a] alef.y = 583 [0x0247] 332 [0x014c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 628 [0x0274] diaB.y = -474 [0xfe26] alef.x = 298 [0x012a] alef.y = 583 [0x0247] 333 [0x014d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 607 [0x025f] diaA.y = 1021 [0x03fd] diaB.x = 641 [0x0281] diaB.y = -461 [0xfe33] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 334 [0x014e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 624 [0x0270] diaB.y = -628 [0xfd8c] alef.x = 298 [0x012a] alef.y = 583 [0x0247] 335 [0x014f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 620 [0x026c] diaA.y = 863 [0x035f] diaB.x = 624 [0x0270] diaB.y = -624 [0xfd90] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 336 [0x0150] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 624 [0x0270] diaA.y = 863 [0x035f] diaB.x = 624 [0x0270] diaB.y = -487 [0xfe19] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 337 [0x0151] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 620 [0x026c] diaB.y = -521 [0xfdf7] alef.x = 298 [0x012a] alef.y = 583 [0x0247] 338 [0x0152] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 658 [0x0292] diaA.y = 914 [0x0392] diaB.x = 651 [0x028b] diaB.y = -310 [0xfeca] alef.x = 290 [0x0122] alef.y = 684 [0x02ac] 339 [0x0153] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 340 [0x0154] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 525 [0x020d] above.y = 443 [0x01bb] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] diaDigitB.x = 525 [0x020d] diaDigitB.y = -20 [0xffec] center.x = 526 [0x020e] center.y = -200 [0xff38] 341 [0x0155] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 900 [0x0384] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 342 [0x0156] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 950 [0x03b6] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 343 [0x0157] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 1020 [0x03fc] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 800 [0x0320] 344 [0x0158] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 345 [0x0159] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 346 [0x015a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 1100 [0x044c] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 800 [0x0320] 347 [0x015b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 348 [0x015c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 349 [0x015d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 900 [0x0384] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 350 [0x015e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 393 [0x0189] diaA.y = 1192 [0x04a8] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 197 [0x00c5] alef.y = 788 [0x0314] 351 [0x015f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 480 [0x01e0] diaA.y = 660 [0x0294] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 352 [0x0160] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 480 [0x01e0] diaA.y = 660 [0x0294] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 353 [0x0161] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 1196 [0x04ac] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 205 [0x00cd] alef.y = 788 [0x0314] 354 [0x0162] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 1192 [0x04a8] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 780 [0x030c] 355 [0x0163] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 436 [0x01b4] diaA.y = 970 [0x03ca] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 800 [0x0320] 356 [0x0164] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -825 [0xfcc7] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 357 [0x0165] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 927 [0x039f] above.y = 449 [0x01c1] below.x = 1004 [0x03ec] below.y = -23 [0xffe9] diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] diaDigitA.x = 400 [0x0190] diaDigitA.y = 450 [0x01c2] 358 [0x0166] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 355 [0x0163] diaA.y = 555 [0x022b] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 359 [0x0167] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 360 [0x0168] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 361 [0x0169] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 359 [0x0167] diaA.y = 551 [0x0227] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 362 [0x016a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 363 [0x016b] diaA.y = 551 [0x0227] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 363 [0x016b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 325 [0x0145] diaA.y = 996 [0x03e4] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 364 [0x016c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 312 [0x0138] diaA.y = 825 [0x0339] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 365 [0x016d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 316 [0x013c] diaA.y = 611 [0x0263] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 366 [0x016e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 316 [0x013c] diaA.y = 632 [0x0278] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 367 [0x016f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 972 [0x03cc] above.y = 446 [0x01be] below.x = 1085 [0x043d] below.y = -90 [0xffa6] diaA.x = 397 [0x018d] diaA.y = 496 [0x01f0] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 368 [0x0170] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 500 [0x01f4] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 369 [0x0171] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 500 [0x01f4] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 370 [0x0172] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 400 [0x0190] diaA.y = 600 [0x0258] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 371 [0x0173] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 393 [0x0189] diaA.y = 500 [0x01f4] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 372 [0x0174] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 759 [0x02f7] above.y = 571 [0x023b] below.x = 524 [0x020c] below.y = -48 [0xffd0] diaA.x = 389 [0x0185] diaA.y = 1231 [0x04cf] diaB.x = 500 [0x01f4] diaB.y = -180 [0xff4c] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 373 [0x0175] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 389 [0x0185] diaA.y = 1231 [0x04cf] diaB.x = 500 [0x01f4] diaB.y = -180 [0xff4c] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 374 [0x0176] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 389 [0x0185] diaA.y = 1235 [0x04d3] diaB.x = 500 [0x01f4] diaB.y = -180 [0xff4c] alef.x = 201 [0x00c9] alef.y = 684 [0x02ac] 375 [0x0177] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 294 [0x0126] above.y = 691 [0x02b3] below.x = 455 [0x01c7] below.y = 103 [0x0067] diaA.x = 270 [0x010e] diaA.y = 900 [0x0384] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 376 [0x0178] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 270 [0x010e] diaA.y = 1100 [0x044c] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 377 [0x0179] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 222 [0x00de] diaA.y = 1282 [0x0502] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 378 [0x017a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 261 [0x0105] diaA.y = 1107 [0x0453] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 379 [0x017b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 256 [0x0100] diaA.y = 1115 [0x045b] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 380 [0x017c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 252 [0x00fc] diaA.y = 1273 [0x04f9] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 381 [0x017d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 252 [0x00fc] diaA.y = 1290 [0x050a] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 382 [0x017e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 479 [0x01df] diaA.y = 917 [0x0395] diaB.x = 600 [0x0258] diaB.y = -210 [0xff2e] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 383 [0x017f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 1162 [0x048a] above.y = 785 [0x0311] below.x = 1104 [0x0450] below.y = -6 [0xfffa] diaA.x = 480 [0x01e0] diaA.y = 900 [0x0384] diaB.x = 600 [0x0258] diaB.y = -210 [0xff2e] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 384 [0x0180] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 480 [0x01e0] diaA.y = 900 [0x0384] diaB.x = 600 [0x0258] diaB.y = -210 [0xff2e] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 385 [0x0181] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 479 [0x01df] diaA.y = 921 [0x0399] diaB.x = 602 [0x025a] diaB.y = -209 [0xff2f] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 386 [0x0182] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 480 [0x01e0] diaA.y = 900 [0x0384] diaB.x = 600 [0x0258] diaB.y = -210 [0xff2e] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 387 [0x0183] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 480 [0x01e0] diaA.y = 900 [0x0384] diaB.x = 581 [0x0245] diaB.y = -329 [0xfeb7] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 388 [0x0184] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 480 [0x01e0] diaA.y = 900 [0x0384] diaB.x = 600 [0x0258] diaB.y = -210 [0xff2e] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 389 [0x0185] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 480 [0x01e0] diaA.y = 900 [0x0384] diaB.x = 600 [0x0258] diaB.y = -210 [0xff2e] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 390 [0x0186] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 480 [0x01e0] diaA.y = 900 [0x0384] diaB.x = 594 [0x0252] diaB.y = -252 [0xff04] alef.x = 342 [0x0156] alef.y = 740 [0x02e4] 391 [0x0187] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 762 [0x02fa] above.y = 717 [0x02cd] below.x = 762 [0x02fa] below.y = -166 [0xff5a] diaA.x = 405 [0x0195] diaA.y = 795 [0x031b] diaB.x = 400 [0x0190] diaB.y = -300 [0xfed4] 392 [0x0188] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 330 [0x014a] diaA.y = 1020 [0x03fc] diaB.x = 400 [0x0190] diaB.y = -300 [0xfed4] 393 [0x0189] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 330 [0x014a] diaA.y = 1020 [0x03fc] diaB.x = 400 [0x0190] diaB.y = -300 [0xfed4] 394 [0x018a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 330 [0x014a] diaA.y = 1020 [0x03fc] diaB.x = 400 [0x0190] diaB.y = -300 [0xfed4] 395 [0x018b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 662 [0x0296] above.y = 1136 [0x0470] below.x = 662 [0x0296] below.y = -65 [0xffbf] diaA.x = 315 [0x013b] diaA.y = 1155 [0x0483] diaB.x = 400 [0x0190] diaB.y = -210 [0xff2e] alef.x = 161 [0x00a1] alef.y = 961 [0x03c1] 396 [0x018c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 303 [0x012f] diaA.y = 1141 [0x0475] diaB.x = 400 [0x0190] diaB.y = -210 [0xff2e] alef.x = 161 [0x00a1] alef.y = 961 [0x03c1] 397 [0x018d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 256 [0x0100] diaA.y = 1372 [0x055c] diaB.x = 400 [0x0190] diaB.y = -210 [0xff2e] alef.x = 161 [0x00a1] alef.y = 961 [0x03c1] 398 [0x018e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 315 [0x013b] diaA.y = 1100 [0x044c] diaB.x = 414 [0x019e] diaB.y = -513 [0xfdff] alef.x = 161 [0x00a1] alef.y = 961 [0x03c1] 399 [0x018f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 805 [0x0325] above.y = 691 [0x02b3] below.x = 811 [0x032b] below.y = -185 [0xff47] diaA.x = 510 [0x01fe] diaA.y = 800 [0x0320] diaB.x = 585 [0x0249] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] ring.x = 1212 [0x04bc] ring.y = 752 [0x02f0] 400 [0x0190] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 510 [0x01fe] diaA.y = 800 [0x0320] diaB.x = 585 [0x0249] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 401 [0x0191] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 457 [0x01c9] diaA.y = 795 [0x031b] diaB.x = 585 [0x0249] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 402 [0x0192] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 457 [0x01c9] diaA.y = 795 [0x031b] diaB.x = 585 [0x0249] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 403 [0x0193] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 330 [0x014a] diaA.y = 1200 [0x04b0] diaB.x = 585 [0x0249] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 404 [0x0194] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 457 [0x01c9] diaA.y = 795 [0x031b] diaB.x = 400 [0x0190] diaB.y = -400 [0xfe70] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 405 [0x0195] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 457 [0x01c9] diaA.y = 795 [0x031b] diaB.x = 400 [0x0190] diaB.y = -400 [0xfe70] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 406 [0x0196] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 315 [0x013b] diaA.y = 1200 [0x04b0] diaB.x = 585 [0x0249] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 407 [0x0197] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 436 [0x01b4] diaA.y = 906 [0x038a] diaB.x = 581 [0x0245] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 408 [0x0198] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 389 [0x0185] diaA.y = 961 [0x03c1] diaB.x = 585 [0x0249] diaB.y = -299 [0xfed5] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 409 [0x0199] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 510 [0x01fe] diaA.y = 800 [0x0320] diaB.x = 346 [0x015a] diaB.y = -406 [0xfe6a] alef.x = 241 [0x00f1] alef.y = 684 [0x02ac] 410 [0x019a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 390 [0x0186] diaA.y = 1000 [0x03e8] diaB.x = 600 [0x0258] diaB.y = -210 [0xff2e] 411 [0x019b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 597 [0x0255] above.y = 1143 [0x0477] below.x = 668 [0x029c] below.y = -236 [0xff14] diaA.x = 300 [0x012c] diaA.y = 900 [0x0384] diaB.x = 400 [0x0190] diaB.y = -330 [0xfeb6] alef.x = 460 [0x01cc] alef.y = 800 [0x0320] through.x = 648 [0x0288] through.y = 691 [0x02b3] 412 [0x019c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 538 [0x021a] diaA.y = 1572 [0x0624] diaB.x = 400 [0x0190] diaB.y = -330 [0xfeb6] alef.x = 460 [0x01cc] alef.y = 700 [0x02bc] 413 [0x019d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 453 [0x01c5] diaA.y = 1470 [0x05be] diaB.x = 400 [0x0190] diaB.y = -330 [0xfeb6] alef.x = 460 [0x01cc] alef.y = 650 [0x028a] 414 [0x019e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 390 [0x0186] diaA.y = 1620 [0x0654] diaB.x = 400 [0x0190] diaB.y = -330 [0xfeb6] alef.x = 460 [0x01cc] alef.y = 650 [0x028a] 415 [0x019f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 315 [0x013b] diaA.y = 900 [0x0384] diaB.x = 250 [0x00fa] diaB.y = -500 [0xfe0c] alef.x = 460 [0x01cc] alef.y = 800 [0x0320] 416 [0x01a0] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 436 [0x01b4] diaA.y = 1769 [0x06e9] diaB.x = 400 [0x0190] diaB.y = -330 [0xfeb6] alef.x = 460 [0x01cc] alef.y = 540 [0x021c] 417 [0x01a1] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 300 [0x012c] diaA.y = 1140 [0x0474] diaB.x = 400 [0x0190] diaB.y = -330 [0xfeb6] alef.x = 460 [0x01cc] alef.y = 915 [0x0393] 418 [0x01a2] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 297 [0x0129] above.y = 546 [0x0222] below.x = 339 [0x0153] below.y = 73 [0x0049] diaA.x = 192 [0x00c0] diaA.y = 837 [0x0345] diaB.x = 165 [0x00a5] diaB.y = -660 [0xfd6c] 419 [0x01a3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 600 [0x0258] above.y = 552 [0x0228] below.x = 600 [0x0258] below.y = -100 [0xff9c] diaA.x = 500 [0x01f4] diaA.y = 700 [0x02bc] diaB.x = 400 [0x0190] diaB.y = -200 [0xff38] 420 [0x01a4] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 188 [0x00bc] diaA.y = 1034 [0x040a] diaB.x = 165 [0x00a5] diaB.y = -660 [0xfd6c] 421 [0x01a5] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 188 [0x00bc] diaA.y = 850 [0x0352] diaB.x = 165 [0x00a5] diaB.y = -660 [0xfd6c] 422 [0x01a6] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 251 [0x00fb] diaA.y = 999 [0x03e7] diaB.x = 400 [0x0190] diaB.y = -210 [0xff2e] 423 [0x01a7] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 299 [0x012b] diaA.y = 999 [0x03e7] diaB.x = 406 [0x0196] diaB.y = -487 [0xfe19] 424 [0x01a8] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 407 [0x0197] above.y = 591 [0x024f] below.x = 426 [0x01aa] below.y = -136 [0xff78] diaA.x = 300 [0x012c] diaA.y = 870 [0x0366] diaB.x = 400 [0x0190] diaB.y = -210 [0xff2e] ring.x = 437 [0x01b5] ring.y = -13 [0xfff3] 425 [0x01a9] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 270 [0x010e] diaA.y = 1365 [0x0555] diaB.x = 400 [0x0190] diaB.y = -210 [0xff2e] alef.x = 161 [0x00a1] alef.y = 924 [0x039c] 426 [0x01aa] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 299 [0x012b] diaA.y = 999 [0x03e7] diaB.x = 397 [0x018d] diaB.y = -397 [0xfe73] 427 [0x01ab] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 285 [0x011d] diaA.y = 1245 [0x04dd] diaB.x = 400 [0x0190] diaB.y = -210 [0xff2e] 428 [0x01ac] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 299 [0x012b] diaA.y = 999 [0x03e7] diaB.x = 400 [0x0190] diaB.y = -500 [0xfe0c] 429 [0x01ad] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 286 [0x011e] diaA.y = 1478 [0x05c6] diaB.x = 350 [0x015e] diaB.y = -210 [0xff2e] alef.x = 161 [0x00a1] alef.y = 1188 [0x04a4] 430 [0x01ae] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 360 [0x0168] diaA.y = 1275 [0x04fb] diaB.x = 350 [0x015e] diaB.y = -210 [0xff2e] 431 [0x01af] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 347 [0x015b] above.y = 652 [0x028c] below.x = 347 [0x015b] below.y = -17 [0xffef] diaA.x = 360 [0x0168] diaA.y = 855 [0x0357] diaB.x = 300 [0x012c] diaB.y = -195 [0xff3d] 432 [0x01b0] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 330 [0x014a] diaA.y = 1070 [0x042e] diaB.x = 340 [0x0154] diaB.y = -195 [0xff3d] 433 [0x01b1] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 261 [0x0105] diaA.y = 769 [0x0301] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 434 [0x01b2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 360 [0x0168] diaA.y = 855 [0x0357] diaB.x = 300 [0x012c] diaB.y = -195 [0xff3d] 435 [0x01b3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 256 [0x0100] above.y = 560 [0x0230] below.x = 256 [0x0100] below.y = -60 [0xffc4] diaA.x = 261 [0x0105] diaA.y = 769 [0x0301] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 436 [0x01b4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 1000 [0x03e8] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 437 [0x01b5] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 576 [0x0240] component.base.bottom = -10 [0xfff6] component.base.right = 502 [0x01f6] component.hamza.top = 929 [0x03a1] component.hamza.bottom = 576 [0x0240] component.hamza.right = 502 [0x01f6] diaA.x = 209 [0x00d1] diaA.y = 1128 [0x0468] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 438 [0x01b6] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 261 [0x0105] diaA.y = 769 [0x0301] diaB.x = 200 [0x00c8] diaB.y = -195 [0xff3d] 439 [0x01b7] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 576 [0x0240] component.base.bottom = -10 [0xfff6] component.base.right = 502 [0x01f6] component.hamza.top = 929 [0x03a1] component.hamza.bottom = 576 [0x0240] component.hamza.right = 502 [0x01f6] diaA.x = 218 [0x00da] diaA.y = 1132 [0x046c] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 440 [0x01b8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 1000 [0x03e8] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 441 [0x01b9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 above.x = 260 [0x0104] above.y = 472 [0x01d8] below.x = 265 [0x0109] below.y = -155 [0xff65] diaA.x = 210 [0x00d2] diaA.y = 540 [0x021c] diaB.x = 210 [0x00d2] diaB.y = -180 [0xff4c] 442 [0x01ba] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 210 [0x00d2] diaA.y = 540 [0x021c] diaB.x = 244 [0x00f4] diaB.y = -649 [0xfd77] 443 [0x01bb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 500 [0x01f4] diaA.y = 700 [0x02bc] diaB.x = 512 [0x0200] diaB.y = -547 [0xfddd] 444 [0x01bc] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 150 [0x0096] diaA.y = 790 [0x0316] diaB.x = 111 [0x006f] diaB.y = -188 [0xff44] 445 [0x01bd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 691 [0x02b3] above.y = 1195 [0x04ab] below.x = 651 [0x028b] below.y = -58 [0xffc6] through.x = 703 [0x02bf] through.y = 777 [0x0309] above2.x = 46 [0x002e] above2.y = 1185 [0x04a1] alef1.x = 600 [0x0258] alef1.y = 825 [0x0339] alef2.y = 1155 [0x0483] below2.x = 446 [0x01be] below2.y = -57 [0xffc7] dia2B1.x = 600 [0x0258] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 714 [0x02ca] diaA1.y = 1278 [0x04fe] diaA2.y = 1218 [0x04c2] diaB1.x = 600 [0x0258] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 446 [0x01be] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 825 [0x0339] alef2.y = 1155 [0x0483] dia2B1.x = 600 [0x0258] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 667 [0x029b] diaA1.y = 1594 [0x063a] diaA2.y = 1218 [0x04c2] diaB1.x = 600 [0x0258] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 447 [0x01bf] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 825 [0x0339] alef2.y = 1155 [0x0483] dia2B1.x = 600 [0x0258] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 658 [0x0292] diaA1.y = 1560 [0x0618] diaA2.y = 1218 [0x04c2] diaB1.x = 600 [0x0258] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 448 [0x01c0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 825 [0x0339] alef2.y = 1155 [0x0483] dia2B1.x = 600 [0x0258] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 615 [0x0267] diaA1.y = 1722 [0x06ba] diaA2.y = 1218 [0x04c2] diaB1.x = 600 [0x0258] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 449 [0x01c1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 825 [0x0339] alef2.y = 1155 [0x0483] dia2B1.x = 628 [0x0274] dia2B1.y = -555 [0xfdd5] dia2B2.x = 256 [0x0100] dia2B2.y = -145 [0xff6f] diaA1.x = 714 [0x02ca] diaA1.y = 1278 [0x04fe] diaA2.y = 1218 [0x04c2] diaB1.x = 628 [0x0274] diaB1.y = -555 [0xfdd5] diaB2.x = 256 [0x0100] diaB2.y = -145 [0xff6f] 450 [0x01c2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 480 [0x01e0] alef1.y = 1455 [0x05af] alef2.y = 1155 [0x0483] dia2B1.x = 600 [0x0258] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 585 [0x0249] diaA1.y = 1786 [0x06fa] diaA2.y = 1218 [0x04c2] diaB1.x = 600 [0x0258] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 451 [0x01c3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 540 [0x021c] alef1.y = 930 [0x03a2] alef2.y = 1155 [0x0483] dia2B1.x = 600 [0x0258] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 714 [0x02ca] diaA1.y = 1278 [0x04fe] diaA2.y = 1218 [0x04c2] diaB1.x = 600 [0x0258] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 452 [0x01c4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 100 [0x0064] diaA.y = 1395 [0x0573] diaB.x = 179 [0x00b3] diaB.y = -179 [0xff4d] 453 [0x01c5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 90 [0x005a] diaA.y = 1445 [0x05a5] diaB.x = 179 [0x00b3] diaB.y = -179 [0xff4d] 454 [0x01c6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 100 [0x0064] diaA.y = 1175 [0x0497] diaB.x = 192 [0x00c0] diaB.y = -491 [0xfe15] 455 [0x01c7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 136 [0x0088] above.y = 1043 [0x0413] below.x = 227 [0x00e3] below.y = -50 [0xffce] diaA.x = 105 [0x0069] diaA.y = 1175 [0x0497] diaB.x = 179 [0x00b3] diaB.y = -179 [0xff4d] diaDigitA.x = 105 [0x0069] diaDigitA.y = 1175 [0x0497] 456 [0x01c8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 60 [0x003c] diaA.y = 1485 [0x05cd] diaB.x = 179 [0x00b3] diaB.y = -179 [0xff4d] 457 [0x01c9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 75 [0x004b] diaA.y = 1185 [0x04a1] diaB.x = 158 [0x009e] diaB.y = -513 [0xfdff] 458 [0x01ca] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 105 [0x0069] diaA.y = 1365 [0x0555] diaB.x = 179 [0x00b3] diaB.y = -179 [0xff4d] 459 [0x01cb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 135 [0x0087] diaA.y = 1370 [0x055a] diaB.x = 179 [0x00b3] diaB.y = -179 [0xff4d] 460 [0x01cc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 307 [0x0133] component.base.bottom = -457 [0xfe37] component.base.right = 573 [0x023d] component.hamza.top = 766 [0x02fe] component.hamza.bottom = 307 [0x0133] component.hamza.right = 573 [0x023d] diaA.x = 312 [0x0138] diaA.y = 880 [0x0370] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 461 [0x01cd] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] above.x = 375 [0x0177] above.y = 397 [0x018d] below.x = 375 [0x0177] below.y = -457 [0xfe37] diaA.x = 308 [0x0134] diaA.y = 684 [0x02ac] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] diaDigitA.x = 308 [0x0134] diaDigitA.y = 684 [0x02ac] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] ring.x = 231 [0x00e7] ring.y = -42 [0xffd6] center.x = 383 [0x017f] center.y = -154 [0xff66] through.x = 383 [0x017f] through.y = -156 [0xff64] 462 [0x01ce] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 269 [0x010d] diaA.y = 910 [0x038e] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 463 [0x01cf] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 1000 [0x03e8] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] 464 [0x01d0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 308 [0x0134] diaA.y = 684 [0x02ac] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 465 [0x01d1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 308 [0x0134] diaA.y = 684 [0x02ac] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 466 [0x01d2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 308 [0x0134] diaA.y = 923 [0x039b] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 137 [0x0089] alef.y = 816 [0x0330] 467 [0x01d3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 303 [0x012f] diaA.y = 1038 [0x040e] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 468 [0x01d4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 303 [0x012f] diaA.y = 978 [0x03d2] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 469 [0x01d5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 308 [0x0134] diaA.y = 966 [0x03c6] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 780 [0x030c] 470 [0x01d6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 308 [0x0134] diaA.y = 936 [0x03a8] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 736 [0x02e0] 471 [0x01d7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 308 [0x0134] diaA.y = 1008 [0x03f0] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 137 [0x0089] alef.y = 764 [0x02fc] 472 [0x01d8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 303 [0x012f] diaA.y = 936 [0x03a8] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 473 [0x01d9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 303 [0x012f] diaA.y = 684 [0x02ac] diaB.x = 359 [0x0167] diaB.y = -765 [0xfd03] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 474 [0x01da] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 468 [0x01d4] above.y = 814 [0x032e] below.x = 417 [0x01a1] below.y = -50 [0xffce] diaA.x = 256 [0x0100] diaA.y = 1000 [0x03e8] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] ring.x = 315 [0x013b] ring.y = 91 [0x005b] 475 [0x01db] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1196 [0x04ac] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 137 [0x0089] alef.y = 861 [0x035d] 476 [0x01dc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1500 [0x05dc] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 157 [0x009d] alef.y = 1154 [0x0482] 477 [0x01dd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1000 [0x03e8] diaB.x = 300 [0x012c] diaB.y = -400 [0xfe70] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 478 [0x01de] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1000 [0x03e8] diaB.x = 376 [0x0178] diaB.y = -402 [0xfe6e] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 479 [0x01df] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1500 [0x05dc] diaB.x = 380 [0x017c] diaB.y = -410 [0xfe66] alef.x = 145 [0x0091] alef.y = 1154 [0x0482] 480 [0x01e0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1260 [0x04ec] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 137 [0x0089] alef.y = 921 [0x0399] 481 [0x01e1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1000 [0x03e8] diaB.x = 355 [0x0163] diaB.y = -419 [0xfe5d] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 482 [0x01e2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1303 [0x0517] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 133 [0x0085] alef.y = 945 [0x03b1] 483 [0x01e3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 1330 [0x0532] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 121 [0x0079] alef.y = 941 [0x03ad] 484 [0x01e4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 1300 [0x0514] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 145 [0x0091] alef.y = 929 [0x03a1] 485 [0x01e5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 359 [0x0167] diaA.y = 1256 [0x04e8] diaB.x = 300 [0x012c] diaB.y = -180 [0xff4c] alef.x = 141 [0x008d] alef.y = 921 [0x0399] 486 [0x01e6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1500 [0x05dc] diaB.x = 385 [0x0181] diaB.y = -560 [0xfdd0] alef.x = 149 [0x0095] alef.y = 1130 [0x046a] 487 [0x01e7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 312 [0x0138] diaA.y = 992 [0x03e0] diaB.x = 380 [0x017c] diaB.y = -410 [0xfe66] alef.x = 141 [0x008d] alef.y = 684 [0x02ac] 488 [0x01e8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 349 [0x015d] above.y = 242 [0x00f2] below.x = 349 [0x015d] below.y = -432 [0xfe50] diaA.x = 225 [0x00e1] diaA.y = 600 [0x0258] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 101 [0x0065] alef.y = 450 [0x01c2] ring.x = 348 [0x015c] ring.y = -268 [0xfef4] center.x = 145 [0x0091] through.x = 320 [0x0140] through.y = -164 [0xff5c] 489 [0x01e9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 244 [0x00f4] diaA.y = 799 [0x031f] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 101 [0x0065] alef.y = 450 [0x01c2] 490 [0x01ea] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 214 [0x00d6] diaA.y = 953 [0x03b9] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 109 [0x006d] alef.y = 571 [0x023b] 491 [0x01eb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 248 [0x00f8] diaA.y = 855 [0x0357] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 97 [0x0061] alef.y = 623 [0x026f] 492 [0x01ec] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 600 [0x0258] diaB.x = 248 [0x00f8] diaB.y = -701 [0xfd43] alef.x = 101 [0x0065] alef.y = 450 [0x01c2] 493 [0x01ed] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 600 [0x0258] diaB.x = 265 [0x0109] diaB.y = -735 [0xfd21] alef.x = 101 [0x0065] alef.y = 450 [0x01c2] 494 [0x01ee] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 600 [0x0258] diaB.x = 261 [0x0105] diaB.y = -816 [0xfcd0] alef.x = 101 [0x0065] alef.y = 450 [0x01c2] 495 [0x01ef] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 600 [0x0258] diaB.x = 278 [0x0116] diaB.y = -756 [0xfd0c] alef.x = 101 [0x0065] alef.y = 450 [0x01c2] 496 [0x01f0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 800 [0x0320] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 101 [0x0065] alef.y = 555 [0x022b] 497 [0x01f1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 235 [0x00eb] diaA.y = 927 [0x039f] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 105 [0x0069] alef.y = 599 [0x0257] 498 [0x01f2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 235 [0x00eb] diaA.y = 923 [0x039b] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 101 [0x0065] alef.y = 659 [0x0293] 499 [0x01f3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 261 [0x0105] diaA.y = 889 [0x0379] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 109 [0x006d] alef.y = 603 [0x025b] 500 [0x01f4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 239 [0x00ef] diaA.y = 859 [0x035b] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 97 [0x0061] alef.y = 507 [0x01fb] 501 [0x01f5] *skipPasses* = 255 [0x00ff / 1 1 1 1 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 218 [0x00da] diaA.y = 1171 [0x0493] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 109 [0x006d] alef.y = 780 [0x030c] 502 [0x01f6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 1346 [0x0542] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 101 [0x0065] alef.y = 981 [0x03d5] 503 [0x01f7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 239 [0x00ef] diaA.y = 1021 [0x03fd] diaB.x = 201 [0x00c9] diaB.y = -538 [0xfde6] alef.x = 97 [0x0061] alef.y = 684 [0x02ac] 504 [0x01f8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 244 [0x00f4] diaA.y = 812 [0x032c] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 105 [0x0069] alef.y = 515 [0x0203] 505 [0x01f9] *skipPasses* = 255 [0x00ff / 1 1 1 1 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 600 [0x0258] diaB.x = 200 [0x00c8] diaB.y = -540 [0xfde4] alef.x = 101 [0x0065] alef.y = 450 [0x01c2] 506 [0x01fa] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 494 [0x01ee] above.y = 45 [0x002d] below.x = 680 [0x02a8] below.y = -787 [0xfced] diaA.x = 375 [0x0177] diaA.y = 220 [0x00dc] diaB.x = 500 [0x01f4] diaB.y = -850 [0xfcae] diaDigitA.x = 375 [0x0177] diaDigitA.y = 220 [0x00dc] 507 [0x01fb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 410 [0x019a] diaA.y = 500 [0x01f4] diaB.x = 500 [0x01f4] diaB.y = -850 [0xfcae] 508 [0x01fc] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 67 [0x0043] component.base.bottom = -543 [0xfde1] component.base.right = 940 [0x03ac] component.hamza.top = 434 [0x01b2] component.hamza.bottom = 67 [0x0043] component.hamza.right = 705 [0x02c1] diaA.x = 385 [0x0181] diaA.y = 530 [0x0212] diaB.x = 450 [0x01c2] diaB.y = -650 [0xfd76] 509 [0x01fd] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 389 [0x0185] diaA.y = 329 [0x0149] diaB.x = 419 [0x01a3] diaB.y = -910 [0xfc72] 510 [0x01fe] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 458 [0x01ca] above.y = 65 [0x0041] below.x = 446 [0x01be] below.y = -594 [0xfdae] diaA.x = 389 [0x0185] diaA.y = 329 [0x0149] diaB.x = 453 [0x01c5] diaB.y = -654 [0xfd72] 511 [0x01ff] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 261 [0x0105] diaA.y = 329 [0x0149] diaB.x = 450 [0x01c2] diaB.y = -650 [0xfd76] 512 [0x0200] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 389 [0x0185] diaA.y = 329 [0x0149] diaB.x = 450 [0x01c2] diaB.y = -650 [0xfd76] diaDigitA.x = 389 [0x0185] diaDigitA.y = 329 [0x0149] diaDigitB.x = 450 [0x01c2] diaDigitB.y = -650 [0xfd76] 513 [0x0201] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 406 [0x0196] diaA.y = 564 [0x0234] diaB.x = 450 [0x01c2] diaB.y = -650 [0xfd76] 514 [0x0202] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 389 [0x0185] diaA.y = 329 [0x0149] diaB.x = 427 [0x01ab] diaB.y = -1047 [0xfbe9] 515 [0x0203] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 389 [0x0185] diaA.y = 329 [0x0149] diaB.x = 444 [0x01bc] diaB.y = -1094 [0xfbba] 516 [0x0204] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 389 [0x0185] diaA.y = 329 [0x0149] diaB.x = 400 [0x0190] diaB.y = -650 [0xfd76] 517 [0x0205] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 389 [0x0185] diaA.y = 329 [0x0149] diaB.x = 450 [0x01c2] diaB.y = -650 [0xfd76] 518 [0x0206] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 649 [0x0289] above.y = 300 [0x012c] below.x = 581 [0x0245] below.y = -132 [0xff7c] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] ring.x = 588 [0x024c] ring.y = -30 [0xffe2] 519 [0x0207] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 560 [0x0230] diaB.y = -496 [0xfe10] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 520 [0x0208] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 632 [0x0278] diaA.y = 820 [0x0334] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 521 [0x0209] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 615 [0x0267] diaA.y = 953 [0x03b9] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 522 [0x020a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 551 [0x0227] diaA.y = 1030 [0x0406] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 523 [0x020b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 632 [0x0278] diaA.y = 931 [0x03a3] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 524 [0x020c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 568 [0x0238] diaB.y = -620 [0xfd94] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 525 [0x020d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 632 [0x0278] diaA.y = 833 [0x0341] diaB.x = 534 [0x0216] diaB.y = -449 [0xfe3f] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 526 [0x020e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 628 [0x0274] diaA.y = 970 [0x03ca] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 527 [0x020f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 568 [0x0238] diaB.y = -675 [0xfd5d] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 528 [0x0210] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 624 [0x0270] diaA.y = 953 [0x03b9] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 529 [0x0211] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 555 [0x022b] diaB.y = -675 [0xfd5d] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 530 [0x0212] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 547 [0x0223] diaB.y = -461 [0xfe33] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 531 [0x0213] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 607 [0x025f] diaA.y = 927 [0x039f] diaB.x = 547 [0x0223] diaB.y = -474 [0xfe26] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 532 [0x0214] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 538 [0x021a] diaB.y = -662 [0xfd6a] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 533 [0x0215] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 632 [0x0278] diaA.y = 833 [0x0341] diaB.x = 530 [0x0212] diaB.y = -662 [0xfd6a] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 534 [0x0216] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 632 [0x0278] diaA.y = 808 [0x0328] diaB.x = 551 [0x0227] diaB.y = -521 [0xfdf7] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 535 [0x0217] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 660 [0x0294] diaA.y = 585 [0x0249] diaB.x = 547 [0x0223] diaB.y = -521 [0xfdf7] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 536 [0x0218] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 641 [0x0281] diaA.y = 833 [0x0341] diaB.x = 659 [0x0293] diaB.y = -310 [0xfeca] alef.x = 302 [0x012e] alef.y = 583 [0x0247] 537 [0x0219] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 538 [0x021a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 522 [0x020a] above.y = 439 [0x01b7] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] diaDigitB.x = 500 [0x01f4] diaDigitB.y = -50 [0xffce] center.x = 520 [0x0208] center.y = -229 [0xff1b] 539 [0x021b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 900 [0x0384] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 540 [0x021c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 950 [0x03b6] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 541 [0x021d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 1020 [0x03fc] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 542 [0x021e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 543 [0x021f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 544 [0x0220] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 427 [0x01ab] diaA.y = 1034 [0x040a] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 545 [0x0221] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 546 [0x0222] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 547 [0x0223] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 900 [0x0384] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 548 [0x0224] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 1171 [0x0493] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 549 [0x0225] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 480 [0x01e0] diaA.y = 660 [0x0294] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 550 [0x0226] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 480 [0x01e0] diaA.y = 660 [0x0294] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 551 [0x0227] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 397 [0x018d] diaA.y = 1166 [0x048e] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 552 [0x0228] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 397 [0x018d] diaA.y = 1171 [0x0493] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 553 [0x0229] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 406 [0x0196] diaA.y = 906 [0x038a] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 554 [0x022a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 400 [0x0190] diaB.y = -840 [0xfcb8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 555 [0x022b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 969 [0x03c9] above.y = 333 [0x014d] below.x = 1036 [0x040c] below.y = -65 [0xffbf] diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 338 [0x0152] diaB.y = -602 [0xfda6] diaDigitA.x = 800 [0x0320] diaDigitA.y = 450 [0x01c2] 556 [0x022c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 333 [0x014d] diaB.y = -602 [0xfda6] 557 [0x022d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 329 [0x0149] diaB.y = -602 [0xfda6] 558 [0x022e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 329 [0x0149] diaB.y = -602 [0xfda6] 559 [0x022f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 564 [0x0234] diaB.x = 338 [0x0152] diaB.y = -602 [0xfda6] 560 [0x0230] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 551 [0x0227] diaB.x = 338 [0x0152] diaB.y = -607 [0xfda1] 561 [0x0231] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 375 [0x0177] diaA.y = 975 [0x03cf] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] 562 [0x0232] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 405 [0x0195] diaA.y = 855 [0x0357] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] 563 [0x0233] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 376 [0x0178] diaA.y = 564 [0x0234] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] 564 [0x0234] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 363 [0x016b] diaA.y = 568 [0x0238] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] 565 [0x0235] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 1001 [0x03e9] above.y = 429 [0x01ad] below.x = 1133 [0x046d] below.y = -90 [0xffa6] diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 566 [0x0236] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 397 [0x018d] diaA.y = 547 [0x0223] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 567 [0x0237] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 450 [0x01c2] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 568 [0x0238] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 393 [0x0189] diaA.y = 662 [0x0296] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 569 [0x0239] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 397 [0x018d] diaA.y = 547 [0x0223] diaB.x = 300 [0x012c] diaB.y = -600 [0xfda8] 570 [0x023a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 743 [0x02e7] above.y = 562 [0x0232] below.x = 567 [0x0237] below.y = -50 [0xffce] diaA.x = 390 [0x0186] diaA.y = 1240 [0x04d8] diaB.x = 500 [0x01f4] diaB.y = -180 [0xff4c] alef.x = 189 [0x00bd] alef.y = 684 [0x02ac] 571 [0x023b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 390 [0x0186] diaA.y = 1240 [0x04d8] diaB.x = 500 [0x01f4] diaB.y = -180 [0xff4c] alef.x = 189 [0x00bd] alef.y = 684 [0x02ac] 572 [0x023c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 390 [0x0186] diaA.y = 1240 [0x04d8] diaB.x = 500 [0x01f4] diaB.y = -180 [0xff4c] alef.x = 189 [0x00bd] alef.y = 684 [0x02ac] 573 [0x023d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 375 [0x0177] above.y = 507 [0x01fb] below.x = 375 [0x0177] diaA.x = 300 [0x012c] diaA.y = 670 [0x029e] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] 574 [0x023e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 300 [0x012c] diaA.y = 955 [0x03bb] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] 575 [0x023f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 300 [0x012c] diaA.y = 1150 [0x047e] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] 576 [0x0240] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 300 [0x012c] diaA.y = 970 [0x03ca] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] 577 [0x0241] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 961 [0x03c1] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] 578 [0x0242] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 320 [0x0140] diaA.y = 1115 [0x045b] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] 579 [0x0243] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 312 [0x0138] diaA.y = 1107 [0x0453] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] 580 [0x0244] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 684 [0x02ac] diaB.x = 600 [0x0258] diaB.y = -250 [0xff06] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 581 [0x0245] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 1182 [0x049e] above.y = 559 [0x022f] below.x = 1083 [0x043b] below.y = -141 [0xff73] diaA.x = 496 [0x01f0] diaA.y = 684 [0x02ac] diaB.x = 600 [0x0258] diaB.y = -250 [0xff06] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 582 [0x0246] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 684 [0x02ac] diaB.x = 598 [0x0256] diaB.y = -291 [0xfedd] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 583 [0x0247] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 684 [0x02ac] diaB.x = 594 [0x0252] diaB.y = -295 [0xfed9] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 584 [0x0248] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 773 [0x0305] diaB.x = 600 [0x0258] diaB.y = -250 [0xff06] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 585 [0x0249] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 684 [0x02ac] diaB.x = 600 [0x0258] diaB.y = -350 [0xfea2] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 586 [0x024a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 769 [0x0301] diaB.x = 600 [0x0258] diaB.y = -250 [0xff06] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 587 [0x024b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 684 [0x02ac] diaB.x = 602 [0x025a] diaB.y = -299 [0xfed5] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 588 [0x024c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 496 [0x01f0] diaA.y = 684 [0x02ac] diaB.x = 594 [0x0252] diaB.y = -376 [0xfe88] alef.x = 330 [0x014a] alef.y = 551 [0x0227] 589 [0x024d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 652 [0x028c] above.y = 349 [0x015d] below.x = 646 [0x0286] below.y = -397 [0xfe73] diaA.x = 360 [0x0168] diaA.y = 510 [0x01fe] diaB.x = 376 [0x0178] diaB.y = -594 [0xfdae] 590 [0x024e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 248 [0x00f8] diaA.y = 684 [0x02ac] diaB.x = 380 [0x017c] diaB.y = -594 [0xfdae] 591 [0x024f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 248 [0x00f8] diaA.y = 684 [0x02ac] diaB.x = 376 [0x0178] diaB.y = -598 [0xfdaa] 592 [0x0250] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 248 [0x00f8] diaA.y = 765 [0x02fd] diaB.x = 372 [0x0174] diaB.y = -598 [0xfdaa] 593 [0x0251] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 1065 [0x0429] above.y = 1065 [0x0429] below.x = 1062 [0x0426] below.y = -107 [0xff95] diaA.x = 466 [0x01d2] diaA.y = 1034 [0x040a] diaB.x = 600 [0x0258] diaB.y = -300 [0xfed4] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 594 [0x0252] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 466 [0x01d2] diaA.y = 1115 [0x045b] diaB.x = 600 [0x0258] diaB.y = -300 [0xfed4] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 595 [0x0253] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 466 [0x01d2] diaA.y = 1282 [0x0502] diaB.x = 600 [0x0258] diaB.y = -300 [0xfed4] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 596 [0x0254] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 466 [0x01d2] diaA.y = 1034 [0x040a] diaB.x = 850 [0x0352] diaB.y = -650 [0xfd76] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 597 [0x0255] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] above.x = 805 [0x0325] above.y = 768 [0x0300] below.x = 814 [0x032e] below.y = -77 [0xffb3] diaA.x = 510 [0x01fe] diaA.y = 800 [0x0320] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] ring.x = 1212 [0x04bc] ring.y = 855 [0x0357] 598 [0x0256] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 510 [0x01fe] diaA.y = 800 [0x0320] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 599 [0x0257] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 510 [0x01fe] diaA.y = 900 [0x0384] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 600 [0x0258] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 510 [0x01fe] diaA.y = 900 [0x0384] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 601 [0x0259] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 414 [0x019e] diaA.y = 1282 [0x0502] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 602 [0x025a] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 510 [0x01fe] diaA.y = 900 [0x0384] diaB.x = 607 [0x025f] diaB.y = -402 [0xfe6e] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 603 [0x025b] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 510 [0x01fe] diaA.y = 900 [0x0384] diaB.x = 765 [0x02fd] diaB.y = -555 [0xfdd5] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 604 [0x025c] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 325 [0x0145] diaA.y = 1282 [0x0502] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 605 [0x025d] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 466 [0x01d2] diaA.y = 983 [0x03d7] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 606 [0x025e] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 367 [0x016f] diaA.y = 1085 [0x043d] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 607 [0x025f] *skipPasses* = 247 [0x00f7 / 1 1 1 0 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 510 [0x01fe] diaA.y = 800 [0x0320] diaB.x = 701 [0x02bd] diaB.y = -602 [0xfda6] alef.x = 261 [0x0105] alef.y = 800 [0x0320] 608 [0x0260] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 390 [0x0186] diaA.y = 1000 [0x03e8] diaB.x = 600 [0x0258] diaB.y = -180 [0xff4c] 609 [0x0261] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 591 [0x024f] above.y = 1023 [0x03ff] below.x = 649 [0x0289] below.y = -528 [0xfdf0] diaA.x = 300 [0x012c] diaA.y = 800 [0x0320] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] alef.x = 460 [0x01cc] alef.y = 700 [0x02bc] through.x = 602 [0x025a] through.y = 602 [0x025a] 610 [0x0262] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 526 [0x020e] diaA.y = 1470 [0x05be] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] alef.x = 460 [0x01cc] alef.y = 600 [0x0258] 611 [0x0263] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 508 [0x01fc] diaA.y = 1440 [0x05a0] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] alef.x = 460 [0x01cc] alef.y = 600 [0x0258] 612 [0x0264] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 440 [0x01b8] diaA.y = 1564 [0x061c] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] alef.x = 460 [0x01cc] alef.y = 600 [0x0258] 613 [0x0265] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 330 [0x014a] diaA.y = 800 [0x0320] diaB.x = 250 [0x00fa] diaB.y = -800 [0xfce0] alef.x = 460 [0x01cc] alef.y = 700 [0x02bc] 614 [0x0266] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 474 [0x01da] diaA.y = 1662 [0x067e] diaB.x = 400 [0x0190] diaB.y = -600 [0xfda8] alef.x = 460 [0x01cc] alef.y = 400 [0x0190] 615 [0x0267] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 330 [0x014a] diaA.y = 1005 [0x03ed] diaB.x = 400 [0x0190] diaB.y = -600 [0xfda8] alef.x = 460 [0x01cc] alef.y = 800 [0x0320] 616 [0x0268] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] above.x = 416 [0x01a0] above.y = 339 [0x0153] below.x = 407 [0x0197] below.y = -265 [0xfef7] diaA.x = 273 [0x0111] diaA.y = 684 [0x02ac] diaB.x = 170 [0x00aa] diaB.y = -750 [0xfd12] 617 [0x0269] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 627 [0x0273] above.y = 557 [0x022d] below.x = 649 [0x0289] below.y = -168 [0xff58] diaA.x = 500 [0x01f4] diaA.y = 679 [0x02a7] diaB.x = 400 [0x0190] diaB.y = -400 [0xfe70] 618 [0x026a] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 273 [0x0111] diaA.y = 855 [0x0357] diaB.x = 170 [0x00aa] diaB.y = -750 [0xfd12] 619 [0x026b] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 273 [0x0111] diaA.y = 684 [0x02ac] diaB.x = 170 [0x00aa] diaB.y = -750 [0xfd12] 620 [0x026c] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 342 [0x0156] diaA.y = 684 [0x02ac] diaB.x = 400 [0x0190] diaB.y = -600 [0xfda8] alef.x = 225 [0x00e1] alef.y = 499 [0x01f3] 621 [0x026d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 342 [0x0156] diaA.y = 684 [0x02ac] diaB.x = 450 [0x01c2] diaB.y = -900 [0xfc7c] alef.x = 225 [0x00e1] alef.y = 499 [0x01f3] 622 [0x026e] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 420 [0x01a4] above.y = 125 [0x007d] below.x = 410 [0x019a] below.y = -549 [0xfddb] diaA.x = 346 [0x015a] diaA.y = 491 [0x01eb] diaB.x = 400 [0x0190] diaB.y = -600 [0xfda8] alef.x = 225 [0x00e1] alef.y = 499 [0x01f3] ring.x = 397 [0x018d] ring.y = -424 [0xfe58] 623 [0x026f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 299 [0x012b] diaA.y = 833 [0x0341] diaB.x = 400 [0x0190] diaB.y = -600 [0xfda8] alef.x = 181 [0x00b5] alef.y = 474 [0x01da] 624 [0x0270] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 342 [0x0156] diaA.y = 684 [0x02ac] diaB.x = 400 [0x0190] diaB.y = -800 [0xfce0] alef.x = 225 [0x00e1] alef.y = 499 [0x01f3] 625 [0x0271] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 333 [0x014d] diaA.y = 782 [0x030e] diaB.x = 400 [0x0190] diaB.y = -600 [0xfda8] alef.x = 165 [0x00a5] alef.y = 495 [0x01ef] 626 [0x0272] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 342 [0x0156] diaA.y = 684 [0x02ac] diaB.x = 450 [0x01c2] diaB.y = -900 [0xfc7c] alef.x = 225 [0x00e1] alef.y = 499 [0x01f3] 627 [0x0273] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 312 [0x0138] diaA.y = 1034 [0x040a] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] alef.x = 187 [0x00bb] alef.y = 703 [0x02bf] 628 [0x0274] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 359 [0x0167] diaA.y = 897 [0x0381] diaB.x = 350 [0x015e] diaB.y = -600 [0xfda8] alef.x = 106 [0x006a] alef.y = 532 [0x0214] 629 [0x0275] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 553 [0x0229] above.y = 559 [0x022f] below.x = 402 [0x0192] below.y = -412 [0xfe64] diaA.x = 450 [0x01c2] diaA.y = 700 [0x02bc] diaB.x = 400 [0x0190] diaB.y = -500 [0xfe0c] 630 [0x0276] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 350 [0x015e] diaA.y = 961 [0x03c1] diaB.x = 300 [0x012c] diaB.y = -195 [0xff3d] 631 [0x0277] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 300 [0x012c] diaA.y = 790 [0x0316] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] 632 [0x0278] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 450 [0x01c2] diaA.y = 700 [0x02bc] diaB.x = 400 [0x0190] diaB.y = -500 [0xfe0c] 633 [0x0279] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 354 [0x0162] above.y = 587 [0x024b] below.x = 342 [0x0156] below.y = -125 [0xff83] diaA.x = 360 [0x0168] diaA.y = 780 [0x030c] diaB.x = 300 [0x012c] diaB.y = -195 [0xff3d] 634 [0x027a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 180 [0x00b4] diaA.y = 645 [0x0285] diaB.x = 200 [0x00c8] diaB.y = -300 [0xfed4] 635 [0x027b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 311 [0x0137] above.y = 671 [0x029f] below.x = 311 [0x0137] below.y = -50 [0xffce] diaA.x = 300 [0x012c] diaA.y = 790 [0x0316] diaB.x = 250 [0x00fa] diaB.y = -180 [0xff4c] 636 [0x027c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 225 [0x00e1] diaA.y = 1100 [0x044c] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 637 [0x027d] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 650 [0x028a] component.base.right = 553 [0x0229] component.hamza.top = 1040 [0x0410] component.hamza.bottom = 650 [0x028a] component.hamza.right = 553 [0x0229] diaA.x = 210 [0x00d2] diaA.y = 1135 [0x046f] diaB.x = 200 [0x00c8] diaB.y = -180 [0xff4c] 638 [0x027e] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] above.x = 244 [0x00f4] above.y = 298 [0x012a] below.x = 244 [0x00f4] below.y = -177 [0xff4f] diaA.x = 180 [0x00b4] diaA.y = 645 [0x0285] diaB.x = 200 [0x00c8] diaB.y = -300 [0xfed4] 639 [0x027f] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 369 [0x0171] component.base.bottom = -127 [0xff81] component.base.right = 440 [0x01b8] component.hamza.top = 667 [0x029b] component.hamza.bottom = 369 [0x0171] component.hamza.right = 440 [0x01b8] diaA.x = 188 [0x00bc] diaA.y = 812 [0x032c] diaB.x = 200 [0x00c8] diaB.y = -250 [0xff06] 640 [0x0280] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 192 [0x00c0] diaA.y = 790 [0x0316] diaB.x = 200 [0x00c8] diaB.y = -250 [0xff06] 641 [0x0281] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 730 [0x02da] above.y = 1020 [0x03fc] below.x = 755 [0x02f3] below.y = -68 [0xffbc] through.x = 723 [0x02d3] through.y = 644 [0x0284] alef1.x = 600 [0x0258] alef1.y = 700 [0x02bc] alef2.y = 1020 [0x03fc] dia2B1.x = 750 [0x02ee] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 720 [0x02d0] diaA1.y = 1035 [0x040b] diaA2.x = 47 [0x002f] diaA2.y = 949 [0x03b5] diaB1.x = 750 [0x02ee] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 642 [0x0282] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 700 [0x02bc] alef2.y = 1020 [0x03fc] dia2B1.x = 750 [0x02ee] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 705 [0x02c1] diaA1.y = 1448 [0x05a8] diaA2.x = 47 [0x002f] diaA2.y = 940 [0x03ac] diaB1.x = 750 [0x02ee] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 643 [0x0283] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 700 [0x02bc] alef2.y = 1020 [0x03fc] dia2B1.x = 750 [0x02ee] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 679 [0x02a7] diaA1.y = 1376 [0x0560] diaA2.x = 43 [0x002b] diaA2.y = 940 [0x03ac] diaB1.x = 750 [0x02ee] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 644 [0x0284] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 700 [0x02bc] alef2.y = 1020 [0x03fc] dia2B1.x = 750 [0x02ee] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 654 [0x028e] diaA1.y = 1530 [0x05fa] diaA2.x = 47 [0x002f] diaA2.y = 936 [0x03a8] diaB1.x = 750 [0x02ee] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 645 [0x0285] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 600 [0x0258] alef1.y = 700 [0x02bc] alef2.y = 1020 [0x03fc] dia2B1.x = 731 [0x02db] dia2B1.y = -564 [0xfdcc] dia2B2.x = 320 [0x0140] dia2B2.y = -171 [0xff55] diaA1.x = 720 [0x02d0] diaA1.y = 1035 [0x040b] diaA2.x = 43 [0x002b] diaA2.y = 940 [0x03ac] diaB1.x = 726 [0x02d6] diaB1.y = -564 [0xfdcc] diaB2.x = 320 [0x0140] diaB2.y = -171 [0xff55] 646 [0x0286] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 480 [0x01e0] alef1.y = 1350 [0x0546] alef2.y = 1020 [0x03fc] dia2B1.x = 750 [0x02ee] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 624 [0x0270] diaA1.y = 1654 [0x0676] diaA2.x = 47 [0x002f] diaA2.y = 940 [0x03ac] diaB1.x = 750 [0x02ee] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 647 [0x0287] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] alef1.x = 570 [0x023a] alef1.y = 795 [0x031b] alef2.y = 1020 [0x03fc] dia2B1.x = 750 [0x02ee] dia2B1.y = -100 [0xff9c] dia2B2.x = 350 [0x015e] dia2B2.y = -135 [0xff79] diaA1.x = 720 [0x02d0] diaA1.y = 1035 [0x040b] diaA2.x = 51 [0x0033] diaA2.y = 940 [0x03ac] diaB1.x = 750 [0x02ee] diaB1.y = -100 [0xff9c] diaB2.x = 420 [0x01a4] diaB2.y = -100 [0xff9c] 648 [0x0288] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 337 [0x0151] component.base.right = 367 [0x016f] component.hamza.top = 675 [0x02a3] component.hamza.bottom = 337 [0x0151] component.hamza.right = 367 [0x016f] diaA.x = 200 [0x00c8] diaA.y = 900 [0x0384] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 800 [0x0320] 649 [0x0289] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -450 [0xfe3e] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 650 [0x028a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 651 [0x028b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 158 [0x009e] diaA.y = 953 [0x03b9] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 652 [0x028c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -450 [0xfe3e] diaDigitA.x = 200 [0x00c8] diaDigitA.y = 600 [0x0258] alef.x = 60 [0x003c] alef.y = 599 [0x0257] diaDigitB.x = 150 [0x0096] diaDigitB.y = -450 [0xfe3e] 653 [0x028d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 154 [0x009a] diaA.y = 863 [0x035f] diaB.x = 150 [0x0096] diaB.y = -450 [0xfe3e] alef.x = 60 [0x003c] alef.y = 720 [0x02d0] 654 [0x028e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -550 [0xfdda] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 655 [0x028f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -600 [0xfda8] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 656 [0x0290] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 657 [0x0291] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 184 [0x00b8] above.y = 306 [0x0132] below.x = 184 [0x00b8] below.y = -50 [0xffce] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 599 [0x0257] ring.x = 215 [0x00d7] ring.y = 106 [0x006a] 658 [0x0292] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -450 [0xfe3e] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 659 [0x0293] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 855 [0x0357] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 720 [0x02d0] 660 [0x0294] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 957 [0x03bd] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 800 [0x0320] 661 [0x0295] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 103 [0x0067] diaA.y = 1094 [0x0446] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.y = 684 [0x02ac] 662 [0x0296] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 158 [0x009e] diaA.y = 957 [0x03bd] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 760 [0x02f8] 663 [0x0297] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -550 [0xfdda] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 664 [0x0298] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 850 [0x0352] diaB.x = 162 [0x00a2] diaB.y = -299 [0xfed5] alef.x = 60 [0x003c] alef.y = 720 [0x02d0] 665 [0x0299] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 949 [0x03b5] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 800 [0x0320] 666 [0x029a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -600 [0xfda8] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 667 [0x029b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 171 [0x00ab] diaA.y = 974 [0x03ce] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 800 [0x0320] 668 [0x029c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 150 [0x0096] diaB.y = -600 [0xfda8] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 669 [0x029d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 145 [0x0091] diaB.y = -414 [0xfe62] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 670 [0x029e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 154 [0x009a] diaA.y = 936 [0x03a8] diaB.x = 154 [0x009a] diaB.y = -402 [0xfe6e] alef.x = 60 [0x003c] alef.y = 800 [0x0320] 671 [0x029f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 145 [0x0091] diaB.y = -581 [0xfdbb] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 672 [0x02a0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 846 [0x034e] diaB.x = 150 [0x0096] diaB.y = -594 [0xfdae] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 673 [0x02a1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 855 [0x0357] diaB.x = 154 [0x009a] diaB.y = -432 [0xfe50] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 674 [0x02a2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 600 [0x0258] diaB.x = 141 [0x008d] diaB.y = -397 [0xfe73] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 675 [0x02a3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 859 [0x035b] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 676 [0x02a4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 470 [0x01d6] diaB.y = -397 [0xfe73] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 677 [0x02a5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 522 [0x020a] above.y = 505 [0x01f9] below.x = 522 [0x020a] below.y = -50 [0xffce] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] diaDigitB.x = 449 [0x01c1] diaDigitB.y = -201 [0xff37] 678 [0x02a6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 950 [0x03b6] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 679 [0x02a7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 1000 [0x03e8] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 680 [0x02a8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 1100 [0x044c] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 681 [0x02a9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 449 [0x01c1] diaB.y = -410 [0xfe66] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 682 [0x02aa] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 479 [0x01df] diaB.y = -517 [0xfdfb] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 683 [0x02ab] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 1150 [0x047e] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 816 [0x0330] 684 [0x02ac] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 479 [0x01df] diaB.y = -564 [0xfdcc] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 685 [0x02ad] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 466 [0x01d2] diaB.y = -573 [0xfdc3] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 686 [0x02ae] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 950 [0x03b6] diaB.x = 479 [0x01df] diaB.y = -581 [0xfdbb] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 687 [0x02af] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 406 [0x0196] diaA.y = 1239 [0x04d7] diaB.x = 461 [0x01cd] diaB.y = -590 [0xfdb2] alef.x = 153 [0x0099] alef.y = 844 [0x034c] 688 [0x02b0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 800 [0x0320] diaB.x = 466 [0x01d2] diaB.y = -859 [0xfca5] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 689 [0x02b1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 800 [0x0320] diaB.x = 470 [0x01d6] diaB.y = -679 [0xfd59] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 690 [0x02b2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 414 [0x019e] diaA.y = 1239 [0x04d7] diaB.x = 474 [0x01da] diaB.y = -397 [0xfe73] alef.x = 157 [0x009d] alef.y = 861 [0x035d] 691 [0x02b3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 355 [0x0163] diaA.y = 1265 [0x04f1] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 852 [0x0354] 692 [0x02b4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 693 [0x02b5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 474 [0x01da] diaB.y = -568 [0xfdc8] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 694 [0x02b6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 509 [0x01fd] above.y = 333 [0x014d] below.x = 509 [0x01fd] below.y = -50 [0xffce] diaA.x = 400 [0x0190] diaA.y = 600 [0x0258] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] diaDigitA.x = 400 [0x0190] diaDigitA.y = 600 [0x0258] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 695 [0x02b7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 410 [0x019a] diaA.y = 978 [0x03d2] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 663 [0x0297] 696 [0x02b8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 480 [0x01e0] diaA.y = 800 [0x0320] diaB.x = 496 [0x01f0] diaB.y = -372 [0xfe8c] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 697 [0x02b9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 480 [0x01e0] diaA.y = 735 [0x02df] diaB.x = 496 [0x01f0] diaB.y = -538 [0xfde6] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 698 [0x02ba] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 414 [0x019e] diaA.y = 966 [0x03c6] diaB.x = 487 [0x01e7] diaB.y = -538 [0xfde6] alef.x = 149 [0x0095] alef.y = 667 [0x029b] 699 [0x02bb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 419 [0x01a3] diaA.y = 970 [0x03ca] diaB.x = 496 [0x01f0] diaB.y = -393 [0xfe77] alef.x = 149 [0x0095] alef.y = 667 [0x029b] 700 [0x02bc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 367 [0x016f] diaA.y = 1410 [0x0582] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 161 [0x00a1] alef.y = 1033 [0x0409] 701 [0x02bd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 376 [0x0178] diaA.y = 1222 [0x04c6] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 153 [0x0099] alef.y = 816 [0x0330] 702 [0x02be] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 430 [0x01ae] diaA.y = 980 [0x03d4] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 667 [0x029b] 703 [0x02bf] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 430 [0x01ae] diaA.y = 980 [0x03d4] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 704 [0x02c0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 639 [0x027f] above.y = 489 [0x01e9] below.x = 681 [0x02a9] below.y = -87 [0xffa9] diaA.x = 500 [0x01f4] diaA.y = 800 [0x0320] diaB.x = 406 [0x0196] diaB.y = -312 [0xfec8] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 705 [0x02c1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 900 [0x0384] diaB.x = 402 [0x0192] diaB.y = -303 [0xfed1] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 706 [0x02c2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 800 [0x0320] diaB.x = 406 [0x0196] diaB.y = -423 [0xfe59] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 707 [0x02c3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 1050 [0x041a] diaB.x = 402 [0x0192] diaB.y = -312 [0xfec8] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 708 [0x02c4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 900 [0x0384] diaB.x = 402 [0x0192] diaB.y = -380 [0xfe84] alef.x = 149 [0x0095] alef.y = 595 [0x0253] 709 [0x02c5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 497 [0x01f1] above.y = 559 [0x022f] below.x = 442 [0x01ba] below.y = -77 [0xffb3] diaA.x = 175 [0x00af] diaA.y = 1235 [0x04d3] diaB.x = 402 [0x0192] diaB.y = -201 [0xff37] alef.x = 12 [0x000c] alef.y = 800 [0x0320] 710 [0x02c6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 1231 [0x04cf] diaB.x = 402 [0x0192] diaB.y = -201 [0xff37] alef.x = 12 [0x000c] alef.y = 800 [0x0320] 711 [0x02c7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 1231 [0x04cf] diaB.x = 402 [0x0192] diaB.y = -201 [0xff37] alef.x = 12 [0x000c] alef.y = 800 [0x0320] 712 [0x02c8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 301 [0x012d] above.y = 582 [0x0246] below.x = 295 [0x0127] below.y = -50 [0xffce] diaA.x = 270 [0x010e] diaA.y = 687 [0x02af] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] 713 [0x02c9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 222 [0x00de] diaA.y = 961 [0x03c1] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] 714 [0x02ca] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 1170 [0x0492] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] 715 [0x02cb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 222 [0x00de] diaA.y = 961 [0x03c1] diaB.x = 261 [0x0105] diaB.y = -419 [0xfe5d] 716 [0x02cc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 222 [0x00de] diaA.y = 991 [0x03df] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] 717 [0x02cd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 231 [0x00e7] diaA.y = 1102 [0x044e] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] 718 [0x02ce] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 248 [0x00f8] diaA.y = 1085 [0x043d] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] 719 [0x02cf] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1034 [0x040a] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 121 [0x0079] alef.y = 744 [0x02e8] 720 [0x02d0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 379 [0x017b] above.y = 609 [0x0261] below.x = 296 [0x0128] below.y = -50 [0xffce] diaA.x = 295 [0x0127] diaA.y = 850 [0x0352] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 121 [0x0079] alef.y = 684 [0x02ac] 721 [0x02d1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 299 [0x012b] diaA.y = 855 [0x0357] diaB.x = 256 [0x0100] diaB.y = -423 [0xfe59] alef.x = 121 [0x0079] alef.y = 684 [0x02ac] 722 [0x02d2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 303 [0x012f] diaA.y = 1034 [0x040a] diaB.x = 252 [0x00fc] diaB.y = -419 [0xfe5d] alef.x = 117 [0x0075] alef.y = 748 [0x02ec] 723 [0x02d3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 282 [0x011a] diaA.y = 1196 [0x04ac] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 121 [0x0079] alef.y = 929 [0x03a1] 724 [0x02d4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 842 [0x034a] diaB.x = 250 [0x00fa] diaB.y = -600 [0xfda8] alef.x = 121 [0x0079] alef.y = 684 [0x02ac] 725 [0x02d5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1213 [0x04bd] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 101 [0x0065] alef.y = 941 [0x03ad] 726 [0x02d6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 299 [0x012b] diaA.y = 855 [0x0357] diaB.x = 261 [0x0105] diaB.y = -449 [0xfe3f] alef.x = 121 [0x0079] alef.y = 684 [0x02ac] 727 [0x02d7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 859 [0x035b] diaB.x = 256 [0x0100] diaB.y = -594 [0xfdae] alef.x = 121 [0x0079] alef.y = 684 [0x02ac] 728 [0x02d8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 859 [0x035b] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 121 [0x0079] alef.y = 684 [0x02ac] 729 [0x02d9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1034 [0x040a] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 117 [0x0075] alef.y = 844 [0x034c] 730 [0x02da] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1034 [0x040a] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 125 [0x007d] alef.y = 748 [0x02ec] 731 [0x02db] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 295 [0x0127] diaA.y = 1213 [0x04bd] diaB.x = 248 [0x00f8] diaB.y = -201 [0xff37] alef.x = 125 [0x007d] alef.y = 941 [0x03ad] 732 [0x02dc] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] above.x = 100 [0x0064] above.y = 852 [0x0354] below.x = 139 [0x008b] below.y = -48 [0xffd0] diaA.x = 195 [0x00c3] diaA.y = 1200 [0x04b0] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 101 [0x0065] alef.y = 1001 [0x03e9] ring.x = 533 [0x0215] ring.y = 981 [0x03d5] 733 [0x02dd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 135 [0x0087] diaA.y = 1335 [0x0537] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 16 [0x0010] alef.y = 1194 [0x04aa] 734 [0x02de] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1485 [0x05cd] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 24 [0x0018] alef.y = 1383 [0x0567] 735 [0x02df] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 197 [0x00c5] diaA.y = 1192 [0x04a8] diaB.x = 162 [0x00a2] diaB.y = -611 [0xfd9d] alef.x = 101 [0x0065] alef.y = 1001 [0x03e9] 736 [0x02e0] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] diaA.x = 205 [0x00cd] diaA.y = 1201 [0x04b1] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 101 [0x0065] alef.y = 1001 [0x03e9] 737 [0x02e1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 201 [0x00c9] diaA.y = 1196 [0x04ac] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 101 [0x0065] alef.y = 1001 [0x03e9] 738 [0x02e2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 162 [0x00a2] diaA.y = 1248 [0x04e0] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 84 [0x0054] alef.y = 1166 [0x048e] 739 [0x02e3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 162 [0x00a2] diaA.y = 1248 [0x04e0] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 88 [0x0058] alef.y = 1170 [0x0492] 740 [0x02e4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 90 [0x005a] diaA.y = 1500 [0x05dc] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 12 [0x000c] alef.y = 1427 [0x0593] 741 [0x02e5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 158 [0x009e] diaA.y = 1252 [0x04e4] diaB.x = 150 [0x0096] diaB.y = -449 [0xfe3f] alef.x = 88 [0x0058] alef.y = 1174 [0x0496] 742 [0x02e6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 158 [0x009e] diaA.y = 1256 [0x04e8] diaB.x = 162 [0x00a2] diaB.y = -564 [0xfdcc] alef.x = 88 [0x0058] alef.y = 1174 [0x0496] 743 [0x02e7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 30 [0x001e] diaA.y = 1650 [0x0672] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = -60 [0xffc4] alef.y = 1568 [0x0620] 744 [0x02e8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 167 [0x00a7] diaA.y = 1226 [0x04ca] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 24 [0x0018] alef.y = 1198 [0x04ae] 745 [0x02e9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1419 [0x058b] diaB.x = 200 [0x00c8] diaB.y = -150 [0xff6a] alef.x = 24 [0x0018] alef.y = 1355 [0x054b] 746 [0x02ea] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 195 [0x00c3] diaA.y = 1200 [0x04b0] diaB.x = 162 [0x00a2] diaB.y = -594 [0xfdae] alef.x = 101 [0x0065] alef.y = 1001 [0x03e9] 747 [0x02eb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 390 [0x0186] diaA.y = 1000 [0x03e8] diaB.x = 600 [0x0258] diaB.y = -150 [0xff6a] alef.x = 169 [0x00a9] alef.y = 901 [0x0385] 748 [0x02ec] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 165 [0x00a5] above.y = 1075 [0x0433] below.x = 202 [0x00ca] below.y = -50 [0xffce] diaA.x = 137 [0x0089] diaA.y = 1132 [0x046c] diaB.x = 150 [0x0096] diaB.y = -201 [0xff37] alef.x = 30 [0x001e] alef.y = 750 [0x02ee] through.x = 160 [0x00a0] through.y = 687 [0x02af] 749 [0x02ed] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 135 [0x0087] diaA.y = 1545 [0x0609] diaB.x = 150 [0x0096] diaB.y = -201 [0xff37] alef.x = 30 [0x001e] alef.y = 650 [0x028a] 750 [0x02ee] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 100 [0x0064] diaA.y = 1450 [0x05aa] diaB.x = 150 [0x0096] diaB.y = -201 [0xff37] alef.x = 30 [0x001e] alef.y = 650 [0x028a] 751 [0x02ef] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 100 [0x0064] diaA.y = 1650 [0x0672] diaB.x = 150 [0x0096] diaB.y = -201 [0xff37] alef.x = 30 [0x001e] alef.y = 650 [0x028a] 752 [0x02f0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 141 [0x008d] diaA.y = 1132 [0x046c] diaB.x = 200 [0x00c8] diaB.y = -650 [0xfd76] alef.x = 30 [0x001e] alef.y = 750 [0x02ee] 753 [0x02f1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 60 [0x003c] diaA.y = 1675 [0x068b] diaB.x = 150 [0x0096] diaB.y = -201 [0xff37] alef.x = 30 [0x001e] alef.y = 450 [0x01c2] 754 [0x02f2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1154 [0x0482] diaB.x = 150 [0x0096] diaB.y = -201 [0xff37] alef.x = 15 [0x000f] alef.y = 950 [0x03b6] 755 [0x02f3] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] above.x = 368 [0x0170] above.y = 394 [0x018a] below.x = 385 [0x0181] below.y = -70 [0xffba] diaA.x = 291 [0x0123] diaA.y = 688 [0x02b0] diaB.x = 299 [0x012b] diaB.y = -201 [0xff37] alef.x = 121 [0x0079] alef.y = 603 [0x025b] 756 [0x02f4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 291 [0x0123] diaA.y = 825 [0x0339] diaB.x = 299 [0x012b] diaB.y = -201 [0xff37] alef.x = 117 [0x0075] alef.y = 688 [0x02b0] 757 [0x02f5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 291 [0x0123] diaA.y = 684 [0x02ac] diaB.x = 380 [0x017c] diaB.y = -406 [0xfe6a] alef.x = 121 [0x0079] alef.y = 603 [0x025b] 758 [0x02f6] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 846 [0x034e] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 759 [0x02f7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 184 [0x00b8] diaA.y = 846 [0x034e] diaB.x = 200 [0x00c8] diaB.y = -450 [0xfe3e] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 760 [0x02f8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 850 [0x0352] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 761 [0x02f9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 98 [0x0062] diaA.y = 1034 [0x040a] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.y = 651 [0x028b] 762 [0x02fa] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 850 [0x0352] diaB.x = 158 [0x009e] diaB.y = -342 [0xfeaa] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 763 [0x02fb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 684 [0x02ac] diaB.x = 171 [0x00ab] diaB.y = -564 [0xfdcc] alef.x = 60 [0x003c] alef.y = 599 [0x0257] 764 [0x02fc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 846 [0x034e] diaB.x = 175 [0x00af] diaB.y = -427 [0xfe55] alef.x = 60 [0x003c] alef.y = 684 [0x02ac] 765 [0x02fd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 85 [0x0055] diaA.y = 1290 [0x050a] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.y = 909 [0x038d] 766 [0x02fe] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 145 [0x0091] diaA.y = 1098 [0x044a] diaB.x = 153 [0x0099] diaB.y = -249 [0xff07] alef.x = 44 [0x002c] alef.y = 977 [0x03d1] 767 [0x02ff] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 423 [0x01a7] above.y = 559 [0x022f] below.x = 347 [0x015b] below.y = -412 [0xfe64] diaA.x = 350 [0x015e] diaA.y = 700 [0x02bc] diaB.x = 300 [0x012c] diaB.y = -450 [0xfe3e] alef.x = 153 [0x0099] alef.y = 559 [0x022f] 768 [0x0300] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 269 [0x010d] diaA.y = 1001 [0x03e9] diaB.x = 295 [0x0127] diaB.y = -167 [0xff59] 769 [0x0301] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 350 [0x015e] diaA.y = 700 [0x02bc] diaB.x = 300 [0x012c] diaB.y = -450 [0xfe3e] alef.x = 153 [0x0099] alef.y = 559 [0x022f] 770 [0x0302] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 195 [0x00c3] diaA.y = 495 [0x01ef] diaB.x = 150 [0x0096] diaB.y = -500 [0xfe0c] 771 [0x0303] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 294 [0x0126] above.y = 635 [0x027b] below.x = 294 [0x0126] below.y = -80 [0xffb0] diaA.x = 269 [0x010d] diaA.y = 800 [0x0320] diaB.x = 295 [0x0127] diaB.y = -167 [0xff59] alef.x = 101 [0x0065] alef.y = 740 [0x02e4] 772 [0x0304] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 438 [0x01b6] component.base.bottom = -362 [0xfe96] component.base.right = 694 [0x02b6] component.hamza.top = 919 [0x0397] component.hamza.bottom = 438 [0x01b6] component.hamza.right = 694 [0x02b6] diaA.x = 346 [0x015a] diaA.y = 1000 [0x03e8] diaB.x = 300 [0x012c] diaB.y = -450 [0xfe3e] alef.x = 200 [0x00c8] alef.y = 900 [0x0384] 773 [0x0305] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 195 [0x00c3] diaA.y = 495 [0x01ef] diaB.x = 150 [0x0096] diaB.y = -500 [0xfe0c] 774 [0x0306] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 291 [0x0123] component.base.bottom = -403 [0xfe6d] component.base.right = 676 [0x02a4] component.hamza.top = 708 [0x02c4] component.hamza.bottom = 291 [0x0123] component.hamza.right = 676 [0x02a4] diaA.x = 300 [0x012c] diaA.y = 800 [0x0320] diaB.x = 150 [0x0096] diaB.y = -500 [0xfe0c] 775 [0x0307] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 545 [0x0221] component.base.right = 360 [0x0168] component.hamza.top = 873 [0x0369] component.hamza.bottom = 545 [0x0221] component.hamza.right = 360 [0x0168] diaA.x = 120 [0x0078] diaA.y = 1020 [0x03fc] diaB.x = 98 [0x0062] diaB.y = -201 [0xff37] alef.x = 8 alef.y = 925 [0x039d] 776 [0x0308] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 684 [0x02ac] diaB.x = 130 [0x0082] diaB.y = -420 [0xfe5c] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 777 [0x0309] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 184 [0x00b8] diaA.y = 688 [0x02b0] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 778 [0x030a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 77 [0x004d] diaA.y = 1034 [0x040a] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 779 [0x030b] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] diaA.x = 184 [0x00b8] diaA.y = 684 [0x02ac] diaB.x = 130 [0x0082] diaB.y = -420 [0xfe5c] diaDigitA.x = 184 [0x00b8] diaDigitA.y = 684 [0x02ac] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] diaDigitB.x = 130 [0x0082] diaDigitB.y = -420 [0xfe5c] 780 [0x030c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1000 [0x03e8] diaB.x = 130 [0x0082] diaB.y = -420 [0xfe5c] alef.x = 40 [0x0028] alef.y = 901 [0x0385] 781 [0x030d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 684 [0x02ac] diaB.x = 141 [0x008d] diaB.y = -577 [0xfdbf] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 782 [0x030e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 688 [0x02b0] diaB.x = 137 [0x0089] diaB.y = -594 [0xfdae] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 783 [0x030f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 684 [0x02ac] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 784 [0x0310] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 168 [0x00a8] above.y = 504 [0x01f8] below.x = 118 [0x0076] below.y = -50 [0xffce] diaA.x = 175 [0x00af] diaA.y = 688 [0x02b0] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] ring.x = 176 [0x00b0] ring.y = 91 [0x005b] 785 [0x0311] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 688 [0x02b0] diaB.x = 120 [0x0078] diaB.y = -414 [0xfe62] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 786 [0x0312] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 950 [0x03b6] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 40 [0x0028] alef.y = 852 [0x0354] 787 [0x0313] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1050 [0x041a] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 36 [0x0024] alef.y = 1049 [0x0419] 788 [0x0314] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 107 [0x006b] diaA.y = 1248 [0x04e0] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = -48 [0xffd0] alef.y = 844 [0x034c] 789 [0x0315] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1050 [0x041a] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 4 alef.y = 961 [0x03c1] 790 [0x0316] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 688 [0x02b0] diaB.x = 124 [0x007c] diaB.y = -577 [0xfdbf] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 791 [0x0317] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 145 [0x0091] diaA.y = 949 [0x03b5] diaB.x = 124 [0x007c] diaB.y = -342 [0xfeaa] alef.x = 40 [0x0028] alef.y = 873 [0x0369] 792 [0x0318] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1064 [0x0428] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 28 [0x001c] alef.y = 1033 [0x0409] 793 [0x0319] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 684 [0x02ac] diaB.x = 128 [0x0080] diaB.y = -568 [0xfdc8] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 794 [0x031a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1100 [0x044c] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 36 [0x0024] alef.y = 1049 [0x0419] 795 [0x031b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 684 [0x02ac] diaB.x = 120 [0x0078] diaB.y = -564 [0xfdcc] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 796 [0x031c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 688 [0x02b0] diaB.x = 111 [0x006f] diaB.y = -402 [0xfe6e] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 797 [0x031d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 1077 [0x0435] diaB.x = 111 [0x006f] diaB.y = -393 [0xfe77] alef.x = 28 [0x001c] alef.y = 1045 [0x0415] 798 [0x031e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 684 [0x02ac] diaB.x = 107 [0x006b] diaB.y = -590 [0xfdb2] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 799 [0x031f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 944 [0x03b0] diaB.x = 111 [0x006f] diaB.y = -585 [0xfdb7] alef.x = 32 [0x0020] alef.y = 913 [0x0391] 800 [0x0320] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 154 [0x009a] diaA.y = 936 [0x03a8] diaB.x = 107 [0x006b] diaB.y = -432 [0xfe50] alef.x = 44 [0x002c] alef.y = 877 [0x036d] 801 [0x0321] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 175 [0x00af] diaA.y = 688 [0x02b0] diaB.x = 94 [0x005e] diaB.y = -427 [0xfe55] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 802 [0x0322] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 145 [0x0091] diaA.y = 949 [0x03b5] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 32 [0x0020] alef.y = 913 [0x0391] 803 [0x0323] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 427 [0x01ab] diaB.y = -363 [0xfe95] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 804 [0x0324] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 441 [0x01b9] above.y = 505 [0x01f9] below.x = 441 [0x01b9] below.y = -50 [0xffce] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 450 [0x01c2] diaB.y = -150 [0xff6a] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] diaDigitB.x = 450 [0x01c2] diaDigitB.y = -150 [0xff6a] 805 [0x0325] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 950 [0x03b6] diaB.x = 450 [0x01c2] diaB.y = -150 [0xff6a] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 806 [0x0326] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 1000 [0x03e8] diaB.x = 450 [0x01c2] diaB.y = -150 [0xff6a] alef.x = 145 [0x0091] alef.y = 776 [0x0308] 807 [0x0327] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 1100 [0x044c] diaB.x = 450 [0x01c2] diaB.y = -150 [0xff6a] alef.x = 145 [0x0091] alef.y = 808 [0x0328] 808 [0x0328] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 423 [0x01a7] diaB.y = -376 [0xfe88] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 809 [0x0329] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 432 [0x01b0] diaB.y = -521 [0xfdf7] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 810 [0x032a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 1150 [0x047e] diaB.x = 450 [0x01c2] diaB.y = -150 [0xff6a] alef.x = 145 [0x0091] alef.y = 852 [0x0354] 811 [0x032b] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 423 [0x01a7] diaB.y = -526 [0xfdf2] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 812 [0x032c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 423 [0x01a7] diaB.y = -530 [0xfdee] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 813 [0x032d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 950 [0x03b6] diaB.x = 427 [0x01ab] diaB.y = -530 [0xfdee] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 814 [0x032e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 355 [0x0163] diaA.y = 1265 [0x04f1] diaB.x = 432 [0x01b0] diaB.y = -555 [0xfdd5] alef.x = 145 [0x0091] alef.y = 848 [0x0350] 815 [0x032f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 800 [0x0320] diaB.x = 423 [0x01a7] diaB.y = -859 [0xfca5] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 816 [0x0330] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 800 [0x0320] diaB.x = 402 [0x0192] diaB.y = -692 [0xfd4c] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 817 [0x0331] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 355 [0x0163] diaA.y = 1265 [0x04f1] diaB.x = 423 [0x01a7] diaB.y = -376 [0xfe88] alef.x = 149 [0x0095] alef.y = 836 [0x0344] 818 [0x0332] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 355 [0x0163] diaA.y = 1265 [0x04f1] diaB.x = 450 [0x01c2] diaB.y = -150 [0xff6a] alef.x = 153 [0x0099] alef.y = 844 [0x034c] 819 [0x0333] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 410 [0x019a] diaA.y = 949 [0x03b5] diaB.x = 450 [0x01c2] diaB.y = -150 [0xff6a] alef.x = 141 [0x008d] alef.y = 780 [0x030c] 820 [0x0334] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 400 [0x0190] diaA.y = 750 [0x02ee] diaB.x = 406 [0x0196] diaB.y = -594 [0xfdae] alef.x = 149 [0x0095] alef.y = 684 [0x02ac] 821 [0x0335] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 500 [0x01f4] above.y = 429 [0x01ad] below.x = 504 [0x01f8] below.y = -45 [0xffd3] diaA.x = 390 [0x0186] diaA.y = 550 [0x0226] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] diaDigitA.x = 390 [0x0186] diaDigitA.y = 550 [0x0226] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 822 [0x0336] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 420 [0x01a4] diaA.y = 1020 [0x03fc] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 153 [0x0099] alef.y = 768 [0x0300] 823 [0x0337] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 450 [0x01c2] diaA.y = 800 [0x0320] diaB.x = 500 [0x01f4] diaB.y = -400 [0xfe70] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 824 [0x0338] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 573 [0x023d] diaB.x = 500 [0x01f4] diaB.y = -600 [0xfda8] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 825 [0x0339] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 410 [0x019a] diaA.y = 1000 [0x03e8] diaB.x = 500 [0x01f4] diaB.y = -600 [0xfda8] alef.x = 145 [0x0091] alef.y = 784 [0x0310] 826 [0x033a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 410 [0x019a] diaA.y = 1000 [0x03e8] diaB.x = 500 [0x01f4] diaB.y = -400 [0xfe70] alef.x = 145 [0x0091] alef.y = 772 [0x0304] 827 [0x033b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 355 [0x0163] diaA.y = 1490 [0x05d2] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 145 [0x0091] alef.y = 1126 [0x0466] 828 [0x033c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 355 [0x0163] diaA.y = 1265 [0x04f1] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 145 [0x0091] alef.y = 917 [0x0395] 829 [0x033d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 983 [0x03d7] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 772 [0x0304] 830 [0x033e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 402 [0x0192] diaA.y = 974 [0x03ce] diaB.x = 449 [0x01c1] diaB.y = -201 [0xff37] alef.x = 149 [0x0095] alef.y = 712 [0x02c8] 831 [0x033f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 597 [0x0255] above.y = 465 [0x01d1] below.x = 688 [0x02b0] below.y = -77 [0xffb3] diaA.x = 500 [0x01f4] diaA.y = 800 [0x0320] diaB.x = 402 [0x0192] diaB.y = -295 [0xfed9] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 832 [0x0340] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 900 [0x0384] diaB.x = 402 [0x0192] diaB.y = -295 [0xfed9] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 833 [0x0341] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 800 [0x0320] diaB.x = 402 [0x0192] diaB.y = -380 [0xfe84] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 834 [0x0342] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 1050 [0x041a] diaB.x = 402 [0x0192] diaB.y = -295 [0xfed9] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 835 [0x0343] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 500 [0x01f4] diaA.y = 900 [0x0384] diaB.x = 402 [0x0192] diaB.y = -359 [0xfe99] alef.x = 149 [0x0095] alef.y = 551 [0x0227] 836 [0x0344] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 491 [0x01eb] above.y = 575 [0x023f] below.x = 380 [0x017c] below.y = -50 [0xffce] diaA.x = 154 [0x009a] diaA.y = 1248 [0x04e0] diaB.x = 397 [0x018d] diaB.y = -150 [0xff6a] alef.y = 684 [0x02ac] 837 [0x0345] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 154 [0x009a] diaA.y = 1235 [0x04d3] diaB.x = 397 [0x018d] diaB.y = -150 [0xff6a] alef.y = 684 [0x02ac] 838 [0x0346] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 154 [0x009a] diaA.y = 1235 [0x04d3] diaB.x = 397 [0x018d] diaB.y = -150 [0xff6a] alef.y = 684 [0x02ac] 839 [0x0347] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 330 [0x014a] above.y = 648 [0x0288] below.x = 330 [0x014a] below.y = -50 [0xffce] diaA.x = 256 [0x0100] diaA.y = 842 [0x034a] diaB.x = 308 [0x0134] diaB.y = -150 [0xff6a] 840 [0x0348] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1085 [0x043d] diaB.x = 308 [0x0134] diaB.y = -150 [0xff6a] 841 [0x0349] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 1305 [0x0519] diaB.x = 308 [0x0134] diaB.y = -150 [0xff6a] 842 [0x034a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 256 [0x0100] diaA.y = 1085 [0x043d] diaB.x = 308 [0x0134] diaB.y = -397 [0xfe73] 843 [0x034b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 226 [0x00e2] diaA.y = 1094 [0x0446] diaB.x = 308 [0x0134] diaB.y = -150 [0xff6a] 844 [0x034c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 235 [0x00eb] diaA.y = 1213 [0x04bd] diaB.x = 308 [0x0134] diaB.y = -150 [0xff6a] 845 [0x034d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 252 [0x00fc] diaA.y = 1205 [0x04b5] diaB.x = 308 [0x0134] diaB.y = -150 [0xff6a] 846 [0x034e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 1102 [0x044e] diaB.x = 154 [0x009a] diaB.y = -150 [0xff6a] 847 [0x034f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 180 [0x00b4] above.y = 634 [0x027a] below.x = 180 [0x00b4] below.y = -50 [0xffce] diaA.x = 137 [0x0089] diaA.y = 846 [0x034e] diaB.x = 154 [0x009a] diaB.y = -150 [0xff6a] 848 [0x0350] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 850 [0x0352] diaB.x = 175 [0x00af] diaB.y = -414 [0xfe62] 849 [0x0351] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 1102 [0x044e] diaB.x = 162 [0x00a2] diaB.y = -414 [0xfe62] 850 [0x0352] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1200 [0x04b0] diaB.x = 150 [0x0096] diaB.y = -150 [0xff6a] 851 [0x0353] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 850 [0x0352] diaB.x = 171 [0x00ab] diaB.y = -573 [0xfdc3] 852 [0x0354] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1250 [0x04e2] diaB.x = 150 [0x0096] diaB.y = -150 [0xff6a] 853 [0x0355] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 850 [0x0352] diaB.x = 158 [0x009e] diaB.y = -423 [0xfe59] 854 [0x0356] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 850 [0x0352] diaB.x = 150 [0x0096] diaB.y = -560 [0xfdd0] 855 [0x0357] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 128 [0x0080] diaA.y = 850 [0x0352] diaB.x = 150 [0x0096] diaB.y = -150 [0xff6a] 856 [0x0358] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1100 [0x044c] diaB.x = 150 [0x0096] diaB.y = -150 [0xff6a] 857 [0x0359] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1100 [0x044c] diaB.x = 150 [0x0096] diaB.y = -150 [0xff6a] 858 [0x035a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1200 [0x04b0] diaB.x = 150 [0x0096] diaB.y = -150 [0xff6a] 859 [0x035b] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] above.x = 92 [0x005c] above.y = 791 [0x0317] below.x = 158 [0x009e] below.y = -48 [0xffd0] diaA.x = 150 [0x0096] diaA.y = 1050 [0x041a] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 48 [0x0030] alef.y = 929 [0x03a1] ring.x = 473 [0x01d9] ring.y = 873 [0x0369] 860 [0x035c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1231 [0x04cf] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 24 [0x0018] alef.y = 1126 [0x0466] 861 [0x035d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 141 [0x008d] diaA.y = 1393 [0x0571] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 4 alef.y = 1299 [0x0513] 862 [0x035e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1050 [0x041a] diaB.x = 154 [0x009a] diaB.y = -590 [0xfdb2] alef.x = 48 [0x0030] alef.y = 929 [0x03a1] 863 [0x035f] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] diaA.x = 162 [0x00a2] diaA.y = 1051 [0x041b] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 48 [0x0030] alef.y = 929 [0x03a1] 864 [0x0360] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 1047 [0x0417] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 48 [0x0030] alef.y = 929 [0x03a1] 865 [0x0361] *skipPasses* = 479 [0x01df / 1 1 1 1 1 0 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 1200 [0x04b0] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 36 [0x0024] alef.y = 1033 [0x0409] 866 [0x0362] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 1200 [0x04b0] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 36 [0x0024] alef.y = 1033 [0x0409] 867 [0x0363] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 100 [0x0064] diaA.y = 1400 [0x0578] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = -4 [0xfffc] alef.y = 1355 [0x054b] 868 [0x0364] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 1200 [0x04b0] diaB.x = 154 [0x009a] diaB.y = -419 [0xfe5d] alef.x = 36 [0x0024] alef.y = 1033 [0x0409] 869 [0x0365] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 200 [0x00c8] diaA.y = 1200 [0x04b0] diaB.x = 158 [0x009e] diaB.y = -547 [0xfddd] alef.x = 36 [0x0024] alef.y = 1033 [0x0409] 870 [0x0366] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 50 [0x0032] diaA.y = 1530 [0x05fa] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = -72 [0xffb8] alef.y = 1480 [0x05c8] 871 [0x0367] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 141 [0x008d] diaA.y = 1218 [0x04c2] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 28 [0x001c] alef.y = 1134 [0x046e] 872 [0x0368] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 103 [0x0067] diaA.y = 1372 [0x055c] diaB.x = 175 [0x00af] diaB.y = -175 [0xff51] alef.x = 20 [0x0014] alef.y = 1307 [0x051b] 873 [0x0369] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1050 [0x041a] diaB.x = 132 [0x0084] diaB.y = -560 [0xfdd0] alef.x = 48 [0x0030] alef.y = 917 [0x0395] 874 [0x036a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 390 [0x0186] diaA.y = 1000 [0x03e8] diaB.x = 600 [0x0258] diaB.y = -150 [0xff6a] alef.x = 169 [0x00a9] alef.y = 868 [0x0364] 875 [0x036b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 120 [0x0078] above.y = 1111 [0x0457] below.x = 120 [0x0078] below.y = -50 [0xffce] diaA.x = 120 [0x0078] diaA.y = 1209 [0x04b9] diaB.x = 100 [0x0064] diaB.y = -150 [0xff6a] alef.x = 30 [0x001e] alef.y = 750 [0x02ee] through.x = 137 [0x0089] through.y = 691 [0x02b3] 876 [0x036c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1545 [0x0609] diaB.x = 100 [0x0064] diaB.y = -150 [0xff6a] alef.x = 30 [0x001e] alef.y = 650 [0x028a] 877 [0x036d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1530 [0x05fa] diaB.x = 100 [0x0064] diaB.y = -150 [0xff6a] alef.x = 30 [0x001e] alef.y = 650 [0x028a] 878 [0x036e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1710 [0x06ae] diaB.x = 100 [0x0064] diaB.y = -150 [0xff6a] alef.x = 30 [0x001e] alef.y = 650 [0x028a] 879 [0x036f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 128 [0x0080] diaA.y = 1201 [0x04b1] diaB.x = 120 [0x0078] diaB.y = -594 [0xfdae] alef.x = 30 [0x001e] alef.y = 750 [0x02ee] 880 [0x0370] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 30 [0x001e] diaA.y = 1718 [0x06b6] diaB.x = 100 [0x0064] diaB.y = -150 [0xff6a] alef.x = 30 [0x001e] alef.y = 500 [0x01f4] 881 [0x0371] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 132 [0x0084] diaA.y = 1213 [0x04bd] diaB.x = 100 [0x0064] diaB.y = -150 [0xff6a] alef.x = 30 [0x001e] alef.y = 950 [0x03b6] 882 [0x0372] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] above.x = 243 [0x00f3] above.y = 509 [0x01fd] below.x = 323 [0x0143] diaA.x = 248 [0x00f8] diaA.y = 684 [0x02ac] diaB.x = 300 [0x012c] diaB.y = -150 [0xff6a] alef.x = 88 [0x0058] alef.y = 591 [0x024f] 883 [0x0373] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 218 [0x00da] diaA.y = 944 [0x03b0] diaB.x = 300 [0x012c] diaB.y = -150 [0xff6a] alef.x = 76 [0x004c] alef.y = 764 [0x02fc] 884 [0x0374] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 248 [0x00f8] diaA.y = 684 [0x02ac] diaB.x = 300 [0x012c] diaB.y = -300 [0xfed4] alef.x = 88 [0x0058] alef.y = 591 [0x024f] 885 [0x0375] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1000 [0x03e8] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 36 [0x0024] alef.y = 861 [0x035d] 886 [0x0376] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1000 [0x03e8] diaB.x = 115 [0x0073] diaB.y = -423 [0xfe59] alef.x = 40 [0x0028] alef.y = 873 [0x0369] 887 [0x0377] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1000 [0x03e8] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 40 [0x0028] alef.y = 861 [0x035d] 888 [0x0378] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 94 [0x005e] diaA.y = 1248 [0x04e0] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = -16 [0xfff0] alef.y = 840 [0x0348] 889 [0x0379] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1000 [0x03e8] diaB.x = 128 [0x0080] diaB.y = -299 [0xfed5] alef.x = 36 [0x0024] alef.y = 848 [0x0350] 890 [0x037a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 167 [0x00a7] diaA.y = 846 [0x034e] diaB.x = 103 [0x0067] diaB.y = -564 [0xfdcc] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 891 [0x037b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1000 [0x03e8] diaB.x = 111 [0x006f] diaB.y = -423 [0xfe59] alef.x = 40 [0x0028] alef.y = 861 [0x035d] 892 [0x037c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 77 [0x004d] diaA.y = 1474 [0x05c2] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = -16 [0xfff0] alef.y = 1098 [0x044a] 893 [0x037d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 115 [0x0073] diaA.y = 1355 [0x054b] diaB.x = 105 [0x0069] diaB.y = -249 [0xff07] alef.x = 24 [0x0018] alef.y = 1214 [0x04be] 894 [0x037e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 291 [0x0123] above.y = 655 [0x028f] below.x = 315 [0x013b] below.y = -50 [0xffce] diaA.x = 300 [0x012c] diaA.y = 855 [0x0357] diaB.x = 295 [0x0127] diaB.y = -167 [0xff59] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 895 [0x037f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 240 [0x00f0] diaA.y = 1050 [0x041a] diaB.x = 295 [0x0127] diaB.y = -167 [0xff59] alef.x = 48 [0x0030] alef.y = 925 [0x039d] 896 [0x0380] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 270 [0x010e] diaA.y = 840 [0x0348] diaB.x = 295 [0x0127] diaB.y = -167 [0xff59] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 897 [0x0381] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 157 [0x009d] diaA.y = 684 [0x02ac] diaB.x = 145 [0x0091] diaB.y = -457 [0xfe37] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 898 [0x0382] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 615 [0x0267] component.base.right = 725 [0x02d5] component.hamza.top = 984 [0x03d8] component.hamza.bottom = 615 [0x0267] component.hamza.right = 725 [0x02d5] diaA.x = 248 [0x00f8] diaA.y = 1081 [0x0439] diaB.x = 295 [0x0127] diaB.y = -167 [0xff59] alef.x = 48 [0x0030] alef.y = 925 [0x039d] 899 [0x0383] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 157 [0x009d] diaA.y = 684 [0x02ac] diaB.x = 145 [0x0091] diaB.y = -457 [0xfe37] alef.x = 40 [0x0028] alef.y = 684 [0x02ac] 900 [0x0384] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] component.base = 34 [0x0022] component.hamza = 38 [0x0026] component.base.top = 381 [0x017d] component.base.bottom = -322 [0xfebe] component.base.right = 313 [0x0139] component.hamza.top = 804 [0x0324] component.hamza.bottom = 381 [0x017d] component.hamza.right = 313 [0x0139] diaA.x = 149 [0x0095] diaA.y = 900 [0x0384] diaB.x = 145 [0x0091] diaB.y = -457 [0xfe37] alef.x = 44 [0x002c] alef.y = 820 [0x0334] 901 [0x0385] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 135 [0x0087] diaA.y = 1365 [0x0555] diaB.x = 150 [0x0096] diaB.y = 885 [0x0375] 902 [0x0386] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 903 [0x0387] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 904 [0x0388] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 90 [0x005a] diaA.y = 1425 [0x0591] diaA_.x = 120 [0x0078] diaA_.y = 1020 [0x03fc] 905 [0x0389] *skipPasses* = 429 [0x01ad / 1 0 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 90 [0x005a] diaA.y = 1455 [0x05af] diaA_.x = 180 [0x00b4] diaA_.y = 1005 [0x03ed] 906 [0x038a] *skipPasses* = 125 [0x007d / 1 0 1 1 1 1 1 0 0] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaB.x = 165 [0x00a5] diaB.y = -975 [0xfc31] diaB_.x = 141 [0x008d] diaB_.y = -560 [0xfdd0] 907 [0x038b] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 90 [0x005a] diaA.y = 1290 [0x050a] diaA_.x = 120 [0x0078] diaA_.y = 1020 [0x03fc] 908 [0x038c] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 105 [0x0069] diaA.y = 1515 [0x05eb] diaA_.x = 150 [0x0096] diaA_.y = 1020 [0x03fc] 909 [0x038d] *skipPasses* = 125 [0x007d / 1 0 1 1 1 1 1 0 0] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaB.x = 165 [0x00a5] diaB.y = -810 [0xfcd6] diaB_.x = 145 [0x0091] diaB_.y = -560 [0xfdd0] 910 [0x038e] *skipPasses* = 443 [0x01bb / 1 1 0 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 150 [0x0096] diaA.y = 1365 [0x0555] diaA_.x = 195 [0x00c3] diaA_.y = 960 [0x03c0] 911 [0x038f] *skipPasses* = 429 [0x01ad / 1 0 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 90 [0x005a] diaA.y = 1425 [0x0591] diaA_.x = 120 [0x0078] diaA_.y = 930 [0x03a2] 912 [0x0390] *skipPasses* = 189 [0x00bd / 1 0 1 1 1 1 0 1 0] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 90 [0x005a] diaA.y = 1305 [0x0519] diaA_.x = 120 [0x0078] diaA_.y = 1110 [0x0456] 913 [0x0391] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 60 [0x003c] diaA.y = 1410 [0x0582] diaA_.x = 120 [0x0078] diaA_.y = 1020 [0x03fc] 914 [0x0392] *skipPasses* = 383 [0x017f / 1 1 1 1 1 1 1 0 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaB.x = 135 [0x0087] diaB.y = -450 [0xfe3e] dia2B_.x = 105 [0x0069] dia2B_.y = -120 [0xff88] diaB_.x = 105 [0x0069] diaB_.y = -120 [0xff88] 915 [0x0393] *skipPasses* = 383 [0x017f / 1 1 1 1 1 1 1 0 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaB.x = 92 [0x005c] diaB.y = -591 [0xfdb1] diaB_.x = 92 [0x005c] diaB_.y = -18 [0xffee] 916 [0x0394] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 120 [0x0078] diaA.y = 1450 [0x05aa] diaA_.x = 120 [0x0078] diaA_.y = 930 [0x03a2] 917 [0x0395] *skipPasses* = 189 [0x00bd / 1 0 1 1 1 1 0 1 0] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 160 [0x00a0] diaA.y = 1290 [0x050a] diaA_.x = 160 [0x00a0] diaA_.y = 900 [0x0384] 918 [0x0396] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 90 [0x005a] diaA.y = 1290 [0x050a] diaA_.x = 207 [0x00cf] diaA_.y = 969 [0x03c9] above_.x = 110 [0x006e] above_.y = 1018 [0x03fa] 919 [0x0397] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 197 [0x00c5] diaA.y = 1275 [0x04fb] diaA_.x = 203 [0x00cb] diaA_.y = 941 [0x03ad] 920 [0x0398] *skipPasses* = 189 [0x00bd / 1 0 1 1 1 1 0 1 0] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 209 [0x00d1] diaA.y = 1271 [0x04f7] diaA_.x = 207 [0x00cf] diaA_.y = 949 [0x03b5] 921 [0x0399] *skipPasses* = 381 [0x017d / 1 0 1 1 1 1 1 0 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaB.x = 164 [0x00a4] diaB.y = -211 [0xff2d] diaB_.x = 164 [0x00a4] diaB_.y = 203 [0x00cb] 922 [0x039a] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 106 [0x006a] diaA.y = 1516 [0x05ec] diaA_.x = 150 [0x0096] diaA_.y = 1020 [0x03fc] 923 [0x039b] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 105 [0x0069] diaA.y = 1319 [0x0527] diaA_.x = 105 [0x0069] diaA_.y = 945 [0x03b1] 924 [0x039c] *skipPasses* = 429 [0x01ad / 1 0 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = 180 [0x00b4] diaA.y = 1230 [0x04ce] diaA_.x = 180 [0x00b4] diaA_.y = 660 [0x0294] alef_.x = 180 [0x00b4] alef_.y = 630 [0x0276] 925 [0x039d] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 389 [0x0185] diaA.y = 1136 [0x0470] diaA_.x = 450 [0x01c2] diaA_.y = 510 [0x01fe] 926 [0x039e] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 927 [0x039f] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 928 [0x03a0] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 929 [0x03a1] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 930 [0x03a2] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 931 [0x03a3] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 932 [0x03a4] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 933 [0x03a5] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 934 [0x03a6] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 935 [0x03a7] *skipPasses* = 429 [0x01ad / 1 0 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA.x = -15 [0xfff1] diaA.y = 1270 [0x04f6] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 936 [0x03a8] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 1020 [0x03fc] 937 [0x03a9] *skipPasses* = 381 [0x017d / 1 0 1 1 1 1 1 0 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] dia2B_.x = 100 [0x0064] dia2B_.y = -150 [0xff6a] diaB_.y = -150 [0xff6a] 938 [0x03aa] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 939 [0x03ab] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 940 [0x03ac] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 941 [0x03ad] *skipPasses* = 381 [0x017d / 1 0 1 1 1 1 1 0 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] dia2B_.y = -150 [0xff6a] diaB_.y = -200 [0xff38] 942 [0x03ae] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 943 [0x03af] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = -15 [0xfff1] diaA_.y = 915 [0x0393] 944 [0x03b0] *skipPasses* = 381 [0x017d / 1 0 1 1 1 1 1 0 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] dia2B_.y = -150 [0xff6a] diaB_.y = -280 [0xfee8] 945 [0x03b1] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 digit.x = 425 [0x01a9] 946 [0x03b2] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 digit.x = 1275 [0x04fb] 947 [0x03b3] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 digit.x = 700 [0x02bc] 948 [0x03b4] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 digit.x = 300 [0x012c] 949 [0x03b5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 291 [0x0123] diaA.y = 1120 [0x0460] diaB.x = 291 [0x0123] diaB.y = -150 [0xff6a] 950 [0x03b6] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 8 diaA.x = 270 [0x010e] diaA.y = 660 [0x0294] diaB.x = 270 [0x010e] diaB.y = -195 [0xff3d] 951 [0x03b7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 275 [0x0113] diaA.y = 381 [0x017d] diaB.x = 281 [0x0119] diaB.y = -497 [0xfe0f] 952 [0x03b8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 953 [0x03b9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 954 [0x03ba] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 294 [0x0126] above.y = 692 [0x02b4] below.x = 456 [0x01c8] below.y = 104 [0x0068] diaA.x = 270 [0x010e] diaA.y = 900 [0x0384] diaB.x = 300 [0x012c] diaB.y = -840 [0xfcb8] 955 [0x03bb] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = 540 [0x021c] diaA_.y = 998 [0x03e6] above_.x = 540 [0x021c] above_.y = 998 [0x03e6] 956 [0x03bc] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = 514 [0x0202] diaA_.y = 996 [0x03e4] above_.x = 514 [0x0202] above_.y = 996 [0x03e4] 957 [0x03bd] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = 526 [0x020e] diaA_.y = 978 [0x03d2] above_.x = 526 [0x020e] above_.y = 978 [0x03d2] 958 [0x03be] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = 508 [0x01fc] diaA_.y = 986 [0x03da] above_.x = 508 [0x01fc] above_.y = 986 [0x03da] 959 [0x03bf] *skipPasses* = 189 [0x00bd / 1 0 1 1 1 1 0 1 0] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = 270 [0x010e] diaA_.y = 1035 [0x040b] 960 [0x03c0] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 16 [0x0010] diaA_.x = 301 [0x012d] diaA_.y = 1035 [0x040b] 961 [0x03c1] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 270 [0x010e] diaA.y = 930 [0x03a2] diaB.x = 270 [0x010e] diaB.y = -195 [0xff3d] 962 [0x03c2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 275 [0x0113] diaA.y = 582 [0x0246] diaB.x = 272 [0x0110] diaB.y = -473 [0xfe27] 963 [0x03c3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 964 [0x03c4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 300 [0x012c] diaA.y = 1185 [0x04a1] diaB.x = 300 [0x012c] diaB.y = -195 [0xff3d] 965 [0x03c5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 6 966 [0x03c6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 967 [0x03c7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 968 [0x03c8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 435 [0x01b3] diaA.y = 990 [0x03de] diaB.x = 420 [0x01a4] diaB.y = -120 [0xff88] 969 [0x03c9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 diaA.x = 350 [0x015e] diaA.y = 790 [0x0316] diaB.x = 250 [0x00fa] diaB.y = -120 [0xff88] 970 [0x03ca] *skipPasses* = 487 [0x01e7 / 1 1 1 0 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 465 [0x01d1] 971 [0x03cb] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 465 [0x01d1] 972 [0x03cc] *skipPasses* = 503 [0x01f7 / 1 1 1 0 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 465 [0x01d1] 973 [0x03cd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 974 [0x03ce] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 390 [0x0186] diaA.y = 1200 [0x04b0] diaB.x = 300 [0x012c] diaB.y = -120 [0xff88] 975 [0x03cf] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 976 [0x03d0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 977 [0x03d1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 978 [0x03d2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 3 979 [0x03d3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 980 [0x03d4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 981 [0x03d5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 982 [0x03d6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 983 [0x03d7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 984 [0x03d8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 985 [0x03d9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 986 [0x03da] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 987 [0x03db] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 988 [0x03dc] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 989 [0x03dd] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 990 [0x03de] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 991 [0x03df] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 992 [0x03e0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 993 [0x03e1] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 994 [0x03e2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 995 [0x03e3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 996 [0x03e4] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 997 [0x03e5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 998 [0x03e6] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 999 [0x03e7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 7 1000 [0x03e8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 1001 [0x03e9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] directionality = 4 1002 [0x03ea] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1003 [0x03eb] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1004 [0x03ec] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1005 [0x03ed] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1006 [0x03ee] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1007 [0x03ef] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1008 [0x03f0] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1009 [0x03f1] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1010 [0x03f2] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1011 [0x03f3] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 450 [0x01c2] 1012 [0x03f4] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1013 [0x03f5] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1014 [0x03f6] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1015 [0x03f7] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1016 [0x03f8] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1017 [0x03f9] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1018 [0x03fa] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1019 [0x03fb] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1020 [0x03fc] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1021 [0x03fd] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1022 [0x03fe] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1023 [0x03ff] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1024 [0x0400] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1025 [0x0401] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1026 [0x0402] *skipPasses* = 431 [0x01af / 1 1 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1027 [0x0403] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 451 [0x01c3] 1028 [0x0404] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1029 [0x0405] *skipPasses* = 431 [0x01af / 1 1 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1030 [0x0406] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1031 [0x0407] *skipPasses* = 431 [0x01af / 1 1 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1032 [0x0408] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 451 [0x01c3] 1033 [0x0409] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1034 [0x040a] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 450 [0x01c2] 1035 [0x040b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1036 [0x040c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1037 [0x040d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1038 [0x040e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1039 [0x040f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1040 [0x0410] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1041 [0x0411] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1042 [0x0412] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1043 [0x0413] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1044 [0x0414] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 319 [0x013f] 1045 [0x0415] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1046 [0x0416] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1047 [0x0417] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1048 [0x0418] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1049 [0x0419] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1050 [0x041a] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1051 [0x041b] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1052 [0x041c] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1053 [0x041d] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1054 [0x041e] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1055 [0x041f] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1056 [0x0420] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1057 [0x0421] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1058 [0x0422] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1059 [0x0423] *skipPasses* = 431 [0x01af / 1 1 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1060 [0x0424] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 320 [0x0140] 1061 [0x0425] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1062 [0x0426] *skipPasses* = 431 [0x01af / 1 1 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1063 [0x0427] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1064 [0x0428] *skipPasses* = 431 [0x01af / 1 1 1 1 0 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1065 [0x0429] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 320 [0x0140] 1066 [0x042a] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1067 [0x042b] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] directionality = 7 digit.x = 319 [0x013f] 1068 [0x042c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1069 [0x042d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1070 [0x042e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1071 [0x042f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1072 [0x0430] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1073 [0x0431] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1074 [0x0432] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1075 [0x0433] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1076 [0x0434] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1077 [0x0435] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1078 [0x0436] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1079 [0x0437] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1080 [0x0438] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1081 [0x0439] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1082 [0x043a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1083 [0x043b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1084 [0x043c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1085 [0x043d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1086 [0x043e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1087 [0x043f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1088 [0x0440] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1089 [0x0441] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1090 [0x0442] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1091 [0x0443] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1092 [0x0444] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1093 [0x0445] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1094 [0x0446] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1095 [0x0447] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1096 [0x0448] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1097 [0x0449] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1098 [0x044a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1099 [0x044b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1100 [0x044c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1101 [0x044d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1102 [0x044e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1103 [0x044f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1104 [0x0450] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 120 [0x0078] diaA.y = 1710 [0x06ae] diaA_.x = 165 [0x00a5] diaA_.y = 990 [0x03de] 1105 [0x0451] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 90 [0x005a] diaA.y = 1740 [0x06cc] diaA_.x = 165 [0x00a5] diaA_.y = 990 [0x03de] 1106 [0x0452] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] component.kasra = 42 [0x002a] component.shadda = 46 [0x002e] component.kasra.top = 1716 [0x06b4] component.kasra.bottom = 1356 [0x054c] component.kasra.left = -25 [0xffe7] component.kasra.right = 342 [0x0156] component.shadda.top = 1356 [0x054c] component.shadda.bottom = 997 [0x03e5] component.shadda.left = -25 [0xffe7] component.shadda.right = 342 [0x0156] diaA.x = 90 [0x005a] diaA.y = 1740 [0x06cc] diaA_.x = 135 [0x0087] diaA_.y = 1020 [0x03fc] 1107 [0x0453] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 90 [0x005a] diaA.y = 1530 [0x05fa] diaA_.x = 165 [0x00a5] diaA_.y = 990 [0x03de] 1108 [0x0454] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 90 [0x005a] diaA.y = 1695 [0x069f] diaA_.x = 165 [0x00a5] diaA_.y = 990 [0x03de] 1109 [0x0455] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] component.kasra = 42 [0x002a] component.shadda = 46 [0x002e] component.kasra.top = 1552 [0x0610] component.kasra.bottom = 1274 [0x04fa] component.kasra.left = -25 [0xffe7] component.kasra.right = 342 [0x0156] component.shadda.top = 1274 [0x04fa] component.shadda.bottom = 997 [0x03e5] component.shadda.left = -25 [0xffe7] component.shadda.right = 342 [0x0156] diaA.x = 90 [0x005a] diaA.y = 1560 [0x0618] diaA_.x = 150 [0x0096] diaA_.y = 975 [0x03cf] 1110 [0x0456] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 62 [0x003e] diaA.y = 1534 [0x05fe] diaA_.x = 120 [0x0078] diaA_.y = 1020 [0x03fc] 1111 [0x0457] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 44 [0x002c] diaA.y = 1744 [0x06d0] diaA_.x = 120 [0x0078] diaA_.y = 1020 [0x03fc] 1112 [0x0458] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 90 [0x005a] diaA.y = 1710 [0x06ae] diaA_.x = 180 [0x00b4] diaA_.y = 975 [0x03cf] 1113 [0x0459] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 160 [0x00a0] diaA.y = 1320 [0x0528] diaA_.x = 160 [0x00a0] diaA_.y = 900 [0x0384] 1114 [0x045a] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 160 [0x00a0] diaA.y = 1320 [0x0528] diaA_.x = 160 [0x00a0] diaA_.y = 930 [0x03a2] 1115 [0x045b] *skipPasses* = 445 [0x01bd / 1 0 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.y = 1540 [0x0604] diaA_.x = 150 [0x0096] diaA_.y = 1020 [0x03fc] 1116 [0x045c] *skipPasses* = 255 [0x00ff / 1 1 1 1 1 1 1 1 0] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 790 [0x0316] diaB.x = 111 [0x006f] diaB.y = -188 [0xff44] dbgAw = 250 [0x00fa] dbgBbW = 250 [0x00fa] 1117 [0x045d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1118 [0x045e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1119 [0x045f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1120 [0x0460] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1121 [0x0461] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1122 [0x0462] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1123 [0x0463] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1124 [0x0464] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1125 [0x0465] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1126 [0x0466] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1127 [0x0467] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1128 [0x0468] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1129 [0x0469] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1130 [0x046a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1131 [0x046b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1132 [0x046c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1133 [0x046d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1134 [0x046e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1135 [0x046f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1136 [0x0470] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1137 [0x0471] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1138 [0x0472] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1139 [0x0473] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1140 [0x0474] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1141 [0x0475] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1142 [0x0476] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1143 [0x0477] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1144 [0x0478] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1145 [0x0479] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1146 [0x047a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1147 [0x047b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1148 [0x047c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1149 [0x047d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1150 [0x047e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1151 [0x047f] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1152 [0x0480] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1153 [0x0481] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] digit.x = 245 [0x00f5] 1154 [0x0482] *skipPasses* = 495 [0x01ef / 1 1 1 1 0 1 1 1 1] breakweight = 30 [0x001e] digit.x = 206 [0x00ce] 1155 [0x0483] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 245 [0x00f5] 1156 [0x0484] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 206 [0x00ce] 1157 [0x0485] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 245 [0x00f5] 1158 [0x0486] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 206 [0x00ce] 1159 [0x0487] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 200 [0x00c8] 1160 [0x0488] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 200 [0x00c8] 1161 [0x0489] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 1050 [0x041a] 1162 [0x048a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 825 [0x0339] 1163 [0x048b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 600 [0x0258] 1164 [0x048c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 475 [0x01db] 1165 [0x048d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 75 [0x004b] 1166 [0x048e] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] digit.x = 75 [0x004b] 1167 [0x048f] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] above.x = 156 [0x009c] above.y = 1195 [0x04ab] below.x = 116 [0x0074] below.y = -58 [0xffc6] diaA.x = 179 [0x00b3] diaA.y = 1278 [0x04fe] diaB.x = 65 [0x0041] diaB.y = -100 [0xff9c] alef.x = 65 [0x0041] alef.y = 825 [0x0339] through.x = 168 [0x00a8] through.y = 777 [0x0309] 1168 [0x0490] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 154 [0x009a] diaA.y = 1569 [0x0621] diaB.x = 65 [0x0041] diaB.y = -100 [0xff9c] alef.x = 65 [0x0041] alef.y = 825 [0x0339] 1169 [0x0491] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 1540 [0x0604] diaB.x = 65 [0x0041] diaB.y = -100 [0xff9c] alef.x = 65 [0x0041] alef.y = 825 [0x0339] 1170 [0x0492] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 125 [0x007d] diaA.y = 1700 [0x06a4] diaB.x = 65 [0x0041] diaB.y = -100 [0xff9c] alef.x = 65 [0x0041] alef.y = 825 [0x0339] 1171 [0x0493] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 1278 [0x04fe] diaB.x = 121 [0x0079] diaB.y = -568 [0xfdc8] alef.x = 65 [0x0041] alef.y = 825 [0x0339] 1172 [0x0494] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 73 [0x0049] diaA.y = 1862 [0x0746] diaB.x = 65 [0x0041] diaB.y = -100 [0xff9c] alef.x = -55 [0xffc9] alef.y = 1514 [0x05ea] 1173 [0x0495] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 179 [0x00b3] diaA.y = 1278 [0x04fe] diaB.x = 65 [0x0041] diaB.y = -100 [0xff9c] alef.x = 66 [0x0042] alef.y = 931 [0x03a3] 1174 [0x0496] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.y = 1459 [0x05b3] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -26 [0xffe6] alef.y = 1437 [0x059d] dia2B.x = 200 [0x00c8] dia2B.y = -136 [0xff78] entry.x = 535 [0x0217] 1175 [0x0497] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.y = 1600 [0x0640] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -128 [0xff80] alef.y = 1500 [0x05dc] dia2B.x = 200 [0x00c8] dia2B.y = -136 [0xff78] entry.x = 535 [0x0217] 1176 [0x0498] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.y = 1218 [0x04c2] diaB.x = 455 [0x01c7] diaB.y = -462 [0xfe32] alef.y = 1155 [0x0483] dia2B.x = 455 [0x01c7] dia2B.y = -462 [0xfe32] entry.x = 535 [0x0217] 1177 [0x0499] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 46 [0x002e] above.y = 1185 [0x04a1] below.x = 446 [0x01be] below.y = -57 [0xffc7] diaA.y = 1218 [0x04c2] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.y = 1155 [0x0483] dia2B.x = 200 [0x00c8] dia2B.y = -136 [0xff78] entry.x = 535 [0x0217] 1178 [0x049a] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.y = 1600 [0x0640] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -136 [0xff78] alef.y = 1423 [0x058f] dia2B.x = 200 [0x00c8] dia2B.y = -136 [0xff78] entry.x = 535 [0x0217] 1179 [0x049b] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.y = 1218 [0x04c2] diaB.x = 462 [0x01ce] diaB.y = -484 [0xfe1c] alef.y = 1155 [0x0483] dia2B.x = 462 [0x01ce] dia2B.y = -484 [0xfe1c] entry.x = 535 [0x0217] 1180 [0x049c] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 18 [0x0012] diaA.y = 1551 [0x060f] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -40 [0xffd8] alef.y = 1300 [0x0514] dia2B.x = 200 [0x00c8] dia2B.y = -136 [0xff78] entry.x = 535 [0x0217] 1181 [0x049d] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.y = 1500 [0x05dc] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -100 [0xff9c] alef.y = 1400 [0x0578] dia2B.x = 200 [0x00c8] dia2B.y = -136 [0xff78] entry.x = 535 [0x0217] 1182 [0x049e] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] above.x = 230 [0x00e6] above.y = 1020 [0x03fc] below.x = 255 [0x00ff] below.y = -68 [0xffbc] diaA.x = 220 [0x00dc] diaA.y = 1035 [0x040b] diaB.x = 250 [0x00fa] diaB.y = -100 [0xff9c] alef.x = 100 [0x0064] alef.y = 700 [0x02bc] through.x = 223 [0x00df] through.y = 644 [0x0284] exit.x = 150 [0x0096] exit.y = 250 [0x00fa] 1183 [0x049f] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 235 [0x00eb] diaA.y = 1400 [0x0578] diaB.x = 250 [0x00fa] diaB.y = -100 [0xff9c] alef.x = 100 [0x0064] alef.y = 700 [0x02bc] exit.x = 150 [0x0096] exit.y = 250 [0x00fa] 1184 [0x04a0] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 216 [0x00d8] diaA.y = 1349 [0x0545] diaB.x = 250 [0x00fa] diaB.y = -100 [0xff9c] alef.x = 100 [0x0064] alef.y = 700 [0x02bc] exit.x = 150 [0x0096] exit.y = 250 [0x00fa] 1185 [0x04a1] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 183 [0x00b7] diaA.y = 1532 [0x05fc] diaB.x = 250 [0x00fa] diaB.y = -100 [0xff9c] alef.x = 18 [0x0012] alef.y = 1239 [0x04d7] exit.x = 150 [0x0096] exit.y = 250 [0x00fa] 1186 [0x04a2] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 220 [0x00dc] diaA.y = 1035 [0x040b] diaB.x = 253 [0x00fd] diaB.y = -572 [0xfdc4] alef.x = 100 [0x0064] alef.y = 700 [0x02bc] exit.x = 150 [0x0096] exit.y = 250 [0x00fa] 1187 [0x04a3] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 143 [0x008f] diaA.y = 1661 [0x067d] diaB.x = 250 [0x00fa] diaB.y = -100 [0xff9c] alef.x = 15 [0x000f] alef.y = 1360 [0x0550] exit.x = 150 [0x0096] exit.y = 250 [0x00fa] 1188 [0x04a4] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 220 [0x00dc] diaA.y = 1035 [0x040b] diaB.x = 250 [0x00fa] diaB.y = -100 [0xff9c] alef.x = 100 [0x0064] alef.y = 821 [0x0335] exit.x = 150 [0x0096] exit.y = 250 [0x00fa] 1189 [0x04a5] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 33 [0x0021] diaA.y = 1173 [0x0495] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -84 [0xffac] alef.y = 1166 [0x048e] dia2B.x = 300 [0x012c] dia2B.y = -154 [0xff66] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1190 [0x04a6] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.y = 1335 [0x0537] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -100 [0xff9c] alef.y = 1280 [0x0500] dia2B.x = 300 [0x012c] dia2B.y = -154 [0xff66] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1191 [0x04a7] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 47 [0x002f] diaA.y = 949 [0x03b5] diaB.x = 455 [0x01c7] diaB.y = -484 [0xfe1c] alef.y = 1020 [0x03fc] dia2B.x = 455 [0x01c7] dia2B.y = -484 [0xfe1c] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1192 [0x04a8] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] above.x = 48 [0x0030] above.y = 927 [0x039f] below.x = 438 [0x01b6] below.y = -89 [0xffa7] diaA.x = 47 [0x002f] diaA.y = 949 [0x03b5] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.y = 1020 [0x03fc] dia2B.x = 300 [0x012c] dia2B.y = -154 [0xff66] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1193 [0x04a9] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 26 [0x001a] diaA.y = 1316 [0x0524] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -100 [0xff9c] alef.y = 1200 [0x04b0] dia2B.x = 300 [0x012c] dia2B.y = -154 [0xff66] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1194 [0x04aa] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 47 [0x002f] diaA.y = 949 [0x03b5] diaB.x = 480 [0x01e0] diaB.y = -521 [0xfdf7] alef.y = 1020 [0x03fc] dia2B.x = 480 [0x01e0] dia2B.y = -521 [0xfdf7] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1195 [0x04ab] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 33 [0x0021] diaA.y = 1236 [0x04d4] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -40 [0xffd8] alef.y = 1200 [0x04b0] dia2B.x = 300 [0x012c] dia2B.y = -154 [0xff66] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1196 [0x04ac] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] diaA.x = 37 [0x0025] diaA.y = 1243 [0x04db] diaB.x = 420 [0x01a4] diaB.y = -100 [0xff9c] alef.x = -84 [0xffac] alef.y = 1159 [0x0487] dia2B.x = 300 [0x012c] dia2B.y = -154 [0xff66] entry.x = 650 [0x028a] entry.y = 250 [0x00fa] 1197 [0x04ad] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1198 [0x04ae] *actualForPseudo* = 352 [0x0160 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1199 [0x04af] *actualForPseudo* = 351 [0x015f / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1200 [0x04b0] *actualForPseudo* = 364 [0x016c / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1201 [0x04b1] *actualForPseudo* = 303 [0x012f / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1202 [0x04b2] *actualForPseudo* = 354 [0x0162 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1203 [0x04b3] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1204 [0x04b4] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1205 [0x04b5] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1206 [0x04b6] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1207 [0x04b7] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1208 [0x04b8] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1209 [0x04b9] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1210 [0x04ba] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1211 [0x04bb] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1212 [0x04bc] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1213 [0x04bd] *actualForPseudo* = 35 [0x0023 / ] *skipPasses* = 510 [0x01fe / 0 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] 1214 [0x04be] *actualForPseudo* = 1057 [0x0421 / ] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 150 [0x0096] diaA.y = 603 [0x025b] diaDigitA_.x = 150 [0x0096] diaDigitA_.y = 185 [0x00b9] 1215 [0x04bf] *actualForPseudo* = 1058 [0x0422 / ] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 164 [0x00a4] diaA.y = 611 [0x0263] diaDigitA_.x = 164 [0x00a4] diaDigitA_.y = 193 [0x00c1] 1216 [0x04c0] *actualForPseudo* = 1059 [0x0423 / ] *skipPasses* = 431 [0x01af / 1 1 1 1 0 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 164 [0x00a4] diaA.y = 648 [0x0288] diaDigitA_.x = 164 [0x00a4] diaDigitA_.y = 181 [0x00b5] 1217 [0x04c1] *actualForPseudo* = 1059 [0x0423 / ] *skipPasses* = 367 [0x016f / 1 1 1 1 0 1 1 0 1] breakweight = 30 [0x001e] diaB.x = 164 [0x00a4] diaB.y = 181 [0x00b5] diaDigitB_.x = 164 [0x00a4] diaDigitB_.y = 648 [0x0288] 1218 [0x04c2] *actualForPseudo* = 1060 [0x0424 / ] *skipPasses* = 447 [0x01bf / 1 1 1 1 1 1 0 1 1] breakweight = 30 [0x001e] diaA.x = 165 [0x00a5] diaA.y = 608 [0x0260] diaDigitA_.x = 165 [0x00a5] diaDigitA_.y = 212 [0x00d4] 1219 [0x04c3] *actualForPseudo* = 1060 [0x0424 / ] *skipPasses* = 383 [0x017f / 1 1 1 1 1 1 1 0 1] breakweight = 30 [0x001e] diaB.x = 165 [0x00a5] diaB.y = 212 [0x00d4] diaDigitB_.x = 165 [0x00a5] diaDigitB_.y = 608 [0x0260] 1220 [0x04c4] *skipPasses* = 511 [0x01ff / 1 1 1 1 1 1 1 1 1] breakweight = 30 [0x001e] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/dbg_parsetree.txt000066400000000000000000000005761411153030700263110ustar00rootroot00000000000000PARSE TREE Ztop(100) OP_EQ(4): '=' [line #3] IDENT(13): 'ScriptDirection' [line #3] IDENT(13): 'ScriptDirection' [line #3] OP_EQ(4): '=' [line #3] IDENT(13): 'ScriptDirection' [line #3] IDENT(13): 'ScriptDirection' [line #3] OP_EQ(4): '=' [line #3] IDENT(13): 'ScriptDirection' [line #3] IDENT(13): 'ScriptDirection' [line #3] grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/dbg_ruleprec.txt000066400000000000000000000666751411153030700261540ustar00rootroot00000000000000RULE PRECEDENCE TABLE: substitution PASS: 0 - no rules PASS: 1 (GDL #1) 0 - RULE 1.0, SchMain.gdl(119): cUnencodedChar > cUnencodedGlyph ; 1 - RULE 1.1, SchMain.gdl(122): cUnencodedChar2Parts _ > cUnencodedGlyphPart1 cUnencodedGlyphPart2$1:1 ; 2 - RULE 1.2, SchMain.gdl(126): _ cAlefPlusMark > absAlef:2 cAlefMark ; 3 - RULE 1.3, SchMain.gdl(128): *GC1* > *GC0* ; PASS: 2 (GDL #2) 0 - RULE 2.0, SchMain.gdl(143): _ cMark234 cMark1 > @5:5 @2 _ / _ _ ^ cMark234 cMark234 _ ; 1 - RULE 2.3, SchMain.gdl(144): _ cMark34 cMark2 > @5:5 @2 _ / _ _ ^ cMark34 cMark34 _ ; 2 - RULE 2.6, SchMain.gdl(145): _ cMark4 cMark3 > @5:5 @2 _ / _ _ ^ cMark4 cMark4 _ ; 3 - RULE 2.1, SchMain.gdl(143): _ cMark234 cMark1 > @4:4 @2 _ / _ _ ^ cMark234 _ ; 4 - RULE 2.4, SchMain.gdl(144): _ cMark34 cMark2 > @4:4 @2 _ / _ _ ^ cMark34 _ ; 5 - RULE 2.7, SchMain.gdl(145): _ cMark4 cMark3 > @4:4 @2 _ / _ _ ^ cMark4 _ ; 6 - RULE 2.2, SchMain.gdl(143): _ cMark234 cMark1 > @3:3 @2 _ / _ _ ^ _ ; 7 - RULE 2.5, SchMain.gdl(144): _ cMark34 cMark2 > @3:3 @2 _ / _ _ ^ _ ; 8 - RULE 2.8, SchMain.gdl(145): _ cMark4 cMark3 > @3:3 @2 _ / _ _ ^ _ ; PASS: 3 (GDL #3) 0 - RULE 3.0, SchMain.gdl(157): if (shaddaKasra == 0) if (selectDiac) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) { comp.shadda.ref = @1; comp.kasra.ref = @2; } ; endif; endif; 1 - RULE 3.1, SchMain.gdl(160): if (shaddaKasra == 0) if (!(selectDiac)) absShadda cShaddaKasraMarks > _ cShaddaKasraLigatures:(1 2) ; endif; endif; PASS: 4 (GDL #4) 0 - RULE 4.10, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; 1 - RULE 4.0, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; 2 - RULE 4.5, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; 3 - RULE 4.11, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks cAnyMarks ^ _ ; 4 - RULE 4.15, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks ^ _ ; 5 - RULE 4.1, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; 6 - RULE 4.6, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; 7 - RULE 4.12, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks cAnyMarks ^ _ ; 8 - RULE 4.16, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks cAnyMarks ^ _ ; 9 - RULE 4.20, SchMain.gdl(206): cSignTakes4 cDigitNormal cDigitNormal cDigitNormal cDigitNormal > cSign4 cDigitMedium cDigitMedium cDigitMedium cDigitMedium ; 10 - RULE 4.2, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks cAnyMarks ^ _ ; 11 - RULE 4.7, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks cAnyMarks ^ _ ; 12 - RULE 4.13, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit cAnyMarks ^ _ ; 13 - RULE 4.17, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks cAnyMarks ^ _ ; 14 - RULE 4.21, SchMain.gdl(209): cSignTakes3Medium cDigitNormal cDigitNormal cDigitNormal > cSign3Medium cDigitMedium cDigitMedium cDigitMedium ; 15 - RULE 4.22, SchMain.gdl(212): cSignTakes3Small cDigitNormal cDigitNormal cDigitNormal > cSign3Small cDigitSmall cDigitSmall cDigitSmall ; 16 - RULE 4.3, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ cAnyMarks ^ _ ; 17 - RULE 4.8, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ cAnyMarks ^ _ ; 18 - RULE 4.14, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cDiaDigit ^ _ ; 19 - RULE 4.18, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ cAnyMarks ^ _ ; 20 - RULE 4.23, SchMain.gdl(215): cSignTakes2 cDigitNormal cDigitNormal > cSign2 cDigitMedium cDigitMedium ; 21 - RULE 4.4, SchMain.gdl(193): cLamIso cAlefIso > cLamIniPreAlef { user1 = 0; } cAlefFinPostLamIni / _ ^ _ ; 22 - RULE 4.9, SchMain.gdl(194): cLamFin cAlefIso > cLamMedPreAlef { user1 = 0; } cAlefFinPostLamMed / _ ^ _ ; 23 - RULE 4.19, SchMain.gdl(199): *GC12* *GC13* > *GC10* *GC11* / _ ^ _ ; 24 - RULE 4.24, SchMain.gdl(218): cSignTakes1 cDigitNormal > cSign1 cDigitMedium ; PASS: 5 (GDL #5) 0 - RULE 5.0, SchMain.gdl(225): absSuperscriptAlef > absSuperscriptAlef__large / cNeedsLargeDaggerAlef _ ; 1 - RULE 5.1, SchMain.gdl(228): if (selectDiac) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(2 3) { comp.base.ref = @2; comp.hamza.ref = @3; } _ / ANY _ _ ; endif; 2 - RULE 5.2, SchMain.gdl(231): if (!(selectDiac)) cNeedsLoweredHamza absHamzaAbove > cWithLoweredHamza:(2 3) _ / ANY _ _ ; endif; 3 - RULE 5.3, SchMain.gdl(237): if (meemAlt == 1) cno_Meem > cMeemSindhi / ANY _ ; endif; 4 - RULE 5.4, SchMain.gdl(241): if (hehAlt == 1) cno_Heh > cHehKurdish / ANY _ ; endif; 5 - RULE 5.5, SchMain.gdl(244): if (hehAlt == 2) cno_Heh > cHehSindhi / ANY _ ; endif; 6 - RULE 5.6, SchMain.gdl(247): if (hehAlt == 3) cno_Heh > cHehUrdu / ANY _ ; endif; 7 - RULE 5.7, SchMain.gdl(251): if (easternDigits == 1) cEasternDigit > cEasternDigitSindhi / ANY _ ; endif; 8 - RULE 5.8, SchMain.gdl(254): if (easternDigits == 2) cEasternDigit > cEasternDigitUrdu / ANY _ ; endif; 9 - RULE 5.9, SchMain.gdl(258): if (sukunAlt == 1) cno_Sukun > cSukunDownOpen / ANY _ ; endif; 10 - RULE 5.10, SchMain.gdl(261): if (sukunAlt == 2) cno_Sukun > cSukunLeftOpen / ANY _ ; endif; 11 - RULE 5.11, SchMain.gdl(265): if (headOfKhahAlt == 1) cno_OpenLeft > cOpenLeft / ANY _ ; endif; 12 - RULE 5.12, SchMain.gdl(269): if (commaAlt) cno_Downward > cDownward / ANY _ ; endif; 13 - RULE 5.13, SchMain.gdl(273): if (dammatanAlt) cno_SixNine > cSixNine / ANY _ ; endif; 14 - RULE 5.14, SchMain.gdl(277): if (endOfAyah == 1) cEndOfAyah > cEndOfAyahCircle / ANY _ ; endif; 15 - RULE 5.15, SchMain.gdl(280): if (endOfAyah == 2) cEndOfAyah > cEndOfAyahSquare / ANY _ ; endif; 16 - RULE 5.16, SchMain.gdl(286): if (!(invis)) cInvisible > zeroWidthSpace { dir = @2.dir; } / ANY _ ; endif; PASS: 6 (GDL #6) 0 - RULE 6.0, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ absRnoonMed ; 1 - RULE 6.5, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ *GC16* ; 2 - RULE 6.10, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:7 / _ cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ absRrehFin ; 3 - RULE 6.1, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ absRnoonMed ; 4 - RULE 6.6, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ *GC16* ; 5 - RULE 6.11, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:6 / _ cAnyMarks cAnyMarks cAnyMarks _ absRrehFin ; 6 - RULE 6.2, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ absRnoonMed ; 7 - RULE 6.7, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ *GC16* ; 8 - RULE 6.12, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:5 / _ cAnyMarks cAnyMarks _ absRrehFin ; 9 - RULE 6.3, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:4 / _ cAnyMarks _ absRnoonMed ; 10 - RULE 6.8, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:4 / _ cAnyMarks _ *GC16* ; 11 - RULE 6.13, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:4 / _ cAnyMarks _ absRrehFin ; 12 - RULE 6.4, SchMain.gdl(409): cKafLikeIniMed _ > @1 absAutoKashida:3 / _ _ absRnoonMed ; 13 - RULE 6.9, SchMain.gdl(410): absFarsiYehIni _ > @1 absAutoKashida:3 / _ _ *GC16* ; 14 - RULE 6.14, SchMain.gdl(411): *GC17* _ > @1 absAutoKashida:3 / _ _ absRrehFin ; TABLE: positioning PASS: 0 - no rules PASS: 7 (GDL #1) 0 - RULE 7.0, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks cAnyMarks cAnyMarks _ ; 1 - RULE 7.1, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks cAnyMarks _ ; 2 - RULE 7.6, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; 3 - RULE 7.10, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; 4 - RULE 7.15, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow cAnyMarksBelow _ ; 5 - RULE 7.19, SchMain.gdl(337): cSign4 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @4; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @5; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; 6 - RULE 7.2, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks cAnyMarks _ ; 7 - RULE 7.7, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; 8 - RULE 7.11, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; 9 - RULE 7.16, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow cAnyMarksBelow _ ; 10 - RULE 7.20, SchMain.gdl(343): cSign3 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @4; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; 11 - RULE 7.3, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } cAnyMarks _ ; 12 - RULE 7.8, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; 13 - RULE 7.12, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; 14 - RULE 7.17, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ cAnyMarksBelow _ ; 15 - RULE 7.21, SchMain.gdl(348): cSign2 cSignDigit { attach {to = @3; at = digit; with = digit_; } insert = 1; } cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; 16 - RULE 7.4, SchMain.gdl(302): cHasExit { user1 = 1; } cHasEntry { attach {to = @1; at = exit; with = entry; } insert = 1; } / ^ _{ user1 == 0 } _ ; 17 - RULE 7.5, SchMain.gdl(309): cHasAlef cMatchesAlef { attach {to = @1; at = alef; with = alef_; } insert = 1; } / _ ^ _ ; 18 - RULE 7.9, SchMain.gdl(312): absShadda *GC14* { attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ _ ; 19 - RULE 7.13, SchMain.gdl(317): absHamzaAbove *GC15* { attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac; } / _ ^ _ ; 20 - RULE 7.14, SchMain.gdl(325): cTakesDiaDigitA cDiaDigitAbove { attach {to = @1; at = diaDigitA; with = diaDigitA_; } } / _ ^ _ ; 21 - RULE 7.18, SchMain.gdl(330): cHasDiaA cMatchesDiaA { attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac; } / _ ^ _ ; 22 - RULE 7.22, SchMain.gdl(352): cSign1 cSignDigit { attach {to = @1; at = digit; with = digit_; } insert = 1; } ; PASS: 8 (GDL #2) 0 - RULE 8.2, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove cAnyMarksAbove cAnyMarksAbove _ ; 1 - RULE 8.3, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove cAnyMarksAbove _ ; 2 - RULE 8.4, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ cAnyMarksAbove _ ; 3 - RULE 8.0, SchMain.gdl(361): cHasDia2B cMatchesDia2B { attach {to = @1; at = dia2B; with = dia2B_; } insert = selectDiac; } / _ ^ _ ; 4 - RULE 8.1, SchMain.gdl(367): cTakesDiaDigitB cDiaDigitBelow { attach {to = @1; at = diaDigitB; with = diaDigitB_; } } / _ ^ _ ; 5 - RULE 8.5, SchMain.gdl(372): cHasDiaB cMatchesDiaB { attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac; } / _ ^ _ ; PASS 9: bidi PASS: 9 (GDL #3) 0 - RULE 9.51, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ _ ; 1 - RULE 9.52, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ ; 2 - RULE 9.56, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ _ ; 3 - RULE 9.53, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; 4 - RULE 9.57, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; 5 - RULE 9.61, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ _ ; 6 - RULE 9.25, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ _ _ ; 7 - RULE 9.54, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; 8 - RULE 9.58, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; 9 - RULE 9.62, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; 10 - RULE 9.66, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ _ ; 11 - RULE 9.0, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ _ ; 12 - RULE 9.5, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ _ ; 13 - RULE 9.10, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ _ _ ; 14 - RULE 9.20, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ _ _ ; 15 - RULE 9.26, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ _ ; 16 - RULE 9.55, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; 17 - RULE 9.59, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; 18 - RULE 9.63, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; 19 - RULE 9.67, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; 20 - RULE 9.71, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ _ ; 21 - RULE 9.1, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ ; 22 - RULE 9.6, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ _ ; 23 - RULE 9.11, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ _ ; 24 - RULE 9.15, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; 25 - RULE 9.21, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ _ ; 26 - RULE 9.27, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ _ ; 27 - RULE 9.41, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ _ _ ; 28 - RULE 9.46, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; 29 - RULE 9.60, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; 30 - RULE 9.64, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; 31 - RULE 9.68, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; 32 - RULE 9.72, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ _ ; 33 - RULE 9.76, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ _ ; 34 - RULE 9.2, SchMain.gdl(427): cKafLikeIniMed cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ ; 35 - RULE 9.7, SchMain.gdl(430): absFarsiYehIni cAnyMarks cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ _ ; 36 - RULE 9.12, SchMain.gdl(433): *GC19* cAnyMarks cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ _ ; 37 - RULE 9.16, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; 38 - RULE 9.22, SchMain.gdl(442): *GC20* cAnyMarks cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ _ ; 39 - RULE 9.28, SchMain.gdl(447): *GC22* cDiaDigitAbove cAnyMarks *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ _ ; 40 - RULE 9.42, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ _ ; 41 - RULE 9.47, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; 42 - RULE 9.65, SchMain.gdl(478): *GC27* cAnyMarks cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; 43 - RULE 9.69, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; 44 - RULE 9.73, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ _ ; 45 - RULE 9.77, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ _ ; 46 - RULE 9.3, SchMain.gdl(427): cKafLikeIniMed cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ ; 47 - RULE 9.8, SchMain.gdl(430): absFarsiYehIni cAnyMarks absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ _ ; 48 - RULE 9.13, SchMain.gdl(433): *GC19* cAnyMarks absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ _ ; 49 - RULE 9.17, SchMain.gdl(439): absAlef cAnyMarks cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; 50 - RULE 9.23, SchMain.gdl(442): *GC20* cAnyMarks *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ _ ; 51 - RULE 9.29, SchMain.gdl(447): *GC22* cDiaDigitAbove *GC23* absNameMarker { shift.x = 275; } / ANY _ _ _ _ ; 52 - RULE 9.43, SchMain.gdl(474): cBehLikeIniMed cAnyMarks cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ _ ; 53 - RULE 9.48, SchMain.gdl(475): cPehLikeIniMed cAnyMarks cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; 54 - RULE 9.70, SchMain.gdl(478): *GC27* cAnyMarks cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ ; 55 - RULE 9.74, SchMain.gdl(478): *GC27* cMark2Above cAnyMarks absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ _ ; 56 - RULE 9.78, SchMain.gdl(481): *GC28* cAnyMarks cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ _ ; 57 - RULE 9.4, SchMain.gdl(427): cKafLikeIniMed absAutoKashida { shift.x = -30; advance.x = aw + -30; } absRnoonMed { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ ; 58 - RULE 9.9, SchMain.gdl(430): absFarsiYehIni absAutoKashida { shift.x = -30; advance.x = aw + -30; } *GC18* { shift.x = -30; advance.x = aw + -30; } / ANY _ _ _ ; 59 - RULE 9.14, SchMain.gdl(433): *GC19* absAutoKashida { shift.x = -40; advance.x = aw + -40; } absRrehFin { shift.x = -40; advance.x = aw + -40; } / ANY _ _ _ ; 60 - RULE 9.18, SchMain.gdl(439): absAlef cAnyMarks absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; 61 - RULE 9.24, SchMain.gdl(442): *GC20* *GC21* absNameMarker { shift.y = 220; } / ANY _ _ _ ; 62 - RULE 9.30, SchMain.gdl(452): cNoonGhunna *GC25* { shift.y = -75; } / *GC24* _ _ ; 63 - RULE 9.32, SchMain.gdl(458): if (kasraTcheh == 2) cBehLikeIniMed absKasra { shift.x = -60; shift.y = 125; } cTchehLikeFin / ANY _ _ _ ; endif; 64 - RULE 9.33, SchMain.gdl(459): if (kasraTcheh == 2) cBehLikeIniMed absKasratan { shift.x = -100; shift.y = 30; } cTchehLikeFin / ANY _ _ _ ; endif; 65 - RULE 9.34, SchMain.gdl(462): if (kasraTcheh == 1) cBehLikeIniMed absKasra { shift.x = -40; shift.y = -200; } cTchehLikeFin / ANY _ _ _ ; endif; 66 - RULE 9.35, SchMain.gdl(463): if (kasraTcheh == 1) cBehLikeIniMed absKasratan { shift.x = -60; shift.y = -130; } cTchehLikeFin / ANY _ _ _ ; endif; 67 - RULE 9.36, SchMain.gdl(465): cPehLikeIniMed absKasra { shift.y = -50; } cTchehLikeFin / ANY _ _ _ ; 68 - RULE 9.37, SchMain.gdl(466): cPehLikeIniMed absKasratan { shift.x = -50; } cTchehLikeFin / ANY _ _ _ ; 69 - RULE 9.38, SchMain.gdl(467): cTehLikeIniMed absKasratan { shift.x = -80; } cTchehLikeFin / ANY _ _ _ ; 70 - RULE 9.39, SchMain.gdl(470): absAlef absMaddahAbove { shift.x = -130; } absGaf { shift.x = 30; advance.x = aw + 30; } / ANY _ _ _ ; 71 - RULE 9.40, SchMain.gdl(471): absAlef absMaddahAbove { shift.x = -120; } absGafIni { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; 72 - RULE 9.44, SchMain.gdl(474): cBehLikeIniMed cAnyMarks absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ _ ; 73 - RULE 9.49, SchMain.gdl(475): cPehLikeIniMed cAnyMarks absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; 74 - RULE 9.75, SchMain.gdl(478): *GC27* cMark2Above absJehRetro1Fin { shift.x = 65; advance.x = aw + 65; } / ANY _ _ _ ; 75 - RULE 9.79, SchMain.gdl(481): *GC28* cAnyMarks cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ _ ; 76 - RULE 9.19, SchMain.gdl(439): absAlef absRreh { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; 77 - RULE 9.31, SchMain.gdl(454): cNoonGhunna *GC26* { shift.y = -150; } / ANY _ _ ; 78 - RULE 9.45, SchMain.gdl(474): cBehLikeIniMed absRehBarFin { shift.x = 50; advance.x = aw + 50; } / ANY _ _ ; 79 - RULE 9.50, SchMain.gdl(475): cPehLikeIniMed absRehBarFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; 80 - RULE 9.80, SchMain.gdl(481): *GC28* cKehehLikeFin { shift.x = 70; advance.x = aw + 70; } / ANY _ _ ; grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/gdlerr.txt000066400000000000000000000012741411153030700247560ustar00rootroot00000000000000Graphite Compilation Results GDL file: SchMain.gdl Input font file: SchInput.ttf Output font file: SchBenchmark.ttf Output font family: Scheherazade GrcRegTest Silf table version: 4.0 Create separate control file: no ******************************************************* warning(4510): Default Unicode bidi char type for 0x0009 = S, which is not handled; char will be treated as neutral (ON) ******************************************************* Table versions generated: Silf: 4.0 Gloc: 1.0 Glat: 1.0 Feat: 2.0 Sill: 1.0 Minimal compiler version required: 4.2 ******************************************************* Compilation succeeded - 0 errors, 1 warning (121 warnings ignored) grcompiler-5.2.1/test/GrcRegressionTest/fonts/dbg_Sch/readme.txt000066400000000000000000000001651411153030700247320ustar00rootroot00000000000000This directory contains the debugger files that were generated in the process of compiling the SchBenchmark.ttf font.grcompiler-5.2.1/test/GrcRegressionTest/fonts/icu42/000077500000000000000000000000001411153030700223275ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/icu42/PadaukBenchmark_v3.ttf000066400000000000000000004363741411153030700265170ustar00rootroot000000000000000Feat<Glat?rGlocw\0OS/2e<`Silf-;=Sill<cmap+|cvt /&fpgmY7@sgasp glyf_Xnheadj@1^46hhea ^l$hmtx!E M^>locau` b$maxpAId nameeMpostpuidprep<q ,,4SIL @ % H4 ~!4Od    `"`% #6Z    `"`%TMG ڞZ|koqsuz|~    4 ~!4Od    `"`% #6Z    `"`%TMG ڞZ|koqsuz|~    3'N93'7jX:,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-7a//и/ EX/>YEX/ >Y01!!/3m53e7- 5t6/-+4+6 AaqA0@PqAc4q7EX/ >Y Ahq017#"&54632'#"'&&&&&&54545465466632$%%$3 *!!""z@Tada+   +bdaT@=T7EX/>YEX/>Yи01#3#3?6^5_7ظ /!/ + +++++!и A$]/// /+++++ +и  и и013#3##7##7#537#53733737#NUdj3x3MSbi3xxx3x33x3x/:CG5 ++& '+;'&9;/Az;;]A ;;);9;I;Y;i;] ии и*и0A55&565F5V5f5]Au55]:9@//EX/ >YEX/ >Y0+ !и!/'0*к@9AиA/01%#5"&&&5335&&&&546663532#4&#"4&&&'66 6F%-2J1Z ) &E40G.--@(Z!-B=+&( $&523D+QO5I--! %=2$?.HG0>!5'&GC"$) *S+=OP/Q/> F+, 4+P Q AT]>FAu,],4"A"] /'//EX/>YA]Aw]A]A ]'19C K01#"&&&5466632#"&&&54666324&&&#"32666%4&&&#"32666it*",-""-,"?",-""-,"1  +   +  # -""-."".-""-."". ,  , 4=M]8V +F F9AVV&V6VFVVVfV]AuVV]EX/>YEX/ >YEX / >Y 9- 9[A[['[7[G[W[g[w[[ ]A[[]= [9CA CCqA!CC(C8CHCXChCxCCCCCCCCC]01!&'&&'#"&&&546667&&&&7666632666&'36&&&#"6666&&'326& !L/,P<#)2  (7"$<+*1&(, ] / ".& J5d-"#1)R 3I,,>+ "(.,! ."4' +*,)&.#7>E%,!*3 .k6&-+&u/EX/>Y01#36]K>T8// +01#&&&&546667T7Q4dr3;Q34Q9KmIbfO7JA4//  +01#654&&&'j9Q53R;3re5Q7OfbIMmK7//++A"]A(]A%]A; ] A< ] A< ] A>]//A:]A(]и01'7'7537'#53Z-YZ+XW+ZY-Z] G / /+ +    ++0173533##5#]333(f0/ EX/ >Y017'665454'#&&54632  $ !)#1  %%7%//+017!!73(c 0 / EX/ >Y 017#"&54632$%%$*!!""7,-.//017[%&%-+),//Az]A )9IYi] ,и/" A""&"6"F"V"f"]Au""]-EX/>YEX/ >YA]A(8HXhx ]'A''''7'G'W'g'w'' ]A'']01#"&&&&&54666324&&&#"32666-B..B- *QEEQ* V.''//''.N&QME44EMQ&9s[::[s94ZB&&BZ44bM..MbsQM +   9EX / >YEX/ >Y 901356676732 2Z I %}7  +Az]A )9IYi]и"EX/>YEX/ >Y A ]A  ( 8 H X h x ] 0135666654&#"#666632!7oy8 *60/[.F2/F.$@aF!RU}Z?975;(D2 2>17>K[8E(6- +- 2-9-8EX(/(>YEX/ >Y+ A'7GWgw ]A](!A!!]A!!(!8!H!X!h!x!! ]($2901%#"&&&533266654춮&&&#"#66328M.7N2_ ),!#!/# $8 k +и иEX/>YEX/ >Y+к 9 01%#5!5333R aPԜ]dK.&ϻ +Az]A )9IYi]EX/>YEX/ >Y"+ A  ' 7 G W g w ]A ]""901%#"&533266654&#"#!#666632"7E"dp_<.).:-9O T (!+A--P=$YO20&8%ET7&wK  #YEX/ >Y$,+A]A(8HXhx ]92A22'272G2W2g2w22 ]A22]01%#"&&&5466632#&&#"6666324&#"326-N=JU+ /UF,?*V0)(  *?K( Z4=>44>=4H?**QwN>|d?)>)8('1YEX/ >Y013#!5!b;HZ''7C> + (+Az((]A (()(9(I(Y(i(]8(98/Az88]A 88)898I8Y8i8]  9A>>&>6>F>V>f>]Au>>] >9/# 9. EX/>YEX/ >Y3;+;39#;39+A++]A++(+8+H+X+h+x++ ]AAAA'A7AGAWAgAwAA ]AAA]01%#"&&&546767&'&&54666324&#"326664&#"326(=K##J=(%##7E!"E7#!#'d:54:() ?=;C;CD82C**C22C <,(<&&<(,< C 2882((6EE66HH*&21- + '+ AJ'Z']A '')'9']A--&-6-F-V-f-]Au--]EX"/">YEX/ >Y0+ A  ' 7 G W g w ]A ]"9"*A**]A**(*8*H*X*h*x** ]01#"&'33266676'#"&&&5466632'4&#"326/VEXQ W2)(  )?J( ,N=JV+ c2?>22>?2Q>~d?TS8*'0*)Qw$BFFBBGG( [/ ииEX/>YEX/ >Y 017#"&54632#"&54632$%%$$%%$+##!!M""##('[(/  и "и)EX%/%>YEX/ >Y %01666655&&#"3267#"&54632Z &$ %M$%%$e#) ## /##"""//90175%#9787oM?/ /и++017!!5!!7//33"//90175%%5#"879 n- 67/45+++ +7A-]AM]A}]A<] Ap]8EX/ >Y&+Aw] A5]017#"&54632467666654&&&#"#5466632#5#$$#T ,,"$--#3/A((B.#.0 3*!!""N# '9)-$!&81!3? 6C+ 4aE}Ma!/ D+X + N+ %+N9Nи/Az%%]A %%)%9%I%Y%i%]A//&/6/F/V/f/]Au//]9и9/AXX&X6XFXVXfX]AuXX]4?+I*+] +S+ и/S9и/01#"&'#"&&&546663253766654&&&#"322667#"&&&54666324&&&#"32666E0B'*9<4":++:"!' Q,QqE3lY:'OwO%!!# KtHBlIZi9 %% %%  1YD),)'* 8L-0M6  5  $E8RpEFsUN}W/I '_zZa3/^x3&'27++7  @EX/>YEX/ >YEX/ >Y +01!'!#331GF\ cx}H"#,) + +Az]A )9IYi]$ 9$/Az$$]A $$)$9$I$Y$i$] 9)EX/>YEX/ >Y'+'9)01%#!!2'4&&&##326664&##326" 6F&'F5#%*k 4((5 RPFX'A/'<)*4 @#$5:=4(&'// ' и / A&6FVf]Au]%и%/(EX/>YEX/ >YA]A(8HXhx ] A  ' 7 G W g w ]A ]%01%#"&&&5466632#4&#"3266653( >fL=W8Z@LWX-?)6'Z&D26[xAAz_93C%99Hc= +HL / /Az ]A  ) 9 I Y i ] и/ EX/>YEX/ >Y01##324&##326LIz[[zIYyiqqiyB;s[96Zt=w|~H U + EX/>YEX/ >Y+ 013!!!!!H,>NLNH K +EX/>YEX/ >Y+01!!#! Xu5LN4b-! #+ + и/A  & 6 F V f ]Au ]-и-//EX(/(>YEX/ >Y+((A]A(8HXhx ]A'7GWgw ]A]014&&&#"3267675#53#"&&&5466632'6"=V72S=!9A?8f~E+QtH@]<!#?U16eM/N  Ci=AqS0"4<H1 // и/ ии EX/>YEX / >YEX/ >YEX/ >Y+01!!#3!3XX5\#}H/ +EX/>YEX/ >Y0133HX}4//  и / иEX/>YEX/ >Y A'7GWgw ]A]01%#"&&&5332666534I+*E0Y%%Z.L61D) ) 0 =H: m +EX/>YEX/>YEX/ >YEX/ >Y9901!#33XX o2SH5 +EX/>YEX/ >Y0133!HXNH // и/   9EX/>YEX / >YEX/ >YEX/ >YEX/ >Y99 901!##33FX.)}H= // и/  EX/>YEX/>YEX/ >YEX/ >Y9901!#33X~Z}4|')(//Az]A )9IYi] ( и / A&6FVf]Au])EX/>YEX/ >YA]A(8HXhx ]#A##'#7#G#W#g#w## ]A##]01#"&&&54666324&&&#"32666|#HnJJnI$$InJJnH#]-M:;M--M;:M-NE~`99`~EEuV11VuE3XB&&BX33`K..K`H//Az]A )9IYi] и/ иEX / >YEX/ >Y+ 01###324&##326+FY.]X.YF+VNQ``QN=H'  'I=<0.4+ ,//,и/Az]A )9IYi] и/" A""&"6"F"V"f"]Au""]-EX / >YEX/ >YEX/ >Y A]A(8HXhx ]'01!#"&&&546663234&&&#"32666'JnI$$InJJnH#00-M:;M--M;:M-9`~EEuV11VuET+=N3XB&&BX33`K..K`H !,̸-/"/- и / Az""]A "")"9"I"Y"i"]"  9"и/ (и.EX/>YEX/ >YEX / >Y* + *9'01!&&&&'&&&&###324&&&##326 "6-NXrw!+   j%5!qqAO!'28Nc)" 8CN(& *491 +& '+& A11&161F1V1f1]Au11]1 и /&;EX!/!>YEX/ >Y A'7GWgw ]A]!&!,A,,]A,,(,8,H,X,h,x,, ]01%#"&&&533266654&&&&&5466632#4&&&#"1N`/-N9!\,@7%9VdV9)?N%+RA(Z)4-"!6EHE6!8J,6L/."*%30"GE*A-(C1!& '&)AA +EX/>YEX/ >Yи01##5!>Z55NNHI//  и / иEX / >YEX/>YEX/ >YA'7GWgw ]A]01#"&&&533266653I?aCD`?X.="!<.ZPrH""HrPeHW/.WIe 8@EX/>YEX/>YEX/ >Y901!#33Tced T vEX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!##333QO_k_\ [EX/>YEX/>YEX/ >YEX/ >Y9901!#373귴jriW, CT +9EX/>YEX/>YEX/ >Y901#33TXne5( 9EX/>YEX/ >Y0135!5!!(jraNc.N^O@ + EX/>Y+013#3^XX4.'-7,-&//017&Z&%^OD + EX/>Y+0153#53^YY-.ecL//йA]AL]A]+01'7+w@ +01!!@V3 //01'3f}ZY+7G@ +0 8+8и/8и/A@@&@6@F@V@f@]Au@@] @9 / 0.и03и0IEX%/%>YEX/ >YEX/ >Y;+%9и/%A qA!(8HXhx]%CA!CC'C7CGCWCgCwCCCCCCCCC]ACCq7C901!&&'#"&&&546663236&&&#"#466632'&&#"32666h&<2 .GV'*#S3@!41' ^  <6&4$*3   0!3?$ * '3  &* N., %%*/>=*B+//Az]A )9IYi] + и /# и /#и/ #9,EX / >YEX/>YEX/ >YEX / >Y  9 9 A]&A!&&'&7&G&W&g&w&&&&&&&&&]A&&q01%#"&'&'#36666324&&&#"32666"6C"#7QN %1 7I,W /#!1 @?.">^@! 4  ,BK'!?01> []0D-$- +A&6FVf]Au]EX / >YEX/ >Y  A qA!(8HXhx]A!'7GWgw]Aq#01%#"&54632#6&&&#"3266653*E2d`Wd3H-O!+&=8& P;-uuvt(7!#)C0`N#-,6-//и/- и /и/ # A##&#6#F#V#f#]Au##].EX/>YEX/>YEX/ >YEX/ >Y(A!(('(7(G(W(g(w(((((((((]A((q(9A]01!5#"&&&54666323'4&&&#"326661'J;#+F4-; OR%3 - "0!03 "YEX/ >Y%+ A!  ' 7 G W g w ]A  q *A **qA!**(*8*H*X*h*x*********]01%!3266673#"&&&54666326&&&#" . ) U-K98M00P;AN* X/$!+  #;-!50",ES&*SC*,?G 0%(. & +  и иEX/>YEX/>YEX/>YEX / >YA qA!(8HXhx]  и01&&#&3###535466632&  &!kkQXX#3!#A#,A:}:D*6 B-O+=>/,/ ,и/>и/,)и)/6 A66&666F6V6f6]Au66]?EX*/*>YEX$/$>Y +9+$1A 11qA!11(181H1X1h1x111111111]01%#"&&&53326665#"&&&5466632534&&&#"326667Q57F'S (-"/>M*2D*+4QR 3$#. >?#1+J6 -0  0N: +CO$/P;!  1$<,,;"L\.<=// и / и  9EX/>YEX/>YEX/ >YEX / >YA]901!4&&&#"#3676632o" 1"QQ 4)YM." V^:b +и/и/EX/>YEX/>YEX/ >Y01533:WTQ1RRCDc +и/и/EX/>YEX/>Y +0153#"&&&'732653oT (  3  Q1RR*!  3 %#= w +EX/>YEX/>YEX/ >YEX/ >Y99901!'#373?QQd=/ +EX/>YEX/ >Y0133=Q}=, + +, +к,9# 9,.EX/>YEX/>YEX&/&>YEX/ >YEX / >YEX/ >Y&A qA!(8HXhx]к9#901!4&#"#4&&&#"#36632663204*Q%, QQ@, /# H*6B#  3=!' )!(= ( *$ 2;=// и / и  9EX/>YEX/>YEX/ >YEX / >YAIYqA!(8HXhx]A (8q901!4&&&#"#3666632q(* QQ.%7C% '(*90:-'a(//Az]A )9IYi] ( и / A&6FVf]Au])EX/>YEX/ >YA qA!(8HXhx]#A!##'#7#G#W#g#w#########]A##q01%#"&&&54666324&&&#"32666#;P-.P;"";P.-P;#T!3#$4!!4$#3!33>=O(f)//Az]A )9IYi] ) и / к 9 и*EX / >YEX/>YEX/ >Y$A!$$'$7$G$W$g$w$$$$$$$$$]A$$q  9A qA!(8HXhx]01%#"&'#366324&&&#"326662N9-BQQ ?-9N2V 1#$1  1$#1 1V@%%n9'%?U1"@22@"#?22?-O(v)//и/) и /  9и/  A&6FVf]Au]*EX/>YEX/>YEX/ >Y$A!$$'$7$G$W$g$w$$$$$$$$$]A$$q9A qA!(8HXhx]015#"&&&5466632534&&&#"32666C-8N00N8-AQP 1#$22$#1 %%@V11U?%'9"@22@"#?22?=2x + к9 EX/>YEX / >YEX/ >Y  901"#3666632WMQQ $7+uC9=H-3G- +$ %+$ A--&-6-F-V-f-]Au--]$5EX/>YEX/ >Y A!'7GWgw]Aq$*A **qA!**(*8*H*X*h*x*********]01%#"&&&533266654&&&&&5466632#4&&&#""7F$";,Q4(%'-Q#"2(;E;()6!!6'/$  50," 4( % 17 + и и и /EX/>YEX / >YEX/ >Yик 901!#&5#53573#7667#:7QQQbb 9J9Y!z9*9=//и/ и EX/>YEX/>YEX/ >YEX/ >Y9A!'7GWgw]A '7qAFVq01!5#"&533266653o?6[PQ'+ Q9(UN&(+C @EX/>YEX/>YEX/ >Y901!#33Q]U\  vEX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!##3331PvxPViijikTq\\ [EX/>YEX/>YEX/ >YEX/ >Y9901!'#7'373o~]eus]֠ J3/EX/>YEX/>Y901#"&'77267733#+;?   ]Wc ,%! 3P-t 9EX/>YEX/ >Y0135#5!3-7I5?I=FE_|)_*/+/%++*A]A]+  +  +0173"&&&54&&&54666546663"y"*"/'&))+ 0"D 3,% $!  ]Ez I / /Ai]и   ++A]017''7'uv&wu$uu%uuxuw&vu$uu%uu(NZ/0/1/A] A< ] A;]A>]AM]A\]A]AV ]0)# +&+A ]AH]A&]01663#"&5546667663#"&5546667*+$ # &  ! T=  ##*".   ##*"(PZ3H4/5/4  AL]5-' +!*+01665454'#"&546327665454'#"&54632L "    !" 1  ""+"1  ""+#(Z#/ +01663#"&5546667v$ #  T2  ""+"(Z#/  +01665454'#"&54632L# !  /  ""+"%//+015!!/38%//+015!!834I//A)]Aq и++01!73#!!'7#537#7#z'Zgjӄ#b_jM$d3x3&o3x6D'/7?GOW_gow]8<+(,+ $+++ и /AJZqA! )9IYiy]A )9qAJZqA! )9IYiy]A )9qA!  & 6 F V f v ]A   & 6 qAE U qA!((&(6(F(V(f(v(((((((((]A ((&(6(qAE(U(qA!88&868F8V8f8v888888888]A 88&868qAE8U8q8084и4/8Hи<Lи0Pи8TиT/(Xи,\и `и$dиhиlиpиtиxи|и|/EXZ/Z >YEX`/` >YEXd/d >YEXj/j >Yfb+&"++NJ+ ++и/*и.и2и6и6/ :и>иBиFиZRA!RR'R7RGRWRgRwRRRRRRRRR]A RR'R7RqAFRVRqVR^иnиrиr/VvиJzиN~01%#"5432'#"5432'#"5432'#"5432#"5432#"5432#"5432#"5432#"'632#"5432#"5432#"5432#"5432#"54327#"54327#"5432D3N\ZN44NZ\N3C6*LertfK*67GH/I/ ++AX ]AG]AV]HAK]AL]I.A(<]>AHA]EX!/!>YEX3/3 >YEX/ >YEX/ >Y!!)и39AX@]C01%'6654&&&#"&&&&5466632666632#"&'73266654&&&#"##)3D&&D3*#$%AV1Ht,4>!/U?%%?U/$%B22B%%C3(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W01VA%. 3D&&D3'>M7>Fû+ +,=+A]A]A ]$ 9A 4(484H4X4]AD],H81+!+A H X h x ]A ]A(]!'иB01'6654&&&#"&&&&54666326632#"&'73266654&&&#"  '44'" 2C&8YS3%A11A%   3''33&0& !@-$:)):$-@! (3 +H4961>1B&&C2$'44'/;7>D+r//,3+ +A'7G]"A-"]A"]A<"]!F=!XйiEXK/K>YEX]/] >YEXA/A >YEX/// >Y+~v+v~'/0K8A@KSи]d8n016632654&&&#"'6666323'#"&&&'6654&&&#"&&&&5466632666632#"&'73266654&&&#"&&'&#"326!7%1*'3)J! %.3%B23A$-B+ 7)"*3D&&D3+"$%AV1Hs,5=!0T?%%?T0$  %B22B%%C22%K(% "*;4'+*'1C&2%-M  $& 7>|Nre//#+ib+H+N+{+Rf+A']6-XOAb]Ai]//EX;/;>YEXe/e>YEXS/S>YEX1/1 >YEX/ >YEX/ >YEX]/] >Y ;(и 10;CиSRef]nv01%#"&'73266654&&&#"'6654&&&#"&&&&54666326666324&'7#"&&&546732666&&#"3"&&&5466632D $%B22B%%C3##)3D&&D3*#$%AV1Hr,4>!/U?%?68)##%AV11VA%5-#*3D&&D3;2($00 @7%2@#-JQk . 3D&&D3'>M&(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W0Dk7<9U +*4A)9^C%%C^9Rd#+ U9-K66K_#&5!)9#'0F.(D0*#7%34/5/Aiq A&qA'.]A5.]EX/>YEX!/! >YA7]1,йAfqA#]AjqA]A]01766326654&&&#"'6632#"&&&&&'&&#"3267*H)5!@1E&4`+}C2UA%%AU2:V7<5*8Z3+ -'B'%E2;4DE&@W02UA%'69M&%0+ 7>&4P5/ +56++A]A*]A,]016632654&&&#"'666632#"&&&&&'&#"3267!7%1*'3)J! %.3%B22B%-B+2%K(% "*;4'+*'1C&&C2*,:  $& 7%&/'/& и /A ]A']Ahq'A]A(]AHX]AG#W#]EX/>YEX/ >YEX/ >YAmqA]AsqAX]!017&&&&5466632'6654&&&#"j*#$%AV11VA%##)3D&&D39U +)4A*9^C%%C^9*A4)+ U9-K66K7>/ /+A]Am]A]и/ A]]A]A]Af] +Af]AXh]01&&5466632'6654&#"^#!*1B'&C2*! T;YEX/>YEX4/4>YEXF/F >YEX>/> >YF>$4.U0123266654&&&'73266654&&&#"'632#"&&&'#"&&&546666654&#"'6666&$+D0,E0-5 5D$%B22B%  "%/U?%%?U/!?6,sH5U< $#  ,,  ,-"#;N,6*+#dR#H;&3D&&D3/&@W01VA%&5 DM#5A+%  7>XY/Z/+A qAqYH Z8'A 0(080H0X0]C+="+,3+R+0123266654&&&'73266654&&&#"'6632#"&'#"&&&546666654&#"'66{ /!4&"6$!,(43&&3   $A11A$2VY8)A.!*W.,!"-<"*!!N?8-'44'%1B&&C2@05;*1! 7%&/'/&A7GW]Adq' AdqAG#]AW$]EX/>YEX/ >YAW]A]A]AqATqA]A qAZqAX]A]!0173267#"&&&5466632&&#"j3D&6_,0;C!1VA%%AV1!C;0,_6&D3&D396"3"%AV10W@&"3"5:3D@[263/!+A]A!&6FVfv]A&6FVfv qAqи3й!',+++Aj]A\]A]A]AH ]A]A]AU]AI0]01"32&&#"3267#"&&&5467&&5466632&&]$#/!   ( !@$$#%  4#%  #4$) ) %3G[n\/R4+(+"+\>йH-+++CW+M9+A]01"32&&#"3267#"&&&5467&&5466632&&466632#"&&&%4&&&#"32666%$/!   ( !/$$#% o1A$%A11A%$A1>&32&&23&a#%  #$) ) %%C22C%&C11C&4''44''4'5iøj/ +9^+jA| ]A'777qAC7qAW8q9Iи^XAgq+3,+6c+D=+SL+OA+3,#Ahgxg]01#"&&&54666324&&&#"66326&&&&#"326"32&&#"3267#"&&&5467&&5466632&&1A%$A11A$%A1'&32& B F   >> #JrK/'+!+K3й?Eй9AX9] ,+++6H+B<+01"32&&#"3267#"&&&5467&&5466632&&#"&546324&#"326$#/!   ( !@$$#%  -,,-4#%  #4$) ) % -- --745/6/56 A - ]A]A]#AC#]A2#] .A0]EX/>YEX/ >YA])A0]3017466632#"&&&6654&'3266654&&&#"7$?T02U?$$?T01V?$w''&$N))!&C22@&$0W@&&@W02UA%%AU^'OQ'M+,K#(Z**Z)1D'%E27>34/5/4A0]5 A? ]AM ] ]й#Ag#]Au#] -2+(+A7]01466632#"&&&6654&'73266654&&&#"71A%$A11A$%A1_; 3&&3&C11C&&C22CK<@=##= E !F '44'71?S T/U/J +TAS]U"A4]@AIC]AFG]A[R]A9RIR]EX/>YEX-/- >Y=7йAW]A]A]A]A*]AY]A9]и-'AHC]Eи=O01766326654&&&#"'66326632#"&'#"&&&&&'&#"326%4&&&#"326667*H)%/!@1E&4`+}CEqoD.V?%%?V.DoqE'N?+95!0Z3+2B%&B11B&%B2 -'B'%E2;4DEH99H&@W02UA%H99H-=9&%  /+ %E22E%'D11D7>2FTU/V/= +UV#3B(++L+A\]A *:J]и(.и8A^L]BR016632654&&&#"'6666326632#"&'#"&&&%4&&&#"32666&&'&#"3267!9%/*'4)G$ %.35WS5%A11A%5SW5<0"{'33&&33'|2&L'% "+:4'+*'8--81C&&C28,,8#/R4''44''4`  $& 78<JnK/L/H +;+AKqA_qA]A:qK.L$ܹ#A66]A8]AKB[BqAB]EX3/3>YEX)/) >Y=E+A=]=A.]A<]EA5E]A]A#]AbqAHqA]A7qAm3qA]3]3) A'#7#]Av##]AB]01%&&'#"&&&54632&&&&#"3267#"&&&5466632'26667&&#"?!%60!-'C10B&,@#!')/3T>"$?T0.I4&( #. !,83D$(D2 ( %AV10VA&1D'?M7>5@A/B/> +B4AH qA'A6qA<qA<<q,+"+A6 F qA % qA6qA<qA<qA<<q01&&'#"&54632&&#"3267#"&&&5466632'267&&#"  //(& 1/4&&3#/<,'B/1B%$8' # '$##+ ''45&2C&%C2&32< ' 7>/=ʸ>/?/+>A]?A,] A( ]80ܹ&AS&]A2&B&]EX/>YEX/ >Y +AX5]AW;]0174666323%#"&&&%4&&&#"32666'4&&&'667$?T01V?$?63 2U?$1B% ')%&C1 %$)0W@&&@W0Dm7j,89/0+06й&й A ]A ]A7 ]AF ]9:EX/>Y++!+A ' ]014666323'#"&&&73266654&&&#"6654&'t0A%%A1{38 %A0  3&&37&C11C&8+!<72CG !E '44'>@;##=7>HI/J/Iи/AX]AH]A8]AX]J-ܹAHX]#Ag#q6EX(/(>YEX2/2 >Y@+A]AW]2(AY"]A"]Aj#qAM5qA[5q01#!"&'&&&&573266654&&&#"'666632#"&'3!2676655 #6e--_6&D33D&6_-0;C!1V@&&@V1-Z# ...-'-4512693D&&D3:5"3"&@W01VA% /1/ "7>oRp/q/K+gf+pAT qAK]AX]AX]иq0A(9]@AZB]AIB]A'H]AHSqTAWY]A7Y]EX!/!>YEXP/P >Y^+A ]AV ]AX qP !AY]A]!+иP5и ;AXB]EAMSqA<Sq01"&'&&&&5732666774&&&#"'666632666632#"&'73266654&&&#"#"&'3!26766553#!A6e--_6$?13D&6_-0;C!$B9+-6>!/U?%%?U/$%B22B%#@3#)>Q--Z# ...3#>-451269,<"&D3:5"3"'54'&@W01VA%. 3D&&D3"6F$,L7 /1/ "-' 7>uv/w/lk+vAH]A*']Aj)qA()]AV*]AZ1]A81H1]wD3A(:]AXVqWEX$/$>YEXS/S >Ya+A ]AV ]S $AY]A] .и8и$?иSIAZVq01"&'&&&&57326665454'&&&&#"'6666323266654&&&#"'6632#"&&&'#"&'3!2676666553#!A6e--_6&D31?$6_-0;C!/U@'#3@#%B22B%  $/U?%%?U/!>6,,9B$-Z# ...3>-4512693D& "<-:5"3"%@T.$E6!3D&&D3/ &@W01VA%&4 4% /1/ -< 7>[\/]//%+\ и]?/REX / >YEXN/N >YZY+ Q+ +N   *и4и :иND01"&&&'&&573266654&&&#"'6666323266654&&&#"'632#"&&&'#"&'33#)"-_6)D24C$6_-0;C!/VA'"3?#%B22B%  "%/U?%%?U/!>6,,9B$-Z#1-:> B'694C$(E1:5"3"%?T/$E6!3D&&D3/&@W01VA%&4 4% 537>UUW/V/Wи"A)()]0AY1qV9Cи9LEX>/>>YEX4/4 >Y ++ &A'*]A*]-A[1qAD]AXD]>G4QAT]AWT]01"&'326667326667#"'&&55#"&'532675#"&&&5466632&&#"32673n<)O$IS'<3-+(U-7k-0c<-T)#Z-1VA%%AV1!C;0,_6&D33D&6_,Y #O&  1 l  %m %AV10W@&"3"5:3D&&D3967>>&:;/YEX/ >Y-4+AZqA)qAX]"AW%]A'1]A1]AG:]01%#"&&&5466632&&#"3267##"&'53266670;C!1VA%%AV1!C;0,_6&D33D&6_,=&H-7i/0c<311y"3"%AV10W@&"3"5:3D&&D3963G9% 7>-4'C(/)/( )'+"++01#5#"##"&&&5466632&&'"3267-Z%%%%;&##e'F##!   R7>S%7apb/c/BS+_8+7(+bAGW]AH]c Aj] AG#]AW$]A*]A6N]EX/>YEX/ >Y3,+&'+`a+=F+AW]A)qAY]!A8)]Aw)]A{,,]A /'/7/G/]Aw/]A3]A3]FN=X0173267#"&&&5466632&&#"5##"&'3267'5#"&&&5466637&&#"32326735j3D&6_,0;C!1VA%%AV1!C;0,_6&D3R6l;8_R`/a/'++A:]a9`CAC]AHq9MAXN]A(NqAGS]AWT]CVAGXWX]AH]]9^Aj^]A^]EXH/H>YEX>/> >Y+2+++A<]A?]A7/]AHqA.NqAYN]HQ>[AV^]A^q01##"&&&5466632&#"33266676655#"&'5326667#"&&&5466632&&#"3267")& ))"   $J-7i/0c<3110;C!1VA%%AV1!C;0,_6&D33D&6_,'@ %$' " 59% "3"%AV10W@&"3"5:3D&&D3967>MN/O/+OLA]'N0L:A;]0CLKAIK]EX5/5>YEX+/+ >Y+ +A ]A;]A ]A<]AY;]A;]5>+HAK]AVK]01##"&&&5466632&#"3326667665#"&&&5466632&&#"3267!)& *)"   #Z-1VA%%AV1!C;0,_6&D33D&6_,'@ %$' " 59 %AV10W@&"3"5:3D&&D396t7>J,K/L/E(+K йA]A%]L2A7]A7]A8]AH8]A8]Ah8]A(8]A8];A>qA>]ABqAB]AH]AGH] +@-+$+A]A-]A7qA7]A97qA7]A8]01"&'&&&&554632'6654&#"33&&5466632'6654&&&#"!1 0 1 (2B&&C1')-'54'-)> &(,)  i D#&B22B&3.% !J)4''4)J!7>#67/8/4+7 AF ]AHX]8$AX]AI]A,]Al,qA,qA,]EX/>YEX)/) >Y0+65+A ]AV f ]At ]) AY]A]Ak,qA,qA3]01#&&'573266654&&&#"'666632#"&'32673#C'? # 693D&&D3:5"3"&@W01VA% m"37>AD<_=/>//+'+>=8*/4++* й!012#"&&&'32673#5#"&&&'53266654&&&#"'6666&!"&(3 -K  9  3#!&I9d     7>56sʸt/u/4+<d+SP+\G+A/]A-]t AX ]AG ]u$A$/$]AJ$]AlqA,qA,,]A%,qA,]A2]A2]A3/3]A4/4]7/+ )+65+RQ+0+A ]AV ]AY]AkqAn,]A,]A|0]A000]7j`A`]A`]AKAO]WASW]01#&&'573266654&&&#"'666632#"&'326732#"&&&'32673#5#"&&&'53266654&&&##"'6666&O'E# 693D&&D3:5"3"&@W01VA% m$3&I9d     7> [\/]/+:)+AVq]AO]A-]A]A]AH]A]AX]\$A;]?AGA]AWBgB]AB]AKG[GqAINqEX7/7>YEX/>YEX/ >YEX/ >YKQ++KAZ] Ak]AX]A(]A]7,Ag2]DQW01%#666654&'73#&&&&5466654&#"'666632&&'532654&#"5632":,*#-5!9M-S/L5&/&   ,-*&/&%:*  ')  '  '!5G*9U +#dR6ZB(3&4<,;*  7( )'.#() #%,) !7 ;YEX/>YEX"/" >Y10123266654&'7#"&&&546666654&#"'6666&$+D0&D3*#-5%@W15U< $#  ,,  ,-"6K-9U +#dR9^C%#5A+%  7|}/~/+A]A]A]A]A[]A ]AH ]AG$]A$]AW%]}8A]8]'A*]A7/]AW/]AG0]A0'0]A5]~NA>N]AN]AV]AHV]A(V]AXW]A\]A8]]A^]_AXa]AHb]AGf]AWg]iAn]An]Ax]Ax]EX=/=>YEX3/3 >YA], A]="и=CиIи3sиSи ZиdAn]013266654&&&5467&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666. '  ,-&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* }C\ ## !! -Q! &D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7>s"t/u/+t3"Ag%]AV)f)v)]A)]A4)]AB)]A&*]uGAG]AKP]A?P]AP]AyP]AYP]A+S]AhU]Xb8+.'+' иAw)]8=иBи.jиLи Sи]0132654&547&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666V$#$  ,0!+ $:)+>&4',#B-%>+':$ ,!/,/* 2G 2G2 4''44'$2C&&C11C&&C2$'44''4 $6! 7>G//+%<+1.+HAZJ]AHK]AGO]cA\c]RAGZ]AX[]A['[]yAy]A]]A]A(]AH]A]AY]AH]AG]AV]EXh/h>YEX^/^ >Y A+7*+0/+^W иhMAGZ]A`]hnиtи^и~и и013266654&&&5467&&#"&&#"32673#5#"&&&54666324&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666. '  ,,m9.-#"-,ABi <0/=!% }&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* }C\ ## !! .O"  !" }(u 2&$1  (w&D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7>6S//K9++-&+43+-A(]& AW]A'7]A]AY1i1]A81]9TA[V]AW\]o^Ae]AGf]A'g]A>]A]A(]A]AI]AX]A8]AX]AU]KEXt/t>YEXj/j >Y!+52+*+A]A(]A]As!]jcAиtYQиtzиA]jииAиQ01#'6654&&&#"&&&&5466632366554&'!53#3266654&&&5467&&#"4&&&#"3267#"&&&546663266326632#"&'73266654&&&#"#"&&&54666t2),'43',)' 2A&&C1T '. '  ,,&9%%>,&9& 0K5 9Q0#<:/-;;#0O: 4K0  %9&,=%&8&+* /?ZO!H)4''4)H! %.3&C11C&#DA#*H7^(C\ ## !! .O" &D33D&&D3-%AV10W@&&@W01VA%-3D&&D33D&)  )7KCL/M/.+AY]AG]A]AW]A]L8 AG W ]A ]A ]A]AK]AX]MA]A(]$AY&]AI']A']A'+]AE+qEX=/=>YEX3/3 >YAX]=A ]33ии)и=G01%4&&&#"32666%#"&'73266654&&&#"#"&&&54666326666320B'&C21B%(D0%@U/#&B22B&.G0;V82U?$$?T0$B8+-6= /U@%'E53D&&D33A'1VA%. 3D&&D3/@D MD.%AV10W@&&54'&@W(>HI/J//+I9 JA,]A8]A*]A]AXh]%>+4+4ии*и>D014&&&#"32666%#"&'73266654&&&#"#"&&&54666326632f%33&&34$m1A%   3&&3#6%-B+%A11A%7XT2%A14('44'(2&C2$'44'$23<4#2C&&C1=1/?1C9> JZ[/\/)K++Ax]Aw]Av]Ax]\@A@]A.@]A=@]![1A21]A!1]A1]SP6+.X+ ++A ]A ]XиP%A81]6;и.D0132654&&&#"466632#"&76654&#"#"&5466632632#"&'732'4&&&#"366#"  $  '. &1W%%  $)8$)4#5) Y  &  *"$  $!7$4'+  #:)$-%(:C  )  &73GVH/I/*4+IA3]AR]A]AV ]HAV]A1] AI#]A#]A']A-]A1]AI2]A7]AF;]A;]AW<]A<]>AW@]AF@]AA]AE]EX/>YEX / >Yии9%A-] C/A1]01%#"&'#"&&&546663266324&&&#"32666%4&&&#"32666%?U/DokD2U?$$?T0EmoD/U?%32B%&B22B&%B2b1B%&C21B%&C11VA%G::G%AV10W@&H99H&@W0&D33D&&D33D&&D33D&&D33D7>3GظH/I/*4+IA,]HA] Ah"]Ay#]Ai2]Ax2]Ah7]Af;v;]>Aw@]AgA]AiE]9+ C+ ии9%иC/01#"&'#"&&&546663266324&&&#"32666%4&&&#"326661A%5SR6%B11B%6RS5%A1-%33&&33%&34&&43&&C28,,82C&&C18--81C&4''44''44''44''4734/5/A]A]A]A]4$EX/>YEX!/! >Y2+A]Arq !(01%666654&&&#'4632#"&57266654&&&'50,-:MX/lh7P4,((,4P7hl/XM:-,0! -3:I%3#88#2&I93- !37>~/0/1/0A]1A-]A<]A] и) +.+$+A ]A, ]A,]A$]A!$]01266654&&&#"'4632#"&57266654&&&'5 %"#--,-,>8,'$ '734/5/45 A]A]A](AY+]AH+]AG/]AV/]2EX/>YEX/ >Yй#-017466632#"&&&&&#"326%6632654&&&#"7$?T02U?$$?T01V?$w'LN)I*,K'X'*Y' 2@&'B10W@&&@W02UA%%AU@''!%'N''!$%E22E%&7>4^5/6/56 (2-++#A"#]01466632#"&&&&&#"326'6632654&&&#"71A%$A11A$%A1#=9 4('6C D &33&&C11C&&C22C.!!94''4 7>7CB>+.++'+A$ qAC S qAm qA qA qA0 qAn qA# qAW#]$и$/8и8/E!/EX3/3>YEX/ >YAX]A3]A;3]3A qA7 qAh qA ]A=!]Aj$q!;A7;]C01&&'"##"#"&&&546326654&&&&&5466632&&#"3`, *=J=*W:3$B3H9?J'9*=J=*'-8!K0&/%/~  '7)LD F ,"'>\@-3''$ '+D 7<J`K/L/3+)@+A]A qA7 qAo qA qAT qA@ qLA~]A]A>]A]]Av]K!A''],A},]A</qA.0qA9;]!FEX8/8>YEX/ >YC$+/ +A8]A;8]8A7 ]A]A7']Aw)]=01&&'"&&'#"&&&546326654&&&&&5466632267&&#"_+ *>I>*"$ '#R'$B2E;896 *>I>*'- 7!r<+]!!,'-~  '7)"3$ $ ' ,"'>!, ! ''$ ' '< 7:HI/J/A qA qA7 qA qA(]A']I A4 ]A" ]*A';] DA7D]6+;+A#+A)qAHX]Ai]A9qA qA& 6 qA qA#]AG"]Av%]A(]A";]01&&#"&&'#"&&&54632654&&&&&5466632267&&#"# 080  $?3'5.*+* 080 #)W-#F"$ +2# % !/!  , >U6He//Xu+Q|+?'+7++AS]A=]Al]A,]A\X]jAVr]A6r]AOyqA,qA[qEX/>YEXe/e >Ym+:,+"D+" иDи:и,2A]LAL]A6m]Ar]AHyqAy]e013'#"'73266654&&&#"#"&&&546663266324&#"32666&&'"&&'#"&&&546326654&&&&&5466632267&&#"s35H3%%3"6&-D+$B00B$6ZV1&@0O<3%%33$i, *=J=* $ "S'$B1E:796 *=J=*'-8!r<,]!!+'-/'<44 $ )35($35<3$2B'%D1>0/?1D(!, ! ''$ ' '< F>Hkw//lI+fr+U`+++GF++AC]A]A"2]!A!]"AF/]1AF5]AF]AG]AsU]AU]EX/>YEX/ >Y+)+ :+uL+io++A # ]AS ]A2 B ]AB:]A:]A!:1:]AQ:]LRиiXиo]иucA]{01##"&'&&&&54666766332#4&'&&##"3326667666655346326632#"'732654&#"#"&732654&#"&&'"&&'#"&&&546326654&&&&&5466632267&&#"+h4`5g,  ,g5`4h+#3'd*6*c)  &`(<00/ 3F2"862FF2 #33#3F02F"3#'-2"#3, *=J=*#$ '"S'$B1E:796 *=J=*'-8!r<,]!!+'-135--531k354,-#R@%%.0/.2.% .2.HZ3F""F32H !4#"56#1GH2#47!#351  '7)"3$ $ ' ,"'>!, ! ''$ ' '< 7#$/%/A/]A]$EX/>YEX/>YEX / >Y 01%4&'7#"&&&54666732666)#,5%AV11VA%$#*3D&&D39U +#dR9^C%%C^9)A4*+ U9-K66K7>! "/#/+#AoqA qA]A\]Aq]AhqAx ]"A]A)qAm}]A'qA]Aw]AW]Ag]Ah]Ax ]AX ] +AiqA']AgqA']014&'7#"&&&546732666} !*1C&&C2+ "'44'-A"N?,H44H,?N"A-#:)):7 -.///Af]AL]A8]A:]. A" ]A ]Ai#]Ag$]'A ']EX#/#>YEX/>YEX/ >YA]AE]AK]AZ]A#]#$,016654&&&5467#"&&&546732H*+,!5-$%AU21V@&8*#*2C'Bz#=X6?$+B$V?*f4(5B(9_C$$C_9Re"+ U9-K67> 01/2/AN]A]A.]A]A] A]ATqAy]A]Ai]A]1#A#]A #0#@#P#`#]A%qA&]A5&]AS&]AY']A&']A6'F'qAV(q*/+'&++Ay]A]A]A]A]A]A]A]A(]A]A%qA'&]016654&&&546667#"&&&546732D  $#"1C&&C2+ "'403#<*)!9C0&'( )2,H44H,?N"A-#:)734/5/AI]4AE]A7 ]A8&](AV+qA1qEX/>YEX / >YEX/ >Y.+AG]A]# +A^+qA +qA.]1A_1qA 1q01326667#"&&&546663266654&'#"&' !+,! # &@W00VA& #3C&&C3I32I)  )1>H%1VA%%AV1%H>1&D33D&0D $++$ D7>/0/1/AO_qA]A]AWqAFq 0 $AW-q*++AXqAq]AZqAHqAZ-qAp-]01326667#"&&&5463266654&'#"&' !" $$2B%%C2$'44'6('8 V!!c;&C22C&;c5''5'1!!37@A/B/*+BA)]A!3EX6/6>YEX/ >Yи% и6/и6<01%#"'73266654&&&#"#"&'73266654&&&#"'66326632%?V.' %B22B%$D4 FG/H/A( ]Ax]Av]ADqG7%A).q3<+ )+ и) и3A%%%]A)7]A7]<B01#"&'73266654&&&#"#"&&&'73266654&&&#"'66663266321B%  4&&44)-C-4.% #J)5&&5)J# %.4:WQ2%B1&C2$'44'/992#')-'34(+*'=1/?1C7 ,-/./A]A]A] A]A]A]A]-A]A ]A ]A ]A ]#EX/>YEX/>YEX/ >Y(+A]A] A ]A(]017327&&#"%4&'7#"&&&546766326J+Z6(NN!*"+6%AU21V@&8*#*(Y()Z'i!$F'_9U +"eR9_C$$C_9Re"+ U9,-' '*7> /0/1/!+A q1 A]AU]0A_!]An!~!]A!]$ +AW!] *013267&&#"74&'7#"&&&5467663266~6'$9<;!!*1C&&C2+ "D D"C-A"N?,H44H,?N"A-#!7EF/G/"++FAO ]A. ]A+]AI]AS]G<,A(5]EX / >YEX/>YEX7/7>YEX/ >Y 'и71A01%#"&&&5466673266654&'73266654&&&#"'632#"&&&rH1VA%$#*3D&&D3)#5,1@$&B22B&  !%/U@%%@U/ ;3*BL%C^9)A4*+ U9-K66K-9U +,g?&L<%3D&&D3/&@W01VA%'31>j /+ EX/>Y+A]A]A?qAqA]AqA-qA]A]01%3j3Q7<t>j,./ +#+A]AA ]A ! ]AP ` ]A0 ].A#]A{]Av ]Af!]AW#]A#]A%]Av&]Af']A{+]-EX/>Y+(+A8 ]A ]014666323'#"&&&%4&&&#"32666t0A%%A1{38 %A0>&32&&23&&C11C&8+!<72C%5''55''5>j01/1йA]'й A]A(]2EX/>Y"+,+++013'#"&&&''776632'4&&&#"32666730&#>0Iif!N6$@1 &32&&23&<7+:"uP":6/1C&$+c5''55''5?>j T/+ EX/>Y+ +0173%5?H,3~.+7g 9Q:/;/4+A1A]:A]A 0@]A7]; A)$]AA)]+A54E4]A$4]A5]A e5u5555qA5]A 55&565F5V5qA25]A!5]A@5]EX/>YEX / >Y+2+++A8] &017327&&'&&#""&&&54666323#4&&&#"63232pbC-,#1V@&&@V12W@'S4E&%B2 3B:$YEX/ >Y(!+1+AgqAgqArq+Ag1]017#"&&&5466632#4&&&#"632323267&&'&&#"C;291V@&&@V12W@'34E&%B2 3tbC  .,$#cE%AU20UA%$C_9-M60@$ - 7>'506/7/AFV]Av]A%qAcq6 A ]A ]7AO]A>] !A{.qAJ.qAi.]AL0]EX/>YEX/ >Y(!+1+A]AHX]A(qA ]A8]A'!]+AH0]017#"&&&5466632#4&&&#"632323267&&'&&#"C;291V@&&@V12W@'34E&%B2 3tbC  .,$#cE%AU20UA%$C_9t-M60@$ - F>QER/J ܹ 7й6S+A*+0132#4&&&'&&&&##"33266676666553##"&'&&&&54666766P`5f+3 -0/6/0.  /0/300. 3,f5`6e-,g-''#    /2/.10  01.HZ244--442k344,F>@LA/'A7"G"]'B>ܹ?+3+01##"&'&&&&5466676633#"33266676666553,f5`6e-,g5 *.  /0/300. 3244--442h344,3 /1/.10  01.HZF>_@?A/5 B!ܹ" ?++?>+01"3!266676666553#!"&'&&&&546667663!!n------12/ 3*f56Y**Y6f /2./20  /1/HZ145,)452k354(3F>_QER/Aܹ.й-S I+7"+01#4&&&'&&&&#!"3!266676666553#!"&'&&&&546667663!2_3 -00.---,.-00. 3-e66Y**Y66e+    /20.20  /1.9K154-'562k243(-''#F>Kc]d/B/VLйd4!ܹ 4e)+QG+_+01##"&'&&&&54666766332#4&'&&&&##"3&&54666324&&&#"32326660A%6e-,g5`5g- 3.007/0.  ,--1A%%A0'%33&0'  3%&C2-442k344,-('# A  /1..1/ B(&C11C&5''5-F%2F>_La]b/C/WMйb4!ܹ 4c*+RH+?+01#!"&'&&&&546667663!2#4&'&&&&#!"3!&&54666324&&&#"326661A$6Y**Y66e+ 3.00.------1A%$A1'&34&1' 3&&C2)452k354(-''# A  /2./20 B(&C11C&5''5-F%2F>:R`S/1/E;йAG]S#ܸ#T+@6+M+01##"&'&&&&5466676633"3&&54666324&&&#"32326660A%6e-,g5,00  ,--1A%%A0'%33&0'  3%&C2-442k344,3 /1..1/ B(&C11C&5''5-F%2F><Q`R/3/G=йAG]R$ܸ$S+B8+M+01#!"&'&&&&546667663!!"3!&&54666324&&&#"326661A$6Y**Y6f------1A%$A1'&34&1' 3&&C2)452k354(3 /2./20 B(&C11C&5''5-F%2F>G]H/.//йH@ܹ I+7&++015##32#4&'&&##"3326766553##"&'&&&&54666766S3a5f+#!3%f*6*c)  .0'0 3 @>0B ,g>30}-#RD'%.2..00 $< !$542k354,F>nU]V/:/;йVN%ܹ%W+D1++015##!2#4&&&'&&&&#!"3!2666766553#!"&'&&&&54666766nS3h6e+ 3 -00.------k% 3.!h6Y**Y>30}-''#    /20/20   ,5  )452k354(F>?`@/8A&ܹ'й A'] ++/+015##30"3326766553##"&'&&&&54666766S3-/.   "'/ 3 @>0A,g>30}3 /2/.00  %< !$450k344,F>nFSG/?H+ܹ,й +5"+ +015##!"!"3!2666766553#!"&'&&&&54666766nS3hf------k% 3.!h6Y**Y>30}  /20/20   ,5  )452k354(7EF/G/A+AG]FA7 ]A ]A& ]AF ]AQ ]AX%]AH&]G7(A 0)090I0]AZC]EX/>YEX/ >Y A' ]AX ]#и-A0]2и<01"327#"&&&54666323266654&&&#"'632#"&&&'&&&&%?//?%&0R<##HI/J/D+AqAqIAqAqA ]Av ]A 7 G W g ]A& ]A ]A"qA&qA&qJ:)A ,,qA*2]A2]AY2i2]A92]+ +AX ] $и/и4и?01"327#"&&&54666323266654&&&#"'6632#"&&&'&&&&2$$2%@..@%%;+!-2$$2  %@..@%$:,!-}'44'$2C&&C12C%4''44'"1C&&C22C%4'7'e(/)/() EX/>YEX/ >Y#017466632#"&&&%4&&&#"326667$?T02U?$$?T01V?$2@&'B11A%&C20W@&&@W02UA%%AU2%E22E%'D11D>'(/)/() AqA]Ahx]Av]Ag]A]AqAv ]A ]Af!]A!]A!qA%qA%]Ai%]Ay&]+#+A!q01466632#"&&&%4&&&#"326661A%$A11A$%A1>&33&&33&&C11C&&C22C&5''55''5>*]+/,/+ܹ,  A9*]A*(*]+%++013266654&&&#"'776632#"&&&'&43$&23(pif!O5&A/1@$#>05''55'&5P":6/1C&&C2+:"@()/*/A]AqA6qA]Aq  )+%++AqA!]A]A]A"%]A%]013266654&&&#"'776632#"&''((& XeEN<*4''54N ))();(*%'56(C87@ȸA/B/ +AA(]AX]A'"]A8(H(]B9ܹ*A2]A(2]EX/>YEX/ >Y AX] %и/и4и>01%#"&'73266654&&&#"'66323266654&&&#"'632#"&tID|-`5*E0 4B$5`-|D+TD(4E)%B22B% '.V?%%?V.Ap?OEC5:4G($B0;4DE#:P+!H>(1D'%E2 /&@W02UA%R7>BC/D/ +CиD;A;]A,;]*A,*]Ax3]A)3]A83]AX3]+ +A]A] %и/и6и@01#"&'73266654&&&#"'66323266654&&&#"'6632#"&X94`$I* 5%)3*I$`4!B3 '54&&4  %A11A%2U0=54),)6 2%+*45.<"80'54'$2C%&C1@F>_H//I+:+0++++]A(p]tAt]sAs]A#]EX+/+>YEX/ >Yи+"5и"?и+DAR]AYRqA~]A"~]01%#"&&&'#"&&&'73266654&&&#"'6666323266654&&&#"'6324&'&&&&#!"3!266676666553#!"&'&&&&546667663!2"&'73266654&&&#"#"&&&54666326632"3266654&&&P%?U0!=6,,9C$!C;/+_5*E1 4C#5_+/;C!+UC)3E)&B22B&!%0U?%$.00.---,.-00. 3-e66Y**Y66e+   )  )- '9$ 8**8 /IF* 8**8)**)1VA%'3 4%"3"694F)%A1:5"3"#;N,!H>(3D&&D3 /&@WA  /2..20  /1.9K154-'562k243(-''# %++ +1/)+:!!9*1''1*9!!:+ ++  ++ 7L_1`/a/.+G8+a`A(]&A'0]A86]A@]AO]A(O8O]QA+TqAY]EX)/)>YEX/ >Y иA]AV]A)])"AY&]A&]3и"=и)Bи3LA8O]=VиB[01%#"&'#"&'#"&'73266654&&&#"'66323266654&&&#"'6323266654&&&#"'632L$?V0Cl!rHAp tID|-`5(D13D%5`-|D0UB&/H0'C00D( '4V=!/F0&B11B&'0V?$2UA%O??ORYEX;/;>YEXA/A>YEX/ >Yи2 AA]AA)])*Ai+]A;];:01%#"&'73266654&&&#"#"&&&5466673266654&'76632%?U/$%B22B%'D1!/+01533S3>30++0177KP0_1(> 7 /и/ й ++0133!5333SS3>c330(># j/ ܹйй  ++A]A<]Ag]A%qA ]0133!3!5333R3S3>c3c307>[O\/]//+#+][A,[]A-]A]A/]6\?A?]AA][IA-I]AGO]A'O]AO]?RAT]AGT]AIY][ZA+Z]EXD/D>YEX:/: >Y3+'++AD]AYJ]DMAHO]:WAVZ]01"&'33266654&#"'6632##"&&&'&&5532675#"&&&5466632&&#"32673n<)O$  r  " "),4)"0c<-T)#Z-1VA%%AV1!C;0,_6&D33D&6_,Y #5    ' $,; B'%m %AV10W@&"3"5:3D&&D3967uN\߸]/^/2+'+A]A)9]A ]^HA H] A ]];A;]EX>/>>YEX/ >YMйZUйA]A]>7и">C01%666676324&&&#"#"&57266654&&&'5666654&&&#'4632632#"7&&#"326 !0#09  4D%2[*$'-cphl/XM;-,00,-;MX/lhR_In1V@&)BX/4 $-- ?c!<3*$@030 09"9QI93- !3" -39J-#P&?W15W?" <,K7>P]I^/_/3+A8]A)]Ax]AX]_JAJ-J=J]AOJ]AlJ|JJ]AZJ] A ]и^<и3(A9QIQq8?+#+-.+V+A[]A]8A' ]A ]A;]A(<]?EиOA8QHQqA]V]#[01666676632&&&&#"#"&57266654&&&'5666654&&&#"'46326632#"7&#"326$*'4&G "NUOU$E;-""% %""-;E$UO?JH)%B24C$) #" 0NP.'!  1%'$%,,>9+'$ ' #(+:# 1C&)C0.!97>8rs/t/+DE+t A(]AW]s) AT]^/d/S/m/EX./.>YEX$/$ >YEX/ >YA;.].и$#.4иd>^KSTmn01%'6654&&&#"#54&&&#"&&&&546663266324&&&#"#54&&&#"&&&&546663266323#566##)3D&&D333D&&D3*#$%AV1EppE1VA%'44'''44' 2A&6VV6&B2I&*A4)+ U9-K66K-ll-K66K-9U +)4A*9^C%H??H%C^$:)):$TT$:)):$-@! (3 +H470074H+28'!B7>ee//"+V+m+fGܹA]A[%q5,A0]Ax]EX:/:>YEX0/0 >YEX/ >Y{r+dY+Q+A:]:'A']и0/:BA,_]A_]A9_]013!266676654&&&#"'6654&&&#"&&&&5466632666632#!"&&&54632&&&&#"4&&&&&5466632&&#"#j ?  2B%%C3##)3D&&D3*#$%AV1Ht,4>!/U?%")* ~AiO5 -B[@$7?7$1B%, /2/#$7?7$3 5&D3'>M&(?1'+ U9-K66K-9U +)4A*9^C%LD6'&@W0'@  #LG $  *:.(.<,%A0#."1*(4E2H7>FG/H//<;+G  AG ]H%AZ]AI] и.EX / >YEX*/* >Y4+A ]AV ]*  A]01"&&&'&&573266654&&&#"'666632#"&'332676553##)"-_6&D33D&6_-0;C!1V@&&@V1-Z#13  > B'693D&&D3:5"3"&@W01VA% 5 08  7>"7FG/H/A]AqAqA)qA]A%qA]AqAqA)qA"qAiqAqG'A*]Ah,q/и':Af?qAZ@]AUE]EX,/,>YEX"/" >YB2+Ao,qA,],A22]A2qA2]2 AS ]AKB]BAL]AN]"A5qA5qAd5qA\=]A=qAi@qA@q01&&#"326&&#"3267#"&&&5466632#"&'&'667632[/'1 -*!1-*2W[ %8K01V@&&@V1M{Q9(B2 H**3)B,* * (!*:6+%AU20W@&PH 'BJ%'H#17>YZ/[/ +A=][U*й ZKAK#K]AK]4A]Ax]A]EXP/P>YEX/ >Y +E:+A ]A}]A]A]%P/A/]AI/]AK]01"&&&5466654&#"'6666323266654&&&#"3266653#"&&&5466632P( "*"#,&"*" 0%2@ &D33D&'B.3 _"7>8"#@##6n#f$/%/$ A(]EX/>YEX/ >Y 01%#"&'73266654&&&#"'666632n&?U/1 * &B11B&=e:!69@*/U?&2UA% .1D'%E2D0-,!&@W)yw/  +A ]A ]A ]A ]A ]EX/ >Y +012#4&'"#46/NZ3?65@3V][6K9=HRf)"#/$/+$A']A6]#"A#"3"]!EX!/! >Y + иA(]014&#"#4632666632#4&#"#F?65@3VR*! !+RT3>5+ 3K:=HRf  fRH= 3%6'Y(/)/(и/) ܹAqA! )9IYiy]A )9IYiy qA!&6FVfv]A&6FVfv qAq#++01466632#"&&&%4&&&#"326660B$&@00@&$B0>%33&&33%%D11D%'B22B'5((53))3'3?E.(+ ++Ab ]A]AZ]AT]Ag]Ag ]AT ]AY&](4A4]A7].:Al:]AZ:]A:]Ay;]AX<]+#+Ag]A1]A1]A7]AL7]A?7]A7]A7]A7]Ay7]A<]AW<]A0=]01466632#"&&&%4&&&#"326667#"&546324&#"3261A$%A11A%$A1>&32&&23&-,,-&C11C&&C22C&5''55''5-- --!5A4+ *+//++%01466632#"&&&&&&&#"326'6632654&&&#"1A$%A11A%$A1$  >> #<B F &32&&C11C&&C22C0  #=5''5(></EX/>Y+0133(3S>~37>///+013#jS_3c(>A g /и/  EX/>YEX/>YAEqA]0133!33Q3>~3~7>Q [ /и/  //+A]ADq0133!33R3>c3c7&45/6/'/6Ak]5 AE ]A ]A'7]AV]A]A]A)qA']AB']'A]-A-]AX-]A3]A4]EX/>YEX/ >YA]A]A]A]AJ]A]A*]A9]AYi]Ax]A(q*2й!Ae!qAT!]A$]A-]01%#"&&&5466632&&#"66766323267&#"8U;1V@&&@V1D|,`5'C2A!*(H,3Z01496'%AU20W@&ED4;2E%'B'/ u +0%bp3/+й++01%7+b!3GH/>й  йй*AE*]4+%AI%]A(%]Ah%]9$/Ag/]A'/]AE/]C01466632#"&&&74&#"32674&&&#"32666%466632#"&&&!" #!   S%33&%23&0A%&B00@%&B1$ $$ %""!!4''44''4%B22B%&C11CbrC//++01%,!jH E/+й + +AbqApq01&&546324&#"326-",,-..--jh 3/+й + +01#"&546324&#"326-,,-..,,7 #/)0/1/0A]A%q1A]A#qA%q A qA qA qAqAqAqAqAqAqAqA#qA qA!qA$qA$qA&qA'qA*qA*qA-q'+!-++ +Ac]A qA qAqAqAqAqASc]AqAqAqA!qA!qA!qA'qA'qA'qA'qA-qA-qA-q0174632#"&74&#"3264632#"&74&#"3267,--,yy,--,yK ,, ,,F ++ -- 3/+й+ +01&&#"3"&&&5466632=2'$.0A6%1A!.K"#%6!)9$'0G-(D0*#?'/7?GOW_gow4<+A!44&464F4V4f4v444444444]A 44&464qAE4U4q48и8/4HиH/<Lи4T01#"5432'#"5432'#"5432'#"5432#"5432#"5432#"5432#"5432#"'632#"5432#"5432#"5432#"5432#"54327#"54327#"5432 $7@?7$  $7?@7$.%6GPRG5%7'e(/)/() EX/>YEX/ >Y#017466632#"&&&%4&&&#"326667$?T01V?$$?T02U?$1B%&C21B%&C10W@&&@W01VA%%AV1&D33D&&D33D:!"/+" и#EX / >YEX/ >YA(] AY]A  ]A]AV]A7]A' ]01%4&&&#"'6632#"&'7326662E%5`,|D1V@&&@V1D|,`5%E2%E2;4DE&@W02UA%EC5:1D7>N// EX/>Y+01#"&5332666531J1cb3)45(3!<-dQ$3 2"&:>%&/+A]&A]'EX / >YEX/ >YA(] A]!A'$]01%4&&&#"'6632#"'#&'7326662E%5`,|D1V@&&@V1*2=,`5%E2%E2;4DE&@W02UA%=5:1D<>%&/'/ +&'  EX/>YEX/ >YA']AW]AV]A]AY]A]!AX#]A($]0173267##"&&&5466632&&#"o1D'4`+ >1*2UA%%AU2C}+`4'D1'D1:5%AU20W@&ED4;2E7>5AC/B/9 +?+AW ]CB +AG3]AF3qEX/>Y%+6+<+A7]0012#"&55666632#"&&&533266654&&&#"66"32654&.AA.-A";R38X>>X84T;!30@'&E11E&-I !#$#MA+-DD- (Q?)*DU*J,RD(*CT*!B4!1E)(D1,"3!$$!7~6BC/D/4@+:.+DC A ]A" ]A0 ]йA]A#3]A] !A#&#]A3#]A+]A+]EX1/1>YEX/ >Y+,=+&1701%#"&&&5466632#4&&&#"326667'&54632'"32654&!:V39W= =W93V:!30A''C22C'!9- Z@--A'G""!!(TD+(DR,*UD**DT*!B5!1D(M)E1)60Q-AA-4 !$$!7>3c4/5// +5(4AG]EX#/#>Y+#01267#"&&&546666654&&&#"#466632P "&$- %7A7%$7@+C.3:W8&RE-%7A7%q % $11*_caYK3G,#6B'SF-YEX/ >YEX%/% >YAg]A]A(%]%&.0176654&'&&&&5466632'6654&&&#"%#*,+!4,$&@V12UA%6+"*1E&C/@#=/E?$+B.$S?*i4)4B*9_C$$C_9Tc"+ U9-K6(7>2>?/@/6<+6<A' ]A[ ]Ai ]Ax ]A^ ]AK ]AF]?(A#(3(]A(]@/EX-/->Y"+9 +A]A= ]A, ]Ag ]-3A3]A>9]A,9]01%#"&5477&&#"32653#"&&&54666322654&#"'A--@Z ]H'C22C'Nc3!:V39W= =W95T<!#"!"2-@@-S.Qb1D(M)E1sc9aG(*CT,*TC))Fb9""""7jK/EX/>YEX/ >Yи013373D7/и/ EX/>YEX/>YEX/ >YEX/ >Yиии0133#333DD7>[wvx/y/'++do+A7]x/0AF1]Ae1]AH6]yK8AH;]/AA'A]ASqA%SqAS]A+T]Aeb]AGe]EXF/F>YEXP/P >Y_t+ji++W+++A;]A<]A'0]Ag0]A0]AV0]P3F=AY@]A@]Ahb]01##"&&&5466632&#"33266676655#&&'573266654&&&#"'666632#"&'3267&&#"3"&&&5466632! )& ))" y! &O'Jrt//B/++A7]IAI]A,I](AP]A6PFPVP]AvP]AeP]AP]WAW]A W](aA^a]A+a]dWnA&s]A:{qEX\/\>YEXR/R >Y=4+p+ ++A?]A>]AXW]AW]A\]\iAi]RxA8{q01#!"&&&5466632&#"3!266676654&&&&&5466632&&#"#"&&&5466632#4&&&#"6323267&&'&&#"")& *)" ?  $7?7$1B$-!/1/#$7?7$D".! 0;1VA%%AV11WB&34E&%B24t"/;!  -,# '@ %$' " 5*:.(.<,%A0#."1*(4E2g*2<"%AV10U@&%C^9.L61@$,4%+= 7>&'/(/%&й' %и %$Aj$]EX/>YEX/ >YAYi]!AW$]01#"&&&5466632&&#"3267#Z-1VA%%AV1!C;0,_6&D33D&6_,> %AV10W@&"3"5:3D&&D3967X9Zgvw/x/PA+Af]AS]w xXYܹAUqAE!qA&!qAe!qA!]A)]Ag)q ,A'9]EX/>YEX/>YEX/ >YMF+5$+A]A]A]AXqA!]A$]AR$]AU']A)]A)]Ac)qAm/qAL5]5^AG`]ekAUq]$tAt]01%#"&&&54666326632#4&#"#"&'&'6676632%4&&&&&5466632&&#"#&&#"3267&&#"326 %8K01V@&&@V1QB<4G3),!Q9(B2 >+3)$6@6$2@&9? .15L$6@6$3* $1-*2W[/'1 -6+%AU20W@&0;Q?0)!& 'BJ%'H#* *:-).<,%A0:I6#0*(3G1z  (!*,* *7>#u7>*Z+/,/( +,#AL#\#l#]+++01267#"&&&5466654&&&#"#466632 % 2   $ q-81&    #./.7>@LٸM/ A ]1A1]#йJDй@йA1]Av]A6]NEX/>YEX@/@>YEX/ >Y@и,&йGAйAI]6Af9]01%#"&&&5466632&&'#"&&&54632&&#"3267267&&#" #3T>"$?T0.J3&(?!%60 A:'C10B&,@#!.#Qj%AV10VA&1D'?. !-7 33D$(D2 (7<!s>j EF/йй+8йFDEGEXD/D>Y3+=++(.DE01267&&#"'#"&&&5466632&&'#"&54632&&#"3266673# '2%'B02A '   //(& 0/4&&33 ' 62C&%C2&32$##+ ''4 4&  )<73GH/4*йй AF ]A ]AT ] й>A>]IEX9/9>YEXC/C >Y9%иC/и017466632#"&&&74&#"32674&&&#"32666%466632#"&&&$,,#.,$))))l1B%&C21B%&C1b$?T01V?$$?T01U?%/  /-$ 0,,!++!&D33D&&D33D&0W@&&@W01VA%%AV6>3GH/I/H4*иI>Ao>q  й%9+++C/+Ac]A]Ar]A]A]Al]A{]A]01466632#"&&&74&#"32674&&&#"32666%466632#"&&&!" #!   S%33&%23&0A%&B00@%&B1$ $$ %""!!4''44''4%B22B%&C11C7> OP/Q/+QIAI]Jй(P1A1]A5'5]8IBAE(E]EX4/4>YEXF/F>YEX,/, >Y "++,и45=A7=]AF=]AU=]FE017327&&#""&&&5466632&#"3326665#"&&&54676632654&'7#J+Z6(N !&(& *)" $3!!d51VA%8*#*(Y(*Y'*"+61C%i!$F'%$' "(/T-.$C^:Re"+ U9+.' ').9U +"eR)C2)>~'K(/+( и"и)#++0134&&'#"&&&5466673265533#= 6'1*,!0:q (!_k k2( 1(%0 } l)>t!D"/+" !#+ +AG ]01&#"32675#"&&&54666353*$#)K% %L0:6&%583 "2,(2 i>3//++01339>c37>-;YEX / >Y+:++ A* ]" 101533#"&&&5466632#4&&&#"632323267&&'&&#"S3C;291V@&&@V12W@'34E&%B2 3tbC  .,$>30#cE%AU20UA%$C_9t-M60@$ - (Q/ܹEX/>YEX/ >Y013#53}3D7>&'/(/'A]"й!EX/>YEX / >YA]AW]012#"&'#73266654&&&#"'66661V@&&@V1-Z#3,_6&D33D&6_, )8G&@W01VA% ;693D&&D3:52%(W/йий EX/>YEX/>YEX/ >YEX/ >Y013#533}3w3_<rD%8 o>8@7z7=7p4HuK7 7:](7(7-s7(.*3'*(({@7{ {4 XH^4HHH4wHH4PHHHH4+H41HM4"HF a sR %(`^7`^@+ =---&  -=:====-=-B=-8=   -F3727]x(x(((8@4|677{77@77I7777877@777@7777a777t877778787G787,787+787x787A7A7737777(97777@77777FH77I77I7777I7771t?L7L7L7FFFFFFFFFFFF77?77 g@77F777z7(L(G777778787@7@7Fo7))777(7'(67@77777jj777@7@:7@:@<@7@7@7I7@776787787787 77s?76H77)7)7L7(87(FFFFQEdg 0 #  > q V .`|6q(^,'7iHz8K^|J ) !"n"#*###$%s&a'R(L())**+"+g++,H,_,--N-.R...//J223567278X89:;J<0<=>?4?@ABCpD3DEGH;IJ JKNLMNOPQRSTV8WhYZ\\]^_`W`abcd:e5fhi"ijklm!mn|oLopqqrvrstuv%vw+wxyCyz{,{|i|}~PpĂA`Dd 1%Pj؏؏g6!!0su-̙)ŝӟB!-wިNx(_ެ77777 ]V-->Ec t  % Z "Q s < "  0 % ' - JE 4 "  Copyright (c) SIL, 2003. All rights reserved.Padauk GrcRegTestRegularSIL:Padauk GrcRegTest:20-6-106Padauk GrcRegTestVersion 2.0PadaukGrcRegTest-Regular SILDebbi HoskenReleased under the Open Font License.http://scripts.sil.org/OFLPadauk GrcRegTestCopyright (c) SIL, 2003. All rights reserved.Padauk GrcRegTestRegularSIL:Padauk GrcRegTest:20-6-106Padauk GrcRegTestVersion 2.0PadaukGrcRegTest-Regular SILDebbi HoskenReleased under the Open Font License.http://scripts.sil.org/OFLPadauk GrcRegTestNoNameNoName2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ circledashu1000 u1000.medu1000_u1001_u103Bu1000_u103B_u1015_u103Au1001 u1001.medu1002 u1002.medu1003 u1003.medu1004 u1004.medu1004.med_u102Du1004.med_u102Eu1004.med_u1036u1005 u1005.medu1006 u1006.medu1007 u1007.medu1008 u1008.medu1009 u1009_u102Cu100A u100A.altu100B u100B.alt u100B.med u100B_u100B u100B_u100Cu100C u100C.medu100D u100D.med u100D_u100D u100D_u100Eu100Eu100F u100F.med u100F_u100B u100F_u100Du1010 u1010.medu1010_u103D.medu1011 u1011.medu1012 u1012.medu1013 u1013.medu1014 u1014.alt u1014.medu1014_u1010_u103Bu1014_u1010_u103Cu1015 u1015.medu1016 u1016.medu1017 u1017.medu1018 u1018.medu1019 u1019.medu101Au103B u103B_u103Du103B_u103D_u103E u103B_u103Eu101B u101B.alt u101B.longu103Cu103C.alt.narru103C.alt.wide u103C.wideu103C_u103D.narru103C_u103D.wideu103C_u103D.alt.narru103C_u103D.alt.wideu103C_u102F.narru103C_u102F.wideu103C_u102F.alt.narru103C_u102F.alt.wideu101C u101C.medu101Du103D u103D_u103Eu103D_u103E.smallu101E u101E.medu101E_u1010_u103Cu103Fu101Fu103E u103E.alt u103E_u102F u103E_u1030u1020u1021 u1021.medu1023u1024u1025u1026u1027u1028u1029u102Au102Cu102B u102B_u103Au102D u102D_u1036u102Eu102F u102F.medu1030 u1030.medu1031u1032u1033u1034u1036u1037u1038u103Au1039u1040u1041u1042u1043u1044u1045u1046u1047u1048u1049u104Au104Bu104Cu104Du104Eu104Fu105A u105A.medu105B u105B.medu105C u105C.medu105Du105Eu105Fu1060u1061u1062u1063u1064u200Bu200Cu200Du2060+++o[G3+w\B+gTB/+ 6,"+ @5)+ bP>-+ & +o[G3+w\B+I<.!+cQ?-+& + + E}iDt  .1   > >>&   v v"$'  "   , ,"), $ $$ 5 5"),   s s"$' $ $$.1.1.1 .1     , ,"),   m m"$'     "), * *%"  3&6  " '  '     $<S  S$$"  "),  $  $  $  "$'S  Sd"  "), s s  s"      "$'  t" T T"   c c"$' + +"),   m m"$'      "),     , ,"),        "),   I I $ $$ 5 5"), $ $$  5), $ $$ 5 5"),   j j"$' & &$ 5 5"),    "36  "3&6  "3&6  o"O36W  '$" \ $W" $ $W" I I"8@ I I"8@  "8@  "8@  8@  )"8@  8@  )"8@   '"8@  "8@   '"8@  "8@   U U"$w'     ")N, b b") ,)i,   j j"$'   c cc    ="), I I"-),  "),:N a a")&,:Z  $   j j"$'  "   $ $$ $ $$: j jj"8   ` `9 ` `9.M1.1.J1  C    ")Q,:      "),:+ $ $$.@1.M1.v1 .1 ;> .1   ")N, $ $$       ) ))   $ $;:   $ $$    p p    $ $$ x x"),     "3&6   , ,"), & &$  ="),  ="),;L>W  '$"          E "(.48<@HLRX^djpv| $*06<BHNTZ`dhlx|  $(,048<@DHLn4V|.Pv6V~ 8^~<\@j  ( N p  " : \ 6 \ ~ , Z  D j Bh*Lt<f*TzRXz 4V@b .PZ|HjDf*F&e*-_-61rx~  0@lprt{}xwyyvj koqsz|~ v =4!   bccddeeffgijjkkllmmnnooppqqrrssttuuvyzz{{||}}~~                !"#$     +AVj} '/7?G         ! &#&&%%&$&$$&%&&$&"'&  54446657775(58)(559**::*+,-./012;3<58)(5(558)(58)(5954446657775(58)(559**-./012;33< #0 #0##0##0##0##0##0##0##0##0##0##0##1##1#1#1#1(#0#0#1#1#1(#1 S$$$|ASl@,ijjkklnooppqqrrssttuuvyzz{{||}}~~          "#$%&'()*+,-./012356789:;<=>?@ABCDEFGHIJKLMNOPQRSTU((96    PQR4I8MO78)*+,-./35AEGHKNL=012?C@DFJ';<>B%&:#$!"     5Oh&>Ul.Jf ;Uo .<JXiz*5@JValv ABC  ABC))))*))+D,EFGHIKLMNOP!!ST !""U"V##WX#Y-----------%%Z$%[\&&]^&_`ab((d(efg0000000jJQR....c/c'.1111h2h1ii3333k4k35555l6l5mm7777n8n7oo9999p:p9qq;;;;r<r;sst=tuu>>>>v?v>wwxxy@yzz{{   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   ;!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0   85!0 83!1;!  1; !  1; !  1; !  1; !  1; !  1;!  1;!   1;!   1;!   1;!  1;! 1; 1;! 1;! 1;! 1;! 1 831 831 831 83111111111;! 1;! 1;! 1;! 1;! 1;! 1;! 1;! 1;! 1;! 1 1 1 1-X-X-R@ijklnooppqqrrssttuuvyzz{{||}}~~    !7"<0"<<<0"<"<00;!!0;!!0 WZxZxZy{g'ijjkkllmnooppqqrrssttuuvvwyzz{{||}}~~      ! "##$%&&&     !#$&'(*+,-./013456789:;<=>?@ABCDFGHIKLMNOPQRSTUWXYZ[\]_`abcdeghijklmnopqrstIIII04KJJJ:9::99;8.26UA@F?AT>@CIISEJJ8HV2/3 *B OQ(,RD=67G1-1) $MNP&&''+<5 ""##L% !  *;KZl} *8EXj|+=Oar ':L^ov}  %4BIPW^elsz                           d{||}}~{~||~~||||}""""""""""##''$$%kk&&&j'lmm))nnnkkoooo)(*+--pqriistuv-,..##$$$kk/01222ii364555ii377ef!!gggiihhhh! ;;;;;;;;?@@AAAAAAAABB9Bxx9999;;;;;;;;CC;;;;;;;;yCCCC;;;;;;;;yCCHHII88989999IIII::9:ww9999II?99999999HH88989999::9:ww9999;;;;;;;;?KKKwwLLLMMMMMMMMMMMMMMMMMMMMMMMMQQQQQQQQRRRRRRRRSSSSSSSSTTTTTTTTMMMMMMMMYYYYYYYYZZZZZZZZ[[[[[[[[\\\\\\\\]]]]]]]]^^^^^^^^________````````aaaaaaaabbbbbbbbccccccccef!!gggiihhhh! 88989999::9:ww9999;;;;;;;;;;;;;;;;<><=>>DDDDEGEFGGHHBB9Bxx9999;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JJ;;;;;;;zJJ;;;;;;;;JJ;;;;;;;zJJJJ;;;;;;;zJJJJ;;;;;;;zJJNPNOPPUWUVWWXXXXQQQQQQQQ;1! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 0! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 081! 0! 0! 0! 0! 081! 081! 081! 081! 0;0;0;0;0;0;0;0;0;000820820;!82!0;!82!0;!82!0;!82!0;184! 184! 1;0;0;0;0;0;0;0;0;0;0;0; 0; 1;! 13+@AABijjkkllmmnnooppqqrrssttuuvxyy zz{{||}}~~     !"#$#$%"&'(    )  *         "#$&'()*,-./0135679:;<=>ABEFGHIMNOPQSTUVWYZ[\]`abcdefghiklmnoqtxyz{|}~*".*))."".$&)."".&)))).2".$&""$&)&")$&"2)))..)).))))).).)))).))!--(!!-#%((#%-!(((((!(-(((---,'''''',,,"&*2!% #10 /  ++  "-8CNYdoz *5@KValw'2V#k?[.uIa2wH  ` . r S ( m     9:      9:  ?EC@@CCBCC@CA@D?KIFFIIHIIFIGFJLTUMMCQQRBRCOVPNSLWRMM C RBRCOVPMS?YZFF!IIHIIFIGXJ?\]@@"C^^CBCC@CA[D`WR__ C RBRCaVb_SeKIddIIHIIdIcdJe\]gg"C^^CBCCgCfhDeECggCCBCCgCDgDe\]gg"C^^CBCCgCDhDeKIddIIHIIdIJdJeYZdd!IIHIIdIJiJ<==jECkkCCBCCkClkDjKImmIIHIImInmJoTUppCQQRBRCrVsqSoWRpp C RBRCrVspSjYZmm!IIHIImIntJj\]kk"C^^CBCCkCluD###$$%%v%w%%w&##&&#$$&&~}{yy{(({z{{y{|'y|~((((((((((((~{yy{(({z{{y{|'y|~(((((((((((((*),+.*),+*//11100112222233333333554554665547777788;;;;;;<==>>>>>><==###$$%%v%w%%w%%v%w%%w&##&&#$$&&~}{yy{(({z{{y{x'y|~}{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~((((((((((((~}{yy{(({z{{y{|'y|~((((((((((((~{yy{(({z{{y{x'y|~{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~(((((((((((((~{yy{(({z{{y{|'y|~(((((((((((((~}{yy{(({z{{y'y|~}{yy{(({z{{y'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|*),+*~((((((((-((~}{{(({z{{'|~((((((((-((~((((((((-((~(((((((((((~((((((((-((~{yy{(({z{{y{x'y|~(((((((((((((~(((((((((((((~}{yy{(({z{{y{x'y|~((((((((((((~((((((((((((~}{yy{(({z{{y'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{|'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{'y|~{yy{(({z{{y{|'y|~}{yy{(({z{{y'y|~}{yy{(({z{{y'y|~}{yy{(({z{{y{'y|~}{yy{(({z{{y{|'y|~{yy{(({z{{y{'y|~}{yy{(({z{{y{'y|33333333333333333333334434334333334333333".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70".70<8#370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#="#=!#=##<;#<># <=# <?# 370&#=#="#=!#=##<;#<># <=# <?# 370&#=#="#=!#=##<;#<># <=# <?# 370&=#=#=#=#<.#<1# <0# <2# 37#0&=#=#=#=#<.#<1# <0# <2# 37#0&=#=#=#=#<.#<1# <0# <2# 37#0&#= #= #= #=#<)#<,# <+# <-# 370&#= #= #= #=#<)#<,# <+# <-# 370&#=#=#=#= #<$#<'# <&# <(# 370&#=#=#=#= #<$#<'# <&# <(# 370&#= #= #= #=#<$#<'# <&# <(# 370&#= #= #= #=#<$#<'# <&# <(# 370&#=#=#=#=#=#<.#<1# <0# <2# 370&#=#=#=#=#=#<.#<1# <0# <2# 370&#=#=#=#=#=#<.#<1# <0# <2# 370&#=@#=C#=B#=D#<#<# <# <# 37#0&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#=#=#=#=#<;#<># <=# <?# 370&#370&#370&#370&#370 x@8@AABijjkkllmnooppqqrrssttuuvyzz{{||}}~~              %@BD[r    <: #*<: #<: #1<9 #*<9 #111<9 #*<9 #1<9 #*<9 #1*(( ((#1#1grcompiler-5.2.1/test/GrcRegressionTest/fonts/icu42/SchBenchmark.ttf000066400000000000000000011234541411153030700254100ustar00rootroot00000000000000`Feat~ Glat(cGloc-_@ LTSH>KlOS/2n `Silf"P#LSillF_VDMX[ccmap7o `cvt 5`fpgm2Psi|bgasp glyfhdmxm6Pkheadb->-6hheav-$hmtxb.loca@maxp S name;Spost\Y!4lIprepu,jLL;LL+/"DLD;L"/L77LL77DLL"D73D/L/DDD;DXXXX SIL@ JA       !"#$ % &!'"(#)$*%+&,&-'.(/)0*1+2,3-4-5.6/708192:3;3<4=5>6?7@8A9B9C:D;E<F=G>H?I?J@KALBMCNDOEPFQFRGSHTIUJVKWLXLYMZN[O\P]Q^R_R`SaTbUcVdWeXfYgYhZi[j\k]l^m_n_o`paqbrcsdteuevfwgxhyizj{k|k}l~mnopqrrstuvwxxyz{|}~~& $%&'()*+,-./0123456789:;<=>DEFGHIJKLMNOPQRSTUVWXYZ[\]^b6ACSTU"#efoptuwx~?7ID[$+4lv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiulv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiu*w#5,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-<3Bci+EX/ >YEX0/0 >YEX;/; >YEX>/> >Yn+nX01#".54>32#"&/&#"#".54>3232767>32#".'+#".54>3232>7>54.54>32>76332654.54>32!%!!#  C        b %<^t8&=* !/6;7/# 2*    "   u       3,  "jG,; ?4 #. ,   @0+#.   8m0H+A]A )9IYiy ]9/A! )9IYiy]A! )9IYiyqA! )9IYiyr и/)и)//$/01"&54.'.54632#".54>32j    0#&0 &3FBS"-'*=[EE[=*'-"SBGHH 3d^!"/#/ܸ A ]A  ) 9 I Y i y ]"и/A&6FVfv ]A]//EX/ >YEX/ >Y01#.54632#.54632 %",#( !+#),[\Z*"Y_]%)1-""ei]'W[Z)'3-EX/ >YEX/ >YEX / >YEX/ >YEX/ >YEX/>YEX/>Y+ии и ܸ иииии01#!##53#533333#3!F=EG@F5E//EX/ >YEX/ >YEX/>YEX/>Yܸ(ܸ.к89>9?01%#5.'53.54>753#.'4.'>1Sk:1D?!zg._L1-J`31"><= gk-hY;7(+5#5>&A0>cG)^^jl ?M`>8X>#FF  g GTf#4#"<3*Z&?5,k3Cu7Mg'^)+N+D +A ]A  ) 9 I Y i y ])D9A!&6FVfv]A!&6FVfvqA!&6FVfvrи/NQиQ/A^^&^6^F^V^f^v^^^ ]A^^]6/EX./. >YEX/>YEX/>Ya$+a=и=/ܺ6969GAGG'G7GGGWGgGwGGG ]AGG]01#"&54>32##"&'#".54>32326734.#"32>4&'.#"32>$4CS0h\8]yB#<,J.^2' 0VsD3F+7]xB)42:.Fx,J)#>5)-3%B7,  '" ,.*6&B7+)]ZR?%qd@hB.>G)=tL 8O.?kC 29^.$&?PRN1;"9INL(!#9I1A#:JPN9Pdvpm+[+&Q+&8и8/AQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ rA[[&[6[F[V[f[v[[[ ]A[[]Amm&m6mFmVmfmvmmm ]Amm]EX!/! >YEX/>YEX/>YMAMM'M7MGMWMgMwMMM ]AMM]P!9!VAVV]AVV(V8VHVXVhVxVVV ]rArr'r7rGrWrgrwrrr ]Arr]01%#".'#".54>7.54>32>54.#5!"32674.#">.'32> (:M/(JC<%INX33aL/;[p4'(F`8*J8!/IX(-c9/& >  "J+2:?!9DH+1$  #C4 FAk3$A22F+962,M8 *5 7'9V8Ao\I3v99\@".D,5SA2RJ?EI#  $)(J,)J7 #?^/EX / >Y01#'.54632 )!) %#& F9-?/+L`%M +A&6FVfv ]A]//01.'.54>7>76>?%D33D%?>6 Ac####cA ".7)\mMMl\(8." ?wD"MXd9:eYM"DtA+`%M+A]A )9IYiy ]/ /01%'>7>54.'.'73D&A=7 Ac#$$#cA 7=A&D3Mm\)7." AtD"MYe:9dXM"Dw? ".8(\l 9/?O_o +A!&6FVfv]A!&6FVfvqA&6FVfv rAr`иf/c/-#+#Uи-[01'&>7>'#".54632#".54>32%.'.76&'.76%#"&54632#"&54>32''&67>B 43(%1  !(*?;));?*((45 /$ 1%(34*;?+''+?;*l  Z$/ 54( .$ (34>;**;>,&&   $. 43( 33( $.  ,&&,>;**;>(33 .$ %hH ?+и// +и 01#!5!3!=}=@}@T3`//EX/>YEX / >YEX / >YEX/>YEX/>Y01567>54#"#"54676323>/  P '2$)L#1?" T '/=` +0175!=rrm /EX/>Y01%#".54>32m3& B&3 B //01#7=^?77J8/9/ܸ8и/A]A )9IYiy ]*A**&*6*F*V*f*v*]A**]A**]EX/ >YEX/>Y#A##]A##(#8#H#X#h#x### ]1A11'171G1W1g1w111 ]A11]01#".54>324.#"32> 3KcA<`H3  4Jc>>aI2  (<+,=)  )<+/?) 3wwpU43Tmus01vwqW43SmusXcbO1;^tqaZegR3=awtdH-+EX/ >YEX/>Y01352>546.#"'73316 ( 41 ";-@85'z,:##+ +A ]A  ) 9 I Y i y ]-EX/ >YEX/>YA]A(8HXhx ]$01)5>54.#"#>32!2>73{*hkeO04J/Xm+HfB:iP0(?M%9s= %<4/'`nx|~=,Q>$\P>iM,'Gc=9qka(=9"!?<A5"+A""]A "")"9"I"Y"i"y""" ]"59/A]A )9IYiy ]EX0/0 >YEX/>YA'7GWgw ]A]0'A'']A''('8'H'X'h'x''' ]:0901#".5463232>54.'5>54.#"'>32@oS=8(&15;"(F3.Pl>.S@&,>&A_#2AS8.VB('1]aRXY- !7H'Da?'>S0%?.G6 .O;!5M3#@:3" i+и иEX/ >YEX/>Y+к 9 01#!533 !F}PRg_ekgJ%c+ArA! )9IYiy]A! )9IYiyqA )9IYiy r'EX$/$ >YEX / >Y$$#ܺ$#9 A'7GWgw ]A]01!#".5463232>54.'!dEMvHBoP=6&,/6!/Q;"SKm}=dTRh;(%?S/Y}P'D!:);/YEX/>Y'+96A66'676G6W6g6w666 ]A66]01#".54>;>324.#"32>.VxJ6ZG4#(JiR+]rN1n<>`B",M;+*(  ,;$.@(XEf=$>R]c/N{[4M{U"*3Ul.o`A  *Q)GID6 .FT9 /EX / >YEX/>Y 01#!"'7!hQ1-A3*c  0'\'8J/ +(+A((]A (()(9(I(Y(i(y((( ]9(99/A99]A 99)999I9Y9i9y999 ]ܸ и/# 9A//&/6/F/V/f/v/]A//]A//]/AиA/EX/ >YEX/>Y#9*A**]A**(*8*H*X*h*x*** ]FAFF'F7FGFWFgFwFFF ]AFF]01%#".54>7.54>324#">4.'32>0Rl;6jT3'J"'SC,">0(=F1&3JT"9B/F/$@1@bA!"A];-RG; 8R8-L?3DO\%8%*I>515@1WLB1}M+M9"':=!8-9/:/ܸ9и/9"A""]A "")"9"I"Y"i"y""" ],A,,&,6,F,V,f,v,,, ]A,,]"6и6/EX/ >YEX/>Y1+9'A'']A''('8'H'X'h'x''' ]01+5>7#".54>324.#"32>7>(JiS+\rN0m:?aC",SvK6ZH6$/M9.@&*H802*  oN|\4M}S .3Vn:Dg@$>T]c,rhG/FT&+naB &M?!]+A&6FVfv ]A]и //01#"&54632#".54632%33% 3% 3%&2  %3 b)m/EX / >YEX/>YEX/>YEX / >YEX/>YEX/>Y01#"'&547632567654#"#"547632?"###?03 P&0$+u"  &]L#17FT('.)9B//9015 ){]V]]%h5++015!5!%CC??@@)9B//901%5 5){9](']]Fq.<=/>/ܸA]A )9IYiy ]=%и%/A!&6FVfv]A!&6FVfvqA&6FVfv rAr и /EX / >YEX*/* >YEX2/2>Y*A]A(8HXhx ]01#>7>54.#"#".54>32#"&54>32q(=H?,5/(+A-2+!  0Ma27fO/1##3#1'9[RNXhC[M3q>(J:# &$#! &#*8R4:Y#0.% 3Jh/^vɻT +k++H+! 94 96 9AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rA!TT&T6TFTVTfTvTTTTTTTTT]A!TT&T6TFTVTfTvTTTTTTTTTqATT&T6TFTVTfTvTTTTT rATTrAkk&k6kFkVkfkvkkk ]Akk]xEXM/M >YEX/>Yp&+d+pи/&к!M9d5и5/6d9@ܸYAYY'Y7YGYWYgYwYYY ]AYY]01%#".546$32#"&5467#".54>32?32>7>54.#"32>74.#"32>hjbjvƏP.F\tE7;DPT)#3!8M[h6mw#'!# :3,<5KgcqM)Uۅjx*>%%KC:*  *OE9)kxAg sGy<~vhM-485JB-2=1uuoU3hR Ww{_ %/NakyA7a]ݟY;l_,#3Sgi`!&/Mbe_ J),>EX!/! >YEX/>YEX/>Y, +01!52>54.'!!5>73!$t &(&5% ic&6*`HLB%/42* !1<I#;--`&7HoA+'+A'']A '')'9'I'Y'i'y''' ]8'98/A88]A 88)898I8Y8i8y888 ]ܺ"9A/EX/ >YEX/>Y3=+"=39,A,,]A,,(,8,H,X,h,x,,, ]=@и@/DADD'D7DGDWDgDwDDD ]ADD]01#!52>54.#5!24.#"32>4.#*32>&BWae/09 :1/d`VA&2D'3T>"3Qe3#E"$I#5dN/:[r8 F ,V-3cO1' !;.0;" &=W;+H9* %;SYEX / >YEX/ >YEX/>Y A]A(8HXhx ]+A++'+7+G+W+g+w+++ ]A++]01%#".54>322>73#.#"32>7EѐrFKu'C?>" ;SnGFkQ7!,]e@aOD"|PorǕV  @kN,)H`ow:[|H7O1) */+/ܸ* и /A]A )9IYiy ] "EX/ >YEX/>YA]A(8HXhx ]%A%%'%7%G%W%g%w%%% ]A%%]01#!52>54.#5!24.#"32>V{809 :1_5ie(M''Q(dg5@ !;/0YEX/ >YEX/>Y&+ܸ-01)52>54.#5!#.#!32>73#.+;2>73309 :1  'C9/9#"90$!CV?2  !;/0: 1A&l !9--:#+0M6-X$+EX / >YEX+/+ >YEX/>Y++01.+32>73#4.+3!52>54.#5!$4I3&/ 3& ;1J1: :0 2A&n$4"$6$/;!  !;..;# 5F=,>/?/ܸ>и/"и"/-A--&-6-F-V-f-v--- ]A--]5EX / >YEX/ >YEX / >Y A]A(8HXhx ](и 2A22'272G2W2g2w222 ]A22]01"#".54>32232>73#.#"32674.'5!F*.R`uΙYSs2a0!  cG&NYYY)*8";;{YEX-/- >YEX/>YEX/>Y&+01!52>5!3!52>54.#5!"!4.#5!"30; " ;1J1: :00:!  ;0-9!  9- !;.:/;!  !;//;"  ";/%/;"  7-T.8 '-+EX / >YEX/>Y01352>54.#5!"3'1::10: :2 !;./;"  ";/j.;! !P&m+EX%/% >YEX / >YA'7GWgw ]A]01"#".543232>54.#5!P1: YEX7/7 >YEX/>YEX/>Y*"901!52>54.'3!52>54.#5!">54."#5!"  - :0N1991/9 IX\L0 y7mbT{ ?DM0 3-/;!  !;/.;#  ";/AR[VG=W\ !9*"3+EX/ >YEX/>Y01)52>54.#5!";2>77$8%%8$%8& 2&fJdI8 2)(2  2(_&1 /UD=0 +*+!*9*2EX/ >YEX"/" >YEX/>YEX/>YEX/>Y9 9!901!52>5#3!52>54.#5! !"309 tu 9008 7+ sm"0: 90 !:.\V/:!  !:.)9# !:.d/:! F'(/)/ܸ(и/ и/EX/ >YEX&/& >YEX/>YEX/>Y9901"#3!52>5.#534.#5!F0: \ :009 !%0#q 90e !:.70:  !:.'N.:! 5/J0/1/ܸ0 и /A]A )9IYiy ] "A""&"6"F"V"f"v"]A""]A""]EX/ >YEX/>YA]A(8HXhx ])A))')7)G)W)g)w))) ]A))]01#".54>324.#"32>HrrFKqoF 0JgF@aH0 0Hb@CeJ1 mĕWVnoSUt8tl^F))F^io43plbJ,(E]iq%"34/5/ܸ4и/ ܸ#A##]A ##)#9#I#Y#i#y### ] +EX/ >YEX/>Y/+и/(A((]A((((8(H(X(h(x((( ]01#"&'3!52>54.#5!24.#"32>%9bI A" :0L0991tEuK7Q43> -G2Sm@/;!  !;/0;" ?nd1W@& P%=O567/8/ܸ и /7и/A]A )9IYiy ]+A++&+6+F+V+f+v+++ ]A++]EX/ >Y2 +$A$$]A$$($8$H$X$h$x$$$ ]01.'&54>324.#"32>4aWL[m@R7JrpF 1IdCAdH0 1Hc@bK[e5]H-/Mh=AoSV~6socJ,)G^jp54pk`I+T-<=/>/=и/ܸ>!ܺ&!9.A..]A ..).9.I.Y.i.y... ]6EX/ >YEX/>YEX / >Y&93A33]A33(383H3X3h3x333 ]6и6/01!"'3!52>54.#5!24.#"32>9 ;0J1::1-_[R>$&C\54YEX*/* >YEX4/4 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и4/A//]A//(/8/H/X/h/x/// ]<01#".#"#332>54.54>3232>73#.#"6Yt>)RI<  .LkD%I9$/LbebL/1Rk;#E?4  *GdA"@30OdidO0CjJ(  aAlM+*?*,G=78>K[:?dE$ L]%?+EX/ >YEX / >Yи01.+3!52>5#"#7!h X[90P08 {0H1# P WY/:!  !:. (D3L4+,+6EX/ >YEX3/3 >YEX / >Y$A$$'$7$G$W$g$w$$$ ]A$$]01"#".54.#5!"3267>54.#5!L.: '[q}X5-,4 9iUE~3 :0k&=,`ir=>wo*:%%:*AGa9,0KSS0;" H&@EX/ >YEX%/% >YEX/>Y901#.'5!>54.'5!H 0$ #2%'# !&<&1s 0"6#R !  =vEX/ >YEX%/% >YEXYEX/>YEX / >Y990901"# #.#5!".#5!">54.#5!(4"  2*y# Ȫ ,A0'  !&/%9DrR!=0  " %]R8 K5 "!  HR[EX(/( >YEXC/C >YEX/>YEX/>Y (96(901!52>54.'3!5>7.'5!>54.'5!$ 091# "'H@75?L3%!'/+!&390$% j-C6/0:G.  =OVJ2  0;3''E4! 5AF=,+>HC7 .;!#H<)F7R+*9EX/ >YEX6/6 >YEX / >Y* 901"3!52>=.#5!">54.#5!F-@3) 90N08%,6")$%9B9( $e0?!}/:!  !:.4+ J]eU:;  7EX / >YEX/>Y ܸ 01)5!"#!!2>7T9I- `;N5$.L6?7O2?+//01%%)(O//EX/>Y013uBnF =+//01'7'7NXO)bj///901% #3\V\V{R +015!77V //01'&5432wD/(2*:27BRRH+7R+R иRAHH&H6HFHVHfHvHHH ]AHH],H9,/&ܸ7TEX1/1 >YEX/>YEX/>Y 191!A!!]A!!(!8!H!X!h!x!!! ]=A=='=7=G=W=g=w=== ]A==]B19C19M01%#".5#".54>754.#"#"&54>3232>732>7#)026:"'=*'@RVR 2*")&#2KX'AY6  "ZO7()'$d)!!((!0A&*F:/% #A3#/"&( /B*9YA@%3D--$ /1%2/3/ܸ2и/*ܸк9A]A )9IYiy ]/EX/ >YEX/>Y9$A$$]A$$($8$H$X$h$x$$$ ]-A--'-7-G-W-g-w--- ]A--]01#"&'46.#"'73>324.#"32>3]QE7 #/6>#DdA/J6+'$ S05H,uLnC4'@@/R 3'=axg,`Q5c"*YEX/>YA]A(8HXhx ]A]A(8HXhx ](A(('(7(G(W(g(w((( ]A((]01#".54>32#".#"32>7{ 0Kb;KoI$.VzL#RF0' " **2E*6U<*B3'6fP1AiBHf<*>)"(/(/JY*3n\;0?"3 /*=H>/?/ܸ=ܸи> и / 9=и 5A55&565F5V5f5v555 ]A55]/EX/ >YEX/>YEX/>Y990A00]A00(080H0X0h0x000 ]:A::':7:G:W:g:w::: ]A::]01#5#".54>32546.#"'7332674.#"32679 *eYEX/>Y +A'7GWgw ]A]%A%%]A%%(%8%H%X%h%x%%% ]01%#".54>32!32>7'4.#"0Ja9JqL&'OyQ>bD$#>_A(?1% %8''<+6cL.>fCKf=*Kg=8t_=-=##B3 3C#9/1f#+и#'EX/ >YEX&/& >YEX/>Y- +ܸ$и%01#".#"3#3!52>5#5354>32  &(1$'  "?4`-4$HlHB:)  *3*0<>817;4= %:)7/By\7!0-Ma|!q*+N+b+и/ANN]A NN)N9NINYNiNyNNN ]N9Aqq&q6qFqVqfqvqqq ]Aqq]>*q9>/ܸ>4и4/9*9>XAbbrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA bb)b9bIbYbibybbbbb r~EXC/C >YEX#/#>Y#C99#C9xAxx'x7xGxWxgxwxxx ]Axx]01&##"&'2#".54>7.54>7.54>32326324.#"32>4.'.'32>+/-Lb55%-I^b^I-$> ( ":,&3 #;-'2  doj# /;:4"[R9uI#:W;*#>3.L=, )971 /,& ,7?!:]@##SH0!3@ $RF.2?  #%"  ":/=>/?/7ܸܸ>и/ܸ+к,79*/EX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ],*901!52>54.#"3!52>54.#"'73>323"+ .+0,&+$!*  #09C%BI#(! +" H=)$",  + $!R5'=\n1+ / %I+и/и/ /EX/ >YEX / >Y01#"&5463252>54.#"'733/, -- -"*   !)" .," +,C +!q # T!+ - .} #+ и/ /EX-/- >YEX/>YA'7GWgw ]A]01#"&54632#".5463232>4546.#"'73-. ,-/ @hM.+$'!!  ! .,",,QC}a;'->@<:+ T  /C^ + &%/EX1/1 >YEX/>YEX/>Y %9'%901!52>54&'3!52>5464.#"'737>54&'5!23  -('-   #%+ 3,)$&, +    $1  0& "((!R^  .*$-/ +/EX/>Y01352>546.#"'7339$)  !-% /:9)Rm#0 ^ +8++X++DкE8X9M9X`EXC/C >YEXJ/J >YEXR/R >YEX/>YEX/>YEX1/1>YR A ]A  ( 8 H X h x ]%и%/>кEC9MC901!52>54.#"3!52>54.#"3!52>546.#"'73>32>323V(- -$1-(-')- .$1-'.'%)  !5:B'JU3:D(8H()$ 1$+;0"$1  1%+<0#$1 0!;;+T4*ME4)-H\/ 0=Ǹ>/?/7ܸܸ>и/ܸ+к,79EX*/* >YEX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ]%к,*901!52>54.#"3!52>546.#"'73>323'-,&2-'-'&*  3:B#8G(,% 1%@5"$$1 0!BB2T4*.K\/!03+J,/-/ܸ, и /A]A )9IYiy ]  A  & 6 F V f v ]A ]A ]EX/ >YEX/>YA]A(8HXhx ]'A''''7'G'W'g'w''' ]A'']01#".54>324.#"32>/X~OKyU//X|MK{W/ 0A+3B& !0A*6B$ fKi?=dFIg>7`!PQK;#3M\)!PRM<$3O^+@YA/B/ܸAи/ ܸ!к"9,A,,]A ,,),9,I,Y,i,y,,, ] 6EX / >YEX'/' >YEX/>YEX/>Y'9 A]A(8HXhx ]"'91и546.#"'73>324.#"32>(PwO.S"/(*0 ,7A'Db?y,M=.)# "?68L.sFpG &2 4)*% V;.?by0o`@#(+O=$3Pa3#4I5/6/ܸܸ5и/и/$и,A,,&,6,F,V,f,v,,, ]A,,]EX/ >YEX/ >YEX/>YEX / >Y9'A'']A''('8'H'X'h'x''' ] 1A11'171G1W1g1w111 ]A11]0152>5#".54>3267334&#"3267&,39@#Aa@ 1[T%L.(-%HR:O02O:-L 0$+4)?cw9NmA#0 8MX6Se01fS52 0P+&EX%/% >YEX,/, >YEX/>Y'%901#".#"3!52>54.'&#"'73>32) 2G'+  $-5$s*'& BA 1$ 04.  T6/ L#CD/E/ܸD#и#/и/A]A )9IYiy ]#=A!==&=6=F=V=f=v=========]A!==&=6=F=V=f=v=========qA==&=6=F=V=f=v===== rA==rEX(/( >YEX0/0 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и(8A88]A88(888H8X8h8x888 ]01%#".#"#5332>54.54>3232673#.#"#*BS)30+ "5G-+!5P\P5&>Q*&&% ,?*/'9UcU9-H4 )L;# &0A2-9M90E.  %E6!$2?/*7Q  S +/EX/ >YEX/>Y9 ܸи01%#".5#5>733#3267 -7 (5 m'A5)"( 6*3B#8GN$33(##0ø1/2/(ܸܸи1 и / (9EX/ >YEX&/& >YEX/>YEX/>Y9A'7GWgw ]A]-01#5#".54.#5332>74.#533275#4;A$8F' - -#0,' +  4+2N`-5"*38,# ' $!  $@EX/ >YEX#/# >YEX/>Y901#.'5!">54.#53   $F    !J" !N8vEX/ >YEX/ >YEX7/7 >YEX/>YEX/>Y99-901# #.'5!".'5!>54.#53N%/ "#& .*J!!(%  /#EF# sC$?0 >VaYE }! M[EX)/) >YEX?/? >YEX/>YEX/>Y )94)901!52>54.'3#5>?'.'5!#&>54.#53  #"$&  )% $/!F#!%&  (MD8 %- #/4/% $-1.$  (,+  081 172 >SW-$<EX&/& >YEX;/; >YEX / >YA'7GWgw ]A]1 &901#".5463232>7.'5!">54.#53 -YEX/>Yܸ 01732>73!5#"#7!5># +8"D3 #>2b 7,H/6̺3+A33&363F3V3f3v333 ]A33] 39 /A ]A  ) 9 I Y i y ]ии3#и .ܸ(/EX/>Y+901.54>54.'5>54.54>7H7eN/ 2>>2 0Pe4OY q^_p YO1Md9999!9+'*8!<<<8aI/aS444g"#i333Tay/"+/EX/>Y013yA}=/8к+A&6FVfv ]A]9/A]A )9IYiy ] ܸ и%и .и3)/EX/>Y)9015>54.54>7.54>54&'5=>1 /Ne6NZ 6L/^q ZN5eN0 1>^+9!9999dM1aT3335TC1"g444Sa/Ia8<<<!8*+//+ +01#".#"'>3232>7+*5@&/ZZY.0' )'3@*+``Z%1( ;.#)#*27 @3$+$&1DEX/ >YEX#/# >YEX/>Y  +++A++]A++(+8+H+X+h+x+++ ]0к192и 9к:9 ;иAAAA'A7AGAWAgAwAAA ]AAA]01%#".'#73&45465#73>32>73#.#"!!!!3267@NeDTrNqIjVOwZ?Z  3CR/NmG%8w /OqLV{57T9//EX/>YEX/>YEX/>Y01!5>54&#"#".54>32w3H+,% $0"0M;* !'/ ! *6L /EXH/H >Y01#"&54654&#"3##"&5463232>7>7>7#7>7>32 %  G# #-9G,#7! '/ !" "0E1%"  +DRNA1!TYVC)(&% ,=?MNca1@PUG. 3;/#/EX/>YEX/>YEX/>YEX/>YEX./.>YEX1/1>YA'7GWgw ]A]7015>54&#"#"&54>325>54.#"#"&546323H+,%  +$0#4H,,& "*<'0"0L:+! '. / ! +60M;* !'/ 0*/*6\ #EX/>YEX/>YEX/>Y A  ' 7 G W g w ]A ]и!01%#"&54632#"&54632#"&54632\/%%-/##11#%/1##1/%%-/##1?#33#$00$#33#$00$#33#$00L!Fk:2+A::&:6:F:V:f:v::: ]A::]5//D+ иD(и(/01#".'#.'>7#"&54>324.54632>32-!567 "(654&( 269+) 975 0#%3] dfec'*0"& #?>?$&:"!@?A"*h/{nV?+AVV&V6VFVVVfVvVVV ]AVV](?V9(/A((]A (()(9(I(Y(i(y((( ]ܸVкK?V9K/Qܸ и /Kи/(и? и /(0к8?V9(Fи^иVfиVnиVtN/EX/>Yy+[a+иy#к8a[9a=и=/[Aкfa[901#".'#".54>7"#"546323.'>54&'>7#"5432.54632>32#".'>32H/12*" 40-F'#./0 &$+ 111BB123+#( 211 $( 110 %#"&"101+ F877".7:;B% !6B>{0#BA986"00&49<!"" #6|A?z56+$//EX/ >Y01'#35`D%Kaw\;+L+X +b+n+A ]A  ) 9 I Y i y ]';9(;9-;9K;9A! LL)L9LILYLiLyLLLLLLLLL]A! LL)L9LILYLiLyLLLLLLLLLqA! LL)L9LILYLiLyLLLLLLLLLrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA! bb)b9bIbYbibybbbbbbbbbrAnn&n6nFnVnfnvnnn ]Ann]A&6FVfv ]A]@/J/EX/>YEX/>YEX&/&>Y6+Q+!к(&J9-&J9[A[['[7[G[W[g[w[[[ ]A[[]Qgи[q01#"&54>32#"&54>32##"'#".54>3232>734.#"32>%4.#"32>4&'.'32>D$4DS1g[7]yC#<,)OrHg[7\yB$=,JV&]3;6.5)1/%A6,0-E0":0$ )]ZR?%qd@hB.>#>yPqd@hB.>E#%%UUO=$%>P+YEX/>Y01 3}#)dc\%EX/ >YEX/>Y01#3))#be917PQ/R/Q и /Rܸ8ܸи/+и DADD&D6DFDVDfDvDDD ]ADD]EX/ >YEX/ >YEX/ >YEX/ >YEX"/" >YEX/>YEX/>Y*+ܸи1A11'171G1W1g1w111 ]A11]KAKK'K7KGKWKgKwKKK ]AKK]01)"#".54>;$3#.+32653#.+632>734.#"32>5;v;mw>@zrm 'D:PO$;-(?.>YE5<5?_D- .D]<9? WflR6B$ n?S-:#31/L9,H4+Jajm21jg]F*!9O._&>^ Js!/EX/ >Y01#".54>732632s$0#4H,,&    *60M;* '/ w/EX/ >Y015>54.#"#"&54>32w4H,,&  ,$1"0L;*! '. 1   *53?E///+и/%и%/8и8/;и;/01#".54>732632#".54>732632$0#3I+,&  ,$0"3H+,%    +60L:+! '. 0  *60M;+! '. ?/%/EX/ >YEX;/; >YA]A(8HXhx ]и0и0/3015>54.#"#"&54>325>54.#"#"&54>323H,,&  *$1"4H,,&  ,$1"}0L:+! '. / ! +60L;*! '. 1   *53NM +A&6FVfv ]A]+01#".54>32.>#$?..?$#>.$?..?$#>..>T +015!!T99T +015!T99P3//+ ии/01#".#"#>323267+9!*4,/%(*9$.,.%= ;/  !:*'%1P8E+ 2+++ !E+92OиO/+R///>/EX/ >YEX"/" >YEXN/N >Y9 9!97ܸFиG0152>5#3#52>54.#533#&3.#!5>5#"#7!$' """s(:E !7!/# -  &t ( &f% R&& *+L&  # ) E*&W^E3)-8PQ/R/#ܸ9ܺ#99Qи/#99#8иEAEE&E6EFEVEfEvEEE ]AEE]EX/ >YEX/ >YEX/>YEX / >Y.!+(A(('(7(G(W(g(w((( ]A((](993A33]A33(383H3X3h3x333 ]@и@/ LALL'L7LGLWLgLwLLL ]ALL]01#"&'#".54>32>32!32>7'4.#"4.#"32>) &=X=Al-zJMuP((PxPHx+%iE>\?b1Q:%9- } 3&"1 p,?,3; *<(3&D`9!0iV8-< A4 #6? RUR?'5OZ&OSQ@'1KY&^^F)&=8@W$ +A ]A  ) 9 I Y i y ]и/ и/ и"и"//EX/>Y01#".54>32#".54673V 2&DA   !}37 + c^0; 8+A88&868F8V8f8v888 ]A88] 89 //EX/ >YEX/ >YEX/>Y' 9+A++'+7+G+W+g+w+++ ]A++]3A33]A33(383H3X3h3x333 ]; 901#"&'#.54>323#".'32>7&#" 0Kb;4g5q(8".VzL!k5n+$' 8*B3'$2E*+6fP1 6GR[0Hf<&&-" (30?"u/JY*?~3-O\J@$+$и/$!и!/$=ܸ@CEX)/) >YEX/>YEX/>Y!+)1A11]A11(181H1X1h1x111 ])8A88]A88(888H8X8h8x888 ]!@иBиMAMM'M7MGMWMgMwMMM ]AMM]01%#".'#"&54632>54&'#53.54>32#".#"3#327&#"32>!6L1%@<8 ",.*G6! %GiC"D7""%',6  AGB}#& & +YF-#+,#4,8?  AAG%K&>u[7(9&(&.&(=J#8p6G+QON)yk# $-N#78/9/8 и /9ܹ$A$$rA! $$)$9$I$Y$i$y$$$$$$$$$]A! $$)$9$I$Y$i$y$$$$$$$$$qA $$)$9$I$Y$i$y$$$$$ r .A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..r//EX/ >YEX/ >Y3+)+01%'#"&''7.5467'7>3274.#"32>(`68c*5 %5*d54^(5" #>Q/1T?$$?T1/R=##" %5)a55e(7""7*d65a)X/S?$#>T00T>#$?SE+ии/,9BEX/ >YEX6/6 >YEX/>Y+ܸCиܸиCк,9>и@иCD013!52>=!5!5'!5!.'5!>54.'5!"!!!40z254  %N &+(  ( 3 R+;$"<-R8l5w'  ?\k_E} !*5x8F%+и//0133KKKRRuWmP],+@I+AII]A II)I9IIIYIiIyIII ]%I@9%/A%%rA! %%)%9%I%Y%i%y%%%%%%%%%]A! %%)%9%I%Y%i%y%%%%%%%%%qA %%)%9%I%Y%i%y%%%%% rA!]]&]6]F]V]f]v]]]]]]]]]]A!]]&]6]F]V]f]v]]]]]]]]]qA]]&]6]F]V]f]v]]]]] rA]]r]6и6/Qи/IFиF/iиi/@o /EX;/; >Y01#".5463232>54.54>7.54>32#"&54654&#"%>54.-<$$7 :N/$D4  /&9VeV9-<$!":N+%F6  % .&0#9UcU9*.;<8* ;T\j+K@5&`8.O9!-=&)(*",1QLLUe?+J?5.25,M:"+>('"$( #01OIHSc"*1'?6/-,"*21ZQEP +и 01#"&54>32#"&54>32 / - - / / , / ,3b'O +H0++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArAHH&H6HFHVHfHvHHH ]AHH]EX/ >YEX/>YM++A]A(8HXhx ]#A##'#7#G#W#g#w### ]A##]:A::]A::(:8:H:X:h:x::: ]C01#".54>324.#"32>#".54>3232673#.#"327bSqqÐSSqrĐR/LgfKKfgL5[H_7Y5$945$995$901#"&5#"&54>754&#"#"54>3232>75!67<9#!+!6AYEX/ >YEX/>YEX/>Y01 3! 3)+%)dcdc1 GEX/ >YEX / >YEX/>YEX/>Y01#3 #3))%++)bebe;^q#+/+015!5!7#Z=! +015!=!pp3b'O] ++8+EP++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArJ 9APP]A PP)P9PIPYPiPyPPP ]+XEX/ >YEX/>YA]A(8HXhx ]#A ##'#7#G#W#]A g#w###]A##]03и>J93Nи>UиU/01#".54>324.#"32>#3!52>546.#5!24.#"2>bSqqÐSSqrĐR/LgfKKfgL9  #'PA).=!.*8 !#M@)pÑSSqrÏRRrgLLffKK2  &&)@-&8)("6% 5P +015!PTTP +015!PTTJ-'ٸ(/)/ܸ( и /ArA! )9IYiy]A! )9IYiyqA )9IYiy r A!&6FVfv]A!&6FVfvqA&6FVfv rAr#++01#".54>324.#"32>,;##<,,<##;,;&&&&";,,;"#;--;#&&&&){ V+и/EX / >Y +и и  01#!5!3!5!\q\{ ] ]\\( +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r*"++01!5>54.#"#>323:>73OIMK;$(59Q kX#K>'"8GHD)&#9AILN& 1"17YU(=)"IKHB7)}<3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/EX./. >Y'A'']A''('8'H'X'h'x''' ]8.901#".5463232>54.'5>54.#"'>326Tg2 *)#&*1'&=L&;1",-FcE<2 #1$T;R3   -.<"#2!' (#;F/"(# '3X //01#7>32  >/   ^1Aڻ'+74+4 и'*ܸ7CEX(/( >YEX5/5 >YEX/>YEX/>YEX/>Y (9/A//'/7/G/W/g/w/// ]A//]/9<01%#".'#"'#".5467>5332>7332>71"7(+5YEX/>YEX/>Yܸи01###.54>3!Z78Gd<7]{Et#AlRLlD)3P / /01#"&546323%%33%%3&22&%113PV /EX/>YEX/>Y901#"'732>54&#"'73>32V(?1/ ( @7'  .$$1 1"d (}+//0152>546.#"'733% $%Z "H%+  +,/-/ܸ, и /и/и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r "A!""&"6"F"V"f"v"""""""""]A!""&"6"F"V"f"v"""""""""qA""&"6"F"V"f"v""""" rA""rEX/ >Y'+01#".54>325!4.#"32> =[=4W>#!>Y96X?")^(9$,$):$,7(RB)#YEX / >YEX/>YEX / >Y+к) 9*01%#5!533#352>546.#"'733%3K 1RJF   ٠7l?{!b " J$}'(,FkG/H/ܸи/ A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rG3и3/!39,39@EX+/+ >YEX>/> >YEX/>YEX)/)>Y+!01!5>54.#"#>323:>73#352>546.#"'733?A>0 -4B+>(#@0;T^#$ IH   :BHLM&1&71%?/+<&5ni_% }{!b " J$% IL׻B1++A!BB&B6BFBVBfBvBBBBBBBBB]A!BB&B6BFBVBfBvBBBBBBBBBqABB&B6BFBVBfBvBBBBB rABBr&1B9&/JкK19NEX / >YEX=/= >YEX/>YEX / >Y+!+и=4A44]A44(484H4X4h4x444 ]G 9J 9K01%#5!533#3#".5463232>54.'5>54&#"'>323L!3RLF'BX2 %#!#+ 1C'4'6/(:'3#4(7;۠7l?H6Q6   !++;%&2-<, 0$ /&$ P:dG/+A//&/6/F/V/f/v/// ]A//] /EX/>Y4A44'474G4W4g4w444 ]A44]01#".54>32#".54>7>7332>54.54>324"#EfB=hK*#)(;( 02 !3?$6#  %0   *O<$ >X8+J>3-GFO4ZS5<>9O2##"  . Je&%DJ Je&%HJ JT&%j9@ J?&%x*J J)&%9@ J|&%]J2NQ?+?.иOEX5/5 >YEX%/% >YEX/>YEX/>YQ+0=+%-ܸG01)53276=!!527>7>54.'5!#.+32>73#.+;2>73 !%>^ I! #8 2(F  (E9,<&";1 @\E6D%\֯'8'  '9(D6J  5A% l#8)-:! , 2L67&'!e&)DJ!e&)J!T&)j@!)&)@'e&-DJ'e&-JT&-j@)&-@3-4/5/ܸ4 и /иA]A )9IYiy ] ,ܸ'EX/ >YEX/>Y +$A$$]A$$($8$H$X$h$x$$$ ](и *и/A//'/7/G/W/g/w/// ]A//]01#!532765#5354'&+5!24.#"!!3>@ؘ6&C 8&r9`E&=m\!L-+0P Xm>lQ*XJV] 6VsXjv? VL ?wF?&2x&J5e&3DJ5e&3GJ5T&3j8@5?&3x)J5)&38@h ////01% ' 7  --+h+--7 '5W6/7/ܸ6и/%A%%&%6%F%V%f%v%%% ]A%%]'9(A((]A (()(9(I(Y(i(y((( ]-9/// / A ]A  ( 8 H X h x ]' 9- 91A11'171G1W1g1w111 ]A11]01#".''7&54>327&#"4.'32> Qb%RQN#`-dNjc-g)9$W^~L7Y 4tEFyZ4vǑQ )y${nQqz!}+U\dUQ'EHO0J:3oLe&9D JLe&9NJLT&9j?@L)&9?@Fe&=GJ!5EɸF/G/ܸFи/ ܸи/ 'и'/ ,и6A66]A 66)696I6Y6i6y666 ] ?EX/ >YEX/>YA+>ܸ.ܸ@01+;!5327654'.+5!#"324&'.+32>!-%.LuZ6? LH 8* 9D^E24G+*&=3$"KiB9b%!._ *[X   2$mM7]  =#>T1Fպ-4++A]A )9IYiy ]ܺ"9"/A""]A "")"9"I"Y"i"y""" ]?ܺD9EX/>YEX-/->Y:'+01#"&'&6322654.'52>54.#"#5>54>32#B^;?P! 2>6T9&<*'5 3$' #DdB@wZ6D6$  !efM}Z4+0N:3H.4_K 6+1\R'$@[6;607&ED*7&Em7 &Ej^7&ExO7&E^72&E]7DOdM[+7+6E+A[[&[6[F[V[f[v[[[ ]A[[]([9(/ ܺ0797OиUкV696fEX-/- >YEX3/3 >YEX/>YEX/>YE6+-A]A(8HXhx ]E%и%/0-9JиJ/V-901%#".'#".54>754&#""&54>32>32!32>7'.#".=2>-D\=469!3BP-#=.(Xe<418%>`B^^%bCpQ'** 2>By%25(\ *WE, ,$/3_I,0+)'/@$4LAA(ESC/"'/+<2 3(3(]v%"D>0E,-D.,39C$0@+0% 3{&G9&IDQ9&I9 &Ij9&I&D/& &j&31*>?/@/ܸ? и / 9 95A 55&565]A F5V5f5v555]A55]и/5 и /+A++]A ++)+9+I+Y+i+y+++ ]$и$/& 9 /$/EX/ >YEX/>Y0A00]A00(080H0X0h0x000 ]09 9& 9:A::':7:G:W:g:w::: ]A::]01#".54>32.''7.'774.#"32>.W~PEwX2/UuE"F+".\1ElJ&9P0!=/;R3#<,eHjA6_LHg>>n2g*c !:#h*b>Va5>gMKa8=_&Rx3&SD[3&S3 &Sj3&Sx3&S)w#g+A&6FVfv ]A]и //+01#".54>325!#".54>32?2&!!&2{2&!!&2%3 !5]]%3  3!/<=/>/ܸ=и/и/ и /,A,,&,6,F,V,f,v,,, ]A,,]/90A00]A 00)090I0Y0i0y000 ]29 //EX/ >YEX!/! >YEX/>YEX/>Y'A'']A''('8'H'X'h'x''' ]/ 92 98A88'878G8W8g8w888 ]A88]01#".''7.'4>327.#"%4'32>&*)UV535e#j ,W}Q644d"&')%@.d$',$>-O3uB@nG "t!x:AB?kC o ". >cG.c4cYe#/ ?h&YD]&Y &Yj&Y&]1.FTG/H/ܸGи/ ܸ$к%9/A//]A //)/9/I/Y/i/y/// ] 9и =и=/#/EX*/* >YEX/>YEX/>Y #9%#9*4A44]A44(484H4X4h4x444 ]BABB'B7BGBWBgBwBBB ]ABB]01".'!5>54.'.'73>324.#"3>-RuH'&(/)(0  $#56:9_D&0D*#0$'5!*D0sQk> )2  4."( U.>&4[|BoQ-)%*6'&Hg&]/-+EX/ >YEX/>Y01352>54.#"'7339"*   !)" +!q # T!+ ';&2>JVbn!+A!&6FVfv]A!&6FVfvqA&6FVfv rAr'и!-и3и!9и?и!EиKи!QиWи!]иcи!iиp//EXf/f>Yf9 f9f9f901.''#'7'>7'77#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546323`6 5`26pF!Fp8"!!!"1>  >1X          'y)5AMYeq\$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr*и$0и6и$<иBи$HиNи$TиZи$`иfи$lиsEXi/i>Y+012.#"&'.5>#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546325VH;;BL00LB;;HVVy$--$          d//9015FdF//9017dd=! +015!=!pp=! +015!=!pp`,+/EX/ >Y9015#335Bk)BdF#EZZ`)4+ /EX/ >Y901'733BddB)ZFZZEZ- 1+ // 9  9013#53#7>>FZZ))ddo*6BNZ` +A!&6FVfv]A!&6FVfvqA&6FVfv rArи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR9015#535#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632BdE'FX          Z*6BNZ` +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR901'73#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632Bddp=EZXF'           #/;GS_k *6BNZfr~[+++ArA! )9IYiy]A! )9IYiyqA )9IYiy r9/ܸ и /ии$и$/0и6иHиNи`иfиnиn/uиu/иии/и/A6FVfv qA&6FVfv rA ]A&6FVfv ]A]A&qArиииии/ии и /+и1иCиIи[иaиsиyк999EX/>YEX/>YEX/>YEX:/:>YEXR/R>YEXj/j>YEXv/v>Y +++и и'и -и?и EиKиK/Wи ]иcиA'7GWgw ]A]и ииии иA'7GWgw ]A]ииии/иии/!и!/'и'/.и./@иFи@Xи^иXpи|к9и/901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%"54;#"54;2+32##"&54632#"&54632+"54;5#"=46;2+32#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323        +  @    X   )) f ))     `       }    { {    X   +y- ym  =  +        7j          /               o     /   ^ww / R  2        q #/;GS_k~ %1=ILi||+e++ArA! )9IYiy]A! )9IYiyqA )9IYiy rZe9Z/iܸ и /ииe$и$/0и6иHиNи`иfииA!&6FVfv]A!&6FVfvqA&6FVfv rArииииiи/ииeи/ииии&и,и>иDкJe9Ke9Le9ZSиS/iaиa/}9~99EX/>YEX/>YEX/>YEX/>YEX/>YEX5/5>YEXA/A>Y +fP++K+и и'и -иK9и9/?и EиKиK/Wи ]иfcии иA'7GWgw ]A]и иA'7GWgw ]A]иfиPи/Kи/ии/ иfи #и)и#;иGи)UиVиWи^иcиPlиl/Psиs/yиy/}9~и~/Pf901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323+"54;5#"=46;2+32#"/##"=6323        +  @    X   +x0 wm}    }    }    { {    X    =  +        7j!  I +y- ymw7j          /      ww /      o     /     2          ww / %h +015!%C@@DD #/;GS_kw--//EX!/! >YEXu/u >Y01#"&54632'#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632'#"&54632D          `  H  `          #  L    Vo       oV    L T&l &m X&mP/EX/>Y017#"54654.54>7   +6;0 9-r`A<,9ZH&oZQH&oP&nC &q3 b&m3 1=u(+A((]A (()(9(I(Y(i(y((( ](9-//+-901%#".5463232>54&'#".54>32'.#"326 1CQZ//UA''( 2d\O;")!,/0)w    }=vY5  'BXaf.!  ,'\Q6)Qw+3d&n3&rB3 &t13B&s3!&u3 &w3 &x3I&y~{3&c~3&f3 &_~w] &_~L'V-q'/)/EX/>YEX / >YA'7GWgw ]A]01%#"&54>3232>7.'.54>32' QU37 $b]I ?T[" EhF$"!6( -3* 0Q>'-.$WlzL']&_7 L'&kQ#L'V&t7L'V&_7DL'&'kQ#_7DL'p&c7L'V&c79L'&f9mL'"&h8L'&j9iL'&y7LC'&'kQ#e8L'V&v<*qX+ /'/////01%#".546323267>54.54>74G'64.>5#"# 9JBF 15qj]   DE>p%@E; &)!"MLKqa&"_uqQ&"k'q&"uz,X&"tTX&"_ucX&"uzX&"'_u_@qt&"cuq"&"fwqq &"jwmq&"evfq&"mv7>7>32.#"32>32.TuG>~b_qyoZ $9IKF0e\L #  &$(4F1+=FI;%;i_xO u "  CCA6* %3F59:+/:91) &( &;KIB  %  ;c&4m5q&8m5{&8cT5{UѸV/W/ܸV"и"/0A!00&060F0V0f0v000000000]A!00&060F0V0f0v000000000qA00&060F0V0f0v00000 rA00rFAFFrA! FF)F9FIFYFiFyFFFFFFFFF]A! FF)F9FIFYFiFyFFFFFFFFFqA FF)F9FIFYFiFyFFFFF rP/5+01.#"#".54>3232>54.'.54>7>32!"$`W<-==-% .%/vNK|Y0!'#$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA%VVP=% :Sa,AW4'$ -"?CC5' 5s&8n5{85 &8u5^{&8e5F{&8hV{`۸a/b/ܸa"и"/'"9;A!;;&;6;F;V;f;v;;;;;;;;;]A!;;&;6;F;V;f;v;;;;;;;;;qA;;&;6;F;V;f;v;;;;; rA;;rQAQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ r[/@+01.#"#".54>7"547>763232>54.'.54>7>32!"$`W<,;>-% .%/vNK|Y0!"N0 ;g5$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA"POG  ;0:Sa,AW4'$ -"?CC5' 5{8V8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr4/# +01#".54>3232>54.54>7 0'9Tdj7#   !7IQU'Jj>  R=?; 6&:W9LB, &"6(&)+ $$ "$ 053V&@_V&@c(V2&@fV&@k7V&@evV&@eV&@'c(tcV6&@hV&@hV0&@j}V &@jV&@iV2&@'f_V&@fV&@'c(fVq&@'_ cV&@vV&@u<+)&T_9+)L?+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r?и/%//K/F+%901#".54>7.#"4>7>327>32#32>321K[S@ JqR/2\P -0* "T  2=-[Z[-,X*"_+3vukS14ZwA%VRG  $=[{R]t.       &;OcuCNuU7! +)&T_ A+),&Tm m+)?&Te +)&Tc 9+)&Te 9+)S&Tf +)&Th+)&Tj9+)&T'_ Ah+)&T'k%Xh+)&Td?+)&Tk(+)&T'k%X_9+)&Tk%X+)&Tc I+)&TfPi,+A!,,&,6,F,V,f,v,,,,,,,,,]A!,,&,6,F,V,f,v,,,,,,,,,qA,,&,6,F,V,f,v,,,,, rA,,re/1+01#".'+#".54>3232>7>54.54>3>76332>54.54>321",! %09!hF:^A# (%2IS +ZTH5% &L?, #++    3ME/4. !+$$iH(DY10bO2$7G(2C( #bJ/B-"&' 6G' )  &+#!#Y&ef&e'_G_g&eh^Y&e'fh^Y&e'f_gy&egR&edOW&ejE&ee_p7*+A!77&767F7V7f7v777777777]A!77&767F7V7f7v777777777qA77&767F7V7f7v77777 rA77r<%+[e+j+и/jQиQ/jVиV/01.54>7*.'#".54>3232>7>54.54>3227>324.#"2>Eo.   hF:^A# (%2IS +ZTH5% (0. %mE%3 J#00icU7tnbI+T>aI2 $*)   !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'6pK /6T !;S2!"&o_D&oc;V&of&o'_D_;$L[{> + 9и9/A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r>CиC///EX/>YEX / >YHR+ A'7GWgw ]A]и/C/9W01#".'.54323267>54.'.54>32>324.#">HxO+/$ +)+Dh%     2hd]&$6%J'.)[]],w8\@eM6"!($&*)$ 5TLJ*,TH6 +)$,%"Qeo18>=3[D(*7^ 1WE.4+&t_&tf"-3_R +A!RR&R6RFRVRfRvRRRRRRRRR]A!RR&R6RFRVRfRvRRRRRRRRRqARR&R6RFRVRfRvRRRRR rARRrRи/ /#//^/Y+ 9, 901#".54>7.54>7>32#"3267>3232>321K[S@ oԧf+CP%=5$$&!  X<$1):?!5::."6"Pd94ZwA%VRG  $]zNn""/Y!A!!'!7!G!W!g!w!!! ]A!!]-<901#".54>3232>54.'#".54>32'.#"326P@;08~jF$"8IPP"kθq? E )! #&"!  /  "QiA:(9\D1WA&,?+1&0;:2+< - 189-(52ej  X$P&_NxX$P&'__NxXP&fX_P&hOoXP&jXP&cNmXcP&fPuZ;IA +0+A!&6FVfv]A!&6FVfvqA&6FVfv rArA00]A 00)090I0Y0i0y000 ]*09!+7-+*-7901#".54>3232>54'#"&54>32'.#"32> * [oFDtT/  $C_:2jf\E(%N&5B $*<8(#!+?;-O:!>]?$PME5/EQ$5N3%38+)A4:=:.2^Q  uZ&c[uZ&_SuZe&fN\F:d4++;O+A++rA! ++)+9+I+Y+i+y+++++++++]A! ++)+9+I+Y+i+y+++++++++qA ++)+9+I+Y+i+y+++++ rA;;&;6;F;V;f;v;;; ]A;;]4f0/EX / >YA'7GWgw ]A]@E 0901%#".54>7632>7>54.54>7#".'>54.54>7\ FlSEgD" 7dO?tX  %   N,;!)*( IC0(1(,=% ! %690 '&"   yv ##o-%Up%=3    !FF>  N\G&_N\&fWN$\F&h4Hy^1"+A!11&161F1V1f1v111111111]A!11&161F1V1f1v111111111qA11&161F1V1f1v11111 rA11r/\/6+01#".54>323:>7>54.'.'.5467>7>32 [ktodL,!5D"!=.mx`( '\plnG'4 ,253,  P\c_T NQ?'  &*,,(" %>JU.K[1:]D&/3+" 1L3 11, *)-9 331*! Hy&tcHyv&}Hyv&'}tcHy&~H^v&'}c)Hv&'}e*nHy&Hy&_#9HyK&f%H&f+edCD/E/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rD'и'/8'9@A!@@&@6@F@V@f@v@@@@@@@@@]A!@@&@6@F@V@f@v@@@@@@@@@qA@@&@6@F@V@f@v@@@@@ rA@@rEX / >Y.;+!+ 012#!"&'.54767!2>54.#!".54>32.#"3}5'?mTnV8]B%!--,"&@U]_+ $ -_N22""6&KyU-73 "-##5#4aVG3 %"4C$ &NPF+A!&6FVfv]A!&6FVfvqA&6FVfv rAr9/  +01%#".54>3232>7>54.'.54>7 -##DKW6(YJ1 ($ *@N%5m^I     (  yEC>% 4O67>7.#"#"&54>7>32 ;Fl55(   ,) 7U>     $/G@+!";#8RehdO3W-#,(6)  ).DN&1C&5467>7>7>32#".'#"&32654.#"8L9."P+ #).00  *$;806Kb? ,1" f N>9@A4!.97. G?, '  :  -*"D}&_'D}&_Q`&&_`&&'__`8 +A!&6FVfv]A!&6FVfvqA&6FVfv rArEX4/4 >Y+01#".54>3232>7>54.'.54>7 B^xJ3aK.!-ES'#QPH  % - '(D#2W@%=]@)aT8"6C$-C,#39;;*A!$,jlg`&k`&&'_tg`&f6`&&'_c`&``o&a!Z0AU)*/ / *9 *9; *901%#"&'#"&5463232>7.54>7.#"&54>32.'32'4.#">+5<}?1i*PF $,./""%  !GNM=&) '02  ;C=  " AH$*:  $>?8 +'%>PVW@74, ('% # !&yYL!ZL*Z +A&6FVfv ]A]/EX/>Y01%#".5467>324.#"32>8P3#6$# $F8";&6;  '/)5YA$/?%b?8+/NcO(#&,  L&cL&mLL&mL&cmK///'6+01%#"'&546767>7.54>32#".#"3267>32 $:I'&F7"/6F)#06; !(%,)#!'$$  !$;@@2" !#  &=q&&J} EX/>Y01#"&5463!2#"(''(3{V`BH+AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rH и /bR/EX/>YEX/>YEX/>YER9YR9\R901#""#".67>7>7.'#".'.54>32>54.54>724'2>3( ! '>4,%4H0Vck6   ( X{j0  0%' qV2{> -2- ,.#'.' FIA7  @+," TXK.-+ +.+ #l +8 T&uM3&_1QC&f+3{&h;&kH{&s H&lu&mP^&mP*/EX/>Y#01!".'.'.54>32;2#R!=1!   %&%%& &B5(grv7/VJ:#& 8a '(N&oW&oP&n&q7&mv?7Z:E //EX/>YEX/>YEX/>YEX!/!>Y +!-A--'-7-G-W-g-w--- ]A--]23и4и;и;/01!*##".5463232>7.54>32;2#'4.#"#  +7 5f6NF0!&+YVN@+0O9!#, 1'&%%& A"Y^\%;2 4FT\0 % /68-/DM'(!7&nw7[&r7Z&tJ7Z&se7&uz/7R&w;7L&xzj7&yu7w&cu7%&fwt7d&_uaZ&_u=QB6./EX/>Y +.9;01!".'#".54>3232>5.54>32;2#4@+ . -l86, 0#.ZF, :%&%%&4O6-C  $*-#   !@9/[TJ ') 1noiYB'(=Q&_=Q^&k=1Q&t"=Q&_L=Q^&'k_L=Q&c=Q&cA=Q&f=Q&hp=Q&j=Q;&y=KQ^&'ke=Q&v2P?79 /,////EX/>YEX/>Y01!"&##".5463232>7>54.54>73;2# -"&dEE<)  HPR(!+  1 %&%%&*SRQ*.: $8( @5%#&!$"('(P?&_[xP?"&kuP?&u`?&tChz?&_[D?&u`z?&'_[_P?&c[P?&f]P?&j]P?v&e\P?c&m\P?&dcP?&g]P?&b^xP?&y[|P?&s@]')}U0L/S/EX-/->YL -&01#".'.54>7>7>7>;2+"32>32)&-5%6+^V'();BB    ')&mV&mV}&c!V}N *+A!**&*6*F*V*f*v*********]A!**&*6*F*V*f*v*********qA**&*6*F*V*f*v***** rA**rD/G/EX/>YEX/>Y/+01!#"#".54>3232>54&'.5467>7>;2#?"*!:3"3Uoww3LxT,&# ?cw9P^aO3?B=3  %b9'%&%%& ) ,+MA3$)LlD7oY8)AP*JW. 5AK'(V&nAV}VN&uV+}&eV}&h#}Y5+A!55&565F5V5f5v555555555]A!55&565F5V5f5v555555555qA55&565F5V5f5v55555 rA55r!59O/R/EX/>YEX/>Y:+01!"#".54>7"547>763232>54&'.5467>7>;2#u?"*!:3"3Uoww3LxT,  W- ;g1?cw9P^aO3?B=3  &a:'%&%%& ) ,+MA3$)LlD;95  60)AP*JW. 5AK'(V}P8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//EX/>Y! +11901!".'#".54>3232>7>32;2#H1' !zXqA  =qaT'   B#'&%%&%%@/ CgF'O@("*3R8 +'(P&_CP&cP&fP\&kP&eP&eDP&'ct3VP&hnP&hDP&jP&jEP&iCP&'f_CP&fEP&'cfEP&'_cCPo&vHP9&u)'(&_)'(k_+A!__&_6_F_V_f_v_________]A!__&_6_F_V_f_v_________qA__&_6_F_V_f_v_____ rA__r_"и"/,//i/EXM/M>YEXO/O>Yd +O1A11'171G1W1g1w111 ]A11]O196и6/MFZO1901"#".54>7.#"#"5&>7>322>32#;2+"&'.54>732>32&;HD6 %! <}wiO.2^U,a"$$ '5:(TY[.,00"Q#DtZ%&%%&%?Kt'(!dRD1gW;";Z}SR}.  "  ) '( 2 ! X|QRc7  )'(&_=)'((&m i)'(;&e )'(&c)'(&e)'(O&f )'(&hv)'(&j)'(&'_=hv)'(&'k"Thv)'(&d")'(&k")'(&'k"T_)'(&k"T)'(&cE)'(&f3i.!+A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..rM/Z/EX/>Y3+HAHH'H7HGHWHgHwHHH ]AHH]UU9и/ H9&и&/EZ9Hbиb/cиc/01!"&'#".'##".54>3232>7>54.54>32>3232>32;2#f3K#$,"( %1&hF:^A# (%2IS +ZTH5% DU4 $-#0%&%%&RN1$ & !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'/8/ $+$ .- '(&+f4$&+'__ =&+h 4&+'f4h 4&+'f4_ =&+g;&+d&+j0&+e)l}6)+A!66&666F6V6f6v666666666]A!66&666F6V6f6v666666666qA66&666F6V6f6v66666 rA66rEX/>YEX/>YEX/>YEX/>Y;$+Zr+SASS'S7SGSWSgSwSSS ]ASS]S9PAPP'P7PGPWPgPwPPP ]APP]Sbиeиe/fиf/wиw/01!"&#*#".54>7".'#".54>3232>7>54.54>327>32>;2#4.#"2>HuwYEX/>Y@[+ A  ' 7 G W g w ]A ]и/;)9J 9MиNиOи`и`/01)".'.54323267>54.'.54>32>32>;2#4.#">++/$ +)+Dh%     2hd]&$6%3H+Dw#'&%%&'.)[]],w8!($&))$ 5TKJ+,TG6+*$,% /-Qfo08>=3[D(*8'D<2 '( 1WE.4+&:_&:f-J>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r/C/H/EX3/3>YC'C93,01#".54>7.54>32;2+".'32>323M\R=E~lP-/Ph:+&4L23K1 '6>I-%&%%&%-JP]@7q[9Sԁ+TMA  !;`^Ns0  34')' & '("HAVj|EX]0-&=_u-&=fw-&='_u_u~-&=cu-&=hv=-&=evZs &E_Zs H\+A!&6FVfv]A!&6FVfvqA&6FVfv rAr2/EX/>YEX!/!>Y A!HиH/01!".##".54>33267>?.54>32;2#4.#">4YC)PY?qJ#  '>OQKXS/[&%*+-&  -3&&%%& &$ "$$E6!:fOCE5 #&%%9)$ "*YEX,/,>YEX./.>YEX1/1>Y" +1;A;;';7;G;W;g;w;;; ]A;;]@A@@'@7@G@W@g@w@@@ ]A@@]CиDиKиK/01!##".54>3232>7>7""#".54>322;2#'.#"H4  \vN+WD+#,%  -H[.-b_T  2)*6(   %&%%&#'))(0WB( >[:AoP- ';K'0C+"0$$" "LI5&8@'(y  #sG&Mc#s4&M_#s&MfDH{T#+Uk+A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##rAUU&U6UFUVUfUvUUU ]AUU]_U9>/EX/>YEX(/(>YZܺ(Z9(M(TиT/_>901!".'#".54>3232>7>54.54>32;2##".'>54.54>7/<& vlW]0 0YN%bmqgW'!   ,$'&%%&\-% !  $ &=L&..) A4!9\D&/3+" 1I0$W.3oO%"muX1I0'(>3!     FE?  H{&Q_'H{&Qf)H&Qh% H_ p* +A!  & 6 F V f v ]A!  & 6 F V f v qA  & 6 F V f v rA rEXO/O >YEXR/R >YEX/>Y% +O9i01!".'#".54>3232>7>54.'.'.5467>7>32;2#0GM_Hmx`( '\plnG'4 ,253,  P\c_T -57.  ){MM=Bp`R$$&%%&)Ha8!K[19^D%/3* " 1L5 11+ +: 430*!  '! ,6<81  &\03bM.'(H_ &UtH_&U}H_&U'}tH_&U~H_&U'}c,&H0_&U'}e-H_e&UH_ &U_#H_&Uf%H_ &Uf.dTeU/V/HܹArA! )9IYiy]A! )9IYiyqA )9IYiy rH9U(и(/9(H9AA!AA&A6AFAVAfAvAAAAAAAAA]A!AA&A6AFAVAfAvAAAAAAAAAqAAA&A6AFAVAfAvAAAAA rAAArEX/>YEX/>Y/<+E"+A'7GWgw ]A]и/ииMиN01!".'#!"&'&547673!2>54.#!".54>32.#"3!2;2#,:$0|nV ,("F8]B%!--,"&@U]_+ $ -_N22";P /('&%%&3@"V^73 "-##5#4aVG3 %"4C$ &?H0M6'(T4U/V/ܸи/ и /Uи/#A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##r7A77rA! 77)797I7Y7i7y777777777]A! 77)797I7Y7i7y777777777qA 77)797I7Y7i7y77777 r-и-/A/EX/>YEX/>YEX/>Y(+MM901!".'#".54>3232>7>54.'.54>32;2#9!+  /ĕ2ZC(%#'@U-&`\N    (%&%%&$8l8I(mn:bI.bQ5):D0C+#/ dJN}@+)3Vso) $'( &auR&a_M&afOU&ahe/&akg&asZZ?1M!H0#/:/EX/>YAA9 01!".'#".'#".'.=4>7>32;2#,F>: 0$?1     !B:"(;WtL%&%%&  -*,!3KT +!Yq|pW"*9!FT[O< #'XVQ %*%'(?QZ///=/EX / >YEX%/%>YEX./.>Y%+%901&5467>7>7>32;2+".'#".'#"&32654.#"8L9."P+ #).00'%%&%%&%'';806Kb? ,1" f N>9@A4!0EL&'( ," '  :  -*"?1M*&h_?1M!&h_u T&n_ T&n'__Y E +A!&6FVfv]A!&6FVfvqA&6FVfv rAr7/EX/>YEX/>Y$ +01!"&'#".54>3232>7>54&'.54>32;2#\#    7fo6_G*")%2Qg68hZE  &%&%%&#\_Y!63%#YEX/>YEX/>YEX/>YZ +;6;9K.901!"#".'.'."#".54632>7>3267>;2#4&#">4.'32>0l3  &:)'#  :0 FHAILK  UO85-a"P&%%&1,$ -L8 :Z?(7!  '#MB+#+ IA2   NrE*.X3  '(1&3IR1/)./.' HA- zX&yy`9m{ruzARf=//EX / >YEX/>YEX/>YEX"/">YEX%/%>Y=9*=92=9L=901%;2+"&'#".'#"&5463232>7.54>7.#"&54>32.'32'4.#">%%&%%&%&- (!DB=1i*PF $,./"!&  !!UWO '02  ;C=  " #> '(  *:  $??7 +'/Lb74, ('% # ~9m3Cj/EX/>Y9 A  ' 7 G W g w ]A ],и-01!".'#".54>7>7.7>32;2#.'326&4&$) 21%%"L%    "%&%%& %:&!+( !,QC  /67#4 %/'4-`T;  '(H (' 9&{c5-9&{m6Q).//EX/>Y+"01!"&'.#"#"5467>32;2#))  9.#   &9L0%&%%&"  "9I'  8t^<  "'(&~m&~c1UaKP//EX/>YEX/>Y P9HP9Z01!".'.'#"&54>7>54.#"#".'.54>32654>32;2#/9" (2E3 9HPG7 0K^-'E4)@MI;   "/  art/$0#,  !1(%&%%&/>"'`jp7sm3  $141, PSO=& ".# '%0Nc2&FB?o .'>jPYEX / >Y 9 и!01!"&'.'+"&546;2>32;2#V& $,7%%&%%&%DQ0 '&%%& )&(')1)" '(&_L&c&fb&k&eK&e@&'ct&ht3&hC&j9&j&iA&'f_L7&f7&'cf &'_cA&v2?&ul&_Lla}7/EX/>YEX/>Y(+(AиA/ #(9A-и-/ NиN/Zи[01!"&'.5467&+"&546;2>7>7.#"#"54>7>3232+;2#}# >hZM$$CGK+%&%%&%2RH?$F&@LT($#0SXX#(DJW;#->BB%&%%&+&&'('   '" '&  '(l&_lj&m l}&e l&cAKl&e l&f 3l&h C9l&j 3l&'_h C3l)&'k"h Cl&dGl&k" l)&'k"_Ll)&k"l&c7l&f QM1/>/EX/>YEX/>YEX/>Y9+99 99,ии/,FиF/GиG/01!"&'#".'#"&'+"&546;2>3232>3232>32;2#5R %,!( &]J0K&^4%&%%&%,@. )"DU4 $-#1 %&%%&YE1$ 4;/79/('#!/8/ $+$ .*'(Q&f4Q$&'__L3Q&hC3Q&'f4hCQ&'f4_LQ&gQ;&dQ&j0Q&e)sPa /EX/>YEX/>YEX/>YEX/>YEX/>Y>V+&&96и6/7и7/FиF/IиJи[01!"&#*#".54>7".'+"&546;2>32;>32>;2#4.#"2>uxYEX/>YEX/>YB_+=-9LиL/QиRиSиd01)&'.5467+"&546;267>7>54&'.54>3>322>;2#4.#"2>V=   M%&%%&%&:  N    *elm2!5%!4@ (27H'&%%&%5 2`XP"^S $()>"('&*+T+QQ>=5*$o#Jdb,10*^O3+8-E4''( !:O/"/2o!&_o!&f/K/EX/>YEX / >Y9%9(и)01!".'+"&546;267.54>32;2#5*RH8@FK&%&%%&%"a9BC5YC$G8"7>2R*%&%%&&33 5.('," 56)#-7 ('(&_+&f--&'_+_%L0&c+&h,&e,"8&_y1EA /EX/>YEX / >Y( 9*и+01!".'+"&546;267&654>7>32;2#4.#">7+EBB(+A:9#%&%%&%%T"$#I'))EF%&%%&$ '%/$  (' !08;.6(9</e&'(!  &_&L8&'_y_&L&f{H3&h'C&j{D&c&A7&f(K&cy8&_y&f{H [3EX/>YEX/>YTиU01!".'+"&546;2>54.'.'.54>7>32;2##98=MdC,h%&%%&%FyM/;&A  3}Q Rj=%$*UQJKs]M&&&%%&+YEX / >YEX / >Y+8+A+ иIиJ01!".'#!#"&546;!2>54.#!".54>32.#"3!2;2#,:$K^p>%&%%&%18]B%!--,"&@U]_+ $ -_N22";N 1+'&%%&3@"+C.('"-##5#4aVG3 %"4C$ &?H)K9"'(6%+A!%%&%6%F%V%f%v%%%%%%%%%]A!%%&%6%F%V%f%v%%%%%%%%%qA%%&%6%F%V%f%v%%%%% rA%%r%9%9/ArA! )9IYiy]A! )9IYiyqA )9IYiy r,EX"/" >YEX/>YEX / >Y"9/и001!".'+"&546;267>54.54>32;2#y,6& &1#%&%%&%+ ".    ?5'&%%&0C*/D-('P5a< ("'lx~sa dZ'(@&u &_&f3&hCc&k&sYX5IZ$/EX / >YEX/>YEX/>Y9.и/иEиE/01!".'#".'+"&546;267>32;2#%4.#"32>4!7219=A"'1:!%&%%&%YEX/>YEX/>YEX/>YW +!9и:и;кJ*901!"#".'.'.+"&546;267>322>;2#4&#">4.'32>0l3  &9)'#  )T+%&%%&%3[ !GE@  SQ0=?<+%&%%&/*! k`9Y>'7"  '#MB+#+ IA2 (' Ja9*.X3'(1&(YEX%/%>Y  9,и-к0989M9012;2+".'#".'+"&546;267.54>7.#"&54>.'32'4.#">BHH>-,*'&%%&'(  ;GIE25<'%&%%&%.<"%   I '/3  ;D=  ! F 6GOQ%$'(&2*"('&??8 +'`74, ('% # &mmWh>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r#>9C9/6/EX/>YEX / >YEX&/&>YK+&-#&-9Pи.кC69PQ01!".#"#".54>7+"&546;267>32>7>32;2#' 41+ %%&%%&%7! #+#%')^C#( '&%%&   Y9 .! )E[2.++(' $  ;N[*6=;/:'(m&ma3i&m&ctAk&n&ctAI&'uctAK&eu3&huC/EX/>Y 01+"&546;267>54.54>7#Y8'+@ + и/" @9@,и,/01#".#+"&546;2>7>7.#"#"54>7>232 IF;M0)RSU,%&%%&%&D@@"&X*"AAA!*"AED5N0A-$//'(' !   $" ! &$_j&$m}&$e&$cAK&$e&$f3&$hC9&$j3&$'_hC3)&$'khC&$dG&$k )&$'k_L)&$k&$c7&$f/NGJ/EX/>YEX/>Y J99+01#".'#"&'+"&546;2>323>7>3232>54.54>32/ 1"+"'/8 0K&^4%&%%&%,@. )"&B3!#,+    'ME/ 6-/79/('#!2D' )  &+# "/E&5f/&5'_3_Q8/&5hH8/E&5'fhH/E&5'f_Q/e&5g>/&5d;/C&5j/1&5e{TARl /EX/>YEX/>YEX / >Y=G+ ' '97и7/8и8/L01".54>7".'+"&546;2>32;>324.#"2>TEo.   &C8-$-7"%&%%&%@R2$29)%nE%4!J$0/hcV7unbJ+P>aH3  $)(  ,)( ('*3* 5qL /7T "Y@H+ ; '9M01+"&546;267>7>54.54>32>324&#">!5'GO%&%%&%#'     $_nt9 0 NI>(RW]4nFX=:5%0 (' -f0:zvkU: *'")% *M`b -1,%[P6*8c,1UB'1-#&D_#&Df&VK((/EX/>Y(901+"&546;267.54>7>32#".#"32>32 6I,VTQ(%&%%&%&A( 3@"#D%& $[+!(&9B<=<2$\ < +%('  (QK@    3,_&G_H &GfJo_&G'_H_HLr&GcH$&GhI &GeIduQ&O_uH/?0EX / >Y++ +901+"&546;2>54&'#".54>32'4.#"32>u 8N`5%&%%&%?pU1+& #<7&  (*()#('%)+%!, -8;16Xo<  ! uH&O_LuQ&O'__Lu&Ofa3uH&OhCu&Oj]uH&OcA7uH&OfuHOud&OcuQ&O_u&OfaD!I"/G/EX/>Y$01+"&546;267>54.'.'.5467>7>32D [ktpdL-"6D# =/>q]%&%%&%Sy+'4! -144+  ./OQ?(  &*,,(" %=JU/IX/(' 01, *++9 &PG9D!&[_ZD&[f\5D!&[hED![D!&[tD&[}D&['}tD&[~D&['}cCMD&['}e~D|&[D!&[_ZD&[f\9D!&[fd@ A/B/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rAи/098A!88&868F8V8f8v888888888]A!88&868F8V8f8v888888888qA88&868F8V8f8v88888 rA88rEX/>YEX/>Y&3+<+ 01#!#"&546;!2>54.#!".54>32.#"3!2?mT%&%%&%18]B%!--,"&@U]_+ $ -_N22"5'FKyU-('"-##5#4aVG3 %"4C$ &"6%3ʻ-++ArA! )9IYiy]A! )9IYiyqA )9IYiy rArA! )9IYiy]A! )9IYiyqA )9IYiy r#/EX / >Y01+"&546;2>54.54>32*PD%&%%&%?6$    X'(&E<((' ) c|%*'%.(&MY`ZOd&ku{.&k_v&kfx>3%&khwCR&kkL%&ks+=$/EX/>Y01%#".'+"&546;2>7>32'4.#"32 177"!!%&%%&%+@3*!!  i    ,*.*$ (''>K%+"560  &r_*&r_A~&_~&'_~_tL&_~(&k1&'_~t3&huC&'_~ctA*&`~q&a~Z1BV<+/EX / >Y +9 +9< +901%#".'+"&546;267.54>7.#"&54>32.'32'4.#">.4GIE8PVW@74, ('% # &~y!Z~y&~m!y!<*+A**]A **)*9*I*Y*i*y*** ]*9"и"/7*9/'/EX/>Y 7'9017+"&546;267>54.54>7#"&54>7>32!:N.%&%%&%+C    '&  ?W5(' $(!# # -2(G@;>>;%5$&me/D //01#"&54>7>7.54>7>32#".#">32/ ")1/       !& +      %  *5&//&901#".543232>54&'#".54>32'.#"3263B#+ %J;%     =9.gW9  *@M"   /(); H E /!/01%#".'.54>7>7>32.#"32632*:#E?1 RZP&5:3.%     +$  54(@jGz   4/% # ** (68   Z7'//&/)///5/ / /01#"&5467>?>32#"&5467>?>32  & "  & "M d  i  d  i RhFQg5+A55]A 55)595I5Y5i5y555 ]?и?/:/ //- :901#".'#"&54>54.#"#"&54>32>7.54>32'>.#"R  ?80    ";  ,  V  `  4$$  /- !"B .3)  #T RD5%/'///01#"5467>?>32#"5467>?>32D  $  #  $  # e  h  e  j  / ///01#"&5467>?>32  & " d  i (4 // 901#"&'#"&'>7.54>32'4&#">)4Z"% 650)  N FD  "'+%93#!7 f&D / ///01#"5467>?>32D  $  # e  h VB7 3/ /01#"'#"&54>763232>763232>5>32V ')  "2    !B6! =6!" %+%$+%$-7/  !M+A&6FVfv ]A] +01#"&54>324.#"32>)9!/2%5(1!'5# !;,FL7+)04 *! F&9%// + и / и / и/01#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1 !$ /D //01#"54>7>7.54>7>32#".#">72  "(1/      !%       # )/fD //01#"54>7>7.54>7>32#".#">72/  "(1/      !%       # 8// /014.54>7#"5S   %"HB651$- 7:- +i+A&6FVfv ]A]9/ /// 901#"&54>7>32 ,"+  D(890TLE""IIE$=/ /+0132>7#".') +,"->&(6!94$-9"TI1/DM3s'//// / //01+"#"&547>7>732632,    ` %///"//01+"&'.5473232>;2 -2 ;3. #!&!"&!/;= >;-##%////"/014>7>;2#".#"+"& -1 :2. !&""&"/<= =<.##>zvO+A&6FVfv ]A] +01%#"&54>32"/)+ -!1%:>0$") \(3 1+014>7.54>32#"&'#"&'.7>54#"  ) 166 &#Z3(N 6 !#39%,'!CGm % 'C //01#".54>32#".54>327#"&5467>?>329       & "     d  i V///01#"=4.54>7    7:- :#GB651$m94 / /01#"54654.54>7(    7"+/' +$WiqbG 51$ YO/"4+w+w и /"'и'/[иfиf/wкw9014&#"2>"&'32>32#".'.54>7>7>54&54>3232>323>32"&5467"&'(41+*XI/L'$  $#'MTa:D?/,32::OPG  A"   '7AG"#7GGA * 9 )0,$      ! ,a< %Y]S#  @9& 1$ =+'Q/6+~и/01#"&'&'&#".54>32?>32#".'.54>7>7>54&54>3232>54&'#"&54>32#".'32>324.#"326         t,23:9OPF B"  8<.    (..   $"'MS`;D>.  b        ! ,a< Y]S#  $$)+!-7- "$    , P$0>//EX / >YEX / >YEX!/! >Y01#".54632>7>32#"&'74&#"3 ! /*"     !4  5! (,  %(  @  #EO)/E/:E9LE9OE901+"&5463267>7.'#".'.54>32>54&54>7>54&'     #+26   Xw/ X 9++>CиC/01#".5467.#"4>7>327263232>32'#".54>32%-)7kT3`P*-.-, 0'[O59Wj1+)#    %  .P=^/    $Y01#".54>32#"&'&'&#".54>32?>32   3           Y      g_9,+A99&969F9V9f9v999 ]A99]9ic//Cc901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CM#/  $)-*#    &   m("    4B% ".0'#!  0&! $   J //01#"&54632J++++5**++;y //01#5;vy15/01#".'+53267>7.#"#"5467>2322%# &A)**&=","? ' !"!E(!u  >    '   j>:///01+"#"5.5467>7.#"#"&567>7>32j#5  *   !$;  +0*  +=0*    #'y;f8++A88&868F8V8f8v888 ]A88]8h/b/0///$/&/EX=/=>YEXE/E>YBb901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CL$.  %)-*$    ' '#   4B% "-0'$"  /'!   $    my!///01#"&'&'"#".5463232>32/@B # =*?+   }D!/EX / >Y01#*.'.54>7>7>32.#"32632}*:#F>1 SZP&693.%   ,$  55(AjGy?  " 4/& # ,+ (68  ^H//D901#".54>32#".54>3232>7>54&'.54>7   ]K1& "))'#     !3C . 2*"!   > 664/q //01'7'7qqqqTTT/qppTTTTq //01'7'7qqqqTTTqppTTTTfO+A&6FVfv ]A] +01#"&54>32f;++;&&R+;;+$$<'8///*/5/'///2//01+"#"5.5467>7.#"#"&5467>32%4  +   ## T !+1*  ,=0)    "'5_0)/#+#(и(/#*и*/0132>32# '&547>32>767254> %  #C*^&3JU]-iu-3.-F7*.; ( (/`VD JK /3/+01!2>7>7>32#".'.'#".#"&'>323267>ժ:U?4  5ZOY3,EGA'3ER[++AI++и/+и/(%и%/<:и:/<N01".5467".'#".5433267>7>3327>324&#"2>/Mac]#   Jfbk'"[@(    + #  Y?3+#%.3?901#"=4.54>7+532>54&'#".54>32'4.#"32>#".54>32>    8N`5oo?pU1+& #<7&  !  7:- :"HB651$(*()#}%)+%!, -8;16Xo<  ! ##$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//01%#".5467>732>329+)=( (,)*(  $,;)BR)9#D8(#0@P- $$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/"/EX / >Y01%#".#".'.54>32$  (*),( (=)+9G$ -P@0#(8D#9)RB);B8 //01#"'>767632M)k_.SMA%x&%A &H"q=49p'+01#"&'&'5476323276&'&#"eEuDRY" Ws)"2<5L15(+ !9@7GU B"$%!24@*&lW//и/fܺf9YA!YY&Y6YFYVYfYvYYYYYYYYY]A!YY&Y6YFYVYfYvYYYYYYYYYqAYY&Y6YFYVYfYvYYYYY rAYYrи/f9Yи/1f9\f9frArrrA! rr)r9rIrYriryrrrrrrrrr]A! rr)r9rIrYriryrrrrrrrrrqA rr)r9rIrYriryrrrrr r// /%/(/m+aw+m9%91%9\%901"&'#"54767.54>7.54>7>32#"3267>32>3272>54.#"g:%8/8!+BP%<6$%'!  V=$2):?!4::. 7!Pd9)#3mqt:@Z9":OX^ 0eS45V>3d^W' LRS EO<%-)/ /  9 9( 901".57"'6&'547633676327"67654  .  ?DB8Z %,!N-=18LL*X D /'/ '9 '901#"'654'.54>3327&54>32#"'.#"3267632 19d"/0   "0"-   #57  i $&,$''* (     6p?n//$/EX/ >YEX/ >YEX/ >YEX / >YEX#/# >Y&901#"'&543327654'&54767'47&#"4?6763236732#K'" 2 AOJ(. f1*aS^0."0! 1""2 B   D>(QA[6;< YEX/ >YEX/ >YEX / >YEX7/7 >Y2$9@$9O$901#"'&543327654'&54767%"'&547632"57"'6&'5476336327"27654#K'" 2 AOJ(. r   .  rjBnT`]7AIB  D>(QA[6;<%,!N-LL*X dw'/!++01#"&'#"&/326732654&'.@&8A#pJ=NC1K_U35w,XF+5>  B   )&9BNqo?N%&/J+JиJи/01#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -./A]< 2%  + ($#-F%06 ."->  +#$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/и//*//01#".5467>732>32#".54>32;+(=( (+)+'  $ &3;+;,DP%:#D9(#0AP- $ 3$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr-и-//2/EX / >Y01%#".#".'.54>32#".54>32$  '+)+( (=(+;3& K$ -PA0#(9D#:%QC,;%3 6';/-//01#".54>32#".54>327#".54>32P!&#%d!&#%!&#%^%) $' %) $' %) $' J-?Q6+,+A,,rA! ,,),9,I,Y,i,y,,,,,,,,,]A! ,,),9,I,Y,i,y,,,,,,,,,qA ,,),9,I,Y,i,y,,,,, r,9/A]A )9IYiy ]ܹ A&6FVfv ]A],'и'/E/;+;01#"&54>54.#"#"&54>54.'.54>32#".54632-#-#-!'!&6(',' &8*+I`60O:   3% $7'3## ! %3 >GQ_pB " &0$!9AN37bI*%=P%3 j''/EX/ >Y01#".54>32#3#".54>32   %3%HFN3% T 3%3 H9'#/+01%#".546;2>7>54.54>7=<U-.!F950 dk6 *"''# %)!1157y'>54&#.54>32y+<%)#$& T"NMF%)28  %0F1` #// /9901'%d$RP%eN }EX/>Y01373}} ;}K+;JVe# &+A&&]A &&)&9&I&Y&i&y&&& ] & 93& 9Y& 9& 9 Kи&Q3/ /EX/>YEX/>YEXYEX^/^>Y}+<A'7GWgw ]A]и/^A'7GWgw ]A]#}9&}9@}9C}9I 39L}9Y 39f}9}sии/ии/и/иииии/^9^9 3901%.'.'.'>7.5467.'>7>7>7.'.'.'>732>32>32326764&'"&'#".#".#"#"&'#6>3232>732>32>>&.#"#".'#".#".>7>7>'.'.>'#"&54632.7>76.67>762#"&54632''&'&>2*1&'!Dw9'3&&3'9wD!'&2+=#0220#=+2&'!Dw9'3&&3'9xC!'&1*<#0220#<0'$"Ap6 1&  &1 6pA"$'+** )6 ,$!!$- 6) *+++42% #',"*! *#,&# $1551$ #&,#* !*",'# %24+U* )6 -$!!$, 6) *T,'$"Ap6 1&  &1 6pA"$' I4  8T((((4I T8 5q  4I ((((  q5 I#8< *4!!4* <8#"/G[]G."#5> )5""5) >5#".G][G/ 68  ''  86        ]E  !!  E][G !! G  !  !  59 && 95_ (   -7''))B ( -  1?  & _((&&  ? &,;*9/ /)/0132>54.#"4>32#".J`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..Stx/ #//01"3!2>54.#52#!".54>3E$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 DP'w/WKZ//Z9Z9Z9Z9$Z9,Z94Z9<Z9DZ9LZ9TZ9`Z9hZ9pZ9{Z9Z9Z9Z9Z9Z9Z9Z9Z9Z90Z9DZ9cZ9xZ9Z9Z9Z9Z901.&'.'.7'.>&'&67.'.'>7>7.7>.'676&67>7>>7.7.>7677>7>%>.'.'>7.767>7.'&>&'>7>.'>7.'&7>'676>4.#"32>&>&'.'&&'.'7>.'.>7.''&'.'67676>7.'&'&67.'>7>&%.''.6&'&7>7.'667>#".54>32#.$!3  *)/&.=&,+-/),%=/&0')   2"$-##-$"2   )'0&/=%-*.-+-%=.&/)*  3!$.=<5     ""$(&$!     '&& 1)  !!  # '0!5-#; 1)     x$=S//R>##>R//S=$ 1)    !4-%91"" ''&& 2) # #       !$&($"      "><5 8(##(8 " &%=.%0)*  -Y76vA@x57Y-  *)0%.=%& " #&%=/&/')  .Y76w??w67Y.  )'/&/=%&# *%9 0(    *4NGH-G G-HGN4""   " /0%    ))&=( ><5       /R>##>R//R=##=R=<5    &=(  ) //%      r#   #3NGH-E E-HGNB     *%9 0C(6"#6mL*Slm/и/[[ܸ[A@[]A[]A []A[]A[]A`[]$ܺ[$93[$9DиD/$KиK/$TиT/[ZܸZܸaиa/[dиd/g[$9Zjиj/$n/EX/>Y[G+39g9013>7>5.54>7>?4.'.'!.'.5>'##".5467>7m0  )#;8 8<#(  -/&84#&  w  H  "+ *"   ""!! c;<<9D`9G`9]bиb/]rиr/]tиt/]wи]A]A )9IYiy ]]9]9и/]и/`9к`9]и/]и/и/!и!/39]XиX/j]9uиu/и/9]9`9`9`9`9ии/9и/и/ и /и/M//M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901.'.'.5#"&#">54&547.'.'>7>7&54654&'32632>7>7>?6323267.#"#"'7>&547#"&#"#"&#>323277>54'>54.'>3&54>72.#"632#"&'72>%.#"#"&'>7.54654'32632>4.#"32>.54654'.'&#"#"&'32632.#"3267&'#".'>7>32>7.'5##.547"'>54&'.'#"&#"654&5467.'6232327>7#"&546324&#"326-^XN   #        "    MY],/1YK< "        # 39D`9G`9]bиb/]rиr/]tиt/]wи]A&6FVfv ]A]]9]9и/]и/`9`9]и/]и/и/3!и!/339]XиX/j]9uиu/3и/39]9`9`9`9к`9ии/393и/и/ и /и//M/M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901>76323267.#"#"'.'>7#"&#">54&547.'.'>7>7&54654&'32632.'>7.'.5632326323>7'#"&#"654&5467.'>54&'#.547"&%3267.'#".'>32>7'."32632&54654'.'&#"#"&''32>54.#"'>7.54654'32632>7.#"#"32>7.#">32#"'3467>7.63&54>72>54.'>323277>54&5<7"#"&#"4632#"&732654&#"S-^XO   #        "    NY],/1YK< "        # YEX / >YEX/>YEX/>Y99 A'7GWgw ]A]5иO01!".'#".'#".54>7>7.7>3232654.54>322>54.54>32#"54654.54>7%#"'#"&54>7>3232>7>3232>5>32'#".'.'.54632.'326'!$+)%$) 21%%"L%    2-(  $     AC    ')  "2    H"   $  %:&!+( !"9*'7#-Q@  /67#4 %/'4-`S;&WMGxu< (";y01G.'c|%*'%.(&UfmfX/1.8=T+6;0 9-r`A<,!B6! =6!" %-%$+%$-7/    5R%# LH8H (' :q#PFq}++A!&6FVfv]A!&6FVfvqA&6FVfv rArGиG/A]A )9IYiy ][и[/и/99/|/w////|99|9901%#".54>3232>7>54.'.54>7#".#".54>32767>327#".546323267>54.54>7'#".'.'.54>3232>54.54>7 * 6>L2(P?' ($  5E%0YJ:     (       4G'64.>5#"$ 9JBF *8:.   .& $ yBA?% 4O6p%@E; &)!"MLKKe>%B4(grv7-VK;#& 8a%).'%(#2[-;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'sE< +A!<<&<6<F<V<f<v<<<<<<<<<]A!<<&<6<F<V<f<v<<<<<<<<<qA<<&<6<F<V<f<v<<<<< rA<<r<./"/01%#".54>54.5467>322s >JN@)$*$+1+762-$  +$.5..5.0<<3 ,1)  #E?6* ]A1$%   *4:5+  5/1- +#+01#".54>7>324.#"32>" (/3 H=(&&*'UG/75NW"%5I,2=" P'D9+  $6#$0?,/<" %=Qz?A1)79# ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆ho7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   -;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'fySI///=+=903=9A=9S=901#"&'#"&54.54>323267.54>32.#"32>7CHH "1   #4>4#  '+.'J%% (77 # ',  "QNE$DCC"svQ+%+#%/) &,"/@   5^+A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >YEX/ >YEX / >Y$ 9'A'']A''('8'H'X'h'x''' ]101.54>32>32.#".#"%/21 3X?$-@(8>"%4 *  ( 6?B<0 +.) 0z6#RE.%$   !,9>:/;/ܸ:и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&rEX/ >YEX/>YEX / >Y+A++'+7+G+W+g+w+++ ]A++]501%#"&'#".54>74.'32>732>-?)8>""2!1Rk93X?$8)=G--*    ( #RE.0;C-0z.PSI )2896#   !,{sI?!+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r//+/+901#"&54>7.54>7>32##32>7s $('#:2.%/1-A9'  "'-')  :#*9:552(,$ !#$)KNV4FOUMB/;<7%  #( " ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆hA!~$////!901%#".'.'"54767>767>32JK !:/^Q ## a56!Wq㿖l ! '56HN  HWA4o7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   !1ϸ2/3/ܸ2и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&r//01#".54>324.#"32>,:%#8*-K76I-V#$,&& EF@21?CB,nbC@^k49:.#7DB9ZX@$9GD:kU+//01752>546.#"'733t  #P  I"+ +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r-%++01%!5>54.#"#>3232>73t>?.);$!C>8#K"'w9ǻ3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/.%+01#".5463232>54.'5>54&#"'>32w%@U0 "! ")0A%3&7+(9 %1"3&nU4N4   !*(9$$1,7) /"/&" ' Q+и и//+к 9 01#5#533 3UI1N,8z@f,%+ArA! )9IYiy]A! )9IYiyqA )9IYiy r' +%+#+01##".5463232>54.'73f*-WE*&@W0 "  .#0K\,tM$;>324.#"32>2F+0E.4[{G7XB. @"$8'N ,#3-% X)L;#-FV)DlC-G[11@SB9& 3B;))1! / +017##"'7!1& <>7'6F-+(+и/ и / 9# 9A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( rA-]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v-- rA--&-6-F-V-f-v--------]A---rA--r7-?и?/H//9#901#".54>7.54>324#">4.'3260?# =0#*(!.; 9.$,1(Ma'<#( ,2"')->&8&%6#0)" #'/#6%!0!-% '/6:_*,)$  &2,'I.-#.'45/6/ܸ5и/и/ 9ArA! )9IYiy]A! )9IYiyqA )9IYiy r(A!((&(6(F(V(f(v(((((((((]A!((&(6(F(V(f(v(((((((((qA((&(6(F(V(f(v((((( rA((r2и2/-++ 901+5>7#".54>324.#"32>7>5\}H5WC- ?#%8%/E+0G0U -!% +"DkC-H\02?!(N=&/HXD<**1@9' - //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+a8 //01%#".54>54.547>32#2a  >@1#!)!=   $+$%22 " #E6#-U!$   $&$ ]iP- //01#".54>7>324.#"32>i  9'" /( ,1  ?2"/'  %  + ( *6S +,!&&  To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO     //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+:tE;///3/39)39739E3901#"&'#"54.54>323267.54>32.#"3267 $()  *1*  1+    $ 4  9713[0{}B&+#! - !  ,  A1 ///$ 901.54>32>32.#".#"f !  ":*+$)"  & & +23/& "$&_fd+?6$"Nz3r+A&6FVfv ]A],9/ /EX/ >Y,901#"&'#".54>74.'326732>z #   /< 1#"'($     f92!"*0mj^ "V[\!8:4 2;>   YwaB1///'/'9.'9B'901#"4'&54>7".54>7>32#32>7a  2  '* %  - !!  -179;" SXO "(+((    To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF%///901#2'&'"546767>32SciZ'm;> jalT-(- Gbhj`-"@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO    )z+M +A&6FVfv ]A]//01#".54>324.#"32>4) 5(&4 6'&4 =  NC..BJNE0.CL><,'0/( @>.(20)Lz+///01752>=46.#"'733R  f    4 %z'+ArA! )9IYiy]A! )9IYiyqA )9IYiy r)/!+01%#5>54&#"#>3232>73F>+.&%- *,!/n AJP%&7&",!)/,(5  z3+ArA! )9IYiy]A! )9IYiyqA )9IYiy r,//2,901#".5463232>54.'5>54&#"'>32 -<"  ".):'( "'<&NU%7% (  5*'!-+2 )z O+и и//+к 9 01#5#533'34#7k8pp'-o%+A! )9IYiy]A! )9IYiyqA! )9IYiyr' /$/ $9# $901##".5463232>54.'73 =1.="  !"5A R:7*9#":+  #%4!'z2q +A&6FVfv ]A]и/ 9///901#".54>;>324.#"32>'#2"1 %@W3'>/ .'7 $  W6* 2=0aL0  3@##-;.)$.*##o / +017##"'73#u +} d 'z'4B#C/D/ܸCи/ и / 9и/# 9(A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( r-A!--&-6-F-V-f-v---------]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v----- rA--r(5и5/-=и=///9#901#".54>7.54>32'4#">4.'326"-," +(!"6E*   #(&-,( &" !& "  !'C *$ 4 #5!%z4q+A&6FVfv ]A]и/ 9/// 901+5>7#".54>324.#"32>7>%%AY3&=0 -( "0"2"<0`L/  3A" #-7+!4> 0+#-(  y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 54.547>32#: ,-#+'"$$  1'  =$ $($ B) //01#".54>7>324.#"32> )  "#  -# &8  -'; ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 323267.54632.#"3267    $ "#      ((" %@"WY/' *"    .`/# ///" 9( 901.54>32>32.#".#"H!$)       47/ CHH,'    7 S/e+A]A )9IYiy ]*9// /*901#"&'#".54>74.'3267326   !+"   a)# "MKC=A@()% $*+  "?k:' ///#/#9*#901#"=4>7".54>7>32#32>7 $ $       #)M0 ;?8     $   ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2)* ////901#"&'.'"547676767632)#%G M*KF.S&<,EJ KE-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# }m}}l;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..StM/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 k/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 L/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 -@,=)/0+05и5/07и7/0132>32#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD\J{J"JAJ#m~msD@c_bER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>b/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  763232>763232>5>32&5>7>?>32&5>7>?>32V ')  "2    %        $    #!B6! =6!" %+%$+%$-7/    c j  b kV7}w8l+8и/All]A ll)l9lIlYlilylll ]8vиv/8q/ /d q901#"'#"&54>763232>763232>5>32'#".'#"&54>54.#"#"&54>32>7.54>32'>.#"V ')  "2    Au$     "<  , V  !B6! =6!" %+%$+%$-7/  ) AJ$   .,!!#  . 2)  #U V7Qk0/3/\/^/01#"'#"&54>763232>763232>5>32#"5467>?>32#"5467>?>32V ')  "2      $ $  $ $ X!B6! =6!" $,$$+%%-70 d  k  d  i V7R8/P/ /01#"'#"&54>763232>763232>5>32'#"5467>?>32V ')  "2      $  #!B6! =6!" %+%$+%$-7/   b  kV7^jT/ /G T9h T901#"'#"&54>763232>763232>5>32'#"&'#"&'>7.54>32'4&#">V ')  "2    '4X"$640($  O!B6! =6!" %+%$+%$-7/  FD !'+&83#7%9 e $V7Q0/3/B/D/01#"'#"&54>7623232>7>3232>5>32#"5467>?>32V '*  "2      $ $ !B6!!=6!" %-%%+%$,7/   d  i $D]E/[/ // [901#"54>7>7.54>7>32#".#">72#"5467>?>32  "(1/      !%   $ #      #  b   kDkw-a/ // a9T a9u a901#"54>7>7.54>7>32#".#">72#"&'#"&'>7.54>32'4&#">  "(1/      !%  '4X"$640($  O      # ZFD !'+&83#7%9 e $VT /)/01#".'.'.54632#"'#"&54>763232>763232>5>32H"   $ ')  "2    o  5R%# MH8!B6! =6!" %+%$+%$-7/  +ArA! )9IYiy]A! )9IYiyqA )9IYiy r/ /01'>54.'-D9%*DU+#:*(0 .)"7' =/ /+01.#"'4>32!*-"-?&)5!94%-:"SI2/DM[(4]iA/ / A9D A901#"&'#"&'>7.54>32'4&#">%467>32>32#".5467.32654&')4Z"% 650)  N )4Z"% 650)  N FD  "'+%93#!7 f&dFD  !',%83$!7 f&}EX/>Y01153}} 2% + A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >Y+01#".54>324.#"32> (34*(53(4!&8"! 5&&5 5&%6!" 3)" ")/EX/ >YEX/ >Y01#373#a66QQ //017#".54>32Q! ##Sb3/:/^+^"и^'и'/L:9017#".54>32#".54323267>54.'.54>32>324.#">R  $;LOM    42/#''  ,//A]< " #I 2%  + )$#-F '06  .",>  +#49/%/'/6//017#".54>32+"&'.5473232>;2R  s,2 9 1. #!&!"%" " #/<= ><.##7d9 //017#".54>32%4>7>;2#".#"+"4R  ,2 9 1. #!&!"%" " #/<= ><.##d\, /(/017#"&'&'&#".54>32767>32     # # `,hw3/S/s4+s;иs@и@/aS9017#"&'&'&#".54>322767>32#".54323267>54.'.54>32>324.#">    )$;LOM    42/#''  ,//A]< # #  2%  + "-2 L17.",>  +#VT- //01#".54>7>'.54>32T      J" #cKA/&/EX0/0>Y017#".54>32#"&'&'&#".54>32767>328!f    n #" # " 'A}3&/h/I+PиUиU/v&h9017#".54>32#"&'&'&#".54>326767>32#".54323267>54.'.54>32>324.#">9!h   !$;LOM    42/#''  ,//A]<# #" #  2%  + "-2 L17.",>  +#bZ,@ 2/(/017#"&'&'&#".54>32?>32#".54>32 !  F! #  " &"#ZL//#/-/:/H/017#"&'&'&#.'./&#".54>32767>;767>32       !     !   ZO-Z>)/@/EX/>YEXJ/J>YEXV/V>Y017#"&'&'&#".54>32767>32#"&'&'&#".54>32?>32 !     !n# #  # # &?N%&/J+JиJи/017#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -/.A]<? 2%  + ($#-F%06 ."->  ,"k&9/%/ + и / и / и/01%#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1R !$ w@ //017#"&54>7>7.5467>32#".#">32 I(1/   +   !&   ? %  $49s@ //01%#"&54>7>7.5467>32#".#">329 I(1/   +   !&   ? %  O //017#".#"#"&54>3232>7.5467>32#".#">32 I(1?!)   +   !&      ? %  o1~"/X///EX/>YEX/>YEX+/+>Y + и /017#".#"#"54>7>3>324&#"2>%9''/+   6!(#5 )#& !  ."(2   .}Bit O/R/01%#"&54>7>7.54>7>32#".#">36#"&'#"&'>7.54>32'4&#">. I(1/       !& )4X"$660)#   P     %  r ED "',%83$9%7 f $J+- / ///////01&'&+"&'&'7;2     !9b#M+A&6FVfv ]A] +017#"&54>324.#"32>)8!03&5 '9#  !;,EJ8+)04 (  ]k$////!/017+"'.5473232>;2$ 9 %c.;= ?<- '  ' Kj%///"//014>7>;2#".#"+"4%+ 9 +&# !i/<= ><.##wa&1 ///017#"&'#"&'>7.54>32'4&#">a)4X"$660)#   P% ED "',%83$9%7 f $U"+//017"JJ~-`-:%////"/014>7>;2#".#"+"4,2 9 1. #!&!"%"P/<= ><.##$>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32%n~l% +kuz9 -7:1"6BLIB)QLG   },Q>L/N/EX7/7>YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32%#"54>7>7>32(    %n~l% +kuz9 -7:1"# # 6BLIB)QLG   he@e:/EXK/K>YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !/%n~l% +kuz9 -7:1"" ## # &:6BLIB)QLG   $>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32)sw^ ]lp2 3>C8&{ 0YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32#"54>7>7>32(    )sw^ ]lp2 3>C8&# # ! 0YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !)sw^ ]lp2 3>C8&" ## # & 032#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD J J J;cm3(ER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  YEX/>Y1901"#".67>7>7>54.54>720<: 4G1 *  (%/'.' FI0uR.-+ +.+ # qV!]jqj]"8$,&@=&uM@&_1@:C&f@+{&hs;@v&kH@k{&s &l&m-SWN&mN::/EX1/1>YEX3/3>YEX6/6>Y01%2>54&'.'#".'.54>32##"#".69/ ![hq8   ( ['% z ,,J8  @+," =8/ ,.#$.'&o.LPN&o&n.&qN a>A2/ /EX/>YEX+/+>Y&2 901>54>32;2+".'.'#"&54>7>  !1(%&%%&%/9" (2E3 9HPG7 0K^-0C1(1<|R.'>jP"'`jp7sm3  $119La &ua&_a&f!a&h1a,&ka&s&l&m/Q17P&m1P,/01%4.#"#".'.54>32&q*BOJ<   "/  art/$6' "TUQ?& ".# '%0Nc2&OJ@%&o0J10P&o1&n0&qP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                $         $$$                                                                      '          '''                                                             +            +++ !                                 !!                       ,            ,,,! %                                    %%                     2              "222% *              !                **    !!!!! !      !!!!! #      8!    !           &888!* .      !!  ! !       # %   ! "      !    ! ..    !!$$$$$ ###########$       %%%%%!!!!!!!!!###########&   #  "  > $    $            *>>> $- 2 !    $$" !$ $      & ( "  $ %      $  "  $ 22   $$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'''''#########&&&&&&&&&&&(    """""""""""""""""""""""""""""((((($$$$$$$$$!!!!&&&&&&&&&&&*   '    % "C#'  !!!'"          !!!!!!".CCC#'1 6#   ''&%& '   ) +$ '(    ' $ ' 66 ''$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*****&&&&&&&&&)))))))))))+    $$$$$$$$$$$$$$$$$$$%%%%%%%%%%+++++&&&&&&&&&####)))))))))))-    *     '   %H&*#$$$* $          $$$$$$%1HHH&*5  : &"  **)   '   )  *  "   ,.' *+    ! ! * """'   * :: ** &&&&&&&&&&&&&&&&&&&&&&&&&&&&&-----))))))))),,,,,,,,,,,. '''''''''''''''''''((((((((((.....)))))))))&&&&,,,,,,,,,,,0   """""-   """"" *    (N)-&'''-"'     ''''''(5NNN)-9 C%,'  11/$!"$$$$-$$$"$$0$$1($ 35-12$$&&1 '''$$$$$$-"%$$$$$$%$$$$$"1"C"C """ 00%%%%%%%%%%,,,,,,,,,,,,,,,,,,,"""""""""""""""""",,,,,,,,,,44444$$$!!!!!!!/////////!!!!333333333335 !!------------------- ..........55555$$$000000000,,,,333333333338!!!!!!! """"""""""""""""""!!!!!!!!!!(((((4   (((((1    .Z/4+!---4'-      %%  ------.=ZZZ/4B K*1, "6"65)%&)#)))#3)))&"))5))#6,) #9<2#68))!+!+6  ,,+))))))2&####)))))))"))))))&6&K&K &&"& 66))))))))))2222222222222222222''''''''''''''''''1111111111;;;;;(((%%%%%%%555555555%%%%""""99999999999;  "!!!!!! %%""""""""""2222222222222222222$$$$$$$$$$$$$$$$$$4444444444<<<<<(((555555555 111199999999999>" %%%%%%% &&&&&&&&&&&&&&&&&&%%%%%%%%%%,,,,, ###############:  $$$$$$$$$$$$$$$$$$"""""""""",,,,,7    4d4;1%! 222:+2      *"*" !  2222224Dddd4;JS_<BDA  J A o<+udR7u9?#L#+ %T=B7#?JD9\=)%)FJV 7Z!ZZ5Z'Z!Z^ZZ5ZZ5Zb%ZZZ ZbDV73399-/ - 33ZL  Z5yH3 Lh^ZbZ\^933ZEZ3Z^-{-u3&/1;=3J))Xj^33j}6+}:V V V V V V ^7!!!!''\ZZ5Z5Z5Z5Z5\7ZZZZZ[777777739999/333333)/V!?==ZoZ%D)T) ) )P)Z)Z)P)==============mLmLmLmLmLmLmLmLmLmLmLmLmLmL;;j5j5j5j5j5j5j5j5jj5HVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHV++++++++++++++++++DDDDDDDDDDBBBBBDDD-------XXXXXXXXXuuuuNNNNHHHHHHHHHHHVuNuNuNuNuNuNuNFDYFDFDH`H`H`H`H`H`H`H`H`LLLLLLL''YjHjjPjPjNjjPj============================''VVVVVVVVVbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbP))))))))))))))))))`````DDDZZZZZZZZZ`#`#`#`#5H5H5H5HHHHHHHHHHHHRRRRRRR???u u u u u u u u u $)9$)9)9)91111111ooooooooooooooooooooooooooooqqqNNNNNNNPPPPPPPPPPPPP+ooooooooohhhhhhhhhhhhhhhhhhhhhhhhhhhhHHH============~===PPPPPPPBBBhhhhhhhhh999LF8+> mP'1m^5 ;@3;7B09&>N 6sJj)H)wFX;X,Xx1DmJJ$%S:!-!!!`!!!!f!o!!-!!!`!f!!!!!f A!o!!k',)!7'V7]T:@cV7:ANYT:%@c??L??? ????'??y?^?=?'?Z?B?;?)?-?F?y?^?=?'?)@.?7???;?)@?-?F0OO@y"Ay2s[ 47dcbZw$1J]K:}h}hX;X;X,X,XxXx5H9   ;@3(v@v@v@v@v@v@v@       1111444440d `P,@(p"P$$%& &L&(,-/1x334678D9 :\:< =$>@lBCFFGH|IJKLXLLM MPMtMOQS@U8VxWhZ\4\]_ _|abdfhil8ln8np q4rdrtHtuvtx8xy{| }<0 $p, DD\ <|<t,||<0H`x(@Xp”¬ $|xŐŨx(@XpɈɠ0H`x̨̐4Ld|ϔϬМ,D\tՔլ(((((((((((((lۘdp(4Ld4Lh(@Xp|,D\t\t $<Tl $<,  ( @ ` x       0 P h   l        , L l     <Tt<Tl,DTld|4Ld!!!0!H#,#D#\#|####$$$4&((((() )$)****+,,,,--4-L.`.x../p/////0001@333334 4$4<4T4l55545L5d5|677747L7d7|777778 899(9@9X9x99999::(:@;;,;D;\;t;;;;;< <$<<?@ @@4@L@dBlB|D(D@DXDpDDDDDEE E8EPEpEEEEEFHHHHII(I@IXIpIIIIJJJ0JHLM M,MDMdMMMMMQQ(Q@QXQxTT0THV$V<VTVtVVVVXYY Y8YPYhYY\<\T\l\_T_l__abbb<bTbtbbbbbf@iTiliiiiijll(l@lXlxn<nTntnnnnpTplp|pr,r<shsst@tXtpuuuvvv4vLvdv|vvvvvw wwwxxx0xHx`xxxxxxyy0yPypyyy{8{P{h{{{{{{||8|P|h||||~,~D~d~|~~~~$ 8Phh(@Xp<Tt4Tl $D\t,DTld|,D\t4L\t<\t(H`Ld| $D\t4D\tx 8Xx 8PhD\t4Ld,l<8Xl XtX``¼$ǠȬɼʔ@ddаѐҀPxִPڰۘD| 0PhL\|LX L!!"##$D%&(*,./|04012t454699;==@C\CDEFGdGHIJhKHKKMNOPPQXRDS STTU(VVW<XZZ\] ]L`,a4aabc`cde(efXggdgh`i@j,jklmHmndooooopqqr<rsdsdsdsdsxst`t`t`t`ttttttttttttttuv@v@v@v@wyz{|}xP8t(@HDhHX84T,P$(8H0H`x4L8Phf  |tv??V1]      2 ?KZbhv~     "'+<A EP X d p! " #$%&'() ~ .2 ` bn . $ <" "^ "  &X .~  .    .  ,   & > \  l x        0         : D ` (|       "    * 2 H X p  , ! " #& $  % &2 ' J (T ) \Copyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTestCopyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTestShadda+kasra placementLowered kasraRaised kasraMeem alternatesStandardSindhiHeh alternatesStandardKurdishSindhiUrduEastern digit alternatesStandardSindhiUrduSukun alternatesSukunJasm open downJasm open leftDotless head of khahStandardJasm open leftDownward commaFalseTrueSix-nine dammatanFalseTrueEnd of ayahStandardSimplified ASimplified BKasra-tcheh adjustmentRaise kasraLower kasraDiacritic selectionFalseTrueShow invisible charactersFalseTrueNoNameShadda+kasra placementLowered kasraRaised kasraMeem alternatesStandardSindhiHeh alternatesStandardKurdishSindhiUrduEastern digit alternatesStandardSindhiUrduSukun alternatesSukunJasm open downJasm open leftDotless head of khahStandardJasm open leftDownward commaFalseTrueSix-nine dammatanFalseTrueEnd of ayahStandardSimplified ASimplified BKasra-tcheh adjustmentRaise kasraLower kasraDiacritic selectionFalseTrueShow invisible charactersFalseTrueNoName   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a   bcdefghjikmlnoqprsutvwxzy{}|~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.nulltab hyphenminusEuro nobreakspace sfthyphenuni02C9microperiodcentereduni2219enQuademQuadenSpaceemSpacethreePerEmSpacefourPerEmSpace sixPerEmSpace figureSpacepunctuationSpace thinSpace hairSpace zerospace zeronojoinzerojoinleftToRightMarkrightToLeftMark noBreakHyphenleftToRightEmbeddingrightToLeftEmbeddingpopDirectionalFormattingleftToRightOverriderightToLeftOverride wordJoinerinhibitArabicFormShapingactivateArabicFormShaping circledashzeroWidthNoBreakSpaceabsAlefMaddaAboveabsAlefHamzaAboveabsAlefHamzaBelowabsAlefabsAlefWavyHamzaAboveabsAlefWavyHamzaBelowabsHighHamzaAlef absAlefWaslaabsWawHamzaAboveabsWawabsHighHamzaWawabsUHamzaAbove absWawRing absKirghizOeabsOeabsUabsYu absKirghizYuabsWawTwoDotsAboveabsVeabsWawDotAboveabsWawDotBelowabsDalabsThalabsDdal absDalRingabsDalDotBelowabsDalDotBelowSmallTahabsDahal absDdahalabsDulabsDalThreeDotsAboveDownwardsabsDalFourDotsAbove absDalHatabsDalTwoVertBelowSmallTahabsDalInvSmallVBelowabsRehabsZainabsRreh absRehSmallV absRehRingabsRehDotBelowabsRehSmallVBelowabsRehDotBelowDotAboveabsRehTwoDotsAboveabsJehabsRehFourDotsAboveabsRehTwoVertAboveabsRehHamzaAbove absJehRetro1 absJehRetro2 absJeh.dotHat absRehHat absRehBar absYehBarreeabsYehBarreeHamzaAboveabsYehHamzaAboveabsYeh absYeh.noDotsabsHighHamzaYeh absFarsiYeh absYehSmallVabsEabsYehThreeDotsBelow absYehTailabsAlefMaksura absBehNoDotsabsBehabsTehabsThehabsTteh absTtehehabsBeeh absTehRingabsTehThreeDotsAboveDownwardsabsPehabsTehehabsBehehabsBehThreeDotsHorizBelowabsBehThreeDotsAboveDotBelowabsBehThreeDotsUpwardBelow&absBehTwoDotsAboveThreeDotsUpwardBelowabsBehDotAboveTwoDotsBelowabsBehInvSmallVBelowabsBehSmallVAboveabsJeemabsHahabsKhahabsHahHamzaAboveabsHahTwoDotsVerticalAboveabsNyehabsDyehabsHahThreeDotsAboveabsTcheh absTchehehabsTchehDotAboveabsTchehRetro1absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3absHahTwoDotsAboveabsHahThreeDotsUpwardBelowabsSeenabsSheenabsSeenDotBelowDotAboveabsSeenThreeDotsBelow#absSeenThreeDotsBelowThreeDotsAboveabsSheenDotBelowabsSheenRetro1absSheenRetro2absSeenFourDotsAboveabsSeenTwoVertAboveabsSadabsDadabsSadTwoDotsBelowabsSadThreeDotsAboveabsDadDotBelowabsTahabsZahabsTahThreeDotsAboveabsAinabsGhainabsAinThreeDotsAboveabsGhainDotBelowabsAinTwoDotsAboveabsAinThreeDotsDownAboveabsAinTwoDotsVertAboveabsFeh absDotlessFehabsFehDotMovedBelowabsFehDotBelowabsVehabsFehThreeDotsBelowabsPehehabsFehTwoDotsBelowabsFehThreeDotsUpwardBelow absQafNoDotsabsQafabsQafDotAboveabsQafThreeDotsAboveabsKafabsKafDotAboveabsNgabsKafThreeDotsBelowabsKeheh absKafRingabsGaf absGafRingabsNgoehabsGafTwoDotsBelowabsGuehabsGafThreeDotsAboveabsKehehDotAboveabsKehehThreeDotsAboveabsKehehThreeDotsUpwardBelow absSwashKafabsLam absLamSmallVabsLamDotAboveabsLamThreeDotsAboveabsLamThreeDotsBelow absLamRetro absLamBarabsMeemabsMeem.sindhiabsMeemDotAboveabsMeemDotBelowabsNoonabsNoonDotBelow absNoonGhunnaabsRnoon absNoonRingabsNoonThreeDotsAboveabsNoonTwoDotsBelow absNoonRetro absNoonSmallVabsHehDoachashmee absHehHatabsHehabsHeh.knottedabsAe absTehMarbutaabsHehYehAbove absHehGoalabsHehGoalHamzaAboveabsTehMarbutaGoalabsHamzaabsSignSindhiAmpersabsSignSindhiPostpositionMen absTatweel absLamAlefabsLamSmallVAlefabsLamDotAboveAlefabsLamThreeDotsAboveAlefabsLamThreeDotsBelowAlefabsLamRetroAlef absLamBarAlefabsAlefMaddaAboveFinabsAlefHamzaAboveFinabsAlefHamzaBelowFin absAlefFinabsAlefWavyHamzaAboveFinabsAlefWavyHamzaBelowFinabsHighHamzaAlefFinabsAlefWaslaFinabsWawHamzaAboveFin absWawFinabsHighHamzaWawFinabsUHamzaAboveFin absWawRingFinabsKirghizOeFinabsOeFinabsUFinabsYuFinabsKirghizYuFinabsWawTwoDotsAboveFinabsVeFinabsWawDotAboveFinabsWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFinabsDalDotBelowFinabsDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFinabsDalFourDotsAboveFin absDalHatFinabsDalTwoVertBelowSmallTahFinabsDalInvSmallVBelowFin absRehFin absZainFin absRrehFinabsRehSmallVFin absRehRingFinabsRehDotBelowFinabsRehSmallVBelowFinabsRehDotBelowDotAboveFinabsRehTwoDotsAboveFin absJehFinabsRehFourDotsAboveFinabsRehTwoVertAboveFinabsRehHamzaAboveFinabsJehRetro1FinabsJehRetro2FinabsJehFin.dotHat absRehHatFin absRehBarFinabsYehBarreeFinabsYehBarreeHamzaAboveFinabsYehHamzaAboveFin absYehFinabsYehFin.noDotsabsHighHamzaYehFinabsFarsiYehFinabsYehSmallVFinabsEFinabsYehThreeDotsBelowFin absYehTailFinabsAlefMaksuraFinabsBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFinabsBehThreeDotsHorizBelowFinabsBehThreeDotsAboveDotBelowFinabsBehThreeDotsUpwardBelowFin)absBehTwoDotsAboveThreeDotsUpwardBelowFinabsBehDotAboveTwoDotsBelowFinabsBehInvSmallVBelowFinabsBehSmallVAboveFin absJeemFin absHahFin absKhahFinabsHahHamzaAboveFinabsHahTwoDotsVerticalAboveFin absNyehFin absDyehFinabsHahThreeDotsAboveFin absTchehFin absTchehehFinabsTchehDotAboveFinabsTchehRetro1FinabsTchehRetro2FinabsJeemRetro1FinabsJeemRetro2FinabsJeemRetro3FinabsHahTwoDotsAboveFinabsHahThreeDotsUpwardBelowFin absSeenFin absSheenFinabsSeenDotBelowDotAboveFinabsSeenThreeDotsBelowFin&absSeenThreeDotsBelowThreeDotsAboveFinabsSheenDotBelowFinabsSheenRetro1FinabsSheenRetro2FinabsSeenFourDotsAboveFinabsSeenTwoVertAboveFin absSadFin absDadFinabsSadTwoDotsBelowFinabsSadThreeDotsAboveFinabsDadDotBelowFin absTahFin absZahFinabsTahThreeDotsAboveFin absAinFin absGhainFinabsAinThreeDotsAboveFinabsGhainDotBelowFinabsAinTwoDotsAboveFinabsAinThreeDotsDownAboveFinabsAinTwoDotsVertAboveFin absFehFinabsDotlessFehFinabsFehDotMovedBelowFinabsFehDotBelowFin absVehFinabsFehThreeDotsBelowFin absPehehFinabsFehTwoDotsBelowFinabsFehThreeDotsUpwardBelowFinabsQafNoDotsFin absQafFinabsQafDotAboveFinabsQafThreeDotsAboveFin absKafFinabsKafDotAboveFinabsNgFinabsKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFinabsGafTwoDotsBelowFin absGuehFinabsGafThreeDotsAboveFinabsKehehDotAboveFinabsKehehThreeDotsAboveFinabsKehehThreeDotsUpwardBelowFinabsSwashKafFin absLamFinabsLamSmallVFinabsLamDotAboveFinabsLamThreeDotsAboveFinabsLamThreeDotsBelowFinabsLamRetroFin absLamBarFin absMeemFinabsMeemFin.sindhiabsMeemDotAboveFinabsMeemDotBelowFin absNoonFinabsNoonDotBelowFinabsNoonGhunnaFin absRnoonFinabsNoonRingFinabsNoonThreeDotsAboveFinabsNoonTwoDotsBelowFinabsNoonRetroFinabsNoonSmallVFinabsHehDoachashmeeFin absHehHatFin absHehFinabsHehFin.knottedFlatabsHehFin.knottedHighabsHehFin.hookedabsAeFinabsTehMarbutaFinabsHehYehAboveFin absHehGoalFinabsHehGoalHamzaAboveFinabsTehMarbutaGoalFin absLamAlefFinabsLamSmallVAlefFinabsLamDotAboveAlefFinabsLamThreeDotsAboveAlefFinabsLamThreeDotsBelowAlefFinabsLamRetroAlefFinabsLamBarAlefFinabsYehHamzaAboveMed absYehMedabsYehMed.noDotsabsHighHamzaYehMedabsFarsiYehMedabsYehSmallVMedabsEMedabsYehThreeDotsBelowMedabsAlefMaksuraMedabsBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMedabsBehThreeDotsHorizBelowMedabsBehThreeDotsAboveDotBelowMedabsBehThreeDotsUpwardBelowMed)absBehTwoDotsAboveThreeDotsUpwardBelowMedabsBehDotAboveTwoDotsBelowMedabsBehInvSmallVBelowMedabsBehSmallVAboveMed absJeemMed absHahMed absKhahMedabsHahHamzaAboveMedabsHahTwoDotsVerticalAboveMed absNyehMed absDyehMedabsHahThreeDotsAboveMed absTchehMed absTchehehMedabsTchehDotAboveMedabsTchehRetro1MedabsTchehRetro2MedabsJeemRetro1MedabsJeemRetro2MedabsJeemRetro3MedabsHahTwoDotsAboveMedabsHahThreeDotsUpwardBelowMed absSeenMed absSheenMedabsSeenDotBelowDotAboveMedabsSeenThreeDotsBelowMed&absSeenThreeDotsBelowThreeDotsAboveMedabsSheenDotBelowMedabsSheenRetro1MedabsSheenRetro2MedabsSeenFourDotsAboveMedabsSeenTwoVertAboveMed absSadMed absDadMedabsSadTwoDotsBelowMedabsSadThreeDotsAboveMedabsDadDotBelowMed absTahMed absZahMedabsTahThreeDotsAboveMed absAinMed absGhainMedabsAinThreeDotsAboveMedabsGhainDotBelowMedabsAinTwoDotsAboveMedabsAinThreeDotsDownAboveMedabsAinTwoDotsVertAboveMed absFehMedabsDotlessFehMedabsFehDotMovedBelowMedabsFehDotBelowMed absVehMedabsFehThreeDotsBelowMed absPehehMedabsFehTwoDotsBelowMedabsFehThreeDotsUpwardBelowMedabsQafNoDotsMed absQafMedabsQafDotAboveMedabsQafThreeDotsAboveMed absKafMedabsKafDotAboveMedabsNgMedabsKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMedabsGafTwoDotsBelowMed absGuehMedabsGafThreeDotsAboveMedabsKehehDotAboveMedabsKehehThreeDotsAboveMedabsKehehThreeDotsUpwardBelowMedabsSwashKafMed absLamMedabsLamSmallVMedabsLamDotAboveMedabsLamThreeDotsAboveMedabsLamThreeDotsBelowMedabsLamRetroMed absLamBarMed absMeemMedabsMeemDotAboveMedabsMeemDotBelowMed absNoonMedabsNoonDotBelowMedabsNoonGhunnaMed absRnoonMedabsNoonRingMedabsNoonThreeDotsAboveMedabsNoonTwoDotsBelowMedabsNoonRetroMedabsNoonSmallVMedabsHehDoachashmeeMed absHehHatMed absHehMedabsHehMed.hookedabsHehMed.knottedHighabsHehYehAboveMed absHehGoalMedabsHehGoalHamzaAboveMedabsYehHamzaAboveIni absYehIniabsYehIni.noDotsabsHighHamzaYehIniabsFarsiYehIniabsYehSmallVIniabsEIniabsYehThreeDotsBelowIniabsAlefMaksuraIniabsBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIniabsBehThreeDotsHorizBelowIniabsBehThreeDotsAboveDotBelowIniabsBehThreeDotsUpwardBelowIni)absBehTwoDotsAboveThreeDotsUpwardBelowIniabsBehDotAboveTwoDotsBelowIniabsBehInvSmallVBelowIniabsBehSmallVAboveIni absJeemIni absHahIni absKhahIniabsHahHamzaAboveIniabsHahTwoDotsVerticalAboveIni absNyehIni absDyehIniabsHahThreeDotsAboveIni absTchehIni absTchehehIniabsTchehDotAboveIniabsTchehRetro1IniabsTchehRetro2IniabsJeemRetro1IniabsJeemRetro2IniabsJeemRetro3IniabsHahTwoDotsAboveIniabsHahThreeDotsUpwardBelowIni absSeenIni absSheenIniabsSeenDotBelowDotAboveIniabsSeenThreeDotsBelowIni&absSeenThreeDotsBelowThreeDotsAboveIniabsSheenDotBelowIniabsSheenRetro1IniabsSheenRetro2IniabsSeenFourDotsAboveIniabsSeenTwoVertAboveIni absSadIni absDadIniabsSadTwoDotsBelowIniabsSadThreeDotsAboveIniabsDadDotBelowIni absTahIni absZahIniabsTahThreeDotsAboveIni absAinIni absGhainIniabsAinThreeDotsAboveIniabsGhainDotBelowIniabsAinTwoDotsAboveIniabsAinThreeDotsDownAboveIniabsAinTwoDotsVertAboveIni absFehIniabsDotlessFehIniabsFehDotMovedBelowIniabsFehDotBelowIni absVehIniabsFehThreeDotsBelowIni absPehehIniabsFehTwoDotsBelowIniabsFehThreeDotsUpwardBelowIniabsQafNoDotsIni absQafIniabsQafDotAboveIniabsQafThreeDotsAboveIni absKafIniabsKafDotAboveIniabsNgIniabsKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIniabsGafTwoDotsBelowIni absGuehIniabsGafThreeDotsAboveIniabsKehehDotAboveIniabsKehehThreeDotsAboveIniabsKehehThreeDotsUpwardBelowIniabsSwashKafIni absLamIniabsLamSmallVIniabsLamDotAboveIniabsLamThreeDotsAboveIniabsLamThreeDotsBelowIniabsLamRetroIni absLamBarIni absMeemIniabsMeemDotAboveIniabsMeemDotBelowIni absNoonIniabsNoonDotBelowIniabsNoonGhunnaIni absRnoonIniabsNoonRingIniabsNoonThreeDotsAboveIniabsNoonTwoDotsBelowIniabsNoonRetroIniabsNoonSmallVIniabsHehDoachashmeeIni absHehHatIni absHehIniabsHehIni.hookedabsHehYehAboveIni absHehGoalIniabsHehGoalHamzaAboveIni absHighHamza absSmallWaw absSmallYeh absFathatan absDammatan absKasratanabsFathaabsDammaabsKasra absShaddaabsSukunabsMaddahAbove absHamzaAbove absHamzaBelowabsSubscriptAlef absUltaPeshabsNoonGhunnaMark absZwarakayabsVowelSmallVabsVowelInvSmallVabsVowelDotBelowabsReversedDammaabsFathaTwoDotsabsSuperscriptAlefabsSuperscriptAlef.largeabsSmallHighSadLamAlefMaksuraabsSmallHighQafLamAlefMaksuraabsSmallHighMeemInitialFormabsSmallHighLamAlefabsSmallHighJeemabsSmallHighThreeDotsabsSmallHighSeenabsSmallHighRoundedZero"absSmallHighUprightRectangularZeroabsSmallHighDotlessHeadOfKhahabsSmallHighMeemIsolatedFormabsSmallLowSeenabsSmallHighMaddaabsSmallHighYehabsSmallHighNoonabsEmptyCentreLowStopabsEmptyCentreHighStopabsRoundedHighStopFilledCentreabsSmallLowMeem absNumberSign absYearSignabsFootnoteSign absPageSignabsAfghaniSignabsCommaabsComma.downwardabsDateSeparator absVerseSign absMisraSignabsSmallHighSadMarkabsSmallHighAinMarkabsSmallHighRehHahMarkabsSmallHighRehDadMark absNameMarkerabsSmallHighTah absSemicolonabsSemicolon.downwardabsTripleDotPunctabsQuestionMarkabsPercentSignabsDecimalSeparatorabsThousandsSeparatorabsFivePointedStar absFullStop absEndOfAyahabsEndOfAyah.altabsEndOfAyah.altBabsStartOfRubElHizbabsPlaceOfSajdahornateLeftParenornateRightParenabsLigatureAllah absRialSignabsZeroabsOneabsTwoabsThreeabsFourabsFiveabsSixabsSevenabsEightabsNineabsEasternZero absEasternOne absEasternTwoabsEasternThreeabsEasternFourabsEasternFour.urduabsEasternFive absEasternSixabsEasternSix.urduabsEasternSevenabsEasternSeven.urduabsEasternEightabsEasternNine zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMediumabsThreeMedium absFourMedium absFiveMedium absSixMediumabsSevenMediumabsEightMedium absNineMediumabsEasternZeroMediumabsEasternOneMediumabsEasternTwoMediumabsEasternThreeMediumabsEasternFourMediumabsEasternFourMedium.urduabsEasternFiveMediumabsEasternSixMediumabsEasternSixMedium.urduabsEasternSevenMediumabsEasternSevenMedium.urduabsEasternEightMediumabsEasternNineMedium zeroSmalloneSmalltwoSmall threeSmall fourSmall fiveSmallsixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmallabsEasternZeroSmallabsEasternOneSmallabsEasternTwoSmallabsEasternThreeSmallabsEasternFourSmallabsEasternFourSmall.urduabsEasternFiveSmallabsEasternSixSmallabsEasternSixSmall.urduabsEasternSevenSmallabsEasternSevenSmall.urduabsEasternEightSmallabsEasternNineSmallabsEndOfAyah.aat1absEndOfAyah.aat2absEndOfAyah.aat3absEndOfAyah.alt.aat1absEndOfAyah.alt.aat2absEndOfAyah.alt.aat3absEndOfAyah.altB.aat1absEndOfAyah.altB.aat2absEndOfAyah.altB.aat3absEndOfAyah.sp1absEndOfAyah.sp2absEndOfAyah.sp3absNumberSign.aat1absNumberSign.aat2absNumberSign.aat3absNumberSign.sp1absNumberSign.sp2absNumberSign.sp3absYearSign.aat1absYearSign.aat2absYearSign.aat3absYearSign.aat4absYearSign.sp1absYearSign.sp2absYearSign.sp3absYearSign.sp4absFootnoteSign.aat1absFootnoteSign.aat2absFootnoteSign.sp1absFootnoteSign.sp2absPageSign.aat1absPageSign.aat2absPageSign.aat3absPageSign.sp1absPageSign.sp2absPageSign.sp3absShaddaFathatanabsShaddaDammatanabsShaddaKasratanabsShaddaFathaabsShaddaDammaabsShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlefabsSukun.leftOpenabsSukun.downOpenabsDammatan.sixNineabsAutoKashida_dot1 _dot1_tah _dot1_smallV _dot1_hat_dot2h _dot2h_tah_dot2v_dot3u _dot3u_tah_dot3d_dot3h_dot4_tah_madda_hamza _highHamza _wavyHamza _wavyHamza.b_wasla _hamzaDamma_bar_ring_smallV _invSmallV_damma_vline_hat_gafBar _gafBar_dot2h _gafBar_dot3u _gafBarShort_gafBarShort_dot2h_gafBarShort_dot3u_linesabsEndOfAyah.2absEndOfAyah.3absEndOfAyah.alt.2absEndOfAyah.alt.3absEndOfAyah.altB.2absEndOfAyah.altB.3absNumberSign.2absNumberSign.3 absYearSign.2 absYearSign.3 absYearSign.4absFootnoteSign.2 absPageSign.2 absPageSign.3absLamIni.preAlefabsLamSmallVIni.preAlefabsLamDotAboveIni.preAlefabsLamThreeDotsAboveIni.preAlefabsLamThreeDotsBelowIni.preAlefabsLamRetroIni.preAlefabsLamBarIni.preAlefabsAlefMaddaAboveFin.postLamIniabsAlefHamzaAboveFin.postLamIniabsAlefHamzaBelowFin.postLamIniabsAlefFin.postLamIni#absAlefWavyHamzaAboveFin.postLamIni#absAlefWavyHamzaBelowFin.postLamIniabsHighHamzaAlefFin.postLamIniabsAlefWaslaFin.postLamIniabsLamMed.preAlefabsLamSmallVMed.preAlefabsLamDotAboveMed.preAlefabsLamThreeDotsAboveMed.preAlefabsLamThreeDotsBelowMed.preAlefabsLamRetroMed.preAlefabsLamBarMed.preAlefabsAlefMaddaAboveFin.postLamMedabsAlefHamzaAboveFin.postLamMedabsAlefHamzaBelowFin.postLamMedabsAlefFin.postLamMed#absAlefWavyHamzaAboveFin.postLamMed#absAlefWavyHamzaBelowFin.postLamMedabsHighHamzaAlefFin.postLamMedabsAlefWaslaFin.postLamMed+++D Y+a:+_H8)+PH8)++ E}iD   HK" +B)!BB'B*BB1B*BBA?&P_!w7ya_nm                     #&8(+ #x&s(d+L#x&(d+L#x&L(d+!#x&L(d+L-x0L#x&(d+L#x&L(d+ #Z&(d+L#&Z(d+L! 3 =b=#L&(+25!3#k&(+-k025gCFfikn#&(+25g#&6(+2e5#k&(+25g#g&(+25g#c& (+2}5#k&#(+2}5a#\&(+25#c&(+25#c& (+25$#g&i(+25a#g& (+2y5 #g&(R+25g99!# &[(+L2y5 CPF;#&F(+L2q5#&S(+L2X5#&P(+p2y5 #&T(+>2y5 #&c(+>2X5#&(+L2y5#&W(+>2y5 #&(+L2q5:#&(+L2u5j#&(+L2q5j# &F(+L2m5#&D(+2e5#&_(+ 2y5 ww!o#&(+2u5CmFfi@kLn#&H(+2u5#&(+2y5#&(+2u5D#&(+2u5#&(+D2u5#&(+2u5#&(+D2u5#&(+2m5P#&(+2m5y#&(+2i5#&(+2q5q#&(+2y5#&((+2y5#&(+2q5j#&[(+2y5#&f(+2m5#&(+2u5!#Y&(+p-Y0#I&(+p!  jqO#g&(+p#E&(V+!#I&(+j#&(+p#E&(+p-E0adp#&(+p#&(+%#&(+#&(+p#&(+p!#&I(+2*5GC|F #&I(+U2*5G#Z&(+2*5#V&(+2*5#E&}(+2&5#X&(+2"5#&I(+2*5G#V&}(V+L2"5#X&(+2"5#&I(+2*5G#X&(+2"5#&I(}+{2*5G#&I(t+&2*5G#_&(+32"5#&I(p+2*5G#l&_(p+2"5#p&_(p+2"5#&I(l+2*5G#&(+2"5#&(+25 #&(+25a dfi8#&(+25#&(+25#&(+25 #&(+25#&(+25#&L(+25 #&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25 #&(+25 #&(+25!#&(,+-0#c&+(,+#&(,+#&(,+#g&'(,+#k&'(,+#E&(,+#8&9(,+#<&c(,+#<&x(,+=!#&(,+#&(,+#&(,+#&X(,+#&(,+; !#&(+L25#&(+L25#&(+L25&!g#&(,+#&L(,+#&(,+#&S(,+#&[(,+#&(,+#& (,+#&(X+.2V5P!#&(X+.2V5#&(X+.2V5#&(Z+/2V5#&(X+.2V5#&(E+2V5#&(X+.2V5#&(X+.2V5#&(R+2V5!Z#&(+#J&(+#J&(+#J&(+p!#;&(+.25#/&u(+.25#&\(+.25#;&L(+25%+!G#& (I+25CF#& (I+25#&(I+25#&(I+25#J&(I+25#&(+p25#&(+p25#;&(I+25#&(E+25#&(I+25#& (Z+j25#&(X+.Uw!#,&(+25 kn#&$(+25#&(+25#&T(+25#;&(+ 25 #&(+25#,&t(+25)"S!I#&E(+lX(X!#&(+8#& (+l#&R(+l#&(+.#+&(+O!x#,&f(+.CF#&U(+.25#+&(+s#&(+.#+&(+ #&(^+.25#h&(^+.[[!#h&W(,+=#J&.(T+=#&(+L#h&W(,+=0!#&(+L#&(+L! @ @#&h(+L#&(+=! @ @#&l(+L#&(+L !e#&(+L#&(+w#&(+#&(o+D!kn p.suXx9}DŽX^yʑ˜XuXx9}X^y:˜XuXx9}X^y˜XuXx9}X^yg˜XuXx9}tՉoʑ˜t՝oux}X^yI˜Xux}X^yʑ˜X#d&s(+M#Z&(+M#d&(+!#i&(+M-i0#<&(+M#K&(+#i&U(+M#&Z(+M! 37 =3=#8&p(+25ww!7#4&(+-4025CFfifknd# &(+25#&(+#4&(+25#4&(+25#4&(+250#/&(+25#/&(+25#4&(+25 #4&(+25#4&(+25#/&(+25#/&(g+25.!#&(,+L25C;F[#&(,+L25]#'&(,+L25#&(,+p25#&(x+n25#'&(|+f25#&(,+L25#&(c+]25#&(,+L25#&2(,+L2y5#&(,+L25#g&(,+L25#'&(+25j#8&(|+f25]]!P#&X(+2e5C\Ffk@n\#&(+2e5#&(+2m5;#&W(+2a5o#&X(+C2e5#&X( +!2e5#&X(+2e5#&X(+ 2e5#& (+2e5+#&(+2i5W#&(+2e5#&y(+2m5[#&[(+2a5#&(+2m5 #&B(+2e5#&(+2a5#&,(+2i5#&X(+2e5-!#w&(+-w0#&(+! C C#&(+v#&I(+rA!#&I(+r#&I(+v#&I(+v-0Iadv#&4(+v#&I(+#&I(+#&I(+v#&I(+v,E!|#&I(+2.5GCLF#&I(0+2.5G#x&4(+2.5G#g&(+2.5G#'&(+2.5G#x&(+2.5G#&I(8+2.5G#x&A(+?2.5G#t&(+2.5G#&I(8+]2.5G#p&(+2.5G#&I(++]2.5G#&I(#+32.5G#_&(#+&2.5G#&I(+j2.5G#x&A(+j2.5G#x&(('+2.5G#&I(#+2.5G#&A(+2.5G#&(+25 #&(+25adfi#&(+25#&(+25#&(+25#&(+25#&(+25#& (+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25M !#&(R+- 0#&(M+#&(I+#&(I+#&4(R+#&'(R+#w&(^+#&W(^+#x&4(^+#k&8(^+m!#&(,+#&#(,+#&(,+#&(,+#&#(,+27!#&(+L25#&(+L25#&(+L25ww#,&(+#,&(+#,&~(+#,&(+#'&(+#@&[(+#8&S(+#&(X+2J5'/;!s#&(X+2J5'#&(V+2J5'#&(R+2J5'#&(X+2J5'#&(X+2J5'#&(X+2J5'#&(Z+2J5'#&(R+2J5']!s#h&(x+#&(|+#&(x+#&(t+))&!#& (X+25 #&[(X+25 #&(X+25 #& (R+v25 %.!#& (X+L25 CFW#& (X+L25 #&(X+L25 #&(X+L25 #&(X+L25 #&(_+n25 #&(+25 #E&(X+L25 #&(X+L25 #o&=(X+L25 #& (+25 #&(X+LO!#,& (^+25kZnZ#&(^+25X#&(^+25X#&(^+25X#J& (+25#&~(+25#J&(+25 S!#&(+s-!X#&(+p#&W(+#&(+#V&(+25#V&(+|25}!#Z&(+25CFX#+&A(+25#V&(+25#M&(+25#V&(+|25#8& (^+25#g&(^+2j5)/!d#&(+ #^&(,+=#,&(+L#&(+ bKV!#h& (,+=#&(+77!#,&(+L#&L(+L!  ))#&o(+L*!O#&(+! q q#&,(+#&(+!knuXx}^yБ /uXx}^y/uXx}^y`+uXx}^y/uXx}ۇ̉@UБ +֛̝@UuxF}^ypv/u:x}^yБ 3! Q oQo#&(+2<5 #&X(+>2<5W#&X(+2<5W#&(+2<5W#&X(+>-0X2<5Wad>#&_(+>2<5#&X(+2<5W#&X(+2<5W#&X(+2<5W2!#&X(+2<5WCFj#&X(+>2<5W#&W(+2<5#&(+2<5 #g&F(+5#&(+2<5#&X(+2<5W#&R(+2<5#&(+2<5 #&X(+2<5W#&(+2<5 #&X(+2<5W#&X(+b2<5W#&(+n2<5 #&X(+2<5W#&N(+2<5#&W(+P2<5#&X(+s2<5W#&[(+2<5#&(+s25  !#&(+725ad7#&(+725#&(+725#&L(+725#&(+f25#&(+25#&~(+7250#&(+25#&(+25#&(+25#&(+25L#& (+25#& (+Y25#&(+s25]#c&(+725T#&(+725#&(+25M!#&X(+7-0X25S#&(+725#& (+25S#&(+25S#&(+25#&(+w25#o&(+725 #x&(+7250#&(+725#&(+725S!#& (+25S#&(+25S#& (+Y25S#&(+25S#&(+25S/!#&(+72 5 #&(+72 5 #&(+72 5 -F'!#&(+7#&(+7#&(+7#&(+]#&(+7#&N(+7#&=(+7#'& (+72y5{a(!#'&R(+72y5#+&W(+Y2y5#/& (+]2u5#&(+72y5#'&J(+2y5#'&(+72e5#+&W(+?2y5#'&[(+2y5#'&[(+72y5#'& (+72u5L#'& (+72}5#'&(+72}5dT!#&(+j2e5CF#&7(+j25#x&(+j25g#&(+2e5#&(+j2e5#&(+j2e5#&(+j2T5#&(+j2X5#Z&(+j2 5#&(+?2X5#&(+2X5#&r(+j25 #&(+j25#x&(+j25K#&(+2e5#&(X+j253!#&l(+725kn#& (+725#d&(+725#d&r(+725#&l(+v25#<&(+725#&(+725p!##&(++72y5[##&9(++72u5##&(|+j2y5[#&N(+2<5#&N(+>2<5#&R(+2<5#b& (+5#&R(+2<5#&(+2<5W#&N(+U2<5#U& (+5#&J(+2,5/[!d#^&(,+>25/# &('+Y#^&(,+>25/#&(+ &{&!# & ('+Y2e5!  #Z&(,+>25#&(+ ! #m ##,& (+ ! ! hi!h#x&(b+725#&(+\2(5#&(i+2(5#M& (i+2(5#&(+\-02(5ad\#&(+\2(5#&(+2(5#&(+2(5#&(i+2(5v!#&(i+2(5CF[#&(x+b2(5#&(i+2(5T#&(i+2$5#k&(i+25L#&(i+25#&(|+2(5#&(|+2(5i#&((i+25 #&(+2(5#&L(i+2$5#&(x+2(5#&(o+n2(5#&5(o+w25#&(k+2(5#&(o+2 5#&(k+P2,5m#&(^+U2(5#&(i+2 5#&(+25!#&(+j25adj#&(+j25#&(+j25#&L(+j25(#&(+25#&(+25#&~(+j25T#&(+25#&(+25#&(+25#c&(+25P#& (+25#& (+L25#c&(+25D#c&(+j25L#&(+j25 #&(+25!#&&(+7-0&25'#&(+725#& (+p25'#&=(+25'#&(+25#&(+p25#c&(+725f#c&(+725#&(+725#&(+725U!#& (+25'#&(+25'#& (+25'#&(+25'#&(+25'?|!#&(+j5#&(+j5#&(+j5JJ!#&J(4+j#&=(4+j#&(4+j#&=(4+s#&F(4+j#&(4+j#&(4+j#&N(+jz!#&N(+j#&R(+b#&N(+b#&(+j#&R(+#&(+j#&R(+Y#&R(+#&R(+j#&L(+j#&L(+j#&(+j\!#&(+Q205CFi#&(+Q25f#&q(+Q25#&(+205#&(+Q205#&(+Q205#&(+Q2$5 #&(+Q2$5 #d&x(+Q25K#&(+]2$5 #&(+2$5 #2&(+Q25#&(+Q25n#g&\(+Q25#&(+205#&(X+j25dxWx!#x&(d+j25kn#x& (d+j25#x&(d+j25#x&(d+j25#&(x+25#&(d+j25#&(d+j25C#&(,+j2X5O#&(,+j2L5#&(,+2X5O#x&(i+2$5]#x&(s+Y2(5i#x&(i+2(5]#^&(i+25H#x&(+2$5P#&N(g+2(5#x&(o+Y2(5]#M&(i+25J#s&K(i+25#;!#,&W('+Y2(5#&('+Y205#&H('+Y2(5#&(+72(5! g g#&9('+Y205#&(+72(5! } 9$}9#&(+72,54#&U(+u#Z&HxK#Z&HK(+1\_#Z& HxK#i&HK(+\_#&UHK#Z&HxK#Z&HxKV#<&HxK(+>WiZ\i_(\+\\_#x&HxK#& HK#Z& HKɧn#&HK#&HK(+-\_#j&HK#i&'HiK#&HKv#&pHKHKHKHKHKHKHKHKHKHK#&HKHKWdZj_jHKHKHKZj_8HKHKZj_MMMM,##&`(#+j#&(+=#&}(+&!h#&(,+HKHKHKҧHKڧHK H-K #&(+=#&F(+'#,&(,+=#&(+#^&(+MMM#&(,+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M@M?M?M?M?M@M?M?#x&HK#Z&HK%)LVLV#Z&HK#Z&HK#Z&HK%)VV#Z&HK#>&HxK#,&HxK#Z&HK#&(HK#&(HK&HK#&(o+DAMMMMMMMMMM9MXMMKMKt!#&(A+2A59kn #&!(A+2A59#&(A+2A59#}&(A+2A59#&(y+2A59#I&F(A+25#&(A+2B5&(+257:x<&@(+257:x<&(+257:2<.!&(+57:x<&@(+2x57:x<&(+57:<#&(+257:x<&(+25x7:x<!#& (+2d5kn#&x(+2d5#&E(+2d5#&(+25ע#& (+2d5#&}(+25P#& (+2d55#!&(+257,:f<?&7(+257,:f<?#/&(+57:<?0!#/&(+57,:f<?#&$(+257,:f<?#/&(+57:<?#!&(+257,:f<?#%&(+257,:f<?`_l/b###########!#&["#&c##&#(+$#&`$(+Զ` "(.48<FPTZhntz"(6<BHN\jpv|  .4:@FLRX^lz $*0:DJPTX\`dhlx| "(,04@FLPTX\bhntz &,28>DJPV\bhntz "(.4:@FJNTZ`flrx~$:Pf&Db  4 P  : X v R p  $ B ` ~  , J x  2H^t0Nl >\zFd6TpJ`v 2H^t0F\r&Db$Rp<Zx$Zx 2Vl&<Zp@VfV 6J^r  " 6 R n !!2!N!!!!!""*"F"b"~""""#.#J#f#####$$*$F$b$~$$$$% %6%J%v%%%%%&&"&6&J&~&&&&' '&'B'^'z''''(("(>(Z(v(((())6)R)n)))))**2*N*j*****+++*+>+R+f+++++,,",>,^,r,,,,,,--:-V-r----.....B.n....//./J/f/////00"0V0r000001"1F1Z1n111122.2J2f22222333>3R3|333484x44585x5566"6>6j666677,7H7d7|777788$8@8\8x888899 9T9p99999::4:P:l:::::;;H;d;;;;;< <((>D>`>|>>>>??$?@?\????@@@8@T@p@@@@@AA4AhAAAAABBFZFvFFFFGGG:GVGrGGGGHH2HNHjHHHHHII.IJIfIIIIJ J&JBJ^JzJJJJKK2KNKjKKKKKLL2LFLZLnLLLLLLM MM2MFMZMnMMMMMNN2NNNjNNNNNOO.OJOfOOOOP P&PBP^PPPPPQQ.QJQfQQQQRRR:RlRRRRRRS S S6SLSbSxSSSSSTTT8TNTdTzTTTTTTUUUU,U:UHUVUlUzUUUUUUUUUVVVV.VDVXV^VbVVVVVVVWW$W*W@WFWLWRWhW~WWWWWWWWWWWWWWWWWWXXXXXX X&X,X2X8X>XDXJXPXXX`XhXpXxXXXXXXXXXXXXXXYYYY"Y,Y6Y@YJYTY^YhYrY|YYYYYYYYYYYYYYYZZZZ&Z0Z:ZDZNZXZbZlZvZZZZZZZZZZZZZZZZZZZZZZZ[[[[ [[[[[ [$[([,[0[4[8[<[@[D[H[L[`[t[[[[\\\0\D\X\h\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]] ]]]]"]*]2]:]B]J]R]Z]b]j]r]z]]]^^*^N^r^^^^_._R_r___``B`f````a&aNaaabb2b6b@J`v ^ Zj*:Rj "Aa ?_GILKM !"@CO)  NQPSVUabfdHJe$&*43'~ #012[\`^_ghi%kqmplnorst]cuvw|y}z{(TXYWZx?BA57=89>6:;<jDF+-./,R E=?BAC 69EDGFILKWX\Z>@[ *)wu~v}&'(QRVTU]^_agcfbdehjkSYlmnsptqrJNOMPo587+-3./4,012`:<!#$%"    H;{|\   !"#$%&'()*+#')$')yyzriYUR[ZY`_l/b:::44Te6}  "?A_a{}6y7x91:;z<={?@ ABpCtDuEvFGrHsITJqK LMNOP Q R S2T%U>V&W*XSYZ'[k\o]l^m_n`3a4b5c)d(e^fdg_haibjekflgm`nco[pq]r\stiu|vjwx"yz#{|}~wUXVWY67I9:8J!$ ;<=h?CADEB@FGHKLMZOQRNP,/+0-.      !"#$%&'()*+,-./0123456789:;<=~>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmnopqrstuvw}~?}      !"#$&')*+,-./0123456y7x91:;z<={>?@ ABpCtDuEvFGrHsITJqK LMNOP Q R S2T%U>V&W*XSYZ'[k\o]l^m_n`3a4b5c)d(e^fdg_haibjekflgm`nco[pq]r\stiu|vjwx"yz#{|}~wUXVWY67I9:8J!$ ;<=h?CADEB@FGHKLMZOQRNP,/+~0-.      #&(   abcdefg7w~        whr  ""??AA__aa"(; 1>?`aghhjw}   P[   "#%&')*     +?Rdz )9HVc{"!"" "#"" """"  %$%% &&&&%'%%%%%%*)**++++*,******0/0011110200000054556666575555558888( -.3437-0437-0437-0437-0437-0337-0337-0337-0337-0337-0+,0+,0+,0+,0+,0+,0+,0+,0+,0+,0/ / / / 19/ / / 1:/ / / 18/ / 17/ 1|| [@677889:;;<?@dest*+9:ghhivwwx}~~ qrrs      "##$%&&''(()    &-4;BIMQX_d&,28>DJNRV\`flu      + 0+ 0+0+0+0+0+0+0+0+0+0+0+0+0+0+ 015#!'' 15#! 1?1>1>1>10 10 1111= 111111$(#1!!!$  ++[[__aaP[      *6AP^kw      "!!#"!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1---@)~@>34459::;?@deefstvw}~*++,9:<=CDLMPQ_``aghkltu    4556FGZ[        +P[\\  !#%&'      "-8K&m'e'h\Z ##### $),,,,,*+,,,,,*,-,,,,,.,,,,,,,,,,+,,,,,,%/0&&&&&&011111112111113111145''''''566666667666668 6666!9"""""""":(("((("(:;;;;;;;<;;;;;=;;;;>?0045"""""""":?".70".70".70".70".7037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #0&#,2#,5#,4#,6#)#)# )# )# #0&#,##,&P###)H#)K# )J# )L# + #0&#,##,&P###)H#)K# )J# )L# + #0&#,##,&P###)H#)K# )J# )L# + #0&#,##,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,-#,0#,/#,1#)#)# )# )# 0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&,M#,P#,O#,Q#)R#)U# )T# )V# ##&,M#,P#,O#,Q#)R#)U# )T# )V# ##&,M#,P#,O#,Q#)R#)U# )T# )V# ##&#,M#,P#,O#,Q#)R#)U# )T# )V# #1&,M#,P#,O#,Q#)R#)U# )T# )V# ##&,M#,P#,O#,Q#)R#)U# )T# )V# ##&#,M#,P#,O#,Q#)R#)U# )T# )V# #1&,M#,P#,O#,Q#)R#)U# )T# )V# ##&#,M#,P#,O#,Q#)R#)U# )T# )V# #1&#,M#,P#,N#,O#,Q#)R#)U# )T# )V# #17c7c7d 2 9::;STTU    #$$%P[\\ <s-i            &#,7#,:#,9#,;#)W#)Z# )Y# )[# + #0&#,a#,d#,c#,e#)#)# )# )# 0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0 Qzrzrzp m@-#$$%    * +PQQ RTU_ `mnno    *++,Z[[\^__``aabghhivwwxOP[\\]  !"$%&'()*+,-./12469:;<=>?@ABCDFGIKNOQSVX[^bcdefghijlmopsuwx{}-2P '( ",!#K$1%&O +FJFJ0N *AEAEIAIEIAEI/M )<@<@D<D@D<@DH<H@H<@HDH<DH@DH<@DH.L 77;;7??7;?;?7CC7;C;C7?C?C7;?C;?C7GG7;G;G7?G?G7;?G;?G7CGCG7;CG;CG7?CG?CG7;?CG;?CG66::6>>6:>:>6BB6:B:B6>B>B6:>B:>B55995==59=9=44883   &Ko#Fh2G[n(6ET^hr 4H[m5Lb{/CZp     "#! "#"%&$%%&%'''''''((((((()*******+,,,,,,,-.0....../.0....../121111113333333/4044444456555655655565565556578777879:999:99:999:99:999:9;<;;;<;=>===>==>===>=?@???@?AAAAAAABBBBBBBCDDDDDDDEFFFFFFFGHJHHHHHHIKLKKKKKKMMMMMMMINJNNNNNNOPOOOPOQRQQQRQSTSSSTSUVUUUVUWXWWWXWYZYYYZY[\[[[\[]^]]]^]_`___`_abaaabacdcccdcefeeefeggggggghhhhhhhi  jjjjjjjk lllllllm n pnnnnnno  qrqqqqqqsssssssotpttttttuvuuuvuwxwwwxwyzyyyzy{|{{{|{}~}}}~} !"#$%&'()*+,-./ /!/"/#/$/%/&/'/(/)/*/+/,/-/./ !"#$%&'()*+,-.021132456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno+ 0+ 0+ 0+ 0#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1#1#1#1#1#1#1#1#1#1#1#1j#1#}#1##1#8#1#~#1#1#1#1~##*#1#F#*F#12#*2#12#*2#12#*2#12#*2#12#*2#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1 Ȁ Ԁ   #&)    !"%$'( bdhlckbtkmr|kurplksclsdsdhsndururdgrcompiler-5.2.1/test/GrcRegressionTest/fonts/icu48/000077500000000000000000000000001411153030700223355ustar00rootroot00000000000000grcompiler-5.2.1/test/GrcRegressionTest/fonts/icu48/SchBenchmark.ttf000066400000000000000000011234501411153030700254120ustar00rootroot00000000000000`Feat~ Glat55xcGloc,^H LTSH>KlOS/2n `Silf"P#HSillF_VDMX[ccmap7o `cvt 5`fpgm2Psi|bgasp glyfhdmxm6Pkheadb->-6hheav-$hmtxb.loca@maxp S nameSpost\Y!4lIprepu,jLL;LL+/"DLD;L"/L77LL77DLL"D73D/L/DDD;DXXXX SIL@ JA       !"#$ % &!'"(#)$*%+&,&-'.(/)0*1+2,3-4-5.6/708192:3;3<4=5>6?7@8A9B9C:D;E<F=G>H?I?J@KALBMCNDOEPFQFRGSHTIUJVKWLXLYMZN[O\P]Q^R_R`SaTbUcVdWeXfYgYhZi[j\k]l^m_n_o`paqbrcsdteuevfwgxhyizj{k|k}l~mnopqrrstuvwxxyz{|}~~& $%&'()*+,-./0123456789:;<=>DEFGHIJKLMNOPQRSTUVWXYZ[\]^b6ACSTU"#efoptuwx~?7ID[$+4lv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiulv@6 ~1Sax~ :J^imxVm     " & . 0 : ` m !"""%? !1R`x}  !@K`jnyPW    & * 0 9 ` l !"""%>=s[FcA;4߷W0tlnpppb po{lzp|j^6ABCSTU"#efoptuwx~?7@ 9VWXYZ[\ghiqrvy]:>;<=452jszcd !3m{|}-.nqrdstfhiu*w#5,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y-<3Bci+EX/ >YEX0/0 >YEX;/; >YEX>/> >Yn+nX01#".54>32#"&/&#"#".54>3232767>32#".'+#".54>3232>7>54.54>32>76332654.54>32!%!!#  C        b %<^t8&=* !/6;7/# 2*    "   u       3,  "jG,; ?4 #. ,   @0+#.   8m0H+A]A )9IYiy ]9/A! )9IYiy]A! )9IYiyqA! )9IYiyr и/)и)//$/01"&54.'.54632#".54>32j    0#&0 &3FBS"-'*=[EE[=*'-"SBGHH 3d^!"/#/ܸ A ]A  ) 9 I Y i y ]"и/A&6FVfv ]A]//EX/ >YEX/ >Y01#.54632#.54632 %",#( !+#),[\Z*"Y_]%)1-""ei]'W[Z)'3-EX/ >YEX/ >YEX / >YEX/ >YEX/ >YEX/>YEX/>Y+ии и ܸ иииии01#!##53#533333#3!F=EG@F5E//EX/ >YEX/ >YEX/>YEX/>Yܸ(ܸ.к89>9?01%#5.'53.54>753#.'4.'>1Sk:1D?!zg._L1-J`31"><= gk-hY;7(+5#5>&A0>cG)^^jl ?M`>8X>#FF  g GTf#4#"<3*Z&?5,k3Cu7Mg'^)+N+D +A ]A  ) 9 I Y i y ])D9A!&6FVfv]A!&6FVfvqA!&6FVfvrи/NQиQ/A^^&^6^F^V^f^v^^^ ]A^^]6/EX./. >YEX/>YEX/>Ya$+a=и=/ܺ6969GAGG'G7GGGWGgGwGGG ]AGG]01#"&54>32##"&'#".54>32326734.#"32>4&'.#"32>$4CS0h\8]yB#<,J.^2' 0VsD3F+7]xB)42:.Fx,J)#>5)-3%B7,  '" ,.*6&B7+)]ZR?%qd@hB.>G)=tL 8O.?kC 29^.$&?PRN1;"9INL(!#9I1A#:JPN9Pdvpm+[+&Q+&8и8/AQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ rA[[&[6[F[V[f[v[[[ ]A[[]Amm&m6mFmVmfmvmmm ]Amm]EX!/! >YEX/>YEX/>YMAMM'M7MGMWMgMwMMM ]AMM]P!9!VAVV]AVV(V8VHVXVhVxVVV ]rArr'r7rGrWrgrwrrr ]Arr]01%#".'#".54>7.54>32>54.#5!"32674.#">.'32> (:M/(JC<%INX33aL/;[p4'(F`8*J8!/IX(-c9/& >  "J+2:?!9DH+1$  #C4 FAk3$A22F+962,M8 *5 7'9V8Ao\I3v99\@".D,5SA2RJ?EI#  $)(J,)J7 #?^/EX / >Y01#'.54632 )!) %#& F9-?/+L`%M +A&6FVfv ]A]//01.'.54>7>76>?%D33D%?>6 Ac####cA ".7)\mMMl\(8." ?wD"MXd9:eYM"DtA+`%M+A]A )9IYiy ]/ /01%'>7>54.'.'73D&A=7 Ac#$$#cA 7=A&D3Mm\)7." AtD"MYe:9dXM"Dw? ".8(\l 9/?O_o +A!&6FVfv]A!&6FVfvqA&6FVfv rAr`иf/c/-#+#Uи-[01'&>7>'#".54632#".54>32%.'.76&'.76%#"&54632#"&54>32''&67>B 43(%1  !(*?;));?*((45 /$ 1%(34*;?+''+?;*l  Z$/ 54( .$ (34>;**;>,&&   $. 43( 33( $.  ,&&,>;**;>(33 .$ %hH ?+и// +и 01#!5!3!=}=@}@T3`//EX/>YEX / >YEX / >YEX/>YEX/>Y01567>54#"#"54676323>/  P '2$)L#1?" T '/=` +0175!=rrm /EX/>Y01%#".54>32m3& B&3 B //01#7=^?77J8/9/ܸ8и/A]A )9IYiy ]*A**&*6*F*V*f*v*]A**]A**]EX/ >YEX/>Y#A##]A##(#8#H#X#h#x### ]1A11'171G1W1g1w111 ]A11]01#".54>324.#"32> 3KcA<`H3  4Jc>>aI2  (<+,=)  )<+/?) 3wwpU43Tmus01vwqW43SmusXcbO1;^tqaZegR3=awtdH-+EX/ >YEX/>Y01352>546.#"'73316 ( 41 ";-@85'z,:##+ +A ]A  ) 9 I Y i y ]-EX/ >YEX/>YA]A(8HXhx ]$01)5>54.#"#>32!2>73{*hkeO04J/Xm+HfB:iP0(?M%9s= %<4/'`nx|~=,Q>$\P>iM,'Gc=9qka(=9"!?<A5"+A""]A "")"9"I"Y"i"y""" ]"59/A]A )9IYiy ]EX0/0 >YEX/>YA'7GWgw ]A]0'A'']A''('8'H'X'h'x''' ]:0901#".5463232>54.'5>54.#"'>32@oS=8(&15;"(F3.Pl>.S@&,>&A_#2AS8.VB('1]aRXY- !7H'Da?'>S0%?.G6 .O;!5M3#@:3" i+и иEX/ >YEX/>Y+к 9 01#!533 !F}PRg_ekgJ%c+ArA! )9IYiy]A! )9IYiyqA )9IYiy r'EX$/$ >YEX / >Y$$#ܺ$#9 A'7GWgw ]A]01!#".5463232>54.'!dEMvHBoP=6&,/6!/Q;"SKm}=dTRh;(%?S/Y}P'D!:);/YEX/>Y'+96A66'676G6W6g6w666 ]A66]01#".54>;>324.#"32>.VxJ6ZG4#(JiR+]rN1n<>`B",M;+*(  ,;$.@(XEf=$>R]c/N{[4M{U"*3Ul.o`A  *Q)GID6 .FT9 /EX / >YEX/>Y 01#!"'7!hQ1-A3*c  0'\'8J/ +(+A((]A (()(9(I(Y(i(y((( ]9(99/A99]A 99)999I9Y9i9y999 ]ܸ и/# 9A//&/6/F/V/f/v/]A//]A//]/AиA/EX/ >YEX/>Y#9*A**]A**(*8*H*X*h*x*** ]FAFF'F7FGFWFgFwFFF ]AFF]01%#".54>7.54>324#">4.'32>0Rl;6jT3'J"'SC,">0(=F1&3JT"9B/F/$@1@bA!"A];-RG; 8R8-L?3DO\%8%*I>515@1WLB1}M+M9"':=!8-9/:/ܸ9и/9"A""]A "")"9"I"Y"i"y""" ],A,,&,6,F,V,f,v,,, ]A,,]"6и6/EX/ >YEX/>Y1+9'A'']A''('8'H'X'h'x''' ]01+5>7#".54>324.#"32>7>(JiS+\rN0m:?aC",SvK6ZH6$/M9.@&*H802*  oN|\4M}S .3Vn:Dg@$>T]c,rhG/FT&+naB &M?!]+A&6FVfv ]A]и //01#"&54632#".54632%33% 3% 3%&2  %3 b)m/EX / >YEX/>YEX/>YEX / >YEX/>YEX/>Y01#"'&547632567654#"#"547632?"###?03 P&0$+u"  &]L#17FT('.)9B//9015 ){]V]]%h5++015!5!%CC??@@)9B//901%5 5){9](']]Fq.<=/>/ܸA]A )9IYiy ]=%и%/A!&6FVfv]A!&6FVfvqA&6FVfv rAr и /EX / >YEX*/* >YEX2/2>Y*A]A(8HXhx ]01#>7>54.#"#".54>32#"&54>32q(=H?,5/(+A-2+!  0Ma27fO/1##3#1'9[RNXhC[M3q>(J:# &$#! &#*8R4:Y#0.% 3Jh/^vɻT +k++H+! 94 96 9AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rA!TT&T6TFTVTfTvTTTTTTTTT]A!TT&T6TFTVTfTvTTTTTTTTTqATT&T6TFTVTfTvTTTTT rATTrAkk&k6kFkVkfkvkkk ]Akk]xEXM/M >YEX/>Yp&+d+pи/&к!M9d5и5/6d9@ܸYAYY'Y7YGYWYgYwYYY ]AYY]01%#".546$32#"&5467#".54>32?32>7>54.#"32>74.#"32>hjbjvƏP.F\tE7;DPT)#3!8M[h6mw#'!# :3,<5KgcqM)Uۅjx*>%%KC:*  *OE9)kxAg sGy<~vhM-485JB-2=1uuoU3hR Ww{_ %/NakyA7a]ݟY;l_,#3Sgi`!&/Mbe_ J),>EX!/! >YEX/>YEX/>Y, +01!52>54.'!!5>73!$t &(&5% ic&6*`HLB%/42* !1<I#;--`&7HoA+'+A'']A '')'9'I'Y'i'y''' ]8'98/A88]A 88)898I8Y8i8y888 ]ܺ"9A/EX/ >YEX/>Y3=+"=39,A,,]A,,(,8,H,X,h,x,,, ]=@и@/DADD'D7DGDWDgDwDDD ]ADD]01#!52>54.#5!24.#"32>4.#*32>&BWae/09 :1/d`VA&2D'3T>"3Qe3#E"$I#5dN/:[r8 F ,V-3cO1' !;.0;" &=W;+H9* %;SYEX / >YEX/ >YEX/>Y A]A(8HXhx ]+A++'+7+G+W+g+w+++ ]A++]01%#".54>322>73#.#"32>7EѐrFKu'C?>" ;SnGFkQ7!,]e@aOD"|PorǕV  @kN,)H`ow:[|H7O1) */+/ܸ* и /A]A )9IYiy ] "EX/ >YEX/>YA]A(8HXhx ]%A%%'%7%G%W%g%w%%% ]A%%]01#!52>54.#5!24.#"32>V{809 :1_5ie(M''Q(dg5@ !;/0YEX/ >YEX/>Y&+ܸ-01)52>54.#5!#.#!32>73#.+;2>73309 :1  'C9/9#"90$!CV?2  !;/0: 1A&l !9--:#+0M6-X$+EX / >YEX+/+ >YEX/>Y++01.+32>73#4.+3!52>54.#5!$4I3&/ 3& ;1J1: :0 2A&n$4"$6$/;!  !;..;# 5F=,>/?/ܸ>и/"и"/-A--&-6-F-V-f-v--- ]A--]5EX / >YEX/ >YEX / >Y A]A(8HXhx ](и 2A22'272G2W2g2w222 ]A22]01"#".54>32232>73#.#"32674.'5!F*.R`uΙYSs2a0!  cG&NYYY)*8";;{YEX-/- >YEX/>YEX/>Y&+01!52>5!3!52>54.#5!"!4.#5!"30; " ;1J1: :00:!  ;0-9!  9- !;.:/;!  !;//;"  ";/%/;"  7-T.8 '-+EX / >YEX/>Y01352>54.#5!"3'1::10: :2 !;./;"  ";/j.;! !P&m+EX%/% >YEX / >YA'7GWgw ]A]01"#".543232>54.#5!P1: YEX7/7 >YEX/>YEX/>Y*"901!52>54.'3!52>54.#5!">54."#5!"  - :0N1991/9 IX\L0 y7mbT{ ?DM0 3-/;!  !;/.;#  ";/AR[VG=W\ !9*"3+EX/ >YEX/>Y01)52>54.#5!";2>77$8%%8$%8& 2&fJdI8 2)(2  2(_&1 /UD=0 +*+!*9*2EX/ >YEX"/" >YEX/>YEX/>YEX/>Y9 9!901!52>5#3!52>54.#5! !"309 tu 9008 7+ sm"0: 90 !:.\V/:!  !:.)9# !:.d/:! F'(/)/ܸ(и/ и/EX/ >YEX&/& >YEX/>YEX/>Y9901"#3!52>5.#534.#5!F0: \ :009 !%0#q 90e !:.70:  !:.'N.:! 5/J0/1/ܸ0 и /A]A )9IYiy ] "A""&"6"F"V"f"v"]A""]A""]EX/ >YEX/>YA]A(8HXhx ])A))')7)G)W)g)w))) ]A))]01#".54>324.#"32>HrrFKqoF 0JgF@aH0 0Hb@CeJ1 mĕWVnoSUt8tl^F))F^io43plbJ,(E]iq%"34/5/ܸ4и/ ܸ#A##]A ##)#9#I#Y#i#y### ] +EX/ >YEX/>Y/+и/(A((]A((((8(H(X(h(x((( ]01#"&'3!52>54.#5!24.#"32>%9bI A" :0L0991tEuK7Q43> -G2Sm@/;!  !;/0;" ?nd1W@& P%=O567/8/ܸ и /7и/A]A )9IYiy ]+A++&+6+F+V+f+v+++ ]A++]EX/ >Y2 +$A$$]A$$($8$H$X$h$x$$$ ]01.'&54>324.#"32>4aWL[m@R7JrpF 1IdCAdH0 1Hc@bK[e5]H-/Mh=AoSV~6socJ,)G^jp54pk`I+T-<=/>/=и/ܸ>!ܺ&!9.A..]A ..).9.I.Y.i.y... ]6EX/ >YEX/>YEX / >Y&93A33]A33(383H3X3h3x333 ]6и6/01!"'3!52>54.#5!24.#"32>9 ;0J1::1-_[R>$&C\54YEX*/* >YEX4/4 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и4/A//]A//(/8/H/X/h/x/// ]<01#".#"#332>54.54>3232>73#.#"6Yt>)RI<  .LkD%I9$/LbebL/1Rk;#E?4  *GdA"@30OdidO0CjJ(  aAlM+*?*,G=78>K[:?dE$ L]%?+EX/ >YEX / >Yи01.+3!52>5#"#7!h X[90P08 {0H1# P WY/:!  !:. (D3L4+,+6EX/ >YEX3/3 >YEX / >Y$A$$'$7$G$W$g$w$$$ ]A$$]01"#".54.#5!"3267>54.#5!L.: '[q}X5-,4 9iUE~3 :0k&=,`ir=>wo*:%%:*AGa9,0KSS0;" H&@EX/ >YEX%/% >YEX/>Y901#.'5!>54.'5!H 0$ #2%'# !&<&1s 0"6#R !  =vEX/ >YEX%/% >YEXYEX/>YEX / >Y990901"# #.#5!".#5!">54.#5!(4"  2*y# Ȫ ,A0'  !&/%9DrR!=0  " %]R8 K5 "!  HR[EX(/( >YEXC/C >YEX/>YEX/>Y (96(901!52>54.'3!5>7.'5!>54.'5!$ 091# "'H@75?L3%!'/+!&390$% j-C6/0:G.  =OVJ2  0;3''E4! 5AF=,+>HC7 .;!#H<)F7R+*9EX/ >YEX6/6 >YEX / >Y* 901"3!52>=.#5!">54.#5!F-@3) 90N08%,6")$%9B9( $e0?!}/:!  !:.4+ J]eU:;  7EX / >YEX/>Y ܸ 01)5!"#!!2>7T9I- `;N5$.L6?7O2?+//01%%)(O//EX/>Y013uBnF =+//01'7'7NXO)bj///901% #3\V\V{R +015!77V //01'&5432wD/(2*:27BRRH+7R+R иRAHH&H6HFHVHfHvHHH ]AHH],H9,/&ܸ7TEX1/1 >YEX/>YEX/>Y 191!A!!]A!!(!8!H!X!h!x!!! ]=A=='=7=G=W=g=w=== ]A==]B19C19M01%#".5#".54>754.#"#"&54>3232>732>7#)026:"'=*'@RVR 2*")&#2KX'AY6  "ZO7()'$d)!!((!0A&*F:/% #A3#/"&( /B*9YA@%3D--$ /1%2/3/ܸ2и/*ܸк9A]A )9IYiy ]/EX/ >YEX/>Y9$A$$]A$$($8$H$X$h$x$$$ ]-A--'-7-G-W-g-w--- ]A--]01#"&'46.#"'73>324.#"32>3]QE7 #/6>#DdA/J6+'$ S05H,uLnC4'@@/R 3'=axg,`Q5c"*YEX/>YA]A(8HXhx ]A]A(8HXhx ](A(('(7(G(W(g(w((( ]A((]01#".54>32#".#"32>7{ 0Kb;KoI$.VzL#RF0' " **2E*6U<*B3'6fP1AiBHf<*>)"(/(/JY*3n\;0?"3 /*=H>/?/ܸ=ܸи> и / 9=и 5A55&565F5V5f5v555 ]A55]/EX/ >YEX/>YEX/>Y990A00]A00(080H0X0h0x000 ]:A::':7:G:W:g:w::: ]A::]01#5#".54>32546.#"'7332674.#"32679 *eYEX/>Y +A'7GWgw ]A]%A%%]A%%(%8%H%X%h%x%%% ]01%#".54>32!32>7'4.#"0Ja9JqL&'OyQ>bD$#>_A(?1% %8''<+6cL.>fCKf=*Kg=8t_=-=##B3 3C#9/1f#+и#'EX/ >YEX&/& >YEX/>Y- +ܸ$и%01#".#"3#3!52>5#5354>32  &(1$'  "?4`-4$HlHB:)  *3*0<>817;4= %:)7/By\7!0-Ma|!q*+N+b+и/ANN]A NN)N9NINYNiNyNNN ]N9Aqq&q6qFqVqfqvqqq ]Aqq]>*q9>/ܸ>4и4/9*9>XAbbrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA bb)b9bIbYbibybbbbb r~EXC/C >YEX#/#>Y#C99#C9xAxx'x7xGxWxgxwxxx ]Axx]01&##"&'2#".54>7.54>7.54>32326324.#"32>4.'.'32>+/-Lb55%-I^b^I-$> ( ":,&3 #;-'2  doj# /;:4"[R9uI#:W;*#>3.L=, )971 /,& ,7?!:]@##SH0!3@ $RF.2?  #%"  ":/=>/?/7ܸܸ>и/ܸ+к,79*/EX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ],*901!52>54.#"3!52>54.#"'73>323"+ .+0,&+$!*  #09C%BI#(! +" H=)$",  + $!R5'=\n1+ / %I+и/и/ /EX/ >YEX / >Y01#"&5463252>54.#"'733/, -- -"*   !)" .," +,C +!q # T!+ - .} #+ и/ /EX-/- >YEX/>YA'7GWgw ]A]01#"&54632#".5463232>4546.#"'73-. ,-/ @hM.+$'!!  ! .,",,QC}a;'->@<:+ T  /C^ + &%/EX1/1 >YEX/>YEX/>Y %9'%901!52>54&'3!52>5464.#"'737>54&'5!23  -('-   #%+ 3,)$&, +    $1  0& "((!R^  .*$-/ +/EX/>Y01352>546.#"'7339$)  !-% /:9)Rm#0 ^ +8++X++DкE8X9M9X`EXC/C >YEXJ/J >YEXR/R >YEX/>YEX/>YEX1/1>YR A ]A  ( 8 H X h x ]%и%/>кEC9MC901!52>54.#"3!52>54.#"3!52>546.#"'73>32>323V(- -$1-(-')- .$1-'.'%)  !5:B'JU3:D(8H()$ 1$+;0"$1  1%+<0#$1 0!;;+T4*ME4)-H\/ 0=Ǹ>/?/7ܸܸ>и/ܸ+к,79EX*/* >YEX1/1 >YEX/>YEX/>Y1 A ]A  ( 8 H X h x ]%к,*901!52>54.#"3!52>546.#"'73>323'-,&2-'-'&*  3:B#8G(,% 1%@5"$$1 0!BB2T4*.K\/!03+J,/-/ܸ, и /A]A )9IYiy ]  A  & 6 F V f v ]A ]A ]EX/ >YEX/>YA]A(8HXhx ]'A''''7'G'W'g'w''' ]A'']01#".54>324.#"32>/X~OKyU//X|MK{W/ 0A+3B& !0A*6B$ fKi?=dFIg>7`!PQK;#3M\)!PRM<$3O^+@YA/B/ܸAи/ ܸ!к"9,A,,]A ,,),9,I,Y,i,y,,, ] 6EX / >YEX'/' >YEX/>YEX/>Y'9 A]A(8HXhx ]"'91и546.#"'73>324.#"32>(PwO.S"/(*0 ,7A'Db?y,M=.)# "?68L.sFpG &2 4)*% V;.?by0o`@#(+O=$3Pa3#4I5/6/ܸܸ5и/и/$и,A,,&,6,F,V,f,v,,, ]A,,]EX/ >YEX/ >YEX/>YEX / >Y9'A'']A''('8'H'X'h'x''' ] 1A11'171G1W1g1w111 ]A11]0152>5#".54>3267334&#"3267&,39@#Aa@ 1[T%L.(-%HR:O02O:-L 0$+4)?cw9NmA#0 8MX6Se01fS52 0P+&EX%/% >YEX,/, >YEX/>Y'%901#".#"3!52>54.'&#"'73>32) 2G'+  $-5$s*'& BA 1$ 04.  T6/ L#CD/E/ܸD#и#/и/A]A )9IYiy ]#=A!==&=6=F=V=f=v=========]A!==&=6=F=V=f=v=========qA==&=6=F=V=f=v===== rA==rEX(/( >YEX0/0 >YEX/>YEX/>Y A  ' 7 G W g w ]A ]и(8A88]A88(888H8X8h8x888 ]01%#".#"#5332>54.54>3232673#.#"#*BS)30+ "5G-+!5P\P5&>Q*&&% ,?*/'9UcU9-H4 )L;# &0A2-9M90E.  %E6!$2?/*7Q  S +/EX/ >YEX/>Y9 ܸи01%#".5#5>733#3267 -7 (5 m'A5)"( 6*3B#8GN$33(##0ø1/2/(ܸܸи1 и / (9EX/ >YEX&/& >YEX/>YEX/>Y9A'7GWgw ]A]-01#5#".54.#5332>74.#533275#4;A$8F' - -#0,' +  4+2N`-5"*38,# ' $!  $@EX/ >YEX#/# >YEX/>Y901#.'5!">54.#53   $F    !J" !N8vEX/ >YEX/ >YEX7/7 >YEX/>YEX/>Y99-901# #.'5!".'5!>54.#53N%/ "#& .*J!!(%  /#EF# sC$?0 >VaYE }! M[EX)/) >YEX?/? >YEX/>YEX/>Y )94)901!52>54.'3#5>?'.'5!#&>54.#53  #"$&  )% $/!F#!%&  (MD8 %- #/4/% $-1.$  (,+  081 172 >SW-$<EX&/& >YEX;/; >YEX / >YA'7GWgw ]A]1 &901#".5463232>7.'5!">54.#53 -YEX/>Yܸ 01732>73!5#"#7!5># +8"D3 #>2b 7,H/6̺3+A33&363F3V3f3v333 ]A33] 39 /A ]A  ) 9 I Y i y ]ии3#и .ܸ(/EX/>Y+901.54>54.'5>54.54>7H7eN/ 2>>2 0Pe4OY q^_p YO1Md9999!9+'*8!<<<8aI/aS444g"#i333Tay/"+/EX/>Y013yA}=/8к+A&6FVfv ]A]9/A]A )9IYiy ] ܸ и%и .и3)/EX/>Y)9015>54.54>7.54>54&'5=>1 /Ne6NZ 6L/^q ZN5eN0 1>^+9!9999dM1aT3335TC1"g444Sa/Ia8<<<!8*+//+ +01#".#"'>3232>7+*5@&/ZZY.0' )'3@*+``Z%1( ;.#)#*27 @3$+$&1DEX/ >YEX#/# >YEX/>Y  +++A++]A++(+8+H+X+h+x+++ ]0к192и 9к:9 ;иAAAA'A7AGAWAgAwAAA ]AAA]01%#".'#73&45465#73>32>73#.#"!!!!3267@NeDTrNqIjVOwZ?Z  3CR/NmG%8w /OqLV{57T9//EX/>YEX/>YEX/>Y01!5>54&#"#".54>32w3H+,% $0"0M;* !'/ ! *6L /EXH/H >Y01#"&54654&#"3##"&5463232>7>7>7#7>7>32 %  G# #-9G,#7! '/ !" "0E1%"  +DRNA1!TYVC)(&% ,=?MNca1@PUG. 3;/#/EX/>YEX/>YEX/>YEX/>YEX./.>YEX1/1>YA'7GWgw ]A]7015>54&#"#"&54>325>54.#"#"&546323H+,%  +$0#4H,,& "*<'0"0L:+! '. / ! +60M;* !'/ 0*/*6\ #EX/>YEX/>YEX/>Y A  ' 7 G W g w ]A ]и!01%#"&54632#"&54632#"&54632\/%%-/##11#%/1##1/%%-/##1?#33#$00$#33#$00$#33#$00L!Fk:2+A::&:6:F:V:f:v::: ]A::]5//D+ иD(и(/01#".'#.'>7#"&54>324.54632>32-!567 "(654&( 269+) 975 0#%3] dfec'*0"& #?>?$&:"!@?A"*h/{nV?+AVV&V6VFVVVfVvVVV ]AVV](?V9(/A((]A (()(9(I(Y(i(y((( ]ܸVкK?V9K/Qܸ и /Kи/(и? и /(0к8?V9(Fи^иVfиVnиVtN/EX/>Yy+[a+иy#к8a[9a=и=/[Aкfa[901#".'#".54>7"#"546323.'>54&'>7#"5432.54632>32#".'>32H/12*" 40-F'#./0 &$+ 111BB123+#( 211 $( 110 %#"&"101+ F877".7:;B% !6B>{0#BA986"00&49<!"" #6|A?z56+$//EX/ >Y01'#35`D%Kaw\;+L+X +b+n+A ]A  ) 9 I Y i y ]';9(;9-;9K;9A! LL)L9LILYLiLyLLLLLLLLL]A! LL)L9LILYLiLyLLLLLLLLLqA! LL)L9LILYLiLyLLLLLLLLLrA! bb)b9bIbYbibybbbbbbbbb]A! bb)b9bIbYbibybbbbbbbbbqA! bb)b9bIbYbibybbbbbbbbbrAnn&n6nFnVnfnvnnn ]Ann]A&6FVfv ]A]@/J/EX/>YEX/>YEX&/&>Y6+Q+!к(&J9-&J9[A[['[7[G[W[g[w[[[ ]A[[]Qgи[q01#"&54>32#"&54>32##"'#".54>3232>734.#"32>%4.#"32>4&'.'32>D$4DS1g[7]yC#<,)OrHg[7\yB$=,JV&]3;6.5)1/%A6,0-E0":0$ )]ZR?%qd@hB.>#>yPqd@hB.>E#%%UUO=$%>P+YEX/>Y01 3}#)dc\%EX/ >YEX/>Y01#3))#be917PQ/R/Q и /Rܸ8ܸи/+и DADD&D6DFDVDfDvDDD ]ADD]EX/ >YEX/ >YEX/ >YEX/ >YEX"/" >YEX/>YEX/>Y*+ܸи1A11'171G1W1g1w111 ]A11]KAKK'K7KGKWKgKwKKK ]AKK]01)"#".54>;$3#.+32653#.+632>734.#"32>5;v;mw>@zrm 'D:PO$;-(?.>YE5<5?_D- .D]<9? WflR6B$ n?S-:#31/L9,H4+Jajm21jg]F*!9O._&>^ Js!/EX/ >Y01#".54>732632s$0#4H,,&    *60M;* '/ w/EX/ >Y015>54.#"#"&54>32w4H,,&  ,$1"0L;*! '. 1   *53?E///+и/%и%/8и8/;и;/01#".54>732632#".54>732632$0#3I+,&  ,$0"3H+,%    +60L:+! '. 0  *60M;+! '. ?/%/EX/ >YEX;/; >YA]A(8HXhx ]и0и0/3015>54.#"#"&54>325>54.#"#"&54>323H,,&  *$1"4H,,&  ,$1"}0L:+! '. / ! +60L;*! '. 1   *53NM +A&6FVfv ]A]+01#".54>32.>#$?..?$#>.$?..?$#>..>T +015!!T99T +015!T99P3//+ ии/01#".#"#>323267+9!*4,/%(*9$.,.%= ;/  !:*'%1P8E+ 2+++ !E+92OиO/+R///>/EX/ >YEX"/" >YEXN/N >Y9 9!97ܸFиG0152>5#3#52>54.#533#&3.#!5>5#"#7!$' """s(:E !7!/# -  &t ( &f% R&& *+L&  # ) E*&W^E3)-8PQ/R/#ܸ9ܺ#99Qи/#99#8иEAEE&E6EFEVEfEvEEE ]AEE]EX/ >YEX/ >YEX/>YEX / >Y.!+(A(('(7(G(W(g(w((( ]A((](993A33]A33(383H3X3h3x333 ]@и@/ LALL'L7LGLWLgLwLLL ]ALL]01#"&'#".54>32>32!32>7'4.#"4.#"32>) &=X=Al-zJMuP((PxPHx+%iE>\?b1Q:%9- } 3&"1 p,?,3; *<(3&D`9!0iV8-< A4 #6? RUR?'5OZ&OSQ@'1KY&^^F)&=8@W$ +A ]A  ) 9 I Y i y ]и/ и/ и"и"//EX/>Y01#".54>32#".54673V 2&DA   !}37 + c^0; 8+A88&868F8V8f8v888 ]A88] 89 //EX/ >YEX/ >YEX/>Y' 9+A++'+7+G+W+g+w+++ ]A++]3A33]A33(383H3X3h3x333 ]; 901#"&'#.54>323#".'32>7&#" 0Kb;4g5q(8".VzL!k5n+$' 8*B3'$2E*+6fP1 6GR[0Hf<&&-" (30?"u/JY*?~3-O\J@$+$и/$!и!/$=ܸ@CEX)/) >YEX/>YEX/>Y!+)1A11]A11(181H1X1h1x111 ])8A88]A88(888H8X8h8x888 ]!@иBиMAMM'M7MGMWMgMwMMM ]AMM]01%#".'#"&54632>54&'#53.54>32#".#"3#327&#"32>!6L1%@<8 ",.*G6! %GiC"D7""%',6  AGB}#& & +YF-#+,#4,8?  AAG%K&>u[7(9&(&.&(=J#8p6G+QON)yk# $-N#78/9/8 и /9ܹ$A$$rA! $$)$9$I$Y$i$y$$$$$$$$$]A! $$)$9$I$Y$i$y$$$$$$$$$qA $$)$9$I$Y$i$y$$$$$ r .A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..r//EX/ >YEX/ >Y3+)+01%'#"&''7.5467'7>3274.#"32>(`68c*5 %5*d54^(5" #>Q/1T?$$?T1/R=##" %5)a55e(7""7*d65a)X/S?$#>T00T>#$?SE+ии/,9BEX/ >YEX6/6 >YEX/>Y+ܸCиܸиCк,9>и@иCD013!52>=!5!5'!5!.'5!>54.'5!"!!!40z254  %N &+(  ( 3 R+;$"<-R8l5w'  ?\k_E} !*5x8F%+и//0133KKKRRuWmP],+@I+AII]A II)I9IIIYIiIyIII ]%I@9%/A%%rA! %%)%9%I%Y%i%y%%%%%%%%%]A! %%)%9%I%Y%i%y%%%%%%%%%qA %%)%9%I%Y%i%y%%%%% rA!]]&]6]F]V]f]v]]]]]]]]]]A!]]&]6]F]V]f]v]]]]]]]]]qA]]&]6]F]V]f]v]]]]] rA]]r]6и6/Qи/IFиF/iиi/@o /EX;/; >Y01#".5463232>54.54>7.54>32#"&54654&#"%>54.-<$$7 :N/$D4  /&9VeV9-<$!":N+%F6  % .&0#9UcU9*.;<8* ;T\j+K@5&`8.O9!-=&)(*",1QLLUe?+J?5.25,M:"+>('"$( #01OIHSc"*1'?6/-,"*21ZQEP +и 01#"&54>32#"&54>32 / - - / / , / ,3b'O +H0++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArAHH&H6HFHVHfHvHHH ]AHH]EX/ >YEX/>YM++A]A(8HXhx ]#A##'#7#G#W#g#w### ]A##]:A::]A::(:8:H:X:h:x::: ]C01#".54>324.#"32>#".54>3232673#.#"327bSqqÐSSqrĐR/LgfKKfgL5[H_7Y5$945$995$901#"&5#"&54>754&#"#"54>3232>75!67<9#!+!6AYEX/ >YEX/>YEX/>Y01 3! 3)+%)dcdc1 GEX/ >YEX / >YEX/>YEX/>Y01#3 #3))%++)bebe;^q#+/+015!5!7#Z=! +015!=!pp3b'O] ++8+EP++ArA! )9IYiy]A! )9IYiyqA )9IYiy rA!&6FVfv]A!&6FVfvqA&6FVfv rArJ 9APP]A PP)P9PIPYPiPyPPP ]+XEX/ >YEX/>YA]A(8HXhx ]#A ##'#7#G#W#]A g#w###]A##]03и>J93Nи>UиU/01#".54>324.#"32>#3!52>546.#5!24.#"2>bSqqÐSSqrĐR/LgfKKfgL9  #'PA).=!.*8 !#M@)pÑSSqrÏRRrgLLffKK2  &&)@-&8)("6% 5P +015!PTTP +015!PTTJ-'ٸ(/)/ܸ( и /ArA! )9IYiy]A! )9IYiyqA )9IYiy r A!&6FVfv]A!&6FVfvqA&6FVfv rAr#++01#".54>324.#"32>,;##<,,<##;,;&&&&";,,;"#;--;#&&&&){ V+и/EX / >Y +и и  01#!5!3!5!\q\{ ] ]\\( +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r*"++01!5>54.#"#>323:>73OIMK;$(59Q kX#K>'"8GHD)&#9AILN& 1"17YU(=)"IKHB7)}<3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/EX./. >Y'A'']A''('8'H'X'h'x''' ]8.901#".5463232>54.'5>54.#"'>326Tg2 *)#&*1'&=L&;1",-FcE<2 #1$T;R3   -.<"#2!' (#;F/"(# '3X //01#7>32  >/   ^1Aڻ'+74+4 и'*ܸ7CEX(/( >YEX5/5 >YEX/>YEX/>YEX/>Y (9/A//'/7/G/W/g/w/// ]A//]/9<01%#".'#"'#".5467>5332>7332>71"7(+5YEX/>YEX/>Yܸи01###.54>3!Z78Gd<7]{Et#AlRLlD)3P / /01#"&546323%%33%%3&22&%113PV /EX/>YEX/>Y901#"'732>54&#"'73>32V(?1/ ( @7'  .$$1 1"d (}+//0152>546.#"'733% $%Z "H%+  +,/-/ܸ, и /и/и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r "A!""&"6"F"V"f"v"""""""""]A!""&"6"F"V"f"v"""""""""qA""&"6"F"V"f"v""""" rA""rEX/ >Y'+01#".54>325!4.#"32> =[=4W>#!>Y96X?")^(9$,$):$,7(RB)#YEX / >YEX/>YEX / >Y+к) 9*01%#5!533#352>546.#"'733%3K 1RJF   ٠7l?{!b " J$}'(,FkG/H/ܸи/ A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rG3и3/!39,39@EX+/+ >YEX>/> >YEX/>YEX)/)>Y+!01!5>54.#"#>323:>73#352>546.#"'733?A>0 -4B+>(#@0;T^#$ IH   :BHLM&1&71%?/+<&5ni_% }{!b " J$% IL׻B1++A!BB&B6BFBVBfBvBBBBBBBBB]A!BB&B6BFBVBfBvBBBBBBBBBqABB&B6BFBVBfBvBBBBB rABBr&1B9&/JкK19NEX / >YEX=/= >YEX/>YEX / >Y+!+и=4A44]A44(484H4X4h4x444 ]G 9J 9K01%#5!533#3#".5463232>54.'5>54&#"'>323L!3RLF'BX2 %#!#+ 1C'4'6/(:'3#4(7;۠7l?H6Q6   !++;%&2-<, 0$ /&$ P:dG/+A//&/6/F/V/f/v/// ]A//] /EX/>Y4A44'474G4W4g4w444 ]A44]01#".54>32#".54>7>7332>54.54>324"#EfB=hK*#)(;( 02 !3?$6#  %0   *O<$ >X8+J>3-GFO4ZS5<>9O2##"  . Je&%DJ Je&%HJ JT&%j9@ J?&%x*J J)&%9@ J|&%]J2NQ?+?.иOEX5/5 >YEX%/% >YEX/>YEX/>YQ+0=+%-ܸG01)53276=!!527>7>54.'5!#.+32>73#.+;2>73 !%>^ I! #8 2(F  (E9,<&";1 @\E6D%\֯'8'  '9(D6J  5A% l#8)-:! , 2L67&'!e&)DJ!e&)J!T&)j@!)&)@'e&-DJ'e&-JT&-j@)&-@3-4/5/ܸ4 и /иA]A )9IYiy ] ,ܸ'EX/ >YEX/>Y +$A$$]A$$($8$H$X$h$x$$$ ](и *и/A//'/7/G/W/g/w/// ]A//]01#!532765#5354'&+5!24.#"!!3>@ؘ6&C 8&r9`E&=m\!L-+0P Xm>lQ*XJV] 6VsXjv? VL ?wF?&2x&J5e&3DJ5e&3GJ5T&3j8@5?&3x)J5)&38@h ////01% ' 7  --+h+--7 '5W6/7/ܸ6и/%A%%&%6%F%V%f%v%%% ]A%%]'9(A((]A (()(9(I(Y(i(y((( ]-9/// / A ]A  ( 8 H X h x ]' 9- 91A11'171G1W1g1w111 ]A11]01#".''7&54>327&#"4.'32> Qb%RQN#`-dNjc-g)9$W^~L7Y 4tEFyZ4vǑQ )y${nQqz!}+U\dUQ'EHO0J:3oLe&9D JLe&9NJLT&9j?@L)&9?@Fe&=GJ!5EɸF/G/ܸFи/ ܸи/ 'и'/ ,и6A66]A 66)696I6Y6i6y666 ] ?EX/ >YEX/>YA+>ܸ.ܸ@01+;!5327654'.+5!#"324&'.+32>!-%.LuZ6? LH 8* 9D^E24G+*&=3$"KiB9b%!._ *[X   2$mM7]  =#>T1Fպ-4++A]A )9IYiy ]ܺ"9"/A""]A "")"9"I"Y"i"y""" ]?ܺD9EX/>YEX-/->Y:'+01#"&'&6322654.'52>54.#"#5>54>32#B^;?P! 2>6T9&<*'5 3$' #DdB@wZ6D6$  !efM}Z4+0N:3H.4_K 6+1\R'$@[6;607&ED*7&Em7 &Ej^7&ExO7&E^72&E]7DOdM[+7+6E+A[[&[6[F[V[f[v[[[ ]A[[]([9(/ ܺ0797OиUкV696fEX-/- >YEX3/3 >YEX/>YEX/>YE6+-A]A(8HXhx ]E%и%/0-9JиJ/V-901%#".'#".54>754&#""&54>32>32!32>7'.#".=2>-D\=469!3BP-#=.(Xe<418%>`B^^%bCpQ'** 2>By%25(\ *WE, ,$/3_I,0+)'/@$4LAA(ESC/"'/+<2 3(3(]v%"D>0E,-D.,39C$0@+0% 3{&G9&IDQ9&I9 &Ij9&I&D/& &j&31*>?/@/ܸ? и / 9 95A 55&565]A F5V5f5v555]A55]и/5 и /+A++]A ++)+9+I+Y+i+y+++ ]$и$/& 9 /$/EX/ >YEX/>Y0A00]A00(080H0X0h0x000 ]09 9& 9:A::':7:G:W:g:w::: ]A::]01#".54>32.''7.'774.#"32>.W~PEwX2/UuE"F+".\1ElJ&9P0!=/;R3#<,eHjA6_LHg>>n2g*c !:#h*b>Va5>gMKa8=_&Rx3&SD[3&S3 &Sj3&Sx3&S)w#g+A&6FVfv ]A]и //+01#".54>325!#".54>32?2&!!&2{2&!!&2%3 !5]]%3  3!/<=/>/ܸ=и/и/ и /,A,,&,6,F,V,f,v,,, ]A,,]/90A00]A 00)090I0Y0i0y000 ]29 //EX/ >YEX!/! >YEX/>YEX/>Y'A'']A''('8'H'X'h'x''' ]/ 92 98A88'878G8W8g8w888 ]A88]01#".''7.'4>327.#"%4'32>&*)UV535e#j ,W}Q644d"&')%@.d$',$>-O3uB@nG "t!x:AB?kC o ". >cG.c4cYe#/ ?h&YD]&Y &Yj&Y&]1.FTG/H/ܸGи/ ܸ$к%9/A//]A //)/9/I/Y/i/y/// ] 9и =и=/#/EX*/* >YEX/>YEX/>Y #9%#9*4A44]A44(484H4X4h4x444 ]BABB'B7BGBWBgBwBBB ]ABB]01".'!5>54.'.'73>324.#"3>-RuH'&(/)(0  $#56:9_D&0D*#0$'5!*D0sQk> )2  4."( U.>&4[|BoQ-)%*6'&Hg&]/-+EX/ >YEX/>Y01352>54.#"'7339"*   !)" +!q # T!+ ';&2>JVbn!+A!&6FVfv]A!&6FVfvqA&6FVfv rAr'и!-и3и!9и?и!EиKи!QиWи!]иcи!iиp//EXf/f>Yf9 f9f9f901.''#'7'>7'77#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546323`6 5`26pF!Fp8"!!!"1>  >1X          'y)5AMYeq\$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr*и$0и6и$<иBи$HиNи$TиZи$`иfи$lиsEXi/i>Y+012.#"&'.5>#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&546325VH;;BL00LB;;HVVy$--$          d//9015FdF//9017dd=! +015!=!pp=! +015!=!pp`,+/EX/ >Y9015#335Bk)BdF#EZZ`)4+ /EX/ >Y901'733BddB)ZFZZEZ- 1+ // 9  9013#53#7>>FZZ))ddo*6BNZ` +A!&6FVfv]A!&6FVfvqA&6FVfv rArи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR9015#535#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632BdE'FX          Z*6BNZ` +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y rи ии %и+и 1и7и =иCи IиOи Uи\/EXR/R>YR901'73#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632Bddp=EZXF'           #/;GS_k *6BNZfr~[+++ArA! )9IYiy]A! )9IYiyqA )9IYiy r9/ܸ и /ии$и$/0и6иHиNи`иfиnиn/uиu/иии/и/A6FVfv qA&6FVfv rA ]A&6FVfv ]A]A&qArиииии/ии и /+и1иCиIи[иaиsиyк999EX/>YEX/>YEX/>YEX:/:>YEXR/R>YEXj/j>YEXv/v>Y +++и и'и -и?и EиKиK/Wи ]иcиA'7GWgw ]A]и ииии иA'7GWgw ]A]ииии/иии/!и!/'и'/.и./@иFи@Xи^иXpи|к9и/901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%"54;#"54;2+32##"&54632#"&54632+"54;5#"=46;2+32#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323        +  @    X   )) f ))     `       }    { {    X   +y- ym  =  +        7j          /               o     /   ^ww / R  2        q #/;GS_k~ %1=ILi||+e++ArA! )9IYiy]A! )9IYiyqA )9IYiy rZe9Z/iܸ и /ииe$и$/0и6иHиNи`иfииA!&6FVfv]A!&6FVfvqA&6FVfv rArииииiи/ииeи/ииии&и,и>иDкJe9Ke9Le9ZSиS/iaиa/}9~99EX/>YEX/>YEX/>YEX/>YEX/>YEX5/5>YEXA/A>Y +fP++K+и и'и -иK9и9/?и EиKиK/Wи ]иfcии иA'7GWgw ]A]и иA'7GWgw ]A]иfиPи/Kи/ии/ иfи #и)и#;иGи)UиVиWи^иcиPlиl/Psиs/yиy/}9~и~/Pf901#"&54632#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"/##"=632#"&54632#"&54632#"&54632#"&54632#"&54632#"&5463232+#"546;2#%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632#"&546323+"54;5#"=46;2+32#"/##"=6323        +  @    X   +x0 wm}    }    }    { {    X    =  +        7j!  I +y- ymw7j          /      ww /      o     /     2          ww / %h +015!%C@@DD #/;GS_kw--//EX!/! >YEXu/u >Y01#"&54632'#"&54632#"&54632%#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632#"&54632%#"&54632#"&54632'#"&54632D          `  H  `          #  L    Vo       oV    L T&l &m X&mP/EX/>Y017#"54654.54>7   +6;0 9-r`A<,9ZH&oZQH&oP&nC &q3 b&m3 1=u(+A((]A (()(9(I(Y(i(y((( ](9-//+-901%#".5463232>54&'#".54>32'.#"326 1CQZ//UA''( 2d\O;")!,/0)w    }=vY5  'BXaf.!  ,'\Q6)Qw+3d&n3&rB3 &t13B&s3!&u3 &w3 &x3I&y~{3&c~3&f3 &_~w] &_~L'V-q'/)/EX/>YEX / >YA'7GWgw ]A]01%#"&54>3232>7.'.54>32' QU37 $b]I ?T[" EhF$"!6( -3* 0Q>'-.$WlzL']&_7 L'&kQ#L'V&t7L'V&_7DL'&'kQ#_7DL'p&c7L'V&c79L'&f9mL'"&h8L'&j9iL'&y7LC'&'kQ#e8L'V&v<*qX+ /'/////01%#".546323267>54.54>74G'64.>5#"# 9JBF 15qj]   DE>p%@E; &)!"MLKqa&"_uqQ&"k'q&"uz,X&"tTX&"_ucX&"uzX&"'_u_@qt&"cuq"&"fwqq &"jwmq&"evfq&"mv7>7>32.#"32>32.TuG>~b_qyoZ $9IKF0e\L #  &$(4F1+=FI;%;i_xO u "  CCA6* %3F59:+/:91) &( &;KIB  %  ;c&4m5q&8m5{&8cT5{UѸV/W/ܸV"и"/0A!00&060F0V0f0v000000000]A!00&060F0V0f0v000000000qA00&060F0V0f0v00000 rA00rFAFFrA! FF)F9FIFYFiFyFFFFFFFFF]A! FF)F9FIFYFiFyFFFFFFFFFqA FF)F9FIFYFiFyFFFFF rP/5+01.#"#".54>3232>54.'.54>7>32!"$`W<-==-% .%/vNK|Y0!'#$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA%VVP=% :Sa,AW4'$ -"?CC5' 5s&8n5{85 &8u5^{&8e5F{&8hV{`۸a/b/ܸa"и"/'"9;A!;;&;6;F;V;f;v;;;;;;;;;]A!;;&;6;F;V;f;v;;;;;;;;;qA;;&;6;F;V;f;v;;;;; rA;;rQAQQrA! QQ)Q9QIQYQiQyQQQQQQQQQ]A! QQ)Q9QIQYQiQyQQQQQQQQQqA QQ)Q9QIQYQiQyQQQQQ r[/@+01.#"#".54>7"547>763232>54.'.54>7>32!"$`W<,;>-% .%/vNK|Y0!"N0 ;g5$;[p5-lnfO0(K>8/%3CFG" &?R,  , H%C2$DdA"POG  ;0:Sa,AW4'$ -"?CC5' 5{8V8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr4/# +01#".54>3232>54.54>7 0'9Tdj7#   !7IQU'Jj>  R=?; 6&:W9LB, &"6(&)+ $$ "$ 053V&@_V&@c(V2&@fV&@k7V&@evV&@eV&@'c(tcV6&@hV&@hV0&@j}V &@jV&@iV2&@'f_V&@fV&@'c(fVq&@'_ cV&@vV&@u<+)&T_9+)L?+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r?и/%//K/F+%901#".54>7.#"4>7>327>32#32>321K[S@ JqR/2\P -0* "T  2=-[Z[-,X*"_+3vukS14ZwA%VRG  $=[{R]t.       &;OcuCNuU7! +)&T_ A+),&Tm m+)?&Te +)&Tc 9+)&Te 9+)S&Tf +)&Th+)&Tj9+)&T'_ Ah+)&T'k%Xh+)&Td?+)&Tk(+)&T'k%X_9+)&Tk%X+)&Tc I+)&TfPi,+A!,,&,6,F,V,f,v,,,,,,,,,]A!,,&,6,F,V,f,v,,,,,,,,,qA,,&,6,F,V,f,v,,,,, rA,,re/1+01#".'+#".54>3232>7>54.54>3>76332>54.54>321",! %09!hF:^A# (%2IS +ZTH5% &L?, #++    3ME/4. !+$$iH(DY10bO2$7G(2C( #bJ/B-"&' 6G' )  &+#!#Y&ef&e'_G_g&eh^Y&e'fh^Y&e'f_gy&egR&edOW&ejE&ee_p7*+A!77&767F7V7f7v777777777]A!77&767F7V7f7v777777777qA77&767F7V7f7v77777 rA77r<%+[e+j+и/jQиQ/jVиV/01.54>7*.'#".54>3232>7>54.54>3227>324.#"2>Eo.   hF:^A# (%2IS +ZTH5% (0. %mE%3 J#00icU7tnbI+T>aI2 $*)   !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'6pK /6T !;S2!"&o_D&oc;V&of&o'_D_;$L[{> + 9и9/A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r>CиC///EX/>YEX / >YHR+ A'7GWgw ]A]и/C/9W01#".'.54323267>54.'.54>32>324.#">HxO+/$ +)+Dh%     2hd]&$6%J'.)[]],w8\@eM6"!($&*)$ 5TLJ*,TH6 +)$,%"Qeo18>=3[D(*7^ 1WE.4+&t_&tf"-3_R +A!RR&R6RFRVRfRvRRRRRRRRR]A!RR&R6RFRVRfRvRRRRRRRRRqARR&R6RFRVRfRvRRRRR rARRrRи/ /#//^/Y+ 9, 901#".54>7.54>7>32#"3267>3232>321K[S@ oԧf+CP%=5$$&!  X<$1):?!5::."6"Pd94ZwA%VRG  $]zNn""/Y!A!!'!7!G!W!g!w!!! ]A!!]-<901#".54>3232>54.'#".54>32'.#"326P@;08~jF$"8IPP"kθq? E )! #&"!  /  "QiA:(9\D1WA&,?+1&0;:2+< - 189-(52ej  X$P&_NxX$P&'__NxXP&fX_P&hOoXP&jXP&cNmXcP&fPuZ;IA +0+A!&6FVfv]A!&6FVfvqA&6FVfv rArA00]A 00)090I0Y0i0y000 ]*09!+7-+*-7901#".54>3232>54'#"&54>32'.#"32> * [oFDtT/  $C_:2jf\E(%N&5B $*<8(#!+?;-O:!>]?$PME5/EQ$5N3%38+)A4:=:.2^Q  uZ&c[uZ&_SuZe&fN\F:d4++;O+A++rA! ++)+9+I+Y+i+y+++++++++]A! ++)+9+I+Y+i+y+++++++++qA ++)+9+I+Y+i+y+++++ rA;;&;6;F;V;f;v;;; ]A;;]4f0/EX / >YA'7GWgw ]A]@E 0901%#".54>7632>7>54.54>7#".'>54.54>7\ FlSEgD" 7dO?tX  %   N,;!)*( IC0(1(,=% ! %690 '&"   yv ##o-%Up%=3    !FF>  N\G&_N\&fWN$\F&h4Hy^1"+A!11&161F1V1f1v111111111]A!11&161F1V1f1v111111111qA11&161F1V1f1v11111 rA11r/\/6+01#".54>323:>7>54.'.'.5467>7>32 [ktodL,!5D"!=.mx`( '\plnG'4 ,253,  P\c_T NQ?'  &*,,(" %>JU.K[1:]D&/3+" 1L3 11, *)-9 331*! Hy&tcHyv&}Hyv&'}tcHy&~H^v&'}c)Hv&'}e*nHy&Hy&_#9HyK&f%H&f+edCD/E/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rD'и'/8'9@A!@@&@6@F@V@f@v@@@@@@@@@]A!@@&@6@F@V@f@v@@@@@@@@@qA@@&@6@F@V@f@v@@@@@ rA@@rEX / >Y.;+!+ 012#!"&'.54767!2>54.#!".54>32.#"3}5'?mTnV8]B%!--,"&@U]_+ $ -_N22""6&KyU-73 "-##5#4aVG3 %"4C$ &NPF+A!&6FVfv]A!&6FVfvqA&6FVfv rAr9/  +01%#".54>3232>7>54.'.54>7 -##DKW6(YJ1 ($ *@N%5m^I     (  yEC>% 4O67>7.#"#"&54>7>32 ;Fl55(   ,) 7U>     $/G@+!";#8RehdO3W-#,(6)  ).DN&1C&5467>7>7>32#".'#"&32654.#"8L9."P+ #).00  *$;806Kb? ,1" f N>9@A4!.97. G?, '  :  -*"D}&_'D}&_Q`&&_`&&'__`8 +A!&6FVfv]A!&6FVfvqA&6FVfv rArEX4/4 >Y+01#".54>3232>7>54.'.54>7 B^xJ3aK.!-ES'#QPH  % - '(D#2W@%=]@)aT8"6C$-C,#39;;*A!$,jlg`&k`&&'_tg`&f6`&&'_c`&``o&a!Z0AU)*/ / *9 *9; *901%#"&'#"&5463232>7.54>7.#"&54>32.'32'4.#">+5<}?1i*PF $,./""%  !GNM=&) '02  ;C=  " AH$*:  $>?8 +'%>PVW@74, ('% # !&yYL!ZL*Z +A&6FVfv ]A]/EX/>Y01%#".5467>324.#"32>8P3#6$# $F8";&6;  '/)5YA$/?%b?8+/NcO(#&,  L&cL&mLL&mL&cmK///'6+01%#"'&546767>7.54>32#".#"3267>32 $:I'&F7"/6F)#06; !(%,)#!'$$  !$;@@2" !#  &=q&&J} EX/>Y01#"&5463!2#"(''(3{V`BH+AHHrA! HH)H9HIHYHiHyHHHHHHHHH]A! HH)H9HIHYHiHyHHHHHHHHHqA HH)H9HIHYHiHyHHHHH rH и /bR/EX/>YEX/>YEX/>YER9YR9\R901#""#".67>7>7.'#".'.54>32>54.54>724'2>3( ! '>4,%4H0Vck6   ( X{j0  0%' qV2{> -2- ,.#'.' FIA7  @+," TXK.-+ +.+ #l +8 T&uM3&_1QC&f+3{&h;&kH{&s H&lu&mP^&mP*/EX/>Y#01!".'.'.54>32;2#R!=1!   %&%%& &B5(grv7/VJ:#& 8a '(N&oW&oP&n&q7&mv?7Z:E //EX/>YEX/>YEX/>YEX!/!>Y +!-A--'-7-G-W-g-w--- ]A--]23и4и;и;/01!*##".5463232>7.54>32;2#'4.#"#  +7 5f6NF0!&+YVN@+0O9!#, 1'&%%& A"Y^\%;2 4FT\0 % /68-/DM'(!7&nw7[&r7Z&tJ7Z&se7&uz/7R&w;7L&xzj7&yu7w&cu7%&fwt7d&_uaZ&_u=QB6./EX/>Y +.9;01!".'#".54>3232>5.54>32;2#4@+ . -l86, 0#.ZF, :%&%%&4O6-C  $*-#   !@9/[TJ ') 1noiYB'(=Q&_=Q^&k=1Q&t"=Q&_L=Q^&'k_L=Q&c=Q&cA=Q&f=Q&hp=Q&j=Q;&y=KQ^&'ke=Q&v2P?79 /,////EX/>YEX/>Y01!"&##".5463232>7>54.54>73;2# -"&dEE<)  HPR(!+  1 %&%%&*SRQ*.: $8( @5%#&!$"('(P?&_[xP?"&kuP?&u`?&tChz?&_[D?&u`z?&'_[_P?&c[P?&f]P?&j]P?v&e\P?c&m\P?&dcP?&g]P?&b^xP?&y[|P?&s@]')}U0L/S/EX-/->YL -&01#".'.54>7>7>7>;2+"32>32)&-5%6+^V'();BB    ')&mV&mV}&c!V}N *+A!**&*6*F*V*f*v*********]A!**&*6*F*V*f*v*********qA**&*6*F*V*f*v***** rA**rD/G/EX/>YEX/>Y/+01!#"#".54>3232>54&'.5467>7>;2#?"*!:3"3Uoww3LxT,&# ?cw9P^aO3?B=3  %b9'%&%%& ) ,+MA3$)LlD7oY8)AP*JW. 5AK'(V&nAV}VN&uV+}&eV}&h#}Y5+A!55&565F5V5f5v555555555]A!55&565F5V5f5v555555555qA55&565F5V5f5v55555 rA55r!59O/R/EX/>YEX/>Y:+01!"#".54>7"547>763232>54&'.5467>7>;2#u?"*!:3"3Uoww3LxT,  W- ;g1?cw9P^aO3?B=3  &a:'%&%%& ) ,+MA3$)LlD;95  60)AP*JW. 5AK'(V}P8+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//EX/>Y! +11901!".'#".54>3232>7>32;2#H1' !zXqA  =qaT'   B#'&%%&%%@/ CgF'O@("*3R8 +'(P&_CP&cP&fP\&kP&eP&eDP&'ct3VP&hnP&hDP&jP&jEP&iCP&'f_CP&fEP&'cfEP&'_cCPo&vHP9&u)'(&_)'(k_+A!__&_6_F_V_f_v_________]A!__&_6_F_V_f_v_________qA__&_6_F_V_f_v_____ rA__r_"и"/,//i/EXM/M>YEXO/O>Yd +O1A11'171G1W1g1w111 ]A11]O196и6/MFZO1901"#".54>7.#"#"5&>7>322>32#;2+"&'.54>732>32&;HD6 %! <}wiO.2^U,a"$$ '5:(TY[.,00"Q#DtZ%&%%&%?Kt'(!dRD1gW;";Z}SR}.  "  ) '( 2 ! X|QRc7  )'(&_=)'((&m i)'(;&e )'(&c)'(&e)'(O&f )'(&hv)'(&j)'(&'_=hv)'(&'k"Thv)'(&d")'(&k")'(&'k"T_)'(&k"T)'(&cE)'(&f3i.!+A!..&.6.F.V.f.v.........]A!..&.6.F.V.f.v.........qA..&.6.F.V.f.v..... rA..rM/Z/EX/>Y3+HAHH'H7HGHWHgHwHHH ]AHH]UU9и/ H9&и&/EZ9Hbиb/cиc/01!"&'#".'##".54>3232>7>54.54>32>3232>32;2#f3K#$,"( %1&hF:^A# (%2IS +ZTH5% DU4 $-#0%&%%&RN1$ & !+$$iH(DY10bO2$7G(2C( #bJ/B-"&'/8/ $+$ .- '(&+f4$&+'__ =&+h 4&+'f4h 4&+'f4_ =&+g;&+d&+j0&+e)l}6)+A!66&666F6V6f6v666666666]A!66&666F6V6f6v666666666qA66&666F6V6f6v66666 rA66rEX/>YEX/>YEX/>YEX/>Y;$+Zr+SASS'S7SGSWSgSwSSS ]ASS]S9PAPP'P7PGPWPgPwPPP ]APP]Sbиeиe/fиf/wиw/01!"&#*#".54>7".'#".54>3232>7>54.54>327>32>;2#4.#"2>HuwYEX/>Y@[+ A  ' 7 G W g w ]A ]и/;)9J 9MиNиOи`и`/01)".'.54323267>54.'.54>32>32>;2#4.#">++/$ +)+Dh%     2hd]&$6%3H+Dw#'&%%&'.)[]],w8!($&))$ 5TKJ+,TG6+*$,% /-Qfo08>=3[D(*8'D<2 '( 1WE.4+&:_&:f-J>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r/C/H/EX3/3>YC'C93,01#".54>7.54>32;2+".'32>323M\R=E~lP-/Ph:+&4L23K1 '6>I-%&%%&%-JP]@7q[9Sԁ+TMA  !;`^Ns0  34')' & '("HAVj|EX]0-&=_u-&=fw-&='_u_u~-&=cu-&=hv=-&=evZs &E_Zs H\+A!&6FVfv]A!&6FVfvqA&6FVfv rAr2/EX/>YEX!/!>Y A!HиH/01!".##".54>33267>?.54>32;2#4.#">4YC)PY?qJ#  '>OQKXS/[&%*+-&  -3&&%%& &$ "$$E6!:fOCE5 #&%%9)$ "*YEX,/,>YEX./.>YEX1/1>Y" +1;A;;';7;G;W;g;w;;; ]A;;]@A@@'@7@G@W@g@w@@@ ]A@@]CиDиKиK/01!##".54>3232>7>7""#".54>322;2#'.#"H4  \vN+WD+#,%  -H[.-b_T  2)*6(   %&%%&#'))(0WB( >[:AoP- ';K'0C+"0$$" "LI5&8@'(y  #sG&Mc#s4&M_#s&MfDH{T#+Uk+A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##rAUU&U6UFUVUfUvUUU ]AUU]_U9>/EX/>YEX(/(>YZܺ(Z9(M(TиT/_>901!".'#".54>3232>7>54.54>32;2##".'>54.54>7/<& vlW]0 0YN%bmqgW'!   ,$'&%%&\-% !  $ &=L&..) A4!9\D&/3+" 1I0$W.3oO%"muX1I0'(>3!     FE?  H{&Q_'H{&Qf)H&Qh% H_ p* +A!  & 6 F V f v ]A!  & 6 F V f v qA  & 6 F V f v rA rEXO/O >YEXR/R >YEX/>Y% +O9i01!".'#".54>3232>7>54.'.'.5467>7>32;2#0GM_Hmx`( '\plnG'4 ,253,  P\c_T -57.  ){MM=Bp`R$$&%%&)Ha8!K[19^D%/3* " 1L5 11+ +: 430*!  '! ,6<81  &\03bM.'(H_ &UtH_&U}H_&U'}tH_&U~H_&U'}c,&H0_&U'}e-H_e&UH_ &U_#H_&Uf%H_ &Uf.dTeU/V/HܹArA! )9IYiy]A! )9IYiyqA )9IYiy rH9U(и(/9(H9AA!AA&A6AFAVAfAvAAAAAAAAA]A!AA&A6AFAVAfAvAAAAAAAAAqAAA&A6AFAVAfAvAAAAA rAAArEX/>YEX/>Y/<+E"+A'7GWgw ]A]и/ииMиN01!".'#!"&'&547673!2>54.#!".54>32.#"3!2;2#,:$0|nV ,("F8]B%!--,"&@U]_+ $ -_N22";P /('&%%&3@"V^73 "-##5#4aVG3 %"4C$ &?H0M6'(T4U/V/ܸи/ и /Uи/#A!##&#6#F#V#f#v#########]A!##&#6#F#V#f#v#########qA##&#6#F#V#f#v##### rA##r7A77rA! 77)797I7Y7i7y777777777]A! 77)797I7Y7i7y777777777qA 77)797I7Y7i7y77777 r-и-/A/EX/>YEX/>YEX/>Y(+MM901!".'#".54>3232>7>54.'.54>32;2#9!+  /ĕ2ZC(%#'@U-&`\N    (%&%%&$8l8I(mn:bI.bQ5):D0C+#/ dJN}@+)3Vso) $'( &auR&a_M&afOU&ahe/&akg&asZZ?1M!H0#/:/EX/>YAA9 01!".'#".'#".'.=4>7>32;2#,F>: 0$?1     !B:"(;WtL%&%%&  -*,!3KT +!Yq|pW"*9!FT[O< #'XVQ %*%'(?QZ///=/EX / >YEX%/%>YEX./.>Y%+%901&5467>7>7>32;2+".'#".'#"&32654.#"8L9."P+ #).00'%%&%%&%'';806Kb? ,1" f N>9@A4!0EL&'( ," '  :  -*"?1M*&h_?1M!&h_u T&n_ T&n'__Y E +A!&6FVfv]A!&6FVfvqA&6FVfv rAr7/EX/>YEX/>Y$ +01!"&'#".54>3232>7>54&'.54>32;2#\#    7fo6_G*")%2Qg68hZE  &%&%%&#\_Y!63%#YEX/>YEX/>YEX/>YZ +;6;9K.901!"#".'.'."#".54632>7>3267>;2#4&#">4.'32>0l3  &:)'#  :0 FHAILK  UO85-a"P&%%&1,$ -L8 :Z?(7!  '#MB+#+ IA2   NrE*.X3  '(1&3IR1/)./.' HA- zX&yy`9m{ruzARf=//EX / >YEX/>YEX/>YEX"/">YEX%/%>Y=9*=92=9L=901%;2+"&'#".'#"&5463232>7.54>7.#"&54>32.'32'4.#">%%&%%&%&- (!DB=1i*PF $,./"!&  !!UWO '02  ;C=  " #> '(  *:  $??7 +'/Lb74, ('% # ~9m3Cj/EX/>Y9 A  ' 7 G W g w ]A ],и-01!".'#".54>7>7.7>32;2#.'326&4&$) 21%%"L%    "%&%%& %:&!+( !,QC  /67#4 %/'4-`T;  '(H (' 9&{c5-9&{m6Q).//EX/>Y+"01!"&'.#"#"5467>32;2#))  9.#   &9L0%&%%&"  "9I'  8t^<  "'(&~m&~c1UaKP//EX/>YEX/>Y P9HP9Z01!".'.'#"&54>7>54.#"#".'.54>32654>32;2#/9" (2E3 9HPG7 0K^-'E4)@MI;   "/  art/$0#,  !1(%&%%&/>"'`jp7sm3  $141, PSO=& ".# '%0Nc2&FB?o .'>jPYEX / >Y 9 и!01!"&'.'+"&546;2>32;2#V& $,7%%&%%&%DQ0 '&%%& )&(')1)" '(&_L&c&fb&k&eK&e@&'ct&ht3&hC&j9&j&iA&'f_L7&f7&'cf &'_cA&v2?&ul&_Lla}7/EX/>YEX/>Y(+(AиA/ #(9A-и-/ NиN/Zи[01!"&'.5467&+"&546;2>7>7.#"#"54>7>3232+;2#}# >hZM$$CGK+%&%%&%2RH?$F&@LT($#0SXX#(DJW;#->BB%&%%&+&&'('   '" '&  '(l&_lj&m l}&e l&cAKl&e l&f 3l&h C9l&j 3l&'_h C3l)&'k"h Cl&dGl&k" l)&'k"_Ll)&k"l&c7l&f QM1/>/EX/>YEX/>YEX/>Y9+99 99,ии/,FиF/GиG/01!"&'#".'#"&'+"&546;2>3232>3232>32;2#5R %,!( &]J0K&^4%&%%&%,@. )"DU4 $-#1 %&%%&YE1$ 4;/79/('#!/8/ $+$ .*'(Q&f4Q$&'__L3Q&hC3Q&'f4hCQ&'f4_LQ&gQ;&dQ&j0Q&e)sPa /EX/>YEX/>YEX/>YEX/>YEX/>Y>V+&&96и6/7и7/FиF/IиJи[01!"&#*#".54>7".'+"&546;2>32;>32>;2#4.#"2>uxYEX/>YEX/>YB_+=-9LиL/QиRиSиd01)&'.5467+"&546;267>7>54&'.54>3>322>;2#4.#"2>V=   M%&%%&%&:  N    *elm2!5%!4@ (27H'&%%&%5 2`XP"^S $()>"('&*+T+QQ>=5*$o#Jdb,10*^O3+8-E4''( !:O/"/2o!&_o!&f/K/EX/>YEX / >Y9%9(и)01!".'+"&546;267.54>32;2#5*RH8@FK&%&%%&%"a9BC5YC$G8"7>2R*%&%%&&33 5.('," 56)#-7 ('(&_+&f--&'_+_%L0&c+&h,&e,"8&_y1EA /EX/>YEX / >Y( 9*и+01!".'+"&546;267&654>7>32;2#4.#">7+EBB(+A:9#%&%%&%%T"$#I'))EF%&%%&$ '%/$  (' !08;.6(9</e&'(!  &_&L8&'_y_&L&f{H3&h'C&j{D&c&A7&f(K&cy8&_y&f{H [3EX/>YEX/>YTиU01!".'+"&546;2>54.'.'.54>7>32;2##98=MdC,h%&%%&%FyM/;&A  3}Q Rj=%$*UQJKs]M&&&%%&+YEX / >YEX / >Y+8+A+ иIиJ01!".'#!#"&546;!2>54.#!".54>32.#"3!2;2#,:$K^p>%&%%&%18]B%!--,"&@U]_+ $ -_N22";N 1+'&%%&3@"+C.('"-##5#4aVG3 %"4C$ &?H)K9"'(6%+A!%%&%6%F%V%f%v%%%%%%%%%]A!%%&%6%F%V%f%v%%%%%%%%%qA%%&%6%F%V%f%v%%%%% rA%%r%9%9/ArA! )9IYiy]A! )9IYiyqA )9IYiy r,EX"/" >YEX/>YEX / >Y"9/и001!".'+"&546;267>54.54>32;2#y,6& &1#%&%%&%+ ".    ?5'&%%&0C*/D-('P5a< ("'lx~sa dZ'(@&u &_&f3&hCc&k&sYX5IZ$/EX / >YEX/>YEX/>Y9.и/иEиE/01!".'#".'+"&546;267>32;2#%4.#"32>4!7219=A"'1:!%&%%&%YEX/>YEX/>YEX/>YW +!9и:и;кJ*901!"#".'.'.+"&546;267>322>;2#4&#">4.'32>0l3  &9)'#  )T+%&%%&%3[ !GE@  SQ0=?<+%&%%&/*! k`9Y>'7"  '#MB+#+ IA2 (' Ja9*.X3'(1&(YEX%/%>Y  9,и-к0989M9012;2+".'#".'+"&546;267.54>7.#"&54>.'32'4.#">BHH>-,*'&%%&'(  ;GIE25<'%&%%&%.<"%   I '/3  ;D=  ! F 6GOQ%$'(&2*"('&??8 +'`74, ('% # &mmWh>+A!>>&>6>F>V>f>v>>>>>>>>>]A!>>&>6>F>V>f>v>>>>>>>>>qA>>&>6>F>V>f>v>>>>> rA>>r#>9C9/6/EX/>YEX / >YEX&/&>YK+&-#&-9Pи.кC69PQ01!".#"#".54>7+"&546;267>32>7>32;2#' 41+ %%&%%&%7! #+#%')^C#( '&%%&   Y9 .! )E[2.++(' $  ;N[*6=;/:'(m&ma3i&m&ctAk&n&ctAI&'uctAK&eu3&huC/EX/>Y 01+"&546;267>54.54>7#Y8'+@ + и/" @9@,и,/01#".#+"&546;2>7>7.#"#"54>7>232 IF;M0)RSU,%&%%&%&D@@"&X*"AAA!*"AED5N0A-$//'(' !   $" ! &$_j&$m}&$e&$cAK&$e&$f3&$hC9&$j3&$'_hC3)&$'khC&$dG&$k )&$'k_L)&$k&$c7&$f/NGJ/EX/>YEX/>Y J99+01#".'#"&'+"&546;2>323>7>3232>54.54>32/ 1"+"'/8 0K&^4%&%%&%,@. )"&B3!#,+    'ME/ 6-/79/('#!2D' )  &+# "/E&5f/&5'_3_Q8/&5hH8/E&5'fhH/E&5'f_Q/e&5g>/&5d;/C&5j/1&5e{TARl /EX/>YEX/>YEX / >Y=G+ ' '97и7/8и8/L01".54>7".'+"&546;2>32;>324.#"2>TEo.   &C8-$-7"%&%%&%@R2$29)%nE%4!J$0/hcV7unbJ+P>aH3  $)(  ,)( ('*3* 5qL /7T "Y@H+ ; '9M01+"&546;267>7>54.54>32>324&#">!5'GO%&%%&%#'     $_nt9 0 NI>(RW]4nFX=:5%0 (' -f0:zvkU: *'")% *M`b -1,%[P6*8c,1UB'1-#&D_#&Df&VK((/EX/>Y(901+"&546;267.54>7>32#".#"32>32 6I,VTQ(%&%%&%&A( 3@"#D%& $[+!(&9B<=<2$\ < +%('  (QK@    3,_&G_H &GfJo_&G'_H_HLr&GcH$&GhI &GeIduQ&O_uH/?0EX / >Y++ +901+"&546;2>54&'#".54>32'4.#"32>u 8N`5%&%%&%?pU1+& #<7&  (*()#('%)+%!, -8;16Xo<  ! uH&O_LuQ&O'__Lu&Ofa3uH&OhCu&Oj]uH&OcA7uH&OfuHOud&OcuQ&O_u&OfaD!I"/G/EX/>Y$01+"&546;267>54.'.'.5467>7>32D [ktpdL-"6D# =/>q]%&%%&%Sy+'4! -144+  ./OQ?(  &*,,(" %=JU/IX/(' 01, *++9 &PG9D!&[_ZD&[f\5D!&[hED![D!&[tD&[}D&['}tD&[~D&['}cCMD&['}e~D|&[D!&[_ZD&[f\9D!&[fd@ A/B/ܹArA! )9IYiy]A! )9IYiyqA )9IYiy rAи/098A!88&868F8V8f8v888888888]A!88&868F8V8f8v888888888qA88&868F8V8f8v88888 rA88rEX/>YEX/>Y&3+<+ 01#!#"&546;!2>54.#!".54>32.#"3!2?mT%&%%&%18]B%!--,"&@U]_+ $ -_N22"5'FKyU-('"-##5#4aVG3 %"4C$ &"6%3ʻ-++ArA! )9IYiy]A! )9IYiyqA )9IYiy rArA! )9IYiy]A! )9IYiyqA )9IYiy r#/EX / >Y01+"&546;2>54.54>32*PD%&%%&%?6$    X'(&E<((' ) c|%*'%.(&MY`ZOd&ku{.&k_v&kfx>3%&khwCR&kkL%&ks+=$/EX/>Y01%#".'+"&546;2>7>32'4.#"32 177"!!%&%%&%+@3*!!  i    ,*.*$ (''>K%+"560  &r_*&r_A~&_~&'_~_tL&_~(&k1&'_~t3&huC&'_~ctA*&`~q&a~Z1BV<+/EX / >Y +9 +9< +901%#".'+"&546;267.54>7.#"&54>32.'32'4.#">.4GIE8PVW@74, ('% # &~y!Z~y&~m!y!<*+A**]A **)*9*I*Y*i*y*** ]*9"и"/7*9/'/EX/>Y 7'9017+"&546;267>54.54>7#"&54>7>32!:N.%&%%&%+C    '&  ?W5(' $(!# # -2(G@;>>;%5$&me/D //01#"&54>7>7.54>7>32#".#">32/ ")1/       !& +      %  *5&//&901#".543232>54&'#".54>32'.#"3263B#+ %J;%     =9.gW9  *@M"   /(); H E /!/01%#".'.54>7>7>32.#"32632*:#E?1 RZP&5:3.%     +$  54(@jGz   4/% # ** (68   Z7'//&/)///5/ / /01#"&5467>?>32#"&5467>?>32  & "  & "M d  i  d  i RhFQg5+A55]A 55)595I5Y5i5y555 ]?и?/:/ //- :901#".'#"&54>54.#"#"&54>32>7.54>32'>.#"R  ?80    ";  ,  V  `  4$$  /- !"B .3)  #T RD5%/'///01#"5467>?>32#"5467>?>32D  $  #  $  # e  h  e  j  / ///01#"&5467>?>32  & " d  i (4 // 901#"&'#"&'>7.54>32'4&#">)4Z"% 650)  N FD  "'+%93#!7 f&D / ///01#"5467>?>32D  $  # e  h VB7 3/ /01#"'#"&54>763232>763232>5>32V ')  "2    !B6! =6!" %+%$+%$-7/  !M+A&6FVfv ]A] +01#"&54>324.#"32>)9!/2%5(1!'5# !;,FL7+)04 *! F&9%// + и / и / и/01#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1 !$ /D //01#"54>7>7.54>7>32#".#">72  "(1/      !%       # )/fD //01#"54>7>7.54>7>32#".#">72/  "(1/      !%       # 8// /014.54>7#"5S   %"HB651$- 7:- +i+A&6FVfv ]A]9/ /// 901#"&54>7>32 ,"+  D(890TLE""IIE$=/ /+0132>7#".') +,"->&(6!94$-9"TI1/DM3s'//// / //01+"#"&547>7>732632,    ` %///"//01+"&'.5473232>;2 -2 ;3. #!&!"&!/;= >;-##%////"/014>7>;2#".#"+"& -1 :2. !&""&"/<= =<.##>zvO+A&6FVfv ]A] +01%#"&54>32"/)+ -!1%:>0$") \(3 1+014>7.54>32#"&'#"&'.7>54#"  ) 166 &#Z3(N 6 !#39%,'!CGm % 'C //01#".54>32#".54>327#"&5467>?>329       & "     d  i V///01#"=4.54>7    7:- :#GB651$m94 / /01#"54654.54>7(    7"+/' +$WiqbG 51$ YO/"4+w+w и /"'и'/[иfиf/wкw9014&#"2>"&'32>32#".'.54>7>7>54&54>3232>323>32"&5467"&'(41+*XI/L'$  $#'MTa:D?/,32::OPG  A"   '7AG"#7GGA * 9 )0,$      ! ,a< %Y]S#  @9& 1$ =+'Q/6+~и/01#"&'&'&#".54>32?>32#".'.54>7>7>54&54>3232>54&'#"&54>32#".'32>324.#"326         t,23:9OPF B"  8<.    (..   $"'MS`;D>.  b        ! ,a< Y]S#  $$)+!-7- "$    , P$0>//EX / >YEX / >YEX!/! >Y01#".54632>7>32#"&'74&#"3 ! /*"     !4  5! (,  %(  @  #EO)/E/:E9LE9OE901+"&5463267>7.'#".'.54>32>54&54>7>54&'     #+26   Xw/ X 9++>CиC/01#".5467.#"4>7>327263232>32'#".54>32%-)7kT3`P*-.-, 0'[O59Wj1+)#    %  .P=^/    $Y01#".54>32#"&'&'&#".54>32?>32   3           Y      g_9,+A99&969F9V9f9v999 ]A99]9ic//Cc901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CM#/  $)-*#    &   m("    4B% ".0'#!  0&! $   J //01#"&54632J++++5**++;y //01#5;vy15/01#".'+53267>7.#"#"5467>2322%# &A)**&=","? ' !"!E(!u  >    '   j>:///01+"#"5.5467>7.#"#"&567>7>32j#5  *   !$;  +0*  +=0*    #'y;f8++A88&868F8V8f8v888 ]A88]8h/b/0///$/&/EX=/=>YEXE/E>YBb901#".'+#".54>3232>7>54.54>32>74332654.54>32  4CL$.  %)-*$    ' '#   4B% "-0'$"  /'!   $    my!///01#"&'&'"#".5463232>32/@B # =*?+   }D!/EX / >Y01#*.'.54>7>7>32.#"32632}*:#F>1 SZP&693.%   ,$  55(AjGy?  " 4/& # ,+ (68  ^H//D901#".54>32#".54>3232>7>54&'.54>7   ]K1& "))'#     !3C . 2*"!   > 664/q //01'7'7qqqqTTT/qppTTTTq //01'7'7qqqqTTTqppTTTTfO+A&6FVfv ]A] +01#"&54>32f;++;&&R+;;+$$<'8///*/5/'///2//01+"#"5.5467>7.#"#"&5467>32%4  +   ## T !+1*  ,=0)    "'5_0)/#+#(и(/#*и*/0132>32# '&547>32>767254> %  #C*^&3JU]-iu-3.-F7*.; ( (/`VD JK /3/+01!2>7>7>32#".'.'#".#"&'>323267>ժ:U?4  5ZOY3,EGA'3ER[++AI++и/+и/(%и%/<:и:/<N01".5467".'#".5433267>7>3327>324&#"2>/Mac]#   Jfbk'"[@(    + #  Y?3+#%.3?901#"=4.54>7+532>54&'#".54>32'4.#"32>#".54>32>    8N`5oo?pU1+& #<7&  !  7:- :"HB651$(*()#}%)+%!, -8;16Xo<  ! ##$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr//01%#".5467>732>329+)=( (,)*(  $,;)BR)9#D8(#0@P- $$+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/"/EX / >Y01%#".#".'.54>32$  (*),( (=)+9G$ -P@0#(8D#9)RB);B8 //01#"'>767632M)k_.SMA%x&%A &H"q=49p'+01#"&'&'5476323276&'&#"eEuDRY" Ws)"2<5L15(+ !9@7GU B"$%!24@*&lW//и/fܺf9YA!YY&Y6YFYVYfYvYYYYYYYYY]A!YY&Y6YFYVYfYvYYYYYYYYYqAYY&Y6YFYVYfYvYYYYY rAYYrи/f9Yи/1f9\f9frArrrA! rr)r9rIrYriryrrrrrrrrr]A! rr)r9rIrYriryrrrrrrrrrqA rr)r9rIrYriryrrrrr r// /%/(/m+aw+m9%91%9\%901"&'#"54767.54>7.54>7>32#"3267>32>3272>54.#"g:%8/8!+BP%<6$%'!  V=$2):?!4::. 7!Pd9)#3mqt:@Z9":OX^ 0eS45V>3d^W' LRS EO<%-)/ /  9 9( 901".57"'6&'547633676327"67654  .  ?DB8Z %,!N-=18LL*X D /'/ '9 '901#"'654'.54>3327&54>32#"'.#"3267632 19d"/0   "0"-   #57  i $&,$''* (     6p?n//$/EX/ >YEX/ >YEX/ >YEX / >YEX#/# >Y&901#"'&543327654'&54767'47&#"4?6763236732#K'" 2 AOJ(. f1*aS^0."0! 1""2 B   D>(QA[6;< YEX/ >YEX/ >YEX / >YEX7/7 >Y2$9@$9O$901#"'&543327654'&54767%"'&547632"57"'6&'5476336327"27654#K'" 2 AOJ(. r   .  rjBnT`]7AIB  D>(QA[6;<%,!N-LL*X dw'/!++01#"&'#"&/326732654&'.@&8A#pJ=NC1K_U35w,XF+5>  B   )&9BNqo?N%&/J+JиJи/01#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -./A]< 2%  + ($#-F%06 ."->  +#$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr/и//*//01#".5467>732>32#".54>32;+(=( (+)+'  $ &3;+;,DP%:#D9(#0AP- $ 3$6+A!&6FVfv]A!&6FVfvqA&6FVfv rAr-и-//2/EX / >Y01%#".#".'.54>32#".54>32$  '+)+( (=(+;3& K$ -PA0#(9D#:%QC,;%3 6';/-//01#".54>32#".54>327#".54>32P!&#%d!&#%!&#%^%) $' %) $' %) $' J-?Q6+,+A,,rA! ,,),9,I,Y,i,y,,,,,,,,,]A! ,,),9,I,Y,i,y,,,,,,,,,qA ,,),9,I,Y,i,y,,,,, r,9/A]A )9IYiy ]ܹ A&6FVfv ]A],'и'/E/;+;01#"&54>54.#"#"&54>54.'.54>32#".54632-#-#-!'!&6(',' &8*+I`60O:   3% $7'3## ! %3 >GQ_pB " &0$!9AN37bI*%=P%3 j''/EX/ >Y01#".54>32#3#".54>32   %3%HFN3% T 3%3 H9'#/+01%#".546;2>7>54.54>7=<U-.!F950 dk6 *"''# %)!1157y'>54&#.54>32y+<%)#$& T"NMF%)28  %0F1` #// /9901'%d$RP%eN }EX/>Y01373}} ;}K+;JVe# &+A&&]A &&)&9&I&Y&i&y&&& ] & 93& 9Y& 9& 9 Kи&Q3/ /EX/>YEX/>YEXYEX^/^>Y}+<A'7GWgw ]A]и/^A'7GWgw ]A]#}9&}9@}9C}9I 39L}9Y 39f}9}sии/ии/и/иииии/^9^9 3901%.'.'.'>7.5467.'>7>7>7.'.'.'>732>32>32326764&'"&'#".#".#"#"&'#6>3232>732>32>>&.#"#".'#".#".>7>7>'.'.>'#"&54632.7>76.67>762#"&54632''&'&>2*1&'!Dw9'3&&3'9wD!'&2+=#0220#=+2&'!Dw9'3&&3'9xC!'&1*<#0220#<0'$"Ap6 1&  &1 6pA"$'+** )6 ,$!!$- 6) *+++42% #',"*! *#,&# $1551$ #&,#* !*",'# %24+U* )6 -$!!$, 6) *T,'$"Ap6 1&  &1 6pA"$' I4  8T((((4I T8 5q  4I ((((  q5 I#8< *4!!4* <8#"/G[]G."#5> )5""5) >5#".G][G/ 68  ''  86        ]E  !!  E][G !! G  !  !  59 && 95_ (   -7''))B ( -  1?  & _((&&  ? &,;*9/ /)/0132>54.#"4>32#".J`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..Stx/ #//01"3!2>54.#52#!".54>3E$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 DP'w/WKZ//Z9Z9Z9Z9$Z9,Z94Z9<Z9DZ9LZ9TZ9`Z9hZ9pZ9{Z9Z9Z9Z9Z9Z9Z9Z9Z9Z90Z9DZ9cZ9xZ9Z9Z9Z9Z901.&'.'.7'.>&'&67.'.'>7>7.7>.'676&67>7>>7.7.>7677>7>%>.'.'>7.767>7.'&>&'>7>.'>7.'&7>'676>4.#"32>&>&'.'&&'.'7>.'.>7.''&'.'67676>7.'&'&67.'>7>&%.''.6&'&7>7.'667>#".54>32#.$!3  *)/&.=&,+-/),%=/&0')   2"$-##-$"2   )'0&/=%-*.-+-%=.&/)*  3!$.=<5     ""$(&$!     '&& 1)  !!  # '0!5-#; 1)     x$=S//R>##>R//S=$ 1)    !4-%91"" ''&& 2) # #       !$&($"      "><5 8(##(8 " &%=.%0)*  -Y76vA@x57Y-  *)0%.=%& " #&%=/&/')  .Y76w??w67Y.  )'/&/=%&# *%9 0(    *4NGH-G G-HGN4""   " /0%    ))&=( ><5       /R>##>R//R=##=R=<5    &=(  ) //%      r#   #3NGH-E E-HGNB     *%9 0C(6"#6mL*Slm/и/[[ܸ[A@[]A[]A []A[]A[]A`[]$ܺ[$93[$9DиD/$KиK/$TиT/[ZܸZܸaиa/[dиd/g[$9Zjиj/$n/EX/>Y[G+39g9013>7>5.54>7>?4.'.'!.'.5>'##".5467>7m0  )#;8 8<#(  -/&84#&  w  H  "+ *"   ""!! c;<<9D`9G`9]bиb/]rиr/]tиt/]wи]A]A )9IYiy ]]9]9и/]и/`9к`9]и/]и/и/!и!/39]XиX/j]9uиu/и/9]9`9`9`9`9ии/9и/и/ и /и/M//M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901.'.'.5#"&#">54&547.'.'>7>7&54654&'32632>7>7>?6323267.#"#"'7>&547#"&#"#"&#>323277>54'>54.'>3&54>72.#"632#"&'72>%.#"#"&'>7.54654'32632>4.#"32>.54654'.'&#"#"&'32632.#"3267&'#".'>7>32>7.'5##.547"'>54&'.'#"&#"654&5467.'6232327>7#"&546324&#"326-^XN   #        "    MY],/1YK< "        # 39D`9G`9]bиb/]rиr/]tиt/]wи]A&6FVfv ]A]]9]9и/]и/`9`9]и/]и/и/3!и!/339]XиX/j]9uиu/3и/39]9`9`9`9к`9ии/393и/и/ и /и//M/M9M9M9M9M9&M9.M96M9>M9DM9GM9ZM9bM9jM9rM9zM9M9M9M9M9M9M9M93M9jM9M9M9M9M9M9M9M9M9M9M901>76323267.#"#"'.'>7#"&#">54&547.'.'>7>7&54654&'32632.'>7.'.5632326323>7'#"&#"654&5467.'>54&'#.547"&%3267.'#".'>32>7'."32632&54654'.'&#"#"&''32>54.#"'>7.54654'32632>7.#"#"32>7.#">32#"'3467>7.63&54>72>54.'>323277>54&5<7"#"&#"4632#"&732654&#"S-^XO   #        "    NY],/1YK< "        # YEX / >YEX/>YEX/>Y99 A'7GWgw ]A]5иO01!".'#".'#".54>7>7.7>3232654.54>322>54.54>32#"54654.54>7%#"'#"&54>7>3232>7>3232>5>32'#".'.'.54632.'326'!$+)%$) 21%%"L%    2-(  $     AC    ')  "2    H"   $  %:&!+( !"9*'7#-Q@  /67#4 %/'4-`S;&WMGxu< (";y01G.'c|%*'%.(&UfmfX/1.8=T+6;0 9-r`A<,!B6! =6!" %-%$+%$-7/    5R%# LH8H (' :q#PFq}++A!&6FVfv]A!&6FVfvqA&6FVfv rArGиG/A]A )9IYiy ][и[/и/99/|/w////|99|9901%#".54>3232>7>54.'.54>7#".#".54>32767>327#".546323267>54.54>7'#".'.'.54>3232>54.54>7 * 6>L2(P?' ($  5E%0YJ:     (       4G'64.>5#"$ 9JBF *8:.   .& $ yBA?% 4O6p%@E; &)!"MLKKe>%B4(grv7-VK;#& 8a%).'%(#2[-;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'sE< +A!<<&<6<F<V<f<v<<<<<<<<<]A!<<&<6<F<V<f<v<<<<<<<<<qA<<&<6<F<V<f<v<<<<< rA<<r<./"/01%#".54>54.5467>322s >JN@)$*$+1+762-$  +$.5..5.0<<3 ,1)  #E?6* ]A1$%   *4:5+  5/1- +#+01#".54>7>324.#"32>" (/3 H=(&&*'UG/75NW"%5I,2=" P'D9+  $6#$0?,/<" %=Qz?A1)79# ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆ho7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   -;d //01%.54>7   57+ 14)/;6 $" 4<7 $)$y////01%#"54.54>32  "2;2" !)!JGsvQ+%+#9Q5+lk`yV2 +A! )9IYiy]A! )9IYiyqA! )9IYiyrܸ0и0/ ////-/0/901'#"5.54>3232>54632V 9N.  .=D9& '19 1) 7N/anj#8h+vǠzR,,3)!'!"2 !`KG+6/9/F/I/K///A+A9 9901#"&'##"&=4&'.54>3232>7>3232>7>32(=(-0#&' 8*,% -?*!5'   #  !G:&""KVQ,ZN<  5}W*C0#(#)1)(5 %#'fySI///=+=903=9A=9S=901#"&'#"&54.54>323267.54>32.#"32>7CHH "1   #4>4#  '+.'J%% (77 # ',  "QNE$DCC"svQ+%+#%/) &,"/@   5^+A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >YEX/ >YEX / >Y$ 9'A'']A''('8'H'X'h'x''' ]101.54>32>32.#".#"%/21 3X?$-@(8>"%4 *  ( 6?B<0 +.) 0z6#RE.%$   !,9>:/;/ܸ:и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&rEX/ >YEX/>YEX / >Y+A++'+7+G+W+g+w+++ ]A++]501%#"&'#".54>74.'32>732>-?)8>""2!1Rk93X?$8)=G--*    ( #RE.0;C-0z.PSI )2896#   !,{sI?!+A!??&?6?F?V?f?v?????????]A!??&?6?F?V?f?v?????????qA??&?6?F?V?f?v????? rA??r//+/+901#"&54>7.54>7>32##32>7s $('#:2.%/1-A9'  "'-')  :#*9:552(,$ !#$)KNV4FOUMB/;<7%  #( " ?%6+// //*+01%#".54.#"#".=4763232>32 "#*7D&  "-7:1!    ?7@4 4U{T(VH. "5&Z    .H3$]\P f1%/%//////*/901#"&'.'&'&45467>3>32#I@5 ,138=&SRN HNJ 'ssa{\"O$ /:d剆hA!~$////!901%#".'.'"54767>767>32JK !:/^Q ## a56!Wq㿖l ! '56HN  HWA4o7%///+/./0/.901%#".'.'#"5<76&54>74632 >91783+6;9  JOQ&D6" -KĐ_  .:,RӕԎTj4H%/&:+D+D901%#".'.'#".5467>324.#"32>   *.*&8&!)4$',    )// '$-,'$ $8EOMF  (3+I0)9$!6D#bst,%$*   !1ϸ2/3/ܸ2и/ArA! )9IYiy]A! )9IYiyqA )9IYiy r&A!&&&&6&F&V&f&v&&&&&&&&&]A!&&&&6&F&V&f&v&&&&&&&&&qA&&&&6&F&V&f&v&&&&& rA&&r//01#".54>324.#"32>,:%#8*-K76I-V#$,&& EF@21?CB,nbC@^k49:.#7DB9ZX@$9GD:kU+//01752>546.#"'733t  #P  I"+ +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r-%++01%!5>54.#"#>3232>73t>?.);$!C>8#K"'w9ǻ3"+A""rA! "")"9"I"Y"i"y"""""""""]A! "")"9"I"Y"i"y"""""""""qA "")"9"I"Y"i"y""""" r"39/ArA! )9IYiy]A! )9IYiyqA )9IYiy r/.%+01#".5463232>54.'5>54&#"'>32w%@U0 "! ")0A%3&7+(9 %1"3&nU4N4   !*(9$$1,7) /"/&" ' Q+и и//+к 9 01#5#533 3UI1N,8z@f,%+ArA! )9IYiy]A! )9IYiyqA )9IYiy r' +%+#+01##".5463232>54.'73f*-WE*&@W0 "  .#0K\,tM$;>324.#"32>2F+0E.4[{G7XB. @"$8'N ,#3-% X)L;#-FV)DlC-G[11@SB9& 3B;))1! / +017##"'7!1& <>7'6F-+(+и/ и / 9# 9A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( rA-]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v-- rA--&-6-F-V-f-v--------]A---rA--r7-?и?/H//9#901#".54>7.54>324#">4.'3260?# =0#*(!.; 9.$,1(Ma'<#( ,2"')->&8&%6#0)" #'/#6%!0!-% '/6:_*,)$  &2,'I.-#.'45/6/ܸ5и/и/ 9ArA! )9IYiy]A! )9IYiyqA )9IYiy r(A!((&(6(F(V(f(v(((((((((]A!((&(6(F(V(f(v(((((((((qA((&(6(F(V(f(v((((( rA((r2и2/-++ 901+5>7#".54>324.#"32>7>5\}H5WC- ?#%8%/E+0G0U -!% +"DkC-H\02?!(N=&/HXD<**1@9' - //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+a8 //01%#".54>54.547>32#2a  >@1#!)!=   $+$%22 " #E6#-U!$   $&$ ]iP- //01#".54>7>324.#"32>i  9'" /( ,1  ?2"/'  %  + ( *6S +,!&&  To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO     //01.54>7 r '$"(%z////01#"54.54>32 (1( (  71X/uy?%)"NGJIBVzR-K +A rA!  ) 9 I Y i y ]A!  ) 9 I Y i y qA  ) 9 I Y i y r  и /  / ///EX/ >YEX%/% >YEX(/( >YEX+/+ >Y901'"#"5.54>3232>5432RD5 28- ". K<BJH$Hy{A"% " 7@5'///1/4//@////1901#"&'##"=4&'.54>32326763232>7432 "0   $%-  1'% 3:7<6)  "U9.!"' !9)+:tE;///3/39)39739E3901#"&'#"54.54>323267.54>32.#"3267 $()  *1*  1+    $ 4  9713[0{}B&+#! - !  ,  A1 ///$ 901.54>32>32.#".#"f !  ":*+$)"  & & +23/& "$&_fd+?6$"Nz3r+A&6FVfv ]A],9/ /EX/ >Y,901#"&'#".54>74.'326732>z #   /< 1#"'($     f92!"*0mj^ "V[\!8:4 2;>   YwaB1///'/'9.'9B'901#"4'&54>7".54>7>32#32>7a  2  '* %  - !!  -179;" SXO "(+((    To6B/+/EX/ >YEX/ >YEX/ >Y01#".54.#"#"&=4763232>32o <& 4 !  &+$6gW:1 /1=  0#>>7:)L ///EX/ >YEX&/& >YEX)/) >Y!&901#"'.=>3>32($   #%&/.,)+) NpNW\;#C )Dr][yF%///901#2'&'"546767>32SciZ'm;> jalT-(- Gbhj`-"@/L///EX#/# >YEX&/& >YEX(/( >Y&901".'.'#"=4>74632#     ! )-.$<  Xem3Xa@ +N 7`efa8 cqo.B"/EX / >Y 901%#"&'.'#".5467>324.#"32>o   +'  l %BNM "5 50%.AMO    )z+M +A&6FVfv ]A]//01#".54>324.#"32>4) 5(&4 6'&4 =  NC..BJNE0.CL><,'0/( @>.(20)Lz+///01752>=46.#"'733R  f    4 %z'+ArA! )9IYiy]A! )9IYiyqA )9IYiy r)/!+01%#5>54&#"#>3232>73F>+.&%- *,!/n AJP%&7&",!)/,(5  z3+ArA! )9IYiy]A! )9IYiyqA )9IYiy r,//2,901#".5463232>54.'5>54&#"'>32 -<"  ".):'( "'<&NU%7% (  5*'!-+2 )z O+и и//+к 9 01#5#533'34#7k8pp'-o%+A! )9IYiy]A! )9IYiyqA! )9IYiyr' /$/ $9# $901##".5463232>54.'73 =1.="  !"5A R:7*9#":+  #%4!'z2q +A&6FVfv ]A]и/ 9///901#".54>;>324.#"32>'#2"1 %@W3'>/ .'7 $  W6* 2=0aL0  3@##-;.)$.*##o / +017##"'73#u +} d 'z'4B#C/D/ܸCи/ и / 9и/# 9(A((rA! (()(9(I(Y(i(y(((((((((]A! (()(9(I(Y(i(y(((((((((qA (()(9(I(Y(i(y((((( r-A!--&-6-F-V-f-v---------]A!--&-6-F-V-f-v---------qA--&-6-F-V-f-v----- rA--r(5и5/-=и=///9#901#".54>7.54>32'4#">4.'326"-," +(!"6E*   #(&-,( &" !& "  !'C *$ 4 #5!%z4q+A&6FVfv ]A]и/ 9/// 901+5>7#".54>324.#"32>7>%%AY3&=0 -( "0"2"<0`L/  3A" #-7+!4> 0+#-(  y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 54.547>32#: ,-#+'"$$  1'  =$ $($ B) //01#".54>7>324.#"32> )  "#  -# &8  -'; ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# y //01.54>7i^c////01#"54.54>32" @#@ S~U-7344.=[))/ / ///!/#/ 901#"5.54>323265432# #(  $' /433VX. /-'!c>5///%/-///2/:///901#"&'##"=4&'.54>32326743232>7432!  " " !  F"  $)' +& 323267.54632.#"3267    $ "#      ((" %@"WY/' *"    .`/# ///" 9( 901.54>32>32.#".#"H!$)       47/ CHH,'    7 S/e+A]A )9IYiy ]*9// /*901#"&'#".54>74.'3267326   !+"   a)# "MKC=A@()% $*+  "?k:' ///#/#9*#901#"=4>7".54>7>32#32>7 $ $       #)M0 ;?8     $   ;W4////01#".54.#"#"&=4763232>32  +$    &J=*"!#+  )2,,' )S&% ////$/&/$901#"'.=643>32 )'!!  B   8Od8]t@/0QoBArU2)* ////901#"&'.'"547676767632)#%G M*KF.S&<,EJ KE-Q)%////!/#/!901".'.'#"=4>7432    $ !+ >HM$>^E.7=ylHfE' FY,://901#"&'.'#"&5467>32'4&#"32>  L   /77 )%&"! /68# }m}}l;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..St;9/ /)/0132>54.#"4>32#".`~~ޥ``~~ޥ`.StXXtS..StXXtS.~ޥ``~~ޥ``~XtS..StXXtS..StM/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 k/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 L/ #//01"3!2>54.#52#!".54>3$@//@$$@//@$*K8 8K*1*K8 8K*/@$2$@//@$$@/ 8K*2*K8 8K**K8 -@,=)/0+05и5/07и7/0132>32#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD\J{J"JAJ#m~msD@c_bER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>b/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  763232>763232>5>32&5>7>?>32&5>7>?>32V ')  "2    %        $    #!B6! =6!" %+%$+%$-7/    c j  b kV7}w8l+8и/All]A ll)l9lIlYlilylll ]8vиv/8q/ /d q901#"'#"&54>763232>763232>5>32'#".'#"&54>54.#"#"&54>32>7.54>32'>.#"V ')  "2    Au$     "<  , V  !B6! =6!" %+%$+%$-7/  ) AJ$   .,!!#  . 2)  #U V7Qk0/3/\/^/01#"'#"&54>763232>763232>5>32#"5467>?>32#"5467>?>32V ')  "2      $ $  $ $ X!B6! =6!" $,$$+%%-70 d  k  d  i V7R8/P/ /01#"'#"&54>763232>763232>5>32'#"5467>?>32V ')  "2      $  #!B6! =6!" %+%$+%$-7/   b  kV7^jT/ /G T9h T901#"'#"&54>763232>763232>5>32'#"&'#"&'>7.54>32'4&#">V ')  "2    '4X"$640($  O!B6! =6!" %+%$+%$-7/  FD !'+&83#7%9 e $V7Q0/3/B/D/01#"'#"&54>7623232>7>3232>5>32#"5467>?>32V '*  "2      $ $ !B6!!=6!" %-%%+%$,7/   d  i $D]E/[/ // [901#"54>7>7.54>7>32#".#">72#"5467>?>32  "(1/      !%   $ #      #  b   kDkw-a/ // a9T a9u a901#"54>7>7.54>7>32#".#">72#"&'#"&'>7.54>32'4&#">  "(1/      !%  '4X"$640($  O      # ZFD !'+&83#7%9 e $VT /)/01#".'.'.54632#"'#"&54>763232>763232>5>32H"   $ ')  "2    o  5R%# MH8!B6! =6!" %+%$+%$-7/  +ArA! )9IYiy]A! )9IYiyqA )9IYiy r/ /01'>54.'-D9%*DU+#:*(0 .)"7' =/ /+01.#"'4>32!*-"-?&)5!94%-:"SI2/DM[(4]iA/ / A9D A901#"&'#"&'>7.54>32'4&#">%467>32>32#".5467.32654&')4Z"% 650)  N )4Z"% 650)  N FD  "'+%93#!7 f&dFD  !',%83$!7 f&}EX/>Y01153}} 2% + A!&6FVfv]A!&6FVfvqA&6FVfv rArEX/ >Y+01#".54>324.#"32> (34*(53(4!&8"! 5&&5 5&%6!" 3)" ")/EX/ >YEX/ >Y01#373#a66QQ //017#".54>32Q! ##Sb3/:/^+^"и^'и'/L:9017#".54>32#".54323267>54.'.54>32>324.#">R  $;LOM    42/#''  ,//A]< " #I 2%  + )$#-F '06  .",>  +#49/%/'/6//017#".54>32+"&'.5473232>;2R  s,2 9 1. #!&!"%" " #/<= ><.##7d9 //017#".54>32%4>7>;2#".#"+"4R  ,2 9 1. #!&!"%" " #/<= ><.##d\, /(/017#"&'&'&#".54>32767>32     # # `,hw3/S/s4+s;иs@и@/aS9017#"&'&'&#".54>322767>32#".54323267>54.'.54>32>324.#">    )$;LOM    42/#''  ,//A]< # #  2%  + "-2 L17.",>  +#VT- //01#".54>7>'.54>32T      J" #cKA/&/EX0/0>Y017#".54>32#"&'&'&#".54>32767>328!f    n #" # " 'A}3&/h/I+PиUиU/v&h9017#".54>32#"&'&'&#".54>326767>32#".54323267>54.'.54>32>324.#">9!h   !$;LOM    42/#''  ,//A]<# #" #  2%  + "-2 L17.",>  +#bZ,@ 2/(/017#"&'&'&#".54>32?>32#".54>32 !  F! #  " &"#ZL//#/-/:/H/017#"&'&'&#.'./&#".54>32767>;767>32       !     !   ZO-Z>)/@/EX/>YEXJ/J>YEXV/V>Y017#"&'&'&#".54>32767>32#"&'&'&#".54>32?>32 !     !n# #  # # &?N%&/J+JиJи/017#".54323267>54.'.54>32>324.#">$;KOK       43/"%$  -/.A]<? 2%  + ($#-F%06 ."->  ,"k&9/%/ + и / и / и/01%#"&'&'"#".54>3232>32,FVWMA!"   % ,7?V~V1R !$ w@ //017#"&54>7>7.5467>32#".#">32 I(1/   +   !&   ? %  $49s@ //01%#"&54>7>7.5467>32#".#">329 I(1/   +   !&   ? %  O //017#".#"#"&54>3232>7.5467>32#".#">32 I(1?!)   +   !&      ? %  o1~"/X///EX/>YEX/>YEX+/+>Y + и /017#".#"#"54>7>3>324&#"2>%9''/+   6!(#5 )#& !  ."(2   .}Bit O/R/01%#"&54>7>7.54>7>32#".#">36#"&'#"&'>7.54>32'4&#">. I(1/       !& )4X"$660)#   P     %  r ED "',%83$9%7 f $J+- / ///////01&'&+"&'&'7;2     !9b#M+A&6FVfv ]A] +017#"&54>324.#"32>)8!03&5 '9#  !;,EJ8+)04 (  ]k$////!/017+"'.5473232>;2$ 9 %c.;= ?<- '  ' Kj%///"//014>7>;2#".#"+"4%+ 9 +&# !i/<= ><.##wa&1 ///017#"&'#"&'>7.54>32'4&#">a)4X"$660)#   P% ED "',%83$9%7 f $U"+//017"JJ~-`-:%////"/014>7>;2#".#"+"4,2 9 1. #!&!"%"P/<= ><.##$>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32%n~l% +kuz9 -7:1"6BLIB)QLG   },Q>L/N/EX7/7>YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32%#"54>7>7>32(    %n~l% +kuz9 -7:1"# # 6BLIB)QLG   he@e:/EXK/K>YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !/%n~l% +kuz9 -7:1"" ## # &:6BLIB)QLG   $>/!/EX / >YEX / >YEX/>Y01#"54>7>7>32)sw^ ]lp2 3>C8&{ 0YEX9/9>YEX;/;>Y01#"&/&#".54>32767>32#"54>7>7>32(    )sw^ ]lp2 3>C8&# # ! 0YEXM/M>YEXO/O>Y01#".54>32#"&'&'&#".54>32?>32%#"54>7>7>32= f   !)sw^ ]lp2 3>C8&" ## # & 032#".'&547>32>767254> %  #jPOnL&Hcw<a~H-3.-F7*.;( (/`VD J J J;cm3(ER[-+AI+-и/-и/(%и%/<:и:/<N01".5467".'#".54332>7>7>3327>324&#"2>/Mac]#   <* 9j  R]^'%- J5;999R}U,a>[@(    ,   6)  YEX/>Y1901"#".67>7>7>54.54>720<: 4G1 *  (%/'.' FI0uR.-+ +.+ # qV!]jqj]"8$,&@=&uM@&_1@:C&f@+{&hs;@v&kH@k{&s &l&m-SWN&mN::/EX1/1>YEX3/3>YEX6/6>Y01%2>54&'.'#".'.54>32##"#".69/ ![hq8   ( ['% z ,,J8  @+," =8/ ,.#$.'&o.LPN&o&n.&qN a>A2/ /EX/>YEX+/+>Y&2 901>54>32;2+".'.'#"&54>7>  !1(%&%%&%/9" (2E3 9HPG7 0K^-0C1(1<|R.'>jP"'`jp7sm3  $119La &ua&_a&f!a&h1a,&ka&s&l&m/Q17P&m1P,/01%4.#"#".'.54>32&q*BOJ<   "/  art/$6' "TUQ?& ".# '%0Nc2&OJ@%&o0J10P&o1&n0&qP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                $         $$$                                                                      '          '''                                                             +            +++ !                                 !!                       ,            ,,,! %                                    %%                     2              "222% *              !                **    !!!!! !      !!!!! #      8!    !           &888!* .      !!  ! !       # %   ! "      !    ! ..    !!$$$$$ ###########$       %%%%%!!!!!!!!!###########&   #  "  > $    $            *>>> $- 2 !    $$" !$ $      & ( "  $ %      $  "  $ 22   $$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'''''#########&&&&&&&&&&&(    """""""""""""""""""""""""""""((((($$$$$$$$$!!!!&&&&&&&&&&&*   '    % "C#'  !!!'"          !!!!!!".CCC#'1 6#   ''&%& '   ) +$ '(    ' $ ' 66 ''$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*****&&&&&&&&&)))))))))))+    $$$$$$$$$$$$$$$$$$$%%%%%%%%%%+++++&&&&&&&&&####)))))))))))-    *     '   %H&*#$$$* $          $$$$$$%1HHH&*5  : &"  **)   '   )  *  "   ,.' *+    ! ! * """'   * :: ** &&&&&&&&&&&&&&&&&&&&&&&&&&&&&-----))))))))),,,,,,,,,,,. '''''''''''''''''''((((((((((.....)))))))))&&&&,,,,,,,,,,,0   """""-   """"" *    (N)-&'''-"'     ''''''(5NNN)-9 C%,'  11/$!"$$$$-$$$"$$0$$1($ 35-12$$&&1 '''$$$$$$-"%$$$$$$%$$$$$"1"C"C """ 00%%%%%%%%%%,,,,,,,,,,,,,,,,,,,"""""""""""""""""",,,,,,,,,,44444$$$!!!!!!!/////////!!!!333333333335 !!------------------- ..........55555$$$000000000,,,,333333333338!!!!!!! """"""""""""""""""!!!!!!!!!!(((((4   (((((1    .Z/4+!---4'-      %%  ------.=ZZZ/4B K*1, "6"65)%&)#)))#3)))&"))5))#6,) #9<2#68))!+!+6  ,,+))))))2&####)))))))"))))))&6&K&K &&"& 66))))))))))2222222222222222222''''''''''''''''''1111111111;;;;;(((%%%%%%%555555555%%%%""""99999999999;  "!!!!!! %%""""""""""2222222222222222222$$$$$$$$$$$$$$$$$$4444444444<<<<<(((555555555 111199999999999>" %%%%%%% &&&&&&&&&&&&&&&&&&%%%%%%%%%%,,,,, ###############:  $$$$$$$$$$$$$$$$$$"""""""""",,,,,7    4d4;1%! 222:+2      *"*" !  2222224Dddd4;JU1t1_<BDA  J A o<+udR7u9?#L#+ %T=B7#?JD9\=)%)FJV 7Z!ZZ5Z'Z!Z^ZZ5ZZ5Zb%ZZZ ZbDV73399-/ - 33ZL  Z5yH3 Lh^ZbZ\^933ZEZ3Z^-{-u3&/1;=3J))Xj^33j}6+}:V V V V V V ^7!!!!''\ZZ5Z5Z5Z5Z5\7ZZZZZ[777777739999/333333)/V!?==ZoZ%D)T) ) )P)Z)Z)P)==============mLmLmLmLmLmLmLmLmLmLmLmLmLmL;;j5j5j5j5j5j5j5j5jj5HVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHVHV++++++++++++++++++DDDDDDDDDDBBBBBDDD-------XXXXXXXXXuuuuNNNNHHHHHHHHHHHVuNuNuNuNuNuNuNFDYFDFDH`H`H`H`H`H`H`H`H`LLLLLLL''YjHjjPjPjNjjPj============================''VVVVVVVVVbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbPbP))))))))))))))))))`````DDDZZZZZZZZZ`#`#`#`#5H5H5H5HHHHHHHHHHHHRRRRRRR???u u u u u u u u u $)9$)9)9)91111111ooooooooooooooooooooooooooooqqqNNNNNNNPPPPPPPPPPPPP+ooooooooohhhhhhhhhhhhhhhhhhhhhhhhhhhhHHH============~===PPPPPPPBBBhhhhhhhhh999LF8+> mP'1m^5 ;@3;7B09&>N 6sJj)H)wFX;X,Xx1DmJJ$%S:!-!!!`!!!!f!o!!-!!!`!f!!!!!f A!o!!k',)!7'V7]T:@cV7:ANYT:%@c??L??? ????'??y?^?=?'?Z?B?;?)?-?F?y?^?=?'?)@.?7???;?)@?-?F0OO@y"Ay2s[ 47dcbZw$1J]K:}h}hX;X;X,X,XxXx5H9   ;@3(v@v@v@v@v@v@v@       1111444440d `P,@(p"P$$%& &L&(,-/1x334678D9 :\:< =$>@lBCFFGH|IJKLXLLM MPMtMOQS@U8VxWhZ\4\]_ _|abdfhil8ln8np q4rdrtHtuvtx8xy{| }<0 $p, DD\ <|<t,||<0H`x(@Xp”¬ $|xŐŨx(@XpɈɠ0H`x̨̐4Ld|ϔϬМ,D\tՔլ(((((((((((((lۘdp(4Ld4Lh(@Xp|,D\t\t $<Tl $<,  ( @ ` x       0 P h   l        , L l     <Tt<Tl,DTld|4Ld!!!0!H#,#D#\#|####$$$4&((((() )$)****+,,,,--4-L.`.x../p/////0001@333334 4$4<4T4l55545L5d5|677747L7d7|777778 899(9@9X9x99999::(:@;;,;D;\;t;;;;;< <$<<?@ @@4@L@dBlB|D(D@DXDpDDDDDEE E8EPEpEEEEEFHHHHII(I@IXIpIIIIJJJ0JHLM M,MDMdMMMMMQQ(Q@QXQxTT0THV$V<VTVtVVVVXYY Y8YPYhYY\<\T\l\_T_l__abbb<bTbtbbbbbf@iTiliiiiijll(l@lXlxn<nTntnnnnpTplp|pr,r<shsst@tXtpuuuvvv4vLvdv|vvvvvw wwwxxx0xHx`xxxxxxyy0yPypyyy{8{P{h{{{{{{||8|P|h||||~,~D~d~|~~~~$ 8Phh(@Xp<Tt4Tl $D\t,DTld|,D\t4L\t<\t(H`Ld| $D\t4D\tx 8Xx 8PhD\t4Ld,l<8Xl XtX``¼$ǠȬɼʔ@ddаѐҀPxִPڰۘD| 0PhL\|LX L!!"##$D%&(*,./|04012t454699;==@C\CDEFGdGHIJhKHKKMNOPPQXRDS STTU(VVW<XZZ\] ]L`,a4aabc`cde(efXggdgh`i@j,jklmHmndooooopqqr<rsdsdsdsdsxst`t`t`t`ttttttttttttttuv@v@v@v@wyz{|}xP8t(@HDhHX84T,P$(8H0H`x4L8Phf  |tv??V1]      2 >KZbhv~     "'+<A EP X d p! " #$%&'() ~ .2 ` bn . $ <" "^ "  &X .~  .    .  ,   $ > \  l x        0         : D ` (|       "    * 2 H X p  , ! " #& $  % &2 ' J (T ) \Copyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTestCopyright (c) 1994-2005 SIL International. All rights reserved.Scheherazade GrcRegTestRegularSIL International:Scheherazade GrcRegTest:1-5-105Scheherazade GrcRegTestVersion 0.003 2005ScheherazadeGrcRegTest-RegularSIL InternationalSIL InternationalScheherazade is an Arabic font with a design based on traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.http://www.sil.org/http://scripts.sil.org/This font is the property of SIL International. It is distributed as copyrighted freeware. You may use this software without any charge and may distribute it, as is, to others. Commercial distribution of this software is restricted without prior written permission. If you wish to distribute this software commercially, contact SIL for details on obtaining a license. You may not rent or lease the software, nor may you modify, adapt, translate, reverse engineer, decompile, or disassemble the software. You may not make derivative fonts from this software. THE SOFTWARE AND RELATED FILES ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.Scheherazade GrcRegTestRegularScheherazade GrcRegTestShadda+kasra placementRaised kasraLowered kasraMeem alternatesStandardSindhiHeh alternatesStandardKurdishSindhiUrduEastern digit alternatesStandardSindhiUrduSukun alternatesSukunJasm open downJasm open leftDotless head of khahStandardJasm open leftDownward commaFalseTrueSix-nine dammatanFalseTrueEnd of ayahStandardSimplified ASimplified BKasra-tcheh adjustmentRaise kasraLower kasraDiacritic selectionFalseTrueShow invisible charactersFalseTrueNoNameShadda+kasra placementRaised kasraLowered kasraMeem alternatesStandardSindhiHeh alternatesStandardKurdishSindhiUrduEastern digit alternatesStandardSindhiUrduSukun alternatesSukunJasm open downJasm open leftDotless head of khahStandardJasm open leftDownward commaFalseTrueSix-nine dammatanFalseTrueEnd of ayahStandardSimplified ASimplified BKasra-tcheh adjustmentRaise kasraLower kasraDiacritic selectionFalseTrueShow invisible charactersFalseTrueNoName   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a   bcdefghjikmlnoqprsutvwxzy{}|~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.nulltab hyphenminusEuro nobreakspace sfthyphenuni02C9microperiodcentereduni2219enQuademQuadenSpaceemSpacethreePerEmSpacefourPerEmSpace sixPerEmSpace figureSpacepunctuationSpace thinSpace hairSpace zerospace zeronojoinzerojoinleftToRightMarkrightToLeftMark noBreakHyphenleftToRightEmbeddingrightToLeftEmbeddingpopDirectionalFormattingleftToRightOverriderightToLeftOverride wordJoinerinhibitArabicFormShapingactivateArabicFormShaping circledashzeroWidthNoBreakSpaceabsAlefMaddaAboveabsAlefHamzaAboveabsAlefHamzaBelowabsAlefabsAlefWavyHamzaAboveabsAlefWavyHamzaBelowabsHighHamzaAlef absAlefWaslaabsWawHamzaAboveabsWawabsHighHamzaWawabsUHamzaAbove absWawRing absKirghizOeabsOeabsUabsYu absKirghizYuabsWawTwoDotsAboveabsVeabsWawDotAboveabsWawDotBelowabsDalabsThalabsDdal absDalRingabsDalDotBelowabsDalDotBelowSmallTahabsDahal absDdahalabsDulabsDalThreeDotsAboveDownwardsabsDalFourDotsAbove absDalHatabsDalTwoVertBelowSmallTahabsDalInvSmallVBelowabsRehabsZainabsRreh absRehSmallV absRehRingabsRehDotBelowabsRehSmallVBelowabsRehDotBelowDotAboveabsRehTwoDotsAboveabsJehabsRehFourDotsAboveabsRehTwoVertAboveabsRehHamzaAbove absJehRetro1 absJehRetro2 absJeh.dotHat absRehHat absRehBar absYehBarreeabsYehBarreeHamzaAboveabsYehHamzaAboveabsYeh absYeh.noDotsabsHighHamzaYeh absFarsiYeh absYehSmallVabsEabsYehThreeDotsBelow absYehTailabsAlefMaksura absBehNoDotsabsBehabsTehabsThehabsTteh absTtehehabsBeeh absTehRingabsTehThreeDotsAboveDownwardsabsPehabsTehehabsBehehabsBehThreeDotsHorizBelowabsBehThreeDotsAboveDotBelowabsBehThreeDotsUpwardBelow&absBehTwoDotsAboveThreeDotsUpwardBelowabsBehDotAboveTwoDotsBelowabsBehInvSmallVBelowabsBehSmallVAboveabsJeemabsHahabsKhahabsHahHamzaAboveabsHahTwoDotsVerticalAboveabsNyehabsDyehabsHahThreeDotsAboveabsTcheh absTchehehabsTchehDotAboveabsTchehRetro1absTchehRetro2 absJeemRetro1 absJeemRetro2 absJeemRetro3absHahTwoDotsAboveabsHahThreeDotsUpwardBelowabsSeenabsSheenabsSeenDotBelowDotAboveabsSeenThreeDotsBelow#absSeenThreeDotsBelowThreeDotsAboveabsSheenDotBelowabsSheenRetro1absSheenRetro2absSeenFourDotsAboveabsSeenTwoVertAboveabsSadabsDadabsSadTwoDotsBelowabsSadThreeDotsAboveabsDadDotBelowabsTahabsZahabsTahThreeDotsAboveabsAinabsGhainabsAinThreeDotsAboveabsGhainDotBelowabsAinTwoDotsAboveabsAinThreeDotsDownAboveabsAinTwoDotsVertAboveabsFeh absDotlessFehabsFehDotMovedBelowabsFehDotBelowabsVehabsFehThreeDotsBelowabsPehehabsFehTwoDotsBelowabsFehThreeDotsUpwardBelow absQafNoDotsabsQafabsQafDotAboveabsQafThreeDotsAboveabsKafabsKafDotAboveabsNgabsKafThreeDotsBelowabsKeheh absKafRingabsGaf absGafRingabsNgoehabsGafTwoDotsBelowabsGuehabsGafThreeDotsAboveabsKehehDotAboveabsKehehThreeDotsAboveabsKehehThreeDotsUpwardBelow absSwashKafabsLam absLamSmallVabsLamDotAboveabsLamThreeDotsAboveabsLamThreeDotsBelow absLamRetro absLamBarabsMeemabsMeem.sindhiabsMeemDotAboveabsMeemDotBelowabsNoonabsNoonDotBelow absNoonGhunnaabsRnoon absNoonRingabsNoonThreeDotsAboveabsNoonTwoDotsBelow absNoonRetro absNoonSmallVabsHehDoachashmee absHehHatabsHehabsHeh.knottedabsAe absTehMarbutaabsHehYehAbove absHehGoalabsHehGoalHamzaAboveabsTehMarbutaGoalabsHamzaabsSignSindhiAmpersabsSignSindhiPostpositionMen absTatweel absLamAlefabsLamSmallVAlefabsLamDotAboveAlefabsLamThreeDotsAboveAlefabsLamThreeDotsBelowAlefabsLamRetroAlef absLamBarAlefabsAlefMaddaAboveFinabsAlefHamzaAboveFinabsAlefHamzaBelowFin absAlefFinabsAlefWavyHamzaAboveFinabsAlefWavyHamzaBelowFinabsHighHamzaAlefFinabsAlefWaslaFinabsWawHamzaAboveFin absWawFinabsHighHamzaWawFinabsUHamzaAboveFin absWawRingFinabsKirghizOeFinabsOeFinabsUFinabsYuFinabsKirghizYuFinabsWawTwoDotsAboveFinabsVeFinabsWawDotAboveFinabsWawDotBelowFin absDalFin absThalFin absDdalFin absDalRingFinabsDalDotBelowFinabsDalDotBelowSmallTahFin absDahalFin absDdahalFin absDulFin absDalThreeDotsAboveDownwardsFinabsDalFourDotsAboveFin absDalHatFinabsDalTwoVertBelowSmallTahFinabsDalInvSmallVBelowFin absRehFin absZainFin absRrehFinabsRehSmallVFin absRehRingFinabsRehDotBelowFinabsRehSmallVBelowFinabsRehDotBelowDotAboveFinabsRehTwoDotsAboveFin absJehFinabsRehFourDotsAboveFinabsRehTwoVertAboveFinabsRehHamzaAboveFinabsJehRetro1FinabsJehRetro2FinabsJehFin.dotHat absRehHatFin absRehBarFinabsYehBarreeFinabsYehBarreeHamzaAboveFinabsYehHamzaAboveFin absYehFinabsYehFin.noDotsabsHighHamzaYehFinabsFarsiYehFinabsYehSmallVFinabsEFinabsYehThreeDotsBelowFin absYehTailFinabsAlefMaksuraFinabsBehNoDotsFin absBehFin absTehFin absThehFin absTtehFin absTtehehFin absBeehFin absTehRingFin absTehThreeDotsAboveDownwardsFin absPehFin absTehehFin absBehehFinabsBehThreeDotsHorizBelowFinabsBehThreeDotsAboveDotBelowFinabsBehThreeDotsUpwardBelowFin)absBehTwoDotsAboveThreeDotsUpwardBelowFinabsBehDotAboveTwoDotsBelowFinabsBehInvSmallVBelowFinabsBehSmallVAboveFin absJeemFin absHahFin absKhahFinabsHahHamzaAboveFinabsHahTwoDotsVerticalAboveFin absNyehFin absDyehFinabsHahThreeDotsAboveFin absTchehFin absTchehehFinabsTchehDotAboveFinabsTchehRetro1FinabsTchehRetro2FinabsJeemRetro1FinabsJeemRetro2FinabsJeemRetro3FinabsHahTwoDotsAboveFinabsHahThreeDotsUpwardBelowFin absSeenFin absSheenFinabsSeenDotBelowDotAboveFinabsSeenThreeDotsBelowFin&absSeenThreeDotsBelowThreeDotsAboveFinabsSheenDotBelowFinabsSheenRetro1FinabsSheenRetro2FinabsSeenFourDotsAboveFinabsSeenTwoVertAboveFin absSadFin absDadFinabsSadTwoDotsBelowFinabsSadThreeDotsAboveFinabsDadDotBelowFin absTahFin absZahFinabsTahThreeDotsAboveFin absAinFin absGhainFinabsAinThreeDotsAboveFinabsGhainDotBelowFinabsAinTwoDotsAboveFinabsAinThreeDotsDownAboveFinabsAinTwoDotsVertAboveFin absFehFinabsDotlessFehFinabsFehDotMovedBelowFinabsFehDotBelowFin absVehFinabsFehThreeDotsBelowFin absPehehFinabsFehTwoDotsBelowFinabsFehThreeDotsUpwardBelowFinabsQafNoDotsFin absQafFinabsQafDotAboveFinabsQafThreeDotsAboveFin absKafFinabsKafDotAboveFinabsNgFinabsKafThreeDotsBelowFin absKehehFin absKafRingFin absGafFin absGafRingFin absNgoehFinabsGafTwoDotsBelowFin absGuehFinabsGafThreeDotsAboveFinabsKehehDotAboveFinabsKehehThreeDotsAboveFinabsKehehThreeDotsUpwardBelowFinabsSwashKafFin absLamFinabsLamSmallVFinabsLamDotAboveFinabsLamThreeDotsAboveFinabsLamThreeDotsBelowFinabsLamRetroFin absLamBarFin absMeemFinabsMeemFin.sindhiabsMeemDotAboveFinabsMeemDotBelowFin absNoonFinabsNoonDotBelowFinabsNoonGhunnaFin absRnoonFinabsNoonRingFinabsNoonThreeDotsAboveFinabsNoonTwoDotsBelowFinabsNoonRetroFinabsNoonSmallVFinabsHehDoachashmeeFin absHehHatFin absHehFinabsHehFin.knottedFlatabsHehFin.knottedHighabsHehFin.hookedabsAeFinabsTehMarbutaFinabsHehYehAboveFin absHehGoalFinabsHehGoalHamzaAboveFinabsTehMarbutaGoalFin absLamAlefFinabsLamSmallVAlefFinabsLamDotAboveAlefFinabsLamThreeDotsAboveAlefFinabsLamThreeDotsBelowAlefFinabsLamRetroAlefFinabsLamBarAlefFinabsYehHamzaAboveMed absYehMedabsYehMed.noDotsabsHighHamzaYehMedabsFarsiYehMedabsYehSmallVMedabsEMedabsYehThreeDotsBelowMedabsAlefMaksuraMedabsBehNoDotsMed absBehMed absTehMed absThehMed absTtehMed absTtehehMed absBeehMed absTehRingMed absTehThreeDotsAboveDownwardsMed absPehMed absTehehMed absBehehMedabsBehThreeDotsHorizBelowMedabsBehThreeDotsAboveDotBelowMedabsBehThreeDotsUpwardBelowMed)absBehTwoDotsAboveThreeDotsUpwardBelowMedabsBehDotAboveTwoDotsBelowMedabsBehInvSmallVBelowMedabsBehSmallVAboveMed absJeemMed absHahMed absKhahMedabsHahHamzaAboveMedabsHahTwoDotsVerticalAboveMed absNyehMed absDyehMedabsHahThreeDotsAboveMed absTchehMed absTchehehMedabsTchehDotAboveMedabsTchehRetro1MedabsTchehRetro2MedabsJeemRetro1MedabsJeemRetro2MedabsJeemRetro3MedabsHahTwoDotsAboveMedabsHahThreeDotsUpwardBelowMed absSeenMed absSheenMedabsSeenDotBelowDotAboveMedabsSeenThreeDotsBelowMed&absSeenThreeDotsBelowThreeDotsAboveMedabsSheenDotBelowMedabsSheenRetro1MedabsSheenRetro2MedabsSeenFourDotsAboveMedabsSeenTwoVertAboveMed absSadMed absDadMedabsSadTwoDotsBelowMedabsSadThreeDotsAboveMedabsDadDotBelowMed absTahMed absZahMedabsTahThreeDotsAboveMed absAinMed absGhainMedabsAinThreeDotsAboveMedabsGhainDotBelowMedabsAinTwoDotsAboveMedabsAinThreeDotsDownAboveMedabsAinTwoDotsVertAboveMed absFehMedabsDotlessFehMedabsFehDotMovedBelowMedabsFehDotBelowMed absVehMedabsFehThreeDotsBelowMed absPehehMedabsFehTwoDotsBelowMedabsFehThreeDotsUpwardBelowMedabsQafNoDotsMed absQafMedabsQafDotAboveMedabsQafThreeDotsAboveMed absKafMedabsKafDotAboveMedabsNgMedabsKafThreeDotsBelowMed absKehehMed absKafRingMed absGafMed absGafRingMed absNgoehMedabsGafTwoDotsBelowMed absGuehMedabsGafThreeDotsAboveMedabsKehehDotAboveMedabsKehehThreeDotsAboveMedabsKehehThreeDotsUpwardBelowMedabsSwashKafMed absLamMedabsLamSmallVMedabsLamDotAboveMedabsLamThreeDotsAboveMedabsLamThreeDotsBelowMedabsLamRetroMed absLamBarMed absMeemMedabsMeemDotAboveMedabsMeemDotBelowMed absNoonMedabsNoonDotBelowMedabsNoonGhunnaMed absRnoonMedabsNoonRingMedabsNoonThreeDotsAboveMedabsNoonTwoDotsBelowMedabsNoonRetroMedabsNoonSmallVMedabsHehDoachashmeeMed absHehHatMed absHehMedabsHehMed.hookedabsHehMed.knottedHighabsHehYehAboveMed absHehGoalMedabsHehGoalHamzaAboveMedabsYehHamzaAboveIni absYehIniabsYehIni.noDotsabsHighHamzaYehIniabsFarsiYehIniabsYehSmallVIniabsEIniabsYehThreeDotsBelowIniabsAlefMaksuraIniabsBehNoDotsIni absBehIni absTehIni absThehIni absTtehIni absTtehehIni absBeehIni absTehRingIni absTehThreeDotsAboveDownwardsIni absPehIni absTehehIni absBehehIniabsBehThreeDotsHorizBelowIniabsBehThreeDotsAboveDotBelowIniabsBehThreeDotsUpwardBelowIni)absBehTwoDotsAboveThreeDotsUpwardBelowIniabsBehDotAboveTwoDotsBelowIniabsBehInvSmallVBelowIniabsBehSmallVAboveIni absJeemIni absHahIni absKhahIniabsHahHamzaAboveIniabsHahTwoDotsVerticalAboveIni absNyehIni absDyehIniabsHahThreeDotsAboveIni absTchehIni absTchehehIniabsTchehDotAboveIniabsTchehRetro1IniabsTchehRetro2IniabsJeemRetro1IniabsJeemRetro2IniabsJeemRetro3IniabsHahTwoDotsAboveIniabsHahThreeDotsUpwardBelowIni absSeenIni absSheenIniabsSeenDotBelowDotAboveIniabsSeenThreeDotsBelowIni&absSeenThreeDotsBelowThreeDotsAboveIniabsSheenDotBelowIniabsSheenRetro1IniabsSheenRetro2IniabsSeenFourDotsAboveIniabsSeenTwoVertAboveIni absSadIni absDadIniabsSadTwoDotsBelowIniabsSadThreeDotsAboveIniabsDadDotBelowIni absTahIni absZahIniabsTahThreeDotsAboveIni absAinIni absGhainIniabsAinThreeDotsAboveIniabsGhainDotBelowIniabsAinTwoDotsAboveIniabsAinThreeDotsDownAboveIniabsAinTwoDotsVertAboveIni absFehIniabsDotlessFehIniabsFehDotMovedBelowIniabsFehDotBelowIni absVehIniabsFehThreeDotsBelowIni absPehehIniabsFehTwoDotsBelowIniabsFehThreeDotsUpwardBelowIniabsQafNoDotsIni absQafIniabsQafDotAboveIniabsQafThreeDotsAboveIni absKafIniabsKafDotAboveIniabsNgIniabsKafThreeDotsBelowIni absKehehIni absKafRingIni absGafIni absGafRingIni absNgoehIniabsGafTwoDotsBelowIni absGuehIniabsGafThreeDotsAboveIniabsKehehDotAboveIniabsKehehThreeDotsAboveIniabsKehehThreeDotsUpwardBelowIniabsSwashKafIni absLamIniabsLamSmallVIniabsLamDotAboveIniabsLamThreeDotsAboveIniabsLamThreeDotsBelowIniabsLamRetroIni absLamBarIni absMeemIniabsMeemDotAboveIniabsMeemDotBelowIni absNoonIniabsNoonDotBelowIniabsNoonGhunnaIni absRnoonIniabsNoonRingIniabsNoonThreeDotsAboveIniabsNoonTwoDotsBelowIniabsNoonRetroIniabsNoonSmallVIniabsHehDoachashmeeIni absHehHatIni absHehIniabsHehIni.hookedabsHehYehAboveIni absHehGoalIniabsHehGoalHamzaAboveIni absHighHamza absSmallWaw absSmallYeh absFathatan absDammatan absKasratanabsFathaabsDammaabsKasra absShaddaabsSukunabsMaddahAbove absHamzaAbove absHamzaBelowabsSubscriptAlef absUltaPeshabsNoonGhunnaMark absZwarakayabsVowelSmallVabsVowelInvSmallVabsVowelDotBelowabsReversedDammaabsFathaTwoDotsabsSuperscriptAlefabsSuperscriptAlef.largeabsSmallHighSadLamAlefMaksuraabsSmallHighQafLamAlefMaksuraabsSmallHighMeemInitialFormabsSmallHighLamAlefabsSmallHighJeemabsSmallHighThreeDotsabsSmallHighSeenabsSmallHighRoundedZero"absSmallHighUprightRectangularZeroabsSmallHighDotlessHeadOfKhahabsSmallHighMeemIsolatedFormabsSmallLowSeenabsSmallHighMaddaabsSmallHighYehabsSmallHighNoonabsEmptyCentreLowStopabsEmptyCentreHighStopabsRoundedHighStopFilledCentreabsSmallLowMeem absNumberSign absYearSignabsFootnoteSign absPageSignabsAfghaniSignabsCommaabsComma.downwardabsDateSeparator absVerseSign absMisraSignabsSmallHighSadMarkabsSmallHighAinMarkabsSmallHighRehHahMarkabsSmallHighRehDadMark absNameMarkerabsSmallHighTah absSemicolonabsSemicolon.downwardabsTripleDotPunctabsQuestionMarkabsPercentSignabsDecimalSeparatorabsThousandsSeparatorabsFivePointedStar absFullStop absEndOfAyahabsEndOfAyah.altabsEndOfAyah.altBabsStartOfRubElHizbabsPlaceOfSajdahornateLeftParenornateRightParenabsLigatureAllah absRialSignabsZeroabsOneabsTwoabsThreeabsFourabsFiveabsSixabsSevenabsEightabsNineabsEasternZero absEasternOne absEasternTwoabsEasternThreeabsEasternFourabsEasternFour.urduabsEasternFive absEasternSixabsEasternSix.urduabsEasternSevenabsEasternSeven.urduabsEasternEightabsEasternNine zeroMedium oneMedium twoMedium threeMedium fourMedium fiveMedium sixMedium sevenMedium eightMedium nineMedium absZeroMedium absOneMedium absTwoMediumabsThreeMedium absFourMedium absFiveMedium absSixMediumabsSevenMediumabsEightMedium absNineMediumabsEasternZeroMediumabsEasternOneMediumabsEasternTwoMediumabsEasternThreeMediumabsEasternFourMediumabsEasternFourMedium.urduabsEasternFiveMediumabsEasternSixMediumabsEasternSixMedium.urduabsEasternSevenMediumabsEasternSevenMedium.urduabsEasternEightMediumabsEasternNineMedium zeroSmalloneSmalltwoSmall threeSmall fourSmall fiveSmallsixSmall sevenSmall eightSmall nineSmall absZeroSmall absOneSmall absTwoSmall absThreeSmall absFourSmall absFiveSmall absSixSmall absSevenSmall absEightSmall absNineSmallabsEasternZeroSmallabsEasternOneSmallabsEasternTwoSmallabsEasternThreeSmallabsEasternFourSmallabsEasternFourSmall.urduabsEasternFiveSmallabsEasternSixSmallabsEasternSixSmall.urduabsEasternSevenSmallabsEasternSevenSmall.urduabsEasternEightSmallabsEasternNineSmallabsEndOfAyah.aat1absEndOfAyah.aat2absEndOfAyah.aat3absEndOfAyah.alt.aat1absEndOfAyah.alt.aat2absEndOfAyah.alt.aat3absEndOfAyah.altB.aat1absEndOfAyah.altB.aat2absEndOfAyah.altB.aat3absEndOfAyah.sp1absEndOfAyah.sp2absEndOfAyah.sp3absNumberSign.aat1absNumberSign.aat2absNumberSign.aat3absNumberSign.sp1absNumberSign.sp2absNumberSign.sp3absYearSign.aat1absYearSign.aat2absYearSign.aat3absYearSign.aat4absYearSign.sp1absYearSign.sp2absYearSign.sp3absYearSign.sp4absFootnoteSign.aat1absFootnoteSign.aat2absFootnoteSign.sp1absFootnoteSign.sp2absPageSign.aat1absPageSign.aat2absPageSign.aat3absPageSign.sp1absPageSign.sp2absPageSign.sp3absShaddaFathatanabsShaddaDammatanabsShaddaKasratanabsShaddaFathaabsShaddaDammaabsShaddaKasra absHamzaFatha absHamzaDamma absShaddaAlefabsSukun.leftOpenabsSukun.downOpenabsDammatan.sixNineabsAutoKashida_dot1 _dot1_tah _dot1_smallV _dot1_hat_dot2h _dot2h_tah_dot2v_dot3u _dot3u_tah_dot3d_dot3h_dot4_tah_madda_hamza _highHamza _wavyHamza _wavyHamza.b_wasla _hamzaDamma_bar_ring_smallV _invSmallV_damma_vline_hat_gafBar _gafBar_dot2h _gafBar_dot3u _gafBarShort_gafBarShort_dot2h_gafBarShort_dot3u_linesabsEndOfAyah.2absEndOfAyah.3absEndOfAyah.alt.2absEndOfAyah.alt.3absEndOfAyah.altB.2absEndOfAyah.altB.3absNumberSign.2absNumberSign.3 absYearSign.2 absYearSign.3 absYearSign.4absFootnoteSign.2 absPageSign.2 absPageSign.3absLamIni.preAlefabsLamSmallVIni.preAlefabsLamDotAboveIni.preAlefabsLamThreeDotsAboveIni.preAlefabsLamThreeDotsBelowIni.preAlefabsLamRetroIni.preAlefabsLamBarIni.preAlefabsAlefMaddaAboveFin.postLamIniabsAlefHamzaAboveFin.postLamIniabsAlefHamzaBelowFin.postLamIniabsAlefFin.postLamIni#absAlefWavyHamzaAboveFin.postLamIni#absAlefWavyHamzaBelowFin.postLamIniabsHighHamzaAlefFin.postLamIniabsAlefWaslaFin.postLamIniabsLamMed.preAlefabsLamSmallVMed.preAlefabsLamDotAboveMed.preAlefabsLamThreeDotsAboveMed.preAlefabsLamThreeDotsBelowMed.preAlefabsLamRetroMed.preAlefabsLamBarMed.preAlefabsAlefMaddaAboveFin.postLamMedabsAlefHamzaAboveFin.postLamMedabsAlefHamzaBelowFin.postLamMedabsAlefFin.postLamMed#absAlefWavyHamzaAboveFin.postLamMed#absAlefWavyHamzaBelowFin.postLamMedabsHighHamzaAlefFin.postLamMedabsAlefWaslaFin.postLamMed+++D Y+a:+_H8)+PH8)++ E}iD   HK" +B)!BB'B*BB1B*BBA?&P_!w7ya_nm                     #&8(+ #x&s(d+L#x&(d+L#x&L(d+!#x&L(d+L-x0L#x&(d+L#x&L(d+ #Z&(d+L#&Z(d+L! 3 =b=#L&(+25!3#k&(+-k025gCFfikn#&(+25g#&6(+2e5#k&(+25g#g&(+25g#c& (+2}5#k&#(+2}5a#\&(+25#c&(+25#c& (+25$#g&i(+25a#g& (+2y5 #g&(R+25g99!# &[(+L2y5 CPF;#&F(+L2q5#&S(+L2X5#&P(+p2y5 #&T(+>2y5 #&c(+>2X5#&(+L2y5#&W(+>2y5 #&(+L2q5:#&(+L2u5j#&(+L2q5j# &F(+L2m5#&D(+2e5#&_(+ 2y5 ww!o#&(+2u5CmFfi@kLn#&H(+2u5#&(+2y5#&(+2u5D#&(+2u5#&(+D2u5#&(+2u5#&(+D2u5#&(+2m5P#&(+2m5y#&(+2i5#&(+2q5q#&(+2y5#&((+2y5#&(+2q5j#&[(+2y5#&f(+2m5#&(+2u5!#Y&(+p-Y0#I&(+p!  jqO#g&(+p#E&(V+!#I&(+j#&(+p#E&(+p-E0adp#&(+p#&(+%#&(+#&(+p#&(+p!#&I(+2*5GC|F #&I(+U2*5G#Z&(+2*5#V&(+2*5#E&}(+2&5#X&(+2"5#&I(+2*5G#V&}(V+L2"5#X&(+2"5#&I(+2*5G#X&(+2"5#&I(}+{2*5G#&I(t+&2*5G#_&(+32"5#&I(p+2*5G#l&_(p+2"5#p&_(p+2"5#&I(l+2*5G#&(+2"5#&(+25 #&(+25a dfi8#&(+25#&(+25#&(+25 #&(+25#&(+25#&L(+25 #&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25 #&(+25 #&(+25!#&(,+-0#c&+(,+#&(,+#&(,+#g&'(,+#k&'(,+#E&(,+#8&9(,+#<&c(,+#<&x(,+=!#&(,+#&(,+#&(,+#&X(,+#&(,+; !#&(+L25#&(+L25#&(+L25&!g#&(,+#&L(,+#&(,+#&S(,+#&[(,+#&(,+#& (,+#&(X+.2V5P!#&(X+.2V5#&(X+.2V5#&(Z+/2V5#&(X+.2V5#&(E+2V5#&(X+.2V5#&(X+.2V5#&(R+2V5!Z#&(+#J&(+#J&(+#J&(+p!#;&(+.25#/&u(+.25#&\(+.25#;&L(+25%+!G#& (I+25CF#& (I+25#&(I+25#&(I+25#J&(I+25#&(+p25#&(+p25#;&(I+25#&(E+25#&(I+25#& (Z+j25#&(X+.Uw!#,&(+25 kn#&$(+25#&(+25#&T(+25#;&(+ 25 #&(+25#,&t(+25)"S!I#&E(+lX(X!#&(+8#& (+l#&R(+l#&(+.#+&(+O!x#,&f(+.CF#&U(+.25#+&(+s#&(+.#+&(+ #&(^+.25#h&(^+.[[!#h&W(,+=#J&.(T+=#&(+L#h&W(,+=0!#&(+L#&(+L! @ @#&h(+L#&(+=! @ @#&l(+L#&(+L !e#&(+L#&(+w#&(+#&(o+D!kn p.suXx9}DŽX^yʑ˜XuXx9}X^y:˜XuXx9}X^y˜XuXx9}X^yg˜XuXx9}tՉoʑ˜t՝oux}X^yI˜Xux}X^yʑ˜X#d&s(+M#Z&(+M#d&(+!#i&(+M-i0#<&(+M#K&(+#i&U(+M#&Z(+M! 37 =3=#8&p(+25ww!7#4&(+-4025CFfifknd# &(+25#&(+#4&(+25#4&(+25#4&(+250#/&(+25#/&(+25#4&(+25 #4&(+25#4&(+25#/&(+25#/&(g+25.!#&(,+L25C;F[#&(,+L25]#'&(,+L25#&(,+p25#&(x+n25#'&(|+f25#&(,+L25#&(c+]25#&(,+L25#&2(,+L2y5#&(,+L25#g&(,+L25#'&(+25j#8&(|+f25]]!P#&X(+2e5C\Ffk@n\#&(+2e5#&(+2m5;#&W(+2a5o#&X(+C2e5#&X( +!2e5#&X(+2e5#&X(+ 2e5#& (+2e5+#&(+2i5W#&(+2e5#&y(+2m5[#&[(+2a5#&(+2m5 #&B(+2e5#&(+2a5#&,(+2i5#&X(+2e5-!#w&(+-w0#&(+! C C#&(+v#&I(+rA!#&I(+r#&I(+v#&I(+v-0Iadv#&4(+v#&I(+#&I(+#&I(+v#&I(+v,E!|#&I(+2.5GCLF#&I(0+2.5G#x&4(+2.5G#g&(+2.5G#'&(+2.5G#x&(+2.5G#&I(8+2.5G#x&A(+?2.5G#t&(+2.5G#&I(8+]2.5G#p&(+2.5G#&I(++]2.5G#&I(#+32.5G#_&(#+&2.5G#&I(+j2.5G#x&A(+j2.5G#x&(('+2.5G#&I(#+2.5G#&A(+2.5G#&(+25 #&(+25adfi#&(+25#&(+25#&(+25#&(+25#&(+25#& (+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25#&(+25M !#&(R+- 0#&(M+#&(I+#&(I+#&4(R+#&'(R+#w&(^+#&W(^+#x&4(^+#k&8(^+m!#&(,+#&#(,+#&(,+#&(,+#&#(,+27!#&(+L25#&(+L25#&(+L25ww#,&(+#,&(+#,&~(+#,&(+#'&(+#@&[(+#8&S(+#&(X+2J5'/;!s#&(X+2J5'#&(V+2J5'#&(R+2J5'#&(X+2J5'#&(X+2J5'#&(X+2J5'#&(Z+2J5'#&(R+2J5']!s#h&(x+#&(|+#&(x+#&(t+))&!#& (X+25 #&[(X+25 #&(X+25 #& (R+v25 %.!#& (X+L25 CFW#& (X+L25 #&(X+L25 #&(X+L25 #&(X+L25 #&(_+n25 #&(+25 #E&(X+L25 #&(X+L25 #o&=(X+L25 #& (+25 #&(X+LO!#,& (^+25kZnZ#&(^+25X#&(^+25X#&(^+25X#J& (+25#&~(+25#J&(+25 S!#&(+s-!X#&(+p#&W(+#&(+#V&(+25#V&(+|25}!#Z&(+25CFX#+&A(+25#V&(+25#M&(+25#V&(+|25#8& (^+25#g&(^+2j5)/!d#&(+ #^&(,+=#,&(+L#&(+ bKV!#h& (,+=#&(+77!#,&(+L#&L(+L!  ))#&o(+L*!O#&(+! q q#&,(+#&(+!knuXx}^yБ /uXx}^y/uXx}^y`+uXx}^y/uXx}ۇ̉@UБ +֛̝@UuxF}^ypv/u:x}^yБ 3! Q oQo#&(+2<5 #&X(+>2<5W#&X(+2<5W#&(+2<5W#&X(+>-0X2<5Wad>#&_(+>2<5#&X(+2<5W#&X(+2<5W#&X(+2<5W2!#&X(+2<5WCFj#&X(+>2<5W#&W(+2<5#&(+2<5 #g&F(+5#&(+2<5#&X(+2<5W#&R(+2<5#&(+2<5 #&X(+2<5W#&(+2<5 #&X(+2<5W#&X(+b2<5W#&(+n2<5 #&X(+2<5W#&N(+2<5#&W(+P2<5#&X(+s2<5W#&[(+2<5#&(+s25  !#&(+725ad7#&(+725#&(+725#&L(+725#&(+f25#&(+25#&~(+7250#&(+25#&(+25#&(+25#&(+25L#& (+25#& (+Y25#&(+s25]#c&(+725T#&(+725#&(+25M!#&X(+7-0X25S#&(+725#& (+25S#&(+25S#&(+25#&(+w25#o&(+725 #x&(+7250#&(+725#&(+725S!#& (+25S#&(+25S#& (+Y25S#&(+25S#&(+25S/!#&(+72 5 #&(+72 5 #&(+72 5 -F'!#&(+7#&(+7#&(+7#&(+]#&(+7#&N(+7#&=(+7#'& (+72y5{a(!#'&R(+72y5#+&W(+Y2y5#/& (+]2u5#&(+72y5#'&J(+2y5#'&(+72e5#+&W(+?2y5#'&[(+2y5#'&[(+72y5#'& (+72u5L#'& (+72}5#'&(+72}5dT!#&(+j2e5CF#&7(+j25#x&(+j25g#&(+2e5#&(+j2e5#&(+j2e5#&(+j2T5#&(+j2X5#Z&(+j2 5#&(+?2X5#&(+2X5#&r(+j25 #&(+j25#x&(+j25K#&(+2e5#&(X+j253!#&l(+725kn#& (+725#d&(+725#d&r(+725#&l(+v25#<&(+725#&(+725p!##&(++72y5[##&9(++72u5##&(|+j2y5[#&N(+2<5#&N(+>2<5#&R(+2<5#b& (+5#&R(+2<5#&(+2<5W#&N(+U2<5#U& (+5#&J(+2,5/[!d#^&(,+>25/# &('+Y#^&(,+>25/#&(+ &{&!# & ('+Y2e5!  #Z&(,+>25#&(+ ! #m ##,& (+ ! ! hi!h#x&(b+725#&(+\2(5#&(i+2(5#M& (i+2(5#&(+\-02(5ad\#&(+\2(5#&(+2(5#&(+2(5#&(i+2(5v!#&(i+2(5CF[#&(x+b2(5#&(i+2(5T#&(i+2$5#k&(i+25L#&(i+25#&(|+2(5#&(|+2(5i#&((i+25 #&(+2(5#&L(i+2$5#&(x+2(5#&(o+n2(5#&5(o+w25#&(k+2(5#&(o+2 5#&(k+P2,5m#&(^+U2(5#&(i+2 5#&(+25!#&(+j25adj#&(+j25#&(+j25#&L(+j25(#&(+25#&(+25#&~(+j25T#&(+25#&(+25#&(+25#c&(+25P#& (+25#& (+L25#c&(+25D#c&(+j25L#&(+j25 #&(+25!#&&(+7-0&25'#&(+725#& (+p25'#&=(+25'#&(+25#&(+p25#c&(+725f#c&(+725#&(+725#&(+725U!#& (+25'#&(+25'#& (+25'#&(+25'#&(+25'?|!#&(+j5#&(+j5#&(+j5JJ!#&J(4+j#&=(4+j#&(4+j#&=(4+s#&F(4+j#&(4+j#&(4+j#&N(+jz!#&N(+j#&R(+b#&N(+b#&(+j#&R(+#&(+j#&R(+Y#&R(+#&R(+j#&L(+j#&L(+j#&(+j\!#&(+Q205CFi#&(+Q25f#&q(+Q25#&(+205#&(+Q205#&(+Q205#&(+Q2$5 #&(+Q2$5 #d&x(+Q25K#&(+]2$5 #&(+2$5 #2&(+Q25#&(+Q25n#g&\(+Q25#&(+205#&(X+j25dxWx!#x&(d+j25kn#x& (d+j25#x&(d+j25#x&(d+j25#&(x+25#&(d+j25#&(d+j25C#&(,+j2X5O#&(,+j2L5#&(,+2X5O#x&(i+2$5]#x&(s+Y2(5i#x&(i+2(5]#^&(i+25H#x&(+2$5P#&N(g+2(5#x&(o+Y2(5]#M&(i+25J#s&K(i+25#;!#,&W('+Y2(5#&('+Y205#&H('+Y2(5#&(+72(5! g g#&9('+Y205#&(+72(5! } 9$}9#&(+72,54#&U(+u#Z&HxK#Z&HK(+1\_#Z& HxK#i&HK(+\_#&UHK#Z&HxK#Z&HxKV#<&HxK(+>WiZ\i_(\+\\_#x&HxK#& HK#Z& HKɧn#&HK#&HK(+-\_#j&HK#i&'HiK#&HKv#&pHKHKHKHKHKHKHKHKHKHK#&HKHKWdZj_jHKHKHKZj_8HKHKZj_MMMM,##&`(#+j#&(+=#&}(+&!h#&(,+HKHKHKҧHKڧHK H-K #&(+=#&F(+'#,&(,+=#&(+#^&(+MMM#&(,+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M@M?M?M?M?M@M?M?#x&HK#Z&HK%)LVLV#Z&HK#Z&HK#Z&HK%)VV#Z&HK#>&HxK#,&HxK#Z&HK#&(HK#&(HK&HK#&(o+DAMMMMMMMMMM9MXMMKMKt!#&(A+2A59kn #&!(A+2A59#&(A+2A59#}&(A+2A59#&(y+2A59#I&F(A+25#&(A+2B5&(+257:x<&@(+257:x<&(+257:2<.!&(+57:x<&@(+2x57:x<&(+57:<#&(+257:x<&(+25x7:x<!#& (+2d5kn#&x(+2d5#&E(+2d5#&(+25ע#& (+2d5#&}(+25P#& (+2d55#!&(+257,:f<?&7(+257,:f<?#/&(+57:<?0!#/&(+57,:f<?#&$(+257,:f<?#/&(+57:<?#!&(+257,:f<?#%&(+257,:f<?`_l/b###########!#&["#&c##&#(+$#&`$(+Զ` "(.48<FPTZhntz"(6<BHN\jpv|  .4:@FLRX^lz $*0:DJPTX\`dhlx| "(,04@FLPTX\bhntz &,28>DJPV\bhntz "(.4:@FJNTZ`flrx~$:Pf&Db  4 P  : X v R p  $ B ` ~  , J x  2H^t0Nl >\zFd6TpJ`v 2H^t0F\r&Db$Rp<Zx$Zx 2Vl&<Zp@VfV 6J^r  " 6 R n !!2!N!!!!!""*"F"b"~""""#.#J#f#####$$*$F$b$~$$$$% %6%J%v%%%%%&&"&6&J&~&&&&' '&'B'^'z''''(("(>(Z(v(((())6)R)n)))))**2*N*j*****+++*+>+R+f+++++,,",>,^,r,,,,,,--:-V-r----.....B.n....//./J/f/////00"0V0r000001"1F1Z1n111122.2J2f22222333>3R3|333484x44585x5566"6>6j666677,7H7d7|777788$8@8\8x888899 9T9p99999::4:P:l:::::;;H;d;;;;;< <((>D>`>|>>>>??$?@?\????@@@8@T@p@@@@@AA4AhAAAAABBFZFvFFFFGGG:GVGrGGGGHH2HNHjHHHHHII.IJIfIIIIJ J&JBJ^JzJJJJKK2KNKjKKKKKLL2LFLZLnLLLLLLM MM2MFMZMnMMMMMNN2NNNjNNNNNOO.OJOfOOOOP P&PBP^PPPPPQQ.QJQfQQQQRRR:RlRRRRRRS S S6SLSbSxSSSSSTTT8TNTdTzTTTTTTUUUU,U:UHUVUlUzUUUUUUUUUVVVV.VDVXV^VbVVVVVVVWW$W*W@WFWLWRWhW~WWWWWWWWWWWWWWWWWWXXX XXXX$X*X0X6XYHYRY\YfYpYzYYYYYYYYYYYYYYYZZZZ$Z.Z8ZBZLZVZ`ZjZtZ~ZZZZZZZZZZZZZZZZZZZZZZZ[[[ [[[[[["[&[*[.[2[6[:[>[B[F[J[^[r[[[[\\\.\B\V\f\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]] ]]] ](]0]8]@]H]P]X]`]h]p]x]]]^^(^L^p^^^^_,_P_p___``@`d````a$aLaaabb0b4b:b@bFbLbRbXb^bdbjbpbvb|bbbbbbbbccc  kU"48nopqrstuvwxyz{|}@*   06d  ,28:<>@J`v ^ Zj*:Rj "Aa ?_GILKM !"@CO)  NQPSVUabfdHJe$&*43'~ #012[\`^_ghi%kqmplnorst]cuvw|y}z{(TXYWZx?BA57=89>6:;<jDF+-./,R E=?BAC 69EDGFILKWX\Z>@[ *)wu~v}&'(QRVTU]^_agcfbdehjkSYlmnsptqrJNOMPo587+-3./4,012`:<!#$%"    H;{|\   !"#$%&'()*+#')$')yyzriYUR[ZY`_l/b:::44Te6}  "?A_a{}6y7x91:;z<={?@ ABpCtDuEvFGrHsITJqK LMNOP Q R S2T%U>V&W*XSYZ'[k\o]l^m_n`3a4b5c)d(e^fdg_haibjekflgm`nco[pq]r\stiu|vjwx"yz#{|}~wUXVWY67I9:8J!$ ;<=h?CADEB@FGHKLMZOQRNP,/+0-.      !"#$%&'()*+,-./0123456789:;<=~>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmnopqrstuvw}~?}      !"#$&')*+,-./0123456y7x91:;z<={>?@ ABpCtDuEvFGrHsITJqK LMNOP Q R S2T%U>V&W*XSYZ'[k\o]l^m_n`3a4b5c)d(e^fdg_haibjekflgm`nco[pq]r\stiu|vjwx"yz#{|}~wUXVWY67I9:8J!$ ;<=h?CADEB@FGHKLMZOQRNP,/+~0-.      #&(   abcdefg7w~        whr  ""??AA__aa"(; 1>?`aghhjw}   P[   "#%&')*     +?Rdz )9HVc{"!"" "#"" """"  %$%% &&&&%'%%%%%%*)**++++*,******0/0011110200000054556666575555558888( -.3437-0437-0437-0437-0437-0337-0337-0337-0337-0337-0+,0+,0+,0+,0+,0+,0+,0+,0+,0+,0/ / / / 19/ / / 1:/ / / 18/ / 17/ 1|| [@677889:;;<?@dest*+9:ghhivwwx}~~ qrrs      "##$%&&''(()    &-4;BIMQX_d&,28>DJNRV\`flu      + 0+ 0+0+0+0+0+0+0+0+0+0+0+0+0+0+ 015#!'' 15#! 1?1>1>1>10 10 1111= 111111$(#1!!!$  ++[[__aaP[      *6AP^kw      "!!#"!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1---@)~@>34459::;?@deefstvw}~*++,9:<=CDLMPQ_``aghkltu    4556FGZ[        +P[\\  !#%&'      "-8K&m'e'h\Z ##### $),,,,,*+,,,,,*,-,,,,,.,,,,,,,,,,+,,,,,,%/0&&&&&&011111112111113111145''''''566666667666668 6666!9"""""""":(("((("(:;;;;;;;<;;;;;=;;;;>?0045"""""""":?".70".70".70".70".7037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #037&#,#,#,#,#,#)<#)?# )># )@# #0&#,2#,5#,4#,6#)#)# )# )# #0&#,##,&P###)H#)K# )J# )L# + #0&#,##,&P###)H#)K# )J# )L# + #0&#,##,&P###)H#)K# )J# )L# + #0&#,##,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,#(#,&P###)H#)K# )J# )L# + #0&#,-#,0#,/#,1#)#)# )# )# 0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&#,##,&#,%#,'#)H#)K# )J# )L# + #0&,M#,P#,O#,Q#)R#)U# )T# )V# ##&,M#,P#,O#,Q#)R#)U# )T# )V# ##&,M#,P#,O#,Q#)R#)U# )T# )V# ##&#,M#,P#,O#,Q#)R#)U# )T# )V# #1&,M#,P#,O#,Q#)R#)U# )T# )V# ##&,M#,P#,O#,Q#)R#)U# )T# )V# ##&#,M#,P#,O#,Q#)R#)U# )T# )V# #1&,M#,P#,O#,Q#)R#)U# )T# )V# ##&#,M#,P#,O#,Q#)R#)U# )T# )V# #1&#,M#,P#,N#,O#,Q#)R#)U# )T# )V# #17c7c7d 2 9::;STTU    #$$%P[\\ <s-i            &#,7#,:#,9#,;#)W#)Z# )Y# )[# + #0&#,a#,d#,c#,e#)#)# )# )# 0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0&#,(#,+#,*#,,#)\#)_# )^# )`# + #0 Qzrzrzp m@-#$$%    * +PQQ RTU_ `mnno    *++,Z[[\^__``aabghhivwwxOP[\\]  !"$%&'()*+,-./12469:;<=>?@ABCDFGIKNOQSVX[^bcdefghijlmopsuwx{}-2P '( ",!#K$1%&O +FJFJ0N *AEAEIAIEIAEI/M )<@<@D<D@D<@DH<H@H<@HDH<DH@DH<@DH.L 77;;7??7;?;?7CC7;C;C7?C?C7;?C;?C7GG7;G;G7?G?G7;?G;?G7CGCG7;CG;CG7?CG?CG7;?CG;?CG66::6>>6:>:>6BB6:B:B6>B>B6:>B:>B55995==59=9=44883   &Ko#Fh2G[n(6ET^hr 4H[m5Lb{/CZp     "#! "#"%&$%%&%'''''''((((((()*******+,,,,,,,-.0....../.0....../121111113333333/4044444456555655655565565556578777879:999:99:999:99:999:9;<;;;<;=>===>==>===>=?@???@?AAAAAAABBBBBBBCDDDDDDDEFFFFFFFGHJHHHHHHIKLKKKKKKMMMMMMMINJNNNNNNOPOOOPOQRQQQRQSTSSSTSUVUUUVUWXWWWXWYZYYYZY[\[[[\[]^]]]^]_`___`_abaaabacdcccdcefeeefeggggggghhhhhhhi  jjjjjjjk lllllllm n pnnnnnno  qrqqqqqqsssssssotpttttttuvuuuvuwxwwwxwyzyyyzy{|{{{|{}~}}}~} !"#$%&'()*+,-./ /!/"/#/$/%/&/'/(/)/*/+/,/-/./ !"#$%&'()*+,-.021132456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno+ 0+ 0+ 0+ 0#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1#*##*#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1#1#1#1#1#1#1#1#1#1#1#1j#1#}#1##1#8#1#~#1#1#1#1~##*#1#F#*F#12#*2#12#*2#12#*2#12#*2#12#*2#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1A#*A#1F#*F#1F#*F#1F#*F#1F#*F#1F#*F#1 Ȁ Ԁ   #&)    !"%$'( bdhlckbtkmr|kurplksclsdsdhsndururdgrcompiler-5.2.1/test/GrcRegressionTest/fonts/rebuild_benchmarks.bat000066400000000000000000000023031411153030700257120ustar00rootroot00000000000000grcompiler -D -v4 SchMain.gdl SchInput.ttf SchBenchmark.ttf copy SchBenchmark.ttf dbg_Sch copy SchBenchmark.gdx dbg_Sch copy $_temp.gdl dbg_Sch copy gdlerr.txt dbg_Sch copy dbg_*.txt dbg_Sch grcompiler -D -v2 CharisMain.gdl CharisInput.ttf CharisBenchmark.ttf copy CharisBenchmark.ttf dbg_Charis copy CharisBenchmark.gdx dbg_Charis copy $_temp.gdl dbg_Charis copy gdlerr.txt dbg_Charis copy dbg_*.txt dbg_Charis grcompiler -D -v2 -p PigLatinMain.gdl PigLatinInput.ttf PigLatinBenchmark_v2.ttf "PigLatin GrRegTest V2" copy PigLatinBenchmark_v2.ttf dbg_PigLatin_v2 copy PigLatinBenchmark_v2.gdx dbg_PigLatin_v2 copy $_temp.gdl dbg_PigLatin_v2 copy gdlerr.txt dbg_PigLatin_v2 copy dbg_*.txt dbg_PigLatin_v2 grcompiler -D -v3 PigLatinMain.gdl PigLatinInput.ttf PigLatinBenchmark_v3.ttf copy PigLatinBenchmark_v3.ttf dbg_PigLatin_v3 copy PigLatinBenchmark_v3.gdx dbg_PigLatin_v3 copy $_temp.gdl dbg_PigLatin_v3 copy gdlerr.txt dbg_PigLatin_v3 copy dbg_*.txt dbg_PigLatin_v3 grcompiler -D -v3 -p -offsets PadaukMain.gdl PadaukInput.ttf PadaukBenchmark_v3.ttf copy PadaukBenchmark_v3.ttf dbg_Padauk copy PadaukBenchmark_v3.gdx dbg_Padauk copy $_temp.gdl dbg_Padauk copy gdlerr.txt dbg_Padauk copy dbg_*.txt dbg_Padauk grcompiler-5.2.1/test/GrcRegressionTest/fonts/regtest.mak000066400000000000000000000054161411153030700235560ustar00rootroot00000000000000# Rebuild the test fonts and then run the regression test # Run: nmake -f regtest.mak RTEXE = ..\Debug GRCEXE = ..\..\..\Release # GRCEXE = ..\..\..\Debug FONTS = . TEST_FONTS =\ $(FONTS)\SchTest.ttf\ $(FONTS)\CharisTest.ttf\ $(FONTS)\PigLatinTest_v2.ttf\ $(FONTS)\PigLatinTest_v3.ttf\ $(FONTS)\PadaukTest.ttf all : deleteTestFonts $(GRCEXE)\grcompiler.exe $(TEST_FONTS) grcregtest.log check : deleteTestFonts $(GRCEXE)\grcompiler.exe $(TEST_FONTS) regtest.log deleteTestFonts : - del $(FONTS)\SchTest.ttf - del $(FONTS)\CharisTest.ttf - del $(FONTS)\PigLatinTest_v2.ttf - del $(FONTS)\PigLatinTest_v3.ttf - del $(FONTS)\PadaukTest.ttf - del .\grcregtest.log - del .\regtest.log $(FONTS)\SchTest.ttf : $(GRCEXE)\grcompiler -D -v4 $(FONTS)\SchMain.gdl $(FONTS)\SchInput.ttf SchTest.ttf $(FONTS)\CharisTest.ttf : $(GRCEXE)\grcompiler -D -v2 $(FONTS)\CharisMain.gdl $(FONTS)\CharisInput.ttf CharisTest.ttf $(FONTS)\PigLatinTest_v2.ttf : $(GRCEXE)\grcompiler -D -v2 -p $(FONTS)\PigLatinMain.gdl $(FONTS)\PigLatinInput.ttf PigLatinTest_v2.ttf "PigLatin GrRegTest V2" $(FONTS)\PigLatinTest_v3.ttf : $(GRCEXE)\grcompiler -D -v3 $(FONTS)\PigLatinMain.gdl $(FONTS)\PigLatinInput.ttf PigLatinTest_v3.ttf $(FONTS)\PadaukTest.ttf : $(GRCEXE)\grcompiler -D -v3 -offsets -p $(FONTS)\PadaukMain.gdl $(FONTS)\PadaukInput.ttf PadaukTest.ttf grcregtest.log : - @echo ----- - @echo ----- - @echo ----- RUNNING TESTS ----- - @echo ----- - $(RTEXE)\GrcRegressionTest.exe $(FONTS)\SchBenchmark.ttf $(FONTS)\SchTest.ttf - $(RTEXE)\GrcRegressionTest.exe $(FONTS)\CharisBenchmark.ttf $(FONTS)\CharisTest.ttf - $(RTEXE)\GrcRegressionTest.exe $(FONTS)\PigLatinBenchmark_v2.ttf $(FONTS)\PigLatinTest_v2.ttf - $(RTEXE)\GrcRegressionTest.exe $(FONTS)\PigLatinBenchmark_v3.ttf $(FONTS)\PigLatinTest_v3.ttf - $(RTEXE)\GrcRegressionTest.exe $(FONTS)\PadaukBenchmark_v3.ttf $(FONTS)\PadaukTest.ttf - - echo N|comp $(FONTS)\SchBenchmark.ttf $(FONTS)\SchTest.ttf - echo N|comp $(FONTS)\CharisBenchmark.ttf $(FONTS)\CharisTest.ttf - echo N|comp $(FONTS)\PigLatinBenchmark_v2.ttf $(FONTS)\PigLatinTest_v2.ttf - echo N|comp $(FONTS)\PigLatinBenchmark_v3.ttf $(FONTS)\PigLatinTest_v3.ttf - echo N|comp $(FONTS)\PadaukBenchmark_v3.ttf $(FONTS)\PadaukTest.ttf regtest.log : $(RTEXE)\GrcRegressionTest.exe -l regtest.log $(FONTS)\SchBenchmark.ttf $(FONTS)\SchTest.ttf $(RTEXE)\GrcRegressionTest.exe -l regtest.log $(FONTS)\CharisBenchmark.ttf $(FONTS)\CharisTest.ttf $(RTEXE)\GrcRegressionTest.exe -l regtest.log $(FONTS)\PigLatinBenchmark_v2.ttf $(FONTS)\PigLatinTest_v2.ttf $(RTEXE)\GrcRegressionTest.exe -l regtest.log $(FONTS)\PigLatinBenchmark_v3.ttf $(FONTS)\PigLatinTest_v3.ttf $(RTEXE)\GrcRegressionTest.exe -l regtest.log $(FONTS)\PadaukBenchmark_v3.ttf $(FONTS)\PadaukTest.ttf grcompiler-5.2.1/test/GrcRegressionTest/fonts/stddef.gdh000066400000000000000000000031751411153030700233440ustar00rootroot00000000000000/* Copyright (C) 1999-2015 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. */ // Standard abbreviations: #define adv advance #define ah advanceheight #define att attach #define aw advancewidth #define bb boundingbox #define break breakweight #define comp component #define dir directionality #define endenv endenvironment #define env environment #define just justification #define lb linebreak #define lsb leftsidebearing #define pos position #define ref reference #define rsb rightsidebearing #define sub substitution #define subs substitution // Standard defined constants: #define DIR_OTHERNEUTRAL 0 #define DIR_OTHERNEUTRALS 0 #define DIR_LEFT 1 #define DIR_RIGHT 2 #define DIR_ARABIC 3 #define DIR_EURONUMBER 4 #define DIR_EUROSEPARATOR 5 #define DIR_EUROTERMINATOR 6 #define DIR_ARABICNUMBER 7 #define DIR_COMMONSEPARATOR 8 #define DIR_WHITESPACE 9 #define DIR_BOUNDARYNEUTRAL 10 #define DIR_LRO 11 #define DIR_RLO 12 #define DIR_LRE 13 #define DIR_RLE 14 #define DIR_PDF 15 #define DIR_NSM 16 #define DIR_LRI 17 #define DIR_RLI 18 #define DIR_FSI 19 #define DIR_PDI 20 #define DIR_OPP 21 #define DIR_CPP 22 #define BREAK_WHITESPACE 10 #define BREAK_WORD 15 #define BREAK_INTRA 20 #define BREAK_LETTER 30 #define BREAK_CLIP 40 #define HORIZONTAL_LEFT_TO_RIGHT 1 #define HORIZONTAL_RIGHT_TO_LEFT 2 #define VERTICAL_FROM_LEFT 4 #define VERTICAL_FROM_RIGHT 8 #define LEFT_TO_RIGHT 1 #define RIGHT_TO_LEFT 2 #define JMODE_NORMAL 0 #define JMODE_MEASURE 1 #define JMODE_JUSTIFY 2 #define LG_USENG 0x0409 grcompiler-5.2.1/test/GrcRegressionTest/main.h000066400000000000000000000113431411153030700213470ustar00rootroot00000000000000/*--------------------------------------------------------------------*//*:Ignore this sentence. Copyright (C) 2007 SIL International. All rights reserved. Distributable under the terms of either the Common Public License or the GNU Lesser General Public License, as specified in the LICENSING.txt file. File: Main.h Responsibility: Sharon Correll Description: Header files to include in the Graphite compiler regression test program. -------------------------------------------------------------------------------*//*:End Ignore*/ #ifdef _MSC_VER #pragma once #endif #ifndef GRCOMPILER_H #define GRCOMPILER_H 1 #define NO_EXCEPTIONS 1 // To allow call to IsDebuggerPresent: //////#define _WIN32_WINNT WINVER //:>******************************************************************************************** //:> Include files //:>******************************************************************************************** #ifdef _WIN32 #include #endif // _WIN32 #include "stdafx.h" ////#include "resource.h" ////#include #include #include #include #include // ptr_fun ////#include #include #include #ifdef _WIN32 #include #endif // _WIN32 #include ////using std::max; ////using std::min; #include "Generic/GrCommon.h" #include "Generic/GrPlatform.h" typedef unsigned int featid; #define THROW(x) throw(x) ////////#include "LgCharPropsStub.h" #include "Generic/GrConstants.h" #include "TtfUtil.h" // #include "graphite/Tt.h" /* These are return values for the main interface methods to indicate various kinds of */ /* error conditions. To facilitate COM compatibiliy, they match the standard COM HRESULT codes. */ enum GrResult { kresOk = 0, // S_OK kresFalse = 1, // S_FALSE kresFail = 0x80004005L, // E_FAIL kresOutOfMemory = 0x8007000EL, // E_OUTOFMEMORY kresInvalidArg = 0x80000002L, // E_INVALIDARG kresReadFault = 0x80000001L, // STG_E_READFAULT kresUnexpected = 0x80000003L, // E_UNEXPECTED kresNotImpl = 0x80000004L, // E_NOTIMPL kresPointer = 0x80004003L//, // E_POINTER }; //#include "graphite/GrClient.h" //#include "graphite/IGrEngine.h" #include "FileInput.h" //#include "graphite/Font.h" #include "GrcRtFileFont.h" //#include "Segment.h" //#include "SegmentPainter.h" #include "TestCase.h" using namespace gr; //:>******************************************************************************************** //:> Functions //:>******************************************************************************************** void RunTests(int numberOfTests, TestCase * ptcaseList); int RunOneTestCase(TestCase * ptcase); void OutputError(int & errCnt, TestCase * ptcase, std::string strErr, int i = -1); void OutputErrorWithValues(int & errCnt, TestCase * ptcase, std::string strErr, int i, int valueFound, int valueExpected); void OutputError(int & errCnt, TestCase * ptcase, std::string strErr1, int i1, std::string strErr2, int i2 = -1); void OutputErrorAux(TestCase * ptcase, std::string strErr1, int i1, std::string strErr2, int i2, bool showValues, int valueFound, int valueExpected); bool WriteToLog(std::string str, int i = -1); bool WriteToLog(std::string str1, int i1, std::string str2, int i2 = -1); bool WriteToLog(std::string str1, int i1, std::string str2, int i2, bool showValues, int valueFound, int valueExpected); bool WriteToLog(int n); std::wstring StringFromNameTable(const gr::byte * pNameTbl, int nLangID, int nNameID); int CompareFontTables(TestCase * ptcase, GrcRtFileFont * pfontBmark, GrcRtFileFont * pfontTest); void CompareSilfTables(int & errCnt, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, int * pchwMaxGlyphID); void CompareClassMaps(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, int fxdSilfVersion); void ComparePasses(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, int fxdSilfVersionB, int fxdSilfVersionT, int cPasses, int lSubTableStartB, int lSubTableStartT, int * prgnPassOffsets); int CompareFsm(int & ec, TestCase * ptcase, GrIStream & grstrmGlatB, GrIStream & grstrmGlocB, int fxdSilfVersionB, int fxdSilfVersionT, int iPass); void CompareGlatAndGlocTables(int & errCnt, TestCase * ptcase, int chwMaxGlyphID, GrIStream & grstrmGlatB, GrIStream & grstrmGlocB, GrIStream & grstrmGlatT, GrIStream & gtstrmGlocT); void CompareFeatTables(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT, const gr::byte * pNameTblB, const gr::byte * pNameTblT); void CompareSillTables(int & ec, TestCase * ptcase, GrIStream & grstrmB, GrIStream & grstrmT); int ReadVersion(GrIStream & grstrm); #endif //!GRCOMPILER_H grcompiler-5.2.1/test/GrcRegressionTest/readme.txt000066400000000000000000000006171411153030700222520ustar00rootroot00000000000000HOW TO ADD A TEST TO THE REGRESSION TEST SUITE: * Add the GDL code and the benchmark TTF file into the fonts directory. * Create a "dbg_..." directory under fonts and put the benchmark debugger files there. * Extend regtest.mak (in the fonts directory) to include the new test, so that the Test font will be generated. * Add the new items to the GrcRegressionTest.cpp file, in the main() function. grcompiler-5.2.1/test/GrcRegressionTest/regtest000077500000000000000000000106001411153030700216500ustar00rootroot00000000000000#!/usr/bin/perl use IO::File; use Getopt::Long; use File::Compare; my (%opts); GetOptions(\%opts, 'dir|d=s', 'compiler|g=s', 'help|h|?', 'icu|i=f', 'keep|k', 'output|o=s', 'preprocessor|p=s', 'verbose|v', 'testengine|r=s', 'version=i', 'warning|w=i@'); if ($opts{help}) { die <<'EOT'; regtest [-g grcompiler] [-o logfile] [-p gdlpp] [-r regtest] [-v] [-w number] [-k] [dir] Searches for fonts to run tests on in [dir] (defaults to .) and runs them storing log info in logfile and exiting with the number of errors -d|--dir=dir Use dir for intermediate test files -g|--compiler=grcompiler command to use to run grcompiler [grcompiler] -h|--help print this help and exit -i|--icu=version Gives icu version or uses pkg-config to determine -k|--keep keep temporary files -o|--output= logfile file to log to [regtest.log] -p|--preprocessor=gdlpp command to run the gdlpp [] -r|--testengine=regtest command to test result font [GrcRegressionTest] -v|--verbose Run compiler -q by default, this stops it --version=num default graphite version to generate [2] -w|--warning= number Run compiler with -w value (may be repeated) EOT } $opts{compiler} ||= 'grcompiler'; $opts{output} ||= 'regtest.log'; $ENV{'GDLPP'} = $opts{preprocessor} if (defined $opts{preprocessor}); $opt{testengine} ||= 'GrcRegressionTest'; $opt{version} ||= 2; my ($dir) = $ARGV[0] || '.'; my (@fonts) = sort glob("$dir/*Input.ttf"); my ($outf) = IO::File->new("> $opts{output}") || die "Can't create $opts{output}"; my ($f, $errors); $opts{icu} ||= `pkg-config --modversion icu-i18n`; my (@icudirs) = reverse sort map {s/^.*?(\d+)$/$1/o; $_} glob("$dir/icu*"); foreach $f (@fonts) { my ($b, $v); my ($t) = $f; my ($r) = $f; my ($n) = $f; $n =~ s/Input.ttf$//o; next unless (-f "${n}Main.gdl"); foreach $b ("${n}Benchmark_v2.ttf", "${n}Benchmark_v3.ttf", "${n}Benchmark.ttf") { next unless (-f $b); if ($b =~ m/_v(\d)/o) { $v = $1; $r = "${n}Test_v$v.ttf"; } else { $v = $opt{version}; $r = "${n}Test.ttf"; } if ($opts{dir}) { $r =~ s{^.*[\\/](.*?)$}{$opts{dir}/$1}o; } print "Testing Font: $n at v$v\n"; $t = "${n}Main.gdl"; # $r =~ s{^.*[/\\](.*?)$}{$1}o; my (@gopts); push (@gopts, '-q') unless ($opts{verbose}); push (@gopts, map {"-w" => $_}, @{$opts{warning}}) if (defined $opts{warning}); push (@gopts, "-v$v"); print $opts{compiler} . " " . join(" ", @gopts) . "\n" if ($opts{verbose}); system($opts{compiler}, @gopts, $t, $f, $r); if (-f $r) # assume it passes if it gives a result { my ($failed) = 0; unlink 'grcregtest.log'; foreach $i (@icudirs) { next if ($i > $opts{icu}); my ($bench) = $b; $bench =~ s{/([^/]*)$}{/icu$i/$1}og; if (-f $bench) { $b = $bench; last; } } my ($res) = system($opts{testengine}, $b, $r); if ($res == -1) { print "Failed to run $opts{testengine} because $!\n"; $errors++; $failed = 1; } my ($logf) = IO::File->new("grcregtest.log"); if ($logf) { while (<$logf>) { $outf->print($_); } $logf->close; } if ($res > 0) { $res >>= 8; print "job error $res\n"; $errors += $res; $failed = 1; } else { print "Comparing $r and $b\n"; $failed = compare($r, $b); print "comparison error in $f\n" if ($failed); } unlink $r unless ($opts{'keep'} || $failed); } else { my ($logf) = IO::File->new("gdlerr.log"); if ($logf) { while (<$logf>) { $outf->print($_); } $logf->close; } $errors++; } } } $outf->close; print "$errors errors encountered\n" if ($errors); exit($errors); grcompiler-5.2.1/test/GrcRegressionTest/stdafx.h000066400000000000000000000004341411153030700217130ustar00rootroot00000000000000// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once #include // #include // TODO: reference additional headers your program requires here grcompiler-5.2.1/test/Makefile.am000066400000000000000000000000341411153030700166650ustar00rootroot00000000000000SUBDIRS = GrcRegressionTest